fog-openstack 0.1.9 → 0.1.10

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
  SHA1:
3
- metadata.gz: bdbf12ad9b46bc13d3bbea77d69676b06d29a3d2
4
- data.tar.gz: 5f71faf886da920a9703b1baee798aeac24ac412
3
+ metadata.gz: e9eaa14481a05674d47cb4442aa19d6339427ed1
4
+ data.tar.gz: b895660e192fd3313cc67b6c7696b25ef3c1caef
5
5
  SHA512:
6
- metadata.gz: 1aed7613af33f4670f62e378e570c81dc3cdb03192715180f0a181f31eace57b7fed8d8452dd31a66cf0e7c690df1b48a12732b25f7c7e291062e3b13f780c8d
7
- data.tar.gz: f4b581e2c3d3d1b9994eda1c0a6adca2ea84dd13378e141e57a4cc876f338c18892b9a69fcdd4c1fc926e70864c73265d632bdc98d3bfd54c6fe951c3ca5671d
6
+ metadata.gz: 8e20858aaa8a42796e3432f1724d8b49868f492c145657a780ee96782157dafe390a87e3457cf3e8569abe6fd0202c46d786399d11216bc8bd1f1e2ac5bc5e08
7
+ data.tar.gz: 9db350b24e7d90f38a2f973d4c554c6cba462f8a2b3adcb6e0a4bb81aa9ef3940ec1617481263cf2a51af5bad1746bf3054e2b3d36b0fe6739ffdd8e684a88a4
@@ -52,6 +52,8 @@ module Fog
52
52
  collection :snapshots
53
53
  model :host
54
54
  collection :hosts
55
+ model :server_group
56
+ collection :server_groups
55
57
 
56
58
  ## REQUESTS
57
59
  #
@@ -225,6 +227,12 @@ module Fog
225
227
  request :list_zones_detailed
226
228
  request :list_availability_zones
227
229
 
230
+ # Server Group
231
+ request :list_server_groups
232
+ request :get_server_group
233
+ request :create_server_group
234
+ request :delete_server_group
235
+
228
236
  class Mock
229
237
  attr_reader :auth_token
230
238
  attr_reader :auth_token_expiration
@@ -284,6 +292,7 @@ module Fog
284
292
  ],
285
293
  },
286
294
  },
295
+ :server_groups => {},
287
296
  :server_security_group_map => {},
288
297
  :addresses => {},
289
298
  :quota => {
@@ -0,0 +1,22 @@
1
+ require 'fog/openstack/models/model'
2
+
3
+ module Fog
4
+ module Compute
5
+ class OpenStack
6
+ class ServerGroup < Fog::OpenStack::Model
7
+ identity :id
8
+ attribute :name
9
+ attribute :policies, :type => :array
10
+ attribute :members
11
+
12
+ VALID_SERVER_GROUP_POLICIES = ['affinity', 'anti-affinity'].freeze
13
+
14
+ def self.validate_server_group_policy(policy)
15
+ fail ArgumentError, "#{policy} is an invalid policy... must use one of #{VALID_SERVER_GROUP_POLICIES.join(', ')}" \
16
+ unless VALID_SERVER_GROUP_POLICIES.include? policy
17
+ true
18
+ end
19
+ end # class ServerGroup
20
+ end # class OpenStack
21
+ end # module Compute
22
+ end # module Fog
@@ -0,0 +1,28 @@
1
+ require 'fog/openstack/models/collection'
2
+ require 'fog/openstack/models/compute/server_group'
3
+
4
+ module Fog
5
+ module Compute
6
+ class OpenStack
7
+ class ServerGroups < Fog::OpenStack::Collection
8
+ model Fog::Compute::OpenStack::ServerGroup
9
+
10
+ def all(options = {})
11
+ load_response(service.list_server_groups(options), 'server_groups')
12
+ end
13
+
14
+ def get(server_group_id)
15
+ if server_group_id
16
+ new(service.get_server_group(server_group_id).body['server_group'])
17
+ end
18
+ rescue Fog::Compute::OpenStack::NotFound
19
+ nil
20
+ end
21
+
22
+ def create(*args)
23
+ new(service.create_server_group(*args).body['server_group'])
24
+ end
25
+ end # class ServerGroups
26
+ end # class OpenStack
27
+ end # module Compute
28
+ end # module Fog
@@ -169,6 +169,12 @@ module Fog
169
169
 
170
170
  self.data[:last_modified][:servers][server_id] = Time.now
171
171
  self.data[:servers][server_id] = mock_data
172
+
173
+ if options['os:scheduler_hints'] && options['os:scheduler_hints']['group']
174
+ group = self.data[:server_groups][options['os:scheduler_hints']['group']]
175
+ group[:members] << server_id if group
176
+ end
177
+
172
178
  if options['return_reservation_id'] == 'True' then
173
179
  response.body = response_data
174
180
  else
@@ -0,0 +1,31 @@
1
+ module Fog
2
+ module Compute
3
+ class OpenStack
4
+ class Real
5
+ def create_server_group(name, policy)
6
+ Fog::Compute::OpenStack::ServerGroup.validate_server_group_policy policy
7
+
8
+ body = { 'server_group' => {
9
+ 'name' => name,
10
+ 'policies' => [policy]
11
+ }}
12
+ request(
13
+ :body => Fog::JSON.encode(body),
14
+ :expects => 200,
15
+ :method => 'POST',
16
+ :path => 'os-server-groups'
17
+ )
18
+ end
19
+ end
20
+
21
+ class Mock
22
+ def create_server_group(name, policy)
23
+ Fog::Compute::OpenStack::ServerGroup.validate_server_group_policy policy
24
+ id = SecureRandom.uuid
25
+ data[:server_groups][id] = { name: name, policies: [policy], members: []}
26
+ get_server_group id
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -22,6 +22,8 @@ module Fog
22
22
  self.data[:last_modified][:servers].delete(server_id)
23
23
  self.data[:servers].delete(server_id)
24
24
  response.status = 204
25
+ group_id, = data[:server_groups].find { |_id, grp| grp[:members].include?(server_id) }
26
+ data[:server_groups][group_id][:members] -= [server_id] if group_id
25
27
  end
26
28
  response
27
29
  else
@@ -0,0 +1,28 @@
1
+ module Fog
2
+ module Compute
3
+ class OpenStack
4
+ class Real
5
+ def delete_server_group(group_id)
6
+ request(
7
+ :expects => 204,
8
+ :method => 'DELETE',
9
+ :path => "os-server-groups/#{group_id}"
10
+ )
11
+ end
12
+ end
13
+
14
+ class Mock
15
+ def delete_server_group(group_id)
16
+ response = Excon::Response.new
17
+ response.status = data[:server_groups].delete(group_id) ? 204 : 404
18
+ response.headers = {
19
+ "Content-Type" => "text/html; charset=UTF-8",
20
+ "Content-Length" => "0",
21
+ "Date" => Date.new
22
+ }
23
+ response
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,38 @@
1
+ module Fog
2
+ module Compute
3
+ class OpenStack
4
+ class Real
5
+ def get_server_group(group_id)
6
+ request(
7
+ :expects => 200,
8
+ :method => 'GET',
9
+ :path => "/os-server-groups/#{group_id}"
10
+ )
11
+ end
12
+ end
13
+
14
+ class Mock
15
+ def get_server_group(group_id)
16
+ grp = data[:server_groups][group_id]
17
+ response = Excon::Response.new
18
+ response.status = 200
19
+ response.headers = {
20
+ "Content-Type" => "text/html; charset=UTF-8",
21
+ "Content-Length" => "0",
22
+ "Date" => Date.new
23
+ }
24
+ response.body = { 'server_group' => {
25
+ 'id' => group_id,
26
+ 'name' => grp[:name],
27
+ 'policies' => grp[:policies],
28
+ 'members' => grp[:members],
29
+ 'metadata' => {},
30
+ 'project_id' => 'test-project',
31
+ 'user_id' => 'test-user'
32
+ } }
33
+ response
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,28 @@
1
+ module Fog
2
+ module Compute
3
+ class OpenStack
4
+ class Real
5
+ def list_server_groups(options = {})
6
+ request(
7
+ :expects => 200,
8
+ :method => 'GET',
9
+ :path => 'os-server-groups',
10
+ :query => options
11
+ )
12
+ end
13
+ end
14
+
15
+ class Mock
16
+ def list_server_groups(_options = {})
17
+ groups = data[:server_groups].map do |id, group|
18
+ group.merge('id' => id, 'project_id' => 'test-project', 'user_id' => 'test-user')
19
+ end
20
+ Excon::Response.new(
21
+ :body => { 'server_groups' => groups },
22
+ :status => 200
23
+ )
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -1,5 +1,5 @@
1
1
  module Fog
2
2
  module Openstack
3
- VERSION = "0.1.9"
3
+ VERSION = "0.1.10"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fog-openstack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Darby
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-07-27 00:00:00.000000000 Z
11
+ date: 2016-08-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fog-core
@@ -282,6 +282,8 @@ files:
282
282
  - lib/fog/openstack/models/compute/security_group_rules.rb
283
283
  - lib/fog/openstack/models/compute/security_groups.rb
284
284
  - lib/fog/openstack/models/compute/server.rb
285
+ - lib/fog/openstack/models/compute/server_group.rb
286
+ - lib/fog/openstack/models/compute/server_groups.rb
285
287
  - lib/fog/openstack/models/compute/servers.rb
286
288
  - lib/fog/openstack/models/compute/service.rb
287
289
  - lib/fog/openstack/models/compute/services.rb
@@ -484,6 +486,7 @@ files:
484
486
  - lib/fog/openstack/requests/compute/create_security_group.rb
485
487
  - lib/fog/openstack/requests/compute/create_security_group_rule.rb
486
488
  - lib/fog/openstack/requests/compute/create_server.rb
489
+ - lib/fog/openstack/requests/compute/create_server_group.rb
487
490
  - lib/fog/openstack/requests/compute/create_snapshot.rb
488
491
  - lib/fog/openstack/requests/compute/create_volume.rb
489
492
  - lib/fog/openstack/requests/compute/delete_aggregate.rb
@@ -496,6 +499,7 @@ files:
496
499
  - lib/fog/openstack/requests/compute/delete_security_group.rb
497
500
  - lib/fog/openstack/requests/compute/delete_security_group_rule.rb
498
501
  - lib/fog/openstack/requests/compute/delete_server.rb
502
+ - lib/fog/openstack/requests/compute/delete_server_group.rb
499
503
  - lib/fog/openstack/requests/compute/delete_service.rb
500
504
  - lib/fog/openstack/requests/compute/delete_snapshot.rb
501
505
  - lib/fog/openstack/requests/compute/delete_volume.rb
@@ -521,6 +525,7 @@ files:
521
525
  - lib/fog/openstack/requests/compute/get_security_group.rb
522
526
  - lib/fog/openstack/requests/compute/get_security_group_rule.rb
523
527
  - lib/fog/openstack/requests/compute/get_server_details.rb
528
+ - lib/fog/openstack/requests/compute/get_server_group.rb
524
529
  - lib/fog/openstack/requests/compute/get_server_password.rb
525
530
  - lib/fog/openstack/requests/compute/get_server_volumes.rb
526
531
  - lib/fog/openstack/requests/compute/get_snapshot_details.rb
@@ -542,6 +547,7 @@ files:
542
547
  - lib/fog/openstack/requests/compute/list_private_addresses.rb
543
548
  - lib/fog/openstack/requests/compute/list_public_addresses.rb
544
549
  - lib/fog/openstack/requests/compute/list_security_groups.rb
550
+ - lib/fog/openstack/requests/compute/list_server_groups.rb
545
551
  - lib/fog/openstack/requests/compute/list_servers.rb
546
552
  - lib/fog/openstack/requests/compute/list_servers_detail.rb
547
553
  - lib/fog/openstack/requests/compute/list_services.rb
@@ -1109,7 +1115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1109
1115
  version: '0'
1110
1116
  requirements: []
1111
1117
  rubyforge_project:
1112
- rubygems_version: 2.5.1
1118
+ rubygems_version: 2.2.2
1113
1119
  signing_key:
1114
1120
  specification_version: 4
1115
1121
  summary: OpenStack fog provider gem