fog-openstack 0.1.17 → 0.1.18
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/examples/container_infra/basics.rb +61 -0
- data/examples/identity/basics_v3.rb +83 -0
- data/lib/fog/container_infra/openstack.rb +163 -0
- data/lib/fog/container_infra/openstack/models/base.rb +19 -0
- data/lib/fog/container_infra/openstack/models/bay.rb +56 -0
- data/lib/fog/container_infra/openstack/models/bay_model.rb +62 -0
- data/lib/fog/container_infra/openstack/models/bay_models.rb +23 -0
- data/lib/fog/container_infra/openstack/models/bays.rb +23 -0
- data/lib/fog/container_infra/openstack/models/certificate.rb +20 -0
- data/lib/fog/container_infra/openstack/models/certificates.rb +25 -0
- data/lib/fog/container_infra/openstack/models/cluster.rb +56 -0
- data/lib/fog/container_infra/openstack/models/cluster_template.rb +61 -0
- data/lib/fog/container_infra/openstack/models/cluster_templates.rb +24 -0
- data/lib/fog/container_infra/openstack/models/clusters.rb +24 -0
- data/lib/fog/container_infra/openstack/requests/create_bay.rb +27 -0
- data/lib/fog/container_infra/openstack/requests/create_bay_model.rb +56 -0
- data/lib/fog/container_infra/openstack/requests/create_certificate.rb +29 -0
- data/lib/fog/container_infra/openstack/requests/create_cluster.rb +27 -0
- data/lib/fog/container_infra/openstack/requests/create_cluster_template.rb +56 -0
- data/lib/fog/container_infra/openstack/requests/delete_bay.rb +24 -0
- data/lib/fog/container_infra/openstack/requests/delete_bay_model.rb +24 -0
- data/lib/fog/container_infra/openstack/requests/delete_cluster.rb +24 -0
- data/lib/fog/container_infra/openstack/requests/delete_cluster_template.rb +24 -0
- data/lib/fog/container_infra/openstack/requests/get_bay.rb +51 -0
- data/lib/fog/container_infra/openstack/requests/get_bay_model.rb +55 -0
- data/lib/fog/container_infra/openstack/requests/get_certificate.rb +27 -0
- data/lib/fog/container_infra/openstack/requests/get_cluster.rb +41 -0
- data/lib/fog/container_infra/openstack/requests/get_cluster_template.rb +55 -0
- data/lib/fog/container_infra/openstack/requests/list_bay_models.rb +69 -0
- data/lib/fog/container_infra/openstack/requests/list_bays.rb +55 -0
- data/lib/fog/container_infra/openstack/requests/list_cluster_templates.rb +59 -0
- data/lib/fog/container_infra/openstack/requests/list_clusters.rb +37 -0
- data/lib/fog/container_infra/openstack/requests/update_bay.rb +27 -0
- data/lib/fog/container_infra/openstack/requests/update_bay_model.rb +56 -0
- data/lib/fog/container_infra/openstack/requests/update_cluster.rb +27 -0
- data/lib/fog/container_infra/openstack/requests/update_cluster_template.rb +56 -0
- data/lib/fog/key_manager/openstack.rb +103 -0
- data/lib/fog/key_manager/openstack/models/container.rb +44 -0
- data/lib/fog/key_manager/openstack/models/containers.rb +25 -0
- data/lib/fog/key_manager/openstack/models/secret.rb +53 -0
- data/lib/fog/key_manager/openstack/models/secrets.rb +25 -0
- data/lib/fog/key_manager/openstack/requests/create_container.rb +19 -0
- data/lib/fog/key_manager/openstack/requests/create_secret.rb +19 -0
- data/lib/fog/key_manager/openstack/requests/delete_container.rb +18 -0
- data/lib/fog/key_manager/openstack/requests/delete_secret.rb +18 -0
- data/lib/fog/key_manager/openstack/requests/get_container.rb +18 -0
- data/lib/fog/key_manager/openstack/requests/get_secret.rb +18 -0
- data/lib/fog/key_manager/openstack/requests/get_secret_metadata.rb +18 -0
- data/lib/fog/key_manager/openstack/requests/get_secret_payload.rb +21 -0
- data/lib/fog/key_manager/openstack/requests/list_containers.rb +19 -0
- data/lib/fog/key_manager/openstack/requests/list_secrets.rb +19 -0
- data/lib/fog/network/openstack.rb +50 -1
- data/lib/fog/network/openstack/requests/create_lbaas_healthmonitor.rb +57 -0
- data/lib/fog/network/openstack/requests/create_lbaas_listener.rb +55 -0
- data/lib/fog/network/openstack/requests/create_lbaas_loadbalancer.rb +52 -0
- data/lib/fog/network/openstack/requests/create_lbaas_pool.rb +53 -0
- data/lib/fog/network/openstack/requests/create_lbaas_pool_member.rb +49 -0
- data/lib/fog/network/openstack/requests/delete_lbaas_healthmonitor.rb +28 -0
- data/lib/fog/network/openstack/requests/delete_lbaas_listener.rb +28 -0
- data/lib/fog/network/openstack/requests/delete_lbaas_loadbalancer.rb +28 -0
- data/lib/fog/network/openstack/requests/delete_lbaas_pool.rb +28 -0
- data/lib/fog/network/openstack/requests/delete_lbaas_pool_member.rb +28 -0
- data/lib/fog/network/openstack/requests/get_lbaas_healthmonitor.rb +28 -0
- data/lib/fog/network/openstack/requests/get_lbaas_listener.rb +28 -0
- data/lib/fog/network/openstack/requests/get_lbaas_loadbalancer.rb +28 -0
- data/lib/fog/network/openstack/requests/get_lbaas_pool.rb +28 -0
- data/lib/fog/network/openstack/requests/get_lbaas_pool_member.rb +28 -0
- data/lib/fog/network/openstack/requests/list_lbaas_healthmonitors.rb +25 -0
- data/lib/fog/network/openstack/requests/list_lbaas_listeners.rb +25 -0
- data/lib/fog/network/openstack/requests/list_lbaas_loadbalancers.rb +25 -0
- data/lib/fog/network/openstack/requests/list_lbaas_pool_members.rb +25 -0
- data/lib/fog/network/openstack/requests/list_lbaas_pools.rb +25 -0
- data/lib/fog/network/openstack/requests/update_lbaas_healthmonitor.rb +43 -0
- data/lib/fog/network/openstack/requests/update_lbaas_listener.rb +45 -0
- data/lib/fog/network/openstack/requests/update_lbaas_loadbalancer.rb +41 -0
- data/lib/fog/network/openstack/requests/update_lbaas_pool.rb +40 -0
- data/lib/fog/network/openstack/requests/update_lbaas_pool_member.rb +39 -0
- data/lib/fog/openstack.rb +10 -0
- data/lib/fog/openstack/version.rb +7 -1
- metadata +78 -2
@@ -0,0 +1,59 @@
|
|
1
|
+
module Fog
|
2
|
+
module ContainerInfra
|
3
|
+
class OpenStack
|
4
|
+
class Real
|
5
|
+
def list_cluster_templates
|
6
|
+
request(
|
7
|
+
:expects => [200],
|
8
|
+
:method => 'GET',
|
9
|
+
:path => "clustertemplates/detail"
|
10
|
+
)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class Mock
|
15
|
+
def list_cluster_templates
|
16
|
+
response = Excon::Response.new
|
17
|
+
response.status = 200
|
18
|
+
response.body = {
|
19
|
+
"clustertemplates" => [
|
20
|
+
{
|
21
|
+
"insecure_registry" => nil,
|
22
|
+
"http_proxy" => "http://10.164.177.169:8080",
|
23
|
+
"updated_at" => nil,
|
24
|
+
"floating_ip_enabled" => true,
|
25
|
+
"fixed_subnet" => nil,
|
26
|
+
"master_flavor_id" => nil,
|
27
|
+
"uuid" => "0562d357-8641-4759-8fed-8173f02c9633",
|
28
|
+
"no_proxy" => "10.0.0.0/8,172.0.0.0/8,192.0.0.0/8,localhost",
|
29
|
+
"https_proxy" => "http://10.164.177.169:8080",
|
30
|
+
"tls_disabled" => false,
|
31
|
+
"keypair_id" => "kp",
|
32
|
+
"public" => false,
|
33
|
+
"labels" => {},
|
34
|
+
"docker_volume_size" => 3,
|
35
|
+
"server_type" => "vm",
|
36
|
+
"external_network_id" => "public",
|
37
|
+
"cluster_distro" => "fedora-atomic",
|
38
|
+
"image_id" => "fedora-atomic-latest",
|
39
|
+
"volume_driver" => "cinder",
|
40
|
+
"registry_enabled" => false,
|
41
|
+
"docker_storage_driver" => "devicemapper",
|
42
|
+
"apiserver_port" => nil,
|
43
|
+
"name" => "k8s-bm",
|
44
|
+
"created_at" => "2016-08-26T09:34:41+00:00",
|
45
|
+
"network_driver" => "flannel",
|
46
|
+
"fixed_network" => nil,
|
47
|
+
"coe" => "kubernetes",
|
48
|
+
"flavor_id" => "m1.small",
|
49
|
+
"master_lb_enabled" => false,
|
50
|
+
"dns_nameserver" => "8.8.8.8"
|
51
|
+
}
|
52
|
+
]
|
53
|
+
}
|
54
|
+
response
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Fog
|
2
|
+
module ContainerInfra
|
3
|
+
class OpenStack
|
4
|
+
class Real
|
5
|
+
def list_clusters
|
6
|
+
request(
|
7
|
+
:expects => [200],
|
8
|
+
:method => 'GET',
|
9
|
+
:path => "clusters/detail"
|
10
|
+
)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class Mock
|
15
|
+
def list_clusters
|
16
|
+
response = Excon::Response.new
|
17
|
+
response.status = 200
|
18
|
+
response.body = {
|
19
|
+
"clusters" => [
|
20
|
+
{
|
21
|
+
"status" => "CREATE_IN_PROGRESS",
|
22
|
+
"cluster_template_id" => "0562d357-8641-4759-8fed-8173f02c9633",
|
23
|
+
"uuid" => "731387cf-a92b-4c36-981e-3271d63e5597",
|
24
|
+
"stack_id" => "31c1ee6c-081e-4f39-9f0f-f1d87a7defa1",
|
25
|
+
"master_count" => 1,
|
26
|
+
"create_timeout" => 60,
|
27
|
+
"node_count" => 1,
|
28
|
+
"name" => "k8s"
|
29
|
+
}
|
30
|
+
]
|
31
|
+
}
|
32
|
+
response
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Fog
|
2
|
+
module ContainerInfra
|
3
|
+
class OpenStack
|
4
|
+
class Real
|
5
|
+
def update_bay(uuid_or_name, params)
|
6
|
+
request(
|
7
|
+
:expects => [202, 200],
|
8
|
+
:method => 'PATCH',
|
9
|
+
:path => "bays/#{uuid_or_name}",
|
10
|
+
:body => Fog::JSON.encode(params)
|
11
|
+
)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class Mock
|
16
|
+
def update_bay(_uuid_or_name, _params)
|
17
|
+
response = Excon::Response.new
|
18
|
+
response.status = 202
|
19
|
+
response.body = {
|
20
|
+
"uuid" => "746e779a-751a-456b-a3e9-c883d734946f"
|
21
|
+
}
|
22
|
+
response
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module Fog
|
2
|
+
module ContainerInfra
|
3
|
+
class OpenStack
|
4
|
+
class Real
|
5
|
+
def update_bay_model(uuid_or_name, params)
|
6
|
+
request(
|
7
|
+
:expects => [200],
|
8
|
+
:method => 'PATCH',
|
9
|
+
:path => "baymodels/#{uuid_or_name}",
|
10
|
+
:body => Fog::JSON.encode(params)
|
11
|
+
)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class Mock
|
16
|
+
def update_bay_model(_uuid_or_name, _params)
|
17
|
+
response = Excon::Response.new
|
18
|
+
response.status = 200
|
19
|
+
response.body = {
|
20
|
+
"insecure_registry" => nil,
|
21
|
+
"http_proxy" => "http://10.164.177.169:8080",
|
22
|
+
"updated_at" => nil,
|
23
|
+
"floating_ip_enabled" => true,
|
24
|
+
"fixed_subnet" => nil,
|
25
|
+
"master_flavor_id" => nil,
|
26
|
+
"uuid" => "085e1c4d-4f68-4bfd-8462-74b9e14e4f39",
|
27
|
+
"no_proxy" => "10.0.0.0/8,172.0.0.0/8,192.0.0.0/8,localhost",
|
28
|
+
"https_proxy" => "http://10.164.177.169:8080",
|
29
|
+
"tls_disabled" => false,
|
30
|
+
"keypair_id" => "kp",
|
31
|
+
"public" => false,
|
32
|
+
"labels" => {},
|
33
|
+
"docker_volume_size" => 3,
|
34
|
+
"server_type" => "vm",
|
35
|
+
"external_network_id" => "public",
|
36
|
+
"cluster_distro" => "fedora-atomic",
|
37
|
+
"image_id" => "fedora-atomic-latest",
|
38
|
+
"volume_driver" => "cinder",
|
39
|
+
"registry_enabled" => false,
|
40
|
+
"docker_storage_driver" => "devicemapper",
|
41
|
+
"apiserver_port" => nil,
|
42
|
+
"name" => "rename-test-bay-model",
|
43
|
+
"created_at" => "2016-08-29T02:08:08+00:00",
|
44
|
+
"network_driver" => "flannel",
|
45
|
+
"fixed_network" => nil,
|
46
|
+
"coe" => "kubernetes",
|
47
|
+
"flavor_id" => "m1.small",
|
48
|
+
"master_lb_enabled" => true,
|
49
|
+
"dns_nameserver" => "8.8.8.8",
|
50
|
+
}
|
51
|
+
response
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Fog
|
2
|
+
module ContainerInfra
|
3
|
+
class OpenStack
|
4
|
+
class Real
|
5
|
+
def update_cluster(uuid_or_name, params)
|
6
|
+
request(
|
7
|
+
:expects => [202, 200],
|
8
|
+
:method => 'PATCH',
|
9
|
+
:path => "clusters/#{uuid_or_name}",
|
10
|
+
:body => Fog::JSON.encode(params)
|
11
|
+
)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class Mock
|
16
|
+
def update_cluster(_uuid_or_name, _params)
|
17
|
+
response = Excon::Response.new
|
18
|
+
response.status = 202
|
19
|
+
response.body = {
|
20
|
+
"uuid" => "746e779a-751a-456b-a3e9-c883d734946f"
|
21
|
+
}
|
22
|
+
response
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module Fog
|
2
|
+
module ContainerInfra
|
3
|
+
class OpenStack
|
4
|
+
class Real
|
5
|
+
def update_cluster_template(uuid_or_name, params)
|
6
|
+
request(
|
7
|
+
:expects => [200],
|
8
|
+
:method => 'PATCH',
|
9
|
+
:path => "clustertemplates/#{uuid_or_name}",
|
10
|
+
:body => Fog::JSON.encode(params)
|
11
|
+
)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class Mock
|
16
|
+
def update_cluster_template(_uuid_or_name, _params)
|
17
|
+
response = Excon::Response.new
|
18
|
+
response.status = 200
|
19
|
+
response.body = {
|
20
|
+
"insecure_registry" => nil,
|
21
|
+
"http_proxy" => "http://10.164.177.169:8080",
|
22
|
+
"updated_at" => nil,
|
23
|
+
"floating_ip_enabled" => true,
|
24
|
+
"fixed_subnet" => nil,
|
25
|
+
"master_flavor_id" => nil,
|
26
|
+
"uuid" => "085e1c4d-4f68-4bfd-8462-74b9e14e4f39",
|
27
|
+
"no_proxy" => "10.0.0.0/8,172.0.0.0/8,192.0.0.0/8,localhost",
|
28
|
+
"https_proxy" => "http://10.164.177.169:8080",
|
29
|
+
"tls_disabled" => false,
|
30
|
+
"keypair_id" => "kp",
|
31
|
+
"public" => false,
|
32
|
+
"labels" => {},
|
33
|
+
"docker_volume_size" => 3,
|
34
|
+
"server_type" => "vm",
|
35
|
+
"external_network_id" => "public",
|
36
|
+
"cluster_distro" => "fedora-atomic",
|
37
|
+
"image_id" => "fedora-atomic-latest",
|
38
|
+
"volume_driver" => "cinder",
|
39
|
+
"registry_enabled" => false,
|
40
|
+
"docker_storage_driver" => "devicemapper",
|
41
|
+
"apiserver_port" => nil,
|
42
|
+
"name" => "rename-test-cluster-template",
|
43
|
+
"created_at" => "2016-08-29T02:08:08+00:00",
|
44
|
+
"network_driver" => "flannel",
|
45
|
+
"fixed_network" => nil,
|
46
|
+
"coe" => "kubernetes",
|
47
|
+
"flavor_id" => "m1.small",
|
48
|
+
"master_lb_enabled" => true,
|
49
|
+
"dns_nameserver" => "8.8.8.8"
|
50
|
+
}
|
51
|
+
response
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,103 @@
|
|
1
|
+
module Fog
|
2
|
+
module KeyManager
|
3
|
+
class OpenStack < Fog::Service
|
4
|
+
SUPPORTED_VERSIONS = /v1(\.0)*/
|
5
|
+
|
6
|
+
requires :openstack_auth_url
|
7
|
+
recognizes :openstack_auth_token, :openstack_management_url,
|
8
|
+
:persistent, :openstack_service_type, :openstack_service_name,
|
9
|
+
:openstack_tenant, :openstack_tenant_id, :openstack_userid,
|
10
|
+
:openstack_api_key, :openstack_username, :openstack_identity_endpoint,
|
11
|
+
:current_user, :current_tenant, :openstack_region,
|
12
|
+
:openstack_endpoint_type, :openstack_auth_omit_default_port,
|
13
|
+
:openstack_project_name, :openstack_project_id,
|
14
|
+
:openstack_project_domain, :openstack_user_domain, :openstack_domain_name,
|
15
|
+
:openstack_project_domain_id, :openstack_user_domain_id, :openstack_domain_id,
|
16
|
+
:openstack_identity_prefix, :openstack_temp_url_key, :openstack_cache_ttl
|
17
|
+
|
18
|
+
|
19
|
+
## MODELS
|
20
|
+
#
|
21
|
+
model_path 'fog/key_manager/openstack/models'
|
22
|
+
model :secret
|
23
|
+
collection :secrets
|
24
|
+
model :container
|
25
|
+
collection :containers
|
26
|
+
|
27
|
+
## REQUESTS
|
28
|
+
|
29
|
+
# secrets
|
30
|
+
request_path 'fog/key_manager/openstack/requests'
|
31
|
+
request :create_secret
|
32
|
+
request :list_secrets
|
33
|
+
request :get_secret
|
34
|
+
request :get_secret_payload
|
35
|
+
request :get_secret_metadata
|
36
|
+
request :delete_secret
|
37
|
+
|
38
|
+
# containers
|
39
|
+
request :create_container
|
40
|
+
request :get_container
|
41
|
+
request :list_containers
|
42
|
+
request :delete_container
|
43
|
+
|
44
|
+
class Real
|
45
|
+
include Fog::OpenStack::Core
|
46
|
+
|
47
|
+
def self.not_found_class
|
48
|
+
Fog::KeyManager::OpenStack::NotFound
|
49
|
+
end
|
50
|
+
|
51
|
+
def initialize(options = {})
|
52
|
+
initialize_identity options
|
53
|
+
|
54
|
+
@openstack_service_type = options[:openstack_service_type] || ['key-manager']
|
55
|
+
@openstack_service_name = options[:openstack_service_name]
|
56
|
+
@connection_options = options[:connection_options] || {}
|
57
|
+
|
58
|
+
authenticate
|
59
|
+
set_api_path
|
60
|
+
|
61
|
+
@persistent = options[:persistent] || false
|
62
|
+
@connection = Fog::Core::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
|
63
|
+
end
|
64
|
+
|
65
|
+
def set_api_path
|
66
|
+
@path.sub!(%r{/$}, '')
|
67
|
+
unless @path.match(SUPPORTED_VERSIONS)
|
68
|
+
@path = supported_version(SUPPORTED_VERSIONS, @openstack_management_uri, @auth_token, @connection_options)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def supported_version(supported_versions, uri, auth_token, connection_options = {})
|
73
|
+
connection = Fog::Core::Connection.new("#{uri.scheme}://#{uri.host}:#{uri.port}", false, connection_options)
|
74
|
+
response = connection.request({ :expects => [200, 204, 300],
|
75
|
+
:headers => {'Content-Type' => 'application/json',
|
76
|
+
'Accept' => 'application/json',
|
77
|
+
'X-Auth-Token' => auth_token},
|
78
|
+
:method => 'GET'
|
79
|
+
})
|
80
|
+
|
81
|
+
body = Fog::JSON.decode(response.body)
|
82
|
+
version = nil
|
83
|
+
|
84
|
+
versions = body.fetch('versions',{}).fetch('values',[])
|
85
|
+
versions.each do |v|
|
86
|
+
if v.fetch('id', "").match(supported_versions) &&
|
87
|
+
['current', 'supported', 'stable'].include?(v.fetch('status','').downcase)
|
88
|
+
version = v['id']
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
if version.blank?
|
93
|
+
raise Fog::OpenStack::Errors::ServiceUnavailable.new(
|
94
|
+
"OpenStack service only supports API versions #{supported_versions.inspect}")
|
95
|
+
end
|
96
|
+
|
97
|
+
version
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'fog/openstack/models/model'
|
2
|
+
require 'uri'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module KeyManager
|
6
|
+
class OpenStack
|
7
|
+
|
8
|
+
class Container < Fog::OpenStack::Model
|
9
|
+
identity :container_ref
|
10
|
+
|
11
|
+
attribute :uuid
|
12
|
+
attribute :name
|
13
|
+
attribute :type
|
14
|
+
attribute :status
|
15
|
+
attribute :creator_id
|
16
|
+
|
17
|
+
attribute :secret_refs
|
18
|
+
attribute :consumers
|
19
|
+
|
20
|
+
attribute :created
|
21
|
+
attribute :updated
|
22
|
+
|
23
|
+
def uuid
|
24
|
+
URI(self.container_ref).path.split('/').last
|
25
|
+
rescue
|
26
|
+
nil
|
27
|
+
end
|
28
|
+
|
29
|
+
def create
|
30
|
+
merge_attributes(service.create_container(attributes).body)
|
31
|
+
self
|
32
|
+
end
|
33
|
+
|
34
|
+
def destroy
|
35
|
+
requires :container_ref
|
36
|
+
service.delete_container(uuid)
|
37
|
+
true
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'fog/openstack/models/collection'
|
2
|
+
require 'fog/key_manager/openstack/models/container'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module KeyManager
|
6
|
+
class OpenStack
|
7
|
+
class Containers < Fog::OpenStack::Collection
|
8
|
+
model Fog::KeyManager::OpenStack::Container
|
9
|
+
|
10
|
+
def all(options = {})
|
11
|
+
load_response(service.list_containers(options), 'containers')
|
12
|
+
end
|
13
|
+
|
14
|
+
def get(secret_ref)
|
15
|
+
if secret = service.get_container(secret_ref).body
|
16
|
+
new(secret)
|
17
|
+
end
|
18
|
+
rescue Fog::Compute::OpenStack::NotFound
|
19
|
+
nil
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'fog/openstack/models/model'
|
2
|
+
require 'uri'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module KeyManager
|
6
|
+
class OpenStack
|
7
|
+
|
8
|
+
class Secret < Fog::OpenStack::Model
|
9
|
+
identity :secret_ref
|
10
|
+
|
11
|
+
# create
|
12
|
+
attribute :uuid
|
13
|
+
attribute :name
|
14
|
+
attribute :expiration
|
15
|
+
attribute :bit_length, type: Integer
|
16
|
+
attribute :algorithm
|
17
|
+
attribute :mode
|
18
|
+
attribute :secret_type
|
19
|
+
|
20
|
+
attribute :content_types
|
21
|
+
attribute :created
|
22
|
+
attribute :creator_id
|
23
|
+
attribute :status
|
24
|
+
attribute :updated
|
25
|
+
|
26
|
+
attribute :payload
|
27
|
+
attribute :payload_content_type
|
28
|
+
attribute :payload_content_encoding
|
29
|
+
|
30
|
+
attribute :metadata
|
31
|
+
|
32
|
+
def uuid
|
33
|
+
URI(self.secret_ref).path.split('/').last
|
34
|
+
rescue
|
35
|
+
nil
|
36
|
+
end
|
37
|
+
|
38
|
+
def create
|
39
|
+
merge_attributes(service.create_secret(attributes).body)
|
40
|
+
self
|
41
|
+
end
|
42
|
+
|
43
|
+
def destroy
|
44
|
+
requires :secret_ref
|
45
|
+
service.delete_secret(uuid)
|
46
|
+
true
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|