fog-openstack 0.1.12 → 0.1.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +0 -1
- data/README.md +2 -2
- data/Rakefile +1 -8
- data/docs/orchestration.md +19 -0
- data/fog-openstack.gemspec +2 -1
- data/gemfiles/Gemfile-1.9 +2 -1
- data/lib/fog/dns/openstack/v2.rb +20 -0
- data/lib/fog/dns/openstack/v2/models/recordset.rb +55 -0
- data/lib/fog/dns/openstack/v2/models/recordsets.rb +30 -0
- data/lib/fog/dns/openstack/v2/models/zone.rb +50 -0
- data/lib/fog/dns/openstack/v2/models/zones.rb +30 -0
- data/lib/fog/dns/openstack/v2/requests/delete_recordset.rb +5 -3
- data/lib/fog/dns/openstack/v2/requests/delete_zone.rb +5 -3
- data/lib/fog/dns/openstack/v2/requests/get_quota.rb +4 -2
- data/lib/fog/dns/openstack/v2/requests/get_recordset.rb +4 -2
- data/lib/fog/dns/openstack/v2/requests/get_zone.rb +5 -3
- data/lib/fog/dns/openstack/v2/requests/list_recordsets.rb +29 -5
- data/lib/fog/dns/openstack/v2/requests/list_zones.rb +4 -1
- data/lib/fog/dns/openstack/v2/requests/update_quota.rb +4 -3
- data/lib/fog/dns/openstack/v2/requests/update_recordset.rb +4 -1
- data/lib/fog/dns/openstack/v2/requests/update_zone.rb +4 -1
- data/lib/fog/introspection/openstack.rb +3 -8
- data/lib/fog/monitoring/openstack.rb +7 -1
- data/lib/fog/monitoring/openstack/models/alarm.rb +0 -1
- data/lib/fog/monitoring/openstack/models/alarm_definition.rb +1 -0
- data/lib/fog/monitoring/openstack/models/dimension_value.rb +19 -0
- data/lib/fog/monitoring/openstack/models/dimension_values.rb +16 -0
- data/lib/fog/monitoring/openstack/models/metrics.rb +8 -0
- data/lib/fog/monitoring/openstack/models/notification_method.rb +8 -1
- data/lib/fog/monitoring/openstack/models/notification_methods.rb +4 -0
- data/lib/fog/monitoring/openstack/requests/list_dimension_values.rb +21 -0
- data/lib/fog/monitoring/openstack/requests/list_notification_method_types.rb +21 -0
- data/lib/fog/monitoring/openstack/requests/{update_notification_method.rb → patch_notification_method.rb} +1 -1
- data/lib/fog/monitoring/openstack/requests/put_notification_method.rb +19 -0
- data/lib/fog/network/openstack.rb +12 -8
- data/lib/fog/network/openstack/requests/create_network.rb +54 -63
- data/lib/fog/network/openstack/requests/update_network.rb +27 -8
- data/lib/fog/openstack.rb +44 -28
- data/lib/fog/openstack/version.rb +1 -1
- data/lib/fog/orchestration/openstack.rb +1 -0
- data/lib/fog/orchestration/openstack/models/stack.rb +4 -0
- data/lib/fog/orchestration/openstack/requests/cancel_update.rb +26 -0
- metadata +13 -30
- data/tests/fixtures/introspection.yaml +0 -287
- data/tests/helper.rb +0 -24
- data/tests/helpers/collection_helper.rb +0 -97
- data/tests/helpers/compute/flavors_helper.rb +0 -32
- data/tests/helpers/compute/server_helper.rb +0 -25
- data/tests/helpers/compute/servers_helper.rb +0 -10
- data/tests/helpers/formats_helper.rb +0 -98
- data/tests/helpers/formats_helper_tests.rb +0 -110
- data/tests/helpers/mock_helper.rb +0 -17
- data/tests/helpers/model_helper.rb +0 -31
- data/tests/helpers/responds_to_helper.rb +0 -11
- data/tests/helpers/schema_validator_tests.rb +0 -107
- data/tests/helpers/succeeds_helper.rb +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b2e12b17ba616a2d5b1d1290312ff5d1cd489c62
|
4
|
+
data.tar.gz: b81c3f55d47899d6f5ecc77b25065ad77f3df5d0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7b0cc3dfc3872a6cf24819aa45831807d5cbfec03cc9e992aced62f3576218befdb1e67502029e6b708b7a6d3fd3228924b09873e510ffa68304570b99003b5a
|
7
|
+
data.tar.gz: f3d442b936d042cdbdc13c3c446fc6f3af09a5c9e602152b154dd61abe18c3b71bd219ce93156df38d220520e7a45d0bdc3dc9c826be1d3e488e3bc211636d76
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -59,7 +59,7 @@ If you're using Keystone V2, you don't need to supply domain details but ensure
|
|
59
59
|
|
60
60
|
```ruby
|
61
61
|
@connection_params = {
|
62
|
-
openstack_auth_url: "http://devstack.test:5000/v2.0/tokens"
|
62
|
+
openstack_auth_url: "http://devstack.test:5000/v2.0/tokens",
|
63
63
|
openstack_username: "admin",
|
64
64
|
openstack_api_key: "password",
|
65
65
|
openstack_project_name: "admin"
|
@@ -514,7 +514,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
514
514
|
|
515
515
|
## Contributing
|
516
516
|
|
517
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
517
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/fog/fog-openstack. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
518
518
|
|
519
519
|
|
520
520
|
## License
|
data/Rakefile
CHANGED
@@ -6,15 +6,8 @@ RuboCop::RakeTask.new
|
|
6
6
|
|
7
7
|
task :default => :test
|
8
8
|
|
9
|
-
# To be removed once after Minitest migration
|
10
|
-
desc 'Run fog-openstack unit tests with Shindo'
|
11
|
-
task :test do
|
12
|
-
mock = ENV['FOG_MOCK'] || 'true'
|
13
|
-
sh("export FOG_MOCK=#{mock} && bundle exec shindont")
|
14
|
-
end
|
15
|
-
|
16
9
|
desc 'Run fog-openstack unit tests with Minitest'
|
17
|
-
task :
|
10
|
+
task :test do
|
18
11
|
mock = ENV['FOG_MOCK'] || 'true'
|
19
12
|
sh("export FOG_MOCK=#{mock} && bundle exec rake tests:unit")
|
20
13
|
end
|
data/docs/orchestration.md
CHANGED
@@ -316,3 +316,22 @@ service.templates.validate(:template => content)
|
|
316
316
|
content=nil
|
317
317
|
>
|
318
318
|
```
|
319
|
+
|
320
|
+
## Cancel Update
|
321
|
+
When the stack is updating, you can cancel the update:
|
322
|
+
|
323
|
+
```ruby
|
324
|
+
# stack.stack_status == 'UPDATE_IN_PROGRESS'
|
325
|
+
stack.cancel_update
|
326
|
+
=> nil
|
327
|
+
```
|
328
|
+
|
329
|
+
Then you can see the status changed to ROLLBACK_IN_PROGRESS:
|
330
|
+
|
331
|
+
```ruby
|
332
|
+
stack = service.stacks.get(stack.stack_name, stack.id)
|
333
|
+
stack.stack_status
|
334
|
+
=> "ROLLBACK_IN_PROGRESS"
|
335
|
+
```
|
336
|
+
|
337
|
+
|
data/fog-openstack.gemspec
CHANGED
@@ -24,7 +24,8 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.add_dependency 'ipaddress', '>= 0.8'
|
25
25
|
|
26
26
|
spec.add_development_dependency 'bundler', '~> 1.6'
|
27
|
-
|
27
|
+
# TODO: remove when https://github.com/fog/fog-openstack/issues/202 is fixed
|
28
|
+
# spec.add_development_dependency 'coveralls'
|
28
29
|
spec.add_development_dependency "mime-types"
|
29
30
|
spec.add_development_dependency "mime-types-data"
|
30
31
|
spec.add_development_dependency 'rake', '~> 10.0'
|
data/gemfiles/Gemfile-1.9
CHANGED
data/lib/fog/dns/openstack/v2.rb
CHANGED
@@ -18,6 +18,12 @@ module Fog
|
|
18
18
|
:openstack_project_domain_id, :openstack_user_domain_id, :openstack_domain_id,
|
19
19
|
:openstack_identity_prefix, :openstack_temp_url_key, :openstack_cache_ttl
|
20
20
|
|
21
|
+
model_path 'fog/dns/openstack/v2/models'
|
22
|
+
model :zone
|
23
|
+
collection :zones
|
24
|
+
model :recordset
|
25
|
+
collection :recordsets
|
26
|
+
|
21
27
|
request_path 'fog/dns/openstack/v2/requests'
|
22
28
|
|
23
29
|
request :list_zones
|
@@ -35,6 +41,20 @@ module Fog
|
|
35
41
|
request :get_quota
|
36
42
|
request :update_quota
|
37
43
|
|
44
|
+
def self.setup_headers(options)
|
45
|
+
# user needs to have admin privileges to ask for all projects
|
46
|
+
all_projects = options.delete(:all_projects) || false
|
47
|
+
|
48
|
+
# user needs to have admin privileges to impersonate another project
|
49
|
+
# don't ask for all and one project at the same time
|
50
|
+
project_id = options.delete(:project_id) unless all_projects
|
51
|
+
|
52
|
+
headers = {'X-Auth-All-Projects' => all_projects}
|
53
|
+
headers['X-Auth-Sudo-Project-Id'] = project_id unless project_id.nil?
|
54
|
+
|
55
|
+
[headers, options]
|
56
|
+
end
|
57
|
+
|
38
58
|
class Mock
|
39
59
|
def self.data
|
40
60
|
@data ||= Hash.new do |hash, key|
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'fog/openstack/models/model'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module DNS
|
5
|
+
class OpenStack
|
6
|
+
class V2
|
7
|
+
class Recordset < Fog::OpenStack::Model
|
8
|
+
identity :id
|
9
|
+
|
10
|
+
attribute :name
|
11
|
+
attribute :project_id
|
12
|
+
attribute :status
|
13
|
+
attribute :action
|
14
|
+
attribute :zone_id
|
15
|
+
attribute :zone_name
|
16
|
+
attribute :type
|
17
|
+
attribute :records
|
18
|
+
attribute :version
|
19
|
+
attribute :created_at
|
20
|
+
attribute :links
|
21
|
+
|
22
|
+
attribute :ttl
|
23
|
+
attribute :description
|
24
|
+
attribute :updated_at
|
25
|
+
|
26
|
+
def save
|
27
|
+
raise Fog::Errors::Error, 'Resaving an existing object may create a duplicate' if persisted?
|
28
|
+
requires :zone_id, :name, :type, :records
|
29
|
+
merge_attributes(service.create_recordset(zone_id, name, type, records, attributes).body)
|
30
|
+
true
|
31
|
+
end
|
32
|
+
|
33
|
+
# overwritten because zone_id is needed for get
|
34
|
+
def reload(options = {})
|
35
|
+
requires :zone_id, :id
|
36
|
+
merge_attributes(collection.get(zone_id, id, options).attributes)
|
37
|
+
self
|
38
|
+
end
|
39
|
+
|
40
|
+
def update(options = nil)
|
41
|
+
requires :zone_id, :id
|
42
|
+
merge_attributes(service.update_recordset(zone_id, id, options || attributes).body)
|
43
|
+
self
|
44
|
+
end
|
45
|
+
|
46
|
+
def destroy(options = {})
|
47
|
+
requires :zone_id, :id
|
48
|
+
service.delete_recordset(zone_id, id, options)
|
49
|
+
true
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'fog/openstack/models/collection'
|
2
|
+
require 'fog/dns/openstack/v2/models/recordset'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module DNS
|
6
|
+
class OpenStack
|
7
|
+
class V2
|
8
|
+
class Recordsets < Fog::OpenStack::Collection
|
9
|
+
model Fog::DNS::OpenStack::V2::Recordset
|
10
|
+
|
11
|
+
def all(options = {})
|
12
|
+
load_response(service.list_recordsets(options), 'recordsets')
|
13
|
+
end
|
14
|
+
|
15
|
+
def find_by_id(zone_id, id, options = {})
|
16
|
+
recordset_hash = service.get_recordset(zone_id, id, options).body
|
17
|
+
new(recordset_hash.merge(:service => service))
|
18
|
+
end
|
19
|
+
|
20
|
+
alias get find_by_id
|
21
|
+
|
22
|
+
def destroy(zone_id, id, options = {})
|
23
|
+
recordset = find_by_id(zone_id, id, options)
|
24
|
+
recordset.destroy
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'fog/openstack/models/model'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module DNS
|
5
|
+
class OpenStack
|
6
|
+
class V2
|
7
|
+
class Zone < Fog::OpenStack::Model
|
8
|
+
identity :id
|
9
|
+
|
10
|
+
attribute :name
|
11
|
+
attribute :email
|
12
|
+
attribute :pool_id
|
13
|
+
attribute :project_id
|
14
|
+
attribute :serial
|
15
|
+
attribute :status
|
16
|
+
attribute :action
|
17
|
+
attribute :masters
|
18
|
+
attribute :version
|
19
|
+
attribute :links
|
20
|
+
attribute :created_at
|
21
|
+
attribute :transfered_at
|
22
|
+
|
23
|
+
attribute :ttl
|
24
|
+
attribute :description
|
25
|
+
attribute :type
|
26
|
+
attribute :updated_at
|
27
|
+
|
28
|
+
def save
|
29
|
+
raise Fog::Errors::Error, 'Resaving an existing object may create a duplicate' if persisted?
|
30
|
+
requires :name, :email
|
31
|
+
merge_attributes(service.create_zone(name, email, attributes).body)
|
32
|
+
true
|
33
|
+
end
|
34
|
+
|
35
|
+
def update(options = nil)
|
36
|
+
requires :id
|
37
|
+
merge_attributes(service.update_zone(id, options || attributes).body)
|
38
|
+
self
|
39
|
+
end
|
40
|
+
|
41
|
+
def destroy(options = {})
|
42
|
+
requires :id
|
43
|
+
service.delete_zone(id, options)
|
44
|
+
true
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'fog/openstack/models/collection'
|
2
|
+
require 'fog/dns/openstack/v2/models/zone'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module DNS
|
6
|
+
class OpenStack
|
7
|
+
class V2
|
8
|
+
class Zones < Fog::OpenStack::Collection
|
9
|
+
model Fog::DNS::OpenStack::V2::Zone
|
10
|
+
|
11
|
+
def all(options = {})
|
12
|
+
load_response(service.list_zones(options), 'zones')
|
13
|
+
end
|
14
|
+
|
15
|
+
def find_by_id(id, options = {})
|
16
|
+
zone_hash = service.get_zone(id, options).body
|
17
|
+
new(zone_hash.merge(:service => service))
|
18
|
+
end
|
19
|
+
|
20
|
+
alias get find_by_id
|
21
|
+
|
22
|
+
def destroy(id, options = {})
|
23
|
+
zone = find_by_id(id, options)
|
24
|
+
zone.destroy
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -3,17 +3,19 @@ module Fog
|
|
3
3
|
class OpenStack
|
4
4
|
class V2
|
5
5
|
class Real
|
6
|
-
def delete_recordset(zone_id, id)
|
6
|
+
def delete_recordset(zone_id, id, options = {})
|
7
|
+
headers, _options = Fog::DNS::OpenStack::V2.setup_headers(options)
|
7
8
|
request(
|
8
9
|
:expects => 202,
|
9
10
|
:method => 'DELETE',
|
10
|
-
:path => "zones/#{zone_id}/recordsets/#{id}"
|
11
|
+
:path => "zones/#{zone_id}/recordsets/#{id}",
|
12
|
+
:headers => headers
|
11
13
|
)
|
12
14
|
end
|
13
15
|
end
|
14
16
|
|
15
17
|
class Mock
|
16
|
-
def delete_recordset(zone_id, id)
|
18
|
+
def delete_recordset(zone_id, id, _options = {})
|
17
19
|
response = Excon::Response.new
|
18
20
|
response.status = 202
|
19
21
|
|
@@ -3,17 +3,19 @@ module Fog
|
|
3
3
|
class OpenStack
|
4
4
|
class V2
|
5
5
|
class Real
|
6
|
-
def delete_zone(id)
|
6
|
+
def delete_zone(id, options = {})
|
7
|
+
headers, _options = Fog::DNS::OpenStack::V2.setup_headers(options)
|
7
8
|
request(
|
8
9
|
:expects => 202,
|
9
10
|
:method => 'DELETE',
|
10
|
-
:path => "zones/#{id}"
|
11
|
+
:path => "zones/#{id}",
|
12
|
+
:headers => headers
|
11
13
|
)
|
12
14
|
end
|
13
15
|
end
|
14
16
|
|
15
17
|
class Mock
|
16
|
-
def delete_zone(id)
|
18
|
+
def delete_zone(id, _options = {})
|
17
19
|
response = Excon::Response.new
|
18
20
|
response.status = 202
|
19
21
|
|
@@ -4,11 +4,13 @@ module Fog
|
|
4
4
|
class V2
|
5
5
|
class Real
|
6
6
|
def get_quota(project_id = nil)
|
7
|
+
headers, _options = Fog::DNS::OpenStack::V2.setup_headers(:all_projects => !project_id.nil?)
|
8
|
+
|
7
9
|
request(
|
8
|
-
:headers => {"X-Auth-All-Projects" => !project_id.nil?},
|
9
10
|
:expects => 200,
|
10
11
|
:method => 'GET',
|
11
|
-
:path => "quotas/#{project_id}"
|
12
|
+
:path => "quotas/#{project_id}",
|
13
|
+
:headers => headers
|
12
14
|
)
|
13
15
|
end
|
14
16
|
end
|
@@ -3,11 +3,13 @@ module Fog
|
|
3
3
|
class OpenStack
|
4
4
|
class V2
|
5
5
|
class Real
|
6
|
-
def get_recordset(zone_id, id)
|
6
|
+
def get_recordset(zone_id, id, options = {})
|
7
|
+
headers, _options = Fog::DNS::OpenStack::V2.setup_headers(options)
|
7
8
|
request(
|
8
9
|
:expects => 200,
|
9
10
|
:method => 'GET',
|
10
|
-
:path => "zones/#{zone_id}/recordsets/#{id}"
|
11
|
+
:path => "zones/#{zone_id}/recordsets/#{id}",
|
12
|
+
:headers => headers
|
11
13
|
)
|
12
14
|
end
|
13
15
|
end
|
@@ -3,17 +3,19 @@ module Fog
|
|
3
3
|
class OpenStack
|
4
4
|
class V2
|
5
5
|
class Real
|
6
|
-
def get_zone(id)
|
6
|
+
def get_zone(id, options = {})
|
7
|
+
headers, _options = Fog::DNS::OpenStack::V2.setup_headers(options)
|
7
8
|
request(
|
8
9
|
:expects => 200,
|
9
10
|
:method => 'GET',
|
10
|
-
:path => "zones/#{id}"
|
11
|
+
:path => "zones/#{id}",
|
12
|
+
:headers => headers
|
11
13
|
)
|
12
14
|
end
|
13
15
|
end
|
14
16
|
|
15
17
|
class Mock
|
16
|
-
def get_zone(id)
|
18
|
+
def get_zone(id, _options = {})
|
17
19
|
response = Excon::Response.new
|
18
20
|
response.status = 200
|
19
21
|
zone = data[:zone_updated] || data[:zones].first
|
@@ -3,22 +3,46 @@ module Fog
|
|
3
3
|
class OpenStack
|
4
4
|
class V2
|
5
5
|
class Real
|
6
|
-
def list_recordsets(zone_id, options = {})
|
6
|
+
def list_recordsets(zone_id = nil, options = {})
|
7
|
+
# for backward compatability: consider removing the zone_id param (breaking change)
|
8
|
+
unless zone_id.nil?
|
9
|
+
if zone_id.kind_of?(Hash)
|
10
|
+
options = zone_id
|
11
|
+
zone_id = nil
|
12
|
+
else
|
13
|
+
Fog::Logger.deprecation(
|
14
|
+
'Calling list_recordsets(zone_id) is deprecated, use .list_recordsets(zone_id: value) instead'
|
15
|
+
)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
zone_id = options.delete(:zone_id) if zone_id.nil?
|
20
|
+
path = zone_id.nil? ? 'recordsets' : "zones/#{zone_id}/recordsets"
|
21
|
+
|
22
|
+
headers, options = Fog::DNS::OpenStack::V2.setup_headers(options)
|
23
|
+
|
7
24
|
request(
|
8
25
|
:expects => 200,
|
9
26
|
:method => 'GET',
|
10
|
-
:path =>
|
11
|
-
:query => options
|
27
|
+
:path => path,
|
28
|
+
:query => options,
|
29
|
+
:headers => headers
|
12
30
|
)
|
13
31
|
end
|
14
32
|
end
|
15
33
|
|
16
34
|
class Mock
|
17
|
-
def list_recordsets(zone_id,
|
35
|
+
def list_recordsets(zone_id = nil, options = {})
|
36
|
+
if zone_id.kind_of?(Hash)
|
37
|
+
options = zone_id
|
38
|
+
zone_id = nil
|
39
|
+
end
|
40
|
+
zone_id = options.delete(:zone_id) if zone_id.nil?
|
41
|
+
|
18
42
|
response = Excon::Response.new
|
19
43
|
response.status = 200
|
20
44
|
data[:recordsets]["recordsets"].each do |rs|
|
21
|
-
rs["zone_id"] = zone_id
|
45
|
+
rs["zone_id"] = zone_id unless zone_id.nil?
|
22
46
|
end
|
23
47
|
response.body = data[:recordsets]
|
24
48
|
response
|