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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8ad255185b61e76ee76ad8d89711b167918a27f7
|
4
|
+
data.tar.gz: b02a996a6244f9d382d619086358f15209d5ce27
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0a4dace55598a9e1da519522da4d133d53b617e64f7b4f9492fdb0e559074b21abc0f00d64163a40544b0c75160ea231af452664ecda648cc104c612f727d92c
|
7
|
+
data.tar.gz: 1bed7b31da6d4529b432d4e55254dc56259e7810a60e9731895cb2d839b34380379c4c5aa86d3bec8cd5cda77f813e72073e5071ffba81201735169439987fc8
|
data/.gitignore
CHANGED
@@ -0,0 +1,61 @@
|
|
1
|
+
# OpenStack Container Infra (Magnum) Example
|
2
|
+
require 'fog/openstack'
|
3
|
+
|
4
|
+
# Initialize a connection to the Magnum API
|
5
|
+
params = {
|
6
|
+
openstack_auth_url: 'https://example.net/v3/auth/tokens',
|
7
|
+
openstack_username: 'username',
|
8
|
+
openstack_api_key: 'password',
|
9
|
+
openstack_project_name: 'magnum'
|
10
|
+
}
|
11
|
+
|
12
|
+
container_infra = Fog::ContainerInfra::OpenStack.new(params)
|
13
|
+
|
14
|
+
# Get the Fedora Atomic image
|
15
|
+
image = Fog::Image::OpenStack.new(params)
|
16
|
+
|
17
|
+
unless image.images.map(&:name).include?("fedora-atomic-latest")
|
18
|
+
puts "Couldn't find Fedora Atomic. Uploading to Glance..."
|
19
|
+
fedora = image.images.create name: "fedora-atomic-latest",
|
20
|
+
disk_format: "qcow2",
|
21
|
+
visibility: 'public',
|
22
|
+
container_format: 'bare',
|
23
|
+
copy_from: 'https://fedorapeople.org/groups/magnum/fedora-atomic-latest.qcow2',
|
24
|
+
properties: {'os_distro' => 'fedora-atomic'}.to_json
|
25
|
+
fedora.wait_for { status == "active" }
|
26
|
+
end
|
27
|
+
|
28
|
+
# Create a cluster template for using Docker Swarm and Fedora Atomic
|
29
|
+
params = {
|
30
|
+
name: 'swarm-cluster-template',
|
31
|
+
image_id: 'fedora-atomic-latest',
|
32
|
+
keypair_id: 'YOUR_KEYPAIR_NAME',
|
33
|
+
external_network_id: 'public',
|
34
|
+
master_flavor_id: 'm1.small',
|
35
|
+
flavor_id: 'm1.small',
|
36
|
+
coe: 'swarm',
|
37
|
+
docker_volume_size: 3,
|
38
|
+
dns_nameserver: '8.8.8.8',
|
39
|
+
tls_disabled: true
|
40
|
+
}
|
41
|
+
|
42
|
+
cluster_template = container_infra.cluster_templates.create(params)
|
43
|
+
puts "Created cluster template #{cluster_template.name} (#{cluster_template.uuid})"
|
44
|
+
|
45
|
+
# Create a swarm cluster and wait for it to build
|
46
|
+
params = {
|
47
|
+
name: 'swarm-cluster',
|
48
|
+
cluster_template_id: 'swarm-cluster-template',
|
49
|
+
master_count: 1,
|
50
|
+
node_count: 1
|
51
|
+
}
|
52
|
+
|
53
|
+
cluster = container_infra.clusters.create(params)
|
54
|
+
start = Time.now
|
55
|
+
puts "Building cluster #{cluster.name} (#{cluster.uuid})"
|
56
|
+
|
57
|
+
cluster.wait_for { status != 'CREATE_IN_PROGRESS' }
|
58
|
+
|
59
|
+
puts "Finished building #{cluster.name} in #{(Time.now - start).round} seconds. Status: #{cluster.status}."
|
60
|
+
|
61
|
+
puts "More info: #{cluster.status_reason}" if cluster.status == 'CREATE_FAILED'
|
@@ -0,0 +1,83 @@
|
|
1
|
+
# OpenStack Identity Service (Keystone) Example
|
2
|
+
|
3
|
+
require 'fog/openstack'
|
4
|
+
require 'pp'
|
5
|
+
|
6
|
+
auth_url = "https://example.net:35357/v3/auth/tokens"
|
7
|
+
username = 'admin@example.net'
|
8
|
+
password = 'secret'
|
9
|
+
project = 'admin'
|
10
|
+
domain = 'Default'
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
keystone = Fog::Identity::OpenStack.new :openstack_auth_url => auth_url,
|
15
|
+
:openstack_username => username,
|
16
|
+
:openstack_api_key => password,
|
17
|
+
:openstack_project_name => project,
|
18
|
+
:openstack_domain_name => domain
|
19
|
+
# Optional, self-signed certs
|
20
|
+
#:connection_options => { :ssl_verify_peer => false }
|
21
|
+
|
22
|
+
#
|
23
|
+
# List keystone projects
|
24
|
+
#
|
25
|
+
keystone.projects.each do |project|
|
26
|
+
#<Fog::Identity::OpenStack::V3::Project
|
27
|
+
# id="17775c",
|
28
|
+
# domain_id="default",
|
29
|
+
# description="admin tenant",
|
30
|
+
# enabled=true,
|
31
|
+
# name="admin",
|
32
|
+
# links={"self"=>"http://example.net:35357/..."},
|
33
|
+
# parent_id=nil,
|
34
|
+
# subtree=nil,
|
35
|
+
# parents=nil
|
36
|
+
#>
|
37
|
+
# ...
|
38
|
+
pp project
|
39
|
+
end
|
40
|
+
|
41
|
+
#
|
42
|
+
# List users
|
43
|
+
#
|
44
|
+
keystone.users.each do |user|
|
45
|
+
#<Fog::Identity::OpenStack::V3::User
|
46
|
+
# id="02124b...",
|
47
|
+
# default_project_id=2f534e...,
|
48
|
+
# description=nil,
|
49
|
+
# domain_id="default",
|
50
|
+
# email="quantum@example.net",
|
51
|
+
# enabled=true,
|
52
|
+
# name="quantum",
|
53
|
+
# links={"self"=>"http://example.net:35357/..."},
|
54
|
+
# password=nil
|
55
|
+
#>
|
56
|
+
# ...
|
57
|
+
pp user
|
58
|
+
end
|
59
|
+
|
60
|
+
#
|
61
|
+
# Create a new tenant
|
62
|
+
#
|
63
|
+
project = keystone.projects.create :name => 'rubiojr@example.net',
|
64
|
+
:description => 'My foo tenant'
|
65
|
+
|
66
|
+
#
|
67
|
+
# Create a new user
|
68
|
+
#
|
69
|
+
user = keystone.users.create :name => 'rubiojr@example.net',
|
70
|
+
:default_project_id => project.id,
|
71
|
+
:password => 'rubiojr@example.net',
|
72
|
+
:email => 'rubiojr@example.net',
|
73
|
+
:domain_id => 'Default'
|
74
|
+
|
75
|
+
# Find the recently created tenant
|
76
|
+
project = keystone.projects.find { |t| t.name == 'rubiojr@example.net' }
|
77
|
+
# Destroy the tenant
|
78
|
+
project.destroy
|
79
|
+
|
80
|
+
# Find the recently created user
|
81
|
+
user = keystone.users.find { |u| u.name == 'rubiojr@example.net' }
|
82
|
+
# Destroy the user
|
83
|
+
user.destroy
|
@@ -0,0 +1,163 @@
|
|
1
|
+
module Fog
|
2
|
+
module ContainerInfra
|
3
|
+
class OpenStack < Fog::Service
|
4
|
+
SUPPORTED_VERSIONS = /v1/
|
5
|
+
SUPPORTED_MICROVERSION = '1.3'
|
6
|
+
|
7
|
+
requires :openstack_auth_url
|
8
|
+
recognizes :openstack_auth_token, :openstack_management_url,
|
9
|
+
:persistent, :openstack_service_type, :openstack_service_name,
|
10
|
+
:openstack_tenant, :openstack_tenant_id,
|
11
|
+
:openstack_api_key, :openstack_username, :openstack_identity_endpoint,
|
12
|
+
:current_user, :current_tenant, :openstack_region,
|
13
|
+
:openstack_endpoint_type, :openstack_cache_ttl,
|
14
|
+
:openstack_project_name, :openstack_project_id,
|
15
|
+
:openstack_project_domain, :openstack_user_domain, :openstack_domain_name,
|
16
|
+
:openstack_project_domain_id, :openstack_user_domain_id, :openstack_domain_id,
|
17
|
+
:openstack_identity_prefix
|
18
|
+
|
19
|
+
model_path 'fog/container_infra/openstack/models'
|
20
|
+
|
21
|
+
model :bay
|
22
|
+
collection :bays
|
23
|
+
model :bay_model
|
24
|
+
collection :bay_models
|
25
|
+
model :certificate
|
26
|
+
collection :certificates
|
27
|
+
model :cluster
|
28
|
+
collection :clusters
|
29
|
+
model :cluster_template
|
30
|
+
collection :cluster_templates
|
31
|
+
|
32
|
+
request_path 'fog/container_infra/openstack/requests'
|
33
|
+
|
34
|
+
# Bay CRUD
|
35
|
+
request :create_bay
|
36
|
+
request :delete_bay
|
37
|
+
request :get_bay
|
38
|
+
request :list_bays
|
39
|
+
request :update_bay
|
40
|
+
|
41
|
+
# Bay Model CRUD
|
42
|
+
request :create_bay_model
|
43
|
+
request :delete_bay_model
|
44
|
+
request :get_bay_model
|
45
|
+
request :list_bay_models
|
46
|
+
request :update_bay_model
|
47
|
+
|
48
|
+
# Certificate CRUD
|
49
|
+
request :create_certificate
|
50
|
+
request :get_certificate
|
51
|
+
|
52
|
+
# Cluster CRUD
|
53
|
+
request :create_cluster
|
54
|
+
request :delete_cluster
|
55
|
+
request :get_cluster
|
56
|
+
request :list_clusters
|
57
|
+
request :update_cluster
|
58
|
+
|
59
|
+
# Cluster Template CRUD
|
60
|
+
request :create_cluster_template
|
61
|
+
request :delete_cluster_template
|
62
|
+
request :get_cluster_template
|
63
|
+
request :list_cluster_templates
|
64
|
+
request :update_cluster_template
|
65
|
+
|
66
|
+
class Mock
|
67
|
+
def self.data
|
68
|
+
@data ||= Hash.new do |hash, key|
|
69
|
+
hash[key] = {
|
70
|
+
:users => {},
|
71
|
+
:tenants => {}
|
72
|
+
}
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def self.reset
|
77
|
+
@data = nil
|
78
|
+
end
|
79
|
+
|
80
|
+
def initialize(options = {})
|
81
|
+
@openstack_username = options[:openstack_username]
|
82
|
+
@openstack_tenant = options[:openstack_tenant]
|
83
|
+
@openstack_auth_uri = URI.parse(options[:openstack_auth_url])
|
84
|
+
|
85
|
+
@auth_token = Fog::Mock.random_base64(64)
|
86
|
+
@auth_token_expiration = (Time.now.utc + 86400).iso8601
|
87
|
+
|
88
|
+
management_url = URI.parse(options[:openstack_auth_url])
|
89
|
+
management_url.port = 9511
|
90
|
+
management_url.path = '/v1'
|
91
|
+
@openstack_management_url = management_url.to_s
|
92
|
+
|
93
|
+
@data ||= {:users => {}}
|
94
|
+
unless @data[:users].find { |u| u['name'] == options[:openstack_username] }
|
95
|
+
id = Fog::Mock.random_numbers(6).to_s
|
96
|
+
@data[:users][id] = {
|
97
|
+
'id' => id,
|
98
|
+
'name' => options[:openstack_username],
|
99
|
+
'email' => "#{options[:openstack_username]}@mock.com",
|
100
|
+
'tenantId' => Fog::Mock.random_numbers(6).to_s,
|
101
|
+
'enabled' => true
|
102
|
+
}
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
def data
|
107
|
+
self.class.data[@openstack_username]
|
108
|
+
end
|
109
|
+
|
110
|
+
def reset_data
|
111
|
+
self.class.data.delete(@openstack_username)
|
112
|
+
end
|
113
|
+
|
114
|
+
def credentials
|
115
|
+
{:provider => 'openstack',
|
116
|
+
:openstack_auth_url => @openstack_auth_uri.to_s,
|
117
|
+
:openstack_auth_token => @auth_token,
|
118
|
+
:openstack_management_url => @openstack_management_url}
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
class Real
|
123
|
+
include Fog::OpenStack::Core
|
124
|
+
|
125
|
+
def self.not_found_class
|
126
|
+
Fog::ContainerInfra::OpenStack::NotFound
|
127
|
+
end
|
128
|
+
|
129
|
+
def initialize(options = {})
|
130
|
+
initialize_identity options
|
131
|
+
|
132
|
+
@openstack_service_type = options[:openstack_service_type] || ['container-infra']
|
133
|
+
@openstack_service_name = options[:openstack_service_name]
|
134
|
+
@openstack_endpoint_type = options[:openstack_endpoint_type] || 'publicURL'
|
135
|
+
|
136
|
+
@connection_options = options[:connection_options] || {}
|
137
|
+
|
138
|
+
authenticate
|
139
|
+
set_api_path
|
140
|
+
|
141
|
+
@persistent = options[:persistent] || false
|
142
|
+
@connection = Fog::Core::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
|
143
|
+
end
|
144
|
+
|
145
|
+
def request(options = {})
|
146
|
+
options[:headers] = {'OpenStack-API-Version' => "container-infra #{SUPPORTED_MICROVERSION}"}
|
147
|
+
super(options)
|
148
|
+
end
|
149
|
+
|
150
|
+
def set_api_path
|
151
|
+
unless @path.match(SUPPORTED_VERSIONS)
|
152
|
+
@path = Fog::OpenStack.get_supported_version_path(
|
153
|
+
SUPPORTED_VERSIONS,
|
154
|
+
@openstack_management_uri,
|
155
|
+
@auth_token,
|
156
|
+
@connection_options
|
157
|
+
)
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'fog/openstack/models/model'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module ContainerInfra
|
5
|
+
class OpenStack
|
6
|
+
class Base < Fog::OpenStack::Model
|
7
|
+
def convert_update_params(params)
|
8
|
+
params = params.map do |key, value|
|
9
|
+
{
|
10
|
+
"path" => "/#{key}",
|
11
|
+
"op" => value ? "replace" : "remove"
|
12
|
+
}.merge(value ? {"value" => value} : {})
|
13
|
+
end
|
14
|
+
params.each {|k,v| params[k] = v.to_s.capitalize if [true, false].include?(v)}
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require_relative 'base'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module ContainerInfra
|
5
|
+
class OpenStack
|
6
|
+
class Bay < Fog::ContainerInfra::OpenStack::Base
|
7
|
+
identity :uuid
|
8
|
+
|
9
|
+
attribute :api_address
|
10
|
+
attribute :coe_version
|
11
|
+
attribute :baymodel_id
|
12
|
+
attribute :create_timeout
|
13
|
+
attribute :created_at
|
14
|
+
attribute :discovery_url
|
15
|
+
attribute :master_addresses
|
16
|
+
attribute :master_count
|
17
|
+
attribute :name
|
18
|
+
attribute :node_addresses
|
19
|
+
attribute :node_count
|
20
|
+
attribute :stack_id
|
21
|
+
attribute :status
|
22
|
+
attribute :status_reason
|
23
|
+
attribute :updated_at
|
24
|
+
|
25
|
+
def create
|
26
|
+
requires :name, :baymodel_id
|
27
|
+
merge_attributes(service.create_bay(attributes).body)
|
28
|
+
self
|
29
|
+
end
|
30
|
+
|
31
|
+
def update
|
32
|
+
requires :uuid, :name, :baymodel_id
|
33
|
+
attrs = attributes.select{|k,_| allowed_update_attributes.include? k}
|
34
|
+
attrs = convert_update_params(attrs)
|
35
|
+
merge_attributes(service.update_bay(uuid, attrs).body)
|
36
|
+
self
|
37
|
+
end
|
38
|
+
|
39
|
+
def destroy
|
40
|
+
requires :uuid
|
41
|
+
service.delete_bay(uuid)
|
42
|
+
true
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
def allowed_update_attributes
|
48
|
+
[
|
49
|
+
:node_count
|
50
|
+
]
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require_relative 'base'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module ContainerInfra
|
5
|
+
class OpenStack
|
6
|
+
class BayModel < Fog::ContainerInfra::OpenStack::Base
|
7
|
+
identity :uuid
|
8
|
+
|
9
|
+
attribute :apiserver_port
|
10
|
+
attribute :cluster_distro
|
11
|
+
attribute :coe
|
12
|
+
attribute :created_at
|
13
|
+
attribute :dns_nameserver
|
14
|
+
attribute :docker_storage_driver
|
15
|
+
attribute :docker_volume_size
|
16
|
+
attribute :external_network_id
|
17
|
+
attribute :fixed_network
|
18
|
+
attribute :fixed_subnet
|
19
|
+
attribute :flavor_id
|
20
|
+
attribute :floating_ip_enabled
|
21
|
+
attribute :http_proxy
|
22
|
+
attribute :https_proxy
|
23
|
+
attribute :image_id
|
24
|
+
attribute :insecure_registry
|
25
|
+
attribute :keypair_id
|
26
|
+
attribute :labels
|
27
|
+
attribute :master_flavor_id
|
28
|
+
attribute :master_lb_enabled
|
29
|
+
attribute :name
|
30
|
+
attribute :network_driver
|
31
|
+
attribute :no_proxy
|
32
|
+
attribute :public
|
33
|
+
attribute :registry_enabled
|
34
|
+
attribute :server_type
|
35
|
+
attribute :tls_disabled
|
36
|
+
attribute :updated_at
|
37
|
+
attribute :volume_driver
|
38
|
+
|
39
|
+
def create
|
40
|
+
requires :name, :keypair_id, :flavor_id, :image_id,
|
41
|
+
:external_network_id, :coe
|
42
|
+
merge_attributes(service.create_bay_model(attributes).body)
|
43
|
+
self
|
44
|
+
end
|
45
|
+
|
46
|
+
def update
|
47
|
+
requires :uuid, :name, :keypair_id, :flavor_id, :image_id,
|
48
|
+
:external_network_id, :coe
|
49
|
+
attrs = convert_update_params(attributes)
|
50
|
+
merge_attributes(service.update_bay_model(uuid, attrs).body)
|
51
|
+
self
|
52
|
+
end
|
53
|
+
|
54
|
+
def destroy
|
55
|
+
requires :uuid
|
56
|
+
service.delete_bay_model(uuid)
|
57
|
+
true
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|