fog-openstack 0.1.15 → 0.1.17
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 +4 -4
- data/.rubocop.yml +3 -1
- data/README.md +36 -5
- data/docs/common/connection_params.md +45 -0
- data/docs/common/resources.md +11 -0
- data/docs/compute.md +2 -46
- data/docs/getting_started.md +11 -10
- data/docs/network.md +2 -47
- data/docs/orchestration.md +2 -2
- data/docs/planning.md +2 -47
- data/docs/shared_file_system.md +82 -0
- data/docs/storage.md +5 -51
- data/docs/workflow.md +4 -2
- data/examples/metric/basics.rb +42 -0
- data/examples/shared_file_system/basics.rb +68 -0
- data/gemfiles/Gemfile-1.9 +1 -0
- data/lib/fog/identity/openstack/v3/requests/list_groups.rb +1 -1
- data/lib/fog/image/openstack/v2/models/image.rb +60 -15
- data/lib/fog/image/openstack/v2/models/images.rb +1 -4
- data/lib/fog/metric/openstack.rb +126 -0
- data/lib/fog/metric/openstack/models/metric.rb +18 -0
- data/lib/fog/metric/openstack/models/metrics.rb +31 -0
- data/lib/fog/metric/openstack/models/resource.rb +16 -0
- data/lib/fog/metric/openstack/models/resources.rb +24 -0
- data/lib/fog/metric/openstack/requests/get_metric.rb +62 -0
- data/lib/fog/metric/openstack/requests/get_metric_measures.rb +38 -0
- data/lib/fog/metric/openstack/requests/get_resource.rb +37 -0
- data/lib/fog/metric/openstack/requests/get_resource_metric_measures.rb +46 -0
- data/lib/fog/metric/openstack/requests/list_metrics.rb +104 -0
- data/lib/fog/metric/openstack/requests/list_resources.rb +70 -0
- data/lib/fog/network/openstack.rb +12 -9
- data/lib/fog/network/openstack/models/rbac_policy.rb +0 -1
- data/lib/fog/network/openstack/requests/create_floating_ip.rb +1 -1
- data/lib/fog/network/openstack/requests/create_network.rb +3 -3
- data/lib/fog/openstack.rb +25 -15
- data/lib/fog/openstack/version.rb +1 -1
- data/lib/fog/orchestration/openstack/models/stack.rb +5 -1
- data/lib/fog/shared_file_system/openstack.rb +278 -0
- data/lib/fog/shared_file_system/openstack/models/network.rb +42 -0
- data/lib/fog/shared_file_system/openstack/models/networks.rb +28 -0
- data/lib/fog/shared_file_system/openstack/models/share.rb +63 -0
- data/lib/fog/shared_file_system/openstack/models/shares.rb +28 -0
- data/lib/fog/shared_file_system/openstack/models/snapshot.rb +45 -0
- data/lib/fog/shared_file_system/openstack/models/snapshots.rb +28 -0
- data/lib/fog/shared_file_system/openstack/requests/create_share.rb +49 -0
- data/lib/fog/shared_file_system/openstack/requests/create_share_network.rb +41 -0
- data/lib/fog/shared_file_system/openstack/requests/create_snapshot.rb +46 -0
- data/lib/fog/shared_file_system/openstack/requests/delete_share.rb +29 -0
- data/lib/fog/shared_file_system/openstack/requests/delete_share_network.rb +28 -0
- data/lib/fog/shared_file_system/openstack/requests/delete_snapshot.rb +30 -0
- data/lib/fog/shared_file_system/openstack/requests/get_share.rb +26 -0
- data/lib/fog/shared_file_system/openstack/requests/get_share_network.rb +26 -0
- data/lib/fog/shared_file_system/openstack/requests/get_snapshot.rb +26 -0
- data/lib/fog/shared_file_system/openstack/requests/list_share_networks.rb +25 -0
- data/lib/fog/shared_file_system/openstack/requests/list_share_networks_detail.rb +25 -0
- data/lib/fog/shared_file_system/openstack/requests/list_shares.rb +25 -0
- data/lib/fog/shared_file_system/openstack/requests/list_shares_detail.rb +25 -0
- data/lib/fog/shared_file_system/openstack/requests/list_snapshots.rb +25 -0
- data/lib/fog/shared_file_system/openstack/requests/list_snapshots_detail.rb +25 -0
- data/lib/fog/shared_file_system/openstack/requests/update_share.rb +39 -0
- data/lib/fog/shared_file_system/openstack/requests/update_share_network.rb +31 -0
- data/lib/fog/shared_file_system/openstack/requests/update_snapshot.rb +31 -0
- metadata +43 -2
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'fog/openstack/models/collection'
|
2
|
+
require 'fog/shared_file_system/openstack/models/network'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module SharedFileSystem
|
6
|
+
class OpenStack
|
7
|
+
class Networks < Fog::OpenStack::Collection
|
8
|
+
model Fog::SharedFileSystem::OpenStack::Network
|
9
|
+
|
10
|
+
def all(options = {})
|
11
|
+
load_response(service.list_share_networks_detail(options), 'share_networks')
|
12
|
+
end
|
13
|
+
|
14
|
+
def find_by_id(id)
|
15
|
+
net_hash = service.get_share_network(id).body['share_network']
|
16
|
+
new(net_hash.merge(:service => service))
|
17
|
+
end
|
18
|
+
|
19
|
+
alias get find_by_id
|
20
|
+
|
21
|
+
def destroy(id)
|
22
|
+
net = find_by_id(id)
|
23
|
+
net.destroy
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'fog/openstack/models/model'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module SharedFileSystem
|
5
|
+
class OpenStack
|
6
|
+
class Share < Fog::OpenStack::Model
|
7
|
+
identity :id
|
8
|
+
|
9
|
+
attribute :share_proto
|
10
|
+
attribute :size
|
11
|
+
attribute :status
|
12
|
+
attribute :links
|
13
|
+
attribute :share_type
|
14
|
+
attribute :share_type_name
|
15
|
+
attribute :availability_zone
|
16
|
+
attribute :share_network_id
|
17
|
+
attribute :share_server_id
|
18
|
+
attribute :host
|
19
|
+
attribute :snapshot_id
|
20
|
+
attribute :snapshot_support
|
21
|
+
attribute :task_state
|
22
|
+
attribute :access_rules_status
|
23
|
+
attribute :has_replicas
|
24
|
+
attribute :consistency_group_id
|
25
|
+
attribute :source_cgsnapshot_member_id
|
26
|
+
attribute :project_id
|
27
|
+
attribute :created_at
|
28
|
+
|
29
|
+
# optional
|
30
|
+
attribute :name
|
31
|
+
attribute :description
|
32
|
+
attribute :export_location
|
33
|
+
attribute :export_locations
|
34
|
+
attribute :metadata
|
35
|
+
attribute :is_public
|
36
|
+
attribute :volume_type
|
37
|
+
|
38
|
+
def save
|
39
|
+
raise Fog::Errors::Error, 'Resaving an existing object may create a duplicate' if persisted?
|
40
|
+
requires :size, :share_proto
|
41
|
+
merge_attributes(service.create_share(share_proto, size, attributes).body['share'])
|
42
|
+
true
|
43
|
+
end
|
44
|
+
|
45
|
+
def update(options = nil)
|
46
|
+
requires :id
|
47
|
+
merge_attributes(service.update_share(id, options || attributes).body['share'])
|
48
|
+
self
|
49
|
+
end
|
50
|
+
|
51
|
+
def destroy
|
52
|
+
requires :id
|
53
|
+
service.delete_share(id)
|
54
|
+
true
|
55
|
+
end
|
56
|
+
|
57
|
+
def ready?
|
58
|
+
status == 'available'
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'fog/openstack/models/collection'
|
2
|
+
require 'fog/shared_file_system/openstack/models/share'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module SharedFileSystem
|
6
|
+
class OpenStack
|
7
|
+
class Shares < Fog::OpenStack::Collection
|
8
|
+
model Fog::SharedFileSystem::OpenStack::Share
|
9
|
+
|
10
|
+
def all(options = {})
|
11
|
+
load_response(service.list_shares_detail(options), 'shares')
|
12
|
+
end
|
13
|
+
|
14
|
+
def find_by_id(id)
|
15
|
+
share_hash = service.get_share(id).body['share']
|
16
|
+
new(share_hash.merge(:service => service))
|
17
|
+
end
|
18
|
+
|
19
|
+
alias get find_by_id
|
20
|
+
|
21
|
+
def destroy(id)
|
22
|
+
share = find_by_id(id)
|
23
|
+
share.destroy
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'fog/openstack/models/model'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module SharedFileSystem
|
5
|
+
class OpenStack
|
6
|
+
class Snapshot < Fog::OpenStack::Model
|
7
|
+
identity :id
|
8
|
+
|
9
|
+
attribute :share_id
|
10
|
+
attribute :status
|
11
|
+
attribute :name
|
12
|
+
attribute :description
|
13
|
+
attribute :share_proto
|
14
|
+
attribute :share_size
|
15
|
+
attribute :size
|
16
|
+
attribute :provider_location
|
17
|
+
attribute :links
|
18
|
+
attribute :created_at
|
19
|
+
|
20
|
+
def save
|
21
|
+
raise Fog::Errors::Error, 'Resaving an existing object may create a duplicate' if persisted?
|
22
|
+
requires :share_id
|
23
|
+
merge_attributes(service.create_snapshot(share_id, attributes).body['snapshot'])
|
24
|
+
true
|
25
|
+
end
|
26
|
+
|
27
|
+
def update(options = nil)
|
28
|
+
requires :id
|
29
|
+
merge_attributes(service.update_snapshot(id, options || attributes).body['snapshot'])
|
30
|
+
self
|
31
|
+
end
|
32
|
+
|
33
|
+
def destroy
|
34
|
+
requires :id
|
35
|
+
service.delete_snapshot(id)
|
36
|
+
true
|
37
|
+
end
|
38
|
+
|
39
|
+
def ready?
|
40
|
+
status == 'available'
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'fog/openstack/models/collection'
|
2
|
+
require 'fog/shared_file_system/openstack/models/snapshot'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module SharedFileSystem
|
6
|
+
class OpenStack
|
7
|
+
class Snapshots < Fog::OpenStack::Collection
|
8
|
+
model Fog::SharedFileSystem::OpenStack::Snapshot
|
9
|
+
|
10
|
+
def all(options = {})
|
11
|
+
load_response(service.list_snapshots_detail(options), 'snapshots')
|
12
|
+
end
|
13
|
+
|
14
|
+
def find_by_id(id)
|
15
|
+
snapshot_hash = service.get_snapshot(id).body['snapshot']
|
16
|
+
new(snapshot_hash.merge(:service => service))
|
17
|
+
end
|
18
|
+
|
19
|
+
alias get find_by_id
|
20
|
+
|
21
|
+
def destroy(id)
|
22
|
+
snapshot = find_by_id(id)
|
23
|
+
snapshot.destroy
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module Fog
|
2
|
+
module SharedFileSystem
|
3
|
+
class OpenStack
|
4
|
+
class Real
|
5
|
+
def create_share(protocol, size, options = {})
|
6
|
+
data = {
|
7
|
+
'share_proto' => protocol,
|
8
|
+
'size' => size
|
9
|
+
}
|
10
|
+
|
11
|
+
vanilla_options = [
|
12
|
+
:name, :description, :display_name, :display_description, :share_type, :volume_type, :snapshot_id,
|
13
|
+
:is_public, :metadata, :share_network_id, :consistency_group_id, :availability_zone
|
14
|
+
]
|
15
|
+
|
16
|
+
vanilla_options.select { |o| options[o] }.each do |key|
|
17
|
+
data[key] = options[key]
|
18
|
+
end
|
19
|
+
|
20
|
+
request(
|
21
|
+
:body => Fog::JSON.encode('share' => data),
|
22
|
+
:expects => 200,
|
23
|
+
:method => 'POST',
|
24
|
+
:path => 'shares'
|
25
|
+
)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
class Mock
|
30
|
+
def create_share(protocol, size, options = {})
|
31
|
+
# stringify keys
|
32
|
+
options = Hash[options.map { |k, v| [k.to_s, v] }]
|
33
|
+
|
34
|
+
response = Excon::Response.new
|
35
|
+
response.status = 200
|
36
|
+
|
37
|
+
share = data[:shares_detail].first.dup
|
38
|
+
|
39
|
+
share['share_proto'] = protocol
|
40
|
+
share['size'] = size
|
41
|
+
share['status'] = 'creating'
|
42
|
+
|
43
|
+
response.body = {'share' => share.merge(options)}
|
44
|
+
response
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Fog
|
2
|
+
module SharedFileSystem
|
3
|
+
class OpenStack
|
4
|
+
class Real
|
5
|
+
def create_share_network(options = {})
|
6
|
+
data = {}
|
7
|
+
|
8
|
+
vanilla_options = [
|
9
|
+
:name, :description, :neutron_net_id, :neutron_subnet_id, :nova_net_id
|
10
|
+
]
|
11
|
+
|
12
|
+
vanilla_options.select { |o| options[o] }.each do |key|
|
13
|
+
data[key] = options[key]
|
14
|
+
end
|
15
|
+
|
16
|
+
request(
|
17
|
+
:body => Fog::JSON.encode('share_network' => data),
|
18
|
+
:expects => 200,
|
19
|
+
:method => 'POST',
|
20
|
+
:path => 'share-networks'
|
21
|
+
)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
class Mock
|
26
|
+
def create_share_network(options = {})
|
27
|
+
# stringify keys
|
28
|
+
options = Hash[options.map { |k, v| [k.to_s, v] }]
|
29
|
+
|
30
|
+
response = Excon::Response.new
|
31
|
+
response.status = 200
|
32
|
+
|
33
|
+
share_net = data[:share_networks_detail].first.dup
|
34
|
+
|
35
|
+
response.body = {'share_networks' => share_net.merge(options)}
|
36
|
+
response
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module Fog
|
2
|
+
module SharedFileSystem
|
3
|
+
class OpenStack
|
4
|
+
class Real
|
5
|
+
def create_snapshot(share_id, options = {})
|
6
|
+
data = {
|
7
|
+
'share_id' => share_id
|
8
|
+
}
|
9
|
+
|
10
|
+
vanilla_options = [
|
11
|
+
:name, :description, :display_name, :display_description, :force
|
12
|
+
]
|
13
|
+
|
14
|
+
vanilla_options.select { |o| options[o] }.each do |key|
|
15
|
+
data[key] = options[key]
|
16
|
+
end
|
17
|
+
|
18
|
+
request(
|
19
|
+
:body => Fog::JSON.encode('snapshot' => data),
|
20
|
+
:expects => 202,
|
21
|
+
:method => 'POST',
|
22
|
+
:path => 'snapshots'
|
23
|
+
)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
class Mock
|
28
|
+
def create_snapshot(share_id, options = {})
|
29
|
+
# stringify keys
|
30
|
+
options = Hash[options.map { |k, v| [k.to_s, v] }]
|
31
|
+
|
32
|
+
response = Excon::Response.new
|
33
|
+
response.status = 202
|
34
|
+
|
35
|
+
snapshot = data[:snapshots_detail].first.dup
|
36
|
+
|
37
|
+
snapshot['share_id'] = share_id
|
38
|
+
snapshot['status'] = 'creating'
|
39
|
+
|
40
|
+
response.body = {'snapshot' => snapshot.merge(options)}
|
41
|
+
response
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Fog
|
2
|
+
module SharedFileSystem
|
3
|
+
class OpenStack
|
4
|
+
class Real
|
5
|
+
def delete_share(id)
|
6
|
+
request(
|
7
|
+
:expects => 202,
|
8
|
+
:method => 'DELETE',
|
9
|
+
:path => "shares/#{id}"
|
10
|
+
)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class Mock
|
15
|
+
def delete_share(id)
|
16
|
+
response = Excon::Response.new
|
17
|
+
response.status = 202
|
18
|
+
|
19
|
+
share = data[:share_updated] || data[:shares_detail].first.dup
|
20
|
+
share['id'] = id
|
21
|
+
share['links']['self'] = "https://127.0.0.1:8786/v2/shares/#{id}"
|
22
|
+
|
23
|
+
response.body = {'share' => share}
|
24
|
+
response
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Fog
|
2
|
+
module SharedFileSystem
|
3
|
+
class OpenStack
|
4
|
+
class Real
|
5
|
+
def delete_share_network(id)
|
6
|
+
request(
|
7
|
+
:expects => 202,
|
8
|
+
:method => 'DELETE',
|
9
|
+
:path => "share-networks/#{id}"
|
10
|
+
)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class Mock
|
15
|
+
def delete_share_network(id)
|
16
|
+
response = Excon::Response.new
|
17
|
+
response.status = 202
|
18
|
+
|
19
|
+
share_net = data[:share_net_updated] || data[:share_networks_detail].first.dup
|
20
|
+
share_net['id'] = id
|
21
|
+
|
22
|
+
response.body = {'share_network' => share_net}
|
23
|
+
response
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Fog
|
2
|
+
module SharedFileSystem
|
3
|
+
class OpenStack
|
4
|
+
class Real
|
5
|
+
def delete_snapshot(id)
|
6
|
+
request(
|
7
|
+
:expects => 202,
|
8
|
+
:method => 'DELETE',
|
9
|
+
:path => "snapshots/#{id}"
|
10
|
+
)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class Mock
|
15
|
+
def delete_snapshot(id)
|
16
|
+
response = Excon::Response.new
|
17
|
+
response.status = 202
|
18
|
+
|
19
|
+
snapshot = data[:snapshot_updated] || data[:snapshots_detail].first.dup
|
20
|
+
snapshot['id'] = id
|
21
|
+
snapshot['status'] = 'deleting'
|
22
|
+
snapshot['links']['self'] = "https://127.0.0.1:8786/v2/snapshots/#{id}"
|
23
|
+
|
24
|
+
response.body = {'snapshot' => snapshot}
|
25
|
+
response
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Fog
|
2
|
+
module SharedFileSystem
|
3
|
+
class OpenStack
|
4
|
+
class Real
|
5
|
+
def get_share(id)
|
6
|
+
request(
|
7
|
+
:expects => 200,
|
8
|
+
:method => 'GET',
|
9
|
+
:path => "shares/#{id}"
|
10
|
+
)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class Mock
|
15
|
+
def get_share(id)
|
16
|
+
response = Excon::Response.new
|
17
|
+
response.status = 200
|
18
|
+
share = data[:share_updated] || data[:shares_detail].first
|
19
|
+
share['id'] = id
|
20
|
+
response.body = share
|
21
|
+
response
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|