Package Products :: Package ZenUtils :: Module ZenPackCmd |
[hide private]
[frames] | no frames]

# Module ZenPackCmd

source code

Classes | [hide private]
NonCriticalInstallError
ZenPackCmd Utilities for creating, installing, removing ZenPacks.

Functions | [hide private]
CreateZenPack(zpId, prevZenPackName='') Create the zenpack in the filesystem. | source code
WriteSetup(setupPath, values) | source code
CanCreateZenPack(dmd, zpId) Return tuple (bool, string) where first element is true if a new zenpack can be created with the given info and false if not. | source code
ScrubZenPackId(name) If the given name conforms to ZenPack naming rules, or can easily be modified to do so, then return (True, scrubbedName) where scrubbedName is either name or a slightly modified name. | source code
InstallEggAndZenPack(dmd, eggPath, link=False, filesOnly=False, sendEvent=True, previousVersion=None, forceRunExternal=False, fromUI=False) Installs the given egg, instantiates the ZenPack, installs in dmd.ZenPackManager.packs, and runs the zenpacks's install method. | source code
InstallEgg(dmd, eggPath, link=False) Install the given egg and add to the current working set. | source code
InstallDistAsZenPack(dmd, dist, eggPath, link=False, filesOnly=False, previousVersion=None, forceRunExternal=False, fromUI=False) Given an installed dist, install it into Zenoss as a ZenPack. | source code
DiscoverEggs(dmd, zenPackId) Find installed eggs that provide a zenoss.zenpacks entry point. | source code
AddDistToWorkingSet(distPath) Given the path to a dist (an egg) add it to the current working set. | source code
ReadZenPackInfo(dist) Return a dictionary containing the egg metadata | source code
CopyMetaDataToZenPackObject(dist, pack) Copy metadata type stuff from the distribution to the zp object. | source code
CreateZenPacksDir() Make sure $ZENHOME/ZenPacks exists | source code
DoEasyInstall(eggPath) Use easy_install to install an egg from the filesystem. | source code
FetchAndInstallZenPack(dmd, zenPackName, sendEvent=True) Fetch the named zenpack and all its dependencies and install them. | source code
FetchZenPack(dmd, zenPackName) Use easy_install to retrieve the given zenpack and any dependencies. | source code
UploadZenPack(dmd, packName, project, description, znetUser, znetPass) Upload the specified zenpack to the given project. | source code
RemoveZenPack(dmd, packName, filesOnly=False, skipDepsCheck=False, leaveObjects=False, sendEvent=True, forceNoFileDeletion=False, uninstallEgg=True) Remove the given ZenPack from Zenoss. | source code
DoEasyUninstall(name) Execute the easy_install command to unlink the given egg. | source code
CanRemoveZenPacks(dmd, packNames) Returns a tuple of (canRemove, otherDependents) canRemove is True if the listed zenPacks have no dependents not also listed in packNames, False otherwise. | source code
GetDependents(dmd, packName) Return a list of installed ZenPack ids that list packName as a dependency | source code
ZPEvent(dmd, severity, summary, message=None) Send an event to Zenoss. | source code

Variables | [hide private]
| __doc__ = `"Manage ZenPacks"`
| log = `logging.getLogger('zen.ZenPackCMD')`
| FQDN = `socket.getfqdn()`
| ZENPACKS_BASE_URL = `'http://zenpacks.zenoss.com/pypi'`
| ZENPACK_ENTRY_POINT = `'zenoss.zenpacks'`

Function Details | [hide private]

### CreateZenPack(zpId, prevZenPackName='') | source code
Create the zenpack in the filesystem. The zenpack is not installed in Zenoss, it is simply created in the $ZENHOME/ZenPacks directory. Usually this should be followed with a "zenpack install" call. zpId should already be valid, scrubbed value. prevZenPackName is written to PREV_ZENPACK_NAME in setup.py.

### CanCreateZenPack(dmd, zpId) | source code
Return tuple (bool, string) where first element is true if a new zenpack can be created with the given info and false if not. If first element is True then the second part of the tuple contains the scrubbed ZenPack id. If the first part is False then the second contains an explanatory message.

### ScrubZenPackId(name) | source code
If the given name conforms to ZenPack naming rules, or can easily be modified to do so, then return (True, scrubbedName) where scrubbedName is either name or a slightly modified name. If the given name does not conform to naming rules and we can't easily modify it to do so then return (False, errorMsg) where errorMsg describes why name is unacceptable.

### InstallEggAndZenPack(dmd, eggPath, link=False, filesOnly=False, sendEvent=True, previousVersion=None, forceRunExternal=False, fromUI=False) | source code
Installs the given egg, instantiates the ZenPack, installs in dmd.ZenPackManager.packs, and runs the zenpacks's install method. Returns a list of ZenPacks that were installed.

### InstallEgg(dmd, eggPath, link=False) | source code
Install the given egg and add to the current working set. This does not install the egg as a ZenPack. Return a list of distributions that should be installed as ZenPacks.

### InstallDistAsZenPack(dmd, dist, eggPath, link=False, filesOnly=False, previousVersion=None, forceRunExternal=False, fromUI=False) | source code
Given an installed dist, install it into Zenoss as a ZenPack. Return the ZenPack instance.

### DiscoverEggs(dmd, zenPackId) | source code
Find installed eggs that provide a zenoss.zenpacks entry point. Return a list of distributions whose ZenPacks need to be installed or upgraded. The list is sorted into the order in which this needs to happen.

### AddDistToWorkingSet(distPath) | source code
Given the path to a dist (an egg) add it to the current working set. This is basically a pkg_resources-friendly way of adding it to sys.path. Return a list of all distributions on distPath that appear to be ZenPacks.

### DoEasyInstall(eggPath) | source code
Use easy_install to install an egg from the filesystem. easy_install will install the egg, but does not install it into Zenoss as ZenPacks. Returns a list of distributions that were installed that appear to be ZenPacks.

### FetchAndInstallZenPack(dmd, zenPackName, sendEvent=True) | source code
Fetch the named zenpack and all its dependencies and install them. Return a list of the ZenPacks that were installed.

### FetchZenPack(dmd, zenPackName) | source code
Use easy_install to retrieve the given zenpack and any dependencies. easy_install will install the eggs, but does not install them into Zenoss as ZenPacks. Return a list of distributions just installed that appear to be ZenPacks. NB: This should be refactored. It shares most of its code with DoEasyInstall()

### UploadZenPack(dmd, packName, project, description, znetUser, znetPass) | source code
Upload the specified zenpack to the given project. Project is a string of the form 'enterprise/myproject' or 'community/otherproject'.

### RemoveZenPack(dmd, packName, filesOnly=False, skipDepsCheck=False, leaveObjects=False, sendEvent=True, forceNoFileDeletion=False, uninstallEgg=True) | source code
Remove the given ZenPack from Zenoss. Whether the ZenPack will be removed from the filesystem or not depends on the result of the ZenPack's shouldDeleteFilesOnRemoval method.

### DoEasyUninstall(name) | source code
Execute the easy_install command to unlink the given egg. What this is really doing is switching the egg to be in multiple-version mode, however this is the first step in deleting an egg as described here: http://peak.telecommunity.com/DevCenter/EasyInstall#uninstalling-packages

### CanRemoveZenPacks(dmd, packNames) | source code
Returns a tuple of (canRemove, otherDependents) canRemove is True if the listed zenPacks have no dependents not also listed in packNames, False otherwise. otherDependents is a list of zenpack names not in packNames that depend on one or more of the packs in packNames.