diff options
-rw-r--r-- | build/f_isoroot/f_odlpluginbuild/Makefile | 2 | ||||
-rw-r--r-- | build/f_isoroot/f_qemupluginbuild/config.mk | 2 | ||||
-rwxr-xr-x | ci/deploy.sh | 15 | ||||
-rw-r--r-- | deploy/deploy-config.py | 51 | ||||
-rw-r--r-- | deploy/scenario/ha_nfv-kvm_heat_ceilometer_scenario_0.0.5.yaml | 180 | ||||
-rw-r--r-- | deploy/scenario/no-ha_nfv-kvm_heat_ceilometer_scenario_0.0.4.yaml | 155 | ||||
-rw-r--r-- | deploy/scenario/scenario.yaml | 4 |
7 files changed, 396 insertions, 13 deletions
diff --git a/build/f_isoroot/f_odlpluginbuild/Makefile b/build/f_isoroot/f_odlpluginbuild/Makefile index 5287ca8aa..5e563ff33 100644 --- a/build/f_isoroot/f_odlpluginbuild/Makefile +++ b/build/f_isoroot/f_odlpluginbuild/Makefile @@ -8,7 +8,7 @@ ############################################################################## TOP := $(shell pwd) -ODL_BRANCH=brahmaputra-release +ODL_BRANCH=brahmaputra-sr2 ODL_REPO="https://github.com/openstack/fuel-plugin-opendaylight.git" export USE_JAVA8=true diff --git a/build/f_isoroot/f_qemupluginbuild/config.mk b/build/f_isoroot/f_qemupluginbuild/config.mk index e4a7d393f..1f823b689 100644 --- a/build/f_isoroot/f_qemupluginbuild/config.mk +++ b/build/f_isoroot/f_qemupluginbuild/config.mk @@ -7,6 +7,6 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## -QEMU_BRANCH=1eb8bf930e2ec6e64526e95fcb21124f7401a243 +QEMU_BRANCH=fc2f266fc0986b56deb0b740a5e202205b577a60 QEMU_REPO=https://review.openstack.org/openstack/fuel-plugin-qemu QEMU_CHANGE= diff --git a/ci/deploy.sh b/ci/deploy.sh index 7bd180ef1..d83bba2f4 100755 --- a/ci/deploy.sh +++ b/ci/deploy.sh @@ -131,7 +131,9 @@ do fi ;; B) - PXE_BRIDGE="-b ${OPTARG}" + if [[ ${OPTARG} ]]; then + PXE_BRIDGE="-b ${OPTARG}" + fi ;; d) DRY_RUN=1 @@ -158,7 +160,9 @@ do DEPLOY_SCENARIO=${OPTARG} ;; S) - STORAGE_DIR="-s ${OPTARG}" + if [[ ${OPTARG} ]]; then + STORAGE_DIR="-s ${OPTARG}" + fi ;; i) ISO=${OPTARG} @@ -170,7 +174,6 @@ do usage exit 1 fi - ;; h) usage @@ -189,8 +192,8 @@ do done if [[ $EUID -ne 0 ]]; then - echo "This script must be run as root" 1>&2 - exit 1 + echo "This script must be run as root" 1>&2 + exit 1 fi if [ -z $BASE_CONFIG_URI ] || [ -z $TARGET_LAB ] || \ @@ -230,7 +233,7 @@ if [ $DRY_RUN -eq 0 ]; then ISO=${SCRIPT_PATH}/ISO/image.iso fi # Start deployment - echo "python deploy.py -s $STORAGE_DIR -b $PXE_BRIDGE $USE_EXISTING_FUEL $FUEL_CREATION_ONLY $NO_HEALTH_CHECK $NO_DEPLOY_ENVIRONMENT -dea ${SCRIPT_PATH}/config/dea.yaml -dha ${SCRIPT_PATH}/config/dha.yaml -iso $ISO" + echo "python deploy.py $STORAGE_DIR $PXE_BRIDGE $USE_EXISTING_FUEL $FUEL_CREATION_ONLY $NO_HEALTH_CHECK $NO_DEPLOY_ENVIRONMENT -dea ${SCRIPT_PATH}/config/dea.yaml -dha ${SCRIPT_PATH}/config/dha.yaml -iso $ISO" python deploy.py $STORAGE_DIR $PXE_BRIDGE $USE_EXISTING_FUEL $FUEL_CREATION_ONLY $NO_HEALTH_CHECK $NO_DEPLOY_ENVIRONMENT -dea ${SCRIPT_PATH}/config/dea.yaml -dha ${SCRIPT_PATH}/config/dha.yaml -iso $ISO fi popd > /dev/null diff --git a/deploy/deploy-config.py b/deploy/deploy-config.py index a0a44c1ed..d1e9cd47a 100644 --- a/deploy/deploy-config.py +++ b/deploy/deploy-config.py @@ -78,6 +78,13 @@ def parse_arguments(): 'output_path': args.output_path} return kwargs +def warning(msg): + red = '\033[0;31m' + NC = '\033[0m' + print('%(red)s WARNING: %(msg)s %(NC)s' % {'red': red, + 'msg': msg, + 'NC': NC}) + def setup_yaml(): represent_dict_order = lambda self, data: self.represent_mapping('tag:yaml.org,2002:map', data.items()) yaml.add_representer(collections.OrderedDict, represent_dict_order) @@ -90,14 +97,52 @@ def sha_uri(uri): sha1.update(data) return sha1.hexdigest() +def merge_fuel_plugin_version_list(list1, list2): + final_list = [] + # When the plugin version in not there in list1 it will + # not be copied + for e_l1 in list1: + plugin_version = e_l1.get('metadata', + {'plugin_version', None}).get('plugin_version') + plugin_version_found = False + for e_l2 in list2: + if plugin_version == e_l2.get('metadata', + {'plugin_version', + None}).get('plugin_version'): + final_list.append(dict(mergedicts(e_l1, e_l2))) + plugin_version_found = True + if not plugin_version_found: + final_list.append(e_l1) + return final_list + +def merge_lists(list1, list2): + if list1 and list2: + if isinstance(list1[0], dict): + if 'plugin_version' in list1[0].get('metadata', {}): + return merge_fuel_plugin_version_list(list1, list2) + else: + warning("Lists with dictionary inside are not merge able! " + "List2 will overwrite List1. " + "List1: %s; List2: %s" + % (list1, list2)) + return list2 + else: + return list2 + elif list1: + return list1 + else: + return list2 + def mergedicts(dict1, dict2): for k in set(dict1.keys()).union(dict2.keys()): if k in dict1 and k in dict2: if isinstance(dict1[k], dict) and isinstance(dict2[k], dict): yield (k, dict(mergedicts(dict1[k], dict2[k]))) + elif isinstance(dict1[k], list) and isinstance(dict2[k], list): + yield (k, merge_lists(dict1[k], dict2[k])) else: - # If one of the values is not a dict, you can't continue - # merging it. + # If one of the values is not a dict nor a list, + # you can't continue merging it. # Value from second dict overrides one in first and we move on. yield (k, dict2[k]) elif k in dict1: @@ -194,7 +239,7 @@ if deploy_scenario_conf["stack-extensions"]: module_comments.append(str(module_conf['plugin-config-metadata']['comment'])) module_conf.pop('plugin-config-metadata') final_dea_conf['settings']['editable'].update(module_conf) - scenario_module_override_conf = module['module-config-override'] + scenario_module_override_conf = module.get('module-config-override') if scenario_module_override_conf: dea_scenario_module_override_conf = {} dea_scenario_module_override_conf['settings'] = {} diff --git a/deploy/scenario/ha_nfv-kvm_heat_ceilometer_scenario_0.0.5.yaml b/deploy/scenario/ha_nfv-kvm_heat_ceilometer_scenario_0.0.5.yaml new file mode 100644 index 000000000..2941a726e --- /dev/null +++ b/deploy/scenario/ha_nfv-kvm_heat_ceilometer_scenario_0.0.5.yaml @@ -0,0 +1,180 @@ +############################################################################## +# Copyright (c) 2015 Ericsson AB and others. +# jonas.bjurel@ericsson.com +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +############################################################################### # Description: +# This .yaml configuration file defines the configuration of the fuel +# deployment and is passed as an argument to deploy.sh +# eg. deploy.sh -c https://artifact.opnfv.org/fuel/config +# This will make build.sh fetch this configuration file and configure the +# deployment accordingly. +# After the deployment, a copy of this file gets uploaded to fuel: +# /root/deploy-config.yaml, as well as the sha-1 sum of this file: +# /root/deploy-config.sha1 +############################################################################## + +############################################################################## +# deployment configuration meta-data +deployment-scenario-metadata: + title: NFV KVM HA deployment + version: 0.0.5 + created: Mar 18 2016 + comment: Ceph cannot be assigned to compute, ceph is collocated with one of the controllers + +############################################################################## +# Stack extentions are opnfv added value features in form of a fuel-plugin +# plug-ins listed below will be enabled and configured according to the +# <module-config-base-uri>/<module-config-name>_<module-config-version>.yaml +# It does so by copying the config file to the local plugin config directory +stack-extensions: + - module: fuel-plugin-qemu + module-config-name: fuel-nfvkvm + module-config-version: 0.0.2 + module-config-override: + # Module config overrides + +############################################################################## +# By editing the override-config sections below, you can override arbitrary +# configuration name-space settings +dea-override-config: + environment: + net_segment_type: tun + nodes: + - id: 1 + interfaces: interfaces_1 + role: mongo,controller + transformations: transformations_1 + - id: 2 + interfaces: interfaces_1 + role: controller,ceph-osd + transformations: transformations_1 + - id: 3 + interfaces: interfaces_1 + role: controller + transformations: transformations_1 + - id: 4 + interfaces: interfaces_1 + role: compute + transformations: transformations_1 + - id: 5 + interfaces: interfaces_1 + role: compute + transformations: transformations_1 + + settings: + editable: + storage: + ephemeral_ceph: + description: Configures Nova to store ephemeral volumes in RBD. This works best if Ceph is enabled for volumes and images, too. Enables live migration of all types of Ceph backed VMs (without this option, live migration will only work with VMs launched from Cinder volumes). + label: Ceph RBD for ephemeral volumes (Nova) + type: checkbox + value: false + weight: 75 + images_ceph: + description: Configures Glance to use the Ceph RBD backend to store images. If enabled, this option will prevent Swift from installing. + label: Ceph RBD for images (Glance) + restrictions: + - settings:storage.images_vcenter.value == true: Only one Glance backend could be selected. + type: checkbox + value: false + weight: 30 + images_vcenter: + description: Configures Glance to use the vCenter/ESXi backend to store images. If enabled, this option will prevent Swift from installing. + label: VMware vCenter/ESXi datastore for images (Glance) + restrictions: + - action: hide + condition: settings:common.use_vcenter.value != true + - condition: settings:storage.images_ceph.value == true + message: Only one Glance backend could be selected. + type: checkbox + value: false + weight: 35 + iser: + description: 'High performance block storage: Cinder volumes over iSER protocol (iSCSI over RDMA). This feature requires SR-IOV capabilities in the NIC, and will use a dedicated virtual function for the storage network.' + label: iSER protocol for volumes (Cinder) + restrictions: + - settings:storage.volumes_lvm.value != true or settings:common.libvirt_type.value != 'kvm' + - action: hide + condition: not ('experimental' in version:feature_groups) + type: checkbox + value: false + weight: 11 + metadata: + group: storage + label: Storage Backends + weight: 60 + objects_ceph: + description: Configures RadosGW front end for Ceph RBD. This exposes S3 and Swift API Interfaces. If enabled, this option will prevent Swift from installing. + label: Ceph RadosGW for objects (Swift API) + type: checkbox + value: false + weight: 80 + osd_pool_size: + description: Configures the default number of object replicas in Ceph. This number must be equal to or lower than the number of deployed 'Storage - Ceph OSD' nodes. + label: Ceph object replication factor + regex: + error: Invalid number + source: ^[1-9]\d*$ + type: text + value: '1' + weight: 85 + volumes_block_device: + description: High performance block device storage. It is recommended to have at least one Storage - Cinder Block Device + label: Cinder Block device driver + restrictions: + - settings:storage.volumes_ceph.value == true + type: checkbox + value: false + weight: 15 + volumes_ceph: + description: Configures Cinder to store volumes in Ceph RBD images. + label: Ceph RBD for volumes (Cinder) + restrictions: + - settings:storage.volumes_lvm.value == true or settings:storage.volumes_block_device.value == true + type: checkbox + value: true + weight: 20 + volumes_lvm: + description: It is recommended to have at least one Storage - Cinder LVM node. + label: Cinder LVM over iSCSI for volumes + restrictions: + - settings:storage.volumes_ceph.value == true + type: checkbox + value: false + weight: 10 + +dha-override-config: + nodes: + - id: 1 + libvirtName: controller1 + libvirtTemplate: templates/virtual_environment/vms/controller.xml + - id: 2 + libvirtName: controller2 + libvirtTemplate: templates/virtual_environment/vms/controller.xml + - id: 3 + libvirtName: controller3 + libvirtTemplate: templates/virtual_environment/vms/controller.xml + - id: 4 + libvirtName: compute1 + libvirtTemplate: templates/virtual_environment/vms/compute.xml + - id: 5 + libvirtName: compute2 + libvirtTemplate: templates/virtual_environment/vms/compute.xml + - id: 6 + libvirtName: fuel-master + libvirtTemplate: templates/virtual_environment/vms/fuel.xml + isFuel: yes + username: root + password: r00tme + + +############################################################################## +# The verification pipeline may populate the section below with arbitrary +# testing information, which post deploy can be retreived from the fuel master: +# /root/deploy-config.yaml +test: diff --git a/deploy/scenario/no-ha_nfv-kvm_heat_ceilometer_scenario_0.0.4.yaml b/deploy/scenario/no-ha_nfv-kvm_heat_ceilometer_scenario_0.0.4.yaml new file mode 100644 index 000000000..08fc041e3 --- /dev/null +++ b/deploy/scenario/no-ha_nfv-kvm_heat_ceilometer_scenario_0.0.4.yaml @@ -0,0 +1,155 @@ +############################################################################## +# Copyright (c) 2015 Ericsson AB and others. +# jonas.bjurel@ericsson.com +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +############################################################################### # Description: +# This .yaml configuration file defines the configuration of the fuel +# deployment and is passed as an argument to deploy.sh +# eg. deploy.sh -c https://artifact.opnfv.org/fuel/config +# This will make build.sh fetch this configuration file and configure the +# deployment accordingly. +# After the deployment, a copy of this file gets uploaded to fuel: +# /root/deploy-config.yaml, as well as the sha-1 sum of this file: +# /root/deploy-config.sha1 +############################################################################## + +############################################################################## +# deployment configuration meta-data +deployment-scenario-metadata: + title: NFV KVM NO-HA deployment + version: 0.0.4 + created: Mar 18 2016 + comment: Ceph cannot be assigned to compute, using a seperate node for it + +############################################################################## +# Stack extentions are opnfv added value features in form of a fuel-plugin +# plug-ins listed below will be enabled and configured according to the +# <module-config-base-uri>/<module-config-name>_<module-config-version>.yaml +# It does so by copying the config file to the local plugin config directory +stack-extensions: + - module: fuel-plugin-qemu + module-config-name: fuel-nfvkvm + module-config-version: 0.0.2 + module-config-override: + # Module config overrides + +############################################################################## +# By editing the override-config sections below, you can override arbitrary +# configuration name-space settings +dea-override-config: + environment: + net_segment_type: tun + nodes: + - id: 1 + interfaces: interfaces_1 + role: mongo,controller + transformations: transformations_1 + - id: 2 + interfaces: interfaces_1 + role: ceph-osd + transformations: transformations_1 + - id: 3 + interfaces: interfaces_1 + role: compute + transformations: transformations_1 + - id: 4 + interfaces: interfaces_1 + role: compute + transformations: transformations_1 + + settings: + editable: + storage: + ephemeral_ceph: + description: Configures Nova to store ephemeral volumes in RBD. This works best if Ceph is enabled for volumes and images, too. Enables live migration of all types of Ceph backed VMs (without this option, live migration will only work with VMs launched from Cinder volumes). + label: Ceph RBD for ephemeral volumes (Nova) + type: checkbox + value: false + weight: 75 + images_ceph: + description: Configures Glance to use the Ceph RBD backend to store images. If enabled, this option will prevent Swift from installing. + label: Ceph RBD for images (Glance) + restrictions: + - settings:storage.images_vcenter.value == true: Only one Glance backend could be selected. + type: checkbox + value: false + weight: 30 + images_vcenter: + description: Configures Glance to use the vCenter/ESXi backend to store images. If enabled, this option will prevent Swift from installing. + label: VMware vCenter/ESXi datastore for images (Glance) + restrictions: + - action: hide + condition: settings:common.use_vcenter.value != true + - condition: settings:storage.images_ceph.value == true + message: Only one Glance backend could be selected. + type: checkbox + value: false + weight: 35 + iser: + description: 'High performance block storage: Cinder volumes over iSER protocol (iSCSI over RDMA). This feature requires SR-IOV capabilities in the NIC, and will use a dedicated virtual function for the storage network.' + label: iSER protocol for volumes (Cinder) + restrictions: + - settings:storage.volumes_lvm.value != true or settings:common.libvirt_type.value != 'kvm' + - action: hide + condition: not ('experimental' in version:feature_groups) + type: checkbox + value: false + weight: 11 + metadata: + group: storage + label: Storage Backends + weight: 60 + objects_ceph: + description: Configures RadosGW front end for Ceph RBD. This exposes S3 and Swift API Interfaces. If enabled, this option will prevent Swift from installing. + label: Ceph RadosGW for objects (Swift API) + type: checkbox + value: false + weight: 80 + osd_pool_size: + description: Configures the default number of object replicas in Ceph. This number must be equal to or lower than the number of deployed 'Storage - Ceph OSD' nodes. + label: Ceph object replication factor + regex: + error: Invalid number + source: ^[1-9]\d*$ + type: text + value: '1' + weight: 85 + volumes_block_device: + description: High performance block device storage. It is recommended to have at least one Storage - Cinder Block Device + label: Cinder Block device driver + restrictions: + - settings:storage.volumes_ceph.value == true + type: checkbox + value: false + weight: 15 + volumes_ceph: + description: Configures Cinder to store volumes in Ceph RBD images. + label: Ceph RBD for volumes (Cinder) + restrictions: + - settings:storage.volumes_lvm.value == true or settings:storage.volumes_block_device.value == true + type: checkbox + value: true + weight: 20 + volumes_lvm: + description: It is recommended to have at least one Storage - Cinder LVM node. + label: Cinder LVM over iSCSI for volumes + restrictions: + - settings:storage.volumes_ceph.value == true + type: checkbox + value: false + weight: 10 + +dha-override-config: +# disks: +# contrail: 500G + +############################################################################## +# The verification pipeline may populate the section below with arbitrary +# testing information, which post deploy can be retreived from the fuel master: +# /root/deploy-config.yaml +test: diff --git a/deploy/scenario/scenario.yaml b/deploy/scenario/scenario.yaml index f7d06510c..90f7b8367 100644 --- a/deploy/scenario/scenario.yaml +++ b/deploy/scenario/scenario.yaml @@ -53,10 +53,10 @@ os-onos-nofeature-noha: configfile: no-ha_onos_heat_ceilometer_scenario_0.0.4.yaml os-nosdn-kvm-ha: - configfile: ha_nfv-kvm_heat_ceilometer_scenario_0.0.4.yaml + configfile: ha_nfv-kvm_heat_ceilometer_scenario_0.0.5.yaml os-nosdn-kvm-noha: - configfile: no-ha_nfv-kvm_heat_ceilometer_scenario_0.0.3.yaml + configfile: no-ha_nfv-kvm_heat_ceilometer_scenario_0.0.4.yaml os-nosdn-ovs-ha: configfile: ha_nfv-ovs_heat_ceilometer_scenario_0.0.4.yaml |