예제 #1
0
    def run(self, args):

        init_args(args, self.args_lst)
        config_dict = self.check_args(args)

        client = RedfishClient(args)
        systems_id = client.get_systems_id()
        url = "/redfish/v1/Systems/%s/Bios" % systems_id
        resp = client.send_request("GET", url)
        if (isinstance(resp, dict)
                and resp.get("status_code") in Constant.SUC_CODE):
            attrs = resp["resource"]["Attributes"]
            for key_, value_ in config_dict.items():
                if attrs.get(key_, None) is not None:
                    if isinstance(attrs.get(key_, None), int):
                        try:
                            config_dict[key_] = int(value_)
                        except (KeyError, ValueError) as err:
                            self.err_list.append(str(err))
                            raise FailException(*self.err_list)
                else:
                    err_message = ("Failure: the BIOS setting item does "
                                   "not exist: %s" % key_)
                    self.err_list.append(err_message)
                    raise FailException(*self.err_list)
            self.result_response(client, url, config_dict)
        else:
            err_message = ("Failure: failed to get current BIOS setup "
                           "information")
            self.err_list.append(err_message)
            raise FailException(*self.err_list)
        return self.suc_list
예제 #2
0
    def run(self, args):

        init_args(args, self.args_lst)
        client = RestfulClient(args)
        try:
            ad_config_url = "/api/settings/active_directory_settings"
            resp = client.send_request("GET", ad_config_url)
            if isinstance(resp, dict) or Constant.SUCCESS_0 == resp.get(
                    "cc", None):
                if 0 == resp.get("enable", None):
                    self.err_list.append(
                        "Failure: ad disable, can not add ad user")
                    raise FailException(*self.err_list)
            else:
                self.err_list.append("Failure: failed to add ad user")
                raise FailException(*self.err_list)
            payload = self._construct_param(args)
            add_url = "/api/settings/active_directory_users"
            resp = client.send_request("POST", add_url, payload)
            if (isinstance(resp, dict) and Constant.SUCCESS_0 == resp.get(
                    "cc", None) or resp.get("role_group_name", None)):
                self.suc_list.append("Success: add ad user successfully")
            else:
                self.err_list.append("Failure: Failed to add ad user")
                raise FailException(*self.err_list)
        finally:
            if client.cookie:
                client.delete_session()
        return self.suc_list
예제 #3
0
    def run(self, args):

        init_args(args, self.args_lst)
        if args.dev is None and args.effective is None and args.mode is None:
            self.err_list.append("Argument: need at least one parameter")
            raise FailException(*self.err_list)

        restful = RestfulClient(args)
        try:
            url = "/api/config/boot"
            resp = restful.send_request("GET", url)
            if isinstance(resp, dict) and Constant.SUCCESS_0 == resp.get(
                    "cc", None):
                payload = self._construct_param(args, resp)
                resp = restful.send_request("POST", url, payload)
                if isinstance(resp, dict) or Constant.SUCCESS_0 == resp.get(
                        "cc", None):
                    self.suc_list.append(
                        "Success: set system startup item successfully")
                else:
                    self.err_list.append(
                        "Failure: failed to set system startup item")
                    raise FailException(*self.err_list)
            else:
                self.err_list.append(
                    "Failure: failed to get system startup item")
                raise FailException(*self.err_list)
        finally:
            if restful.cookie:
                restful.delete_session()

        return self.suc_list
예제 #4
0
    def run(self, args):

        init_args(args, self.args_lst)
        client = RestfulClient(args)
        try:
            url = "/api/settings/users"
            resp = client.send_request("GET", url)
            if isinstance(resp, list):
                for user in resp:
                    if user.get("name", None) == args.name:
                        user_id = user.get("id", None)
                        url = "/api/settings/users/%s" % user_id
                        resp = client.send_request("DELETE", url)
                        if (isinstance(resp, dict) and Constant.SUCCESS_0
                                == resp.get("cc", None)):
                            suc = "Success: delete user successfully"
                            self.suc_list.append(suc)
                        else:
                            err = "Failure: failed to delete user"
                            self.err_list.append(err)
                            raise FailException(*self.err_list)
                        break
                else:
                    err = "Failure: this user does not exist: %s" % args.name
                    self.err_list.append(err)
                    raise FailException(*self.err_list)
            else:
                self.err_list.append("Failure: failed to get user list")
                raise FailException(*self.err_list)
        finally:
            if client.cookie:
                client.delete_session()

        return self.suc_list
예제 #5
0
    def run(self, args):

        init_args(args, self.args_lst)
        if args.count is not None and args.count <= 0:
            err_info = ("Argument: invalid choice: %s (the value is a "
                        "positive integer)") % args.count
            self.err_list.append(err_info)
            raise FailException(*self.err_list)
        client = RestfulClient(args)
        try:
            url = "/api/health/hdm_log"
            resp = client.send_request("get", url)
            if isinstance(resp, list):
                count = len(resp)
                if args.count and args.count < count:
                    count = args.count
                self.hdm_log = get_log_resource(resp, count)
            else:
                err_info = "Failure: get hdm log failed"
                self.err_list.append(err_info)
                raise FailException(*self.err_list)
        finally:
            if client.cookie:
                client.delete_session()
        return self.suc_list
예제 #6
0
    def run(self, args):

        init_args(args, self.args_lst)
        is_adapt_b01 = globalvar.IS_ADAPT_B01
        if is_adapt_b01:
            client = RestfulClient(args)
            physical_disk_list = self._get_b01_physical_disk_list(client)
            if not physical_disk_list:
                suc_info = "Success: raid card resource is empty"
                self.suc_list.append(suc_info)
                return self.suc_list
        else:
            client = RedfishClient(args)
            physical_disk_list = self._get_physical_disk_list(client)

            if args.physical_id is None and not physical_disk_list:
                suc_info = "Success: raid card resource is empty"
                self.suc_list.append(suc_info)
                return self.suc_list
            if not self._get_physical_disk_detail(client, physical_disk_list,
                                                  args):
                err_info = "Failure: resource was not found"
                self.err_list.append(err_info)
                raise FailException(*self.err_list)
        client = RestfulClient(args)
        try:

            self._get_health_info(client)
        finally:
            if client.cookie:
                client.delete_session()

        return self.suc_list
예제 #7
0
    def run(self, args):

        init_args(args, self.args_lst)
        url = "/api/chassis-status"
        client = RestfulClient(args)
        try:
            resp = client.send_request("GET", url)
            if (isinstance(resp, dict) and resp.get("cc", None) ==
                    Constant.SUCCESS_0):
                payload = self.construct_request_parameters(resp, args)
                url = "/api/actions/power"
                sec_resp = client.send_request("POST", url, payload)
                if (isinstance(sec_resp, dict) and sec_resp.get("cc", None) ==
                        Constant.SUCCESS_0):
                    operator_suc = ("Success: power control request "
                                    "succeeded: %s" %
                                    args.command_type)
                    self.suc_list.append(operator_suc)
                else:
                    err_info = "Failure: system power control failed"
                    self.err_list.append(err_info)
                    raise FailException(*self.err_list)
            else:
                err_info = "Failure: failed to get current system power status"
                self.err_list.append(err_info)
                raise FailException(*self.err_list)
        finally:
            if client.cookie:
                client.delete_session()
        return self.suc_list
예제 #8
0
    def run(self, args):

        init_args(args, self.args_lst)
        self._parse_args(args)

        client = RestfulClient(args)
        try:
            url = "/api/settings/ldap-settings"
            resp = client.send_request("GET", url)
            if not isinstance(
                    resp, dict) or Constant.SUCCESS_0 != resp.get("cc", None):
                self.err_list.append("Failure: failed to set ldap")
                raise FailException(*self.err_list)
            self._construct_param(resp)
            resp = client.send_request("PUT", url, resp)
            if isinstance(resp, dict) and Constant.SUCCESS_0 == resp.get(
                    "cc", None):
                self.suc_list.append("Success: set ldap successfully")
            else:
                self.err_list.append("Failure: failed to set ldap")
                raise FailException(*self.err_list)
        finally:
            if client.cookie:
                client.delete_session()

        return self.suc_list
예제 #9
0
    def run(self, args):

        init_args(args, self.args_lst)
        url = "/redfish/v1/AccountService/Roles"
        client = RedfishClient(args)
        resp = client.send_request("GET", url)
        if (not isinstance(resp, dict)
                or Constant.SUCCESS_200 != resp.get("status_code", None)):
            self.err_list.append("Failure: get role information failed")
            raise FailException(*self.err_list)

        role_url_list = list()
        if args.role is None:
            members = resp["resource"].get("Members", None)
            if members and isinstance(members, list):
                for member in members:
                    role_url_list.append(member.get("@odata.id", None))
        else:
            url = "%s/%s" % (url, args.role)
            role_url_list.append(url)
        role_list = list()
        for role_url in role_url_list:
            role_resp = client.send_request("GET", role_url)
            if (isinstance(role_resp, dict)
                    and Constant.SUCCESS_200 == role_resp.get(
                        "status_code", None)):
                role = Role()
                role.pack_role_resource(role_resp["resource"])
                role_list.append(role)
            else:
                self.err_list.append("Failure: get role information failed")
                raise FailException(*self.err_list)
        self.roles = role_list

        return self.suc_list
예제 #10
0
    def run(self, args):

        init_args(args, self.args_lst)
        is_adapt_b01 = globalvar.IS_ADAPT_B01
        if is_adapt_b01:

            client = RestfulClient(args)
            try:
                url = "/api/settings/users"
                resp = client.send_request("GET", url)
                user_id = None
                if isinstance(resp, list):
                    for info in resp:

                        if info.get("name") == "":
                            user_id = info.get("id")
                            break
                if user_id is not None:
                    self._parse_b01_args(args)
                    payload = self._construct_b01_param()
                    payload["id"] = user_id
                    url = "/api/settings/users/" + str(user_id)
                    resp = client.send_request("PUT", url, payload)
                    if isinstance(resp, dict) and\
                            resp.get("cc") == Constant.SUCCESS_0:
                        suc = "Success: add user successfully"
                        self.suc_list.append(suc)
                    else:
                        err = "Failure: failed to add user"
                        self.err_list.append(err)
                        raise FailException(*self.err_list)
                else:
                    err = "Failure: the number of user is up to the limit!"
                    self.err_list.append(err)
                    raise FailException(*self.err_list)
            finally:
                if client.cookie:
                    client.delete_session()
        else:
            self._parse_args(args)
            payload = self._construct_param()
            url = "/redfish/v1/AccountService/Accounts"
            client = RedfishClient(args)
            resp = client.send_request("POST", url, payload)
            if (isinstance(resp, dict) and
                    resp.get("status_code", None) in Constant.SUC_CODE):
                suc = "Success: add user successfully"
                self.suc_list.append(suc)
            else:
                err = "Failure: failed to add user"
                self.err_list.append(err)
                raise FailException(*self.err_list)

        return self.suc_list
예제 #11
0
    def run(self, args):

        init_args(args, self.args_lst)
        client = RestfulClient(args)
        try:
            self._get_ctrl(client, args)
        finally:
            if client.cookie:
                client.delete_session()

        return self.suc_list
예제 #12
0
    def run(self, args):

        init_args(args, self.args_lst)
        client = RedfishClient(args)
        systems_id = client.get_systems_id()
        url = "/redfish/v1/Chassis/%s/Power" % systems_id
        resp = client.send_request("get", url)
        if (isinstance(resp, dict)
                and resp.get("status_code", None) == Constant.SUCCESS_200):
            if resp["resource"].get("PowerControl", None) is not None:
                try:
                    power_metrics = (resp["resource"]["PowerControl"][0].get(
                        "PowerMetrics", None))
                    power_limit = (resp["resource"]["PowerControl"][0].get(
                        "PowerLimit", None))
                except (TypeError, ValueError, KeyError, SyntaxError) as err:
                    self.err_list.append(str(err))
                    raise FailException(*self.err_list)
                else:
                    max_value = power_metrics.get("MaxConsumedWatts")
                    min_value = power_metrics.get("MinConsumedWatts")
                    exception = power_limit.get("LimitException")
                    limit_in_watts = power_limit.get('LimitInWatts')
                    payload = self.construct_request_parameters(
                        args, max_value, min_value, limit_in_watts, exception)
                    client = RestfulClient(args)
                    try:
                        url = "/api/power/capping"
                        resp = client.send_request("POST", url, payload)
                        if (isinstance(resp, dict) and resp.get(
                                Constant.COMPLETE_CODE) == Constant.SUCCESS_0):
                            suc_info = "Success: set power limit succeed"
                            self.suc_list.append(suc_info)
                        else:
                            err_info = "Failure: set power limit failed"
                            self.err_list.append(err_info)
                            raise FailException(*self.err_list)
                    finally:
                        if client.cookie:
                            client.delete_session()
            else:
                err_info = ("Failure: the machine does not "
                            "support setting power cap")
                self.err_list.append(err_info)
                raise FailException(*self.err_list)
        else:
            err_info = "Failure: failed to get the value range of the power cap"
            self.err_list.append(err_info)
            raise FailException(*self.err_list)
        return self.suc_list
예제 #13
0
    def run(self, args):

        init_args(args, self.args_lst)
        config_type = args.config_type
        config_file = args.file_uri
        try:
            with open(config_file, "w"):
                pass
        except IOError as err:
            self.err_list.append(str(err))
            raise FailException(*self.err_list)
        else:
            os.remove(config_file)
        client = RestfulClient(args)
        url = "/api/maintenance/%s" % URL_DICT[config_type]
        try:
            resp = client.send_request("GET", url)
            if resp and isinstance(resp, dict):
                if not (resp.get(Constant.COMPLETE_CODE)
                        or resp.get(Constant.COMPLETE_ERROR)):

                    with open(config_file, "w") as file_output:
                        file_output.write(
                            json.dumps(resp, indent=4, separators=(",", ": ")))
                    suc_info = ("Success: export %s configuration "
                                "is successful" % config_type)
                    self.suc_list.append(suc_info)
                else:

                    err_info = (
                        "Failure: export %s config file failed, "
                        "reason: %s" %
                        (config_type, resp.get(Constant.COMPLETE_ERROR)))
                    self.err_list.append(err_info)
            else:
                err_info = ("Failure: export %s config file failed, reason: "
                            "Response can not parse" % config_type)
                self.err_list.append(err_info)
        except (IOError, Exception) as err:
            self.err_list.append((str(err)))
            raise FailException(*self.err_list)
        else:
            if self.err_list:
                raise FailException(*self.err_list)
        finally:
            if client.cookie:
                client.delete_session()
        return self.suc_list
예제 #14
0
    def run(self, args):

        init_args(args, self.args_lst)
        config_file = args.file_uri
        if not os.path.exists(config_file):
            err_info = ("Failure: upload config file failed, "
                        "reason: File Not Exist")
            self.err_list.append(err_info)
            raise FailException(*self.err_list)
        config_type = args.config_type
        url = "/api/maintenance/%s" % URL_DICT[config_type]
        try:
            with open(config_file, "rb") as config_file_data:
                file_read = config_file_data.read()
        except (TypeError, ValueError, KeyError, IOError, Exception) as err:
            self.err_list.append(str(err))
            raise FailException(*self.err_list)
        else:
            _, file_name = os.path.split(config_file)
            fields = {
                "config": (file_name, file_read, "application/octet-stream")
            }
        client = RestfulClient(args)
        try:
            resp = client.upload_request("POST", url, fields=fields)
            if (isinstance(resp, dict) and resp.get(Constant.COMPLETE_CODE)
                    == Constant.SUCCESS_0):
                self.get_process(client, config_type)
            elif (isinstance(resp, dict)
                  and resp.get(Constant.COMPLETE_CODE) != Constant.SUCCESS_0):
                err_info = (
                    "Failure: import %s config file failed, reason: %s" %
                    (config_type, resp.get(Constant.COMPLETE_CODE)))
                self.err_list.append(err_info)
            else:
                err_info = ("Failure: import %s config file failed, "
                            "reason: Response can not parse" % config_type)
                self.err_list.append(err_info)
            if self.err_list:
                raise FailException(*self.err_list)
        finally:
            if client.cookie:
                client.delete_session()
        return self.suc_list
예제 #15
0
    def run(self, args):

        init_args(args, self.args_lst)
        client = RestfulClient(args)
        try:
            hdm_version = get_hdm_firmware(client)
            self.overall_health = self._get_health_info(client)

            memory_lst = self._get_memory_detail(client)
            self.memory = self.resolve_memory_detail_info(memory_lst, args)
            if not hdm_version < "1.11":
                self.get_info_by_redfish(args)

            if not MAX_NUM:
                self.maximum = len(memory_lst)
        finally:
            if client.cookie:
                client.delete_session()
        return self.suc_list
예제 #16
0
    def run(self, args):

        init_args(args, self.args_lst)
        payload = self.check_args(args)
        client = RedfishClient(args)
        systems_id = client.get_systems_id()
        url = "/redfish/v1/Chassis/%s/Drives/AlarmThreshold" % systems_id
        resp = client.send_request("PATCH", url, payload)
        if (isinstance(resp, dict) and resp.get("status_code") in
                Constant.SUC_CODE):
            suc_info = ("Success: successfully set the "
                        "predictive failure threshold")
            self.suc_list.append(suc_info)
        else:
            err_message = ("Failure: failure to set predictive failure "
                           "threshold")
            self.err_list.append(err_message)
            raise FailException(*self.err_list)
        return self.suc_list
예제 #17
0
    def run(self, args):

        init_args(args, self.args_lst)
        payload = self._construct_param(args)
        client = RestfulClient(args)
        try:
            url = "/api/settings/active_directory_settings"
            resp = client.send_request("PUT", url, payload)
            if isinstance(resp, dict) and Constant.SUCCESS_0 == resp.get(
                    "cc", None):
                self.suc_list.append("Success: set ad successfully")
            else:
                self.err_list.append("Failure: failed to set ad")
                raise FailException(*self.err_list)
        finally:
            if client.cookie:
                client.delete_session()

        return self.suc_list
예제 #18
0
    def run(self, args):

        init_args(args, self.args_lst)
        client = RestfulClient(args)
        try:
            url = "/api/settings/ldap-users/%s" % str(args.role_id)
            resp = client.send_request("DELETE", url)
        finally:
            if client.cookie:
                client.delete_session()

        if (isinstance(resp, dict)
                and Constant.SUCCESS_0 == resp.get("cc", None)):
            suc = "Success: delete ldap user successfully"
            self.suc_list.append(suc)
        else:
            self.err_list.append("Failure: failed to delete ldap user")
            raise FailException(*self.err_list)
        return self.suc_list
예제 #19
0
    def run(self, args):

        init_args(args, self.args_lst)
        client = RestfulClient(args)
        try:
            if self.check_conditions(client, args):
                url = "/api/settings/active_directory_users/%s" % args.role_id
                resp = client.send_request("DELETE", url)
                if isinstance(resp, dict) and Constant.SUCCESS_0 == resp.get(
                        "cc", None):
                    err = "Success: delete ad user successfully"
                    self.suc_list.append(err)
                else:
                    self.err_list.append("Failure: failed to delete ad user")
                    raise FailException(*self.err_list)
        finally:
            if client.cookie:
                client.delete_session()
        return self.suc_list
예제 #20
0
    def run(self, args):

        init_args(args, self.args_lst)
        url, payload = self.construct_request_parameters(args)
        client = RestfulClient(args)
        try:
            resp = client.send_request("post", url, payload)
            if (isinstance(resp, dict) and
                    resp.get(Constant.COMPLETE_CODE) == Constant.SUCCESS_0):
                suc_info = "Success: set ip login rule succeed"
                self.suc_list.append(suc_info)
            else:
                err_info = "Failure: set ip login rule failed"
                self.err_list.append(err_info)
                raise FailException(*self.err_list)
        finally:
            if client.cookie:
                client.delete_session()
        return self.suc_list
예제 #21
0
    def run(self, args):

        init_args(args, self.args_lst)
        restful = RestfulClient(args)
        try:
            url, payload = construct_param(args)
            resp = restful.send_request("POST", url, payload)
            if isinstance(resp, dict) and Constant.SUCCESS_0 == resp.get(
                    "cc", None):
                self.suc_list.append(
                    "Success: set the physical disk led light successfully")
            else:
                self.err_list.append(
                    "Failure: failed to set the physical disk led light")
                raise FailException(*self.err_list)
        finally:
            if restful.cookie:
                restful.delete_session()

        return self.suc_list
예제 #22
0
    def run(self, args):

        init_args(args, self.args_lst)
        payload = self._construct_param(args)
        client = RestfulClient(args)
        url = "/api/remote/logical_config"
        try:
            resp = client.send_request("POST", url, payload)
            if (isinstance(resp, dict) and
                    Constant.SUCCESS_0 == resp.get("cc", None)):
                self.suc_list.append("Success: add logical drive successfully")
            else:
                err = "Failure: failed to add logical drive"
                self.err_list.append(err)
                raise FailException(*self.err_list)
        finally:
            if client.cookie:
                client.delete_session()

        return self.suc_list
예제 #23
0
    def run(self, args):

        init_args(args, self.args_lst)
        client = RestfulClient(args)
        url = "/api/settings/services"
        try:
            resp = client.send_request("GET", url)
            if isinstance(resp, list) and resp:
                if args.service_type is not None:
                    self.service = get_service_list(resp, args.service_type)
                else:
                    self.service = get_service_list(resp)
            else:
                err_info = "Failure: failed to get service information list"
                self.err_list.append(err_info)
                raise FailException(*self.err_list)
        finally:
            if client.cookie:
                client.delete_session()
        return self.suc_list
예제 #24
0
    def run(self, args):

        init_args(args, self.args_lst)
        self._parse_args(args)

        if self.command is not None:
            ret, output = getstatusoutput(self.command)
            output = output.strip()
            if Constant.SUCCESS_0 != ret:
                self.err_list.append(output)
                err = "Failure: failed to set ntp time synchronization interval"
                self.err_list.append(err)
                raise FailException(*self.err_list)
            else:
                if "a2 63 00" == output:
                    suc = ("Success: set ntp time "
                           "synchronization interval successful")
                    self.suc_list.append(suc)
                    return self.suc_list
                else:
                    err = ("Failure: failed to set "
                           "ntp time synchronization interval")
                    self.err_list.append(err)
                    raise FailException(*self.err_list)

        payload = self._construct_param()
        if payload:
            client = RedfishClient(args)
            systems_id = client.get_systems_id()
            url = "/redfish/v1/Managers/%s/NtpService" % systems_id
            resp = client.send_request('PATCH', url, payload)
            if (isinstance(resp, dict)
                    and resp.get("status_code", None) in Constant.SUC_CODE):
                self.suc_list.append("Success: set ntp server information "
                                     "successful")
            else:
                self.err_list.append("Failure: failed to set ntp server "
                                     "information")
                raise FailException(*self.err_list)

        return self.suc_list
예제 #25
0
    def run(self, args):

        init_args(args, self.args_lst)

        if args.is_dual_image == "Dual" and (args.firmware_type != "BMC"
                                             or args.activate_mode != "Auto"):
            err_info = ("Failure: to upgrade dual mirrors, the firmware type "
                        "must be BMC and the startup mode must be automatic, "
                        "please check the parameters")
            self.err_list.append(err_info)
            raise FailException(*self.err_list)

        global IS_DUAL
        if args.is_dual_image == "Dual":
            IS_DUAL = True
        client = FwUpdateClient(args)
        try:

            if IS_DUAL:
                url = "/api/maintenance/primary_backup_version"
                resp = client.send_request("GET", url)
                if (isinstance(resp, dict)
                        and Constant.SUCCESS_0 == resp.get("cc", None)):
                    global FW_BACKUP_VER, FW_PRIMARY_VER
                    FW_BACKUP_VER = resp.get("backup_version")
                    FW_PRIMARY_VER = resp.get("primary_version")
                else:
                    err_info = ("Failure: failed to obtain the HDM version "
                                "of the standby partition")
                    self.err_list.append(err_info)
                    raise FailException(*self.err_list)
            client = start_fwupdate(client, args)
        finally:
            if client.cookie:
                client.delete_session()
        if client.err_message:
            self.err_list.extend(client.err_message)
            raise FailException(*self.err_list)
        if client.suc_message:
            self.suc_list.extend(client.suc_message)
        return self.suc_list
예제 #26
0
    def run(self, args):

        init_args(args, self.args_lst)
        self._check_args(args)
        client = RestfulClient(args)
        try:
            url = "/api/logs/event"
            resp = client.send_request("GET", url)
        finally:
            if client.cookie:
                client.delete_session()
        if isinstance(resp, list):
            if not resp:
                suc_info = "Success: event log list is empty"
                self.suc_list.append(suc_info)
            else:
                self._package_results(args, resp)
        else:
            self.err_list.append("Failure: failed to get event log list!")
            raise FailException(*self.err_list)
        return self.suc_list
예제 #27
0
    def run(self, args):

        init_args(args, self.args_lst)
        client = RestfulClient(args)
        try:
            url = "/api/system/assetTag"

            payload = {"asset_tag": args.asset_tag}
            resp = client.send_request("POST", url, payload)
            if (isinstance(resp, dict) and resp.get(Constant.COMPLETE_CODE)
                    == Constant.SUCCESS_0):
                suc_info = "Success: set asset tag succeed"
                self.suc_list.append(suc_info)
            else:
                err_info = "Failure: Set asset tag failed"
                self.err_list.append(err_info)
                raise FailException(*self.err_list)
        finally:
            if client.cookie:
                client.delete_session()
        return self.suc_list
예제 #28
0
    def run(self, args):

        init_args(args, self.args_lst)
        is_adapt_b01 = globalvar.IS_ADAPT_B01
        if is_adapt_b01:
            client = RestfulClient(args)
            logic_disk_list = self._get_b01_logical_disk_list(client)
            if not logic_disk_list:
                suc_info = "Success: raid card resource is empty"
                self.suc_list.append(suc_info)
                return self.suc_list
        else:
            if ((args.controller_id is None and args.logical_id is not None) or
                (args.controller_id is not None and args.logical_id is None)):
                err = ("Argument: RAID card ID and logical disk "
                       "ID must be specified at the same time")
                self.err_list.append(err)
                raise FailException(*self.err_list)
            client = RedfishClient(args)
            logical_disk_list_url = self._get_logical_disk_list(client)

            if args.logical_id is None and not logical_disk_list_url:
                suc = "Success: raid card resource is empty"
                self.suc_list.append(suc)
                return self.suc_list
            if not self._get_logical_disk_detail(client, logical_disk_list_url,
                                                 args):
                err_info = "Failure: resource was not found"
                self.err_list.append(err_info)
                raise FailException(*self.err_list)
        client = RestfulClient(args)
        try:

            self._get_health_info(client)
        finally:
            if client.cookie:
                client.delete_session()

        return self.suc_list
예제 #29
0
    def run(self, args):

        init_args(args, self.args_lst)
        if globalvar.HDM_VERSION < "2.08.00":
            err = "Failure: this hdm version does not support this command"
            self.err_list.append(err)
            raise FailException(*self.err_list)
        else:
            payload = self._parse_args(args)
            url = "/redfish/v1/AccountService/Roles/%s" % args.role_id
            client = RedfishClient(args)
            resp = client.send_request("PATCH", url, payload)
            if (isinstance(resp, dict)
                    and resp.get("status_code", None) in Constant.SUC_CODE):
                suc = "Success: set user role information successfully"
                self.suc_list.append(suc)
            else:
                err = "Failure: failed to set user role information"
                self.err_list.append(err)
                raise FailException(*self.err_list)

        return self.suc_list
예제 #30
0
    def run(self, args):

        init_args(args, self.args_lst)
        self._check_args(args)
        client = RestfulClient(args)

        try:
            url = "/api/settings/network"
            resp = client.send_request("GET", url)
            if resp and isinstance(resp, list):
                for eth in resp:
                    if args.network_port_id is not None:
                        if (args.network_port_id ==
                                eth.get("interface_name", None)):
                            self._construct_request(client, eth)
                            break
                    elif (eth.get("ipv4_address", None) == args.host
                          or eth.get('ipv6_address', None) == args.host or (
                        args.host.startswith("[") and
                        args.host.endswith("]") and
                        (eth.get('ipv6_address', None) ==
                         args.host[1:-1] or
                         eth.get('ipv6_localLinkAddress', None) ==
                         args.host[1:-1]))):
                        self._construct_request(client, eth)
                        break
                else:
                    err_info = "Argument: the network port does not exist"
                    self.err_list.append(err_info)
                    raise FailException(*self.err_list)
            else:
                self.err_list.append("Failure: failed to get ip information "
                                     "list")
                raise FailException(*self.err_list)
        finally:
            if client.cookie:
                client.delete_session()
        return self.suc_list