Class: Kozo::Operations::Create

Inherits:
Kozo::Operation show all
Defined in:
lib/kozo/operations/create.rb

Instance Attribute Summary

Attributes inherited from Kozo::Operation

#resource

Instance Method Summary collapse

Methods inherited from Kozo::Operation

#initialize

Constructor Details

This class inherits a constructor from Kozo::Operation

Instance Method Details

#apply(state) ⇒ Object



9
10
11
12
13
14
15
# File 'lib/kozo/operations/create.rb', line 9

def apply(state)
  # Create resource in remote infrastructure
  resource.create!

  # Add resource to local state
  state.resources << resource
end

#to_sObject



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/kozo/operations/create.rb', line 17

def to_s
  l = resource.attribute_names.map(&:length).max || 1

  attrs = resource
    .attributes
    .map { |k, v| "  #{resource.changes.key?(k) ? display_symbol : ' '} r.#{k.to_s.ljust(l)} = #{v.blank? && resource.writeable_attribute_names.exclude?(k) ? '(known after apply)' : (v.as_s.indent(4)[4..]).to_s}" }
    .join("\n")

  <<~DSL.chomp
    #{"# #{resource.address}:".bold}
    #{display_symbol} resource "#{resource.resource_name}", "#{resource.state_name}" do |r|
    #{attrs}
    end

  DSL
end