lib/kytoon/providers/xenserver/server_group.rb in kytoon-1.3.8 vs lib/kytoon/providers/xenserver/server_group.rb in kytoon-1.3.9

- old
+ new

@@ -186,10 +186,11 @@ }, sg.gateway_ip) sg.servers.each do |server| create_instance(sg.gateway_ip, server['image_path'], server['hostname'], server['mac'], sg.bridge, host_ssh_public_key) network_type = sg.network_type if network_type == 'static' then + configure_host_network(sg) configure_static_networking(sg.gateway_ip, server['hostname'], server['ip_address'], sg.netmask, sg.gateway, sg.broadcast, server['mac'], sg.dns_nameserver) else raise "Unsupported network type '#{sg.network_type}'" end end @@ -229,25 +230,32 @@ else nil end end - def self.init_host(sg) + def self.configure_host_network(sg) cidr = IPAddr.new(sg.netmask).to_i.to_s(2).count("1") - hosts_file_data = "127.0.0.1\tlocalhost localhost.localdomain\n" - sg.servers.each do |server| - hosts_file_data += "#{server['ip_address']}\t#{server['hostname']}\t#{server['hostname']}.local\n" - end - Kytoon::Util.remote_exec(%{ # Add first IP to bridge if ! ip a | grep #{sg.gateway}/#{cidr} | grep #{sg.bridge}; then ip a add #{sg.gateway}/#{cidr} dev #{sg.bridge} fi + }, sg.gateway_ip) + end + def self.init_host(sg) + + hosts_file_data = "127.0.0.1\tlocalhost localhost.localdomain\n" + sg.servers.each do |server| + hosts_file_data += "#{server['ip_address']}\t#{server['hostname']}\t#{server['hostname']}.local\n" + end + + configure_host_network(sg) + + Kytoon::Util.remote_exec(%{ cat > /etc/hosts <<-EOF_CAT #{hosts_file_data} EOF_CAT # FIXME... probably a bit insecure but most people are probably using # boxes behind another firewall anyway. @@ -291,9 +299,13 @@ xe vif-create vm-uuid=$UUID mac=#{mac} network-uuid=$NETWORK_UUID device=0 &> /dev/null xe vm-start uuid=$UUID &> /dev/null # inject ssh from host DOMID=$(xe vm-param-get uuid=$UUID param-name="dom-id") + if [ "$DOMID" == "-1" -o -z "$DOMID" ]; then + echo "Unable to find valid domain ID." + exit 1 + fi xenstore-rm -s /local/domain/$DOMID/data/guest/ssh_key 2> /dev/null xenstore-write -s /local/domain/$DOMID/data/host/ssh_key '{"name": "injectfile", "value": "#{file_data}"}' until [ -n "$INJECT_RETVAL" ]; do INJECT_RETVAL=$(xenstore-read -s /local/domain/$DOMID/data/guest/ssh_key 2> /dev/null) done