diff options
author | Michal Minar <miminar@redhat.com> | 2013-07-03 18:15:23 +0200 |
---|---|---|
committer | Michal Minar <miminar@redhat.com> | 2013-07-04 10:33:48 +0200 |
commit | a4e6cc3c9f273cbbf911340edd02fa17a8379917 (patch) | |
tree | 11e5616c41385a9a9a455f4874e12cf5bbd0c376 /src/software/lmi/software/core/InstallationServiceCapabilities.py | |
parent | 4c0ec0ef72a6aef0413b9e8eca9380bd31bf4444 (diff) | |
download | openlmi-providers-a4e6cc3c9f273cbbf911340edd02fa17a8379917.tar.gz openlmi-providers-a4e6cc3c9f273cbbf911340edd02fa17a8379917.tar.xz openlmi-providers-a4e6cc3c9f273cbbf911340edd02fa17a8379917.zip |
renamed openlmi namespace to lmi
To comply with lmi shell, which is placed in *lmi* package, and to
make our imports shorter, we are renaming *openlmi* namespace to *lmi*.
Diffstat (limited to 'src/software/lmi/software/core/InstallationServiceCapabilities.py')
-rw-r--r-- | src/software/lmi/software/core/InstallationServiceCapabilities.py | 226 |
1 files changed, 226 insertions, 0 deletions
diff --git a/src/software/lmi/software/core/InstallationServiceCapabilities.py b/src/software/lmi/software/core/InstallationServiceCapabilities.py new file mode 100644 index 0000000..62209bf --- /dev/null +++ b/src/software/lmi/software/core/InstallationServiceCapabilities.py @@ -0,0 +1,226 @@ +# -*- encoding: utf-8 -*- +# Software Management Providers +# +# Copyright (C) 2012-2013 Red Hat, Inc. All rights reserved. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +""" +Just a common functionality related to +LMI_SoftwareInstallationServiceCapabilities provider. +""" + +import pywbem + +from lmi.common import cmpi_logging + +class Values(object): + class SupportedExtendedResourceTypes(object): + Unknown = pywbem.Uint16(0) + Other = pywbem.Uint16(1) + Not_Applicable = pywbem.Uint16(2) + Linux_RPM = pywbem.Uint16(3) + HP_UX_Depot = pywbem.Uint16(4) + Windows_MSI = pywbem.Uint16(5) + Solaris_Package = pywbem.Uint16(6) + Macintosh_Disk_Image = pywbem.Uint16(7) + Debian_linux_Package = pywbem.Uint16(8) + VMware_vSphere_Installation_Bundle = pywbem.Uint16(9) + VMware_Software_Bulletin = pywbem.Uint16(10) + HP_Smart_Component = pywbem.Uint16(11) + # DMTF_Reserved = .. + # Vendor_Reserved = 0x8000.. + _reverse_map = { + 0 : 'Unknown', + 1 : 'Other', + 2 : 'Not Applicable', + 3 : 'Linux RPM', + 4 : 'HP-UX Depot', + 5 : 'Windows MSI', + 6 : 'Solaris Package', + 7 : 'Macintosh Disk Image', + 8 : 'Debian linux Package', + 9 : 'VMware vSphere Installation Bundle', + 10 : 'VMware Software Bulletin', + 11 : 'HP Smart Component' + } + + class SupportedInstallOptions(object): + Defer_target_system_reset = pywbem.Uint16(2) + Force_installation = pywbem.Uint16(3) + Install = pywbem.Uint16(4) + Update = pywbem.Uint16(5) + Repair = pywbem.Uint16(6) + Reboot = pywbem.Uint16(7) + Password = pywbem.Uint16(8) + Uninstall = pywbem.Uint16(9) + Log = pywbem.Uint16(10) + SilentMode = pywbem.Uint16(11) + AdministrativeMode = pywbem.Uint16(12) + ScheduleInstallAt = pywbem.Uint16(13) + # DMTF_Reserved = .. + # Vendor_Specific = 32768..65535 + _reverse_map = { + 2 : 'Defer target/system reset', + 3 : 'Force installation', + 4 : 'Install', + 5 : 'Update', + 6 : 'Repair', + 7 : 'Reboot', + 8 : 'Password', + 9 : 'Uninstall', + 10 : 'Log', + 11 : 'SilentMode', + 12 : 'AdministrativeMode', + 13 : 'ScheduleInstallAt' + } + + class SupportedURISchemes(object): + data = pywbem.Uint16(2) + file = pywbem.Uint16(3) + ftp = pywbem.Uint16(4) + http = pywbem.Uint16(5) + https = pywbem.Uint16(6) + nfs = pywbem.Uint16(7) + tftp = pywbem.Uint16(8) + # DMTF_Reserved = .. + # Vendor_Specific = 0x8000..0xFFFF + _reverse_map = { + 2 : 'data', + 3 : 'file', + 4 : 'ftp', + 5 : 'http', + 6 : 'https', + 7 : 'nfs', + 8 : 'tftp' + } + + class SupportedAsynchronousActions(object): + None_supported = pywbem.Uint16(2) + Install_From_Software_Identity = pywbem.Uint16(3) + Install_from_ByteStream = pywbem.Uint16(4) + Install_from_URI = pywbem.Uint16(5) + _reverse_map = { + 2 : 'None supported', + 3 : 'Install From Software Identity', + 4 : 'Install from ByteStream', + 5 : 'Install from URI' + } + + class CreateGoalSettings(object): + Success = pywbem.Uint16(0) + Not_Supported = pywbem.Uint16(1) + Unknown = pywbem.Uint16(2) + Timeout = pywbem.Uint16(3) + Failed = pywbem.Uint16(4) + Invalid_Parameter = pywbem.Uint16(5) + Alternative_Proposed = pywbem.Uint16(6) + # DMTF_Reserved = .. + # Vendor_Specific = 32768..65535 + + class SupportedSynchronousActions(object): + None_supported = pywbem.Uint16(2) + Install_From_Software_Identity = pywbem.Uint16(3) + Install_from_ByteStream = pywbem.Uint16(4) + Install_from_URI = pywbem.Uint16(5) + _reverse_map = { + 2 : 'None supported', + 3 : 'Install From Software Identity', + 4 : 'Install from ByteStream', + 5 : 'Install from URI' + } + +@cmpi_logging.trace_function +def get_path(): + """@return instance name with prefilled properties""" + op = pywbem.CIMInstanceName( + classname="LMI_SoftwareInstallationServiceCapabilities", + namespace="root/cimv2") + op['InstanceID'] = "LMI:LMI_SoftwareInstallationServiceCapabilities" + return op + +@cmpi_logging.trace_function +def check_path(env, caps, prop_name): + """ + Checks instance name of SoftwareInstallationServiceCapabilities. + @param prop_name name of object name; used for error descriptions + """ + if not isinstance(caps, pywbem.CIMInstanceName): + raise pywbem.CIMError(pywbem.CIM_ERR_INVALID_PARAMETER, + "\"%s\" must be a CIMInstanceName" % prop_name) + our_caps = get_path() + ch = env.get_cimom_handle() + if caps.namespace != our_caps.namespace: + raise pywbem.CIMError(pywbem.CIM_ERR_NOT_FOUND, + 'Namespace of "%s" does not match "%s"' % ( + prop_name, our_caps.namespace)) + if not ch.is_subclass(our_caps.namespace, + sub=caps.classname, + super=our_caps.classname): + raise pywbem.CIMError(pywbem.CIM_ERR_NOT_FOUND, + "Class of \"%s\" must be a sublass of %s" % ( + prop_name, our_caps.classname)) + if caps['InstanceID'] != our_caps['InstanceID']: + raise pywbem.CIMError(pywbem.CIM_ERR_NOT_FOUND, + "InstanceID of \"%s\" does not match \"%s\"" % + prop_name, our_caps['InstanceID']) + return True + +@cmpi_logging.trace_function +def check_path_property(env, op, prop_name): + """ + Checks, whether prop_name property of op object path is correct. + If not, an exception will be raised. + """ + if not prop_name in op: + raise pywbem.CIMError(pywbem.CIM_ERR_INVALID_PARAMETER, + "Missing %s key property!" % prop_name) + return check_path(env, op[prop_name], prop_name) + +def get_instance(model=None): + """ + Makes instance of LMI_SoftwareInstallationServiceCapabilities or + fills given model with properties. + """ + path = get_path() + if model is None: + model = pywbem.CIMInstance( + "LMI_SoftwareInstallationServiceCapabilities", path=path) + model['InstanceID'] = path['InstanceID'] + + model['CanAddToCollection'] = True + model['Caption'] = 'Capabilities of LMI:LMI_SoftwareInstallationService' + model['Description'] = ('This instance provides information' + ' about LMI:LMI_SoftwareInstallationService\'s capabilities.') + model['SupportedAsynchronousActions'] = [ + Values.SupportedAsynchronousActions.Install_From_Software_Identity, + Values.SupportedAsynchronousActions.Install_from_URI] + model['SupportedExtendedResourceTypes'] = [ + Values.SupportedExtendedResourceTypes.Linux_RPM] + model['SupportedInstallOptions'] = [ + Values.SupportedInstallOptions.Install, + Values.SupportedInstallOptions.Update, + Values.SupportedInstallOptions.Uninstall, + Values.SupportedInstallOptions.Force_installation, + Values.SupportedInstallOptions.Repair] + model['SupportedSynchronousActions'] = [ + Values.SupportedSynchronousActions.None_supported] + model['SupportedTargetTypes'] = ['rpm', 'yum'] + model['SupportedURISchemes'] = [ + Values.SupportedURISchemes.file, + Values.SupportedURISchemes.ftp, + Values.SupportedURISchemes.http, + Values.SupportedURISchemes.https] + return model + |