Method: Miasma::Models::Orchestration::OpenStack#stack_save

Defined in:
lib/miasma/contrib/open_stack/orchestration.rb

#stack_save(stack) ⇒ Models::Orchestration::Stack

Save the stack

Parameters:

  • stack (Models::Orchestration::Stack)

Returns:

  • (Models::Orchestration::Stack)


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
# File 'lib/miasma/contrib/open_stack/orchestration.rb', line 26

def stack_save(stack)
  if(stack.persisted?)
    stack.load_data(stack.attributes)
    result = request(
      :expects => 202,
      :method => :put,
      :path => "/stacks/#{stack.name}/#{stack.id}",
      :json => {
        :stack_name => stack.name,
        :template => MultiJson.dump(stack.template),
        :parameters => stack.parameters || {}
      }
    )
    stack.valid_state
  else
    stack.load_data(stack.attributes)
    result = request(
      :expects => 201,
      :method => :post,
      :path => '/stacks',
      :json => {
        :stack_name => stack.name,
        :template => MultiJson.dump(stack.template),
        :parameters => stack.parameters || {},
        :disable_rollback => (!!stack.disable_rollback).to_s
      }
    )
    stack.id = result.get(:body, :stack, :id)
    stack.valid_state
  end
end