Merge pull request #909 from dataxu/BT-1753

Implementation of delete_pipeline
This commit is contained in:
Steve Pulec 2017-05-10 21:04:57 -04:00 committed by GitHub
commit d5e73e11fc
3 changed files with 32 additions and 9 deletions

View File

@ -23,14 +23,15 @@ class PipelineObject(BaseModel):
class Pipeline(BaseModel): class Pipeline(BaseModel):
def __init__(self, name, unique_id): def __init__(self, name, unique_id, **kwargs):
self.name = name self.name = name
self.unique_id = unique_id self.unique_id = unique_id
self.description = "" self.description = kwargs.get('description', '')
self.pipeline_id = get_random_pipeline_id() self.pipeline_id = get_random_pipeline_id()
self.creation_time = datetime.datetime.utcnow() self.creation_time = datetime.datetime.utcnow()
self.objects = [] self.objects = []
self.status = "PENDING" self.status = "PENDING"
self.tags = kwargs.get('tags', [])
@property @property
def physical_resource_id(self): def physical_resource_id(self):
@ -78,8 +79,7 @@ class Pipeline(BaseModel):
}], }],
"name": self.name, "name": self.name,
"pipelineId": self.pipeline_id, "pipelineId": self.pipeline_id,
"tags": [ "tags": self.tags
]
} }
def set_pipeline_objects(self, pipeline_objects): def set_pipeline_objects(self, pipeline_objects):
@ -113,8 +113,8 @@ class DataPipelineBackend(BaseBackend):
def __init__(self): def __init__(self):
self.pipelines = {} self.pipelines = {}
def create_pipeline(self, name, unique_id): def create_pipeline(self, name, unique_id, **kwargs):
pipeline = Pipeline(name, unique_id) pipeline = Pipeline(name, unique_id, **kwargs)
self.pipelines[pipeline.pipeline_id] = pipeline self.pipelines[pipeline.pipeline_id] = pipeline
return pipeline return pipeline
@ -129,6 +129,9 @@ class DataPipelineBackend(BaseBackend):
def get_pipeline(self, pipeline_id): def get_pipeline(self, pipeline_id):
return self.pipelines[pipeline_id] return self.pipelines[pipeline_id]
def delete_pipeline(self, pipeline_id):
self.pipelines.pop(pipeline_id, None)
def put_pipeline_definition(self, pipeline_id, pipeline_objects): def put_pipeline_definition(self, pipeline_id, pipeline_objects):
pipeline = self.get_pipeline(pipeline_id) pipeline = self.get_pipeline(pipeline_id)
pipeline.set_pipeline_objects(pipeline_objects) pipeline.set_pipeline_objects(pipeline_objects)

View File

@ -21,9 +21,11 @@ class DataPipelineResponse(BaseResponse):
return datapipeline_backends[self.region] return datapipeline_backends[self.region]
def create_pipeline(self): def create_pipeline(self):
name = self.parameters['name'] name = self.parameters.get('name')
unique_id = self.parameters['uniqueId'] unique_id = self.parameters.get('uniqueId')
pipeline = self.datapipeline_backend.create_pipeline(name, unique_id) description = self.parameters.get('description', '')
tags = self.parameters.get('tags', [])
pipeline = self.datapipeline_backend.create_pipeline(name, unique_id, description=description, tags=tags)
return json.dumps({ return json.dumps({
"pipelineId": pipeline.pipeline_id, "pipelineId": pipeline.pipeline_id,
}) })
@ -48,6 +50,11 @@ class DataPipelineResponse(BaseResponse):
] ]
}) })
def delete_pipeline(self):
pipeline_id = self.parameters["pipelineId"]
self.datapipeline_backend.delete_pipeline(pipeline_id)
return json.dumps({})
def put_pipeline_definition(self): def put_pipeline_definition(self):
pipeline_id = self.parameters["pipelineId"] pipeline_id = self.parameters["pipelineId"]
pipeline_objects = self.parameters["pipelineObjects"] pipeline_objects = self.parameters["pipelineObjects"]

View File

@ -136,6 +136,19 @@ def test_activate_pipeline():
get_value_from_fields('@pipelineState', fields).should.equal("SCHEDULED") get_value_from_fields('@pipelineState', fields).should.equal("SCHEDULED")
@mock_datapipeline_deprecated
def test_delete_pipeline():
conn = boto.datapipeline.connect_to_region("us-west-2")
res = conn.create_pipeline("mypipeline", "some-unique-id")
pipeline_id = res["pipelineId"]
conn.delete_pipeline(pipeline_id)
response = conn.list_pipelines()
response["pipelineIdList"].should.have.length_of(0)
@mock_datapipeline_deprecated @mock_datapipeline_deprecated
def test_listing_pipelines(): def test_listing_pipelines():
conn = boto.datapipeline.connect_to_region("us-west-2") conn = boto.datapipeline.connect_to_region("us-west-2")