1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
|
module Fog
module OpenStack
class ContainerInfra < Fog::Service
SUPPORTED_VERSIONS = /v1/
SUPPORTED_MICROVERSION = '1.3'
requires :openstack_auth_url
recognizes :openstack_auth_token, :openstack_management_url,
:persistent, :openstack_service_type, :openstack_service_name,
:openstack_tenant, :openstack_tenant_id,
:openstack_api_key, :openstack_username, :openstack_identity_endpoint,
:current_user, :current_tenant, :openstack_region,
:openstack_endpoint_type, :openstack_cache_ttl,
:openstack_project_name, :openstack_project_id,
:openstack_project_domain, :openstack_user_domain, :openstack_domain_name,
:openstack_project_domain_id, :openstack_user_domain_id, :openstack_domain_id,
:openstack_identity_api_version
model_path 'fog/openstack/container_infra/models'
model :bay
collection :bays
model :bay_model
collection :bay_models
model :certificate
collection :certificates
model :cluster
collection :clusters
model :cluster_template
collection :cluster_templates
request_path 'fog/openstack/container_infra/requests'
# Bay CRUD
request :create_bay
request :delete_bay
request :get_bay
request :list_bays
request :update_bay
# Bay Model CRUD
request :create_bay_model
request :delete_bay_model
request :get_bay_model
request :list_bay_models
request :update_bay_model
# Certificate CRUD
request :create_certificate
request :get_certificate
# Cluster CRUD
request :create_cluster
request :delete_cluster
request :get_cluster
request :list_clusters
request :update_cluster
# Cluster Template CRUD
request :create_cluster_template
request :delete_cluster_template
request :get_cluster_template
request :list_cluster_templates
request :update_cluster_template
class Mock
def self.data
@data ||= Hash.new do |hash, key|
hash[key] = {
:users => {},
:tenants => {}
}
end
end
def self.reset
@data = nil
end
def initialize(options = {})
@openstack_username = options[:openstack_username]
@openstack_tenant = options[:openstack_tenant]
@openstack_auth_uri = URI.parse(options[:openstack_auth_url])
@auth_token = Fog::Mock.random_base64(64)
@auth_token_expiration = (Time.now.utc + 86400).iso8601
management_url = URI.parse(options[:openstack_auth_url])
management_url.port = 9511
management_url.path = '/v1'
@openstack_management_url = management_url.to_s
@data ||= {:users => {}}
unless @data[:users].find { |u| u['name'] == options[:openstack_username] }
id = Fog::Mock.random_numbers(6).to_s
@data[:users][id] = {
'id' => id,
'name' => options[:openstack_username],
'email' => "#{options[:openstack_username]}@mock.com",
'tenantId' => Fog::Mock.random_numbers(6).to_s,
'enabled' => true
}
end
end
def data
self.class.data[@openstack_username]
end
def reset_data
self.class.data.delete(@openstack_username)
end
def credentials
{:provider => 'openstack',
:openstack_auth_url => @openstack_auth_uri.to_s,
:openstack_auth_token => @auth_token,
:openstack_management_url => @openstack_management_url}
end
end
class Real
include Fog::OpenStack::Core
def self.not_found_class
Fog::OpenStack::ContainerInfra::NotFound
end
def default_path_prefix
'v1'
end
def default_service_type
%w[container-infra]
end
def request(options = {})
options[:headers] = {'OpenStack-API-Version' => "container-infra #{SUPPORTED_MICROVERSION}"}
super(options)
end
end
end
end
end
|