diff --git a/Dockerfile b/Dockerfile index b1e2c0340f504c8e7ab9b7313a4252b9f05a60d1..81c8131ccbcf8ab3cbf1005e4fc23b5731982a7f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,6 +11,7 @@ COPY go.mod/ . RUN go get -u github.com/golang/protobuf/protoc-gen-go RUN mkdir -p /build/pkg/api/v1 RUN protoc --proto_path=/build/api/proto/v1 --proto_path=/build/third_party --go_out=plugins=grpc:/build/pkg/api/v1 config-service.proto +RUN go test ./... WORKDIR /build/pkg/cmd/server RUN CGO_ENABLED=0 GOOS=linux go build diff --git a/build_and_publish.sh b/build_and_publish.sh index 9b293af49e028cbde4ac2e02f29c9dd77ab2be10..a44e22d42f4566d6bc4ee13f7d16d029c8a5277c 100755 --- a/build_and_publish.sh +++ b/build_and_publish.sh @@ -1,6 +1,6 @@ #!/bin/bash -TAG=1.2.0-SNAPSHOT +TAG=LATEST WHAT=janitor sudo docker build --rm -t artifactory.geant.net/nmaas-docker-local/nmaas-$WHAT:$TAG . sudo docker push artifactory.geant.net/nmaas-docker-local/nmaas-$WHAT:$TAG diff --git a/pkg/service/v1/config-service.go b/pkg/service/v1/config-service.go index bca8092eae974a62971701dd18817a7a1f1684cc..e0a8d256e9f4d7ff9c038a9a16d9258792663fe0 100644 --- a/pkg/service/v1/config-service.go +++ b/pkg/service/v1/config-service.go @@ -18,6 +18,7 @@ import ( const ( apiVersion = "v1" + namespaceNotFound = "Namespace not found" ) type configServiceServer struct { @@ -53,12 +54,10 @@ func NewReadinessServiceServer(kubeAPI *kubernetes.Clientset) v1.ReadinessServic return &readinessServiceServer{kubeAPI: kubeAPI} } -func checkAPI(api string) error { - if len(api) > 0 { - if apiVersion != api { - return status.Errorf(codes.Unimplemented, - "unsupported API version: service implements API version '%s', but asked for '%s'", apiVersion, api) - } +func checkAPI(api string, current string) error { + if len(api) > 0 && current != api { + return status.Errorf(codes.Unimplemented, + "unsupported API version: service implements API version '%s', but asked for '%s'", apiVersion, api) } return nil } @@ -181,7 +180,7 @@ func (s *configServiceServer) PrepareDataMapFromRepository(api *gitlab.Client, r //Create new configmap func (s *configServiceServer) CreateOrReplace(ctx context.Context, req *v1.InstanceRequest) (*v1.ServiceResponse, error) { // check if the API version requested by client is supported by server - if err := checkAPI(req.Api); err != nil { + if err := checkAPI(req.Api, apiVersion); err != nil { return nil, err } @@ -195,7 +194,7 @@ func (s *configServiceServer) CreateOrReplace(ctx context.Context, req *v1.Insta //check if given k8s namespace exists _, err = s.kubeAPI.CoreV1().Namespaces().Get(depl.Namespace, metav1.GetOptions{}) if err != nil { - return prepareResponse(v1.Status_FAILED, "Namespace not found!"), err + return prepareResponse(v1.Status_FAILED, namespaceNotFound), err } //check if configmap already exists @@ -233,7 +232,7 @@ func (s *configServiceServer) CreateOrReplace(ctx context.Context, req *v1.Insta //Delete configmap for instance func (s *configServiceServer) DeleteIfExists(ctx context.Context, req *v1.InstanceRequest) (*v1.ServiceResponse, error) { // check if the API version requested by client is supported by server - if err := checkAPI(req.Api); err != nil { + if err := checkAPI(req.Api, apiVersion); err != nil { return nil, err } @@ -242,7 +241,7 @@ func (s *configServiceServer) DeleteIfExists(ctx context.Context, req *v1.Instan //check if given k8s namespace exists _, err := s.kubeAPI.CoreV1().Namespaces().Get(depl.Namespace, metav1.GetOptions{}) if err != nil { - return prepareResponse(v1.Status_FAILED, "Namespace not found!"), err + return prepareResponse(v1.Status_FAILED, namespaceNotFound), err } //check if configmap exist @@ -295,7 +294,7 @@ func getAuthSecretName(uid string) string { func (s *basicAuthServiceServer) CreateOrReplace(ctx context.Context, req *v1.InstanceCredentialsRequest) (*v1.ServiceResponse, error) { // check if the API version requested by client is supported by server - if err := checkAPI(req.Api); err != nil { + if err := checkAPI(req.Api, apiVersion); err != nil { return nil, err } @@ -304,7 +303,7 @@ func (s *basicAuthServiceServer) CreateOrReplace(ctx context.Context, req *v1.In //check if given k8s namespace exists _, err := s.kubeAPI.CoreV1().Namespaces().Get(depl.Namespace, metav1.GetOptions{}) if err != nil { - return prepareResponse(v1.Status_FAILED, "Namespace not found!"), err + return prepareResponse(v1.Status_FAILED, namespaceNotFound), err } //create secret @@ -327,7 +326,7 @@ func (s *basicAuthServiceServer) CreateOrReplace(ctx context.Context, req *v1.In func (s *basicAuthServiceServer) DeleteIfExists(ctx context.Context, req *v1.InstanceRequest) (*v1.ServiceResponse, error) { // check if the API version requested by client is supported by server - if err := checkAPI(req.Api); err != nil { + if err := checkAPI(req.Api, apiVersion); err != nil { return nil, err } @@ -336,7 +335,7 @@ func (s *basicAuthServiceServer) DeleteIfExists(ctx context.Context, req *v1.Ins //check if given k8s namespace exists _, err := s.kubeAPI.CoreV1().Namespaces().Get(depl.Namespace, metav1.GetOptions{}) if err != nil { - return prepareResponse(v1.Status_FAILED, "Namespace not found!"), err + return prepareResponse(v1.Status_FAILED, namespaceNotFound), err } secretName := getAuthSecretName(depl.Uid) @@ -358,7 +357,7 @@ func (s *basicAuthServiceServer) DeleteIfExists(ctx context.Context, req *v1.Ins func (s *certManagerServiceServer) DeleteIfExists(ctx context.Context, req *v1.InstanceRequest) (*v1.ServiceResponse, error) { // check if the API version requested by client is supported by server - if err := checkAPI(req.Api); err != nil { + if err := checkAPI(req.Api, apiVersion); err != nil { return nil, err } @@ -367,7 +366,7 @@ func (s *certManagerServiceServer) DeleteIfExists(ctx context.Context, req *v1.I //check if given k8s namespace exists _, err := s.kubeAPI.CoreV1().Namespaces().Get(depl.Namespace, metav1.GetOptions{}) if err != nil { - return prepareResponse(v1.Status_FAILED, "Namespace not found!"), err + return prepareResponse(v1.Status_FAILED, namespaceNotFound), err } secretName := depl.Uid + "-tls" @@ -389,7 +388,7 @@ func (s *certManagerServiceServer) DeleteIfExists(ctx context.Context, req *v1.I func (s *readinessServiceServer) CheckIfReady(ctx context.Context, req *v1.InstanceRequest) (*v1.ServiceResponse, error) { // check if the API version requested by client is supported by server - if err := checkAPI(req.Api); err != nil { + if err := checkAPI(req.Api, apiVersion); err != nil { return nil, err } @@ -398,7 +397,7 @@ func (s *readinessServiceServer) CheckIfReady(ctx context.Context, req *v1.Insta //check if given k8s namespace exists _, err := s.kubeAPI.CoreV1().Namespaces().Get(depl.Namespace, metav1.GetOptions{}) if err != nil { - return prepareResponse(v1.Status_FAILED, "Namespace not found!"), err + return prepareResponse(v1.Status_FAILED, namespaceNotFound), err } app, err := s.kubeAPI.ExtensionsV1beta1().Deployments(depl.Namespace).Get(depl.Uid, metav1.GetOptions{}) diff --git a/pkg/service/v1/config-service_test.go b/pkg/service/v1/config-service_test.go index afb968f87d8e8e937fb84546f1bd94ed143b4ed8..657e50e4038b02a1640279ec75a20f98f7c21dcc 100644 --- a/pkg/service/v1/config-service_test.go +++ b/pkg/service/v1/config-service_test.go @@ -1,3 +1,18 @@ package v1 -//TODO: add tests \ No newline at end of file +import "testing" + +func TestCheckAPI(t *testing.T) { + api := "wrong" + current := "correct" + err := checkAPI(api, current) + if err == nil { + t.Fail() + } + + api = "correct" + err = checkAPI(api, current) + if err != nil { + t.Fail() + } +} \ No newline at end of file