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 +5 -5
- data/.rubocop.yml +3 -0
- data/cucloud.gemspec +4 -2
- data/lib/cucloud/cfn_utils.rb +1 -1
- data/lib/cucloud/ec2_utils.rb +1 -26
- data/lib/cucloud/ecs_utils.rb +3 -2
- data/lib/cucloud/iam_utils.rb +32 -0
- data/lib/cucloud/rds_utils.rb +12 -9
- data/lib/cucloud/version.rb +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: b5aee54bb65f32dc13f0b9d961511edbdf326c88f31a340ecd58a9e379acee7f
|
4
|
+
data.tar.gz: e7bf555b4bf625422ce778e84a956b3f21402cc6f8593f4021ad0cac66600421
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d41d5d5953f4e758e345d16278eaeebe1ee4f4f581db42e4532e5f70e8fd99acfacdc579c20d737f9b868a1046c62ace7f485e8463d6dc7e079bf9fa7d8df5a9
|
7
|
+
data.tar.gz: f7699f0ac9b88324ab2637a738c9ee32c5e9f3d2c39fba193c43fa954a18f803bfddc1b42371ca3fabb2d6b811282cebab840e2751f9e5c93cd723a5f02e17b1
|
data/.rubocop.yml
CHANGED
data/cucloud.gemspec
CHANGED
@@ -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', '~>
|
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.
|
37
|
+
spec.add_development_dependency 'rubocop', '~> 0.49.0'
|
36
38
|
spec.add_development_dependency 'yard', '~> 0.9.0'
|
37
39
|
end
|
data/lib/cucloud/cfn_utils.rb
CHANGED
@@ -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
|
40
|
+
capabilities: %w[CAPABILITY_IAM CAPABILITY_NAMED_IAM])
|
41
41
|
|
42
42
|
raise UnknownServiceError unless response.successful?
|
43
43
|
|
data/lib/cucloud/ec2_utils.rb
CHANGED
@@ -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) &&
|
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
|
data/lib/cucloud/ecs_utils.rb
CHANGED
@@ -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
|
-
|
51
|
-
|
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
|
data/lib/cucloud/iam_utils.rb
CHANGED
@@ -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
|
data/lib/cucloud/rds_utils.rb
CHANGED
@@ -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
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
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
|
-
|
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
|
-
|
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
|
data/lib/cucloud/version.rb
CHANGED
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.
|
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:
|
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: '
|
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: '
|
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.
|
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.
|
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.
|
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
|