cucloud 0.7.7 → 0.8

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
- SHA1:
3
- metadata.gz: 77d0bd47f92d489422494497626323e67ee53c2f
4
- data.tar.gz: 1c2955b81fb3954b6fb7413906078b98ff318dfd
2
+ SHA256:
3
+ metadata.gz: b5aee54bb65f32dc13f0b9d961511edbdf326c88f31a340ecd58a9e379acee7f
4
+ data.tar.gz: e7bf555b4bf625422ce778e84a956b3f21402cc6f8593f4021ad0cac66600421
5
5
  SHA512:
6
- metadata.gz: 2ab4ce9d8144dff9d411c7bffb0f2160686fec8e5a58e848763cb0fd4cd55f9850a16176cfb80fb7bdc822cf1026a2c59fe695fbec694423b08fc92cae2abf49
7
- data.tar.gz: c9bea429650b6dc9f8934939fdceeb983f4f06d2cedc33846e900640163421d6d74d5efa280b5da1b826095bc7536431139d8e7f0c370489ae94ba665b2a3e79
6
+ metadata.gz: d41d5d5953f4e758e345d16278eaeebe1ee4f4f581db42e4532e5f70e8fd99acfacdc579c20d737f9b868a1046c62ace7f485e8463d6dc7e079bf9fa7d8df5a9
7
+ data.tar.gz: f7699f0ac9b88324ab2637a738c9ee32c5e9f3d2c39fba193c43fa954a18f803bfddc1b42371ca3fabb2d6b811282cebab840e2751f9e5c93cd723a5f02e17b1
@@ -22,3 +22,6 @@ Style/AccessorMethodName:
22
22
 
23
23
  Metrics/ClassLength:
24
24
  Max: 200
25
+
26
+ Metrics/BlockLength:
27
+ Enabled: false
@@ -1,5 +1,7 @@
1
1
  # coding: utf-8
2
+
2
3
  # rubocop:disable Style/WordArray
4
+
3
5
  lib = File.expand_path('../lib', __FILE__)
4
6
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
7
  require 'cucloud/version'
@@ -24,7 +26,7 @@ Gem::Specification.new do |spec|
24
26
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
25
27
  spec.require_paths = ['lib']
26
28
 
27
- spec.add_dependency 'aws-sdk', '~> 2'
29
+ spec.add_dependency 'aws-sdk', '~> 3'
28
30
  spec.add_dependency 'uuid', '~> 2.3'
29
31
  spec.add_dependency 'descriptive_statistics', '~> 2.5'
30
32
 
@@ -32,6 +34,6 @@ Gem::Specification.new do |spec|
32
34
  spec.add_development_dependency 'coveralls'
33
35
  spec.add_development_dependency 'rake', '~> 10.0'
34
36
  spec.add_development_dependency 'rspec', '~> 3.0'
35
- spec.add_development_dependency 'rubocop', '~> 0.40.0'
37
+ spec.add_development_dependency 'rubocop', '~> 0.49.0'
36
38
  spec.add_development_dependency 'yard', '~> 0.9.0'
37
39
  end
@@ -37,7 +37,7 @@ module Cucloud
37
37
 
38
38
  response = @cfn.send(action, stack_name: stack_name,
39
39
  template_body: template,
40
- capabilities: %w(CAPABILITY_IAM CAPABILITY_NAMED_IAM))
40
+ capabilities: %w[CAPABILITY_IAM CAPABILITY_NAMED_IAM])
41
41
 
42
42
  raise UnknownServiceError unless response.successful?
43
43
 
@@ -49,10 +49,6 @@ module Cucloud
49
49
  @ec2.start_instances(instance_ids: [instance])
50
50
  end
51
51
 
52
- # Set the name of the instance that will be displayed in the ec2 console
53
- def rename_instance(instance, name)
54
- end
55
-
56
52
  # reboot instance
57
53
  def reboot_instance(instance)
58
54
  i = get_instance(instance)
@@ -65,27 +61,6 @@ module Cucloud
65
61
  i.terminate
66
62
  end
67
63
 
68
- # Assoications an Elastic IP adress with a specific instance number.
69
- # @return association_id as a string in the form of eipassoc-569cd631.
70
- # This is the link between between the
71
- # elastic network interface and the elastic IP address.
72
- def associate_eip(instance, allocation_id)
73
- end
74
-
75
- # Create ec2 instance based on parameters provided. The function will pull
76
- # in default information from ?????.
77
- # @param options [hash] will be hash that will override the default
78
- def create_instance(options)
79
- end
80
-
81
- # Remove private AMI
82
- def deregister_image(image)
83
- end
84
-
85
- # Find ami based on a search of Name
86
- def find_ami(name)
87
- end
88
-
89
64
  # Based on tag name and value, return instances
90
65
  # @param tag_name [string] name of tag
91
66
  # @param tag_value [string] the value of the tag
@@ -201,7 +176,7 @@ module Cucloud
201
176
  tags << { key: 'Instance Name', value: instance_name }
202
177
  end
203
178
  volume.tags.each do |tag|
204
- if preserve_volume_tags.include?(tag.key) && !tags.any? { |tagitem| tagitem[:key] == tag.key }
179
+ if preserve_volume_tags.include?(tag.key) && tags.none? { |tagitem| tagitem[:key] == tag.key }
205
180
  tags << tag
206
181
  end
207
182
  end
@@ -47,8 +47,9 @@ module Cucloud
47
47
  # @return [Hash] An options hash that can be submitted via AWS sdk
48
48
  def generate_td_options_hash(task_definition)
49
49
  # make sure we got a valid launch config
50
- raise InvalidTaskDefinitionError.new,
51
- 'Provided task definition is not valid' unless task_definition.is_a? Aws::ECS::Types::TaskDefinition
50
+ unless task_definition.is_a? Aws::ECS::Types::TaskDefinition
51
+ raise InvalidTaskDefinitionError.new, 'Provided task definition is not valid'
52
+ end
52
53
 
53
54
  # convert to hash (required for aws sdk) and update necessary values
54
55
  options_hash = task_definition.to_h
@@ -168,5 +168,37 @@ module Cucloud
168
168
  cert = @iam.get_server_certificate(server_certificate_name: cert_name)
169
169
  cert.server_certificate.server_certificate_metadata.arn
170
170
  end
171
+
172
+ # Given an IAM credential rotate it. This functions assumes that one of the two access key
173
+ # slots is available. If ther is not an available slot an exception will be raised.
174
+ # @param creds_to_rotate [Hash<string>] IAM access_key_id and and secret_access_key to rotate
175
+ # @param time_to_wait_for_new_cred [Integer] How many seconds to wait for new key to become active
176
+ # @return [Hash<string>] new IAM access_key_id and and secret_access_key
177
+ def rotate_iam_credntial(creds_to_rotate, time_to_wait_for_new_cred = 15)
178
+ # Update AWS config to used the creddentials passed in
179
+ Aws.config.update(credentials: Aws::Credentials.new(creds_to_rotate[:aws_access_key_id],
180
+ creds_to_rotate[:aws_secret_access_key]))
181
+ # now grab the user name form the response
182
+ resp = @iam.get_access_key_last_used(access_key_id: creds_to_rotate[:aws_access_key_id])
183
+ user = resp.user_name
184
+
185
+ # create and store new keys
186
+ resp = @iam.create_access_key(user_name: user)
187
+ new_access_key_id = resp.access_key.access_key_id
188
+ new_secret_access_key = resp.access_key.secret_access_key
189
+
190
+ # give time for the new credentials to become active
191
+ sleep time_to_wait_for_new_cred
192
+
193
+ # use new credentials
194
+ Aws.config.update(credentials: Aws::Credentials.new(new_access_key_id,
195
+ new_secret_access_key))
196
+
197
+ # Delete the old keys with the new key
198
+ @iam.delete_access_key(user_name: user,
199
+ access_key_id: creds_to_rotate[:aws_access_key_id])
200
+
201
+ { aws_access_key_id: new_access_key_id, aws_secret_access_key: new_secret_access_key }
202
+ end
171
203
  end
172
204
  end
@@ -32,18 +32,21 @@ module Cucloud
32
32
  # @param db_instance_identifier [String] RDS instance identifier
33
33
  # @param db_snapshot_identifier [String] Name for final snapshot, default is nil
34
34
  def delete_db_instance(db_instance_identifier, db_snapshot_identifier = nil)
35
- if does_db_exist?(db_instance_identifier)
36
- if db_snapshot_identifier.nil?
37
- @rds.delete_db_instance(db_instance_identifier: db_instance_identifier, skip_final_snapshot: true)
38
- else
39
- @rds.delete_db_instance(db_instance_identifier: db_instance_identifier,
40
- final_db_snapshot_identifier: db_snapshot_identifier)
41
- end
35
+ unless does_db_exist?(db_instance_identifier)
36
+ raise Aws::RDS::Errors::DBInstanceNotFound.new(
37
+ db_instance_identifier,
38
+ ''
39
+ )
40
+ end
42
41
 
43
- @rds.wait_until(:db_instance_deleted, db_instance_identifier: db_instance_identifier)
42
+ if db_snapshot_identifier.nil?
43
+ @rds.delete_db_instance(db_instance_identifier: db_instance_identifier, skip_final_snapshot: true)
44
44
  else
45
- raise Aws::RDS::Errors::DBInstanceNotFound.new(db_instance_identifier, '')
45
+ @rds.delete_db_instance(db_instance_identifier: db_instance_identifier,
46
+ final_db_snapshot_identifier: db_snapshot_identifier)
46
47
  end
48
+
49
+ @rds.wait_until(:db_instance_deleted, db_instance_identifier: db_instance_identifier)
47
50
  end
48
51
 
49
52
  # Modify the security groups for a RDS instance
@@ -1,5 +1,5 @@
1
1
  module Cucloud
2
2
  # Disable mutable constant warning - freezing this oddly breaks bundler
3
3
  # rubocop:disable Style/MutableConstant
4
- VERSION = '0.7.7'
4
+ VERSION = '0.8'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cucloud
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.7
4
+ version: '0.8'
5
5
  platform: ruby
6
6
  authors:
7
7
  - sbower
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2017-04-06 00:00:00.000000000 Z
13
+ date: 2018-03-15 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: aws-sdk
@@ -18,14 +18,14 @@ dependencies:
18
18
  requirements:
19
19
  - - "~>"
20
20
  - !ruby/object:Gem::Version
21
- version: '2'
21
+ version: '3'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - "~>"
27
27
  - !ruby/object:Gem::Version
28
- version: '2'
28
+ version: '3'
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: uuid
31
31
  requirement: !ruby/object:Gem::Requirement
@@ -116,14 +116,14 @@ dependencies:
116
116
  requirements:
117
117
  - - "~>"
118
118
  - !ruby/object:Gem::Version
119
- version: 0.40.0
119
+ version: 0.49.0
120
120
  type: :development
121
121
  prerelease: false
122
122
  version_requirements: !ruby/object:Gem::Requirement
123
123
  requirements:
124
124
  - - "~>"
125
125
  - !ruby/object:Gem::Version
126
- version: 0.40.0
126
+ version: 0.49.0
127
127
  - !ruby/object:Gem::Dependency
128
128
  name: yard
129
129
  requirement: !ruby/object:Gem::Requirement
@@ -195,7 +195,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
195
195
  version: '0'
196
196
  requirements: []
197
197
  rubyforge_project:
198
- rubygems_version: 2.4.5
198
+ rubygems_version: 2.7.6
199
199
  signing_key:
200
200
  specification_version: 4
201
201
  summary: The cucloud module is intended to serve as a lightweight wrapper around the