diff options
Diffstat (limited to 'tools/devassistant/files/crt/python/openlmi/src/lmi')
-rw-r--r-- | tools/devassistant/files/crt/python/openlmi/src/lmi/{{PROJECT_NAME}}/LMI_MyCoolClass.py | 173 | ||||
-rw-r--r-- | tools/devassistant/files/crt/python/openlmi/src/lmi/{{PROJECT_NAME}}/__init__.py.tpl | 22 |
2 files changed, 195 insertions, 0 deletions
diff --git a/tools/devassistant/files/crt/python/openlmi/src/lmi/{{PROJECT_NAME}}/LMI_MyCoolClass.py b/tools/devassistant/files/crt/python/openlmi/src/lmi/{{PROJECT_NAME}}/LMI_MyCoolClass.py new file mode 100644 index 0000000..4c7637f --- /dev/null +++ b/tools/devassistant/files/crt/python/openlmi/src/lmi/{{PROJECT_NAME}}/LMI_MyCoolClass.py @@ -0,0 +1,173 @@ +"""Python Provider for LMI_MyCoolClass + +Instruments the CIM class LMI_MyCoolClass + +""" + +import pywbem +from pywbem.cim_provider2 import CIMProvider2 + +class LMI_MyCoolClass(CIMProvider2): + """Instrument the CIM class LMI_MyCoolClass + + ManagedElement is an abstract class that provides a common superclass + (or top of the inheritance tree) for the non-association classes in + the CIM Schema. Feel free to extend it to your needs. + + """ + + def __init__ (self, env): + logger = env.get_logger() + logger.log_debug('Initializing provider %s from %s' \ + % (self.__class__.__name__, __file__)) + + def get_instance(self, env, model): + """Return an instance. + + Keyword arguments: + env -- Provider Environment (pycimmb.ProviderEnvironment) + model -- A template of the pywbem.CIMInstance to be returned. The + key properties are set on this instance to correspond to the + instanceName that was requested. The properties of the model + are already filtered according to the PropertyList from the + request. Only properties present in the model need to be + given values. If you prefer, you can set all of the + values, and the instance will be filtered for you. + + Possible Errors: + CIM_ERR_ACCESS_DENIED + CIM_ERR_INVALID_PARAMETER (including missing, duplicate, unrecognized + or otherwise incorrect parameters) + CIM_ERR_NOT_FOUND (the CIM Class does exist, but the requested CIM + Instance does not exist in the specified namespace) + CIM_ERR_FAILED (some other unspecified error occurred) + + """ + + logger = env.get_logger() + logger.log_debug('Entering %s.get_instance()' \ + % self.__class__.__name__) + + + # TODO fetch system resource matching the following keys: + + #model['Caption'] = '' # TODO + #model['Description'] = '' # TODO + return model + + def enum_instances(self, env, model, keys_only): + """Enumerate instances. + + The WBEM operations EnumerateInstances and EnumerateInstanceNames + are both mapped to this method. + This method is a python generator + + Keyword arguments: + env -- Provider Environment (pycimmb.ProviderEnvironment) + model -- A template of the pywbem.CIMInstances to be generated. + The properties of the model are already filtered according to + the PropertyList from the request. Only properties present in + the model need to be given values. If you prefer, you can + always set all of the values, and the instance will be filtered + for you. + keys_only -- A boolean. True if only the key properties should be + set on the generated instances. + + Possible Errors: + CIM_ERR_FAILED (some other unspecified error occurred) + + """ + + logger = env.get_logger() + logger.log_debug('Entering %s.enum_instances()' \ + % self.__class__.__name__) + + # Prime model.path with knowledge of the keys, so key values on + # the CIMInstanceName (model.path) will automatically be set when + # we set property values on the model. + model.path.update({}) + + while False: # TODO more instances? + # TODO fetch system resource + # Key properties + if keys_only: + yield model + else: + try: + yield self.get_instance(env, model) + except pywbem.CIMError, (num, msg): + if num not in (pywbem.CIM_ERR_NOT_FOUND, + pywbem.CIM_ERR_ACCESS_DENIED): + raise + + def set_instance(self, env, instance, modify_existing): + """Return a newly created or modified instance. + + Keyword arguments: + env -- Provider Environment (pycimmb.ProviderEnvironment) + instance -- The new pywbem.CIMInstance. If modifying an existing + instance, the properties on this instance have been filtered by + the PropertyList from the request. + modify_existing -- True if ModifyInstance, False if CreateInstance + + Return the new instance. The keys must be set on the new instance. + + Possible Errors: + CIM_ERR_ACCESS_DENIED + CIM_ERR_NOT_SUPPORTED + CIM_ERR_INVALID_PARAMETER (including missing, duplicate, unrecognized + or otherwise incorrect parameters) + CIM_ERR_ALREADY_EXISTS (the CIM Instance already exists -- only + valid if modify_existing is False, indicating that the operation + was CreateInstance) + CIM_ERR_NOT_FOUND (the CIM Instance does not exist -- only valid + if modify_existing is True, indicating that the operation + was ModifyInstance) + CIM_ERR_FAILED (some other unspecified error occurred) + + """ + + logger = env.get_logger() + logger.log_debug('Entering %s.set_instance()' \ + % self.__class__.__name__) + # TODO create or modify the instance + raise pywbem.CIMError(pywbem.CIM_ERR_NOT_SUPPORTED) # Remove to implement + return instance + + def delete_instance(self, env, instance_name): + """Delete an instance. + + Keyword arguments: + env -- Provider Environment (pycimmb.ProviderEnvironment) + instance_name -- A pywbem.CIMInstanceName specifying the instance + to delete. + + Possible Errors: + CIM_ERR_ACCESS_DENIED + CIM_ERR_NOT_SUPPORTED + CIM_ERR_INVALID_NAMESPACE + CIM_ERR_INVALID_PARAMETER (including missing, duplicate, unrecognized + or otherwise incorrect parameters) + CIM_ERR_INVALID_CLASS (the CIM Class does not exist in the specified + namespace) + CIM_ERR_NOT_FOUND (the CIM Class does exist, but the requested CIM + Instance does not exist in the specified namespace) + CIM_ERR_FAILED (some other unspecified error occurred) + + """ + + logger = env.get_logger() + logger.log_debug('Entering %s.delete_instance()' \ + % self.__class__.__name__) + + # TODO delete the resource + raise pywbem.CIMError(pywbem.CIM_ERR_NOT_SUPPORTED) # Remove to implement + +## end of class LMI_MyCoolClassProvider + +## get_providers() for associating CIM Class Name to python provider class name + +def get_providers(env): + lmi_mycoolclass_prov = LMI_MyCoolClass(env) + return {'LMI_MyCoolClass': lmi_mycoolclass_prov} + diff --git a/tools/devassistant/files/crt/python/openlmi/src/lmi/{{PROJECT_NAME}}/__init__.py.tpl b/tools/devassistant/files/crt/python/openlmi/src/lmi/{{PROJECT_NAME}}/__init__.py.tpl new file mode 100644 index 0000000..7e506f2 --- /dev/null +++ b/tools/devassistant/files/crt/python/openlmi/src/lmi/{{PROJECT_NAME}}/__init__.py.tpl @@ -0,0 +1,22 @@ +# Copyright (C) 2014 John Doe. 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 +# +# Authors: John Doe <john@example.com> + +""" +{{ PROJECT_NAME }}. + +""" |