コード例 #1
0
    def cluster_create(self, label, tenant, datacenter, vcenter):
        tenant_obj = Tenant(self.__ipAddr, self.__port)
        vdatacenterobj = VcenterDatacenter(self.__ipAddr, self.__port)

        if(tenant is None):
            tenant_uri = tenant_obj.tenant_getid()
        else:
            tenant_uri = tenant_obj.tenant_query(tenant)

        parms = {'name': label}

        # datacenter
        if(datacenter):
            # on failure, query raise exception
            parms['vcenter_data_center'] = \
                vdatacenterobj.vcenterdatacenter_query(
                    datacenter, vcenter, tenant)

        body = json.dumps(parms)

        (s, h) = common.service_json_request(
            self.__ipAddr, self.__port,
            "POST",
            Cluster.URI_TENANTS_CLUSTERS.format(tenant_uri),
            body)
        o = common.json_decode(s)
コード例 #2
0
def cluster_list(args):
    obj = Cluster(args.ip, args.port)
    try:
        clusters = obj.cluster_list(args.tenant)
        output = []
        vdatacenterobj = VcenterDatacenter(args.ip, args.port)
        for cluster_uri in clusters:
            clobj = obj.cluster_show_uri(cluster_uri['id'])
            if(clobj):
                # add vdatacenter name to cluster object
                if('vcenter_data_center' in clobj and args.long):
                    vobj = vdatacenterobj.vcenterdatacenter_show_by_uri(
                        clobj['vcenter_data_center']['id'])
                    clobj['vcenter_data_center'] = vobj['name']
                output.append(clobj)

        if(len(output) > 0):
            if(args.verbose):
                return common.format_json_object(output)
            elif(args.long):

                TableGenerator(output,
                               ['name', 'vcenter_data_center']).printTable()
            else:
                TableGenerator(output, ['name']).printTable()

    except SOSError as e:
        common.format_err_msg_and_raise("list", "cluster",
                                        e.err_text, e.err_code)
コード例 #3
0
    def cluster_update(self, name, tenant, datacenter, vcenter, label):
        '''
        update cluster with datacenter, label
        Parameters:
            name      : Name of the cluster
            tenant    : name of tenant
            datacenter: Name of datacenter
            vcenter   : name of vcenter
            label     : new name to existing cluster
        Returns:
            result of the action.
        '''
        parms = {}
        # new name
        if(label):
            parms['name'] = label

        # datacenter
        if(datacenter):
            vdatacenterobj = VcenterDatacenter(self.__ipAddr, self.__port)
            data_uri = vdatacenterobj.vcenterdatacenter_query(
                datacenter, vcenter, tenant)
            parms['vcenter_data_center'] = data_uri

        # get the cluster uri
        cluster_uri = self.cluster_query(name, tenant)

        body = json.dumps(parms)
        common.service_json_request(self.__ipAddr, self.__port, "PUT",
                                    Cluster.URI_CLUSTER.format(cluster_uri),
                                    body)
        return
コード例 #4
0
    def cluster_update(self,
                       name,
                       tenant,
                       datacenter,
                       vcenter,
                       label,
                       newdatacenter,
                       newvcenter,
                       autoexportsenabled,
                       updateExports=False):
        '''
        update cluster with datacenter, label
        Parameters:
            name      : Name of the cluster
            tenant    : name of tenant
            datacenter: Name of datacenter
            vcenter   : name of vcenter
            ndatacenter : name of new datacenter
            nvcenter : name of the new vcenter 
            label     : new name to existing cluster
        Returns:
            result of the action.
        '''
        parms = {}
        # new name
        if (label):
            parms['name'] = label

        if (autoexportsenabled is not None):
            parms['auto_export_enabled'] = autoexportsenabled

        # datacenter
        if (newdatacenter is not None):
            vdatacenterobj = VcenterDatacenter(self.__ipAddr, self.__port)
            data_uri = vdatacenterobj.vcenterdatacenter_query(
                newdatacenter, newvcenter, tenant)

            parms['vcenter_data_center'] = data_uri

        # get the cluster uri query to the right cluster ..

        cluster_uri = self.cluster_query(name, datacenter, vcenter, tenant)

        if (updateExports is not None):
            cluster_uri = cluster_uri + "?update-exports=" + updateExports

        body = json.dumps(parms)
        common.service_json_request(self.__ipAddr, self.__port, "PUT",
                                    Cluster.URI_CLUSTER.format(cluster_uri),
                                    body)
        return
コード例 #5
0
    def vcenter_get_datacenters(self, label, tenantname, xml=False):
        '''
        Makes a REST API call to retrieve details
        of a vcenter  based on its UUID
        '''

        uri = self.vcenter_query(label, tenantname)

        (s, h) = common.service_json_request(
            self.__ipAddr, self.__port, "GET",
            VCenter.URI_VCENTER_DATACENTERS.format(uri), None, None, xml)

        o = common.json_decode(s)

        from vcenterdatacenter import VcenterDatacenter
        obj = VcenterDatacenter(self.__ipAddr, self.__port)

        dtlslst = obj.vcenterdatacenter_get_details(o['vcenter_data_center'])

        return dtlslst
コード例 #6
0
 def get_datacenter_uri(self, datacenter, vcenter):
     vdatacenterobj = VcenterDatacenter(self.__ipAddr, self.__port)
     return vdatacenterobj.vcenterdatacenter_query(datacenter, vcenter)