avst-cloud 0.1.37 → 0.1.38

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
  SHA256:
3
- metadata.gz: a73c8538a7abe6b36b8c7a2e98501cf4981a5e190d14156686e540f6799e55b0
4
- data.tar.gz: 6d3a1a20b949bc3e242a4132ff4aac6bb324bb765f81f435d17c7181eefae096
3
+ metadata.gz: ce616eddab00f500b04085c616b6cc4415b319dac8cf1a29973460fae64fe905
4
+ data.tar.gz: 685fa1a66ec43f53726f9208ceb480633f94980d6b3039514407f232715628a1
5
5
  SHA512:
6
- metadata.gz: 6d775694903b35230782d9565126ac767bf7c64117b1262b3d45604fcea91dbf39f9e013a818339d0c809d37c92deb6cff88ed17dd1d09a81e7db2046a757ba0
7
- data.tar.gz: 49009280fd81266dc2fce02d0813cb8c9b942e3c8e59047714ecb1909dfddf5ec5b5ee1c2bce3af70edcb8d78b2a925bc2ff83eb06f8ce58acc83dca2a70edbe
6
+ metadata.gz: 53d7bd60378e3e1114ff1ed000efa78b53acd75e73390496b05d41d8ae7f7a24a4158640c39c60bbb573a25e911725d40764c213d9c35b7749db46a3c2bef1da
7
+ data.tar.gz: 0a274f0af0b36dd8f2a9a4e65913849366d3a6f33b671baae484cb0de99f4c2c9ac9cd44382673f40f6403e26ac7a28d02cfc03cf4e1f981c4a642896a9c999d
@@ -1,4 +1,8 @@
1
1
  language: ruby
2
+ before_install:
3
+ # https://github.com/travis-ci/travis-rubies/issues/57#issuecomment-458981237
4
+ - "find /home/travis/.rvm/rubies -wholename '*default/bundler-*.gemspec' -delete"
5
+ - gem install bundler --version 1.17.3
2
6
  notifications:
3
7
  email: false
4
8
  hipchat:
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "avst-cloud"
7
- spec.version = '0.1.37'
7
+ spec.version = '0.1.38'
8
8
  spec.authors = ["Martin Brehovsky", "Jon Bevan", "Matthew Hope"]
9
9
  spec.email = ["mbrehovsky@adaptavist.com", "jbevan@adaptavist.com", "mhope@adaptavist.com"]
10
10
  spec.summary = %q{Automated creation, bootstrapping and provisioning of servers }
@@ -39,7 +39,7 @@ platform = nil # defaults to Linux
39
39
  server_name = "hostname1"
40
40
  user = "ubuntu"
41
41
  # Must comply to Azure pass guidelines
42
- password = "superSecretUbuntuPass111_@"
42
+ password = ""
43
43
  location = nil # Will default to West Europe
44
44
  resource_group = "new_resource_group" # if RG does not exists it will create it
45
45
  vm_size = nil # Defaults to Basic_A0
@@ -33,7 +33,7 @@ module AvstCloud
33
33
  AvstCloud::AwsServer.new(server, server_name, server.public_ip_address, root_user, root_password)
34
34
  end
35
35
 
36
- def create_server(server_name, flavour, os, key_name, ssh_key, subnet_id, security_group_ids, ebs_size, hdd_device_path, ami_image_id, availability_zone, additional_hdds={}, vpc=nil, created_by=nil, custom_tags={}, root_username=nil)
36
+ def create_server(server_name, flavour, os, key_name, ssh_key, subnet_id, security_group_ids, ebs_size, hdd_device_path, ami_image_id, availability_zone, additional_hdds={}, vpc=nil, created_by=nil, custom_tags={}, root_username=nil, create_elastic_ip=false)
37
37
  # Permit named instances from DEFAULT_FLAVOURS
38
38
  flavour = flavour || "t2.micro"
39
39
  os = os || "ubuntu-14"
@@ -122,6 +122,7 @@ module AvstCloud
122
122
  tags['created_by'] = created_by
123
123
  end
124
124
  tags.merge!(custom_tags)
125
+
125
126
  # create server
126
127
  server = connect.servers.create :tags => tags,
127
128
  :flavor_id => flavour,
@@ -133,7 +134,6 @@ module AvstCloud
133
134
  :availability_zone => availability_zone,
134
135
  :block_device_mapping => create_ebs_volume,
135
136
  :vpc => vpc
136
-
137
137
 
138
138
  result_server = AvstCloud::AwsServer.new(server, server_name, nil, root_user, ssh_key)
139
139
  # result_server.logger = logger
@@ -143,6 +143,27 @@ module AvstCloud
143
143
 
144
144
  logger.debug "[DONE]\n\n"
145
145
 
146
+ # create Elastic IP Address if required
147
+ if create_elastic_ip
148
+ logger.debug("Attempting to create elastic IP address")
149
+ elastic_ip = connect.allocate_address("vpc").body
150
+ elastic_ip_address = elastic_ip['publicIp']
151
+ # if we have a server id and an Elastic public IP attempt to join the two togehter
152
+ if server.id and elastic_ip_address
153
+ logger.debug ("Elastic IP #{elastic_ip_address} created, attempting to allocate to server")
154
+ connect.associate_address(server.id, elastic_ip_address)
155
+ # reacquire server object as IP has, probably, changed
156
+ server = find_fog_server(server_name)
157
+
158
+ # create tag on the Elastic IP
159
+ # TODO: add ability for other tags to be defined by the user
160
+ logger.debug("Creating tags on Elastic IP Address #{elastic_ip}\n\n")
161
+ connect.tags.create(:resource_id => elastic_ip['allocationId'], :key => "Name", :value => server_name)
162
+ else
163
+ logger.warn("Elastic IP creation failed, proceeding with non Elastic IP\n\n")
164
+ end
165
+ end
166
+
146
167
  logger.debug "The server has been successfully created, to login onto the server:\n"
147
168
  logger.debug "\t ssh -i #{ssh_key} #{root_user}@#{server.public_ip_address}\n"
148
169
  if create_ebs_volume
@@ -201,6 +222,18 @@ module AvstCloud
201
222
  servers.first
202
223
  end
203
224
 
225
+ def delete_elastic_ip(ip_address)
226
+ address = is_elastic_ip(ip_address)
227
+ if address
228
+ logger.debug "Found Elastic IP #{address.public_ip}, attempting to delete"
229
+ logger.debug "Elastic IP #{ip_address} deleted" if address.destroy
230
+ return true
231
+ else
232
+ logger.debug "IP #{ip_address} does NOT appear to be an Elastic IP"
233
+ end
234
+ return false
235
+ end
236
+
204
237
  private
205
238
  def user_from_os(os)
206
239
  case os.to_s
@@ -233,5 +266,14 @@ module AvstCloud
233
266
  def all_named_servers(server_name)
234
267
  connect.servers.all({'tag:Name' => server_name})
235
268
  end
269
+
270
+ def is_elastic_ip(ip_address)
271
+ connect.addresses.each do |address|
272
+ if address.public_ip == ip_address
273
+ return address
274
+ end
275
+ end
276
+ return false
277
+ end
236
278
  end
237
279
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avst-cloud
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.37
4
+ version: 0.1.38
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Brehovsky
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2019-07-18 00:00:00.000000000 Z
13
+ date: 2020-03-13 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler