Class: Caterer::Command::Server
- Defined in:
- lib/caterer/command/server.rb
Instance Method Summary collapse
- #add_server_opts(parser, options) ⇒ Object
- #image_list(options = {}) ⇒ Object
- #init_server(group = nil, member = nil, options = {}) ⇒ Object
- #target_servers(argv, options = {}) ⇒ Object
- #with_target_servers(argv, options = {}) ⇒ Object
Methods inherited from Base
#execute, #initialize, #parse_options
Constructor Details
This class inherits a constructor from Caterer::Command::Base
Instance Method Details
#add_server_opts(parser, 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 |
# File 'lib/caterer/command/server.rb', line 5 def add_server_opts(parser, ) parser.separator "" parser.on("-c CONFIG", 'assumes Caterfile in current directory') parser.separator "" parser.on("-u USER", "--user USER", 'assumes current username') do |u| [:user] = u end parser.on('-p PASSWORD', '--password PASSWORD', 'assumes key') do |p| [:pass] = p end parser.on('-k KEY', '--key KEY', 'path to private key') do |k| [:key] = k end parser.on('-P PORT', '--port PORT', 'assumes 22') do |p| [:port] = p end parser.on('--host HOST', 'host override') do |h| [:host] = h end parser.on('-i IMAGE', '--image IMAGE', 'corresponds to a image in Caterfile') do |i| [:image] = i end parser.separator "" end |
#image_list(options = {}) ⇒ Object
102 103 104 105 106 |
# File 'lib/caterer/command/server.rb', line 102 def image_list(={}) if images = [:image] images.split(',').map(&:to_sym) end end |
#init_server(group = nil, member = nil, options = {}) ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/caterer/command/server.rb', line 72 def init_server(group=nil, member=nil, ={}) group ||= Caterer::Group.new member ||= Caterer::Member.new opts = {} opts[:alias] = member.name opts[:user] = [:user] || member.user || group.user opts[:pass] = [:pass] || member.password || group.password opts[:host] = [:host] || member.host opts[:port] = [:port] || member.port opts[:images] = image_list() || member.images || group.images || [:default] opts[:key] = [:key] || member.key || group.key opts[:data] = begin data = group.data.merge(member.data) if [:data] # todo: rather than puking if the json is valid, this should create a pretty language json = MultiJson.load [:data], :symbolize_keys => true data = data.merge(json) if json and json.is_a? Hash end data end Caterer::Server.new(@env, opts) end |
#target_servers(argv, options = {}) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/caterer/command/server.rb', line 36 def target_servers(argv, ={}) @servers ||= begin servers = [] argv.first.split(",").each do |host| if group = @env.config.groups[host.to_sym] group.members.each do |key, member| servers << init_server(group, member, ) end else if not host.match /::/ host = "default::#{host}" end g, m = host.split "::" group = nil member = nil if group = @env.config.groups[g.to_sym] member = group.members[m.to_sym] end if group and member servers << init_server(group, member, ) else servers << init_server(nil, nil, {:host => m}.merge()) end end end servers end end |
#with_target_servers(argv, options = {}) ⇒ Object
30 31 32 33 34 |
# File 'lib/caterer/command/server.rb', line 30 def with_target_servers(argv, ={}) target_servers(argv, ).each do |server| yield server if block_given? end end |