Exemple #1
0
    def atmos_subtenant_create(
            namespace, tenant, keypool, project, vpool, uid, secretkey):
        if(vpool):
            from virtualpool import VirtualPool
            obj = VirtualPool(self.__ipAddr, self.__port)

            vpool_uri = obj.vpool_query(vpool, 'object')

            vpool_uri = vpool_uri.strip()

        if ((project) and (not common.is_uri(project))):
            from project import Project
            obj = Project(self.__ipAddr, self.__port)
            projectlst = obj.project_list(tenant)

            project_uri = None

            for projiter in projectlst:
                if(projiter['name'] == projectname):
                    project_uri = projiter['id']

            if(not project_uri):
                raise SOSError(SOSError.NOT_FOUND_ERR,
                               "Project " + project + ": not found")

        _headers = dict()
        _headers['x-emc-namespace'] = namespace
        _headers['x-emc-vpool'] = vpool_uri
        _headers['x-emc-project-id'] = project_uri

        (s, h) = common.service_json_request(self.__ipAddr,
                                             ATMOS_PORT,
                                             "PUT",
                                             self.URI_SWIFT_CONTAINER_INSTANCE.
                                             format(namespace, container),
                                             None,
                                             None,
                                             False,
                                             'application/json',
                                             None,
                                             _headers)

        if(h['subtenantID']):
            return h['subtenantID']
Exemple #2
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
Exemple #3
0
    def atmos_subtenant_create(namespace, tenant, keypool, project, vpool, uid,
                               secretkey):
        if (vpool):
            from virtualpool import VirtualPool
            obj = VirtualPool(self.__ipAddr, self.__port)

            vpool_uri = obj.vpool_query(vpool, 'object')

            vpool_uri = vpool_uri.strip()

        if ((project) and (not common.is_uri(project))):
            from project import Project
            obj = Project(self.__ipAddr, self.__port)
            projectlst = obj.project_list(tenant)

            project_uri = None

            for projiter in projectlst:
                if (projiter['name'] == projectname):
                    project_uri = projiter['id']

            if (not project_uri):
                raise SOSError(SOSError.NOT_FOUND_ERR,
                               "Project " + project + ": not found")

        _headers = dict()
        _headers['x-emc-namespace'] = namespace
        _headers['x-emc-vpool'] = vpool_uri
        _headers['x-emc-project-id'] = project_uri

        (s, h) = common.service_json_request(
            self.__ipAddr, ATMOS_PORT, "PUT",
            self.URI_SWIFT_CONTAINER_INSTANCE.format(namespace, container),
            None, None, False, 'application/json', None, _headers)

        if (h['subtenantID']):
            return h['subtenantID']
Exemple #4
0
    def filepolicy_unassign(
        self,
        name,
        unassign_resource_type,
        unassign_from_vpools,
        unassign_from_projects,
        unassign_from_filesystem,
        tenant,
        project
        ):

        filepolicy = self.filepolicy_query(name)
        unassign_request = {}

        projects_uris = []
        vpools_uris = []
        
        if unassign_resource_type == 'vpools':
            if unassign_from_vpools is None :
                raise SOSError(SOSError.VALUE_ERR,"File policy unassign error:"+ "Vpools value should be provided")
            
            vpool_obj = VirtualPool(self.__ipAddr, self.__port)
            if( len(unassign_from_vpools) > 1 ):
                vpools = unassign_from_vpools.split(',')
                for vpool in vpools:
                    uri = vpool_obj.vpool_query(vpool, 'file')
                    vpools_uris.append(uri)
            else :
                uri = vpool_obj.vpool_query(unassign_from_vpools, 'file')
                vpools_uris.append(uri)
            unassign_request['unassign_from'] = vpools_uris
        elif unassign_resource_type == 'projects':
            if unassign_from_projects is None :
                raise SOSError(SOSError.VALUE_ERR,"File policy unassign error:"+ "Project value should be provided")
            
            project_obj = Project(self.__ipAddr, self.__port)
            if( len(unassign_from_projects) > 1):
                projects = unassign_from_projects.split(',')
                for project in projects:
                    uri = project_obj.project_query(project)
                    projects_uris.append(uri)
            else :
                uri = project_obj.project_query(unassign_from_projects)
                projects_uris.append(uri)
            unassign_request['unassign_from'] = projects_uris
        elif unassign_resource_type == 'filesystem':
	    filesystem_uris = []
            if unassign_from_filesystem is None or project is None :
                raise SOSError(SOSError.VALUE_ERR,"File policy unassign error:"+ "Filesystem and project value should be provided")
            
            fs_obj = fileshare.Fileshare(self.__ipAddr, self.__port)
            resourcepath = "/" + project + "/"
            if(tenant is not None):
                resourcepath = tenant + resourcepath
            if( len(unassign_from_filesystem) > 1):
                filesystems = unassign_from_filesystem.split(',')
                for filesystem in filesystems:
                    uri = fs_obj.fileshare_query(resourcepath + filesystem)
                    filesystem_uris.append(uri)
            else :
                uri = fs_obj.fileshare_query(resourcepath + filesystem)
                filesystem_uris.append(uri)
                
            unassign_request['unassign_from'] = filesystem_uris
            
	
        try:
            body = json.dumps(unassign_request)
            (s, h) = common.service_json_request(self.__ipAddr,
                    self.__port, 'POST',
                    FilePolicy.URI_FILE_POLICY_UNASSIGN.format(filepolicy['id']),
                    body)
            if not s:
                return None
            o = common.json_decode(s)
	    return o
        except SOSError, e:
            errorMessage = str(e)
Exemple #5
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)