コード例 #1
0
    def get_boot_device(self):
        """Get the current boot device for the node.

            Provides the current boot device of the node. Be aware that not
            all drivers support this.

            :raises: InvalidParameterValue if any connection parameters are
                incorrect.
            :raises: MissingParameterValue if a required parameter is missing
            :returns: a dictionary containing:

            :boot_device: the boot device, one of
            :mod:`ironic.common.boot_devices` or None if it is unknown.
            :persistent: Whether the boot device will persist to all
                future boots or not, None if it is unknown.
            """
        operation = 'get_boot_device'
        try:
            boot_device = None
            boot_devices = get_children_by_dn(self.__handle,
                                              self.__boot_policy_dn)
            if boot_devices:
                for boot_device_mo in boot_devices:
                    if boot_device_mo.Order == 1:
                        boot_device = boot_device_rn[boot_device_mo.Rn]
                        break

            return {'boot_device': boot_device, 'persistent': None}
        except UcsException as ex:
            print "Cisco client exception: %ss." % (ex)
            raise exception.UcsOperationError(operation=operation, error=ex)
コード例 #2
0
    def get_boot_device(self):
        service_profile = get_mo_by_dn(self.__handle,
                                       self.__service_profile_dn)

        operation = "get_boot_device"
        if not service_profile:
            raise exception.UcsOperationError(operation=operation,
                                              error="Invalid Service Profile")

        if not service_profile.BootPolicyName:
            boot_dn = UcsUtils.MakeDn(
                [self.__service_profile_dn, "boot-policy"])
            class_id = "LsbootDef"
        else:
            boot_dn = UcsUtils.MakeDn([
                self.__org_dn,
                "boot-policy-%s" % service_profile.BootPolicyName
            ])
            class_id = "LsbootPolicy"

        operation = "get_boot_device"
        try:
            boot_device = None
            boot_devices = get_children_by_dn(self.__handle, boot_dn)
            if boot_devices:
                for boot_device_mo in boot_devices:
                    if int(boot_device_mo.Order) == 1:
                        boot_device = boot_device_rn[boot_device_mo.Rn]
                        break
            return {'boot_device': boot_device, 'persistent': None}
        except UcsException as ex:
            print "Cisco client exception: %ss." % (ex)
            raise exception.UcsOperationError(operation=operation, error=ex)
コード例 #3
0
ファイル: spmanager.py プロジェクト: CiscoUcs/UcsPythonSDK
    def get_boot_device(self):
        """Get the current boot device for the node.

            Provides the current boot device of the node. Be aware that not
            all drivers support this.

            :raises: InvalidParameterValue if any connection parameters are
                incorrect.
            :raises: MissingParameterValue if a required parameter is missing
            :returns: a dictionary containing:

            :boot_device: the boot device, one of
            :mod:`ironic.common.boot_devices` or None if it is unknown.
            :persistent: Whether the boot device will persist to all
                future boots or not, None if it is unknown.
            """
        operation = 'get_boot_device'
        try:
            boot_device = None
            boot_devices = get_children_by_dn(self.__handle, self.__boot_policy_dn)
            if boot_devices:
                for boot_device_mo in boot_devices:
                    if boot_device_mo.Order == 1:
                        boot_device = boot_device_rn[boot_device_mo.Rn]
                        break

            return {'boot_device': boot_device, 'persistent': None}
        except UcsException as ex:
            print "Cisco client exception: %ss." %(ex)
            raise exception.UcsOperationError(operation=operation, error=ex)
コード例 #4
0
ファイル: spmanager.py プロジェクト: CiscoUcs/UcsPythonSDK
    def get_boot_device(self):
        service_profile = get_mo_by_dn(self.__handle, self.__service_profile_dn)

        operation = "get_boot_device"
        if not service_profile:
            raise exception.UcsOperationError(operation=operation,
                                              error="Invalid Service Profile")

        if not service_profile.BootPolicyName:
            boot_dn = UcsUtils.MakeDn([self.__service_profile_dn, "boot-policy"])
            class_id = "LsbootDef"
        else:
            boot_dn = UcsUtils.MakeDn([self.__org_dn, "boot-policy-%s"%service_profile.BootPolicyName])
            class_id = "LsbootPolicy"

        operation = "get_boot_device"
        try:
            boot_device = None
            boot_devices = get_children_by_dn(self.__handle, boot_dn)
            if boot_devices:
                for boot_device_mo in boot_devices:
                    if int(boot_device_mo.Order) == 1:
                        boot_device = boot_device_rn[boot_device_mo.Rn]
                        break
            return {'boot_device': boot_device, 'persistent': None}
        except UcsException as ex:
            print "Cisco client exception: %ss." %(ex)
            raise exception.UcsOperationError(operation=operation, error=ex)
コード例 #5
0
    def add_boot_device(self, boot_device_name, order=None):
        operation = "add_boot_device"
        boot_device_meta = BootDeviceMeta(
            *boot_device_meta_dict[boot_device_name])
        boot_device_dn = UcsUtils.MakeDn(
            [self.__boot_policy_dn, boot_device_meta.rn])

        try:
            boot_policy = get_mo_by_dn(self.__handle, self.__boot_policy_dn)
            if not boot_policy:
                raise exception.UcsOperationError(
                    operation=operation,
                    error="Unknown BootPolicy %s" % (self.__boot_policy_dn))
            existing_boot_devices = get_children_by_dn(self.__handle,
                                                       self.__boot_policy_dn)
            if existing_boot_devices:
                boot_order_dict = {}
                boot_device_present = False
                boot_device_order = None
                for existing_boot_device in existing_boot_devices:
                    boot_order_dict[int(
                        existing_boot_device.Order)] = existing_boot_device
                    if boot_device_dn == existing_boot_device.Dn:
                        boot_device_present = True
                        boot_device_order = int(existing_boot_device.Order)
                        if order and boot_device_order != order:
                            continue
                        return

                max_boot_order = max(boot_order_dict)

                if boot_device_present:
                    my_boot_device = boot_order_dict[boot_device_order]
                    other_boot_device = boot_order_dict[order]
                    self.__handle.StartTransaction()
                    self.__modify_boot_device(my_boot_device, order)
                    self.__modify_boot_device(other_boot_device,
                                              boot_device_order)

                    #                     modify_mo(self.__handle, input_mo=my_boot_device,
                    #                                                             Order=order)
                    #                     modify_mo(self.__handle, input_mo=other_boot_device,
                    #                                                 Order=boot_device_order)
                    self.__handle.CompleteTransaction()
                else:
                    if not order:
                        self.__config_boot_device(self.__boot_policy_dn,
                                                  boot_device_meta,
                                                  max_boot_order + 1)
                    elif order and order in boot_order_dict:
                        other_boot_device = boot_order_dict[order]
                        self.__handle.StartTransaction()
                        self.__config_boot_device(self.__boot_policy_dn,
                                                  boot_device_meta, order)
                        self.__modify_boot_device(other_boot_device,
                                                  max_boot_order + 1)

                        #                         modify_mo(self.__handle, input_mo=other_boot_device,
                        #                                                 Order=max_boot_order + 1)
                        self.__handle.CompleteTransaction()
                    else:
                        self.__config_boot_device(self.__boot_policy_dn,
                                                  boot_device_meta, order)
            else:
                if not order:
                    self.__config_boot_device(self.__boot_policy_dn,
                                              boot_device_meta, 1)
                else:
                    self.__config_boot_device(self.__boot_policy_dn,
                                              boot_device_meta, order)

        except UcsException as ex:
            raise exception.UcsOperationError(operation=operation, error=ex)
コード例 #6
0
ファイル: spmanager.py プロジェクト: CiscoUcs/UcsPythonSDK
    def add_boot_device(self, boot_device_name, order=None):
        operation = "add_boot_device"
        boot_device_meta = BootDeviceMeta(*boot_device_meta_dict[boot_device_name])
        boot_device_dn = UcsUtils.MakeDn([self.__boot_policy_dn,
                                           boot_device_meta.rn])

        try:
            boot_policy = get_mo_by_dn(self.__handle, self.__boot_policy_dn)
            if not boot_policy:
                raise exception.UcsOperationError(operation=operation,
                                                  error="Unknown BootPolicy %s" % (
                                                      self.__boot_policy_dn))
            existing_boot_devices = get_children_by_dn(self.__handle,
                                                       self.__boot_policy_dn)
            if existing_boot_devices:
                boot_order_dict = {}
                boot_device_present = False
                boot_device_order = None
                for existing_boot_device in existing_boot_devices:
                    boot_order_dict[int(existing_boot_device.Order)] = existing_boot_device
                    if boot_device_dn == existing_boot_device.Dn:
                        boot_device_present = True
                        boot_device_order = int(existing_boot_device.Order)
                        if order and boot_device_order != order:
                            continue
                        return

                max_boot_order = max(boot_order_dict)

                if boot_device_present:
                    my_boot_device = boot_order_dict[boot_device_order]
                    other_boot_device = boot_order_dict[order]
                    self.__handle.StartTransaction()
                    self.__modify_boot_device(my_boot_device, order)
                    self.__modify_boot_device(other_boot_device, boot_device_order)

                    #                     modify_mo(self.__handle, input_mo=my_boot_device,
                    #                                                             Order=order)
                    #                     modify_mo(self.__handle, input_mo=other_boot_device,
                    #                                                 Order=boot_device_order)
                    self.__handle.CompleteTransaction()
                else:
                    if not order:
                        self.__config_boot_device(self.__boot_policy_dn, boot_device_meta, max_boot_order + 1)
                    elif order and order in boot_order_dict:
                        other_boot_device = boot_order_dict[order]
                        self.__handle.StartTransaction()
                        self.__config_boot_device(self.__boot_policy_dn, boot_device_meta, order)
                        self.__modify_boot_device(other_boot_device, max_boot_order + 1)

                        #                         modify_mo(self.__handle, input_mo=other_boot_device,
                        #                                                 Order=max_boot_order + 1)
                        self.__handle.CompleteTransaction()
                    else:
                        self.__config_boot_device(self.__boot_policy_dn, boot_device_meta, order)
            else:
                if not order:
                    self.__config_boot_device(self.__boot_policy_dn, boot_device_meta, 1)
                else:
                    self.__config_boot_device(self.__boot_policy_dn, boot_device_meta, order)

        except UcsException as ex:
            raise exception.UcsOperationError(operation=operation, error=ex)