Revert "Adds Calipso scenario"
[apex.git] / apex / deploy.py
index 76708e9..9ebc3f6 100644 (file)
@@ -13,6 +13,7 @@ import argparse
 import json
 import logging
 import os
+import platform
 import pprint
 import shutil
 import sys
@@ -33,7 +34,7 @@ from apex.undercloud import undercloud as uc_lib
 from apex.overcloud import config as oc_cfg
 from apex.overcloud import overcloud_deploy
 
-APEX_TEMP_DIR = tempfile.mkdtemp()
+APEX_TEMP_DIR = tempfile.mkdtemp(prefix='apex_tmp')
 ANSIBLE_PATH = 'ansible/playbooks'
 SDN_IMAGE = 'overcloud-full-opendaylight.qcow2'
 
@@ -64,7 +65,8 @@ def validate_cross_settings(deploy_settings, net_settings, inventory):
     # "$tenant_nic_mapping_compute_members
 
 
-def build_vms(inventory, network_settings):
+def build_vms(inventory, network_settings,
+              template_dir='/usr/share/opnfv-apex'):
     """
     Creates VMs and configures vbmc and host
     :param inventory:
@@ -76,13 +78,13 @@ def build_vms(inventory, network_settings):
         name = 'baremetal{}'.format(idx)
         volume = name + ".qcow2"
         volume_path = os.path.join(constants.LIBVIRT_VOLUME_PATH, volume)
-        # TODO(trozet): add back aarch64
         # TODO(trozet): add error checking
         vm_lib.create_vm(
             name, volume_path,
             baremetal_interfaces=network_settings.enabled_network_list,
             memory=node['memory'], cpus=node['cpu'],
-            macs=[node['mac_address']])
+            macs=[node['mac_address']],
+            template_dir=template_dir)
         virt_utils.host_setup({name: node['pm_port']})
 
 
@@ -123,22 +125,26 @@ def create_deploy_parser():
     deploy_parser.add_argument('--virtual-computes',
                                dest='virt_compute_nodes',
                                default=1,
+                               type=int,
                                help='Number of Virtual Compute nodes to create'
                                     ' and use during deployment (defaults to 1'
                                     ' for noha and 2 for ha)')
     deploy_parser.add_argument('--virtual-cpus',
                                dest='virt_cpus',
                                default=4,
+                               type=int,
                                help='Number of CPUs to use per Overcloud VM in'
                                     ' a virtual deployment (defaults to 4)')
     deploy_parser.add_argument('--virtual-default-ram',
                                dest='virt_default_ram',
                                default=8,
+                               type=int,
                                help='Amount of default RAM to use per '
                                     'Overcloud VM in GB (defaults to 8).')
     deploy_parser.add_argument('--virtual-compute-ram',
                                dest='virt_compute_ram',
                                default=None,
+                               type=int,
                                help='Amount of RAM to use per Overcloud '
                                     'Compute VM in GB (defaults to 8). '
                                     'Overrides --virtual-default-ram arg for '
@@ -284,15 +290,20 @@ def main():
             uc_external = True
         if args.virtual:
             # create all overcloud VMs
-            build_vms(inventory, net_settings)
+            build_vms(inventory, net_settings, args.deploy_dir)
         else:
             # Attach interfaces to jumphost for baremetal deployment
             jump_networks = ['admin']
             if uc_external:
                 jump_networks.append('external')
             for network in jump_networks:
-                iface = net_settings['network'][network]['installer_vm'][
-                    'members'](0)
+                if network == 'external':
+                    # TODO(trozet): enable vlan secondary external networks
+                    iface = net_settings['networks'][network][0][
+                        'installer_vm']['members'][0]
+                else:
+                    iface = net_settings['networks'][network]['installer_vm'][
+                        'members'][0]
                 bridge = "br-{}".format(network)
                 jumphost.attach_interface_to_ovs(bridge, iface, network)
         # Dump all settings out to temp bash files to be sourced
@@ -306,6 +317,7 @@ def main():
         else:
             root_pw = None
         undercloud = uc_lib.Undercloud(args.image_dir,
+                                       args.deploy_dir,
                                        root_pw=root_pw,
                                        external_network=uc_external)
         undercloud.start()
@@ -345,6 +357,7 @@ def main():
         deploy_vars = dict()
         deploy_vars['virtual'] = args.virtual
         deploy_vars['debug'] = args.debug
+        deploy_vars['aarch64'] = platform.machine() == 'aarch64'
         deploy_vars['dns_server_args'] = ''
         deploy_vars['apex_temp_dir'] = APEX_TEMP_DIR
         deploy_vars['stackrc'] = 'source /home/stack/stackrc'
@@ -356,10 +369,11 @@ def main():
             utils.run_ansible(deploy_vars, deploy_playbook, host=undercloud.ip,
                               user='stack', tmp_dir=APEX_TEMP_DIR)
             logging.info("Overcloud deployment complete")
-            os.remove(os.path.join(APEX_TEMP_DIR, 'overcloud-full.qcow2'))
         except Exception:
             logging.error("Deployment Failed.  Please check log")
             raise
+        finally:
+            os.remove(os.path.join(APEX_TEMP_DIR, 'overcloud-full.qcow2'))
 
         # Post install
         logging.info("Executing post deploy configuration")