Skip to content

Commit

Permalink
feature. apply default contract.
Browse files Browse the repository at this point in the history
  • Loading branch information
ktkfree committed Mar 24, 2022
1 parent 3c458b5 commit fe45821
Show file tree
Hide file tree
Showing 5 changed files with 116 additions and 23 deletions.
36 changes: 27 additions & 9 deletions cmd/server/cluster_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"errors"
"fmt"

"github.com/golang/protobuf/ptypes/empty"
"github.com/google/uuid"
"gorm.io/gorm"

Expand Down Expand Up @@ -116,17 +117,24 @@ func (s *ClusterInfoServer) GetClusters(ctx context.Context, in *pb.GetClustersR
contractId := in.GetContractId()
cspId := in.GetCspId()

// use default contract if both contractId and cspId was not provided
if contractId == "" && cspId == "" {
err := errors.New("Wrong parameter")
res := pb.GetClustersResponse{
Code: pb.Code_INVALID_ARGUMENT,
Error: &pb.Error{
Msg: "Neither contractID or cspId was provided. Exactly one of those must be provided.",
},
Clusters: nil,
contract, err := s.getDefaultContract(ctx)
if err != nil {
log.Error("Failed to get default contract. err : ", err)
return &pb.GetClustersResponse{
Code: pb.Code_NOT_FOUND,
Error: &pb.Error{
Msg: "Failed to get default contract",
},
}, err
}
return &res, err
} else if contractId != "" && cspId != "" {

contractId = contract.GetContractId()
cspId = "" // get clusters by clusterId
}

if contractId != "" && cspId != "" {
err := errors.New("Wrong parameter")
res := pb.GetClustersResponse{
Code: pb.Code_INVALID_ARGUMENT,
Expand Down Expand Up @@ -230,3 +238,13 @@ func (s *ClusterInfoServer) UpdateClusterStatus(ctx context.Context, in *pb.Upda
Error: nil,
}, nil
}

func (s *ClusterInfoServer) getDefaultContract(ctx context.Context) (*pb.Contract, error) {
resContract, err := contractClient.GetDefaultContract(ctx, &empty.Empty{})
if err != nil {
log.Error("Failed to get contract info err : ", err)
return nil, err
}

return resContract.GetContract(), nil
}
61 changes: 61 additions & 0 deletions cmd/server/cluster_handler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,15 @@ package main

import (
"context"
"errors"
"testing"

"github.com/golang/mock/gomock"
"github.com/google/uuid"
"github.com/stretchr/testify/require"

pb "github.com/openinfradev/tks-proto/tks_pb"
mocktks "github.com/openinfradev/tks-proto/tks_pb/mock"
)

var (
Expand Down Expand Up @@ -155,13 +158,15 @@ func TestGetClusters(t *testing.T) {
testCases := []struct {
name string
in *pb.GetClustersRequest
buildStubs func(mockContractClient *mocktks.MockContractServiceClient)
checkResponse func(req *pb.GetClustersRequest, res *pb.GetClustersResponse, err error)
}{
{
name: "OK_BY_CONTRACT_ID",
in: &pb.GetClustersRequest{
ContractId: requestAddClusterInfo.ContractId,
},
buildStubs: func(mockContractClient *mocktks.MockContractServiceClient) {},
checkResponse: func(req *pb.GetClustersRequest, res *pb.GetClustersResponse, err error) {
require.NoError(t, err)
require.Equal(t, res.Code, pb.Code_OK_UNSPECIFIED)
Expand All @@ -175,6 +180,7 @@ func TestGetClusters(t *testing.T) {
in: &pb.GetClustersRequest{
CspId: requestAddClusterInfo.CspId,
},
buildStubs: func(mockContractClient *mocktks.MockContractServiceClient) {},
checkResponse: func(req *pb.GetClustersRequest, res *pb.GetClustersResponse, err error) {
require.NoError(t, err)
require.Equal(t, res.Code, pb.Code_OK_UNSPECIFIED)
Expand All @@ -183,11 +189,54 @@ func TestGetClusters(t *testing.T) {
require.Equal(t, res.Clusters[0].Id, createdClusterId)
},
},
{
name: "USE_DEFAULT_CONTRACT_AND_NOT_EXISTS_CLUSTERS",
in: &pb.GetClustersRequest{
ContractId: "",
CspId: "",
},
buildStubs: func(mockContractClient *mocktks.MockContractServiceClient) {
mockContractClient.EXPECT().GetDefaultContract(gomock.Any(), gomock.Any()).Times(1).
Return(
&pb.GetContractResponse{
Code: pb.Code_OK_UNSPECIFIED,
Error: nil,
Contract: &pb.Contract{
ContractId: uuid.New().String(),
CspId: uuid.New().String(),
},
}, nil)
},
checkResponse: func(req *pb.GetClustersRequest, res *pb.GetClustersResponse, err error) {
require.Error(t, err)
require.Equal(t, res.Code, pb.Code_NOT_FOUND)
},
},
{
name: "FAILED_TO_GET_DEFAULT_CONTRACT",
in: &pb.GetClustersRequest{
ContractId: "",
CspId: "",
},
buildStubs: func(mockContractClient *mocktks.MockContractServiceClient) {
mockContractClient.EXPECT().GetDefaultContract(gomock.Any(), gomock.Any()).Times(1).
Return(
&pb.GetContractResponse{
Code: pb.Code_OK_UNSPECIFIED,
Error: nil,
}, errors.New("FAILED_TO_GET_DEFAULT_CONTRACT"))
},
checkResponse: func(req *pb.GetClustersRequest, res *pb.GetClustersResponse, err error) {
require.Error(t, err)
require.Equal(t, res.Code, pb.Code_NOT_FOUND)
},
},
{
name: "INVALID_CONTRACT_ID",
in: &pb.GetClustersRequest{
ContractId: "NO_UUID_STRING",
},
buildStubs: func(mockContractClient *mocktks.MockContractServiceClient) {},
checkResponse: func(req *pb.GetClustersRequest, res *pb.GetClustersResponse, err error) {
require.Error(t, err)
require.Equal(t, res.Code, pb.Code_INVALID_ARGUMENT)
Expand All @@ -198,6 +247,7 @@ func TestGetClusters(t *testing.T) {
in: &pb.GetClustersRequest{
ContractId: "NO_UUID_STRING",
},
buildStubs: func(mockContractClient *mocktks.MockContractServiceClient) {},
checkResponse: func(req *pb.GetClustersRequest, res *pb.GetClustersResponse, err error) {
require.Error(t, err)
require.Equal(t, res.Code, pb.Code_INVALID_ARGUMENT)
Expand All @@ -209,6 +259,7 @@ func TestGetClusters(t *testing.T) {
ContractId: uuid.New().String(),
CspId: uuid.New().String(),
},
buildStubs: func(mockContractClient *mocktks.MockContractServiceClient) {},
checkResponse: func(req *pb.GetClustersRequest, res *pb.GetClustersResponse, err error) {
require.Error(t, err)
require.Equal(t, res.Code, pb.Code_INVALID_ARGUMENT)
Expand All @@ -219,6 +270,7 @@ func TestGetClusters(t *testing.T) {
in: &pb.GetClustersRequest{
ContractId: uuid.New().String(),
},
buildStubs: func(mockContractClient *mocktks.MockContractServiceClient) {},
checkResponse: func(req *pb.GetClustersRequest, res *pb.GetClustersResponse, err error) {
require.Error(t, err)
require.Equal(t, res.Code, pb.Code_NOT_FOUND)
Expand All @@ -229,6 +281,7 @@ func TestGetClusters(t *testing.T) {
in: &pb.GetClustersRequest{
CspId: uuid.New().String(),
},
buildStubs: func(mockContractClient *mocktks.MockContractServiceClient) {},
checkResponse: func(req *pb.GetClustersRequest, res *pb.GetClustersResponse, err error) {
require.Error(t, err)
require.Equal(t, res.Code, pb.Code_NOT_FOUND)
Expand All @@ -243,6 +296,14 @@ func TestGetClusters(t *testing.T) {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()

ctrl := gomock.NewController(t)
defer ctrl.Finish()

mockContarctClient := mocktks.NewMockContractServiceClient(ctrl)
contractClient = mockContarctClient

tc.buildStubs(mockContarctClient)

s := ClusterInfoServer{}
res, err := s.GetClusters(ctx, tc.in)
tc.checkResponse(tc.in, res, err)
Expand Down
24 changes: 20 additions & 4 deletions cmd/server/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"gorm.io/driver/postgres"
"gorm.io/gorm"

"github.com/openinfradev/tks-common/pkg/grpc_client"
"github.com/openinfradev/tks-common/pkg/grpc_server"
"github.com/openinfradev/tks-common/pkg/log"
pb "github.com/openinfradev/tks-proto/tks_pb"
Expand All @@ -19,10 +20,16 @@ var (
tlsCertPath string
tlsKeyPath string

dbhost string
dbport string
dbuser string
dbpassword string
contractAddress string
contractPort int
dbhost string
dbport string
dbuser string
dbpassword string
)

var (
contractClient pb.ContractServiceClient
)

func init() {
Expand All @@ -31,6 +38,8 @@ func init() {
flag.StringVar(&tlsClientCertPath, "tls-client-cert-path", "../../cert/tks-ca.crt", "path of ca cert file for tls")
flag.StringVar(&tlsCertPath, "tls-cert-path", "../../cert/tks-server.crt", "path of cert file for tls")
flag.StringVar(&tlsKeyPath, "tls-key-path", "../../cert/tks-server.key", "path of key file for tls")
flag.StringVar(&contractAddress, "contract-address", "localhost", "service address for tks-contract")
flag.IntVar(&contractPort, "contract-port", 9110, "service port for tks-contract")
flag.StringVar(&dbhost, "dbhost", "localhost", "host of postgreSQL")
flag.StringVar(&dbport, "dbport", "5432", "port of postgreSQL")
flag.StringVar(&dbuser, "dbuser", "postgres", "postgreSQL user")
Expand All @@ -46,6 +55,8 @@ func main() {
log.Info("tlsClientCertPath : ", tlsClientCertPath)
log.Info("tlsCertPath : ", tlsCertPath)
log.Info("tlsKeyPath : ", tlsKeyPath)
log.Info("contractAddress : ", contractAddress)
log.Info("contractPort : ", contractPort)
log.Info("dbhost : ", dbhost)
log.Info("dbport : ", dbport)
log.Info("dbuser : ", dbuser)
Expand All @@ -66,6 +77,11 @@ func main() {
InitCspInfoHandler(db)
InitKeycloakInfoHandler(db)

// initialize clients
if _, contractClient, err = grpc_client.CreateContractClient(contractAddress, contractPort, tlsEnabled, tlsClientCertPath); err != nil {
log.Fatal("failed to create contract client : ", err)
}

// start server
s, conn, err := grpc_server.CreateServer(port, tlsEnabled, tlsCertPath, tlsKeyPath)
if err != nil {
Expand Down
8 changes: 5 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@ module github.com/openinfradev/tks-info
go 1.16

require (
github.com/golang/mock v1.6.0
github.com/golang/protobuf v1.5.2
github.com/google/uuid v1.3.0
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect
github.com/jackc/pgx/v4 v4.15.0 // indirect
github.com/openinfradev/tks-common v0.0.0-20220321044608-105302d33457 // indirect
github.com/openinfradev/tks-proto v0.0.6-0.20220318062944-7fccd257bcae
github.com/openinfradev/tks-common v0.0.0-20220321044608-105302d33457
github.com/openinfradev/tks-proto v0.0.6-0.20220324075944-e471af2c8c49
github.com/stretchr/testify v1.7.0
golang.org/x/crypto v0.0.0-20220210151621-f4118a5b28e2 // indirect
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd // indirect
Expand Down
10 changes: 3 additions & 7 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -438,6 +438,7 @@ github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfb
github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=
github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=
github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
Expand Down Expand Up @@ -824,16 +825,11 @@ github.com/opencontainers/runc v1.1.0 h1:O9+X96OcDjkmmZyfaG996kV7yq8HsoU2h1XRRQc
github.com/opencontainers/runc v1.1.0/go.mod h1:Tj1hFw6eFWp/o33uxGf5yF2BX5yz2Z6iptFpuvbbKqc=
github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
github.com/opencontainers/selinux v1.10.0/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI=
github.com/openinfradev/tks-common v0.0.0-20220210005751-57d957152e7b h1:4qPjR/0PszGLtijvygdxZHgspydJbZWqaVJh3HPBL2o=
github.com/openinfradev/tks-common v0.0.0-20220210005751-57d957152e7b/go.mod h1:3d+gW0PPeBzEUtVRoupTTXAFlfdJLyHy2Lzlw4rcnOk=
github.com/openinfradev/tks-common v0.0.0-20220321044608-105302d33457 h1:yKhmkHl2qi2/pyNBST8zI8fpcjjcpTFzACBwtk2fjik=
github.com/openinfradev/tks-common v0.0.0-20220321044608-105302d33457/go.mod h1:3d+gW0PPeBzEUtVRoupTTXAFlfdJLyHy2Lzlw4rcnOk=
github.com/openinfradev/tks-proto v0.0.6-0.20211015003551-ed8f9541f40d h1:ypM1LN+7tjRGzmTBNVegY/25KhJLFuQor2/+DfuhxDM=
github.com/openinfradev/tks-proto v0.0.6-0.20211015003551-ed8f9541f40d/go.mod h1:ul6kvgOXhNQvXEUmb92Wh5BmsuzknnTCb3wqmVNd/iI=
github.com/openinfradev/tks-proto v0.0.6-0.20220318052715-6a30f96012a0 h1:hCO/GIolGqGx37ZLy1iRHyGEB4ZYQLakvnmxzSIYdPs=
github.com/openinfradev/tks-proto v0.0.6-0.20220318052715-6a30f96012a0/go.mod h1:3DrATRNCUJMW0oMLHT6D1teN4hX0vMGH4qOGnadakmo=
github.com/openinfradev/tks-proto v0.0.6-0.20220318062944-7fccd257bcae h1:n4VlqbtNhQ36WMrqHCWkHp7PR5qUr3AVDdOBINZoa5o=
github.com/openinfradev/tks-proto v0.0.6-0.20220318062944-7fccd257bcae/go.mod h1:3DrATRNCUJMW0oMLHT6D1teN4hX0vMGH4qOGnadakmo=
github.com/openinfradev/tks-proto v0.0.6-0.20220324075944-e471af2c8c49 h1:XYNl9fXGUH02/Laqht+ba2FmgOXrl7sUDHcAZHsSaUE=
github.com/openinfradev/tks-proto v0.0.6-0.20220324075944-e471af2c8c49/go.mod h1:3DrATRNCUJMW0oMLHT6D1teN4hX0vMGH4qOGnadakmo=
github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis=
github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74=
github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
Expand Down

0 comments on commit fe45821

Please sign in to comment.