Add bond0_ab_vlan_ceph_public_backend interface

Change-Id: I73f034e8893b2e0b9d43541d2ddf685a5bdac748
diff --git "a/\173\043 interfaces \043\175/bond0_ab_dvr_vxlan_ctl_mesh_external_vlan" "b/\173\043 interfaces \043\175/bond0_ab_dvr_vxlan_ctl_mesh_external_vlan"
new file mode 100644
index 0000000..f3114eb
--- /dev/null
+++ "b/\173\043 interfaces \043\175/bond0_ab_dvr_vxlan_ctl_mesh_external_vlan"
@@ -0,0 +1,77 @@
+{#- Tenant over VXLAN. For gateway nodes and computes with dvr #}
+{#- Provides:                         #}
+{#-   br_ctl (OVS bridge) + control address #}
+{#-   br-mesh (OVS bridge) + tenant address #}
+{#-   br-external (OVS bridge) + external address #}
+{#-   br-floating (OVS bridge) #}
+{#- Requirements:                     #}
+{#-   _param:single_address         #}
+{#-   _param:control_network_netmask         #}
+{#-   _param:control_vlan           #}
+{#-   _param:tenant_address         #}
+{#-   _param:tenant_netmask         #}
+{#-   _param:tenant_vlan           #}
+{#-   _param:external_address         #}
+{#-   _param:external_network_netmask         #}
+{#-   _param:external_vlan         #}
+              # {{ interfaces_role }}
+              {{- set_param('linux_network_bridge', 'openvswitch') }}
+              {%- for interface_name, interface in interfaces.items() %}
+              {{ interface_name }}:
+                mtu: 9000
+                enabled: true
+                master: bond0  # ?
+                name: {{ interface_name }}
+                proto: manual
+                type: slave  # ?
+                ipflush_onchange: true
+              {%- endfor %}
+              bond0:
+                enabled: true
+                mode: active-backup
+                ovs_bridge: br-floating
+                ovs_type: OVSPort
+                proto: manual
+                slaves: {{ ' '.join(interfaces.keys()) }}
+                type: bond
+                use_interfaces:
+                {%- for interface_name in interfaces.keys() %}
+                - {{ interface_name }}
+                {%- endfor %}
+                require_interfaces:
+                {%- for interface_name in interfaces.keys() %}
+                - {{ interface_name }}
+                {%- endfor %}
+              br-floating:
+                enabled: true
+                type: ovs_bridge
+              br_ctl:
+                address: ${_param:_esc}{_param:single_address}
+                bridge: br-floating
+                enabled: true
+                netmask: ${_param:_esc}{_param:control_network_netmask}
+                ovs_options: tag=${_param:_esc}{_param:control_vlan}
+                proto: static
+                type: ovs_port
+                require_interfaces:
+                - br-floating
+              br-mesh:
+                enabled: true
+                type: ovs_port
+                bridge: br-floating
+                proto: static
+                ovs_options: tag=${_param:_esc}{_param:tenant_vlan}
+                address: ${_param:_esc}{_param:tenant_address}
+                netmask: ${_param:_esc}{_param:tenant_network_netmask}
+                require_interfaces:
+                - br-floating
+              br-external:
+                enabled: true
+                type: ovs_port
+                bridge: br-floating
+                proto: static
+                ovs_options: tag=${_param:_esc}{_param:external_vlan}
+                address: ${_param:_esc}{_param:external_address}
+                netmask: ${_param:_esc}{_param:external_network_netmask}
+                require_interfaces:
+                - br-floating
\ No newline at end of file
diff --git "a/\173\043 interfaces \043\175/bond0_ab_vlan_ceph_public_backend" "b/\173\043 interfaces \043\175/bond0_ab_vlan_ceph_public_backend"
new file mode 100644
index 0000000..683ece4
--- /dev/null
+++ "b/\173\043 interfaces \043\175/bond0_ab_vlan_ceph_public_backend"
@@ -0,0 +1,58 @@
+{#- Tenant over VXLAN. For gateway and compute nodes #}
+{#- Provides:                         #}
+{#-   br_ctl (OVS bridge) + control address #}
+{#-   br_mesh (OVS bridge) + tenant address #}
+{#- Requirements:                     #}
+{#-   _param:public_address         #}
+{#-   _param:public_network_netmask         #}
+{#-   _param:public_vlan           #}
+{#-   _param:backend_address         #}
+{#-   _param:backend_network_netmask         #}
+{#-   _param:backend_vlan           #}
+              # {{ interfaces_role }}
+              {{- set_param('linux_network_bridge', 'openvswitch') }}
+              {%- for interface_name, interface in interfaces.items() %}
+              {{ interface_name }}:
+                mtu: 9000
+                enabled: true
+                master: bond0  # ?
+                name: {{ interface_name }}
+                proto: manual
+                type: slave  # ?
+                ipflush_onchange: true
+              {%- endfor %}
+              bond0:
+                enabled: true
+                mode: active-backup
+                proto: manual
+                slaves: {{ ' '.join(interfaces.keys()) }}
+                type: bond
+                use_interfaces:
+                {%- for interface_name in interfaces.keys() %}
+                - {{ interface_name }}
+                {%- endfor %}
+                require_interfaces:
+                {%- for interface_name in interfaces.keys() %}
+                - {{ interface_name }}
+                {%- endfor %}
+              # bond for cluster communication on _param:ceph_public_address
+              bond0.1:
+                name: bond0.${_param:_esc}{_param:ceph_public_vlan}
+                enabled: true
+                type: vlan
+                proto: static
+                address: ${_param:_esc}{_param:ceph_public_address}
+                netmask: ${_param:_esc}{_param:ceph_public_network_netmask}
+                use_interfaces:
+                - bond0
+                mesh: control
+              bond0.2:
+                name: bond0.${_param:_esc}{_param:backend_vlan}
+                enabled: true
+                type: vlan
+                proto: static
+                address: ${_param:_esc}{_param:backend_address}
+                netmask: ${_param:_esc}{_param:backend_network_netmask}
+                use_interfaces:
+                - bond0
+                mesh: storage_replication
\ No newline at end of file
diff --git "a/\173\043 roles \043\175/_linux_network_interface" "b/\173\043 roles \043\175/_linux_network_interface"
index f14f07f..1a539e1 100644
--- "a/\173\043 roles \043\175/_linux_network_interface"
+++ "b/\173\043 roles \043\175/_linux_network_interface"
@@ -18,6 +18,7 @@
         'tenant_network_gateway',
         'external_address',
         'external_network_netmask',
+        'external_vlan',
         'storage_vlan',
         'storage_address',
         'storage_network_netmask',
diff --git "a/\173\043 roles \043\175/features_control_external_vlan" "b/\173\043 roles \043\175/features_control_external_vlan"
new file mode 100644
index 0000000..3ac6006
--- /dev/null
+++ "b/\173\043 roles \043\175/features_control_external_vlan"
@@ -0,0 +1,9 @@
+{#-
+parameters:
+  reclass:
+    storage:
+      node:
+        <reclass_storage_node_name>:
+          classes:
+#}
+          - environment.{{ cookiecutter._env_name }}.features.openstack_control_neutron.tagged_public_network
diff --git "a/\173\173 cookiecutter._env_name \175\175/features/openstack_control_neutron/tagged_public_network.yml" "b/\173\173 cookiecutter._env_name \175\175/features/openstack_control_neutron/tagged_public_network.yml"
new file mode 100644
index 0000000..54b1a3f
--- /dev/null
+++ "b/\173\173 cookiecutter._env_name \175\175/features/openstack_control_neutron/tagged_public_network.yml"
@@ -0,0 +1,13 @@
+parameters:
+  neutron:
+    server:
+      backend:
+        external_vlan_range: ${_param:external_vlan_range}
+    client:
+      resources:
+        v2:
+          admin_identity:
+            network:
+              public:
+                provider_network_type: vlan
+                provider_segmentation_id: ${_param:external_vlan}
\ No newline at end of file
diff --git "a/\173\173 cookiecutter._env_name \175\175/features/runtest/runtest_offline.yml" "b/\173\173 cookiecutter._env_name \175\175/features/runtest/runtest_offline.yml"
new file mode 100644
index 0000000..03f3db1
--- /dev/null
+++ "b/\173\173 cookiecutter._env_name \175\175/features/runtest/runtest_offline.yml"
@@ -0,0 +1,25 @@
+classes:
+- service.runtest.tempest
+{%- if default_context.get('manila_enabled', 'False') == 'True' %}
+- service.runtest.tempest.services.manila.glance
+{%- endif %}
+{%- if default_context.get('barbican_enabled', 'False') == 'True' and default_context.get('barbican_integration_enabled', 'False') == 'True' %}
+- service.runtest.tempest.barbican
+{%- endif %}
+parameters:
+  _param:
+    image_host: http://apt
+    glance_image_cirros_location: ${_param:image_host}/cirros-0.3.5-x86_64-disk.img
+    glance_image_fedora_location: ${_param:image_host}/Fedora-Cloud-Base-27-1.6.x86_64.qcow2
+    glance_image_manila_location: ${_param:image_host}/manila-service-image-master.qcow2
+    tempest_test_target: cfg01*
+    runtest_tempest_cfg_dir: /tmp/test
+    runtest_tempest_cfg_name: tempest.conf
+  runtest:
+    tempest:
+      DEFAULT:
+        log_file: tempest.log
+      cfg_dir: ${_param:runtest_tempest_cfg_dir}
+      cfg_name: ${_param:runtest_tempest_cfg_name}
+      put_keystone_rc_enabled: True
+      put_local_image_file_enabled: True
\ No newline at end of file