From 7171a1a9be6d062ab3b0deb939ba1cc506dc4e54 Mon Sep 17 00:00:00 2001
From: Manuel Kieweg <mail@manuelkieweg.de>
Date: Thu, 4 Mar 2021 15:56:07 +0000
Subject: [PATCH] terraform ready for itegration test

---
 build/ci/.build-container.yml |  2 +-
 build/ci/.terraform-ci.yml    |  4 ++++
 build/ci/.test.yml            |  4 +++-
 nucleus/controller.go         |  5 +++--
 test/terraform/containers.tf  | 23 +++++++++++++++++++++--
 test/terraform/images.tf      |  2 +-
 test/terraform/networks.tf    | 11 +++++++++--
 test/terraform/variables.tf   |  5 +++++
 8 files changed, 47 insertions(+), 9 deletions(-)

diff --git a/build/ci/.build-container.yml b/build/ci/.build-container.yml
index 3d1d3576d..dde9dc0d7 100644
--- a/build/ci/.build-container.yml
+++ b/build/ci/.build-container.yml
@@ -14,7 +14,7 @@ build:docker:
       docker build \
         --build-arg GITLAB_USER=$GO_MODULES_USER \
         --build-arg GITLAB_TOKEN=$GO_MODULES_ACCESS_TOKEN \
-        -t $DOCKER_IMAGE_SHA .
+        -t $DOCKER_IMAGE_SHA build/docker/gosdn
 
 .deploy: &deploy
   stage: deploy
diff --git a/build/ci/.terraform-ci.yml b/build/ci/.terraform-ci.yml
index 345e5297d..ca0547efd 100644
--- a/build/ci/.terraform-ci.yml
+++ b/build/ci/.terraform-ci.yml
@@ -22,7 +22,11 @@ cache:
     - export TF_VAR_tls_ca_cert=${DOCKER_TLS_CA}
   rules:
     - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH
+      variables:
+        TF_VAR_container_tag: $CI_REGISTRY_IMAGE:mr-master
     - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == 'develop'
+      variables:
+        TF_VAR_container_tag: $CI_REGISTRY_IMAGE:mr-develop
     - if: $CI_COMMIT_BRANCH == "integration-test"
     - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
 
diff --git a/build/ci/.test.yml b/build/ci/.test.yml
index 587bc1d39..edab2169d 100644
--- a/build/ci/.test.yml
+++ b/build/ci/.test.yml
@@ -1,9 +1,11 @@
 integration-test:
   image: golang:1.14
-  stage: test
+  stage: integration-test
   rules:
     - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH
     - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
+    - if: $CI_COMMIT_BRANCH == "integration-test"
+      allow_failure: true
   script:
     - go test -race $(go list ./... | grep -v /forks/ | grep -v /api/ | grep -v /mocks ) -v -coverprofile=coverage.out
   after_script:
diff --git a/nucleus/controller.go b/nucleus/controller.go
index 38b2eeef1..7a18b975d 100644
--- a/nucleus/controller.go
+++ b/nucleus/controller.go
@@ -1,6 +1,7 @@
 package nucleus
 
 import (
+	"github.com/google/uuid"
 	"os"
 
 	"code.fbi.h-da.de/cocsn/gosdn/database"
@@ -56,10 +57,10 @@ func (c *Core) AttachDatabase() {
 
 // CreateSouthboundInterfaces initializes the controller with its supported SBIs
 func (c *Core) CreateSouthboundInterfaces() error {
-	if err := c.sbic.add(&AristaOC{}); err != nil {
+	if err := c.sbic.add(&AristaOC{id: uuid.New()}); err != nil {
 		return err
 	}
-	if err := c.sbic.add(&OpenConfig{}); err != nil {
+	if err := c.sbic.add(&OpenConfig{id: uuid.New()}); err != nil {
 		return err
 	}
 	return nil
diff --git a/test/terraform/containers.tf b/test/terraform/containers.tf
index 6b74c277d..1dd5e3dc4 100644
--- a/test/terraform/containers.tf
+++ b/test/terraform/containers.tf
@@ -11,13 +11,18 @@ resource "docker_container" "gosdn" {
   }
 
   networks_advanced {
-    name = docker_network.danet.name
+    name =  docker_network.danet.name
+    ipv4_address = "fd::605d"
+  }
+
+  networks_advanced {
+    name =  docker_network.danet_legacy.name
     ipv4_address = "172.100.100.10"
   }
 
   env = [
     "GOSDN_DEBUG=",
-    "GOSDN_TEST="]
+    ]
 }
 
 # create arista container
@@ -27,8 +32,22 @@ resource "docker_container" "ceos" {
   image = docker_image.ceos.name
   restart = "always"
 
+  ports {
+    internal = 6030
+    external = 6030
+  }
+
+  networks_advanced {
+    name = "bridge"
+  }
+
   networks_advanced {
     name =  docker_network.danet.name
+    ipv4_address = "fd::ce05"
+  }
+
+  networks_advanced {
+    name =  docker_network.danet_legacy.name
     ipv4_address = "172.100.100.20"
   }
 
diff --git a/test/terraform/images.tf b/test/terraform/images.tf
index 18a13d113..39d234b38 100644
--- a/test/terraform/images.tf
+++ b/test/terraform/images.tf
@@ -1,5 +1,5 @@
 resource "docker_image" "gosdn" {
-  name = "registry.code.fbi.h-da.de/cocsn/gosdn:develop"
+  name = var.container_tag
 }
 
 resource "docker_image" "ceos" {
diff --git a/test/terraform/networks.tf b/test/terraform/networks.tf
index 652eb419a..614d086e3 100644
--- a/test/terraform/networks.tf
+++ b/test/terraform/networks.tf
@@ -1,8 +1,15 @@
-resource "docker_network" "danet" {
-  name = "danet"
+resource "docker_network" "danet_legacy" {
+  name = "danet_legacy"
 
   ipam_config {
     subnet = "172.100.100.0/24"
+  }
+}
 
+resource "docker_network" "danet" {
+  name = "danet"
+  ipv6 = true
+  ipam_config {
+    subnet = "fd::/64"
   }
 }
\ No newline at end of file
diff --git a/test/terraform/variables.tf b/test/terraform/variables.tf
index 172c8a46c..09277aab4 100644
--- a/test/terraform/variables.tf
+++ b/test/terraform/variables.tf
@@ -20,3 +20,8 @@ variable "tls_cert" {
 variable "tls_ca_cert" {
   type = string
 }
+
+variable "container_tag" {
+  type = string
+  default = "registry.code.fbi.h-da.de/cocsn/gosdn:latest"
+}
\ No newline at end of file
-- 
GitLab