aw_datapipe 0.2.4 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 96dc0983a35a311d5063aa30cd7bc4f6baf92850
4
- data.tar.gz: 463cd625f2bfcb21bc083012b1552eec143126ce
3
+ metadata.gz: bfef690d9ba54e7838eb2d46b45face330762037
4
+ data.tar.gz: 5cbba46fc31a079b9b4743b9a0439fb35259efbf
5
5
  SHA512:
6
- metadata.gz: 9b186202282082464ea94090d938cd2ad0289531849cd52fe765f5229b9c3681ed2033b0452148b36f662dd2fa05bc2c5318bbf734102168b48442d9011e8f28
7
- data.tar.gz: a196a481a168dcf3d15caba0c3c891cc544b8c5636cab994bb85eeaf0cc060cfcf52938236cf423c4304814fe7af1a6aee70332f4aebadbff8a101618e765e80
6
+ metadata.gz: 2f41ad60618c2def93ff91fd43b05d6163a135ba037b7e4afa782f16f0e886433a71311df35696eed1f4221057a4e70308b0e15061b51012a0674e621e28b710
7
+ data.tar.gz: 040f2327a07d062e3a6c47bef7770e8d8b6e9db2be690a5840631e9d8548172c3dbd3914abf34595acd9df7a90cf70303717d6e07ff30032dfef5b0eeee2c14d
data/CHANGELOG.md CHANGED
@@ -4,7 +4,6 @@
4
4
  - Updating.
5
5
  - http://stackoverflow.com/questions/31188739/how-to-automate-the-updating-editing-of-amazon-data-pipeline
6
6
  - http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-manage-pipeline-modify-console.html
7
- - Add DSL using clean room.
8
7
  - Add Thor based utility instead of console for downloads.
9
8
  - Generate separate SQL script files.
10
9
  - Codecov.
@@ -12,6 +11,12 @@
12
11
  - Rubydocs.
13
12
  - AWS labs examples converted to DSL.
14
13
 
14
+ ## 0.3.0 - 2018-06-14
15
+ - Use AWS SDK v3.
16
+ - Separate appending activities from initializing pipeline with config.
17
+ - Add helper methods to provide a more hierarchical builder API.
18
+ - Provide default settings for a pipeline EC2 resource.
19
+
15
20
  ## 0.2.4 - 2017-05-24
16
21
  - Add ShellCommandActivity optional parameters.
17
22
 
data/aw_datapipe.gemspec CHANGED
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.required_ruby_version = '>= 2.2.2'
25
25
 
26
26
  spec.add_dependency("activesupport", ">= 3")
27
- spec.add_dependency("aws-sdk", ['~> 2'])
27
+ spec.add_dependency("aws-sdk-datapipeline", '~> 1')
28
28
 
29
29
  spec.add_development_dependency "bundler", "~> 1.14"
30
30
  spec.add_development_dependency "rake", "~> 10.0"
@@ -9,20 +9,64 @@ module AwDatapipe
9
9
 
10
10
  # objects [Array]
11
11
  def initialize(objects, parameter_metadata, parameter_values)
12
- objects.each { |object| object.pipeline = self }
13
- @objects ||= ObjectHash.new(*objects)
12
+ @objects = ObjectHash.new
13
+ append_objects_with_dependencies(objects)
14
14
  @parameter_metadata, @parameter_values = parameter_metadata, parameter_values
15
+ yield(self) if block_given?
15
16
  end
16
17
 
17
18
  def self.build(config, activities, parameter_metadata, parameter_values)
18
- objects = [config, *activities].map { |obj| obj.dependencies.append(obj) }.flatten
19
- new(objects, parameter_metadata, parameter_values)
19
+ new([config], parameter_metadata, parameter_values) do |pipeline|
20
+ pipeline.append_objects_with_dependencies(activities)
21
+ end
22
+ end
23
+
24
+ # @return [PipelineObject] appended object
25
+ def append_object(object)
26
+ object.pipeline = self
27
+ objects[object.id] = object
28
+ end
29
+
30
+ def append_object_with_dependencies(object)
31
+ [*object.dependencies, object].each(&method(:append_object))
32
+ end
33
+
34
+ # @return [Pipeline] self
35
+ def append_objects_with_dependencies(objects)
36
+ objects.each(&method(:append_object_with_dependencies))
37
+ self
20
38
  end
21
39
 
22
40
  def configuration
23
41
  objects.fetch(:default)
24
42
  end
25
43
 
44
+ def csv_data_format(params)
45
+ append_object CsvDataFormat.build(params)
46
+ end
47
+
48
+ # @param [Hash] params Various required and optional parameters.
49
+ # @option params [String] :name (default: 'Ec2Instance')
50
+ # @option params [String] :instance_type (default: 't1.micro')
51
+ # @option params [String] :subnet_id
52
+ # @option params [String] :security_group_ids
53
+ # @option params [String] :action_on_task_failure (default: 'terminate')
54
+ # @option params [String] :terminate_after (default: '2 Hours')
55
+ #
56
+ # @return [Ec2Resource]
57
+ def ec2_resource(params)
58
+ append_object Ec2Resource.build(
59
+ params.reverse_merge(name: 'Ec2Instance', instance_type: 't1.micro', action_on_task_failure: 'terminate', terminate_after: '2 Hours'))
60
+ end
61
+
62
+ def jdbc_database(params)
63
+ append_object JdbcDatabase.build(params)
64
+ end
65
+
66
+ def s3_data_node(params)
67
+ append_object S3DataNode.build(params)
68
+ end
69
+
26
70
  def referenced_object_ids
27
71
  referenced_objects.map(&:id) << :default
28
72
  end
@@ -59,7 +59,16 @@ module AwDatapipe
59
59
  Configuration = PipelineObject.new(:failure_and_rerun_mode, :pipeline_log_uri, :resource_role, :role, :schedule, :schedule_type)
60
60
  Schedule = PipelineObject.new(:period, :start_date_time)
61
61
 
62
- Ec2Resource = PipelineObject.new(:action_on_task_failure, :instance_type, :security_group_ids, :subnet_id, :terminate_after)
62
+ Ec2Resource = PipelineObject.new(:action_on_task_failure, :instance_type, :security_group_ids, :subnet_id, :terminate_after) do
63
+ def copy_activity(params)
64
+ pipeline.append_object CopyActivity.build(params.merge(runs_on: self))
65
+ end
66
+
67
+ def shell_command_activity(params)
68
+ pipeline.append_object ShellCommandActivity.build(params.merge(runs_on: self))
69
+ end
70
+ end
71
+
63
72
  S3DataNode = PipelineObject.new(:directory_path, :data_format, :file_path)
64
73
  CsvDataFormat = PipelineObject.new(:column) do
65
74
  def type
@@ -68,7 +77,12 @@ module AwDatapipe
68
77
  end
69
78
  ShellCommandActivity = PipelineObject.new(:input, :output, :runs_on, :command, :script_argument, :script_uri, :stage)
70
79
 
71
- JdbcDatabase = PipelineObject.new(:_password, :connection_string, :jdbc_driver_class, :username)
80
+ JdbcDatabase = PipelineObject.new(:_password, :connection_string, :jdbc_driver_class, :username) do
81
+ def sql_data_node(params)
82
+ pipeline.append_object SqlDataNode.build(params.merge(database: self))
83
+ end
84
+ end
85
+
72
86
  SqlDataNode = PipelineObject.new(:database, :select_query, :table)
73
87
  CopyActivity = PipelineObject.new(:input, :output, :runs_on)
74
88
 
@@ -1,3 +1,3 @@
1
1
  module AwDatapipe
2
- VERSION = "0.2.4"
2
+ VERSION = '0.3.0'
3
3
  end
data/lib/aw_datapipe.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require 'active_support/core_ext/module/delegation'
2
2
  require 'active_support/inflector' # String#underscore
3
- require 'aws-sdk'
3
+ require 'aws-sdk-datapipeline'
4
4
 
5
5
  require 'aw_datapipe/parameter_metadata'
6
6
  require 'aw_datapipe/pipeline'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aw_datapipe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piers Chambers
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-05-24 00:00:00.000000000 Z
11
+ date: 2018-06-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -25,19 +25,19 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3'
27
27
  - !ruby/object:Gem::Dependency
28
- name: aws-sdk
28
+ name: aws-sdk-datapipeline
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '2'
33
+ version: '1'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '2'
40
+ version: '1'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -127,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
127
127
  version: '0'
128
128
  requirements: []
129
129
  rubyforge_project:
130
- rubygems_version: 2.6.11
130
+ rubygems_version: 2.4.8
131
131
  signing_key:
132
132
  specification_version: 4
133
133
  summary: Unofficial ruby wrapper for the AWS SDK Data Pipeline API.