fog-openstack 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -0
- data/.travis.yml +6 -2
- data/README.md +4 -0
- data/Rakefile +10 -2
- data/fog-openstack.gemspec +2 -3
- data/gemfiles/Gemfile-1.9 +1 -1
- data/lib/fog/openstack.rb +14 -6
- data/lib/fog/openstack/baremetal.rb +1 -1
- data/lib/fog/openstack/common.rb +0 -2
- data/lib/fog/openstack/compute.rb +78 -75
- data/lib/fog/openstack/core.rb +2 -1
- data/lib/fog/openstack/docs/compute.md +1 -1
- data/lib/fog/openstack/docs/network.md +283 -0
- data/lib/fog/openstack/docs/nfv.md +144 -0
- data/lib/fog/openstack/examples/compute/block_device_mapping_v2.rb +4 -4
- data/lib/fog/openstack/examples/network/network_add_port.rb +21 -0
- data/lib/fog/openstack/examples/network/network_rbac.rb +69 -0
- data/lib/fog/openstack/identity.rb +14 -22
- data/lib/fog/openstack/identity_v2.rb +1 -1
- data/lib/fog/openstack/image_v1.rb +13 -28
- data/lib/fog/openstack/image_v2.rb +15 -17
- data/lib/fog/openstack/introspection.rb +1 -1
- data/lib/fog/openstack/metering.rb +1 -1
- data/lib/fog/openstack/models/collection.rb +4 -1
- data/lib/fog/openstack/models/compute/availability_zone.rb +5 -0
- data/lib/fog/openstack/models/compute/flavor.rb +21 -9
- data/lib/fog/openstack/models/compute/server.rb +64 -77
- data/lib/fog/openstack/models/compute/snapshot.rb +6 -6
- data/lib/fog/openstack/models/compute/volume_attachment.rb +15 -0
- data/lib/fog/openstack/models/compute/volume_attachments.rb +20 -0
- data/lib/fog/openstack/models/identity_v3/projects.rb +1 -1
- data/lib/fog/openstack/models/identity_v3/users.rb +2 -2
- data/lib/fog/openstack/models/image_v2/image.rb +41 -22
- data/lib/fog/openstack/models/network/floating_ip.rb +1 -0
- data/lib/fog/openstack/models/network/rbac_policies.rb +33 -0
- data/lib/fog/openstack/models/network/rbac_policy.rb +35 -0
- data/lib/fog/openstack/models/nfv/vnf.rb +58 -0
- data/lib/fog/openstack/models/nfv/vnfd.rb +53 -0
- data/lib/fog/openstack/models/nfv/vnfds.rb +28 -0
- data/lib/fog/openstack/models/nfv/vnfs.rb +28 -0
- data/lib/fog/openstack/models/volume/snapshot.rb +38 -0
- data/lib/fog/openstack/models/volume/snapshots.rb +26 -0
- data/lib/fog/openstack/models/volume/volume.rb +32 -2
- data/lib/fog/openstack/models/volume/volume_type.rb +3 -4
- data/lib/fog/openstack/models/volume_v1/snapshot.rb +43 -0
- data/lib/fog/openstack/models/volume_v1/snapshots.rb +16 -0
- data/lib/fog/openstack/models/volume_v1/volume.rb +12 -2
- data/lib/fog/openstack/models/volume_v2/snapshot.rb +43 -0
- data/lib/fog/openstack/models/volume_v2/snapshots.rb +16 -0
- data/lib/fog/openstack/models/volume_v2/volume.rb +12 -3
- data/lib/fog/openstack/network.rb +53 -46
- data/lib/fog/openstack/nfv.rb +158 -0
- data/lib/fog/openstack/orchestration.rb +1 -1
- data/lib/fog/openstack/planning.rb +1 -1
- data/lib/fog/openstack/requests/compute/create_server.rb +1 -1
- data/lib/fog/openstack/requests/compute/{create_volume_snapshot.rb → create_snapshot.rb} +16 -16
- data/lib/fog/openstack/requests/compute/delete_flavor_metadata.rb +30 -0
- data/lib/fog/openstack/requests/compute/evacuate_server.rb +8 -7
- data/lib/fog/openstack/requests/compute/get_key_pair.rb +49 -0
- data/lib/fog/openstack/requests/compute/list_availability_zones.rb +23 -0
- data/lib/fog/openstack/requests/compute/list_volume_attachments.rb +31 -0
- data/lib/fog/openstack/requests/compute/update_flavor_metadata.rb +33 -0
- data/lib/fog/openstack/requests/network/create_rbac_policy.rb +42 -0
- data/lib/fog/openstack/requests/network/delete_rbac_policy.rb +28 -0
- data/lib/fog/openstack/requests/network/get_rbac_policy.rb +28 -0
- data/lib/fog/openstack/requests/network/list_rbac_policies.rb +25 -0
- data/lib/fog/openstack/requests/network/update_port.rb +8 -7
- data/lib/fog/openstack/requests/network/update_rbac_policy.rb +41 -0
- data/lib/fog/openstack/requests/nfv/create_vnf.rb +37 -0
- data/lib/fog/openstack/requests/nfv/create_vnfd.rb +35 -0
- data/lib/fog/openstack/requests/nfv/delete_vnf.rb +23 -0
- data/lib/fog/openstack/requests/nfv/delete_vnfd.rb +23 -0
- data/lib/fog/openstack/requests/nfv/get_vnf.rb +24 -0
- data/lib/fog/openstack/requests/nfv/get_vnfd.rb +24 -0
- data/lib/fog/openstack/requests/nfv/list_vnfds.rb +25 -0
- data/lib/fog/openstack/requests/nfv/list_vnfs.rb +25 -0
- data/lib/fog/openstack/requests/nfv/update_vnf.rb +35 -0
- data/lib/fog/openstack/requests/volume/action.rb +16 -0
- data/lib/fog/openstack/requests/volume/create_snapshot.rb +18 -0
- data/lib/fog/openstack/requests/volume/delete_metadata.rb +15 -0
- data/lib/fog/openstack/requests/volume/delete_snapshot.rb +5 -5
- data/lib/fog/openstack/requests/volume/delete_snapshot_metadata.rb +15 -0
- data/lib/fog/openstack/requests/volume/replace_metadata.rb +20 -0
- data/lib/fog/openstack/requests/volume/update_metadata.rb +20 -0
- data/lib/fog/openstack/requests/volume/update_snapshot.rb +37 -0
- data/lib/fog/openstack/requests/volume/update_snapshot_metadata.rb +20 -0
- data/lib/fog/openstack/requests/volume/update_volume.rb +25 -0
- data/lib/fog/openstack/requests/volume_v1/action.rb +2 -0
- data/lib/fog/openstack/requests/volume_v1/create_snapshot.rb +45 -0
- data/lib/fog/openstack/requests/volume_v1/delete_metadata.rb +2 -0
- data/lib/fog/openstack/requests/volume_v1/delete_snapshot_metadata.rb +2 -0
- data/lib/fog/openstack/requests/volume_v1/replace_metadata.rb +2 -0
- data/lib/fog/openstack/requests/volume_v1/update_metadata.rb +2 -0
- data/lib/fog/openstack/requests/volume_v1/update_snapshot.rb +2 -0
- data/lib/fog/openstack/requests/volume_v1/update_snapshot_metadata.rb +2 -0
- data/lib/fog/openstack/requests/volume_v1/update_volume.rb +2 -0
- data/lib/fog/openstack/requests/volume_v2/action.rb +2 -0
- data/lib/fog/openstack/requests/volume_v2/create_snapshot.rb +45 -0
- data/lib/fog/openstack/requests/volume_v2/delete_metadata.rb +2 -0
- data/lib/fog/openstack/requests/volume_v2/delete_snapshot_metadata.rb +2 -0
- data/lib/fog/openstack/requests/volume_v2/replace_metadata.rb +2 -0
- data/lib/fog/openstack/requests/volume_v2/update_metadata.rb +2 -0
- data/lib/fog/openstack/requests/volume_v2/update_snapshot.rb +2 -0
- data/lib/fog/openstack/requests/volume_v2/update_snapshot_metadata.rb +2 -0
- data/lib/fog/openstack/requests/volume_v2/update_volume.rb +2 -0
- data/lib/fog/openstack/storage.rb +1 -1
- data/lib/fog/openstack/version.rb +1 -1
- data/lib/fog/openstack/volume.rb +1 -1
- data/lib/fog/openstack/volume_v1.rb +29 -21
- data/lib/fog/openstack/volume_v2.rb +29 -21
- data/supported.md +54 -0
- data/tests/openstack/models/identity/ec2_credential_tests.rb +1 -1
- data/tests/openstack/models/identity/ec2_credentials_tests.rb +1 -1
- data/tests/openstack/models/identity/role_tests.rb +8 -3
- data/tests/openstack/models/identity/roles_tests.rb +5 -4
- data/tests/openstack/models/identity/tenant_tests.rb +7 -4
- data/tests/openstack/models/identity/tenants_tests.rb +10 -5
- data/tests/openstack/models/identity/user_tests.rb +4 -3
- data/tests/openstack/models/identity/users_tests.rb +10 -6
- data/tests/openstack/models/nfv/vnf_tests.rb +35 -0
- data/tests/openstack/models/nfv/vnfd_tests.rb +23 -0
- data/tests/openstack/models/nfv/vnfds_tests.rb +31 -0
- data/tests/openstack/models/nfv/vnfs_tests.rb +38 -0
- data/tests/openstack/requests/identity/ec2_credentials_tests.rb +6 -9
- data/tests/openstack/requests/identity/helper.rb +12 -4
- data/tests/openstack/requests/identity/role_tests.rb +13 -10
- data/tests/openstack/requests/identity/tenant_tests.rb +10 -9
- data/tests/openstack/requests/identity/user_tests.rb +11 -6
- data/tests/openstack/requests/image/image_tests.rb +1 -0
- data/tests/openstack/requests/nfv/vnf_tests.rb +70 -0
- data/tests/openstack/requests/nfv/vnfd_tests.rb +44 -0
- metadata +81 -31
- data/lib/fog/openstack/requests/volume/create_volume_snapshot.rb +0 -26
- data/lib/fog/openstack/requests/volume_v1/create_volume_snapshot.rb +0 -44
- data/lib/fog/openstack/requests/volume_v2/create_volume_snapshot.rb +0 -43
- data/tests/openstack/authenticate_tests.rb +0 -200
- data/tests/openstack/identity_version_tests.rb +0 -25
- data/tests/openstack/storage_tests.rb +0 -18
- data/tests/openstack/version_tests.rb +0 -55
- data/tests/openstack/volume_tests.rb +0 -18
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'fog/openstack/models/collection'
|
2
|
+
require 'fog/openstack/models/nfv/vnf'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module NFV
|
6
|
+
class OpenStack
|
7
|
+
class Vnfs < Fog::OpenStack::Collection
|
8
|
+
model Fog::NFV::OpenStack::Vnf
|
9
|
+
|
10
|
+
def all(options = {})
|
11
|
+
load_response(service.list_vnfs(options), 'vnfs')
|
12
|
+
end
|
13
|
+
|
14
|
+
def get(uuid)
|
15
|
+
data = service.get_vnf(uuid).body['vnf']
|
16
|
+
new(data)
|
17
|
+
rescue Fog::NFV::OpenStack::NotFound
|
18
|
+
nil
|
19
|
+
end
|
20
|
+
|
21
|
+
def destroy(uuid)
|
22
|
+
vnf = get(uuid)
|
23
|
+
vnf.destroy
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'fog/openstack/models/model'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module Volume
|
5
|
+
class OpenStack
|
6
|
+
class Snapshot < Fog::OpenStack::Model
|
7
|
+
def update(data)
|
8
|
+
requires :id
|
9
|
+
|
10
|
+
response = service.update_snapshot(id, data)
|
11
|
+
merge_attributes(response.body['snapshot'])
|
12
|
+
|
13
|
+
self
|
14
|
+
end
|
15
|
+
|
16
|
+
def destroy
|
17
|
+
requires :id
|
18
|
+
service.delete_snapshot(id)
|
19
|
+
true
|
20
|
+
end
|
21
|
+
|
22
|
+
# Existing keys have values updated and new key-value pairs are created, but none are deleted
|
23
|
+
def update_metadata(metadata)
|
24
|
+
requires :id
|
25
|
+
service.update_snapshot_metadata(id, metadata)
|
26
|
+
true
|
27
|
+
end
|
28
|
+
|
29
|
+
# Delete one specific key-value pair by specifying the key name
|
30
|
+
def delete_metadata(key_name)
|
31
|
+
requires :id
|
32
|
+
service.delete_snapshot_metadata(id, key_name)
|
33
|
+
true
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'fog/openstack/models/collection'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module Volume
|
5
|
+
class OpenStack
|
6
|
+
module Snapshots
|
7
|
+
def all(options = {})
|
8
|
+
load_response(service.list_snapshots_detailed(options), 'snapshots')
|
9
|
+
end
|
10
|
+
|
11
|
+
def summary(options = {})
|
12
|
+
load_response(service.list_snapshots(options), 'snapshots')
|
13
|
+
end
|
14
|
+
|
15
|
+
def get(snapshots_id)
|
16
|
+
snapshot = service.get_snapshot_details(snapshots_id).body['snapshot']
|
17
|
+
if snapshot
|
18
|
+
new(snapshot)
|
19
|
+
end
|
20
|
+
rescue Fog::Volume::OpenStack::NotFound
|
21
|
+
nil
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -7,7 +7,7 @@ module Fog
|
|
7
7
|
attribute :metadata
|
8
8
|
attribute :status
|
9
9
|
attribute :size
|
10
|
-
attribute :volume_type, :aliases =>
|
10
|
+
attribute :volume_type, :aliases => %w(volumeType type)
|
11
11
|
attribute :snapshot_id, :aliases => 'snapshotId'
|
12
12
|
attribute :imageRef, :aliases => 'image_id'
|
13
13
|
attribute :availability_zone, :aliases => 'availabilityZone'
|
@@ -30,7 +30,37 @@ module Fog
|
|
30
30
|
def ready?
|
31
31
|
status == 'available'
|
32
32
|
end
|
33
|
+
|
34
|
+
def reset_status(status)
|
35
|
+
requires :id
|
36
|
+
service.action(id, 'os-reset_status' => {:status => status})
|
37
|
+
end
|
38
|
+
|
39
|
+
def create_metadata(metadata)
|
40
|
+
replace_metadata(metadata)
|
41
|
+
end
|
42
|
+
|
43
|
+
# Existing keys have values updated and new key-value pairs are created, but none are deleted
|
44
|
+
def update_metadata(metadata)
|
45
|
+
requires :id
|
46
|
+
service.update_metadata(id, metadata)
|
47
|
+
true
|
48
|
+
end
|
49
|
+
|
50
|
+
# All existing key-value pairs are deleted and replaced with the key-value pairs specified here
|
51
|
+
def replace_metadata(metadata)
|
52
|
+
requires :id
|
53
|
+
service.replace_metadata(id, metadata)
|
54
|
+
true
|
55
|
+
end
|
56
|
+
|
57
|
+
# Delete one specific key-value pair by specifying the key name
|
58
|
+
def delete_metadata(key_name)
|
59
|
+
requires :id
|
60
|
+
service.delete_metadata(id, key_name)
|
61
|
+
true
|
62
|
+
end
|
33
63
|
end
|
34
64
|
end
|
35
65
|
end
|
36
|
-
end
|
66
|
+
end
|
@@ -4,13 +4,12 @@ module Fog
|
|
4
4
|
module Volume
|
5
5
|
class OpenStack
|
6
6
|
class VolumeType < Fog::OpenStack::Model
|
7
|
-
|
8
7
|
attribute :extra_specs
|
9
8
|
|
10
9
|
def create
|
11
10
|
requires :name
|
12
11
|
|
13
|
-
response = service.create_volume_type(
|
12
|
+
response = service.create_volume_type(attributes)
|
14
13
|
merge_attributes(response.body['volume_type'])
|
15
14
|
|
16
15
|
self
|
@@ -19,7 +18,7 @@ module Fog
|
|
19
18
|
def update
|
20
19
|
requires :id
|
21
20
|
|
22
|
-
response = service.update_volume_type(
|
21
|
+
response = service.update_volume_type(id, attributes)
|
23
22
|
merge_attributes(response.body['volume_type'])
|
24
23
|
|
25
24
|
self
|
@@ -27,7 +26,7 @@ module Fog
|
|
27
26
|
|
28
27
|
def destroy
|
29
28
|
requires :id
|
30
|
-
service.delete_volume_type(
|
29
|
+
service.delete_volume_type(id)
|
31
30
|
true
|
32
31
|
end
|
33
32
|
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'fog/openstack/models/volume/snapshot'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module Volume
|
5
|
+
class OpenStack
|
6
|
+
class V1
|
7
|
+
class Snapshot < Fog::Volume::OpenStack::Snapshot
|
8
|
+
identity :id
|
9
|
+
|
10
|
+
attribute :display_name
|
11
|
+
attribute :status
|
12
|
+
attribute :display_description
|
13
|
+
attribute :metadata
|
14
|
+
attribute :force
|
15
|
+
|
16
|
+
def save
|
17
|
+
requires :display_name
|
18
|
+
data = if id.nil?
|
19
|
+
service.create_snapshot(attributes[:volume_id], display_name, display_description, force)
|
20
|
+
else
|
21
|
+
service.update_snapshot(id, attributes.reject { |k, _v| k == :id })
|
22
|
+
end
|
23
|
+
merge_attributes(data.body['snapshot'])
|
24
|
+
true
|
25
|
+
end
|
26
|
+
|
27
|
+
def create
|
28
|
+
requires :display_name
|
29
|
+
|
30
|
+
# volume_id, name, description, force=false
|
31
|
+
response = service.create_snapshot(attributes[:volume_id],
|
32
|
+
attributes[:display_name],
|
33
|
+
attributes[:display_description],
|
34
|
+
attributes[:force])
|
35
|
+
merge_attributes(response.body['snapshot'])
|
36
|
+
|
37
|
+
self
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'fog/openstack/models/collection'
|
2
|
+
require 'fog/openstack/models/volume_v1/snapshot'
|
3
|
+
require 'fog/openstack/models/volume/snapshots'
|
4
|
+
|
5
|
+
module Fog
|
6
|
+
module Volume
|
7
|
+
class OpenStack
|
8
|
+
class V1
|
9
|
+
class Snapshots < Fog::OpenStack::Collection
|
10
|
+
model Fog::Volume::OpenStack::V1::Snapshot
|
11
|
+
include Fog::Volume::OpenStack::Snapshots
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -7,18 +7,28 @@ module Fog
|
|
7
7
|
class Volume < Fog::Volume::OpenStack::Volume
|
8
8
|
identity :id
|
9
9
|
|
10
|
-
superclass.attributes.each{|attrib| attribute attrib}
|
10
|
+
superclass.attributes.each { |attrib| attribute attrib }
|
11
11
|
attribute :display_name, :aliases => 'displayName'
|
12
12
|
attribute :display_description, :aliases => 'displayDescription'
|
13
13
|
attribute :tenant_id, :aliases => 'os-vol-tenant-attr:tenant_id'
|
14
14
|
|
15
15
|
def save
|
16
16
|
requires :display_name, :size
|
17
|
-
data =
|
17
|
+
data = if id.nil?
|
18
|
+
service.create_volume(display_name, display_description, size, attributes)
|
19
|
+
else
|
20
|
+
service.update_volume(id, attributes.reject { |k, _v| k == :id })
|
21
|
+
end
|
18
22
|
merge_attributes(data.body['volume'])
|
19
23
|
true
|
20
24
|
end
|
21
25
|
|
26
|
+
def update(attr = nil)
|
27
|
+
requires :id
|
28
|
+
merge_attributes(
|
29
|
+
service.update_volume(id, attr || attributes).body['volume'])
|
30
|
+
self
|
31
|
+
end
|
22
32
|
end
|
23
33
|
end
|
24
34
|
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'fog/openstack/models/volume/snapshot'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module Volume
|
5
|
+
class OpenStack
|
6
|
+
class V2
|
7
|
+
class Snapshot < Fog::Volume::OpenStack::Snapshot
|
8
|
+
identity :id
|
9
|
+
|
10
|
+
attribute :name
|
11
|
+
attribute :status
|
12
|
+
attribute :description
|
13
|
+
attribute :metadata
|
14
|
+
attribute :force
|
15
|
+
|
16
|
+
def save
|
17
|
+
requires :name
|
18
|
+
data = if id.nil?
|
19
|
+
service.create_snapshot(attributes[:volume_id], name, description, force)
|
20
|
+
else
|
21
|
+
service.update_snapshot(id, attributes.reject { |k, _v| k == :id })
|
22
|
+
end
|
23
|
+
merge_attributes(data.body['snapshot'])
|
24
|
+
true
|
25
|
+
end
|
26
|
+
|
27
|
+
def create
|
28
|
+
requires :name
|
29
|
+
|
30
|
+
# volume_id, name, description, force=false
|
31
|
+
response = service.create_snapshot(attributes[:volume_id],
|
32
|
+
attributes[:name],
|
33
|
+
attributes[:description],
|
34
|
+
attributes[:force])
|
35
|
+
merge_attributes(response.body['snapshot'])
|
36
|
+
|
37
|
+
self
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'fog/openstack/models/collection'
|
2
|
+
require 'fog/openstack/models/volume_v2/snapshot'
|
3
|
+
require 'fog/openstack/models/volume/snapshots'
|
4
|
+
|
5
|
+
module Fog
|
6
|
+
module Volume
|
7
|
+
class OpenStack
|
8
|
+
class V2
|
9
|
+
class Snapshots < Fog::OpenStack::Collection
|
10
|
+
model Fog::Volume::OpenStack::V2::Snapshot
|
11
|
+
include Fog::Volume::OpenStack::Snapshots
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'fog/openstack/models/volume/volume'
|
2
2
|
|
3
|
-
|
4
3
|
module Fog
|
5
4
|
module Volume
|
6
5
|
class OpenStack
|
@@ -8,18 +7,28 @@ module Fog
|
|
8
7
|
class Volume < Fog::Volume::OpenStack::Volume
|
9
8
|
identity :id
|
10
9
|
|
11
|
-
superclass.attributes.each{|attrib| attribute attrib}
|
10
|
+
superclass.attributes.each { |attrib| attribute attrib }
|
12
11
|
attribute :name
|
13
12
|
attribute :description
|
14
13
|
attribute :tenant_id, :aliases => 'os-vol-tenant-attr:tenant_id'
|
15
14
|
|
16
15
|
def save
|
17
16
|
requires :name, :size
|
18
|
-
data =
|
17
|
+
data = if id.nil?
|
18
|
+
service.create_volume(name, description, size, attributes)
|
19
|
+
else
|
20
|
+
service.update_volume(id, attributes.reject { |k, _v| k == :id })
|
21
|
+
end
|
19
22
|
merge_attributes(data.body['volume'])
|
20
23
|
true
|
21
24
|
end
|
22
25
|
|
26
|
+
def update(attr = nil)
|
27
|
+
requires :id
|
28
|
+
merge_attributes(
|
29
|
+
service.update_volume(id, attr || attributes).body['volume'])
|
30
|
+
self
|
31
|
+
end
|
23
32
|
end
|
24
33
|
end
|
25
34
|
end
|
@@ -11,7 +11,7 @@ module Fog
|
|
11
11
|
:openstack_tenant, :openstack_tenant_id,
|
12
12
|
:openstack_api_key, :openstack_username, :openstack_identity_endpoint,
|
13
13
|
:current_user, :current_tenant, :openstack_region,
|
14
|
-
:openstack_endpoint_type,
|
14
|
+
:openstack_endpoint_type, :openstack_cache_ttl,
|
15
15
|
:openstack_project_name, :openstack_project_id,
|
16
16
|
:openstack_project_domain, :openstack_user_domain, :openstack_domain_name,
|
17
17
|
:openstack_project_domain_id, :openstack_user_domain_id, :openstack_domain_id,
|
@@ -46,6 +46,8 @@ module Fog
|
|
46
46
|
collection :ipsec_policies
|
47
47
|
model :ipsec_site_connection
|
48
48
|
collection :ipsec_site_connections
|
49
|
+
model :rbac_policy
|
50
|
+
collection :rbac_policies
|
49
51
|
model :security_group
|
50
52
|
collection :security_groups
|
51
53
|
model :security_group_rule
|
@@ -152,6 +154,13 @@ module Fog
|
|
152
154
|
request :get_ipsec_site_connection
|
153
155
|
request :update_ipsec_site_connection
|
154
156
|
|
157
|
+
# RBAC Policy CRUD
|
158
|
+
request :list_rbac_policies
|
159
|
+
request :create_rbac_policy
|
160
|
+
request :delete_rbac_policy
|
161
|
+
request :get_rbac_policy
|
162
|
+
request :update_rbac_policy
|
163
|
+
|
155
164
|
# Security Group
|
156
165
|
request :create_security_group
|
157
166
|
request :delete_security_group
|
@@ -181,7 +190,7 @@ module Fog
|
|
181
190
|
tenant_id = Fog::Mock.random_hex(8)
|
182
191
|
|
183
192
|
hash[key] = {
|
184
|
-
:networks
|
193
|
+
:networks => {
|
185
194
|
network_id => {
|
186
195
|
'id' => network_id,
|
187
196
|
'name' => 'Public',
|
@@ -203,8 +212,8 @@ module Fog
|
|
203
212
|
'tenant_id' => 'f8b26a6032bc47718a7702233ac708b9',
|
204
213
|
}
|
205
214
|
},
|
206
|
-
:ports
|
207
|
-
:subnets
|
215
|
+
:ports => {},
|
216
|
+
:subnets => {
|
208
217
|
subnet_id => {
|
209
218
|
'id' => subnet_id,
|
210
219
|
'name' => "Public",
|
@@ -219,35 +228,36 @@ module Fog
|
|
219
228
|
'tenant_id' => tenant_id,
|
220
229
|
}
|
221
230
|
},
|
222
|
-
:floating_ips
|
223
|
-
:routers
|
224
|
-
:lb_pools
|
225
|
-
:lb_members
|
226
|
-
:lb_health_monitors
|
227
|
-
:lb_vips
|
231
|
+
:floating_ips => {},
|
232
|
+
:routers => {},
|
233
|
+
:lb_pools => {},
|
234
|
+
:lb_members => {},
|
235
|
+
:lb_health_monitors => {},
|
236
|
+
:lb_vips => {},
|
228
237
|
:vpn_services => {},
|
229
238
|
:ike_policies => {},
|
230
239
|
:ipsec_policies => {},
|
231
240
|
:ipsec_site_connections => {},
|
232
|
-
:
|
233
|
-
|
234
|
-
"
|
235
|
-
"
|
236
|
-
"
|
241
|
+
:rbac_policies => {},
|
242
|
+
:quota => {
|
243
|
+
"subnet" => 10,
|
244
|
+
"router" => 10,
|
245
|
+
"port" => 50,
|
246
|
+
"network" => 10,
|
237
247
|
"floatingip" => 50
|
238
248
|
},
|
239
|
-
:quotas
|
249
|
+
:quotas => [
|
240
250
|
{
|
241
|
-
"subnet"
|
242
|
-
"network"
|
251
|
+
"subnet" => 10,
|
252
|
+
"network" => 10,
|
243
253
|
"floatingip" => 50,
|
244
|
-
"tenant_id"
|
245
|
-
"router"
|
246
|
-
"port"
|
254
|
+
"tenant_id" => tenant_id,
|
255
|
+
"router" => 10,
|
256
|
+
"port" => 30
|
247
257
|
}
|
248
258
|
],
|
249
|
-
:security_groups
|
250
|
-
:security_group_rules
|
259
|
+
:security_groups => {},
|
260
|
+
:security_group_rules => {},
|
251
261
|
}
|
252
262
|
end
|
253
263
|
end
|
@@ -258,7 +268,7 @@ module Fog
|
|
258
268
|
|
259
269
|
include Fog::OpenStack::Core
|
260
270
|
|
261
|
-
def initialize(options={})
|
271
|
+
def initialize(options = {})
|
262
272
|
@auth_token = Fog::Mock.random_base64(64)
|
263
273
|
@auth_token_expiration = (Time.now.utc + 86400).iso8601
|
264
274
|
|
@@ -272,14 +282,12 @@ module Fog
|
|
272
282
|
def reset_data
|
273
283
|
self.class.data.delete("#{@openstack_username}-#{@openstack_tenant}")
|
274
284
|
end
|
275
|
-
|
276
285
|
end
|
277
286
|
|
278
287
|
class Real
|
279
|
-
|
280
288
|
include Fog::OpenStack::Core
|
281
289
|
|
282
|
-
def initialize(options={})
|
290
|
+
def initialize(options = {})
|
283
291
|
initialize_identity options
|
284
292
|
|
285
293
|
@openstack_service_type = options[:openstack_service_type] || ['network']
|
@@ -294,17 +302,16 @@ module Fog
|
|
294
302
|
@connection = Fog::Core::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
|
295
303
|
end
|
296
304
|
|
297
|
-
|
298
305
|
def request(params)
|
299
306
|
begin
|
300
|
-
response = @connection.request(params.merge(
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
307
|
+
response = @connection.request(params.merge(
|
308
|
+
:headers => {
|
309
|
+
'Content-Type' => 'application/json',
|
310
|
+
'Accept' => 'application/json',
|
311
|
+
'X-Auth-Token' => @auth_token
|
312
|
+
}.merge!(params[:headers] || {}),
|
313
|
+
:path => "#{@path}/#{params[:path]}" # ,
|
314
|
+
))
|
308
315
|
rescue Excon::Errors::Unauthorized => error
|
309
316
|
if error.response.body != 'Bad username or password' # token expiration
|
310
317
|
@openstack_must_reauthenticate = true
|
@@ -316,11 +323,11 @@ module Fog
|
|
316
323
|
end
|
317
324
|
rescue Excon::Errors::HTTPStatusError => error
|
318
325
|
raise case error
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
326
|
+
when Excon::Errors::NotFound
|
327
|
+
Fog::Network::OpenStack::NotFound.slurp(error)
|
328
|
+
else
|
329
|
+
error
|
330
|
+
end
|
324
331
|
end
|
325
332
|
unless response.body.empty?
|
326
333
|
response.body = Fog::JSON.decode(response.body)
|
@@ -329,12 +336,12 @@ module Fog
|
|
329
336
|
end
|
330
337
|
|
331
338
|
def set_api_path
|
332
|
-
@path.sub!(
|
339
|
+
@path.sub!(%r{\/$}, '')
|
333
340
|
unless @path.match(SUPPORTED_VERSIONS)
|
334
|
-
@path =
|
335
|
-
|
336
|
-
|
337
|
-
|
341
|
+
@path = Fog::OpenStack.get_supported_version_path(SUPPORTED_VERSIONS,
|
342
|
+
@openstack_management_uri,
|
343
|
+
@auth_token,
|
344
|
+
@connection_options)
|
338
345
|
end
|
339
346
|
end
|
340
347
|
end
|