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