minimal_pipeline 0.1.4 → 0.1.5

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/minimal_pipeline/ec2.rb +13 -13
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d8a7beb45dfb7e0a657c774954190584c229ad24a18c2a9b01f826e7fa5a82ed
4
- data.tar.gz: 6c4e7688bbf2ae12adeb7f61efa5bea777a2309c8c7571fd2fd3ce40d3dd3a4b
3
+ metadata.gz: 3dae73303640fdffd715b9d7f67ea9b9f7ecd855dd0ef75d04e1d46eae07571e
4
+ data.tar.gz: d0c95d8d34c210e872ab6ae0fe93e8e56d5b3287229e56a04f82a97d690e007b
5
5
  SHA512:
6
- metadata.gz: 0a25fb8ad3faca11eb95fbf44a8adbd187a054462eaf67fcdedda03ecca563dbe78c7969df4def3cfa4cea17425c85cfcaaa1a4f8356df5c63286d4567446ea5
7
- data.tar.gz: 97a78ae2cd3bcc02c2e4a7f57eb2e83ea845dd082934150176e09e2c4f8937184b6cf44a793b143d54d952c1573e6a409c737c7b3cc09968583c477645c02591
6
+ metadata.gz: 4da91ca383ed709da049eb0b843bfd21066797ed5d0b5ce9126074547c88d03ec7755de2512a4bc51c235069b5b0b7fdb3ac519be99d12ca4fe120e84a58aea9
7
+ data.tar.gz: c2a9d49ce298448bf6a41131bd7394ee04c231fa0d5918eaf79af51bb6123c8576f372f1e625826175ae091d045388982eb0efed145b4dcd9f60e01a06f00a68
@@ -17,15 +17,10 @@ class MinimalPipeline
17
17
  class Ec2
18
18
  # Initializes a `Ec2` client
19
19
  # Requires environment variables `AWS_REGION` or `region` to be set.
20
- # Also requires `keystore_table` and `keystore_kms_id`
21
20
  def initialize
22
21
  raise 'You must set env variable AWS_REGION or region.' \
23
22
  if ENV['AWS_REGION'].nil? && ENV['region'].nil?
24
- raise 'You must set env variable keystore_kms_id.' \
25
- if ENV['inventory_store_key'].nil? && ENV['keystore_kms_id'].nil?
26
-
27
23
  @region = ENV['AWS_REGION'] || ENV['region']
28
- @kms_key_id = ENV['keystore_kms_id'] || ENV['inventory_store_key']
29
24
  @client = Aws::EC2::Client.new(region: 'us-east-1')
30
25
  end
31
26
 
@@ -43,15 +38,18 @@ class MinimalPipeline
43
38
  # Create a copy of an existing snapshot
44
39
  #
45
40
  # @param snapshot_id [String] The ID of the snapshot to copy
41
+ # @param kms_key_id [String] The ID of the KMS key. Omit to use default
46
42
  # @param encrypted [Boolean] Whether or not the volume is encrypted
47
43
  # @return [String] The ID of the newly created snapshot
48
- def copy_snapshot(snapshot_id, encrypted = true)
49
- new_snapshot_id = @client.copy_snapshot(
44
+ def copy_snapshot(snapshot_id, kms_key_id = nil, encrypted = true)
45
+ params = {
50
46
  encrypted: encrypted,
51
- kms_key_id: @kms_key_id,
52
47
  source_region: @region,
53
48
  source_snapshot_id: snapshot_id
54
- ).snapshot_id
49
+ }
50
+ params[:kms_key_id] = kms_key_id if kms_key_id
51
+
52
+ new_snapshot_id = @client.copy_snapshot(params).snapshot_id
55
53
 
56
54
  puts "new snapshot ID: #{new_snapshot_id}"
57
55
  wait_for_snapshot(new_snapshot_id)
@@ -76,8 +74,9 @@ class MinimalPipeline
76
74
  #
77
75
  # @param ami_id [String] The ID of the AMI to prepare
78
76
  # @param account_id [String] The ID of the AWS account to prepare
77
+ # @param kms_key_id [String] The ID of the KMS key. Omit to use default
79
78
  # @return [Array] Block device mappings discovered from the AMI
80
- def prepare_snapshots_for_account(ami_id, account_id)
79
+ def prepare_snapshots_for_account(ami_id, account_id, kms_key_id = nil)
81
80
  images = @client.describe_images(image_ids: [ami_id])
82
81
  block_device_mappings = images.images[0].block_device_mappings
83
82
  new_mappings = []
@@ -85,7 +84,7 @@ class MinimalPipeline
85
84
  block_device_mappings.each do |mapping|
86
85
  snapshot_id = mapping.ebs.snapshot_id
87
86
  puts "old snapshot ID: #{snapshot_id}"
88
- new_snapshot_id = copy_snapshot(snapshot_id)
87
+ new_snapshot_id = copy_snapshot(snapshot_id, kms_key_id)
89
88
  puts 'modifying new snapshot attribute'
90
89
  unlock_ami_for_account(new_snapshot_id, account_id)
91
90
  puts "new snapshot has been modified for the #{account_id} account"
@@ -118,13 +117,14 @@ class MinimalPipeline
118
117
  # Copy the snapshots from the original account into the new one
119
118
  #
120
119
  # @params block_device_mappings [Array] Block device mappings with snapshots
120
+ # @param kms_key_id [String] The ID of the KMS key. Omit to use default
121
121
  # @return [Array] Block device mappings with updated snapshot ids
122
- def copy_snapshots_in_new_account(block_device_mappings)
122
+ def copy_snapshots_in_new_account(block_device_mappings, kms_key_id = nil)
123
123
  new_mappings = []
124
124
 
125
125
  block_device_mappings.each do |mapping|
126
126
  snapshot_id = mapping['ebs']['snapshot_id']
127
- new_snapshot_id = copy_snapshot(snapshot_id)
127
+ new_snapshot_id = copy_snapshot(snapshot_id, kms_key_id)
128
128
  mapping['ebs']['snapshot_id'] = new_snapshot_id
129
129
  mapping['ebs'].delete('encrypted')
130
130
  new_mappings << mapping
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minimal_pipeline
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mayowa Aladeojebi
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-11-07 00:00:00.000000000 Z
12
+ date: 2018-11-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: aws-sdk