cucloud 0.7.7 → 0.8

Sign up to get free protection for your applications and to get access to all the features.
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