import json
import logging
import os
+import platform
import pprint
import shutil
import sys
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'
# "$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:
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']})
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 '
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']
else:
root_pw = None
undercloud = uc_lib.Undercloud(args.image_dir,
+ args.deploy_dir,
root_pw=root_pw,
external_network=uc_external)
undercloud.start()
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'
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")