Class: Fog::Orchestration::OpenStack::Real

Inherits:
Object
  • Object
show all
Includes:
Fog::OpenStack::Core
Defined in:
lib/fog/orchestration/openstack.rb,
lib/fog/orchestration/openstack/requests/build_info.rb,
lib/fog/orchestration/openstack/requests/patch_stack.rb,
lib/fog/orchestration/openstack/requests/list_events.rb,
lib/fog/orchestration/openstack/requests/delete_stack.rb,
lib/fog/orchestration/openstack/requests/update_stack.rb,
lib/fog/orchestration/openstack/requests/create_stack.rb,
lib/fog/orchestration/openstack/requests/cancel_update.rb,
lib/fog/orchestration/openstack/requests/preview_stack.rb,
lib/fog/orchestration/openstack/requests/abandon_stack.rb,
lib/fog/orchestration/openstack/requests/list_resources.rb,
lib/fog/orchestration/openstack/requests/list_stack_data.rb,
lib/fog/orchestration/openstack/requests/validate_template.rb,
lib/fog/orchestration/openstack/requests/list_stack_events.rb,
lib/fog/orchestration/openstack/requests/show_stack_details.rb,
lib/fog/orchestration/openstack/requests/show_resource_data.rb,
lib/fog/orchestration/openstack/requests/get_stack_template.rb,
lib/fog/orchestration/openstack/requests/show_event_details.rb,
lib/fog/orchestration/openstack/requests/list_resource_types.rb,
lib/fog/orchestration/openstack/requests/show_resource_schema.rb,
lib/fog/orchestration/openstack/requests/list_resource_events.rb,
lib/fog/orchestration/openstack/requests/show_resource_template.rb,
lib/fog/orchestration/openstack/requests/show_resource_metadata.rb,
lib/fog/orchestration/openstack/requests/list_stack_data_detailed.rb

Instance Attribute Summary

Attributes included from Fog::OpenStack::Core

#auth_token, #auth_token_expiration, #current_tenant, #current_user, #current_user_id, #openstack_cache_ttl, #openstack_domain_id, #openstack_domain_name, #openstack_identity_prefix, #openstack_project_domain, #openstack_project_domain_id, #openstack_project_id, #openstack_user_domain, #openstack_user_domain_id, #unscoped_token

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Fog::OpenStack::Core

#credentials, #initialize_identity, #reload

Constructor Details

#initialize(options = {}) ⇒ Real


138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
# File 'lib/fog/orchestration/openstack.rb', line 138

def initialize(options = {})
  initialize_identity options

  @openstack_identity_service_type = options[:openstack_identity_service_type] || 'identity'

  @openstack_service_type           = options[:openstack_service_type] || ['orchestration']
  @openstack_service_name           = options[:openstack_service_name]

  @connection_options               = options[:connection_options] || {}

  authenticate

  @persistent = options[:persistent] || false
  @connection = Fog::Core::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
end

Class Method Details

.not_found_classObject


134
135
136
# File 'lib/fog/orchestration/openstack.rb', line 134

def self.not_found_class
  Fog::Orchestration::OpenStack::NotFound
end

Instance Method Details

#abandon_stack(stack) ⇒ Object


5
6
7
8
9
10
11
# File 'lib/fog/orchestration/openstack/requests/abandon_stack.rb', line 5

def abandon_stack(stack)
  request(
    :expects => [200],
    :method  => 'DELETE',
    :path    => "stacks/#{stack.stack_name}/#{stack.id}/abandon"
  )
end

#build_infoObject


5
6
7
8
9
10
11
# File 'lib/fog/orchestration/openstack/requests/build_info.rb', line 5

def build_info
  request(
    :expects => [200],
    :method  => 'GET',
    :path    => 'build_info'
  )
end

#cancel_update(stack) ⇒ Object


6
7
8
9
10
11
12
13
# File 'lib/fog/orchestration/openstack/requests/cancel_update.rb', line 6

def cancel_update(stack)
  request(
    :expects => 200,
    :method  => 'POST',
    :path    => "stacks/#{stack.stack_name}/#{stack.id}/actions",
    :body    => Fog::JSON.encode('cancel_update' => nil)
  )
end

#create_stack(arg1, arg2 = nil) ⇒ Object

Create a stack.

  • options [Hash]:

    • :stack_name [String] Name of the stack to create.

    • :template [String] Structure containing the template body.

    or (one of the two Template parameters is required)

    • :template_url [String] URL of file containing the template body.

    • :disable_rollback [Boolean] Controls rollback on stack creation failure, defaults to false.

    • :parameters [Hash] Hash of providers to supply to template

    • :timeout_mins [Integer] Minutes to wait before status is set to CREATE_FAILED


19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/fog/orchestration/openstack/requests/create_stack.rb', line 19

def create_stack(arg1, arg2 = nil)
  if arg1.kind_of?(Hash)
    # Normal use: create_stack(options)
    options = arg1
  else
    # Deprecated: create_stack(stack_name, options = {})
    Fog::Logger.deprecation("#create_stack(stack_name, options) is deprecated, use #create_stack(options) instead [light_black](#{caller.first})[/]")
    options = {
      :stack_name => arg1
    }.merge(arg2.nil? ? {} : arg2)
  end

  request(
    :expects => 201,
    :path    => 'stacks',
    :method  => 'POST',
    :body    => Fog::JSON.encode(options)
  )
end

#delete_stack(arg1, arg2 = nil) ⇒ Excon::Response

Delete a stack.


13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/fog/orchestration/openstack/requests/delete_stack.rb', line 13

def delete_stack(arg1, arg2 = nil)
  if arg1.kind_of?(Stack)
    # Normal use: delete_stack(stack)
    stack = arg1
    stack_name = stack.stack_name
    stack_id = stack.id
  else
    # Deprecated: delete_stack(stack_name, stack_id)
    Fog::Logger.deprecation("#delete_stack(stack_name, stack_id) is deprecated, use #delete_stack(stack) instead [light_black](#{caller.first})[/]")
    stack_name = arg1
    stack_id = arg2
  end

  request(
    :expects => 204,
    :path    => "stacks/#{stack_name}/#{stack_id}",
    :method  => 'DELETE'
  )
end

#get_stack_template(stack) ⇒ Object


5
6
7
8
9
10
11
# File 'lib/fog/orchestration/openstack/requests/get_stack_template.rb', line 5

def get_stack_template(stack)
  request(
    :method  => 'GET',
    :path    => "stacks/#{stack.stack_name}/#{stack.id}/template",
    :expects => 200
  )
end

#list_events(options = {}) ⇒ Object


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
# File 'lib/fog/orchestration/openstack/requests/list_events.rb', line 5

def list_events(options = {})
  if !options.key?(:stack) && !(options.key?(:stack_name) && options.key?(:stack_id))
    raise(ArgumentError, "Missing required options keys: :stack or :stack_name and :stack_id, while calling "\
                         " .list_events(options)")
  end

  stack        = options.delete(:stack)
  stack_name   = options.delete(:stack_name)
  stack_name ||= stack.stack_name if stack && stack.respond_to?(:stack_name)
  stack_id     = options.delete(:stack_id)
  stack_id   ||= stack.id if stack && stack.respond_to?(:id)

  resource        = options.delete(:resource)
  resource_name   = options.delete(:resource_name)
  resource_name ||= resource.resource_name if resource && resource.respond_to?(:resource_name)

  path = if resource_name
           "stacks/#{stack_name}/#{stack_id}/resources/#{resource_name}/events"
         else
           "stacks/#{stack_name}/#{stack_id}/events"
         end

  request(:method  => 'GET',
          :path    => path,
          :expects => 200,
          :query   => options)
end

#list_resource_events(stack, resource, options = {}) ⇒ Object


5
6
7
8
9
10
11
12
13
# File 'lib/fog/orchestration/openstack/requests/list_resource_events.rb', line 5

def list_resource_events(stack, resource, options = {})
  Fog::Logger.deprecation('Calling OpenStack[:orchestration].list_resource_events(stack, resource, options)'\
                          ' is deprecated, call .list_events(:stack => stack, :resource => resource) or '\
                          ' .list_events(:stack_name => value, :stack_id => value, :resource_name => value)'\
                          ' instead')

  uri = "stacks/#{stack.stack_name}/#{stack.id}/resources/#{resource.resource_name}/events"
  request(:method => 'GET', :path => uri, :expects => 200, :query => options)
end

#list_resource_types(_options = {}) ⇒ Object


5
6
7
8
9
10
11
12
# File 'lib/fog/orchestration/openstack/requests/list_resource_types.rb', line 5

def list_resource_types(_options = {})
  request(
    :method  => 'GET',
    :path    => "resource_types",
    :expects => 200,
    :query   => {}
  )
end

#list_resources(options = {}, options_deprecated = {}) ⇒ Object


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
# File 'lib/fog/orchestration/openstack/requests/list_resources.rb', line 5

def list_resources(options = {}, options_deprecated = {})
  if options.kind_of?(Hash)
    if !options.key?(:stack) && !(options.key?(:stack_name) && options.key?(:stack_id))
      raise(ArgumentError, "Missing required options keys: :stack or :stack_name and :stack_id, while calling "\
                           " .list_resources(options)")
    end

    stack        = options.delete(:stack)
    stack_name   = options.delete(:stack_name)
    stack_name ||= stack.stack_name if stack && stack.respond_to?(:stack_name)
    stack_id     = options.delete(:stack_id)
    stack_id   ||=  stack.id if stack && stack.respond_to?(:id)
    path         = "stacks/#{stack_name}/#{stack_id}/resources"
    params       = options
  else
    Fog::Logger.deprecation('Calling OpenStack[:orchestration].list_resources(stack, options) is deprecated, '\
                            ' call .list_resources(:stack => stack) or '\
                            ' .list_resources(:stack_name => value, :stack_id => value) instead')
    path   = "stacks/#{options.stack_name}/#{options.id}/resources"
    params = options_deprecated
  end

  request(:method  => 'GET',
          :path    => path,
          :expects => 200,
          :query   => params)
end

#list_stack_data(options = {}) ⇒ Object


5
6
7
8
9
10
11
12
# File 'lib/fog/orchestration/openstack/requests/list_stack_data.rb', line 5

def list_stack_data(options = {})
  request(
    :method  => 'GET',
    :path    => 'stacks',
    :expects => 200,
    :query   => options
  )
end

#list_stack_data_detailed(options = {}) ⇒ Object


5
6
7
8
9
10
11
12
# File 'lib/fog/orchestration/openstack/requests/list_stack_data_detailed.rb', line 5

def list_stack_data_detailed(options = {})
  request(
    :method  => 'GET',
    :path    => 'stacks/detail',
    :expects => 200,
    :query   => options
  )
end

#list_stack_events(stack, options = {}) ⇒ Object


5
6
7
8
9
10
11
12
# File 'lib/fog/orchestration/openstack/requests/list_stack_events.rb', line 5

def list_stack_events(stack, options = {})
  Fog::Logger.deprecation('Calling OpenStack[:orchestration].list_stack_events(stack, options)'\
                          ' is deprecated, call .list_events(:stack => stack) or '\
                          ' .list_events(:stack_name => value, :stack_id => value) instead')

  uri = "stacks/#{stack.stack_name}/#{stack.id}/events"
  request(:method => 'GET', :path => uri, :expects => 200, :query => options)
end

#patch_stack(stack, options = {}) ⇒ Object

patch a stack.


14
15
16
17
18
19
20
21
22
23
24
# File 'lib/fog/orchestration/openstack/requests/patch_stack.rb', line 14

def patch_stack(stack, options = {})
  stack_name = stack.stack_name
  stack_id = stack.id

  request(
    :expects => 202,
    :path    => "stacks/#{stack_name}/#{stack_id}",
    :method  => 'PATCH',
    :body    => Fog::JSON.encode(options)
  )
end

#preview_stack(options = {}) ⇒ Object


5
6
7
8
9
10
11
12
# File 'lib/fog/orchestration/openstack/requests/preview_stack.rb', line 5

def preview_stack(options = {})
  request(
    :body    => Fog::JSON.encode(options),
    :expects => [200],
    :method  => 'POST',
    :path    => 'stacks/preview'
  )
end

#show_event_details(stack, resource, event_id) ⇒ Object


5
6
7
8
9
10
11
# File 'lib/fog/orchestration/openstack/requests/show_event_details.rb', line 5

def show_event_details(stack, resource, event_id)
  request(
    :method  => 'GET',
    :path    => "stacks/#{stack.stack_name}/#{stack.id}/resources/#{resource.resource_name}/events/#{event_id}",
    :expects => 200
  )
end

#show_resource_data(stack_name, stack_id, resource_name) ⇒ Object


5
6
7
8
9
10
11
# File 'lib/fog/orchestration/openstack/requests/show_resource_data.rb', line 5

def show_resource_data(stack_name, stack_id, resource_name)
  request(
    :method  => 'GET',
    :path    => "stacks/#{stack_name}/#{stack_id}/resources/#{resource_name}",
    :expects => 200
  )
end

#show_resource_metadata(stack, resource_name) ⇒ Object


5
6
7
8
9
10
11
# File 'lib/fog/orchestration/openstack/requests/show_resource_metadata.rb', line 5

def (stack, resource_name)
  request(
    :method  => 'GET',
    :path    => "stacks/#{stack.stack_name}/#{stack.id}/resources/#{resource_name}/metadata",
    :expects => 200
  )
end

#show_resource_schema(name) ⇒ Object


5
6
7
8
9
10
11
# File 'lib/fog/orchestration/openstack/requests/show_resource_schema.rb', line 5

def show_resource_schema(name)
  request(
    :method  => 'GET',
    :path    => "resource_types/#{name}",
    :expects => 200
  )
end

#show_resource_template(name) ⇒ Object


5
6
7
8
9
10
11
# File 'lib/fog/orchestration/openstack/requests/show_resource_template.rb', line 5

def show_resource_template(name)
  request(
    :method  => 'GET',
    :path    => "resource_types/#{name}/template",
    :expects => 200
  )
end

#show_stack_details(name, id) ⇒ Object


5
6
7
8
9
10
11
# File 'lib/fog/orchestration/openstack/requests/show_stack_details.rb', line 5

def show_stack_details(name, id)
  request(
    :method  => 'GET',
    :path    => "stacks/#{name}/#{id}",
    :expects => 200
  )
end

#update_stack(arg1, arg2 = nil, arg3 = nil) ⇒ Object

Update a stack.


14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/fog/orchestration/openstack/requests/update_stack.rb', line 14

def update_stack(arg1, arg2 = nil, arg3 = nil)
  if arg1.kind_of?(Stack)
    # Normal use, update_stack(stack, options = {})
    stack = arg1
    stack_name = stack.stack_name
    stack_id = stack.id
    params = arg2.nil? ? {} : arg2
  else
    # Deprecated, update_stack(stack_id, stack_name, options = {})
    Fog::Logger.deprecation("#update_stack(stack_id, stack_name, options) is deprecated, use #update_stack(stack, options) instead [light_black](#{caller.first})[/]")
    stack_id = arg1
    stack_name = arg2
    params = {
      :stack_name => stack_name
    }.merge(arg3.nil? ? {} : arg3)
  end

  request(
    :expects => 202,
    :path    => "stacks/#{stack_name}/#{stack_id}",
    :method  => 'PUT',
    :body    => Fog::JSON.encode(params)
  )
end

#validate_template(options = {}) ⇒ Object


5
6
7
8
9
10
11
12
# File 'lib/fog/orchestration/openstack/requests/validate_template.rb', line 5

def validate_template(options = {})
  request(
    :body    => Fog::JSON.encode(options),
    :expects => [200],
    :method  => 'POST',
    :path    => 'validate'
  )
end