From bb36c70498f88b86e88dc5a10fdc754b8280492b Mon Sep 17 00:00:00 2001
From: Sergey Yakubov <sergey.yakubov@desy.de>
Date: Fri, 6 Jul 2018 10:27:41 +0200
Subject: [PATCH] dockerimages for go services

---
 asapo_tools/CMakeLists.txt                         |  3 ++-
 authorizer/CMakeLists.txt                          |  2 ++
 authorizer/docker/Dockerfile                       |  3 +++
 authorizer/src/asapo_authorizer/main/authorizer.go |  2 ++
 broker/CMakeLists.txt                              |  2 ++
 broker/docker/Dockerfile                           |  3 +++
 broker/src/asapo_broker/main/broker.go             |  1 +
 broker/src/asapo_broker/server/get_next_test.go    | 11 +++++++++--
 common/go/src/asapo_common/logger/logger.go        |  5 +++++
 common/go/src/asapo_common/logger/logrus_logger.go |  7 ++++++-
 common/go/src/asapo_common/logger/mock_logger.go   |  5 +++++
 discovery/CMakeLists.txt                           |  2 ++
 discovery/docker/Dockerfile                        |  3 +++
 discovery/src/asapo_discovery/main/discovery.go    |  1 +
 14 files changed, 46 insertions(+), 4 deletions(-)
 create mode 100644 authorizer/docker/Dockerfile
 create mode 100644 broker/docker/Dockerfile
 create mode 100644 discovery/docker/Dockerfile

diff --git a/asapo_tools/CMakeLists.txt b/asapo_tools/CMakeLists.txt
index 2a517df18..de647a4f8 100644
--- a/asapo_tools/CMakeLists.txt
+++ b/asapo_tools/CMakeLists.txt
@@ -16,13 +16,14 @@ IF(WIN32)
 ELSE()
     set (gopath ${GOPATH}:${CMAKE_CURRENT_SOURCE_DIR}:${CMAKE_SOURCE_DIR}/common/go)
     set (exe_name "${TARGET_NAME}")
+#    set (GO_OPTS "GOOS=linux;CGO_ENABLED=0")
 ENDIF()
 
 include(testing_go)
 
 add_custom_target(asapo ALL
     COMMAND  ${CMAKE_COMMAND} -E env GOPATH=${gopath}
-    go build ${GO_OPTS} -o ${exe_name} asapo_tools/main
+        ${GO_OPTS} go build -o ${exe_name} asapo_tools/main
     VERBATIM)
 define_property(TARGET PROPERTY EXENAME
         BRIEF_DOCS <executable name>
diff --git a/authorizer/CMakeLists.txt b/authorizer/CMakeLists.txt
index 1b4b8165a..a6cd2b3c7 100644
--- a/authorizer/CMakeLists.txt
+++ b/authorizer/CMakeLists.txt
@@ -20,6 +20,8 @@ ENDIF()
 
 include(testing_go)
 
+configure_file(docker/Dockerfile . COPYONLY)
+
 add_custom_target(asapo-authorizer ALL
     COMMAND  ${CMAKE_COMMAND} -E env GOPATH=${gopath}
     go build ${GO_OPTS} -o ${exe_name} asapo_authorizer/main
diff --git a/authorizer/docker/Dockerfile b/authorizer/docker/Dockerfile
new file mode 100644
index 000000000..6b182a102
--- /dev/null
+++ b/authorizer/docker/Dockerfile
@@ -0,0 +1,3 @@
+FROM busybox:glibc
+ADD asapo-authorizer /
+CMD ["/asapo-authorizer","-config","/var/lib/authorizer/config.json"]
diff --git a/authorizer/src/asapo_authorizer/main/authorizer.go b/authorizer/src/asapo_authorizer/main/authorizer.go
index 1a0f39f42..0916ddbed 100644
--- a/authorizer/src/asapo_authorizer/main/authorizer.go
+++ b/authorizer/src/asapo_authorizer/main/authorizer.go
@@ -16,6 +16,8 @@ func PrintUsage() {
 func main() {
 	var fname = flag.String("config", "", "config file path")
 
+	log.SetSoucre("authorizer")
+
 	flag.Parse()
 	if *fname == "" {
 		PrintUsage()
diff --git a/broker/CMakeLists.txt b/broker/CMakeLists.txt
index 49014ff5d..c010ae09f 100644
--- a/broker/CMakeLists.txt
+++ b/broker/CMakeLists.txt
@@ -20,6 +20,8 @@ ENDIF()
 
 include(testing_go)
 
+configure_file(docker/Dockerfile . COPYONLY)
+
 add_custom_target(asapo-broker ALL
     COMMAND  ${CMAKE_COMMAND} -E env GOPATH=${gopath}
     go build ${GO_OPTS} -o ${exe_name} asapo_broker/main
diff --git a/broker/docker/Dockerfile b/broker/docker/Dockerfile
new file mode 100644
index 000000000..9efde1c77
--- /dev/null
+++ b/broker/docker/Dockerfile
@@ -0,0 +1,3 @@
+FROM busybox:glibc
+ADD asapo-broker /
+CMD ["/asapo-broker","-config","/var/lib/broker/config.json"]
diff --git a/broker/src/asapo_broker/main/broker.go b/broker/src/asapo_broker/main/broker.go
index 30a017728..e4b9c6e74 100644
--- a/broker/src/asapo_broker/main/broker.go
+++ b/broker/src/asapo_broker/main/broker.go
@@ -21,6 +21,7 @@ func PrintUsage() {
 func main() {
 	var fname = flag.String("config", "", "config file path")
 
+	log.SetSoucre("broker")
 	flag.Parse()
 	if *fname == "" {
 		PrintUsage()
diff --git a/broker/src/asapo_broker/server/get_next_test.go b/broker/src/asapo_broker/server/get_next_test.go
index 268390973..72693797d 100644
--- a/broker/src/asapo_broker/server/get_next_test.go
+++ b/broker/src/asapo_broker/server/get_next_test.go
@@ -35,8 +35,15 @@ type request struct {
 	message string
 }
 
-func containsMatcher(substr string) func(str string) bool {
-	return func(str string) bool { return strings.Contains(str, substr) }
+func containsMatcher(substrings ...string) func(str string) bool {
+	return func(str string) bool {
+		for _, substr := range substrings {
+			if !strings.Contains(str, substr) {
+				return false
+			}
+		}
+		return true
+	}
 }
 
 func doRequest(path string) *httptest.ResponseRecorder {
diff --git a/common/go/src/asapo_common/logger/logger.go b/common/go/src/asapo_common/logger/logger.go
index e198cd23d..0f026aa18 100644
--- a/common/go/src/asapo_common/logger/logger.go
+++ b/common/go/src/asapo_common/logger/logger.go
@@ -23,6 +23,7 @@ type Logger interface {
 	Warning(args ...interface{})
 	Error(args ...interface{})
 	SetLevel(level Level)
+	SetSource(source string)
 }
 
 var my_logger Logger = &logRusLogger{}
@@ -51,6 +52,10 @@ func SetLevel(level Level) {
 	my_logger.SetLevel(level)
 }
 
+func SetSoucre(source string ){
+	my_logger.SetSource(source)
+}
+
 func LevelFromString(str string) (Level, error) {
 	switch strings.ToLower(str) {
 	case "debug":
diff --git a/common/go/src/asapo_common/logger/logrus_logger.go b/common/go/src/asapo_common/logger/logrus_logger.go
index 750c37e9c..4625f2749 100644
--- a/common/go/src/asapo_common/logger/logrus_logger.go
+++ b/common/go/src/asapo_common/logger/logrus_logger.go
@@ -6,6 +6,11 @@ import (
 
 type logRusLogger struct {
 	logger_entry *log.Entry
+	source string
+}
+
+func (l *logRusLogger) SetSource(source string) {
+	l.source = source
 }
 
 func (l *logRusLogger) entry() *log.Entry {
@@ -23,7 +28,7 @@ func (l *logRusLogger) entry() *log.Entry {
 	log.SetFormatter(formatter)
 
 	l.logger_entry = log.WithFields(log.Fields{
-		"source": "discovery",
+		"source": l.source,
 	})
 
 	return l.logger_entry
diff --git a/common/go/src/asapo_common/logger/mock_logger.go b/common/go/src/asapo_common/logger/mock_logger.go
index 0e597978b..484b86cb0 100644
--- a/common/go/src/asapo_common/logger/mock_logger.go
+++ b/common/go/src/asapo_common/logger/mock_logger.go
@@ -20,6 +20,11 @@ func UnsetMockLog() {
 	my_logger = &logRusLogger{}
 }
 
+func (l *MockLogger) SetSource(source string) {
+	l.Called(source)
+	return
+}
+
 func (l *MockLogger) Info(args ...interface{}) {
 	l.Called(args...)
 	return
diff --git a/discovery/CMakeLists.txt b/discovery/CMakeLists.txt
index 871e6e93f..2c8635979 100644
--- a/discovery/CMakeLists.txt
+++ b/discovery/CMakeLists.txt
@@ -20,6 +20,8 @@ ENDIF()
 
 include(testing_go)
 
+configure_file(docker/Dockerfile . COPYONLY)
+
 add_custom_target(${TARGET_NAME} ALL
     COMMAND  ${CMAKE_COMMAND} -E env GOPATH=${gopath}
     go build ${GO_OPTS} -o ${exe_name} asapo_discovery/main
diff --git a/discovery/docker/Dockerfile b/discovery/docker/Dockerfile
new file mode 100644
index 000000000..e2e745708
--- /dev/null
+++ b/discovery/docker/Dockerfile
@@ -0,0 +1,3 @@
+FROM busybox:glibc
+ADD asapo-discovery /
+CMD ["/asapo-discovery","-config","/var/lib/discovery/config.json"]
diff --git a/discovery/src/asapo_discovery/main/discovery.go b/discovery/src/asapo_discovery/main/discovery.go
index 683b80472..d78d64898 100644
--- a/discovery/src/asapo_discovery/main/discovery.go
+++ b/discovery/src/asapo_discovery/main/discovery.go
@@ -29,6 +29,7 @@ func PrintUsage() {
 func main() {
 	var fname = flag.String("config", "", "config file path")
 
+    log.SetSoucre("discovery")
 	flag.Parse()
 	if *fname == "" {
 		PrintUsage()
-- 
GitLab