Exemplo n.º 1
0
    def computevpool_update(self, name, label,
                                systemtype,
                                description,
                                usematchedpools,
                                minprocessors, maxprocessors,
                                mincores, maxcores,
                                minthreads, maxthreads,
                                mincpuspeed, maxcpuspeed,
                                minmemory, maxmemory,
                                minnics, maxnics,
                                minhbas, maxhbas,
                                varray_add, varray_remove,
                                templates_add, templates_remove):
        compute_uri = self.computevpool_query(name)
        params = {
            'name': label
            }
        self._computevpool_prepare_payload(params, systemtype,
                                description,
                                usematchedpools,
                                minprocessors, maxprocessors,
                                mincores, maxcores,
                                minthreads, maxthreads,
                                mincpuspeed, maxcpuspeed,
                                minmemory, maxmemory,
                                minnics, maxnics,
                                minhbas, maxhbas)

        nhobj = VirtualArray(self.__ipAddr, self.__port)
        if (varray_add):
            add_varr_list = []
            for varray in varray_add:
                add_varr_list.append(nhobj.varray_query(varray))
            params['varray_changes'] = {'add': {'varrays': add_varr_list}}

        if (varray_remove):
            remove_varr_list = []
            for varray in varray_remove:
                remove_varr_list.append(nhobj.varray_query(varray))
            params['varray_changes'] = {'remove':
                                        {'varrays': remove_varr_list}}

        if(templates_add):
            params['service_profile_template_changes'] = {'add':
                                 {'service_profile_template': templates_add}}

        if(templates_remove):
            params['service_profile_template_changes'] = {'remove':
                                 {'service_profile_template':
                                   templates_remove}}

        body = json.dumps(params)
        (s, h) = common.service_json_request(self.__ipAddr,
                                self.__port, "PUT",
                                self.URI_COMPUTE_VPOOL_ID.format(compute_uri),
                                body)

        return common.json_decode(s)
    def storagepool_update(self, storagesystem, serialnumber, devicetype, poolname, nhadds, nhrems, volumetype, maxresources, maxpoolutilization, maxthinpoolsubscription):

 	nhassignments = dict();
        #parms['varray_assignment_changes'] = nhassignments
        if (nhadds):
	    nhlst = []
	    for iter in nhadds:
		from virtualarray import VirtualArray
            	obj = VirtualArray(self.__ipAddr, self.__port)
	                    
	 	nbhuri = obj.varray_query(iter)
		if(nbhuri):
		    nhlst.append(nbhuri)
		
		
	    if(nhlst):
            	nh = dict();
            	nh['varrays'] = nhlst
            	nhassignments['add'] = nh;
        if (nhrems):
	    nhlst = []
	    for iter in nhrems:
		from virtualarray import VirtualArray
            	obj = VirtualArray(self.__ipAddr, self.__port)
	                    
	 	nbhuri = obj.varray_query(iter)
		if(nbhuri):
		    nhlst.append(nbhuri)

	    if(nhlst):
            	nh = dict();
            	nh['varrays'] = nhlst
            	nhassignments['remove'] = nh;

          
        if(storagesystem):
                device_id = self.storagesystem_query(storagesystem,  devicetype, None)
        else:
                device_id = self.storagesystem_query(None, devicetype, serialnumber)

        storagepool_ids = self.storagepool_list_by_uri(device_id)

        for uri in storagepool_ids:
            storpool = self.storagepool_show_by_uri(device_id,uri)

	    if(poolname):
	        if(storpool['pool_name'] == poolname):
		    if ( (volumetype) and (storpool['supported_volume_types'] == volumetype) ):
                    	self.storagepool_update_by_uri(storpool['id'], nhassignments, maxresources, maxpoolutilization, maxthinpoolsubscription ) 
		    if (not volumetype):
                    	self.storagepool_update_by_uri(storpool['id'], nhassignments, maxresources, maxpoolutilization, maxthinpoolsubscription ) 

	    else:
		if (not volumetype):
                    self.storagepool_update_by_uri(storpool['id'], nhassignments, maxresources,  maxpoolutilization, maxthinpoolsubscription) 
		if ( (volumetype) and (storpool['supported_volume_types'] == volumetype) ):
                    self.storagepool_update_by_uri(storpool['id'], nhassignments, maxresources,  maxpoolutilization, maxthinpoolsubscription) 
Exemplo n.º 3
0
    def computevpool_update(self, name, label, systemtype, description,
                            usematchedpools, minprocessors, maxprocessors,
                            mincores, maxcores, minthreads, maxthreads,
                            mincpuspeed, maxcpuspeed, minmemory, maxmemory,
                            minnics, maxnics, minhbas, maxhbas, varray_add,
                            varray_remove, templates_add, templates_remove):
        compute_uri = self.computevpool_query(name)
        params = {'name': label}
        self._computevpool_prepare_payload(params, systemtype, description,
                                           usematchedpools, minprocessors,
                                           maxprocessors, mincores, maxcores,
                                           minthreads, maxthreads, mincpuspeed,
                                           maxcpuspeed, minmemory, maxmemory,
                                           minnics, maxnics, minhbas, maxhbas)

        nhobj = VirtualArray(self.__ipAddr, self.__port)
        if (varray_add):
            add_varr_list = []
            for varray in varray_add:
                add_varr_list.append(nhobj.varray_query(varray))
            params['varray_changes'] = {'add': {'varrays': add_varr_list}}

        if (varray_remove):
            remove_varr_list = []
            for varray in varray_remove:
                remove_varr_list.append(nhobj.varray_query(varray))
            params['varray_changes'] = {
                'remove': {
                    'varrays': remove_varr_list
                }
            }

        if (templates_add):
            params['service_profile_template_changes'] = {
                'add': {
                    'service_profile_template': templates_add
                }
            }

        if (templates_remove):
            params['service_profile_template_changes'] = {
                'remove': {
                    'service_profile_template': templates_remove
                }
            }

        body = json.dumps(params)
        (s, h) = common.service_json_request(
            self.__ipAddr, self.__port, "PUT",
            self.URI_COMPUTE_VPOOL_ID.format(compute_uri), body)

        return common.json_decode(s)
Exemplo n.º 4
0
    def protection_copyparam(self,
                             copyvarray,
                             pit,
                             type="native",
                             sync='false'):
        copies_param = dict()
        copy = dict()
        copy_entries = []

        copy['type'] = type

        if (pit != ""):
            copy['pointInTime'] = pit
        #true=split
        if (sync == 'true'):
            copy['sync'] = "true"
        else:
            copy['sync'] = "false"
        #for rp and srdf target virtual array should be provided
        from virtualarray import VirtualArray
        varray_obj = VirtualArray(self.__ipAddr, self.__port)
        varray_uri = varray_obj.varray_query(copyvarray)

        copy['copyID'] = varray_uri
        copy_entries.append(copy)
        copies_param['copy'] = copy_entries
        return json.dumps(copies_param)
Exemplo n.º 5
0
    def assign(self, name, varray):
        """
        Retrieves network details based on network name
        Parameters:
            name: name of the network. 
	    varray: varray to be assigned
        Returns:
            Network details in JSON response payload
        """

        turi = self.network_query(name, None)

        nuri = None
        nlst = []

        if varray:
            from virtualarray import VirtualArray

            varray_obj = VirtualArray(self.__ipAddr, self.__port)

            for iter in varray:

                nuri = varray_obj.varray_query(iter)
                nlst.append(nuri)

        if len(nlst) > 0:
            parms = {"varrays": nlst}
        else:
            parms = {"varrays": []}

        body = json.dumps(parms)
        (s, h) = common.service_json_request(self.__ipAddr, self.__port, "PUT", Network.URI_NETWORK.format(turi), body)
Exemplo n.º 6
0
    def assign(self, name, varray=None):
        '''
        Retrieves network details based on network name
        Parameters:
            name: name of the network.
            varray: varray to be assigned
        Returns:
            Network details in JSON response payload
        '''

        turi = self.query_by_name(name)
        nuri = None
        nlst = []
        if(varray):
            varray_obj = VirtualArray(self.__ipAddr, self.__port)
            for item in varray:
                nuri = varray_obj.varray_query(item)
                nlst.append(nuri)

        if(len(nlst) > 0):
            parms = {
                'varrays': nlst
            }
        else:
            parms = {
                'varrays': []
            }

        body = json.dumps(parms)
        common.service_json_request(self.__ipAddr, self.__port,
                                    "PUT",
                                    Network.URI_NETWORK.format(turi),
                                    body)
Exemplo n.º 7
0
    def assign(self, name, varray=None):
        '''
        Retrieves network details based on network name
        Parameters:
            name: name of the network.
            varray: varray to be assigned
        Returns:
            Network details in JSON response payload
        '''

        turi = self.query_by_name(name)
        nuri = None
        nlst = []
        if (varray):
            varray_obj = VirtualArray(self.__ipAddr, self.__port)
            for item in varray:
                nuri = varray_obj.varray_query(item)
                nlst.append(nuri)

        if (len(nlst) > 0):
            parms = {'varrays': nlst}
        else:
            parms = {'varrays': []}

        body = json.dumps(parms)
        common.service_json_request(self.__ipAddr, self.__port, "PUT",
                                    Network.URI_NETWORK.format(turi), body)
Exemplo n.º 8
0
    def computevpool_create(self, name, systemtype, description,
                            usematchedpools, varrays, minprocessors,
                            maxprocessors, mincores, maxcores, minthreads,
                            maxthreads, mincpuspeed, maxcpuspeed, minmemory,
                            maxmemory, minnics, maxnics, minhbas, maxhbas,
                            templates):
        params = {'name': name}
        #varray details to computevpool
        if (varrays):
            varrobj = VirtualArray(self.__ipAddr, self.__port)
            varr_list = []
            for varray in varrays:
                varr_list.append(varrobj.varray_query(varray))
            params["varrays"] = varr_list

        #service profile templates
        if (templates):
            params["service_profile_template"] = templates

        self._computevpool_prepare_payload(params, systemtype, description,
                                           usematchedpools, minprocessors,
                                           maxprocessors, mincores, maxcores,
                                           minthreads, maxthreads, mincpuspeed,
                                           maxcpuspeed, minmemory, maxmemory,
                                           minnics, maxnics, minhbas, maxhbas)

        body = json.dumps(params)
        (s, h) = common.service_json_request(self.__ipAddr, self.__port,
                                             "POST", self.URI_COMPUTE_VPOOL,
                                             body)

        return common.json_decode(s)
Exemplo n.º 9
0
    def protection_copyparam(
            self, copyvarray, pit, accessmode, type="native", sync='false'):
        copies_param = dict()
        copy = dict()
        copy_entries = []

        copy['type'] = type
        
        if(pit != ""):
            copy['pointInTime'] = pit
        if(accessmode != ""):
            copy['accessMode'] = accessmode
        #true=split
        if(sync == 'true'):
            copy['sync'] = "true"
        else:
            copy['sync'] = "false"
        #for rp and srdf target virtual array should be provided
        from virtualarray import VirtualArray
        varray_obj = VirtualArray(self.__ipAddr, self.__port)
        varray_uri = varray_obj.varray_query(copyvarray)
    
        copy['copyID'] = varray_uri
        copy_entries.append(copy)
        copies_param['copy'] = copy_entries
        return json.dumps(copies_param)               
Exemplo n.º 10
0
    def exportgroup_create(self, name, project, tenant, varray, exportgrouptype, export_destination=None):
        """
        This function will take export group name and project name  as input
        and it will create the Export group with given name.
        parameters:
           name : Name of the export group.
           project: Name of the project path.
           tenant: Container tenant name.
        return
            returns with status of creation.
        """
        # check for existance of export group.
        try:
            status = self.exportgroup_show(name, project, tenant)
        except SOSError as e:
            if e.err_code == SOSError.NOT_FOUND_ERR:
                if tenant is None:
                    tenant = ""

                fullproj = tenant + "/" + project
                projObject = Project(self.__ipAddr, self.__port)
                projuri = projObject.project_query(fullproj)

                varrayObject = VirtualArray(self.__ipAddr, self.__port)
                nhuri = varrayObject.varray_query(varray)

                parms = {"name": name, "project": projuri, "varray": nhuri, "type": exportgrouptype}

                if exportgrouptype and export_destination:
                    if exportgrouptype == "Cluster":
                        cluster_obj = Cluster(self.__ipAddr, self.__port)
                        try:
                            cluster_uri = cluster_obj.cluster_query(export_destination, fullproj)
                        except SOSError as e:
                            raise e
                        parms["clusters"] = [cluster_uri]
                    elif exportgrouptype == "Host":
                        host_obj = Host(self.__ipAddr, self.__port)
                        try:
                            host_uri = host_obj.query_by_name(export_destination)
                        except SOSError as e:
                            raise e
                        parms["hosts"] = [host_uri]

                body = json.dumps(parms)
                (s, h) = common.service_json_request(self.__ipAddr, self.__port, "POST", self.URI_EXPORT_GROUP, body)

                o = common.json_decode(s)
                return o
            else:
                raise e

        if status:
            raise SOSError(SOSError.ENTRY_ALREADY_EXISTS_ERR, "Export group with name " + name + " already exists")
Exemplo n.º 11
0
    def list_networks(self, varray):
        '''
        Makes REST API call to list networks in a varray
        Parameters:
            varray: name of varray
        Returns:
            List of network uuids in JSONo response payload
        '''
        varray_uri = None
        if (varray):
            varray_obj = VirtualArray(self.__ipAddr, self.__port)
            varray_uri = varray_obj.varray_query(varray)

        return self.list_by_uri(varray_uri)
Exemplo n.º 12
0
    def list_networks(self, varray):
        '''
        Makes REST API call to list networks in a varray
        Parameters:
            varray: name of varray
        Returns:
            List of network uuids in JSONo response payload
        '''
        varray_uri = None
        if(varray):
            varray_obj = VirtualArray(self.__ipAddr, self.__port)
            varray_uri = varray_obj.varray_query(varray)

        return self.list_by_uri(varray_uri)
Exemplo n.º 13
0
    def create(self, varray, name, type):
        """
        Makes REST API call to create network in a varray
        Parameters:
            varray: name of varray
            name: name of network
            type: type of transport protocol. FC, IP or Ethernet
        Returns:
            Created task details in JSON response payload
        """

        network_exists = True

        try:
            self.show(name, varray)
        except SOSError as e:
            if e.err_code == SOSError.NOT_FOUND_ERR:
                network_exists = False
            else:
                raise e

        if network_exists:
            raise SOSError(SOSError.ENTRY_ALREADY_EXISTS_ERR, "Network with name: " + name + " already exists")

        from virtualarray import VirtualArray

        varray_obj = VirtualArray(self.__ipAddr, self.__port)
        varray_uri = varray_obj.varray_query(varray)

        # As per the ViPR Source Code 5th July
        body = json.dumps({"name": name, "transport_type": type})

        # As per the wiki apec
        """
        body = json.dumps({'network':
        {
         'name' : name,
         '' :
               [
                  { "name" : endpoint }
               ]
        }
        })
        """

        (s, h) = common.service_json_request(
            self.__ipAddr, self.__port, "POST", Network.URI_VIRTUALARRAY_NETWORK.format(varray_uri), body
        )
        o = common.json_decode(s)
        return o
Exemplo n.º 14
0
    def computevpool_create(self, name,
                                systemtype,
                                description,
                                usematchedpools,
                                varrays,
                                minprocessors, maxprocessors,
                                mincores, maxcores,
                                minthreads, maxthreads,
                                mincpuspeed, maxcpuspeed,
                                minmemory, maxmemory,
                                minnics, maxnics,
                                minhbas, maxhbas,
                                templates):
        params = {
                 'name': name
                 }
        #varray details to computevpool
        if(varrays):
            varrobj = VirtualArray(self.__ipAddr, self.__port)
            varr_list = []
            for varray in varrays:
                varr_list.append(varrobj.varray_query(varray))
            params["varrays"] = varr_list

        #service profile templates
        if(templates):
            params["service_profile_template"] = templates

        self._computevpool_prepare_payload(params,
                                systemtype,
                                description,
                                usematchedpools,
                                minprocessors, maxprocessors,
                                mincores, maxcores,
                                minthreads, maxthreads,
                                mincpuspeed, maxcpuspeed,
                                minmemory, maxmemory,
                                minnics, maxnics,
                                minhbas, maxhbas)

        body = json.dumps(params)
        (s, h) = common.service_json_request(self.__ipAddr,
                                self.__port, "POST",
                                self.URI_COMPUTE_VPOOL,
                                body)

        return common.json_decode(s)
Exemplo n.º 15
0
    def bucket_create(self, name, project, owner , varray,vpool , retention, softquota , hardquota):
        
        
        
        from project import Project
        proj_obj = Project(self.__ipAddr, self.__port)
        project_uri = proj_obj.project_query(project)

        from virtualpool import VirtualPool
        vpool_obj = VirtualPool(self.__ipAddr, self.__port)
        vpool_uri = vpool_obj.vpool_query(vpool, "object")
        
        from virtualarray import VirtualArray
        varray_obj = VirtualArray(self.__ipAddr, self.__port)
        varray_uri = varray_obj.varray_query(varray)
        
        uri = Bucket.URI_BUCKET_CREATE + "?project=" + project_uri
        

        request = {
            'name': name,
            'varray': varray_uri,
            'vpool': vpool_uri
        }
        if(owner):
            request["owner"] = owner
        if(retention):
            request["retention"] = retention
        if(softquota):
            request["soft_quota"] = softquota
        if(hardquota):
            request["hard_quota"] = hardquota
        
        body = json.dumps(request)
        

        (s, h) = common.service_json_request(
            self.__ipAddr, self.__port,
            "POST",
            uri,
            body)
        o = common.json_decode(s)
        return o
Exemplo n.º 16
0
    def filepolicy_assign(
        self,
        name,
        assign_to_vpools,
        project_assign_vpool,
        assign_to_projects,
        source_varray,
        target_varrays,
        ):

        filepolicy = self.filepolicy_query(name)
        (s, h) = common.service_json_request(
                self.__ipAddr,
                self.__port,
                'GET',
                FilePolicy.URI_FILE_POLICY_SHOW.format(filepolicy['id']),
                None,
                None,
                False,
                )
	o = common.json_decode(s)
	appliedat = common.get_node_value(o,"applied_at")
	pol_type = common.get_node_value(o,"type")
	assign_request = {}

	if ( appliedat  == "vpool"):
		vpool_assign_param = {}
		assign_request_vpools = []
		if assign_to_vpools is None:
           		raise SOSError(SOSError.VALUE_ERR,"File policyassign error:"+ "Vpool(assign_to_vpools) value should be provided")
		elif( len(assign_to_vpools)>1):
            		vpool_names = assign_to_vpools.split(',')
            		vpool_obj = VirtualPool(self.__ipAddr, self.__port)
			for name in vpool_names:
                 		uri = vpool_obj.vpool_query(name, 'file')
                 		assign_request_vpools.append(uri)
        	elif( assign_to_vpools is not None ):
            		uri = vpool_obj.vpool_query(assign_to_vpools, 'file')
            		assign_request_vpools.append(uri)
        	vpool_assign_param['assign_to_vpools'] = assign_request_vpools
		assign_request['vpool_assign_param'] = vpool_assign_param
	elif ( appliedat == "project"):
		project_assign_param = {}
		assign_request_projects = []
		assign_request_project_vpools = []
		project_obj = Project(self.__ipAddr, self.__port)
		if assign_to_projects is None or project_assign_vpool is None:
                        raise SOSError(SOSError.VALUE_ERR,"File policyassign error:"+ "Vpool (project_assign_vpool) and project (assign_to_projects) value should be provided")
                
		if( len(assign_to_projects)>1):
            		project_names = assign_to_projects.split(',')
            		for name in project_names:
                 		uri = project_obj.project_query(name) 
		 		assign_request_projects.append(uri)
        	else:
            		uri = project_obj.project_query(assign_to_projects)
            		assign_request_projects.append(uri)
	
		vpool_obj = VirtualPool(self.__ipAddr, self.__port)
            	uri = vpool_obj.vpool_query(project_assign_vpool, 'file')
            	project_assign_param['vpool'] = uri
        	project_assign_param['assign_to_projects'] = assign_request_projects
		assign_request['project_assign_param'] = project_assign_param

	if (pol_type == "file_replication"):
		if (source_varray is not None and target_varrays is not None):
			file_replication_topologies = []
	        	file_replication_topology = {}
			assign_target_varrays = []
			from virtualarray import VirtualArray
                	varray_obj = VirtualArray(self.__ipAddr, self.__port)
	                src_varray_uri = varray_obj.varray_query(source_varray)
		        file_replication_topology['source_varray']= src_varray_uri
	
		        if( len(target_varrays)>1):
				trg_varrays= target_varrays.split(',')
				for varray in trg_varrays:
					uri =  varray_obj.varray_query(varray)
					assign_target_varrays.append(uri)
			else:
				uri = varray_obj.varray_query(target_varrays)
				assign_target_varrays.append(uri)
		
			file_replication_topology['target_varrays']= assign_target_varrays
			file_replication_topologies.append(file_replication_topology)
			assign_request['file_replication_topologies']= file_replication_topologies
		else:
			raise SOSError(SOSError.VALUE_ERR, "File policyassign error:"+ "Target and source virtual array should be provided")

		

        try:
            body = json.dumps(assign_request)
            (s, h) = common.service_json_request(self.__ipAddr,
                    self.__port, 'POST',
                    FilePolicy.URI_FILE_POLICY_ASSIGN.format(filepolicy['id']),
                    body)
            if not s:
                return None
            o = common.json_decode(s)
            return o
        except SOSError, e:
            errorMessage = str(e)
Exemplo n.º 17
0
    def storagepool_update(self, storagesystem, serialnumber, devicetype,
                           poolname, nhadds, nhrems, volumetype, maxresources,
                           maxpoolutilization, maxthinpoolsubscription):

        nhassignments = dict()
        #parms['varray_assignment_changes'] = nhassignments
        if (nhadds):
            nhlst = []
            for iter in nhadds:
                from virtualarray import VirtualArray
                obj = VirtualArray(self.__ipAddr, self.__port)

                nbhuri = obj.varray_query(iter)
                if (nbhuri):
                    nhlst.append(nbhuri)

            if (nhlst):
                nh = dict()
                nh['varrays'] = nhlst
                nhassignments['add'] = nh
        if (nhrems):
            nhlst = []
            for iter in nhrems:
                from virtualarray import VirtualArray
                obj = VirtualArray(self.__ipAddr, self.__port)

                nbhuri = obj.varray_query(iter)
                if (nbhuri):
                    nhlst.append(nbhuri)

            if (nhlst):
                nh = dict()
                nh['varrays'] = nhlst
                nhassignments['remove'] = nh

        if (storagesystem):
            device_id = self.storagesystem_query(storagesystem, devicetype,
                                                 None)
        else:
            device_id = self.storagesystem_query(None, devicetype,
                                                 serialnumber)

        storagepool_ids = self.storagepool_list_by_uri(device_id)
        not_found = 1
        for uri in storagepool_ids:
            storpool = self.storagepool_show_by_uri(device_id, uri)
            if (storpool['pool_name']) == poolname:
                not_found = 0
            if (poolname):
                if (storpool['pool_name'] == poolname):
                    if ((volumetype) and
                        (storpool['supported_resource_types'] == volumetype)):
                        self.storagepool_update_by_uri(
                            storpool['id'], nhassignments, maxresources,
                            maxpoolutilization, maxthinpoolsubscription)
                    if (not volumetype):
                        self.storagepool_update_by_uri(
                            storpool['id'], nhassignments, maxresources,
                            maxpoolutilization, maxthinpoolsubscription)

            else:
                if (not volumetype):
                    self.storagepool_update_by_uri(storpool['id'],
                                                   nhassignments, maxresources,
                                                   maxpoolutilization,
                                                   maxthinpoolsubscription)
                if ((volumetype) and
                    (storpool['supported_resource_types'] == volumetype)):
                    self.storagepool_update_by_uri(storpool['id'],
                                                   nhassignments, maxresources,
                                                   maxpoolutilization,
                                                   maxthinpoolsubscription)
        if (poolname is not None):
            if (not_found == 1):
                raise SOSError(
                    SOSError.NOT_FOUND_ERR,
                    "Storagepool with name " + str(poolname) + " not found\n")
Exemplo n.º 18
0
    def storagepool_update(self, storagesystem, serialnumber, devicetype,
                           poolname,
                           nhadds, nhrems,
                           volumetype, maxresources,
                           maxpoolutilization,
                           maxthinpoolsubscription):

        nhassignments = dict()
        #parms['varray_assignment_changes'] = nhassignments
        if (nhadds):
            nhlst = []
            for iter in nhadds:
                from virtualarray import VirtualArray
                obj = VirtualArray(self.__ipAddr, self.__port)

                nbhuri = obj.varray_query(iter)
                if(nbhuri):
                    nhlst.append(nbhuri)

            if(nhlst):
                nh = dict()
                nh['varrays'] = nhlst
                nhassignments['add'] = nh
        if (nhrems):
            nhlst = []
            for iter in nhrems:
                from virtualarray import VirtualArray
                obj = VirtualArray(self.__ipAddr, self.__port)

                nbhuri = obj.varray_query(iter)
                if(nbhuri):
                    nhlst.append(nbhuri)

            if(nhlst):
                nh = dict()
                nh['varrays'] = nhlst
                nhassignments['remove'] = nh

        if(storagesystem):
            device_id = self.storagesystem_query(storagesystem,
                                                 devicetype,
                                                 None)
        else:
            device_id = self.storagesystem_query(None, devicetype,
                                                 serialnumber)

        storagepool_ids = self.storagepool_list_by_uri(device_id)
        not_found=1
        for uri in storagepool_ids:
            storpool = self.storagepool_show_by_uri(device_id, uri)
            if(storpool['pool_name'])==poolname:
                not_found=0
            if(poolname):
                if(storpool['pool_name'] == poolname):
                    if ((volumetype) and
                        (storpool['supported_resource_types'] == volumetype)):
                        self.storagepool_update_by_uri(storpool['id'],
                                                       nhassignments,
                                                       maxresources,
                                                       maxpoolutilization,
                                                       maxthinpoolsubscription)
                    if (not volumetype):
                        self.storagepool_update_by_uri(storpool['id'],
                                                       nhassignments,
                                                       maxresources,
                                                       maxpoolutilization,
                                                       maxthinpoolsubscription)

            else:
                if (not volumetype):
                    self.storagepool_update_by_uri(storpool['id'],
                                                   nhassignments,
                                                   maxresources,
                                                   maxpoolutilization,
                                                   maxthinpoolsubscription)
                if ((volumetype) and
                    (storpool['supported_resource_types'] == volumetype)):
                    self.storagepool_update_by_uri(storpool['id'],
                                                   nhassignments,
                                                    maxresources,
                                                    maxpoolutilization,maxthinpoolsubscription)
        if(poolname is not None):
            if(not_found==1):
                raise SOSError(SOSError.NOT_FOUND_ERR,
                "Storagepool with name "
                + str(poolname) + " not found\n")