Add opendaylight sfc support for compass installer 47/35447/7
authorYifei Xue <xueyifei@huawei.com>
Sat, 27 May 2017 06:11:17 +0000 (14:11 +0800)
committerYifei Xue <xueyifei@huawei.com>
Fri, 2 Jun 2017 09:13:56 +0000 (17:13 +0800)
JIRA: COMPASS-483

As odl sfc has been supported by other installers,
we compass project has also support odl boron and tacker now.
So we are going to support odl sfc+tacker in Danube release.

This patch includes:

1. Add ovs-common and ovs-dkms
2. Install networking-sfc for neutron and odl
3. Configure odl sfc in neutron ml2
4. Add sfc related features in odl
5. Add sfc related repo making scripts
6. Add odl_sfc switch both in compass4nfv and compass-core

Change-Id: If37a9e190c3095d771ffab61777a927b6d94ea9e
Signed-off-by: Yifei Xue <xueyifei@huawei.com>
14 files changed:
deploy/adapters/ansible/openstack/HA-ansible-multinodes.yml
deploy/adapters/ansible/roles/odl_cluster/tasks/01_04_install_pip_packages.yml
deploy/adapters/ansible/roles/odl_cluster/tasks/01_08_configure_neutron.yml
deploy/adapters/ansible/roles/odl_cluster/tasks/03_02_openvswitch_connect_opendaylight.yml
deploy/adapters/ansible/roles/odl_cluster/templates/org.apache.karaf.features.cfg.Debian
deploy/adapters/ansible/roles/odl_cluster/vars/main.yml
deploy/adapters/ansible/roles/tacker/vars/RedHat.yml
deploy/client.py
deploy/compass_conf/templates/ansible_installer/openstack_newton/vars/HA-ansible-multinodes.tmpl
deploy/conf/vm_environment/os-odl_l2-sfc-ha.yml [new file with mode: 0644]
deploy/deploy_host.sh
repo/openstack/make_ppa/ubuntu/xenial/newton/download_pkg.tmpl
repo/pip/code_url.conf
repo/pip/extra-requirement-tar.txt

index 38b8b0e..eef8127 100644 (file)
   remote_user: root
   max_fail_percentage: 0
   roles:
-#    - tacker
+    - tacker
 
 - hosts: controller
   remote_user: root
index fa418c6..cc4ae99 100644 (file)
@@ -23,3 +23,7 @@
     pip install {{ networking_odl_pkg_name }}
     rm -rf {{ networking_odl_pkg_name }}
     cd -
+
+- name: install networking-sfc
+  pip: name=networking-sfc state=present version=3.0.0
+  when: odl_sfc == "Enable"
index 80443f1..49396e3 100644 (file)
         force_metadata "True";
   when: odl_l3_agent == "Enable"
 
+- name: configure sfc
+  shell: |
+    crudini --set /etc/neutron/neutron.conf sfc drivers \
+        odl;
+    crudini --set /etc/neutron/neutron.conf flowclassifier drivers \
+        odl;
+  when: odl_sfc == "Enable"
 
 - name: drop and recreate neutron database
   shell: |
index 2a9622f..5632656 100644 (file)
   when: inventory_hostname in groups['odl']
   ignore_errors: "True"
 
+- name: table configuration for netvirt
+  uri:
+    url: "{{ item.url }}"
+    method: PUT
+    user: "{{ odl_username }}"
+    password: "{{ odl_password }}"
+    body: "{{ item.body }}"
+    force_basic_auth: "yes"
+    body_format: json
+    status_code: 200, 201
+  with_items: "{{ conf_netvirt }}"
+  when: inventory_hostname == haproxy_hosts.keys()[0]
+        and odl_sfc == "Enable"
+
+- name: table configuration for sfc
+  uri:
+    url: "{{ item.url }}"
+    method: PUT
+    user: "{{ odl_username }}"
+    password: "{{ odl_password }}"
+    body: "{{ item.body }}"
+    force_basic_auth: "yes"
+    body_format: json
+    status_code: 200, 201
+  with_items: "{{ conf_sfc }}"
+  when: inventory_hostname == haproxy_hosts.keys()[0]
+        and odl_sfc == "Enable"
+
 - name: set opendaylight as the manager
   command: |
     su -s /bin/sh -c "ovs-vsctl set-manager ptcp:6639:127.0.0.1 tcp:{{ internal_vip.ip }}:6640;"
index eebd47a..743e712 100755 (executable)
@@ -41,7 +41,7 @@ featuresRepositories = mvn:org.apache.karaf.features/standard/3.0.7/xml/features
 #
 # Comma separated list of features to install at startup
 #
-featuresBoot=config,standard,region,package,kar,ssh,management,odl-restconf-all,odl-aaa-authn,odl-dlux-all,odl-ovsdb-openstack,odl-mdsal-apidocs,odl-dlux-core,odl-openflowplugin-nxm-extensions
+featuresBoot=config,standard,region,package,kar,ssh,management,odl-restconf-all,odl-aaa-authn,odl-dlux-all,odl-ovsdb-openstack,odl-mdsal-apidocs,odl-dlux-core,odl-openflowplugin-nxm-extensions,odl-ovsdb-sfc,odl-netvirt-openstack-sfc-translator-rest
 
 #
 # Defines if the boot features are started in asynchronous mode (in a dedicated thread)
index a968e3e..365247e 100755 (executable)
@@ -11,9 +11,19 @@ odl_username: admin
 odl_password: admin
 odl_api_port: 8181
 
-# odl_pkg_url: https://nexus.opendaylight.org/content/groups/public/org/
-# opendaylight/integration/distribution-karaf/0.3.0-Lithium/
-# distribution-karaf-0.3.0-Lithium.tar.gz
+netvirt_table: netvirt-providers-config:netvirt-providers-config
+sfc_table: sfc-of-renderer:sfc-of-renderer-config
+
+conf_netvirt:
+  - url: http://{{ internal_vip.ip }}:{{ odl_api_port }}/restconf/config/{{ netvirt_table }}
+    body: {"netvirt-providers-config":{"table-offset":1}}
+
+# yamllint disable rule:line-length
+conf_sfc:
+  - url: http://{{ internal_vip.ip }}:{{ odl_api_port }}/restconf/config/{{ sfc_table }}
+    body: {"sfc-of-renderer-config":{"sfc-of-table-offset":"150", "sfc-of-app-egress-table-offset":"11"}}
+# yamllint enable rule:line-length
+
 odl_pkg_url: distribution-karaf-0.5.2-Boron-SR2.tar.gz
 odl_pkg_name: distribution-karaf-0.5.2-Boron-SR2.tar.gz
 odl_home: "/opt/opendaylight/"
index e3591e5..50e236f 100644 (file)
@@ -249,6 +249,9 @@ opts = [
     cfg.StrOpt('onos_sfc',
                help='onos_sfc enable flag',
                default='Disable'),
+    cfg.StrOpt('odl_sfc',
+               help='odl_sfc enable flag',
+               default='Disable'),
 ]
 CONF.register_cli_opts(opts)
 
@@ -779,6 +782,8 @@ class CompassClient(object):
             if CONF.odl_l3_agent == "Enable" else "Disable"
         package_config['onos_sfc'] = "Enable" \
             if CONF.onos_sfc == "Enable" else "Disable"
+        package_config['odl_sfc'] = "Enable" \
+            if CONF.odl_sfc == "Enable" else "Disable"
 
         status, resp = self.client.update_cluster_config(
             cluster_id, package_config=package_config)
index 467c9fc..2202ab7 100755 (executable)
@@ -33,6 +33,7 @@ odl_l3_agent: $getVar('odl_l3_agent', 'Disable')
 ha_network: $getVar('ha_network', 'Disable')
 onos_nic: $getVar('onos_nic', 'eth2')
 onos_sfc: $getVar('onos_sfc', 'Disable')
+odl_sfc: $getVar('odl_sfc', 'Disable')
 ip_settings: $ip_settings
 network_cfg: $network_cfg
 sys_intf_mappings: $sys_intf_mappings
diff --git a/deploy/conf/vm_environment/os-odl_l2-sfc-ha.yml b/deploy/conf/vm_environment/os-odl_l2-sfc-ha.yml
new file mode 100644 (file)
index 0000000..8b3c203
--- /dev/null
@@ -0,0 +1,47 @@
+##############################################################################
+# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others.
+#
+# 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
+##############################################################################
+
+---
+TYPE: virtual
+FLAVOR: cluster
+
+odl_sfc: "Enable"
+
+hosts:
+  - name: host1
+    roles:
+      - controller
+      - ha
+      - odl
+      - ceph-adm
+      - ceph-mon
+
+  - name: host2
+    roles:
+      - controller
+      - ha
+      - odl
+      - ceph-mon
+
+  - name: host3
+    roles:
+      - controller
+      - ha
+      - odl
+      - ceph-mon
+
+  - name: host4
+    roles:
+      - compute
+      - ceph-osd
+
+  - name: host5
+    roles:
+      - compute
+      - ceph-osd
index a813267..6454a4b 100755 (executable)
@@ -49,7 +49,7 @@ function deploy_host(){
     --cluster_vip="${VIP}" --network_cfg="$NETWORK" --neutron_cfg="$NEUTRON" \
     --enable_secgroup="${ENABLE_SECGROUP}" --enable_fwaas="${ENABLE_FWAAS}" --expansion="${EXPANSION}" \
     --rsa_file="$rsa_file" --enable_vpnaas="${ENABLE_VPNAAS}" --odl_l3_agent="${odl_l3_agent}" \
-    --moon_cfg="${MOON_CFG}" --onos_sfc="${onos_sfc}"
+    --moon_cfg="${MOON_CFG}" --onos_sfc="${onos_sfc}" --odl_sfc="${odl_sfc}"
 
     RET=$?
     sleep $((AYNC_TIMEOUT+5))
index 7bec887..0790552 100644 (file)
@@ -11,7 +11,7 @@ apt-get install -d nova-compute-kvm -y
 #make pernoca database
 apt-get install -y apt-transport-https debconf-utils libaio1 libc6 libdbd-mysql-perl libgcc1 libgcrypt20 libstdc++6 python-software-properties wget
 apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
-add-apt-repository 'deb https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-10.0.26/repo/ubuntu/ xenial main'
+add-apt-repository 'deb http://ftp.hosteurope.de/mirror/archive.mariadb.org/mariadb-10.0.26/repo/ubuntu/ xenial main'
 apt-get update
 apt-get install -d mariadb-client mariadb-galera-server-10.0 galera-3 rsync socat -y
 #make pernoca database end
index c3c90c4..8d82875 100644 (file)
@@ -16,7 +16,7 @@ export GIT_URL="https://github.com/openstack/keystone.git \
     https://github.com/openstack/heat.git \
     https://github.com/openstack/python-heatclient.git \
     https://github.com/openstack/aodh.git \
-    https://github.com/openstack/python-aodhclient.git \
+    https://github.com/openstack/python-aodhclient.git"
 
 export PIP_GIT_URL="https://github.com/openstack/congress.git \
                     https://github.com/openstack/python-congressclient.git \
index 6d70d56..46bcd98 100644 (file)
@@ -3,3 +3,4 @@
 
 networking-odl==3.2.0
 pymongo==3.0.3
+networking-sfc==3.0.0