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
Exemple #2
0
    def run(self, args):

        client = RestfulClient(args)
        try:

            self._get_health_info(client)

            url = "/api/system/nic"
            resp = client.send_request("GET", url)
        finally:
            if client.cookie:
                client.delete_session()

        if isinstance(resp, dict) and Constant.SUCCESS_0 == resp.get(
                "cc", None):
            nic_info = resp.get("nic_info", None)
            if not nic_info:
                suc_info = "Success: the NIC list is empty"
                self.suc_list.append(suc_info)
            else:
                self.maximum = len(self.suc_list)
                for info in nic_info:
                    nic = Nic()
                    nic.pack_nic_resource(info)
                    self.nics.append(nic)
        else:
            self.err_list.append("Failure: failed to get nic information list")
            raise FailException(*self.err_list)
        return self.suc_list
Exemple #3
0
    def run(self, args):

        client = RestfulClient(args)
        try:
            restful_sensor = self.get_hardware_sensor(client)
            if restful_sensor:
                self.sensors = pack_sensor_resource(restful_sensor)
        finally:
            if client.cookie:
                client.delete_session()
        return self.suc_list
Exemple #4
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
Exemple #5
0
    def run(self, args):

        client = RestfulClient(args)
        url = "/api/sensors"
        try:
            resp = client.send_request("GET", url)
            psu_sensor = (self.package_results(
                list(filter(is_power_sensor, resp))))
            self.power = psu_sensor
        finally:
            if client.cookie:
                client.delete_session()
        return self.suc_list
Exemple #6
0
    def run(self, args):

        client = RestfulClient(args)
        try:
            self.maximum = self.get_maximum(client)
            self.session_lst = self.get_session_list(client)
            if not self.session_lst:
                suc_info = "Success: vnc session is empty"
                self.suc_list.append(suc_info)
        finally:
            if client.cookie:
                client.delete_session()
        return self.suc_list
Exemple #7
0
    def run(self, args):

        is_adapt_b01 = globalvar.IS_ADAPT_B01
        if is_adapt_b01:
            client = RestfulClient(args)
            try:
                url = "/api/power/capping"
                resp = client.send_request("GET", url)
                if (isinstance(resp, dict)) and resp.get("cc") ==\
                        Constant.SUCCESS_0:
                    self.limit_in_watts = resp.get("power_meter_set", None)
                    self.limit_exception = power_meter_shutdown_dict.get(
                        resp.get("power_meter_shutdown"), None)
                    self.power_limit_enable_str = power_meter_state_dict.get(
                        resp.get("power_meter_enable"), None)
                else:
                    err_info = "Failure: failed to get power limit"
                    self.err_list.append(err_info)
                    raise FailException(*self.err_list)
            finally:
                if client.cookie:
                    client.delete_session()
        else:
            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) in Constant.SUC_CODE):
                self._pack_resource(resp["resource"])
            else:
                err_info = "Failure: failed to get power capping information"
                self.err_list.append(err_info)
                raise FailException(*self.err_list)
        return self.suc_list
Exemple #8
0
    def run(self, args):

        is_adapt_b01 = globalvar.IS_ADAPT_B01
        if is_adapt_b01:
            client = RestfulClient(args)
            try:
                url = "/api/settings/pef/snmp"
                resp = client.send_request("GET", url)
                if isinstance(resp, dict):
                    self._pack_b01_snmp_resource(resp)
                else:
                    err = "Failure: failed to get snmp information"
                    self.err_list.append(err)
                    raise FailException(*self.err_list)
            finally:
                if client.cookie:
                    client.delete_session()
        else:
            client = RedfishClient(args)
            systems_id = client.get_systems_id()
            url = "/redfish/v1/Managers/%s/SnmpService" % systems_id
            resp = client.send_request("get", url)
            if (isinstance(resp, dict)
                    and Constant.SUCCESS_200 == resp.get("status_code", None)):
                self._pack_snmp_resource(resp["resource"])
            else:
                err = "Failure: failed to get snmp information"
                self.err_list.append(err)
                raise FailException(*self.err_list)

        return self.suc_list
    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
    def run(self, args):

        client = RestfulClient(args)
        url = "/api/logs/event"
        try:
            resp = client.send_request("DELETE", url)
        finally:
            if client.cookie:
                client.delete_session()
        if isinstance(resp, dict) and not resp:
            self.suc_list.append(
                "Success: clear system event log successfully")
        else:
            self.err_list.append("Failure: failed to clear system event log")
            raise FailException(*self.err_list)
        return self.suc_list
Exemple #11
0
        def wrapper(*args, **kwargs):
            client = RestfulClient(args[1])
            try:

                version = get_hdm_firmware(client)
                if version is not None and version < "1.11.00":

                    err_list = []
                    err_info = ("Failure: this hdm version does not "
                                "support this command")
                    err_list.append(err_info)
                    raise FailException(*err_list)
                else:
                    return func(*args, **kwargs)
            finally:
                if client.cookie:
                    client.delete_session()
Exemple #12
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
Exemple #13
0
    def run(self, args):

        restful = RestfulClient(args)

        try:
            url = "/api/maintenance/restore_hdm"
            payload = {"reset": 1}
            resp = restful.send_request("POST", url, payload)
        finally:
            if restful.cookie:
                restful.delete_session()
        if isinstance(resp, dict) or Constant.SUCCESS_0 == resp.get(
                "cc", None):
            self.suc_list.append("Success: reset BMC successfully")
        else:
            self.err_list.append("Failure: failed to reset BMC")
            raise FailException(*self.err_list)
        return self.suc_list
Exemple #14
0
    def run(self, args):

        client = RestfulClient(args)
        try:
            self.overall_health = self.get_overall_health(client)
            self.get_pcie_info(client)
            hdm_version = get_hdm_firmware(client)
        finally:
            if client.cookie:
                client.delete_session()

        if not hdm_version < "1.11":
            client = RedfishClient(args)
            pcie_detail = self._get_pcie_devices(client)
            if pcie_detail:
                package_pcie_info(self.pcie_device, pcie_detail)

        return self.suc_list
Exemple #15
0
    def run(self, args):

        client = RestfulClient(args)
        try:
            url = "/api/maintenance/restore_defaults"
            resp = client.send_request("PUT", url)
        finally:
            if client.cookie:
                client.delete_session()
        if isinstance(resp, dict) or Constant.SUCCESS_0 == resp.get("cc"):
            self.suc_list.append(
                "Success: restore BMC default settings successfully")
        else:
            self.err_list.append(
                "Failure: restore BMC default settings failed")
            raise FailException(*self.err_list)

        return self.suc_list
Exemple #16
0
    def run(self, args):

        client = RestfulClient(args)
        try:
            url = "/api/health_info"
            resp = client.send_request("GET", url)
            if (isinstance(resp, dict) and
                    Constant.SUCCESS_0 == resp.get("cc", None)):
                self._pack_resource(resp)
            else:
                err_info = "Failure: failed to get system health status"
                self.err_list.append(err_info)
                raise FailException(*self.err_list)
        finally:
            if client.cookie:
                client.delete_session()

        return self.suc_list
    def run(self, args):

        client = RestfulClient(args)
        ip_rules = list()
        try:
            url = "/api/settings/firewall-ip-mac-rule-forbid"
            ip_rules.extend(self.get_rule_ip(client, url, "block"))
            url = "/api/settings/firewall-ip-mac-rule-allow"
            ip_rules.extend(self.get_rule_ip(client, url))
            if not ip_rules:
                suc_info = "Success: login rule is empty"
                self.suc_list.append(suc_info)
            else:
                self.rules_ip = _pack_ip_rules_resource(ip_rules)
        finally:
            if client.cookie:
                client.delete_session()
        return self.suc_list
Exemple #18
0
    def run(self, args):

        client = RestfulClient(args)
        url = "/api/settings/network_portmode"
        try:
            resp = client.send_request("get", url)
            if (isinstance(resp, dict) and resp.get(
                    Constant.COMPLETE_CODE, None) == Constant.SUCCESS_0):
                self.net_mode = MODE_DICT.get(resp.get("port_mode"))
            else:
                err_info = ("Failure: failed to get network port mode "
                            "information")
                self.err_list.append(err_info)
                raise FailException(*self.err_list)
        finally:
            if client.cookie:
                client.delete_session()
        return self.suc_list
Exemple #19
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
Exemple #20
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
    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
Exemple #22
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
    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
    def run(self, args):

        firmware_list = []
        client = RestfulClient(args)
        try:

            version = self.get_hdm_firmware(client)

            if version < "1.11.00":
                self.get_all_firmware(client, firmware_list)
            else:
                client1 = RedfishClient(args)
                self.get_redfish_firmware(client1, firmware_list)
                self.get_restful_firmware(client, firmware_list)
        finally:
            if client.cookie:
                client.delete_session()
        self.firmware = deal_firmware_info(firmware_list)
        return self.suc_list
Exemple #25
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
Exemple #26
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
Exemple #27
0
        def wrapper(*args, **kwargs):
            is_adapt_b01 = globalvar.IS_ADAPT_B01
            flag = False
            if is_adapt_b01:
                client = RestfulClient(args[1])
                try:

                    version = get_hdm_firmware(client)

                    globalvar.HDM_VERSION = version
                    if version is not None and version < "1.11.00":
                        flag = True
                    else:
                        flag = False
                finally:
                    if client.cookie:
                        client.delete_session()

            globalvar.IS_ADAPT_B01 = flag
            return func(*args, **kwargs)
Exemple #28
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
Exemple #29
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
    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