Skip to content
Snippets Groups Projects
Unverified Commit d0561e86 authored by Łukasz Łopatowski's avatar Łukasz Łopatowski Committed by GitHub
Browse files

Merge pull request #21 from nmaas-platform/19-handle-namespace-creation-during-domain-provisioning

19 handle namespace creation during domain provisioning
parents 1fbbdd0e 86432a1b
No related branches found
No related tags found
No related merge requests found
...@@ -72,6 +72,17 @@ message PodLogsResponse { ...@@ -72,6 +72,17 @@ message PodLogsResponse {
repeated string lines = 4; repeated string lines = 4;
} }
message KeyValue {
string key = 1;
string value = 2;
}
message NamespaceRequest {
string api = 1;
string namespace = 2;
repeated KeyValue annotations = 3;
}
service ConfigService { service ConfigService {
rpc CreateOrReplace(InstanceRequest) returns (ServiceResponse); rpc CreateOrReplace(InstanceRequest) returns (ServiceResponse);
rpc DeleteIfExists(InstanceRequest) returns (ServiceResponse); rpc DeleteIfExists(InstanceRequest) returns (ServiceResponse);
...@@ -98,4 +109,8 @@ service InformationService { ...@@ -98,4 +109,8 @@ service InformationService {
service PodService { service PodService {
rpc RetrievePodList(InstanceRequest) returns (PodListResponse); rpc RetrievePodList(InstanceRequest) returns (PodListResponse);
rpc RetrievePodLogs(PodRequest) returns (PodLogsResponse); rpc RetrievePodLogs(PodRequest) returns (PodLogsResponse);
}
service NamespaceService {
rpc CreateNamespace(NamespaceRequest) returns (ServiceResponse);
} }
\ No newline at end of file
module bitbucket.software.geant.org/projects/NMAAS/repos/nmaas-janitor module bitbucket.software.geant.org/projects/NMAAS/repos/nmaas-janitor
require ( require (
github.com/golang/protobuf v1.5.3
github.com/johnaoss/htpasswd v0.0.0-20190120213328-a0cc59f788da github.com/johnaoss/htpasswd v0.0.0-20190120213328-a0cc59f788da
github.com/xanzy/go-gitlab v0.95.2 github.com/xanzy/go-gitlab v0.99.0
golang.org/x/net v0.17.0 google.golang.org/grpc v1.62.1
google.golang.org/grpc v1.60.1 google.golang.org/protobuf v1.33.0
google.golang.org/protobuf v1.31.0 k8s.io/api v0.29.2
gopkg.in/yaml.v2 v2.4.0 k8s.io/apimachinery v0.29.2
k8s.io/api v0.29.0 k8s.io/client-go v0.29.2
k8s.io/apimachinery v0.29.0
k8s.io/client-go v0.29.0
) )
require ( require (
...@@ -22,10 +19,11 @@ require ( ...@@ -22,10 +19,11 @@ require (
github.com/go-openapi/jsonreference v0.20.2 // indirect github.com/go-openapi/jsonreference v0.20.2 // indirect
github.com/go-openapi/swag v0.22.3 // indirect github.com/go-openapi/swag v0.22.3 // indirect
github.com/gogo/protobuf v1.3.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/google/gnostic-models v0.6.8 // indirect github.com/google/gnostic-models v0.6.8 // indirect
github.com/google/go-querystring v1.1.0 // indirect github.com/google/go-querystring v1.1.0 // indirect
github.com/google/gofuzz v1.2.0 // indirect github.com/google/gofuzz v1.2.0 // indirect
github.com/google/uuid v1.3.1 // indirect github.com/google/uuid v1.6.0 // indirect
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
github.com/hashicorp/go-retryablehttp v0.7.2 // indirect github.com/hashicorp/go-retryablehttp v0.7.2 // indirect
github.com/josharian/intern v1.0.0 // indirect github.com/josharian/intern v1.0.0 // indirect
...@@ -35,14 +33,16 @@ require ( ...@@ -35,14 +33,16 @@ require (
github.com/modern-go/reflect2 v1.0.2 // indirect github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/pkg/errors v0.9.1 // indirect github.com/pkg/errors v0.9.1 // indirect
golang.org/x/oauth2 v0.13.0 // indirect golang.org/x/net v0.20.0 // indirect
golang.org/x/sys v0.13.0 // indirect golang.org/x/oauth2 v0.16.0 // indirect
golang.org/x/term v0.13.0 // indirect golang.org/x/sys v0.16.0 // indirect
golang.org/x/text v0.13.0 // indirect golang.org/x/term v0.16.0 // indirect
golang.org/x/text v0.14.0 // indirect
golang.org/x/time v0.3.0 // indirect golang.org/x/time v0.3.0 // indirect
google.golang.org/appengine v1.6.8 // indirect google.golang.org/appengine v1.6.8 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20231002182017-d307bd883b97 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect
k8s.io/klog/v2 v2.110.1 // indirect k8s.io/klog/v2 v2.110.1 // indirect
k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect
......
This diff is collapsed.
...@@ -60,7 +60,8 @@ func RunServer() error { ...@@ -60,7 +60,8 @@ func RunServer() error {
readyAPI := v1.NewReadinessServiceServer(kubeAPI) readyAPI := v1.NewReadinessServiceServer(kubeAPI)
infoAPI := v1.NewInformationServiceServer(kubeAPI) infoAPI := v1.NewInformationServiceServer(kubeAPI)
podAPI := v1.NewPodServiceServer(kubeAPI) podAPI := v1.NewPodServiceServer(kubeAPI)
namespaceAPI := v1.NewNamespaceServiceServer(kubeAPI)
return grpc.RunServer(ctx, confAPI, authAPI, certAPI, readyAPI, infoAPI, podAPI, cfg.GRPCPort) return grpc.RunServer(ctx, confAPI, authAPI, certAPI, readyAPI, infoAPI, podAPI, namespaceAPI, cfg.GRPCPort)
} }
...@@ -18,6 +18,7 @@ func RunServer(ctx context.Context, ...@@ -18,6 +18,7 @@ func RunServer(ctx context.Context,
readyAPI v1.ReadinessServiceServer, readyAPI v1.ReadinessServiceServer,
infoAPI v1.InformationServiceServer, infoAPI v1.InformationServiceServer,
podAPI v1.PodServiceServer, podAPI v1.PodServiceServer,
namespaceAPI v1.NamespaceServiceServer,
port string) error { port string) error {
listen, err := net.Listen("tcp", ":"+port) listen, err := net.Listen("tcp", ":"+port)
if err != nil { if err != nil {
...@@ -32,6 +33,7 @@ func RunServer(ctx context.Context, ...@@ -32,6 +33,7 @@ func RunServer(ctx context.Context,
v1.RegisterReadinessServiceServer(server, readyAPI) v1.RegisterReadinessServiceServer(server, readyAPI)
v1.RegisterInformationServiceServer(server, infoAPI) v1.RegisterInformationServiceServer(server, infoAPI)
v1.RegisterPodServiceServer(server, podAPI) v1.RegisterPodServiceServer(server, podAPI)
v1.RegisterNamespaceServiceServer(server, namespaceAPI)
// graceful shutdown // graceful shutdown
c := make(chan os.Signal, 1) c := make(chan os.Signal, 1)
......
...@@ -51,6 +51,10 @@ type podServiceServer struct { ...@@ -51,6 +51,10 @@ type podServiceServer struct {
kubeAPI kubernetes.Interface kubeAPI kubernetes.Interface
} }
type namespaceServiceServer struct {
kubeAPI kubernetes.Interface
}
func NewConfigServiceServer(kubeAPI kubernetes.Interface, gitAPI *gitlab.Client) v1.ConfigServiceServer { func NewConfigServiceServer(kubeAPI kubernetes.Interface, gitAPI *gitlab.Client) v1.ConfigServiceServer {
return &configServiceServer{kubeAPI: kubeAPI, gitAPI: gitAPI} return &configServiceServer{kubeAPI: kubeAPI, gitAPI: gitAPI}
} }
...@@ -75,6 +79,10 @@ func NewPodServiceServer(kubeAPI kubernetes.Interface) v1.PodServiceServer { ...@@ -75,6 +79,10 @@ func NewPodServiceServer(kubeAPI kubernetes.Interface) v1.PodServiceServer {
return &podServiceServer{kubeAPI: kubeAPI} return &podServiceServer{kubeAPI: kubeAPI}
} }
func NewNamespaceServiceServer(kubeAPI kubernetes.Interface) v1.NamespaceServiceServer {
return &namespaceServiceServer{kubeAPI: kubeAPI}
}
func logLine(message string) { func logLine(message string) {
log.Printf(message) log.Printf(message)
} }
...@@ -701,3 +709,26 @@ func (s *podServiceServer) RetrievePodLogs(ctx context.Context, req *v1.PodReque ...@@ -701,3 +709,26 @@ func (s *podServiceServer) RetrievePodLogs(ctx context.Context, req *v1.PodReque
logLine(fmt.Sprintf("< Returning %d characters", len(logs))) logLine(fmt.Sprintf("< Returning %d characters", len(logs)))
return preparePodLogsResponse(v1.Status_OK, "", []string{logs}), err return preparePodLogsResponse(v1.Status_OK, "", []string{logs}), err
} }
func (s *namespaceServiceServer) CreateNamespace(ctx context.Context, req *v1.NamespaceRequest) (*v1.ServiceResponse, error) {
logLine("> Entered CreateNamespace method")
// check if the API version requested by client is supported by server
if err := checkAPI(req.Api, apiVersion); err != nil {
return nil, err
}
ns := apiv1.Namespace{}
ns.Name = req.Namespace
annotations := make(map[string]string)
for _, a := range req.Annotations {
annotations[a.Key] = a.Value
}
ns.SetAnnotations(annotations)
_, err := s.kubeAPI.CoreV1().Namespaces().Create(ctx, &ns, metav1.CreateOptions{})
if err != nil {
return prepareResponse(v1.Status_FAILED, namespaceNotFound), err
}
return prepareResponse(v1.Status_OK, ""), nil
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment