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
|
module Fog
module OpenStack
class Orchestration < Fog::Service
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/orchestration/models'
model :stack
collection :stacks
model :resource
collection :resources
collection :resource_schemas
model :event
collection :events
model :template
collection :templates
request_path 'fog/openstack/orchestration/requests'
request :abandon_stack
request :build_info
request :create_stack
request :delete_stack
request :get_stack_template
request :list_events
request :list_resource_events
request :list_resource_types
request :list_resources
request :list_stack_data
request :list_stack_data_detailed
request :list_stack_events
request :preview_stack
request :show_event_details
request :show_resource_data
request :show_resource_metadata
request :show_resource_schema
request :show_resource_template
request :show_stack
request :show_stack_details
request :update_stack
request :patch_stack
request :validate_template
request :cancel_update
module Reflectable
REFLECTION_REGEX = /\/stacks\/(\w+)\/([\w|-]+)\/resources\/(\w+)/
def resource
@resource ||= service.resources.get(r[3], stack)
end
def stack
@stack ||= service.stacks.get(r[1], r[2])
end
private
def reflection
@reflection ||= REFLECTION_REGEX.match(links[0]['href'])
end
alias r reflection
end
class Mock
attr_reader :auth_token
attr_reader :auth_token_expiration
attr_reader :current_user
attr_reader :current_tenant
def self.data
@data ||= Hash.new do |hash, key|
hash[key] = {
:stacks => {}
}
end
end
def self.reset
@data = nil
end
def initialize(options = {})
@openstack_username = options[:openstack_username]
@openstack_auth_uri = URI.parse(options[:openstack_auth_url])
@current_tenant = options[:openstack_tenant]
@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 = 8774
management_url.path = '/v1'
@openstack_management_url = management_url.to_s
end
def data
self.class.data["#{@openstack_username}-#{@current_tenant}"]
end
def reset_data
self.class.data.delete("#{@openstack_username}-#{@current_tenant}")
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::Orchestration::NotFound
end
def default_service_type
%w[orchestration]
end
end
end
end
end
|