First cut of container instance deregistration
This commit is contained in:
		
							parent
							
								
									30b1de507c
								
							
						
					
					
						commit
						71e8f6ef5b
					
				| @ -716,7 +716,31 @@ class EC2ContainerServiceBackend(BaseBackend): | |||||||
|                     else: |                     else: | ||||||
|                         resource["stringSetValue"].append(str(port)) |                         resource["stringSetValue"].append(str(port)) | ||||||
| 
 | 
 | ||||||
|     def deregister_container_instance(self, cluster_str, container_instance_str): |     def deregister_container_instance(self, cluster_str, container_instance_str, force): | ||||||
|  |         cluster_name = cluster_str.split('/')[-1] | ||||||
|  |         if cluster_name not in self.clusters: | ||||||
|  |             raise Exception("{0} is not a cluster".format(cluster_name)) | ||||||
|  |         container_instance_id = container_instance_str.split('/')[-1] | ||||||
|  |         container_instance = self.container_instances[cluster_name].get(container_instance_id) | ||||||
|  |         if container_instance is None: | ||||||
|  |             raise Exception("{0} is not a container id in the cluster") | ||||||
|  |         if not force and container_instance.running_tasks_count > 0: | ||||||
|  |             raise Exception("Found running tasks on the instance.") | ||||||
|  |         # Currently assume that people might want to do something based around deregistered instances | ||||||
|  |         # with tasks left running on them - but nothing if deregistration is forced or no tasks were | ||||||
|  |         # running already | ||||||
|  |         elif force and container_instance.running_tasks_count > 0: | ||||||
|  |             if not self.container_instances.get('orphaned'): | ||||||
|  |                 self.container_instances['orphaned'] = {} | ||||||
|  |             self.container_instances['orphaned'][container_instance_id] = container_instance | ||||||
|  |         del(self.container_instances[cluster_name][container_instance_id]) | ||||||
|  |         self._respond_to_cluster_state_update(cluster_str) | ||||||
|  |         pass | ||||||
|  | 
 | ||||||
|  |     def _respond_to_cluster_state_update(self, cluster_str): | ||||||
|  |         cluster_name = cluster_str.split('/')[-1] | ||||||
|  |         if cluster_name not in self.clusters: | ||||||
|  |             raise Exception("{0} is not a cluster".format(cluster_name)) | ||||||
|         pass |         pass | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -203,6 +203,17 @@ class EC2ContainerServiceResponse(BaseResponse): | |||||||
|             'containerInstance': container_instance.response_object |             'containerInstance': container_instance.response_object | ||||||
|         }) |         }) | ||||||
| 
 | 
 | ||||||
|  |     def deregister_container_instance(self): | ||||||
|  |         cluster_str = self._get_param('cluster', 'default'), | ||||||
|  |         container_instance_str = self._get_param('containerInstance') | ||||||
|  |         force = self._get_param('force', False) | ||||||
|  |         container_instance = self.ecs_backend.deregister_container_instance( | ||||||
|  |             cluster_str, container_instance_str, force | ||||||
|  |         ) | ||||||
|  |         return json.dumps({ | ||||||
|  |             'containerInstance': container_instance.response_object | ||||||
|  |         }) | ||||||
|  | 
 | ||||||
|     def list_container_instances(self): |     def list_container_instances(self): | ||||||
|         cluster_str = self._get_param('cluster') |         cluster_str = self._get_param('cluster') | ||||||
|         container_instance_arns = self.ecs_backend.list_container_instances( |         container_instance_arns = self.ecs_backend.list_container_instances( | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user