Class: Packer::Provisioner

Inherits:
DataObject show all
Defined in:
lib/packer/provisioner.rb,
lib/packer/provisioners/file.rb,
lib/packer/provisioners/shell.rb

Direct Known Subclasses

File, Shell

Defined Under Namespace

Classes: File, Shell, UnrecognizedProvisionerTypeError

Constant Summary collapse

SHELL =
'shell'
FILE =
'file'
VALID_PROVISIONER_TYPES =
[
  SHELL,
  FILE
]

Instance Attribute Summary

Attributes inherited from DataObject

#data, #required

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from DataObject

#__add_array_of_array_of_strings, #__add_array_of_hashes, #__add_array_of_strings, #__add_boolean, #__add_hash, #__add_integer, #__add_string, #__exclusive_key_error, #add_required, #deep_copy, #validate

Constructor Details

#initializeProvisioner

Returns a new instance of Provisioner.



46
47
48
49
# File 'lib/packer/provisioner.rb', line 46

def initialize
  super
  self.add_required('type')
end

Class Method Details

.get_provisioner(type) ⇒ Object



32
33
34
35
36
37
38
39
40
# File 'lib/packer/provisioner.rb', line 32

def self.get_provisioner(type)
  unless validate_type(type)
    raise UnrecognizedProvisionerTypeError.new("Unrecognized provisioner type #{type}")
  end
  {
    SHELL => Packer::Provisioner::Shell,
    FILE  => Packer::Provisioner::File,
  }.fetch(type).new
end

.typesObject



42
43
44
# File 'lib/packer/provisioner.rb', line 42

def self.types
  VALID_PROVISIONER_TYPES
end

Instance Method Details

#except(buildname) ⇒ Object



58
59
60
61
62
63
# File 'lib/packer/provisioner.rb', line 58

def except(buildname)
  unless self.data.has_key? 'except'
    self.data['except'] = []
  end
  self.data['except'] << buildname.to_s
end

#only(buildname) ⇒ Object



51
52
53
54
55
56
# File 'lib/packer/provisioner.rb', line 51

def only(buildname)
  unless self.data.has_key? 'only'
    self.data['only'] = []
  end
  self.data['only'] << buildname.to_s
end

#override(builddefinition, values) ⇒ Object

Raises:

  • (TypeError)


69
70
71
72
73
74
75
76
77
78
79
# File 'lib/packer/provisioner.rb', line 69

def override(builddefinition, values)
  raise TypeError.new() unless values.is_a?(Hash)
  unless self.data.has_key? 'override'
    self.data['override'] = {}
  end
  if self.data.has_key? @data['override'][builddefinition]
    self.data['override'][builddefinition].merge! values
  else
    self.data['override'][builddefinition] = values
  end
end

#pause_before(duration) ⇒ Object



65
66
67
# File 'lib/packer/provisioner.rb', line 65

def pause_before(duration)
  self.data["pause_before"] = duration.to_s
end