예제 #1
0
    def execute(self, server, cmd_data_json):
        if ("node" not in cmd_data_json or "port" not in cmd_data_json):
            return self._CREATE_FAIL_RESPONSE(
                'modify port request must have node and port defined, got: ' +
                str(cmd_data_json))

        node = cmd_data_json["node"]
        port = cmd_data_json["port"]
        cmd = "net-port-modify"

        call = NaElement(cmd)
        call.child_add_string("node", node)
        call.child_add_string("port", port)

        for cmd_data_key, netapp_cmd_str in self.__cmd_mapping.items():
            if cmd_data_key in cmd_data_json:
                call.child_add_string(netapp_cmd_str,
                                      cmd_data_json[cmd_data_key])

        _, err_resp = self._INVOKE_CHECK(server, call,
                                         cmd + ": " + node + ":" + port)
        if err_resp:
            return err_resp

        return self._CREATE_EMPTY_RESPONSE(True, "")
예제 #2
0
    def execute(self, server, cmd_data_json):
        if "name" not in cmd_data_json:
            return self._CREATE_FAIL_RESPONSE(
                'create IPSpace request must have name' + ' defined, got: ' +
                str(cmd_data_json))

        name = cmd_data_json["name"]
        cmd = "net-ipspaces-create"

        call = NaElement(cmd)
        call.child_add_string("ipspace", name)
        call.child_add_string("return-record", "true")

        resp, err_resp = self._INVOKE_CHECK(server, call, cmd + ": " + name)
        if err_resp:
            return err_resp

        if not (resp.child_get("result")
                and resp.child_get("result").child_get("net-ipspaces-info")):
            return self._CREATE_FAIL_RESPONSE(
                'no ipspace info received from create, got: ' + resp.sprintf())

        ipspace_info = resp.child_get("result").child_get("net-ipspaces-info")
        dd = {"uuid": self._GET_STRING(ipspace_info, "uuid")}

        return {'success': True, 'errmsg': '', 'data': dd}
예제 #3
0
    def execute(self, server, cmd_data_json):
        if (
                "name" not in cmd_data_json or
                "new_name" not in cmd_data_json):
            return self._CREATE_FAIL_RESPONSE(
                'SVM rename request must have '
                + 'name and new_name defined, got: '
                + str(cmd_data_json))

        name = cmd_data_json['name']
        new_name = cmd_data_json['new_name']

        cmd = "vserver-rename"
        call = NaElement(cmd)

        call.child_add_string("vserver-name", name)
        call.child_add_string("new-name", new_name)

        resp, err_resp = self._INVOKE_CHECK(
            server, call, 
            cmd + ": " + name + ' --> ' + new_name)

        #LOGGER.debug(resp.sprintf())
        
        if err_resp:
            return err_resp

        return self._CREATE_EMPTY_RESPONSE(True, "")
예제 #4
0
    def svm_execute(self, svm, cmd_data_json):
        if (
                "name" not in cmd_data_json):
            return self._CREATE_FAIL_RESPONSE(
                'volume [' + self._get_simple_cmd()
                + '] request must have name '
                + 'defined, got: '
                + str(cmd_data_json))

        name = cmd_data_json['name']

        cmd = "volume-" + self._get_simple_cmd()
        call = NaElement(cmd)

        call.child_add_string("name", name)

        resp, err_resp = self._INVOKE_CHECK(
            svm, call, 
            cmd + ": " + name)

        #LOGGER.debug(resp.sprintf())
        
        if err_resp:
            return err_resp

        return self._CREATE_EMPTY_RESPONSE(True, "")
예제 #5
0
    def execute(self, server, cmd_data_json):
        if ("node" not in cmd_data_json or "name" not in cmd_data_json
                or "ports" not in cmd_data_json):
            return self._CREATE_FAIL_RESPONSE(
                "port group port " + self._get_cmd_type() + " commands must" +
                " have node, name and ports defined" + ", got: " +
                str(cmd_data_json))

        node = cmd_data_json["node"]
        name = cmd_data_json["name"]
        ports = cmd_data_json["ports"]
        cmd = ("net-port-ifgrp-" + self._get_cmd_type() + "-port")

        # ifgrp only allows add/remove of single port...
        for port in ports:
            call = NaElement(cmd)

            call.child_add_string("ifgrp-name", name)
            call.child_add_string("node", node)
            call.child_add_string("port", port)

            resp, err_resp = self._INVOKE_CHECK(
                server, call, cmd + ": " + node + " [" + name + "]" +
                self._get_cmd_type() + " " + port)
            if err_resp:
                return err_resp

            #LOGGER.debug(resp.sprintf())

        return self._CREATE_EMPTY_RESPONSE(True, "")
예제 #6
0
    def execute(self, server, cmd_data_json):
        if (
                "name" not in cmd_data_json):
            return self._CREATE_FAIL_RESPONSE(
                self._get_simple_cmd()
                + ' SVM request must have name '
                + 'defined, got: '
                + str(cmd_data_json))

        name = cmd_data_json['name']

        cmd = "vserver-" + self._get_simple_cmd()
        call = NaElement(cmd)

        call.child_add_string("vserver-name", name)
        # force will only be present if set otherwise ommitted
        if 'force' in cmd_data_json:
            call.child_add_string('force', True)

        resp, err_resp = self._INVOKE_CHECK(
            server, call, 
            cmd + ": " + name)

        #LOGGER.debug(resp.sprintf())
        
        if err_resp:
            return err_resp

        return self._CREATE_EMPTY_RESPONSE(True, "")
예제 #7
0
    def execute(self, server, cmd_data_json):
        if ("name" not in cmd_data_json or "ipspace" not in cmd_data_json):
            return self._CREATE_FAIL_RESPONSE(
                "broadcast domain delete commands must" +
                " have name and ipspace defined, got: " + str(cmd_data_json))

        name = cmd_data_json["name"]
        ipspace = cmd_data_json["ipspace"]
        cmd = "net-port-broadcast-domain-destroy"

        call = NaElement(cmd)

        call.child_add_string("broadcast-domain", name)
        call.child_add_string("ipspace", ipspace)

        resp, err_resp = self._INVOKE_CHECK(
            server, call, cmd + ": " + name + " [" + ipspace + "]")
        if err_resp:
            return err_resp

        # LOGGER.debug(resp.sprintf())

        dd = {
            "update_status": self._GET_STRING(resp,
                                              "port-update-status-combined"),
        }

        return {'success': True, 'errmsg': '', 'data': dd}
예제 #8
0
    def mapping(self, svm):
        results = []
        for igroup in self.igroup_name:
            api_call = NaElement('lun-map')
            api_call.child_add_string('path', self.path)
            api_call.child_add_string('initiator-group', igroup)

            output = svm.run_command(api_call)
            results.append(
                (output.results_status(), output.sprintf(), self.path, igroup))

        return results
예제 #9
0
    def add_initiators(self, svm):
        results = []
        for wwpn in self.initiator_list:
            api_call = NaElement('igroup-add')
            api_call.child_add_string('initiator-group-name',
                                      self.initiator_group_name)
            api_call.child_add_string('initiator', wwpn)

            output = svm.run_command(api_call)
            results.append((output.results_status(), output.sprintf(),
                            self.initiator_group_name, wwpn))

        return results
예제 #10
0
    def execute(self, server, cmd_data_json):
        if ("name" not in cmd_data_json or "ipspace" not in cmd_data_json
                or ("subnet" not in cmd_data_json
                    and "gateway" not in cmd_data_json)):
            return self._CREATE_FAIL_RESPONSE(
                "subnet modify must" + " have name, ipspace and either" +
                " gateway or subnet defined" + ", got: " + str(cmd_data_json))

        name = cmd_data_json["name"]
        ipspace = cmd_data_json["ipspace"]
        cmd = "net-subnet-modify"

        call = NaElement(cmd)

        call.child_add_string("subnet-name", name)
        call.child_add_string("ipspace", ipspace)

        if "gateway" in cmd_data_json:
            call.child_add_string("gateway", cmd_data_json["gateway"])

        if "subnet" in cmd_data_json:
            call.child_add_string("subnet", cmd_data_json["subnet"])

        _, err_resp = self._INVOKE_CHECK(
            server, call,
            cmd + ": " + name + " [" + ipspace + "] <-- " + str(cmd_data_json))
        if err_resp:
            return err_resp

        # LOGGER.debug(resp.sprintf())

        return self._CREATE_EMPTY_RESPONSE(True, "")
예제 #11
0
    def execute(self, server, cmd_data_json):
        if ("node" not in cmd_data_json or "name" not in cmd_data_json
                or "mode" not in cmd_data_json or "dist" not in cmd_data_json):
            return self._CREATE_FAIL_RESPONSE(
                "port group create commands must" + " have node, name, mode" +
                " and distribution defined" + ", got: " + str(cmd_data_json))

        node = cmd_data_json["node"]
        name = cmd_data_json["name"]
        mode = cmd_data_json["mode"]
        dist = cmd_data_json["dist"]

        cmd = "net-port-ifgrp-create"
        call = NaElement(cmd)

        call.child_add_string("distribution-function", dist)
        call.child_add_string("ifgrp-name", name)
        call.child_add_string("mode", mode)
        call.child_add_string("node", node)
        call.child_add_string("return-record", False)

        resp, err_resp = self._INVOKE_CHECK(
            server, call, cmd + ": " + node + " [" + name + "]")
        if err_resp:
            return err_resp

        #LOGGER.debug(resp.sprintf())

        return self._CREATE_EMPTY_RESPONSE(True, "")
예제 #12
0
    def execute(self, server, cmd_data_json):
        if "name" not in cmd_data_json:
            return self._CREATE_FAIL_RESPONSE(
                "broadcast domain status commands must" +
                " have name defined, got: " + str(cmd_data_json))

        name = cmd_data_json["name"]
        cmd = "net-port-broadcast-domain-get-iter"

        call = NaElement(cmd)

        qe = NaElement("query")
        qe_bcdi = NaElement("net-port-broadcast-domain-info")
        qe_bcdi.child_add_string("broadcast-domain", name)
        qe.child_add(qe_bcdi)
        call.child_add(qe)

        dattr = NaElement("desired-attributes")
        bcdi = NaElement("net-port-broadcast-domain-info")
        bcdi.child_add_string("port-update-status-combined",
                              "<port-update-status-combined>")
        dattr.child_add(bcdi)

        call.child_add(dattr)

        resp, err_resp = self._INVOKE_CHECK(server, call, cmd + ": " + name)
        if err_resp:
            return err_resp

        # LOGGER.debug(resp.sprintf())

        bcd_cnt = self._GET_INT(resp, 'num-records')
        if bcd_cnt != 1:
            # too many bc domains found for query
            return self._CREATE_FAIL_RESPONSE(
                'too many broadcast domains found for' + ' query: [' +
                str(cmd_data_json) + '] result is: ' + resp.sprintf())

        if not resp.child_get("attributes-list"):
            return self._CREATE_FAIL_RESPONSE(
                'no broadcast domain info data found in: ' + resp.sprintf())

        bcd_info = resp.child_get("attributes-list").children_get()[0]

        dd = {
            "update_status":
            self._GET_STRING(bcd_info, "port-update-status-combined"),
        }

        return {'success': True, 'errmsg': '', 'data': dd}
예제 #13
0
    def create(self, cluster):
        api_call = NaElement('aggr-create')
        api_call.child_add_string('aggregate', self.aggr_name)
        api_call.child_add_string('disk-count', self.disk_count)
        api_call.child_add_string('disk-type', self.disk_type)
        api_call.child_add_string('raid-type', self.raid_type)
        api_call.child_add_string('raid-size', self.raid_size)

        api_child_nodes = NaElement('nodes')
        api_child_nodes.child_add_string('node-name', self.node_name)

        api_call.child_add(api_child_nodes)

        output = cluster.run_command(api_call)
        return output.results_status(), output.sprintf()
예제 #14
0
    def execute(self, server, cmd_data_json):
        if "name" not in cmd_data_json:
            return self._CREATE_FAIL_RESPONSE(
                'delete ipspace must have name defined, got: ' +
                str(cmd_data_json))

        name = cmd_data_json["name"]
        cmd = "net-ipspaces-destroy"

        call = NaElement(cmd)

        call.child_add_string("ipspace", name)

        _, err_resp = self._INVOKE_CHECK(server, call, cmd + ": " + name)
        if err_resp:
            return err_resp

        return self._CREATE_EMPTY_RESPONSE(True, "")
예제 #15
0
    def create(self, cluster):
        api_call = NaElement('vserver-create-async')
        api_call.child_add_string('vserver-name', self.vserver_name)
        api_call.child_add_string('root-volume', self.root_volume)
        api_call.child_add_string('root-volume-aggregate',
                                  self.root_volume_aggregate)
        api_call.child_add_string('root-volume-security-style',
                                  self.root_volume_security_style)

        output = cluster.run_command(api_call)
        return output.results_status(), output.sprintf()
예제 #16
0
    def create(self, svm):
        api_call = NaElement('lun-create-by-size')
        api_call.child_add_string('path', self.path)
        api_call.child_add_string('size', self.size)
        api_call.child_add_string('ostype', self.ostype)
        api_call.child_add_string('space-reservation-enabled',
                                  self.space_reservation_enabled)
        api_call.child_add_string('space-allocation-enabled',
                                  self.space_allocation_enabled)

        output = svm.run_command(api_call)
        return output.results_status(), output.sprintf()
예제 #17
0
    def svm_execute(self, svm, cmd_data_json):
        if (
                "name" not in cmd_data_json):
            return self._CREATE_FAIL_RESPONSE(
                'SVM volume size request must have name '
                + 'defined, got: '
                + str(cmd_data_json))

        name = cmd_data_json['name']

        cmd = "volume-size"
        call = NaElement(cmd)

        call.child_add_string("volume", name)
        if 'size' in cmd_data_json:
            call.child_add_string(
                'new-size', cmd_data_json['size'])

        resp, err_resp = self._INVOKE_CHECK(
            svm, call, 
            cmd + ": " + name)

        #LOGGER.debug(resp.sprintf())
        
        if err_resp:
            return err_resp

        dd = {
            "size": self._GET_STRING(resp, "volume-size"),
        }

        # if resp.child_get("result-jobid"):
        #     dd["jobid"] = self._GET_INT(resp, "result-jobid")

        # if resp.child_get('result-error-code'):
        #     dd["errno"] = self._GET_INT(resp, "result-error-code")

        # if resp.child_get('result-error-message'):
        #     dd["errmsg"] = self._GET_STRING(resp, "result-error-message")

        return {
            'success' : True, 'errmsg': '', 'data': dd}
예제 #18
0
    def execute(self, server, cmd_data_json):
        if ("name" not in cmd_data_json or "ipspace" not in cmd_data_json):
            return self._CREATE_FAIL_RESPONSE('delete subnet must have name' +
                                              ' and ipspace defined, got: ' +
                                              str(cmd_data_json))

        name = cmd_data_json["name"]
        ipspace = cmd_data_json["ipspace"]
        cmd = "net-subnet-destroy"

        call = NaElement(cmd)

        call.child_add_string("subnet-name", name)
        call.child_add_string("ipspace", ipspace)

        _, err_resp = self._INVOKE_CHECK(
            server, call, cmd + ": " + name + ' [' + ipspace + ']')
        if err_resp:
            return err_resp

        return self._CREATE_EMPTY_RESPONSE(True, "")
예제 #19
0
    def execute(self, server, cmd_data_json):
        if ("name" not in cmd_data_json or "new_name" not in cmd_data_json):
            return self._CREATE_FAIL_RESPONSE(
                'update/rename ipspace must have name' +
                ' and new_name defined, got: ' + str(cmd_data_json))

        name = cmd_data_json["name"]
        new_name = cmd_data_json["new_name"]
        cmd = "net-ipspaces-rename"

        call = NaElement(cmd)

        call.child_add_string("ipspace", name)
        call.child_add_string("new-name", new_name)

        _, err_resp = self._INVOKE_CHECK(server, call,
                                         cmd + ": " + name + ' to ' + new_name)
        if err_resp:
            return err_resp

        return self._CREATE_EMPTY_RESPONSE(True, "")
예제 #20
0
    def execute(self, server, cmd_data_json):
        if ("name" not in cmd_data_json or "ipspace" not in cmd_data_json
                or "ip_ranges" not in cmd_data_json):
            return self._CREATE_FAIL_RESPONSE(
                "subnet ip range " + self._get_cmd_type() + " commands must" +
                " have name, ipspace and ip_ranges defined" + ", got: " +
                str(cmd_data_json))

        name = cmd_data_json["name"]
        ipspace = cmd_data_json["ipspace"]
        iprs = cmd_data_json["ip_ranges"]
        cmd = ("net-subnet-" + self._get_cmd_type() + "-ranges")

        call = NaElement(cmd)

        call.child_add_string("subnet-name", name)
        call.child_add_string("ipspace", ipspace)

        el_iprs = NaElement("ip-ranges")

        for ip_range in iprs:
            el_iprs.child_add_string("ip-range", ip_range)

        call.child_add(el_iprs)

        _, err_resp = self._INVOKE_CHECK(
            server, call, cmd + ": " + name + " [" + ipspace + "]" +
            self._get_cmd_type() + str(iprs))
        if err_resp:
            return err_resp

        # LOGGER.debug(resp.sprintf())

        return self._CREATE_EMPTY_RESPONSE(True, "")
예제 #21
0
    def execute(self, server, cmd_data_json):
        if ("name" not in cmd_data_json or "ipspace" not in cmd_data_json
                or "new_name" not in cmd_data_json):
            return self._CREATE_FAIL_RESPONSE(
                "subnet rename commands must" +
                " have name, new name and ipspace defined" + ", got: " +
                str(cmd_data_json))

        name = cmd_data_json["name"]
        ipspace = cmd_data_json["ipspace"]
        new_name = cmd_data_json["new_name"]
        cmd = "net-subnet-rename"

        call = NaElement(cmd)

        call.child_add_string("subnet-name", name)
        call.child_add_string("ipspace", ipspace)
        call.child_add_string("new-name", new_name)

        _, err_resp = self._INVOKE_CHECK(
            server, call,
            cmd + ": " + name + " [" + ipspace + "] --> " + new_name)
        if err_resp:
            return err_resp

        # LOGGER.debug(resp.sprintf())

        return self._CREATE_EMPTY_RESPONSE(True, "")
예제 #22
0
    def execute(self, server, cmd_data_json):
        if ("parent_name" not in cmd_data_json
                or "vlan_id" not in cmd_data_json):
            return self._CREATE_FAIL_RESPONSE(
                'create vlan request must have parent name' +
                ' and vlan id defined, got: ' + str(cmd_data_json))

        parent = cmd_data_json["parent_name"]
        vlan_id = cmd_data_json["vlan_id"]
        cmd = "net-vlan-create"

        call = NaElement(cmd)

        vi = NaElement("vlan-info")
        vi.child_add_string("parent-interface", parent)
        vi.child_add_string("vlanid", vlan_id)
        if "node_name" in cmd_data_json:
            vi.child_add_string("node", cmd_data_json["node_name"])
        call.child_add(vi)

        _, err_resp = self._INVOKE_CHECK(server, call,
                                         cmd + ": " + parent + ":" + vlan_id)
        if err_resp:
            return err_resp

        return self._CREATE_EMPTY_RESPONSE(True, "")
예제 #23
0
    def execute(self, server, cmd_data_json):
        if (
                "name" not in cmd_data_json):
            return self._CREATE_FAIL_RESPONSE(
                'delete SVM request must have name, '
                + 'defined, got: '
                + str(cmd_data_json))

        name = cmd_data_json['name']

        cmd = "vserver-destroy-async"
        call = NaElement(cmd)

        call.child_add_string("vserver-name", name)
        resp, err_resp = self._INVOKE_CHECK(
            server, call, 
            cmd + ": " + name)

        #LOGGER.debug(resp.sprintf())
        
        if err_resp:
            return err_resp

        dd = {
            "status": self._GET_STRING(resp, "result-status"),
        }

        if resp.child_get("result-jobid"):
            dd["jobid"] = self._GET_INT(resp, "result-jobid")

        if resp.child_get('result-error-code'):
            dd["errno"] = self._GET_INT(resp, "result-error-code")

        if resp.child_get('result-error-message'):
            dd["errmsg"] = self._GET_STRING(resp, "result-error-message")


        return {
            'success' : True, 'errmsg': '', 'data': dd}
예제 #24
0
    def execute(self, server, cmd_data_json):
        if ("node" not in cmd_data_json or "port" not in cmd_data_json):
            return self._CREATE_FAIL_RESPONSE(
                'find port by pattern request must have' +
                ' node and port defined, got: ' + str(cmd_data_json))

        node = cmd_data_json["node"]
        port = cmd_data_json["port"]
        cmd = "net-port-get-iter"

        call = NaElement(cmd)

        qe = NaElement("query")
        qe_npi = NaElement("net-port-info")
        qe_npi.child_add_string("node", node)
        qe_npi.child_add_string("port", port)
        qe.child_add(qe_npi)
        call.child_add(qe)

        des_attr = NaElement("desired-attributes")
        npi = NaElement("net-port-info")
        npi.child_add_string("port", "<port>")

        des_attr.child_add(npi)
        call.child_add(des_attr)

        resp, err_resp = self._INVOKE_CHECK(server, call,
                                            cmd + ": " + node + ":" + port)
        if err_resp:
            return err_resp

        #LOGGER.debug(resp.sprintf())

        ports = []
        if resp.child_get("attributes-list"):
            for port_info in resp.child_get("attributes-list").children_get():
                ports.append(self._GET_STRING(port_info, "port"))

        return {'success': True, 'errmsg': '', 'data': {'ports': ports}}
예제 #25
0
    def execute(self, server, cmd_data_json):
        if ("node" not in cmd_data_json or "name" not in cmd_data_json):
            return self._CREATE_FAIL_RESPONSE(
                "port group delete command must" +
                " have node and name defined" + ", got: " + str(cmd_data_json))

        node = cmd_data_json["node"]
        name = cmd_data_json["name"]

        cmd = "net-port-ifgrp-destroy"
        call = NaElement(cmd)

        call.child_add_string("ifgrp-name", name)
        call.child_add_string("node", node)

        resp, err_resp = self._INVOKE_CHECK(
            server, call, cmd + ": " + node + " [" + name + "]")
        if err_resp:
            return err_resp

        #LOGGER.debug(resp.sprintf())

        return self._CREATE_EMPTY_RESPONSE(True, "")
예제 #26
0
    def create(self, svm):
        api_call = NaElement('igroup-create')
        api_call.child_add_string('initiator-group-name',
                                  self.initiator_group_name)
        api_call.child_add_string('initiator-group-type',
                                  self.initiator_group_type)
        api_call.child_add_string('os-type', self.os_type)

        output = svm.run_command(api_call)
        return output.results_status(), output.sprintf()
예제 #27
0
    def execute(self, server, cmd_data_json):
        if ("name" not in cmd_data_json or "mtu" not in cmd_data_json):
            return self._CREATE_FAIL_RESPONSE(
                "broadcast domain create commands must" +
                " have name and mtu defined, got: " + str(cmd_data_json))

        name = cmd_data_json["name"]
        mtu = cmd_data_json["mtu"]
        cmd = "net-port-broadcast-domain-create"

        call = NaElement(cmd)

        call.child_add_string("broadcast-domain", name)
        call.child_add_string("mtu", mtu)

        if "ipspace" in cmd_data_json:
            call.child_add_string("ipspace", cmd_data_json["ipspace"])

        if "ports" in cmd_data_json:
            ports = NaElement("ports")

            for port_name in cmd_data_json["ports"]:
                ports.child_add_string("net-qualified-port-name", port_name)

            call.child_add(ports)

        resp, err_resp = self._INVOKE_CHECK(server, call, cmd + ": " + name)
        if err_resp:
            return err_resp

        # LOGGER.debug(resp.sprintf())

        dd = {
            "update_status": self._GET_STRING(resp,
                                              "port-update-status-combined"),
        }

        return {'success': True, 'errmsg': '', 'data': dd}
예제 #28
0
    def set_properties(self, cluster):
        api_call = NaElement('vserver-modify')
        api_call.child_add_string('vserver-name', self.vserver_name)

        api_child_aggrs = NaElement('aggr-list')
        for aggr in self.aggr_list:
            api_child_aggrs.child_add_string('aggr-name', aggr)

        api_child_protocols = NaElement('allowed-protocols')
        for protocol in self.allowed_protocols:
            api_child_protocols.child_add_string('protocol', protocol)

        api_call.child_add(api_child_aggrs)
        api_call.child_add(api_child_protocols)

        output = cluster.run_command(api_call)
        return output.results_status(), output.sprintf()
예제 #29
0
    def execute(self, server, cmd_data_json):
        if ("name" not in cmd_data_json or "ipspace" not in cmd_data_json
                or "ports" not in cmd_data_json):
            return self._CREATE_FAIL_RESPONSE(
                "broadcast domain port " + self._get_cmd_type() +
                " commands must" + " have name, ipspace and ports defined" +
                ", got: " + str(cmd_data_json))

        name = cmd_data_json["name"]
        ipspace = cmd_data_json["ipspace"]
        ports = cmd_data_json["ports"]
        cmd = ("net-port-broadcast-domain-" + self._get_cmd_type() + "-ports")

        call = NaElement(cmd)

        call.child_add_string("broadcast-domain", name)
        call.child_add_string("ipspace", ipspace)

        ports_el = NaElement("ports")

        for port_name in ports:
            ports_el.child_add_string("net-qualified-port-name", port_name)

        call.child_add(ports_el)

        resp, err_resp = self._INVOKE_CHECK(
            server, call, cmd + ": " + name + " [" + ipspace + "]" +
            self._get_cmd_type() + str(ports))
        if err_resp:
            return err_resp

        # LOGGER.debug(resp.sprintf())

        dd = {
            "update_status": self._GET_STRING(resp,
                                              "port-update-status-combined"),
        }

        return {'success': True, 'errmsg': '', 'data': dd}
예제 #30
0
    def create(self, svm):
        api_call = NaElement('volume-create')
        api_call.child_add_string('volume', self.volume)
        api_call.child_add_string('containing-aggr-name',
                                  self.containing_aggr_name)
        api_call.child_add_string('size', self.size)
        api_call.child_add_string('volume-type', self.volume_type)
        api_call.child_add_string('volume-security-style',
                                  self.volume_security_style)
        api_call.child_add_string('snapshot-policy', self.snapshot_policy)
        api_call.child_add_string('percentage-snapshot-reserve',
                                  self.percentage_snapshot_reserve)
        api_call.child_add_string('efficiency-policy', self.efficiency_policy)

        output = svm.run_command(api_call)
        return output.results_status(), output.sprintf()