Add http(s)_proxy handling to apex
[apex.git] / apex / undercloud / undercloud.py
index 013570d..63f9183 100644 (file)
@@ -61,13 +61,14 @@ class Undercloud:
         if self.external_net:
             networks.append('external')
         console = 'ttyAMA0' if platform.machine() == 'aarch64' else 'ttyS0'
+        root = 'vda' if platform.machine() == 'aarch64' else 'sda'
 
         self.vm = vm_lib.create_vm(name='undercloud',
                                    image=self.volume,
                                    baremetal_interfaces=networks,
                                    direct_boot='overcloud-full',
                                    kernel_args=['console={}'.format(console),
-                                                'root=/dev/sda'],
+                                                'root=/dev/{}'.format(root)],
                                    default_network=True,
                                    template_dir=self.template_path)
         self.setup_volumes()
@@ -110,10 +111,12 @@ class Undercloud:
                 "Unable to find IP for undercloud.  Check if VM booted "
                 "correctly")
 
-    def configure(self, net_settings, playbook, apex_temp_dir):
+    def configure(self, net_settings, deploy_settings,
+                  playbook, apex_temp_dir):
         """
         Configures undercloud VM
-        :param net_setings: Network settings for deployment
+        :param net_settings: Network settings for deployment
+        :param deploy_settings: Deployment settings for deployment
         :param playbook: playbook to use to configure undercloud
         :param apex_temp_dir: temporary apex directory to hold configs/logs
         :return: None
@@ -121,7 +124,8 @@ class Undercloud:
 
         logging.info("Configuring Undercloud...")
         # run ansible
-        ansible_vars = Undercloud.generate_config(net_settings)
+        ansible_vars = Undercloud.generate_config(net_settings,
+                                                  deploy_settings)
         ansible_vars['apex_temp_dir'] = apex_temp_dir
         try:
             utils.run_ansible(ansible_vars, playbook, host=self.ip,
@@ -179,21 +183,27 @@ class Undercloud:
         virt_utils.virt_customize(virt_ops, self.volume)
 
     @staticmethod
-    def generate_config(ns):
+    def generate_config(ns, ds):
         """
         Generates a dictionary of settings for configuring undercloud
         :param ns: network settings to derive undercloud settings
+        :param ds: deploy settings to derive undercloud settings
         :return: dictionary of settings
         """
 
         ns_admin = ns['networks']['admin']
         intro_range = ns['apex']['networks']['admin']['introspection_range']
         config = dict()
+        # Check if this is an ARM deployment
+        config['aarch64'] = platform.machine() == 'aarch64'
+        # Configuration for undercloud.conf
         config['undercloud_config'] = [
             "enable_ui false",
             "undercloud_update_packages false",
             "undercloud_debug false",
             "inspection_extras false",
+            "ipxe {}".format(str(ds['global_params'].get('ipxe', True) and
+                                 not config['aarch64'])),
             "undercloud_hostname undercloud.{}".format(ns['dns-domain']),
             "local_ip {}/{}".format(str(ns_admin['installer_vm']['ip']),
                                     str(ns_admin['cidr']).split('/')[1]),
@@ -226,7 +236,7 @@ class Undercloud:
             "enabled": ns_external['enabled']
         }
 
-        # Check if this is an ARM deployment
-        config['aarch64'] = platform.machine() == 'aarch64'
+        config['http_proxy'] = ns.get('http_proxy', '')
+        config['https_proxy'] = ns.get('https_proxy', '')
 
         return config