Class: Caterer::Image
- Inherits:
-
Object
- Object
- Caterer::Image
- Defined in:
- lib/caterer/image.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#provisioners ⇒ Object
readonly
Returns the value of attribute provisioners.
Instance Method Summary collapse
-
#bin_dir ⇒ Object
helpers.
- #bin_wrapper_path ⇒ Object
- #cleanup(server) ⇒ Object
-
#initialize(name) ⇒ Image
constructor
A new instance of Image.
- #lib_dir ⇒ Object
-
#prepare(server) ⇒ Object
actions.
- #provision(type, opts = {}) {|provisioner| ... } ⇒ Object
- #run(server) ⇒ Object
- #var_dir ⇒ Object
Constructor Details
#initialize(name) ⇒ Image
Returns a new instance of Image.
8 9 10 11 |
# File 'lib/caterer/image.rb', line 8 def initialize(name) @name = name @provisioners = [] end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
6 7 8 |
# File 'lib/caterer/image.rb', line 6 def name @name end |
#provisioners ⇒ Object (readonly)
Returns the value of attribute provisioners.
6 7 8 |
# File 'lib/caterer/image.rb', line 6 def provisioners @provisioners end |
Instance Method Details
#bin_dir ⇒ Object
helpers
61 62 63 |
# File 'lib/caterer/image.rb', line 61 def bin_dir "#{config.dest_dir}/bin" end |
#bin_wrapper_path ⇒ Object
73 74 75 |
# File 'lib/caterer/image.rb', line 73 def bin_wrapper_path "#{bin_dir}/cater-#{name}" end |
#cleanup(server) ⇒ Object
52 53 54 55 56 57 |
# File 'lib/caterer/image.rb', line 52 def cleanup(server) server.ui.info "Cleaning #{name}..." server.ssh.sudo "rm -rf #{var_dir}" server.ssh.sudo "rm -rf #{lib_dir}" server.ssh.sudo "rm -f #{bin_wrapper_path}" end |
#lib_dir ⇒ Object
65 66 67 |
# File 'lib/caterer/image.rb', line 65 def lib_dir "#{config.dest_dir}/lib/#{name}" end |
#prepare(server) ⇒ Object
actions
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/caterer/image.rb', line 24 def prepare(server) # create bin dir server.ssh.sudo "mkdir -p #{bin_dir}", :stream => true server.ssh.sudo "chown -R #{server.username} #{bin_dir}", :stream => true # create lib dir server.ssh.sudo "mkdir -p #{lib_dir}", :stream => true server.ssh.sudo "chown -R #{server.username} #{lib_dir}", :stream => true # create var dir server.ssh.sudo "mkdir -p #{var_dir}", :stream => true server.ssh.sudo "chown -R #{server.username} #{var_dir}", :stream => true # create bin wrapper server.ui.info "Generating bin wrapper..." server.ssh.upload(StringIO.new(bin_wrapper_content), bin_wrapper_path) server.ssh.sudo "chmod +x #{bin_wrapper_path}", :stream => true end |
#provision(type, opts = {}) {|provisioner| ... } ⇒ Object
13 14 15 16 17 18 19 20 |
# File 'lib/caterer/image.rb', line 13 def provision(type, opts={}) provisioner_klass = Caterer.provisioners.get(type) raise ":#{type} is not a valid provisioner" if not provisioner_klass provisioner = provisioner_klass.new(self, opts) yield provisioner if block_given? @provisioners << provisioner provisioner end |
#run(server) ⇒ Object
43 44 45 46 47 48 49 50 |
# File 'lib/caterer/image.rb', line 43 def run(server) # run server.ui.info "Running #{name}..." res = server.ssh.sudo bin_wrapper_path, :stream => true unless res == 0 server.ui.error "#{name} failed with exit code: #{res}" end end |
#var_dir ⇒ Object
69 70 71 |
# File 'lib/caterer/image.rb', line 69 def var_dir "#{config.dest_dir}/var/#{name}" end |