From 3287cf6923fe9b6f768a10e9d7a852227e1a3949 Mon Sep 17 00:00:00 2001 From: elinuxhenrik Date: Mon, 10 Jan 2022 14:15:31 +0100 Subject: [PATCH] Fix registration of types for DMaaP Mediator Issue-ID: NONRTRIC-702 Signed-off-by: elinuxhenrik Change-Id: Iee9ac0cf831e216639f77d0a08aa0b7d54091aa5 --- dmaap-mediator-producer/Dockerfile | 2 +- dmaap-mediator-producer/internal/config/registrator.go | 3 ++- dmaap-mediator-producer/internal/config/registrator_test.go | 13 +++++++++++-- dmaap-mediator-producer/stub/ics/ics.go | 13 +++++++++++-- 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/dmaap-mediator-producer/Dockerfile b/dmaap-mediator-producer/Dockerfile index 1c7f45cb..6d9b2b87 100644 --- a/dmaap-mediator-producer/Dockerfile +++ b/dmaap-mediator-producer/Dockerfile @@ -30,7 +30,7 @@ RUN go build -o /dmaapmediatorproducer ## ## Deploy ## -FROM gcr.io/distroless/base-debian10 +FROM gcr.io/distroless/base-debian11 WORKDIR / ## Copy from "build" stage COPY --from=build /dmaapmediatorproducer . diff --git a/dmaap-mediator-producer/internal/config/registrator.go b/dmaap-mediator-producer/internal/config/registrator.go index bac14e63..1dd0ad1c 100644 --- a/dmaap-mediator-producer/internal/config/registrator.go +++ b/dmaap-mediator-producer/internal/config/registrator.go @@ -73,7 +73,8 @@ func NewRegistratorImpl(infoCoordAddr string, client restclient.HTTPClient) *Reg func (r RegistratorImpl) RegisterTypes(jobTypes []TypeDefinition) error { for _, jobType := range jobTypes { - body := fmt.Sprintf(`{"info_job_data_schema": %v}`, jobType.TypeSchema) + s, _ := json.Marshal(jobType.TypeSchema) + body := fmt.Sprintf(`{"info_job_data_schema": %v}`, string(s)) if error := restclient.Put(r.infoCoordinatorAddress+registerTypePath+url.PathEscape(jobType.Identity), []byte(body), r.httpClient); error != nil { return error } diff --git a/dmaap-mediator-producer/internal/config/registrator_test.go b/dmaap-mediator-producer/internal/config/registrator_test.go index d1b61d87..b2f10ccd 100644 --- a/dmaap-mediator-producer/internal/config/registrator_test.go +++ b/dmaap-mediator-producer/internal/config/registrator_test.go @@ -21,6 +21,7 @@ package config import ( + "encoding/json" "io/ioutil" "net/http" "testing" @@ -39,9 +40,17 @@ func TestRegisterTypes(t *testing.T) { StatusCode: http.StatusCreated, }, nil) + schemaString := `{ + "type": "object", + "properties": {}, + "additionalProperties": false + }` + var schemaObj interface{} + json.Unmarshal([]byte(schemaString), &schemaObj) + type1 := TypeDefinition{ Identity: "Type1", - TypeSchema: `{"type": "object","properties": {},"additionalProperties": false}`, + TypeSchema: schemaObj, } types := []TypeDefinition{type1} @@ -60,7 +69,7 @@ func TestRegisterTypes(t *testing.T) { assertions.Equal("/data-producer/v1/info-types/Type1", actualRequest.URL.Path) assertions.Equal("application/json", actualRequest.Header.Get("Content-Type")) body, _ := ioutil.ReadAll(actualRequest.Body) - expectedBody := []byte(`{"info_job_data_schema": {"type": "object","properties": {},"additionalProperties": false}}`) + expectedBody := []byte(`{"info_job_data_schema": {"additionalProperties":false,"properties":{},"type":"object"}}`) assertions.Equal(expectedBody, body) clientMock.AssertNumberOfCalls(t, "Do", 1) } diff --git a/dmaap-mediator-producer/stub/ics/ics.go b/dmaap-mediator-producer/stub/ics/ics.go index 0818d5e3..87457c2b 100644 --- a/dmaap-mediator-producer/stub/ics/ics.go +++ b/dmaap-mediator-producer/stub/ics/ics.go @@ -23,6 +23,7 @@ package main import ( "flag" "fmt" + "io/ioutil" "net/http" "github.com/gorilla/mux" @@ -43,7 +44,7 @@ func handleTypeRegistration(w http.ResponseWriter, r *http.Request) { vars := mux.Vars(r) id, ok := vars["typeId"] if ok { - fmt.Println("Registered type ", id) + fmt.Printf("Registered type %v with schema: %v\n", id, readBody(r)) } } @@ -51,6 +52,14 @@ func handleProducerRegistration(w http.ResponseWriter, r *http.Request) { vars := mux.Vars(r) id, ok := vars["producerId"] if ok { - fmt.Println("Registered producer ", id) + fmt.Printf("Registered producer %v with data: %v\n", id, readBody(r)) } } + +func readBody(r *http.Request) string { + b, readErr := ioutil.ReadAll(r.Body) + if readErr != nil { + return fmt.Sprintf("Unable to read body due to: %v", readErr) + } + return string(b) +} -- 2.16.6