From e7498580417ee4eb57d9f92d35af72168f36ca33 Mon Sep 17 00:00:00 2001 From: Andrii Piasetskyi Date: Fri, 21 Apr 2017 21:24:52 +0300 Subject: [PATCH 1/3] Added DataPipeline Tags. Implemented delete_pipeline. Added tests for delete_pipeline --- moto/datapipeline/models.py | 13 ++++++++----- moto/datapipeline/responses.py | 8 +++++++- tests/test_datapipeline/test_datapipeline.py | 13 +++++++++++++ 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/moto/datapipeline/models.py b/moto/datapipeline/models.py index 77c84924d..19b73b5c9 100644 --- a/moto/datapipeline/models.py +++ b/moto/datapipeline/models.py @@ -23,7 +23,7 @@ class PipelineObject(BaseModel): class Pipeline(BaseModel): - def __init__(self, name, unique_id): + def __init__(self, name, unique_id, **kwargs): self.name = name self.unique_id = unique_id self.description = "" @@ -31,6 +31,7 @@ class Pipeline(BaseModel): self.creation_time = datetime.datetime.utcnow() self.objects = [] self.status = "PENDING" + self.tags = kwargs.get('tags', []) @property def physical_resource_id(self): @@ -78,8 +79,7 @@ class Pipeline(BaseModel): }], "name": self.name, "pipelineId": self.pipeline_id, - "tags": [ - ] + "tags": self.tags } def set_pipeline_objects(self, pipeline_objects): @@ -113,8 +113,8 @@ class DataPipelineBackend(BaseBackend): def __init__(self): self.pipelines = {} - def create_pipeline(self, name, unique_id): - pipeline = Pipeline(name, unique_id) + def create_pipeline(self, name, unique_id, tags=[]): + pipeline = Pipeline(name, unique_id, tags=tags) self.pipelines[pipeline.pipeline_id] = pipeline return pipeline @@ -129,6 +129,9 @@ class DataPipelineBackend(BaseBackend): def get_pipeline(self, 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): pipeline = self.get_pipeline(pipeline_id) pipeline.set_pipeline_objects(pipeline_objects) diff --git a/moto/datapipeline/responses.py b/moto/datapipeline/responses.py index f3644fd5c..9250bce54 100644 --- a/moto/datapipeline/responses.py +++ b/moto/datapipeline/responses.py @@ -23,7 +23,8 @@ class DataPipelineResponse(BaseResponse): def create_pipeline(self): name = self.parameters['name'] unique_id = self.parameters['uniqueId'] - pipeline = self.datapipeline_backend.create_pipeline(name, unique_id) + tags = self.parameters.get('tags', []) + pipeline = self.datapipeline_backend.create_pipeline(name, unique_id, tags=tags) return json.dumps({ "pipelineId": pipeline.pipeline_id, }) @@ -48,6 +49,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): pipeline_id = self.parameters["pipelineId"] pipeline_objects = self.parameters["pipelineObjects"] diff --git a/tests/test_datapipeline/test_datapipeline.py b/tests/test_datapipeline/test_datapipeline.py index 520142c2e..490e3bfa4 100644 --- a/tests/test_datapipeline/test_datapipeline.py +++ b/tests/test_datapipeline/test_datapipeline.py @@ -136,6 +136,19 @@ def test_activate_pipeline(): 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 def test_listing_pipelines(): conn = boto.datapipeline.connect_to_region("us-west-2") From d414ecd2116a5a36d17bc0900488dd363bb9fd03 Mon Sep 17 00:00:00 2001 From: Andrii Piasetskyi Date: Fri, 21 Apr 2017 21:29:40 +0300 Subject: [PATCH 2/3] More consistent **kwargs --- moto/datapipeline/models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/moto/datapipeline/models.py b/moto/datapipeline/models.py index 19b73b5c9..e7abe439b 100644 --- a/moto/datapipeline/models.py +++ b/moto/datapipeline/models.py @@ -113,8 +113,8 @@ class DataPipelineBackend(BaseBackend): def __init__(self): self.pipelines = {} - def create_pipeline(self, name, unique_id, tags=[]): - pipeline = Pipeline(name, unique_id, tags=tags) + def create_pipeline(self, name, unique_id, **kwargs): + pipeline = Pipeline(name, unique_id, **kwargs) self.pipelines[pipeline.pipeline_id] = pipeline return pipeline From ee96c20034f1693521fbbc9927e860ad621a2d65 Mon Sep 17 00:00:00 2001 From: Andrii Piasetskyi Date: Sun, 23 Apr 2017 19:20:10 +0300 Subject: [PATCH 3/3] Added description and tags for create_pipeline --- moto/datapipeline/models.py | 2 +- moto/datapipeline/responses.py | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/moto/datapipeline/models.py b/moto/datapipeline/models.py index e7abe439b..20fc4b12b 100644 --- a/moto/datapipeline/models.py +++ b/moto/datapipeline/models.py @@ -26,7 +26,7 @@ class Pipeline(BaseModel): def __init__(self, name, unique_id, **kwargs): self.name = name self.unique_id = unique_id - self.description = "" + self.description = kwargs.get('description', '') self.pipeline_id = get_random_pipeline_id() self.creation_time = datetime.datetime.utcnow() self.objects = [] diff --git a/moto/datapipeline/responses.py b/moto/datapipeline/responses.py index 9250bce54..e75367c49 100644 --- a/moto/datapipeline/responses.py +++ b/moto/datapipeline/responses.py @@ -21,10 +21,11 @@ class DataPipelineResponse(BaseResponse): return datapipeline_backends[self.region] def create_pipeline(self): - name = self.parameters['name'] - unique_id = self.parameters['uniqueId'] + name = self.parameters.get('name') + unique_id = self.parameters.get('uniqueId') + description = self.parameters.get('description', '') tags = self.parameters.get('tags', []) - pipeline = self.datapipeline_backend.create_pipeline(name, unique_id, tags=tags) + pipeline = self.datapipeline_backend.create_pipeline(name, unique_id, description=description, tags=tags) return json.dumps({ "pipelineId": pipeline.pipeline_id, })