示例#1
0
    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)
示例#2
0
    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.")
示例#3
0
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)