diff options
19 files changed, 72 insertions, 166 deletions
diff --git a/src/software/lmi/software/LMI_AffectedSoftwareJobElement.py b/src/software/lmi/software/LMI_AffectedSoftwareJobElement.py index c0c5ceb..40dbf49 100644 --- a/src/software/lmi/software/LMI_AffectedSoftwareJobElement.py +++ b/src/software/lmi/software/LMI_AffectedSoftwareJobElement.py @@ -85,7 +85,7 @@ class LMI_AffectedSoftwareJobElement(CIMProvider2): sub=affected.classname, super="CIM_ComputerSystem"): AffectedSoftwareJobElement.fill_model_computer_system( - model, job, keys_only=False) + env, model, job, keys_only=False) elif ch.is_subclass(affected.namespace, sub=affected.classname, super='LMI_SystemSoftwareCollection'): @@ -128,7 +128,7 @@ class LMI_AffectedSoftwareJobElement(CIMProvider2): model.path.update({'AffectedElement': None, 'AffectingElement': None}) for job in YumDB.get_instance().get_job_list(): for mdl in AffectedSoftwareJobElement.generate_models_from_job( - job, keys_only=keys_only, model=model): + env, job, keys_only=keys_only, model=model): yield mdl @cmpi_logging.trace_method diff --git a/src/software/lmi/software/LMI_AssociatedSoftwareInstallationServiceCapabilities.py b/src/software/lmi/software/LMI_AssociatedSoftwareInstallationServiceCapabilities.py index 3cda259..ae15e42 100644 --- a/src/software/lmi/software/LMI_AssociatedSoftwareInstallationServiceCapabilities.py +++ b/src/software/lmi/software/LMI_AssociatedSoftwareInstallationServiceCapabilities.py @@ -103,7 +103,7 @@ class LMI_AssociatedSoftwareInstallationServiceCapabilities(CIMProvider2): model.path.update({'Capabilities': None, 'ManagedElement': None}) model['Capabilities'] = InstallationServiceCapabilities.get_path() - model['ManagedElement'] = InstallationService.get_path() + model['ManagedElement'] = InstallationService.get_path(env) if not keys_only: model['Characteristics'] = [ self.values.Characteristics.Default, diff --git a/src/software/lmi/software/LMI_HostedSoftwareCollection.py b/src/software/lmi/software/LMI_HostedSoftwareCollection.py index 9f87e1c..9e63d42 100644 --- a/src/software/lmi/software/LMI_HostedSoftwareCollection.py +++ b/src/software/lmi/software/LMI_HostedSoftwareCollection.py @@ -25,8 +25,9 @@ Instruments the CIM class LMI_HostedSoftwareCollection import pywbem from pywbem.cim_provider2 import CIMProvider2 +from lmi.providers import ComputerSystem from lmi.providers import cmpi_logging -from lmi.software.core import ComputerSystem, SystemCollection +from lmi.software.core import SystemCollection class LMI_HostedSoftwareCollection(CIMProvider2): """Instrument the CIM class LMI_HostedSoftwareCollection @@ -69,7 +70,7 @@ class LMI_HostedSoftwareCollection(CIMProvider2): model.path.update({"Antecedent":None, "Dependent":None}) - model["Antecedent"] = ComputerSystem.get_path() + model["Antecedent"] = ComputerSystem.get_path(env) model["Dependent"] = SystemCollection.get_path() return model @@ -98,7 +99,7 @@ class LMI_HostedSoftwareCollection(CIMProvider2): """ model.path.update({'Dependent': None, 'Antecedent': None}) - model["Antecedent"] = ComputerSystem.get_path() + model["Antecedent"] = ComputerSystem.get_path(env) model["Dependent"] = SystemCollection.get_path() yield model diff --git a/src/software/lmi/software/LMI_HostedSoftwareIdentityResource.py b/src/software/lmi/software/LMI_HostedSoftwareIdentityResource.py index 8c27850..4aa5369 100644 --- a/src/software/lmi/software/LMI_HostedSoftwareIdentityResource.py +++ b/src/software/lmi/software/LMI_HostedSoftwareIdentityResource.py @@ -29,9 +29,9 @@ import pywbem from pywbem.cim_provider2 import CIMProvider2 from lmi.providers import cmpi_logging +from lmi.providers import ComputerSystem from lmi.software import util from lmi.software.core import generate_references -from lmi.software.core import ComputerSystem from lmi.software.core import IdentityResource from lmi.software.yumdb import YumDB @@ -42,9 +42,10 @@ def generate_system_referents(env, object_name, model, _keys_only): """ ComputerSystem.check_path(env, object_name, "Antecedent") repomodel = util.new_instance_name('LMI_SoftwareIdentityResource') - model["Antecedent"] = ComputerSystem.get_path() + model["Antecedent"] = ComputerSystem.get_path(env) for repo in YumDB.get_instance().get_repository_list('all'): - model["Dependent"] = IdentityResource.repo2model(repo, model=repomodel) + model["Dependent"] = IdentityResource.repo2model( + env, repo, model=repomodel) yield model @cmpi_logging.trace_function @@ -54,8 +55,8 @@ def generate_repository_referents(env, object_name, model, _keys_only): """ repo = IdentityResource.object_path2repo( env, object_name, kind='all') - model["Antecedent"] = ComputerSystem.get_path() - model["Dependent"] = IdentityResource.repo2model(repo) + model["Antecedent"] = ComputerSystem.get_path(env) + model["Dependent"] = IdentityResource.repo2model(env, repo) yield model class LMI_HostedSoftwareIdentityResource(CIMProvider2): @@ -108,8 +109,8 @@ class LMI_HostedSoftwareIdentityResource(CIMProvider2): if len(repos) < 1: raise pywbem.CIMError(pywbem.CIM_ERR_NOT_FOUND, 'Unknown repository "%s".' % repoid) - model["Antecedent"] = ComputerSystem.get_path() - model["Dependent"] = IdentityResource.repo2model(repos[0]) + model["Antecedent"] = ComputerSystem.get_path(env) + model["Dependent"] = IdentityResource.repo2model(env, repos[0]) return model @@ -143,11 +144,11 @@ class LMI_HostedSoftwareIdentityResource(CIMProvider2): model.path.update({'Dependent': None, 'Antecedent': None}) repolist = YumDB.get_instance().get_repository_list('all') - model["Antecedent"] = ComputerSystem.get_path() + model["Antecedent"] = ComputerSystem.get_path(env) repomodel = util.new_instance_name('LMI_SoftwareIdentityResource') for repo in repolist: model["Dependent"] = IdentityResource.repo2model( - repo, model=repomodel) + env, repo, model=repomodel) yield model @cmpi_logging.trace_method diff --git a/src/software/lmi/software/LMI_HostedSoftwareInstallationService.py b/src/software/lmi/software/LMI_HostedSoftwareInstallationService.py index a581c76..fd7290b 100644 --- a/src/software/lmi/software/LMI_HostedSoftwareInstallationService.py +++ b/src/software/lmi/software/LMI_HostedSoftwareInstallationService.py @@ -30,8 +30,9 @@ import pywbem from pywbem.cim_provider2 import CIMProvider2 from lmi.providers import cmpi_logging +from lmi.providers import ComputerSystem from lmi.software import util -from lmi.software.core import ComputerSystem, InstallationService +from lmi.software.core import InstallationService class LMI_HostedSoftwareInstallationService(CIMProvider2): """Instrument the CIM class LMI_HostedSoftwareInstallationService @@ -78,8 +79,8 @@ class LMI_HostedSoftwareInstallationService(CIMProvider2): model.path.update({"Antecedent":None, "Dependent":None}) - model["Dependent"] = InstallationService.get_path() - model["Antecedent"] = ComputerSystem.get_path() + model["Antecedent"] = ComputerSystem.get_path(env) + model["Dependent"] = InstallationService.get_path(env) return model @@ -107,8 +108,8 @@ class LMI_HostedSoftwareInstallationService(CIMProvider2): """ model.path.update({'Dependent': None, 'Antecedent': None}) - model["Antecedent"] = ComputerSystem.get_path() - model["Dependent"] = InstallationService.get_path() + model["Antecedent"] = ComputerSystem.get_path(env) + model["Dependent"] = InstallationService.get_path(env) yield model diff --git a/src/software/lmi/software/LMI_InstalledSoftwareIdentity.py b/src/software/lmi/software/LMI_InstalledSoftwareIdentity.py index 8463171..7219609 100644 --- a/src/software/lmi/software/LMI_InstalledSoftwareIdentity.py +++ b/src/software/lmi/software/LMI_InstalledSoftwareIdentity.py @@ -29,9 +29,9 @@ import pywbem from pywbem.cim_provider2 import CIMProvider2 from lmi.providers import cmpi_logging +from lmi.providers import ComputerSystem from lmi.software import util from lmi.software.core import generate_references -from lmi.software.core import ComputerSystem from lmi.software.core import Identity from lmi.software.yumdb import YumDB @@ -45,7 +45,7 @@ def generate_system_referents(env, object_name, model, _keys_only): ComputerSystem.check_path(env, object_name, "object_name") pkg_model = util.new_instance_name('LMI_SoftwareIdentity', - System=ComputerSystem.get_path()) + System=ComputerSystem.get_path(env)) with YumDB.get_instance() as ydb: for pkg_info in ydb.get_package_list('installed', sort=True): model["InstalledSoftware"] = Identity.pkg2model( @@ -53,13 +53,13 @@ def generate_system_referents(env, object_name, model, _keys_only): yield model @cmpi_logging.trace_function -def generate_package_referents(_env, object_name, model, _keys_only): +def generate_package_referents(env, object_name, model, _keys_only): """ Handler for referents enumeration request. """ pkg_info = Identity.object_path2pkg(object_name, kind="installed") model['InstalledSoftware'] = Identity.pkg2model(pkg_info) - model["System"] = ComputerSystem.get_path() + model["System"] = ComputerSystem.get_path(env) yield model class LMI_InstalledSoftwareIdentity(CIMProvider2): @@ -105,7 +105,7 @@ class LMI_InstalledSoftwareIdentity(CIMProvider2): raise pywbem.CIMError(pywbem.CIM_ERR_INVALID_PARAMETER, "Expected object path for InstalledSoftware!") - model["System"] = model.path["System"] = ComputerSystem.get_path() + model["System"] = model.path["System"] = ComputerSystem.get_path(env) pkg_info = Identity.object_path2pkg( model['InstalledSoftware'], kind='installed') model['InstalledSoftware'] = Identity.pkg2model(pkg_info) @@ -135,7 +135,7 @@ class LMI_InstalledSoftwareIdentity(CIMProvider2): """ model.path.update({'InstalledSoftware': None, 'System': None}) - model['System'] = ComputerSystem.get_path() + model['System'] = ComputerSystem.get_path(env) inst_model = util.new_instance_name("LMI_SoftwareIdentity") with YumDB.get_instance() as yb: pl = yb.get_package_list('installed', sort=True) diff --git a/src/software/lmi/software/LMI_OwningSoftwareJobElement.py b/src/software/lmi/software/LMI_OwningSoftwareJobElement.py index 23b51a2..6415218 100644 --- a/src/software/lmi/software/LMI_OwningSoftwareJobElement.py +++ b/src/software/lmi/software/LMI_OwningSoftwareJobElement.py @@ -68,7 +68,7 @@ class LMI_OwningSoftwareJobElement(CIMProvider2): CIM_ERR_FAILED (some other unspecified error occurred) """ InstallationService.check_path_property(env, model, "OwningElement") - model['OwningElement'] = InstallationService.get_path() + model['OwningElement'] = InstallationService.get_path(env) job = Job.object_path2job(model['OwnedElement']) model['OwnedElement'] = Job.job2model(job) return model @@ -96,7 +96,7 @@ class LMI_OwningSoftwareJobElement(CIMProvider2): CIM_ERR_FAILED (some other unspecified error occurred) """ model.path.update({'OwningElement': None, 'OwnedElement': None}) - model['OwningElement'] = InstallationService.get_path() + model['OwningElement'] = InstallationService.get_path(env) for job in YumDB.get_instance().get_job_list(): model['OwnedElement'] = Job.job2model(job) yield model diff --git a/src/software/lmi/software/LMI_ResourceForSoftwareIdentity.py b/src/software/lmi/software/LMI_ResourceForSoftwareIdentity.py index 6a9d7af..71923d3 100644 --- a/src/software/lmi/software/LMI_ResourceForSoftwareIdentity.py +++ b/src/software/lmi/software/LMI_ResourceForSoftwareIdentity.py @@ -34,7 +34,7 @@ from lmi.software.core import IdentityResource from lmi.software.yumdb import YumDB @cmpi_logging.trace_function -def generate_package_referents(_env, object_name, model, _keys_only): +def generate_package_referents(env, object_name, model, _keys_only): """ Generates models of repositories holding package represented by object_name. @@ -47,7 +47,7 @@ def generate_package_referents(_env, object_name, model, _keys_only): model['ManagedElement'] = Identity.pkg2model(pkg_info) for repo in repos: model["AvailableSAP"] = \ - IdentityResource.repo2model(repo) + IdentityResource.repo2model(env, repo) yield model @cmpi_logging.trace_function @@ -63,7 +63,7 @@ def generate_repository_referents(env, object_name, model, _keys_only): allow_duplicates=True, sort=True, include_repos=repo.repoid, exclude_repos='*') - model['AvailableSAP'] = IdentityResource.repo2model(repo) + model['AvailableSAP'] = IdentityResource.repo2model(env, repo) pkg_model = util.new_instance_name("LMI_SoftwareIdentity") for pkg_info in pkglist: model["ManagedElement"] = Identity.pkg2model( @@ -134,7 +134,7 @@ class LMI_ResourceForSoftwareIdentity(CIMProvider2): repo = IdentityResource.object_path2repo( env, model["AvailableSAP"], 'all') - model["AvailableSAP"] = IdentityResource.repo2model(repo) + model["AvailableSAP"] = IdentityResource.repo2model(env, repo) model["ManagedElement"] = Identity.pkg2model(pkg_info) return model @@ -184,7 +184,7 @@ class LMI_ResourceForSoftwareIdentity(CIMProvider2): 'unknown or disabled repository "%s" for package "%s"', pkg, pkg.repoid) model["AvailableSAP"] = IdentityResource.repo2model( - repo, model=sap_model) + env, repo, model=sap_model) model["ManagedElement"] = Identity.pkg2model( pkg, model=elem_model) yield model diff --git a/src/software/lmi/software/LMI_SoftwareIdentityFileCheck.py b/src/software/lmi/software/LMI_SoftwareIdentityFileCheck.py index aa42e0d..e483f67 100644 --- a/src/software/lmi/software/LMI_SoftwareIdentityFileCheck.py +++ b/src/software/lmi/software/LMI_SoftwareIdentityFileCheck.py @@ -29,7 +29,7 @@ import pywbem from pywbem.cim_provider2 import CIMProvider2 from lmi.providers import cmpi_logging -from lmi.software.core import ComputerSystem +from lmi.providers import ComputerSystem from lmi.software.core import IdentityFileCheck class LMI_SoftwareIdentityFileCheck(CIMProvider2): diff --git a/src/software/lmi/software/LMI_SoftwareIdentityResource.py b/src/software/lmi/software/LMI_SoftwareIdentityResource.py index 46a3346..2e70e80 100644 --- a/src/software/lmi/software/LMI_SoftwareIdentityResource.py +++ b/src/software/lmi/software/LMI_SoftwareIdentityResource.py @@ -77,7 +77,7 @@ class LMI_SoftwareIdentityResource(CIMProvider2): CIM_ERR_FAILED (some other unspecified error occurred) """ repo = IdentityResource.object_path2repo(env, model.path, kind='all') - return IdentityResource.repo2model(repo, keys_only=False, model=model) + return IdentityResource.repo2model(env, repo, keys_only=False, model=model) @cmpi_logging.trace_method def enum_instances(self, env, model, keys_only): @@ -111,7 +111,7 @@ class LMI_SoftwareIdentityResource(CIMProvider2): repolist = YumDB.get_instance().get_repository_list('all') for repo in repolist: yield IdentityResource.repo2model( - repo, keys_only=keys_only, model=model) + env, repo, keys_only=keys_only, model=model) @cmpi_logging.trace_method def set_instance(self, env, instance, modify_existing): diff --git a/src/software/lmi/software/LMI_SoftwareInstallationService.py b/src/software/lmi/software/LMI_SoftwareInstallationService.py index 3e93ba4..7b51a4e 100644 --- a/src/software/lmi/software/LMI_SoftwareInstallationService.py +++ b/src/software/lmi/software/LMI_SoftwareInstallationService.py @@ -70,7 +70,7 @@ class LMI_SoftwareInstallationService(CIMProvider2): """ InstallationService.check_path(env, model.path, "path") - objpath = InstallationService.get_path() + objpath = InstallationService.get_path(env) for key, value in objpath.keybindings.items(): model[key] = value @@ -119,7 +119,7 @@ class LMI_SoftwareInstallationService(CIMProvider2): model.path.update({'CreationClassName': None, 'SystemName': None, 'Name': None, 'SystemCreationClassName': None}) - objpath = InstallationService.get_path() + objpath = InstallationService.get_path(env) for key, value in objpath.keybindings.items(): model[key] = value if not keys_only: diff --git a/src/software/lmi/software/LMI_SoftwareInstallationServiceAffectsElement.py b/src/software/lmi/software/LMI_SoftwareInstallationServiceAffectsElement.py index c46e6bd..61474b1 100644 --- a/src/software/lmi/software/LMI_SoftwareInstallationServiceAffectsElement.py +++ b/src/software/lmi/software/LMI_SoftwareInstallationServiceAffectsElement.py @@ -26,8 +26,8 @@ import pywbem from pywbem.cim_provider2 import CIMProvider2 from lmi.providers import cmpi_logging +from lmi.providers import ComputerSystem from lmi.software import util -from lmi.software.core import ComputerSystem from lmi.software.core import Identity from lmi.software.core import InstallationService from lmi.software.core import InstallationServiceAffectsElement @@ -41,7 +41,7 @@ def generate_service_referents(env, model, object_name, keys_only): """ InstallationService.check_path(env, object_name, "object_name") InstallationServiceAffectsElement.fill_model_computer_system( - model, keys_only=keys_only) + env, model, keys_only=keys_only) yield model avail_model = util.new_instance_name("LMI_SoftwareIdentity") @@ -103,7 +103,7 @@ class LMI_SoftwareInstallationServiceAffectsElement(CIMProvider2): sub=affected.classname, super="CIM_ComputerSystem"): InstallationServiceAffectsElement.fill_model_computer_system( - model, keys_only=False) + env, model, keys_only=False) else: LOG().error("Unhandled classname: %s", affected.classname) raise pywbem.CIMError(pywbem.CIM_ERR_INVALID_PARAMETER, @@ -136,9 +136,9 @@ class LMI_SoftwareInstallationServiceAffectsElement(CIMProvider2): """ model.path.update({'AffectedElement': None, 'AffectingElement': None}) - model['AffectingElement'] = InstallationService.get_path() + model['AffectingElement'] = InstallationService.get_path(env) InstallationServiceAffectsElement.fill_model_computer_system( - model, keys_only=keys_only) + env, model, keys_only=keys_only) yield model avail_model = util.new_instance_name("LMI_SoftwareIdentity") @@ -275,8 +275,9 @@ class LMI_SoftwareInstallationServiceAffectsElement(CIMProvider2): super="CIM_ComputerSystem")): ComputerSystem.check_path(env, object_name, "object_name") model = InstallationServiceAffectsElement. \ - fill_model_computer_system(model, keys_only=keys_only) - model["AffectingElement"] = InstallationService.get_path() + fill_model_computer_system( + env, model, keys_only=keys_only) + model["AffectingElement"] = InstallationService.get_path(env) yield model elif ( (not role or role.lower() == 'affectedelement') @@ -287,7 +288,7 @@ class LMI_SoftwareInstallationServiceAffectsElement(CIMProvider2): model = InstallationServiceAffectsElement. \ fill_model_identity(model, pkg_info, keys_only=keys_only) - model["AffectingElement"] = InstallationService.get_path() + model["AffectingElement"] = InstallationService.get_path(env) yield model except pywbem.CIMError as exc: diff --git a/src/software/lmi/software/core/AffectedSoftwareJobElement.py b/src/software/lmi/software/core/AffectedSoftwareJobElement.py index 9a0e370..c5dc3b0 100644 --- a/src/software/lmi/software/core/AffectedSoftwareJobElement.py +++ b/src/software/lmi/software/core/AffectedSoftwareJobElement.py @@ -24,8 +24,8 @@ Just a common functionality related to AffectedSoftwareJobElement provider. import pywbem from lmi.providers import cmpi_logging +from lmi.providers import ComputerSystem from lmi.software import util -from lmi.software.core import ComputerSystem from lmi.software.core import Identity from lmi.software.core import IdentityFileCheck from lmi.software.core import Job @@ -102,7 +102,7 @@ def check_path(env, op): elif ch.is_subclass(affected.namespace, sub=affected.classname, super="CIM_ComputerSystem"): ComputerSystem.check_path(env, affected, "AffectedElement") - affected = ComputerSystem.get_path() + affected = ComputerSystem.get_path(env) elif ch.is_subclass(affected.namespace, sub=affected.classname, super='LMI_SoftwareIdentityFileCheck'): if not isinstance(job, jobs.YumCheckPackage): @@ -173,11 +173,11 @@ def job2affected_software_identity(job): return (affected, effects, descriptions) @cmpi_logging.trace_function -def fill_model_computer_system(model, job, keys_only=True): +def fill_model_computer_system(env, model, job, keys_only=True): """ Fills model's AffectedElement and all non-key properties. """ - model["AffectedElement"] = ComputerSystem.get_path() + model["AffectedElement"] = ComputerSystem.get_path(env) if not keys_only: model["ElementEffects"] = [Values.ElementEffects.Other] description = "Modifying software collection." @@ -235,7 +235,7 @@ def generate_failed_checks(model, job, keys_only=True): yield fill_model_failed_check(model, failed, keys_only) @cmpi_logging.trace_function -def generate_models_from_job(job, keys_only=True, model=None): +def generate_models_from_job(env, job, keys_only=True, model=None): """ Generates all associations between job and affected elements. """ @@ -261,6 +261,6 @@ def generate_models_from_job(job, keys_only=True, model=None): else: # package verification - associate to failed file checks for model in generate_failed_checks(model, job, keys_only=keys_only): yield model - fill_model_computer_system(model, job, keys_only=keys_only) + fill_model_computer_system(env, model, job, keys_only=keys_only) yield model diff --git a/src/software/lmi/software/core/ComputerSystem.py b/src/software/lmi/software/core/ComputerSystem.py deleted file mode 100644 index 30e03cf..0000000 --- a/src/software/lmi/software/core/ComputerSystem.py +++ /dev/null @@ -1,90 +0,0 @@ -# -*- encoding: utf-8 -*- -# Software Management Providers -# -# Copyright (C) 2012-2013 Red Hat, Inc. All rights reserved. -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library 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 -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -""" -Just a common functionality related to associated class CIM_ComputerSystem. -""" - -import pywbem - -from lmi.providers import cmpi_logging -from lmi.software import util - -def get_path(prefix=None): - """ - @return object path of CIM_ComputerSystem - """ - if prefix is None: - classname = util.Configuration.get_instance().system_class_name - else: - classname = '%s_ComputerSystem' % prefix - op = util.new_instance_name(classname, - CreationClassName=classname, - Name=util.Configuration.get_instance().system_name) - return op - -@cmpi_logging.trace_function -def check_path(env, system, prop_name): - """ - Checks instance name of ComputerSystem. - @param system instance name - @param prop_name name of object path - """ - if not isinstance(system, pywbem.CIMInstanceName): - raise pywbem.CIMError(pywbem.CIM_ERR_INVALID_PARAMETER, - "\"%s\" must be a CIMInstanceName" % prop_name) - our_system = get_path() - ch = env.get_cimom_handle() - if system.namespace != our_system.namespace: - raise pywbem.CIMError(pywbem.CIM_ERR_NOT_FOUND, - 'Namespace of "%s" does not match "%s"' % ( - prop_name, our_system.namespace)) - if not ch.is_subclass(our_system.namespace, - sub=system.classname, - super="CIM_ComputerSystem"): - raise pywbem.CIMError(pywbem.CIM_ERR_NOT_FOUND, - "Class of \"%s\" must be a sublass of %s" % ( - prop_name, our_system.classname)) - if not 'CreationClassName' in system or not 'Name' in system: - raise pywbem.CIMError(pywbem.CIM_ERR_NOT_FOUND, - "\"%s\" is missing one of keys", prop_name) - if not ch.is_subclass(our_system.namespace, - sub=system['CreationClassName'], - super="CIM_ComputerSystem"): - raise pywbem.CIMError(pywbem.CIM_ERR_NOT_FOUND, - "CreationClassName of \"%s\" must be a sublass of %s" % ( - prop_name, our_system.classname)) - if not util.is_this_system(system['Name']): - raise pywbem.CIMError(pywbem.CIM_ERR_NOT_FOUND, - "Name of \"%s\" does not match \"%s\"" % ( - prop_name, our_system['Name'])) - return True - -@cmpi_logging.trace_function -def check_path_property(env, op, prop_name): - """ - Checks, whether object path contains correct instance name of - CIM_ComputerSystem corresponding to this system. - If not, an exception is 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) - diff --git a/src/software/lmi/software/core/Error.py b/src/software/lmi/software/core/Error.py index b199fdd..2955c0b 100644 --- a/src/software/lmi/software/core/Error.py +++ b/src/software/lmi/software/core/Error.py @@ -433,7 +433,7 @@ def make_instance( if error_source is None: # this is a cyclic dependency from lmi.software.core import InstallationService - error_source = InstallationService.get_path() + error_source = InstallationService.get_path(env) if not isinstance(error_source, pywbem.CIMInstanceName): raise TypeError('error_source must be a CIMInstanceName') diff --git a/src/software/lmi/software/core/IdentityResource.py b/src/software/lmi/software/core/IdentityResource.py index 884e09b..c7d1e7a 100644 --- a/src/software/lmi/software/core/IdentityResource.py +++ b/src/software/lmi/software/core/IdentityResource.py @@ -24,6 +24,8 @@ Just a common functionality related to LMI_SoftwareIdentityResource provider. import pywbem from lmi.providers import cmpi_logging +from lmi.providers import ComputerSystem +from lmi.providers import is_this_system from lmi.software import util from lmi.software.yumdb import YumDB from lmi.software.yumdb.repository import Repository @@ -521,11 +523,10 @@ def object_path2repo(env, op, kind='enabled'): or not op["SystemCreationClassName"]) or (not "SystemName" in op or not op["SystemName"])): raise pywbem.CIMError(pywbem.CIM_ERR_INVALID_PARAMETER, "Wrong keys.") - if not util.is_this_system(op["SystemName"]): + if not is_this_system(op["SystemName"]): raise pywbem.CIMError(pywbem.CIM_ERR_NOT_FOUND, 'SystemName "%s" does not match "%s".' % ( - op["SystemName"], - util.Configuration.get_instance().system_name)) + op["SystemName"], ComputerSystem.get_system_name(env))) ch = env.get_cimom_handle() if not ch.is_subclass(util.Configuration.get_instance().namespace, sub=op["CreationClassName"], @@ -623,7 +624,7 @@ def _fill_non_keys(repo, model): model['TransitioningToState'] = Values.TransitioningToState.Not_Applicable @cmpi_logging.trace_function -def repo2model(repo, keys_only=True, model=None): +def repo2model(env, repo, keys_only=True, model=None): """ @param model if not None, will be filled with data, otherwise a new instance of CIMInstance or CIMObjectPath is created @@ -646,7 +647,7 @@ def repo2model(repo, keys_only=True, model=None): _set_key("Name", repo.repoid) _set_key("SystemCreationClassName", util.Configuration.get_instance().system_class_name) - _set_key("SystemName", util.Configuration.get_instance().system_name) + _set_key("SystemName", ComputerSystem.get_system_name(env)) if not keys_only: _fill_non_keys(repo, model) diff --git a/src/software/lmi/software/core/InstallationService.py b/src/software/lmi/software/core/InstallationService.py index e7e43c8..22aaa85 100644 --- a/src/software/lmi/software/core/InstallationService.py +++ b/src/software/lmi/software/core/InstallationService.py @@ -25,8 +25,9 @@ provider. import pywbem from lmi.providers import cmpi_logging +from lmi.providers import ComputerSystem +from lmi.providers import is_this_system from lmi.software import util -from lmi.software.core import ComputerSystem from lmi.software.core import Identity from lmi.software.core import Job from lmi.software.core import SystemCollection @@ -564,9 +565,9 @@ class Values(object): Found = pywbem.Uint32(0) NoMatch = pywbem.Uint32(1) -def get_path(): +def get_path(env): """@return instance name with prefilled properties""" - systemop = ComputerSystem.get_path() + systemop = ComputerSystem.get_path(env) clsname = "LMI_SoftwareInstallationService" op = util.new_instance_name(clsname, CreationClassName=clsname, @@ -584,7 +585,7 @@ def check_path(env, service, prop_name): if not isinstance(service, pywbem.CIMInstanceName): raise pywbem.CIMError(pywbem.CIM_ERR_INVALID_PARAMETER, "\"%s\" must be a CIMInstanceName" % prop_name) - our_service = get_path() + our_service = get_path(env) ch = env.get_cimom_handle() if service.namespace != our_service.namespace: raise pywbem.CIMError(pywbem.CIM_ERR_NOT_FOUND, @@ -602,7 +603,7 @@ def check_path(env, service, prop_name): "\"%s\" is missing %s key property" % ( prop_name, key)) if key == "SystemName": continue - if not util.is_this_system(service["SystemName"]): + if not is_this_system(service["SystemName"]): raise pywbem.CIMError(pywbem.CIM_ERR_NOT_FOUND, "\"%s\" key property SystemName(%s) does not match \"%s\"" % ( prop_name, service[key], our_service[key])) diff --git a/src/software/lmi/software/core/InstallationServiceAffectsElement.py b/src/software/lmi/software/core/InstallationServiceAffectsElement.py index fc1d317..83b7ef8 100644 --- a/src/software/lmi/software/core/InstallationServiceAffectsElement.py +++ b/src/software/lmi/software/core/InstallationServiceAffectsElement.py @@ -25,7 +25,7 @@ LMI_SoftwareInstallationServiceAffectsElement. import pywbem from lmi.providers import cmpi_logging -from lmi.software.core import ComputerSystem +from lmi.providers import ComputerSystem from lmi.software.core import Identity class Values(object): @@ -58,11 +58,11 @@ class Values(object): } @cmpi_logging.trace_function -def fill_model_computer_system(model, keys_only=True): +def fill_model_computer_system(env, model, keys_only=True): """ Fills model's AffectedElement and all non-key properties. """ - model["AffectedElement"] = ComputerSystem.get_path() + model["AffectedElement"] = ComputerSystem.get_path(env) if not keys_only: model["ElementEffects"] = [ Values.ElementEffects.Enhances_Integrity, diff --git a/src/software/lmi/software/util/__init__.py b/src/software/lmi/software/util/__init__.py index e5bcc11..c11a96c 100644 --- a/src/software/lmi/software/util/__init__.py +++ b/src/software/lmi/software/util/__init__.py @@ -27,7 +27,6 @@ import platform import pywbem import re import signal -import socket from lmi.software.util.SoftwareConfiguration \ import SoftwareConfiguration as Configuration @@ -191,12 +190,3 @@ def new_instance_name(class_name, namespace=None, **kwargs): host=Configuration.get_instance().system_name, namespace=namespace, keybindings=keybindings) - -def is_this_system(system_name): - """ - Return True if given system_name matches the hostname of currently - running system. - """ - return ( socket.gethostbyaddr(system_name)[0] - == socket.gethostbyaddr( - Configuration.get_instance().system_name)[0]) |