def get_power_state(self): """Get current power state of this node :param node: Ironic node one of :class:`ironic.db.models.Node` :raises: InvalidParameterValue if required Ucs parameters are missing :raises: UcsOperationError: on an error from Ucs. :returns: Power state of the given node """ rn_array = [ self.helper.service_profile, ManagedObject(NamingId.LS_POWER).MakeRn() ] try: ls_power = ucs_helper.get_managed_object( self.helper.handle, LsPower.ClassId(), {LsPower.DN: UcsUtils.MakeDn(rn_array)}) if not ls_power: raise exception.UcsOperationError( "get_power_state", "Failed to get LsPower MO, configure valid " "service-profile") return ls_power[0].getattr(LsPower.STATE) except UcsException as ex: raise exception.UcsOperationError(message=ex)
def set_power_state(self, desired_state): """Set power state of this node :param node: Ironic node one of :class:`ironic.db.models.Node` :raises: InvalidParameterValue if required seamicro parameters are missing. :raises: UcsOperationError on an error from UcsHandle Client. :returns: Power state of the given node """ rn_array = [ self.helper.service_profile, ManagedObject(NamingId.LS_POWER).MakeRn() ] try: ls_power = ucs_helper.get_managed_object( self.helper.handle, LsPower.ClassId(), {LsPower.DN: UcsUtils.MakeDn(rn_array)}) if not ls_power: raise exception.UcsOperationError( "set_power_state", "Failed to get power MO," " configure valid service-profile.") else: ls_power_set = self.helper.handle.SetManagedObject( ls_power, LsPower.ClassId(), {LsPower.STATE: desired_state}, dumpXml=YesOrNo.TRUE) if ls_power_set: power = ls_power_set.pop() return power.getattr(LsPower.STATE) else: return states.ERROR except Exception as ex: raise exception.UcsOperationError( "set_power_state", "Failed to get power MO," "configure valid servie-profile.")
def config_managed_object(p_dn, p_class_id, class_id, mo_config, mo_dn, handle=None, delete=True): """Configure the specified MO in UCS Manager. :param uuid: MO config :param p_dn: parent MO DN :param p_class_id: parent MO class ID :param class_id: MO class ID :param MO configuration: MO config :param mo_dn: MO DN value :param handle: optional UCS Manager handle object :returns: Managed Object :raises: UcsOperationError in case of failure. """ if handle is None: handle = self.handle try: result = handle.AddManagedObject(None, classId=class_id, params=mo_config, modifyPresent=True, dumpXml=YesOrNo.TRUE) return result except UcsException as ex: print(_("Cisco client exception: %(msg)s"), {'msg': ex}) raise exception.UcsOperationError('config_managed_object', error=ex)