[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