diff --git a/deployment_scripts/puppet/modules/opendaylight/manifests/init.pp b/deployment_scripts/puppet/modules/opendaylight/manifests/init.pp index 69cc23a..a322f70 100644 --- a/deployment_scripts/puppet/modules/opendaylight/manifests/init.pp +++ b/deployment_scripts/puppet/modules/opendaylight/manifests/init.pp @@ -3,6 +3,7 @@ class opendaylight { $network_metadata = hiera_hash('network_metadata') $node_uid = hiera('uid') $rest_api_port = $odl_settings['rest_api_port'] + $package_name = $odl_settings['package_name'] $jetty_port = $odl_settings['metadata']['jetty_port'] $odl_nodes_hash = get_nodes_hash_by_roles($network_metadata, ['opendaylight']) $odl_mgmt_ips_hash = get_node_to_ipaddr_map_by_network_role($odl_nodes_hash, 'management') diff --git a/deployment_scripts/puppet/modules/opendaylight/manifests/install.pp b/deployment_scripts/puppet/modules/opendaylight/manifests/install.pp index 167eb33..2c86dad 100644 --- a/deployment_scripts/puppet/modules/opendaylight/manifests/install.pp +++ b/deployment_scripts/puppet/modules/opendaylight/manifests/install.pp @@ -6,13 +6,14 @@ class opendaylight::install ( $management_vip = hiera('management_vip') $conf_dir = '/opt/opendaylight/etc' $jetty_port = $opendaylight::jetty_port + $odl_package = $opendaylight::package_name $manage_l3_traffic = $opendaylight::odl_settings['enable_l3_odl'] ? { true => 'yes', default => 'no', } - package { 'opendaylight': + package { $odl_package: ensure => installed, } @@ -66,7 +67,7 @@ class opendaylight::install ( value => $enabled_features, } - Package['opendaylight'] -> + Package[$odl_package] -> Ini_setting <||> -> Firewall <||> -> File <||> -> diff --git a/environment_config.yaml b/environment_config.yaml index 2064ea9..a31df7f 100644 --- a/environment_config.yaml +++ b/environment_config.yaml @@ -1,6 +1,6 @@ attributes: enable_l3_odl: - weight: 12 + weight: 10 type: "checkbox" value: false label: "Use ODL to manage L3 traffic" @@ -8,12 +8,12 @@ attributes: - networking_parameters:segmentation_type == 'vlan': Use tunneling segmentation type. - settings:public_network_assignment.assign_to_all_nodes.value == false: Assign public network to all nodes enable_sfc: - weight: 13 + weight: 20 type: "checkbox" value: false label: "SFC features" sfc_class: - weight: 14 + weight: 21 type: "select" value: "ncr" label: "Classifier used by SFC" @@ -29,8 +29,25 @@ attributes: restrictions: - condition: "settings:opendaylight.enable_sfc.value == false" action: "hide" + package_name: + weight: 22 + type: "select" + value: "opendaylight" + label: "Name of opendaylight deb package" + values: + - data: "opendaylight" + label: "opendaylight" + - data: "opendaylight-boron" + label: "opendaylight-boron" + description: + > + Plugin can be build with dedicated package for SFC. + Before choosing opendaylight-boron ensure that plugin include this package. + restrictions: + - condition: "settings:opendaylight.enable_sfc.value == false" + action: "hide" enable_bgpvpn: - weight: 15 + weight: 40 type: "checkbox" value: false label: "BGPVPN extensions" @@ -45,7 +62,7 @@ attributes: message: "BGPVPN (fuel-plugin-bgpvpn) plugin must be installed and enabled." - networking_parameters:segmentation_type == 'vlan': This feature works only with segmentation_type != vlan bgpvpn_gateway: - weight: 16 + weight: 50 type: "text" value: "0.0.0.0" description: "Define the default gateway for BGPVPN" @@ -56,7 +73,7 @@ attributes: source: ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$ error: 'Invalid ip number' odl_v2: - weight: 17 + weight: 60 type: "checkbox" value: false label: "Use V2 ML2 driver" @@ -103,7 +120,7 @@ attributes: value: '8282' label: 'Port number' description: 'Port on which ODL REST API will be available.' - weight: 40 + weight: 70 type: "text" regex: source: ^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$ diff --git a/pre_build_hook b/pre_build_hook index 04ee7c1..0cb7808 100755 --- a/pre_build_hook +++ b/pre_build_hook @@ -8,6 +8,7 @@ set -eux # Where we can find odl karaf distribution tarball # can be http(s) url or absolute path ODL_TARBALL_LOCATION=${ODL_TARBALL_LOCATION:-https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.4.2-Beryllium-SR2/distribution-karaf-0.4.2-Beryllium-SR2.tar.gz} +ODL_BORON_TARBALL_LOCATION=${ODL_BORON_TARBALL_LOCATION:-false} #ODL openflowjava NSH subtype patch related # The patch's TAG should mach with ODL release being patched @@ -28,6 +29,7 @@ bdart='' #Verion number used in deb/rpm package ODL_VERSION_NUMBER=${ODL_VERSION_NUMBER:-0.4.2} +ODL_BORON_VERSION_NUMBER=${ODL_BORON_VERSION_NUMBER:-0.5.0} ODL_DESCRIPTION="OpenDaylight SDN Controller" TMP_NAME="karaf-odl.tar.gz" @@ -157,6 +159,16 @@ function patch_networking_odl_deb { fi } +function get_karaf { + if [[ "$1" =~ ^http.* ]] + then + download $1 $2 + unpack $2 $3 + else + unpack $1 $3 + fi +} + function build_pkg { case $1 in centos) @@ -167,6 +179,9 @@ function build_pkg { ubuntu) pushd "${DIR}/repositories/${1}/" fpm --architecture all --force -s dir -t deb -m 'mskalski@mirantis.com' --version "${ODL_VERSION_NUMBER}" --description "${ODL_DESCRIPTION}" --prefix /opt/opendaylight --deb-upstart "${DIR}/odl_package/${1}/opendaylight" --after-install "${DIR}/odl_package/${1}/opendaylight-post" --name opendaylight -d openjdk-8-jre-headless -C "${TMP_DIR}/opendaylight_src" + if [ "$ODL_BORON_TARBALL_LOCATION" != false ] ; then + fpm --architecture all --force -s dir -t deb -m 'mskalski@mirantis.com' --version "${ODL_BORON_VERSION_NUMBER}" --description "${ODL_DESCRIPTION}" --prefix /opt/opendaylight --deb-upstart "${DIR}/odl_package/${1}/opendaylight" --after-install "${DIR}/odl_package/${1}/opendaylight-post" --name opendaylight-boron -d openjdk-8-jre-headless -C "${TMP_DIR}/opendaylight_boron_src" + fi patch_networking_odl_deb ${TMP_DIR}/networking_odl/requirements.txt fpm --architecture all --force -s python -t deb -m 'mskalski@mirantis.com' --python-install-lib /usr/lib/python2.7/dist-packages ${TMP_DIR}/networking_odl/setup.py popd @@ -184,12 +199,10 @@ mkdir -p "${TMP_DIR}" pushd $TMP_DIR -if [[ "$ODL_TARBALL_LOCATION" =~ ^http.* ]] -then - download $ODL_TARBALL_LOCATION $TMP_NAME - unpack $TMP_NAME 'opendaylight_src' -else - unpack $ODL_TARBALL_LOCATION 'opendaylight_src' +get_karaf $ODL_TARBALL_LOCATION "karaf-odl.tar.gz" "opendaylight_src" + +if [ "$ODL_BORON_TARBALL_LOCATION" != false ] ; then + get_karaf $ODL_BORON_TARBALL_LOCATION "karaf-boron-odl.tar.gz" "opendaylight_boron_src" fi if [ "$ENA_NSH_SUB_PATCH" = true ] ; then