Disable NFS when all-in-one deployment
[apex.git] / apex / overcloud / deploy.py
index 6e1d5bb..ccb21ce 100644 (file)
@@ -99,6 +99,12 @@ DUPLICATE_COMPUTE_SERVICES = [
     'OS::TripleO::Services::ComputeNeutronL3Agent'
 ]
 
+NFS_VARS = [
+    'NovaNfsEnabled',
+    'GlanceNfsEnabled',
+    'CinderNfsEnabledBackend'
+]
+
 
 def build_sdn_env_list(ds, sdn_map, env_list=None):
     """
@@ -152,7 +158,7 @@ def get_docker_sdn_files(ds_opts):
     :return: list of docker THT env files for an SDN
     """
     docker_services = con.VALID_DOCKER_SERVICES
-    tht_dir = con.THT_DOCKER_ENV_DIR[ds_opts['os_version']]
+    tht_dir = con.THT_DOCKER_ENV_DIR
     sdn_env_list = build_sdn_env_list(ds_opts, SDN_FILE_MAP)
     for i, sdn_file in enumerate(sdn_env_list):
         sdn_base = os.path.basename(sdn_file)
@@ -194,8 +200,6 @@ def create_deploy_cmd(ds, ns, inv, tmp_dir,
         sdn_docker_files = get_docker_sdn_files(ds_opts)
         for sdn_docker_file in sdn_docker_files:
             deploy_options.append(sdn_docker_file)
-        if sdn_docker_files:
-            deploy_options.append('sdn-images.yaml')
     else:
         deploy_options += build_sdn_env_list(ds_opts, SDN_FILE_MAP)
 
@@ -207,6 +211,8 @@ def create_deploy_cmd(ds, ns, inv, tmp_dir,
             else:
                 deploy_options.append(os.path.join(con.THT_ENV_DIR, v))
 
+    # TODO(trozet) Fix this check to look for if ceph is in controller services
+    # and not use name of the file
     if ds_opts['ceph'] and 'csit' not in env_file:
         prep_storage_env(ds, ns, virtual, tmp_dir)
         deploy_options.append(os.path.join(con.THT_ENV_DIR,
@@ -247,12 +253,16 @@ def create_deploy_cmd(ds, ns, inv, tmp_dir,
     if net_data:
         cmd += ' --networks-file network_data.yaml'
     libvirt_type = 'kvm'
-    if virtual:
+    if virtual and (platform.machine() != 'aarch64'):
         with open('/sys/module/kvm_intel/parameters/nested') as f:
             nested_kvm = f.read().strip()
             if nested_kvm != 'Y':
                 libvirt_type = 'qemu'
+    elif virtual and (platform.machine() == 'aarch64'):
+        libvirt_type = 'qemu'
     cmd += ' --libvirt-type {}'.format(libvirt_type)
+    if platform.machine() == 'aarch64':
+        cmd += ' --override-ansible-cfg /home/stack/ansible.cfg '
     logging.info("Deploy command set: {}".format(cmd))
 
     with open(os.path.join(tmp_dir, 'deploy_command'), 'w') as fh:
@@ -432,6 +442,29 @@ def prep_image(ds, ns, img, tmp_dir, root_pw=None, docker_tag=None,
     virt_cmds.append(
         {con.VIRT_RUN_CMD: "crudini --del {} Unit "
                            "ConditionPathExists".format(dhcp_unit)})
+    # Prep for NFS
+    virt_cmds.extend([
+        {con.VIRT_INSTALL: "nfs-utils"},
+        {con.VIRT_RUN_CMD: "ln -s /usr/lib/systemd/system/nfs-server.service "
+                           "/etc/systemd/system/multi-user.target.wants/"
+                           "nfs-server.service"},
+        {con.VIRT_RUN_CMD: "mkdir -p /glance"},
+        {con.VIRT_RUN_CMD: "mkdir -p /cinder"},
+        {con.VIRT_RUN_CMD: "mkdir -p /nova"},
+        {con.VIRT_RUN_CMD: "chmod 777 /glance"},
+        {con.VIRT_RUN_CMD: "chmod 777 /cinder"},
+        {con.VIRT_RUN_CMD: "chmod 777 /nova"},
+        {con.VIRT_RUN_CMD: "chown nfsnobody:nfsnobody /glance"},
+        {con.VIRT_RUN_CMD: "chown nfsnobody:nfsnobody /cinder"},
+        {con.VIRT_RUN_CMD: "chown nfsnobody:nfsnobody /nova"},
+        {con.VIRT_RUN_CMD: "echo '/glance *(rw,sync,"
+                           "no_root_squash,no_acl)' > /etc/exports"},
+        {con.VIRT_RUN_CMD: "echo '/cinder *(rw,sync,"
+                           "no_root_squash,no_acl)' >> /etc/exports"},
+        {con.VIRT_RUN_CMD: "echo '/nova *(rw,sync,"
+                           "no_root_squash,no_acl)' >> /etc/exports"},
+        {con.VIRT_RUN_CMD: "exportfs -avr"},
+    ])
     virt_utils.virt_customize(virt_cmds, tmp_oc_image)
     logging.info("Overcloud image customization complete")
     return patched_containers
@@ -677,11 +710,11 @@ def prep_env(ds, ns, inv, opnfv_env, net_env, tmp_dir):
     # Merge compute services into control services if only a single
     # node deployment
     if num_compute == 0:
-        logging.info("All in one deployment. Checking if service merging "
-                     "required into control services")
         with open(tmp_opnfv_env, 'r') as fh:
             data = yaml.safe_load(fh)
         param_data = data['parameter_defaults']
+        logging.info("All in one deployment detected")
+        logging.info("Disabling NFS in env file")
         # Check to see if any parameters are set for Compute
         for param in param_data.keys():
             if param != 'ComputeServices' and param.startswith('Compute'):
@@ -689,6 +722,10 @@ def prep_env(ds, ns, inv, opnfv_env, net_env, tmp_dir):
                                 "in deployment: {}. Please use Controller "
                                 "based parameters when using All-in-one "
                                 "deployments".format(param))
+            if param in NFS_VARS:
+                param_data[param] = False
+        logging.info("Checking if service merging required into "
+                     "control services")
         if ('ControllerServices' in param_data and 'ComputeServices' in
                 param_data):
             logging.info("Services detected in environment file. Merging...")
@@ -703,11 +740,11 @@ def prep_env(ds, ns, inv, opnfv_env, net_env, tmp_dir):
             logging.debug("Merged controller services: {}".format(
                 pprint.pformat(param_data['ControllerServices'])
             ))
-            with open(tmp_opnfv_env, 'w') as fh:
-                yaml.safe_dump(data, fh, default_flow_style=False)
         else:
             logging.info("No services detected in env file, not merging "
                          "services")
+        with open(tmp_opnfv_env, 'w') as fh:
+            yaml.safe_dump(data, fh, default_flow_style=False)
 
     logging.info("opnfv-environment file written to {}".format(tmp_opnfv_env))
     with open(tmp_opnfv_env, 'r') as fh: