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)
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)
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
def cluster_create(self, label, tenant, project, datacenter, vcenter): tenant_obj = Tenant(self.__ipAddr, self.__port) vdatacenterobj = VcenterDatacenter(self.__ipAddr, self.__port) projectobj = Project(self.__ipAddr, self.__port) if(tenant == None): tenant_uri = tenant_obj.tenant_getid() else: tenant_uri = tenant_obj.tenant_query(tenant) parms = { 'name' : label } #project if(project): if(tenant): projectname = tenant + "/" + project else: projectname = "" + "/" + project #on failure, query raise exception parms['project'] = projectobj.project_query(projectname) #datacenter if(datacenter): #on failure, query raise exception parms['vcenter_data_center'] = vdatacenterobj.vcenterdatacenter_query(datacenter, vcenter) 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)
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
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
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
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
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) if (tenantname is None or tenantname == "") : tenantname = VCenter.VCENTERS_FROM_ALL_TENANTS (s, h) = common.service_json_request( self.__ipAddr, self.__port, "GET", VCenter.URI_VCENTER_DATACENTERS.format(uri, self.get_tenant_uri_from_name(tenantname)), 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
def get_datacenter_uri(self, datacenter, vcenter): vdatacenterobj = VcenterDatacenter(self.__ipAddr, self.__port) return vdatacenterobj.vcenterdatacenter_query(datacenter, vcenter)
def get_vcenterdatacenter_id(self, datacenterName, vcenterName, tenantName): vcenterDatacenterObj = VcenterDatacenter(self.__ipAddr, self.__port) vcenterDatacenterId = vcenterDatacenterObj.vcenterdatacenter_query(datacenterName, vcenterName, tenantName) return vcenterDatacenterId