v3 Project CRUD
Change-Id: I027dbba3a0573fde590295be5b31e3701d8c01f5
This commit is contained in:
		 Dolph Mathews
					Dolph Mathews
				
			
				
					committed by
					
						 Gerrit Code Review
						Gerrit Code Review
					
				
			
			
				
	
			
			
			 Gerrit Code Review
						Gerrit Code Review
					
				
			
						parent
						
							f885c0d09a
						
					
				
				
					commit
					577c78c991
				
			| @@ -19,6 +19,7 @@ from keystoneclient.v2_0 import client | ||||
| from keystoneclient.v3 import endpoints | ||||
| from keystoneclient.v3 import domains | ||||
| from keystoneclient.v3 import policies | ||||
| from keystoneclient.v3 import projects | ||||
| from keystoneclient.v3 import roles | ||||
| from keystoneclient.v3 import services | ||||
|  | ||||
| @@ -65,6 +66,7 @@ class Client(client.Client): | ||||
|         self.endpoints = endpoints.EndpointManager(self) | ||||
|         self.domains = domains.DomainManager(self) | ||||
|         self.policies = policies.PolicyManager(self) | ||||
|         self.projects = projects.ProjectManager(self) | ||||
|         self.roles = roles.RoleManager(self) | ||||
|         self.services = services.ServiceManager(self) | ||||
|  | ||||
|   | ||||
							
								
								
									
										80
									
								
								keystoneclient/v3/projects.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								keystoneclient/v3/projects.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,80 @@ | ||||
| # Copyright 2011 OpenStack LLC. | ||||
| # Copyright 2011 Nebula, Inc. | ||||
| # All Rights Reserved. | ||||
| # | ||||
| #    Licensed under the Apache License, Version 2.0 (the "License"); you may | ||||
| #    not use this file except in compliance with the License. You may obtain | ||||
| #    a copy of the License at | ||||
| # | ||||
| #         http://www.apache.org/licenses/LICENSE-2.0 | ||||
| # | ||||
| #    Unless required by applicable law or agreed to in writing, software | ||||
| #    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | ||||
| #    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | ||||
| #    License for the specific language governing permissions and limitations | ||||
| #    under the License. | ||||
|  | ||||
| from keystoneclient import base | ||||
|  | ||||
|  | ||||
| class Project(base.Resource): | ||||
|     """Represents an Identity project. | ||||
|  | ||||
|     Attributes: | ||||
|         * id: a uuid that identifies the project | ||||
|         * name: project name | ||||
|         * description: project description | ||||
|         * enabled: boolean to indicate if project is enabled | ||||
|  | ||||
|     """ | ||||
|     def update(self, name=None, description=None, enabled=None): | ||||
|         kwargs = { | ||||
|             'name': name if name is not None else self.name, | ||||
|             'description': (description | ||||
|                             if description is not None | ||||
|                             else self.description), | ||||
|             'enabled': enabled if enabled is not None else self.enabled, | ||||
|         } | ||||
|  | ||||
|         try: | ||||
|             retval = self.manager.update(self.id, **kwargs) | ||||
|             self = retval | ||||
|         except Exception: | ||||
|             retval = None | ||||
|  | ||||
|         return retval | ||||
|  | ||||
|  | ||||
| class ProjectManager(base.CrudManager): | ||||
|     """Manager class for manipulating Identity projects.""" | ||||
|     resource_class = Project | ||||
|     collection_key = 'projects' | ||||
|     key = 'project' | ||||
|  | ||||
|     def create(self, name, domain, description=None, enabled=True): | ||||
|         return super(ProjectManager, self).create( | ||||
|             domain_id=base.getid(domain), | ||||
|             name=name, | ||||
|             description=description, | ||||
|             enabled=enabled) | ||||
|  | ||||
|     def list(self, domain=None): | ||||
|         return super(ProjectManager, self).list( | ||||
|             domain_id=base.getid(domain)) | ||||
|  | ||||
|     def get(self, project): | ||||
|         return super(ProjectManager, self).get( | ||||
|             project_id=base.getid(project)) | ||||
|  | ||||
|     def update(self, project, name=None, domain=None, description=None, | ||||
|                enabled=None): | ||||
|         return super(ProjectManager, self).update( | ||||
|             project_id=base.getid(project), | ||||
|             domain_id=base.getid(domain), | ||||
|             name=name, | ||||
|             description=description, | ||||
|             enabled=enabled) | ||||
|  | ||||
|     def delete(self, project): | ||||
|         return super(ProjectManager, self).delete( | ||||
|             project_id=base.getid(project)) | ||||
							
								
								
									
										21
									
								
								tests/v3/test_projects.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								tests/v3/test_projects.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| import uuid | ||||
|  | ||||
| from keystoneclient.v3 import projects | ||||
| from tests.v3 import utils | ||||
|  | ||||
|  | ||||
| class ProjectTests(utils.TestCase, utils.CrudTests): | ||||
|     def setUp(self): | ||||
|         super(ProjectTests, self).setUp() | ||||
|         self.additionalSetUp() | ||||
|         self.key = 'project' | ||||
|         self.collection_key = 'projects' | ||||
|         self.model = projects.Project | ||||
|         self.manager = self.client.projects | ||||
|  | ||||
|     def new_ref(self, **kwargs): | ||||
|         kwargs = super(ProjectTests, self).new_ref(**kwargs) | ||||
|         kwargs.setdefault('domain_id', uuid.uuid4().hex) | ||||
|         kwargs.setdefault('enabled', True) | ||||
|         kwargs.setdefault('name', uuid.uuid4().hex) | ||||
|         return kwargs | ||||
		Reference in New Issue
	
	Block a user