[Ovirt-devel] [PATCH PuppetInstaller] Add re-usable yes/no logic to the install script. Improve Indentation
Bryan Kearney
bkearney at redhat.com
Tue Dec 23 20:15:16 UTC 2008
---
ace-ovirt/modules/ovirt/ovirt-installer | 258 +++++++++++++++----------------
1 files changed, 124 insertions(+), 134 deletions(-)
diff --git a/ace-ovirt/modules/ovirt/ovirt-installer b/ace-ovirt/modules/ovirt/ovirt-installer
index b55b6d6..cc89cf8 100755
--- a/ace-ovirt/modules/ovirt/ovirt-installer
+++ b/ace-ovirt/modules/ovirt/ovirt-installer
@@ -23,13 +23,28 @@
require 'socket'
require 'fileutils'
-if File.exist?("/usr/sbin/sestatus")
-sestatus = `/usr/sbin/sestatus`
-if sestatus !~ /(Current mode: permissive|Current mode: disabled|SELinux status: disabled|SELinux status: permissive)/
-puts "SELinux enabled, please disable or set in permissive mode permanently by editing"
-puts "/etc/selinux/config and rebooting"
-exit
+
+# Allow a user to enter a Yes/No
+# And repeat the prompt until they do
+def prompt_yes_no(prompt)
+ puts("\n#{prompt} (y/n)")
+ answer = gets.chomp().downcase()
+ while answer != "y" and answer != "n"
+ puts("Invalid choice")
+ puts("\n#{prompt} (y/n)")
+ answer = gets.chomp
+ end
+
+ return answer
end
+
+if File.exist?("/usr/sbin/sestatus")
+ sestatus = `/usr/sbin/sestatus`
+ if sestatus !~ /(Current mode: permissive|Current mode: disabled|SELinux status: disabled|SELinux status: permissive)/
+ puts "SELinux enabled, please disable or set in permissive mode permanently by editing"
+ puts "/etc/selinux/config and rebooting"
+ exit
+ end
end
FileUtils.mkdir_p("/usr/share/ace/appliances/ovirt")
@@ -43,82 +58,70 @@ prov_dev = ""
dev_ct = 0
net_devs = `hal-find-by-capability --capability net`
-net_devs.each_line{ |dev|
-dev_ct = dev_ct + 1
-}
+net_devs.each_line do |dev|
+ dev_ct = dev_ct + 1
+end
if dev_ct == 0
-puts "Unable to install without a network interface"
-exit
-
+ puts "Unable to install without a network interface"
+ exit
else
-puts ""
-get_net_devs = `hal-find-by-capability --capability net`
-puts "Below are the detected networking devices\n\n"
-puts "mac address interface ip address"
-net_devs.each_line{ |dev|
-dev = dev.chomp
-interface = `hal-get-property --udi #{dev} --key net.interface`
-mac = `hal-get-property --udi #{dev} --key net.address`
-ip = `ifconfig #{interface}`
-ipaddr = ip.scan(/\s*inet addr:([\d.]+)/)
-puts mac.chop + " : " + interface.chop + " : " + ipaddr.to_s if interface.chop != "lo"
-}
+ puts ""
+ get_net_devs = `hal-find-by-capability --capability net`
+ puts "Below are the detected networking devices\n\n"
+ puts "mac address interface ip address"
+ net_devs.each_line do|dev|
+ dev = dev.chomp
+ interface = `hal-get-property --udi #{dev} --key net.interface`
+ mac = `hal-get-property --udi #{dev} --key net.address`
+ ip = `ifconfig #{interface}`
+ ipaddr = ip.scan(/\s*inet addr:([\d.]+)/)
+ puts mac.chop + " : " + interface.chop + " : " + ipaddr.to_s if interface.chop != "lo"
+ end
end
if dev_ct > 1
-puts "\nDo you want separate management and provisioning networks? (y/n)"
-sep_networks = gets.chomp
-while sep_networks != "y" and sep_networks != "n"
-puts "Invalid choice"
-puts "Do you want separate management and provisioning networks? (y/n)"
-sep_networks = gets.chomp
-end
-
-if sep_networks == "y"
-while mgmt_dev == ""
-puts "Input your management interface (example: eth0)"
-mgmt_dev = gets.chomp
-end
-
-while prov_dev == ""
-puts "Input your provisioning interface, this may also be your management interface (example: eth1)"
-prov_dev = gets.chomp
-end
-
-elsif sep_networks == "n"
-while mgmt_dev == ""
-puts "Input your management/provisioning interface (example: eth1)"
-mgmt_dev = gets.chomp
-prov_dev = mgmt_dev
-end
-end
-
+ sep_networks = prompt_yes_no("Do you want separate management and provisioning networks?")
+
+ if sep_networks == "y"
+ while mgmt_dev == ""
+ puts "Input your management interface (example: eth0)"
+ mgmt_dev = gets.chomp
+ end
+
+ while prov_dev == ""
+ puts "Input your provisioning interface, this may also be your management interface (example: eth1)"
+ prov_dev = gets.chomp
+ end
+
+ elsif sep_networks == "n"
+ while mgmt_dev == ""
+ puts "Input your management/provisioning interface (example: eth1)"
+ mgmt_dev = gets.chomp
+ prov_dev = mgmt_dev
+ end
+ end
elsif dev_ct == 1
-while mgmt_dev == ""
-puts "\nOnly one networking device detected"
-puts "Input your management/provisioning interface (example: eth1)"
-mgmt_dev = gets.chomp
-prov_dev = mgmt_dev
-puts "Need Management interface"
-end
+ while mgmt_dev == ""
+ puts "\nOnly one networking device detected"
+ puts "Input your management/provisioning interface (example: eth1)"
+ mgmt_dev = gets.chomp
+ prov_dev = mgmt_dev
+ puts "Need Management interface"
+ end
end
puts "Enter the hostname of the oVirt management server (example: management.example.com)"
ovirt_host = gets.chomp
ipa_host = ovirt_host
-puts "\nUse this system's dns servers (y/n)"
-File.open('/etc/resolv.conf').each_line{ |line|
- line = line.chomp
-puts line if line =~ /nameserver/ and line !~ /nameserver 127.0.0.1/
-}
-dns_servers = gets.chomp
-
-while dns_servers != "y" and dns_servers != "n"
-puts "Invalid choice"
-dns_servers = gets.chomp
+prompt = "\nUse this system's dns servers?"
+File.open('/etc/resolv.conf').each_line do |line|
+ line = line.chomp
+ prompt << "\n #{line}" if line =~ /nameserver/ and line !~ /nameserver 127.0.0.1/
end
+prompt << "\nPlease Enter"
+dns_servers = prompt_yes_no(prompt)
mgmt_ip = `ifconfig #{mgmt_dev}`
mgmt_ipaddr= mgmt_ip.scan(/\s*inet addr:([\d.]+)/)
@@ -132,91 +135,78 @@ config_file.write "$ovirt_host = '#{ovirt_host}'\n"
config_file.write "$ipa_host = '#{ipa_host}'\n\n"
if dns_servers == "n"
-config_file.write "dns::bundled{setup: mgmt_ipaddr=> $mgmt_ipaddr, prov_ipaddr=> $prov_ipaddr, mgmt_dev => '#{mgmt_dev}', prov_dev => '#{prov_dev}'}\n\n"
+ config_file.write "dns::bundled{setup: mgmt_ipaddr=> $mgmt_ipaddr, prov_ipaddr=> $prov_ipaddr, mgmt_dev => '#{mgmt_dev}', prov_dev => '#{prov_dev}'}\n\n"
end
if dns_servers == "y"
-config_file.write "dns::remote{setup: mgmt_ipaddr=> $mgmt_ipaddr, prov_ipaddr=> $prov_ipaddr, mgmt_dev => '#{mgmt_dev}', prov_dev => '#{prov_dev}'}\n\n"
-host_lookup = Socket.getaddrinfo(ipa_host,nil)
-hostip = host_lookup[1][3]
-if hostip.to_s != mgmt_ipaddr.to_s
-puts "Reverse dns lookup for #{ipa_host} failed, exiting"
-exit
-end
+ config_file.write "dns::remote{setup: mgmt_ipaddr=> $mgmt_ipaddr, prov_ipaddr=> $prov_ipaddr, mgmt_dev => '#{mgmt_dev}', prov_dev => '#{prov_dev}'}\n\n"
+ host_lookup = Socket.getaddrinfo(ipa_host,nil)
+ hostip = host_lookup[1][3]
+ if hostip.to_s != mgmt_ipaddr.to_s
+ puts "Reverse dns lookup for #{ipa_host} failed, exiting"
+ exit
+ end
end
-puts "Does you provisioning network already have dhcp? (y/n)"
-dhcp_setup = gets.chomp
-while dhcp_setup != "y" and dhcp_setup != "n"
-puts "Invalid choice"
-dhcp_setup = gets.chomp
-end
+dhcp_setup = prompt_yes_no("Does you provisioning network already have dhcp?")
if dhcp_setup == "n"
-puts "DHCP Configuration\n"
-config_file.write "# dhcp configuration\n"
-dhcp_interface = prov_dev
-config_file.write "$dhcp_interface = '#{dhcp_interface}'\n"
+ puts "DHCP Configuration\n"
+ config_file.write "# dhcp configuration\n"
+ dhcp_interface = prov_dev
+ config_file.write "$dhcp_interface = '#{dhcp_interface}'\n"
-puts "Enter the first 3 octets of the dhcp network you wish to use (example: 192.168.50)"
-dhcp_network = gets.chomp
-config_file.write "$dhcp_network = '#{dhcp_network}'\n"
+ puts "Enter the first 3 octets of the dhcp network you wish to use (example: 192.168.50)"
+ dhcp_network = gets.chomp
+ config_file.write "$dhcp_network = '#{dhcp_network}'\n"
-puts "Enter the dhcp pool start address (example: 3)"
-dhcp_start = gets.chomp
-config_file.write "$dhcp_start = '#{dhcp_start}'\n"
+ puts "Enter the dhcp pool start address (example: 3)"
+ dhcp_start = gets.chomp
+ config_file.write "$dhcp_start = '#{dhcp_start}'\n"
-puts "Enter the dhcp pool end addess (example: 100)"
-dhcp_stop = gets.chomp
-config_file.write "$dhcp_stop = '#{dhcp_stop}'\n"
+ puts "Enter the dhcp pool end addess (example: 100)"
+ dhcp_stop = gets.chomp
+ config_file.write "$dhcp_stop = '#{dhcp_stop}'\n"
-puts "Enter the dhcp domain you wish to use (example: example.com)"
-dhcp_domain = gets.chomp
-config_file.write "$dhcp_domain = '#{dhcp_domain}'\n"
+ puts "Enter the dhcp domain you wish to use (example: example.com)"
+ dhcp_domain = gets.chomp
+ config_file.write "$dhcp_domain = '#{dhcp_domain}'\n"
-config_file.write "$ntp_server = '#{mgmt_ipaddr}'\n\n"
+ config_file.write "$ntp_server = '#{mgmt_ipaddr}'\n\n"
-puts "Provide pxe/tftp capability? (y/n)"
-tftp_setup = gets.chomp
+ tftp_setup = prompt_yes_no("Provide pxe/tftp capability? ")
-if sep_networks == "y"
-prov_ip = `ifconfig #{prov_dev}`
-prov_dns_server = prov_ip.scan(/\s*inet addr:([\d.]+)/)
-config_file.write "$prov_dns_server = '#{prov_dns_server}'\n"
+ if sep_networks == "y"
+ prov_ip = `ifconfig #{prov_dev}`
+ prov_dns_server = prov_ip.scan(/\s*inet addr:([\d.]+)/)
+ config_file.write "$prov_dns_server = '#{prov_dns_server}'\n"
-puts "Enter the network gateway for your provisioning network (example: 192.168.50.254)"
-prov_network_gateway = gets.chomp
-config_file.write "$prov_network_gateway = '#{prov_network_gateway}'\n"
-end
+ puts "Enter the network gateway for your provisioning network (example: 192.168.50.254)"
+ prov_network_gateway = gets.chomp
+ config_file.write "$prov_network_gateway = '#{prov_network_gateway}'\n"
+ end
end
# Cobbler Configuration
-puts "Do you have a cobbler already that you wish to use? (y/n)"
-cobbler_setup = gets.chomp
-
-while cobbler_setup != "y" and cobbler_setup != "n"
-puts "Invalid choice"
-cobbler_setup = gets.chomp
-end
-
+cobbler_setup = prompt_yes_no("Do you have a cobbler already that you wish to use? ")
cobbler_config = "n"
if cobbler_setup == "y"
-puts "Enter the hostname of your cobbler server"
-cobbler_hostname = gets.chomp
-puts "Enter your cobbler username"
-cobbler_user_name= gets.chomp
-puts "Enter your cobbler user password"
-cobbler_user_password = gets.chomp
+ puts "Enter the hostname of your cobbler server"
+ cobbler_hostname = gets.chomp
+ puts "Enter your cobbler username"
+ cobbler_user_name= gets.chomp
+ puts "Enter your cobbler user password"
+ cobbler_user_password = gets.chomp
elsif cobbler_setup == "n"
-cobbler_hostname = "localhost"
-puts "We will setup a cobbler instance, please provide the following information"
-puts "Enter your cobbler username"
-cobbler_user_name= gets.chomp
-puts "Enter your cobbler user password"
-cobbler_user_password = gets.chomp
+ cobbler_hostname = "localhost"
+ puts "We will setup a cobbler instance, please provide the following information"
+ puts "Enter your cobbler username"
+ cobbler_user_name= gets.chomp
+ puts "Enter your cobbler user password"
+ cobbler_user_password = gets.chomp
end
config_file.write "# cobbler configuration\n"
@@ -244,24 +234,24 @@ config_file.write "$freeipa_password = '#{freeipa_password}'\n"
ldap_dn = "cn=ipaConfig,cn=etc,"
ldap_dn_temp = realm_name.split(".")
ldap_dn_temp.each do |i|
-ldap_dn += "dc=#{i},"
+ ldap_dn += "dc=#{i},"
end
ldap_dn = ldap_dn.chop
config_file.write "$ldap_dn = '#{ldap_dn}'\n\n"
if cobbler_setup == "y"
-config_file.write "include cobbler::remote\n"
+ config_file.write "include cobbler::remote\n"
elsif cobbler_setup == "n"
-config_file.write "include cobbler::bundled\n"
+ config_file.write "include cobbler::bundled\n"
end
if dhcp_setup == "n"
-config_file.write "include dhcp::bundled\n"
+ config_file.write "include dhcp::bundled\n"
end
if tftp_setup == "y"
-config_file.write "include tftp::bundled\n"
+ config_file.write "include tftp::bundled\n"
end
config_file.write "include postgres::bundled\n"
--
1.6.0.4
More information about the ovirt-devel
mailing list