[CORD-1977] Change Ansible Playbook code for changed image and implement build_and_run

Change-Id: Ia60f0daff0bbabf90c023849c3ce21e795d711b1
(cherry picked from commit 2cc578b1defd9e41dca01c8422dec730eeba6e9a)
diff --git a/xos/synchronizer/steps/roles/build_and_run/tasks/main.yml b/xos/synchronizer/steps/roles/build_and_run/tasks/main.yml
new file mode 100644
index 0000000..44167c2
--- /dev/null
+++ b/xos/synchronizer/steps/roles/build_and_run/tasks/main.yml
@@ -0,0 +1,42 @@
+# Copyright 2017-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+---
+
+# Make shell script to run vSPGW-C with log
+- name: make run with log file
+  become: yes
+  template:
+    src=run_with_log.sh.j2
+    dest="{{source_path}}/dp/run_with_log.sh" owner=root group=root mode=755
+
+- name: build and run vspgwu
+  become: yes
+  shell: "{{ item }}"
+  args:
+    chdir: "{{ source_path }}/dp"
+  environment:
+    NG_CORE: "{{ source_path }}"
+    RTE_SDK: "{{ source_path }}/dpdk"
+    RTE_TARGET: "x86_64-native-linuxapp-gcc"
+    HYPERSCANDIR: "/root/ngic/hyperscan-4.1.0"
+  with_items:
+    - make clean
+    - make
+    - ./run_with_log.sh
+
+# Finish
+- name: write flag
+  become: yes
+  shell: "echo 1 > {{source_path}}/dp/finish_flag_build_and_run"
diff --git a/xos/synchronizer/steps/roles/build_and_run/templates/run_with_log.sh.j2 b/xos/synchronizer/steps/roles/build_and_run/templates/run_with_log.sh.j2
new file mode 100644
index 0000000..231c296
--- /dev/null
+++ b/xos/synchronizer/steps/roles/build_and_run/templates/run_with_log.sh.j2
@@ -0,0 +1,16 @@
+#! /bin/bash
+# Copyright 2017-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+./udev.sh > results &
\ No newline at end of file
diff --git a/xos/synchronizer/steps/roles/interface_config/tasks/main.yml b/xos/synchronizer/steps/roles/interface_config/tasks/main.yml
index f7b3321..5f25326 100644
--- a/xos/synchronizer/steps/roles/interface_config/tasks/main.yml
+++ b/xos/synchronizer/steps/roles/interface_config/tasks/main.yml
@@ -24,16 +24,22 @@
     src=interface.cfg.j2
     dest="{{source_path}}/config/interface.cfg" owner=root group=root mode=755
 
+- name: make static_arp config file
+  become: yes
+  template:
+    src=static_arp.cfg.j2
+    dest="{{source_path}}/config/static_arp.cfg" owner=root group=root mode=755
+
 - name: get date
   shell: date +"%Y-%m-%d_%H-%M"
   register: tmp_date
 
 - name: get port_0 value
-  shell: lspci -v -k | grep -i 'ethernet' | head -n 1 | tail -n 1 | awk '{print "0000:"$1}'
+  shell: "ifconfig | grep -B 1 {{ s1u_ip }} | awk '{print $1}' | head -n 1"
   register: tmp_port_0
 
 - name: get port_1 value
-  shell: lspci -v -k | grep -i 'ethernet' | head -n 2 | tail -n 1 | awk '{print "0000:"$1}'
+  shell: "ifconfig | grep -B 1 {{ sgi_ip }} | awk '{print $1}' | head -n 1"
   register: tmp_port_1
 
 - name: get s1u_mac value
@@ -58,16 +64,12 @@
     src=dp_config.cfg.j2
     dest="{{source_path}}/config/dp_config.cfg" owner=root group=root mode=755
 
-#- name: Build ngic
-#  become: yes
-#  shell: "{{ item }}"
-#  args:
-#    chdir: "{{ source_path }}"
-#  environment:
-#    NG_CORE: "{{ source_path }}"
-#    RTE_SDK: "{{ source_path }}/dpdk"
-#    RTE_TARGET: "x86_64-native-linuxapp-gcc"
-#    HYPERSCANDIR: "/root/ngic/hyperscan-4.1.0"
-#  with_items:
-#    - make
-#    - /root/ngic/dp/run.sh -c 1
+- name: change Makefile.j2
+  become: yes
+  template:
+    src=Makefile.j2
+    dest="{{source_path}}/dp/Makefile" owner=root group=root mode=755
+
+- name: write flag for interface_config
+  become: yes
+  shell: "echo 1 > {{source_path}}/dp/finish_flag_interface_config"
\ No newline at end of file
diff --git a/xos/synchronizer/steps/roles/interface_config/templates/Makefile.j2 b/xos/synchronizer/steps/roles/interface_config/templates/Makefile.j2
new file mode 100644
index 0000000..f7939e1
--- /dev/null
+++ b/xos/synchronizer/steps/roles/interface_config/templates/Makefile.j2
@@ -0,0 +1,167 @@
+ifeq ($(RTE_SDK),)
+$(error "Please define RTE_SDK environment variable")
+endif
+
+MAKEFLAGS += -j
+
+# Default target, can be overriden by command line or environment
+RTE_TARGET ?= x86_64-native-linuxapp-gcc
+
+include $(RTE_SDK)/mk/rte.vars.mk
+include $(NG_CORE)/config/ng-core_cfg.mk
+
+#DIRS-y += pipeline
+# binary name
+APP = ngic_dataplane
+# all source are stored in SRCS-y
+SRCS-y := main.c\
+	pkt_handler.c\
+	cdr.c\
+	master_cdr.c\
+	session_cdr.c\
+	config.c\
+	init.c\
+	dataplane.c\
+	gtpu.c\
+	ether.c\
+	ipv4.c\
+	util.c\
+	acl.c\
+	meter.c\
+	adc_table.c\
+	pcc_table.c\
+	sess_table.c\
+	commands.c\
+	stats.c\
+	ddn_utils.c\
+	pipeline/epc_load_balance.o\
+	pipeline/epc_packet_framework.o\
+	pipeline/epc_tx.o\
+	pipeline/epc_rx.o\
+	pipeline/epc_worker.o\
+	pipeline/epc_arp_icmp.o\
+	pipeline/epc_spns_dns.o\
+	$(SRCDIR)/../interface/interface.o\
+	$(SRCDIR)/../cp_dp_api/vepc_cp_dp_api.o\
+	$(SRCDIR)/../test/simu_cp/nsb/nsb_test_util.o\
+	$(SRCDIR)/../test/simu_cp/simu_cp.o\
+	$(SRCDIR)/../interface/ipc/dp_ipc_api.o\
+	$(SRCDIR)/../interface/udp/vepc_udp.o\
+
+CFLAGS += -I$(SRCDIR)/
+CFLAGS += -I$(SRCDIR)/../interface
+CFLAGS += -I$(SRCDIR)/../interface/ipc
+CFLAGS += -I$(SRCDIR)/../interface/udp
+CFLAGS += -I$(SRCDIR)/../interface/sdn
+CFLAGS += -I$(SRCDIR)/../interface/zmq
+CFLAGS += -I$(SRCDIR)/../cp_dp_api
+CFLAGS += -I$(SRCDIR)/../test/simu_cp
+CFLAGS += -I$(SRCDIR)/../test/simu_cp/nsb
+CFLAGS += -I$(SRCDIR)/pipeline
+CFLAGS += -I$(SRCDIR)/../cp
+CFLAGS += -I$(SRCDIR)/../lib/libsponsdn
+
+CFLAGS += -Wno-psabi # suppress "The ABI for passing parameters with 64-byte alignment has changed in GCC 4.6"
+
+
+CFLAGS += -DLDB_DP	# should be included for dataplane.
+
+ifneq (,$(findstring SDN_ODL_BUILD, $(CFLAGS)))
+	SRCS-y += $(SRCDIR)/../interface/zmq/zmqsub.o
+	SRCS-y += $(SRCDIR)/../interface/zmq/zmqpub.o
+	LDFLAGS += -L/usr/local/lib -lzmq
+endif
+#CFLAGS += -g -O3
+CFLAGS += -g -O0
+
+# Un-comment below line to read fake cp config.
+#CFLAGS += -DSIMU_CP
+
+# ASR- Un-comment below line to enable GTPU HEADER Sequence Number option.
+#CFLAGS += -DGTPU_HDR_SEQNB
+
+# ASR- Un-comment below line to enable PCC, ADC, CDR, FILTERING, METERING pipeline stages.
+#CFLAGS += -DINCLUDE_PIPELINE_STAGE
+
+# Un-comment below line to enable PCC, ADC, CDR, FILTERING, METERING pipeline stages.
+#CFLAGS += -DINCLUDE_ADC_STAGE
+
+# Un-comment below line to enable PCC, ADC, CDR, FILTERING, METERING pipeline stages.
+#CFLAGS += -DINCLUDE_MTR_STAGE
+
+# Un-comment below line to enable NIC and pipeline stats.
+#CFLAGS += -DSTATS
+
+# Un-comment below line to get stats from command line (for test harness)
+#CFLAGS += -DCMDLINE_STATS
+
+# Un-comment below line to clear STATS after reading.
+#CFLAGS += -DSTATS_CLR
+
+# Un-comment below line to enable pipeline out stats, STATS flag should be enabled.
+#CFLAGS += -DOSTATS
+
+# Un-comment below line to enable DNS stats.
+CFLAGS += -DDNS_STATS
+
+# Un-comment below line to enable core RX and core TX. All
+# processing stages will be skipped.
+#CFLAGS += -DRX_TX
+
+# Un-comment below line to skip RX Meta access
+#CFLAGS += -DSKIP_RX_META
+
+# Un-comment below line to enable core RX, core LB and core TX. All
+# processing stages will be skipped.
+#CFLAGS += -DRX_LB_TX
+
+# Un-comment below line to enable SDF Metering
+#CFLAGS += -DSDF_MTR
+
+# Un-comment below line to enable APN Metering
+#CFLAGS += -DAPN_MTR
+
+# Un-comment below line to enable ADC upfront.
+CFLAGS += -DADC_UPFRONT
+
+# Un-comment below line to enable hyperscan DPI.
+#CFLAGS += -DHYPERSCAN_DPI
+
+# Un-comment below line to enable Rating group CDRs.
+#CFLAGS += -DRATING_GRP_CDR
+
+# Un-comment below line to skip LB rte_hash_crc_4byte
+# and enable LB based on UE ip last byte.
+#CFLAGS += -DSKIP_LB_HASH_CRC
+
+# set SGI port action handler equal to S1U action handler.
+#CFLAGS += -DSKIP_LB_GTPU_AH
+
+# Un-comment below line to read acl rules from file.
+#CFLAGS += -DACL_READ_CFG
+
+# Un-comment below line if you have 16 x 1GB hugepages.
+#CFLAGS += -DHUGE_PAGE_16GB
+
+# Un-comment below line to configure DP Tables from DP app.
+CFLAGS += -DDP_TABLE_CONFIG
+
+CFLAGS += -Werror
+CFLAGS += -Wunused-variable
+CFLAGS_config.o := -D_GNU_SOURCE
+
+# workaround for a gcc bug with noreturn attribute
+#  http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12603
+ifeq ($(CONFIG_RTE_TOOLCHAIN_GCC),y)
+CFLAGS_dataplane.o += -Wno-return-type
+endif
+
+LDFLAGS += -L$(RTE_SRCDIR)/../lib/libsponsdn/libsponsdn/x86_64-native-linuxapp-gcc/ -lsponsdn
+
+LDFLAGS += -L$(HYPERSCANDIR)/build/lib
+
+LDFLAGS += -lexpressionutil -lhs -lhs_runtime -lstdc++ -lm -lcrypto
+
+LDFLAGS += -lrte_pmd_af_packet
+
+include $(RTE_SDK)/mk/rte.extapp.mk
\ No newline at end of file
diff --git a/xos/synchronizer/steps/roles/interface_config/templates/dp_config.cfg.j2 b/xos/synchronizer/steps/roles/interface_config/templates/dp_config.cfg.j2
index 915c875..17081fd 100644
--- a/xos/synchronizer/steps/roles/interface_config/templates/dp_config.cfg.j2
+++ b/xos/synchronizer/steps/roles/interface_config/templates/dp_config.cfg.j2
@@ -1,7 +1,8 @@
 NOW={{ date }}
 FILE="logs/dp_{{ date }}.log"
-PORT0={{ port_0 }}
-PORT1={{ port_1 }}
+
+S1U_IFACE={{ port_0 }}
+SGI_IFACE={{ port_1 }}
 
 S1U_IP={{ s1u_ip }}
 S1U_MAC={{ s1u_mac }}
diff --git a/xos/synchronizer/steps/roles/interface_config/templates/static_arp.cfg.j2 b/xos/synchronizer/steps/roles/interface_config/templates/static_arp.cfg.j2
new file mode 100644
index 0000000..476e2c6
--- /dev/null
+++ b/xos/synchronizer/steps/roles/interface_config/templates/static_arp.cfg.j2
@@ -0,0 +1,24 @@
+; Copyright 2017-present Open Networking Foundation
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+; http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+; static arp entries are per port; syntax:
+; ipv4 [ipv4] = ethernet mac address
+
+[sgi]
+;115.0.0.14 115.0.0.14    = fa:16:3e:13:20:79
+{{ as_sgi_ip }} {{ as_sgi_ip }} = {{ as_sgi_mac }}
+
+[s1u]
+;111.0.0.14 111.0.0.14    = fa:16:3e:94:d9:7b
+{{ enb_s1u_ip }} {{ enb_s1u_ip }} = {{ enb_s1u_mac }}
\ No newline at end of file
diff --git a/xos/synchronizer/steps/sync_vspgwutenant.py b/xos/synchronizer/steps/sync_vspgwutenant.py
index 28a206d..39b8bb2 100644
--- a/xos/synchronizer/steps/sync_vspgwutenant.py
+++ b/xos/synchronizer/steps/sync_vspgwutenant.py
@@ -34,14 +34,14 @@
 
         scenario = self.get_scenario(o)
 
-        if scenario == 'ng4t_with_sdncontroller':
-            return self.get_values_for_ng4t_w_sdncontroller(o)
-        elif scenario == 'ng4t_without_sdncontroller':
-            return self.get_values_for_ng4t_wo_sdncontroller(o)
-        elif scenario == 'spirent_with_sdncontroller':
-            return self.get_values_for_spirent_w_sdncontroller(o)
-        elif scenario == 'spirent_without_sdncontroller':
-            return self.get_values_for_spirent_wo_sdncontroller(o)
+        if scenario == 'normal_scenario':
+            return self.get_values_for_normal_scenario(o)
+        elif scenario == 'normal_scenario_without_sdncontroller':
+            return self.get_values_for_normal_scenario_wo_sdncontroller(o)
+        elif scenario == 'emulator_scenario':
+            return self.get_values_for_emulator_scenario(o)
+        elif scenario == 'emulator_scenario_without_sdncontroller':
+            return self.get_values_for_emulator_scenario_wo_sdncontroller(o)
         else:
             return self.get_extra_attributes_for_manual(o)
 
@@ -61,11 +61,17 @@
         fields['s1u_ip'] = "manual"
         fields['sgi_ip'] = "manual"
 
+        # for static_arp.cfg file
+        fields['as_sgi_ip'] = "manual"
+        fields['as_sgi_mac'] = "manual"
+        fields['enb_s1u_ip'] = "manual"
+        fields['enb_s1u_mac'] = "manual"
+
         return fields
 
-    def get_values_for_ng4t_w_sdncontroller(self, o):
+    def get_values_for_normal_scenario(self, o):
         fields = {}
-        fields['scenario'] = "ng4t_with_sdncontroller"
+        fields['scenario'] = "normal_scenario"
         # for interface.cfg file
         fields['zmq_sub_ip'] = self.get_ip_address_from_peer_service_instance(
             'sbi_network', "SDNControllerServiceInstance", 'zmq_sub_ip')
@@ -86,11 +92,17 @@
         fields['sgi_ip'] = self.get_ip_address_from_peer_service_instance(
             'sgi_network', "VSPGWUTenant", 'sgi_ip')
 
+        # for static_arp.cfg file
+        fields['as_sgi_ip'] = self.get_ip_address('sgi_network', InternetEmulatorServiceInstance, 'as_sgi_ip')
+        fields['as_sgi_mac'] = self.get_mac_address('sgi_network', InternetEmulatorServiceInstance, 'as_sgi_mac')
+        fields['enb_s1u_ip'] = self.get_ip_address('s1u_network', VENBServiceInstance, 'enb_s1u_ip')
+        fields['enb_s1u_mac'] = self.get_mac_address('s1u_network', VENBServiceInstance, 'enb_s1u_mac')
+
         return fields
 
-    def get_values_for_ng4t_wo_sdncontroller(self, o):
+    def get_values_for_normal_scenario_wo_sdncontroller(self, o):
         fields = {}
-        fields['scenario'] = "ng4t_without_sdncontroller"
+        fields['scenario'] = "normal_scenario_without_sdncontroller"
         # for interface.cfg file
         fields['zmq_sub_ip'] = "127.0.0.1"
         fields['zmq_pub_ip'] = "127.0.0.1"
@@ -107,11 +119,17 @@
         fields['sgi_ip'] = self.get_ip_address_from_peer_service_instance_instance(
             'sgi_network', o, 'sgi_ip')
 
+        # for static_arp.cfg file
+        fields['as_sgi_ip'] = self.get_ip_address('sgi_network', InternetEmulatorServiceInstance, 'as_sgi_ip')
+        fields['as_sgi_mac'] = self.get_mac_address('sgi_network', InternetEmulatorServiceInstance, 'as_sgi_mac')
+        fields['enb_s1u_ip'] = self.get_ip_address('s1u_network', VENBServiceInstance, 'enb_s1u_ip')
+        fields['enb_s1u_mac'] = self.get_mac_address('s1u_network', VENBServiceInstance, 'enb_s1u_mac')
+
         return fields
 
-    def get_values_for_spirent_w_sdncontroller(self, o):
+    def get_values_for_emulator_scenario(self, o):
         fields = {}
-        fields['scenario'] = "ng4t_with_sdncontroller"
+        fields['scenario'] = "emulator_scenario"
         # for interface.cfg file
         fields['zmq_sub_ip'] = self.get_ip_address_from_peer_service_instance(
             'sbi_network', "SDNControllerServiceInstance", 'zmq_sub_ip')
@@ -132,11 +150,17 @@
         fields['sgi_ip'] = self.get_ip_address_from_peer_service_instance_instance(
             'sgi_network', o, 'sgi_ip')
 
+        # for static_arp.cfg file
+        fields['as_sgi_ip'] = self.get_ip_address('sgi_network', VENBServiceInstance, 'as_sgi_ip')
+        fields['as_sgi_mac'] = self.get_mac_address('sgi_network', VENBServiceInstance, 'as_sgi_mac')
+        fields['enb_s1u_ip'] = self.get_ip_address('s1u_network', VENBServiceInstance, 'enb_s1u_ip')
+        fields['enb_s1u_mac'] = self.get_mac_address('s1u_network', VENBServiceInstance, 'enb_s1u_mac')
+
         return fields
 
-    def get_values_for_spirent_wo_sdncontroller(self, o):
+    def get_values_for_emulator_scenario_wo_sdncontroller(self, o):
         fields = {}
-        fields['scenario'] = "ng4t_without_sdncontroller"
+        fields['scenario'] = "emulator_scenario_without_sdncontroller"
         # for interface.cfg file
         fields['zmq_sub_ip'] = "127.0.0.1"
         fields['zmq_pub_ip'] = "127.0.0.1"
@@ -153,6 +177,12 @@
         fields['sgi_ip'] = self.get_ip_address_from_peer_service_instance_instance(
             'sgi_network', o, 'sgi_ip')
 
+        # for static_arp.cfg file
+        fields['as_sgi_ip'] = self.get_ip_address('sgi_network', VENBServiceInstance, 'as_sgi_ip')
+        fields['as_sgi_mac'] = self.get_mac_address('sgi_network', VENBServiceInstance, 'as_sgi_mac')
+        fields['enb_s1u_ip'] = self.get_ip_address('s1u_network', VENBServiceInstance, 'enb_s1u_ip')
+        fields['enb_s1u_mac'] = self.get_mac_address('s1u_network', VENBServiceInstance, 'enb_s1u_mac')
+
         return fields
 
     def has_instance(self, sitype, o):
@@ -175,18 +205,24 @@
         internetemulator_flag = self.has_instance(
             "SDNControllerServiceInstance", o)
 
+        # wait until vspgwu and env are comming up
+        if (not vspgwu_flag):
+            self.defer_sync("Waiting for vSPGWU to come up")
+
+        if (not venb_flag):
+            self.defer_sync("Waiting for vENB to come up")
+
         if vmme_flag and venb_flag and sdncontroller_flag and vspgwu_flag and internetemulator_flag:
-            return 'ng4t_with_sdncontroller'
+            return 'normal_scenario'
 
         if vmme_flag and venb_flag and (not sdncontroller_flag) and vspgwu_flag and internetemulator_flag:
-            return 'ng4t_without_sdncontroller'
+            return 'normal_scenario_without_sdncontroller'
 
         if (not vmme_flag) and venb_flag and sdncontroller_flag and vspgwu_flag and (not internetemulator_flag):
-            return 'spirent_with_sdncontroller'
+            return 'emulator_scenario'
 
-        if (not vmme_flag) and venb_flag and (not sdncontroller_flag) and vspgwu_flag and (
-                not internetemulator_flag):
-            return 'spirent_without_sdncontroller'
+        if (not vmme_flag) and venb_flag and (not sdncontroller_flag) and vspgwu_flag and (not internetemulator_flag):
+            return 'emulator_scenario_without_sdncontroller'
 
         return 'manual'
 
@@ -222,13 +258,26 @@
             ip_address = Port.objects.get(
                 network_id=net_id, instance_id=ins_id).ip
         except Exception:
-            self.log.error("Failed to fetch parameter",
-                           parameter=parameter,
-                           network_name=network_name)
+            ip_address = "error"
+            self.log.error("Failed to fetch parameter to get IP", parameter = parameter, network_name = network_name)
             self.defer_sync("Waiting for parameters to become available")
 
         return ip_address
 
+    def get_mac_address(self, network_name, service_instance, parameter):
+
+        try:
+            net_id = self.get_network_id(network_name)
+            ins_id = self.get_instance_id(service_instance)
+            mac_address = Port.objects.get(network_id=net_id, instance_id=ins_id).ip
+
+        except Exception:
+            mac_address = "error"
+            self.log.error("Failed to fetch parameter to get MAC", parameter = parameter, network_name = network_name)
+            self.defer_sync("Waiting for parameters to become available")
+
+        return mac_address
+
     # To get each network id
     def get_network_id(self, network_name):
         return Network.objects.get(name=network_name).id
diff --git a/xos/synchronizer/steps/vspgwutenant_playbook.yaml b/xos/synchronizer/steps/vspgwutenant_playbook.yaml
index b15a985..0d0a429 100644
--- a/xos/synchronizer/steps/vspgwutenant_playbook.yaml
+++ b/xos/synchronizer/steps/vspgwutenant_playbook.yaml
@@ -31,7 +31,13 @@
     - s1u_ip: {{ s1u_ip }}
     - sgi_ip: {{ sgi_ip }}
     - scenario: {{ scenario }}
+    - as_sgi_ip: {{ as_sgi_ip }}
+    - as_sgi_mac: {{ as_sgi_mac }}
+    - enb_s1u_ip: {{ enb_s1u_ip }}
+    - enb_s1u_mac: {{ enb_s1u_mac }}
 
   roles:
     - interface_config
+    #- build_and_run #Temporally comment out until epc-service is completed.
+