Add http(s)_proxy handling to apex 17/48417/9
authorDan Radez <dradez@redhat.com>
Tue, 5 Dec 2017 21:33:13 +0000 (16:33 -0500)
committerDan Radez <dradez@redhat.com>
Fri, 16 Feb 2018 17:29:56 +0000 (12:29 -0500)
JIRA: APEX-512

Change-Id: I875bd99203b425e448e7a3f64eb9a8f99d03ddaf
Signed-off-by: Dan Radez <dradez@redhat.com>
apex/deploy.py
apex/overcloud/deploy.py
apex/tests/test_apex_overcloud_deploy.py
apex/undercloud/undercloud.py
config/network/network_settings.yaml
config/network/network_settings_v6.yaml
config/network/network_settings_vlans.yaml
config/network/network_settings_vpp.yaml
lib/ansible/playbooks/configure_undercloud.yml

index 5171c5c..fe25634 100644 (file)
@@ -411,8 +411,8 @@ def main():
         if not upstream:
             oc_deploy.prep_env(deploy_settings, net_settings, inventory,
                                opnfv_env, net_env_target, APEX_TEMP_DIR)
-            oc_deploy.prep_image(deploy_settings, sdn_image, APEX_TEMP_DIR,
-                                 root_pw=root_pw)
+            oc_deploy.prep_image(deploy_settings, net_settings, sdn_image,
+                                 APEX_TEMP_DIR, root_pw=root_pw)
         else:
             shutil.copyfile(sdn_image, os.path.join(APEX_TEMP_DIR,
                                                     'overcloud-full.qcow2'))
@@ -449,6 +449,8 @@ def main():
         deploy_vars['overcloudrc'] = 'source /home/stack/overcloudrc'
         deploy_vars['upstream'] = upstream
         deploy_vars['os_version'] = os_version
+        deploy_vars['http_proxy'] = net_settings.get('http_proxy', '')
+        deploy_vars['https_proxy'] = net_settings.get('https_proxy', '')
         for dns_server in net_settings['dns_servers']:
             deploy_vars['dns_server_args'] += " --dns-nameserver {}".format(
                 dns_server)
index 19d46e1..5bbcaed 100644 (file)
@@ -186,10 +186,11 @@ def create_deploy_cmd(ds, ns, inv, tmp_dir,
     return cmd
 
 
-def prep_image(ds, img, tmp_dir, root_pw=None):
+def prep_image(ds, ns, img, tmp_dir, root_pw=None):
     """
     Locates sdn image and preps for deployment.
     :param ds: deploy settings
+    :param ns: network settings
     :param img: sdn image
     :param tmp_dir: dir to store modified sdn image
     :param root_pw: password to configure for overcloud image
@@ -219,6 +220,18 @@ def prep_image(ds, img, tmp_dir, root_pw=None):
                 ".service"
         }])
 
+    if ns.get('http_proxy', ''):
+        virt_cmds.append({
+            con.VIRT_RUN_CMD:
+                "echo 'http_proxy={}' >> /etc/environment".format(
+                    ns['http_proxy'])})
+
+    if ns.get('https_proxy', ''):
+        virt_cmds.append({
+            con.VIRT_RUN_CMD:
+                "echo 'https_proxy={}' >> /etc/environment".format(
+                    ns['https_proxy'])})
+
     if ds_opts['vpn']:
         virt_cmds.append({con.VIRT_RUN_CMD: "chmod +x /etc/rc.d/rc.local"})
         virt_cmds.append({
index 8ff98a8..420a70d 100644 (file)
@@ -154,7 +154,8 @@ class TestOvercloudDeploy(unittest.TestCase):
               'global_params': MagicMock()}
         ds['deploy_options'].__getitem__.side_effect = \
             lambda i: ds_opts.get(i, MagicMock())
-        prep_image(ds, 'undercloud.qcow2', '/tmp', root_pw='test')
+        ns = MagicMock()
+        prep_image(ds, ns, 'undercloud.qcow2', '/tmp', root_pw='test')
         mock_virt_utils.virt_customize.assert_called()
 
     @patch('apex.overcloud.deploy.virt_utils')
@@ -169,7 +170,8 @@ class TestOvercloudDeploy(unittest.TestCase):
               'global_params': MagicMock()}
         ds['deploy_options'].__getitem__.side_effect = \
             lambda i: ds_opts.get(i, MagicMock())
-        prep_image(ds, 'undercloud.qcow2', '/tmp', root_pw='test')
+        ns = MagicMock()
+        prep_image(ds, ns, 'undercloud.qcow2', '/tmp', root_pw='test')
         mock_virt_utils.virt_customize.assert_called()
 
     @patch('apex.overcloud.deploy.virt_utils')
@@ -188,7 +190,8 @@ class TestOvercloudDeploy(unittest.TestCase):
             lambda i: ds_opts.get(i, MagicMock())
         ds['deploy_options'].__contains__.side_effect = \
             lambda i: True if i in ds_opts else MagicMock()
-        prep_image(ds, 'undercloud.qcow2', '/tmp', root_pw='test')
+        ns = MagicMock()
+        prep_image(ds, ns, 'undercloud.qcow2', '/tmp', root_pw='test')
         mock_virt_utils.virt_customize.assert_called()
 
     @patch('apex.overcloud.deploy.virt_utils')
@@ -204,7 +207,8 @@ class TestOvercloudDeploy(unittest.TestCase):
               'global_params': MagicMock()}
         ds['deploy_options'].__getitem__.side_effect = \
             lambda i: ds_opts.get(i, MagicMock())
-        prep_image(ds, 'undercloud.qcow2', '/tmp', root_pw='test')
+        ns = MagicMock()
+        prep_image(ds, ns, 'undercloud.qcow2', '/tmp', root_pw='test')
         mock_virt_utils.virt_customize.assert_called()
 
     @patch('apex.overcloud.deploy.virt_utils')
@@ -219,14 +223,15 @@ class TestOvercloudDeploy(unittest.TestCase):
               'global_params': MagicMock()}
         ds['deploy_options'].__getitem__.side_effect = \
             lambda i: ds_opts.get(i, MagicMock())
-        prep_image(ds, 'undercloud.qcow2', '/tmp', root_pw='test')
+        ns = MagicMock()
+        prep_image(ds, ns, 'undercloud.qcow2', '/tmp', root_pw='test')
         mock_virt_utils.virt_customize.assert_called()
 
     @patch('apex.overcloud.deploy.os.path.isfile')
     def test_prep_image_no_image(self, mock_isfile):
         mock_isfile.return_value = False
         assert_raises(ApexDeployException, prep_image,
-                      {}, 'undercloud.qcow2', '/tmp')
+                      {}, {}, 'undercloud.qcow2', '/tmp')
 
     def test_make_ssh_key(self):
         priv, pub = make_ssh_key()
index d28ed98..63f9183 100644 (file)
@@ -236,4 +236,7 @@ class Undercloud:
             "enabled": ns_external['enabled']
         }
 
+        config['http_proxy'] = ns.get('http_proxy', '')
+        config['https_proxy'] = ns.get('https_proxy', '')
+
         return config
index fe11a9b..ffe3a18 100644 (file)
@@ -57,6 +57,10 @@ syslog:
   server: 10.128.1.24
   transport: 'tcp'
 
+# http(s) proxy settings added to /etc/environment of uc and oc nodes
+# http_proxy: http://proxy.server:8080
+# https_proxy: https://proxy.server:8081
+
 # Common network settings
 networks:
   # Admin configuration (pxe and jumpstart)
index 7dddf34..176bc7c 100644 (file)
@@ -57,6 +57,10 @@ syslog:
   server: 10.128.1.24
   transport: 'tcp'
 
+# http(s) proxy settings added to /etc/environment of uc and oc nodes
+# http_proxy: http://proxy.server:8080
+# https_proxy: https://proxy.server:8081
+
 # Common network settings
 networks:
   # Admin configuration (pxe and jumpstart)
index 345dbbd..29cd193 100644 (file)
@@ -57,6 +57,10 @@ syslog:
   server: 10.128.1.24
   transport: 'tcp'
 
+# http(s) proxy settings added to /etc/environment of uc and oc nodes
+# http_proxy: http://proxy.server:8080
+# https_proxy: https://proxy.server:8081
+
 # Common network settings
 networks:
   # Admin configuration (pxe and jumpstart)
index 2f6bba5..a40158e 100644 (file)
@@ -57,6 +57,10 @@ syslog:
   server: 10.128.1.24
   transport: 'tcp'
 
+# http(s) proxy settings added to /etc/environment of uc and oc nodes
+# http_proxy: http://proxy.server:8080
+# https_proxy: https://proxy.server:8081
+
 # Common network settings
 networks:
   # Admin configuration (pxe and jumpstart)
index 60afca9..e9ce875 100644 (file)
         regexp: 'Defaults\s*requiretty'
         state: absent
       become: yes
+    - lineinfile:
+        path: /etc/environment
+        regexp: '^http_proxy'
+        line: "http_proxy={{ http_proxy }}"
+      become: yes
+      when: http_proxy
+    - lineinfile:
+        path: /etc/environment
+        regexp: '^https_proxy'
+        line: "https_proxy={{ https_proxy }}"
+      become: yes
+      when: https_proxy
     - name: openstack-configs undercloud
       shell: openstack-config --set undercloud.conf DEFAULT {{ item }}
       with_items: "{{ undercloud_config }}"