From 0b1699d6ab0d9e5a1ce9484a87d088a5646d0bc2 Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Fri, 15 Dec 2023 09:50:13 +0100 Subject: [PATCH 01/39] Migrate away from deprecated wrappers --- api/rest/mapper/mapper.go | 40 ++----- api/v1/iam.pb.go | 126 ++++++++++---------- api/v1/project.pb.go | 227 +++++++++++++++++------------------- api/v1/quota.pb.go | 55 ++++----- api/v1/tenant.pb.go | 187 ++++++++++++++--------------- client/main.go | 34 +++--- pkg/service/project.go | 12 +- pkg/service/project_test.go | 16 +-- pkg/service/tenant.go | 4 +- pkg/service/tenant_test.go | 6 +- proto/v1/iam.proto | 5 +- proto/v1/project.proto | 9 +- proto/v1/quota.proto | 4 +- proto/v1/tenant.proto | 5 +- 14 files changed, 337 insertions(+), 393 deletions(-) diff --git a/api/rest/mapper/mapper.go b/api/rest/mapper/mapper.go index 0b20e1a..2019b48 100644 --- a/api/rest/mapper/mapper.go +++ b/api/rest/mapper/mapper.go @@ -6,7 +6,6 @@ import ( v1 "github.com/metal-stack/masterdata-api/api/rest/v1" mdmv1 "github.com/metal-stack/masterdata-api/api/v1" "google.golang.org/protobuf/types/known/timestamppb" - "google.golang.org/protobuf/types/known/wrapperspb" ) func ToMdmV1Tenant(t *v1.Tenant) *mdmv1.Tenant { @@ -150,9 +149,7 @@ func ToMdmV1Quota(q *v1.Quota) *mdmv1.Quota { } return &mdmv1.Quota{ - Quota: &wrapperspb.Int32Value{ - Value: *q.Quota, - }, + Quota: q.Quota, } } @@ -178,18 +175,11 @@ func ToMdmV1ProjectFindRequest(r *v1.ProjectFindRequest) *mdmv1.ProjectFindReque return nil } - mdmv1r := new(mdmv1.ProjectFindRequest) - if r.Id != nil { - mdmv1r.Id = &wrapperspb.StringValue{Value: *r.Id} - } - if r.Description != nil { - mdmv1r.Description = &wrapperspb.StringValue{Value: *r.Description} - } - if r.Name != nil { - mdmv1r.Name = &wrapperspb.StringValue{Value: *r.Name} - } - if r.TenantId != nil { - mdmv1r.TenantId = &wrapperspb.StringValue{Value: *r.TenantId} + mdmv1r := &mdmv1.ProjectFindRequest{ + Id: r.Id, + Name: r.Name, + Description: r.Description, + TenantId: r.TenantId, } return mdmv1r @@ -200,12 +190,9 @@ func ToMdmV1TenantFindRequest(r *v1.TenantFindRequest) *mdmv1.TenantFindRequest return nil } - mdmv1r := new(mdmv1.TenantFindRequest) - if r.Id != nil { - mdmv1r.Id = &wrapperspb.StringValue{Value: *r.Id} - } - if r.Name != nil { - mdmv1r.Name = &wrapperspb.StringValue{Value: *r.Name} + mdmv1r := &mdmv1.TenantFindRequest{ + Id: r.Id, + Name: r.Name, } if r.Paging != nil { mdmv1r.Paging = &mdmv1.Paging{ @@ -254,16 +241,9 @@ func ToV1Quota(q *mdmv1.Quota) *v1.Quota { return nil } return &v1.Quota{ - Quota: unwrapInt32(q.Quota), + Quota: q.Quota, } } -func unwrapInt32(w *wrapperspb.Int32Value) *int32 { - if w == nil { - return nil - } - - return &w.Value -} func mustTimestampToTime(ts *timestamppb.Timestamp) *time.Time { if ts == nil { diff --git a/api/v1/iam.pb.go b/api/v1/iam.pb.go index dda8bdb..f0607c9 100644 --- a/api/v1/iam.pb.go +++ b/api/v1/iam.pb.go @@ -9,7 +9,6 @@ package v1 import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" reflect "reflect" sync "sync" ) @@ -292,22 +291,21 @@ type ConnectorConfig struct { unknownFields protoimpl.UnknownFields // the following are all mandatory - IdmApiUrl string `protobuf:"bytes,1,opt,name=idm_api_url,json=idmApiUrl,proto3" json:"idm_api_url,omitempty"` - IdmApiUser string `protobuf:"bytes,2,opt,name=idm_api_user,json=idmApiUser,proto3" json:"idm_api_user,omitempty"` - IdmApiPassword string `protobuf:"bytes,3,opt,name=idm_api_password,json=idmApiPassword,proto3" json:"idm_api_password,omitempty"` - IdmSystemId string `protobuf:"bytes,4,opt,name=idm_system_id,json=idmSystemId,proto3" json:"idm_system_id,omitempty"` - IdmAccessCode string `protobuf:"bytes,5,opt,name=idm_access_code,json=idmAccessCode,proto3" json:"idm_access_code,omitempty"` - IdmCustomerId string `protobuf:"bytes,6,opt,name=idm_customer_id,json=idmCustomerId,proto3" json:"idm_customer_id,omitempty"` - IdmGroupOu string `protobuf:"bytes,7,opt,name=idm_group_ou,json=idmGroupOu,proto3" json:"idm_group_ou,omitempty"` - // optional - IdmGroupnameTemplate *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=idm_groupname_template,json=idmGroupnameTemplate,proto3" json:"idm_groupname_template,omitempty"` - IdmDomainName string `protobuf:"bytes,9,opt,name=idm_domain_name,json=idmDomainName,proto3" json:"idm_domain_name,omitempty"` - IdmTenantPrefix string `protobuf:"bytes,10,opt,name=idm_tenant_prefix,json=idmTenantPrefix,proto3" json:"idm_tenant_prefix,omitempty"` - IdmSubmitter string `protobuf:"bytes,11,opt,name=idm_submitter,json=idmSubmitter,proto3" json:"idm_submitter,omitempty"` - IdmJobInfo string `protobuf:"bytes,12,opt,name=idm_job_info,json=idmJobInfo,proto3" json:"idm_job_info,omitempty"` - IdmReqSystem string `protobuf:"bytes,13,opt,name=idm_req_system,json=idmReqSystem,proto3" json:"idm_req_system,omitempty"` - IdmReqUser string `protobuf:"bytes,14,opt,name=idm_req_user,json=idmReqUser,proto3" json:"idm_req_user,omitempty"` - IdmReqEmail string `protobuf:"bytes,15,opt,name=idm_req_email,json=idmReqEmail,proto3" json:"idm_req_email,omitempty"` + IdmApiUrl string `protobuf:"bytes,1,opt,name=idm_api_url,json=idmApiUrl,proto3" json:"idm_api_url,omitempty"` + IdmApiUser string `protobuf:"bytes,2,opt,name=idm_api_user,json=idmApiUser,proto3" json:"idm_api_user,omitempty"` + IdmApiPassword string `protobuf:"bytes,3,opt,name=idm_api_password,json=idmApiPassword,proto3" json:"idm_api_password,omitempty"` + IdmSystemId string `protobuf:"bytes,4,opt,name=idm_system_id,json=idmSystemId,proto3" json:"idm_system_id,omitempty"` + IdmAccessCode string `protobuf:"bytes,5,opt,name=idm_access_code,json=idmAccessCode,proto3" json:"idm_access_code,omitempty"` + IdmCustomerId string `protobuf:"bytes,6,opt,name=idm_customer_id,json=idmCustomerId,proto3" json:"idm_customer_id,omitempty"` + IdmGroupOu string `protobuf:"bytes,7,opt,name=idm_group_ou,json=idmGroupOu,proto3" json:"idm_group_ou,omitempty"` + IdmGroupnameTemplate *string `protobuf:"bytes,8,opt,name=idm_groupname_template,json=idmGroupnameTemplate,proto3,oneof" json:"idm_groupname_template,omitempty"` + IdmDomainName string `protobuf:"bytes,9,opt,name=idm_domain_name,json=idmDomainName,proto3" json:"idm_domain_name,omitempty"` + IdmTenantPrefix string `protobuf:"bytes,10,opt,name=idm_tenant_prefix,json=idmTenantPrefix,proto3" json:"idm_tenant_prefix,omitempty"` + IdmSubmitter string `protobuf:"bytes,11,opt,name=idm_submitter,json=idmSubmitter,proto3" json:"idm_submitter,omitempty"` + IdmJobInfo string `protobuf:"bytes,12,opt,name=idm_job_info,json=idmJobInfo,proto3" json:"idm_job_info,omitempty"` + IdmReqSystem string `protobuf:"bytes,13,opt,name=idm_req_system,json=idmReqSystem,proto3" json:"idm_req_system,omitempty"` + IdmReqUser string `protobuf:"bytes,14,opt,name=idm_req_user,json=idmReqUser,proto3" json:"idm_req_user,omitempty"` + IdmReqEmail string `protobuf:"bytes,15,opt,name=idm_req_email,json=idmReqEmail,proto3" json:"idm_req_email,omitempty"` } func (x *ConnectorConfig) Reset() { @@ -391,11 +389,11 @@ func (x *ConnectorConfig) GetIdmGroupOu() string { return "" } -func (x *ConnectorConfig) GetIdmGroupnameTemplate() *wrapperspb.StringValue { - if x != nil { - return x.IdmGroupnameTemplate +func (x *ConnectorConfig) GetIdmGroupnameTemplate() string { + if x != nil && x.IdmGroupnameTemplate != nil { + return *x.IdmGroupnameTemplate } - return nil + return "" } func (x *ConnectorConfig) GetIdmDomainName() string { @@ -451,9 +449,7 @@ var File_v1_iam_proto protoreflect.FileDescriptor var file_v1_iam_proto_rawDesc = []byte{ 0x0a, 0x0c, 0x76, 0x31, 0x2f, 0x69, 0x61, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, - 0x76, 0x31, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0xad, 0x01, 0x0a, 0x09, 0x49, 0x41, 0x4d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x76, 0x31, 0x22, 0xad, 0x01, 0x0a, 0x09, 0x49, 0x41, 0x4d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x35, 0x0a, 0x0d, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x69, 0x73, 0x73, 0x75, 0x65, @@ -493,7 +489,7 @@ var file_v1_iam_proto_rawDesc = []byte{ 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x22, 0xee, 0x04, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x43, + 0x65, 0x22, 0xf0, 0x04, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1e, 0x0a, 0x0b, 0x69, 0x64, 0x6d, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x64, 0x6d, 0x41, 0x70, 0x69, 0x55, 0x72, 0x6c, 0x12, 0x20, 0x0a, 0x0c, 0x69, 0x64, 0x6d, 0x5f, 0x61, 0x70, 0x69, @@ -510,35 +506,36 @@ var file_v1_iam_proto_rawDesc = []byte{ 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x64, 0x6d, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x69, 0x64, 0x6d, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6f, 0x75, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x6d, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4f, 0x75, 0x12, 0x52, 0x0a, 0x16, 0x69, 0x64, 0x6d, 0x5f, 0x67, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4f, 0x75, 0x12, 0x39, 0x0a, 0x16, 0x69, 0x64, 0x6d, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x69, 0x64, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x6e, - 0x61, 0x6d, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x69, - 0x64, 0x6d, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x64, 0x6d, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x64, 0x6d, 0x5f, 0x74, 0x65, 0x6e, 0x61, 0x6e, - 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, - 0x69, 0x64, 0x6d, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, - 0x23, 0x0a, 0x0d, 0x69, 0x64, 0x6d, 0x5f, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x64, 0x6d, 0x53, 0x75, 0x62, 0x6d, 0x69, - 0x74, 0x74, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0c, 0x69, 0x64, 0x6d, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, - 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x6d, 0x4a, - 0x6f, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x64, 0x6d, 0x5f, 0x72, 0x65, - 0x71, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x69, 0x64, 0x6d, 0x52, 0x65, 0x71, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x20, 0x0a, 0x0c, - 0x69, 0x64, 0x6d, 0x5f, 0x72, 0x65, 0x71, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x0e, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x6d, 0x52, 0x65, 0x71, 0x55, 0x73, 0x65, 0x72, 0x12, 0x22, - 0x0a, 0x0d, 0x69, 0x64, 0x6d, 0x5f, 0x72, 0x65, 0x71, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, - 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x64, 0x6d, 0x52, 0x65, 0x71, 0x45, 0x6d, 0x61, - 0x69, 0x6c, 0x42, 0x64, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x08, 0x49, 0x61, - 0x6d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, - 0x2f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2d, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x31, 0xa2, 0x02, 0x03, 0x56, 0x58, 0x58, 0xaa, 0x02, 0x02, 0x56, 0x31, 0xca, 0x02, 0x02, - 0x56, 0x31, 0xe2, 0x02, 0x0e, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0xea, 0x02, 0x02, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x14, 0x69, 0x64, 0x6d, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x6e, 0x61, 0x6d, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x64, 0x6d, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x64, 0x6d, + 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x64, + 0x6d, 0x5f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x64, 0x6d, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, + 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x64, 0x6d, 0x5f, 0x73, 0x75, + 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, + 0x64, 0x6d, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0c, 0x69, + 0x64, 0x6d, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x69, 0x64, 0x6d, 0x4a, 0x6f, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, + 0x0e, 0x69, 0x64, 0x6d, 0x5f, 0x72, 0x65, 0x71, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x64, 0x6d, 0x52, 0x65, 0x71, 0x53, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x12, 0x20, 0x0a, 0x0c, 0x69, 0x64, 0x6d, 0x5f, 0x72, 0x65, 0x71, 0x5f, 0x75, + 0x73, 0x65, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x6d, 0x52, 0x65, + 0x71, 0x55, 0x73, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x64, 0x6d, 0x5f, 0x72, 0x65, 0x71, + 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x64, + 0x6d, 0x52, 0x65, 0x71, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x69, 0x64, + 0x6d, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x42, 0x64, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x08, + 0x49, 0x61, 0x6d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2d, 0x61, 0x70, + 0x69, 0x2f, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x56, 0x58, 0x58, 0xaa, 0x02, 0x02, 0x56, 0x31, 0xca, + 0x02, 0x02, 0x56, 0x31, 0xe2, 0x02, 0x0e, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x02, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -555,24 +552,22 @@ func file_v1_iam_proto_rawDescGZIP() []byte { var file_v1_iam_proto_msgTypes = make([]protoimpl.MessageInfo, 5) var file_v1_iam_proto_goTypes = []interface{}{ - (*IAMConfig)(nil), // 0: v1.IAMConfig - (*IssuerConfig)(nil), // 1: v1.IssuerConfig - (*IDMConfig)(nil), // 2: v1.IDMConfig - (*NamespaceGroupConfig)(nil), // 3: v1.NamespaceGroupConfig - (*ConnectorConfig)(nil), // 4: v1.ConnectorConfig - (*wrapperspb.StringValue)(nil), // 5: google.protobuf.StringValue + (*IAMConfig)(nil), // 0: v1.IAMConfig + (*IssuerConfig)(nil), // 1: v1.IssuerConfig + (*IDMConfig)(nil), // 2: v1.IDMConfig + (*NamespaceGroupConfig)(nil), // 3: v1.NamespaceGroupConfig + (*ConnectorConfig)(nil), // 4: v1.ConnectorConfig } var file_v1_iam_proto_depIdxs = []int32{ 1, // 0: v1.IAMConfig.issuer_config:type_name -> v1.IssuerConfig 2, // 1: v1.IAMConfig.idm_config:type_name -> v1.IDMConfig 3, // 2: v1.IAMConfig.group_config:type_name -> v1.NamespaceGroupConfig 4, // 3: v1.IDMConfig.connector_config:type_name -> v1.ConnectorConfig - 5, // 4: v1.ConnectorConfig.idm_groupname_template:type_name -> google.protobuf.StringValue - 5, // [5:5] is the sub-list for method output_type - 5, // [5:5] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name } func init() { file_v1_iam_proto_init() } @@ -642,6 +637,7 @@ func file_v1_iam_proto_init() { } } } + file_v1_iam_proto_msgTypes[4].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/api/v1/project.pb.go b/api/v1/project.pb.go index fc765eb..ce7bd00 100644 --- a/api/v1/project.pb.go +++ b/api/v1/project.pb.go @@ -10,7 +10,6 @@ import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" timestamppb "google.golang.org/protobuf/types/known/timestamppb" - wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" reflect "reflect" sync "sync" ) @@ -350,12 +349,12 @@ type ProjectFindRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Description *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - TenantId *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` - Paging *Paging `protobuf:"bytes,5,opt,name=paging,proto3" json:"paging,omitempty"` - Annotations map[string]string `protobuf:"bytes,6,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Id *string `protobuf:"bytes,1,opt,name=id,proto3,oneof" json:"id,omitempty"` + Name *string `protobuf:"bytes,2,opt,name=name,proto3,oneof" json:"name,omitempty"` + Description *string `protobuf:"bytes,3,opt,name=description,proto3,oneof" json:"description,omitempty"` + TenantId *string `protobuf:"bytes,4,opt,name=tenant_id,json=tenantId,proto3,oneof" json:"tenant_id,omitempty"` + Paging *Paging `protobuf:"bytes,5,opt,name=paging,proto3" json:"paging,omitempty"` + Annotations map[string]string `protobuf:"bytes,6,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *ProjectFindRequest) Reset() { @@ -390,32 +389,32 @@ func (*ProjectFindRequest) Descriptor() ([]byte, []int) { return file_v1_project_proto_rawDescGZIP(), []int{6} } -func (x *ProjectFindRequest) GetId() *wrapperspb.StringValue { - if x != nil { - return x.Id +func (x *ProjectFindRequest) GetId() string { + if x != nil && x.Id != nil { + return *x.Id } - return nil + return "" } -func (x *ProjectFindRequest) GetName() *wrapperspb.StringValue { - if x != nil { - return x.Name +func (x *ProjectFindRequest) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } - return nil + return "" } -func (x *ProjectFindRequest) GetDescription() *wrapperspb.StringValue { - if x != nil { - return x.Description +func (x *ProjectFindRequest) GetDescription() string { + if x != nil && x.Description != nil { + return *x.Description } - return nil + return "" } -func (x *ProjectFindRequest) GetTenantId() *wrapperspb.StringValue { - if x != nil { - return x.TenantId +func (x *ProjectFindRequest) GetTenantId() string { + if x != nil && x.TenantId != nil { + return *x.TenantId } - return nil + return "" } func (x *ProjectFindRequest) GetPaging() *Paging { @@ -541,9 +540,7 @@ var file_v1_project_proto_rawDesc = []byte{ 0x0a, 0x10, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, - 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, + 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0d, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0e, 0x76, 0x31, 0x2f, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa0, 0x01, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x6a, @@ -574,74 +571,70 @@ var file_v1_project_proto_rawDesc = []byte{ 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2a, 0x0a, 0x02, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x02, 0x61, 0x74, 0x22, 0x9e, 0x03, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x02, 0x61, 0x74, 0x22, 0xe8, 0x02, 0x0a, 0x12, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, - 0x22, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0a, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, - 0x69, 0x6e, 0x67, 0x12, 0x49, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3e, - 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x38, - 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x25, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x6e, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x27, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x08, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x20, 0x0a, 0x09, 0x6e, 0x65, 0x78, 0x74, - 0x5f, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x08, 0x6e, - 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6e, - 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x32, 0xe8, 0x02, 0x0a, 0x0e, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x18, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x74, 0x65, 0x6e, + 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x08, + 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x06, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, + 0x49, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, + 0x64, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, + 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x22, 0x38, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x22, 0x6e, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x08, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x12, 0x20, 0x0a, 0x09, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x08, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, + 0x65, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, + 0x67, 0x65, 0x32, 0xe8, 0x02, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, + 0x18, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, + 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x18, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x12, 0x18, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x31, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x15, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x12, 0x1c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x47, 0x65, + 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x18, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, - 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x18, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x13, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x15, 0x2e, - 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0a, 0x47, 0x65, 0x74, - 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x46, 0x69, - 0x6e, 0x64, 0x12, 0x16, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x46, - 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x42, 0x68, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x28, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x2d, - 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, - 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x56, 0x58, 0x58, 0xaa, 0x02, 0x02, - 0x56, 0x31, 0xca, 0x02, 0x02, 0x56, 0x31, 0xe2, 0x02, 0x0e, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x02, 0x56, 0x31, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x46, 0x69, 0x6e, 0x64, 0x12, 0x16, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x68, 0x0a, + 0x06, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x31, 0xa2, 0x02, 0x03, 0x56, 0x58, 0x58, 0xaa, 0x02, 0x02, 0x56, 0x31, 0xca, 0x02, 0x02, 0x56, + 0x31, 0xe2, 0x02, 0x0e, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0xea, 0x02, 0x02, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -671,8 +664,7 @@ var file_v1_project_proto_goTypes = []interface{}{ (*Meta)(nil), // 10: v1.Meta (*QuotaSet)(nil), // 11: v1.QuotaSet (*timestamppb.Timestamp)(nil), // 12: google.protobuf.Timestamp - (*wrapperspb.StringValue)(nil), // 13: google.protobuf.StringValue - (*Paging)(nil), // 14: v1.Paging + (*Paging)(nil), // 13: v1.Paging } var file_v1_project_proto_depIdxs = []int32{ 10, // 0: v1.Project.meta:type_name -> v1.Meta @@ -680,31 +672,27 @@ var file_v1_project_proto_depIdxs = []int32{ 0, // 2: v1.ProjectCreateRequest.project:type_name -> v1.Project 0, // 3: v1.ProjectUpdateRequest.project:type_name -> v1.Project 12, // 4: v1.ProjectGetHistoryRequest.at:type_name -> google.protobuf.Timestamp - 13, // 5: v1.ProjectFindRequest.id:type_name -> google.protobuf.StringValue - 13, // 6: v1.ProjectFindRequest.name:type_name -> google.protobuf.StringValue - 13, // 7: v1.ProjectFindRequest.description:type_name -> google.protobuf.StringValue - 13, // 8: v1.ProjectFindRequest.tenant_id:type_name -> google.protobuf.StringValue - 14, // 9: v1.ProjectFindRequest.paging:type_name -> v1.Paging - 9, // 10: v1.ProjectFindRequest.annotations:type_name -> v1.ProjectFindRequest.AnnotationsEntry - 0, // 11: v1.ProjectResponse.project:type_name -> v1.Project - 0, // 12: v1.ProjectListResponse.projects:type_name -> v1.Project - 1, // 13: v1.ProjectService.Create:input_type -> v1.ProjectCreateRequest - 2, // 14: v1.ProjectService.Update:input_type -> v1.ProjectUpdateRequest - 3, // 15: v1.ProjectService.Delete:input_type -> v1.ProjectDeleteRequest - 4, // 16: v1.ProjectService.Get:input_type -> v1.ProjectGetRequest - 5, // 17: v1.ProjectService.GetHistory:input_type -> v1.ProjectGetHistoryRequest - 6, // 18: v1.ProjectService.Find:input_type -> v1.ProjectFindRequest - 7, // 19: v1.ProjectService.Create:output_type -> v1.ProjectResponse - 7, // 20: v1.ProjectService.Update:output_type -> v1.ProjectResponse - 7, // 21: v1.ProjectService.Delete:output_type -> v1.ProjectResponse - 7, // 22: v1.ProjectService.Get:output_type -> v1.ProjectResponse - 7, // 23: v1.ProjectService.GetHistory:output_type -> v1.ProjectResponse - 8, // 24: v1.ProjectService.Find:output_type -> v1.ProjectListResponse - 19, // [19:25] is the sub-list for method output_type - 13, // [13:19] is the sub-list for method input_type - 13, // [13:13] is the sub-list for extension type_name - 13, // [13:13] is the sub-list for extension extendee - 0, // [0:13] is the sub-list for field type_name + 13, // 5: v1.ProjectFindRequest.paging:type_name -> v1.Paging + 9, // 6: v1.ProjectFindRequest.annotations:type_name -> v1.ProjectFindRequest.AnnotationsEntry + 0, // 7: v1.ProjectResponse.project:type_name -> v1.Project + 0, // 8: v1.ProjectListResponse.projects:type_name -> v1.Project + 1, // 9: v1.ProjectService.Create:input_type -> v1.ProjectCreateRequest + 2, // 10: v1.ProjectService.Update:input_type -> v1.ProjectUpdateRequest + 3, // 11: v1.ProjectService.Delete:input_type -> v1.ProjectDeleteRequest + 4, // 12: v1.ProjectService.Get:input_type -> v1.ProjectGetRequest + 5, // 13: v1.ProjectService.GetHistory:input_type -> v1.ProjectGetHistoryRequest + 6, // 14: v1.ProjectService.Find:input_type -> v1.ProjectFindRequest + 7, // 15: v1.ProjectService.Create:output_type -> v1.ProjectResponse + 7, // 16: v1.ProjectService.Update:output_type -> v1.ProjectResponse + 7, // 17: v1.ProjectService.Delete:output_type -> v1.ProjectResponse + 7, // 18: v1.ProjectService.Get:output_type -> v1.ProjectResponse + 7, // 19: v1.ProjectService.GetHistory:output_type -> v1.ProjectResponse + 8, // 20: v1.ProjectService.Find:output_type -> v1.ProjectListResponse + 15, // [15:21] is the sub-list for method output_type + 9, // [9:15] is the sub-list for method input_type + 9, // [9:9] is the sub-list for extension type_name + 9, // [9:9] is the sub-list for extension extendee + 0, // [0:9] is the sub-list for field type_name } func init() { file_v1_project_proto_init() } @@ -825,6 +813,7 @@ func file_v1_project_proto_init() { } } } + file_v1_project_proto_msgTypes[6].OneofWrappers = []interface{}{} file_v1_project_proto_msgTypes[8].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ diff --git a/api/v1/quota.pb.go b/api/v1/quota.pb.go index dc5fec9..1e1d632 100644 --- a/api/v1/quota.pb.go +++ b/api/v1/quota.pb.go @@ -9,7 +9,6 @@ package v1 import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" reflect "reflect" sync "sync" ) @@ -107,7 +106,7 @@ type Quota struct { unknownFields protoimpl.UnknownFields // quota is the maximum amount for the current QuotaSet, can be nil - Quota *wrapperspb.Int32Value `protobuf:"bytes,1,opt,name=quota,proto3" json:"quota,omitempty"` + Quota *int32 `protobuf:"varint,1,opt,name=quota,proto3,oneof" json:"quota,omitempty"` } func (x *Quota) Reset() { @@ -142,20 +141,18 @@ func (*Quota) Descriptor() ([]byte, []int) { return file_v1_quota_proto_rawDescGZIP(), []int{1} } -func (x *Quota) GetQuota() *wrapperspb.Int32Value { - if x != nil { - return x.Quota +func (x *Quota) GetQuota() int32 { + if x != nil && x.Quota != nil { + return *x.Quota } - return nil + return 0 } var File_v1_quota_proto protoreflect.FileDescriptor var file_v1_quota_proto_rawDesc = []byte{ 0x0a, 0x0e, 0x76, 0x31, 0x2f, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x12, 0x02, 0x76, 0x31, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x94, 0x01, 0x0a, 0x08, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x53, 0x65, + 0x12, 0x02, 0x76, 0x31, 0x22, 0x94, 0x01, 0x0a, 0x08, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x53, 0x65, 0x74, 0x12, 0x23, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x07, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, @@ -164,18 +161,17 @@ var file_v1_quota_proto_rawDesc = []byte{ 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x52, 0x02, 0x69, 0x70, 0x12, 0x23, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x6f, - 0x74, 0x61, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x3a, 0x0a, 0x05, 0x51, - 0x75, 0x6f, 0x74, 0x61, 0x12, 0x31, 0x0a, 0x05, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x05, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x42, 0x66, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x2e, 0x76, - 0x31, 0x42, 0x0a, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, - 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x74, 0x61, - 0x6c, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x64, 0x61, - 0x74, 0x61, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x56, 0x58, 0x58, 0xaa, - 0x02, 0x02, 0x56, 0x31, 0xca, 0x02, 0x02, 0x56, 0x31, 0xe2, 0x02, 0x0e, 0x56, 0x31, 0x5c, 0x47, - 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x02, 0x56, 0x31, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x61, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x2c, 0x0a, 0x05, 0x51, + 0x75, 0x6f, 0x74, 0x61, 0x12, 0x19, 0x0a, 0x05, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x05, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x88, 0x01, 0x01, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x42, 0x66, 0x0a, 0x06, 0x63, 0x6f, 0x6d, + 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, + 0x01, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, + 0x74, 0x61, 0x6c, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, + 0x64, 0x61, 0x74, 0x61, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x56, 0x58, + 0x58, 0xaa, 0x02, 0x02, 0x56, 0x31, 0xca, 0x02, 0x02, 0x56, 0x31, 0xe2, 0x02, 0x0e, 0x56, 0x31, + 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x02, 0x56, + 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -192,21 +188,19 @@ func file_v1_quota_proto_rawDescGZIP() []byte { var file_v1_quota_proto_msgTypes = make([]protoimpl.MessageInfo, 2) var file_v1_quota_proto_goTypes = []interface{}{ - (*QuotaSet)(nil), // 0: v1.QuotaSet - (*Quota)(nil), // 1: v1.Quota - (*wrapperspb.Int32Value)(nil), // 2: google.protobuf.Int32Value + (*QuotaSet)(nil), // 0: v1.QuotaSet + (*Quota)(nil), // 1: v1.Quota } var file_v1_quota_proto_depIdxs = []int32{ 1, // 0: v1.QuotaSet.cluster:type_name -> v1.Quota 1, // 1: v1.QuotaSet.machine:type_name -> v1.Quota 1, // 2: v1.QuotaSet.ip:type_name -> v1.Quota 1, // 3: v1.QuotaSet.project:type_name -> v1.Quota - 2, // 4: v1.Quota.quota:type_name -> google.protobuf.Int32Value - 5, // [5:5] is the sub-list for method output_type - 5, // [5:5] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name } func init() { file_v1_quota_proto_init() } @@ -240,6 +234,7 @@ func file_v1_quota_proto_init() { } } } + file_v1_quota_proto_msgTypes[1].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/api/v1/tenant.pb.go b/api/v1/tenant.pb.go index dad60dd..2d89b56 100644 --- a/api/v1/tenant.pb.go +++ b/api/v1/tenant.pb.go @@ -10,7 +10,6 @@ import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" timestamppb "google.golang.org/protobuf/types/known/timestamppb" - wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" reflect "reflect" sync "sync" ) @@ -357,10 +356,10 @@ type TenantFindRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Paging *Paging `protobuf:"bytes,3,opt,name=paging,proto3" json:"paging,omitempty"` - Annotations map[string]string `protobuf:"bytes,4,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Id *string `protobuf:"bytes,1,opt,name=id,proto3,oneof" json:"id,omitempty"` + Name *string `protobuf:"bytes,2,opt,name=name,proto3,oneof" json:"name,omitempty"` + Paging *Paging `protobuf:"bytes,3,opt,name=paging,proto3" json:"paging,omitempty"` + Annotations map[string]string `protobuf:"bytes,4,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *TenantFindRequest) Reset() { @@ -395,18 +394,18 @@ func (*TenantFindRequest) Descriptor() ([]byte, []int) { return file_v1_tenant_proto_rawDescGZIP(), []int{6} } -func (x *TenantFindRequest) GetId() *wrapperspb.StringValue { - if x != nil { - return x.Id +func (x *TenantFindRequest) GetId() string { + if x != nil && x.Id != nil { + return *x.Id } - return nil + return "" } -func (x *TenantFindRequest) GetName() *wrapperspb.StringValue { - if x != nil { - return x.Name +func (x *TenantFindRequest) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } - return nil + return "" } func (x *TenantFindRequest) GetPaging() *Paging { @@ -532,8 +531,6 @@ var file_v1_tenant_proto_rawDesc = []byte{ 0x0a, 0x0f, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0c, 0x76, 0x31, 0x2f, 0x69, 0x61, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0d, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x2e, 0x70, @@ -570,64 +567,62 @@ var file_v1_tenant_proto_rawDesc = []byte{ 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2a, 0x0a, 0x02, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x02, 0x61, 0x74, 0x22, 0xa1, 0x02, 0x0a, 0x11, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x46, - 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x06, 0x70, 0x61, - 0x67, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x48, - 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x46, - 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x34, 0x0a, 0x0e, 0x54, 0x65, 0x6e, 0x61, - 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x06, 0x74, 0x65, - 0x6e, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x76, 0x31, 0x2e, - 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x22, 0x6a, - 0x0a, 0x12, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x07, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, - 0x74, 0x52, 0x07, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x20, 0x0a, 0x09, 0x6e, 0x65, - 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, - 0x08, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, - 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x32, 0xdb, 0x02, 0x0a, 0x0d, 0x54, - 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x35, 0x0a, 0x06, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x17, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, - 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x12, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x17, 0x2e, - 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, - 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x12, 0x17, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, - 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x2f, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x14, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, - 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, - 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, - 0x12, 0x1b, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x65, 0x74, 0x48, - 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, + 0x52, 0x02, 0x61, 0x74, 0x22, 0xff, 0x01, 0x0a, 0x11, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x46, + 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, + 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, + 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, + 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x48, 0x0a, 0x0b, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x46, 0x69, 0x6e, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x64, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x34, 0x0a, 0x0e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x06, 0x74, 0x65, 0x6e, 0x61, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, + 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x22, 0x6a, 0x0a, 0x12, + 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x24, 0x0a, 0x07, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, + 0x07, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x20, 0x0a, 0x09, 0x6e, 0x65, 0x78, 0x74, + 0x5f, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x08, 0x6e, + 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6e, + 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x32, 0xdb, 0x02, 0x0a, 0x0d, 0x54, 0x65, 0x6e, + 0x61, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x12, 0x17, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x35, 0x0a, 0x04, 0x46, 0x69, 0x6e, 0x64, 0x12, 0x15, 0x2e, 0x76, 0x31, 0x2e, 0x54, - 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x16, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x67, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x2e, - 0x76, 0x31, 0x42, 0x0b, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, - 0x01, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, - 0x74, 0x61, 0x6c, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, - 0x64, 0x61, 0x74, 0x61, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x56, 0x58, - 0x58, 0xaa, 0x02, 0x02, 0x56, 0x31, 0xca, 0x02, 0x02, 0x56, 0x31, 0xe2, 0x02, 0x0e, 0x56, 0x31, - 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x02, 0x56, - 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x12, 0x35, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x17, 0x2e, 0x76, 0x31, + 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x12, 0x17, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x76, 0x31, + 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x2f, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x14, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, + 0x6e, 0x74, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x76, + 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x3d, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1b, + 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x76, 0x31, + 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x35, 0x0a, 0x04, 0x46, 0x69, 0x6e, 0x64, 0x12, 0x15, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, + 0x61, 0x6e, 0x74, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, + 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x67, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x31, + 0x42, 0x0b, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, + 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x74, 0x61, + 0x6c, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x64, 0x61, + 0x74, 0x61, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x56, 0x58, 0x58, 0xaa, + 0x02, 0x02, 0x56, 0x31, 0xca, 0x02, 0x02, 0x56, 0x31, 0xe2, 0x02, 0x0e, 0x56, 0x31, 0x5c, 0x47, + 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x02, 0x56, 0x31, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -658,8 +653,7 @@ var file_v1_tenant_proto_goTypes = []interface{}{ (*QuotaSet)(nil), // 11: v1.QuotaSet (*IAMConfig)(nil), // 12: v1.IAMConfig (*timestamppb.Timestamp)(nil), // 13: google.protobuf.Timestamp - (*wrapperspb.StringValue)(nil), // 14: google.protobuf.StringValue - (*Paging)(nil), // 15: v1.Paging + (*Paging)(nil), // 14: v1.Paging } var file_v1_tenant_proto_depIdxs = []int32{ 10, // 0: v1.Tenant.meta:type_name -> v1.Meta @@ -669,29 +663,27 @@ var file_v1_tenant_proto_depIdxs = []int32{ 0, // 4: v1.TenantCreateRequest.tenant:type_name -> v1.Tenant 0, // 5: v1.TenantUpdateRequest.tenant:type_name -> v1.Tenant 13, // 6: v1.TenantGetHistoryRequest.at:type_name -> google.protobuf.Timestamp - 14, // 7: v1.TenantFindRequest.id:type_name -> google.protobuf.StringValue - 14, // 8: v1.TenantFindRequest.name:type_name -> google.protobuf.StringValue - 15, // 9: v1.TenantFindRequest.paging:type_name -> v1.Paging - 9, // 10: v1.TenantFindRequest.annotations:type_name -> v1.TenantFindRequest.AnnotationsEntry - 0, // 11: v1.TenantResponse.tenant:type_name -> v1.Tenant - 0, // 12: v1.TenantListResponse.tenants:type_name -> v1.Tenant - 1, // 13: v1.TenantService.Create:input_type -> v1.TenantCreateRequest - 2, // 14: v1.TenantService.Update:input_type -> v1.TenantUpdateRequest - 3, // 15: v1.TenantService.Delete:input_type -> v1.TenantDeleteRequest - 4, // 16: v1.TenantService.Get:input_type -> v1.TenantGetRequest - 5, // 17: v1.TenantService.GetHistory:input_type -> v1.TenantGetHistoryRequest - 6, // 18: v1.TenantService.Find:input_type -> v1.TenantFindRequest - 7, // 19: v1.TenantService.Create:output_type -> v1.TenantResponse - 7, // 20: v1.TenantService.Update:output_type -> v1.TenantResponse - 7, // 21: v1.TenantService.Delete:output_type -> v1.TenantResponse - 7, // 22: v1.TenantService.Get:output_type -> v1.TenantResponse - 7, // 23: v1.TenantService.GetHistory:output_type -> v1.TenantResponse - 8, // 24: v1.TenantService.Find:output_type -> v1.TenantListResponse - 19, // [19:25] is the sub-list for method output_type - 13, // [13:19] is the sub-list for method input_type - 13, // [13:13] is the sub-list for extension type_name - 13, // [13:13] is the sub-list for extension extendee - 0, // [0:13] is the sub-list for field type_name + 14, // 7: v1.TenantFindRequest.paging:type_name -> v1.Paging + 9, // 8: v1.TenantFindRequest.annotations:type_name -> v1.TenantFindRequest.AnnotationsEntry + 0, // 9: v1.TenantResponse.tenant:type_name -> v1.Tenant + 0, // 10: v1.TenantListResponse.tenants:type_name -> v1.Tenant + 1, // 11: v1.TenantService.Create:input_type -> v1.TenantCreateRequest + 2, // 12: v1.TenantService.Update:input_type -> v1.TenantUpdateRequest + 3, // 13: v1.TenantService.Delete:input_type -> v1.TenantDeleteRequest + 4, // 14: v1.TenantService.Get:input_type -> v1.TenantGetRequest + 5, // 15: v1.TenantService.GetHistory:input_type -> v1.TenantGetHistoryRequest + 6, // 16: v1.TenantService.Find:input_type -> v1.TenantFindRequest + 7, // 17: v1.TenantService.Create:output_type -> v1.TenantResponse + 7, // 18: v1.TenantService.Update:output_type -> v1.TenantResponse + 7, // 19: v1.TenantService.Delete:output_type -> v1.TenantResponse + 7, // 20: v1.TenantService.Get:output_type -> v1.TenantResponse + 7, // 21: v1.TenantService.GetHistory:output_type -> v1.TenantResponse + 8, // 22: v1.TenantService.Find:output_type -> v1.TenantListResponse + 17, // [17:23] is the sub-list for method output_type + 11, // [11:17] is the sub-list for method input_type + 11, // [11:11] is the sub-list for extension type_name + 11, // [11:11] is the sub-list for extension extendee + 0, // [0:11] is the sub-list for field type_name } func init() { file_v1_tenant_proto_init() } @@ -813,6 +805,7 @@ func file_v1_tenant_proto_init() { } } } + file_v1_tenant_proto_msgTypes[6].OneofWrappers = []interface{}{} file_v1_tenant_proto_msgTypes[8].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ diff --git a/client/main.go b/client/main.go index 2c81c8f..2fbe4b8 100644 --- a/client/main.go +++ b/client/main.go @@ -6,8 +6,8 @@ import ( "time" "github.com/metal-stack/masterdata-api/api/rest/mapper" + "github.com/metal-stack/metal-lib/pkg/pointer" "google.golang.org/protobuf/types/known/timestamppb" - "google.golang.org/protobuf/types/known/wrapperspb" "github.com/metal-stack/masterdata-api/pkg/auth" @@ -58,9 +58,9 @@ func projectExample(c client.Client, log *zap.Logger) { Description: "Demo Project", TenantId: "customer-1", Quotas: &v1.QuotaSet{ - Cluster: &v1.Quota{Quota: &wrapperspb.Int32Value{Value: 3}}, - Machine: &v1.Quota{Quota: &wrapperspb.Int32Value{Value: 3}}, - Ip: &v1.Quota{Quota: &wrapperspb.Int32Value{Value: 3}}, + Cluster: &v1.Quota{Quota: pointer.Pointer(int32(3))}, + Machine: &v1.Quota{Quota: pointer.Pointer(int32(3))}, + Ip: &v1.Quota{Quota: pointer.Pointer(int32(3))}, }, Meta: &v1.Meta{ Annotations: map[string]string{ @@ -157,9 +157,9 @@ func tenantExample(c client.Client, log *zap.Logger) { Name: "myTenant", Description: "myDesc", DefaultQuotas: &v1.QuotaSet{ - Cluster: &v1.Quota{Quota: &wrapperspb.Int32Value{Value: 3}}, - Machine: &v1.Quota{Quota: &wrapperspb.Int32Value{Value: 3}}, - Ip: &v1.Quota{Quota: &wrapperspb.Int32Value{Value: 3}}, + Cluster: &v1.Quota{Quota: pointer.Pointer(int32(3))}, + Machine: &v1.Quota{Quota: pointer.Pointer(int32(3))}, + Ip: &v1.Quota{Quota: pointer.Pointer(int32(3))}, }, IamConfig: &v1.IAMConfig{ IssuerConfig: &v1.IssuerConfig{ @@ -169,16 +169,14 @@ func tenantExample(c client.Client, log *zap.Logger) { IdmConfig: &v1.IDMConfig{ IdmType: "UX", ConnectorConfig: &v1.ConnectorConfig{ - IdmApiUrl: "a", - IdmApiUser: "b", - IdmApiPassword: "c", - IdmSystemId: "d", - IdmAccessCode: "e", - IdmCustomerId: "f", - IdmGroupOu: "g", - IdmGroupnameTemplate: &wrapperspb.StringValue{ - Value: "asdasdads", - }, + IdmApiUrl: "a", + IdmApiUser: "b", + IdmApiPassword: "c", + IdmSystemId: "d", + IdmAccessCode: "e", + IdmCustomerId: "f", + IdmGroupOu: "g", + IdmGroupnameTemplate: pointer.Pointer("asdasdads"), }, }, }, @@ -277,7 +275,7 @@ func tenantExample(c client.Client, log *zap.Logger) { log.Info("find tenant with id") tfrqi := &v1.TenantFindRequest{ - Id: &wrapperspb.StringValue{Value: t.Tenant.Meta.Id}, + Id: pointer.Pointer(t.Tenant.Meta.Id), } tfrsi, err := c.Tenant().Find(ctx, tfrqi) if err != nil { diff --git a/pkg/service/project.go b/pkg/service/project.go index f7daf57..fee9372 100644 --- a/pkg/service/project.go +++ b/pkg/service/project.go @@ -49,8 +49,8 @@ func (s *projectService) Create(ctx context.Context, req *v1.ProjectCreateReques } // Check if tenant defines project quotas - if tenant.GetQuotas() != nil && tenant.GetQuotas().GetProject() != nil && tenant.GetQuotas().GetProject().GetQuota() != nil { - maxProjects := tenant.GetQuotas().GetProject().GetQuota().GetValue() + if tenant.GetQuotas() != nil && tenant.GetQuotas().GetProject() != nil && tenant.GetQuotas().GetProject().GetQuota() != 0 { + maxProjects := tenant.GetQuotas().GetProject().GetQuota() filter := make(map[string]any) filter["project ->> 'tenant_id'"] = project.GetTenantId() projects, _, err := s.projectStore.Find(ctx, filter, nil) @@ -100,16 +100,16 @@ func (s *projectService) GetHistory(ctx context.Context, req *v1.ProjectGetHisto func (s *projectService) Find(ctx context.Context, req *v1.ProjectFindRequest) (*v1.ProjectListResponse, error) { filter := make(map[string]any) if req.Id != nil { - filter["id"] = req.Id.GetValue() + filter["id"] = req.Id } if req.Name != nil { - filter["project ->> 'name'"] = req.Name.GetValue() + filter["project ->> 'name'"] = req.Name } if req.Description != nil { - filter["project ->> 'description'"] = req.Description.GetValue() + filter["project ->> 'description'"] = req.Description } if req.TenantId != nil { - filter["project ->> 'tenant_id'"] = req.TenantId.GetValue() + filter["project ->> 'tenant_id'"] = req.TenantId } for key, value := range req.Annotations { // select * from project where project -> 'meta' -> 'annotations' ->> 'metal-stack.io/admitted' = 'true'; diff --git a/pkg/service/project_test.go b/pkg/service/project_test.go index efe2f5e..082b3a0 100644 --- a/pkg/service/project_test.go +++ b/pkg/service/project_test.go @@ -4,11 +4,11 @@ import ( "context" v1 "github.com/metal-stack/masterdata-api/api/v1" + "github.com/metal-stack/metal-lib/pkg/pointer" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" - "google.golang.org/protobuf/types/known/wrapperspb" "testing" @@ -64,7 +64,7 @@ func TestCreateProjectWithQuotaCheck(t *testing.T) { t1 := &v1.Tenant{ Quotas: &v1.QuotaSet{ Project: &v1.Quota{ - Quota: &wrapperspb.Int32Value{Value: 2}, + Quota: pointer.Pointer(int32(2)), }, }, } @@ -182,10 +182,10 @@ func TestFindProjectByID(t *testing.T) { // filter by id f1 := make(map[string]any) tfr := &v1.ProjectFindRequest{ - Id: &wrapperspb.StringValue{Value: "p5"}, + Id: pointer.Pointer("p5"), } - f1["id"] = "p5" + f1["id"] = pointer.Pointer("p5") storageMock.On("Find", ctx, f1, mock.AnythingOfType("*v1.Paging")).Return(t5s, nil, nil) resp, err := ts.Find(ctx, tfr) require.NoError(t, err) @@ -205,11 +205,11 @@ func TestFindProjectByName(t *testing.T) { // filter by name var t6s []*v1.Project tfr := &v1.ProjectFindRequest{ - Name: &wrapperspb.StringValue{Value: "Sixth"}, + Name: pointer.Pointer("Sixth"), } f2 := make(map[string]any) - f2["project ->> 'name'"] = "Sixth" + f2["project ->> 'name'"] = pointer.Pointer("Sixth") storageMock.On("Find", ctx, f2, mock.AnythingOfType("*v1.Paging")).Return(t6s, nil, nil) resp, err := ts.Find(ctx, tfr) require.NoError(t, err) @@ -229,11 +229,11 @@ func TestFindProjectByTenant(t *testing.T) { // filter by name var t6s []*v1.Project tfr := &v1.ProjectFindRequest{ - TenantId: &wrapperspb.StringValue{Value: "p1"}, + TenantId: pointer.Pointer("p1"), } f2 := make(map[string]any) - f2["project ->> 'tenant_id'"] = "p1" + f2["project ->> 'tenant_id'"] = pointer.Pointer("p1") storageMock.On("Find", ctx, f2, mock.AnythingOfType("*v1.Paging")).Return(t6s, nil, nil) resp, err := ts.Find(ctx, tfr) require.NoError(t, err) diff --git a/pkg/service/tenant.go b/pkg/service/tenant.go index b8f0f51..a119360 100644 --- a/pkg/service/tenant.go +++ b/pkg/service/tenant.go @@ -73,10 +73,10 @@ func (s *tenantService) GetHistory(ctx context.Context, req *v1.TenantGetHistory func (s *tenantService) Find(ctx context.Context, req *v1.TenantFindRequest) (*v1.TenantListResponse, error) { filter := make(map[string]any) if req.Id != nil { - filter["id"] = req.GetId().GetValue() + filter["id"] = req.GetId() } if req.Name != nil { - filter["tenant ->> 'name'"] = req.GetName().GetValue() + filter["tenant ->> 'name'"] = req.GetName() } for key, value := range req.Annotations { // select * from tenants where tenant -> 'meta' -> 'annotations' ->> 'metal-stack.io/admitted' = 'true'; diff --git a/pkg/service/tenant_test.go b/pkg/service/tenant_test.go index 8f9da76..9f6575a 100644 --- a/pkg/service/tenant_test.go +++ b/pkg/service/tenant_test.go @@ -5,10 +5,10 @@ import ( "os" v1 "github.com/metal-stack/masterdata-api/api/v1" + "github.com/metal-stack/metal-lib/pkg/pointer" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" - "google.golang.org/protobuf/types/known/wrapperspb" "testing" @@ -139,7 +139,7 @@ func TestFindTenantByID(t *testing.T) { // filter by id f1 := make(map[string]any) tfr := &v1.TenantFindRequest{ - Id: &wrapperspb.StringValue{Value: "t5"}, + Id: pointer.Pointer("t5"), } f1["id"] = "t5" @@ -160,7 +160,7 @@ func TestFindTenantByName(t *testing.T) { // filter by name var t6s []*v1.Tenant tfr := &v1.TenantFindRequest{ - Name: &wrapperspb.StringValue{Value: "Fifth"}, + Name: pointer.Pointer("Fifth"), } f2 := make(map[string]any) diff --git a/proto/v1/iam.proto b/proto/v1/iam.proto index 2272a2d..6b20b30 100644 --- a/proto/v1/iam.proto +++ b/proto/v1/iam.proto @@ -2,8 +2,6 @@ syntax = "proto3"; package v1; -import "google/protobuf/wrappers.proto"; - message IAMConfig { IssuerConfig issuer_config = 1; IDMConfig idm_config = 2; @@ -56,8 +54,7 @@ message ConnectorConfig { string idm_access_code = 5; string idm_customer_id = 6; string idm_group_ou = 7; - // optional - google.protobuf.StringValue idm_groupname_template = 8; + optional string idm_groupname_template = 8; string idm_domain_name = 9; string idm_tenant_prefix = 10; diff --git a/proto/v1/project.proto b/proto/v1/project.proto index 93902bd..7e16407 100644 --- a/proto/v1/project.proto +++ b/proto/v1/project.proto @@ -3,7 +3,6 @@ syntax = "proto3"; package v1; import "google/protobuf/timestamp.proto"; -import "google/protobuf/wrappers.proto"; import "v1/common.proto"; import "v1/meta.proto"; import "v1/quota.proto"; @@ -48,10 +47,10 @@ message ProjectGetHistoryRequest { } message ProjectFindRequest { - google.protobuf.StringValue id = 1; - google.protobuf.StringValue name = 2; - google.protobuf.StringValue description = 3; - google.protobuf.StringValue tenant_id = 4; + optional string id = 1; + optional string name = 2; + optional string description = 3; + optional string tenant_id = 4; Paging paging = 5; map annotations = 6; } diff --git a/proto/v1/quota.proto b/proto/v1/quota.proto index 83a4049..1c7504f 100644 --- a/proto/v1/quota.proto +++ b/proto/v1/quota.proto @@ -2,8 +2,6 @@ syntax = "proto3"; package v1; -import "google/protobuf/wrappers.proto"; - // QuotaSet defines the types of possible Quotas // might be specified by project or tenant // whatever quota is reached first counts @@ -22,5 +20,5 @@ message QuotaSet { // Quota is the actual maximum amount message Quota { // quota is the maximum amount for the current QuotaSet, can be nil - google.protobuf.Int32Value quota = 1; + optional int32 quota = 1; } diff --git a/proto/v1/tenant.proto b/proto/v1/tenant.proto index 028f697..acb3ca5 100644 --- a/proto/v1/tenant.proto +++ b/proto/v1/tenant.proto @@ -3,7 +3,6 @@ syntax = "proto3"; package v1; import "google/protobuf/timestamp.proto"; -import "google/protobuf/wrappers.proto"; import "v1/common.proto"; import "v1/iam.proto"; import "v1/meta.proto"; @@ -49,8 +48,8 @@ message TenantGetHistoryRequest { } message TenantFindRequest { - google.protobuf.StringValue id = 1; - google.protobuf.StringValue name = 2; + optional string id = 1; + optional string name = 2; Paging paging = 3; map annotations = 4; } From e0a45baec6dd501783a1987aa093950f0acffc0d Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Mon, 8 Jul 2024 16:13:44 +0200 Subject: [PATCH 02/39] Update deps --- go.mod | 50 +++++++++++++------------ go.sum | 116 +++++++++++++++++++++++++++++---------------------------- 2 files changed, 86 insertions(+), 80 deletions(-) diff --git a/go.mod b/go.mod index 047b008..33c1f80 100644 --- a/go.mod +++ b/go.mod @@ -12,17 +12,17 @@ require ( github.com/json-iterator/go v1.1.12 github.com/lib/pq v1.10.9 github.com/lopezator/migrator v0.3.1 - github.com/metal-stack/metal-lib v0.16.3 + github.com/metal-stack/metal-lib v0.17.1 github.com/metal-stack/security v0.8.0 github.com/metal-stack/v v1.0.3 github.com/prometheus/client_golang v1.19.1 - github.com/spf13/cobra v1.8.0 + github.com/spf13/cobra v1.8.1 github.com/spf13/viper v1.19.0 github.com/stretchr/testify v1.9.0 - github.com/testcontainers/testcontainers-go v0.31.0 - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0 - go.opentelemetry.io/otel/trace v1.27.0 - google.golang.org/grpc v1.64.0 + github.com/testcontainers/testcontainers-go v0.32.0 + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0 + go.opentelemetry.io/otel/trace v1.28.0 + google.golang.org/grpc v1.65.0 google.golang.org/protobuf v1.34.2 sigs.k8s.io/yaml v1.4.0 ) @@ -31,19 +31,20 @@ require ( dario.cat/mergo v1.0.0 // indirect github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect - github.com/Microsoft/hcsshim v0.12.3 // indirect + github.com/Microsoft/hcsshim v0.12.4 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/containerd/containerd v1.7.17 // indirect + github.com/containerd/containerd v1.7.19 // indirect github.com/containerd/log v0.1.0 // indirect + github.com/containerd/platforms v0.2.1 // indirect github.com/coreos/go-oidc/v3 v3.10.0 // indirect github.com/cpuguy83/dockercfg v0.3.1 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect github.com/distribution/reference v0.6.0 // indirect - github.com/docker/docker v26.1.3+incompatible // indirect + github.com/docker/docker v27.0.3+incompatible // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect @@ -64,14 +65,14 @@ require ( github.com/icza/dyno v0.0.0-20230330125955-09f820a8d9c0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/josharian/intern v1.0.0 // indirect - github.com/klauspost/compress v1.17.8 // indirect + github.com/klauspost/compress v1.17.9 // indirect github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect github.com/lestrrat-go/blackmagic v1.0.2 // indirect github.com/lestrrat-go/httpcc v1.0.1 // indirect github.com/lestrrat-go/httprc v1.0.5 // indirect github.com/lestrrat-go/iter v1.0.2 // indirect - github.com/lestrrat-go/jwx/v2 v2.0.21 // indirect + github.com/lestrrat-go/jwx/v2 v2.1.0 // indirect github.com/lestrrat-go/option v1.0.1 // indirect github.com/lufia/plan9stats v0.0.0-20240513124658-fba389f38bae // indirect github.com/magiconair/properties v1.8.7 // indirect @@ -85,6 +86,7 @@ require ( github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/morikuni/aec v1.0.0 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/oklog/ulid v1.3.1 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0 // indirect @@ -93,9 +95,9 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.53.0 // indirect + github.com/prometheus/common v0.55.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect - github.com/sagikazarmark/locafero v0.4.0 // indirect + github.com/sagikazarmark/locafero v0.6.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/segmentio/asm v1.2.0 // indirect github.com/shirou/gopsutil/v3 v3.24.5 // indirect @@ -110,19 +112,19 @@ require ( github.com/tklauser/go-sysconf v0.3.14 // indirect github.com/tklauser/numcpus v0.8.0 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect - go.mongodb.org/mongo-driver v1.15.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.52.0 // indirect - go.opentelemetry.io/otel v1.27.0 // indirect - go.opentelemetry.io/otel/metric v1.27.0 // indirect + go.mongodb.org/mongo-driver v1.16.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 // indirect + go.opentelemetry.io/otel v1.28.0 // indirect + go.opentelemetry.io/otel/metric v1.28.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.23.0 // indirect - golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc // indirect - golang.org/x/net v0.25.0 // indirect - golang.org/x/oauth2 v0.20.0 // indirect + golang.org/x/crypto v0.25.0 // indirect + golang.org/x/exp v0.0.0-20240707233637-46b078467d37 // indirect + golang.org/x/net v0.27.0 // indirect + golang.org/x/oauth2 v0.21.0 // indirect golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.20.0 // indirect - golang.org/x/text v0.15.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 // indirect + golang.org/x/sys v0.22.0 // indirect + golang.org/x/text v0.16.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240708134159-654c5fe759df // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index e0d1181..10e18e7 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= -cloud.google.com/go/compute v1.25.1 h1:ZRpHJedLtTpKgr3RV1Fx23NuaAEN1Zfx9hw1u4aJdjU= +cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg= cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= @@ -14,8 +14,8 @@ github.com/Masterminds/squirrel v1.5.4 h1:uUcX/aBc8O7Fg9kaISIUsHXdKuqehiXAMQTYX8 github.com/Masterminds/squirrel v1.5.4/go.mod h1:NNaOrjSoIDfDA40n7sr2tPNZRfjzjA400rg+riTZj10= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= -github.com/Microsoft/hcsshim v0.12.3 h1:LS9NXqXhMoqNCplK1ApmVSfB4UnVLRDWRapB6EIlxE0= -github.com/Microsoft/hcsshim v0.12.3/go.mod h1:Iyl1WVpZzr+UkzjekHZbV8o5Z9ZkxNGx6CtY2Qg/JVQ= +github.com/Microsoft/hcsshim v0.12.4 h1:Ev7YUMHAHoWNm+aDSPzc5W9s6E2jyL1szpVDJeZ/Rr4= +github.com/Microsoft/hcsshim v0.12.4/go.mod h1:Iyl1WVpZzr+UkzjekHZbV8o5Z9ZkxNGx6CtY2Qg/JVQ= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -24,15 +24,17 @@ github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK3 github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/containerd/containerd v1.7.17 h1:KjNnn0+tAVQHAoaWRjmdak9WlvnFR/8rU1CHHy8Rm2A= -github.com/containerd/containerd v1.7.17/go.mod h1:vK+hhT4TIv2uejlcDlbVIc8+h/BqtKLIyNrtCZol8lI= +github.com/containerd/containerd v1.7.19 h1:/xQ4XRJ0tamDkdzrrBAUy/LE5nCcxFKdBm4EcPrSMEE= +github.com/containerd/containerd v1.7.19/go.mod h1:h4FtNYUUMB4Phr6v+xG89RYKj9XccvbNSCKjdufCrkc= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= +github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= +github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= github.com/coreos/go-oidc/v3 v3.10.0 h1:tDnXHnLyiTVyT/2zLDGj09pFPkhND8Gl8lnTRhoEaJU= github.com/coreos/go-oidc/v3 v3.10.0/go.mod h1:5j11xcw0D3+SGxn6Z/WFADsgcWVMyNAlSQupk0KK3ac= github.com/cpuguy83/dockercfg v0.3.1 h1:/FpZ+JaygUR/lZP2NlFI2DVfrOEMAIKP5wWEJdoYe9E= github.com/cpuguy83/dockercfg v0.3.1/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= -github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -43,8 +45,8 @@ github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnN github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/docker v26.1.3+incompatible h1:lLCzRbrVZrljpVNobJu1J2FHk8V0s4BawoZippkc+xo= -github.com/docker/docker v26.1.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v27.0.3+incompatible h1:aBGI9TeQ4MPlhquTQKq9XbK79rKFVwXNUAYz9aXyEBE= +github.com/docker/docker v27.0.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= @@ -137,8 +139,8 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= -github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -155,8 +157,8 @@ github.com/lestrrat-go/httprc v1.0.5 h1:bsTfiH8xaKOJPrg1R+E3iE/AWZr/x0Phj9PBTG/O github.com/lestrrat-go/httprc v1.0.5/go.mod h1:mwwz3JMTPBjHUkkDv/IGJ39aALInZLrhBp0X7KGUZlo= github.com/lestrrat-go/iter v1.0.2 h1:gMXo1q4c2pHmC3dn8LzRhJfP1ceCbgSiT9lUydIzltI= github.com/lestrrat-go/iter v1.0.2/go.mod h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4= -github.com/lestrrat-go/jwx/v2 v2.0.21 h1:jAPKupy4uHgrHFEdjVjNkUgoBKtVDgrQPB/h55FHrR0= -github.com/lestrrat-go/jwx/v2 v2.0.21/go.mod h1:09mLW8zto6bWL9GbwnqAli+ArLf+5M33QLQPDggkUWM= +github.com/lestrrat-go/jwx/v2 v2.1.0 h1:0zs7Ya6+39qoit7gwAf+cYm1zzgS3fceIdo7RmQ5lkw= +github.com/lestrrat-go/jwx/v2 v2.1.0/go.mod h1:Xpw9QIaUGiIUD1Wx0NcY1sIHwFf8lDuZn/cmxtXYRys= github.com/lestrrat-go/option v1.0.1 h1:oAzP2fvZGQKWkvHa1/SAcFolBEca1oN+mQ7eooNBEYU= github.com/lestrrat-go/option v1.0.1/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= @@ -171,8 +173,8 @@ github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0 github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= -github.com/metal-stack/metal-lib v0.16.3 h1:xJr6P9GauQK49aoFH0bFyye5kRGmt87PomokulUm4Go= -github.com/metal-stack/metal-lib v0.16.3/go.mod h1:nyNGI4DZFOcWbSoq2Y6V3SHpFxuXBIqYBZHTb6cy//s= +github.com/metal-stack/metal-lib v0.17.1 h1:JLa4wJ62dgxtY9UOLF+QDk10/i/W5vhzrv8RsundDUY= +github.com/metal-stack/metal-lib v0.17.1/go.mod h1:nyNGI4DZFOcWbSoq2Y6V3SHpFxuXBIqYBZHTb6cy//s= github.com/metal-stack/security v0.8.0 h1:tVaSDB9m5clwYrnLyaXfPy7mQlJTnmeoHscG+RUy/xo= github.com/metal-stack/security v0.8.0/go.mod h1:7GAcQb+pOgflW30ohJygxpqc3i0dQ2ahGJK1CU5tqa0= github.com/metal-stack/v v1.0.3 h1:Sh2oBlnxrCUD+mVpzfC8HiqL045YWkxs0gpTvkjppqs= @@ -196,6 +198,8 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= @@ -215,15 +219,15 @@ github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQ github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE= -github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U= +github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= +github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= -github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= +github.com/sagikazarmark/locafero v0.6.0 h1:ON7AQg37yzcRPU69mt7gwhFEBwxI6P9T4Qu3N51bwOk= +github.com/sagikazarmark/locafero v0.6.0/go.mod h1:77OmuIc6VTraTXKXIs/uvUxKGUXjE1GbemJYHqdNjX0= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys= @@ -242,8 +246,8 @@ github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= -github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= -github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= @@ -264,8 +268,8 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= -github.com/testcontainers/testcontainers-go v0.31.0 h1:W0VwIhcEVhRflwL9as3dhY6jXjVCA27AkmbnZ+UTh3U= -github.com/testcontainers/testcontainers-go v0.31.0/go.mod h1:D2lAoA0zUFiSY+eAflqK5mcUx/A5hrrORaEQrd0SefI= +github.com/testcontainers/testcontainers-go v0.32.0 h1:ug1aK08L3gCHdhknlTTwWjPHPS+/alvLJU/DRxTD/ME= +github.com/testcontainers/testcontainers-go v0.32.0/go.mod h1:CRHrzHLQhlXUsa5gXjTOfqIEJcrK5+xMDmBr/WMI88E= github.com/tklauser/go-sysconf v0.3.14 h1:g5vzr9iPFFz24v2KZXs/pvpvh8/V9Fw6vQK5ZZb78yU= github.com/tklauser/go-sysconf v0.3.14/go.mod h1:1ym4lWMLUOhuBOPGtRcJm7tEGX4SCYNEEEtghGG/8uY= github.com/tklauser/numcpus v0.8.0 h1:Mx4Wwe/FjZLeQsK/6kt2EOepwwSl7SmJrK5bV/dXYgY= @@ -274,24 +278,24 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -go.mongodb.org/mongo-driver v1.15.0 h1:rJCKC8eEliewXjZGf0ddURtl7tTVy1TK3bfl0gkUSLc= -go.mongodb.org/mongo-driver v1.15.0/go.mod h1:Vzb0Mk/pa7e6cWw85R4F/endUC3u0U9jGcNU603k65c= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0 h1:vS1Ao/R55RNV4O7TA2Qopok8yN+X0LIP6RVWLFkprck= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0/go.mod h1:BMsdeOxN04K0L5FNUBfjFdvwWGNe/rkmSwH4Aelu/X0= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.52.0 h1:9l89oX4ba9kHbBol3Xin3leYJ+252h0zszDtBwyKe2A= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.52.0/go.mod h1:XLZfZboOJWHNKUv7eH0inh0E9VV6eWDFB/9yJyTLPp0= -go.opentelemetry.io/otel v1.27.0 h1:9BZoF3yMK/O1AafMiQTVu0YDj5Ea4hPhxCs7sGva+cg= -go.opentelemetry.io/otel v1.27.0/go.mod h1:DMpAK8fzYRzs+bi3rS5REupisuqTheUlSZJ1WnZaPAQ= +go.mongodb.org/mongo-driver v1.16.0 h1:tpRsfBJMROVHKpdGyc1BBEzzjDUWjItxbVSZ8Ls4BQ4= +go.mongodb.org/mongo-driver v1.16.0/go.mod h1:oB6AhJQvFQL4LEHyXi6aJzQJtBiTQHiAd83l0GdFaiw= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0 h1:9G6E0TXzGFVfTnawRzrPl83iHOAV7L8NJiR8RSGYV1g= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0/go.mod h1:azvtTADFQJA8mX80jIH/akaE7h+dbm/sVuaHqN13w74= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 h1:4K4tsIXefpVJtvA/8srF4V4y0akAoPHkIslgAkjixJA= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0/go.mod h1:jjdQuTGVsXV4vSs+CJ2qYDeDPf9yIJV23qlIzBm73Vg= +go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= +go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 h1:Mne5On7VWdx7omSrSSZvM4Kw7cS7NQkOOmLcgscI51U= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0/go.mod h1:IPtUMKL4O3tH5y+iXVyAXqpAwMuzC1IrxVS81rummfE= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0 h1:IeMeyr1aBvBiPVYihXIaeIZba6b8E1bYp7lbdxK8CQg= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0/go.mod h1:oVdCUtjq9MK9BlS7TtucsQwUcXcymNiEDjgDD2jMtZU= -go.opentelemetry.io/otel/metric v1.27.0 h1:hvj3vdEKyeCi4YaYfNjv2NUje8FqKqUY8IlF0FxV/ik= -go.opentelemetry.io/otel/metric v1.27.0/go.mod h1:mVFgmRlhljgBiuk/MP/oKylr4hs85GZAylncepAX/ak= +go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6bOeuA5Q= +go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s= go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw= go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= -go.opentelemetry.io/otel/trace v1.27.0 h1:IqYb813p7cmbHk0a5y6pD5JPakbVfftRXABGt5/Rscw= -go.opentelemetry.io/otel/trace v1.27.0/go.mod h1:6RiD1hkAprV4/q+yd2ln1HG9GoPx39SuvvstaLBl+l4= +go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g= +go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI= go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= @@ -299,20 +303,20 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= -golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc h1:O9NuF4s+E/PvMIy+9IUZB9znFwUIXEWSstNjek6VpVg= -golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= +golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= +golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= +golang.org/x/exp v0.0.0-20240707233637-46b078467d37 h1:uLDX+AfeFCct3a2C7uIWBKMJIR3CJMhcgfrUAqjRK6w= +golang.org/x/exp v0.0.0-20240707233637-46b078467d37/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= -golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo= -golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= +golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= +golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= +golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -326,14 +330,14 @@ golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= -golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= -golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= +golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= -golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -345,12 +349,12 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 h1:9+tzLLstTlPTRyJTh+ah5wIMsBW5c4tQwGTN3thOW9Y= -google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 h1:RFiFrvy37/mpSpdySBDrUdipW/dHwsRwh3J3+A9VgT4= -google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237/go.mod h1:Z5Iiy3jtmioajWHDGFk7CeugTyHtPvMHA4UTmUkyalE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 h1:Zy9XzmMEflZ/MAaA7vNcoebnRAld7FsPW1EeBB7V0m8= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= -google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY= -google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= +google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 h1:7whR9kGa5LUwFtpLm2ArCEejtnxlGeLbAyjFY8sGNFw= +google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157/go.mod h1:99sLkeliLXfdj2J75X3Ho+rrVCaJze0uwN7zDDkjPVU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240708134159-654c5fe759df h1:1hd19gecsv95iOnZ1xzz0Jg9dxFFrWsMOHWWqEvvCGk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240708134159-654c5fe759df/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= +google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -363,7 +367,7 @@ gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools/v3 v3.5.0 h1:Ljk6PdHdOhAb5aDMWXjDLMMhph+BpztA4v1QdqEW2eY= -gotest.tools/v3 v3.5.0/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= +gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= +gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= From 41e9b426b09505f8b1b828972a3e21dfd5fef792 Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Wed, 10 Jul 2024 12:40:54 +0200 Subject: [PATCH 03/39] Updates --- go.mod | 6 +++--- go.sum | 12 ++++++------ proto/Makefile | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/go.mod b/go.mod index 33c1f80..f45bf60 100644 --- a/go.mod +++ b/go.mod @@ -39,7 +39,7 @@ require ( github.com/containerd/containerd v1.7.19 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/coreos/go-oidc/v3 v3.10.0 // indirect + github.com/coreos/go-oidc/v3 v3.11.0 // indirect github.com/cpuguy83/dockercfg v0.3.1 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect @@ -49,7 +49,7 @@ require ( github.com/docker/go-units v0.5.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect - github.com/go-jose/go-jose/v4 v4.0.2 // indirect + github.com/go-jose/go-jose/v4 v4.0.3 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.3.0 // indirect @@ -124,7 +124,7 @@ require ( golang.org/x/sync v0.7.0 // indirect golang.org/x/sys v0.22.0 // indirect golang.org/x/text v0.16.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240708134159-654c5fe759df // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index 10e18e7..7116224 100644 --- a/go.sum +++ b/go.sum @@ -30,8 +30,8 @@ github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/coreos/go-oidc/v3 v3.10.0 h1:tDnXHnLyiTVyT/2zLDGj09pFPkhND8Gl8lnTRhoEaJU= -github.com/coreos/go-oidc/v3 v3.10.0/go.mod h1:5j11xcw0D3+SGxn6Z/WFADsgcWVMyNAlSQupk0KK3ac= +github.com/coreos/go-oidc/v3 v3.11.0 h1:Ia3MxdwpSw702YW0xgfmP1GVCMA9aEFWu12XUZ3/OtI= +github.com/coreos/go-oidc/v3 v3.11.0/go.mod h1:gE3LgjOgFoHi9a4ce4/tJczr0Ai2/BoDhf0r5lltWI0= github.com/cpuguy83/dockercfg v0.3.1 h1:/FpZ+JaygUR/lZP2NlFI2DVfrOEMAIKP5wWEJdoYe9E= github.com/cpuguy83/dockercfg v0.3.1/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= @@ -57,8 +57,8 @@ github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHk github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= -github.com/go-jose/go-jose/v4 v4.0.2 h1:R3l3kkBds16bO7ZFAEEcofK0MkrAJt3jlJznWZG0nvk= -github.com/go-jose/go-jose/v4 v4.0.2/go.mod h1:WVf9LFMHh/QVrmqrOfqun0C45tMe3RoiKJMPvgWwLfY= +github.com/go-jose/go-jose/v4 v4.0.3 h1:o8aphO8Hv6RPmH+GfzVuyf7YXSBibp+8YyHdOoDESGo= +github.com/go-jose/go-jose/v4 v4.0.3/go.mod h1:NKb5HO1EZccyMpiZNbdUw/14tiXNyUJh188dfnMCAfc= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -351,8 +351,8 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 h1:9+tzLLstTlPTRyJTh+ah5wIMsBW5c4tQwGTN3thOW9Y= google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 h1:7whR9kGa5LUwFtpLm2ArCEejtnxlGeLbAyjFY8sGNFw= google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157/go.mod h1:99sLkeliLXfdj2J75X3Ho+rrVCaJze0uwN7zDDkjPVU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240708134159-654c5fe759df h1:1hd19gecsv95iOnZ1xzz0Jg9dxFFrWsMOHWWqEvvCGk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240708134159-654c5fe759df/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5 h1:SbSDUWW1PAO24TNpLdeheoYPd7kllICcLU52x6eD4kQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= diff --git a/proto/Makefile b/proto/Makefile index cfe40c8..3cf8454 100644 --- a/proto/Makefile +++ b/proto/Makefile @@ -1,5 +1,5 @@ MAKEFLAGS += --no-print-directory -BUF_VERSION := 1.32.2 +BUF_VERSION := 1.34.0 _buf: docker run --rm \ From 89bde65d62e309666a95465bc3d4a0de4468d5e1 Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Wed, 2 Oct 2024 16:27:37 +0200 Subject: [PATCH 04/39] Updates --- Dockerfile | 7 +- Makefile | 4 +- api/v1/mocks/ProjectMemberServiceClient.go | 2 +- api/v1/mocks/ProjectMemberServiceServer.go | 2 +- api/v1/mocks/ProjectServiceClient.go | 2 +- api/v1/mocks/ProjectServiceServer.go | 2 +- api/v1/mocks/TenantMemberServiceClient.go | 2 +- api/v1/mocks/TenantMemberServiceServer.go | 2 +- api/v1/mocks/TenantServiceClient.go | 2 +- api/v1/mocks/TenantServiceServer.go | 2 +- .../mocks/UnsafeProjectMemberServiceServer.go | 2 +- api/v1/mocks/UnsafeProjectServiceServer.go | 2 +- .../mocks/UnsafeTenantMemberServiceServer.go | 2 +- api/v1/mocks/UnsafeTenantServiceServer.go | 2 +- go.mod | 48 ++++---- go.sum | 112 +++++++++--------- pkg/datastore/mocks/Entity.go | 2 +- pkg/datastore/mocks/Storage.go | 12 +- proto/Makefile | 2 +- proto/buf.yaml | 4 +- 20 files changed, 106 insertions(+), 109 deletions(-) diff --git a/Dockerfile b/Dockerfile index 56492ec..d2f27c3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,12 @@ -FROM alpine:3.20 as health-downloader -ENV GRPC_HEALTH_PROBE_VERSION=v0.4.28 \ +FROM alpine:3.20 AS health-downloader +ENV GRPC_HEALTH_PROBE_VERSION=v0.4.34 \ GRPC_HEALTH_PROBE_URL=https://github.com/grpc-ecosystem/grpc-health-probe/releases/download RUN apk -U add curl \ && curl -fLso /bin/grpc_health_probe \ ${GRPC_HEALTH_PROBE_URL}/${GRPC_HEALTH_PROBE_VERSION}/grpc_health_probe-linux-amd64 \ && chmod +x /bin/grpc_health_probe -FROM alpine:3.20 -RUN apk -U add ca-certificates +FROM gcr.io/distroless/static-debian12 COPY --from=health-downloader /bin/grpc_health_probe /bin/grpc_health_probe COPY bin/server /masterdata-api CMD ["/masterdata-api"] diff --git a/Makefile b/Makefile index 71a4500..36bb70b 100644 --- a/Makefile +++ b/Makefile @@ -59,13 +59,13 @@ mocks: --user $$(id -u):$$(id -g) \ -w /work \ -v ${PWD}:/work \ - vektra/mockery:v2.42.0 -r --keeptree --dir api/v1 --output api/v1/mocks --all + vektra/mockery:v2.46.1 -r --keeptree --dir api/v1 --output api/v1/mocks --all docker run --rm \ --user $$(id -u):$$(id -g) \ -w /work \ -v ${PWD}:/work \ - vektra/mockery:v2.42.0 -r --keeptree --dir pkg/datastore --output pkg/datastore/mocks --all + vektra/mockery:v2.46.1 -r --keeptree --dir pkg/datastore --output pkg/datastore/mocks --all .PHONY: postgres-up postgres-up: postgres-rm diff --git a/api/v1/mocks/ProjectMemberServiceClient.go b/api/v1/mocks/ProjectMemberServiceClient.go index 7477e87..4622f66 100644 --- a/api/v1/mocks/ProjectMemberServiceClient.go +++ b/api/v1/mocks/ProjectMemberServiceClient.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.42.0. DO NOT EDIT. +// Code generated by mockery v2.46.1. DO NOT EDIT. package mocks diff --git a/api/v1/mocks/ProjectMemberServiceServer.go b/api/v1/mocks/ProjectMemberServiceServer.go index db5c15c..a056830 100644 --- a/api/v1/mocks/ProjectMemberServiceServer.go +++ b/api/v1/mocks/ProjectMemberServiceServer.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.42.0. DO NOT EDIT. +// Code generated by mockery v2.46.1. DO NOT EDIT. package mocks diff --git a/api/v1/mocks/ProjectServiceClient.go b/api/v1/mocks/ProjectServiceClient.go index a321fdf..f01ec9d 100644 --- a/api/v1/mocks/ProjectServiceClient.go +++ b/api/v1/mocks/ProjectServiceClient.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.42.0. DO NOT EDIT. +// Code generated by mockery v2.46.1. DO NOT EDIT. package mocks diff --git a/api/v1/mocks/ProjectServiceServer.go b/api/v1/mocks/ProjectServiceServer.go index e6a943c..982d265 100644 --- a/api/v1/mocks/ProjectServiceServer.go +++ b/api/v1/mocks/ProjectServiceServer.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.42.0. DO NOT EDIT. +// Code generated by mockery v2.46.1. DO NOT EDIT. package mocks diff --git a/api/v1/mocks/TenantMemberServiceClient.go b/api/v1/mocks/TenantMemberServiceClient.go index 913c0e3..4b5d31a 100644 --- a/api/v1/mocks/TenantMemberServiceClient.go +++ b/api/v1/mocks/TenantMemberServiceClient.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.42.0. DO NOT EDIT. +// Code generated by mockery v2.46.1. DO NOT EDIT. package mocks diff --git a/api/v1/mocks/TenantMemberServiceServer.go b/api/v1/mocks/TenantMemberServiceServer.go index 9ec40fa..edb2c41 100644 --- a/api/v1/mocks/TenantMemberServiceServer.go +++ b/api/v1/mocks/TenantMemberServiceServer.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.42.0. DO NOT EDIT. +// Code generated by mockery v2.46.1. DO NOT EDIT. package mocks diff --git a/api/v1/mocks/TenantServiceClient.go b/api/v1/mocks/TenantServiceClient.go index 3889d47..8ede445 100644 --- a/api/v1/mocks/TenantServiceClient.go +++ b/api/v1/mocks/TenantServiceClient.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.42.0. DO NOT EDIT. +// Code generated by mockery v2.46.1. DO NOT EDIT. package mocks diff --git a/api/v1/mocks/TenantServiceServer.go b/api/v1/mocks/TenantServiceServer.go index d4fe1c9..a5fa606 100644 --- a/api/v1/mocks/TenantServiceServer.go +++ b/api/v1/mocks/TenantServiceServer.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.42.0. DO NOT EDIT. +// Code generated by mockery v2.46.1. DO NOT EDIT. package mocks diff --git a/api/v1/mocks/UnsafeProjectMemberServiceServer.go b/api/v1/mocks/UnsafeProjectMemberServiceServer.go index 19520e9..89cee62 100644 --- a/api/v1/mocks/UnsafeProjectMemberServiceServer.go +++ b/api/v1/mocks/UnsafeProjectMemberServiceServer.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.42.0. DO NOT EDIT. +// Code generated by mockery v2.46.1. DO NOT EDIT. package mocks diff --git a/api/v1/mocks/UnsafeProjectServiceServer.go b/api/v1/mocks/UnsafeProjectServiceServer.go index b789e9b..312a3c4 100644 --- a/api/v1/mocks/UnsafeProjectServiceServer.go +++ b/api/v1/mocks/UnsafeProjectServiceServer.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.42.0. DO NOT EDIT. +// Code generated by mockery v2.46.1. DO NOT EDIT. package mocks diff --git a/api/v1/mocks/UnsafeTenantMemberServiceServer.go b/api/v1/mocks/UnsafeTenantMemberServiceServer.go index db49c13..4ebc2bd 100644 --- a/api/v1/mocks/UnsafeTenantMemberServiceServer.go +++ b/api/v1/mocks/UnsafeTenantMemberServiceServer.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.42.0. DO NOT EDIT. +// Code generated by mockery v2.46.1. DO NOT EDIT. package mocks diff --git a/api/v1/mocks/UnsafeTenantServiceServer.go b/api/v1/mocks/UnsafeTenantServiceServer.go index 5af5a04..6071321 100644 --- a/api/v1/mocks/UnsafeTenantServiceServer.go +++ b/api/v1/mocks/UnsafeTenantServiceServer.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.42.0. DO NOT EDIT. +// Code generated by mockery v2.46.1. DO NOT EDIT. package mocks diff --git a/go.mod b/go.mod index 6ff0332..1d4f4bf 100644 --- a/go.mod +++ b/go.mod @@ -12,17 +12,17 @@ require ( github.com/json-iterator/go v1.1.12 github.com/lib/pq v1.10.9 github.com/lopezator/migrator v0.3.1 - github.com/metal-stack/metal-lib v0.18.1 + github.com/metal-stack/metal-lib v0.18.3 github.com/metal-stack/security v0.8.1 github.com/metal-stack/v v1.0.3 - github.com/prometheus/client_golang v1.20.2 + github.com/prometheus/client_golang v1.20.4 github.com/spf13/cobra v1.8.1 github.com/spf13/viper v1.19.0 github.com/stretchr/testify v1.9.0 github.com/testcontainers/testcontainers-go v0.33.0 - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 - go.opentelemetry.io/otel/trace v1.29.0 - google.golang.org/grpc v1.66.0 + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.55.0 + go.opentelemetry.io/otel/trace v1.30.0 + google.golang.org/grpc v1.67.1 google.golang.org/protobuf v1.34.2 sigs.k8s.io/yaml v1.4.0 ) @@ -39,11 +39,11 @@ require ( github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect github.com/coreos/go-oidc/v3 v3.11.0 // indirect - github.com/cpuguy83/dockercfg v0.3.1 // indirect + github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect github.com/distribution/reference v0.6.0 // indirect - github.com/docker/docker v27.2.0+incompatible // indirect + github.com/docker/docker v27.3.1+incompatible // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect @@ -64,7 +64,7 @@ require ( github.com/icza/dyno v0.0.0-20230330125955-09f820a8d9c0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/josharian/intern v1.0.0 // indirect - github.com/klauspost/compress v1.17.9 // indirect + github.com/klauspost/compress v1.17.10 // indirect github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect github.com/lestrrat-go/blackmagic v1.0.2 // indirect @@ -73,7 +73,7 @@ require ( github.com/lestrrat-go/iter v1.0.2 // indirect github.com/lestrrat-go/jwx/v2 v2.1.1 // indirect github.com/lestrrat-go/option v1.0.1 // indirect - github.com/lufia/plan9stats v0.0.0-20240819163618-b1d8f4d146e7 // indirect + github.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect @@ -95,9 +95,9 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.57.0 // indirect + github.com/prometheus/common v0.60.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect - github.com/rogpeppe/go-internal v1.12.0 // indirect + github.com/rogpeppe/go-internal v1.13.1 // indirect github.com/sagikazarmark/locafero v0.6.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/segmentio/asm v1.2.0 // indirect @@ -113,21 +113,21 @@ require ( github.com/tklauser/go-sysconf v0.3.14 // indirect github.com/tklauser/numcpus v0.8.0 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect - go.mongodb.org/mongo-driver v1.16.1 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 // indirect - go.opentelemetry.io/otel v1.29.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.29.0 // indirect - go.opentelemetry.io/otel/metric v1.29.0 // indirect - go.opentelemetry.io/otel/sdk v1.29.0 // indirect + go.mongodb.org/mongo-driver v1.17.1 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.55.0 // indirect + go.opentelemetry.io/otel v1.30.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.30.0 // indirect + go.opentelemetry.io/otel/metric v1.30.0 // indirect + go.opentelemetry.io/otel/sdk v1.30.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.26.0 // indirect - golang.org/x/exp v0.0.0-20240823005443-9b4947da3948 // indirect - golang.org/x/net v0.28.0 // indirect - golang.org/x/oauth2 v0.22.0 // indirect + golang.org/x/crypto v0.27.0 // indirect + golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect + golang.org/x/net v0.29.0 // indirect + golang.org/x/oauth2 v0.23.0 // indirect golang.org/x/sync v0.8.0 // indirect - golang.org/x/sys v0.24.0 // indirect - golang.org/x/text v0.17.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240827150818-7e3bb234dfed // indirect + golang.org/x/sys v0.25.0 // indirect + golang.org/x/text v0.18.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240930140551-af27646dc61f // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index 203ba6a..cb1d999 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,7 @@ cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg= -cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= -cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= +cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= @@ -28,8 +28,8 @@ github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpS github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= github.com/coreos/go-oidc/v3 v3.11.0 h1:Ia3MxdwpSw702YW0xgfmP1GVCMA9aEFWu12XUZ3/OtI= github.com/coreos/go-oidc/v3 v3.11.0/go.mod h1:gE3LgjOgFoHi9a4ce4/tJczr0Ai2/BoDhf0r5lltWI0= -github.com/cpuguy83/dockercfg v0.3.1 h1:/FpZ+JaygUR/lZP2NlFI2DVfrOEMAIKP5wWEJdoYe9E= -github.com/cpuguy83/dockercfg v0.3.1/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= +github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= +github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= @@ -41,8 +41,8 @@ github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnN github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/docker v27.2.0+incompatible h1:Rk9nIVdfH3+Vz4cyI/uhbINhEZ/oLmc+CBXmH6fbNk4= -github.com/docker/docker v27.2.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v27.3.1+incompatible h1:KttF0XoteNTicmUtBO0L2tP+J7FGRFTjaEF4k6WdhfI= +github.com/docker/docker v27.3.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= @@ -135,8 +135,8 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= -github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.17.10 h1:oXAz+Vh0PMUvJczoi+flxpnBEPxoER1IaAnU/NMPtT0= +github.com/klauspost/compress v1.17.10/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -163,16 +163,16 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lopezator/migrator v0.3.1 h1:ZFPT6aC7+nGWkqhleynABZ6ftycSf6hmHHLOaryq1Og= github.com/lopezator/migrator v0.3.1/go.mod h1:X+lHDMZ9Ci3/KdbypJcQYFFwipVrJsX4fRCQ4QLauYk= -github.com/lufia/plan9stats v0.0.0-20240819163618-b1d8f4d146e7 h1:5RK988zAqB3/AN3opGfRpoQgAVqr6/A5+qRTi67VUZY= -github.com/lufia/plan9stats v0.0.0-20240819163618-b1d8f4d146e7/go.mod h1:ilwx/Dta8jXAgpFYFvSWEMwxmbWXyiUHkd5FwyKhb5k= +github.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683 h1:7UMa6KCCMjZEMDtTVdcGu0B1GmmC7QJKiCCjyTAWQy0= +github.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683/go.mod h1:ilwx/Dta8jXAgpFYFvSWEMwxmbWXyiUHkd5FwyKhb5k= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= -github.com/metal-stack/metal-lib v0.18.1 h1:Kjmf/Z/6pWemR8O6ttbNPQ9PjeT3ON60sBNu51Lgi1M= -github.com/metal-stack/metal-lib v0.18.1/go.mod h1:GJjipRpHmpd2vjBtsaw9gGk5ZFan7NlShyjIsTdY1x4= +github.com/metal-stack/metal-lib v0.18.3 h1:bovFiJPB9SMvuGLqcXVWz6jFB8HrdzwnCX7TFlen4r0= +github.com/metal-stack/metal-lib v0.18.3/go.mod h1:Ctyi6zaXFr2NVrQZLFsDLnFCzupKnYErTtgRFKAsnbw= github.com/metal-stack/security v0.8.1 h1:4zmVUxZvDWShVvVIxM3XhIv7pTmPe9DvACRIHW6YTsk= github.com/metal-stack/security v0.8.1/go.mod h1:OO8ZilZO6fUV5QEmwc7HP/RAjqYrGQxXoYIddJ9TvqE= github.com/metal-stack/v v1.0.3 h1:Sh2oBlnxrCUD+mVpzfC8HiqL045YWkxs0gpTvkjppqs= @@ -215,16 +215,16 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -github.com/prometheus/client_golang v1.20.2 h1:5ctymQzZlyOON1666svgwn3s6IKWgfbjsejTMiXIyjg= -github.com/prometheus/client_golang v1.20.2/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.20.4 h1:Tgh3Yr67PaOv/uTqloMsCEdeuFTatm5zIq5+qNN23vI= +github.com/prometheus/client_golang v1.20.4/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.57.0 h1:Ro/rKjwdq9mZn1K5QPctzh+MA4Lp0BuYk5ZZEVhoNcY= -github.com/prometheus/common v0.57.0/go.mod h1:7uRPFSUTbfZWsJ7MHY56sqt7hLQu3bxXHDnNhl8E9qI= +github.com/prometheus/common v0.60.0 h1:+V9PAREWNvJMAuJ1x1BaWl9dewMW4YrHZQbx0sJNllA= +github.com/prometheus/common v0.60.0/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= -github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sagikazarmark/locafero v0.6.0 h1:ON7AQg37yzcRPU69mt7gwhFEBwxI6P9T4Qu3N51bwOk= github.com/sagikazarmark/locafero v0.6.0/go.mod h1:77OmuIc6VTraTXKXIs/uvUxKGUXjE1GbemJYHqdNjX0= @@ -274,24 +274,24 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -go.mongodb.org/mongo-driver v1.16.1 h1:rIVLL3q0IHM39dvE+z2ulZLp9ENZKThVfuvN/IiN4l8= -go.mongodb.org/mongo-driver v1.16.1/go.mod h1:oB6AhJQvFQL4LEHyXi6aJzQJtBiTQHiAd83l0GdFaiw= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 h1:r6I7RJCN86bpD/FQwedZ0vSixDpwuWREjW9oRMsmqDc= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0/go.mod h1:B9yO6b04uB80CzjedvewuqDhxJxi11s7/GtiGa8bAjI= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 h1:TT4fX+nBOA/+LUkobKGW1ydGcn+G3vRw9+g5HwCphpk= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0/go.mod h1:L7UH0GbB0p47T4Rri3uHjbpCFYrVrwc1I25QhNPiGK8= -go.opentelemetry.io/otel v1.29.0 h1:PdomN/Al4q/lN6iBJEN3AwPvUiHPMlt93c8bqTG5Llw= -go.opentelemetry.io/otel v1.29.0/go.mod h1:N/WtXPs1CNCUEx+Agz5uouwCba+i+bJGFicT8SR4NP8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.29.0 h1:dIIDULZJpgdiHz5tXrTgKIMLkus6jEFa7x5SOKcyR7E= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.29.0/go.mod h1:jlRVBe7+Z1wyxFSUs48L6OBQZ5JwH2Hg/Vbl+t9rAgI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.29.0 h1:JAv0Jwtl01UFiyWZEMiJZBiTlv5A50zNs8lsthXqIio= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.29.0/go.mod h1:QNKLmUEAq2QUbPQUfvw4fmv0bgbK7UlOSFCnXyfvSNc= -go.opentelemetry.io/otel/metric v1.29.0 h1:vPf/HFWTNkPu1aYeIsc98l4ktOQaL6LeSoeV2g+8YLc= -go.opentelemetry.io/otel/metric v1.29.0/go.mod h1:auu/QWieFVWx+DmQOUMgj0F8LHWdgalxXqvp7BII/W8= -go.opentelemetry.io/otel/sdk v1.29.0 h1:vkqKjk7gwhS8VaWb0POZKmIEDimRCMsopNYnriHyryo= -go.opentelemetry.io/otel/sdk v1.29.0/go.mod h1:pM8Dx5WKnvxLCb+8lG1PRNIDxu9g9b9g59Qr7hfAAok= -go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt39JTi4= -go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ= +go.mongodb.org/mongo-driver v1.17.1 h1:Wic5cJIwJgSpBhe3lx3+/RybR5PiYRMpVFgO7cOHyIM= +go.mongodb.org/mongo-driver v1.17.1/go.mod h1:wwWm/+BuOddhcq3n68LKRmgk2wXzmF6s0SFOa0GINL4= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.55.0 h1:hCq2hNMwsegUvPzI7sPOvtO9cqyy5GbWt/Ybp2xrx8Q= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.55.0/go.mod h1:LqaApwGx/oUmzsbqxkzuBvyoPpkxk3JQWnqfVrJ3wCA= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.55.0 h1:ZIg3ZT/aQ7AfKqdwp7ECpOK6vHqquXXuyTjIO8ZdmPs= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.55.0/go.mod h1:DQAwmETtZV00skUwgD6+0U89g80NKsJE3DCKeLLPQMI= +go.opentelemetry.io/otel v1.30.0 h1:F2t8sK4qf1fAmY9ua4ohFS/K+FUuOPemHUIXHtktrts= +go.opentelemetry.io/otel v1.30.0/go.mod h1:tFw4Br9b7fOS+uEao81PJjVMjW/5fvNCbpsDIXqP0pc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.30.0 h1:lsInsfvhVIfOI6qHVyysXMNDnjO9Npvl7tlDPJFBVd4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.30.0/go.mod h1:KQsVNh4OjgjTG0G6EiNi1jVpnaeeKsKMRwbLN+f1+8M= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.30.0 h1:umZgi92IyxfXd/l4kaDhnKgY8rnN/cZcF1LKc6I8OQ8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.30.0/go.mod h1:4lVs6obhSVRb1EW5FhOuBTyiQhtRtAnnva9vD3yRfq8= +go.opentelemetry.io/otel/metric v1.30.0 h1:4xNulvn9gjzo4hjg+wzIKG7iNFEaBMX00Qd4QIZs7+w= +go.opentelemetry.io/otel/metric v1.30.0/go.mod h1:aXTfST94tswhWEb+5QjlSqG+cZlmyXy/u8jFpor3WqQ= +go.opentelemetry.io/otel/sdk v1.30.0 h1:cHdik6irO49R5IysVhdn8oaiR9m8XluDaJAs4DfOrYE= +go.opentelemetry.io/otel/sdk v1.30.0/go.mod h1:p14X4Ok8S+sygzblytT1nqG98QG2KYKv++HE0LY/mhg= +go.opentelemetry.io/otel/trace v1.30.0 h1:7UBkkYzeg3C7kQX8VAidWh2biiQbtAKjyIML8dQ9wmc= +go.opentelemetry.io/otel/trace v1.30.0/go.mod h1:5EyKqTzzmyqB9bwtCCq6pDLktPK6fmGf/Dph+8VI02o= go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= @@ -299,20 +299,20 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw= -golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= -golang.org/x/exp v0.0.0-20240823005443-9b4947da3948 h1:kx6Ds3MlpiUHKj7syVnbp57++8WpuKPcR5yjLBjvLEA= -golang.org/x/exp v0.0.0-20240823005443-9b4947da3948/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ= +golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= +golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= +golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= +golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= -golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= -golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA= -golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= +golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= +golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= +golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -326,14 +326,14 @@ golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg= -golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= -golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= +golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= +golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.24.0 h1:Mh5cbb+Zk2hqqXNO7S1iTjEphVL+jb8ZWaqh/g+JWkM= +golang.org/x/term v0.24.0/go.mod h1:lOBK/LVxemqiMij05LGJ0tzNr8xlmwBRJ81PX6wVLH8= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= -golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= +golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -345,12 +345,12 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 h1:9+tzLLstTlPTRyJTh+ah5wIMsBW5c4tQwGTN3thOW9Y= -google.golang.org/genproto/googleapis/api v0.0.0-20240822170219-fc7c04adadcd h1:BBOTEWLuuEGQy9n1y9MhVJ9Qt0BDu21X8qZs71/uPZo= -google.golang.org/genproto/googleapis/api v0.0.0-20240822170219-fc7c04adadcd/go.mod h1:fO8wJzT2zbQbAjbIoos1285VfEIYKDDY+Dt+WpTkh6g= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240827150818-7e3bb234dfed h1:J6izYgfBXAI3xTKLgxzTmUltdYaLsuBxFCgDHWJ/eXg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240827150818-7e3bb234dfed/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= -google.golang.org/grpc v1.66.0 h1:DibZuoBznOxbDQxRINckZcUvnCEvrW9pcWIE2yF9r1c= -google.golang.org/grpc v1.66.0/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= +google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= +google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240930140551-af27646dc61f h1:cUMEy+8oS78BWIH9OWazBkzbr090Od9tWBNtZHkOhf0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240930140551-af27646dc61f/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= +google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/pkg/datastore/mocks/Entity.go b/pkg/datastore/mocks/Entity.go index 955037e..ef94192 100644 --- a/pkg/datastore/mocks/Entity.go +++ b/pkg/datastore/mocks/Entity.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.42.0. DO NOT EDIT. +// Code generated by mockery v2.46.1. DO NOT EDIT. package mocks diff --git a/pkg/datastore/mocks/Storage.go b/pkg/datastore/mocks/Storage.go index 7a14db8..b9fe029 100644 --- a/pkg/datastore/mocks/Storage.go +++ b/pkg/datastore/mocks/Storage.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.42.0. DO NOT EDIT. +// Code generated by mockery v2.46.1. DO NOT EDIT. package mocks @@ -80,7 +80,7 @@ func (_m *Storage[E]) DeleteAll(ctx context.Context, ids ...string) error { } // Find provides a mock function with given fields: ctx, filter, paging -func (_m *Storage[E]) Find(ctx context.Context, filter map[string]interface{}, paging *v1.Paging) ([]E, *uint64, error) { +func (_m *Storage[E]) Find(ctx context.Context, filter map[string]any, paging *v1.Paging) ([]E, *uint64, error) { ret := _m.Called(ctx, filter, paging) if len(ret) == 0 { @@ -90,10 +90,10 @@ func (_m *Storage[E]) Find(ctx context.Context, filter map[string]interface{}, p var r0 []E var r1 *uint64 var r2 error - if rf, ok := ret.Get(0).(func(context.Context, map[string]interface{}, *v1.Paging) ([]E, *uint64, error)); ok { + if rf, ok := ret.Get(0).(func(context.Context, map[string]any, *v1.Paging) ([]E, *uint64, error)); ok { return rf(ctx, filter, paging) } - if rf, ok := ret.Get(0).(func(context.Context, map[string]interface{}, *v1.Paging) []E); ok { + if rf, ok := ret.Get(0).(func(context.Context, map[string]any, *v1.Paging) []E); ok { r0 = rf(ctx, filter, paging) } else { if ret.Get(0) != nil { @@ -101,7 +101,7 @@ func (_m *Storage[E]) Find(ctx context.Context, filter map[string]interface{}, p } } - if rf, ok := ret.Get(1).(func(context.Context, map[string]interface{}, *v1.Paging) *uint64); ok { + if rf, ok := ret.Get(1).(func(context.Context, map[string]any, *v1.Paging) *uint64); ok { r1 = rf(ctx, filter, paging) } else { if ret.Get(1) != nil { @@ -109,7 +109,7 @@ func (_m *Storage[E]) Find(ctx context.Context, filter map[string]interface{}, p } } - if rf, ok := ret.Get(2).(func(context.Context, map[string]interface{}, *v1.Paging) error); ok { + if rf, ok := ret.Get(2).(func(context.Context, map[string]any, *v1.Paging) error); ok { r2 = rf(ctx, filter, paging) } else { r2 = ret.Error(2) diff --git a/proto/Makefile b/proto/Makefile index 39452ac..4f27806 100644 --- a/proto/Makefile +++ b/proto/Makefile @@ -1,5 +1,5 @@ MAKEFLAGS += --no-print-directory -BUF_VERSION := 1.39.0 +BUF_VERSION := 1.43.0 _buf: docker run --rm \ diff --git a/proto/buf.yaml b/proto/buf.yaml index a1d6c63..f49e32b 100644 --- a/proto/buf.yaml +++ b/proto/buf.yaml @@ -1,10 +1,8 @@ version: v2 lint: use: - - DEFAULT + - STANDARD except: - - FIELD_NOT_REQUIRED - - PACKAGE_NO_IMPORT_CYCLE - PACKAGE_VERSION_SUFFIX - RPC_REQUEST_RESPONSE_UNIQUE - RPC_REQUEST_STANDARD_NAME From c6f61036dedd99a353aeb6de56badf114c8c4616 Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Sat, 26 Oct 2024 10:47:27 +0200 Subject: [PATCH 05/39] update deps again --- api/v1/common.pb.go | 26 +-- api/v1/iam.pb.go | 114 ++--------- api/v1/meta.pb.go | 26 +-- api/v1/project.pb.go | 202 ++++--------------- api/v1/project_member.pb.go | 180 ++++------------- api/v1/quota.pb.go | 48 +---- api/v1/tenant.pb.go | 378 +++++++----------------------------- api/v1/tenant_member.pb.go | 180 ++++------------- deploy/masterdata-api.yaml | 2 +- go.mod | 44 ++--- go.sum | 100 +++++----- pkg/gen/genscanvaluer.go | 2 +- proto/Makefile | 2 +- proto/buf.gen.yaml | 2 +- 14 files changed, 288 insertions(+), 1018 deletions(-) diff --git a/api/v1/common.pb.go b/api/v1/common.pb.go index 16cd3f6..2d39994 100644 --- a/api/v1/common.pb.go +++ b/api/v1/common.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: v1/common.proto @@ -34,11 +34,9 @@ type Paging struct { func (x *Paging) Reset() { *x = Paging{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_common_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_common_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Paging) String() string { @@ -49,7 +47,7 @@ func (*Paging) ProtoMessage() {} func (x *Paging) ProtoReflect() protoreflect.Message { mi := &file_v1_common_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -126,20 +124,6 @@ func file_v1_common_proto_init() { if File_v1_common_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_v1_common_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Paging); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_v1_common_proto_msgTypes[0].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ diff --git a/api/v1/iam.pb.go b/api/v1/iam.pb.go index ce1e112..8597181 100644 --- a/api/v1/iam.pb.go +++ b/api/v1/iam.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: v1/iam.proto @@ -32,11 +32,9 @@ type IAMConfig struct { func (x *IAMConfig) Reset() { *x = IAMConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_iam_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_iam_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *IAMConfig) String() string { @@ -47,7 +45,7 @@ func (*IAMConfig) ProtoMessage() {} func (x *IAMConfig) ProtoReflect() protoreflect.Message { mi := &file_v1_iam_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -94,11 +92,9 @@ type IssuerConfig struct { func (x *IssuerConfig) Reset() { *x = IssuerConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_iam_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_iam_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *IssuerConfig) String() string { @@ -109,7 +105,7 @@ func (*IssuerConfig) ProtoMessage() {} func (x *IssuerConfig) ProtoReflect() protoreflect.Message { mi := &file_v1_iam_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -151,11 +147,9 @@ type IDMConfig struct { func (x *IDMConfig) Reset() { *x = IDMConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_iam_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_iam_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *IDMConfig) String() string { @@ -166,7 +160,7 @@ func (*IDMConfig) ProtoMessage() {} func (x *IDMConfig) ProtoReflect() protoreflect.Message { mi := &file_v1_iam_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -219,11 +213,9 @@ type NamespaceGroupConfig struct { func (x *NamespaceGroupConfig) Reset() { *x = NamespaceGroupConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_iam_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_iam_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NamespaceGroupConfig) String() string { @@ -234,7 +226,7 @@ func (*NamespaceGroupConfig) ProtoMessage() {} func (x *NamespaceGroupConfig) ProtoReflect() protoreflect.Message { mi := &file_v1_iam_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -310,11 +302,9 @@ type ConnectorConfig struct { func (x *ConnectorConfig) Reset() { *x = ConnectorConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_iam_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_iam_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ConnectorConfig) String() string { @@ -325,7 +315,7 @@ func (*ConnectorConfig) ProtoMessage() {} func (x *ConnectorConfig) ProtoReflect() protoreflect.Message { mi := &file_v1_iam_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -575,68 +565,6 @@ func file_v1_iam_proto_init() { if File_v1_iam_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_v1_iam_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*IAMConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_iam_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*IssuerConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_iam_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*IDMConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_iam_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*NamespaceGroupConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_iam_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*ConnectorConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_v1_iam_proto_msgTypes[4].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ diff --git a/api/v1/meta.pb.go b/api/v1/meta.pb.go index 1900c36..c390af4 100644 --- a/api/v1/meta.pb.go +++ b/api/v1/meta.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: v1/meta.proto @@ -38,11 +38,9 @@ type Meta struct { func (x *Meta) Reset() { *x = Meta{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_meta_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_meta_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Meta) String() string { @@ -53,7 +51,7 @@ func (*Meta) ProtoMessage() {} func (x *Meta) ProtoReflect() protoreflect.Message { mi := &file_v1_meta_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -197,20 +195,6 @@ func file_v1_meta_proto_init() { if File_v1_meta_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_v1_meta_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Meta); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/api/v1/project.pb.go b/api/v1/project.pb.go index d5cd160..f49e390 100644 --- a/api/v1/project.pb.go +++ b/api/v1/project.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: v1/project.proto @@ -36,11 +36,9 @@ type Project struct { func (x *Project) Reset() { *x = Project{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_project_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_project_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Project) String() string { @@ -51,7 +49,7 @@ func (*Project) ProtoMessage() {} func (x *Project) ProtoReflect() protoreflect.Message { mi := &file_v1_project_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -111,11 +109,9 @@ type ProjectCreateRequest struct { func (x *ProjectCreateRequest) Reset() { *x = ProjectCreateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_project_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_project_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProjectCreateRequest) String() string { @@ -126,7 +122,7 @@ func (*ProjectCreateRequest) ProtoMessage() {} func (x *ProjectCreateRequest) ProtoReflect() protoreflect.Message { mi := &file_v1_project_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -158,11 +154,9 @@ type ProjectUpdateRequest struct { func (x *ProjectUpdateRequest) Reset() { *x = ProjectUpdateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_project_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_project_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProjectUpdateRequest) String() string { @@ -173,7 +167,7 @@ func (*ProjectUpdateRequest) ProtoMessage() {} func (x *ProjectUpdateRequest) ProtoReflect() protoreflect.Message { mi := &file_v1_project_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -205,11 +199,9 @@ type ProjectDeleteRequest struct { func (x *ProjectDeleteRequest) Reset() { *x = ProjectDeleteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_project_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_project_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProjectDeleteRequest) String() string { @@ -220,7 +212,7 @@ func (*ProjectDeleteRequest) ProtoMessage() {} func (x *ProjectDeleteRequest) ProtoReflect() protoreflect.Message { mi := &file_v1_project_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -252,11 +244,9 @@ type ProjectGetRequest struct { func (x *ProjectGetRequest) Reset() { *x = ProjectGetRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_project_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_project_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProjectGetRequest) String() string { @@ -267,7 +257,7 @@ func (*ProjectGetRequest) ProtoMessage() {} func (x *ProjectGetRequest) ProtoReflect() protoreflect.Message { mi := &file_v1_project_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -300,11 +290,9 @@ type ProjectGetHistoryRequest struct { func (x *ProjectGetHistoryRequest) Reset() { *x = ProjectGetHistoryRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_project_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_project_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProjectGetHistoryRequest) String() string { @@ -315,7 +303,7 @@ func (*ProjectGetHistoryRequest) ProtoMessage() {} func (x *ProjectGetHistoryRequest) ProtoReflect() protoreflect.Message { mi := &file_v1_project_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -359,11 +347,9 @@ type ProjectFindRequest struct { func (x *ProjectFindRequest) Reset() { *x = ProjectFindRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_project_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_project_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProjectFindRequest) String() string { @@ -374,7 +360,7 @@ func (*ProjectFindRequest) ProtoMessage() {} func (x *ProjectFindRequest) ProtoReflect() protoreflect.Message { mi := &file_v1_project_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -441,11 +427,9 @@ type ProjectResponse struct { func (x *ProjectResponse) Reset() { *x = ProjectResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_project_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_project_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProjectResponse) String() string { @@ -456,7 +440,7 @@ func (*ProjectResponse) ProtoMessage() {} func (x *ProjectResponse) ProtoReflect() protoreflect.Message { mi := &file_v1_project_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -490,11 +474,9 @@ type ProjectListResponse struct { func (x *ProjectListResponse) Reset() { *x = ProjectListResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_project_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_project_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProjectListResponse) String() string { @@ -505,7 +487,7 @@ func (*ProjectListResponse) ProtoMessage() {} func (x *ProjectListResponse) ProtoReflect() protoreflect.Message { mi := &file_v1_project_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -703,116 +685,6 @@ func file_v1_project_proto_init() { file_v1_common_proto_init() file_v1_meta_proto_init() file_v1_quota_proto_init() - if !protoimpl.UnsafeEnabled { - file_v1_project_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Project); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_project_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*ProjectCreateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_project_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ProjectUpdateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_project_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*ProjectDeleteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_project_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*ProjectGetRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_project_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*ProjectGetHistoryRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_project_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*ProjectFindRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_project_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*ProjectResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_project_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*ProjectListResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_v1_project_proto_msgTypes[6].OneofWrappers = []any{} file_v1_project_proto_msgTypes[8].OneofWrappers = []any{} type x struct{} diff --git a/api/v1/project_member.pb.go b/api/v1/project_member.pb.go index 687c18c..a27bc4e 100644 --- a/api/v1/project_member.pb.go +++ b/api/v1/project_member.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: v1/project_member.proto @@ -33,11 +33,9 @@ type ProjectMember struct { func (x *ProjectMember) Reset() { *x = ProjectMember{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_project_member_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_project_member_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProjectMember) String() string { @@ -48,7 +46,7 @@ func (*ProjectMember) ProtoMessage() {} func (x *ProjectMember) ProtoReflect() protoreflect.Message { mi := &file_v1_project_member_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -94,11 +92,9 @@ type ProjectMemberCreateRequest struct { func (x *ProjectMemberCreateRequest) Reset() { *x = ProjectMemberCreateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_project_member_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_project_member_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProjectMemberCreateRequest) String() string { @@ -109,7 +105,7 @@ func (*ProjectMemberCreateRequest) ProtoMessage() {} func (x *ProjectMemberCreateRequest) ProtoReflect() protoreflect.Message { mi := &file_v1_project_member_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -141,11 +137,9 @@ type ProjectMemberUpdateRequest struct { func (x *ProjectMemberUpdateRequest) Reset() { *x = ProjectMemberUpdateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_project_member_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_project_member_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProjectMemberUpdateRequest) String() string { @@ -156,7 +150,7 @@ func (*ProjectMemberUpdateRequest) ProtoMessage() {} func (x *ProjectMemberUpdateRequest) ProtoReflect() protoreflect.Message { mi := &file_v1_project_member_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -188,11 +182,9 @@ type ProjectMemberDeleteRequest struct { func (x *ProjectMemberDeleteRequest) Reset() { *x = ProjectMemberDeleteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_project_member_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_project_member_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProjectMemberDeleteRequest) String() string { @@ -203,7 +195,7 @@ func (*ProjectMemberDeleteRequest) ProtoMessage() {} func (x *ProjectMemberDeleteRequest) ProtoReflect() protoreflect.Message { mi := &file_v1_project_member_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -235,11 +227,9 @@ type ProjectMemberGetRequest struct { func (x *ProjectMemberGetRequest) Reset() { *x = ProjectMemberGetRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_project_member_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_project_member_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProjectMemberGetRequest) String() string { @@ -250,7 +240,7 @@ func (*ProjectMemberGetRequest) ProtoMessage() {} func (x *ProjectMemberGetRequest) ProtoReflect() protoreflect.Message { mi := &file_v1_project_member_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -284,11 +274,9 @@ type ProjectMemberFindRequest struct { func (x *ProjectMemberFindRequest) Reset() { *x = ProjectMemberFindRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_project_member_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_project_member_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProjectMemberFindRequest) String() string { @@ -299,7 +287,7 @@ func (*ProjectMemberFindRequest) ProtoMessage() {} func (x *ProjectMemberFindRequest) ProtoReflect() protoreflect.Message { mi := &file_v1_project_member_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -345,11 +333,9 @@ type ProjectMemberResponse struct { func (x *ProjectMemberResponse) Reset() { *x = ProjectMemberResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_project_member_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_project_member_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProjectMemberResponse) String() string { @@ -360,7 +346,7 @@ func (*ProjectMemberResponse) ProtoMessage() {} func (x *ProjectMemberResponse) ProtoReflect() protoreflect.Message { mi := &file_v1_project_member_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -392,11 +378,9 @@ type ProjectMemberListResponse struct { func (x *ProjectMemberListResponse) Reset() { *x = ProjectMemberListResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_project_member_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_project_member_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProjectMemberListResponse) String() string { @@ -407,7 +391,7 @@ func (*ProjectMemberListResponse) ProtoMessage() {} func (x *ProjectMemberListResponse) ProtoReflect() protoreflect.Message { mi := &file_v1_project_member_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -574,104 +558,6 @@ func file_v1_project_member_proto_init() { return } file_v1_meta_proto_init() - if !protoimpl.UnsafeEnabled { - file_v1_project_member_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*ProjectMember); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_project_member_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*ProjectMemberCreateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_project_member_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ProjectMemberUpdateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_project_member_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*ProjectMemberDeleteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_project_member_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*ProjectMemberGetRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_project_member_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*ProjectMemberFindRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_project_member_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*ProjectMemberResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_project_member_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*ProjectMemberListResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_v1_project_member_proto_msgTypes[5].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ diff --git a/api/v1/quota.pb.go b/api/v1/quota.pb.go index 2eca12f..7054871 100644 --- a/api/v1/quota.pb.go +++ b/api/v1/quota.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: v1/quota.proto @@ -41,11 +41,9 @@ type QuotaSet struct { func (x *QuotaSet) Reset() { *x = QuotaSet{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_quota_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_quota_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *QuotaSet) String() string { @@ -56,7 +54,7 @@ func (*QuotaSet) ProtoMessage() {} func (x *QuotaSet) ProtoReflect() protoreflect.Message { mi := &file_v1_quota_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -111,11 +109,9 @@ type Quota struct { func (x *Quota) Reset() { *x = Quota{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_quota_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_quota_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Quota) String() string { @@ -126,7 +122,7 @@ func (*Quota) ProtoMessage() {} func (x *Quota) ProtoReflect() protoreflect.Message { mi := &file_v1_quota_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -208,32 +204,6 @@ func file_v1_quota_proto_init() { if File_v1_quota_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_v1_quota_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*QuotaSet); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_quota_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*Quota); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_v1_quota_proto_msgTypes[1].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ diff --git a/api/v1/tenant.pb.go b/api/v1/tenant.pb.go index e063e74..a89da06 100644 --- a/api/v1/tenant.pb.go +++ b/api/v1/tenant.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: v1/tenant.proto @@ -32,11 +32,9 @@ type FindParticipatingProjectsRequest struct { func (x *FindParticipatingProjectsRequest) Reset() { *x = FindParticipatingProjectsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_tenant_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_tenant_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FindParticipatingProjectsRequest) String() string { @@ -47,7 +45,7 @@ func (*FindParticipatingProjectsRequest) ProtoMessage() {} func (x *FindParticipatingProjectsRequest) ProtoReflect() protoreflect.Message { mi := &file_v1_tenant_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -87,11 +85,9 @@ type FindParticipatingTenantsRequest struct { func (x *FindParticipatingTenantsRequest) Reset() { *x = FindParticipatingTenantsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_tenant_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_tenant_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FindParticipatingTenantsRequest) String() string { @@ -102,7 +98,7 @@ func (*FindParticipatingTenantsRequest) ProtoMessage() {} func (x *FindParticipatingTenantsRequest) ProtoReflect() protoreflect.Message { mi := &file_v1_tenant_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -142,11 +138,9 @@ type ListTenantMembersRequest struct { func (x *ListTenantMembersRequest) Reset() { *x = ListTenantMembersRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_tenant_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_tenant_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListTenantMembersRequest) String() string { @@ -157,7 +151,7 @@ func (*ListTenantMembersRequest) ProtoMessage() {} func (x *ListTenantMembersRequest) ProtoReflect() protoreflect.Message { mi := &file_v1_tenant_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -196,11 +190,9 @@ type ListTenantMembersResponse struct { func (x *ListTenantMembersResponse) Reset() { *x = ListTenantMembersResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_tenant_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_tenant_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListTenantMembersResponse) String() string { @@ -211,7 +203,7 @@ func (*ListTenantMembersResponse) ProtoMessage() {} func (x *ListTenantMembersResponse) ProtoReflect() protoreflect.Message { mi := &file_v1_tenant_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -243,11 +235,9 @@ type FindParticipatingProjectsResponse struct { func (x *FindParticipatingProjectsResponse) Reset() { *x = FindParticipatingProjectsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_tenant_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_tenant_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FindParticipatingProjectsResponse) String() string { @@ -258,7 +248,7 @@ func (*FindParticipatingProjectsResponse) ProtoMessage() {} func (x *FindParticipatingProjectsResponse) ProtoReflect() protoreflect.Message { mi := &file_v1_tenant_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -290,11 +280,9 @@ type FindParticipatingTenantsResponse struct { func (x *FindParticipatingTenantsResponse) Reset() { *x = FindParticipatingTenantsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_tenant_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_tenant_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FindParticipatingTenantsResponse) String() string { @@ -305,7 +293,7 @@ func (*FindParticipatingTenantsResponse) ProtoMessage() {} func (x *FindParticipatingTenantsResponse) ProtoReflect() protoreflect.Message { mi := &file_v1_tenant_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -339,11 +327,9 @@ type ProjectWithMembershipAnnotations struct { func (x *ProjectWithMembershipAnnotations) Reset() { *x = ProjectWithMembershipAnnotations{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_tenant_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_tenant_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProjectWithMembershipAnnotations) String() string { @@ -354,7 +340,7 @@ func (*ProjectWithMembershipAnnotations) ProtoMessage() {} func (x *ProjectWithMembershipAnnotations) ProtoReflect() protoreflect.Message { mi := &file_v1_tenant_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -402,11 +388,9 @@ type TenantWithMembershipAnnotations struct { func (x *TenantWithMembershipAnnotations) Reset() { *x = TenantWithMembershipAnnotations{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_tenant_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_tenant_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TenantWithMembershipAnnotations) String() string { @@ -417,7 +401,7 @@ func (*TenantWithMembershipAnnotations) ProtoMessage() {} func (x *TenantWithMembershipAnnotations) ProtoReflect() protoreflect.Message { mi := &file_v1_tenant_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -468,11 +452,9 @@ type Tenant struct { func (x *Tenant) Reset() { *x = Tenant{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_tenant_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_tenant_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Tenant) String() string { @@ -483,7 +465,7 @@ func (*Tenant) ProtoMessage() {} func (x *Tenant) ProtoReflect() protoreflect.Message { mi := &file_v1_tenant_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -550,11 +532,9 @@ type TenantCreateRequest struct { func (x *TenantCreateRequest) Reset() { *x = TenantCreateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_tenant_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_tenant_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TenantCreateRequest) String() string { @@ -565,7 +545,7 @@ func (*TenantCreateRequest) ProtoMessage() {} func (x *TenantCreateRequest) ProtoReflect() protoreflect.Message { mi := &file_v1_tenant_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -597,11 +577,9 @@ type TenantUpdateRequest struct { func (x *TenantUpdateRequest) Reset() { *x = TenantUpdateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_tenant_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_tenant_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TenantUpdateRequest) String() string { @@ -612,7 +590,7 @@ func (*TenantUpdateRequest) ProtoMessage() {} func (x *TenantUpdateRequest) ProtoReflect() protoreflect.Message { mi := &file_v1_tenant_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -644,11 +622,9 @@ type TenantDeleteRequest struct { func (x *TenantDeleteRequest) Reset() { *x = TenantDeleteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_tenant_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_tenant_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TenantDeleteRequest) String() string { @@ -659,7 +635,7 @@ func (*TenantDeleteRequest) ProtoMessage() {} func (x *TenantDeleteRequest) ProtoReflect() protoreflect.Message { mi := &file_v1_tenant_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -691,11 +667,9 @@ type TenantGetRequest struct { func (x *TenantGetRequest) Reset() { *x = TenantGetRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_tenant_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_tenant_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TenantGetRequest) String() string { @@ -706,7 +680,7 @@ func (*TenantGetRequest) ProtoMessage() {} func (x *TenantGetRequest) ProtoReflect() protoreflect.Message { mi := &file_v1_tenant_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -739,11 +713,9 @@ type TenantGetHistoryRequest struct { func (x *TenantGetHistoryRequest) Reset() { *x = TenantGetHistoryRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_tenant_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_tenant_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TenantGetHistoryRequest) String() string { @@ -754,7 +726,7 @@ func (*TenantGetHistoryRequest) ProtoMessage() {} func (x *TenantGetHistoryRequest) ProtoReflect() protoreflect.Message { mi := &file_v1_tenant_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -796,11 +768,9 @@ type TenantFindRequest struct { func (x *TenantFindRequest) Reset() { *x = TenantFindRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_tenant_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_tenant_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TenantFindRequest) String() string { @@ -811,7 +781,7 @@ func (*TenantFindRequest) ProtoMessage() {} func (x *TenantFindRequest) ProtoReflect() protoreflect.Message { mi := &file_v1_tenant_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -864,11 +834,9 @@ type TenantResponse struct { func (x *TenantResponse) Reset() { *x = TenantResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_tenant_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_tenant_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TenantResponse) String() string { @@ -879,7 +847,7 @@ func (*TenantResponse) ProtoMessage() {} func (x *TenantResponse) ProtoReflect() protoreflect.Message { mi := &file_v1_tenant_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -913,11 +881,9 @@ type TenantListResponse struct { func (x *TenantListResponse) Reset() { *x = TenantListResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_tenant_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_tenant_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TenantListResponse) String() string { @@ -928,7 +894,7 @@ func (*TenantListResponse) ProtoMessage() {} func (x *TenantListResponse) ProtoReflect() protoreflect.Message { mi := &file_v1_tenant_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1273,212 +1239,6 @@ func file_v1_tenant_proto_init() { file_v1_meta_proto_init() file_v1_project_proto_init() file_v1_quota_proto_init() - if !protoimpl.UnsafeEnabled { - file_v1_tenant_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*FindParticipatingProjectsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_tenant_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*FindParticipatingTenantsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_tenant_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ListTenantMembersRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_tenant_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*ListTenantMembersResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_tenant_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*FindParticipatingProjectsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_tenant_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*FindParticipatingTenantsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_tenant_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*ProjectWithMembershipAnnotations); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_tenant_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*TenantWithMembershipAnnotations); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_tenant_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*Tenant); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_tenant_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*TenantCreateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_tenant_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*TenantUpdateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_tenant_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*TenantDeleteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_tenant_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*TenantGetRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_tenant_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*TenantGetHistoryRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_tenant_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*TenantFindRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_tenant_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*TenantResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_tenant_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*TenantListResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_v1_tenant_proto_msgTypes[0].OneofWrappers = []any{} file_v1_tenant_proto_msgTypes[1].OneofWrappers = []any{} file_v1_tenant_proto_msgTypes[2].OneofWrappers = []any{} diff --git a/api/v1/tenant_member.pb.go b/api/v1/tenant_member.pb.go index be74464..25be861 100644 --- a/api/v1/tenant_member.pb.go +++ b/api/v1/tenant_member.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: v1/tenant_member.proto @@ -35,11 +35,9 @@ type TenantMember struct { func (x *TenantMember) Reset() { *x = TenantMember{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_tenant_member_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_tenant_member_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TenantMember) String() string { @@ -50,7 +48,7 @@ func (*TenantMember) ProtoMessage() {} func (x *TenantMember) ProtoReflect() protoreflect.Message { mi := &file_v1_tenant_member_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -96,11 +94,9 @@ type TenantMemberCreateRequest struct { func (x *TenantMemberCreateRequest) Reset() { *x = TenantMemberCreateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_tenant_member_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_tenant_member_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TenantMemberCreateRequest) String() string { @@ -111,7 +107,7 @@ func (*TenantMemberCreateRequest) ProtoMessage() {} func (x *TenantMemberCreateRequest) ProtoReflect() protoreflect.Message { mi := &file_v1_tenant_member_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -143,11 +139,9 @@ type TenantMemberUpdateRequest struct { func (x *TenantMemberUpdateRequest) Reset() { *x = TenantMemberUpdateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_tenant_member_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_tenant_member_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TenantMemberUpdateRequest) String() string { @@ -158,7 +152,7 @@ func (*TenantMemberUpdateRequest) ProtoMessage() {} func (x *TenantMemberUpdateRequest) ProtoReflect() protoreflect.Message { mi := &file_v1_tenant_member_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -190,11 +184,9 @@ type TenantMemberDeleteRequest struct { func (x *TenantMemberDeleteRequest) Reset() { *x = TenantMemberDeleteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_tenant_member_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_tenant_member_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TenantMemberDeleteRequest) String() string { @@ -205,7 +197,7 @@ func (*TenantMemberDeleteRequest) ProtoMessage() {} func (x *TenantMemberDeleteRequest) ProtoReflect() protoreflect.Message { mi := &file_v1_tenant_member_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -237,11 +229,9 @@ type TenantMemberGetRequest struct { func (x *TenantMemberGetRequest) Reset() { *x = TenantMemberGetRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_tenant_member_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_tenant_member_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TenantMemberGetRequest) String() string { @@ -252,7 +242,7 @@ func (*TenantMemberGetRequest) ProtoMessage() {} func (x *TenantMemberGetRequest) ProtoReflect() protoreflect.Message { mi := &file_v1_tenant_member_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -286,11 +276,9 @@ type TenantMemberFindRequest struct { func (x *TenantMemberFindRequest) Reset() { *x = TenantMemberFindRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_tenant_member_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_tenant_member_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TenantMemberFindRequest) String() string { @@ -301,7 +289,7 @@ func (*TenantMemberFindRequest) ProtoMessage() {} func (x *TenantMemberFindRequest) ProtoReflect() protoreflect.Message { mi := &file_v1_tenant_member_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -347,11 +335,9 @@ type TenantMemberResponse struct { func (x *TenantMemberResponse) Reset() { *x = TenantMemberResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_tenant_member_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_tenant_member_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TenantMemberResponse) String() string { @@ -362,7 +348,7 @@ func (*TenantMemberResponse) ProtoMessage() {} func (x *TenantMemberResponse) ProtoReflect() protoreflect.Message { mi := &file_v1_tenant_member_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -394,11 +380,9 @@ type TenantMemberListResponse struct { func (x *TenantMemberListResponse) Reset() { *x = TenantMemberListResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_tenant_member_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_tenant_member_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TenantMemberListResponse) String() string { @@ -409,7 +393,7 @@ func (*TenantMemberListResponse) ProtoMessage() {} func (x *TenantMemberListResponse) ProtoReflect() protoreflect.Message { mi := &file_v1_tenant_member_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -573,104 +557,6 @@ func file_v1_tenant_member_proto_init() { return } file_v1_meta_proto_init() - if !protoimpl.UnsafeEnabled { - file_v1_tenant_member_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*TenantMember); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_tenant_member_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*TenantMemberCreateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_tenant_member_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*TenantMemberUpdateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_tenant_member_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*TenantMemberDeleteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_tenant_member_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*TenantMemberGetRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_tenant_member_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*TenantMemberFindRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_tenant_member_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*TenantMemberResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_tenant_member_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*TenantMemberListResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_v1_tenant_member_proto_msgTypes[5].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ diff --git a/deploy/masterdata-api.yaml b/deploy/masterdata-api.yaml index 0f3a7a8..abef8a8 100644 --- a/deploy/masterdata-api.yaml +++ b/deploy/masterdata-api.yaml @@ -170,7 +170,7 @@ spec: spec: containers: - name: masterdata-db - image: postgres:12-alpine + image: postgres:17-alpine env: - name: POSTGRES_PASSWORD value: password diff --git a/go.mod b/go.mod index 1d4f4bf..4e8a69f 100644 --- a/go.mod +++ b/go.mod @@ -12,18 +12,18 @@ require ( github.com/json-iterator/go v1.1.12 github.com/lib/pq v1.10.9 github.com/lopezator/migrator v0.3.1 - github.com/metal-stack/metal-lib v0.18.3 - github.com/metal-stack/security v0.8.1 + github.com/metal-stack/metal-lib v0.18.4 + github.com/metal-stack/security v0.8.3 github.com/metal-stack/v v1.0.3 - github.com/prometheus/client_golang v1.20.4 + github.com/prometheus/client_golang v1.20.5 github.com/spf13/cobra v1.8.1 github.com/spf13/viper v1.19.0 github.com/stretchr/testify v1.9.0 - github.com/testcontainers/testcontainers-go v0.33.0 - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.55.0 - go.opentelemetry.io/otel/trace v1.30.0 + github.com/testcontainers/testcontainers-go v0.34.0 + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.56.0 + go.opentelemetry.io/otel/trace v1.31.0 google.golang.org/grpc v1.67.1 - google.golang.org/protobuf v1.34.2 + google.golang.org/protobuf v1.35.1 sigs.k8s.io/yaml v1.4.0 ) @@ -64,14 +64,14 @@ require ( github.com/icza/dyno v0.0.0-20230330125955-09f820a8d9c0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/josharian/intern v1.0.0 // indirect - github.com/klauspost/compress v1.17.10 // indirect + github.com/klauspost/compress v1.17.11 // indirect github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect github.com/lestrrat-go/blackmagic v1.0.2 // indirect github.com/lestrrat-go/httpcc v1.0.1 // indirect github.com/lestrrat-go/httprc v1.0.6 // indirect github.com/lestrrat-go/iter v1.0.2 // indirect - github.com/lestrrat-go/jwx/v2 v2.1.1 // indirect + github.com/lestrrat-go/jwx/v2 v2.1.2 // indirect github.com/lestrrat-go/option v1.0.1 // indirect github.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683 // indirect github.com/magiconair/properties v1.8.7 // indirect @@ -95,7 +95,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.60.0 // indirect + github.com/prometheus/common v0.60.1 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rogpeppe/go-internal v1.13.1 // indirect github.com/sagikazarmark/locafero v0.6.0 // indirect @@ -111,23 +111,23 @@ require ( github.com/stretchr/objx v0.5.2 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/tklauser/go-sysconf v0.3.14 // indirect - github.com/tklauser/numcpus v0.8.0 // indirect + github.com/tklauser/numcpus v0.9.0 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect go.mongodb.org/mongo-driver v1.17.1 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.55.0 // indirect - go.opentelemetry.io/otel v1.30.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.30.0 // indirect - go.opentelemetry.io/otel/metric v1.30.0 // indirect - go.opentelemetry.io/otel/sdk v1.30.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0 // indirect + go.opentelemetry.io/otel v1.31.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0 // indirect + go.opentelemetry.io/otel/metric v1.31.0 // indirect + go.opentelemetry.io/otel/sdk v1.31.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.27.0 // indirect - golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect - golang.org/x/net v0.29.0 // indirect + golang.org/x/crypto v0.28.0 // indirect + golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c // indirect + golang.org/x/net v0.30.0 // indirect golang.org/x/oauth2 v0.23.0 // indirect golang.org/x/sync v0.8.0 // indirect - golang.org/x/sys v0.25.0 // indirect - golang.org/x/text v0.18.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240930140551-af27646dc61f // indirect + golang.org/x/sys v0.26.0 // indirect + golang.org/x/text v0.19.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index cb1d999..6a56321 100644 --- a/go.sum +++ b/go.sum @@ -135,8 +135,8 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.17.10 h1:oXAz+Vh0PMUvJczoi+flxpnBEPxoER1IaAnU/NMPtT0= -github.com/klauspost/compress v1.17.10/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= +github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= +github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -155,8 +155,8 @@ github.com/lestrrat-go/httprc v1.0.6 h1:qgmgIRhpvBqexMJjA/PmwSvhNk679oqD1RbovdCG github.com/lestrrat-go/httprc v1.0.6/go.mod h1:mwwz3JMTPBjHUkkDv/IGJ39aALInZLrhBp0X7KGUZlo= github.com/lestrrat-go/iter v1.0.2 h1:gMXo1q4c2pHmC3dn8LzRhJfP1ceCbgSiT9lUydIzltI= github.com/lestrrat-go/iter v1.0.2/go.mod h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4= -github.com/lestrrat-go/jwx/v2 v2.1.1 h1:Y2ltVl8J6izLYFs54BVcpXLv5msSW4o8eXwnzZLI32E= -github.com/lestrrat-go/jwx/v2 v2.1.1/go.mod h1:4LvZg7oxu6Q5VJwn7Mk/UwooNRnTHUpXBj2C4j3HNx0= +github.com/lestrrat-go/jwx/v2 v2.1.2 h1:6poete4MPsO8+LAEVhpdrNI4Xp2xdiafgl2RD89moBc= +github.com/lestrrat-go/jwx/v2 v2.1.2/go.mod h1:pO+Gz9whn7MPdbsqSJzG8TlEpMZCwQDXnFJ+zsUVh8Y= github.com/lestrrat-go/option v1.0.1 h1:oAzP2fvZGQKWkvHa1/SAcFolBEca1oN+mQ7eooNBEYU= github.com/lestrrat-go/option v1.0.1/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= @@ -171,10 +171,10 @@ github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0 github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= -github.com/metal-stack/metal-lib v0.18.3 h1:bovFiJPB9SMvuGLqcXVWz6jFB8HrdzwnCX7TFlen4r0= -github.com/metal-stack/metal-lib v0.18.3/go.mod h1:Ctyi6zaXFr2NVrQZLFsDLnFCzupKnYErTtgRFKAsnbw= -github.com/metal-stack/security v0.8.1 h1:4zmVUxZvDWShVvVIxM3XhIv7pTmPe9DvACRIHW6YTsk= -github.com/metal-stack/security v0.8.1/go.mod h1:OO8ZilZO6fUV5QEmwc7HP/RAjqYrGQxXoYIddJ9TvqE= +github.com/metal-stack/metal-lib v0.18.4 h1:7HnfSwSbrKNHU+i6i79YFk/eeuhBhwIEHWpGqS7pYCc= +github.com/metal-stack/metal-lib v0.18.4/go.mod h1:Ctyi6zaXFr2NVrQZLFsDLnFCzupKnYErTtgRFKAsnbw= +github.com/metal-stack/security v0.8.3 h1:1Ugps5Ju9chCi3rkIPBXWLOLJKsIWnoLLzijsN6s8Bg= +github.com/metal-stack/security v0.8.3/go.mod h1:4+UAI/rqNbASyskDE/Ll/YoCW3kv/Q3pCW+CDwmB9YY= github.com/metal-stack/v v1.0.3 h1:Sh2oBlnxrCUD+mVpzfC8HiqL045YWkxs0gpTvkjppqs= github.com/metal-stack/v v1.0.3/go.mod h1:YTahEu7/ishwpYKnp/VaW/7nf8+PInogkfGwLcGPdXg= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -215,12 +215,12 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -github.com/prometheus/client_golang v1.20.4 h1:Tgh3Yr67PaOv/uTqloMsCEdeuFTatm5zIq5+qNN23vI= -github.com/prometheus/client_golang v1.20.4/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= +github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.60.0 h1:+V9PAREWNvJMAuJ1x1BaWl9dewMW4YrHZQbx0sJNllA= -github.com/prometheus/common v0.60.0/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= +github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= @@ -264,34 +264,34 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= -github.com/testcontainers/testcontainers-go v0.33.0 h1:zJS9PfXYT5O0ZFXM2xxXfk4J5UMw/kRiISng037Gxdw= -github.com/testcontainers/testcontainers-go v0.33.0/go.mod h1:W80YpTa8D5C3Yy16icheD01UTDu+LmXIA2Keo+jWtT8= +github.com/testcontainers/testcontainers-go v0.34.0 h1:5fbgF0vIN5u+nD3IWabQwRybuB4GY8G2HHgCkbMzMHo= +github.com/testcontainers/testcontainers-go v0.34.0/go.mod h1:6P/kMkQe8yqPHfPWNulFGdFHTD8HB2vLq/231xY2iPQ= github.com/tklauser/go-sysconf v0.3.14 h1:g5vzr9iPFFz24v2KZXs/pvpvh8/V9Fw6vQK5ZZb78yU= github.com/tklauser/go-sysconf v0.3.14/go.mod h1:1ym4lWMLUOhuBOPGtRcJm7tEGX4SCYNEEEtghGG/8uY= -github.com/tklauser/numcpus v0.8.0 h1:Mx4Wwe/FjZLeQsK/6kt2EOepwwSl7SmJrK5bV/dXYgY= -github.com/tklauser/numcpus v0.8.0/go.mod h1:ZJZlAY+dmR4eut8epnzf0u/VwodKmryxR8txiloSqBE= +github.com/tklauser/numcpus v0.9.0 h1:lmyCHtANi8aRUgkckBgoDk1nHCux3n2cgkJLXdQGPDo= +github.com/tklauser/numcpus v0.9.0/go.mod h1:SN6Nq1O3VychhC1npsWostA+oW+VOQTxZrS604NSRyI= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.mongodb.org/mongo-driver v1.17.1 h1:Wic5cJIwJgSpBhe3lx3+/RybR5PiYRMpVFgO7cOHyIM= go.mongodb.org/mongo-driver v1.17.1/go.mod h1:wwWm/+BuOddhcq3n68LKRmgk2wXzmF6s0SFOa0GINL4= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.55.0 h1:hCq2hNMwsegUvPzI7sPOvtO9cqyy5GbWt/Ybp2xrx8Q= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.55.0/go.mod h1:LqaApwGx/oUmzsbqxkzuBvyoPpkxk3JQWnqfVrJ3wCA= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.55.0 h1:ZIg3ZT/aQ7AfKqdwp7ECpOK6vHqquXXuyTjIO8ZdmPs= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.55.0/go.mod h1:DQAwmETtZV00skUwgD6+0U89g80NKsJE3DCKeLLPQMI= -go.opentelemetry.io/otel v1.30.0 h1:F2t8sK4qf1fAmY9ua4ohFS/K+FUuOPemHUIXHtktrts= -go.opentelemetry.io/otel v1.30.0/go.mod h1:tFw4Br9b7fOS+uEao81PJjVMjW/5fvNCbpsDIXqP0pc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.30.0 h1:lsInsfvhVIfOI6qHVyysXMNDnjO9Npvl7tlDPJFBVd4= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.30.0/go.mod h1:KQsVNh4OjgjTG0G6EiNi1jVpnaeeKsKMRwbLN+f1+8M= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.30.0 h1:umZgi92IyxfXd/l4kaDhnKgY8rnN/cZcF1LKc6I8OQ8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.30.0/go.mod h1:4lVs6obhSVRb1EW5FhOuBTyiQhtRtAnnva9vD3yRfq8= -go.opentelemetry.io/otel/metric v1.30.0 h1:4xNulvn9gjzo4hjg+wzIKG7iNFEaBMX00Qd4QIZs7+w= -go.opentelemetry.io/otel/metric v1.30.0/go.mod h1:aXTfST94tswhWEb+5QjlSqG+cZlmyXy/u8jFpor3WqQ= -go.opentelemetry.io/otel/sdk v1.30.0 h1:cHdik6irO49R5IysVhdn8oaiR9m8XluDaJAs4DfOrYE= -go.opentelemetry.io/otel/sdk v1.30.0/go.mod h1:p14X4Ok8S+sygzblytT1nqG98QG2KYKv++HE0LY/mhg= -go.opentelemetry.io/otel/trace v1.30.0 h1:7UBkkYzeg3C7kQX8VAidWh2biiQbtAKjyIML8dQ9wmc= -go.opentelemetry.io/otel/trace v1.30.0/go.mod h1:5EyKqTzzmyqB9bwtCCq6pDLktPK6fmGf/Dph+8VI02o= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.56.0 h1:yMkBS9yViCc7U7yeLzJPM2XizlfdVvBRSmsQDWu6qc0= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.56.0/go.mod h1:n8MR6/liuGB5EmTETUBeU5ZgqMOlqKRxUaqPQBOANZ8= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0 h1:UP6IpuHFkUgOQL9FFQFrZ+5LiwhhYRbi7VZSIx6Nj5s= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0/go.mod h1:qxuZLtbq5QDtdeSHsS7bcf6EH6uO6jUAgk764zd3rhM= +go.opentelemetry.io/otel v1.31.0 h1:NsJcKPIW0D0H3NgzPDHmo0WW6SptzPdqg/L1zsIm2hY= +go.opentelemetry.io/otel v1.31.0/go.mod h1:O0C14Yl9FgkjqcCZAsE053C13OaddMYr/hz6clDkEJE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0 h1:K0XaT3DwHAcV4nKLzcQvwAgSyisUghWoY20I7huthMk= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0/go.mod h1:B5Ki776z/MBnVha1Nzwp5arlzBbE3+1jk+pGmaP5HME= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0 h1:lUsI2TYsQw2r1IASwoROaCnjdj2cvC2+Jbxvk6nHnWU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0/go.mod h1:2HpZxxQurfGxJlJDblybejHB6RX6pmExPNe517hREw4= +go.opentelemetry.io/otel/metric v1.31.0 h1:FSErL0ATQAmYHUIzSezZibnyVlft1ybhy4ozRPcF2fE= +go.opentelemetry.io/otel/metric v1.31.0/go.mod h1:C3dEloVbLuYoX41KpmAhOqNriGbA+qqH6PQ5E5mUfnY= +go.opentelemetry.io/otel/sdk v1.31.0 h1:xLY3abVHYZ5HSfOg3l2E5LUj2Cwva5Y7yGxnSW9H5Gk= +go.opentelemetry.io/otel/sdk v1.31.0/go.mod h1:TfRbMdhvxIIr/B2N2LQW2S5v9m3gOQ/08KsbbO5BPT0= +go.opentelemetry.io/otel/trace v1.31.0 h1:ffjsj1aRouKewfr85U2aGagJ46+MvodynlQ1HYdmJys= +go.opentelemetry.io/otel/trace v1.31.0/go.mod h1:TXZkRk7SM2ZQLtR6eoAWQFIHPvzQ06FJAsO1tJg480A= go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= @@ -299,18 +299,18 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= -golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= -golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= -golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= +golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw= +golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= +golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c h1:7dEasQXItcW1xKJ2+gg5VOiBnqWrJc+rq0DPKyvvdbY= +golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:NQtJDoLvd6faHhE7m4T/1IY708gDefGGjR/iUW8yQQ8= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= -golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= +golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= +golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -326,14 +326,14 @@ golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= -golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.24.0 h1:Mh5cbb+Zk2hqqXNO7S1iTjEphVL+jb8ZWaqh/g+JWkM= -golang.org/x/term v0.24.0/go.mod h1:lOBK/LVxemqiMij05LGJ0tzNr8xlmwBRJ81PX6wVLH8= +golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= +golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24= +golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= -golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= +golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -345,14 +345,14 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 h1:9+tzLLstTlPTRyJTh+ah5wIMsBW5c4tQwGTN3thOW9Y= -google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= -google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240930140551-af27646dc61f h1:cUMEy+8oS78BWIH9OWazBkzbr090Od9tWBNtZHkOhf0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240930140551-af27646dc61f/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9 h1:T6rh4haD3GVYsgEfWExoCZA2o2FmbNyKpTuAxbEFPTg= +google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9/go.mod h1:wp2WsuBYj6j8wUdo3ToZsdxxixbvQNAHqVJrTgi5E5M= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 h1:zciRKQ4kBpFgpfC5QQCVtnnNAcLIqweL7plyZRQHVpI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= +google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/pkg/gen/genscanvaluer.go b/pkg/gen/genscanvaluer.go index 1ad75f3..4dfb674 100644 --- a/pkg/gen/genscanvaluer.go +++ b/pkg/gen/genscanvaluer.go @@ -6,7 +6,7 @@ Generates methods necessary to fulfil the Scanner and Valuer Interface. Example Usage for Type "Tenant" in package "v1" -//go:generate go run ../../pkg/gen/gensv.go -package v1 -type Tenant +//go:generate go run ../../pkg/gen/genscanvaluer.go -package v1 -type Tenant */ package main diff --git a/proto/Makefile b/proto/Makefile index 4f27806..11ee110 100644 --- a/proto/Makefile +++ b/proto/Makefile @@ -1,5 +1,5 @@ MAKEFLAGS += --no-print-directory -BUF_VERSION := 1.43.0 +BUF_VERSION := 1.45.0 _buf: docker run --rm \ diff --git a/proto/buf.gen.yaml b/proto/buf.gen.yaml index e4ecf76..1257939 100644 --- a/proto/buf.gen.yaml +++ b/proto/buf.gen.yaml @@ -8,6 +8,6 @@ plugins: - remote: buf.build/grpc/go:v1.5.1 out: ../api opt: paths=source_relative,require_unimplemented_servers=false - - remote: buf.build/protocolbuffers/go:v1.34.2 + - remote: buf.build/protocolbuffers/go:v1.35.1 out: ../api opt: paths=source_relative From b84e1abb8065cf90849efe6af50167e882e10193 Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Thu, 31 Oct 2024 07:51:58 +0100 Subject: [PATCH 06/39] Merge main --- proto/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proto/Makefile b/proto/Makefile index 11ee110..7e0ff27 100644 --- a/proto/Makefile +++ b/proto/Makefile @@ -1,5 +1,5 @@ MAKEFLAGS += --no-print-directory -BUF_VERSION := 1.45.0 +BUF_VERSION := 1.46.0 _buf: docker run --rm \ From bf5fc975595578e94936f70861c3dcdac275915a Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Thu, 31 Oct 2024 07:56:30 +0100 Subject: [PATCH 07/39] Update mockery --- Makefile | 4 ++-- api/v1/mocks/ProjectMemberServiceClient.go | 2 +- api/v1/mocks/ProjectMemberServiceServer.go | 2 +- api/v1/mocks/ProjectServiceClient.go | 2 +- api/v1/mocks/ProjectServiceServer.go | 2 +- api/v1/mocks/TenantMemberServiceClient.go | 2 +- api/v1/mocks/TenantMemberServiceServer.go | 2 +- api/v1/mocks/TenantServiceClient.go | 2 +- api/v1/mocks/TenantServiceServer.go | 2 +- api/v1/mocks/UnsafeProjectMemberServiceServer.go | 2 +- api/v1/mocks/UnsafeProjectServiceServer.go | 2 +- api/v1/mocks/UnsafeTenantMemberServiceServer.go | 2 +- api/v1/mocks/UnsafeTenantServiceServer.go | 2 +- pkg/datastore/mocks/Entity.go | 2 +- pkg/datastore/mocks/Storage.go | 2 +- 15 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Makefile b/Makefile index 36bb70b..f202b0e 100644 --- a/Makefile +++ b/Makefile @@ -59,13 +59,13 @@ mocks: --user $$(id -u):$$(id -g) \ -w /work \ -v ${PWD}:/work \ - vektra/mockery:v2.46.1 -r --keeptree --dir api/v1 --output api/v1/mocks --all + vektra/mockery:v2.46.3 -r --keeptree --dir api/v1 --output api/v1/mocks --all docker run --rm \ --user $$(id -u):$$(id -g) \ -w /work \ -v ${PWD}:/work \ - vektra/mockery:v2.46.1 -r --keeptree --dir pkg/datastore --output pkg/datastore/mocks --all + vektra/mockery:v2.46.3 -r --keeptree --dir pkg/datastore --output pkg/datastore/mocks --all .PHONY: postgres-up postgres-up: postgres-rm diff --git a/api/v1/mocks/ProjectMemberServiceClient.go b/api/v1/mocks/ProjectMemberServiceClient.go index 4622f66..cbe257e 100644 --- a/api/v1/mocks/ProjectMemberServiceClient.go +++ b/api/v1/mocks/ProjectMemberServiceClient.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.1. DO NOT EDIT. +// Code generated by mockery v2.46.3. DO NOT EDIT. package mocks diff --git a/api/v1/mocks/ProjectMemberServiceServer.go b/api/v1/mocks/ProjectMemberServiceServer.go index a056830..a1c83b1 100644 --- a/api/v1/mocks/ProjectMemberServiceServer.go +++ b/api/v1/mocks/ProjectMemberServiceServer.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.1. DO NOT EDIT. +// Code generated by mockery v2.46.3. DO NOT EDIT. package mocks diff --git a/api/v1/mocks/ProjectServiceClient.go b/api/v1/mocks/ProjectServiceClient.go index f01ec9d..08aa613 100644 --- a/api/v1/mocks/ProjectServiceClient.go +++ b/api/v1/mocks/ProjectServiceClient.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.1. DO NOT EDIT. +// Code generated by mockery v2.46.3. DO NOT EDIT. package mocks diff --git a/api/v1/mocks/ProjectServiceServer.go b/api/v1/mocks/ProjectServiceServer.go index 982d265..fe13489 100644 --- a/api/v1/mocks/ProjectServiceServer.go +++ b/api/v1/mocks/ProjectServiceServer.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.1. DO NOT EDIT. +// Code generated by mockery v2.46.3. DO NOT EDIT. package mocks diff --git a/api/v1/mocks/TenantMemberServiceClient.go b/api/v1/mocks/TenantMemberServiceClient.go index 4b5d31a..e331f63 100644 --- a/api/v1/mocks/TenantMemberServiceClient.go +++ b/api/v1/mocks/TenantMemberServiceClient.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.1. DO NOT EDIT. +// Code generated by mockery v2.46.3. DO NOT EDIT. package mocks diff --git a/api/v1/mocks/TenantMemberServiceServer.go b/api/v1/mocks/TenantMemberServiceServer.go index edb2c41..f745fe2 100644 --- a/api/v1/mocks/TenantMemberServiceServer.go +++ b/api/v1/mocks/TenantMemberServiceServer.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.1. DO NOT EDIT. +// Code generated by mockery v2.46.3. DO NOT EDIT. package mocks diff --git a/api/v1/mocks/TenantServiceClient.go b/api/v1/mocks/TenantServiceClient.go index 8ede445..a3843be 100644 --- a/api/v1/mocks/TenantServiceClient.go +++ b/api/v1/mocks/TenantServiceClient.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.1. DO NOT EDIT. +// Code generated by mockery v2.46.3. DO NOT EDIT. package mocks diff --git a/api/v1/mocks/TenantServiceServer.go b/api/v1/mocks/TenantServiceServer.go index a5fa606..08ade65 100644 --- a/api/v1/mocks/TenantServiceServer.go +++ b/api/v1/mocks/TenantServiceServer.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.1. DO NOT EDIT. +// Code generated by mockery v2.46.3. DO NOT EDIT. package mocks diff --git a/api/v1/mocks/UnsafeProjectMemberServiceServer.go b/api/v1/mocks/UnsafeProjectMemberServiceServer.go index 89cee62..cffca74 100644 --- a/api/v1/mocks/UnsafeProjectMemberServiceServer.go +++ b/api/v1/mocks/UnsafeProjectMemberServiceServer.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.1. DO NOT EDIT. +// Code generated by mockery v2.46.3. DO NOT EDIT. package mocks diff --git a/api/v1/mocks/UnsafeProjectServiceServer.go b/api/v1/mocks/UnsafeProjectServiceServer.go index 312a3c4..37b4ee6 100644 --- a/api/v1/mocks/UnsafeProjectServiceServer.go +++ b/api/v1/mocks/UnsafeProjectServiceServer.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.1. DO NOT EDIT. +// Code generated by mockery v2.46.3. DO NOT EDIT. package mocks diff --git a/api/v1/mocks/UnsafeTenantMemberServiceServer.go b/api/v1/mocks/UnsafeTenantMemberServiceServer.go index 4ebc2bd..df70040 100644 --- a/api/v1/mocks/UnsafeTenantMemberServiceServer.go +++ b/api/v1/mocks/UnsafeTenantMemberServiceServer.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.1. DO NOT EDIT. +// Code generated by mockery v2.46.3. DO NOT EDIT. package mocks diff --git a/api/v1/mocks/UnsafeTenantServiceServer.go b/api/v1/mocks/UnsafeTenantServiceServer.go index 6071321..0c007f9 100644 --- a/api/v1/mocks/UnsafeTenantServiceServer.go +++ b/api/v1/mocks/UnsafeTenantServiceServer.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.1. DO NOT EDIT. +// Code generated by mockery v2.46.3. DO NOT EDIT. package mocks diff --git a/pkg/datastore/mocks/Entity.go b/pkg/datastore/mocks/Entity.go index ef94192..22a2fb3 100644 --- a/pkg/datastore/mocks/Entity.go +++ b/pkg/datastore/mocks/Entity.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.1. DO NOT EDIT. +// Code generated by mockery v2.46.3. DO NOT EDIT. package mocks diff --git a/pkg/datastore/mocks/Storage.go b/pkg/datastore/mocks/Storage.go index b9fe029..b3bb32d 100644 --- a/pkg/datastore/mocks/Storage.go +++ b/pkg/datastore/mocks/Storage.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.1. DO NOT EDIT. +// Code generated by mockery v2.46.3. DO NOT EDIT. package mocks From 1d62b778ad7b9d0954fd17d594a54ac6d4af9b6a Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Thu, 31 Oct 2024 08:10:48 +0100 Subject: [PATCH 08/39] Migrate to testcontainer postgres module --- go.mod | 1 + go.sum | 10 ++++++++-- pkg/datastore/postgres_test.go | 26 +++++++++++--------------- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/go.mod b/go.mod index 4e8a69f..069e666 100644 --- a/go.mod +++ b/go.mod @@ -20,6 +20,7 @@ require ( github.com/spf13/viper v1.19.0 github.com/stretchr/testify v1.9.0 github.com/testcontainers/testcontainers-go v0.34.0 + github.com/testcontainers/testcontainers-go/modules/postgres v0.34.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.56.0 go.opentelemetry.io/otel/trace v1.31.0 google.golang.org/grpc v1.67.1 diff --git a/go.sum b/go.sum index 6a56321..ecf1bb8 100644 --- a/go.sum +++ b/go.sum @@ -121,12 +121,16 @@ github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsI github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= github.com/jackc/pgproto3/v2 v2.2.0 h1:r7JypeP2D3onoQTCxWdTpCtJ4D+qpKr0TxvoyMhZ5ns= github.com/jackc/pgproto3/v2 v2.2.0/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= -github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b h1:C8S2+VttkHFdOOCXJe+YGfa4vHYwlt4Zx+IVXQ97jYg= -github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= github.com/jackc/pgtype v1.10.0 h1:ILnBWrRMSXGczYvmkYD6PsYyVFUNLTnIUJHHDLmqk38= github.com/jackc/pgtype v1.10.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= github.com/jackc/pgx/v4 v4.15.0 h1:B7dTkXsdILD3MF987WGGCcg+tvLW6bZJdEcqVFeU//w= github.com/jackc/pgx/v4 v4.15.0/go.mod h1:D/zyOyXiaM1TmVWnOM18p0xdDtdakRBa0RsVGI3U3bw= +github.com/jackc/pgx/v5 v5.5.4 h1:Xp2aQS8uXButQdnCMWNmvx6UysWQQC+u1EoizjguY+8= +github.com/jackc/pgx/v5 v5.5.4/go.mod h1:ez9gk+OAat140fv9ErkZDYFWmXLfV+++K0uAOiwgm1A= +github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk= +github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= github.com/jmoiron/sqlx v1.4.0 h1:1PLqN7S1UYp5t4SrVVnt4nUVNemrDAtxlulVe+Qgm3o= github.com/jmoiron/sqlx v1.4.0/go.mod h1:ZrZ7UsYB/weZdl2Bxg6jCRO9c3YHl8r3ahlKmRT4JLY= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= @@ -266,6 +270,8 @@ github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8 github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/testcontainers/testcontainers-go v0.34.0 h1:5fbgF0vIN5u+nD3IWabQwRybuB4GY8G2HHgCkbMzMHo= github.com/testcontainers/testcontainers-go v0.34.0/go.mod h1:6P/kMkQe8yqPHfPWNulFGdFHTD8HB2vLq/231xY2iPQ= +github.com/testcontainers/testcontainers-go/modules/postgres v0.34.0 h1:c51aBXT3v2HEBVarmaBnsKzvgZjC5amn0qsj8Naqi50= +github.com/testcontainers/testcontainers-go/modules/postgres v0.34.0/go.mod h1:EWP75ogLQU4M4L8U+20mFipjV4WIR9WtlMXSB6/wiuc= github.com/tklauser/go-sysconf v0.3.14 h1:g5vzr9iPFFz24v2KZXs/pvpvh8/V9Fw6vQK5ZZb78yU= github.com/tklauser/go-sysconf v0.3.14/go.mod h1:1ym4lWMLUOhuBOPGtRcJm7tEGX4SCYNEEEtghGG/8uY= github.com/tklauser/numcpus v0.9.0 h1:lmyCHtANi8aRUgkckBgoDk1nHCux3n2cgkJLXdQGPDo= diff --git a/pkg/datastore/postgres_test.go b/pkg/datastore/postgres_test.go index bb00d01..317913f 100644 --- a/pkg/datastore/postgres_test.go +++ b/pkg/datastore/postgres_test.go @@ -11,6 +11,9 @@ import ( "github.com/jmoiron/sqlx" "github.com/testcontainers/testcontainers-go" + "github.com/testcontainers/testcontainers-go/modules/postgres" + "github.com/testcontainers/testcontainers-go/wait" + "google.golang.org/protobuf/types/known/timestamppb" "github.com/stretchr/testify/require" @@ -783,22 +786,15 @@ func resetNow() { func createPostgresConnection() (testcontainers.Container, *sqlx.DB, error) { ctx := context.Background() - req := testcontainers.ContainerRequest{ - Image: "postgres:16-alpine", - ExposedPorts: []string{"5432/tcp"}, - Env: map[string]string{"POSTGRES_PASSWORD": "password"}, - // TODO: should work, but dont, hence using the loop below to check pg is up an ready for connections. - // WaitingFor: wait.ForLog("database system is ready to accept connections"), - // WaitingFor: wait.ForListeningPort("5432/tcp"), - } - postgres, err := testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{ - ContainerRequest: req, - Started: true, - }) - if err != nil { - return nil, nil, err - } + postgres, err := postgres.Run(ctx, + "postgres:17-alpine", + postgres.WithPassword("password"), + testcontainers.WithWaitStrategy( + wait.ForLog("database system is ready to accept connections"). + WithOccurrence(2). + WithStartupTimeout(5*time.Second)), + ) ip, err := postgres.Host(ctx) if err != nil { From 75a2d12dda77382e49c9cd98325550940449e1b7 Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Thu, 31 Oct 2024 08:13:31 +0100 Subject: [PATCH 09/39] Fix --- pkg/datastore/postgres_test.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkg/datastore/postgres_test.go b/pkg/datastore/postgres_test.go index 317913f..f4a21d2 100644 --- a/pkg/datastore/postgres_test.go +++ b/pkg/datastore/postgres_test.go @@ -795,6 +795,9 @@ func createPostgresConnection() (testcontainers.Container, *sqlx.DB, error) { WithOccurrence(2). WithStartupTimeout(5*time.Second)), ) + if err != nil { + return nil, nil, err + } ip, err := postgres.Host(ctx) if err != nil { From 96fbe898ad891676b9667e969206c514847dd351 Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Tue, 5 Nov 2024 10:45:44 +0100 Subject: [PATCH 10/39] Update deps to fix CVEs --- go.mod | 6 +++--- go.sum | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 069e666..3cf3e0b 100644 --- a/go.mod +++ b/go.mod @@ -48,7 +48,7 @@ require ( github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/fsnotify/fsnotify v1.8.0 // indirect github.com/go-jose/go-jose/v4 v4.0.4 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect @@ -59,7 +59,7 @@ require ( github.com/go-openapi/swag v0.23.0 // indirect github.com/goccy/go-json v0.10.3 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v4 v4.5.0 // indirect + github.com/golang-jwt/jwt/v4 v4.5.1 // indirect github.com/gorilla/mux v1.8.1 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/icza/dyno v0.0.0-20230330125955-09f820a8d9c0 // indirect @@ -128,7 +128,7 @@ require ( golang.org/x/sync v0.8.0 // indirect golang.org/x/sys v0.26.0 // indirect golang.org/x/text v0.19.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index ecf1bb8..0f577e7 100644 --- a/go.sum +++ b/go.sum @@ -53,6 +53,8 @@ github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHk github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= +github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/go-jose/go-jose/v4 v4.0.4 h1:VsjPI33J0SB9vQM6PLmNjoHqMQNGPiZ0rHL7Ni7Q6/E= github.com/go-jose/go-jose/v4 v4.0.4/go.mod h1:NKb5HO1EZccyMpiZNbdUw/14tiXNyUJh188dfnMCAfc= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -91,6 +93,8 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v4 v4.5.1 h1:JdqV9zKUdtaa9gdPlywC3aeoEsR681PlKC+4F5gQgeo= +github.com/golang-jwt/jwt/v4 v4.5.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= @@ -355,6 +359,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9 h1: google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9/go.mod h1:wp2WsuBYj6j8wUdo3ToZsdxxixbvQNAHqVJrTgi5E5M= google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 h1:zciRKQ4kBpFgpfC5QQCVtnnNAcLIqweL7plyZRQHVpI= google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= From b24a75b64e6a390bd9349dd10b88b0b753de1b86 Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Mon, 11 Nov 2024 16:28:03 +0100 Subject: [PATCH 11/39] Updates --- go.mod | 36 +++++++++---------- go.sum | 96 ++++++++++++++++++++++++-------------------------- server/main.go | 2 +- 3 files changed, 65 insertions(+), 69 deletions(-) diff --git a/go.mod b/go.mod index 3cf3e0b..f712d1e 100644 --- a/go.mod +++ b/go.mod @@ -12,8 +12,8 @@ require ( github.com/json-iterator/go v1.1.12 github.com/lib/pq v1.10.9 github.com/lopezator/migrator v0.3.1 - github.com/metal-stack/metal-lib v0.18.4 - github.com/metal-stack/security v0.8.3 + github.com/metal-stack/metal-lib v0.19.0 + github.com/metal-stack/security v0.9.0 github.com/metal-stack/v v1.0.3 github.com/prometheus/client_golang v1.20.5 github.com/spf13/cobra v1.8.1 @@ -21,9 +21,9 @@ require ( github.com/stretchr/testify v1.9.0 github.com/testcontainers/testcontainers-go v0.34.0 github.com/testcontainers/testcontainers-go/modules/postgres v0.34.0 - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.56.0 - go.opentelemetry.io/otel/trace v1.31.0 - google.golang.org/grpc v1.67.1 + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.57.0 + go.opentelemetry.io/otel/trace v1.32.0 + google.golang.org/grpc v1.68.0 google.golang.org/protobuf v1.35.1 sigs.k8s.io/yaml v1.4.0 ) @@ -59,7 +59,7 @@ require ( github.com/go-openapi/swag v0.23.0 // indirect github.com/goccy/go-json v0.10.3 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v4 v4.5.1 // indirect + github.com/golang-jwt/jwt/v5 v5.2.1 // indirect github.com/gorilla/mux v1.8.1 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/icza/dyno v0.0.0-20230330125955-09f820a8d9c0 // indirect @@ -115,19 +115,19 @@ require ( github.com/tklauser/numcpus v0.9.0 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect go.mongodb.org/mongo-driver v1.17.1 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0 // indirect - go.opentelemetry.io/otel v1.31.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0 // indirect - go.opentelemetry.io/otel/metric v1.31.0 // indirect - go.opentelemetry.io/otel/sdk v1.31.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.57.0 // indirect + go.opentelemetry.io/otel v1.32.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0 // indirect + go.opentelemetry.io/otel/metric v1.32.0 // indirect + go.opentelemetry.io/otel/sdk v1.32.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.28.0 // indirect - golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c // indirect - golang.org/x/net v0.30.0 // indirect - golang.org/x/oauth2 v0.23.0 // indirect - golang.org/x/sync v0.8.0 // indirect - golang.org/x/sys v0.26.0 // indirect - golang.org/x/text v0.19.0 // indirect + golang.org/x/crypto v0.29.0 // indirect + golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect + golang.org/x/net v0.31.0 // indirect + golang.org/x/oauth2 v0.24.0 // indirect + golang.org/x/sync v0.9.0 // indirect + golang.org/x/sys v0.27.0 // indirect + golang.org/x/text v0.20.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect diff --git a/go.sum b/go.sum index 0f577e7..cde5cf3 100644 --- a/go.sum +++ b/go.sum @@ -51,8 +51,6 @@ github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2 github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= -github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= -github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/go-jose/go-jose/v4 v4.0.4 h1:VsjPI33J0SB9vQM6PLmNjoHqMQNGPiZ0rHL7Ni7Q6/E= @@ -91,10 +89,10 @@ github.com/goccy/go-json v0.10.3 h1:KZ5WoDbxAIgm2HNbYckL0se1fHD6rz5j4ywS6ebzDqA= github.com/goccy/go-json v0.10.3/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= -github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= -github.com/golang-jwt/jwt/v4 v4.5.1 h1:JdqV9zKUdtaa9gdPlywC3aeoEsR681PlKC+4F5gQgeo= -github.com/golang-jwt/jwt/v4 v4.5.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk= +github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= @@ -107,8 +105,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpS github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 h1:asbCHRVmodnJTuQ3qamDwqVOIjwqUPTYmYuemVOx+Ys= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0/go.mod h1:ggCgvZ2r7uOoQjOyu2Y1NhHmEPPzzuhWgcza5M1Ji1I= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0 h1:ad0vkEBuk23VJzZR9nkLVG0YAoN9coASF1GusYX6AlU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0/go.mod h1:igFoXX2ELCW06bol23DWPB5BEWfZISOzSP5K2sbLea0= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/icza/dyno v0.0.0-20230330125955-09f820a8d9c0 h1:nHoRIX8iXob3Y2kdt9KsjyIb7iApSvb3vgsd93xb5Ow= @@ -179,10 +177,10 @@ github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0 github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= -github.com/metal-stack/metal-lib v0.18.4 h1:7HnfSwSbrKNHU+i6i79YFk/eeuhBhwIEHWpGqS7pYCc= -github.com/metal-stack/metal-lib v0.18.4/go.mod h1:Ctyi6zaXFr2NVrQZLFsDLnFCzupKnYErTtgRFKAsnbw= -github.com/metal-stack/security v0.8.3 h1:1Ugps5Ju9chCi3rkIPBXWLOLJKsIWnoLLzijsN6s8Bg= -github.com/metal-stack/security v0.8.3/go.mod h1:4+UAI/rqNbASyskDE/Ll/YoCW3kv/Q3pCW+CDwmB9YY= +github.com/metal-stack/metal-lib v0.19.0 h1:4yBnp/jPGgX9KeCje3A4MFL2oDjgjOjgsIK391LltRI= +github.com/metal-stack/metal-lib v0.19.0/go.mod h1:fCMaWwVGA/xAoGvBk72/nfzqBkHly0iOzrWpc55Fau4= +github.com/metal-stack/security v0.9.0 h1:FYBXJfNJwUw2E0HBa+jay37XF7b6EikEuf4Mw8u04EY= +github.com/metal-stack/security v0.9.0/go.mod h1:6pQhJ4Kdu4BKnjB4zyzfK9skiHymqfrqt63Y+UmZBKA= github.com/metal-stack/v v1.0.3 h1:Sh2oBlnxrCUD+mVpzfC8HiqL045YWkxs0gpTvkjppqs= github.com/metal-stack/v v1.0.3/go.mod h1:YTahEu7/ishwpYKnp/VaW/7nf8+PInogkfGwLcGPdXg= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -286,22 +284,22 @@ github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.mongodb.org/mongo-driver v1.17.1 h1:Wic5cJIwJgSpBhe3lx3+/RybR5PiYRMpVFgO7cOHyIM= go.mongodb.org/mongo-driver v1.17.1/go.mod h1:wwWm/+BuOddhcq3n68LKRmgk2wXzmF6s0SFOa0GINL4= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.56.0 h1:yMkBS9yViCc7U7yeLzJPM2XizlfdVvBRSmsQDWu6qc0= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.56.0/go.mod h1:n8MR6/liuGB5EmTETUBeU5ZgqMOlqKRxUaqPQBOANZ8= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0 h1:UP6IpuHFkUgOQL9FFQFrZ+5LiwhhYRbi7VZSIx6Nj5s= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0/go.mod h1:qxuZLtbq5QDtdeSHsS7bcf6EH6uO6jUAgk764zd3rhM= -go.opentelemetry.io/otel v1.31.0 h1:NsJcKPIW0D0H3NgzPDHmo0WW6SptzPdqg/L1zsIm2hY= -go.opentelemetry.io/otel v1.31.0/go.mod h1:O0C14Yl9FgkjqcCZAsE053C13OaddMYr/hz6clDkEJE= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0 h1:K0XaT3DwHAcV4nKLzcQvwAgSyisUghWoY20I7huthMk= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0/go.mod h1:B5Ki776z/MBnVha1Nzwp5arlzBbE3+1jk+pGmaP5HME= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0 h1:lUsI2TYsQw2r1IASwoROaCnjdj2cvC2+Jbxvk6nHnWU= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0/go.mod h1:2HpZxxQurfGxJlJDblybejHB6RX6pmExPNe517hREw4= -go.opentelemetry.io/otel/metric v1.31.0 h1:FSErL0ATQAmYHUIzSezZibnyVlft1ybhy4ozRPcF2fE= -go.opentelemetry.io/otel/metric v1.31.0/go.mod h1:C3dEloVbLuYoX41KpmAhOqNriGbA+qqH6PQ5E5mUfnY= -go.opentelemetry.io/otel/sdk v1.31.0 h1:xLY3abVHYZ5HSfOg3l2E5LUj2Cwva5Y7yGxnSW9H5Gk= -go.opentelemetry.io/otel/sdk v1.31.0/go.mod h1:TfRbMdhvxIIr/B2N2LQW2S5v9m3gOQ/08KsbbO5BPT0= -go.opentelemetry.io/otel/trace v1.31.0 h1:ffjsj1aRouKewfr85U2aGagJ46+MvodynlQ1HYdmJys= -go.opentelemetry.io/otel/trace v1.31.0/go.mod h1:TXZkRk7SM2ZQLtR6eoAWQFIHPvzQ06FJAsO1tJg480A= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.57.0 h1:qtFISDHKolvIxzSs0gIaiPUPR0Cucb0F2coHC7ZLdps= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.57.0/go.mod h1:Y+Pop1Q6hCOnETWTW4NROK/q1hv50hM7yDaUTjG8lp8= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.57.0 h1:DheMAlT6POBP+gh8RUH19EOTnQIor5QE0uSRPtzCpSw= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.57.0/go.mod h1:wZcGmeVO9nzP67aYSLDqXNWK87EZWhi7JWj1v7ZXf94= +go.opentelemetry.io/otel v1.32.0 h1:WnBN+Xjcteh0zdk01SVqV55d/m62NJLJdIyb4y/WO5U= +go.opentelemetry.io/otel v1.32.0/go.mod h1:00DCVSB0RQcnzlwyTfqtxSm+DRr9hpYrHjNGiBHVQIg= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0 h1:IJFEoHiytixx8cMiVAO+GmHR6Frwu+u5Ur8njpFO6Ac= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0/go.mod h1:3rHrKNtLIoS0oZwkY2vxi+oJcwFRWdtUyRII+so45p8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0 h1:cMyu9O88joYEaI47CnQkxO1XZdpoTF9fEnW2duIddhw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0/go.mod h1:6Am3rn7P9TVVeXYG+wtcGE7IE1tsQ+bP3AuWcKt/gOI= +go.opentelemetry.io/otel/metric v1.32.0 h1:xV2umtmNcThh2/a/aCP+h64Xx5wsj8qqnkYZktzNa0M= +go.opentelemetry.io/otel/metric v1.32.0/go.mod h1:jH7CIbbK6SH2V2wE16W05BHCtIDzauciCRLoc/SyMv8= +go.opentelemetry.io/otel/sdk v1.32.0 h1:RNxepc9vK59A8XsgZQouW8ue8Gkb4jpWtJm9ge5lEG4= +go.opentelemetry.io/otel/sdk v1.32.0/go.mod h1:LqgegDBjKMmb2GC6/PrTnteJG39I8/vJCAP9LlJXEjU= +go.opentelemetry.io/otel/trace v1.32.0 h1:WIC9mYrXf8TmY/EXuULKc8hR17vE+Hjv2cssQDe03fM= +go.opentelemetry.io/otel/trace v1.32.0/go.mod h1:+i4rkvCraA+tG6AzwloGaCtkx53Fa+L+V8e9a7YvhT8= go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= @@ -309,25 +307,25 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw= -golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= -golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c h1:7dEasQXItcW1xKJ2+gg5VOiBnqWrJc+rq0DPKyvvdbY= -golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:NQtJDoLvd6faHhE7m4T/1IY708gDefGGjR/iUW8yQQ8= +golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= +golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= +golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= -golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= -golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= -golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= +golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= +golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= -golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= +golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -336,14 +334,14 @@ golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= -golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24= -golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M= +golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= +golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= +golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= -golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= +golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -355,14 +353,12 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 h1:9+tzLLstTlPTRyJTh+ah5wIMsBW5c4tQwGTN3thOW9Y= -google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9 h1:T6rh4haD3GVYsgEfWExoCZA2o2FmbNyKpTuAxbEFPTg= -google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9/go.mod h1:wp2WsuBYj6j8wUdo3ToZsdxxixbvQNAHqVJrTgi5E5M= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 h1:zciRKQ4kBpFgpfC5QQCVtnnNAcLIqweL7plyZRQHVpI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 h1:M0KvPgPmDZHPlbRbaNU1APr28TvwvvdUPlSv7PUvy8g= +google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:dguCy7UOdZhTvLzDyt15+rOrawrpM4q7DD9dQ1P11P4= google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= -google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= -google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= +google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= +google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/server/main.go b/server/main.go index 4e2352b..f171055 100644 --- a/server/main.go +++ b/server/main.go @@ -188,7 +188,7 @@ func run() { }) grpcPanicRecoveryHandler := func(p any) (err error) { panicsTotal.Inc() - logger.Error("msg", "recovered from panic", "panic", p, "stack", debug.Stack()) + logger.Error("recovered from panic", "panic", p, "stack", debug.Stack()) return status.Errorf(codes.Internal, "%s", p) } From 94274c410b81197e9a7a432b57cbce3eb4ad2fad Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Sat, 7 Dec 2024 13:32:07 +0100 Subject: [PATCH 12/39] Update deps --- api/v1/common.pb.go | 2 +- api/v1/iam.pb.go | 2 +- api/v1/meta.pb.go | 2 +- api/v1/project.pb.go | 2 +- api/v1/project_member.pb.go | 2 +- api/v1/quota.pb.go | 2 +- api/v1/tenant.pb.go | 2 +- api/v1/tenant_member.pb.go | 2 +- go.mod | 24 ++++++++--------- go.sum | 52 ++++++++++++++++++------------------- proto/Makefile | 2 +- proto/buf.gen.yaml | 2 +- 12 files changed, 48 insertions(+), 48 deletions(-) diff --git a/api/v1/common.pb.go b/api/v1/common.pb.go index 2d39994..1d76ba0 100644 --- a/api/v1/common.pb.go +++ b/api/v1/common.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.35.2 // protoc (unknown) // source: v1/common.proto diff --git a/api/v1/iam.pb.go b/api/v1/iam.pb.go index 8597181..0acec34 100644 --- a/api/v1/iam.pb.go +++ b/api/v1/iam.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.35.2 // protoc (unknown) // source: v1/iam.proto diff --git a/api/v1/meta.pb.go b/api/v1/meta.pb.go index c390af4..0226362 100644 --- a/api/v1/meta.pb.go +++ b/api/v1/meta.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.35.2 // protoc (unknown) // source: v1/meta.proto diff --git a/api/v1/project.pb.go b/api/v1/project.pb.go index f49e390..6585214 100644 --- a/api/v1/project.pb.go +++ b/api/v1/project.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.35.2 // protoc (unknown) // source: v1/project.proto diff --git a/api/v1/project_member.pb.go b/api/v1/project_member.pb.go index a27bc4e..73d89c8 100644 --- a/api/v1/project_member.pb.go +++ b/api/v1/project_member.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.35.2 // protoc (unknown) // source: v1/project_member.proto diff --git a/api/v1/quota.pb.go b/api/v1/quota.pb.go index 7054871..2f2bcc8 100644 --- a/api/v1/quota.pb.go +++ b/api/v1/quota.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.35.2 // protoc (unknown) // source: v1/quota.proto diff --git a/api/v1/tenant.pb.go b/api/v1/tenant.pb.go index 4410852..eba4580 100644 --- a/api/v1/tenant.pb.go +++ b/api/v1/tenant.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.35.2 // protoc (unknown) // source: v1/tenant.proto diff --git a/api/v1/tenant_member.pb.go b/api/v1/tenant_member.pb.go index 25be861..e080f7c 100644 --- a/api/v1/tenant_member.pb.go +++ b/api/v1/tenant_member.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.35.2 // protoc (unknown) // source: v1/tenant_member.proto diff --git a/go.mod b/go.mod index f712d1e..b7dc4b1 100644 --- a/go.mod +++ b/go.mod @@ -18,13 +18,13 @@ require ( github.com/prometheus/client_golang v1.20.5 github.com/spf13/cobra v1.8.1 github.com/spf13/viper v1.19.0 - github.com/stretchr/testify v1.9.0 + github.com/stretchr/testify v1.10.0 github.com/testcontainers/testcontainers-go v0.34.0 github.com/testcontainers/testcontainers-go/modules/postgres v0.34.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.57.0 go.opentelemetry.io/otel/trace v1.32.0 - google.golang.org/grpc v1.68.0 - google.golang.org/protobuf v1.35.1 + google.golang.org/grpc v1.68.1 + google.golang.org/protobuf v1.35.2 sigs.k8s.io/yaml v1.4.0 ) @@ -72,7 +72,7 @@ require ( github.com/lestrrat-go/httpcc v1.0.1 // indirect github.com/lestrrat-go/httprc v1.0.6 // indirect github.com/lestrrat-go/iter v1.0.2 // indirect - github.com/lestrrat-go/jwx/v2 v2.1.2 // indirect + github.com/lestrrat-go/jwx/v2 v2.1.3 // indirect github.com/lestrrat-go/option v1.0.1 // indirect github.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683 // indirect github.com/magiconair/properties v1.8.7 // indirect @@ -96,7 +96,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rogpeppe/go-internal v1.13.1 // indirect github.com/sagikazarmark/locafero v0.6.0 // indirect @@ -121,14 +121,14 @@ require ( go.opentelemetry.io/otel/metric v1.32.0 // indirect go.opentelemetry.io/otel/sdk v1.32.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.29.0 // indirect - golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect - golang.org/x/net v0.31.0 // indirect + golang.org/x/crypto v0.30.0 // indirect + golang.org/x/exp v0.0.0-20241204233417-43b7b7cde48d // indirect + golang.org/x/net v0.32.0 // indirect golang.org/x/oauth2 v0.24.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/text v0.20.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/text v0.21.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241206012308-a4fef0638583 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index cde5cf3..06f2ed0 100644 --- a/go.sum +++ b/go.sum @@ -161,8 +161,8 @@ github.com/lestrrat-go/httprc v1.0.6 h1:qgmgIRhpvBqexMJjA/PmwSvhNk679oqD1RbovdCG github.com/lestrrat-go/httprc v1.0.6/go.mod h1:mwwz3JMTPBjHUkkDv/IGJ39aALInZLrhBp0X7KGUZlo= github.com/lestrrat-go/iter v1.0.2 h1:gMXo1q4c2pHmC3dn8LzRhJfP1ceCbgSiT9lUydIzltI= github.com/lestrrat-go/iter v1.0.2/go.mod h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4= -github.com/lestrrat-go/jwx/v2 v2.1.2 h1:6poete4MPsO8+LAEVhpdrNI4Xp2xdiafgl2RD89moBc= -github.com/lestrrat-go/jwx/v2 v2.1.2/go.mod h1:pO+Gz9whn7MPdbsqSJzG8TlEpMZCwQDXnFJ+zsUVh8Y= +github.com/lestrrat-go/jwx/v2 v2.1.3 h1:Ud4lb2QuxRClYAmRleF50KrbKIoM1TddXgBrneT5/Jo= +github.com/lestrrat-go/jwx/v2 v2.1.3/go.mod h1:q6uFgbgZfEmQrfJfrCo90QcQOcXFMfbI/fO0NqRtvZo= github.com/lestrrat-go/option v1.0.1 h1:oAzP2fvZGQKWkvHa1/SAcFolBEca1oN+mQ7eooNBEYU= github.com/lestrrat-go/option v1.0.1/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= @@ -225,8 +225,8 @@ github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+ github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= @@ -266,8 +266,8 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/testcontainers/testcontainers-go v0.34.0 h1:5fbgF0vIN5u+nD3IWabQwRybuB4GY8G2HHgCkbMzMHo= @@ -307,25 +307,25 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= -golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= -golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/exp v0.0.0-20241204233417-43b7b7cde48d h1:0olWaB5pg3+oychR51GUVCEsGkeCU/2JxjBgIo4f3M0= +golang.org/x/exp v0.0.0-20241204233417-43b7b7cde48d/go.mod h1:qj5a5QZpwLU2NLQudwIN5koi3beDhSAlJwa67PuM98c= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -334,14 +334,14 @@ golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -355,12 +355,12 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 h1:9+tzLLstTlPTRyJTh+ah5wIMsBW5c4tQwGTN3thOW9Y= google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 h1:M0KvPgPmDZHPlbRbaNU1APr28TvwvvdUPlSv7PUvy8g= google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:dguCy7UOdZhTvLzDyt15+rOrawrpM4q7DD9dQ1P11P4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= -google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= -google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241206012308-a4fef0638583 h1:IfdSdTcLFy4lqUQrQJLkLt1PB+AsqVz6lwkWPzWEz10= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241206012308-a4fef0638583/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= +google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io= +google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/proto/Makefile b/proto/Makefile index 7e0ff27..ae2e03d 100644 --- a/proto/Makefile +++ b/proto/Makefile @@ -1,5 +1,5 @@ MAKEFLAGS += --no-print-directory -BUF_VERSION := 1.46.0 +BUF_VERSION := 1.47.2 _buf: docker run --rm \ diff --git a/proto/buf.gen.yaml b/proto/buf.gen.yaml index 1257939..8ae6dde 100644 --- a/proto/buf.gen.yaml +++ b/proto/buf.gen.yaml @@ -8,6 +8,6 @@ plugins: - remote: buf.build/grpc/go:v1.5.1 out: ../api opt: paths=source_relative,require_unimplemented_servers=false - - remote: buf.build/protocolbuffers/go:v1.35.1 + - remote: buf.build/protocolbuffers/go:v1.35.2 out: ../api opt: paths=source_relative From 935baf170e51171b6fb0244ed005058d47d8719d Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Tue, 7 Jan 2025 08:28:37 +0100 Subject: [PATCH 13/39] Update protoc --- api/v1/common.pb.go | 11 ++- api/v1/iam.pb.go | 45 +++++----- api/v1/meta.pb.go | 23 +++-- api/v1/project.pb.go | 89 +++++++++---------- api/v1/project_member.pb.go | 68 +++++++-------- api/v1/quota.pb.go | 20 ++--- api/v1/tenant.pb.go | 169 ++++++++++++++++-------------------- api/v1/tenant_member.pb.go | 66 +++++++------- go.mod | 50 +++++------ go.sum | 124 +++++++++++++------------- proto/Makefile | 2 +- proto/buf.gen.yaml | 2 +- 12 files changed, 311 insertions(+), 358 deletions(-) diff --git a/api/v1/common.pb.go b/api/v1/common.pb.go index 1d76ba0..e53b8be 100644 --- a/api/v1/common.pb.go +++ b/api/v1/common.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: v1/common.proto @@ -21,15 +21,14 @@ const ( ) type Paging struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // page is used for pagination, if unset only the first page is returned, // the list response contains then the page number for the next page. Page *uint64 `protobuf:"varint,1,opt,name=page,proto3,oneof" json:"page,omitempty"` // count is the number of results returned per page, if not given server side defaults apply - Count *uint64 `protobuf:"varint,2,opt,name=count,proto3,oneof" json:"count,omitempty"` + Count *uint64 `protobuf:"varint,2,opt,name=count,proto3,oneof" json:"count,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Paging) Reset() { diff --git a/api/v1/iam.pb.go b/api/v1/iam.pb.go index 0acec34..80f7580 100644 --- a/api/v1/iam.pb.go +++ b/api/v1/iam.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: v1/iam.proto @@ -21,13 +21,12 @@ const ( ) type IAMConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + IssuerConfig *IssuerConfig `protobuf:"bytes,1,opt,name=issuer_config,json=issuerConfig,proto3" json:"issuer_config,omitempty"` + IdmConfig *IDMConfig `protobuf:"bytes,2,opt,name=idm_config,json=idmConfig,proto3" json:"idm_config,omitempty"` + GroupConfig *NamespaceGroupConfig `protobuf:"bytes,3,opt,name=group_config,json=groupConfig,proto3" json:"group_config,omitempty"` unknownFields protoimpl.UnknownFields - - IssuerConfig *IssuerConfig `protobuf:"bytes,1,opt,name=issuer_config,json=issuerConfig,proto3" json:"issuer_config,omitempty"` - IdmConfig *IDMConfig `protobuf:"bytes,2,opt,name=idm_config,json=idmConfig,proto3" json:"idm_config,omitempty"` - GroupConfig *NamespaceGroupConfig `protobuf:"bytes,3,opt,name=group_config,json=groupConfig,proto3" json:"group_config,omitempty"` + sizeCache protoimpl.SizeCache } func (x *IAMConfig) Reset() { @@ -82,12 +81,11 @@ func (x *IAMConfig) GetGroupConfig() *NamespaceGroupConfig { } type IssuerConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` + ClientId string `protobuf:"bytes,2,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` unknownFields protoimpl.UnknownFields - - Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` - ClientId string `protobuf:"bytes,2,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *IssuerConfig) Reset() { @@ -136,13 +134,12 @@ func (x *IssuerConfig) GetClientId() string { // mandatory config type IDMConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - IdmType string `protobuf:"bytes,1,opt,name=idm_type,json=idmType,proto3" json:"idm_type,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + IdmType string `protobuf:"bytes,1,opt,name=idm_type,json=idmType,proto3" json:"idm_type,omitempty"` // optional ConnectorConfig *ConnectorConfig `protobuf:"bytes,2,opt,name=connector_config,json=connectorConfig,proto3" json:"connector_config,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *IDMConfig) Reset() { @@ -191,10 +188,7 @@ func (x *IDMConfig) GetConnectorConfig() *ConnectorConfig { // Config for group-rolebinding-controller type NamespaceGroupConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // no action is taken or any namespace in this list ExcludedNamespaces string `protobuf:"bytes,1,opt,name=excluded_namespaces,json=excludedNamespaces,proto3" json:"excluded_namespaces,omitempty"` // for each element a RoleBinding is created in any Namespace - ClusterRoles are bound with this name @@ -209,6 +203,8 @@ type NamespaceGroupConfig struct { // The RoleBindings will created with this name. // oidc-{{ .Namespace }}-{{ .Group }} RolebindingNameTemplate string `protobuf:"bytes,5,opt,name=rolebinding_name_template,json=rolebindingNameTemplate,proto3" json:"rolebinding_name_template,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NamespaceGroupConfig) Reset() { @@ -278,10 +274,7 @@ func (x *NamespaceGroupConfig) GetRolebindingNameTemplate() string { // optional config if idm webhook is used to automatically create/delete groups/roles in the tenant idm type ConnectorConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // the following are all mandatory IdmApiUrl string `protobuf:"bytes,1,opt,name=idm_api_url,json=idmApiUrl,proto3" json:"idm_api_url,omitempty"` IdmApiUser string `protobuf:"bytes,2,opt,name=idm_api_user,json=idmApiUser,proto3" json:"idm_api_user,omitempty"` @@ -298,6 +291,8 @@ type ConnectorConfig struct { IdmReqSystem string `protobuf:"bytes,13,opt,name=idm_req_system,json=idmReqSystem,proto3" json:"idm_req_system,omitempty"` IdmReqUser string `protobuf:"bytes,14,opt,name=idm_req_user,json=idmReqUser,proto3" json:"idm_req_user,omitempty"` IdmReqEmail string `protobuf:"bytes,15,opt,name=idm_req_email,json=idmReqEmail,proto3" json:"idm_req_email,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ConnectorConfig) Reset() { diff --git a/api/v1/meta.pb.go b/api/v1/meta.pb.go index 0226362..1060ce4 100644 --- a/api/v1/meta.pb.go +++ b/api/v1/meta.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: v1/meta.proto @@ -22,18 +22,17 @@ const ( ) type Meta struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Kind string `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty"` + Apiversion string `protobuf:"bytes,3,opt,name=apiversion,proto3" json:"apiversion,omitempty"` + Version int64 `protobuf:"varint,4,opt,name=version,proto3" json:"version,omitempty"` + CreatedTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_time,json=createdTime,proto3" json:"created_time,omitempty"` + UpdatedTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_time,json=updatedTime,proto3" json:"updated_time,omitempty"` + Annotations map[string]string `protobuf:"bytes,7,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + Labels []string `protobuf:"bytes,8,rep,name=labels,proto3" json:"labels,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Kind string `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty"` - Apiversion string `protobuf:"bytes,3,opt,name=apiversion,proto3" json:"apiversion,omitempty"` - Version int64 `protobuf:"varint,4,opt,name=version,proto3" json:"version,omitempty"` - CreatedTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_time,json=createdTime,proto3" json:"created_time,omitempty"` - UpdatedTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_time,json=updatedTime,proto3" json:"updated_time,omitempty"` - Annotations map[string]string `protobuf:"bytes,7,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Labels []string `protobuf:"bytes,8,rep,name=labels,proto3" json:"labels,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Meta) Reset() { diff --git a/api/v1/project.pb.go b/api/v1/project.pb.go index 6585214..71d4189 100644 --- a/api/v1/project.pb.go +++ b/api/v1/project.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: v1/project.proto @@ -23,15 +23,14 @@ const ( // Project is the database model type Project struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Meta *Meta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + TenantId string `protobuf:"bytes,4,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` + Quotas *QuotaSet `protobuf:"bytes,5,opt,name=quotas,proto3" json:"quotas,omitempty"` unknownFields protoimpl.UnknownFields - - Meta *Meta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - TenantId string `protobuf:"bytes,4,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` - Quotas *QuotaSet `protobuf:"bytes,5,opt,name=quotas,proto3" json:"quotas,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Project) Reset() { @@ -100,11 +99,10 @@ func (x *Project) GetQuotas() *QuotaSet { } type ProjectCreateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Project *Project `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` unknownFields protoimpl.UnknownFields - - Project *Project `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ProjectCreateRequest) Reset() { @@ -145,11 +143,10 @@ func (x *ProjectCreateRequest) GetProject() *Project { } type ProjectUpdateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Project *Project `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` unknownFields protoimpl.UnknownFields - - Project *Project `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ProjectUpdateRequest) Reset() { @@ -190,11 +187,10 @@ func (x *ProjectUpdateRequest) GetProject() *Project { } type ProjectDeleteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ProjectDeleteRequest) Reset() { @@ -235,11 +231,10 @@ func (x *ProjectDeleteRequest) GetId() string { } type ProjectGetRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ProjectGetRequest) Reset() { @@ -280,12 +275,11 @@ func (x *ProjectGetRequest) GetId() string { } type ProjectGetHistoryRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + At *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=at,proto3" json:"at,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - At *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=at,proto3" json:"at,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ProjectGetHistoryRequest) Reset() { @@ -333,16 +327,15 @@ func (x *ProjectGetHistoryRequest) GetAt() *timestamppb.Timestamp { } type ProjectFindRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id *string `protobuf:"bytes,1,opt,name=id,proto3,oneof" json:"id,omitempty"` + Name *string `protobuf:"bytes,2,opt,name=name,proto3,oneof" json:"name,omitempty"` + Description *string `protobuf:"bytes,3,opt,name=description,proto3,oneof" json:"description,omitempty"` + TenantId *string `protobuf:"bytes,4,opt,name=tenant_id,json=tenantId,proto3,oneof" json:"tenant_id,omitempty"` + Paging *Paging `protobuf:"bytes,5,opt,name=paging,proto3" json:"paging,omitempty"` + Annotations map[string]string `protobuf:"bytes,6,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields - - Id *string `protobuf:"bytes,1,opt,name=id,proto3,oneof" json:"id,omitempty"` - Name *string `protobuf:"bytes,2,opt,name=name,proto3,oneof" json:"name,omitempty"` - Description *string `protobuf:"bytes,3,opt,name=description,proto3,oneof" json:"description,omitempty"` - TenantId *string `protobuf:"bytes,4,opt,name=tenant_id,json=tenantId,proto3,oneof" json:"tenant_id,omitempty"` - Paging *Paging `protobuf:"bytes,5,opt,name=paging,proto3" json:"paging,omitempty"` - Annotations map[string]string `protobuf:"bytes,6,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + sizeCache protoimpl.SizeCache } func (x *ProjectFindRequest) Reset() { @@ -418,11 +411,10 @@ func (x *ProjectFindRequest) GetAnnotations() map[string]string { } type ProjectResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Project *Project `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` unknownFields protoimpl.UnknownFields - - Project *Project `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ProjectResponse) Reset() { @@ -463,13 +455,12 @@ func (x *ProjectResponse) GetProject() *Project { } type ProjectListResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Projects []*Project `protobuf:"bytes,1,rep,name=projects,proto3" json:"projects,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Projects []*Project `protobuf:"bytes,1,rep,name=projects,proto3" json:"projects,omitempty"` // next_page_token is used for pagination, returns the next page to be fetched and must then be provided in the list request. - NextPage *uint64 `protobuf:"varint,2,opt,name=next_page,json=nextPage,proto3,oneof" json:"next_page,omitempty"` + NextPage *uint64 `protobuf:"varint,2,opt,name=next_page,json=nextPage,proto3,oneof" json:"next_page,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ProjectListResponse) Reset() { diff --git a/api/v1/project_member.pb.go b/api/v1/project_member.pb.go index 73d89c8..caeb311 100644 --- a/api/v1/project_member.pb.go +++ b/api/v1/project_member.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: v1/project_member.proto @@ -22,13 +22,12 @@ const ( // ProjectMember is the database model type ProjectMember struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Meta *Meta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` + ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + TenantId string `protobuf:"bytes,4,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` unknownFields protoimpl.UnknownFields - - Meta *Meta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` - ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` - TenantId string `protobuf:"bytes,4,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ProjectMember) Reset() { @@ -83,11 +82,10 @@ func (x *ProjectMember) GetTenantId() string { } type ProjectMemberCreateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ProjectMember *ProjectMember `protobuf:"bytes,1,opt,name=project_member,json=projectMember,proto3" json:"project_member,omitempty"` unknownFields protoimpl.UnknownFields - - ProjectMember *ProjectMember `protobuf:"bytes,1,opt,name=project_member,json=projectMember,proto3" json:"project_member,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ProjectMemberCreateRequest) Reset() { @@ -128,11 +126,10 @@ func (x *ProjectMemberCreateRequest) GetProjectMember() *ProjectMember { } type ProjectMemberUpdateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ProjectMember *ProjectMember `protobuf:"bytes,1,opt,name=project_member,json=projectMember,proto3" json:"project_member,omitempty"` unknownFields protoimpl.UnknownFields - - ProjectMember *ProjectMember `protobuf:"bytes,1,opt,name=project_member,json=projectMember,proto3" json:"project_member,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ProjectMemberUpdateRequest) Reset() { @@ -173,11 +170,10 @@ func (x *ProjectMemberUpdateRequest) GetProjectMember() *ProjectMember { } type ProjectMemberDeleteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ProjectMemberDeleteRequest) Reset() { @@ -218,11 +214,10 @@ func (x *ProjectMemberDeleteRequest) GetId() string { } type ProjectMemberGetRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ProjectMemberGetRequest) Reset() { @@ -263,13 +258,12 @@ func (x *ProjectMemberGetRequest) GetId() string { } type ProjectMemberFindRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ProjectId *string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3,oneof" json:"project_id,omitempty"` + TenantId *string `protobuf:"bytes,2,opt,name=tenant_id,json=tenantId,proto3,oneof" json:"tenant_id,omitempty"` + Annotations map[string]string `protobuf:"bytes,6,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields - - ProjectId *string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3,oneof" json:"project_id,omitempty"` - TenantId *string `protobuf:"bytes,2,opt,name=tenant_id,json=tenantId,proto3,oneof" json:"tenant_id,omitempty"` - Annotations map[string]string `protobuf:"bytes,6,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + sizeCache protoimpl.SizeCache } func (x *ProjectMemberFindRequest) Reset() { @@ -324,11 +318,10 @@ func (x *ProjectMemberFindRequest) GetAnnotations() map[string]string { } type ProjectMemberResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ProjectMember *ProjectMember `protobuf:"bytes,1,opt,name=project_member,json=projectMember,proto3" json:"project_member,omitempty"` unknownFields protoimpl.UnknownFields - - ProjectMember *ProjectMember `protobuf:"bytes,1,opt,name=project_member,json=projectMember,proto3" json:"project_member,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ProjectMemberResponse) Reset() { @@ -369,11 +362,10 @@ func (x *ProjectMemberResponse) GetProjectMember() *ProjectMember { } type ProjectMemberListResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ProjectMembers []*ProjectMember `protobuf:"bytes,1,rep,name=project_members,json=projectMembers,proto3" json:"project_members,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + ProjectMembers []*ProjectMember `protobuf:"bytes,1,rep,name=project_members,json=projectMembers,proto3" json:"project_members,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ProjectMemberListResponse) Reset() { diff --git a/api/v1/quota.pb.go b/api/v1/quota.pb.go index 2f2bcc8..c7567b9 100644 --- a/api/v1/quota.pb.go +++ b/api/v1/quota.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: v1/quota.proto @@ -25,10 +25,7 @@ const ( // whatever quota is reached first counts // it always defines the max amount of this type type QuotaSet struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // cluster the amount of clusters Cluster *Quota `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` // machine the amount of machines @@ -36,7 +33,9 @@ type QuotaSet struct { // ip the amount of acquired ip´s Ip *Quota `protobuf:"bytes,3,opt,name=ip,proto3" json:"ip,omitempty"` // project the amount of projects of a tenant - Project *Quota `protobuf:"bytes,4,opt,name=project,proto3" json:"project,omitempty"` + Project *Quota `protobuf:"bytes,4,opt,name=project,proto3" json:"project,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *QuotaSet) Reset() { @@ -99,12 +98,11 @@ func (x *QuotaSet) GetProject() *Quota { // Quota is the actual maximum amount type Quota struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // quota is the maximum amount for the current QuotaSet, can be nil - Quota *int32 `protobuf:"varint,1,opt,name=quota,proto3,oneof" json:"quota,omitempty"` + Quota *int32 `protobuf:"varint,1,opt,name=quota,proto3,oneof" json:"quota,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Quota) Reset() { diff --git a/api/v1/tenant.pb.go b/api/v1/tenant.pb.go index eba4580..4a1bf5b 100644 --- a/api/v1/tenant.pb.go +++ b/api/v1/tenant.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: v1/tenant.proto @@ -22,12 +22,11 @@ const ( ) type FindParticipatingProjectsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` - IncludeInherited *bool `protobuf:"varint,2,opt,name=include_inherited,json=includeInherited,proto3,oneof" json:"include_inherited,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` + IncludeInherited *bool `protobuf:"varint,2,opt,name=include_inherited,json=includeInherited,proto3,oneof" json:"include_inherited,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FindParticipatingProjectsRequest) Reset() { @@ -75,12 +74,11 @@ func (x *FindParticipatingProjectsRequest) GetIncludeInherited() bool { } type FindParticipatingTenantsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` - IncludeInherited *bool `protobuf:"varint,2,opt,name=include_inherited,json=includeInherited,proto3,oneof" json:"include_inherited,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` + IncludeInherited *bool `protobuf:"varint,2,opt,name=include_inherited,json=includeInherited,proto3,oneof" json:"include_inherited,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FindParticipatingTenantsRequest) Reset() { @@ -128,12 +126,11 @@ func (x *FindParticipatingTenantsRequest) GetIncludeInherited() bool { } type ListTenantMembersRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` - IncludeInherited *bool `protobuf:"varint,2,opt,name=include_inherited,json=includeInherited,proto3,oneof" json:"include_inherited,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` + IncludeInherited *bool `protobuf:"varint,2,opt,name=include_inherited,json=includeInherited,proto3,oneof" json:"include_inherited,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListTenantMembersRequest) Reset() { @@ -181,11 +178,10 @@ func (x *ListTenantMembersRequest) GetIncludeInherited() bool { } type ListTenantMembersResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Tenants []*TenantWithMembershipAnnotations `protobuf:"bytes,1,rep,name=tenants,proto3" json:"tenants,omitempty"` unknownFields protoimpl.UnknownFields - - Tenants []*TenantWithMembershipAnnotations `protobuf:"bytes,1,rep,name=tenants,proto3" json:"tenants,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListTenantMembersResponse) Reset() { @@ -226,11 +222,10 @@ func (x *ListTenantMembersResponse) GetTenants() []*TenantWithMembershipAnnotati } type FindParticipatingProjectsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Projects []*ProjectWithMembershipAnnotations `protobuf:"bytes,1,rep,name=projects,proto3" json:"projects,omitempty"` unknownFields protoimpl.UnknownFields - - Projects []*ProjectWithMembershipAnnotations `protobuf:"bytes,1,rep,name=projects,proto3" json:"projects,omitempty"` + sizeCache protoimpl.SizeCache } func (x *FindParticipatingProjectsResponse) Reset() { @@ -271,11 +266,10 @@ func (x *FindParticipatingProjectsResponse) GetProjects() []*ProjectWithMembersh } type FindParticipatingTenantsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Tenants []*TenantWithMembershipAnnotations `protobuf:"bytes,1,rep,name=tenants,proto3" json:"tenants,omitempty"` unknownFields protoimpl.UnknownFields - - Tenants []*TenantWithMembershipAnnotations `protobuf:"bytes,1,rep,name=tenants,proto3" json:"tenants,omitempty"` + sizeCache protoimpl.SizeCache } func (x *FindParticipatingTenantsResponse) Reset() { @@ -316,13 +310,12 @@ func (x *FindParticipatingTenantsResponse) GetTenants() []*TenantWithMembershipA } type ProjectWithMembershipAnnotations struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Project *Project `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - ProjectAnnotations map[string]string `protobuf:"bytes,2,rep,name=project_annotations,json=projectAnnotations,proto3" json:"project_annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - TenantAnnotations map[string]string `protobuf:"bytes,3,rep,name=tenant_annotations,json=tenantAnnotations,proto3" json:"tenant_annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + state protoimpl.MessageState `protogen:"open.v1"` + Project *Project `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + ProjectAnnotations map[string]string `protobuf:"bytes,2,rep,name=project_annotations,json=projectAnnotations,proto3" json:"project_annotations,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + TenantAnnotations map[string]string `protobuf:"bytes,3,rep,name=tenant_annotations,json=tenantAnnotations,proto3" json:"tenant_annotations,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ProjectWithMembershipAnnotations) Reset() { @@ -377,15 +370,14 @@ func (x *ProjectWithMembershipAnnotations) GetTenantAnnotations() map[string]str } type TenantWithMembershipAnnotations struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Tenant *Tenant `protobuf:"bytes,1,opt,name=tenant,proto3" json:"tenant,omitempty"` - ProjectAnnotations map[string]string `protobuf:"bytes,2,rep,name=project_annotations,json=projectAnnotations,proto3" json:"project_annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - TenantAnnotations map[string]string `protobuf:"bytes,3,rep,name=tenant_annotations,json=tenantAnnotations,proto3" json:"tenant_annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + state protoimpl.MessageState `protogen:"open.v1"` + Tenant *Tenant `protobuf:"bytes,1,opt,name=tenant,proto3" json:"tenant,omitempty"` + ProjectAnnotations map[string]string `protobuf:"bytes,2,rep,name=project_annotations,json=projectAnnotations,proto3" json:"project_annotations,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + TenantAnnotations map[string]string `protobuf:"bytes,3,rep,name=tenant_annotations,json=tenantAnnotations,proto3" json:"tenant_annotations,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // ProjectIDs contains all project IDs of this tenant for which an explicit project membership exists - ProjectIds []string `protobuf:"bytes,4,rep,name=project_ids,json=projectIds,proto3" json:"project_ids,omitempty"` + ProjectIds []string `protobuf:"bytes,4,rep,name=project_ids,json=projectIds,proto3" json:"project_ids,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TenantWithMembershipAnnotations) Reset() { @@ -447,16 +439,15 @@ func (x *TenantWithMembershipAnnotations) GetProjectIds() []string { } type Tenant struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Meta *Meta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + DefaultQuotas *QuotaSet `protobuf:"bytes,4,opt,name=default_quotas,json=defaultQuotas,proto3" json:"default_quotas,omitempty"` + Quotas *QuotaSet `protobuf:"bytes,5,opt,name=quotas,proto3" json:"quotas,omitempty"` + IamConfig *IAMConfig `protobuf:"bytes,6,opt,name=iam_config,json=iamConfig,proto3" json:"iam_config,omitempty"` unknownFields protoimpl.UnknownFields - - Meta *Meta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - DefaultQuotas *QuotaSet `protobuf:"bytes,4,opt,name=default_quotas,json=defaultQuotas,proto3" json:"default_quotas,omitempty"` - Quotas *QuotaSet `protobuf:"bytes,5,opt,name=quotas,proto3" json:"quotas,omitempty"` - IamConfig *IAMConfig `protobuf:"bytes,6,opt,name=iam_config,json=iamConfig,proto3" json:"iam_config,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Tenant) Reset() { @@ -532,11 +523,10 @@ func (x *Tenant) GetIamConfig() *IAMConfig { } type TenantCreateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Tenant *Tenant `protobuf:"bytes,1,opt,name=tenant,proto3" json:"tenant,omitempty"` unknownFields protoimpl.UnknownFields - - Tenant *Tenant `protobuf:"bytes,1,opt,name=tenant,proto3" json:"tenant,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TenantCreateRequest) Reset() { @@ -577,11 +567,10 @@ func (x *TenantCreateRequest) GetTenant() *Tenant { } type TenantUpdateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Tenant *Tenant `protobuf:"bytes,1,opt,name=tenant,proto3" json:"tenant,omitempty"` unknownFields protoimpl.UnknownFields - - Tenant *Tenant `protobuf:"bytes,1,opt,name=tenant,proto3" json:"tenant,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TenantUpdateRequest) Reset() { @@ -622,11 +611,10 @@ func (x *TenantUpdateRequest) GetTenant() *Tenant { } type TenantDeleteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TenantDeleteRequest) Reset() { @@ -667,11 +655,10 @@ func (x *TenantDeleteRequest) GetId() string { } type TenantGetRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TenantGetRequest) Reset() { @@ -712,12 +699,11 @@ func (x *TenantGetRequest) GetId() string { } type TenantGetHistoryRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + At *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=at,proto3" json:"at,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - At *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=at,proto3" json:"at,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TenantGetHistoryRequest) Reset() { @@ -765,14 +751,13 @@ func (x *TenantGetHistoryRequest) GetAt() *timestamppb.Timestamp { } type TenantFindRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id *string `protobuf:"bytes,1,opt,name=id,proto3,oneof" json:"id,omitempty"` + Name *string `protobuf:"bytes,2,opt,name=name,proto3,oneof" json:"name,omitempty"` + Paging *Paging `protobuf:"bytes,3,opt,name=paging,proto3" json:"paging,omitempty"` + Annotations map[string]string `protobuf:"bytes,4,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields - - Id *string `protobuf:"bytes,1,opt,name=id,proto3,oneof" json:"id,omitempty"` - Name *string `protobuf:"bytes,2,opt,name=name,proto3,oneof" json:"name,omitempty"` - Paging *Paging `protobuf:"bytes,3,opt,name=paging,proto3" json:"paging,omitempty"` - Annotations map[string]string `protobuf:"bytes,4,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + sizeCache protoimpl.SizeCache } func (x *TenantFindRequest) Reset() { @@ -834,11 +819,10 @@ func (x *TenantFindRequest) GetAnnotations() map[string]string { } type TenantResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Tenant *Tenant `protobuf:"bytes,1,opt,name=tenant,proto3" json:"tenant,omitempty"` unknownFields protoimpl.UnknownFields - - Tenant *Tenant `protobuf:"bytes,1,opt,name=tenant,proto3" json:"tenant,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TenantResponse) Reset() { @@ -879,13 +863,12 @@ func (x *TenantResponse) GetTenant() *Tenant { } type TenantListResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Tenants []*Tenant `protobuf:"bytes,1,rep,name=tenants,proto3" json:"tenants,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Tenants []*Tenant `protobuf:"bytes,1,rep,name=tenants,proto3" json:"tenants,omitempty"` // next_page is used for pagination, returns the next page to be fetched and must then be provided in the list request. - NextPage *uint64 `protobuf:"varint,2,opt,name=next_page,json=nextPage,proto3,oneof" json:"next_page,omitempty"` + NextPage *uint64 `protobuf:"varint,2,opt,name=next_page,json=nextPage,proto3,oneof" json:"next_page,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TenantListResponse) Reset() { diff --git a/api/v1/tenant_member.pb.go b/api/v1/tenant_member.pb.go index e080f7c..9ed50cf 100644 --- a/api/v1/tenant_member.pb.go +++ b/api/v1/tenant_member.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.2 +// protoc-gen-go v1.36.1 // protoc (unknown) // source: v1/tenant_member.proto @@ -22,15 +22,14 @@ const ( // TenantMember is the database model type TenantMember struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Meta *Meta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Meta *Meta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` // TenantId is the id of the parent tenant TenantId string `protobuf:"bytes,2,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` // MemberId is the id of the member tenant - MemberId string `protobuf:"bytes,3,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty"` + MemberId string `protobuf:"bytes,3,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TenantMember) Reset() { @@ -85,11 +84,10 @@ func (x *TenantMember) GetMemberId() string { } type TenantMemberCreateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TenantMember *TenantMember `protobuf:"bytes,1,opt,name=tenant_member,json=tenantMember,proto3" json:"tenant_member,omitempty"` unknownFields protoimpl.UnknownFields - - TenantMember *TenantMember `protobuf:"bytes,1,opt,name=tenant_member,json=tenantMember,proto3" json:"tenant_member,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TenantMemberCreateRequest) Reset() { @@ -130,11 +128,10 @@ func (x *TenantMemberCreateRequest) GetTenantMember() *TenantMember { } type TenantMemberUpdateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TenantMember *TenantMember `protobuf:"bytes,1,opt,name=tenant_member,json=tenantMember,proto3" json:"tenant_member,omitempty"` unknownFields protoimpl.UnknownFields - - TenantMember *TenantMember `protobuf:"bytes,1,opt,name=tenant_member,json=tenantMember,proto3" json:"tenant_member,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TenantMemberUpdateRequest) Reset() { @@ -175,11 +172,10 @@ func (x *TenantMemberUpdateRequest) GetTenantMember() *TenantMember { } type TenantMemberDeleteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TenantMemberDeleteRequest) Reset() { @@ -220,11 +216,10 @@ func (x *TenantMemberDeleteRequest) GetId() string { } type TenantMemberGetRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TenantMemberGetRequest) Reset() { @@ -265,13 +260,12 @@ func (x *TenantMemberGetRequest) GetId() string { } type TenantMemberFindRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TenantId *string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3,oneof" json:"tenant_id,omitempty"` + MemberId *string `protobuf:"bytes,2,opt,name=member_id,json=memberId,proto3,oneof" json:"member_id,omitempty"` + Annotations map[string]string `protobuf:"bytes,6,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields - - TenantId *string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3,oneof" json:"tenant_id,omitempty"` - MemberId *string `protobuf:"bytes,2,opt,name=member_id,json=memberId,proto3,oneof" json:"member_id,omitempty"` - Annotations map[string]string `protobuf:"bytes,6,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + sizeCache protoimpl.SizeCache } func (x *TenantMemberFindRequest) Reset() { @@ -326,11 +320,10 @@ func (x *TenantMemberFindRequest) GetAnnotations() map[string]string { } type TenantMemberResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TenantMember *TenantMember `protobuf:"bytes,1,opt,name=tenant_member,json=tenantMember,proto3" json:"tenant_member,omitempty"` unknownFields protoimpl.UnknownFields - - TenantMember *TenantMember `protobuf:"bytes,1,opt,name=tenant_member,json=tenantMember,proto3" json:"tenant_member,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TenantMemberResponse) Reset() { @@ -371,11 +364,10 @@ func (x *TenantMemberResponse) GetTenantMember() *TenantMember { } type TenantMemberListResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TenantMembers []*TenantMember `protobuf:"bytes,1,rep,name=tenant_members,json=tenantMembers,proto3" json:"tenant_members,omitempty"` unknownFields protoimpl.UnknownFields - - TenantMembers []*TenantMember `protobuf:"bytes,1,rep,name=tenant_members,json=tenantMembers,proto3" json:"tenant_members,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TenantMemberListResponse) Reset() { diff --git a/go.mod b/go.mod index b7dc4b1..54197eb 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/google/go-cmp v0.6.0 github.com/google/uuid v1.6.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 - github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 + github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.2.0 github.com/jmoiron/sqlx v1.4.0 github.com/json-iterator/go v1.1.12 github.com/lib/pq v1.10.9 @@ -21,17 +21,17 @@ require ( github.com/stretchr/testify v1.10.0 github.com/testcontainers/testcontainers-go v0.34.0 github.com/testcontainers/testcontainers-go/modules/postgres v0.34.0 - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.57.0 - go.opentelemetry.io/otel/trace v1.32.0 - google.golang.org/grpc v1.68.1 - google.golang.org/protobuf v1.35.2 + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.58.0 + go.opentelemetry.io/otel/trace v1.33.0 + google.golang.org/grpc v1.69.2 + google.golang.org/protobuf v1.36.1 sigs.k8s.io/yaml v1.4.0 ) require ( dario.cat/mergo v1.0.1 // indirect github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 // indirect - github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect + github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/beorn7/perks v1.0.1 // indirect @@ -39,12 +39,12 @@ require ( github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/coreos/go-oidc/v3 v3.11.0 // indirect + github.com/coreos/go-oidc/v3 v3.12.0 // indirect github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect github.com/distribution/reference v0.6.0 // indirect - github.com/docker/docker v27.3.1+incompatible // indirect + github.com/docker/docker v27.4.1+incompatible // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect @@ -57,7 +57,7 @@ require ( github.com/go-openapi/runtime v0.28.0 // indirect github.com/go-openapi/strfmt v0.23.0 // indirect github.com/go-openapi/swag v0.23.0 // indirect - github.com/goccy/go-json v0.10.3 // indirect + github.com/goccy/go-json v0.10.4 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt/v5 v5.2.1 // indirect github.com/gorilla/mux v1.8.1 // indirect @@ -75,15 +75,15 @@ require ( github.com/lestrrat-go/jwx/v2 v2.1.3 // indirect github.com/lestrrat-go/option v1.0.1 // indirect github.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683 // indirect - github.com/magiconair/properties v1.8.7 // indirect - github.com/mailru/easyjson v0.7.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect + github.com/mailru/easyjson v0.9.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/patternmatcher v0.6.0 // indirect github.com/moby/sys/sequential v0.6.0 // indirect github.com/moby/sys/user v0.3.0 // indirect github.com/moby/sys/userns v0.1.0 // indirect - github.com/moby/term v0.5.0 // indirect + github.com/moby/term v0.5.2 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/morikuni/aec v1.0.0 // indirect @@ -98,7 +98,6 @@ require ( github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common v0.61.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect - github.com/rogpeppe/go-internal v1.13.1 // indirect github.com/sagikazarmark/locafero v0.6.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/segmentio/asm v1.2.0 // indirect @@ -107,7 +106,7 @@ require ( github.com/sirupsen/logrus v1.9.3 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/spf13/afero v1.11.0 // indirect - github.com/spf13/cast v1.7.0 // indirect + github.com/spf13/cast v1.7.1 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/subosito/gotenv v1.6.0 // indirect @@ -115,20 +114,21 @@ require ( github.com/tklauser/numcpus v0.9.0 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect go.mongodb.org/mongo-driver v1.17.1 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.57.0 // indirect - go.opentelemetry.io/otel v1.32.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0 // indirect - go.opentelemetry.io/otel/metric v1.32.0 // indirect - go.opentelemetry.io/otel/sdk v1.32.0 // indirect + go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 // indirect + go.opentelemetry.io/otel v1.33.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0 // indirect + go.opentelemetry.io/otel/metric v1.33.0 // indirect + go.opentelemetry.io/otel/sdk v1.33.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.30.0 // indirect - golang.org/x/exp v0.0.0-20241204233417-43b7b7cde48d // indirect - golang.org/x/net v0.32.0 // indirect - golang.org/x/oauth2 v0.24.0 // indirect + golang.org/x/crypto v0.32.0 // indirect + golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect + golang.org/x/net v0.34.0 // indirect + golang.org/x/oauth2 v0.25.0 // indirect golang.org/x/sync v0.10.0 // indirect - golang.org/x/sys v0.28.0 // indirect + golang.org/x/sys v0.29.0 // indirect golang.org/x/text v0.21.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241206012308-a4fef0638583 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250106144421-5f5ef82da422 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index 06f2ed0..e80cf1f 100644 --- a/go.sum +++ b/go.sum @@ -1,15 +1,15 @@ cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg= -cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= -cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= +cloud.google.com/go/compute/metadata v0.5.2 h1:UxK4uu/Tn+I3p2dYWTfiX4wva7aYlKixAHn3fyqngqo= +cloud.google.com/go/compute/metadata v0.5.2/go.mod h1:C66sj2AluDcIqakBq/M8lw8/ybHgOZqin2obFxa/E5k= dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 h1:He8afgbRMd7mFxO99hRNu+6tazq8nFF9lIwo9JFroBk= github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= -github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= -github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg= +github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/Masterminds/squirrel v1.5.4 h1:uUcX/aBc8O7Fg9kaISIUsHXdKuqehiXAMQTYX8afzqM= github.com/Masterminds/squirrel v1.5.4/go.mod h1:NNaOrjSoIDfDA40n7sr2tPNZRfjzjA400rg+riTZj10= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= @@ -26,8 +26,8 @@ github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/coreos/go-oidc/v3 v3.11.0 h1:Ia3MxdwpSw702YW0xgfmP1GVCMA9aEFWu12XUZ3/OtI= -github.com/coreos/go-oidc/v3 v3.11.0/go.mod h1:gE3LgjOgFoHi9a4ce4/tJczr0Ai2/BoDhf0r5lltWI0= +github.com/coreos/go-oidc/v3 v3.12.0 h1:sJk+8G2qq94rDI6ehZ71Bol3oUHy63qNYmkiSjrc/Jo= +github.com/coreos/go-oidc/v3 v3.12.0/go.mod h1:gE3LgjOgFoHi9a4ce4/tJczr0Ai2/BoDhf0r5lltWI0= github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= @@ -41,8 +41,8 @@ github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnN github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/docker v27.3.1+incompatible h1:KttF0XoteNTicmUtBO0L2tP+J7FGRFTjaEF4k6WdhfI= -github.com/docker/docker v27.3.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v27.4.1+incompatible h1:ZJvcY7gfwHn1JF48PfbyXg7Jyt9ZCWDW+GGXOIxEwp4= +github.com/docker/docker v27.4.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= @@ -85,8 +85,8 @@ github.com/go-openapi/validate v0.24.0 h1:LdfDKwNbpB6Vn40xhTdNZAnfLECL81w+VX3Bum github.com/go-openapi/validate v0.24.0/go.mod h1:iyeX1sEufmv3nPbBdX3ieNviWnOZaJ1+zquzJEf2BAQ= github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y= github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= -github.com/goccy/go-json v0.10.3 h1:KZ5WoDbxAIgm2HNbYckL0se1fHD6rz5j4ywS6ebzDqA= -github.com/goccy/go-json v0.10.3/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/goccy/go-json v0.10.4 h1:JSwxQzIqKfmFX1swYPpUThQZp/Ka4wzJdK0LWVytLPM= +github.com/goccy/go-json v0.10.4/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk= @@ -103,10 +103,10 @@ github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpSQwGEnkcRpTqNOIR6bJbR0gAorgP9CSALpRcKoAA= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0 h1:ad0vkEBuk23VJzZR9nkLVG0YAoN9coASF1GusYX6AlU= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0/go.mod h1:igFoXX2ELCW06bol23DWPB5BEWfZISOzSP5K2sbLea0= +github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.2.0 h1:kQ0NI7W1B3HwiN5gAYtY+XFItDPbLBwYRxAqbFTyDes= +github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.2.0/go.mod h1:zrT2dxOAjNFPRGjTUe2Xmb4q4YdUwVvQFV6xiCSf+z0= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0 h1:TmHmbvxPmaegwhDubVz0lICL0J5Ka2vwTzhoePEXsGE= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0/go.mod h1:qztMSjm835F2bXf+5HKAPIS5qsmQDqZna/PgVt4rWtI= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/icza/dyno v0.0.0-20230330125955-09f820a8d9c0 h1:nHoRIX8iXob3Y2kdt9KsjyIb7iApSvb3vgsd93xb5Ow= @@ -171,10 +171,10 @@ github.com/lopezator/migrator v0.3.1 h1:ZFPT6aC7+nGWkqhleynABZ6ftycSf6hmHHLOaryq github.com/lopezator/migrator v0.3.1/go.mod h1:X+lHDMZ9Ci3/KdbypJcQYFFwipVrJsX4fRCQ4QLauYk= github.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683 h1:7UMa6KCCMjZEMDtTVdcGu0B1GmmC7QJKiCCjyTAWQy0= github.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683/go.mod h1:ilwx/Dta8jXAgpFYFvSWEMwxmbWXyiUHkd5FwyKhb5k= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= -github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/magiconair/properties v1.8.9 h1:nWcCbLq1N2v/cpNsy5WvQ37Fb+YElfq20WJ/a8RkpQM= +github.com/magiconair/properties v1.8.9/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4= +github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU= github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/metal-stack/metal-lib v0.19.0 h1:4yBnp/jPGgX9KeCje3A4MFL2oDjgjOjgsIK391LltRI= @@ -195,8 +195,8 @@ github.com/moby/sys/user v0.3.0 h1:9ni5DlcW5an3SvRSx4MouotOygvzaXbaSrc/wGDFWPo= github.com/moby/sys/user v0.3.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs= github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g= github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28= -github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= -github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= +github.com/moby/term v0.5.2 h1:6qk3FJAFDs6i/q3W/pQ97SX192qKfZgGjCQqfCJkgzQ= +github.com/moby/term v0.5.2/go.mod h1:d3djjFCrjnB+fl8NJux+EJzu0msscUP+f8it8hPkFLc= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -250,8 +250,8 @@ github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9yS github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= -github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w= -github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y= +github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= @@ -284,43 +284,47 @@ github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.mongodb.org/mongo-driver v1.17.1 h1:Wic5cJIwJgSpBhe3lx3+/RybR5PiYRMpVFgO7cOHyIM= go.mongodb.org/mongo-driver v1.17.1/go.mod h1:wwWm/+BuOddhcq3n68LKRmgk2wXzmF6s0SFOa0GINL4= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.57.0 h1:qtFISDHKolvIxzSs0gIaiPUPR0Cucb0F2coHC7ZLdps= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.57.0/go.mod h1:Y+Pop1Q6hCOnETWTW4NROK/q1hv50hM7yDaUTjG8lp8= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.57.0 h1:DheMAlT6POBP+gh8RUH19EOTnQIor5QE0uSRPtzCpSw= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.57.0/go.mod h1:wZcGmeVO9nzP67aYSLDqXNWK87EZWhi7JWj1v7ZXf94= -go.opentelemetry.io/otel v1.32.0 h1:WnBN+Xjcteh0zdk01SVqV55d/m62NJLJdIyb4y/WO5U= -go.opentelemetry.io/otel v1.32.0/go.mod h1:00DCVSB0RQcnzlwyTfqtxSm+DRr9hpYrHjNGiBHVQIg= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0 h1:IJFEoHiytixx8cMiVAO+GmHR6Frwu+u5Ur8njpFO6Ac= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0/go.mod h1:3rHrKNtLIoS0oZwkY2vxi+oJcwFRWdtUyRII+so45p8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0 h1:cMyu9O88joYEaI47CnQkxO1XZdpoTF9fEnW2duIddhw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0/go.mod h1:6Am3rn7P9TVVeXYG+wtcGE7IE1tsQ+bP3AuWcKt/gOI= -go.opentelemetry.io/otel/metric v1.32.0 h1:xV2umtmNcThh2/a/aCP+h64Xx5wsj8qqnkYZktzNa0M= -go.opentelemetry.io/otel/metric v1.32.0/go.mod h1:jH7CIbbK6SH2V2wE16W05BHCtIDzauciCRLoc/SyMv8= -go.opentelemetry.io/otel/sdk v1.32.0 h1:RNxepc9vK59A8XsgZQouW8ue8Gkb4jpWtJm9ge5lEG4= -go.opentelemetry.io/otel/sdk v1.32.0/go.mod h1:LqgegDBjKMmb2GC6/PrTnteJG39I8/vJCAP9LlJXEjU= -go.opentelemetry.io/otel/trace v1.32.0 h1:WIC9mYrXf8TmY/EXuULKc8hR17vE+Hjv2cssQDe03fM= -go.opentelemetry.io/otel/trace v1.32.0/go.mod h1:+i4rkvCraA+tG6AzwloGaCtkx53Fa+L+V8e9a7YvhT8= -go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= -go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.58.0 h1:PS8wXpbyaDJQ2VDHHncMe9Vct0Zn1fEjpsjrLxGJoSc= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.58.0/go.mod h1:HDBUsEjOuRC0EzKZ1bSaRGZWUBAzo+MhAcUUORSr4D0= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 h1:yd02MEjBdJkG3uabWP9apV+OuWRIXGDuJEUJbOHmCFU= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0/go.mod h1:umTcuxiv1n/s/S6/c2AT/g2CQ7u5C59sHDNmfSwgz7Q= +go.opentelemetry.io/otel v1.33.0 h1:/FerN9bax5LoK51X/sI0SVYrjSE0/yUL7DpxW4K3FWw= +go.opentelemetry.io/otel v1.33.0/go.mod h1:SUUkR6csvUQl+yjReHu5uM3EtVV7MBm5FHKRlNx4I8I= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0 h1:Vh5HayB/0HHfOQA7Ctx69E/Y/DcQSMPpKANYVMQ7fBA= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0/go.mod h1:cpgtDBaqD/6ok/UG0jT15/uKjAY8mRA53diogHBg3UI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0 h1:wpMfgF8E1rkrT1Z6meFh1NDtownE9Ii3n3X2GJYjsaU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0/go.mod h1:wAy0T/dUbs468uOlkT31xjvqQgEVXv58BRFWEgn5v/0= +go.opentelemetry.io/otel/metric v1.33.0 h1:r+JOocAyeRVXD8lZpjdQjzMadVZp2M4WmQ+5WtEnklQ= +go.opentelemetry.io/otel/metric v1.33.0/go.mod h1:L9+Fyctbp6HFTddIxClbQkjtubW6O9QS3Ann/M82u6M= +go.opentelemetry.io/otel/sdk v1.33.0 h1:iax7M131HuAm9QkZotNHEfstof92xM+N8sr3uHXc2IM= +go.opentelemetry.io/otel/sdk v1.33.0/go.mod h1:A1Q5oi7/9XaMlIWzPSxLRWOI8nG3FnzHJNbiENQuihM= +go.opentelemetry.io/otel/sdk/metric v1.31.0 h1:i9hxxLJF/9kkvfHppyLL55aW7iIJz4JjxTeYusH7zMc= +go.opentelemetry.io/otel/sdk/metric v1.31.0/go.mod h1:CRInTMVvNhUKgSAMbKyTMxqOBC0zgyxzW55lZzX43Y8= +go.opentelemetry.io/otel/trace v1.33.0 h1:cCJuF7LRjUFso9LPnEAHJDB2pqzp+hbO8eu1qqW2d/s= +go.opentelemetry.io/otel/trace v1.33.0/go.mod h1:uIcdVUZMpTAmz0tI1z04GoVSezK37CbGV4fr1f2nBck= +go.opentelemetry.io/proto/otlp v1.4.0 h1:TA9WRvW6zMwP+Ssb6fLoUIuirti1gGbP28GcKG1jgeg= +go.opentelemetry.io/proto/otlp v1.4.0/go.mod h1:PPBWZIP98o2ElSqI35IHfu7hIhSwvc5N38Jw8pXuGFY= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= -golang.org/x/exp v0.0.0-20241204233417-43b7b7cde48d h1:0olWaB5pg3+oychR51GUVCEsGkeCU/2JxjBgIo4f3M0= -golang.org/x/exp v0.0.0-20241204233417-43b7b7cde48d/go.mod h1:qj5a5QZpwLU2NLQudwIN5koi3beDhSAlJwa67PuM98c= +golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= +golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= -golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= -golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= -golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/oauth2 v0.25.0 h1:CY4y7XT9v0cRI9oupztF8AgiIu99L/ksR/Xp/6jrZ70= +golang.org/x/oauth2 v0.25.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -334,10 +338,10 @@ golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= -golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= -golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg= +golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= @@ -353,14 +357,14 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 h1:9+tzLLstTlPTRyJTh+ah5wIMsBW5c4tQwGTN3thOW9Y= -google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 h1:M0KvPgPmDZHPlbRbaNU1APr28TvwvvdUPlSv7PUvy8g= -google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:dguCy7UOdZhTvLzDyt15+rOrawrpM4q7DD9dQ1P11P4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241206012308-a4fef0638583 h1:IfdSdTcLFy4lqUQrQJLkLt1PB+AsqVz6lwkWPzWEz10= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241206012308-a4fef0638583/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= -google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= -google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= -google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io= -google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 h1:CkkIfIt50+lT6NHAVoRYEyAvQGFM7xEwXUUywFvEb3Q= +google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576/go.mod h1:1R3kvZ1dtP3+4p4d3G8uJ8rFk/fWlScl38vanWACI08= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250106144421-5f5ef82da422 h1:3UsHvIr4Wc2aW4brOaSCmcxh9ksica6fHEr8P1XhkYw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250106144421-5f5ef82da422/go.mod h1:3ENsm/5D1mzDyhpzeRi1NR784I0BcofWBoSc5QqqMK4= +google.golang.org/grpc v1.69.2 h1:U3S9QEtbXC0bYNvRtcoklF3xGtLViumSYxWykJS+7AU= +google.golang.org/grpc v1.69.2/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4= +google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= +google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/proto/Makefile b/proto/Makefile index ae2e03d..b1c7833 100644 --- a/proto/Makefile +++ b/proto/Makefile @@ -1,5 +1,5 @@ MAKEFLAGS += --no-print-directory -BUF_VERSION := 1.47.2 +BUF_VERSION := 1.48.0 _buf: docker run --rm \ diff --git a/proto/buf.gen.yaml b/proto/buf.gen.yaml index 8ae6dde..da8a669 100644 --- a/proto/buf.gen.yaml +++ b/proto/buf.gen.yaml @@ -8,6 +8,6 @@ plugins: - remote: buf.build/grpc/go:v1.5.1 out: ../api opt: paths=source_relative,require_unimplemented_servers=false - - remote: buf.build/protocolbuffers/go:v1.35.2 + - remote: buf.build/protocolbuffers/go:v1.36.1 out: ../api opt: paths=source_relative From b8ef79d4f1f673c5a916184af448ce31e7813935 Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Tue, 7 Jan 2025 08:31:29 +0100 Subject: [PATCH 14/39] Update mockery --- Makefile | 4 ++-- api/v1/mocks/ProjectMemberServiceClient.go | 2 +- api/v1/mocks/ProjectMemberServiceServer.go | 2 +- api/v1/mocks/ProjectServiceClient.go | 2 +- api/v1/mocks/ProjectServiceServer.go | 2 +- api/v1/mocks/TenantMemberServiceClient.go | 2 +- api/v1/mocks/TenantMemberServiceServer.go | 2 +- api/v1/mocks/TenantServiceClient.go | 2 +- api/v1/mocks/TenantServiceServer.go | 2 +- api/v1/mocks/UnsafeProjectMemberServiceServer.go | 4 ++-- api/v1/mocks/UnsafeProjectServiceServer.go | 4 ++-- api/v1/mocks/UnsafeTenantMemberServiceServer.go | 4 ++-- api/v1/mocks/UnsafeTenantServiceServer.go | 4 ++-- pkg/datastore/mocks/Entity.go | 14 +++++++------- pkg/datastore/mocks/Storage.go | 16 +++++++++------- 15 files changed, 34 insertions(+), 32 deletions(-) diff --git a/Makefile b/Makefile index f202b0e..6a72146 100644 --- a/Makefile +++ b/Makefile @@ -59,13 +59,13 @@ mocks: --user $$(id -u):$$(id -g) \ -w /work \ -v ${PWD}:/work \ - vektra/mockery:v2.46.3 -r --keeptree --dir api/v1 --output api/v1/mocks --all + vektra/mockery:v2.50.4 -r --keeptree --dir api/v1 --output api/v1/mocks --all docker run --rm \ --user $$(id -u):$$(id -g) \ -w /work \ -v ${PWD}:/work \ - vektra/mockery:v2.46.3 -r --keeptree --dir pkg/datastore --output pkg/datastore/mocks --all + vektra/mockery:v2.50.4 -r --keeptree --dir pkg/datastore --output pkg/datastore/mocks --all .PHONY: postgres-up postgres-up: postgres-rm diff --git a/api/v1/mocks/ProjectMemberServiceClient.go b/api/v1/mocks/ProjectMemberServiceClient.go index cbe257e..572f506 100644 --- a/api/v1/mocks/ProjectMemberServiceClient.go +++ b/api/v1/mocks/ProjectMemberServiceClient.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.3. DO NOT EDIT. +// Code generated by mockery v2.50.4. DO NOT EDIT. package mocks diff --git a/api/v1/mocks/ProjectMemberServiceServer.go b/api/v1/mocks/ProjectMemberServiceServer.go index a1c83b1..488a644 100644 --- a/api/v1/mocks/ProjectMemberServiceServer.go +++ b/api/v1/mocks/ProjectMemberServiceServer.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.3. DO NOT EDIT. +// Code generated by mockery v2.50.4. DO NOT EDIT. package mocks diff --git a/api/v1/mocks/ProjectServiceClient.go b/api/v1/mocks/ProjectServiceClient.go index 08aa613..412d6a0 100644 --- a/api/v1/mocks/ProjectServiceClient.go +++ b/api/v1/mocks/ProjectServiceClient.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.3. DO NOT EDIT. +// Code generated by mockery v2.50.4. DO NOT EDIT. package mocks diff --git a/api/v1/mocks/ProjectServiceServer.go b/api/v1/mocks/ProjectServiceServer.go index fe13489..d51f864 100644 --- a/api/v1/mocks/ProjectServiceServer.go +++ b/api/v1/mocks/ProjectServiceServer.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.3. DO NOT EDIT. +// Code generated by mockery v2.50.4. DO NOT EDIT. package mocks diff --git a/api/v1/mocks/TenantMemberServiceClient.go b/api/v1/mocks/TenantMemberServiceClient.go index e331f63..0cde500 100644 --- a/api/v1/mocks/TenantMemberServiceClient.go +++ b/api/v1/mocks/TenantMemberServiceClient.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.3. DO NOT EDIT. +// Code generated by mockery v2.50.4. DO NOT EDIT. package mocks diff --git a/api/v1/mocks/TenantMemberServiceServer.go b/api/v1/mocks/TenantMemberServiceServer.go index f745fe2..9ec5c9f 100644 --- a/api/v1/mocks/TenantMemberServiceServer.go +++ b/api/v1/mocks/TenantMemberServiceServer.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.3. DO NOT EDIT. +// Code generated by mockery v2.50.4. DO NOT EDIT. package mocks diff --git a/api/v1/mocks/TenantServiceClient.go b/api/v1/mocks/TenantServiceClient.go index a3843be..c561b3b 100644 --- a/api/v1/mocks/TenantServiceClient.go +++ b/api/v1/mocks/TenantServiceClient.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.3. DO NOT EDIT. +// Code generated by mockery v2.50.4. DO NOT EDIT. package mocks diff --git a/api/v1/mocks/TenantServiceServer.go b/api/v1/mocks/TenantServiceServer.go index 08ade65..ef88218 100644 --- a/api/v1/mocks/TenantServiceServer.go +++ b/api/v1/mocks/TenantServiceServer.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.3. DO NOT EDIT. +// Code generated by mockery v2.50.4. DO NOT EDIT. package mocks diff --git a/api/v1/mocks/UnsafeProjectMemberServiceServer.go b/api/v1/mocks/UnsafeProjectMemberServiceServer.go index cffca74..09cbf34 100644 --- a/api/v1/mocks/UnsafeProjectMemberServiceServer.go +++ b/api/v1/mocks/UnsafeProjectMemberServiceServer.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.3. DO NOT EDIT. +// Code generated by mockery v2.50.4. DO NOT EDIT. package mocks @@ -9,7 +9,7 @@ type UnsafeProjectMemberServiceServer struct { mock.Mock } -// mustEmbedUnimplementedProjectMemberServiceServer provides a mock function with given fields: +// mustEmbedUnimplementedProjectMemberServiceServer provides a mock function with no fields func (_m *UnsafeProjectMemberServiceServer) mustEmbedUnimplementedProjectMemberServiceServer() { _m.Called() } diff --git a/api/v1/mocks/UnsafeProjectServiceServer.go b/api/v1/mocks/UnsafeProjectServiceServer.go index 37b4ee6..06f7f7e 100644 --- a/api/v1/mocks/UnsafeProjectServiceServer.go +++ b/api/v1/mocks/UnsafeProjectServiceServer.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.3. DO NOT EDIT. +// Code generated by mockery v2.50.4. DO NOT EDIT. package mocks @@ -9,7 +9,7 @@ type UnsafeProjectServiceServer struct { mock.Mock } -// mustEmbedUnimplementedProjectServiceServer provides a mock function with given fields: +// mustEmbedUnimplementedProjectServiceServer provides a mock function with no fields func (_m *UnsafeProjectServiceServer) mustEmbedUnimplementedProjectServiceServer() { _m.Called() } diff --git a/api/v1/mocks/UnsafeTenantMemberServiceServer.go b/api/v1/mocks/UnsafeTenantMemberServiceServer.go index df70040..d762698 100644 --- a/api/v1/mocks/UnsafeTenantMemberServiceServer.go +++ b/api/v1/mocks/UnsafeTenantMemberServiceServer.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.3. DO NOT EDIT. +// Code generated by mockery v2.50.4. DO NOT EDIT. package mocks @@ -9,7 +9,7 @@ type UnsafeTenantMemberServiceServer struct { mock.Mock } -// mustEmbedUnimplementedTenantMemberServiceServer provides a mock function with given fields: +// mustEmbedUnimplementedTenantMemberServiceServer provides a mock function with no fields func (_m *UnsafeTenantMemberServiceServer) mustEmbedUnimplementedTenantMemberServiceServer() { _m.Called() } diff --git a/api/v1/mocks/UnsafeTenantServiceServer.go b/api/v1/mocks/UnsafeTenantServiceServer.go index 0c007f9..9893f40 100644 --- a/api/v1/mocks/UnsafeTenantServiceServer.go +++ b/api/v1/mocks/UnsafeTenantServiceServer.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.3. DO NOT EDIT. +// Code generated by mockery v2.50.4. DO NOT EDIT. package mocks @@ -9,7 +9,7 @@ type UnsafeTenantServiceServer struct { mock.Mock } -// mustEmbedUnimplementedTenantServiceServer provides a mock function with given fields: +// mustEmbedUnimplementedTenantServiceServer provides a mock function with no fields func (_m *UnsafeTenantServiceServer) mustEmbedUnimplementedTenantServiceServer() { _m.Called() } diff --git a/pkg/datastore/mocks/Entity.go b/pkg/datastore/mocks/Entity.go index 22a2fb3..46fd684 100644 --- a/pkg/datastore/mocks/Entity.go +++ b/pkg/datastore/mocks/Entity.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.3. DO NOT EDIT. +// Code generated by mockery v2.50.4. DO NOT EDIT. package mocks @@ -12,7 +12,7 @@ type Entity struct { mock.Mock } -// APIVersion provides a mock function with given fields: +// APIVersion provides a mock function with no fields func (_m *Entity) APIVersion() string { ret := _m.Called() @@ -30,7 +30,7 @@ func (_m *Entity) APIVersion() string { return r0 } -// GetMeta provides a mock function with given fields: +// GetMeta provides a mock function with no fields func (_m *Entity) GetMeta() *v1.Meta { ret := _m.Called() @@ -50,7 +50,7 @@ func (_m *Entity) GetMeta() *v1.Meta { return r0 } -// JSONField provides a mock function with given fields: +// JSONField provides a mock function with no fields func (_m *Entity) JSONField() string { ret := _m.Called() @@ -68,7 +68,7 @@ func (_m *Entity) JSONField() string { return r0 } -// Kind provides a mock function with given fields: +// Kind provides a mock function with no fields func (_m *Entity) Kind() string { ret := _m.Called() @@ -86,7 +86,7 @@ func (_m *Entity) Kind() string { return r0 } -// Schema provides a mock function with given fields: +// Schema provides a mock function with no fields func (_m *Entity) Schema() string { ret := _m.Called() @@ -104,7 +104,7 @@ func (_m *Entity) Schema() string { return r0 } -// TableName provides a mock function with given fields: +// TableName provides a mock function with no fields func (_m *Entity) TableName() string { ret := _m.Called() diff --git a/pkg/datastore/mocks/Storage.go b/pkg/datastore/mocks/Storage.go index b3bb32d..741005e 100644 --- a/pkg/datastore/mocks/Storage.go +++ b/pkg/datastore/mocks/Storage.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.3. DO NOT EDIT. +// Code generated by mockery v2.50.4. DO NOT EDIT. package mocks @@ -80,7 +80,7 @@ func (_m *Storage[E]) DeleteAll(ctx context.Context, ids ...string) error { } // Find provides a mock function with given fields: ctx, filter, paging -func (_m *Storage[E]) Find(ctx context.Context, filter map[string]any, paging *v1.Paging) ([]E, *uint64, error) { +func (_m *Storage[E]) Find(ctx context.Context, filter map[string]interface{}, paging *v1.Paging) ([]E, *uint64, error) { ret := _m.Called(ctx, filter, paging) if len(ret) == 0 { @@ -90,10 +90,10 @@ func (_m *Storage[E]) Find(ctx context.Context, filter map[string]any, paging *v var r0 []E var r1 *uint64 var r2 error - if rf, ok := ret.Get(0).(func(context.Context, map[string]any, *v1.Paging) ([]E, *uint64, error)); ok { + if rf, ok := ret.Get(0).(func(context.Context, map[string]interface{}, *v1.Paging) ([]E, *uint64, error)); ok { return rf(ctx, filter, paging) } - if rf, ok := ret.Get(0).(func(context.Context, map[string]any, *v1.Paging) []E); ok { + if rf, ok := ret.Get(0).(func(context.Context, map[string]interface{}, *v1.Paging) []E); ok { r0 = rf(ctx, filter, paging) } else { if ret.Get(0) != nil { @@ -101,7 +101,7 @@ func (_m *Storage[E]) Find(ctx context.Context, filter map[string]any, paging *v } } - if rf, ok := ret.Get(1).(func(context.Context, map[string]any, *v1.Paging) *uint64); ok { + if rf, ok := ret.Get(1).(func(context.Context, map[string]interface{}, *v1.Paging) *uint64); ok { r1 = rf(ctx, filter, paging) } else { if ret.Get(1) != nil { @@ -109,7 +109,7 @@ func (_m *Storage[E]) Find(ctx context.Context, filter map[string]any, paging *v } } - if rf, ok := ret.Get(2).(func(context.Context, map[string]any, *v1.Paging) error); ok { + if rf, ok := ret.Get(2).(func(context.Context, map[string]interface{}, *v1.Paging) error); ok { r2 = rf(ctx, filter, paging) } else { r2 = ret.Error(2) @@ -134,7 +134,9 @@ func (_m *Storage[E]) Get(ctx context.Context, id string) (E, error) { if rf, ok := ret.Get(0).(func(context.Context, string) E); ok { r0 = rf(ctx, id) } else { - r0 = ret.Get(0).(E) + if ret.Get(0) != nil { + r0 = ret.Get(0).(E) + } } if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { From e5489e54e71bc2df1c69945768f35f1bdf14bde7 Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Fri, 24 Jan 2025 08:43:56 +0100 Subject: [PATCH 15/39] Updates --- Dockerfile | 6 +- api/v1/common.pb.go | 2 +- api/v1/iam.pb.go | 2 +- api/v1/meta.pb.go | 2 +- api/v1/project.pb.go | 2 +- api/v1/project_member.pb.go | 2 +- api/v1/quota.pb.go | 2 +- api/v1/tenant.pb.go | 2 +- api/v1/tenant_member.pb.go | 2 +- go.mod | 36 ++++++------ go.sum | 106 ++++++++++++++++++------------------ proto/Makefile | 2 +- proto/buf.gen.yaml | 2 +- 13 files changed, 85 insertions(+), 83 deletions(-) diff --git a/Dockerfile b/Dockerfile index d2f27c3..b6b7388 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,12 @@ -FROM alpine:3.20 AS health-downloader -ENV GRPC_HEALTH_PROBE_VERSION=v0.4.34 \ +FROM alpine:3.21 AS health-downloader +ENV GRPC_HEALTH_PROBE_VERSION=v0.4.37 \ GRPC_HEALTH_PROBE_URL=https://github.com/grpc-ecosystem/grpc-health-probe/releases/download RUN apk -U add curl \ && curl -fLso /bin/grpc_health_probe \ ${GRPC_HEALTH_PROBE_URL}/${GRPC_HEALTH_PROBE_VERSION}/grpc_health_probe-linux-amd64 \ && chmod +x /bin/grpc_health_probe -FROM gcr.io/distroless/static-debian12 +FROM gcr.io/distroless/static-debian12:nonroot COPY --from=health-downloader /bin/grpc_health_probe /bin/grpc_health_probe COPY bin/server /masterdata-api CMD ["/masterdata-api"] diff --git a/api/v1/common.pb.go b/api/v1/common.pb.go index e53b8be..37fbdf2 100644 --- a/api/v1/common.pb.go +++ b/api/v1/common.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.3 // protoc (unknown) // source: v1/common.proto diff --git a/api/v1/iam.pb.go b/api/v1/iam.pb.go index 80f7580..8af60cd 100644 --- a/api/v1/iam.pb.go +++ b/api/v1/iam.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.3 // protoc (unknown) // source: v1/iam.proto diff --git a/api/v1/meta.pb.go b/api/v1/meta.pb.go index 1060ce4..86ac5f5 100644 --- a/api/v1/meta.pb.go +++ b/api/v1/meta.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.3 // protoc (unknown) // source: v1/meta.proto diff --git a/api/v1/project.pb.go b/api/v1/project.pb.go index 71d4189..1ab6170 100644 --- a/api/v1/project.pb.go +++ b/api/v1/project.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.3 // protoc (unknown) // source: v1/project.proto diff --git a/api/v1/project_member.pb.go b/api/v1/project_member.pb.go index caeb311..9a1576c 100644 --- a/api/v1/project_member.pb.go +++ b/api/v1/project_member.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.3 // protoc (unknown) // source: v1/project_member.proto diff --git a/api/v1/quota.pb.go b/api/v1/quota.pb.go index c7567b9..e8709db 100644 --- a/api/v1/quota.pb.go +++ b/api/v1/quota.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.3 // protoc (unknown) // source: v1/quota.proto diff --git a/api/v1/tenant.pb.go b/api/v1/tenant.pb.go index 4a1bf5b..ca971df 100644 --- a/api/v1/tenant.pb.go +++ b/api/v1/tenant.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.3 // protoc (unknown) // source: v1/tenant.proto diff --git a/api/v1/tenant_member.pb.go b/api/v1/tenant_member.pb.go index 9ed50cf..abe438d 100644 --- a/api/v1/tenant_member.pb.go +++ b/api/v1/tenant_member.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.1 +// protoc-gen-go v1.36.3 // protoc (unknown) // source: v1/tenant_member.proto diff --git a/go.mod b/go.mod index 54197eb..350b60b 100644 --- a/go.mod +++ b/go.mod @@ -13,18 +13,18 @@ require ( github.com/lib/pq v1.10.9 github.com/lopezator/migrator v0.3.1 github.com/metal-stack/metal-lib v0.19.0 - github.com/metal-stack/security v0.9.0 + github.com/metal-stack/security v0.9.1 github.com/metal-stack/v v1.0.3 github.com/prometheus/client_golang v1.20.5 github.com/spf13/cobra v1.8.1 github.com/spf13/viper v1.19.0 github.com/stretchr/testify v1.10.0 - github.com/testcontainers/testcontainers-go v0.34.0 - github.com/testcontainers/testcontainers-go/modules/postgres v0.34.0 - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.58.0 - go.opentelemetry.io/otel/trace v1.33.0 - google.golang.org/grpc v1.69.2 - google.golang.org/protobuf v1.36.1 + github.com/testcontainers/testcontainers-go v0.35.0 + github.com/testcontainers/testcontainers-go/modules/postgres v0.35.0 + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 + go.opentelemetry.io/otel/trace v1.34.0 + google.golang.org/grpc v1.70.0 + google.golang.org/protobuf v1.36.3 sigs.k8s.io/yaml v1.4.0 ) @@ -44,7 +44,7 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect github.com/distribution/reference v0.6.0 // indirect - github.com/docker/docker v27.4.1+incompatible // indirect + github.com/docker/docker v27.5.1+incompatible // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect @@ -96,16 +96,16 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.61.0 // indirect + github.com/prometheus/common v0.62.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect - github.com/sagikazarmark/locafero v0.6.0 // indirect + github.com/sagikazarmark/locafero v0.7.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/segmentio/asm v1.2.0 // indirect github.com/shirou/gopsutil/v3 v3.24.5 // indirect github.com/shoenig/go-m1cpu v0.1.6 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/sourcegraph/conc v0.3.0 // indirect - github.com/spf13/afero v1.11.0 // indirect + github.com/spf13/afero v1.12.0 // indirect github.com/spf13/cast v1.7.1 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/stretchr/objx v0.5.2 // indirect @@ -113,13 +113,13 @@ require ( github.com/tklauser/go-sysconf v0.3.14 // indirect github.com/tklauser/numcpus v0.9.0 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect - go.mongodb.org/mongo-driver v1.17.1 // indirect + go.mongodb.org/mongo-driver v1.17.2 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 // indirect - go.opentelemetry.io/otel v1.33.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0 // indirect - go.opentelemetry.io/otel/metric v1.33.0 // indirect - go.opentelemetry.io/otel/sdk v1.33.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0 // indirect + go.opentelemetry.io/otel v1.34.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.34.0 // indirect + go.opentelemetry.io/otel/metric v1.34.0 // indirect + go.opentelemetry.io/otel/sdk v1.34.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.32.0 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect @@ -128,7 +128,7 @@ require ( golang.org/x/sync v0.10.0 // indirect golang.org/x/sys v0.29.0 // indirect golang.org/x/text v0.21.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250106144421-5f5ef82da422 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250122153221-138b5a5a4fd4 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index e80cf1f..bc08a2a 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,7 @@ -cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= +cloud.google.com/go v0.116.0 h1:B3fRrSDkLRt5qSHWe40ERJvhvnQwdZiHu0bJOpldweE= cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg= -cloud.google.com/go/compute/metadata v0.5.2 h1:UxK4uu/Tn+I3p2dYWTfiX4wva7aYlKixAHn3fyqngqo= -cloud.google.com/go/compute/metadata v0.5.2/go.mod h1:C66sj2AluDcIqakBq/M8lw8/ybHgOZqin2obFxa/E5k= +cloud.google.com/go/compute/metadata v0.6.0 h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I= +cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg= dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= @@ -41,8 +41,8 @@ github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnN github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/docker v27.4.1+incompatible h1:ZJvcY7gfwHn1JF48PfbyXg7Jyt9ZCWDW+GGXOIxEwp4= -github.com/docker/docker v27.4.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v27.5.1+incompatible h1:4PYU5dnBYqRQi0294d1FBECqT9ECWeQAIfE8q4YnPY8= +github.com/docker/docker v27.5.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= @@ -105,8 +105,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpS github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.2.0 h1:kQ0NI7W1B3HwiN5gAYtY+XFItDPbLBwYRxAqbFTyDes= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.2.0/go.mod h1:zrT2dxOAjNFPRGjTUe2Xmb4q4YdUwVvQFV6xiCSf+z0= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0 h1:TmHmbvxPmaegwhDubVz0lICL0J5Ka2vwTzhoePEXsGE= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0/go.mod h1:qztMSjm835F2bXf+5HKAPIS5qsmQDqZna/PgVt4rWtI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1 h1:VNqngBF40hVlDloBruUehVYC3ArSgIyScOAyMRqBxRg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1/go.mod h1:RBRO7fro65R6tjKzYgLAFo0t1QEXY1Dp+i/bvpRiqiQ= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/icza/dyno v0.0.0-20230330125955-09f820a8d9c0 h1:nHoRIX8iXob3Y2kdt9KsjyIb7iApSvb3vgsd93xb5Ow= @@ -177,10 +177,12 @@ github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4 github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU= github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= +github.com/mdelapenya/tlscert v0.1.0 h1:YTpF579PYUX475eOL+6zyEO3ngLTOUWck78NBuJVXaM= +github.com/mdelapenya/tlscert v0.1.0/go.mod h1:wrbyM/DwbFCeCeqdPX/8c6hNOqQgbf0rUDErE1uD+64= github.com/metal-stack/metal-lib v0.19.0 h1:4yBnp/jPGgX9KeCje3A4MFL2oDjgjOjgsIK391LltRI= github.com/metal-stack/metal-lib v0.19.0/go.mod h1:fCMaWwVGA/xAoGvBk72/nfzqBkHly0iOzrWpc55Fau4= -github.com/metal-stack/security v0.9.0 h1:FYBXJfNJwUw2E0HBa+jay37XF7b6EikEuf4Mw8u04EY= -github.com/metal-stack/security v0.9.0/go.mod h1:6pQhJ4Kdu4BKnjB4zyzfK9skiHymqfrqt63Y+UmZBKA= +github.com/metal-stack/security v0.9.1 h1:cx3afSJPSOh03E9gKjdG6mbNU+ox/dqV7q8T9MkrHxo= +github.com/metal-stack/security v0.9.1/go.mod h1:ENm5kPjqh4uYvn79sAIxd6GZBwtF2GSsGdkLELrB/D4= github.com/metal-stack/v v1.0.3 h1:Sh2oBlnxrCUD+mVpzfC8HiqL045YWkxs0gpTvkjppqs= github.com/metal-stack/v v1.0.3/go.mod h1:YTahEu7/ishwpYKnp/VaW/7nf8+PInogkfGwLcGPdXg= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -225,15 +227,15 @@ github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+ github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= -github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= +github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= +github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sagikazarmark/locafero v0.6.0 h1:ON7AQg37yzcRPU69mt7gwhFEBwxI6P9T4Qu3N51bwOk= -github.com/sagikazarmark/locafero v0.6.0/go.mod h1:77OmuIc6VTraTXKXIs/uvUxKGUXjE1GbemJYHqdNjX0= +github.com/sagikazarmark/locafero v0.7.0 h1:5MqpDsTGNDhY8sGp0Aowyf0qKsPrhewaLSsFaodPcyo= +github.com/sagikazarmark/locafero v0.7.0/go.mod h1:2za3Cg5rMaTMoG/2Ulr9AwtFaIppKXTRYnozin4aB5k= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys= @@ -248,8 +250,8 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= -github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= -github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= +github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs= +github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y= github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= @@ -270,10 +272,10 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= -github.com/testcontainers/testcontainers-go v0.34.0 h1:5fbgF0vIN5u+nD3IWabQwRybuB4GY8G2HHgCkbMzMHo= -github.com/testcontainers/testcontainers-go v0.34.0/go.mod h1:6P/kMkQe8yqPHfPWNulFGdFHTD8HB2vLq/231xY2iPQ= -github.com/testcontainers/testcontainers-go/modules/postgres v0.34.0 h1:c51aBXT3v2HEBVarmaBnsKzvgZjC5amn0qsj8Naqi50= -github.com/testcontainers/testcontainers-go/modules/postgres v0.34.0/go.mod h1:EWP75ogLQU4M4L8U+20mFipjV4WIR9WtlMXSB6/wiuc= +github.com/testcontainers/testcontainers-go v0.35.0 h1:uADsZpTKFAtp8SLK+hMwSaa+X+JiERHtd4sQAFmXeMo= +github.com/testcontainers/testcontainers-go v0.35.0/go.mod h1:oEVBj5zrfJTrgjwONs1SsRbnBtH9OKl+IGl3UMcr2B4= +github.com/testcontainers/testcontainers-go/modules/postgres v0.35.0 h1:eEGx9kYzZb2cNhRbBrNOCL/YPOM7+RMJiy3bB+ie0/I= +github.com/testcontainers/testcontainers-go/modules/postgres v0.35.0/go.mod h1:hfH71Mia/WWLBgMD2YctYcMlfsbnT0hflweL1dy8Q4s= github.com/tklauser/go-sysconf v0.3.14 h1:g5vzr9iPFFz24v2KZXs/pvpvh8/V9Fw6vQK5ZZb78yU= github.com/tklauser/go-sysconf v0.3.14/go.mod h1:1ym4lWMLUOhuBOPGtRcJm7tEGX4SCYNEEEtghGG/8uY= github.com/tklauser/numcpus v0.9.0 h1:lmyCHtANi8aRUgkckBgoDk1nHCux3n2cgkJLXdQGPDo= @@ -282,30 +284,30 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -go.mongodb.org/mongo-driver v1.17.1 h1:Wic5cJIwJgSpBhe3lx3+/RybR5PiYRMpVFgO7cOHyIM= -go.mongodb.org/mongo-driver v1.17.1/go.mod h1:wwWm/+BuOddhcq3n68LKRmgk2wXzmF6s0SFOa0GINL4= +go.mongodb.org/mongo-driver v1.17.2 h1:gvZyk8352qSfzyZ2UMWcpDpMSGEr1eqE4T793SqyhzM= +go.mongodb.org/mongo-driver v1.17.2/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.58.0 h1:PS8wXpbyaDJQ2VDHHncMe9Vct0Zn1fEjpsjrLxGJoSc= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.58.0/go.mod h1:HDBUsEjOuRC0EzKZ1bSaRGZWUBAzo+MhAcUUORSr4D0= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 h1:yd02MEjBdJkG3uabWP9apV+OuWRIXGDuJEUJbOHmCFU= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0/go.mod h1:umTcuxiv1n/s/S6/c2AT/g2CQ7u5C59sHDNmfSwgz7Q= -go.opentelemetry.io/otel v1.33.0 h1:/FerN9bax5LoK51X/sI0SVYrjSE0/yUL7DpxW4K3FWw= -go.opentelemetry.io/otel v1.33.0/go.mod h1:SUUkR6csvUQl+yjReHu5uM3EtVV7MBm5FHKRlNx4I8I= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0 h1:Vh5HayB/0HHfOQA7Ctx69E/Y/DcQSMPpKANYVMQ7fBA= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0/go.mod h1:cpgtDBaqD/6ok/UG0jT15/uKjAY8mRA53diogHBg3UI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0 h1:wpMfgF8E1rkrT1Z6meFh1NDtownE9Ii3n3X2GJYjsaU= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0/go.mod h1:wAy0T/dUbs468uOlkT31xjvqQgEVXv58BRFWEgn5v/0= -go.opentelemetry.io/otel/metric v1.33.0 h1:r+JOocAyeRVXD8lZpjdQjzMadVZp2M4WmQ+5WtEnklQ= -go.opentelemetry.io/otel/metric v1.33.0/go.mod h1:L9+Fyctbp6HFTddIxClbQkjtubW6O9QS3Ann/M82u6M= -go.opentelemetry.io/otel/sdk v1.33.0 h1:iax7M131HuAm9QkZotNHEfstof92xM+N8sr3uHXc2IM= -go.opentelemetry.io/otel/sdk v1.33.0/go.mod h1:A1Q5oi7/9XaMlIWzPSxLRWOI8nG3FnzHJNbiENQuihM= -go.opentelemetry.io/otel/sdk/metric v1.31.0 h1:i9hxxLJF/9kkvfHppyLL55aW7iIJz4JjxTeYusH7zMc= -go.opentelemetry.io/otel/sdk/metric v1.31.0/go.mod h1:CRInTMVvNhUKgSAMbKyTMxqOBC0zgyxzW55lZzX43Y8= -go.opentelemetry.io/otel/trace v1.33.0 h1:cCJuF7LRjUFso9LPnEAHJDB2pqzp+hbO8eu1qqW2d/s= -go.opentelemetry.io/otel/trace v1.33.0/go.mod h1:uIcdVUZMpTAmz0tI1z04GoVSezK37CbGV4fr1f2nBck= -go.opentelemetry.io/proto/otlp v1.4.0 h1:TA9WRvW6zMwP+Ssb6fLoUIuirti1gGbP28GcKG1jgeg= -go.opentelemetry.io/proto/otlp v1.4.0/go.mod h1:PPBWZIP98o2ElSqI35IHfu7hIhSwvc5N38Jw8pXuGFY= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 h1:rgMkmiGfix9vFJDcDi1PK8WEQP4FLQwLDfhp5ZLpFeE= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0/go.mod h1:ijPqXp5P6IRRByFVVg9DY8P5HkxkHE5ARIa+86aXPf4= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0 h1:CV7UdSGJt/Ao6Gp4CXckLxVRRsRgDHoI8XjbL3PDl8s= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0/go.mod h1:FRmFuRJfag1IZ2dPkHnEoSFVgTVPUd2qf5Vi69hLb8I= +go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= +go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 h1:OeNbIYk/2C15ckl7glBlOBp5+WlYsOElzTNmiPW/x60= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0/go.mod h1:7Bept48yIeqxP2OZ9/AqIpYS94h2or0aB4FypJTc8ZM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.34.0 h1:BEj3SPM81McUZHYjRS5pEgNgnmzGJ5tRpU5krWnV8Bs= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.34.0/go.mod h1:9cKLGBDzI/F3NoHLQGm4ZrYdIHsvGt6ej6hUowxY0J4= +go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= +go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= +go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= +go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= +go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= +go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= +go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4= +go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -346,8 +348,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= -golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg= +golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -356,15 +358,15 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 h1:9+tzLLstTlPTRyJTh+ah5wIMsBW5c4tQwGTN3thOW9Y= -google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 h1:CkkIfIt50+lT6NHAVoRYEyAvQGFM7xEwXUUywFvEb3Q= -google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576/go.mod h1:1R3kvZ1dtP3+4p4d3G8uJ8rFk/fWlScl38vanWACI08= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250106144421-5f5ef82da422 h1:3UsHvIr4Wc2aW4brOaSCmcxh9ksica6fHEr8P1XhkYw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250106144421-5f5ef82da422/go.mod h1:3ENsm/5D1mzDyhpzeRi1NR784I0BcofWBoSc5QqqMK4= -google.golang.org/grpc v1.69.2 h1:U3S9QEtbXC0bYNvRtcoklF3xGtLViumSYxWykJS+7AU= -google.golang.org/grpc v1.69.2/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4= -google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= -google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 h1:ToEetK57OidYuqD4Q5w+vfEnPvPpuTwedCNVohYJfNk= +google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f h1:gap6+3Gk41EItBuyi4XX/bp4oqJ3UwuIMl25yGinuAA= +google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:Ic02D47M+zbarjYYUlK57y316f2MoN0gjAwI3f2S95o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250122153221-138b5a5a4fd4 h1:yrTuav+chrF0zF/joFGICKTzYv7mh/gr9AgEXrVU8ao= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250122153221-138b5a5a4fd4/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50= +google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= +google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= +google.golang.org/protobuf v1.36.3 h1:82DV7MYdb8anAVi3qge1wSnMDrnKK7ebr+I0hHRN1BU= +google.golang.org/protobuf v1.36.3/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/proto/Makefile b/proto/Makefile index b1c7833..ff4aa2f 100644 --- a/proto/Makefile +++ b/proto/Makefile @@ -1,5 +1,5 @@ MAKEFLAGS += --no-print-directory -BUF_VERSION := 1.48.0 +BUF_VERSION := 1.50.0 _buf: docker run --rm \ diff --git a/proto/buf.gen.yaml b/proto/buf.gen.yaml index da8a669..8525e98 100644 --- a/proto/buf.gen.yaml +++ b/proto/buf.gen.yaml @@ -8,6 +8,6 @@ plugins: - remote: buf.build/grpc/go:v1.5.1 out: ../api opt: paths=source_relative,require_unimplemented_servers=false - - remote: buf.build/protocolbuffers/go:v1.36.1 + - remote: buf.build/protocolbuffers/go:v1.36.3 out: ../api opt: paths=source_relative From b102710e422060c0ba1a9dab528e187452fb22fc Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Wed, 19 Feb 2025 09:34:26 +0100 Subject: [PATCH 16/39] Update to go-1.24 --- api/v1/common.pb.go | 14 ++++---- api/v1/iam.pb.go | 14 ++++---- api/v1/meta.pb.go | 14 ++++---- api/v1/project.pb.go | 14 ++++---- api/v1/project_member.pb.go | 14 ++++---- api/v1/quota.pb.go | 14 ++++---- api/v1/tenant.pb.go | 14 ++++---- api/v1/tenant_member.pb.go | 14 ++++---- go.mod | 32 +++++++++--------- go.sum | 66 ++++++++++++++++++------------------- pkg/service/common_test.go | 2 +- proto/buf.gen.yaml | 2 +- 12 files changed, 107 insertions(+), 107 deletions(-) diff --git a/api/v1/common.pb.go b/api/v1/common.pb.go index 37fbdf2..91907fc 100644 --- a/api/v1/common.pb.go +++ b/api/v1/common.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.3 +// protoc-gen-go v1.36.5 // protoc (unknown) // source: v1/common.proto @@ -11,6 +11,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + unsafe "unsafe" ) const ( @@ -77,7 +78,7 @@ func (x *Paging) GetCount() uint64 { var File_v1_common_proto protoreflect.FileDescriptor -var file_v1_common_proto_rawDesc = []byte{ +var file_v1_common_proto_rawDesc = string([]byte{ 0x0a, 0x0f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x76, 0x31, 0x22, 0x4f, 0x0a, 0x06, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, @@ -92,16 +93,16 @@ var file_v1_common_proto_rawDesc = []byte{ 0x02, 0x02, 0x56, 0x31, 0xca, 0x02, 0x02, 0x56, 0x31, 0xe2, 0x02, 0x0e, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x02, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_v1_common_proto_rawDescOnce sync.Once - file_v1_common_proto_rawDescData = file_v1_common_proto_rawDesc + file_v1_common_proto_rawDescData []byte ) func file_v1_common_proto_rawDescGZIP() []byte { file_v1_common_proto_rawDescOnce.Do(func() { - file_v1_common_proto_rawDescData = protoimpl.X.CompressGZIP(file_v1_common_proto_rawDescData) + file_v1_common_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_v1_common_proto_rawDesc), len(file_v1_common_proto_rawDesc))) }) return file_v1_common_proto_rawDescData } @@ -128,7 +129,7 @@ func file_v1_common_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_v1_common_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_v1_common_proto_rawDesc), len(file_v1_common_proto_rawDesc)), NumEnums: 0, NumMessages: 1, NumExtensions: 0, @@ -139,7 +140,6 @@ func file_v1_common_proto_init() { MessageInfos: file_v1_common_proto_msgTypes, }.Build() File_v1_common_proto = out.File - file_v1_common_proto_rawDesc = nil file_v1_common_proto_goTypes = nil file_v1_common_proto_depIdxs = nil } diff --git a/api/v1/iam.pb.go b/api/v1/iam.pb.go index 8af60cd..81fc670 100644 --- a/api/v1/iam.pb.go +++ b/api/v1/iam.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.3 +// protoc-gen-go v1.36.5 // protoc (unknown) // source: v1/iam.proto @@ -11,6 +11,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + unsafe "unsafe" ) const ( @@ -432,7 +433,7 @@ func (x *ConnectorConfig) GetIdmReqEmail() string { var File_v1_iam_proto protoreflect.FileDescriptor -var file_v1_iam_proto_rawDesc = []byte{ +var file_v1_iam_proto_rawDesc = string([]byte{ 0x0a, 0x0c, 0x76, 0x31, 0x2f, 0x69, 0x61, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x76, 0x31, 0x22, 0xad, 0x01, 0x0a, 0x09, 0x49, 0x41, 0x4d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x35, 0x0a, 0x0d, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, @@ -521,16 +522,16 @@ var file_v1_iam_proto_rawDesc = []byte{ 0x02, 0x02, 0x56, 0x31, 0xe2, 0x02, 0x0e, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x02, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_v1_iam_proto_rawDescOnce sync.Once - file_v1_iam_proto_rawDescData = file_v1_iam_proto_rawDesc + file_v1_iam_proto_rawDescData []byte ) func file_v1_iam_proto_rawDescGZIP() []byte { file_v1_iam_proto_rawDescOnce.Do(func() { - file_v1_iam_proto_rawDescData = protoimpl.X.CompressGZIP(file_v1_iam_proto_rawDescData) + file_v1_iam_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_v1_iam_proto_rawDesc), len(file_v1_iam_proto_rawDesc))) }) return file_v1_iam_proto_rawDescData } @@ -565,7 +566,7 @@ func file_v1_iam_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_v1_iam_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_v1_iam_proto_rawDesc), len(file_v1_iam_proto_rawDesc)), NumEnums: 0, NumMessages: 5, NumExtensions: 0, @@ -576,7 +577,6 @@ func file_v1_iam_proto_init() { MessageInfos: file_v1_iam_proto_msgTypes, }.Build() File_v1_iam_proto = out.File - file_v1_iam_proto_rawDesc = nil file_v1_iam_proto_goTypes = nil file_v1_iam_proto_depIdxs = nil } diff --git a/api/v1/meta.pb.go b/api/v1/meta.pb.go index 86ac5f5..a9d9145 100644 --- a/api/v1/meta.pb.go +++ b/api/v1/meta.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.3 +// protoc-gen-go v1.36.5 // protoc (unknown) // source: v1/meta.proto @@ -12,6 +12,7 @@ import ( timestamppb "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" + unsafe "unsafe" ) const ( @@ -123,7 +124,7 @@ func (x *Meta) GetLabels() []string { var File_v1_meta_proto protoreflect.FileDescriptor -var file_v1_meta_proto_rawDesc = []byte{ +var file_v1_meta_proto_rawDesc = string([]byte{ 0x0a, 0x0d, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, @@ -158,16 +159,16 @@ var file_v1_meta_proto_rawDesc = []byte{ 0x02, 0x03, 0x56, 0x58, 0x58, 0xaa, 0x02, 0x02, 0x56, 0x31, 0xca, 0x02, 0x02, 0x56, 0x31, 0xe2, 0x02, 0x0e, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x02, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_v1_meta_proto_rawDescOnce sync.Once - file_v1_meta_proto_rawDescData = file_v1_meta_proto_rawDesc + file_v1_meta_proto_rawDescData []byte ) func file_v1_meta_proto_rawDescGZIP() []byte { file_v1_meta_proto_rawDescOnce.Do(func() { - file_v1_meta_proto_rawDescData = protoimpl.X.CompressGZIP(file_v1_meta_proto_rawDescData) + file_v1_meta_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_v1_meta_proto_rawDesc), len(file_v1_meta_proto_rawDesc))) }) return file_v1_meta_proto_rawDescData } @@ -198,7 +199,7 @@ func file_v1_meta_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_v1_meta_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_v1_meta_proto_rawDesc), len(file_v1_meta_proto_rawDesc)), NumEnums: 0, NumMessages: 2, NumExtensions: 0, @@ -209,7 +210,6 @@ func file_v1_meta_proto_init() { MessageInfos: file_v1_meta_proto_msgTypes, }.Build() File_v1_meta_proto = out.File - file_v1_meta_proto_rawDesc = nil file_v1_meta_proto_goTypes = nil file_v1_meta_proto_depIdxs = nil } diff --git a/api/v1/project.pb.go b/api/v1/project.pb.go index 1ab6170..39f534d 100644 --- a/api/v1/project.pb.go +++ b/api/v1/project.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.3 +// protoc-gen-go v1.36.5 // protoc (unknown) // source: v1/project.proto @@ -12,6 +12,7 @@ import ( timestamppb "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" + unsafe "unsafe" ) const ( @@ -509,7 +510,7 @@ func (x *ProjectListResponse) GetNextPage() uint64 { var File_v1_project_proto protoreflect.FileDescriptor -var file_v1_project_proto_rawDesc = []byte{ +var file_v1_project_proto_rawDesc = string([]byte{ 0x0a, 0x10, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, @@ -608,16 +609,16 @@ var file_v1_project_proto_rawDesc = []byte{ 0x31, 0xa2, 0x02, 0x03, 0x56, 0x58, 0x58, 0xaa, 0x02, 0x02, 0x56, 0x31, 0xca, 0x02, 0x02, 0x56, 0x31, 0xe2, 0x02, 0x0e, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x02, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_v1_project_proto_rawDescOnce sync.Once - file_v1_project_proto_rawDescData = file_v1_project_proto_rawDesc + file_v1_project_proto_rawDescData []byte ) func file_v1_project_proto_rawDescGZIP() []byte { file_v1_project_proto_rawDescOnce.Do(func() { - file_v1_project_proto_rawDescData = protoimpl.X.CompressGZIP(file_v1_project_proto_rawDescData) + file_v1_project_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_v1_project_proto_rawDesc), len(file_v1_project_proto_rawDesc))) }) return file_v1_project_proto_rawDescData } @@ -682,7 +683,7 @@ func file_v1_project_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_v1_project_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_v1_project_proto_rawDesc), len(file_v1_project_proto_rawDesc)), NumEnums: 0, NumMessages: 10, NumExtensions: 0, @@ -693,7 +694,6 @@ func file_v1_project_proto_init() { MessageInfos: file_v1_project_proto_msgTypes, }.Build() File_v1_project_proto = out.File - file_v1_project_proto_rawDesc = nil file_v1_project_proto_goTypes = nil file_v1_project_proto_depIdxs = nil } diff --git a/api/v1/project_member.pb.go b/api/v1/project_member.pb.go index 9a1576c..9eea4a2 100644 --- a/api/v1/project_member.pb.go +++ b/api/v1/project_member.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.3 +// protoc-gen-go v1.36.5 // protoc (unknown) // source: v1/project_member.proto @@ -11,6 +11,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + unsafe "unsafe" ) const ( @@ -407,7 +408,7 @@ func (x *ProjectMemberListResponse) GetProjectMembers() []*ProjectMember { var File_v1_project_member_proto protoreflect.FileDescriptor -var file_v1_project_member_proto_rawDesc = []byte{ +var file_v1_project_member_proto_rawDesc = string([]byte{ 0x0a, 0x17, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x76, 0x31, 0x1a, 0x0d, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x69, 0x0a, 0x0d, @@ -493,16 +494,16 @@ var file_v1_project_member_proto_rawDesc = []byte{ 0x02, 0x56, 0x31, 0xe2, 0x02, 0x0e, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x02, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_v1_project_member_proto_rawDescOnce sync.Once - file_v1_project_member_proto_rawDescData = file_v1_project_member_proto_rawDesc + file_v1_project_member_proto_rawDescData []byte ) func file_v1_project_member_proto_rawDescGZIP() []byte { file_v1_project_member_proto_rawDescOnce.Do(func() { - file_v1_project_member_proto_rawDescData = protoimpl.X.CompressGZIP(file_v1_project_member_proto_rawDescData) + file_v1_project_member_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_v1_project_member_proto_rawDesc), len(file_v1_project_member_proto_rawDesc))) }) return file_v1_project_member_proto_rawDescData } @@ -555,7 +556,7 @@ func file_v1_project_member_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_v1_project_member_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_v1_project_member_proto_rawDesc), len(file_v1_project_member_proto_rawDesc)), NumEnums: 0, NumMessages: 9, NumExtensions: 0, @@ -566,7 +567,6 @@ func file_v1_project_member_proto_init() { MessageInfos: file_v1_project_member_proto_msgTypes, }.Build() File_v1_project_member_proto = out.File - file_v1_project_member_proto_rawDesc = nil file_v1_project_member_proto_goTypes = nil file_v1_project_member_proto_depIdxs = nil } diff --git a/api/v1/quota.pb.go b/api/v1/quota.pb.go index e8709db..7b47a9c 100644 --- a/api/v1/quota.pb.go +++ b/api/v1/quota.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.3 +// protoc-gen-go v1.36.5 // protoc (unknown) // source: v1/quota.proto @@ -11,6 +11,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + unsafe "unsafe" ) const ( @@ -144,7 +145,7 @@ func (x *Quota) GetQuota() int32 { var File_v1_quota_proto protoreflect.FileDescriptor -var file_v1_quota_proto_rawDesc = []byte{ +var file_v1_quota_proto_rawDesc = string([]byte{ 0x0a, 0x0e, 0x76, 0x31, 0x2f, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x76, 0x31, 0x22, 0x94, 0x01, 0x0a, 0x08, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x53, 0x65, 0x74, 0x12, 0x23, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, @@ -166,16 +167,16 @@ var file_v1_quota_proto_rawDesc = []byte{ 0x58, 0xaa, 0x02, 0x02, 0x56, 0x31, 0xca, 0x02, 0x02, 0x56, 0x31, 0xe2, 0x02, 0x0e, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x02, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_v1_quota_proto_rawDescOnce sync.Once - file_v1_quota_proto_rawDescData = file_v1_quota_proto_rawDesc + file_v1_quota_proto_rawDescData []byte ) func file_v1_quota_proto_rawDescGZIP() []byte { file_v1_quota_proto_rawDescOnce.Do(func() { - file_v1_quota_proto_rawDescData = protoimpl.X.CompressGZIP(file_v1_quota_proto_rawDescData) + file_v1_quota_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_v1_quota_proto_rawDesc), len(file_v1_quota_proto_rawDesc))) }) return file_v1_quota_proto_rawDescData } @@ -207,7 +208,7 @@ func file_v1_quota_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_v1_quota_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_v1_quota_proto_rawDesc), len(file_v1_quota_proto_rawDesc)), NumEnums: 0, NumMessages: 2, NumExtensions: 0, @@ -218,7 +219,6 @@ func file_v1_quota_proto_init() { MessageInfos: file_v1_quota_proto_msgTypes, }.Build() File_v1_quota_proto = out.File - file_v1_quota_proto_rawDesc = nil file_v1_quota_proto_goTypes = nil file_v1_quota_proto_depIdxs = nil } diff --git a/api/v1/tenant.pb.go b/api/v1/tenant.pb.go index ca971df..37fd4d4 100644 --- a/api/v1/tenant.pb.go +++ b/api/v1/tenant.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.3 +// protoc-gen-go v1.36.5 // protoc (unknown) // source: v1/tenant.proto @@ -12,6 +12,7 @@ import ( timestamppb "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" + unsafe "unsafe" ) const ( @@ -917,7 +918,7 @@ func (x *TenantListResponse) GetNextPage() uint64 { var File_v1_tenant_proto protoreflect.FileDescriptor -var file_v1_tenant_proto_rawDesc = []byte{ +var file_v1_tenant_proto_rawDesc = string([]byte{ 0x0a, 0x0f, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, @@ -1132,16 +1133,16 @@ var file_v1_tenant_proto_rawDesc = []byte{ 0x58, 0xaa, 0x02, 0x02, 0x56, 0x31, 0xca, 0x02, 0x02, 0x56, 0x31, 0xe2, 0x02, 0x0e, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x02, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_v1_tenant_proto_rawDescOnce sync.Once - file_v1_tenant_proto_rawDescData = file_v1_tenant_proto_rawDesc + file_v1_tenant_proto_rawDescData []byte ) func file_v1_tenant_proto_rawDescGZIP() []byte { file_v1_tenant_proto_rawDescOnce.Do(func() { - file_v1_tenant_proto_rawDescData = protoimpl.X.CompressGZIP(file_v1_tenant_proto_rawDescData) + file_v1_tenant_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_v1_tenant_proto_rawDesc), len(file_v1_tenant_proto_rawDesc))) }) return file_v1_tenant_proto_rawDescData } @@ -1242,7 +1243,7 @@ func file_v1_tenant_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_v1_tenant_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_v1_tenant_proto_rawDesc), len(file_v1_tenant_proto_rawDesc)), NumEnums: 0, NumMessages: 22, NumExtensions: 0, @@ -1253,7 +1254,6 @@ func file_v1_tenant_proto_init() { MessageInfos: file_v1_tenant_proto_msgTypes, }.Build() File_v1_tenant_proto = out.File - file_v1_tenant_proto_rawDesc = nil file_v1_tenant_proto_goTypes = nil file_v1_tenant_proto_depIdxs = nil } diff --git a/api/v1/tenant_member.pb.go b/api/v1/tenant_member.pb.go index abe438d..1da78ed 100644 --- a/api/v1/tenant_member.pb.go +++ b/api/v1/tenant_member.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.3 +// protoc-gen-go v1.36.5 // protoc (unknown) // source: v1/tenant_member.proto @@ -11,6 +11,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + unsafe "unsafe" ) const ( @@ -409,7 +410,7 @@ func (x *TenantMemberListResponse) GetTenantMembers() []*TenantMember { var File_v1_tenant_member_proto protoreflect.FileDescriptor -var file_v1_tenant_member_proto_rawDesc = []byte{ +var file_v1_tenant_member_proto_rawDesc = string([]byte{ 0x0a, 0x16, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x76, 0x31, 0x1a, 0x0d, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x66, 0x0a, 0x0c, 0x54, @@ -492,16 +493,16 @@ var file_v1_tenant_member_proto_rawDesc = []byte{ 0x58, 0x58, 0xaa, 0x02, 0x02, 0x56, 0x31, 0xca, 0x02, 0x02, 0x56, 0x31, 0xe2, 0x02, 0x0e, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x02, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_v1_tenant_member_proto_rawDescOnce sync.Once - file_v1_tenant_member_proto_rawDescData = file_v1_tenant_member_proto_rawDesc + file_v1_tenant_member_proto_rawDescData []byte ) func file_v1_tenant_member_proto_rawDescGZIP() []byte { file_v1_tenant_member_proto_rawDescOnce.Do(func() { - file_v1_tenant_member_proto_rawDescData = protoimpl.X.CompressGZIP(file_v1_tenant_member_proto_rawDescData) + file_v1_tenant_member_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_v1_tenant_member_proto_rawDesc), len(file_v1_tenant_member_proto_rawDesc))) }) return file_v1_tenant_member_proto_rawDescData } @@ -554,7 +555,7 @@ func file_v1_tenant_member_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_v1_tenant_member_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_v1_tenant_member_proto_rawDesc), len(file_v1_tenant_member_proto_rawDesc)), NumEnums: 0, NumMessages: 9, NumExtensions: 0, @@ -565,7 +566,6 @@ func file_v1_tenant_member_proto_init() { MessageInfos: file_v1_tenant_member_proto_msgTypes, }.Build() File_v1_tenant_member_proto = out.File - file_v1_tenant_member_proto_rawDesc = nil file_v1_tenant_member_proto_goTypes = nil file_v1_tenant_member_proto_depIdxs = nil } diff --git a/go.mod b/go.mod index 350b60b..249c19d 100644 --- a/go.mod +++ b/go.mod @@ -1,22 +1,22 @@ module github.com/metal-stack/masterdata-api -go 1.23 +go 1.24 require ( github.com/Masterminds/squirrel v1.5.4 github.com/google/go-cmp v0.6.0 github.com/google/uuid v1.6.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 - github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.2.0 + github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.0 github.com/jmoiron/sqlx v1.4.0 github.com/json-iterator/go v1.1.12 github.com/lib/pq v1.10.9 github.com/lopezator/migrator v0.3.1 - github.com/metal-stack/metal-lib v0.19.0 - github.com/metal-stack/security v0.9.1 + github.com/metal-stack/metal-lib v0.20.1 + github.com/metal-stack/security v0.9.3 github.com/metal-stack/v v1.0.3 github.com/prometheus/client_golang v1.20.5 - github.com/spf13/cobra v1.8.1 + github.com/spf13/cobra v1.9.1 github.com/spf13/viper v1.19.0 github.com/stretchr/testify v1.10.0 github.com/testcontainers/testcontainers-go v0.35.0 @@ -24,7 +24,7 @@ require ( go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 go.opentelemetry.io/otel/trace v1.34.0 google.golang.org/grpc v1.70.0 - google.golang.org/protobuf v1.36.3 + google.golang.org/protobuf v1.36.5 sigs.k8s.io/yaml v1.4.0 ) @@ -57,7 +57,7 @@ require ( github.com/go-openapi/runtime v0.28.0 // indirect github.com/go-openapi/strfmt v0.23.0 // indirect github.com/go-openapi/swag v0.23.0 // indirect - github.com/goccy/go-json v0.10.4 // indirect + github.com/goccy/go-json v0.10.5 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt/v5 v5.2.1 // indirect github.com/gorilla/mux v1.8.1 // indirect @@ -107,7 +107,7 @@ require ( github.com/sourcegraph/conc v0.3.0 // indirect github.com/spf13/afero v1.12.0 // indirect github.com/spf13/cast v1.7.1 // indirect - github.com/spf13/pflag v1.0.5 // indirect + github.com/spf13/pflag v1.0.6 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/tklauser/go-sysconf v0.3.14 // indirect @@ -121,14 +121,14 @@ require ( go.opentelemetry.io/otel/metric v1.34.0 // indirect go.opentelemetry.io/otel/sdk v1.34.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.32.0 // indirect - golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect - golang.org/x/net v0.34.0 // indirect - golang.org/x/oauth2 v0.25.0 // indirect - golang.org/x/sync v0.10.0 // indirect - golang.org/x/sys v0.29.0 // indirect - golang.org/x/text v0.21.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250122153221-138b5a5a4fd4 // indirect + golang.org/x/crypto v0.33.0 // indirect + golang.org/x/exp v0.0.0-20250218142911-aa4b98e5adaa // indirect + golang.org/x/net v0.35.0 // indirect + golang.org/x/oauth2 v0.26.0 // indirect + golang.org/x/sync v0.11.0 // indirect + golang.org/x/sys v0.30.0 // indirect + golang.org/x/text v0.22.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index bc08a2a..0f8b050 100644 --- a/go.sum +++ b/go.sum @@ -30,7 +30,7 @@ github.com/coreos/go-oidc/v3 v3.12.0 h1:sJk+8G2qq94rDI6ehZ71Bol3oUHy63qNYmkiSjrc github.com/coreos/go-oidc/v3 v3.12.0/go.mod h1:gE3LgjOgFoHi9a4ce4/tJczr0Ai2/BoDhf0r5lltWI0= github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= -github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -85,8 +85,8 @@ github.com/go-openapi/validate v0.24.0 h1:LdfDKwNbpB6Vn40xhTdNZAnfLECL81w+VX3Bum github.com/go-openapi/validate v0.24.0/go.mod h1:iyeX1sEufmv3nPbBdX3ieNviWnOZaJ1+zquzJEf2BAQ= github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y= github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= -github.com/goccy/go-json v0.10.4 h1:JSwxQzIqKfmFX1swYPpUThQZp/Ka4wzJdK0LWVytLPM= -github.com/goccy/go-json v0.10.4/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= +github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk= @@ -103,8 +103,8 @@ github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpSQwGEnkcRpTqNOIR6bJbR0gAorgP9CSALpRcKoAA= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.2.0 h1:kQ0NI7W1B3HwiN5gAYtY+XFItDPbLBwYRxAqbFTyDes= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.2.0/go.mod h1:zrT2dxOAjNFPRGjTUe2Xmb4q4YdUwVvQFV6xiCSf+z0= +github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.0 h1:FbSCl+KggFl+Ocym490i/EyXF4lPgLoUtcSWquBM0Rs= +github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.0/go.mod h1:qOchhhIlmRcqk/O9uCo/puJlyo07YINaIqdZfZG3Jkc= github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1 h1:VNqngBF40hVlDloBruUehVYC3ArSgIyScOAyMRqBxRg= github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1/go.mod h1:RBRO7fro65R6tjKzYgLAFo0t1QEXY1Dp+i/bvpRiqiQ= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= @@ -179,10 +179,10 @@ github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/mdelapenya/tlscert v0.1.0 h1:YTpF579PYUX475eOL+6zyEO3ngLTOUWck78NBuJVXaM= github.com/mdelapenya/tlscert v0.1.0/go.mod h1:wrbyM/DwbFCeCeqdPX/8c6hNOqQgbf0rUDErE1uD+64= -github.com/metal-stack/metal-lib v0.19.0 h1:4yBnp/jPGgX9KeCje3A4MFL2oDjgjOjgsIK391LltRI= -github.com/metal-stack/metal-lib v0.19.0/go.mod h1:fCMaWwVGA/xAoGvBk72/nfzqBkHly0iOzrWpc55Fau4= -github.com/metal-stack/security v0.9.1 h1:cx3afSJPSOh03E9gKjdG6mbNU+ox/dqV7q8T9MkrHxo= -github.com/metal-stack/security v0.9.1/go.mod h1:ENm5kPjqh4uYvn79sAIxd6GZBwtF2GSsGdkLELrB/D4= +github.com/metal-stack/metal-lib v0.20.1 h1:gxNg512dS5yzDebELtPZjmoWond0Gw0HHEkSVIAOWRE= +github.com/metal-stack/metal-lib v0.20.1/go.mod h1:zYzXYpNA4nQ+ANx19s/+1Yb/Q6xhS1nQK2yK2/ryXZM= +github.com/metal-stack/security v0.9.3 h1:ZF5rGeZ4fIFe0DFFQWkXsUDCzODyjdrpvKmeaLOz9lo= +github.com/metal-stack/security v0.9.3/go.mod h1:ENm5kPjqh4uYvn79sAIxd6GZBwtF2GSsGdkLELrB/D4= github.com/metal-stack/v v1.0.3 h1:Sh2oBlnxrCUD+mVpzfC8HiqL045YWkxs0gpTvkjppqs= github.com/metal-stack/v v1.0.3/go.mod h1:YTahEu7/ishwpYKnp/VaW/7nf8+PInogkfGwLcGPdXg= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -254,10 +254,10 @@ github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs= github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y= github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= -github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= -github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= +github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -313,25 +313,25 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= -golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= -golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= -golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= +golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= +golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= +golang.org/x/exp v0.0.0-20250218142911-aa4b98e5adaa h1:t2QcU6V556bFjYgu4L6C+6VrCPyJZ+eyRsABUPs1mz4= +golang.org/x/exp v0.0.0-20250218142911-aa4b98e5adaa/go.mod h1:BHOTPb3L19zxehTsLoJXVaTktb06DFgmdW6Wb9s8jqk= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= -golang.org/x/oauth2 v0.25.0 h1:CY4y7XT9v0cRI9oupztF8AgiIu99L/ksR/Xp/6jrZ70= -golang.org/x/oauth2 v0.25.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= +golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= +golang.org/x/oauth2 v0.26.0 h1:afQXWNNaeC4nvZ0Ed9XvCCzXM6UHJG7iCg0W4fPqSBE= +golang.org/x/oauth2 v0.26.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= -golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= +golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -340,14 +340,14 @@ golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= -golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg= -golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU= +golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg= golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -361,12 +361,12 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 h1:ToEetK57OidYuqD4Q5w+vfEnPvPpuTwedCNVohYJfNk= google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f h1:gap6+3Gk41EItBuyi4XX/bp4oqJ3UwuIMl25yGinuAA= google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:Ic02D47M+zbarjYYUlK57y316f2MoN0gjAwI3f2S95o= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250122153221-138b5a5a4fd4 h1:yrTuav+chrF0zF/joFGICKTzYv7mh/gr9AgEXrVU8ao= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250122153221-138b5a5a4fd4/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a h1:51aaUVRocpvUOSQKM6Q7VuoaktNIaMCLuhZB6DKksq4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a/go.mod h1:uRxBH1mhmO8PGhU89cMcHaXKZqO+OfakD8QQO0oYwlQ= google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= -google.golang.org/protobuf v1.36.3 h1:82DV7MYdb8anAVi3qge1wSnMDrnKK7ebr+I0hHRN1BU= -google.golang.org/protobuf v1.36.3/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= +google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/pkg/service/common_test.go b/pkg/service/common_test.go index d32eb83..9ac40c1 100644 --- a/pkg/service/common_test.go +++ b/pkg/service/common_test.go @@ -18,7 +18,7 @@ func StartPostgres(ctx context.Context, ves ...datastore.Entity) (testcontainers var err error pgContainer, err = testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{ ContainerRequest: testcontainers.ContainerRequest{ - Image: "postgres:16-alpine", + Image: "postgres:17-alpine", ExposedPorts: []string{"5432/tcp"}, Env: map[string]string{"POSTGRES_PASSWORD": "password"}, WaitingFor: wait.ForAll( diff --git a/proto/buf.gen.yaml b/proto/buf.gen.yaml index 8525e98..b3fda3f 100644 --- a/proto/buf.gen.yaml +++ b/proto/buf.gen.yaml @@ -8,6 +8,6 @@ plugins: - remote: buf.build/grpc/go:v1.5.1 out: ../api opt: paths=source_relative,require_unimplemented_servers=false - - remote: buf.build/protocolbuffers/go:v1.36.3 + - remote: buf.build/protocolbuffers/go:v1.36.5 out: ../api opt: paths=source_relative From 6517a66208745002da4a7ea7c5e0fd2684e394f3 Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Tue, 22 Apr 2025 09:28:34 +0200 Subject: [PATCH 17/39] Merge main --- .github/workflows/docker.yaml | 4 +- api/v1/common.pb.go | 27 ++- api/v1/iam.pb.go | 135 +++++---------- api/v1/meta.pb.go | 56 ++---- api/v1/project.pb.go | 154 ++++++----------- api/v1/project_member.pb.go | 127 +++++--------- api/v1/quota.pb.go | 38 ++-- api/v1/tenant.pb.go | 315 +++++++++++----------------------- api/v1/tenant_member.pb.go | 123 ++++--------- api/v1/version.pb.go | 40 ++--- go.mod | 57 +++--- go.sum | 126 +++++++------- pkg/datastore/bootstrap.go | 8 +- pkg/health/health.go | 6 + proto/Makefile | 2 +- proto/buf.gen.yaml | 2 +- 16 files changed, 436 insertions(+), 784 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 5d90d05..44f543e 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -38,9 +38,9 @@ jobs: cache: false - name: Lint - uses: golangci/golangci-lint-action@v6 + uses: golangci/golangci-lint-action@v7 with: - args: --build-tags integration -p bugs -p unused -D protogetter --timeout=10m + args: --build-tags integration -D protogetter --timeout=10m - name: Make tag run: | diff --git a/api/v1/common.pb.go b/api/v1/common.pb.go index 91907fc..58211e2 100644 --- a/api/v1/common.pb.go +++ b/api/v1/common.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.5 +// protoc-gen-go v1.36.6 // protoc (unknown) // source: v1/common.proto @@ -78,22 +78,15 @@ func (x *Paging) GetCount() uint64 { var File_v1_common_proto protoreflect.FileDescriptor -var file_v1_common_proto_rawDesc = string([]byte{ - 0x0a, 0x0f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x12, 0x02, 0x76, 0x31, 0x22, 0x4f, 0x0a, 0x06, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, - 0x17, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, - 0x04, 0x70, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x67, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x31, - 0x42, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, - 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x74, 0x61, - 0x6c, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x64, 0x61, - 0x74, 0x61, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x56, 0x58, 0x58, 0xaa, - 0x02, 0x02, 0x56, 0x31, 0xca, 0x02, 0x02, 0x56, 0x31, 0xe2, 0x02, 0x0e, 0x56, 0x31, 0x5c, 0x47, - 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x02, 0x56, 0x31, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -}) +const file_v1_common_proto_rawDesc = "" + + "\n" + + "\x0fv1/common.proto\x12\x02v1\"O\n" + + "\x06Paging\x12\x17\n" + + "\x04page\x18\x01 \x01(\x04H\x00R\x04page\x88\x01\x01\x12\x19\n" + + "\x05count\x18\x02 \x01(\x04H\x01R\x05count\x88\x01\x01B\a\n" + + "\x05_pageB\b\n" + + "\x06_countBg\n" + + "\x06com.v1B\vCommonProtoP\x01Z(github.com/metal-stack/masterdata-api/v1\xa2\x02\x03VXX\xaa\x02\x02V1\xca\x02\x02V1\xe2\x02\x0eV1\\GPBMetadata\xea\x02\x02V1b\x06proto3" var ( file_v1_common_proto_rawDescOnce sync.Once diff --git a/api/v1/iam.pb.go b/api/v1/iam.pb.go index 81fc670..e179aa1 100644 --- a/api/v1/iam.pb.go +++ b/api/v1/iam.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.5 +// protoc-gen-go v1.36.6 // protoc (unknown) // source: v1/iam.proto @@ -433,96 +433,49 @@ func (x *ConnectorConfig) GetIdmReqEmail() string { var File_v1_iam_proto protoreflect.FileDescriptor -var file_v1_iam_proto_rawDesc = string([]byte{ - 0x0a, 0x0c, 0x76, 0x31, 0x2f, 0x69, 0x61, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, - 0x76, 0x31, 0x22, 0xad, 0x01, 0x0a, 0x09, 0x49, 0x41, 0x4d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x35, 0x0a, 0x0d, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, - 0x75, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x69, 0x73, 0x73, 0x75, 0x65, - 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2c, 0x0a, 0x0a, 0x69, 0x64, 0x6d, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x76, 0x31, - 0x2e, 0x49, 0x44, 0x4d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x69, 0x64, 0x6d, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, 0x0a, 0x0c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x31, - 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x22, 0x3d, 0x0a, 0x0c, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, - 0x64, 0x22, 0x66, 0x0a, 0x09, 0x49, 0x44, 0x4d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x19, - 0x0a, 0x08, 0x69, 0x64, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x69, 0x64, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3e, 0x0a, 0x10, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xa5, 0x02, 0x0a, 0x14, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x2f, 0x0a, 0x13, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x12, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x12, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x12, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4d, 0x61, - 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x3c, 0x0a, 0x1a, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x6e, 0x61, 0x6d, 0x65, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x22, 0xf0, 0x04, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1e, 0x0a, 0x0b, 0x69, 0x64, 0x6d, 0x5f, 0x61, 0x70, 0x69, - 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x64, 0x6d, 0x41, - 0x70, 0x69, 0x55, 0x72, 0x6c, 0x12, 0x20, 0x0a, 0x0c, 0x69, 0x64, 0x6d, 0x5f, 0x61, 0x70, 0x69, - 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x6d, - 0x41, 0x70, 0x69, 0x55, 0x73, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x69, 0x64, 0x6d, 0x5f, 0x61, - 0x70, 0x69, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x69, 0x64, 0x6d, 0x41, 0x70, 0x69, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, - 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x64, 0x6d, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, - 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x64, 0x6d, 0x53, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x64, 0x6d, 0x5f, 0x61, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x69, 0x64, 0x6d, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x26, 0x0a, - 0x0f, 0x69, 0x64, 0x6d, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x64, 0x6d, 0x43, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x69, 0x64, 0x6d, 0x5f, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x5f, 0x6f, 0x75, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x6d, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4f, 0x75, 0x12, 0x39, 0x0a, 0x16, 0x69, 0x64, 0x6d, 0x5f, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x14, 0x69, 0x64, 0x6d, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x6e, 0x61, 0x6d, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x64, 0x6d, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x64, 0x6d, - 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x64, - 0x6d, 0x5f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x64, 0x6d, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, - 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x64, 0x6d, 0x5f, 0x73, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, - 0x64, 0x6d, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0c, 0x69, - 0x64, 0x6d, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x69, 0x64, 0x6d, 0x4a, 0x6f, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, - 0x0e, 0x69, 0x64, 0x6d, 0x5f, 0x72, 0x65, 0x71, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x64, 0x6d, 0x52, 0x65, 0x71, 0x53, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x12, 0x20, 0x0a, 0x0c, 0x69, 0x64, 0x6d, 0x5f, 0x72, 0x65, 0x71, 0x5f, 0x75, - 0x73, 0x65, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x6d, 0x52, 0x65, - 0x71, 0x55, 0x73, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x64, 0x6d, 0x5f, 0x72, 0x65, 0x71, - 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x64, - 0x6d, 0x52, 0x65, 0x71, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x69, 0x64, - 0x6d, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x42, 0x64, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x08, - 0x49, 0x61, 0x6d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x2d, 0x73, 0x74, 0x61, - 0x63, 0x6b, 0x2f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2d, 0x61, 0x70, - 0x69, 0x2f, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x56, 0x58, 0x58, 0xaa, 0x02, 0x02, 0x56, 0x31, 0xca, - 0x02, 0x02, 0x56, 0x31, 0xe2, 0x02, 0x0e, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x02, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, -}) +const file_v1_iam_proto_rawDesc = "" + + "\n" + + "\fv1/iam.proto\x12\x02v1\"\xad\x01\n" + + "\tIAMConfig\x125\n" + + "\rissuer_config\x18\x01 \x01(\v2\x10.v1.IssuerConfigR\fissuerConfig\x12,\n" + + "\n" + + "idm_config\x18\x02 \x01(\v2\r.v1.IDMConfigR\tidmConfig\x12;\n" + + "\fgroup_config\x18\x03 \x01(\v2\x18.v1.NamespaceGroupConfigR\vgroupConfig\"=\n" + + "\fIssuerConfig\x12\x10\n" + + "\x03url\x18\x01 \x01(\tR\x03url\x12\x1b\n" + + "\tclient_id\x18\x02 \x01(\tR\bclientId\"f\n" + + "\tIDMConfig\x12\x19\n" + + "\bidm_type\x18\x01 \x01(\tR\aidmType\x12>\n" + + "\x10connector_config\x18\x02 \x01(\v2\x13.v1.ConnectorConfigR\x0fconnectorConfig\"\xa5\x02\n" + + "\x14NamespaceGroupConfig\x12/\n" + + "\x13excluded_namespaces\x18\x01 \x01(\tR\x12excludedNamespaces\x120\n" + + "\x14expected_groups_list\x18\x02 \x01(\tR\x12expectedGroupsList\x120\n" + + "\x14namespace_max_length\x18\x03 \x01(\x05R\x12namespaceMaxLength\x12<\n" + + "\x1acluster_groupname_template\x18\x04 \x01(\tR\x18clusterGroupnameTemplate\x12:\n" + + "\x19rolebinding_name_template\x18\x05 \x01(\tR\x17rolebindingNameTemplate\"\xf0\x04\n" + + "\x0fConnectorConfig\x12\x1e\n" + + "\vidm_api_url\x18\x01 \x01(\tR\tidmApiUrl\x12 \n" + + "\fidm_api_user\x18\x02 \x01(\tR\n" + + "idmApiUser\x12(\n" + + "\x10idm_api_password\x18\x03 \x01(\tR\x0eidmApiPassword\x12\"\n" + + "\ridm_system_id\x18\x04 \x01(\tR\vidmSystemId\x12&\n" + + "\x0fidm_access_code\x18\x05 \x01(\tR\ridmAccessCode\x12&\n" + + "\x0fidm_customer_id\x18\x06 \x01(\tR\ridmCustomerId\x12 \n" + + "\fidm_group_ou\x18\a \x01(\tR\n" + + "idmGroupOu\x129\n" + + "\x16idm_groupname_template\x18\b \x01(\tH\x00R\x14idmGroupnameTemplate\x88\x01\x01\x12&\n" + + "\x0fidm_domain_name\x18\t \x01(\tR\ridmDomainName\x12*\n" + + "\x11idm_tenant_prefix\x18\n" + + " \x01(\tR\x0fidmTenantPrefix\x12#\n" + + "\ridm_submitter\x18\v \x01(\tR\fidmSubmitter\x12 \n" + + "\fidm_job_info\x18\f \x01(\tR\n" + + "idmJobInfo\x12$\n" + + "\x0eidm_req_system\x18\r \x01(\tR\fidmReqSystem\x12 \n" + + "\fidm_req_user\x18\x0e \x01(\tR\n" + + "idmReqUser\x12\"\n" + + "\ridm_req_email\x18\x0f \x01(\tR\vidmReqEmailB\x19\n" + + "\x17_idm_groupname_templateBd\n" + + "\x06com.v1B\bIamProtoP\x01Z(github.com/metal-stack/masterdata-api/v1\xa2\x02\x03VXX\xaa\x02\x02V1\xca\x02\x02V1\xe2\x02\x0eV1\\GPBMetadata\xea\x02\x02V1b\x06proto3" var ( file_v1_iam_proto_rawDescOnce sync.Once diff --git a/api/v1/meta.pb.go b/api/v1/meta.pb.go index a9d9145..438a43c 100644 --- a/api/v1/meta.pb.go +++ b/api/v1/meta.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.5 +// protoc-gen-go v1.36.6 // protoc (unknown) // source: v1/meta.proto @@ -124,42 +124,24 @@ func (x *Meta) GetLabels() []string { var File_v1_meta_proto protoreflect.FileDescriptor -var file_v1_meta_proto_rawDesc = string([]byte{ - 0x0a, 0x0d, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, - 0x02, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf7, 0x02, 0x0a, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, - 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x0c, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x3e, - 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x65, - 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x09, 0x4d, 0x65, 0x74, 0x61, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x6d, 0x61, - 0x73, 0x74, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0xa2, - 0x02, 0x03, 0x56, 0x58, 0x58, 0xaa, 0x02, 0x02, 0x56, 0x31, 0xca, 0x02, 0x02, 0x56, 0x31, 0xe2, - 0x02, 0x0e, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0xea, 0x02, 0x02, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -}) +const file_v1_meta_proto_rawDesc = "" + + "\n" + + "\rv1/meta.proto\x12\x02v1\x1a\x1fgoogle/protobuf/timestamp.proto\"\xf7\x02\n" + + "\x04Meta\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04kind\x18\x02 \x01(\tR\x04kind\x12\x1e\n" + + "\n" + + "apiversion\x18\x03 \x01(\tR\n" + + "apiversion\x12\x18\n" + + "\aversion\x18\x04 \x01(\x03R\aversion\x12=\n" + + "\fcreated_time\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\vcreatedTime\x12=\n" + + "\fupdated_time\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\vupdatedTime\x12;\n" + + "\vannotations\x18\a \x03(\v2\x19.v1.Meta.AnnotationsEntryR\vannotations\x12\x16\n" + + "\x06labels\x18\b \x03(\tR\x06labels\x1a>\n" + + "\x10AnnotationsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01Be\n" + + "\x06com.v1B\tMetaProtoP\x01Z(github.com/metal-stack/masterdata-api/v1\xa2\x02\x03VXX\xaa\x02\x02V1\xca\x02\x02V1\xe2\x02\x0eV1\\GPBMetadata\xea\x02\x02V1b\x06proto3" var ( file_v1_meta_proto_rawDescOnce sync.Once diff --git a/api/v1/project.pb.go b/api/v1/project.pb.go index 39f534d..9f78194 100644 --- a/api/v1/project.pb.go +++ b/api/v1/project.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.5 +// protoc-gen-go v1.36.6 // protoc (unknown) // source: v1/project.proto @@ -510,106 +510,58 @@ func (x *ProjectListResponse) GetNextPage() uint64 { var File_v1_project_proto protoreflect.FileDescriptor -var file_v1_project_proto_rawDesc = string([]byte{ - 0x0a, 0x10, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x12, 0x02, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0d, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x74, - 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0e, 0x76, 0x31, 0x2f, 0x71, 0x75, 0x6f, 0x74, - 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa0, 0x01, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x12, 0x1c, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x08, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, - 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, - 0x6e, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x06, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x53, - 0x65, 0x74, 0x52, 0x06, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x22, 0x3d, 0x0a, 0x14, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x25, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x3d, 0x0a, 0x14, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x25, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x26, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x22, 0x23, 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x47, 0x65, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x56, 0x0a, 0x18, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x2a, 0x0a, 0x02, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x02, 0x61, 0x74, 0x22, 0xe8, 0x02, - 0x0a, 0x12, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x74, 0x65, 0x6e, - 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x08, - 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x06, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, - 0x49, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, - 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, - 0x64, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, - 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x22, 0x38, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x22, 0x6e, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x08, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x12, 0x20, 0x0a, 0x09, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x08, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, - 0x65, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, - 0x67, 0x65, 0x32, 0xe8, 0x02, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, - 0x18, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, - 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x18, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x12, 0x18, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x31, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x15, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, - 0x79, 0x12, 0x1c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x47, 0x65, - 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x13, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x46, 0x69, 0x6e, 0x64, 0x12, 0x16, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x68, 0x0a, - 0x06, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, - 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x31, 0xa2, 0x02, 0x03, 0x56, 0x58, 0x58, 0xaa, 0x02, 0x02, 0x56, 0x31, 0xca, 0x02, 0x02, 0x56, - 0x31, 0xe2, 0x02, 0x0e, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0xea, 0x02, 0x02, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -}) +const file_v1_project_proto_rawDesc = "" + + "\n" + + "\x10v1/project.proto\x12\x02v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x0fv1/common.proto\x1a\rv1/meta.proto\x1a\x0ev1/quota.proto\"\xa0\x01\n" + + "\aProject\x12\x1c\n" + + "\x04meta\x18\x01 \x01(\v2\b.v1.MetaR\x04meta\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12 \n" + + "\vdescription\x18\x03 \x01(\tR\vdescription\x12\x1b\n" + + "\ttenant_id\x18\x04 \x01(\tR\btenantId\x12$\n" + + "\x06quotas\x18\x05 \x01(\v2\f.v1.QuotaSetR\x06quotas\"=\n" + + "\x14ProjectCreateRequest\x12%\n" + + "\aproject\x18\x01 \x01(\v2\v.v1.ProjectR\aproject\"=\n" + + "\x14ProjectUpdateRequest\x12%\n" + + "\aproject\x18\x01 \x01(\v2\v.v1.ProjectR\aproject\"&\n" + + "\x14ProjectDeleteRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\"#\n" + + "\x11ProjectGetRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\"V\n" + + "\x18ProjectGetHistoryRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12*\n" + + "\x02at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\x02at\"\xe8\x02\n" + + "\x12ProjectFindRequest\x12\x13\n" + + "\x02id\x18\x01 \x01(\tH\x00R\x02id\x88\x01\x01\x12\x17\n" + + "\x04name\x18\x02 \x01(\tH\x01R\x04name\x88\x01\x01\x12%\n" + + "\vdescription\x18\x03 \x01(\tH\x02R\vdescription\x88\x01\x01\x12 \n" + + "\ttenant_id\x18\x04 \x01(\tH\x03R\btenantId\x88\x01\x01\x12\"\n" + + "\x06paging\x18\x05 \x01(\v2\n" + + ".v1.PagingR\x06paging\x12I\n" + + "\vannotations\x18\x06 \x03(\v2'.v1.ProjectFindRequest.AnnotationsEntryR\vannotations\x1a>\n" + + "\x10AnnotationsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\x05\n" + + "\x03_idB\a\n" + + "\x05_nameB\x0e\n" + + "\f_descriptionB\f\n" + + "\n" + + "_tenant_id\"8\n" + + "\x0fProjectResponse\x12%\n" + + "\aproject\x18\x01 \x01(\v2\v.v1.ProjectR\aproject\"n\n" + + "\x13ProjectListResponse\x12'\n" + + "\bprojects\x18\x01 \x03(\v2\v.v1.ProjectR\bprojects\x12 \n" + + "\tnext_page\x18\x02 \x01(\x04H\x00R\bnextPage\x88\x01\x01B\f\n" + + "\n" + + "_next_page2\xe8\x02\n" + + "\x0eProjectService\x127\n" + + "\x06Create\x12\x18.v1.ProjectCreateRequest\x1a\x13.v1.ProjectResponse\x127\n" + + "\x06Update\x12\x18.v1.ProjectUpdateRequest\x1a\x13.v1.ProjectResponse\x127\n" + + "\x06Delete\x12\x18.v1.ProjectDeleteRequest\x1a\x13.v1.ProjectResponse\x121\n" + + "\x03Get\x12\x15.v1.ProjectGetRequest\x1a\x13.v1.ProjectResponse\x12?\n" + + "\n" + + "GetHistory\x12\x1c.v1.ProjectGetHistoryRequest\x1a\x13.v1.ProjectResponse\x127\n" + + "\x04Find\x12\x16.v1.ProjectFindRequest\x1a\x17.v1.ProjectListResponseBh\n" + + "\x06com.v1B\fProjectProtoP\x01Z(github.com/metal-stack/masterdata-api/v1\xa2\x02\x03VXX\xaa\x02\x02V1\xca\x02\x02V1\xe2\x02\x0eV1\\GPBMetadata\xea\x02\x02V1b\x06proto3" var ( file_v1_project_proto_rawDescOnce sync.Once diff --git a/api/v1/project_member.pb.go b/api/v1/project_member.pb.go index 9eea4a2..c11ba7f 100644 --- a/api/v1/project_member.pb.go +++ b/api/v1/project_member.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.5 +// protoc-gen-go v1.36.6 // protoc (unknown) // source: v1/project_member.proto @@ -408,93 +408,44 @@ func (x *ProjectMemberListResponse) GetProjectMembers() []*ProjectMember { var File_v1_project_member_proto protoreflect.FileDescriptor -var file_v1_project_member_proto_rawDesc = string([]byte{ - 0x0a, 0x17, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x76, 0x31, 0x1a, 0x0d, 0x76, - 0x31, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x69, 0x0a, 0x0d, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1c, 0x0a, - 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x76, 0x31, - 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, - 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, - 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x56, 0x0a, 0x1a, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, - 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x22, - 0x56, 0x0a, 0x1a, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, - 0x0e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x2c, 0x0a, 0x1a, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x29, 0x0a, 0x17, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x22, 0x8e, 0x02, 0x0a, 0x18, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, - 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x20, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, - 0x88, 0x01, 0x01, 0x12, 0x4f, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x69, 0x6e, 0x64, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, - 0x64, 0x22, 0x51, 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0e, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x22, 0x57, 0x0a, 0x19, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3a, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x0e, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x32, 0xe9, 0x02, - 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x12, 0x1e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x19, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x43, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1e, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x1b, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x47, - 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x46, 0x69, 0x6e, 0x64, 0x12, 0x1c, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, - 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x6e, 0x0a, 0x06, 0x63, 0x6f, 0x6d, - 0x2e, 0x76, 0x31, 0x42, 0x12, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x2d, 0x73, 0x74, 0x61, 0x63, - 0x6b, 0x2f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2d, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x56, 0x58, 0x58, 0xaa, 0x02, 0x02, 0x56, 0x31, 0xca, 0x02, - 0x02, 0x56, 0x31, 0xe2, 0x02, 0x0e, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x02, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, -}) +const file_v1_project_member_proto_rawDesc = "" + + "\n" + + "\x17v1/project_member.proto\x12\x02v1\x1a\rv1/meta.proto\"i\n" + + "\rProjectMember\x12\x1c\n" + + "\x04meta\x18\x01 \x01(\v2\b.v1.MetaR\x04meta\x12\x1d\n" + + "\n" + + "project_id\x18\x02 \x01(\tR\tprojectId\x12\x1b\n" + + "\ttenant_id\x18\x04 \x01(\tR\btenantId\"V\n" + + "\x1aProjectMemberCreateRequest\x128\n" + + "\x0eproject_member\x18\x01 \x01(\v2\x11.v1.ProjectMemberR\rprojectMember\"V\n" + + "\x1aProjectMemberUpdateRequest\x128\n" + + "\x0eproject_member\x18\x01 \x01(\v2\x11.v1.ProjectMemberR\rprojectMember\",\n" + + "\x1aProjectMemberDeleteRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\")\n" + + "\x17ProjectMemberGetRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\"\x8e\x02\n" + + "\x18ProjectMemberFindRequest\x12\"\n" + + "\n" + + "project_id\x18\x01 \x01(\tH\x00R\tprojectId\x88\x01\x01\x12 \n" + + "\ttenant_id\x18\x02 \x01(\tH\x01R\btenantId\x88\x01\x01\x12O\n" + + "\vannotations\x18\x06 \x03(\v2-.v1.ProjectMemberFindRequest.AnnotationsEntryR\vannotations\x1a>\n" + + "\x10AnnotationsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\r\n" + + "\v_project_idB\f\n" + + "\n" + + "_tenant_id\"Q\n" + + "\x15ProjectMemberResponse\x128\n" + + "\x0eproject_member\x18\x01 \x01(\v2\x11.v1.ProjectMemberR\rprojectMember\"W\n" + + "\x19ProjectMemberListResponse\x12:\n" + + "\x0fproject_members\x18\x01 \x03(\v2\x11.v1.ProjectMemberR\x0eprojectMembers2\xe9\x02\n" + + "\x14ProjectMemberService\x12C\n" + + "\x06Create\x12\x1e.v1.ProjectMemberCreateRequest\x1a\x19.v1.ProjectMemberResponse\x12C\n" + + "\x06Update\x12\x1e.v1.ProjectMemberUpdateRequest\x1a\x19.v1.ProjectMemberResponse\x12C\n" + + "\x06Delete\x12\x1e.v1.ProjectMemberDeleteRequest\x1a\x19.v1.ProjectMemberResponse\x12=\n" + + "\x03Get\x12\x1b.v1.ProjectMemberGetRequest\x1a\x19.v1.ProjectMemberResponse\x12C\n" + + "\x04Find\x12\x1c.v1.ProjectMemberFindRequest\x1a\x1d.v1.ProjectMemberListResponseBn\n" + + "\x06com.v1B\x12ProjectMemberProtoP\x01Z(github.com/metal-stack/masterdata-api/v1\xa2\x02\x03VXX\xaa\x02\x02V1\xca\x02\x02V1\xe2\x02\x0eV1\\GPBMetadata\xea\x02\x02V1b\x06proto3" var ( file_v1_project_member_proto_rawDescOnce sync.Once diff --git a/api/v1/quota.pb.go b/api/v1/quota.pb.go index 7b47a9c..1317c8c 100644 --- a/api/v1/quota.pb.go +++ b/api/v1/quota.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.5 +// protoc-gen-go v1.36.6 // protoc (unknown) // source: v1/quota.proto @@ -145,29 +145,19 @@ func (x *Quota) GetQuota() int32 { var File_v1_quota_proto protoreflect.FileDescriptor -var file_v1_quota_proto_rawDesc = string([]byte{ - 0x0a, 0x0e, 0x76, 0x31, 0x2f, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x12, 0x02, 0x76, 0x31, 0x22, 0x94, 0x01, 0x0a, 0x08, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x53, 0x65, - 0x74, 0x12, 0x23, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x52, 0x07, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x07, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x6f, - 0x74, 0x61, 0x52, 0x07, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x12, 0x19, 0x0a, 0x02, 0x69, - 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x6f, - 0x74, 0x61, 0x52, 0x02, 0x69, 0x70, 0x12, 0x23, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x6f, - 0x74, 0x61, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x2c, 0x0a, 0x05, 0x51, - 0x75, 0x6f, 0x74, 0x61, 0x12, 0x19, 0x0a, 0x05, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x05, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x88, 0x01, 0x01, 0x42, - 0x08, 0x0a, 0x06, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x42, 0x66, 0x0a, 0x06, 0x63, 0x6f, 0x6d, - 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, - 0x01, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, - 0x74, 0x61, 0x6c, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, - 0x64, 0x61, 0x74, 0x61, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x56, 0x58, - 0x58, 0xaa, 0x02, 0x02, 0x56, 0x31, 0xca, 0x02, 0x02, 0x56, 0x31, 0xe2, 0x02, 0x0e, 0x56, 0x31, - 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x02, 0x56, - 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -}) +const file_v1_quota_proto_rawDesc = "" + + "\n" + + "\x0ev1/quota.proto\x12\x02v1\"\x94\x01\n" + + "\bQuotaSet\x12#\n" + + "\acluster\x18\x01 \x01(\v2\t.v1.QuotaR\acluster\x12#\n" + + "\amachine\x18\x02 \x01(\v2\t.v1.QuotaR\amachine\x12\x19\n" + + "\x02ip\x18\x03 \x01(\v2\t.v1.QuotaR\x02ip\x12#\n" + + "\aproject\x18\x04 \x01(\v2\t.v1.QuotaR\aproject\",\n" + + "\x05Quota\x12\x19\n" + + "\x05quota\x18\x01 \x01(\x05H\x00R\x05quota\x88\x01\x01B\b\n" + + "\x06_quotaBf\n" + + "\x06com.v1B\n" + + "QuotaProtoP\x01Z(github.com/metal-stack/masterdata-api/v1\xa2\x02\x03VXX\xaa\x02\x02V1\xca\x02\x02V1\xe2\x02\x0eV1\\GPBMetadata\xea\x02\x02V1b\x06proto3" var ( file_v1_quota_proto_rawDescOnce sync.Once diff --git a/api/v1/tenant.pb.go b/api/v1/tenant.pb.go index 37fd4d4..337af2a 100644 --- a/api/v1/tenant.pb.go +++ b/api/v1/tenant.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.5 +// protoc-gen-go v1.36.6 // protoc (unknown) // source: v1/tenant.proto @@ -918,222 +918,103 @@ func (x *TenantListResponse) GetNextPage() uint64 { var File_v1_tenant_proto protoreflect.FileDescriptor -var file_v1_tenant_proto_rawDesc = string([]byte{ - 0x0a, 0x0f, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x12, 0x02, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0c, 0x76, 0x31, 0x2f, 0x69, 0x61, 0x6d, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0d, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x10, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0e, 0x76, 0x31, 0x2f, 0x71, 0x75, 0x6f, 0x74, 0x61, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x87, 0x01, 0x0a, 0x20, 0x46, 0x69, 0x6e, 0x64, 0x50, - 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, - 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x11, 0x69, 0x6e, 0x63, 0x6c, - 0x75, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x10, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x49, 0x6e, - 0x68, 0x65, 0x72, 0x69, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x69, - 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x65, 0x64, - 0x22, 0x86, 0x01, 0x0a, 0x1f, 0x46, 0x69, 0x6e, 0x64, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, - 0x70, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, - 0x64, 0x12, 0x30, 0x0a, 0x11, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x68, - 0x65, 0x72, 0x69, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x10, - 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x49, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x65, 0x64, - 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, - 0x69, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x65, 0x64, 0x22, 0x7f, 0x0a, 0x18, 0x4c, 0x69, 0x73, - 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, - 0x49, 0x64, 0x12, 0x30, 0x0a, 0x11, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x69, 0x6e, - 0x68, 0x65, 0x72, 0x69, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, - 0x10, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x49, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x65, - 0x64, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, - 0x5f, 0x69, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x65, 0x64, 0x22, 0x5a, 0x0a, 0x19, 0x4c, 0x69, - 0x73, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x07, 0x74, 0x65, 0x6e, 0x61, 0x6e, - 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, - 0x6e, 0x61, 0x6e, 0x74, 0x57, 0x69, 0x74, 0x68, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, - 0x69, 0x70, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x74, - 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x22, 0x65, 0x0a, 0x21, 0x46, 0x69, 0x6e, 0x64, 0x50, 0x61, - 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x08, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x69, 0x74, 0x68, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x22, 0x61, 0x0a, - 0x20, 0x46, 0x69, 0x6e, 0x64, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, - 0x6e, 0x67, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3d, 0x0a, 0x07, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x57, 0x69, - 0x74, 0x68, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x41, 0x6e, 0x6e, 0x6f, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, - 0x22, 0xb1, 0x03, 0x0a, 0x20, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x69, 0x74, 0x68, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x6d, 0x0a, 0x13, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x69, 0x74, 0x68, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x73, 0x68, 0x69, 0x70, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x6a, 0x0a, 0x12, 0x74, - 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x57, 0x69, 0x74, 0x68, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, - 0x69, 0x70, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, - 0x6e, 0x61, 0x6e, 0x74, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x41, 0x6e, 0x6e, 0x6f, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x45, 0x0a, 0x17, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, - 0x0a, 0x16, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0xcc, 0x03, 0x0a, 0x1f, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x57, - 0x69, 0x74, 0x68, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x41, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x22, 0x0a, 0x06, 0x74, 0x65, 0x6e, 0x61, - 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, - 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x12, 0x6c, 0x0a, 0x13, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x76, 0x31, 0x2e, 0x54, - 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x57, 0x69, 0x74, 0x68, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x68, 0x69, 0x70, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x69, 0x0a, 0x12, 0x74, 0x65, - 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, - 0x6e, 0x74, 0x57, 0x69, 0x74, 0x68, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, - 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x6e, 0x61, - 0x6e, 0x74, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x11, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x49, 0x64, 0x73, 0x1a, 0x45, 0x0a, 0x17, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, - 0x16, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0xe5, 0x01, 0x0a, 0x06, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x12, 0x1c, - 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x76, - 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x71, 0x75, - 0x6f, 0x74, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x76, 0x31, 0x2e, - 0x51, 0x75, 0x6f, 0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x12, 0x24, 0x0a, 0x06, 0x71, 0x75, 0x6f, 0x74, 0x61, - 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x6f, - 0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x06, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x12, 0x2c, 0x0a, - 0x0a, 0x69, 0x61, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0d, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x41, 0x4d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x09, 0x69, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x39, 0x0a, 0x13, 0x54, - 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x22, 0x0a, 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x06, - 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x22, 0x39, 0x0a, 0x13, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, - 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, - 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, - 0x74, 0x22, 0x25, 0x0a, 0x13, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x22, 0x0a, 0x10, 0x54, 0x65, 0x6e, 0x61, - 0x6e, 0x74, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x55, 0x0a, 0x17, - 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2a, 0x0a, 0x02, 0x61, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, - 0x02, 0x61, 0x74, 0x22, 0xff, 0x01, 0x0a, 0x11, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x46, 0x69, - 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x17, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, - 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, - 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x48, 0x0a, 0x0b, 0x61, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x26, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x46, 0x69, 0x6e, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x64, 0x42, 0x07, 0x0a, 0x05, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x34, 0x0a, 0x0e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, - 0x61, 0x6e, 0x74, 0x52, 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x22, 0x6a, 0x0a, 0x12, 0x54, - 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x24, 0x0a, 0x07, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x07, - 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x20, 0x0a, 0x09, 0x6e, 0x65, 0x78, 0x74, 0x5f, - 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x08, 0x6e, 0x65, - 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6e, 0x65, - 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x32, 0xfe, 0x04, 0x0a, 0x0d, 0x54, 0x65, 0x6e, 0x61, - 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x12, 0x17, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x76, - 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x35, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x17, 0x2e, 0x76, 0x31, 0x2e, - 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x12, 0x17, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x76, 0x31, 0x2e, - 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, - 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x14, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, - 0x74, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x76, 0x31, - 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x3d, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1b, 0x2e, - 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x76, 0x31, 0x2e, - 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, - 0x0a, 0x04, 0x46, 0x69, 0x6e, 0x64, 0x12, 0x15, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, - 0x6e, 0x74, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, - 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6e, - 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x1c, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x19, 0x46, 0x69, 0x6e, 0x64, 0x50, - 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x12, 0x24, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x50, 0x61, - 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x76, 0x31, 0x2e, - 0x46, 0x69, 0x6e, 0x64, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6e, - 0x67, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x65, 0x0a, 0x18, 0x46, 0x69, 0x6e, 0x64, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, - 0x70, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x23, 0x2e, - 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, - 0x74, 0x69, 0x6e, 0x67, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x50, 0x61, 0x72, 0x74, - 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x67, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x2e, - 0x76, 0x31, 0x42, 0x0b, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, - 0x01, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, - 0x74, 0x61, 0x6c, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, - 0x64, 0x61, 0x74, 0x61, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x56, 0x58, - 0x58, 0xaa, 0x02, 0x02, 0x56, 0x31, 0xca, 0x02, 0x02, 0x56, 0x31, 0xe2, 0x02, 0x0e, 0x56, 0x31, - 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x02, 0x56, - 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -}) +const file_v1_tenant_proto_rawDesc = "" + + "\n" + + "\x0fv1/tenant.proto\x12\x02v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x0fv1/common.proto\x1a\fv1/iam.proto\x1a\rv1/meta.proto\x1a\x10v1/project.proto\x1a\x0ev1/quota.proto\"\x87\x01\n" + + " FindParticipatingProjectsRequest\x12\x1b\n" + + "\ttenant_id\x18\x01 \x01(\tR\btenantId\x120\n" + + "\x11include_inherited\x18\x02 \x01(\bH\x00R\x10includeInherited\x88\x01\x01B\x14\n" + + "\x12_include_inherited\"\x86\x01\n" + + "\x1fFindParticipatingTenantsRequest\x12\x1b\n" + + "\ttenant_id\x18\x01 \x01(\tR\btenantId\x120\n" + + "\x11include_inherited\x18\x02 \x01(\bH\x00R\x10includeInherited\x88\x01\x01B\x14\n" + + "\x12_include_inherited\"\x7f\n" + + "\x18ListTenantMembersRequest\x12\x1b\n" + + "\ttenant_id\x18\x01 \x01(\tR\btenantId\x120\n" + + "\x11include_inherited\x18\x02 \x01(\bH\x00R\x10includeInherited\x88\x01\x01B\x14\n" + + "\x12_include_inherited\"Z\n" + + "\x19ListTenantMembersResponse\x12=\n" + + "\atenants\x18\x01 \x03(\v2#.v1.TenantWithMembershipAnnotationsR\atenants\"e\n" + + "!FindParticipatingProjectsResponse\x12@\n" + + "\bprojects\x18\x01 \x03(\v2$.v1.ProjectWithMembershipAnnotationsR\bprojects\"a\n" + + " FindParticipatingTenantsResponse\x12=\n" + + "\atenants\x18\x01 \x03(\v2#.v1.TenantWithMembershipAnnotationsR\atenants\"\xb1\x03\n" + + " ProjectWithMembershipAnnotations\x12%\n" + + "\aproject\x18\x01 \x01(\v2\v.v1.ProjectR\aproject\x12m\n" + + "\x13project_annotations\x18\x02 \x03(\v2<.v1.ProjectWithMembershipAnnotations.ProjectAnnotationsEntryR\x12projectAnnotations\x12j\n" + + "\x12tenant_annotations\x18\x03 \x03(\v2;.v1.ProjectWithMembershipAnnotations.TenantAnnotationsEntryR\x11tenantAnnotations\x1aE\n" + + "\x17ProjectAnnotationsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1aD\n" + + "\x16TenantAnnotationsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xcc\x03\n" + + "\x1fTenantWithMembershipAnnotations\x12\"\n" + + "\x06tenant\x18\x01 \x01(\v2\n" + + ".v1.TenantR\x06tenant\x12l\n" + + "\x13project_annotations\x18\x02 \x03(\v2;.v1.TenantWithMembershipAnnotations.ProjectAnnotationsEntryR\x12projectAnnotations\x12i\n" + + "\x12tenant_annotations\x18\x03 \x03(\v2:.v1.TenantWithMembershipAnnotations.TenantAnnotationsEntryR\x11tenantAnnotations\x12\x1f\n" + + "\vproject_ids\x18\x04 \x03(\tR\n" + + "projectIds\x1aE\n" + + "\x17ProjectAnnotationsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1aD\n" + + "\x16TenantAnnotationsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xe5\x01\n" + + "\x06Tenant\x12\x1c\n" + + "\x04meta\x18\x01 \x01(\v2\b.v1.MetaR\x04meta\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12 \n" + + "\vdescription\x18\x03 \x01(\tR\vdescription\x123\n" + + "\x0edefault_quotas\x18\x04 \x01(\v2\f.v1.QuotaSetR\rdefaultQuotas\x12$\n" + + "\x06quotas\x18\x05 \x01(\v2\f.v1.QuotaSetR\x06quotas\x12,\n" + + "\n" + + "iam_config\x18\x06 \x01(\v2\r.v1.IAMConfigR\tiamConfig\"9\n" + + "\x13TenantCreateRequest\x12\"\n" + + "\x06tenant\x18\x01 \x01(\v2\n" + + ".v1.TenantR\x06tenant\"9\n" + + "\x13TenantUpdateRequest\x12\"\n" + + "\x06tenant\x18\x01 \x01(\v2\n" + + ".v1.TenantR\x06tenant\"%\n" + + "\x13TenantDeleteRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\"\"\n" + + "\x10TenantGetRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\"U\n" + + "\x17TenantGetHistoryRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12*\n" + + "\x02at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\x02at\"\xff\x01\n" + + "\x11TenantFindRequest\x12\x13\n" + + "\x02id\x18\x01 \x01(\tH\x00R\x02id\x88\x01\x01\x12\x17\n" + + "\x04name\x18\x02 \x01(\tH\x01R\x04name\x88\x01\x01\x12\"\n" + + "\x06paging\x18\x03 \x01(\v2\n" + + ".v1.PagingR\x06paging\x12H\n" + + "\vannotations\x18\x04 \x03(\v2&.v1.TenantFindRequest.AnnotationsEntryR\vannotations\x1a>\n" + + "\x10AnnotationsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\x05\n" + + "\x03_idB\a\n" + + "\x05_name\"4\n" + + "\x0eTenantResponse\x12\"\n" + + "\x06tenant\x18\x01 \x01(\v2\n" + + ".v1.TenantR\x06tenant\"j\n" + + "\x12TenantListResponse\x12$\n" + + "\atenants\x18\x01 \x03(\v2\n" + + ".v1.TenantR\atenants\x12 \n" + + "\tnext_page\x18\x02 \x01(\x04H\x00R\bnextPage\x88\x01\x01B\f\n" + + "\n" + + "_next_page2\xfe\x04\n" + + "\rTenantService\x125\n" + + "\x06Create\x12\x17.v1.TenantCreateRequest\x1a\x12.v1.TenantResponse\x125\n" + + "\x06Update\x12\x17.v1.TenantUpdateRequest\x1a\x12.v1.TenantResponse\x125\n" + + "\x06Delete\x12\x17.v1.TenantDeleteRequest\x1a\x12.v1.TenantResponse\x12/\n" + + "\x03Get\x12\x14.v1.TenantGetRequest\x1a\x12.v1.TenantResponse\x12=\n" + + "\n" + + "GetHistory\x12\x1b.v1.TenantGetHistoryRequest\x1a\x12.v1.TenantResponse\x125\n" + + "\x04Find\x12\x15.v1.TenantFindRequest\x1a\x16.v1.TenantListResponse\x12P\n" + + "\x11ListTenantMembers\x12\x1c.v1.ListTenantMembersRequest\x1a\x1d.v1.ListTenantMembersResponse\x12h\n" + + "\x19FindParticipatingProjects\x12$.v1.FindParticipatingProjectsRequest\x1a%.v1.FindParticipatingProjectsResponse\x12e\n" + + "\x18FindParticipatingTenants\x12#.v1.FindParticipatingTenantsRequest\x1a$.v1.FindParticipatingTenantsResponseBg\n" + + "\x06com.v1B\vTenantProtoP\x01Z(github.com/metal-stack/masterdata-api/v1\xa2\x02\x03VXX\xaa\x02\x02V1\xca\x02\x02V1\xe2\x02\x0eV1\\GPBMetadata\xea\x02\x02V1b\x06proto3" var ( file_v1_tenant_proto_rawDescOnce sync.Once diff --git a/api/v1/tenant_member.pb.go b/api/v1/tenant_member.pb.go index 1da78ed..ec62470 100644 --- a/api/v1/tenant_member.pb.go +++ b/api/v1/tenant_member.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.5 +// protoc-gen-go v1.36.6 // protoc (unknown) // source: v1/tenant_member.proto @@ -410,90 +410,43 @@ func (x *TenantMemberListResponse) GetTenantMembers() []*TenantMember { var File_v1_tenant_member_proto protoreflect.FileDescriptor -var file_v1_tenant_member_proto_rawDesc = string([]byte{ - 0x0a, 0x16, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x76, 0x31, 0x1a, 0x0d, 0x76, 0x31, - 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x66, 0x0a, 0x0c, 0x54, - 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x04, 0x6d, - 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x76, 0x31, 0x2e, 0x4d, - 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, - 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, - 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x49, 0x64, 0x22, 0x52, 0x0a, 0x19, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x35, 0x0a, 0x0d, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, - 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x0c, 0x74, 0x65, 0x6e, 0x61, 0x6e, - 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x52, 0x0a, 0x19, 0x54, 0x65, 0x6e, 0x61, 0x6e, - 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x0d, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x6d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x31, - 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x0c, 0x74, - 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x2b, 0x0a, 0x19, 0x54, - 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x28, 0x0a, 0x16, 0x54, 0x65, 0x6e, 0x61, - 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x22, 0x89, 0x02, 0x0a, 0x17, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, - 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, - 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x88, - 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, - 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0x4d, - 0x0a, 0x14, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0d, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, - 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, - 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, - 0x0c, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x53, 0x0a, - 0x18, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x0e, 0x74, 0x65, 0x6e, - 0x61, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x52, 0x0d, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x73, 0x32, 0xde, 0x02, 0x0a, 0x13, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x41, 0x0a, 0x06, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, - 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, - 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, - 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x41, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x76, 0x31, 0x2e, - 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x76, 0x31, 0x2e, 0x54, - 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x1a, 0x2e, 0x76, 0x31, 0x2e, - 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x47, 0x65, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, - 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x41, 0x0a, 0x04, 0x46, 0x69, 0x6e, 0x64, 0x12, 0x1b, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, - 0x6e, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, - 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x42, 0x6d, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x11, 0x54, - 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x50, 0x01, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, - 0x65, 0x74, 0x61, 0x6c, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x6d, 0x61, 0x73, 0x74, 0x65, - 0x72, 0x64, 0x61, 0x74, 0x61, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x56, - 0x58, 0x58, 0xaa, 0x02, 0x02, 0x56, 0x31, 0xca, 0x02, 0x02, 0x56, 0x31, 0xe2, 0x02, 0x0e, 0x56, - 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x02, - 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -}) +const file_v1_tenant_member_proto_rawDesc = "" + + "\n" + + "\x16v1/tenant_member.proto\x12\x02v1\x1a\rv1/meta.proto\"f\n" + + "\fTenantMember\x12\x1c\n" + + "\x04meta\x18\x01 \x01(\v2\b.v1.MetaR\x04meta\x12\x1b\n" + + "\ttenant_id\x18\x02 \x01(\tR\btenantId\x12\x1b\n" + + "\tmember_id\x18\x03 \x01(\tR\bmemberId\"R\n" + + "\x19TenantMemberCreateRequest\x125\n" + + "\rtenant_member\x18\x01 \x01(\v2\x10.v1.TenantMemberR\ftenantMember\"R\n" + + "\x19TenantMemberUpdateRequest\x125\n" + + "\rtenant_member\x18\x01 \x01(\v2\x10.v1.TenantMemberR\ftenantMember\"+\n" + + "\x19TenantMemberDeleteRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\"(\n" + + "\x16TenantMemberGetRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\"\x89\x02\n" + + "\x17TenantMemberFindRequest\x12 \n" + + "\ttenant_id\x18\x01 \x01(\tH\x00R\btenantId\x88\x01\x01\x12 \n" + + "\tmember_id\x18\x02 \x01(\tH\x01R\bmemberId\x88\x01\x01\x12N\n" + + "\vannotations\x18\x06 \x03(\v2,.v1.TenantMemberFindRequest.AnnotationsEntryR\vannotations\x1a>\n" + + "\x10AnnotationsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\f\n" + + "\n" + + "_tenant_idB\f\n" + + "\n" + + "_member_id\"M\n" + + "\x14TenantMemberResponse\x125\n" + + "\rtenant_member\x18\x01 \x01(\v2\x10.v1.TenantMemberR\ftenantMember\"S\n" + + "\x18TenantMemberListResponse\x127\n" + + "\x0etenant_members\x18\x01 \x03(\v2\x10.v1.TenantMemberR\rtenantMembers2\xde\x02\n" + + "\x13TenantMemberService\x12A\n" + + "\x06Create\x12\x1d.v1.TenantMemberCreateRequest\x1a\x18.v1.TenantMemberResponse\x12A\n" + + "\x06Update\x12\x1d.v1.TenantMemberUpdateRequest\x1a\x18.v1.TenantMemberResponse\x12A\n" + + "\x06Delete\x12\x1d.v1.TenantMemberDeleteRequest\x1a\x18.v1.TenantMemberResponse\x12;\n" + + "\x03Get\x12\x1a.v1.TenantMemberGetRequest\x1a\x18.v1.TenantMemberResponse\x12A\n" + + "\x04Find\x12\x1b.v1.TenantMemberFindRequest\x1a\x1c.v1.TenantMemberListResponseBm\n" + + "\x06com.v1B\x11TenantMemberProtoP\x01Z(github.com/metal-stack/masterdata-api/v1\xa2\x02\x03VXX\xaa\x02\x02V1\xca\x02\x02V1\xe2\x02\x0eV1\\GPBMetadata\xea\x02\x02V1b\x06proto3" var ( file_v1_tenant_member_proto_rawDescOnce sync.Once diff --git a/api/v1/version.pb.go b/api/v1/version.pb.go index 58a14b8..b6d0995 100644 --- a/api/v1/version.pb.go +++ b/api/v1/version.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.5 +// protoc-gen-go v1.36.6 // protoc (unknown) // source: v1/version.proto @@ -127,31 +127,19 @@ func (x *GetVersionResponse) GetBuildDate() string { var File_v1_version_proto protoreflect.FileDescriptor -var file_v1_version_proto_rawDesc = string([]byte{ - 0x0a, 0x10, 0x76, 0x31, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x12, 0x02, 0x76, 0x31, 0x22, 0x13, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x84, 0x01, 0x0a, 0x12, - 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, - 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x69, 0x74, 0x5f, - 0x73, 0x68, 0x61, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x69, 0x74, 0x53, - 0x68, 0x61, 0x31, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x64, 0x61, 0x74, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x44, 0x61, - 0x74, 0x65, 0x32, 0x46, 0x0a, 0x0e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x12, 0x34, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x15, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x68, 0x0a, 0x06, 0x63, 0x6f, - 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x6d, 0x61, 0x73, - 0x74, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0xa2, 0x02, - 0x03, 0x56, 0x58, 0x58, 0xaa, 0x02, 0x02, 0x56, 0x31, 0xca, 0x02, 0x02, 0x56, 0x31, 0xe2, 0x02, - 0x0e, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, - 0x02, 0x02, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -}) +const file_v1_version_proto_rawDesc = "" + + "\n" + + "\x10v1/version.proto\x12\x02v1\"\x13\n" + + "\x11GetVersionRequest\"\x84\x01\n" + + "\x12GetVersionResponse\x12\x18\n" + + "\aversion\x18\x01 \x01(\tR\aversion\x12\x1a\n" + + "\brevision\x18\x02 \x01(\tR\brevision\x12\x19\n" + + "\bgit_sha1\x18\x03 \x01(\tR\agitSha1\x12\x1d\n" + + "\n" + + "build_date\x18\x04 \x01(\tR\tbuildDate2F\n" + + "\x0eVersionService\x124\n" + + "\x03Get\x12\x15.v1.GetVersionRequest\x1a\x16.v1.GetVersionResponseBh\n" + + "\x06com.v1B\fVersionProtoP\x01Z(github.com/metal-stack/masterdata-api/v1\xa2\x02\x03VXX\xaa\x02\x02V1\xca\x02\x02V1\xe2\x02\x0eV1\\GPBMetadata\xea\x02\x02V1b\x06proto3" var ( file_v1_version_proto_rawDescOnce sync.Once diff --git a/go.mod b/go.mod index 2f7e1ab..ebd16a2 100644 --- a/go.mod +++ b/go.mod @@ -12,25 +12,24 @@ require ( github.com/json-iterator/go v1.1.12 github.com/lib/pq v1.10.9 github.com/lopezator/migrator v0.3.1 - github.com/metal-stack/metal-lib v0.20.2 + github.com/metal-stack/metal-lib v0.21.0 github.com/metal-stack/security v0.9.3 github.com/metal-stack/v v1.0.3 - github.com/prometheus/client_golang v1.21.1 + github.com/prometheus/client_golang v1.22.0 github.com/spf13/cobra v1.9.1 - github.com/spf13/viper v1.20.0 + github.com/spf13/viper v1.20.1 github.com/stretchr/testify v1.10.0 - github.com/testcontainers/testcontainers-go v0.35.0 - github.com/testcontainers/testcontainers-go/modules/postgres v0.35.0 + github.com/testcontainers/testcontainers-go v0.36.0 + github.com/testcontainers/testcontainers-go/modules/postgres v0.36.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 go.opentelemetry.io/otel/trace v1.35.0 - google.golang.org/grpc v1.71.0 - google.golang.org/protobuf v1.36.5 + google.golang.org/grpc v1.72.0 + google.golang.org/protobuf v1.36.6 sigs.k8s.io/yaml v1.4.0 ) require ( dario.cat/mergo v1.0.1 // indirect - github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 // indirect github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect @@ -39,17 +38,18 @@ require ( github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/coreos/go-oidc/v3 v3.13.0 // indirect + github.com/coreos/go-oidc/v3 v3.14.1 // indirect github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 // indirect github.com/distribution/reference v0.6.0 // indirect - github.com/docker/docker v28.0.2+incompatible // indirect + github.com/docker/docker v28.1.1+incompatible // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect + github.com/ebitengine/purego v0.8.2 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/fsnotify/fsnotify v1.8.0 // indirect - github.com/go-jose/go-jose/v4 v4.0.5 // indirect + github.com/fsnotify/fsnotify v1.9.0 // indirect + github.com/go-jose/go-jose/v4 v4.1.0 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.3.0 // indirect @@ -68,20 +68,22 @@ require ( github.com/klauspost/compress v1.18.0 // indirect github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect - github.com/lestrrat-go/blackmagic v1.0.2 // indirect + github.com/lestrrat-go/blackmagic v1.0.3 // indirect github.com/lestrrat-go/httpcc v1.0.1 // indirect github.com/lestrrat-go/httprc v1.0.6 // indirect github.com/lestrrat-go/iter v1.0.2 // indirect github.com/lestrrat-go/jwx/v2 v2.1.4 // indirect github.com/lestrrat-go/option v1.0.1 // indirect github.com/lufia/plan9stats v0.0.0-20250317134145-8bc96cf8fc35 // indirect - github.com/magiconair/properties v1.8.9 // indirect + github.com/magiconair/properties v1.8.10 // indirect github.com/mailru/easyjson v0.9.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect + github.com/moby/go-archive v0.1.0 // indirect github.com/moby/patternmatcher v0.6.0 // indirect + github.com/moby/sys/atomicwriter v0.1.0 // indirect github.com/moby/sys/sequential v0.6.0 // indirect - github.com/moby/sys/user v0.3.0 // indirect + github.com/moby/sys/user v0.4.0 // indirect github.com/moby/sys/userns v0.1.0 // indirect github.com/moby/term v0.5.2 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect @@ -91,17 +93,16 @@ require ( github.com/oklog/ulid v1.3.1 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.1 // indirect - github.com/pelletier/go-toml/v2 v2.2.3 // indirect + github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect - github.com/prometheus/client_model v0.6.1 // indirect + github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.63.0 // indirect - github.com/prometheus/procfs v0.16.0 // indirect - github.com/sagikazarmark/locafero v0.8.0 // indirect + github.com/prometheus/procfs v0.16.1 // indirect + github.com/sagikazarmark/locafero v0.9.0 // indirect github.com/segmentio/asm v1.2.0 // indirect - github.com/shirou/gopsutil/v3 v3.24.5 // indirect - github.com/shoenig/go-m1cpu v0.1.6 // indirect + github.com/shirou/gopsutil/v4 v4.25.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/spf13/afero v1.14.0 // indirect @@ -119,13 +120,13 @@ require ( go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0 // indirect go.opentelemetry.io/otel/metric v1.35.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.36.0 // indirect - golang.org/x/net v0.38.0 // indirect - golang.org/x/oauth2 v0.28.0 // indirect - golang.org/x/sync v0.12.0 // indirect - golang.org/x/sys v0.31.0 // indirect - golang.org/x/text v0.23.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250313205543-e70fdf4c4cb4 // indirect + golang.org/x/crypto v0.37.0 // indirect + golang.org/x/net v0.39.0 // indirect + golang.org/x/oauth2 v0.29.0 // indirect + golang.org/x/sync v0.13.0 // indirect + golang.org/x/sys v0.32.0 // indirect + golang.org/x/text v0.24.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250421163800-61c742ae3ef0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 8e8bb5f..c0ba771 100644 --- a/go.sum +++ b/go.sum @@ -24,8 +24,8 @@ github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/coreos/go-oidc/v3 v3.13.0 h1:M66zd0pcc5VxvBNM4pB331Wrsanby+QomQYjN8HamW8= -github.com/coreos/go-oidc/v3 v3.13.0/go.mod h1:HaZ3szPaZ0e4r6ebqvsLWlk2Tn+aejfmrfah6hnSYEU= +github.com/coreos/go-oidc/v3 v3.14.1 h1:9ePWwfdwC4QKRlCXsJGou56adA/owXczOzwKdOumLqk= +github.com/coreos/go-oidc/v3 v3.14.1/go.mod h1:HaZ3szPaZ0e4r6ebqvsLWlk2Tn+aejfmrfah6hnSYEU= github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= @@ -39,20 +39,22 @@ github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 h1:NMZiJj8QnKe1LgsbDayM4UoHwbvw github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0/go.mod h1:ZXNYxsqcloTdSy/rNShjYzMhyjf0LaoftYK0p+A3h40= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/docker v28.0.2+incompatible h1:9BILleFwug5FSSqWBgVevgL3ewDJfWWWyZVqlDMttE8= -github.com/docker/docker v28.0.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v28.1.1+incompatible h1:49M11BFLsVO1gxY9UX9p/zwkE/rswggs8AdFmXQw51I= +github.com/docker/docker v28.1.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/ebitengine/purego v0.8.2 h1:jPPGWs2sZ1UgOSgD2bClL0MJIqu58nOmIcBuXr62z1I= +github.com/ebitengine/purego v0.8.2/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= -github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= -github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= -github.com/go-jose/go-jose/v4 v4.0.5 h1:M6T8+mKZl/+fNNuFHvGIzDz7BTLQPIounk/b9dw3AaE= -github.com/go-jose/go-jose/v4 v4.0.5/go.mod h1:s3P1lRrkT8igV8D9OjyL4WRyHvjB6a4JSllnOrmmBOA= +github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= +github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= +github.com/go-jose/go-jose/v4 v4.1.0 h1:cYSYxd3pw5zd2FSXk2vGdn9igQU2PS8MuxrCOCl0FdY= +github.com/go-jose/go-jose/v4 v4.1.0/go.mod h1:GG/vqmYm3Von2nYiB2vGTXzdoNKE5tix5tuc6iAd+sw= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -151,8 +153,8 @@ github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 h1:SOEGU9fKiNWd/HOJuq github.com/lann/builder v0.0.0-20180802200727-47ae307949d0/go.mod h1:dXGbAdH5GtBTC4WfIxhKZfyBF/HBFgRZSWwZ9g/He9o= github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 h1:P6pPBnrTSX3DEVR4fDembhRWSsG5rVo6hYhAB/ADZrk= github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0/go.mod h1:vmVJ0l/dxyfGW6FmdpVm2joNMFikkuWg0EoCKLGUMNw= -github.com/lestrrat-go/blackmagic v1.0.2 h1:Cg2gVSc9h7sz9NOByczrbUvLopQmXrfFx//N+AkAr5k= -github.com/lestrrat-go/blackmagic v1.0.2/go.mod h1:UrEqBzIR2U6CnzVyUtfM6oZNMt/7O7Vohk2J0OGSAtU= +github.com/lestrrat-go/blackmagic v1.0.3 h1:94HXkVLxkZO9vJI/w2u1T0DAoprShFd13xtnSINtDWs= +github.com/lestrrat-go/blackmagic v1.0.3/go.mod h1:6AWFyKNNj0zEXQYfTMPfZrAXUWUfTIZ5ECEUEJaijtw= github.com/lestrrat-go/httpcc v1.0.1 h1:ydWCStUeJLkpYyjLDHihupbn2tYmZ7m22BGkcvZZrIE= github.com/lestrrat-go/httpcc v1.0.1/go.mod h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E= github.com/lestrrat-go/httprc v1.0.6 h1:qgmgIRhpvBqexMJjA/PmwSvhNk679oqD1RbovdCGW8k= @@ -169,16 +171,16 @@ github.com/lopezator/migrator v0.3.1 h1:ZFPT6aC7+nGWkqhleynABZ6ftycSf6hmHHLOaryq github.com/lopezator/migrator v0.3.1/go.mod h1:X+lHDMZ9Ci3/KdbypJcQYFFwipVrJsX4fRCQ4QLauYk= github.com/lufia/plan9stats v0.0.0-20250317134145-8bc96cf8fc35 h1:PpXWgLPs+Fqr325bN2FD2ISlRRztXibcX6e8f5FR5Dc= github.com/lufia/plan9stats v0.0.0-20250317134145-8bc96cf8fc35/go.mod h1:autxFIvghDt3jPTLoqZ9OZ7s9qTGNAWmYCjVFWPX/zg= -github.com/magiconair/properties v1.8.9 h1:nWcCbLq1N2v/cpNsy5WvQ37Fb+YElfq20WJ/a8RkpQM= -github.com/magiconair/properties v1.8.9/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/magiconair/properties v1.8.10 h1:s31yESBquKXCV9a/ScB3ESkOjUYYv+X0rg8SYxI99mE= +github.com/magiconair/properties v1.8.10/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4= github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU= github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/mdelapenya/tlscert v0.1.0 h1:YTpF579PYUX475eOL+6zyEO3ngLTOUWck78NBuJVXaM= github.com/mdelapenya/tlscert v0.1.0/go.mod h1:wrbyM/DwbFCeCeqdPX/8c6hNOqQgbf0rUDErE1uD+64= -github.com/metal-stack/metal-lib v0.20.2 h1:Dy6JNIo8ku8mdGyuijlBELkvJ/q2SDBpvDyztgAqEDE= -github.com/metal-stack/metal-lib v0.20.2/go.mod h1:zYzXYpNA4nQ+ANx19s/+1Yb/Q6xhS1nQK2yK2/ryXZM= +github.com/metal-stack/metal-lib v0.21.0 h1:oJSexA0czpS4aAUqCgymESWBsqG7BbjSceogsWowbPg= +github.com/metal-stack/metal-lib v0.21.0/go.mod h1:9KdYMPBrTKJFlCmubMgcirUiJHP3MG4FyBny6b/BVII= github.com/metal-stack/security v0.9.3 h1:ZF5rGeZ4fIFe0DFFQWkXsUDCzODyjdrpvKmeaLOz9lo= github.com/metal-stack/security v0.9.3/go.mod h1:ENm5kPjqh4uYvn79sAIxd6GZBwtF2GSsGdkLELrB/D4= github.com/metal-stack/v v1.0.3 h1:Sh2oBlnxrCUD+mVpzfC8HiqL045YWkxs0gpTvkjppqs= @@ -187,12 +189,16 @@ github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyua github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= +github.com/moby/go-archive v0.1.0 h1:Kk/5rdW/g+H8NHdJW2gsXyZ7UnzvJNOy6VKJqueWdcQ= +github.com/moby/go-archive v0.1.0/go.mod h1:G9B+YoujNohJmrIYFBpSd54GTUB4lt9S+xVQvsJyFuo= github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= +github.com/moby/sys/atomicwriter v0.1.0 h1:kw5D/EqkBwsBFi0ss9v1VG3wIkVhzGvLklJ+w3A14Sw= +github.com/moby/sys/atomicwriter v0.1.0/go.mod h1:Ul8oqv2ZMNHOceF643P6FKPXeCmYtlQMvpizfsSoaWs= github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU= github.com/moby/sys/sequential v0.6.0/go.mod h1:uyv8EUTrca5PnDsdMGXhZe6CCe8U/UiTWd+lL+7b/Ko= -github.com/moby/sys/user v0.3.0 h1:9ni5DlcW5an3SvRSx4MouotOygvzaXbaSrc/wGDFWPo= -github.com/moby/sys/user v0.3.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs= +github.com/moby/sys/user v0.4.0 h1:jhcMKit7SA80hivmFJcbB1vqmw//wU61Zdui2eQXuMs= +github.com/moby/sys/user v0.4.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs= github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g= github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28= github.com/moby/term v0.5.2 h1:6qk3FJAFDs6i/q3W/pQ97SX192qKfZgGjCQqfCJkgzQ= @@ -212,8 +218,8 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8 github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= -github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= -github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= +github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= +github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -221,27 +227,23 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk= -github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= -github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= -github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= +github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= +github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= +github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= +github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= -github.com/prometheus/procfs v0.16.0 h1:xh6oHhKwnOJKMYiYBDWmkHqQPyiY40sny36Cmx2bbsM= -github.com/prometheus/procfs v0.16.0/go.mod h1:8veyXUu3nGP7oaCxhX6yeaM5u4stL2FeMXnCqhDthZg= +github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= +github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sagikazarmark/locafero v0.8.0 h1:mXaMVw7IqxNBxfv3LdWt9MDmcWDQ1fagDH918lOdVaQ= -github.com/sagikazarmark/locafero v0.8.0/go.mod h1:UBUyz37V+EdMS3hDF3QWIiVr/2dPrx49OMO0Bn0hJqk= +github.com/sagikazarmark/locafero v0.9.0 h1:GbgQGNtTrEmddYDSAH9QLRyfAHY12md+8YFTqyMTC9k= +github.com/sagikazarmark/locafero v0.9.0/go.mod h1:UBUyz37V+EdMS3hDF3QWIiVr/2dPrx49OMO0Bn0hJqk= github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys= github.com/segmentio/asm v1.2.0/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs= -github.com/shirou/gopsutil/v3 v3.24.5 h1:i0t8kL+kQTvpAYToeuiVk3TgDeKOFioZO3Ztz/iZ9pI= -github.com/shirou/gopsutil/v3 v3.24.5/go.mod h1:bsoOS1aStSs9ErQ1WWfxllSeS1K5D+U30r2NfcubMVk= -github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= -github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= -github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= -github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= +github.com/shirou/gopsutil/v4 v4.25.1 h1:QSWkTc+fu9LTAWfkZwZ6j8MSUk4A2LV7rbH0ZqmLjXs= +github.com/shirou/gopsutil/v4 v4.25.1/go.mod h1:RoUCUpndaJFtT+2zsZzzmhvbfGoDCJ7nFXKJf8GqJbI= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= @@ -254,8 +256,8 @@ github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.20.0 h1:zrxIyR3RQIOsarIrgL8+sAvALXul9jeEPa06Y0Ph6vY= -github.com/spf13/viper v1.20.0/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4= +github.com/spf13/viper v1.20.1 h1:ZMi+z/lvLyPSCoNtFCpqjy0S4kPbirhpTMwl8BkW9X4= +github.com/spf13/viper v1.20.1/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= @@ -268,10 +270,10 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= -github.com/testcontainers/testcontainers-go v0.35.0 h1:uADsZpTKFAtp8SLK+hMwSaa+X+JiERHtd4sQAFmXeMo= -github.com/testcontainers/testcontainers-go v0.35.0/go.mod h1:oEVBj5zrfJTrgjwONs1SsRbnBtH9OKl+IGl3UMcr2B4= -github.com/testcontainers/testcontainers-go/modules/postgres v0.35.0 h1:eEGx9kYzZb2cNhRbBrNOCL/YPOM7+RMJiy3bB+ie0/I= -github.com/testcontainers/testcontainers-go/modules/postgres v0.35.0/go.mod h1:hfH71Mia/WWLBgMD2YctYcMlfsbnT0hflweL1dy8Q4s= +github.com/testcontainers/testcontainers-go v0.36.0 h1:YpffyLuHtdp5EUsI5mT4sRw8GZhO/5ozyDT1xWGXt00= +github.com/testcontainers/testcontainers-go v0.36.0/go.mod h1:yk73GVJ0KUZIHUtFna6MO7QS144qYpoY8lEEtU9Hed0= +github.com/testcontainers/testcontainers-go/modules/postgres v0.36.0 h1:xTGNNsOD9IIssH0dnAGNUH+SD9GYWyaP2t5xD2lg0as= +github.com/testcontainers/testcontainers-go/modules/postgres v0.36.0/go.mod h1:WKS3MGq1lzbVibIRnL08TOaf5bKWPxJe5frzyQfV4oY= github.com/tklauser/go-sysconf v0.3.15 h1:VE89k0criAymJ/Os65CSn1IXaol+1wrsFHEB8Ol49K4= github.com/tklauser/go-sysconf v0.3.15/go.mod h1:Dmjwr6tYFIseJw7a3dRLJfsHAMXZ3nEnL/aZY+0IuI4= github.com/tklauser/numcpus v0.10.0 h1:18njr6LDBk1zuna922MgdjQuJFjrdppsZG60sHGfjso= @@ -309,23 +311,23 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= -golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= +golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= +golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= -golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= -golang.org/x/oauth2 v0.28.0 h1:CrgCKl8PPAVtLnU3c+EDw6x11699EWlsDeWNWKdIOkc= -golang.org/x/oauth2 v0.28.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= +golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= +golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= +golang.org/x/oauth2 v0.29.0 h1:WdYw2tdTK1S8olAzWHdgeqfy+Mtm9XNhv/xJsY65d98= +golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= -golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610= +golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -334,16 +336,16 @@ golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= -golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y= -golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g= +golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= +golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/term v0.31.0 h1:erwDkOK1Msy6offm1mOgvspSkslFnIGsFnxOKoufg3o= +golang.org/x/term v0.31.0/go.mod h1:R4BeIy7D95HzImkxGkTW1UQTtP54tio2RyHz7PwK0aw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= -golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= -golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= -golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= +golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= +golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= +golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -354,12 +356,12 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a h1:nwKuGPlUAt+aR+pcrkfFRrTU1BVrSmYyYMxYbUIVHr0= google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a/go.mod h1:3kWAYMk1I75K4vykHtKt2ycnOgpA6974V7bREqbsenU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250313205543-e70fdf4c4cb4 h1:iK2jbkWL86DXjEx0qiHcRE9dE4/Ahua5k6V8OWFb//c= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250313205543-e70fdf4c4cb4/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= -google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= -google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= -google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= -google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250421163800-61c742ae3ef0 h1:l7lvb5BMqtbmd7fibSq7fi956Fv9/sqiwI9qOw8ltCo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250421163800-61c742ae3ef0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= +google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= @@ -368,7 +370,7 @@ gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= -gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= +gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= +gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/pkg/datastore/bootstrap.go b/pkg/datastore/bootstrap.go index 91d0c17..fc306e3 100644 --- a/pkg/datastore/bootstrap.go +++ b/pkg/datastore/bootstrap.go @@ -111,10 +111,10 @@ func (bs *bootstrap[E]) createOrUpdate(ctx context.Context, ydoc []byte) error { if err != nil { return err } - bs.log.Info("initdb", "meta", mm.Meta.GetKind()) + bs.log.Info("initdb", "meta", mm.GetKind()) - kind := mm.Meta.GetKind() - apiversion := mm.Meta.GetApiversion() + kind := mm.GetKind() + apiversion := mm.GetApiversion() var e E if kind != e.Kind() { @@ -141,7 +141,7 @@ func (bs *bootstrap[E]) createOrUpdate(ctx context.Context, ydoc []byte) error { // now check that this type is already present for this id, // therefore create nil interface to get into exists := true - existingEntity, err := bs.ds.Get(ctx, mm.Meta.GetId()) + existingEntity, err := bs.ds.Get(ctx, mm.GetId()) if err != nil { if errors.As(err, &NotFoundError{}) { exists = false diff --git a/pkg/health/health.go b/pkg/health/health.go index 9d5f226..d99630a 100644 --- a/pkg/health/health.go +++ b/pkg/health/health.go @@ -18,6 +18,12 @@ type Server struct { statusMap map[string]v1.HealthCheckResponse_ServingStatus } +// List implements grpc_health_v1.HealthServer. +func (s *Server) List(context.Context, *v1.HealthListRequest) (*v1.HealthListResponse, error) { + // FIXME implement + return nil, nil +} + // NewHealthServer creates a new health check server for grpc services. func NewHealthServer() *Server { return &Server{ diff --git a/proto/Makefile b/proto/Makefile index d8bed19..989c97f 100644 --- a/proto/Makefile +++ b/proto/Makefile @@ -1,5 +1,5 @@ MAKEFLAGS += --no-print-directory -BUF_VERSION := 1.50.1 +BUF_VERSION := 1.52.1 _buf: docker run --rm \ diff --git a/proto/buf.gen.yaml b/proto/buf.gen.yaml index b3fda3f..8bb4c78 100644 --- a/proto/buf.gen.yaml +++ b/proto/buf.gen.yaml @@ -8,6 +8,6 @@ plugins: - remote: buf.build/grpc/go:v1.5.1 out: ../api opt: paths=source_relative,require_unimplemented_servers=false - - remote: buf.build/protocolbuffers/go:v1.36.5 + - remote: buf.build/protocolbuffers/go:v1.36.6 out: ../api opt: paths=source_relative From c28954987c494a87ca9a35052e3dc2d4d2f8326a Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Tue, 22 Apr 2025 09:30:30 +0200 Subject: [PATCH 18/39] Fix docker tags --- .github/workflows/docker.yaml | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 44f543e..73f0875 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -42,11 +42,17 @@ jobs: with: args: --build-tags integration -D protogetter --timeout=10m - - name: Make tag - run: | - [ "${GITHUB_EVENT_NAME}" == 'pull_request' ] && echo "tag=${GITHUB_HEAD_REF##*/}" >> $GITHUB_ENV || true - [ "${GITHUB_EVENT_NAME}" == 'release' ] && echo "tag=${GITHUB_REF##*/}" >> $GITHUB_ENV || true - [ "${GITHUB_EVENT_NAME}" == 'push' ] && echo "tag=latest" >> $GITHUB_ENV || true + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: | + ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: | + type=ref,event=branch + type=ref,event=pr + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} - name: Build and Test run: | @@ -59,4 +65,4 @@ jobs: with: context: . push: true - tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.tag }} + tags: ${{ steps.meta.outputs.tags }} From 57557af4a8e17cd4ee692929833b1a3979025c61 Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Tue, 22 Apr 2025 11:00:34 +0200 Subject: [PATCH 19/39] Fix tag creation --- .github/workflows/docker.yaml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 73f0875..2d617e3 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -48,11 +48,6 @@ jobs: with: images: | ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - tags: | - type=ref,event=branch - type=ref,event=pr - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - name: Build and Test run: | From 577985f80c75e2eddba6efd74604a28f648a27c3 Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Mon, 28 Apr 2025 17:37:10 +0200 Subject: [PATCH 20/39] Updates --- go.mod | 14 +++++++------- go.sum | 32 ++++++++++++++++---------------- proto/Makefile | 2 +- 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/go.mod b/go.mod index ebd16a2..2be3c87 100644 --- a/go.mod +++ b/go.mod @@ -12,15 +12,15 @@ require ( github.com/json-iterator/go v1.1.12 github.com/lib/pq v1.10.9 github.com/lopezator/migrator v0.3.1 - github.com/metal-stack/metal-lib v0.21.0 - github.com/metal-stack/security v0.9.3 + github.com/metal-stack/metal-lib v0.22.1 + github.com/metal-stack/security v0.9.4 github.com/metal-stack/v v1.0.3 github.com/prometheus/client_golang v1.22.0 github.com/spf13/cobra v1.9.1 github.com/spf13/viper v1.20.1 github.com/stretchr/testify v1.10.0 - github.com/testcontainers/testcontainers-go v0.36.0 - github.com/testcontainers/testcontainers-go/modules/postgres v0.36.0 + github.com/testcontainers/testcontainers-go v0.37.0 + github.com/testcontainers/testcontainers-go/modules/postgres v0.37.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 go.opentelemetry.io/otel/trace v1.35.0 google.golang.org/grpc v1.72.0 @@ -72,7 +72,7 @@ require ( github.com/lestrrat-go/httpcc v1.0.1 // indirect github.com/lestrrat-go/httprc v1.0.6 // indirect github.com/lestrrat-go/iter v1.0.2 // indirect - github.com/lestrrat-go/jwx/v2 v2.1.4 // indirect + github.com/lestrrat-go/jwx/v2 v2.1.5 // indirect github.com/lestrrat-go/option v1.0.1 // indirect github.com/lufia/plan9stats v0.0.0-20250317134145-8bc96cf8fc35 // indirect github.com/magiconair/properties v1.8.10 // indirect @@ -102,7 +102,7 @@ require ( github.com/prometheus/procfs v0.16.1 // indirect github.com/sagikazarmark/locafero v0.9.0 // indirect github.com/segmentio/asm v1.2.0 // indirect - github.com/shirou/gopsutil/v4 v4.25.1 // indirect + github.com/shirou/gopsutil/v4 v4.25.3 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/spf13/afero v1.14.0 // indirect @@ -126,7 +126,7 @@ require ( golang.org/x/sync v0.13.0 // indirect golang.org/x/sys v0.32.0 // indirect golang.org/x/text v0.24.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250421163800-61c742ae3ef0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250425173222-7b384671a197 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index c0ba771..be262ef 100644 --- a/go.sum +++ b/go.sum @@ -161,8 +161,8 @@ github.com/lestrrat-go/httprc v1.0.6 h1:qgmgIRhpvBqexMJjA/PmwSvhNk679oqD1RbovdCG github.com/lestrrat-go/httprc v1.0.6/go.mod h1:mwwz3JMTPBjHUkkDv/IGJ39aALInZLrhBp0X7KGUZlo= github.com/lestrrat-go/iter v1.0.2 h1:gMXo1q4c2pHmC3dn8LzRhJfP1ceCbgSiT9lUydIzltI= github.com/lestrrat-go/iter v1.0.2/go.mod h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4= -github.com/lestrrat-go/jwx/v2 v2.1.4 h1:uBCMmJX8oRZStmKuMMOFb0Yh9xmEMgNJLgjuKKt4/qc= -github.com/lestrrat-go/jwx/v2 v2.1.4/go.mod h1:nWRbDFR1ALG2Z6GJbBXzfQaYyvn751KuuyySN2yR6is= +github.com/lestrrat-go/jwx/v2 v2.1.5 h1:PQI5gzadLfJ22ckLrejPVX6eGXKM4M4eGi5fW2jjA3o= +github.com/lestrrat-go/jwx/v2 v2.1.5/go.mod h1:Y722kU5r/8mV7fYDifjug0r8FK8mZdw0K0GpJw/l8pU= github.com/lestrrat-go/option v1.0.1 h1:oAzP2fvZGQKWkvHa1/SAcFolBEca1oN+mQ7eooNBEYU= github.com/lestrrat-go/option v1.0.1/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= @@ -177,12 +177,12 @@ github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4 github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU= github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= -github.com/mdelapenya/tlscert v0.1.0 h1:YTpF579PYUX475eOL+6zyEO3ngLTOUWck78NBuJVXaM= -github.com/mdelapenya/tlscert v0.1.0/go.mod h1:wrbyM/DwbFCeCeqdPX/8c6hNOqQgbf0rUDErE1uD+64= -github.com/metal-stack/metal-lib v0.21.0 h1:oJSexA0czpS4aAUqCgymESWBsqG7BbjSceogsWowbPg= -github.com/metal-stack/metal-lib v0.21.0/go.mod h1:9KdYMPBrTKJFlCmubMgcirUiJHP3MG4FyBny6b/BVII= -github.com/metal-stack/security v0.9.3 h1:ZF5rGeZ4fIFe0DFFQWkXsUDCzODyjdrpvKmeaLOz9lo= -github.com/metal-stack/security v0.9.3/go.mod h1:ENm5kPjqh4uYvn79sAIxd6GZBwtF2GSsGdkLELrB/D4= +github.com/mdelapenya/tlscert v0.2.0 h1:7H81W6Z/4weDvZBNOfQte5GpIMo0lGYEeWbkGp5LJHI= +github.com/mdelapenya/tlscert v0.2.0/go.mod h1:O4njj3ELLnJjGdkN7M/vIVCpZ+Cf0L6muqOG4tLSl8o= +github.com/metal-stack/metal-lib v0.22.1 h1:kAXOHZOSqBA0NQgYmtONxfY5khyQo8ofEL30QBE5DEY= +github.com/metal-stack/metal-lib v0.22.1/go.mod h1:QiFb7TpSrvnLAHOlxLiUm1aG+1t5nPHsoDT/bw+F5r8= +github.com/metal-stack/security v0.9.4 h1:qgB4Yx48Wgi57a/ePWE1gdUn4RjilVySQAFRVIoPKBU= +github.com/metal-stack/security v0.9.4/go.mod h1:Qya3sKnaZ+1VmayGcMGgCBsVhzBvWYYx9hcvinfXB1Q= github.com/metal-stack/v v1.0.3 h1:Sh2oBlnxrCUD+mVpzfC8HiqL045YWkxs0gpTvkjppqs= github.com/metal-stack/v v1.0.3/go.mod h1:YTahEu7/ishwpYKnp/VaW/7nf8+PInogkfGwLcGPdXg= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -242,8 +242,8 @@ github.com/sagikazarmark/locafero v0.9.0 h1:GbgQGNtTrEmddYDSAH9QLRyfAHY12md+8YFT github.com/sagikazarmark/locafero v0.9.0/go.mod h1:UBUyz37V+EdMS3hDF3QWIiVr/2dPrx49OMO0Bn0hJqk= github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys= github.com/segmentio/asm v1.2.0/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs= -github.com/shirou/gopsutil/v4 v4.25.1 h1:QSWkTc+fu9LTAWfkZwZ6j8MSUk4A2LV7rbH0ZqmLjXs= -github.com/shirou/gopsutil/v4 v4.25.1/go.mod h1:RoUCUpndaJFtT+2zsZzzmhvbfGoDCJ7nFXKJf8GqJbI= +github.com/shirou/gopsutil/v4 v4.25.3 h1:SeA68lsu8gLggyMbmCn8cmp97V1TI9ld9sVzAUcKcKE= +github.com/shirou/gopsutil/v4 v4.25.3/go.mod h1:xbuxyoZj+UsgnZrENu3lQivsngRR5BdjbJwf2fv4szA= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= @@ -270,10 +270,10 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= -github.com/testcontainers/testcontainers-go v0.36.0 h1:YpffyLuHtdp5EUsI5mT4sRw8GZhO/5ozyDT1xWGXt00= -github.com/testcontainers/testcontainers-go v0.36.0/go.mod h1:yk73GVJ0KUZIHUtFna6MO7QS144qYpoY8lEEtU9Hed0= -github.com/testcontainers/testcontainers-go/modules/postgres v0.36.0 h1:xTGNNsOD9IIssH0dnAGNUH+SD9GYWyaP2t5xD2lg0as= -github.com/testcontainers/testcontainers-go/modules/postgres v0.36.0/go.mod h1:WKS3MGq1lzbVibIRnL08TOaf5bKWPxJe5frzyQfV4oY= +github.com/testcontainers/testcontainers-go v0.37.0 h1:L2Qc0vkTw2EHWQ08djon0D2uw7Z/PtHS/QzZZ5Ra/hg= +github.com/testcontainers/testcontainers-go v0.37.0/go.mod h1:QPzbxZhQ6Bclip9igjLFj6z0hs01bU8lrl2dHQmgFGM= +github.com/testcontainers/testcontainers-go/modules/postgres v0.37.0 h1:hsVwFkS6s+79MbKEO+W7A1wNIw1fmkMtF4fg83m6kbc= +github.com/testcontainers/testcontainers-go/modules/postgres v0.37.0/go.mod h1:Qj/eGbRbO/rEYdcRLmN+bEojzatP/+NS1y8ojl2PQsc= github.com/tklauser/go-sysconf v0.3.15 h1:VE89k0criAymJ/Os65CSn1IXaol+1wrsFHEB8Ol49K4= github.com/tklauser/go-sysconf v0.3.15/go.mod h1:Dmjwr6tYFIseJw7a3dRLJfsHAMXZ3nEnL/aZY+0IuI4= github.com/tklauser/numcpus v0.10.0 h1:18njr6LDBk1zuna922MgdjQuJFjrdppsZG60sHGfjso= @@ -356,8 +356,8 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a h1:nwKuGPlUAt+aR+pcrkfFRrTU1BVrSmYyYMxYbUIVHr0= google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a/go.mod h1:3kWAYMk1I75K4vykHtKt2ycnOgpA6974V7bREqbsenU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250421163800-61c742ae3ef0 h1:l7lvb5BMqtbmd7fibSq7fi956Fv9/sqiwI9qOw8ltCo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250421163800-61c742ae3ef0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250425173222-7b384671a197 h1:29cjnHVylHwTzH66WfFZqgSQgnxzvWE+jvBwpZCLRxY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250425173222-7b384671a197/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= diff --git a/proto/Makefile b/proto/Makefile index 989c97f..360795c 100644 --- a/proto/Makefile +++ b/proto/Makefile @@ -1,5 +1,5 @@ MAKEFLAGS += --no-print-directory -BUF_VERSION := 1.52.1 +BUF_VERSION := 1.53.0 _buf: docker run --rm \ From 634399ea97e49116f59aa2aec04baf1d98cfbf84 Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Tue, 29 Apr 2025 08:48:19 +0200 Subject: [PATCH 21/39] Migrate to connect-rpc --- Makefile | 2 +- api/v1/apiv1connect/project.connect.go | 249 +++++++++++ api/v1/apiv1connect/project_member.connect.go | 225 ++++++++++ api/v1/apiv1connect/tenant.connect.go | 336 ++++++++++++++ api/v1/apiv1connect/tenant_member.connect.go | 224 ++++++++++ api/v1/apiv1connect/version.connect.go | 108 +++++ api/v1/common.pb.go | 63 +-- api/v1/errors.go | 2 +- api/v1/iam.pb.go | 123 ++--- api/v1/meta.go | 2 +- api/v1/meta.pb.go | 73 +-- api/v1/mocks/ProjectMemberServiceClient.go | 217 --------- api/v1/mocks/ProjectMemberServiceServer.go | 179 -------- api/v1/mocks/ProjectServiceClient.go | 254 ----------- api/v1/mocks/ProjectServiceServer.go | 209 --------- api/v1/mocks/TenantMemberServiceClient.go | 217 --------- api/v1/mocks/TenantMemberServiceServer.go | 179 -------- api/v1/mocks/TenantServiceClient.go | 365 --------------- api/v1/mocks/TenantServiceServer.go | 299 ------------- .../mocks/UnsafeProjectMemberServiceServer.go | 29 -- api/v1/mocks/UnsafeProjectServiceServer.go | 29 -- .../mocks/UnsafeTenantMemberServiceServer.go | 29 -- api/v1/mocks/UnsafeTenantServiceServer.go | 29 -- .../ProjectMemberServiceClient.go | 182 ++++++++ .../ProjectMemberServiceHandler.go | 182 ++++++++ .../apiv1connect/ProjectServiceClient.go | 212 +++++++++ .../apiv1connect/ProjectServiceHandler.go | 212 +++++++++ .../apiv1connect/TenantMemberServiceClient.go | 182 ++++++++ .../TenantMemberServiceHandler.go | 182 ++++++++ .../mocks/apiv1connect/TenantServiceClient.go | 302 +++++++++++++ .../apiv1connect/TenantServiceHandler.go | 302 +++++++++++++ .../apiv1connect/VersionServiceClient.go | 62 +++ .../apiv1connect/VersionServiceHandler.go | 62 +++ api/v1/project.go | 4 +- api/v1/project.pb.go | 240 +++++----- api/v1/project_grpc.pb.go | 309 ------------- api/v1/project_member.pb.go | 203 ++++----- api/v1/project_member_grpc.pb.go | 271 ----------- api/v1/project_scnrvalr.go | 4 +- api/v1/projectmember.go | 4 +- api/v1/projectmember_scnrvalr.go | 4 +- api/v1/quota.pb.go | 91 ++-- api/v1/tenant.go | 4 +- api/v1/tenant.pb.go | 409 +++++++++-------- api/v1/tenant_grpc.pb.go | 423 ------------------ api/v1/tenant_member.pb.go | 203 ++++----- api/v1/tenant_member_grpc.pb.go | 271 ----------- api/v1/tenant_scnrvalr.go | 4 +- api/v1/tenantmember.go | 4 +- api/v1/tenantmember_scnrvalr.go | 4 +- api/v1/version.pb.go | 77 ++-- api/v1/version_grpc.pb.go | 119 ----- client/main.go | 133 +++--- cmd/server/main.go | 153 +++++++ cmd/server/server.go | 181 ++++++++ go.mod | 31 +- go.sum | 52 +-- pkg/client/client.go | 155 ++----- pkg/client/conn.go | 59 +++ pkg/client/mock.go | 24 +- pkg/datastore/mocks/Entity.go | 11 +- pkg/datastore/mocks/Storage.go | 15 +- pkg/service/project.go | 31 +- pkg/service/project_test.go | 37 +- pkg/service/projectmember.go | 26 +- pkg/service/projectmember_test.go | 29 +- pkg/service/tenant.go | 46 +- pkg/service/tenant_test.go | 39 +- pkg/service/tenantmember.go | 26 +- pkg/service/tenantmember_test.go | 29 +- pkg/service/version.go | 5 +- pkg/service/version_test.go | 11 +- proto/{ => api}/v1/common.proto | 2 +- proto/{ => api}/v1/iam.proto | 2 +- proto/{ => api}/v1/meta.proto | 2 +- proto/{ => api}/v1/project.proto | 8 +- proto/{ => api}/v1/project_member.proto | 4 +- proto/{ => api}/v1/quota.proto | 2 +- proto/{ => api}/v1/tenant.proto | 12 +- proto/{ => api}/v1/tenant_member.proto | 4 +- proto/{ => api}/v1/version.proto | 2 +- proto/buf.gen.yaml | 8 +- server/main.go | 319 ------------- 83 files changed, 4519 insertions(+), 4909 deletions(-) create mode 100644 api/v1/apiv1connect/project.connect.go create mode 100644 api/v1/apiv1connect/project_member.connect.go create mode 100644 api/v1/apiv1connect/tenant.connect.go create mode 100644 api/v1/apiv1connect/tenant_member.connect.go create mode 100644 api/v1/apiv1connect/version.connect.go delete mode 100644 api/v1/mocks/ProjectMemberServiceClient.go delete mode 100644 api/v1/mocks/ProjectMemberServiceServer.go delete mode 100644 api/v1/mocks/ProjectServiceClient.go delete mode 100644 api/v1/mocks/ProjectServiceServer.go delete mode 100644 api/v1/mocks/TenantMemberServiceClient.go delete mode 100644 api/v1/mocks/TenantMemberServiceServer.go delete mode 100644 api/v1/mocks/TenantServiceClient.go delete mode 100644 api/v1/mocks/TenantServiceServer.go delete mode 100644 api/v1/mocks/UnsafeProjectMemberServiceServer.go delete mode 100644 api/v1/mocks/UnsafeProjectServiceServer.go delete mode 100644 api/v1/mocks/UnsafeTenantMemberServiceServer.go delete mode 100644 api/v1/mocks/UnsafeTenantServiceServer.go create mode 100644 api/v1/mocks/apiv1connect/ProjectMemberServiceClient.go create mode 100644 api/v1/mocks/apiv1connect/ProjectMemberServiceHandler.go create mode 100644 api/v1/mocks/apiv1connect/ProjectServiceClient.go create mode 100644 api/v1/mocks/apiv1connect/ProjectServiceHandler.go create mode 100644 api/v1/mocks/apiv1connect/TenantMemberServiceClient.go create mode 100644 api/v1/mocks/apiv1connect/TenantMemberServiceHandler.go create mode 100644 api/v1/mocks/apiv1connect/TenantServiceClient.go create mode 100644 api/v1/mocks/apiv1connect/TenantServiceHandler.go create mode 100644 api/v1/mocks/apiv1connect/VersionServiceClient.go create mode 100644 api/v1/mocks/apiv1connect/VersionServiceHandler.go delete mode 100644 api/v1/project_grpc.pb.go delete mode 100644 api/v1/project_member_grpc.pb.go delete mode 100644 api/v1/tenant_grpc.pb.go delete mode 100644 api/v1/tenant_member_grpc.pb.go delete mode 100644 api/v1/version_grpc.pb.go create mode 100644 cmd/server/main.go create mode 100644 cmd/server/server.go create mode 100644 pkg/client/conn.go rename proto/{ => api}/v1/common.proto (95%) rename proto/{ => api}/v1/iam.proto (99%) rename proto/{ => api}/v1/meta.proto (95%) rename proto/{ => api}/v1/project.proto (93%) rename proto/{ => api}/v1/project_member.proto (96%) rename proto/{ => api}/v1/quota.proto (97%) rename proto/{ => api}/v1/tenant.proto (94%) rename proto/{ => api}/v1/tenant_member.proto (96%) rename proto/{ => api}/v1/version.proto (94%) delete mode 100644 server/main.go diff --git a/Makefile b/Makefile index 6789d8e..fd9bd0f 100644 --- a/Makefile +++ b/Makefile @@ -44,7 +44,7 @@ server: protoc generate -X 'github.com/metal-stack/v.Revision=$(GITVERSION)' \ -X 'github.com/metal-stack/v.GitSHA1=$(SHA)' \ -X 'github.com/metal-stack/v.BuildDate=$(BUILDDATE)'" \ - -o bin/server server/main.go + -o bin/server cmd/server/main.go strip bin/server .PHONY: client diff --git a/api/v1/apiv1connect/project.connect.go b/api/v1/apiv1connect/project.connect.go new file mode 100644 index 0000000..d58609d --- /dev/null +++ b/api/v1/apiv1connect/project.connect.go @@ -0,0 +1,249 @@ +// Code generated by protoc-gen-connect-go. DO NOT EDIT. +// +// Source: api/v1/project.proto + +package apiv1connect + +import ( + connect "connectrpc.com/connect" + context "context" + errors "errors" + v1 "github.com/metal-stack/masterdata-api/api/v1" + http "net/http" + strings "strings" +) + +// This is a compile-time assertion to ensure that this generated file and the connect package are +// compatible. If you get a compiler error that this constant is not defined, this code was +// generated with a version of connect newer than the one compiled into your binary. You can fix the +// problem by either regenerating this code with an older version of connect or updating the connect +// version compiled into your binary. +const _ = connect.IsAtLeastVersion1_13_0 + +const ( + // ProjectServiceName is the fully-qualified name of the ProjectService service. + ProjectServiceName = "api.v1.ProjectService" +) + +// These constants are the fully-qualified names of the RPCs defined in this package. They're +// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route. +// +// Note that these are different from the fully-qualified method names used by +// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to +// reflection-formatted method names, remove the leading slash and convert the remaining slash to a +// period. +const ( + // ProjectServiceCreateProcedure is the fully-qualified name of the ProjectService's Create RPC. + ProjectServiceCreateProcedure = "/api.v1.ProjectService/Create" + // ProjectServiceUpdateProcedure is the fully-qualified name of the ProjectService's Update RPC. + ProjectServiceUpdateProcedure = "/api.v1.ProjectService/Update" + // ProjectServiceDeleteProcedure is the fully-qualified name of the ProjectService's Delete RPC. + ProjectServiceDeleteProcedure = "/api.v1.ProjectService/Delete" + // ProjectServiceGetProcedure is the fully-qualified name of the ProjectService's Get RPC. + ProjectServiceGetProcedure = "/api.v1.ProjectService/Get" + // ProjectServiceGetHistoryProcedure is the fully-qualified name of the ProjectService's GetHistory + // RPC. + ProjectServiceGetHistoryProcedure = "/api.v1.ProjectService/GetHistory" + // ProjectServiceFindProcedure is the fully-qualified name of the ProjectService's Find RPC. + ProjectServiceFindProcedure = "/api.v1.ProjectService/Find" +) + +// ProjectServiceClient is a client for the api.v1.ProjectService service. +type ProjectServiceClient interface { + Create(context.Context, *connect.Request[v1.ProjectCreateRequest]) (*connect.Response[v1.ProjectResponse], error) + Update(context.Context, *connect.Request[v1.ProjectUpdateRequest]) (*connect.Response[v1.ProjectResponse], error) + Delete(context.Context, *connect.Request[v1.ProjectDeleteRequest]) (*connect.Response[v1.ProjectResponse], error) + Get(context.Context, *connect.Request[v1.ProjectGetRequest]) (*connect.Response[v1.ProjectResponse], error) + GetHistory(context.Context, *connect.Request[v1.ProjectGetHistoryRequest]) (*connect.Response[v1.ProjectResponse], error) + Find(context.Context, *connect.Request[v1.ProjectFindRequest]) (*connect.Response[v1.ProjectListResponse], error) +} + +// NewProjectServiceClient constructs a client for the api.v1.ProjectService service. By default, it +// uses the Connect protocol with the binary Protobuf Codec, asks for gzipped responses, and sends +// uncompressed requests. To use the gRPC or gRPC-Web protocols, supply the connect.WithGRPC() or +// connect.WithGRPCWeb() options. +// +// The URL supplied here should be the base URL for the Connect or gRPC server (for example, +// http://api.acme.com or https://acme.com/grpc). +func NewProjectServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) ProjectServiceClient { + baseURL = strings.TrimRight(baseURL, "/") + projectServiceMethods := v1.File_api_v1_project_proto.Services().ByName("ProjectService").Methods() + return &projectServiceClient{ + create: connect.NewClient[v1.ProjectCreateRequest, v1.ProjectResponse]( + httpClient, + baseURL+ProjectServiceCreateProcedure, + connect.WithSchema(projectServiceMethods.ByName("Create")), + connect.WithClientOptions(opts...), + ), + update: connect.NewClient[v1.ProjectUpdateRequest, v1.ProjectResponse]( + httpClient, + baseURL+ProjectServiceUpdateProcedure, + connect.WithSchema(projectServiceMethods.ByName("Update")), + connect.WithClientOptions(opts...), + ), + delete: connect.NewClient[v1.ProjectDeleteRequest, v1.ProjectResponse]( + httpClient, + baseURL+ProjectServiceDeleteProcedure, + connect.WithSchema(projectServiceMethods.ByName("Delete")), + connect.WithClientOptions(opts...), + ), + get: connect.NewClient[v1.ProjectGetRequest, v1.ProjectResponse]( + httpClient, + baseURL+ProjectServiceGetProcedure, + connect.WithSchema(projectServiceMethods.ByName("Get")), + connect.WithClientOptions(opts...), + ), + getHistory: connect.NewClient[v1.ProjectGetHistoryRequest, v1.ProjectResponse]( + httpClient, + baseURL+ProjectServiceGetHistoryProcedure, + connect.WithSchema(projectServiceMethods.ByName("GetHistory")), + connect.WithClientOptions(opts...), + ), + find: connect.NewClient[v1.ProjectFindRequest, v1.ProjectListResponse]( + httpClient, + baseURL+ProjectServiceFindProcedure, + connect.WithSchema(projectServiceMethods.ByName("Find")), + connect.WithClientOptions(opts...), + ), + } +} + +// projectServiceClient implements ProjectServiceClient. +type projectServiceClient struct { + create *connect.Client[v1.ProjectCreateRequest, v1.ProjectResponse] + update *connect.Client[v1.ProjectUpdateRequest, v1.ProjectResponse] + delete *connect.Client[v1.ProjectDeleteRequest, v1.ProjectResponse] + get *connect.Client[v1.ProjectGetRequest, v1.ProjectResponse] + getHistory *connect.Client[v1.ProjectGetHistoryRequest, v1.ProjectResponse] + find *connect.Client[v1.ProjectFindRequest, v1.ProjectListResponse] +} + +// Create calls api.v1.ProjectService.Create. +func (c *projectServiceClient) Create(ctx context.Context, req *connect.Request[v1.ProjectCreateRequest]) (*connect.Response[v1.ProjectResponse], error) { + return c.create.CallUnary(ctx, req) +} + +// Update calls api.v1.ProjectService.Update. +func (c *projectServiceClient) Update(ctx context.Context, req *connect.Request[v1.ProjectUpdateRequest]) (*connect.Response[v1.ProjectResponse], error) { + return c.update.CallUnary(ctx, req) +} + +// Delete calls api.v1.ProjectService.Delete. +func (c *projectServiceClient) Delete(ctx context.Context, req *connect.Request[v1.ProjectDeleteRequest]) (*connect.Response[v1.ProjectResponse], error) { + return c.delete.CallUnary(ctx, req) +} + +// Get calls api.v1.ProjectService.Get. +func (c *projectServiceClient) Get(ctx context.Context, req *connect.Request[v1.ProjectGetRequest]) (*connect.Response[v1.ProjectResponse], error) { + return c.get.CallUnary(ctx, req) +} + +// GetHistory calls api.v1.ProjectService.GetHistory. +func (c *projectServiceClient) GetHistory(ctx context.Context, req *connect.Request[v1.ProjectGetHistoryRequest]) (*connect.Response[v1.ProjectResponse], error) { + return c.getHistory.CallUnary(ctx, req) +} + +// Find calls api.v1.ProjectService.Find. +func (c *projectServiceClient) Find(ctx context.Context, req *connect.Request[v1.ProjectFindRequest]) (*connect.Response[v1.ProjectListResponse], error) { + return c.find.CallUnary(ctx, req) +} + +// ProjectServiceHandler is an implementation of the api.v1.ProjectService service. +type ProjectServiceHandler interface { + Create(context.Context, *connect.Request[v1.ProjectCreateRequest]) (*connect.Response[v1.ProjectResponse], error) + Update(context.Context, *connect.Request[v1.ProjectUpdateRequest]) (*connect.Response[v1.ProjectResponse], error) + Delete(context.Context, *connect.Request[v1.ProjectDeleteRequest]) (*connect.Response[v1.ProjectResponse], error) + Get(context.Context, *connect.Request[v1.ProjectGetRequest]) (*connect.Response[v1.ProjectResponse], error) + GetHistory(context.Context, *connect.Request[v1.ProjectGetHistoryRequest]) (*connect.Response[v1.ProjectResponse], error) + Find(context.Context, *connect.Request[v1.ProjectFindRequest]) (*connect.Response[v1.ProjectListResponse], error) +} + +// NewProjectServiceHandler builds an HTTP handler from the service implementation. It returns the +// path on which to mount the handler and the handler itself. +// +// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf +// and JSON codecs. They also support gzip compression. +func NewProjectServiceHandler(svc ProjectServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { + projectServiceMethods := v1.File_api_v1_project_proto.Services().ByName("ProjectService").Methods() + projectServiceCreateHandler := connect.NewUnaryHandler( + ProjectServiceCreateProcedure, + svc.Create, + connect.WithSchema(projectServiceMethods.ByName("Create")), + connect.WithHandlerOptions(opts...), + ) + projectServiceUpdateHandler := connect.NewUnaryHandler( + ProjectServiceUpdateProcedure, + svc.Update, + connect.WithSchema(projectServiceMethods.ByName("Update")), + connect.WithHandlerOptions(opts...), + ) + projectServiceDeleteHandler := connect.NewUnaryHandler( + ProjectServiceDeleteProcedure, + svc.Delete, + connect.WithSchema(projectServiceMethods.ByName("Delete")), + connect.WithHandlerOptions(opts...), + ) + projectServiceGetHandler := connect.NewUnaryHandler( + ProjectServiceGetProcedure, + svc.Get, + connect.WithSchema(projectServiceMethods.ByName("Get")), + connect.WithHandlerOptions(opts...), + ) + projectServiceGetHistoryHandler := connect.NewUnaryHandler( + ProjectServiceGetHistoryProcedure, + svc.GetHistory, + connect.WithSchema(projectServiceMethods.ByName("GetHistory")), + connect.WithHandlerOptions(opts...), + ) + projectServiceFindHandler := connect.NewUnaryHandler( + ProjectServiceFindProcedure, + svc.Find, + connect.WithSchema(projectServiceMethods.ByName("Find")), + connect.WithHandlerOptions(opts...), + ) + return "/api.v1.ProjectService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + switch r.URL.Path { + case ProjectServiceCreateProcedure: + projectServiceCreateHandler.ServeHTTP(w, r) + case ProjectServiceUpdateProcedure: + projectServiceUpdateHandler.ServeHTTP(w, r) + case ProjectServiceDeleteProcedure: + projectServiceDeleteHandler.ServeHTTP(w, r) + case ProjectServiceGetProcedure: + projectServiceGetHandler.ServeHTTP(w, r) + case ProjectServiceGetHistoryProcedure: + projectServiceGetHistoryHandler.ServeHTTP(w, r) + case ProjectServiceFindProcedure: + projectServiceFindHandler.ServeHTTP(w, r) + default: + http.NotFound(w, r) + } + }) +} + +// UnimplementedProjectServiceHandler returns CodeUnimplemented from all methods. +type UnimplementedProjectServiceHandler struct{} + +func (UnimplementedProjectServiceHandler) Create(context.Context, *connect.Request[v1.ProjectCreateRequest]) (*connect.Response[v1.ProjectResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.ProjectService.Create is not implemented")) +} + +func (UnimplementedProjectServiceHandler) Update(context.Context, *connect.Request[v1.ProjectUpdateRequest]) (*connect.Response[v1.ProjectResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.ProjectService.Update is not implemented")) +} + +func (UnimplementedProjectServiceHandler) Delete(context.Context, *connect.Request[v1.ProjectDeleteRequest]) (*connect.Response[v1.ProjectResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.ProjectService.Delete is not implemented")) +} + +func (UnimplementedProjectServiceHandler) Get(context.Context, *connect.Request[v1.ProjectGetRequest]) (*connect.Response[v1.ProjectResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.ProjectService.Get is not implemented")) +} + +func (UnimplementedProjectServiceHandler) GetHistory(context.Context, *connect.Request[v1.ProjectGetHistoryRequest]) (*connect.Response[v1.ProjectResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.ProjectService.GetHistory is not implemented")) +} + +func (UnimplementedProjectServiceHandler) Find(context.Context, *connect.Request[v1.ProjectFindRequest]) (*connect.Response[v1.ProjectListResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.ProjectService.Find is not implemented")) +} diff --git a/api/v1/apiv1connect/project_member.connect.go b/api/v1/apiv1connect/project_member.connect.go new file mode 100644 index 0000000..7f9d54b --- /dev/null +++ b/api/v1/apiv1connect/project_member.connect.go @@ -0,0 +1,225 @@ +// Code generated by protoc-gen-connect-go. DO NOT EDIT. +// +// Source: api/v1/project_member.proto + +package apiv1connect + +import ( + connect "connectrpc.com/connect" + context "context" + errors "errors" + v1 "github.com/metal-stack/masterdata-api/api/v1" + http "net/http" + strings "strings" +) + +// This is a compile-time assertion to ensure that this generated file and the connect package are +// compatible. If you get a compiler error that this constant is not defined, this code was +// generated with a version of connect newer than the one compiled into your binary. You can fix the +// problem by either regenerating this code with an older version of connect or updating the connect +// version compiled into your binary. +const _ = connect.IsAtLeastVersion1_13_0 + +const ( + // ProjectMemberServiceName is the fully-qualified name of the ProjectMemberService service. + ProjectMemberServiceName = "api.v1.ProjectMemberService" +) + +// These constants are the fully-qualified names of the RPCs defined in this package. They're +// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route. +// +// Note that these are different from the fully-qualified method names used by +// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to +// reflection-formatted method names, remove the leading slash and convert the remaining slash to a +// period. +const ( + // ProjectMemberServiceCreateProcedure is the fully-qualified name of the ProjectMemberService's + // Create RPC. + ProjectMemberServiceCreateProcedure = "/api.v1.ProjectMemberService/Create" + // ProjectMemberServiceUpdateProcedure is the fully-qualified name of the ProjectMemberService's + // Update RPC. + ProjectMemberServiceUpdateProcedure = "/api.v1.ProjectMemberService/Update" + // ProjectMemberServiceDeleteProcedure is the fully-qualified name of the ProjectMemberService's + // Delete RPC. + ProjectMemberServiceDeleteProcedure = "/api.v1.ProjectMemberService/Delete" + // ProjectMemberServiceGetProcedure is the fully-qualified name of the ProjectMemberService's Get + // RPC. + ProjectMemberServiceGetProcedure = "/api.v1.ProjectMemberService/Get" + // ProjectMemberServiceFindProcedure is the fully-qualified name of the ProjectMemberService's Find + // RPC. + ProjectMemberServiceFindProcedure = "/api.v1.ProjectMemberService/Find" +) + +// ProjectMemberServiceClient is a client for the api.v1.ProjectMemberService service. +type ProjectMemberServiceClient interface { + Create(context.Context, *connect.Request[v1.ProjectMemberCreateRequest]) (*connect.Response[v1.ProjectMemberResponse], error) + Update(context.Context, *connect.Request[v1.ProjectMemberUpdateRequest]) (*connect.Response[v1.ProjectMemberResponse], error) + Delete(context.Context, *connect.Request[v1.ProjectMemberDeleteRequest]) (*connect.Response[v1.ProjectMemberResponse], error) + Get(context.Context, *connect.Request[v1.ProjectMemberGetRequest]) (*connect.Response[v1.ProjectMemberResponse], error) + Find(context.Context, *connect.Request[v1.ProjectMemberFindRequest]) (*connect.Response[v1.ProjectMemberListResponse], error) +} + +// NewProjectMemberServiceClient constructs a client for the api.v1.ProjectMemberService service. By +// default, it uses the Connect protocol with the binary Protobuf Codec, asks for gzipped responses, +// and sends uncompressed requests. To use the gRPC or gRPC-Web protocols, supply the +// connect.WithGRPC() or connect.WithGRPCWeb() options. +// +// The URL supplied here should be the base URL for the Connect or gRPC server (for example, +// http://api.acme.com or https://acme.com/grpc). +func NewProjectMemberServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) ProjectMemberServiceClient { + baseURL = strings.TrimRight(baseURL, "/") + projectMemberServiceMethods := v1.File_api_v1_project_member_proto.Services().ByName("ProjectMemberService").Methods() + return &projectMemberServiceClient{ + create: connect.NewClient[v1.ProjectMemberCreateRequest, v1.ProjectMemberResponse]( + httpClient, + baseURL+ProjectMemberServiceCreateProcedure, + connect.WithSchema(projectMemberServiceMethods.ByName("Create")), + connect.WithClientOptions(opts...), + ), + update: connect.NewClient[v1.ProjectMemberUpdateRequest, v1.ProjectMemberResponse]( + httpClient, + baseURL+ProjectMemberServiceUpdateProcedure, + connect.WithSchema(projectMemberServiceMethods.ByName("Update")), + connect.WithClientOptions(opts...), + ), + delete: connect.NewClient[v1.ProjectMemberDeleteRequest, v1.ProjectMemberResponse]( + httpClient, + baseURL+ProjectMemberServiceDeleteProcedure, + connect.WithSchema(projectMemberServiceMethods.ByName("Delete")), + connect.WithClientOptions(opts...), + ), + get: connect.NewClient[v1.ProjectMemberGetRequest, v1.ProjectMemberResponse]( + httpClient, + baseURL+ProjectMemberServiceGetProcedure, + connect.WithSchema(projectMemberServiceMethods.ByName("Get")), + connect.WithClientOptions(opts...), + ), + find: connect.NewClient[v1.ProjectMemberFindRequest, v1.ProjectMemberListResponse]( + httpClient, + baseURL+ProjectMemberServiceFindProcedure, + connect.WithSchema(projectMemberServiceMethods.ByName("Find")), + connect.WithClientOptions(opts...), + ), + } +} + +// projectMemberServiceClient implements ProjectMemberServiceClient. +type projectMemberServiceClient struct { + create *connect.Client[v1.ProjectMemberCreateRequest, v1.ProjectMemberResponse] + update *connect.Client[v1.ProjectMemberUpdateRequest, v1.ProjectMemberResponse] + delete *connect.Client[v1.ProjectMemberDeleteRequest, v1.ProjectMemberResponse] + get *connect.Client[v1.ProjectMemberGetRequest, v1.ProjectMemberResponse] + find *connect.Client[v1.ProjectMemberFindRequest, v1.ProjectMemberListResponse] +} + +// Create calls api.v1.ProjectMemberService.Create. +func (c *projectMemberServiceClient) Create(ctx context.Context, req *connect.Request[v1.ProjectMemberCreateRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { + return c.create.CallUnary(ctx, req) +} + +// Update calls api.v1.ProjectMemberService.Update. +func (c *projectMemberServiceClient) Update(ctx context.Context, req *connect.Request[v1.ProjectMemberUpdateRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { + return c.update.CallUnary(ctx, req) +} + +// Delete calls api.v1.ProjectMemberService.Delete. +func (c *projectMemberServiceClient) Delete(ctx context.Context, req *connect.Request[v1.ProjectMemberDeleteRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { + return c.delete.CallUnary(ctx, req) +} + +// Get calls api.v1.ProjectMemberService.Get. +func (c *projectMemberServiceClient) Get(ctx context.Context, req *connect.Request[v1.ProjectMemberGetRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { + return c.get.CallUnary(ctx, req) +} + +// Find calls api.v1.ProjectMemberService.Find. +func (c *projectMemberServiceClient) Find(ctx context.Context, req *connect.Request[v1.ProjectMemberFindRequest]) (*connect.Response[v1.ProjectMemberListResponse], error) { + return c.find.CallUnary(ctx, req) +} + +// ProjectMemberServiceHandler is an implementation of the api.v1.ProjectMemberService service. +type ProjectMemberServiceHandler interface { + Create(context.Context, *connect.Request[v1.ProjectMemberCreateRequest]) (*connect.Response[v1.ProjectMemberResponse], error) + Update(context.Context, *connect.Request[v1.ProjectMemberUpdateRequest]) (*connect.Response[v1.ProjectMemberResponse], error) + Delete(context.Context, *connect.Request[v1.ProjectMemberDeleteRequest]) (*connect.Response[v1.ProjectMemberResponse], error) + Get(context.Context, *connect.Request[v1.ProjectMemberGetRequest]) (*connect.Response[v1.ProjectMemberResponse], error) + Find(context.Context, *connect.Request[v1.ProjectMemberFindRequest]) (*connect.Response[v1.ProjectMemberListResponse], error) +} + +// NewProjectMemberServiceHandler builds an HTTP handler from the service implementation. It returns +// the path on which to mount the handler and the handler itself. +// +// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf +// and JSON codecs. They also support gzip compression. +func NewProjectMemberServiceHandler(svc ProjectMemberServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { + projectMemberServiceMethods := v1.File_api_v1_project_member_proto.Services().ByName("ProjectMemberService").Methods() + projectMemberServiceCreateHandler := connect.NewUnaryHandler( + ProjectMemberServiceCreateProcedure, + svc.Create, + connect.WithSchema(projectMemberServiceMethods.ByName("Create")), + connect.WithHandlerOptions(opts...), + ) + projectMemberServiceUpdateHandler := connect.NewUnaryHandler( + ProjectMemberServiceUpdateProcedure, + svc.Update, + connect.WithSchema(projectMemberServiceMethods.ByName("Update")), + connect.WithHandlerOptions(opts...), + ) + projectMemberServiceDeleteHandler := connect.NewUnaryHandler( + ProjectMemberServiceDeleteProcedure, + svc.Delete, + connect.WithSchema(projectMemberServiceMethods.ByName("Delete")), + connect.WithHandlerOptions(opts...), + ) + projectMemberServiceGetHandler := connect.NewUnaryHandler( + ProjectMemberServiceGetProcedure, + svc.Get, + connect.WithSchema(projectMemberServiceMethods.ByName("Get")), + connect.WithHandlerOptions(opts...), + ) + projectMemberServiceFindHandler := connect.NewUnaryHandler( + ProjectMemberServiceFindProcedure, + svc.Find, + connect.WithSchema(projectMemberServiceMethods.ByName("Find")), + connect.WithHandlerOptions(opts...), + ) + return "/api.v1.ProjectMemberService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + switch r.URL.Path { + case ProjectMemberServiceCreateProcedure: + projectMemberServiceCreateHandler.ServeHTTP(w, r) + case ProjectMemberServiceUpdateProcedure: + projectMemberServiceUpdateHandler.ServeHTTP(w, r) + case ProjectMemberServiceDeleteProcedure: + projectMemberServiceDeleteHandler.ServeHTTP(w, r) + case ProjectMemberServiceGetProcedure: + projectMemberServiceGetHandler.ServeHTTP(w, r) + case ProjectMemberServiceFindProcedure: + projectMemberServiceFindHandler.ServeHTTP(w, r) + default: + http.NotFound(w, r) + } + }) +} + +// UnimplementedProjectMemberServiceHandler returns CodeUnimplemented from all methods. +type UnimplementedProjectMemberServiceHandler struct{} + +func (UnimplementedProjectMemberServiceHandler) Create(context.Context, *connect.Request[v1.ProjectMemberCreateRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.ProjectMemberService.Create is not implemented")) +} + +func (UnimplementedProjectMemberServiceHandler) Update(context.Context, *connect.Request[v1.ProjectMemberUpdateRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.ProjectMemberService.Update is not implemented")) +} + +func (UnimplementedProjectMemberServiceHandler) Delete(context.Context, *connect.Request[v1.ProjectMemberDeleteRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.ProjectMemberService.Delete is not implemented")) +} + +func (UnimplementedProjectMemberServiceHandler) Get(context.Context, *connect.Request[v1.ProjectMemberGetRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.ProjectMemberService.Get is not implemented")) +} + +func (UnimplementedProjectMemberServiceHandler) Find(context.Context, *connect.Request[v1.ProjectMemberFindRequest]) (*connect.Response[v1.ProjectMemberListResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.ProjectMemberService.Find is not implemented")) +} diff --git a/api/v1/apiv1connect/tenant.connect.go b/api/v1/apiv1connect/tenant.connect.go new file mode 100644 index 0000000..54f0038 --- /dev/null +++ b/api/v1/apiv1connect/tenant.connect.go @@ -0,0 +1,336 @@ +// Code generated by protoc-gen-connect-go. DO NOT EDIT. +// +// Source: api/v1/tenant.proto + +package apiv1connect + +import ( + connect "connectrpc.com/connect" + context "context" + errors "errors" + v1 "github.com/metal-stack/masterdata-api/api/v1" + http "net/http" + strings "strings" +) + +// This is a compile-time assertion to ensure that this generated file and the connect package are +// compatible. If you get a compiler error that this constant is not defined, this code was +// generated with a version of connect newer than the one compiled into your binary. You can fix the +// problem by either regenerating this code with an older version of connect or updating the connect +// version compiled into your binary. +const _ = connect.IsAtLeastVersion1_13_0 + +const ( + // TenantServiceName is the fully-qualified name of the TenantService service. + TenantServiceName = "api.v1.TenantService" +) + +// These constants are the fully-qualified names of the RPCs defined in this package. They're +// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route. +// +// Note that these are different from the fully-qualified method names used by +// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to +// reflection-formatted method names, remove the leading slash and convert the remaining slash to a +// period. +const ( + // TenantServiceCreateProcedure is the fully-qualified name of the TenantService's Create RPC. + TenantServiceCreateProcedure = "/api.v1.TenantService/Create" + // TenantServiceUpdateProcedure is the fully-qualified name of the TenantService's Update RPC. + TenantServiceUpdateProcedure = "/api.v1.TenantService/Update" + // TenantServiceDeleteProcedure is the fully-qualified name of the TenantService's Delete RPC. + TenantServiceDeleteProcedure = "/api.v1.TenantService/Delete" + // TenantServiceGetProcedure is the fully-qualified name of the TenantService's Get RPC. + TenantServiceGetProcedure = "/api.v1.TenantService/Get" + // TenantServiceGetHistoryProcedure is the fully-qualified name of the TenantService's GetHistory + // RPC. + TenantServiceGetHistoryProcedure = "/api.v1.TenantService/GetHistory" + // TenantServiceFindProcedure is the fully-qualified name of the TenantService's Find RPC. + TenantServiceFindProcedure = "/api.v1.TenantService/Find" + // TenantServiceListTenantMembersProcedure is the fully-qualified name of the TenantService's + // ListTenantMembers RPC. + TenantServiceListTenantMembersProcedure = "/api.v1.TenantService/ListTenantMembers" + // TenantServiceFindParticipatingProjectsProcedure is the fully-qualified name of the + // TenantService's FindParticipatingProjects RPC. + TenantServiceFindParticipatingProjectsProcedure = "/api.v1.TenantService/FindParticipatingProjects" + // TenantServiceFindParticipatingTenantsProcedure is the fully-qualified name of the TenantService's + // FindParticipatingTenants RPC. + TenantServiceFindParticipatingTenantsProcedure = "/api.v1.TenantService/FindParticipatingTenants" +) + +// TenantServiceClient is a client for the api.v1.TenantService service. +type TenantServiceClient interface { + Create(context.Context, *connect.Request[v1.TenantCreateRequest]) (*connect.Response[v1.TenantResponse], error) + Update(context.Context, *connect.Request[v1.TenantUpdateRequest]) (*connect.Response[v1.TenantResponse], error) + Delete(context.Context, *connect.Request[v1.TenantDeleteRequest]) (*connect.Response[v1.TenantResponse], error) + Get(context.Context, *connect.Request[v1.TenantGetRequest]) (*connect.Response[v1.TenantResponse], error) + GetHistory(context.Context, *connect.Request[v1.TenantGetHistoryRequest]) (*connect.Response[v1.TenantResponse], error) + Find(context.Context, *connect.Request[v1.TenantFindRequest]) (*connect.Response[v1.TenantListResponse], error) + ListTenantMembers(context.Context, *connect.Request[v1.ListTenantMembersRequest]) (*connect.Response[v1.ListTenantMembersResponse], error) + FindParticipatingProjects(context.Context, *connect.Request[v1.FindParticipatingProjectsRequest]) (*connect.Response[v1.FindParticipatingProjectsResponse], error) + FindParticipatingTenants(context.Context, *connect.Request[v1.FindParticipatingTenantsRequest]) (*connect.Response[v1.FindParticipatingTenantsResponse], error) +} + +// NewTenantServiceClient constructs a client for the api.v1.TenantService service. By default, it +// uses the Connect protocol with the binary Protobuf Codec, asks for gzipped responses, and sends +// uncompressed requests. To use the gRPC or gRPC-Web protocols, supply the connect.WithGRPC() or +// connect.WithGRPCWeb() options. +// +// The URL supplied here should be the base URL for the Connect or gRPC server (for example, +// http://api.acme.com or https://acme.com/grpc). +func NewTenantServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) TenantServiceClient { + baseURL = strings.TrimRight(baseURL, "/") + tenantServiceMethods := v1.File_api_v1_tenant_proto.Services().ByName("TenantService").Methods() + return &tenantServiceClient{ + create: connect.NewClient[v1.TenantCreateRequest, v1.TenantResponse]( + httpClient, + baseURL+TenantServiceCreateProcedure, + connect.WithSchema(tenantServiceMethods.ByName("Create")), + connect.WithClientOptions(opts...), + ), + update: connect.NewClient[v1.TenantUpdateRequest, v1.TenantResponse]( + httpClient, + baseURL+TenantServiceUpdateProcedure, + connect.WithSchema(tenantServiceMethods.ByName("Update")), + connect.WithClientOptions(opts...), + ), + delete: connect.NewClient[v1.TenantDeleteRequest, v1.TenantResponse]( + httpClient, + baseURL+TenantServiceDeleteProcedure, + connect.WithSchema(tenantServiceMethods.ByName("Delete")), + connect.WithClientOptions(opts...), + ), + get: connect.NewClient[v1.TenantGetRequest, v1.TenantResponse]( + httpClient, + baseURL+TenantServiceGetProcedure, + connect.WithSchema(tenantServiceMethods.ByName("Get")), + connect.WithClientOptions(opts...), + ), + getHistory: connect.NewClient[v1.TenantGetHistoryRequest, v1.TenantResponse]( + httpClient, + baseURL+TenantServiceGetHistoryProcedure, + connect.WithSchema(tenantServiceMethods.ByName("GetHistory")), + connect.WithClientOptions(opts...), + ), + find: connect.NewClient[v1.TenantFindRequest, v1.TenantListResponse]( + httpClient, + baseURL+TenantServiceFindProcedure, + connect.WithSchema(tenantServiceMethods.ByName("Find")), + connect.WithClientOptions(opts...), + ), + listTenantMembers: connect.NewClient[v1.ListTenantMembersRequest, v1.ListTenantMembersResponse]( + httpClient, + baseURL+TenantServiceListTenantMembersProcedure, + connect.WithSchema(tenantServiceMethods.ByName("ListTenantMembers")), + connect.WithClientOptions(opts...), + ), + findParticipatingProjects: connect.NewClient[v1.FindParticipatingProjectsRequest, v1.FindParticipatingProjectsResponse]( + httpClient, + baseURL+TenantServiceFindParticipatingProjectsProcedure, + connect.WithSchema(tenantServiceMethods.ByName("FindParticipatingProjects")), + connect.WithClientOptions(opts...), + ), + findParticipatingTenants: connect.NewClient[v1.FindParticipatingTenantsRequest, v1.FindParticipatingTenantsResponse]( + httpClient, + baseURL+TenantServiceFindParticipatingTenantsProcedure, + connect.WithSchema(tenantServiceMethods.ByName("FindParticipatingTenants")), + connect.WithClientOptions(opts...), + ), + } +} + +// tenantServiceClient implements TenantServiceClient. +type tenantServiceClient struct { + create *connect.Client[v1.TenantCreateRequest, v1.TenantResponse] + update *connect.Client[v1.TenantUpdateRequest, v1.TenantResponse] + delete *connect.Client[v1.TenantDeleteRequest, v1.TenantResponse] + get *connect.Client[v1.TenantGetRequest, v1.TenantResponse] + getHistory *connect.Client[v1.TenantGetHistoryRequest, v1.TenantResponse] + find *connect.Client[v1.TenantFindRequest, v1.TenantListResponse] + listTenantMembers *connect.Client[v1.ListTenantMembersRequest, v1.ListTenantMembersResponse] + findParticipatingProjects *connect.Client[v1.FindParticipatingProjectsRequest, v1.FindParticipatingProjectsResponse] + findParticipatingTenants *connect.Client[v1.FindParticipatingTenantsRequest, v1.FindParticipatingTenantsResponse] +} + +// Create calls api.v1.TenantService.Create. +func (c *tenantServiceClient) Create(ctx context.Context, req *connect.Request[v1.TenantCreateRequest]) (*connect.Response[v1.TenantResponse], error) { + return c.create.CallUnary(ctx, req) +} + +// Update calls api.v1.TenantService.Update. +func (c *tenantServiceClient) Update(ctx context.Context, req *connect.Request[v1.TenantUpdateRequest]) (*connect.Response[v1.TenantResponse], error) { + return c.update.CallUnary(ctx, req) +} + +// Delete calls api.v1.TenantService.Delete. +func (c *tenantServiceClient) Delete(ctx context.Context, req *connect.Request[v1.TenantDeleteRequest]) (*connect.Response[v1.TenantResponse], error) { + return c.delete.CallUnary(ctx, req) +} + +// Get calls api.v1.TenantService.Get. +func (c *tenantServiceClient) Get(ctx context.Context, req *connect.Request[v1.TenantGetRequest]) (*connect.Response[v1.TenantResponse], error) { + return c.get.CallUnary(ctx, req) +} + +// GetHistory calls api.v1.TenantService.GetHistory. +func (c *tenantServiceClient) GetHistory(ctx context.Context, req *connect.Request[v1.TenantGetHistoryRequest]) (*connect.Response[v1.TenantResponse], error) { + return c.getHistory.CallUnary(ctx, req) +} + +// Find calls api.v1.TenantService.Find. +func (c *tenantServiceClient) Find(ctx context.Context, req *connect.Request[v1.TenantFindRequest]) (*connect.Response[v1.TenantListResponse], error) { + return c.find.CallUnary(ctx, req) +} + +// ListTenantMembers calls api.v1.TenantService.ListTenantMembers. +func (c *tenantServiceClient) ListTenantMembers(ctx context.Context, req *connect.Request[v1.ListTenantMembersRequest]) (*connect.Response[v1.ListTenantMembersResponse], error) { + return c.listTenantMembers.CallUnary(ctx, req) +} + +// FindParticipatingProjects calls api.v1.TenantService.FindParticipatingProjects. +func (c *tenantServiceClient) FindParticipatingProjects(ctx context.Context, req *connect.Request[v1.FindParticipatingProjectsRequest]) (*connect.Response[v1.FindParticipatingProjectsResponse], error) { + return c.findParticipatingProjects.CallUnary(ctx, req) +} + +// FindParticipatingTenants calls api.v1.TenantService.FindParticipatingTenants. +func (c *tenantServiceClient) FindParticipatingTenants(ctx context.Context, req *connect.Request[v1.FindParticipatingTenantsRequest]) (*connect.Response[v1.FindParticipatingTenantsResponse], error) { + return c.findParticipatingTenants.CallUnary(ctx, req) +} + +// TenantServiceHandler is an implementation of the api.v1.TenantService service. +type TenantServiceHandler interface { + Create(context.Context, *connect.Request[v1.TenantCreateRequest]) (*connect.Response[v1.TenantResponse], error) + Update(context.Context, *connect.Request[v1.TenantUpdateRequest]) (*connect.Response[v1.TenantResponse], error) + Delete(context.Context, *connect.Request[v1.TenantDeleteRequest]) (*connect.Response[v1.TenantResponse], error) + Get(context.Context, *connect.Request[v1.TenantGetRequest]) (*connect.Response[v1.TenantResponse], error) + GetHistory(context.Context, *connect.Request[v1.TenantGetHistoryRequest]) (*connect.Response[v1.TenantResponse], error) + Find(context.Context, *connect.Request[v1.TenantFindRequest]) (*connect.Response[v1.TenantListResponse], error) + ListTenantMembers(context.Context, *connect.Request[v1.ListTenantMembersRequest]) (*connect.Response[v1.ListTenantMembersResponse], error) + FindParticipatingProjects(context.Context, *connect.Request[v1.FindParticipatingProjectsRequest]) (*connect.Response[v1.FindParticipatingProjectsResponse], error) + FindParticipatingTenants(context.Context, *connect.Request[v1.FindParticipatingTenantsRequest]) (*connect.Response[v1.FindParticipatingTenantsResponse], error) +} + +// NewTenantServiceHandler builds an HTTP handler from the service implementation. It returns the +// path on which to mount the handler and the handler itself. +// +// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf +// and JSON codecs. They also support gzip compression. +func NewTenantServiceHandler(svc TenantServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { + tenantServiceMethods := v1.File_api_v1_tenant_proto.Services().ByName("TenantService").Methods() + tenantServiceCreateHandler := connect.NewUnaryHandler( + TenantServiceCreateProcedure, + svc.Create, + connect.WithSchema(tenantServiceMethods.ByName("Create")), + connect.WithHandlerOptions(opts...), + ) + tenantServiceUpdateHandler := connect.NewUnaryHandler( + TenantServiceUpdateProcedure, + svc.Update, + connect.WithSchema(tenantServiceMethods.ByName("Update")), + connect.WithHandlerOptions(opts...), + ) + tenantServiceDeleteHandler := connect.NewUnaryHandler( + TenantServiceDeleteProcedure, + svc.Delete, + connect.WithSchema(tenantServiceMethods.ByName("Delete")), + connect.WithHandlerOptions(opts...), + ) + tenantServiceGetHandler := connect.NewUnaryHandler( + TenantServiceGetProcedure, + svc.Get, + connect.WithSchema(tenantServiceMethods.ByName("Get")), + connect.WithHandlerOptions(opts...), + ) + tenantServiceGetHistoryHandler := connect.NewUnaryHandler( + TenantServiceGetHistoryProcedure, + svc.GetHistory, + connect.WithSchema(tenantServiceMethods.ByName("GetHistory")), + connect.WithHandlerOptions(opts...), + ) + tenantServiceFindHandler := connect.NewUnaryHandler( + TenantServiceFindProcedure, + svc.Find, + connect.WithSchema(tenantServiceMethods.ByName("Find")), + connect.WithHandlerOptions(opts...), + ) + tenantServiceListTenantMembersHandler := connect.NewUnaryHandler( + TenantServiceListTenantMembersProcedure, + svc.ListTenantMembers, + connect.WithSchema(tenantServiceMethods.ByName("ListTenantMembers")), + connect.WithHandlerOptions(opts...), + ) + tenantServiceFindParticipatingProjectsHandler := connect.NewUnaryHandler( + TenantServiceFindParticipatingProjectsProcedure, + svc.FindParticipatingProjects, + connect.WithSchema(tenantServiceMethods.ByName("FindParticipatingProjects")), + connect.WithHandlerOptions(opts...), + ) + tenantServiceFindParticipatingTenantsHandler := connect.NewUnaryHandler( + TenantServiceFindParticipatingTenantsProcedure, + svc.FindParticipatingTenants, + connect.WithSchema(tenantServiceMethods.ByName("FindParticipatingTenants")), + connect.WithHandlerOptions(opts...), + ) + return "/api.v1.TenantService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + switch r.URL.Path { + case TenantServiceCreateProcedure: + tenantServiceCreateHandler.ServeHTTP(w, r) + case TenantServiceUpdateProcedure: + tenantServiceUpdateHandler.ServeHTTP(w, r) + case TenantServiceDeleteProcedure: + tenantServiceDeleteHandler.ServeHTTP(w, r) + case TenantServiceGetProcedure: + tenantServiceGetHandler.ServeHTTP(w, r) + case TenantServiceGetHistoryProcedure: + tenantServiceGetHistoryHandler.ServeHTTP(w, r) + case TenantServiceFindProcedure: + tenantServiceFindHandler.ServeHTTP(w, r) + case TenantServiceListTenantMembersProcedure: + tenantServiceListTenantMembersHandler.ServeHTTP(w, r) + case TenantServiceFindParticipatingProjectsProcedure: + tenantServiceFindParticipatingProjectsHandler.ServeHTTP(w, r) + case TenantServiceFindParticipatingTenantsProcedure: + tenantServiceFindParticipatingTenantsHandler.ServeHTTP(w, r) + default: + http.NotFound(w, r) + } + }) +} + +// UnimplementedTenantServiceHandler returns CodeUnimplemented from all methods. +type UnimplementedTenantServiceHandler struct{} + +func (UnimplementedTenantServiceHandler) Create(context.Context, *connect.Request[v1.TenantCreateRequest]) (*connect.Response[v1.TenantResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.TenantService.Create is not implemented")) +} + +func (UnimplementedTenantServiceHandler) Update(context.Context, *connect.Request[v1.TenantUpdateRequest]) (*connect.Response[v1.TenantResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.TenantService.Update is not implemented")) +} + +func (UnimplementedTenantServiceHandler) Delete(context.Context, *connect.Request[v1.TenantDeleteRequest]) (*connect.Response[v1.TenantResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.TenantService.Delete is not implemented")) +} + +func (UnimplementedTenantServiceHandler) Get(context.Context, *connect.Request[v1.TenantGetRequest]) (*connect.Response[v1.TenantResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.TenantService.Get is not implemented")) +} + +func (UnimplementedTenantServiceHandler) GetHistory(context.Context, *connect.Request[v1.TenantGetHistoryRequest]) (*connect.Response[v1.TenantResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.TenantService.GetHistory is not implemented")) +} + +func (UnimplementedTenantServiceHandler) Find(context.Context, *connect.Request[v1.TenantFindRequest]) (*connect.Response[v1.TenantListResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.TenantService.Find is not implemented")) +} + +func (UnimplementedTenantServiceHandler) ListTenantMembers(context.Context, *connect.Request[v1.ListTenantMembersRequest]) (*connect.Response[v1.ListTenantMembersResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.TenantService.ListTenantMembers is not implemented")) +} + +func (UnimplementedTenantServiceHandler) FindParticipatingProjects(context.Context, *connect.Request[v1.FindParticipatingProjectsRequest]) (*connect.Response[v1.FindParticipatingProjectsResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.TenantService.FindParticipatingProjects is not implemented")) +} + +func (UnimplementedTenantServiceHandler) FindParticipatingTenants(context.Context, *connect.Request[v1.FindParticipatingTenantsRequest]) (*connect.Response[v1.FindParticipatingTenantsResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.TenantService.FindParticipatingTenants is not implemented")) +} diff --git a/api/v1/apiv1connect/tenant_member.connect.go b/api/v1/apiv1connect/tenant_member.connect.go new file mode 100644 index 0000000..7fa1b5f --- /dev/null +++ b/api/v1/apiv1connect/tenant_member.connect.go @@ -0,0 +1,224 @@ +// Code generated by protoc-gen-connect-go. DO NOT EDIT. +// +// Source: api/v1/tenant_member.proto + +package apiv1connect + +import ( + connect "connectrpc.com/connect" + context "context" + errors "errors" + v1 "github.com/metal-stack/masterdata-api/api/v1" + http "net/http" + strings "strings" +) + +// This is a compile-time assertion to ensure that this generated file and the connect package are +// compatible. If you get a compiler error that this constant is not defined, this code was +// generated with a version of connect newer than the one compiled into your binary. You can fix the +// problem by either regenerating this code with an older version of connect or updating the connect +// version compiled into your binary. +const _ = connect.IsAtLeastVersion1_13_0 + +const ( + // TenantMemberServiceName is the fully-qualified name of the TenantMemberService service. + TenantMemberServiceName = "api.v1.TenantMemberService" +) + +// These constants are the fully-qualified names of the RPCs defined in this package. They're +// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route. +// +// Note that these are different from the fully-qualified method names used by +// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to +// reflection-formatted method names, remove the leading slash and convert the remaining slash to a +// period. +const ( + // TenantMemberServiceCreateProcedure is the fully-qualified name of the TenantMemberService's + // Create RPC. + TenantMemberServiceCreateProcedure = "/api.v1.TenantMemberService/Create" + // TenantMemberServiceUpdateProcedure is the fully-qualified name of the TenantMemberService's + // Update RPC. + TenantMemberServiceUpdateProcedure = "/api.v1.TenantMemberService/Update" + // TenantMemberServiceDeleteProcedure is the fully-qualified name of the TenantMemberService's + // Delete RPC. + TenantMemberServiceDeleteProcedure = "/api.v1.TenantMemberService/Delete" + // TenantMemberServiceGetProcedure is the fully-qualified name of the TenantMemberService's Get RPC. + TenantMemberServiceGetProcedure = "/api.v1.TenantMemberService/Get" + // TenantMemberServiceFindProcedure is the fully-qualified name of the TenantMemberService's Find + // RPC. + TenantMemberServiceFindProcedure = "/api.v1.TenantMemberService/Find" +) + +// TenantMemberServiceClient is a client for the api.v1.TenantMemberService service. +type TenantMemberServiceClient interface { + Create(context.Context, *connect.Request[v1.TenantMemberCreateRequest]) (*connect.Response[v1.TenantMemberResponse], error) + Update(context.Context, *connect.Request[v1.TenantMemberUpdateRequest]) (*connect.Response[v1.TenantMemberResponse], error) + Delete(context.Context, *connect.Request[v1.TenantMemberDeleteRequest]) (*connect.Response[v1.TenantMemberResponse], error) + Get(context.Context, *connect.Request[v1.TenantMemberGetRequest]) (*connect.Response[v1.TenantMemberResponse], error) + Find(context.Context, *connect.Request[v1.TenantMemberFindRequest]) (*connect.Response[v1.TenantMemberListResponse], error) +} + +// NewTenantMemberServiceClient constructs a client for the api.v1.TenantMemberService service. By +// default, it uses the Connect protocol with the binary Protobuf Codec, asks for gzipped responses, +// and sends uncompressed requests. To use the gRPC or gRPC-Web protocols, supply the +// connect.WithGRPC() or connect.WithGRPCWeb() options. +// +// The URL supplied here should be the base URL for the Connect or gRPC server (for example, +// http://api.acme.com or https://acme.com/grpc). +func NewTenantMemberServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) TenantMemberServiceClient { + baseURL = strings.TrimRight(baseURL, "/") + tenantMemberServiceMethods := v1.File_api_v1_tenant_member_proto.Services().ByName("TenantMemberService").Methods() + return &tenantMemberServiceClient{ + create: connect.NewClient[v1.TenantMemberCreateRequest, v1.TenantMemberResponse]( + httpClient, + baseURL+TenantMemberServiceCreateProcedure, + connect.WithSchema(tenantMemberServiceMethods.ByName("Create")), + connect.WithClientOptions(opts...), + ), + update: connect.NewClient[v1.TenantMemberUpdateRequest, v1.TenantMemberResponse]( + httpClient, + baseURL+TenantMemberServiceUpdateProcedure, + connect.WithSchema(tenantMemberServiceMethods.ByName("Update")), + connect.WithClientOptions(opts...), + ), + delete: connect.NewClient[v1.TenantMemberDeleteRequest, v1.TenantMemberResponse]( + httpClient, + baseURL+TenantMemberServiceDeleteProcedure, + connect.WithSchema(tenantMemberServiceMethods.ByName("Delete")), + connect.WithClientOptions(opts...), + ), + get: connect.NewClient[v1.TenantMemberGetRequest, v1.TenantMemberResponse]( + httpClient, + baseURL+TenantMemberServiceGetProcedure, + connect.WithSchema(tenantMemberServiceMethods.ByName("Get")), + connect.WithClientOptions(opts...), + ), + find: connect.NewClient[v1.TenantMemberFindRequest, v1.TenantMemberListResponse]( + httpClient, + baseURL+TenantMemberServiceFindProcedure, + connect.WithSchema(tenantMemberServiceMethods.ByName("Find")), + connect.WithClientOptions(opts...), + ), + } +} + +// tenantMemberServiceClient implements TenantMemberServiceClient. +type tenantMemberServiceClient struct { + create *connect.Client[v1.TenantMemberCreateRequest, v1.TenantMemberResponse] + update *connect.Client[v1.TenantMemberUpdateRequest, v1.TenantMemberResponse] + delete *connect.Client[v1.TenantMemberDeleteRequest, v1.TenantMemberResponse] + get *connect.Client[v1.TenantMemberGetRequest, v1.TenantMemberResponse] + find *connect.Client[v1.TenantMemberFindRequest, v1.TenantMemberListResponse] +} + +// Create calls api.v1.TenantMemberService.Create. +func (c *tenantMemberServiceClient) Create(ctx context.Context, req *connect.Request[v1.TenantMemberCreateRequest]) (*connect.Response[v1.TenantMemberResponse], error) { + return c.create.CallUnary(ctx, req) +} + +// Update calls api.v1.TenantMemberService.Update. +func (c *tenantMemberServiceClient) Update(ctx context.Context, req *connect.Request[v1.TenantMemberUpdateRequest]) (*connect.Response[v1.TenantMemberResponse], error) { + return c.update.CallUnary(ctx, req) +} + +// Delete calls api.v1.TenantMemberService.Delete. +func (c *tenantMemberServiceClient) Delete(ctx context.Context, req *connect.Request[v1.TenantMemberDeleteRequest]) (*connect.Response[v1.TenantMemberResponse], error) { + return c.delete.CallUnary(ctx, req) +} + +// Get calls api.v1.TenantMemberService.Get. +func (c *tenantMemberServiceClient) Get(ctx context.Context, req *connect.Request[v1.TenantMemberGetRequest]) (*connect.Response[v1.TenantMemberResponse], error) { + return c.get.CallUnary(ctx, req) +} + +// Find calls api.v1.TenantMemberService.Find. +func (c *tenantMemberServiceClient) Find(ctx context.Context, req *connect.Request[v1.TenantMemberFindRequest]) (*connect.Response[v1.TenantMemberListResponse], error) { + return c.find.CallUnary(ctx, req) +} + +// TenantMemberServiceHandler is an implementation of the api.v1.TenantMemberService service. +type TenantMemberServiceHandler interface { + Create(context.Context, *connect.Request[v1.TenantMemberCreateRequest]) (*connect.Response[v1.TenantMemberResponse], error) + Update(context.Context, *connect.Request[v1.TenantMemberUpdateRequest]) (*connect.Response[v1.TenantMemberResponse], error) + Delete(context.Context, *connect.Request[v1.TenantMemberDeleteRequest]) (*connect.Response[v1.TenantMemberResponse], error) + Get(context.Context, *connect.Request[v1.TenantMemberGetRequest]) (*connect.Response[v1.TenantMemberResponse], error) + Find(context.Context, *connect.Request[v1.TenantMemberFindRequest]) (*connect.Response[v1.TenantMemberListResponse], error) +} + +// NewTenantMemberServiceHandler builds an HTTP handler from the service implementation. It returns +// the path on which to mount the handler and the handler itself. +// +// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf +// and JSON codecs. They also support gzip compression. +func NewTenantMemberServiceHandler(svc TenantMemberServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { + tenantMemberServiceMethods := v1.File_api_v1_tenant_member_proto.Services().ByName("TenantMemberService").Methods() + tenantMemberServiceCreateHandler := connect.NewUnaryHandler( + TenantMemberServiceCreateProcedure, + svc.Create, + connect.WithSchema(tenantMemberServiceMethods.ByName("Create")), + connect.WithHandlerOptions(opts...), + ) + tenantMemberServiceUpdateHandler := connect.NewUnaryHandler( + TenantMemberServiceUpdateProcedure, + svc.Update, + connect.WithSchema(tenantMemberServiceMethods.ByName("Update")), + connect.WithHandlerOptions(opts...), + ) + tenantMemberServiceDeleteHandler := connect.NewUnaryHandler( + TenantMemberServiceDeleteProcedure, + svc.Delete, + connect.WithSchema(tenantMemberServiceMethods.ByName("Delete")), + connect.WithHandlerOptions(opts...), + ) + tenantMemberServiceGetHandler := connect.NewUnaryHandler( + TenantMemberServiceGetProcedure, + svc.Get, + connect.WithSchema(tenantMemberServiceMethods.ByName("Get")), + connect.WithHandlerOptions(opts...), + ) + tenantMemberServiceFindHandler := connect.NewUnaryHandler( + TenantMemberServiceFindProcedure, + svc.Find, + connect.WithSchema(tenantMemberServiceMethods.ByName("Find")), + connect.WithHandlerOptions(opts...), + ) + return "/api.v1.TenantMemberService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + switch r.URL.Path { + case TenantMemberServiceCreateProcedure: + tenantMemberServiceCreateHandler.ServeHTTP(w, r) + case TenantMemberServiceUpdateProcedure: + tenantMemberServiceUpdateHandler.ServeHTTP(w, r) + case TenantMemberServiceDeleteProcedure: + tenantMemberServiceDeleteHandler.ServeHTTP(w, r) + case TenantMemberServiceGetProcedure: + tenantMemberServiceGetHandler.ServeHTTP(w, r) + case TenantMemberServiceFindProcedure: + tenantMemberServiceFindHandler.ServeHTTP(w, r) + default: + http.NotFound(w, r) + } + }) +} + +// UnimplementedTenantMemberServiceHandler returns CodeUnimplemented from all methods. +type UnimplementedTenantMemberServiceHandler struct{} + +func (UnimplementedTenantMemberServiceHandler) Create(context.Context, *connect.Request[v1.TenantMemberCreateRequest]) (*connect.Response[v1.TenantMemberResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.TenantMemberService.Create is not implemented")) +} + +func (UnimplementedTenantMemberServiceHandler) Update(context.Context, *connect.Request[v1.TenantMemberUpdateRequest]) (*connect.Response[v1.TenantMemberResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.TenantMemberService.Update is not implemented")) +} + +func (UnimplementedTenantMemberServiceHandler) Delete(context.Context, *connect.Request[v1.TenantMemberDeleteRequest]) (*connect.Response[v1.TenantMemberResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.TenantMemberService.Delete is not implemented")) +} + +func (UnimplementedTenantMemberServiceHandler) Get(context.Context, *connect.Request[v1.TenantMemberGetRequest]) (*connect.Response[v1.TenantMemberResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.TenantMemberService.Get is not implemented")) +} + +func (UnimplementedTenantMemberServiceHandler) Find(context.Context, *connect.Request[v1.TenantMemberFindRequest]) (*connect.Response[v1.TenantMemberListResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.TenantMemberService.Find is not implemented")) +} diff --git a/api/v1/apiv1connect/version.connect.go b/api/v1/apiv1connect/version.connect.go new file mode 100644 index 0000000..a0c917c --- /dev/null +++ b/api/v1/apiv1connect/version.connect.go @@ -0,0 +1,108 @@ +// Code generated by protoc-gen-connect-go. DO NOT EDIT. +// +// Source: api/v1/version.proto + +package apiv1connect + +import ( + connect "connectrpc.com/connect" + context "context" + errors "errors" + v1 "github.com/metal-stack/masterdata-api/api/v1" + http "net/http" + strings "strings" +) + +// This is a compile-time assertion to ensure that this generated file and the connect package are +// compatible. If you get a compiler error that this constant is not defined, this code was +// generated with a version of connect newer than the one compiled into your binary. You can fix the +// problem by either regenerating this code with an older version of connect or updating the connect +// version compiled into your binary. +const _ = connect.IsAtLeastVersion1_13_0 + +const ( + // VersionServiceName is the fully-qualified name of the VersionService service. + VersionServiceName = "api.v1.VersionService" +) + +// These constants are the fully-qualified names of the RPCs defined in this package. They're +// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route. +// +// Note that these are different from the fully-qualified method names used by +// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to +// reflection-formatted method names, remove the leading slash and convert the remaining slash to a +// period. +const ( + // VersionServiceGetProcedure is the fully-qualified name of the VersionService's Get RPC. + VersionServiceGetProcedure = "/api.v1.VersionService/Get" +) + +// VersionServiceClient is a client for the api.v1.VersionService service. +type VersionServiceClient interface { + Get(context.Context, *connect.Request[v1.GetVersionRequest]) (*connect.Response[v1.GetVersionResponse], error) +} + +// NewVersionServiceClient constructs a client for the api.v1.VersionService service. By default, it +// uses the Connect protocol with the binary Protobuf Codec, asks for gzipped responses, and sends +// uncompressed requests. To use the gRPC or gRPC-Web protocols, supply the connect.WithGRPC() or +// connect.WithGRPCWeb() options. +// +// The URL supplied here should be the base URL for the Connect or gRPC server (for example, +// http://api.acme.com or https://acme.com/grpc). +func NewVersionServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) VersionServiceClient { + baseURL = strings.TrimRight(baseURL, "/") + versionServiceMethods := v1.File_api_v1_version_proto.Services().ByName("VersionService").Methods() + return &versionServiceClient{ + get: connect.NewClient[v1.GetVersionRequest, v1.GetVersionResponse]( + httpClient, + baseURL+VersionServiceGetProcedure, + connect.WithSchema(versionServiceMethods.ByName("Get")), + connect.WithClientOptions(opts...), + ), + } +} + +// versionServiceClient implements VersionServiceClient. +type versionServiceClient struct { + get *connect.Client[v1.GetVersionRequest, v1.GetVersionResponse] +} + +// Get calls api.v1.VersionService.Get. +func (c *versionServiceClient) Get(ctx context.Context, req *connect.Request[v1.GetVersionRequest]) (*connect.Response[v1.GetVersionResponse], error) { + return c.get.CallUnary(ctx, req) +} + +// VersionServiceHandler is an implementation of the api.v1.VersionService service. +type VersionServiceHandler interface { + Get(context.Context, *connect.Request[v1.GetVersionRequest]) (*connect.Response[v1.GetVersionResponse], error) +} + +// NewVersionServiceHandler builds an HTTP handler from the service implementation. It returns the +// path on which to mount the handler and the handler itself. +// +// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf +// and JSON codecs. They also support gzip compression. +func NewVersionServiceHandler(svc VersionServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { + versionServiceMethods := v1.File_api_v1_version_proto.Services().ByName("VersionService").Methods() + versionServiceGetHandler := connect.NewUnaryHandler( + VersionServiceGetProcedure, + svc.Get, + connect.WithSchema(versionServiceMethods.ByName("Get")), + connect.WithHandlerOptions(opts...), + ) + return "/api.v1.VersionService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + switch r.URL.Path { + case VersionServiceGetProcedure: + versionServiceGetHandler.ServeHTTP(w, r) + default: + http.NotFound(w, r) + } + }) +} + +// UnimplementedVersionServiceHandler returns CodeUnimplemented from all methods. +type UnimplementedVersionServiceHandler struct{} + +func (UnimplementedVersionServiceHandler) Get(context.Context, *connect.Request[v1.GetVersionRequest]) (*connect.Response[v1.GetVersionResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.VersionService.Get is not implemented")) +} diff --git a/api/v1/common.pb.go b/api/v1/common.pb.go index 58211e2..7b191a4 100644 --- a/api/v1/common.pb.go +++ b/api/v1/common.pb.go @@ -2,9 +2,9 @@ // versions: // protoc-gen-go v1.36.6 // protoc (unknown) -// source: v1/common.proto +// source: api/v1/common.proto -package v1 +package apiv1 import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -34,7 +34,7 @@ type Paging struct { func (x *Paging) Reset() { *x = Paging{} - mi := &file_v1_common_proto_msgTypes[0] + mi := &file_api_v1_common_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -46,7 +46,7 @@ func (x *Paging) String() string { func (*Paging) ProtoMessage() {} func (x *Paging) ProtoReflect() protoreflect.Message { - mi := &file_v1_common_proto_msgTypes[0] + mi := &file_api_v1_common_proto_msgTypes[0] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -59,7 +59,7 @@ func (x *Paging) ProtoReflect() protoreflect.Message { // Deprecated: Use Paging.ProtoReflect.Descriptor instead. func (*Paging) Descriptor() ([]byte, []int) { - return file_v1_common_proto_rawDescGZIP(), []int{0} + return file_api_v1_common_proto_rawDescGZIP(), []int{0} } func (x *Paging) GetPage() uint64 { @@ -76,35 +76,36 @@ func (x *Paging) GetCount() uint64 { return 0 } -var File_v1_common_proto protoreflect.FileDescriptor +var File_api_v1_common_proto protoreflect.FileDescriptor -const file_v1_common_proto_rawDesc = "" + +const file_api_v1_common_proto_rawDesc = "" + "\n" + - "\x0fv1/common.proto\x12\x02v1\"O\n" + + "\x13api/v1/common.proto\x12\x06api.v1\"O\n" + "\x06Paging\x12\x17\n" + "\x04page\x18\x01 \x01(\x04H\x00R\x04page\x88\x01\x01\x12\x19\n" + "\x05count\x18\x02 \x01(\x04H\x01R\x05count\x88\x01\x01B\a\n" + "\x05_pageB\b\n" + - "\x06_countBg\n" + - "\x06com.v1B\vCommonProtoP\x01Z(github.com/metal-stack/masterdata-api/v1\xa2\x02\x03VXX\xaa\x02\x02V1\xca\x02\x02V1\xe2\x02\x0eV1\\GPBMetadata\xea\x02\x02V1b\x06proto3" + "\x06_countB\x86\x01\n" + + "\n" + + "com.api.v1B\vCommonProtoP\x01Z2github.com/metal-stack/masterdata-api/api/v1;apiv1\xa2\x02\x03AXX\xaa\x02\x06Api.V1\xca\x02\x06Api\\V1\xe2\x02\x12Api\\V1\\GPBMetadata\xea\x02\aApi::V1b\x06proto3" var ( - file_v1_common_proto_rawDescOnce sync.Once - file_v1_common_proto_rawDescData []byte + file_api_v1_common_proto_rawDescOnce sync.Once + file_api_v1_common_proto_rawDescData []byte ) -func file_v1_common_proto_rawDescGZIP() []byte { - file_v1_common_proto_rawDescOnce.Do(func() { - file_v1_common_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_v1_common_proto_rawDesc), len(file_v1_common_proto_rawDesc))) +func file_api_v1_common_proto_rawDescGZIP() []byte { + file_api_v1_common_proto_rawDescOnce.Do(func() { + file_api_v1_common_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_api_v1_common_proto_rawDesc), len(file_api_v1_common_proto_rawDesc))) }) - return file_v1_common_proto_rawDescData + return file_api_v1_common_proto_rawDescData } -var file_v1_common_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_v1_common_proto_goTypes = []any{ - (*Paging)(nil), // 0: v1.Paging +var file_api_v1_common_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_api_v1_common_proto_goTypes = []any{ + (*Paging)(nil), // 0: api.v1.Paging } -var file_v1_common_proto_depIdxs = []int32{ +var file_api_v1_common_proto_depIdxs = []int32{ 0, // [0:0] is the sub-list for method output_type 0, // [0:0] is the sub-list for method input_type 0, // [0:0] is the sub-list for extension type_name @@ -112,27 +113,27 @@ var file_v1_common_proto_depIdxs = []int32{ 0, // [0:0] is the sub-list for field type_name } -func init() { file_v1_common_proto_init() } -func file_v1_common_proto_init() { - if File_v1_common_proto != nil { +func init() { file_api_v1_common_proto_init() } +func file_api_v1_common_proto_init() { + if File_api_v1_common_proto != nil { return } - file_v1_common_proto_msgTypes[0].OneofWrappers = []any{} + file_api_v1_common_proto_msgTypes[0].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_v1_common_proto_rawDesc), len(file_v1_common_proto_rawDesc)), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_api_v1_common_proto_rawDesc), len(file_api_v1_common_proto_rawDesc)), NumEnums: 0, NumMessages: 1, NumExtensions: 0, NumServices: 0, }, - GoTypes: file_v1_common_proto_goTypes, - DependencyIndexes: file_v1_common_proto_depIdxs, - MessageInfos: file_v1_common_proto_msgTypes, + GoTypes: file_api_v1_common_proto_goTypes, + DependencyIndexes: file_api_v1_common_proto_depIdxs, + MessageInfos: file_api_v1_common_proto_msgTypes, }.Build() - File_v1_common_proto = out.File - file_v1_common_proto_goTypes = nil - file_v1_common_proto_depIdxs = nil + File_api_v1_common_proto = out.File + file_api_v1_common_proto_goTypes = nil + file_api_v1_common_proto_depIdxs = nil } diff --git a/api/v1/errors.go b/api/v1/errors.go index cc9e22f..965dc03 100644 --- a/api/v1/errors.go +++ b/api/v1/errors.go @@ -1,4 +1,4 @@ -package v1 +package apiv1 import ( "google.golang.org/grpc/codes" diff --git a/api/v1/iam.pb.go b/api/v1/iam.pb.go index e179aa1..673f273 100644 --- a/api/v1/iam.pb.go +++ b/api/v1/iam.pb.go @@ -2,9 +2,9 @@ // versions: // protoc-gen-go v1.36.6 // protoc (unknown) -// source: v1/iam.proto +// source: api/v1/iam.proto -package v1 +package apiv1 import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -32,7 +32,7 @@ type IAMConfig struct { func (x *IAMConfig) Reset() { *x = IAMConfig{} - mi := &file_v1_iam_proto_msgTypes[0] + mi := &file_api_v1_iam_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -44,7 +44,7 @@ func (x *IAMConfig) String() string { func (*IAMConfig) ProtoMessage() {} func (x *IAMConfig) ProtoReflect() protoreflect.Message { - mi := &file_v1_iam_proto_msgTypes[0] + mi := &file_api_v1_iam_proto_msgTypes[0] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -57,7 +57,7 @@ func (x *IAMConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use IAMConfig.ProtoReflect.Descriptor instead. func (*IAMConfig) Descriptor() ([]byte, []int) { - return file_v1_iam_proto_rawDescGZIP(), []int{0} + return file_api_v1_iam_proto_rawDescGZIP(), []int{0} } func (x *IAMConfig) GetIssuerConfig() *IssuerConfig { @@ -91,7 +91,7 @@ type IssuerConfig struct { func (x *IssuerConfig) Reset() { *x = IssuerConfig{} - mi := &file_v1_iam_proto_msgTypes[1] + mi := &file_api_v1_iam_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -103,7 +103,7 @@ func (x *IssuerConfig) String() string { func (*IssuerConfig) ProtoMessage() {} func (x *IssuerConfig) ProtoReflect() protoreflect.Message { - mi := &file_v1_iam_proto_msgTypes[1] + mi := &file_api_v1_iam_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -116,7 +116,7 @@ func (x *IssuerConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use IssuerConfig.ProtoReflect.Descriptor instead. func (*IssuerConfig) Descriptor() ([]byte, []int) { - return file_v1_iam_proto_rawDescGZIP(), []int{1} + return file_api_v1_iam_proto_rawDescGZIP(), []int{1} } func (x *IssuerConfig) GetUrl() string { @@ -145,7 +145,7 @@ type IDMConfig struct { func (x *IDMConfig) Reset() { *x = IDMConfig{} - mi := &file_v1_iam_proto_msgTypes[2] + mi := &file_api_v1_iam_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -157,7 +157,7 @@ func (x *IDMConfig) String() string { func (*IDMConfig) ProtoMessage() {} func (x *IDMConfig) ProtoReflect() protoreflect.Message { - mi := &file_v1_iam_proto_msgTypes[2] + mi := &file_api_v1_iam_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -170,7 +170,7 @@ func (x *IDMConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use IDMConfig.ProtoReflect.Descriptor instead. func (*IDMConfig) Descriptor() ([]byte, []int) { - return file_v1_iam_proto_rawDescGZIP(), []int{2} + return file_api_v1_iam_proto_rawDescGZIP(), []int{2} } func (x *IDMConfig) GetIdmType() string { @@ -210,7 +210,7 @@ type NamespaceGroupConfig struct { func (x *NamespaceGroupConfig) Reset() { *x = NamespaceGroupConfig{} - mi := &file_v1_iam_proto_msgTypes[3] + mi := &file_api_v1_iam_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -222,7 +222,7 @@ func (x *NamespaceGroupConfig) String() string { func (*NamespaceGroupConfig) ProtoMessage() {} func (x *NamespaceGroupConfig) ProtoReflect() protoreflect.Message { - mi := &file_v1_iam_proto_msgTypes[3] + mi := &file_api_v1_iam_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -235,7 +235,7 @@ func (x *NamespaceGroupConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use NamespaceGroupConfig.ProtoReflect.Descriptor instead. func (*NamespaceGroupConfig) Descriptor() ([]byte, []int) { - return file_v1_iam_proto_rawDescGZIP(), []int{3} + return file_api_v1_iam_proto_rawDescGZIP(), []int{3} } func (x *NamespaceGroupConfig) GetExcludedNamespaces() string { @@ -298,7 +298,7 @@ type ConnectorConfig struct { func (x *ConnectorConfig) Reset() { *x = ConnectorConfig{} - mi := &file_v1_iam_proto_msgTypes[4] + mi := &file_api_v1_iam_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -310,7 +310,7 @@ func (x *ConnectorConfig) String() string { func (*ConnectorConfig) ProtoMessage() {} func (x *ConnectorConfig) ProtoReflect() protoreflect.Message { - mi := &file_v1_iam_proto_msgTypes[4] + mi := &file_api_v1_iam_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -323,7 +323,7 @@ func (x *ConnectorConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use ConnectorConfig.ProtoReflect.Descriptor instead. func (*ConnectorConfig) Descriptor() ([]byte, []int) { - return file_v1_iam_proto_rawDescGZIP(), []int{4} + return file_api_v1_iam_proto_rawDescGZIP(), []int{4} } func (x *ConnectorConfig) GetIdmApiUrl() string { @@ -431,22 +431,22 @@ func (x *ConnectorConfig) GetIdmReqEmail() string { return "" } -var File_v1_iam_proto protoreflect.FileDescriptor +var File_api_v1_iam_proto protoreflect.FileDescriptor -const file_v1_iam_proto_rawDesc = "" + +const file_api_v1_iam_proto_rawDesc = "" + "\n" + - "\fv1/iam.proto\x12\x02v1\"\xad\x01\n" + - "\tIAMConfig\x125\n" + - "\rissuer_config\x18\x01 \x01(\v2\x10.v1.IssuerConfigR\fissuerConfig\x12,\n" + + "\x10api/v1/iam.proto\x12\x06api.v1\"\xb9\x01\n" + + "\tIAMConfig\x129\n" + + "\rissuer_config\x18\x01 \x01(\v2\x14.api.v1.IssuerConfigR\fissuerConfig\x120\n" + "\n" + - "idm_config\x18\x02 \x01(\v2\r.v1.IDMConfigR\tidmConfig\x12;\n" + - "\fgroup_config\x18\x03 \x01(\v2\x18.v1.NamespaceGroupConfigR\vgroupConfig\"=\n" + + "idm_config\x18\x02 \x01(\v2\x11.api.v1.IDMConfigR\tidmConfig\x12?\n" + + "\fgroup_config\x18\x03 \x01(\v2\x1c.api.v1.NamespaceGroupConfigR\vgroupConfig\"=\n" + "\fIssuerConfig\x12\x10\n" + "\x03url\x18\x01 \x01(\tR\x03url\x12\x1b\n" + - "\tclient_id\x18\x02 \x01(\tR\bclientId\"f\n" + + "\tclient_id\x18\x02 \x01(\tR\bclientId\"j\n" + "\tIDMConfig\x12\x19\n" + - "\bidm_type\x18\x01 \x01(\tR\aidmType\x12>\n" + - "\x10connector_config\x18\x02 \x01(\v2\x13.v1.ConnectorConfigR\x0fconnectorConfig\"\xa5\x02\n" + + "\bidm_type\x18\x01 \x01(\tR\aidmType\x12B\n" + + "\x10connector_config\x18\x02 \x01(\v2\x17.api.v1.ConnectorConfigR\x0fconnectorConfig\"\xa5\x02\n" + "\x14NamespaceGroupConfig\x12/\n" + "\x13excluded_namespaces\x18\x01 \x01(\tR\x12excludedNamespaces\x120\n" + "\x14expected_groups_list\x18\x02 \x01(\tR\x12expectedGroupsList\x120\n" + @@ -474,34 +474,35 @@ const file_v1_iam_proto_rawDesc = "" + "\fidm_req_user\x18\x0e \x01(\tR\n" + "idmReqUser\x12\"\n" + "\ridm_req_email\x18\x0f \x01(\tR\vidmReqEmailB\x19\n" + - "\x17_idm_groupname_templateBd\n" + - "\x06com.v1B\bIamProtoP\x01Z(github.com/metal-stack/masterdata-api/v1\xa2\x02\x03VXX\xaa\x02\x02V1\xca\x02\x02V1\xe2\x02\x0eV1\\GPBMetadata\xea\x02\x02V1b\x06proto3" + "\x17_idm_groupname_templateB\x83\x01\n" + + "\n" + + "com.api.v1B\bIamProtoP\x01Z2github.com/metal-stack/masterdata-api/api/v1;apiv1\xa2\x02\x03AXX\xaa\x02\x06Api.V1\xca\x02\x06Api\\V1\xe2\x02\x12Api\\V1\\GPBMetadata\xea\x02\aApi::V1b\x06proto3" var ( - file_v1_iam_proto_rawDescOnce sync.Once - file_v1_iam_proto_rawDescData []byte + file_api_v1_iam_proto_rawDescOnce sync.Once + file_api_v1_iam_proto_rawDescData []byte ) -func file_v1_iam_proto_rawDescGZIP() []byte { - file_v1_iam_proto_rawDescOnce.Do(func() { - file_v1_iam_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_v1_iam_proto_rawDesc), len(file_v1_iam_proto_rawDesc))) +func file_api_v1_iam_proto_rawDescGZIP() []byte { + file_api_v1_iam_proto_rawDescOnce.Do(func() { + file_api_v1_iam_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_api_v1_iam_proto_rawDesc), len(file_api_v1_iam_proto_rawDesc))) }) - return file_v1_iam_proto_rawDescData -} - -var file_v1_iam_proto_msgTypes = make([]protoimpl.MessageInfo, 5) -var file_v1_iam_proto_goTypes = []any{ - (*IAMConfig)(nil), // 0: v1.IAMConfig - (*IssuerConfig)(nil), // 1: v1.IssuerConfig - (*IDMConfig)(nil), // 2: v1.IDMConfig - (*NamespaceGroupConfig)(nil), // 3: v1.NamespaceGroupConfig - (*ConnectorConfig)(nil), // 4: v1.ConnectorConfig -} -var file_v1_iam_proto_depIdxs = []int32{ - 1, // 0: v1.IAMConfig.issuer_config:type_name -> v1.IssuerConfig - 2, // 1: v1.IAMConfig.idm_config:type_name -> v1.IDMConfig - 3, // 2: v1.IAMConfig.group_config:type_name -> v1.NamespaceGroupConfig - 4, // 3: v1.IDMConfig.connector_config:type_name -> v1.ConnectorConfig + return file_api_v1_iam_proto_rawDescData +} + +var file_api_v1_iam_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_api_v1_iam_proto_goTypes = []any{ + (*IAMConfig)(nil), // 0: api.v1.IAMConfig + (*IssuerConfig)(nil), // 1: api.v1.IssuerConfig + (*IDMConfig)(nil), // 2: api.v1.IDMConfig + (*NamespaceGroupConfig)(nil), // 3: api.v1.NamespaceGroupConfig + (*ConnectorConfig)(nil), // 4: api.v1.ConnectorConfig +} +var file_api_v1_iam_proto_depIdxs = []int32{ + 1, // 0: api.v1.IAMConfig.issuer_config:type_name -> api.v1.IssuerConfig + 2, // 1: api.v1.IAMConfig.idm_config:type_name -> api.v1.IDMConfig + 3, // 2: api.v1.IAMConfig.group_config:type_name -> api.v1.NamespaceGroupConfig + 4, // 3: api.v1.IDMConfig.connector_config:type_name -> api.v1.ConnectorConfig 4, // [4:4] is the sub-list for method output_type 4, // [4:4] is the sub-list for method input_type 4, // [4:4] is the sub-list for extension type_name @@ -509,27 +510,27 @@ var file_v1_iam_proto_depIdxs = []int32{ 0, // [0:4] is the sub-list for field type_name } -func init() { file_v1_iam_proto_init() } -func file_v1_iam_proto_init() { - if File_v1_iam_proto != nil { +func init() { file_api_v1_iam_proto_init() } +func file_api_v1_iam_proto_init() { + if File_api_v1_iam_proto != nil { return } - file_v1_iam_proto_msgTypes[4].OneofWrappers = []any{} + file_api_v1_iam_proto_msgTypes[4].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_v1_iam_proto_rawDesc), len(file_v1_iam_proto_rawDesc)), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_api_v1_iam_proto_rawDesc), len(file_api_v1_iam_proto_rawDesc)), NumEnums: 0, NumMessages: 5, NumExtensions: 0, NumServices: 0, }, - GoTypes: file_v1_iam_proto_goTypes, - DependencyIndexes: file_v1_iam_proto_depIdxs, - MessageInfos: file_v1_iam_proto_msgTypes, + GoTypes: file_api_v1_iam_proto_goTypes, + DependencyIndexes: file_api_v1_iam_proto_depIdxs, + MessageInfos: file_api_v1_iam_proto_msgTypes, }.Build() - File_v1_iam_proto = out.File - file_v1_iam_proto_goTypes = nil - file_v1_iam_proto_depIdxs = nil + File_api_v1_iam_proto = out.File + file_api_v1_iam_proto_goTypes = nil + file_api_v1_iam_proto_depIdxs = nil } diff --git a/api/v1/meta.go b/api/v1/meta.go index 0ac8e72..c0bd313 100644 --- a/api/v1/meta.go +++ b/api/v1/meta.go @@ -1,4 +1,4 @@ -package v1 +package apiv1 import ( jsoniter "github.com/json-iterator/go" diff --git a/api/v1/meta.pb.go b/api/v1/meta.pb.go index 438a43c..cfcbe39 100644 --- a/api/v1/meta.pb.go +++ b/api/v1/meta.pb.go @@ -2,9 +2,9 @@ // versions: // protoc-gen-go v1.36.6 // protoc (unknown) -// source: v1/meta.proto +// source: api/v1/meta.proto -package v1 +package apiv1 import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -38,7 +38,7 @@ type Meta struct { func (x *Meta) Reset() { *x = Meta{} - mi := &file_v1_meta_proto_msgTypes[0] + mi := &file_api_v1_meta_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -50,7 +50,7 @@ func (x *Meta) String() string { func (*Meta) ProtoMessage() {} func (x *Meta) ProtoReflect() protoreflect.Message { - mi := &file_v1_meta_proto_msgTypes[0] + mi := &file_api_v1_meta_proto_msgTypes[0] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -63,7 +63,7 @@ func (x *Meta) ProtoReflect() protoreflect.Message { // Deprecated: Use Meta.ProtoReflect.Descriptor instead. func (*Meta) Descriptor() ([]byte, []int) { - return file_v1_meta_proto_rawDescGZIP(), []int{0} + return file_api_v1_meta_proto_rawDescGZIP(), []int{0} } func (x *Meta) GetId() string { @@ -122,11 +122,11 @@ func (x *Meta) GetLabels() []string { return nil } -var File_v1_meta_proto protoreflect.FileDescriptor +var File_api_v1_meta_proto protoreflect.FileDescriptor -const file_v1_meta_proto_rawDesc = "" + +const file_api_v1_meta_proto_rawDesc = "" + "\n" + - "\rv1/meta.proto\x12\x02v1\x1a\x1fgoogle/protobuf/timestamp.proto\"\xf7\x02\n" + + "\x11api/v1/meta.proto\x12\x06api.v1\x1a\x1fgoogle/protobuf/timestamp.proto\"\xfb\x02\n" + "\x04Meta\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + "\x04kind\x18\x02 \x01(\tR\x04kind\x12\x1e\n" + @@ -135,36 +135,37 @@ const file_v1_meta_proto_rawDesc = "" + "apiversion\x12\x18\n" + "\aversion\x18\x04 \x01(\x03R\aversion\x12=\n" + "\fcreated_time\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\vcreatedTime\x12=\n" + - "\fupdated_time\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\vupdatedTime\x12;\n" + - "\vannotations\x18\a \x03(\v2\x19.v1.Meta.AnnotationsEntryR\vannotations\x12\x16\n" + + "\fupdated_time\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\vupdatedTime\x12?\n" + + "\vannotations\x18\a \x03(\v2\x1d.api.v1.Meta.AnnotationsEntryR\vannotations\x12\x16\n" + "\x06labels\x18\b \x03(\tR\x06labels\x1a>\n" + "\x10AnnotationsEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01Be\n" + - "\x06com.v1B\tMetaProtoP\x01Z(github.com/metal-stack/masterdata-api/v1\xa2\x02\x03VXX\xaa\x02\x02V1\xca\x02\x02V1\xe2\x02\x0eV1\\GPBMetadata\xea\x02\x02V1b\x06proto3" + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\x84\x01\n" + + "\n" + + "com.api.v1B\tMetaProtoP\x01Z2github.com/metal-stack/masterdata-api/api/v1;apiv1\xa2\x02\x03AXX\xaa\x02\x06Api.V1\xca\x02\x06Api\\V1\xe2\x02\x12Api\\V1\\GPBMetadata\xea\x02\aApi::V1b\x06proto3" var ( - file_v1_meta_proto_rawDescOnce sync.Once - file_v1_meta_proto_rawDescData []byte + file_api_v1_meta_proto_rawDescOnce sync.Once + file_api_v1_meta_proto_rawDescData []byte ) -func file_v1_meta_proto_rawDescGZIP() []byte { - file_v1_meta_proto_rawDescOnce.Do(func() { - file_v1_meta_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_v1_meta_proto_rawDesc), len(file_v1_meta_proto_rawDesc))) +func file_api_v1_meta_proto_rawDescGZIP() []byte { + file_api_v1_meta_proto_rawDescOnce.Do(func() { + file_api_v1_meta_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_api_v1_meta_proto_rawDesc), len(file_api_v1_meta_proto_rawDesc))) }) - return file_v1_meta_proto_rawDescData + return file_api_v1_meta_proto_rawDescData } -var file_v1_meta_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_v1_meta_proto_goTypes = []any{ - (*Meta)(nil), // 0: v1.Meta - nil, // 1: v1.Meta.AnnotationsEntry +var file_api_v1_meta_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_api_v1_meta_proto_goTypes = []any{ + (*Meta)(nil), // 0: api.v1.Meta + nil, // 1: api.v1.Meta.AnnotationsEntry (*timestamppb.Timestamp)(nil), // 2: google.protobuf.Timestamp } -var file_v1_meta_proto_depIdxs = []int32{ - 2, // 0: v1.Meta.created_time:type_name -> google.protobuf.Timestamp - 2, // 1: v1.Meta.updated_time:type_name -> google.protobuf.Timestamp - 1, // 2: v1.Meta.annotations:type_name -> v1.Meta.AnnotationsEntry +var file_api_v1_meta_proto_depIdxs = []int32{ + 2, // 0: api.v1.Meta.created_time:type_name -> google.protobuf.Timestamp + 2, // 1: api.v1.Meta.updated_time:type_name -> google.protobuf.Timestamp + 1, // 2: api.v1.Meta.annotations:type_name -> api.v1.Meta.AnnotationsEntry 3, // [3:3] is the sub-list for method output_type 3, // [3:3] is the sub-list for method input_type 3, // [3:3] is the sub-list for extension type_name @@ -172,26 +173,26 @@ var file_v1_meta_proto_depIdxs = []int32{ 0, // [0:3] is the sub-list for field type_name } -func init() { file_v1_meta_proto_init() } -func file_v1_meta_proto_init() { - if File_v1_meta_proto != nil { +func init() { file_api_v1_meta_proto_init() } +func file_api_v1_meta_proto_init() { + if File_api_v1_meta_proto != nil { return } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_v1_meta_proto_rawDesc), len(file_v1_meta_proto_rawDesc)), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_api_v1_meta_proto_rawDesc), len(file_api_v1_meta_proto_rawDesc)), NumEnums: 0, NumMessages: 2, NumExtensions: 0, NumServices: 0, }, - GoTypes: file_v1_meta_proto_goTypes, - DependencyIndexes: file_v1_meta_proto_depIdxs, - MessageInfos: file_v1_meta_proto_msgTypes, + GoTypes: file_api_v1_meta_proto_goTypes, + DependencyIndexes: file_api_v1_meta_proto_depIdxs, + MessageInfos: file_api_v1_meta_proto_msgTypes, }.Build() - File_v1_meta_proto = out.File - file_v1_meta_proto_goTypes = nil - file_v1_meta_proto_depIdxs = nil + File_api_v1_meta_proto = out.File + file_api_v1_meta_proto_goTypes = nil + file_api_v1_meta_proto_depIdxs = nil } diff --git a/api/v1/mocks/ProjectMemberServiceClient.go b/api/v1/mocks/ProjectMemberServiceClient.go deleted file mode 100644 index 80fd8f2..0000000 --- a/api/v1/mocks/ProjectMemberServiceClient.go +++ /dev/null @@ -1,217 +0,0 @@ -// Code generated by mockery v2.53.3. DO NOT EDIT. - -package mocks - -import ( - context "context" - - grpc "google.golang.org/grpc" - - mock "github.com/stretchr/testify/mock" - - v1 "github.com/metal-stack/masterdata-api/api/v1" -) - -// ProjectMemberServiceClient is an autogenerated mock type for the ProjectMemberServiceClient type -type ProjectMemberServiceClient struct { - mock.Mock -} - -// Create provides a mock function with given fields: ctx, in, opts -func (_m *ProjectMemberServiceClient) Create(ctx context.Context, in *v1.ProjectMemberCreateRequest, opts ...grpc.CallOption) (*v1.ProjectMemberResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for Create") - } - - var r0 *v1.ProjectMemberResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectMemberCreateRequest, ...grpc.CallOption) (*v1.ProjectMemberResponse, error)); ok { - return rf(ctx, in, opts...) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectMemberCreateRequest, ...grpc.CallOption) *v1.ProjectMemberResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.ProjectMemberResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.ProjectMemberCreateRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Delete provides a mock function with given fields: ctx, in, opts -func (_m *ProjectMemberServiceClient) Delete(ctx context.Context, in *v1.ProjectMemberDeleteRequest, opts ...grpc.CallOption) (*v1.ProjectMemberResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for Delete") - } - - var r0 *v1.ProjectMemberResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectMemberDeleteRequest, ...grpc.CallOption) (*v1.ProjectMemberResponse, error)); ok { - return rf(ctx, in, opts...) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectMemberDeleteRequest, ...grpc.CallOption) *v1.ProjectMemberResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.ProjectMemberResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.ProjectMemberDeleteRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Find provides a mock function with given fields: ctx, in, opts -func (_m *ProjectMemberServiceClient) Find(ctx context.Context, in *v1.ProjectMemberFindRequest, opts ...grpc.CallOption) (*v1.ProjectMemberListResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for Find") - } - - var r0 *v1.ProjectMemberListResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectMemberFindRequest, ...grpc.CallOption) (*v1.ProjectMemberListResponse, error)); ok { - return rf(ctx, in, opts...) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectMemberFindRequest, ...grpc.CallOption) *v1.ProjectMemberListResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.ProjectMemberListResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.ProjectMemberFindRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Get provides a mock function with given fields: ctx, in, opts -func (_m *ProjectMemberServiceClient) Get(ctx context.Context, in *v1.ProjectMemberGetRequest, opts ...grpc.CallOption) (*v1.ProjectMemberResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for Get") - } - - var r0 *v1.ProjectMemberResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectMemberGetRequest, ...grpc.CallOption) (*v1.ProjectMemberResponse, error)); ok { - return rf(ctx, in, opts...) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectMemberGetRequest, ...grpc.CallOption) *v1.ProjectMemberResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.ProjectMemberResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.ProjectMemberGetRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Update provides a mock function with given fields: ctx, in, opts -func (_m *ProjectMemberServiceClient) Update(ctx context.Context, in *v1.ProjectMemberUpdateRequest, opts ...grpc.CallOption) (*v1.ProjectMemberResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for Update") - } - - var r0 *v1.ProjectMemberResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectMemberUpdateRequest, ...grpc.CallOption) (*v1.ProjectMemberResponse, error)); ok { - return rf(ctx, in, opts...) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectMemberUpdateRequest, ...grpc.CallOption) *v1.ProjectMemberResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.ProjectMemberResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.ProjectMemberUpdateRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// NewProjectMemberServiceClient creates a new instance of ProjectMemberServiceClient. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. -// The first argument is typically a *testing.T value. -func NewProjectMemberServiceClient(t interface { - mock.TestingT - Cleanup(func()) -}) *ProjectMemberServiceClient { - mock := &ProjectMemberServiceClient{} - mock.Mock.Test(t) - - t.Cleanup(func() { mock.AssertExpectations(t) }) - - return mock -} diff --git a/api/v1/mocks/ProjectMemberServiceServer.go b/api/v1/mocks/ProjectMemberServiceServer.go deleted file mode 100644 index ee957f0..0000000 --- a/api/v1/mocks/ProjectMemberServiceServer.go +++ /dev/null @@ -1,179 +0,0 @@ -// Code generated by mockery v2.53.3. DO NOT EDIT. - -package mocks - -import ( - context "context" - - v1 "github.com/metal-stack/masterdata-api/api/v1" - mock "github.com/stretchr/testify/mock" -) - -// ProjectMemberServiceServer is an autogenerated mock type for the ProjectMemberServiceServer type -type ProjectMemberServiceServer struct { - mock.Mock -} - -// Create provides a mock function with given fields: _a0, _a1 -func (_m *ProjectMemberServiceServer) Create(_a0 context.Context, _a1 *v1.ProjectMemberCreateRequest) (*v1.ProjectMemberResponse, error) { - ret := _m.Called(_a0, _a1) - - if len(ret) == 0 { - panic("no return value specified for Create") - } - - var r0 *v1.ProjectMemberResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectMemberCreateRequest) (*v1.ProjectMemberResponse, error)); ok { - return rf(_a0, _a1) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectMemberCreateRequest) *v1.ProjectMemberResponse); ok { - r0 = rf(_a0, _a1) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.ProjectMemberResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.ProjectMemberCreateRequest) error); ok { - r1 = rf(_a0, _a1) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Delete provides a mock function with given fields: _a0, _a1 -func (_m *ProjectMemberServiceServer) Delete(_a0 context.Context, _a1 *v1.ProjectMemberDeleteRequest) (*v1.ProjectMemberResponse, error) { - ret := _m.Called(_a0, _a1) - - if len(ret) == 0 { - panic("no return value specified for Delete") - } - - var r0 *v1.ProjectMemberResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectMemberDeleteRequest) (*v1.ProjectMemberResponse, error)); ok { - return rf(_a0, _a1) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectMemberDeleteRequest) *v1.ProjectMemberResponse); ok { - r0 = rf(_a0, _a1) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.ProjectMemberResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.ProjectMemberDeleteRequest) error); ok { - r1 = rf(_a0, _a1) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Find provides a mock function with given fields: _a0, _a1 -func (_m *ProjectMemberServiceServer) Find(_a0 context.Context, _a1 *v1.ProjectMemberFindRequest) (*v1.ProjectMemberListResponse, error) { - ret := _m.Called(_a0, _a1) - - if len(ret) == 0 { - panic("no return value specified for Find") - } - - var r0 *v1.ProjectMemberListResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectMemberFindRequest) (*v1.ProjectMemberListResponse, error)); ok { - return rf(_a0, _a1) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectMemberFindRequest) *v1.ProjectMemberListResponse); ok { - r0 = rf(_a0, _a1) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.ProjectMemberListResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.ProjectMemberFindRequest) error); ok { - r1 = rf(_a0, _a1) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Get provides a mock function with given fields: _a0, _a1 -func (_m *ProjectMemberServiceServer) Get(_a0 context.Context, _a1 *v1.ProjectMemberGetRequest) (*v1.ProjectMemberResponse, error) { - ret := _m.Called(_a0, _a1) - - if len(ret) == 0 { - panic("no return value specified for Get") - } - - var r0 *v1.ProjectMemberResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectMemberGetRequest) (*v1.ProjectMemberResponse, error)); ok { - return rf(_a0, _a1) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectMemberGetRequest) *v1.ProjectMemberResponse); ok { - r0 = rf(_a0, _a1) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.ProjectMemberResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.ProjectMemberGetRequest) error); ok { - r1 = rf(_a0, _a1) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Update provides a mock function with given fields: _a0, _a1 -func (_m *ProjectMemberServiceServer) Update(_a0 context.Context, _a1 *v1.ProjectMemberUpdateRequest) (*v1.ProjectMemberResponse, error) { - ret := _m.Called(_a0, _a1) - - if len(ret) == 0 { - panic("no return value specified for Update") - } - - var r0 *v1.ProjectMemberResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectMemberUpdateRequest) (*v1.ProjectMemberResponse, error)); ok { - return rf(_a0, _a1) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectMemberUpdateRequest) *v1.ProjectMemberResponse); ok { - r0 = rf(_a0, _a1) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.ProjectMemberResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.ProjectMemberUpdateRequest) error); ok { - r1 = rf(_a0, _a1) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// NewProjectMemberServiceServer creates a new instance of ProjectMemberServiceServer. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. -// The first argument is typically a *testing.T value. -func NewProjectMemberServiceServer(t interface { - mock.TestingT - Cleanup(func()) -}) *ProjectMemberServiceServer { - mock := &ProjectMemberServiceServer{} - mock.Mock.Test(t) - - t.Cleanup(func() { mock.AssertExpectations(t) }) - - return mock -} diff --git a/api/v1/mocks/ProjectServiceClient.go b/api/v1/mocks/ProjectServiceClient.go deleted file mode 100644 index 9a78f89..0000000 --- a/api/v1/mocks/ProjectServiceClient.go +++ /dev/null @@ -1,254 +0,0 @@ -// Code generated by mockery v2.53.3. DO NOT EDIT. - -package mocks - -import ( - context "context" - - grpc "google.golang.org/grpc" - - mock "github.com/stretchr/testify/mock" - - v1 "github.com/metal-stack/masterdata-api/api/v1" -) - -// ProjectServiceClient is an autogenerated mock type for the ProjectServiceClient type -type ProjectServiceClient struct { - mock.Mock -} - -// Create provides a mock function with given fields: ctx, in, opts -func (_m *ProjectServiceClient) Create(ctx context.Context, in *v1.ProjectCreateRequest, opts ...grpc.CallOption) (*v1.ProjectResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for Create") - } - - var r0 *v1.ProjectResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectCreateRequest, ...grpc.CallOption) (*v1.ProjectResponse, error)); ok { - return rf(ctx, in, opts...) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectCreateRequest, ...grpc.CallOption) *v1.ProjectResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.ProjectResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.ProjectCreateRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Delete provides a mock function with given fields: ctx, in, opts -func (_m *ProjectServiceClient) Delete(ctx context.Context, in *v1.ProjectDeleteRequest, opts ...grpc.CallOption) (*v1.ProjectResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for Delete") - } - - var r0 *v1.ProjectResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectDeleteRequest, ...grpc.CallOption) (*v1.ProjectResponse, error)); ok { - return rf(ctx, in, opts...) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectDeleteRequest, ...grpc.CallOption) *v1.ProjectResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.ProjectResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.ProjectDeleteRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Find provides a mock function with given fields: ctx, in, opts -func (_m *ProjectServiceClient) Find(ctx context.Context, in *v1.ProjectFindRequest, opts ...grpc.CallOption) (*v1.ProjectListResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for Find") - } - - var r0 *v1.ProjectListResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectFindRequest, ...grpc.CallOption) (*v1.ProjectListResponse, error)); ok { - return rf(ctx, in, opts...) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectFindRequest, ...grpc.CallOption) *v1.ProjectListResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.ProjectListResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.ProjectFindRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Get provides a mock function with given fields: ctx, in, opts -func (_m *ProjectServiceClient) Get(ctx context.Context, in *v1.ProjectGetRequest, opts ...grpc.CallOption) (*v1.ProjectResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for Get") - } - - var r0 *v1.ProjectResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectGetRequest, ...grpc.CallOption) (*v1.ProjectResponse, error)); ok { - return rf(ctx, in, opts...) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectGetRequest, ...grpc.CallOption) *v1.ProjectResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.ProjectResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.ProjectGetRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// GetHistory provides a mock function with given fields: ctx, in, opts -func (_m *ProjectServiceClient) GetHistory(ctx context.Context, in *v1.ProjectGetHistoryRequest, opts ...grpc.CallOption) (*v1.ProjectResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for GetHistory") - } - - var r0 *v1.ProjectResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectGetHistoryRequest, ...grpc.CallOption) (*v1.ProjectResponse, error)); ok { - return rf(ctx, in, opts...) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectGetHistoryRequest, ...grpc.CallOption) *v1.ProjectResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.ProjectResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.ProjectGetHistoryRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Update provides a mock function with given fields: ctx, in, opts -func (_m *ProjectServiceClient) Update(ctx context.Context, in *v1.ProjectUpdateRequest, opts ...grpc.CallOption) (*v1.ProjectResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for Update") - } - - var r0 *v1.ProjectResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectUpdateRequest, ...grpc.CallOption) (*v1.ProjectResponse, error)); ok { - return rf(ctx, in, opts...) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectUpdateRequest, ...grpc.CallOption) *v1.ProjectResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.ProjectResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.ProjectUpdateRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// NewProjectServiceClient creates a new instance of ProjectServiceClient. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. -// The first argument is typically a *testing.T value. -func NewProjectServiceClient(t interface { - mock.TestingT - Cleanup(func()) -}) *ProjectServiceClient { - mock := &ProjectServiceClient{} - mock.Mock.Test(t) - - t.Cleanup(func() { mock.AssertExpectations(t) }) - - return mock -} diff --git a/api/v1/mocks/ProjectServiceServer.go b/api/v1/mocks/ProjectServiceServer.go deleted file mode 100644 index 5ef99a2..0000000 --- a/api/v1/mocks/ProjectServiceServer.go +++ /dev/null @@ -1,209 +0,0 @@ -// Code generated by mockery v2.53.3. DO NOT EDIT. - -package mocks - -import ( - context "context" - - v1 "github.com/metal-stack/masterdata-api/api/v1" - mock "github.com/stretchr/testify/mock" -) - -// ProjectServiceServer is an autogenerated mock type for the ProjectServiceServer type -type ProjectServiceServer struct { - mock.Mock -} - -// Create provides a mock function with given fields: _a0, _a1 -func (_m *ProjectServiceServer) Create(_a0 context.Context, _a1 *v1.ProjectCreateRequest) (*v1.ProjectResponse, error) { - ret := _m.Called(_a0, _a1) - - if len(ret) == 0 { - panic("no return value specified for Create") - } - - var r0 *v1.ProjectResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectCreateRequest) (*v1.ProjectResponse, error)); ok { - return rf(_a0, _a1) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectCreateRequest) *v1.ProjectResponse); ok { - r0 = rf(_a0, _a1) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.ProjectResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.ProjectCreateRequest) error); ok { - r1 = rf(_a0, _a1) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Delete provides a mock function with given fields: _a0, _a1 -func (_m *ProjectServiceServer) Delete(_a0 context.Context, _a1 *v1.ProjectDeleteRequest) (*v1.ProjectResponse, error) { - ret := _m.Called(_a0, _a1) - - if len(ret) == 0 { - panic("no return value specified for Delete") - } - - var r0 *v1.ProjectResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectDeleteRequest) (*v1.ProjectResponse, error)); ok { - return rf(_a0, _a1) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectDeleteRequest) *v1.ProjectResponse); ok { - r0 = rf(_a0, _a1) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.ProjectResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.ProjectDeleteRequest) error); ok { - r1 = rf(_a0, _a1) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Find provides a mock function with given fields: _a0, _a1 -func (_m *ProjectServiceServer) Find(_a0 context.Context, _a1 *v1.ProjectFindRequest) (*v1.ProjectListResponse, error) { - ret := _m.Called(_a0, _a1) - - if len(ret) == 0 { - panic("no return value specified for Find") - } - - var r0 *v1.ProjectListResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectFindRequest) (*v1.ProjectListResponse, error)); ok { - return rf(_a0, _a1) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectFindRequest) *v1.ProjectListResponse); ok { - r0 = rf(_a0, _a1) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.ProjectListResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.ProjectFindRequest) error); ok { - r1 = rf(_a0, _a1) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Get provides a mock function with given fields: _a0, _a1 -func (_m *ProjectServiceServer) Get(_a0 context.Context, _a1 *v1.ProjectGetRequest) (*v1.ProjectResponse, error) { - ret := _m.Called(_a0, _a1) - - if len(ret) == 0 { - panic("no return value specified for Get") - } - - var r0 *v1.ProjectResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectGetRequest) (*v1.ProjectResponse, error)); ok { - return rf(_a0, _a1) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectGetRequest) *v1.ProjectResponse); ok { - r0 = rf(_a0, _a1) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.ProjectResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.ProjectGetRequest) error); ok { - r1 = rf(_a0, _a1) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// GetHistory provides a mock function with given fields: _a0, _a1 -func (_m *ProjectServiceServer) GetHistory(_a0 context.Context, _a1 *v1.ProjectGetHistoryRequest) (*v1.ProjectResponse, error) { - ret := _m.Called(_a0, _a1) - - if len(ret) == 0 { - panic("no return value specified for GetHistory") - } - - var r0 *v1.ProjectResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectGetHistoryRequest) (*v1.ProjectResponse, error)); ok { - return rf(_a0, _a1) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectGetHistoryRequest) *v1.ProjectResponse); ok { - r0 = rf(_a0, _a1) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.ProjectResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.ProjectGetHistoryRequest) error); ok { - r1 = rf(_a0, _a1) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Update provides a mock function with given fields: _a0, _a1 -func (_m *ProjectServiceServer) Update(_a0 context.Context, _a1 *v1.ProjectUpdateRequest) (*v1.ProjectResponse, error) { - ret := _m.Called(_a0, _a1) - - if len(ret) == 0 { - panic("no return value specified for Update") - } - - var r0 *v1.ProjectResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectUpdateRequest) (*v1.ProjectResponse, error)); ok { - return rf(_a0, _a1) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.ProjectUpdateRequest) *v1.ProjectResponse); ok { - r0 = rf(_a0, _a1) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.ProjectResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.ProjectUpdateRequest) error); ok { - r1 = rf(_a0, _a1) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// NewProjectServiceServer creates a new instance of ProjectServiceServer. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. -// The first argument is typically a *testing.T value. -func NewProjectServiceServer(t interface { - mock.TestingT - Cleanup(func()) -}) *ProjectServiceServer { - mock := &ProjectServiceServer{} - mock.Mock.Test(t) - - t.Cleanup(func() { mock.AssertExpectations(t) }) - - return mock -} diff --git a/api/v1/mocks/TenantMemberServiceClient.go b/api/v1/mocks/TenantMemberServiceClient.go deleted file mode 100644 index 3124332..0000000 --- a/api/v1/mocks/TenantMemberServiceClient.go +++ /dev/null @@ -1,217 +0,0 @@ -// Code generated by mockery v2.53.3. DO NOT EDIT. - -package mocks - -import ( - context "context" - - grpc "google.golang.org/grpc" - - mock "github.com/stretchr/testify/mock" - - v1 "github.com/metal-stack/masterdata-api/api/v1" -) - -// TenantMemberServiceClient is an autogenerated mock type for the TenantMemberServiceClient type -type TenantMemberServiceClient struct { - mock.Mock -} - -// Create provides a mock function with given fields: ctx, in, opts -func (_m *TenantMemberServiceClient) Create(ctx context.Context, in *v1.TenantMemberCreateRequest, opts ...grpc.CallOption) (*v1.TenantMemberResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for Create") - } - - var r0 *v1.TenantMemberResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantMemberCreateRequest, ...grpc.CallOption) (*v1.TenantMemberResponse, error)); ok { - return rf(ctx, in, opts...) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantMemberCreateRequest, ...grpc.CallOption) *v1.TenantMemberResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.TenantMemberResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.TenantMemberCreateRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Delete provides a mock function with given fields: ctx, in, opts -func (_m *TenantMemberServiceClient) Delete(ctx context.Context, in *v1.TenantMemberDeleteRequest, opts ...grpc.CallOption) (*v1.TenantMemberResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for Delete") - } - - var r0 *v1.TenantMemberResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantMemberDeleteRequest, ...grpc.CallOption) (*v1.TenantMemberResponse, error)); ok { - return rf(ctx, in, opts...) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantMemberDeleteRequest, ...grpc.CallOption) *v1.TenantMemberResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.TenantMemberResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.TenantMemberDeleteRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Find provides a mock function with given fields: ctx, in, opts -func (_m *TenantMemberServiceClient) Find(ctx context.Context, in *v1.TenantMemberFindRequest, opts ...grpc.CallOption) (*v1.TenantMemberListResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for Find") - } - - var r0 *v1.TenantMemberListResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantMemberFindRequest, ...grpc.CallOption) (*v1.TenantMemberListResponse, error)); ok { - return rf(ctx, in, opts...) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantMemberFindRequest, ...grpc.CallOption) *v1.TenantMemberListResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.TenantMemberListResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.TenantMemberFindRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Get provides a mock function with given fields: ctx, in, opts -func (_m *TenantMemberServiceClient) Get(ctx context.Context, in *v1.TenantMemberGetRequest, opts ...grpc.CallOption) (*v1.TenantMemberResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for Get") - } - - var r0 *v1.TenantMemberResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantMemberGetRequest, ...grpc.CallOption) (*v1.TenantMemberResponse, error)); ok { - return rf(ctx, in, opts...) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantMemberGetRequest, ...grpc.CallOption) *v1.TenantMemberResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.TenantMemberResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.TenantMemberGetRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Update provides a mock function with given fields: ctx, in, opts -func (_m *TenantMemberServiceClient) Update(ctx context.Context, in *v1.TenantMemberUpdateRequest, opts ...grpc.CallOption) (*v1.TenantMemberResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for Update") - } - - var r0 *v1.TenantMemberResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantMemberUpdateRequest, ...grpc.CallOption) (*v1.TenantMemberResponse, error)); ok { - return rf(ctx, in, opts...) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantMemberUpdateRequest, ...grpc.CallOption) *v1.TenantMemberResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.TenantMemberResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.TenantMemberUpdateRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// NewTenantMemberServiceClient creates a new instance of TenantMemberServiceClient. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. -// The first argument is typically a *testing.T value. -func NewTenantMemberServiceClient(t interface { - mock.TestingT - Cleanup(func()) -}) *TenantMemberServiceClient { - mock := &TenantMemberServiceClient{} - mock.Mock.Test(t) - - t.Cleanup(func() { mock.AssertExpectations(t) }) - - return mock -} diff --git a/api/v1/mocks/TenantMemberServiceServer.go b/api/v1/mocks/TenantMemberServiceServer.go deleted file mode 100644 index bc1a66e..0000000 --- a/api/v1/mocks/TenantMemberServiceServer.go +++ /dev/null @@ -1,179 +0,0 @@ -// Code generated by mockery v2.53.3. DO NOT EDIT. - -package mocks - -import ( - context "context" - - v1 "github.com/metal-stack/masterdata-api/api/v1" - mock "github.com/stretchr/testify/mock" -) - -// TenantMemberServiceServer is an autogenerated mock type for the TenantMemberServiceServer type -type TenantMemberServiceServer struct { - mock.Mock -} - -// Create provides a mock function with given fields: _a0, _a1 -func (_m *TenantMemberServiceServer) Create(_a0 context.Context, _a1 *v1.TenantMemberCreateRequest) (*v1.TenantMemberResponse, error) { - ret := _m.Called(_a0, _a1) - - if len(ret) == 0 { - panic("no return value specified for Create") - } - - var r0 *v1.TenantMemberResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantMemberCreateRequest) (*v1.TenantMemberResponse, error)); ok { - return rf(_a0, _a1) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantMemberCreateRequest) *v1.TenantMemberResponse); ok { - r0 = rf(_a0, _a1) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.TenantMemberResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.TenantMemberCreateRequest) error); ok { - r1 = rf(_a0, _a1) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Delete provides a mock function with given fields: _a0, _a1 -func (_m *TenantMemberServiceServer) Delete(_a0 context.Context, _a1 *v1.TenantMemberDeleteRequest) (*v1.TenantMemberResponse, error) { - ret := _m.Called(_a0, _a1) - - if len(ret) == 0 { - panic("no return value specified for Delete") - } - - var r0 *v1.TenantMemberResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantMemberDeleteRequest) (*v1.TenantMemberResponse, error)); ok { - return rf(_a0, _a1) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantMemberDeleteRequest) *v1.TenantMemberResponse); ok { - r0 = rf(_a0, _a1) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.TenantMemberResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.TenantMemberDeleteRequest) error); ok { - r1 = rf(_a0, _a1) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Find provides a mock function with given fields: _a0, _a1 -func (_m *TenantMemberServiceServer) Find(_a0 context.Context, _a1 *v1.TenantMemberFindRequest) (*v1.TenantMemberListResponse, error) { - ret := _m.Called(_a0, _a1) - - if len(ret) == 0 { - panic("no return value specified for Find") - } - - var r0 *v1.TenantMemberListResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantMemberFindRequest) (*v1.TenantMemberListResponse, error)); ok { - return rf(_a0, _a1) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantMemberFindRequest) *v1.TenantMemberListResponse); ok { - r0 = rf(_a0, _a1) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.TenantMemberListResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.TenantMemberFindRequest) error); ok { - r1 = rf(_a0, _a1) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Get provides a mock function with given fields: _a0, _a1 -func (_m *TenantMemberServiceServer) Get(_a0 context.Context, _a1 *v1.TenantMemberGetRequest) (*v1.TenantMemberResponse, error) { - ret := _m.Called(_a0, _a1) - - if len(ret) == 0 { - panic("no return value specified for Get") - } - - var r0 *v1.TenantMemberResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantMemberGetRequest) (*v1.TenantMemberResponse, error)); ok { - return rf(_a0, _a1) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantMemberGetRequest) *v1.TenantMemberResponse); ok { - r0 = rf(_a0, _a1) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.TenantMemberResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.TenantMemberGetRequest) error); ok { - r1 = rf(_a0, _a1) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Update provides a mock function with given fields: _a0, _a1 -func (_m *TenantMemberServiceServer) Update(_a0 context.Context, _a1 *v1.TenantMemberUpdateRequest) (*v1.TenantMemberResponse, error) { - ret := _m.Called(_a0, _a1) - - if len(ret) == 0 { - panic("no return value specified for Update") - } - - var r0 *v1.TenantMemberResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantMemberUpdateRequest) (*v1.TenantMemberResponse, error)); ok { - return rf(_a0, _a1) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantMemberUpdateRequest) *v1.TenantMemberResponse); ok { - r0 = rf(_a0, _a1) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.TenantMemberResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.TenantMemberUpdateRequest) error); ok { - r1 = rf(_a0, _a1) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// NewTenantMemberServiceServer creates a new instance of TenantMemberServiceServer. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. -// The first argument is typically a *testing.T value. -func NewTenantMemberServiceServer(t interface { - mock.TestingT - Cleanup(func()) -}) *TenantMemberServiceServer { - mock := &TenantMemberServiceServer{} - mock.Mock.Test(t) - - t.Cleanup(func() { mock.AssertExpectations(t) }) - - return mock -} diff --git a/api/v1/mocks/TenantServiceClient.go b/api/v1/mocks/TenantServiceClient.go deleted file mode 100644 index 7077107..0000000 --- a/api/v1/mocks/TenantServiceClient.go +++ /dev/null @@ -1,365 +0,0 @@ -// Code generated by mockery v2.53.3. DO NOT EDIT. - -package mocks - -import ( - context "context" - - grpc "google.golang.org/grpc" - - mock "github.com/stretchr/testify/mock" - - v1 "github.com/metal-stack/masterdata-api/api/v1" -) - -// TenantServiceClient is an autogenerated mock type for the TenantServiceClient type -type TenantServiceClient struct { - mock.Mock -} - -// Create provides a mock function with given fields: ctx, in, opts -func (_m *TenantServiceClient) Create(ctx context.Context, in *v1.TenantCreateRequest, opts ...grpc.CallOption) (*v1.TenantResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for Create") - } - - var r0 *v1.TenantResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantCreateRequest, ...grpc.CallOption) (*v1.TenantResponse, error)); ok { - return rf(ctx, in, opts...) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantCreateRequest, ...grpc.CallOption) *v1.TenantResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.TenantResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.TenantCreateRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Delete provides a mock function with given fields: ctx, in, opts -func (_m *TenantServiceClient) Delete(ctx context.Context, in *v1.TenantDeleteRequest, opts ...grpc.CallOption) (*v1.TenantResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for Delete") - } - - var r0 *v1.TenantResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantDeleteRequest, ...grpc.CallOption) (*v1.TenantResponse, error)); ok { - return rf(ctx, in, opts...) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantDeleteRequest, ...grpc.CallOption) *v1.TenantResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.TenantResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.TenantDeleteRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Find provides a mock function with given fields: ctx, in, opts -func (_m *TenantServiceClient) Find(ctx context.Context, in *v1.TenantFindRequest, opts ...grpc.CallOption) (*v1.TenantListResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for Find") - } - - var r0 *v1.TenantListResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantFindRequest, ...grpc.CallOption) (*v1.TenantListResponse, error)); ok { - return rf(ctx, in, opts...) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantFindRequest, ...grpc.CallOption) *v1.TenantListResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.TenantListResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.TenantFindRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// FindParticipatingProjects provides a mock function with given fields: ctx, in, opts -func (_m *TenantServiceClient) FindParticipatingProjects(ctx context.Context, in *v1.FindParticipatingProjectsRequest, opts ...grpc.CallOption) (*v1.FindParticipatingProjectsResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for FindParticipatingProjects") - } - - var r0 *v1.FindParticipatingProjectsResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.FindParticipatingProjectsRequest, ...grpc.CallOption) (*v1.FindParticipatingProjectsResponse, error)); ok { - return rf(ctx, in, opts...) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.FindParticipatingProjectsRequest, ...grpc.CallOption) *v1.FindParticipatingProjectsResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.FindParticipatingProjectsResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.FindParticipatingProjectsRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// FindParticipatingTenants provides a mock function with given fields: ctx, in, opts -func (_m *TenantServiceClient) FindParticipatingTenants(ctx context.Context, in *v1.FindParticipatingTenantsRequest, opts ...grpc.CallOption) (*v1.FindParticipatingTenantsResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for FindParticipatingTenants") - } - - var r0 *v1.FindParticipatingTenantsResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.FindParticipatingTenantsRequest, ...grpc.CallOption) (*v1.FindParticipatingTenantsResponse, error)); ok { - return rf(ctx, in, opts...) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.FindParticipatingTenantsRequest, ...grpc.CallOption) *v1.FindParticipatingTenantsResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.FindParticipatingTenantsResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.FindParticipatingTenantsRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Get provides a mock function with given fields: ctx, in, opts -func (_m *TenantServiceClient) Get(ctx context.Context, in *v1.TenantGetRequest, opts ...grpc.CallOption) (*v1.TenantResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for Get") - } - - var r0 *v1.TenantResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantGetRequest, ...grpc.CallOption) (*v1.TenantResponse, error)); ok { - return rf(ctx, in, opts...) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantGetRequest, ...grpc.CallOption) *v1.TenantResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.TenantResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.TenantGetRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// GetHistory provides a mock function with given fields: ctx, in, opts -func (_m *TenantServiceClient) GetHistory(ctx context.Context, in *v1.TenantGetHistoryRequest, opts ...grpc.CallOption) (*v1.TenantResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for GetHistory") - } - - var r0 *v1.TenantResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantGetHistoryRequest, ...grpc.CallOption) (*v1.TenantResponse, error)); ok { - return rf(ctx, in, opts...) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantGetHistoryRequest, ...grpc.CallOption) *v1.TenantResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.TenantResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.TenantGetHistoryRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// ListTenantMembers provides a mock function with given fields: ctx, in, opts -func (_m *TenantServiceClient) ListTenantMembers(ctx context.Context, in *v1.ListTenantMembersRequest, opts ...grpc.CallOption) (*v1.ListTenantMembersResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for ListTenantMembers") - } - - var r0 *v1.ListTenantMembersResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.ListTenantMembersRequest, ...grpc.CallOption) (*v1.ListTenantMembersResponse, error)); ok { - return rf(ctx, in, opts...) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.ListTenantMembersRequest, ...grpc.CallOption) *v1.ListTenantMembersResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.ListTenantMembersResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.ListTenantMembersRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Update provides a mock function with given fields: ctx, in, opts -func (_m *TenantServiceClient) Update(ctx context.Context, in *v1.TenantUpdateRequest, opts ...grpc.CallOption) (*v1.TenantResponse, error) { - _va := make([]interface{}, len(opts)) - for _i := range opts { - _va[_i] = opts[_i] - } - var _ca []interface{} - _ca = append(_ca, ctx, in) - _ca = append(_ca, _va...) - ret := _m.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for Update") - } - - var r0 *v1.TenantResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantUpdateRequest, ...grpc.CallOption) (*v1.TenantResponse, error)); ok { - return rf(ctx, in, opts...) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantUpdateRequest, ...grpc.CallOption) *v1.TenantResponse); ok { - r0 = rf(ctx, in, opts...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.TenantResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.TenantUpdateRequest, ...grpc.CallOption) error); ok { - r1 = rf(ctx, in, opts...) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// NewTenantServiceClient creates a new instance of TenantServiceClient. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. -// The first argument is typically a *testing.T value. -func NewTenantServiceClient(t interface { - mock.TestingT - Cleanup(func()) -}) *TenantServiceClient { - mock := &TenantServiceClient{} - mock.Mock.Test(t) - - t.Cleanup(func() { mock.AssertExpectations(t) }) - - return mock -} diff --git a/api/v1/mocks/TenantServiceServer.go b/api/v1/mocks/TenantServiceServer.go deleted file mode 100644 index 58fd03f..0000000 --- a/api/v1/mocks/TenantServiceServer.go +++ /dev/null @@ -1,299 +0,0 @@ -// Code generated by mockery v2.53.3. DO NOT EDIT. - -package mocks - -import ( - context "context" - - v1 "github.com/metal-stack/masterdata-api/api/v1" - mock "github.com/stretchr/testify/mock" -) - -// TenantServiceServer is an autogenerated mock type for the TenantServiceServer type -type TenantServiceServer struct { - mock.Mock -} - -// Create provides a mock function with given fields: _a0, _a1 -func (_m *TenantServiceServer) Create(_a0 context.Context, _a1 *v1.TenantCreateRequest) (*v1.TenantResponse, error) { - ret := _m.Called(_a0, _a1) - - if len(ret) == 0 { - panic("no return value specified for Create") - } - - var r0 *v1.TenantResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantCreateRequest) (*v1.TenantResponse, error)); ok { - return rf(_a0, _a1) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantCreateRequest) *v1.TenantResponse); ok { - r0 = rf(_a0, _a1) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.TenantResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.TenantCreateRequest) error); ok { - r1 = rf(_a0, _a1) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Delete provides a mock function with given fields: _a0, _a1 -func (_m *TenantServiceServer) Delete(_a0 context.Context, _a1 *v1.TenantDeleteRequest) (*v1.TenantResponse, error) { - ret := _m.Called(_a0, _a1) - - if len(ret) == 0 { - panic("no return value specified for Delete") - } - - var r0 *v1.TenantResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantDeleteRequest) (*v1.TenantResponse, error)); ok { - return rf(_a0, _a1) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantDeleteRequest) *v1.TenantResponse); ok { - r0 = rf(_a0, _a1) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.TenantResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.TenantDeleteRequest) error); ok { - r1 = rf(_a0, _a1) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Find provides a mock function with given fields: _a0, _a1 -func (_m *TenantServiceServer) Find(_a0 context.Context, _a1 *v1.TenantFindRequest) (*v1.TenantListResponse, error) { - ret := _m.Called(_a0, _a1) - - if len(ret) == 0 { - panic("no return value specified for Find") - } - - var r0 *v1.TenantListResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantFindRequest) (*v1.TenantListResponse, error)); ok { - return rf(_a0, _a1) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantFindRequest) *v1.TenantListResponse); ok { - r0 = rf(_a0, _a1) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.TenantListResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.TenantFindRequest) error); ok { - r1 = rf(_a0, _a1) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// FindParticipatingProjects provides a mock function with given fields: _a0, _a1 -func (_m *TenantServiceServer) FindParticipatingProjects(_a0 context.Context, _a1 *v1.FindParticipatingProjectsRequest) (*v1.FindParticipatingProjectsResponse, error) { - ret := _m.Called(_a0, _a1) - - if len(ret) == 0 { - panic("no return value specified for FindParticipatingProjects") - } - - var r0 *v1.FindParticipatingProjectsResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.FindParticipatingProjectsRequest) (*v1.FindParticipatingProjectsResponse, error)); ok { - return rf(_a0, _a1) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.FindParticipatingProjectsRequest) *v1.FindParticipatingProjectsResponse); ok { - r0 = rf(_a0, _a1) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.FindParticipatingProjectsResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.FindParticipatingProjectsRequest) error); ok { - r1 = rf(_a0, _a1) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// FindParticipatingTenants provides a mock function with given fields: _a0, _a1 -func (_m *TenantServiceServer) FindParticipatingTenants(_a0 context.Context, _a1 *v1.FindParticipatingTenantsRequest) (*v1.FindParticipatingTenantsResponse, error) { - ret := _m.Called(_a0, _a1) - - if len(ret) == 0 { - panic("no return value specified for FindParticipatingTenants") - } - - var r0 *v1.FindParticipatingTenantsResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.FindParticipatingTenantsRequest) (*v1.FindParticipatingTenantsResponse, error)); ok { - return rf(_a0, _a1) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.FindParticipatingTenantsRequest) *v1.FindParticipatingTenantsResponse); ok { - r0 = rf(_a0, _a1) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.FindParticipatingTenantsResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.FindParticipatingTenantsRequest) error); ok { - r1 = rf(_a0, _a1) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Get provides a mock function with given fields: _a0, _a1 -func (_m *TenantServiceServer) Get(_a0 context.Context, _a1 *v1.TenantGetRequest) (*v1.TenantResponse, error) { - ret := _m.Called(_a0, _a1) - - if len(ret) == 0 { - panic("no return value specified for Get") - } - - var r0 *v1.TenantResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantGetRequest) (*v1.TenantResponse, error)); ok { - return rf(_a0, _a1) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantGetRequest) *v1.TenantResponse); ok { - r0 = rf(_a0, _a1) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.TenantResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.TenantGetRequest) error); ok { - r1 = rf(_a0, _a1) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// GetHistory provides a mock function with given fields: _a0, _a1 -func (_m *TenantServiceServer) GetHistory(_a0 context.Context, _a1 *v1.TenantGetHistoryRequest) (*v1.TenantResponse, error) { - ret := _m.Called(_a0, _a1) - - if len(ret) == 0 { - panic("no return value specified for GetHistory") - } - - var r0 *v1.TenantResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantGetHistoryRequest) (*v1.TenantResponse, error)); ok { - return rf(_a0, _a1) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantGetHistoryRequest) *v1.TenantResponse); ok { - r0 = rf(_a0, _a1) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.TenantResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.TenantGetHistoryRequest) error); ok { - r1 = rf(_a0, _a1) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// ListTenantMembers provides a mock function with given fields: _a0, _a1 -func (_m *TenantServiceServer) ListTenantMembers(_a0 context.Context, _a1 *v1.ListTenantMembersRequest) (*v1.ListTenantMembersResponse, error) { - ret := _m.Called(_a0, _a1) - - if len(ret) == 0 { - panic("no return value specified for ListTenantMembers") - } - - var r0 *v1.ListTenantMembersResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.ListTenantMembersRequest) (*v1.ListTenantMembersResponse, error)); ok { - return rf(_a0, _a1) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.ListTenantMembersRequest) *v1.ListTenantMembersResponse); ok { - r0 = rf(_a0, _a1) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.ListTenantMembersResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.ListTenantMembersRequest) error); ok { - r1 = rf(_a0, _a1) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Update provides a mock function with given fields: _a0, _a1 -func (_m *TenantServiceServer) Update(_a0 context.Context, _a1 *v1.TenantUpdateRequest) (*v1.TenantResponse, error) { - ret := _m.Called(_a0, _a1) - - if len(ret) == 0 { - panic("no return value specified for Update") - } - - var r0 *v1.TenantResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantUpdateRequest) (*v1.TenantResponse, error)); ok { - return rf(_a0, _a1) - } - if rf, ok := ret.Get(0).(func(context.Context, *v1.TenantUpdateRequest) *v1.TenantResponse); ok { - r0 = rf(_a0, _a1) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.TenantResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, *v1.TenantUpdateRequest) error); ok { - r1 = rf(_a0, _a1) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// NewTenantServiceServer creates a new instance of TenantServiceServer. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. -// The first argument is typically a *testing.T value. -func NewTenantServiceServer(t interface { - mock.TestingT - Cleanup(func()) -}) *TenantServiceServer { - mock := &TenantServiceServer{} - mock.Mock.Test(t) - - t.Cleanup(func() { mock.AssertExpectations(t) }) - - return mock -} diff --git a/api/v1/mocks/UnsafeProjectMemberServiceServer.go b/api/v1/mocks/UnsafeProjectMemberServiceServer.go deleted file mode 100644 index 36166e4..0000000 --- a/api/v1/mocks/UnsafeProjectMemberServiceServer.go +++ /dev/null @@ -1,29 +0,0 @@ -// Code generated by mockery v2.53.3. DO NOT EDIT. - -package mocks - -import mock "github.com/stretchr/testify/mock" - -// UnsafeProjectMemberServiceServer is an autogenerated mock type for the UnsafeProjectMemberServiceServer type -type UnsafeProjectMemberServiceServer struct { - mock.Mock -} - -// mustEmbedUnimplementedProjectMemberServiceServer provides a mock function with no fields -func (_m *UnsafeProjectMemberServiceServer) mustEmbedUnimplementedProjectMemberServiceServer() { - _m.Called() -} - -// NewUnsafeProjectMemberServiceServer creates a new instance of UnsafeProjectMemberServiceServer. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. -// The first argument is typically a *testing.T value. -func NewUnsafeProjectMemberServiceServer(t interface { - mock.TestingT - Cleanup(func()) -}) *UnsafeProjectMemberServiceServer { - mock := &UnsafeProjectMemberServiceServer{} - mock.Mock.Test(t) - - t.Cleanup(func() { mock.AssertExpectations(t) }) - - return mock -} diff --git a/api/v1/mocks/UnsafeProjectServiceServer.go b/api/v1/mocks/UnsafeProjectServiceServer.go deleted file mode 100644 index 2a0cbc1..0000000 --- a/api/v1/mocks/UnsafeProjectServiceServer.go +++ /dev/null @@ -1,29 +0,0 @@ -// Code generated by mockery v2.53.3. DO NOT EDIT. - -package mocks - -import mock "github.com/stretchr/testify/mock" - -// UnsafeProjectServiceServer is an autogenerated mock type for the UnsafeProjectServiceServer type -type UnsafeProjectServiceServer struct { - mock.Mock -} - -// mustEmbedUnimplementedProjectServiceServer provides a mock function with no fields -func (_m *UnsafeProjectServiceServer) mustEmbedUnimplementedProjectServiceServer() { - _m.Called() -} - -// NewUnsafeProjectServiceServer creates a new instance of UnsafeProjectServiceServer. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. -// The first argument is typically a *testing.T value. -func NewUnsafeProjectServiceServer(t interface { - mock.TestingT - Cleanup(func()) -}) *UnsafeProjectServiceServer { - mock := &UnsafeProjectServiceServer{} - mock.Mock.Test(t) - - t.Cleanup(func() { mock.AssertExpectations(t) }) - - return mock -} diff --git a/api/v1/mocks/UnsafeTenantMemberServiceServer.go b/api/v1/mocks/UnsafeTenantMemberServiceServer.go deleted file mode 100644 index 659befc..0000000 --- a/api/v1/mocks/UnsafeTenantMemberServiceServer.go +++ /dev/null @@ -1,29 +0,0 @@ -// Code generated by mockery v2.53.3. DO NOT EDIT. - -package mocks - -import mock "github.com/stretchr/testify/mock" - -// UnsafeTenantMemberServiceServer is an autogenerated mock type for the UnsafeTenantMemberServiceServer type -type UnsafeTenantMemberServiceServer struct { - mock.Mock -} - -// mustEmbedUnimplementedTenantMemberServiceServer provides a mock function with no fields -func (_m *UnsafeTenantMemberServiceServer) mustEmbedUnimplementedTenantMemberServiceServer() { - _m.Called() -} - -// NewUnsafeTenantMemberServiceServer creates a new instance of UnsafeTenantMemberServiceServer. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. -// The first argument is typically a *testing.T value. -func NewUnsafeTenantMemberServiceServer(t interface { - mock.TestingT - Cleanup(func()) -}) *UnsafeTenantMemberServiceServer { - mock := &UnsafeTenantMemberServiceServer{} - mock.Mock.Test(t) - - t.Cleanup(func() { mock.AssertExpectations(t) }) - - return mock -} diff --git a/api/v1/mocks/UnsafeTenantServiceServer.go b/api/v1/mocks/UnsafeTenantServiceServer.go deleted file mode 100644 index bf89457..0000000 --- a/api/v1/mocks/UnsafeTenantServiceServer.go +++ /dev/null @@ -1,29 +0,0 @@ -// Code generated by mockery v2.53.3. DO NOT EDIT. - -package mocks - -import mock "github.com/stretchr/testify/mock" - -// UnsafeTenantServiceServer is an autogenerated mock type for the UnsafeTenantServiceServer type -type UnsafeTenantServiceServer struct { - mock.Mock -} - -// mustEmbedUnimplementedTenantServiceServer provides a mock function with no fields -func (_m *UnsafeTenantServiceServer) mustEmbedUnimplementedTenantServiceServer() { - _m.Called() -} - -// NewUnsafeTenantServiceServer creates a new instance of UnsafeTenantServiceServer. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. -// The first argument is typically a *testing.T value. -func NewUnsafeTenantServiceServer(t interface { - mock.TestingT - Cleanup(func()) -}) *UnsafeTenantServiceServer { - mock := &UnsafeTenantServiceServer{} - mock.Mock.Test(t) - - t.Cleanup(func() { mock.AssertExpectations(t) }) - - return mock -} diff --git a/api/v1/mocks/apiv1connect/ProjectMemberServiceClient.go b/api/v1/mocks/apiv1connect/ProjectMemberServiceClient.go new file mode 100644 index 0000000..c2a77d4 --- /dev/null +++ b/api/v1/mocks/apiv1connect/ProjectMemberServiceClient.go @@ -0,0 +1,182 @@ +// Code generated by mockery v2.53.3. DO NOT EDIT. + +package mocks + +import ( + apiv1 "github.com/metal-stack/masterdata-api/api/v1" + + connect "connectrpc.com/connect" + + context "context" + + mock "github.com/stretchr/testify/mock" +) + +// ProjectMemberServiceClient is an autogenerated mock type for the ProjectMemberServiceClient type +type ProjectMemberServiceClient struct { + mock.Mock +} + +// Create provides a mock function with given fields: _a0, _a1 +func (_m *ProjectMemberServiceClient) Create(_a0 context.Context, _a1 *connect.Request[apiv1.ProjectMemberCreateRequest]) (*connect.Response[apiv1.ProjectMemberResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Create") + } + + var r0 *connect.Response[apiv1.ProjectMemberResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectMemberCreateRequest]) (*connect.Response[apiv1.ProjectMemberResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectMemberCreateRequest]) *connect.Response[apiv1.ProjectMemberResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.ProjectMemberResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.ProjectMemberCreateRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Delete provides a mock function with given fields: _a0, _a1 +func (_m *ProjectMemberServiceClient) Delete(_a0 context.Context, _a1 *connect.Request[apiv1.ProjectMemberDeleteRequest]) (*connect.Response[apiv1.ProjectMemberResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Delete") + } + + var r0 *connect.Response[apiv1.ProjectMemberResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectMemberDeleteRequest]) (*connect.Response[apiv1.ProjectMemberResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectMemberDeleteRequest]) *connect.Response[apiv1.ProjectMemberResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.ProjectMemberResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.ProjectMemberDeleteRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Find provides a mock function with given fields: _a0, _a1 +func (_m *ProjectMemberServiceClient) Find(_a0 context.Context, _a1 *connect.Request[apiv1.ProjectMemberFindRequest]) (*connect.Response[apiv1.ProjectMemberListResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Find") + } + + var r0 *connect.Response[apiv1.ProjectMemberListResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectMemberFindRequest]) (*connect.Response[apiv1.ProjectMemberListResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectMemberFindRequest]) *connect.Response[apiv1.ProjectMemberListResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.ProjectMemberListResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.ProjectMemberFindRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Get provides a mock function with given fields: _a0, _a1 +func (_m *ProjectMemberServiceClient) Get(_a0 context.Context, _a1 *connect.Request[apiv1.ProjectMemberGetRequest]) (*connect.Response[apiv1.ProjectMemberResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Get") + } + + var r0 *connect.Response[apiv1.ProjectMemberResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectMemberGetRequest]) (*connect.Response[apiv1.ProjectMemberResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectMemberGetRequest]) *connect.Response[apiv1.ProjectMemberResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.ProjectMemberResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.ProjectMemberGetRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Update provides a mock function with given fields: _a0, _a1 +func (_m *ProjectMemberServiceClient) Update(_a0 context.Context, _a1 *connect.Request[apiv1.ProjectMemberUpdateRequest]) (*connect.Response[apiv1.ProjectMemberResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Update") + } + + var r0 *connect.Response[apiv1.ProjectMemberResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectMemberUpdateRequest]) (*connect.Response[apiv1.ProjectMemberResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectMemberUpdateRequest]) *connect.Response[apiv1.ProjectMemberResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.ProjectMemberResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.ProjectMemberUpdateRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// NewProjectMemberServiceClient creates a new instance of ProjectMemberServiceClient. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewProjectMemberServiceClient(t interface { + mock.TestingT + Cleanup(func()) +}) *ProjectMemberServiceClient { + mock := &ProjectMemberServiceClient{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/api/v1/mocks/apiv1connect/ProjectMemberServiceHandler.go b/api/v1/mocks/apiv1connect/ProjectMemberServiceHandler.go new file mode 100644 index 0000000..4a1e61e --- /dev/null +++ b/api/v1/mocks/apiv1connect/ProjectMemberServiceHandler.go @@ -0,0 +1,182 @@ +// Code generated by mockery v2.53.3. DO NOT EDIT. + +package mocks + +import ( + apiv1 "github.com/metal-stack/masterdata-api/api/v1" + + connect "connectrpc.com/connect" + + context "context" + + mock "github.com/stretchr/testify/mock" +) + +// ProjectMemberServiceHandler is an autogenerated mock type for the ProjectMemberServiceHandler type +type ProjectMemberServiceHandler struct { + mock.Mock +} + +// Create provides a mock function with given fields: _a0, _a1 +func (_m *ProjectMemberServiceHandler) Create(_a0 context.Context, _a1 *connect.Request[apiv1.ProjectMemberCreateRequest]) (*connect.Response[apiv1.ProjectMemberResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Create") + } + + var r0 *connect.Response[apiv1.ProjectMemberResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectMemberCreateRequest]) (*connect.Response[apiv1.ProjectMemberResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectMemberCreateRequest]) *connect.Response[apiv1.ProjectMemberResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.ProjectMemberResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.ProjectMemberCreateRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Delete provides a mock function with given fields: _a0, _a1 +func (_m *ProjectMemberServiceHandler) Delete(_a0 context.Context, _a1 *connect.Request[apiv1.ProjectMemberDeleteRequest]) (*connect.Response[apiv1.ProjectMemberResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Delete") + } + + var r0 *connect.Response[apiv1.ProjectMemberResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectMemberDeleteRequest]) (*connect.Response[apiv1.ProjectMemberResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectMemberDeleteRequest]) *connect.Response[apiv1.ProjectMemberResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.ProjectMemberResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.ProjectMemberDeleteRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Find provides a mock function with given fields: _a0, _a1 +func (_m *ProjectMemberServiceHandler) Find(_a0 context.Context, _a1 *connect.Request[apiv1.ProjectMemberFindRequest]) (*connect.Response[apiv1.ProjectMemberListResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Find") + } + + var r0 *connect.Response[apiv1.ProjectMemberListResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectMemberFindRequest]) (*connect.Response[apiv1.ProjectMemberListResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectMemberFindRequest]) *connect.Response[apiv1.ProjectMemberListResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.ProjectMemberListResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.ProjectMemberFindRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Get provides a mock function with given fields: _a0, _a1 +func (_m *ProjectMemberServiceHandler) Get(_a0 context.Context, _a1 *connect.Request[apiv1.ProjectMemberGetRequest]) (*connect.Response[apiv1.ProjectMemberResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Get") + } + + var r0 *connect.Response[apiv1.ProjectMemberResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectMemberGetRequest]) (*connect.Response[apiv1.ProjectMemberResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectMemberGetRequest]) *connect.Response[apiv1.ProjectMemberResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.ProjectMemberResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.ProjectMemberGetRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Update provides a mock function with given fields: _a0, _a1 +func (_m *ProjectMemberServiceHandler) Update(_a0 context.Context, _a1 *connect.Request[apiv1.ProjectMemberUpdateRequest]) (*connect.Response[apiv1.ProjectMemberResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Update") + } + + var r0 *connect.Response[apiv1.ProjectMemberResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectMemberUpdateRequest]) (*connect.Response[apiv1.ProjectMemberResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectMemberUpdateRequest]) *connect.Response[apiv1.ProjectMemberResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.ProjectMemberResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.ProjectMemberUpdateRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// NewProjectMemberServiceHandler creates a new instance of ProjectMemberServiceHandler. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewProjectMemberServiceHandler(t interface { + mock.TestingT + Cleanup(func()) +}) *ProjectMemberServiceHandler { + mock := &ProjectMemberServiceHandler{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/api/v1/mocks/apiv1connect/ProjectServiceClient.go b/api/v1/mocks/apiv1connect/ProjectServiceClient.go new file mode 100644 index 0000000..0dc920c --- /dev/null +++ b/api/v1/mocks/apiv1connect/ProjectServiceClient.go @@ -0,0 +1,212 @@ +// Code generated by mockery v2.53.3. DO NOT EDIT. + +package mocks + +import ( + apiv1 "github.com/metal-stack/masterdata-api/api/v1" + + connect "connectrpc.com/connect" + + context "context" + + mock "github.com/stretchr/testify/mock" +) + +// ProjectServiceClient is an autogenerated mock type for the ProjectServiceClient type +type ProjectServiceClient struct { + mock.Mock +} + +// Create provides a mock function with given fields: _a0, _a1 +func (_m *ProjectServiceClient) Create(_a0 context.Context, _a1 *connect.Request[apiv1.ProjectCreateRequest]) (*connect.Response[apiv1.ProjectResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Create") + } + + var r0 *connect.Response[apiv1.ProjectResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectCreateRequest]) (*connect.Response[apiv1.ProjectResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectCreateRequest]) *connect.Response[apiv1.ProjectResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.ProjectResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.ProjectCreateRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Delete provides a mock function with given fields: _a0, _a1 +func (_m *ProjectServiceClient) Delete(_a0 context.Context, _a1 *connect.Request[apiv1.ProjectDeleteRequest]) (*connect.Response[apiv1.ProjectResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Delete") + } + + var r0 *connect.Response[apiv1.ProjectResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectDeleteRequest]) (*connect.Response[apiv1.ProjectResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectDeleteRequest]) *connect.Response[apiv1.ProjectResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.ProjectResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.ProjectDeleteRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Find provides a mock function with given fields: _a0, _a1 +func (_m *ProjectServiceClient) Find(_a0 context.Context, _a1 *connect.Request[apiv1.ProjectFindRequest]) (*connect.Response[apiv1.ProjectListResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Find") + } + + var r0 *connect.Response[apiv1.ProjectListResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectFindRequest]) (*connect.Response[apiv1.ProjectListResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectFindRequest]) *connect.Response[apiv1.ProjectListResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.ProjectListResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.ProjectFindRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Get provides a mock function with given fields: _a0, _a1 +func (_m *ProjectServiceClient) Get(_a0 context.Context, _a1 *connect.Request[apiv1.ProjectGetRequest]) (*connect.Response[apiv1.ProjectResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Get") + } + + var r0 *connect.Response[apiv1.ProjectResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectGetRequest]) (*connect.Response[apiv1.ProjectResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectGetRequest]) *connect.Response[apiv1.ProjectResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.ProjectResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.ProjectGetRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetHistory provides a mock function with given fields: _a0, _a1 +func (_m *ProjectServiceClient) GetHistory(_a0 context.Context, _a1 *connect.Request[apiv1.ProjectGetHistoryRequest]) (*connect.Response[apiv1.ProjectResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for GetHistory") + } + + var r0 *connect.Response[apiv1.ProjectResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectGetHistoryRequest]) (*connect.Response[apiv1.ProjectResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectGetHistoryRequest]) *connect.Response[apiv1.ProjectResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.ProjectResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.ProjectGetHistoryRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Update provides a mock function with given fields: _a0, _a1 +func (_m *ProjectServiceClient) Update(_a0 context.Context, _a1 *connect.Request[apiv1.ProjectUpdateRequest]) (*connect.Response[apiv1.ProjectResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Update") + } + + var r0 *connect.Response[apiv1.ProjectResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectUpdateRequest]) (*connect.Response[apiv1.ProjectResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectUpdateRequest]) *connect.Response[apiv1.ProjectResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.ProjectResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.ProjectUpdateRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// NewProjectServiceClient creates a new instance of ProjectServiceClient. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewProjectServiceClient(t interface { + mock.TestingT + Cleanup(func()) +}) *ProjectServiceClient { + mock := &ProjectServiceClient{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/api/v1/mocks/apiv1connect/ProjectServiceHandler.go b/api/v1/mocks/apiv1connect/ProjectServiceHandler.go new file mode 100644 index 0000000..e6cd03b --- /dev/null +++ b/api/v1/mocks/apiv1connect/ProjectServiceHandler.go @@ -0,0 +1,212 @@ +// Code generated by mockery v2.53.3. DO NOT EDIT. + +package mocks + +import ( + apiv1 "github.com/metal-stack/masterdata-api/api/v1" + + connect "connectrpc.com/connect" + + context "context" + + mock "github.com/stretchr/testify/mock" +) + +// ProjectServiceHandler is an autogenerated mock type for the ProjectServiceHandler type +type ProjectServiceHandler struct { + mock.Mock +} + +// Create provides a mock function with given fields: _a0, _a1 +func (_m *ProjectServiceHandler) Create(_a0 context.Context, _a1 *connect.Request[apiv1.ProjectCreateRequest]) (*connect.Response[apiv1.ProjectResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Create") + } + + var r0 *connect.Response[apiv1.ProjectResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectCreateRequest]) (*connect.Response[apiv1.ProjectResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectCreateRequest]) *connect.Response[apiv1.ProjectResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.ProjectResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.ProjectCreateRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Delete provides a mock function with given fields: _a0, _a1 +func (_m *ProjectServiceHandler) Delete(_a0 context.Context, _a1 *connect.Request[apiv1.ProjectDeleteRequest]) (*connect.Response[apiv1.ProjectResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Delete") + } + + var r0 *connect.Response[apiv1.ProjectResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectDeleteRequest]) (*connect.Response[apiv1.ProjectResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectDeleteRequest]) *connect.Response[apiv1.ProjectResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.ProjectResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.ProjectDeleteRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Find provides a mock function with given fields: _a0, _a1 +func (_m *ProjectServiceHandler) Find(_a0 context.Context, _a1 *connect.Request[apiv1.ProjectFindRequest]) (*connect.Response[apiv1.ProjectListResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Find") + } + + var r0 *connect.Response[apiv1.ProjectListResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectFindRequest]) (*connect.Response[apiv1.ProjectListResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectFindRequest]) *connect.Response[apiv1.ProjectListResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.ProjectListResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.ProjectFindRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Get provides a mock function with given fields: _a0, _a1 +func (_m *ProjectServiceHandler) Get(_a0 context.Context, _a1 *connect.Request[apiv1.ProjectGetRequest]) (*connect.Response[apiv1.ProjectResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Get") + } + + var r0 *connect.Response[apiv1.ProjectResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectGetRequest]) (*connect.Response[apiv1.ProjectResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectGetRequest]) *connect.Response[apiv1.ProjectResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.ProjectResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.ProjectGetRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetHistory provides a mock function with given fields: _a0, _a1 +func (_m *ProjectServiceHandler) GetHistory(_a0 context.Context, _a1 *connect.Request[apiv1.ProjectGetHistoryRequest]) (*connect.Response[apiv1.ProjectResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for GetHistory") + } + + var r0 *connect.Response[apiv1.ProjectResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectGetHistoryRequest]) (*connect.Response[apiv1.ProjectResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectGetHistoryRequest]) *connect.Response[apiv1.ProjectResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.ProjectResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.ProjectGetHistoryRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Update provides a mock function with given fields: _a0, _a1 +func (_m *ProjectServiceHandler) Update(_a0 context.Context, _a1 *connect.Request[apiv1.ProjectUpdateRequest]) (*connect.Response[apiv1.ProjectResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Update") + } + + var r0 *connect.Response[apiv1.ProjectResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectUpdateRequest]) (*connect.Response[apiv1.ProjectResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ProjectUpdateRequest]) *connect.Response[apiv1.ProjectResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.ProjectResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.ProjectUpdateRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// NewProjectServiceHandler creates a new instance of ProjectServiceHandler. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewProjectServiceHandler(t interface { + mock.TestingT + Cleanup(func()) +}) *ProjectServiceHandler { + mock := &ProjectServiceHandler{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/api/v1/mocks/apiv1connect/TenantMemberServiceClient.go b/api/v1/mocks/apiv1connect/TenantMemberServiceClient.go new file mode 100644 index 0000000..d7035df --- /dev/null +++ b/api/v1/mocks/apiv1connect/TenantMemberServiceClient.go @@ -0,0 +1,182 @@ +// Code generated by mockery v2.53.3. DO NOT EDIT. + +package mocks + +import ( + apiv1 "github.com/metal-stack/masterdata-api/api/v1" + + connect "connectrpc.com/connect" + + context "context" + + mock "github.com/stretchr/testify/mock" +) + +// TenantMemberServiceClient is an autogenerated mock type for the TenantMemberServiceClient type +type TenantMemberServiceClient struct { + mock.Mock +} + +// Create provides a mock function with given fields: _a0, _a1 +func (_m *TenantMemberServiceClient) Create(_a0 context.Context, _a1 *connect.Request[apiv1.TenantMemberCreateRequest]) (*connect.Response[apiv1.TenantMemberResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Create") + } + + var r0 *connect.Response[apiv1.TenantMemberResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantMemberCreateRequest]) (*connect.Response[apiv1.TenantMemberResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantMemberCreateRequest]) *connect.Response[apiv1.TenantMemberResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.TenantMemberResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.TenantMemberCreateRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Delete provides a mock function with given fields: _a0, _a1 +func (_m *TenantMemberServiceClient) Delete(_a0 context.Context, _a1 *connect.Request[apiv1.TenantMemberDeleteRequest]) (*connect.Response[apiv1.TenantMemberResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Delete") + } + + var r0 *connect.Response[apiv1.TenantMemberResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantMemberDeleteRequest]) (*connect.Response[apiv1.TenantMemberResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantMemberDeleteRequest]) *connect.Response[apiv1.TenantMemberResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.TenantMemberResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.TenantMemberDeleteRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Find provides a mock function with given fields: _a0, _a1 +func (_m *TenantMemberServiceClient) Find(_a0 context.Context, _a1 *connect.Request[apiv1.TenantMemberFindRequest]) (*connect.Response[apiv1.TenantMemberListResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Find") + } + + var r0 *connect.Response[apiv1.TenantMemberListResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantMemberFindRequest]) (*connect.Response[apiv1.TenantMemberListResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantMemberFindRequest]) *connect.Response[apiv1.TenantMemberListResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.TenantMemberListResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.TenantMemberFindRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Get provides a mock function with given fields: _a0, _a1 +func (_m *TenantMemberServiceClient) Get(_a0 context.Context, _a1 *connect.Request[apiv1.TenantMemberGetRequest]) (*connect.Response[apiv1.TenantMemberResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Get") + } + + var r0 *connect.Response[apiv1.TenantMemberResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantMemberGetRequest]) (*connect.Response[apiv1.TenantMemberResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantMemberGetRequest]) *connect.Response[apiv1.TenantMemberResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.TenantMemberResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.TenantMemberGetRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Update provides a mock function with given fields: _a0, _a1 +func (_m *TenantMemberServiceClient) Update(_a0 context.Context, _a1 *connect.Request[apiv1.TenantMemberUpdateRequest]) (*connect.Response[apiv1.TenantMemberResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Update") + } + + var r0 *connect.Response[apiv1.TenantMemberResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantMemberUpdateRequest]) (*connect.Response[apiv1.TenantMemberResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantMemberUpdateRequest]) *connect.Response[apiv1.TenantMemberResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.TenantMemberResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.TenantMemberUpdateRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// NewTenantMemberServiceClient creates a new instance of TenantMemberServiceClient. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewTenantMemberServiceClient(t interface { + mock.TestingT + Cleanup(func()) +}) *TenantMemberServiceClient { + mock := &TenantMemberServiceClient{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/api/v1/mocks/apiv1connect/TenantMemberServiceHandler.go b/api/v1/mocks/apiv1connect/TenantMemberServiceHandler.go new file mode 100644 index 0000000..5b9504f --- /dev/null +++ b/api/v1/mocks/apiv1connect/TenantMemberServiceHandler.go @@ -0,0 +1,182 @@ +// Code generated by mockery v2.53.3. DO NOT EDIT. + +package mocks + +import ( + apiv1 "github.com/metal-stack/masterdata-api/api/v1" + + connect "connectrpc.com/connect" + + context "context" + + mock "github.com/stretchr/testify/mock" +) + +// TenantMemberServiceHandler is an autogenerated mock type for the TenantMemberServiceHandler type +type TenantMemberServiceHandler struct { + mock.Mock +} + +// Create provides a mock function with given fields: _a0, _a1 +func (_m *TenantMemberServiceHandler) Create(_a0 context.Context, _a1 *connect.Request[apiv1.TenantMemberCreateRequest]) (*connect.Response[apiv1.TenantMemberResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Create") + } + + var r0 *connect.Response[apiv1.TenantMemberResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantMemberCreateRequest]) (*connect.Response[apiv1.TenantMemberResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantMemberCreateRequest]) *connect.Response[apiv1.TenantMemberResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.TenantMemberResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.TenantMemberCreateRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Delete provides a mock function with given fields: _a0, _a1 +func (_m *TenantMemberServiceHandler) Delete(_a0 context.Context, _a1 *connect.Request[apiv1.TenantMemberDeleteRequest]) (*connect.Response[apiv1.TenantMemberResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Delete") + } + + var r0 *connect.Response[apiv1.TenantMemberResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantMemberDeleteRequest]) (*connect.Response[apiv1.TenantMemberResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantMemberDeleteRequest]) *connect.Response[apiv1.TenantMemberResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.TenantMemberResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.TenantMemberDeleteRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Find provides a mock function with given fields: _a0, _a1 +func (_m *TenantMemberServiceHandler) Find(_a0 context.Context, _a1 *connect.Request[apiv1.TenantMemberFindRequest]) (*connect.Response[apiv1.TenantMemberListResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Find") + } + + var r0 *connect.Response[apiv1.TenantMemberListResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantMemberFindRequest]) (*connect.Response[apiv1.TenantMemberListResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantMemberFindRequest]) *connect.Response[apiv1.TenantMemberListResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.TenantMemberListResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.TenantMemberFindRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Get provides a mock function with given fields: _a0, _a1 +func (_m *TenantMemberServiceHandler) Get(_a0 context.Context, _a1 *connect.Request[apiv1.TenantMemberGetRequest]) (*connect.Response[apiv1.TenantMemberResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Get") + } + + var r0 *connect.Response[apiv1.TenantMemberResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantMemberGetRequest]) (*connect.Response[apiv1.TenantMemberResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantMemberGetRequest]) *connect.Response[apiv1.TenantMemberResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.TenantMemberResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.TenantMemberGetRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Update provides a mock function with given fields: _a0, _a1 +func (_m *TenantMemberServiceHandler) Update(_a0 context.Context, _a1 *connect.Request[apiv1.TenantMemberUpdateRequest]) (*connect.Response[apiv1.TenantMemberResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Update") + } + + var r0 *connect.Response[apiv1.TenantMemberResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantMemberUpdateRequest]) (*connect.Response[apiv1.TenantMemberResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantMemberUpdateRequest]) *connect.Response[apiv1.TenantMemberResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.TenantMemberResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.TenantMemberUpdateRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// NewTenantMemberServiceHandler creates a new instance of TenantMemberServiceHandler. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewTenantMemberServiceHandler(t interface { + mock.TestingT + Cleanup(func()) +}) *TenantMemberServiceHandler { + mock := &TenantMemberServiceHandler{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/api/v1/mocks/apiv1connect/TenantServiceClient.go b/api/v1/mocks/apiv1connect/TenantServiceClient.go new file mode 100644 index 0000000..bdf0464 --- /dev/null +++ b/api/v1/mocks/apiv1connect/TenantServiceClient.go @@ -0,0 +1,302 @@ +// Code generated by mockery v2.53.3. DO NOT EDIT. + +package mocks + +import ( + apiv1 "github.com/metal-stack/masterdata-api/api/v1" + + connect "connectrpc.com/connect" + + context "context" + + mock "github.com/stretchr/testify/mock" +) + +// TenantServiceClient is an autogenerated mock type for the TenantServiceClient type +type TenantServiceClient struct { + mock.Mock +} + +// Create provides a mock function with given fields: _a0, _a1 +func (_m *TenantServiceClient) Create(_a0 context.Context, _a1 *connect.Request[apiv1.TenantCreateRequest]) (*connect.Response[apiv1.TenantResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Create") + } + + var r0 *connect.Response[apiv1.TenantResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantCreateRequest]) (*connect.Response[apiv1.TenantResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantCreateRequest]) *connect.Response[apiv1.TenantResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.TenantResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.TenantCreateRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Delete provides a mock function with given fields: _a0, _a1 +func (_m *TenantServiceClient) Delete(_a0 context.Context, _a1 *connect.Request[apiv1.TenantDeleteRequest]) (*connect.Response[apiv1.TenantResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Delete") + } + + var r0 *connect.Response[apiv1.TenantResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantDeleteRequest]) (*connect.Response[apiv1.TenantResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantDeleteRequest]) *connect.Response[apiv1.TenantResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.TenantResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.TenantDeleteRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Find provides a mock function with given fields: _a0, _a1 +func (_m *TenantServiceClient) Find(_a0 context.Context, _a1 *connect.Request[apiv1.TenantFindRequest]) (*connect.Response[apiv1.TenantListResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Find") + } + + var r0 *connect.Response[apiv1.TenantListResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantFindRequest]) (*connect.Response[apiv1.TenantListResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantFindRequest]) *connect.Response[apiv1.TenantListResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.TenantListResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.TenantFindRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// FindParticipatingProjects provides a mock function with given fields: _a0, _a1 +func (_m *TenantServiceClient) FindParticipatingProjects(_a0 context.Context, _a1 *connect.Request[apiv1.FindParticipatingProjectsRequest]) (*connect.Response[apiv1.FindParticipatingProjectsResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for FindParticipatingProjects") + } + + var r0 *connect.Response[apiv1.FindParticipatingProjectsResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.FindParticipatingProjectsRequest]) (*connect.Response[apiv1.FindParticipatingProjectsResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.FindParticipatingProjectsRequest]) *connect.Response[apiv1.FindParticipatingProjectsResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.FindParticipatingProjectsResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.FindParticipatingProjectsRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// FindParticipatingTenants provides a mock function with given fields: _a0, _a1 +func (_m *TenantServiceClient) FindParticipatingTenants(_a0 context.Context, _a1 *connect.Request[apiv1.FindParticipatingTenantsRequest]) (*connect.Response[apiv1.FindParticipatingTenantsResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for FindParticipatingTenants") + } + + var r0 *connect.Response[apiv1.FindParticipatingTenantsResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.FindParticipatingTenantsRequest]) (*connect.Response[apiv1.FindParticipatingTenantsResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.FindParticipatingTenantsRequest]) *connect.Response[apiv1.FindParticipatingTenantsResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.FindParticipatingTenantsResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.FindParticipatingTenantsRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Get provides a mock function with given fields: _a0, _a1 +func (_m *TenantServiceClient) Get(_a0 context.Context, _a1 *connect.Request[apiv1.TenantGetRequest]) (*connect.Response[apiv1.TenantResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Get") + } + + var r0 *connect.Response[apiv1.TenantResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantGetRequest]) (*connect.Response[apiv1.TenantResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantGetRequest]) *connect.Response[apiv1.TenantResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.TenantResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.TenantGetRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetHistory provides a mock function with given fields: _a0, _a1 +func (_m *TenantServiceClient) GetHistory(_a0 context.Context, _a1 *connect.Request[apiv1.TenantGetHistoryRequest]) (*connect.Response[apiv1.TenantResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for GetHistory") + } + + var r0 *connect.Response[apiv1.TenantResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantGetHistoryRequest]) (*connect.Response[apiv1.TenantResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantGetHistoryRequest]) *connect.Response[apiv1.TenantResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.TenantResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.TenantGetHistoryRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ListTenantMembers provides a mock function with given fields: _a0, _a1 +func (_m *TenantServiceClient) ListTenantMembers(_a0 context.Context, _a1 *connect.Request[apiv1.ListTenantMembersRequest]) (*connect.Response[apiv1.ListTenantMembersResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ListTenantMembers") + } + + var r0 *connect.Response[apiv1.ListTenantMembersResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ListTenantMembersRequest]) (*connect.Response[apiv1.ListTenantMembersResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ListTenantMembersRequest]) *connect.Response[apiv1.ListTenantMembersResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.ListTenantMembersResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.ListTenantMembersRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Update provides a mock function with given fields: _a0, _a1 +func (_m *TenantServiceClient) Update(_a0 context.Context, _a1 *connect.Request[apiv1.TenantUpdateRequest]) (*connect.Response[apiv1.TenantResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Update") + } + + var r0 *connect.Response[apiv1.TenantResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantUpdateRequest]) (*connect.Response[apiv1.TenantResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantUpdateRequest]) *connect.Response[apiv1.TenantResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.TenantResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.TenantUpdateRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// NewTenantServiceClient creates a new instance of TenantServiceClient. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewTenantServiceClient(t interface { + mock.TestingT + Cleanup(func()) +}) *TenantServiceClient { + mock := &TenantServiceClient{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/api/v1/mocks/apiv1connect/TenantServiceHandler.go b/api/v1/mocks/apiv1connect/TenantServiceHandler.go new file mode 100644 index 0000000..2107d38 --- /dev/null +++ b/api/v1/mocks/apiv1connect/TenantServiceHandler.go @@ -0,0 +1,302 @@ +// Code generated by mockery v2.53.3. DO NOT EDIT. + +package mocks + +import ( + apiv1 "github.com/metal-stack/masterdata-api/api/v1" + + connect "connectrpc.com/connect" + + context "context" + + mock "github.com/stretchr/testify/mock" +) + +// TenantServiceHandler is an autogenerated mock type for the TenantServiceHandler type +type TenantServiceHandler struct { + mock.Mock +} + +// Create provides a mock function with given fields: _a0, _a1 +func (_m *TenantServiceHandler) Create(_a0 context.Context, _a1 *connect.Request[apiv1.TenantCreateRequest]) (*connect.Response[apiv1.TenantResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Create") + } + + var r0 *connect.Response[apiv1.TenantResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantCreateRequest]) (*connect.Response[apiv1.TenantResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantCreateRequest]) *connect.Response[apiv1.TenantResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.TenantResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.TenantCreateRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Delete provides a mock function with given fields: _a0, _a1 +func (_m *TenantServiceHandler) Delete(_a0 context.Context, _a1 *connect.Request[apiv1.TenantDeleteRequest]) (*connect.Response[apiv1.TenantResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Delete") + } + + var r0 *connect.Response[apiv1.TenantResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantDeleteRequest]) (*connect.Response[apiv1.TenantResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantDeleteRequest]) *connect.Response[apiv1.TenantResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.TenantResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.TenantDeleteRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Find provides a mock function with given fields: _a0, _a1 +func (_m *TenantServiceHandler) Find(_a0 context.Context, _a1 *connect.Request[apiv1.TenantFindRequest]) (*connect.Response[apiv1.TenantListResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Find") + } + + var r0 *connect.Response[apiv1.TenantListResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantFindRequest]) (*connect.Response[apiv1.TenantListResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantFindRequest]) *connect.Response[apiv1.TenantListResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.TenantListResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.TenantFindRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// FindParticipatingProjects provides a mock function with given fields: _a0, _a1 +func (_m *TenantServiceHandler) FindParticipatingProjects(_a0 context.Context, _a1 *connect.Request[apiv1.FindParticipatingProjectsRequest]) (*connect.Response[apiv1.FindParticipatingProjectsResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for FindParticipatingProjects") + } + + var r0 *connect.Response[apiv1.FindParticipatingProjectsResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.FindParticipatingProjectsRequest]) (*connect.Response[apiv1.FindParticipatingProjectsResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.FindParticipatingProjectsRequest]) *connect.Response[apiv1.FindParticipatingProjectsResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.FindParticipatingProjectsResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.FindParticipatingProjectsRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// FindParticipatingTenants provides a mock function with given fields: _a0, _a1 +func (_m *TenantServiceHandler) FindParticipatingTenants(_a0 context.Context, _a1 *connect.Request[apiv1.FindParticipatingTenantsRequest]) (*connect.Response[apiv1.FindParticipatingTenantsResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for FindParticipatingTenants") + } + + var r0 *connect.Response[apiv1.FindParticipatingTenantsResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.FindParticipatingTenantsRequest]) (*connect.Response[apiv1.FindParticipatingTenantsResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.FindParticipatingTenantsRequest]) *connect.Response[apiv1.FindParticipatingTenantsResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.FindParticipatingTenantsResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.FindParticipatingTenantsRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Get provides a mock function with given fields: _a0, _a1 +func (_m *TenantServiceHandler) Get(_a0 context.Context, _a1 *connect.Request[apiv1.TenantGetRequest]) (*connect.Response[apiv1.TenantResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Get") + } + + var r0 *connect.Response[apiv1.TenantResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantGetRequest]) (*connect.Response[apiv1.TenantResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantGetRequest]) *connect.Response[apiv1.TenantResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.TenantResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.TenantGetRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetHistory provides a mock function with given fields: _a0, _a1 +func (_m *TenantServiceHandler) GetHistory(_a0 context.Context, _a1 *connect.Request[apiv1.TenantGetHistoryRequest]) (*connect.Response[apiv1.TenantResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for GetHistory") + } + + var r0 *connect.Response[apiv1.TenantResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantGetHistoryRequest]) (*connect.Response[apiv1.TenantResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantGetHistoryRequest]) *connect.Response[apiv1.TenantResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.TenantResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.TenantGetHistoryRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ListTenantMembers provides a mock function with given fields: _a0, _a1 +func (_m *TenantServiceHandler) ListTenantMembers(_a0 context.Context, _a1 *connect.Request[apiv1.ListTenantMembersRequest]) (*connect.Response[apiv1.ListTenantMembersResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for ListTenantMembers") + } + + var r0 *connect.Response[apiv1.ListTenantMembersResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ListTenantMembersRequest]) (*connect.Response[apiv1.ListTenantMembersResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.ListTenantMembersRequest]) *connect.Response[apiv1.ListTenantMembersResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.ListTenantMembersResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.ListTenantMembersRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Update provides a mock function with given fields: _a0, _a1 +func (_m *TenantServiceHandler) Update(_a0 context.Context, _a1 *connect.Request[apiv1.TenantUpdateRequest]) (*connect.Response[apiv1.TenantResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Update") + } + + var r0 *connect.Response[apiv1.TenantResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantUpdateRequest]) (*connect.Response[apiv1.TenantResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.TenantUpdateRequest]) *connect.Response[apiv1.TenantResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.TenantResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.TenantUpdateRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// NewTenantServiceHandler creates a new instance of TenantServiceHandler. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewTenantServiceHandler(t interface { + mock.TestingT + Cleanup(func()) +}) *TenantServiceHandler { + mock := &TenantServiceHandler{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/api/v1/mocks/apiv1connect/VersionServiceClient.go b/api/v1/mocks/apiv1connect/VersionServiceClient.go new file mode 100644 index 0000000..d51fbd3 --- /dev/null +++ b/api/v1/mocks/apiv1connect/VersionServiceClient.go @@ -0,0 +1,62 @@ +// Code generated by mockery v2.53.3. DO NOT EDIT. + +package mocks + +import ( + apiv1 "github.com/metal-stack/masterdata-api/api/v1" + + connect "connectrpc.com/connect" + + context "context" + + mock "github.com/stretchr/testify/mock" +) + +// VersionServiceClient is an autogenerated mock type for the VersionServiceClient type +type VersionServiceClient struct { + mock.Mock +} + +// Get provides a mock function with given fields: _a0, _a1 +func (_m *VersionServiceClient) Get(_a0 context.Context, _a1 *connect.Request[apiv1.GetVersionRequest]) (*connect.Response[apiv1.GetVersionResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Get") + } + + var r0 *connect.Response[apiv1.GetVersionResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.GetVersionRequest]) (*connect.Response[apiv1.GetVersionResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.GetVersionRequest]) *connect.Response[apiv1.GetVersionResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.GetVersionResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.GetVersionRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// NewVersionServiceClient creates a new instance of VersionServiceClient. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewVersionServiceClient(t interface { + mock.TestingT + Cleanup(func()) +}) *VersionServiceClient { + mock := &VersionServiceClient{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/api/v1/mocks/apiv1connect/VersionServiceHandler.go b/api/v1/mocks/apiv1connect/VersionServiceHandler.go new file mode 100644 index 0000000..99ecd26 --- /dev/null +++ b/api/v1/mocks/apiv1connect/VersionServiceHandler.go @@ -0,0 +1,62 @@ +// Code generated by mockery v2.53.3. DO NOT EDIT. + +package mocks + +import ( + apiv1 "github.com/metal-stack/masterdata-api/api/v1" + + connect "connectrpc.com/connect" + + context "context" + + mock "github.com/stretchr/testify/mock" +) + +// VersionServiceHandler is an autogenerated mock type for the VersionServiceHandler type +type VersionServiceHandler struct { + mock.Mock +} + +// Get provides a mock function with given fields: _a0, _a1 +func (_m *VersionServiceHandler) Get(_a0 context.Context, _a1 *connect.Request[apiv1.GetVersionRequest]) (*connect.Response[apiv1.GetVersionResponse], error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Get") + } + + var r0 *connect.Response[apiv1.GetVersionResponse] + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.GetVersionRequest]) (*connect.Response[apiv1.GetVersionResponse], error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *connect.Request[apiv1.GetVersionRequest]) *connect.Response[apiv1.GetVersionResponse]); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[apiv1.GetVersionResponse]) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *connect.Request[apiv1.GetVersionRequest]) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// NewVersionServiceHandler creates a new instance of VersionServiceHandler. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewVersionServiceHandler(t interface { + mock.TestingT + Cleanup(func()) +}) *VersionServiceHandler { + mock := &VersionServiceHandler{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/api/v1/project.go b/api/v1/project.go index d1a2bfc..7b4da74 100644 --- a/api/v1/project.go +++ b/api/v1/project.go @@ -1,6 +1,6 @@ -package v1 +package apiv1 -//go:generate go run ../../pkg/gen/genscanvaluer.go -package v1 -type Project +//go:generate go run ../../pkg/gen/genscanvaluer.go -package apiv1 -type Project func (m *Project) NewProjectResponse() *ProjectResponse { return &ProjectResponse{ diff --git a/api/v1/project.pb.go b/api/v1/project.pb.go index 9f78194..6998b2a 100644 --- a/api/v1/project.pb.go +++ b/api/v1/project.pb.go @@ -2,9 +2,9 @@ // versions: // protoc-gen-go v1.36.6 // protoc (unknown) -// source: v1/project.proto +// source: api/v1/project.proto -package v1 +package apiv1 import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -36,7 +36,7 @@ type Project struct { func (x *Project) Reset() { *x = Project{} - mi := &file_v1_project_proto_msgTypes[0] + mi := &file_api_v1_project_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -48,7 +48,7 @@ func (x *Project) String() string { func (*Project) ProtoMessage() {} func (x *Project) ProtoReflect() protoreflect.Message { - mi := &file_v1_project_proto_msgTypes[0] + mi := &file_api_v1_project_proto_msgTypes[0] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -61,7 +61,7 @@ func (x *Project) ProtoReflect() protoreflect.Message { // Deprecated: Use Project.ProtoReflect.Descriptor instead. func (*Project) Descriptor() ([]byte, []int) { - return file_v1_project_proto_rawDescGZIP(), []int{0} + return file_api_v1_project_proto_rawDescGZIP(), []int{0} } func (x *Project) GetMeta() *Meta { @@ -108,7 +108,7 @@ type ProjectCreateRequest struct { func (x *ProjectCreateRequest) Reset() { *x = ProjectCreateRequest{} - mi := &file_v1_project_proto_msgTypes[1] + mi := &file_api_v1_project_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -120,7 +120,7 @@ func (x *ProjectCreateRequest) String() string { func (*ProjectCreateRequest) ProtoMessage() {} func (x *ProjectCreateRequest) ProtoReflect() protoreflect.Message { - mi := &file_v1_project_proto_msgTypes[1] + mi := &file_api_v1_project_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -133,7 +133,7 @@ func (x *ProjectCreateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectCreateRequest.ProtoReflect.Descriptor instead. func (*ProjectCreateRequest) Descriptor() ([]byte, []int) { - return file_v1_project_proto_rawDescGZIP(), []int{1} + return file_api_v1_project_proto_rawDescGZIP(), []int{1} } func (x *ProjectCreateRequest) GetProject() *Project { @@ -152,7 +152,7 @@ type ProjectUpdateRequest struct { func (x *ProjectUpdateRequest) Reset() { *x = ProjectUpdateRequest{} - mi := &file_v1_project_proto_msgTypes[2] + mi := &file_api_v1_project_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -164,7 +164,7 @@ func (x *ProjectUpdateRequest) String() string { func (*ProjectUpdateRequest) ProtoMessage() {} func (x *ProjectUpdateRequest) ProtoReflect() protoreflect.Message { - mi := &file_v1_project_proto_msgTypes[2] + mi := &file_api_v1_project_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -177,7 +177,7 @@ func (x *ProjectUpdateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectUpdateRequest.ProtoReflect.Descriptor instead. func (*ProjectUpdateRequest) Descriptor() ([]byte, []int) { - return file_v1_project_proto_rawDescGZIP(), []int{2} + return file_api_v1_project_proto_rawDescGZIP(), []int{2} } func (x *ProjectUpdateRequest) GetProject() *Project { @@ -196,7 +196,7 @@ type ProjectDeleteRequest struct { func (x *ProjectDeleteRequest) Reset() { *x = ProjectDeleteRequest{} - mi := &file_v1_project_proto_msgTypes[3] + mi := &file_api_v1_project_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -208,7 +208,7 @@ func (x *ProjectDeleteRequest) String() string { func (*ProjectDeleteRequest) ProtoMessage() {} func (x *ProjectDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_v1_project_proto_msgTypes[3] + mi := &file_api_v1_project_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -221,7 +221,7 @@ func (x *ProjectDeleteRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectDeleteRequest.ProtoReflect.Descriptor instead. func (*ProjectDeleteRequest) Descriptor() ([]byte, []int) { - return file_v1_project_proto_rawDescGZIP(), []int{3} + return file_api_v1_project_proto_rawDescGZIP(), []int{3} } func (x *ProjectDeleteRequest) GetId() string { @@ -240,7 +240,7 @@ type ProjectGetRequest struct { func (x *ProjectGetRequest) Reset() { *x = ProjectGetRequest{} - mi := &file_v1_project_proto_msgTypes[4] + mi := &file_api_v1_project_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -252,7 +252,7 @@ func (x *ProjectGetRequest) String() string { func (*ProjectGetRequest) ProtoMessage() {} func (x *ProjectGetRequest) ProtoReflect() protoreflect.Message { - mi := &file_v1_project_proto_msgTypes[4] + mi := &file_api_v1_project_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -265,7 +265,7 @@ func (x *ProjectGetRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectGetRequest.ProtoReflect.Descriptor instead. func (*ProjectGetRequest) Descriptor() ([]byte, []int) { - return file_v1_project_proto_rawDescGZIP(), []int{4} + return file_api_v1_project_proto_rawDescGZIP(), []int{4} } func (x *ProjectGetRequest) GetId() string { @@ -285,7 +285,7 @@ type ProjectGetHistoryRequest struct { func (x *ProjectGetHistoryRequest) Reset() { *x = ProjectGetHistoryRequest{} - mi := &file_v1_project_proto_msgTypes[5] + mi := &file_api_v1_project_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -297,7 +297,7 @@ func (x *ProjectGetHistoryRequest) String() string { func (*ProjectGetHistoryRequest) ProtoMessage() {} func (x *ProjectGetHistoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_v1_project_proto_msgTypes[5] + mi := &file_api_v1_project_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -310,7 +310,7 @@ func (x *ProjectGetHistoryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectGetHistoryRequest.ProtoReflect.Descriptor instead. func (*ProjectGetHistoryRequest) Descriptor() ([]byte, []int) { - return file_v1_project_proto_rawDescGZIP(), []int{5} + return file_api_v1_project_proto_rawDescGZIP(), []int{5} } func (x *ProjectGetHistoryRequest) GetId() string { @@ -341,7 +341,7 @@ type ProjectFindRequest struct { func (x *ProjectFindRequest) Reset() { *x = ProjectFindRequest{} - mi := &file_v1_project_proto_msgTypes[6] + mi := &file_api_v1_project_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -353,7 +353,7 @@ func (x *ProjectFindRequest) String() string { func (*ProjectFindRequest) ProtoMessage() {} func (x *ProjectFindRequest) ProtoReflect() protoreflect.Message { - mi := &file_v1_project_proto_msgTypes[6] + mi := &file_api_v1_project_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -366,7 +366,7 @@ func (x *ProjectFindRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectFindRequest.ProtoReflect.Descriptor instead. func (*ProjectFindRequest) Descriptor() ([]byte, []int) { - return file_v1_project_proto_rawDescGZIP(), []int{6} + return file_api_v1_project_proto_rawDescGZIP(), []int{6} } func (x *ProjectFindRequest) GetId() string { @@ -420,7 +420,7 @@ type ProjectResponse struct { func (x *ProjectResponse) Reset() { *x = ProjectResponse{} - mi := &file_v1_project_proto_msgTypes[7] + mi := &file_api_v1_project_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -432,7 +432,7 @@ func (x *ProjectResponse) String() string { func (*ProjectResponse) ProtoMessage() {} func (x *ProjectResponse) ProtoReflect() protoreflect.Message { - mi := &file_v1_project_proto_msgTypes[7] + mi := &file_api_v1_project_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -445,7 +445,7 @@ func (x *ProjectResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectResponse.ProtoReflect.Descriptor instead. func (*ProjectResponse) Descriptor() ([]byte, []int) { - return file_v1_project_proto_rawDescGZIP(), []int{7} + return file_api_v1_project_proto_rawDescGZIP(), []int{7} } func (x *ProjectResponse) GetProject() *Project { @@ -466,7 +466,7 @@ type ProjectListResponse struct { func (x *ProjectListResponse) Reset() { *x = ProjectListResponse{} - mi := &file_v1_project_proto_msgTypes[8] + mi := &file_api_v1_project_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -478,7 +478,7 @@ func (x *ProjectListResponse) String() string { func (*ProjectListResponse) ProtoMessage() {} func (x *ProjectListResponse) ProtoReflect() protoreflect.Message { - mi := &file_v1_project_proto_msgTypes[8] + mi := &file_api_v1_project_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -491,7 +491,7 @@ func (x *ProjectListResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectListResponse.ProtoReflect.Descriptor instead. func (*ProjectListResponse) Descriptor() ([]byte, []int) { - return file_v1_project_proto_rawDescGZIP(), []int{8} + return file_api_v1_project_proto_rawDescGZIP(), []int{8} } func (x *ProjectListResponse) GetProjects() []*Project { @@ -508,36 +508,35 @@ func (x *ProjectListResponse) GetNextPage() uint64 { return 0 } -var File_v1_project_proto protoreflect.FileDescriptor +var File_api_v1_project_proto protoreflect.FileDescriptor -const file_v1_project_proto_rawDesc = "" + +const file_api_v1_project_proto_rawDesc = "" + "\n" + - "\x10v1/project.proto\x12\x02v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x0fv1/common.proto\x1a\rv1/meta.proto\x1a\x0ev1/quota.proto\"\xa0\x01\n" + - "\aProject\x12\x1c\n" + - "\x04meta\x18\x01 \x01(\v2\b.v1.MetaR\x04meta\x12\x12\n" + + "\x14api/v1/project.proto\x12\x06api.v1\x1a\x13api/v1/common.proto\x1a\x11api/v1/meta.proto\x1a\x12api/v1/quota.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xa8\x01\n" + + "\aProject\x12 \n" + + "\x04meta\x18\x01 \x01(\v2\f.api.v1.MetaR\x04meta\x12\x12\n" + "\x04name\x18\x02 \x01(\tR\x04name\x12 \n" + "\vdescription\x18\x03 \x01(\tR\vdescription\x12\x1b\n" + - "\ttenant_id\x18\x04 \x01(\tR\btenantId\x12$\n" + - "\x06quotas\x18\x05 \x01(\v2\f.v1.QuotaSetR\x06quotas\"=\n" + - "\x14ProjectCreateRequest\x12%\n" + - "\aproject\x18\x01 \x01(\v2\v.v1.ProjectR\aproject\"=\n" + - "\x14ProjectUpdateRequest\x12%\n" + - "\aproject\x18\x01 \x01(\v2\v.v1.ProjectR\aproject\"&\n" + + "\ttenant_id\x18\x04 \x01(\tR\btenantId\x12(\n" + + "\x06quotas\x18\x05 \x01(\v2\x10.api.v1.QuotaSetR\x06quotas\"A\n" + + "\x14ProjectCreateRequest\x12)\n" + + "\aproject\x18\x01 \x01(\v2\x0f.api.v1.ProjectR\aproject\"A\n" + + "\x14ProjectUpdateRequest\x12)\n" + + "\aproject\x18\x01 \x01(\v2\x0f.api.v1.ProjectR\aproject\"&\n" + "\x14ProjectDeleteRequest\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\"#\n" + "\x11ProjectGetRequest\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\"V\n" + "\x18ProjectGetHistoryRequest\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12*\n" + - "\x02at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\x02at\"\xe8\x02\n" + + "\x02at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\x02at\"\xf0\x02\n" + "\x12ProjectFindRequest\x12\x13\n" + "\x02id\x18\x01 \x01(\tH\x00R\x02id\x88\x01\x01\x12\x17\n" + "\x04name\x18\x02 \x01(\tH\x01R\x04name\x88\x01\x01\x12%\n" + "\vdescription\x18\x03 \x01(\tH\x02R\vdescription\x88\x01\x01\x12 \n" + - "\ttenant_id\x18\x04 \x01(\tH\x03R\btenantId\x88\x01\x01\x12\"\n" + - "\x06paging\x18\x05 \x01(\v2\n" + - ".v1.PagingR\x06paging\x12I\n" + - "\vannotations\x18\x06 \x03(\v2'.v1.ProjectFindRequest.AnnotationsEntryR\vannotations\x1a>\n" + + "\ttenant_id\x18\x04 \x01(\tH\x03R\btenantId\x88\x01\x01\x12&\n" + + "\x06paging\x18\x05 \x01(\v2\x0e.api.v1.PagingR\x06paging\x12M\n" + + "\vannotations\x18\x06 \x03(\v2+.api.v1.ProjectFindRequest.AnnotationsEntryR\vannotations\x1a>\n" + "\x10AnnotationsEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\x05\n" + @@ -545,75 +544,76 @@ const file_v1_project_proto_rawDesc = "" + "\x05_nameB\x0e\n" + "\f_descriptionB\f\n" + "\n" + - "_tenant_id\"8\n" + - "\x0fProjectResponse\x12%\n" + - "\aproject\x18\x01 \x01(\v2\v.v1.ProjectR\aproject\"n\n" + - "\x13ProjectListResponse\x12'\n" + - "\bprojects\x18\x01 \x03(\v2\v.v1.ProjectR\bprojects\x12 \n" + + "_tenant_id\"<\n" + + "\x0fProjectResponse\x12)\n" + + "\aproject\x18\x01 \x01(\v2\x0f.api.v1.ProjectR\aproject\"r\n" + + "\x13ProjectListResponse\x12+\n" + + "\bprojects\x18\x01 \x03(\v2\x0f.api.v1.ProjectR\bprojects\x12 \n" + "\tnext_page\x18\x02 \x01(\x04H\x00R\bnextPage\x88\x01\x01B\f\n" + "\n" + - "_next_page2\xe8\x02\n" + - "\x0eProjectService\x127\n" + - "\x06Create\x12\x18.v1.ProjectCreateRequest\x1a\x13.v1.ProjectResponse\x127\n" + - "\x06Update\x12\x18.v1.ProjectUpdateRequest\x1a\x13.v1.ProjectResponse\x127\n" + - "\x06Delete\x12\x18.v1.ProjectDeleteRequest\x1a\x13.v1.ProjectResponse\x121\n" + - "\x03Get\x12\x15.v1.ProjectGetRequest\x1a\x13.v1.ProjectResponse\x12?\n" + + "_next_page2\x98\x03\n" + + "\x0eProjectService\x12?\n" + + "\x06Create\x12\x1c.api.v1.ProjectCreateRequest\x1a\x17.api.v1.ProjectResponse\x12?\n" + + "\x06Update\x12\x1c.api.v1.ProjectUpdateRequest\x1a\x17.api.v1.ProjectResponse\x12?\n" + + "\x06Delete\x12\x1c.api.v1.ProjectDeleteRequest\x1a\x17.api.v1.ProjectResponse\x129\n" + + "\x03Get\x12\x19.api.v1.ProjectGetRequest\x1a\x17.api.v1.ProjectResponse\x12G\n" + "\n" + - "GetHistory\x12\x1c.v1.ProjectGetHistoryRequest\x1a\x13.v1.ProjectResponse\x127\n" + - "\x04Find\x12\x16.v1.ProjectFindRequest\x1a\x17.v1.ProjectListResponseBh\n" + - "\x06com.v1B\fProjectProtoP\x01Z(github.com/metal-stack/masterdata-api/v1\xa2\x02\x03VXX\xaa\x02\x02V1\xca\x02\x02V1\xe2\x02\x0eV1\\GPBMetadata\xea\x02\x02V1b\x06proto3" + "GetHistory\x12 .api.v1.ProjectGetHistoryRequest\x1a\x17.api.v1.ProjectResponse\x12?\n" + + "\x04Find\x12\x1a.api.v1.ProjectFindRequest\x1a\x1b.api.v1.ProjectListResponseB\x87\x01\n" + + "\n" + + "com.api.v1B\fProjectProtoP\x01Z2github.com/metal-stack/masterdata-api/api/v1;apiv1\xa2\x02\x03AXX\xaa\x02\x06Api.V1\xca\x02\x06Api\\V1\xe2\x02\x12Api\\V1\\GPBMetadata\xea\x02\aApi::V1b\x06proto3" var ( - file_v1_project_proto_rawDescOnce sync.Once - file_v1_project_proto_rawDescData []byte + file_api_v1_project_proto_rawDescOnce sync.Once + file_api_v1_project_proto_rawDescData []byte ) -func file_v1_project_proto_rawDescGZIP() []byte { - file_v1_project_proto_rawDescOnce.Do(func() { - file_v1_project_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_v1_project_proto_rawDesc), len(file_v1_project_proto_rawDesc))) +func file_api_v1_project_proto_rawDescGZIP() []byte { + file_api_v1_project_proto_rawDescOnce.Do(func() { + file_api_v1_project_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_api_v1_project_proto_rawDesc), len(file_api_v1_project_proto_rawDesc))) }) - return file_v1_project_proto_rawDescData -} - -var file_v1_project_proto_msgTypes = make([]protoimpl.MessageInfo, 10) -var file_v1_project_proto_goTypes = []any{ - (*Project)(nil), // 0: v1.Project - (*ProjectCreateRequest)(nil), // 1: v1.ProjectCreateRequest - (*ProjectUpdateRequest)(nil), // 2: v1.ProjectUpdateRequest - (*ProjectDeleteRequest)(nil), // 3: v1.ProjectDeleteRequest - (*ProjectGetRequest)(nil), // 4: v1.ProjectGetRequest - (*ProjectGetHistoryRequest)(nil), // 5: v1.ProjectGetHistoryRequest - (*ProjectFindRequest)(nil), // 6: v1.ProjectFindRequest - (*ProjectResponse)(nil), // 7: v1.ProjectResponse - (*ProjectListResponse)(nil), // 8: v1.ProjectListResponse - nil, // 9: v1.ProjectFindRequest.AnnotationsEntry - (*Meta)(nil), // 10: v1.Meta - (*QuotaSet)(nil), // 11: v1.QuotaSet + return file_api_v1_project_proto_rawDescData +} + +var file_api_v1_project_proto_msgTypes = make([]protoimpl.MessageInfo, 10) +var file_api_v1_project_proto_goTypes = []any{ + (*Project)(nil), // 0: api.v1.Project + (*ProjectCreateRequest)(nil), // 1: api.v1.ProjectCreateRequest + (*ProjectUpdateRequest)(nil), // 2: api.v1.ProjectUpdateRequest + (*ProjectDeleteRequest)(nil), // 3: api.v1.ProjectDeleteRequest + (*ProjectGetRequest)(nil), // 4: api.v1.ProjectGetRequest + (*ProjectGetHistoryRequest)(nil), // 5: api.v1.ProjectGetHistoryRequest + (*ProjectFindRequest)(nil), // 6: api.v1.ProjectFindRequest + (*ProjectResponse)(nil), // 7: api.v1.ProjectResponse + (*ProjectListResponse)(nil), // 8: api.v1.ProjectListResponse + nil, // 9: api.v1.ProjectFindRequest.AnnotationsEntry + (*Meta)(nil), // 10: api.v1.Meta + (*QuotaSet)(nil), // 11: api.v1.QuotaSet (*timestamppb.Timestamp)(nil), // 12: google.protobuf.Timestamp - (*Paging)(nil), // 13: v1.Paging -} -var file_v1_project_proto_depIdxs = []int32{ - 10, // 0: v1.Project.meta:type_name -> v1.Meta - 11, // 1: v1.Project.quotas:type_name -> v1.QuotaSet - 0, // 2: v1.ProjectCreateRequest.project:type_name -> v1.Project - 0, // 3: v1.ProjectUpdateRequest.project:type_name -> v1.Project - 12, // 4: v1.ProjectGetHistoryRequest.at:type_name -> google.protobuf.Timestamp - 13, // 5: v1.ProjectFindRequest.paging:type_name -> v1.Paging - 9, // 6: v1.ProjectFindRequest.annotations:type_name -> v1.ProjectFindRequest.AnnotationsEntry - 0, // 7: v1.ProjectResponse.project:type_name -> v1.Project - 0, // 8: v1.ProjectListResponse.projects:type_name -> v1.Project - 1, // 9: v1.ProjectService.Create:input_type -> v1.ProjectCreateRequest - 2, // 10: v1.ProjectService.Update:input_type -> v1.ProjectUpdateRequest - 3, // 11: v1.ProjectService.Delete:input_type -> v1.ProjectDeleteRequest - 4, // 12: v1.ProjectService.Get:input_type -> v1.ProjectGetRequest - 5, // 13: v1.ProjectService.GetHistory:input_type -> v1.ProjectGetHistoryRequest - 6, // 14: v1.ProjectService.Find:input_type -> v1.ProjectFindRequest - 7, // 15: v1.ProjectService.Create:output_type -> v1.ProjectResponse - 7, // 16: v1.ProjectService.Update:output_type -> v1.ProjectResponse - 7, // 17: v1.ProjectService.Delete:output_type -> v1.ProjectResponse - 7, // 18: v1.ProjectService.Get:output_type -> v1.ProjectResponse - 7, // 19: v1.ProjectService.GetHistory:output_type -> v1.ProjectResponse - 8, // 20: v1.ProjectService.Find:output_type -> v1.ProjectListResponse + (*Paging)(nil), // 13: api.v1.Paging +} +var file_api_v1_project_proto_depIdxs = []int32{ + 10, // 0: api.v1.Project.meta:type_name -> api.v1.Meta + 11, // 1: api.v1.Project.quotas:type_name -> api.v1.QuotaSet + 0, // 2: api.v1.ProjectCreateRequest.project:type_name -> api.v1.Project + 0, // 3: api.v1.ProjectUpdateRequest.project:type_name -> api.v1.Project + 12, // 4: api.v1.ProjectGetHistoryRequest.at:type_name -> google.protobuf.Timestamp + 13, // 5: api.v1.ProjectFindRequest.paging:type_name -> api.v1.Paging + 9, // 6: api.v1.ProjectFindRequest.annotations:type_name -> api.v1.ProjectFindRequest.AnnotationsEntry + 0, // 7: api.v1.ProjectResponse.project:type_name -> api.v1.Project + 0, // 8: api.v1.ProjectListResponse.projects:type_name -> api.v1.Project + 1, // 9: api.v1.ProjectService.Create:input_type -> api.v1.ProjectCreateRequest + 2, // 10: api.v1.ProjectService.Update:input_type -> api.v1.ProjectUpdateRequest + 3, // 11: api.v1.ProjectService.Delete:input_type -> api.v1.ProjectDeleteRequest + 4, // 12: api.v1.ProjectService.Get:input_type -> api.v1.ProjectGetRequest + 5, // 13: api.v1.ProjectService.GetHistory:input_type -> api.v1.ProjectGetHistoryRequest + 6, // 14: api.v1.ProjectService.Find:input_type -> api.v1.ProjectFindRequest + 7, // 15: api.v1.ProjectService.Create:output_type -> api.v1.ProjectResponse + 7, // 16: api.v1.ProjectService.Update:output_type -> api.v1.ProjectResponse + 7, // 17: api.v1.ProjectService.Delete:output_type -> api.v1.ProjectResponse + 7, // 18: api.v1.ProjectService.Get:output_type -> api.v1.ProjectResponse + 7, // 19: api.v1.ProjectService.GetHistory:output_type -> api.v1.ProjectResponse + 8, // 20: api.v1.ProjectService.Find:output_type -> api.v1.ProjectListResponse 15, // [15:21] is the sub-list for method output_type 9, // [9:15] is the sub-list for method input_type 9, // [9:9] is the sub-list for extension type_name @@ -621,31 +621,31 @@ var file_v1_project_proto_depIdxs = []int32{ 0, // [0:9] is the sub-list for field type_name } -func init() { file_v1_project_proto_init() } -func file_v1_project_proto_init() { - if File_v1_project_proto != nil { +func init() { file_api_v1_project_proto_init() } +func file_api_v1_project_proto_init() { + if File_api_v1_project_proto != nil { return } - file_v1_common_proto_init() - file_v1_meta_proto_init() - file_v1_quota_proto_init() - file_v1_project_proto_msgTypes[6].OneofWrappers = []any{} - file_v1_project_proto_msgTypes[8].OneofWrappers = []any{} + file_api_v1_common_proto_init() + file_api_v1_meta_proto_init() + file_api_v1_quota_proto_init() + file_api_v1_project_proto_msgTypes[6].OneofWrappers = []any{} + file_api_v1_project_proto_msgTypes[8].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_v1_project_proto_rawDesc), len(file_v1_project_proto_rawDesc)), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_api_v1_project_proto_rawDesc), len(file_api_v1_project_proto_rawDesc)), NumEnums: 0, NumMessages: 10, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_v1_project_proto_goTypes, - DependencyIndexes: file_v1_project_proto_depIdxs, - MessageInfos: file_v1_project_proto_msgTypes, + GoTypes: file_api_v1_project_proto_goTypes, + DependencyIndexes: file_api_v1_project_proto_depIdxs, + MessageInfos: file_api_v1_project_proto_msgTypes, }.Build() - File_v1_project_proto = out.File - file_v1_project_proto_goTypes = nil - file_v1_project_proto_depIdxs = nil + File_api_v1_project_proto = out.File + file_api_v1_project_proto_goTypes = nil + file_api_v1_project_proto_depIdxs = nil } diff --git a/api/v1/project_grpc.pb.go b/api/v1/project_grpc.pb.go deleted file mode 100644 index 8510f87..0000000 --- a/api/v1/project_grpc.pb.go +++ /dev/null @@ -1,309 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.5.1 -// - protoc (unknown) -// source: v1/project.proto - -package v1 - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.64.0 or later. -const _ = grpc.SupportPackageIsVersion9 - -const ( - ProjectService_Create_FullMethodName = "/v1.ProjectService/Create" - ProjectService_Update_FullMethodName = "/v1.ProjectService/Update" - ProjectService_Delete_FullMethodName = "/v1.ProjectService/Delete" - ProjectService_Get_FullMethodName = "/v1.ProjectService/Get" - ProjectService_GetHistory_FullMethodName = "/v1.ProjectService/GetHistory" - ProjectService_Find_FullMethodName = "/v1.ProjectService/Find" -) - -// ProjectServiceClient is the client API for ProjectService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -type ProjectServiceClient interface { - Create(ctx context.Context, in *ProjectCreateRequest, opts ...grpc.CallOption) (*ProjectResponse, error) - Update(ctx context.Context, in *ProjectUpdateRequest, opts ...grpc.CallOption) (*ProjectResponse, error) - Delete(ctx context.Context, in *ProjectDeleteRequest, opts ...grpc.CallOption) (*ProjectResponse, error) - Get(ctx context.Context, in *ProjectGetRequest, opts ...grpc.CallOption) (*ProjectResponse, error) - GetHistory(ctx context.Context, in *ProjectGetHistoryRequest, opts ...grpc.CallOption) (*ProjectResponse, error) - Find(ctx context.Context, in *ProjectFindRequest, opts ...grpc.CallOption) (*ProjectListResponse, error) -} - -type projectServiceClient struct { - cc grpc.ClientConnInterface -} - -func NewProjectServiceClient(cc grpc.ClientConnInterface) ProjectServiceClient { - return &projectServiceClient{cc} -} - -func (c *projectServiceClient) Create(ctx context.Context, in *ProjectCreateRequest, opts ...grpc.CallOption) (*ProjectResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(ProjectResponse) - err := c.cc.Invoke(ctx, ProjectService_Create_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *projectServiceClient) Update(ctx context.Context, in *ProjectUpdateRequest, opts ...grpc.CallOption) (*ProjectResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(ProjectResponse) - err := c.cc.Invoke(ctx, ProjectService_Update_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *projectServiceClient) Delete(ctx context.Context, in *ProjectDeleteRequest, opts ...grpc.CallOption) (*ProjectResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(ProjectResponse) - err := c.cc.Invoke(ctx, ProjectService_Delete_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *projectServiceClient) Get(ctx context.Context, in *ProjectGetRequest, opts ...grpc.CallOption) (*ProjectResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(ProjectResponse) - err := c.cc.Invoke(ctx, ProjectService_Get_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *projectServiceClient) GetHistory(ctx context.Context, in *ProjectGetHistoryRequest, opts ...grpc.CallOption) (*ProjectResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(ProjectResponse) - err := c.cc.Invoke(ctx, ProjectService_GetHistory_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *projectServiceClient) Find(ctx context.Context, in *ProjectFindRequest, opts ...grpc.CallOption) (*ProjectListResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(ProjectListResponse) - err := c.cc.Invoke(ctx, ProjectService_Find_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -// ProjectServiceServer is the server API for ProjectService service. -// All implementations should embed UnimplementedProjectServiceServer -// for forward compatibility. -type ProjectServiceServer interface { - Create(context.Context, *ProjectCreateRequest) (*ProjectResponse, error) - Update(context.Context, *ProjectUpdateRequest) (*ProjectResponse, error) - Delete(context.Context, *ProjectDeleteRequest) (*ProjectResponse, error) - Get(context.Context, *ProjectGetRequest) (*ProjectResponse, error) - GetHistory(context.Context, *ProjectGetHistoryRequest) (*ProjectResponse, error) - Find(context.Context, *ProjectFindRequest) (*ProjectListResponse, error) -} - -// UnimplementedProjectServiceServer should be embedded to have -// forward compatible implementations. -// -// NOTE: this should be embedded by value instead of pointer to avoid a nil -// pointer dereference when methods are called. -type UnimplementedProjectServiceServer struct{} - -func (UnimplementedProjectServiceServer) Create(context.Context, *ProjectCreateRequest) (*ProjectResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") -} -func (UnimplementedProjectServiceServer) Update(context.Context, *ProjectUpdateRequest) (*ProjectResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Update not implemented") -} -func (UnimplementedProjectServiceServer) Delete(context.Context, *ProjectDeleteRequest) (*ProjectResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") -} -func (UnimplementedProjectServiceServer) Get(context.Context, *ProjectGetRequest) (*ProjectResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") -} -func (UnimplementedProjectServiceServer) GetHistory(context.Context, *ProjectGetHistoryRequest) (*ProjectResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetHistory not implemented") -} -func (UnimplementedProjectServiceServer) Find(context.Context, *ProjectFindRequest) (*ProjectListResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Find not implemented") -} -func (UnimplementedProjectServiceServer) testEmbeddedByValue() {} - -// UnsafeProjectServiceServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to ProjectServiceServer will -// result in compilation errors. -type UnsafeProjectServiceServer interface { - mustEmbedUnimplementedProjectServiceServer() -} - -func RegisterProjectServiceServer(s grpc.ServiceRegistrar, srv ProjectServiceServer) { - // If the following call pancis, it indicates UnimplementedProjectServiceServer was - // embedded by pointer and is nil. This will cause panics if an - // unimplemented method is ever invoked, so we test this at initialization - // time to prevent it from happening at runtime later due to I/O. - if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { - t.testEmbeddedByValue() - } - s.RegisterService(&ProjectService_ServiceDesc, srv) -} - -func _ProjectService_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ProjectCreateRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ProjectServiceServer).Create(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: ProjectService_Create_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ProjectServiceServer).Create(ctx, req.(*ProjectCreateRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ProjectService_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ProjectUpdateRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ProjectServiceServer).Update(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: ProjectService_Update_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ProjectServiceServer).Update(ctx, req.(*ProjectUpdateRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ProjectService_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ProjectDeleteRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ProjectServiceServer).Delete(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: ProjectService_Delete_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ProjectServiceServer).Delete(ctx, req.(*ProjectDeleteRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ProjectService_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ProjectGetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ProjectServiceServer).Get(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: ProjectService_Get_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ProjectServiceServer).Get(ctx, req.(*ProjectGetRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ProjectService_GetHistory_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ProjectGetHistoryRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ProjectServiceServer).GetHistory(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: ProjectService_GetHistory_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ProjectServiceServer).GetHistory(ctx, req.(*ProjectGetHistoryRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ProjectService_Find_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ProjectFindRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ProjectServiceServer).Find(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: ProjectService_Find_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ProjectServiceServer).Find(ctx, req.(*ProjectFindRequest)) - } - return interceptor(ctx, in, info, handler) -} - -// ProjectService_ServiceDesc is the grpc.ServiceDesc for ProjectService service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var ProjectService_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "v1.ProjectService", - HandlerType: (*ProjectServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Create", - Handler: _ProjectService_Create_Handler, - }, - { - MethodName: "Update", - Handler: _ProjectService_Update_Handler, - }, - { - MethodName: "Delete", - Handler: _ProjectService_Delete_Handler, - }, - { - MethodName: "Get", - Handler: _ProjectService_Get_Handler, - }, - { - MethodName: "GetHistory", - Handler: _ProjectService_GetHistory_Handler, - }, - { - MethodName: "Find", - Handler: _ProjectService_Find_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "v1/project.proto", -} diff --git a/api/v1/project_member.pb.go b/api/v1/project_member.pb.go index c11ba7f..186cbb5 100644 --- a/api/v1/project_member.pb.go +++ b/api/v1/project_member.pb.go @@ -2,9 +2,9 @@ // versions: // protoc-gen-go v1.36.6 // protoc (unknown) -// source: v1/project_member.proto +// source: api/v1/project_member.proto -package v1 +package apiv1 import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -33,7 +33,7 @@ type ProjectMember struct { func (x *ProjectMember) Reset() { *x = ProjectMember{} - mi := &file_v1_project_member_proto_msgTypes[0] + mi := &file_api_v1_project_member_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -45,7 +45,7 @@ func (x *ProjectMember) String() string { func (*ProjectMember) ProtoMessage() {} func (x *ProjectMember) ProtoReflect() protoreflect.Message { - mi := &file_v1_project_member_proto_msgTypes[0] + mi := &file_api_v1_project_member_proto_msgTypes[0] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -58,7 +58,7 @@ func (x *ProjectMember) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectMember.ProtoReflect.Descriptor instead. func (*ProjectMember) Descriptor() ([]byte, []int) { - return file_v1_project_member_proto_rawDescGZIP(), []int{0} + return file_api_v1_project_member_proto_rawDescGZIP(), []int{0} } func (x *ProjectMember) GetMeta() *Meta { @@ -91,7 +91,7 @@ type ProjectMemberCreateRequest struct { func (x *ProjectMemberCreateRequest) Reset() { *x = ProjectMemberCreateRequest{} - mi := &file_v1_project_member_proto_msgTypes[1] + mi := &file_api_v1_project_member_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -103,7 +103,7 @@ func (x *ProjectMemberCreateRequest) String() string { func (*ProjectMemberCreateRequest) ProtoMessage() {} func (x *ProjectMemberCreateRequest) ProtoReflect() protoreflect.Message { - mi := &file_v1_project_member_proto_msgTypes[1] + mi := &file_api_v1_project_member_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -116,7 +116,7 @@ func (x *ProjectMemberCreateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectMemberCreateRequest.ProtoReflect.Descriptor instead. func (*ProjectMemberCreateRequest) Descriptor() ([]byte, []int) { - return file_v1_project_member_proto_rawDescGZIP(), []int{1} + return file_api_v1_project_member_proto_rawDescGZIP(), []int{1} } func (x *ProjectMemberCreateRequest) GetProjectMember() *ProjectMember { @@ -135,7 +135,7 @@ type ProjectMemberUpdateRequest struct { func (x *ProjectMemberUpdateRequest) Reset() { *x = ProjectMemberUpdateRequest{} - mi := &file_v1_project_member_proto_msgTypes[2] + mi := &file_api_v1_project_member_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -147,7 +147,7 @@ func (x *ProjectMemberUpdateRequest) String() string { func (*ProjectMemberUpdateRequest) ProtoMessage() {} func (x *ProjectMemberUpdateRequest) ProtoReflect() protoreflect.Message { - mi := &file_v1_project_member_proto_msgTypes[2] + mi := &file_api_v1_project_member_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -160,7 +160,7 @@ func (x *ProjectMemberUpdateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectMemberUpdateRequest.ProtoReflect.Descriptor instead. func (*ProjectMemberUpdateRequest) Descriptor() ([]byte, []int) { - return file_v1_project_member_proto_rawDescGZIP(), []int{2} + return file_api_v1_project_member_proto_rawDescGZIP(), []int{2} } func (x *ProjectMemberUpdateRequest) GetProjectMember() *ProjectMember { @@ -179,7 +179,7 @@ type ProjectMemberDeleteRequest struct { func (x *ProjectMemberDeleteRequest) Reset() { *x = ProjectMemberDeleteRequest{} - mi := &file_v1_project_member_proto_msgTypes[3] + mi := &file_api_v1_project_member_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -191,7 +191,7 @@ func (x *ProjectMemberDeleteRequest) String() string { func (*ProjectMemberDeleteRequest) ProtoMessage() {} func (x *ProjectMemberDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_v1_project_member_proto_msgTypes[3] + mi := &file_api_v1_project_member_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -204,7 +204,7 @@ func (x *ProjectMemberDeleteRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectMemberDeleteRequest.ProtoReflect.Descriptor instead. func (*ProjectMemberDeleteRequest) Descriptor() ([]byte, []int) { - return file_v1_project_member_proto_rawDescGZIP(), []int{3} + return file_api_v1_project_member_proto_rawDescGZIP(), []int{3} } func (x *ProjectMemberDeleteRequest) GetId() string { @@ -223,7 +223,7 @@ type ProjectMemberGetRequest struct { func (x *ProjectMemberGetRequest) Reset() { *x = ProjectMemberGetRequest{} - mi := &file_v1_project_member_proto_msgTypes[4] + mi := &file_api_v1_project_member_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -235,7 +235,7 @@ func (x *ProjectMemberGetRequest) String() string { func (*ProjectMemberGetRequest) ProtoMessage() {} func (x *ProjectMemberGetRequest) ProtoReflect() protoreflect.Message { - mi := &file_v1_project_member_proto_msgTypes[4] + mi := &file_api_v1_project_member_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -248,7 +248,7 @@ func (x *ProjectMemberGetRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectMemberGetRequest.ProtoReflect.Descriptor instead. func (*ProjectMemberGetRequest) Descriptor() ([]byte, []int) { - return file_v1_project_member_proto_rawDescGZIP(), []int{4} + return file_api_v1_project_member_proto_rawDescGZIP(), []int{4} } func (x *ProjectMemberGetRequest) GetId() string { @@ -269,7 +269,7 @@ type ProjectMemberFindRequest struct { func (x *ProjectMemberFindRequest) Reset() { *x = ProjectMemberFindRequest{} - mi := &file_v1_project_member_proto_msgTypes[5] + mi := &file_api_v1_project_member_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -281,7 +281,7 @@ func (x *ProjectMemberFindRequest) String() string { func (*ProjectMemberFindRequest) ProtoMessage() {} func (x *ProjectMemberFindRequest) ProtoReflect() protoreflect.Message { - mi := &file_v1_project_member_proto_msgTypes[5] + mi := &file_api_v1_project_member_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -294,7 +294,7 @@ func (x *ProjectMemberFindRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectMemberFindRequest.ProtoReflect.Descriptor instead. func (*ProjectMemberFindRequest) Descriptor() ([]byte, []int) { - return file_v1_project_member_proto_rawDescGZIP(), []int{5} + return file_api_v1_project_member_proto_rawDescGZIP(), []int{5} } func (x *ProjectMemberFindRequest) GetProjectId() string { @@ -327,7 +327,7 @@ type ProjectMemberResponse struct { func (x *ProjectMemberResponse) Reset() { *x = ProjectMemberResponse{} - mi := &file_v1_project_member_proto_msgTypes[6] + mi := &file_api_v1_project_member_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -339,7 +339,7 @@ func (x *ProjectMemberResponse) String() string { func (*ProjectMemberResponse) ProtoMessage() {} func (x *ProjectMemberResponse) ProtoReflect() protoreflect.Message { - mi := &file_v1_project_member_proto_msgTypes[6] + mi := &file_api_v1_project_member_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -352,7 +352,7 @@ func (x *ProjectMemberResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectMemberResponse.ProtoReflect.Descriptor instead. func (*ProjectMemberResponse) Descriptor() ([]byte, []int) { - return file_v1_project_member_proto_rawDescGZIP(), []int{6} + return file_api_v1_project_member_proto_rawDescGZIP(), []int{6} } func (x *ProjectMemberResponse) GetProjectMember() *ProjectMember { @@ -371,7 +371,7 @@ type ProjectMemberListResponse struct { func (x *ProjectMemberListResponse) Reset() { *x = ProjectMemberListResponse{} - mi := &file_v1_project_member_proto_msgTypes[7] + mi := &file_api_v1_project_member_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -383,7 +383,7 @@ func (x *ProjectMemberListResponse) String() string { func (*ProjectMemberListResponse) ProtoMessage() {} func (x *ProjectMemberListResponse) ProtoReflect() protoreflect.Message { - mi := &file_v1_project_member_proto_msgTypes[7] + mi := &file_api_v1_project_member_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -396,7 +396,7 @@ func (x *ProjectMemberListResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectMemberListResponse.ProtoReflect.Descriptor instead. func (*ProjectMemberListResponse) Descriptor() ([]byte, []int) { - return file_v1_project_member_proto_rawDescGZIP(), []int{7} + return file_api_v1_project_member_proto_rawDescGZIP(), []int{7} } func (x *ProjectMemberListResponse) GetProjectMembers() []*ProjectMember { @@ -406,89 +406,90 @@ func (x *ProjectMemberListResponse) GetProjectMembers() []*ProjectMember { return nil } -var File_v1_project_member_proto protoreflect.FileDescriptor +var File_api_v1_project_member_proto protoreflect.FileDescriptor -const file_v1_project_member_proto_rawDesc = "" + +const file_api_v1_project_member_proto_rawDesc = "" + "\n" + - "\x17v1/project_member.proto\x12\x02v1\x1a\rv1/meta.proto\"i\n" + - "\rProjectMember\x12\x1c\n" + - "\x04meta\x18\x01 \x01(\v2\b.v1.MetaR\x04meta\x12\x1d\n" + + "\x1bapi/v1/project_member.proto\x12\x06api.v1\x1a\x11api/v1/meta.proto\"m\n" + + "\rProjectMember\x12 \n" + + "\x04meta\x18\x01 \x01(\v2\f.api.v1.MetaR\x04meta\x12\x1d\n" + "\n" + "project_id\x18\x02 \x01(\tR\tprojectId\x12\x1b\n" + - "\ttenant_id\x18\x04 \x01(\tR\btenantId\"V\n" + - "\x1aProjectMemberCreateRequest\x128\n" + - "\x0eproject_member\x18\x01 \x01(\v2\x11.v1.ProjectMemberR\rprojectMember\"V\n" + - "\x1aProjectMemberUpdateRequest\x128\n" + - "\x0eproject_member\x18\x01 \x01(\v2\x11.v1.ProjectMemberR\rprojectMember\",\n" + + "\ttenant_id\x18\x04 \x01(\tR\btenantId\"Z\n" + + "\x1aProjectMemberCreateRequest\x12<\n" + + "\x0eproject_member\x18\x01 \x01(\v2\x15.api.v1.ProjectMemberR\rprojectMember\"Z\n" + + "\x1aProjectMemberUpdateRequest\x12<\n" + + "\x0eproject_member\x18\x01 \x01(\v2\x15.api.v1.ProjectMemberR\rprojectMember\",\n" + "\x1aProjectMemberDeleteRequest\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\")\n" + "\x17ProjectMemberGetRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\"\x8e\x02\n" + + "\x02id\x18\x01 \x01(\tR\x02id\"\x92\x02\n" + "\x18ProjectMemberFindRequest\x12\"\n" + "\n" + "project_id\x18\x01 \x01(\tH\x00R\tprojectId\x88\x01\x01\x12 \n" + - "\ttenant_id\x18\x02 \x01(\tH\x01R\btenantId\x88\x01\x01\x12O\n" + - "\vannotations\x18\x06 \x03(\v2-.v1.ProjectMemberFindRequest.AnnotationsEntryR\vannotations\x1a>\n" + + "\ttenant_id\x18\x02 \x01(\tH\x01R\btenantId\x88\x01\x01\x12S\n" + + "\vannotations\x18\x06 \x03(\v21.api.v1.ProjectMemberFindRequest.AnnotationsEntryR\vannotations\x1a>\n" + "\x10AnnotationsEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\r\n" + "\v_project_idB\f\n" + "\n" + - "_tenant_id\"Q\n" + - "\x15ProjectMemberResponse\x128\n" + - "\x0eproject_member\x18\x01 \x01(\v2\x11.v1.ProjectMemberR\rprojectMember\"W\n" + - "\x19ProjectMemberListResponse\x12:\n" + - "\x0fproject_members\x18\x01 \x03(\v2\x11.v1.ProjectMemberR\x0eprojectMembers2\xe9\x02\n" + - "\x14ProjectMemberService\x12C\n" + - "\x06Create\x12\x1e.v1.ProjectMemberCreateRequest\x1a\x19.v1.ProjectMemberResponse\x12C\n" + - "\x06Update\x12\x1e.v1.ProjectMemberUpdateRequest\x1a\x19.v1.ProjectMemberResponse\x12C\n" + - "\x06Delete\x12\x1e.v1.ProjectMemberDeleteRequest\x1a\x19.v1.ProjectMemberResponse\x12=\n" + - "\x03Get\x12\x1b.v1.ProjectMemberGetRequest\x1a\x19.v1.ProjectMemberResponse\x12C\n" + - "\x04Find\x12\x1c.v1.ProjectMemberFindRequest\x1a\x1d.v1.ProjectMemberListResponseBn\n" + - "\x06com.v1B\x12ProjectMemberProtoP\x01Z(github.com/metal-stack/masterdata-api/v1\xa2\x02\x03VXX\xaa\x02\x02V1\xca\x02\x02V1\xe2\x02\x0eV1\\GPBMetadata\xea\x02\x02V1b\x06proto3" + "_tenant_id\"U\n" + + "\x15ProjectMemberResponse\x12<\n" + + "\x0eproject_member\x18\x01 \x01(\v2\x15.api.v1.ProjectMemberR\rprojectMember\"[\n" + + "\x19ProjectMemberListResponse\x12>\n" + + "\x0fproject_members\x18\x01 \x03(\v2\x15.api.v1.ProjectMemberR\x0eprojectMembers2\x91\x03\n" + + "\x14ProjectMemberService\x12K\n" + + "\x06Create\x12\".api.v1.ProjectMemberCreateRequest\x1a\x1d.api.v1.ProjectMemberResponse\x12K\n" + + "\x06Update\x12\".api.v1.ProjectMemberUpdateRequest\x1a\x1d.api.v1.ProjectMemberResponse\x12K\n" + + "\x06Delete\x12\".api.v1.ProjectMemberDeleteRequest\x1a\x1d.api.v1.ProjectMemberResponse\x12E\n" + + "\x03Get\x12\x1f.api.v1.ProjectMemberGetRequest\x1a\x1d.api.v1.ProjectMemberResponse\x12K\n" + + "\x04Find\x12 .api.v1.ProjectMemberFindRequest\x1a!.api.v1.ProjectMemberListResponseB\x8d\x01\n" + + "\n" + + "com.api.v1B\x12ProjectMemberProtoP\x01Z2github.com/metal-stack/masterdata-api/api/v1;apiv1\xa2\x02\x03AXX\xaa\x02\x06Api.V1\xca\x02\x06Api\\V1\xe2\x02\x12Api\\V1\\GPBMetadata\xea\x02\aApi::V1b\x06proto3" var ( - file_v1_project_member_proto_rawDescOnce sync.Once - file_v1_project_member_proto_rawDescData []byte + file_api_v1_project_member_proto_rawDescOnce sync.Once + file_api_v1_project_member_proto_rawDescData []byte ) -func file_v1_project_member_proto_rawDescGZIP() []byte { - file_v1_project_member_proto_rawDescOnce.Do(func() { - file_v1_project_member_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_v1_project_member_proto_rawDesc), len(file_v1_project_member_proto_rawDesc))) +func file_api_v1_project_member_proto_rawDescGZIP() []byte { + file_api_v1_project_member_proto_rawDescOnce.Do(func() { + file_api_v1_project_member_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_api_v1_project_member_proto_rawDesc), len(file_api_v1_project_member_proto_rawDesc))) }) - return file_v1_project_member_proto_rawDescData -} - -var file_v1_project_member_proto_msgTypes = make([]protoimpl.MessageInfo, 9) -var file_v1_project_member_proto_goTypes = []any{ - (*ProjectMember)(nil), // 0: v1.ProjectMember - (*ProjectMemberCreateRequest)(nil), // 1: v1.ProjectMemberCreateRequest - (*ProjectMemberUpdateRequest)(nil), // 2: v1.ProjectMemberUpdateRequest - (*ProjectMemberDeleteRequest)(nil), // 3: v1.ProjectMemberDeleteRequest - (*ProjectMemberGetRequest)(nil), // 4: v1.ProjectMemberGetRequest - (*ProjectMemberFindRequest)(nil), // 5: v1.ProjectMemberFindRequest - (*ProjectMemberResponse)(nil), // 6: v1.ProjectMemberResponse - (*ProjectMemberListResponse)(nil), // 7: v1.ProjectMemberListResponse - nil, // 8: v1.ProjectMemberFindRequest.AnnotationsEntry - (*Meta)(nil), // 9: v1.Meta -} -var file_v1_project_member_proto_depIdxs = []int32{ - 9, // 0: v1.ProjectMember.meta:type_name -> v1.Meta - 0, // 1: v1.ProjectMemberCreateRequest.project_member:type_name -> v1.ProjectMember - 0, // 2: v1.ProjectMemberUpdateRequest.project_member:type_name -> v1.ProjectMember - 8, // 3: v1.ProjectMemberFindRequest.annotations:type_name -> v1.ProjectMemberFindRequest.AnnotationsEntry - 0, // 4: v1.ProjectMemberResponse.project_member:type_name -> v1.ProjectMember - 0, // 5: v1.ProjectMemberListResponse.project_members:type_name -> v1.ProjectMember - 1, // 6: v1.ProjectMemberService.Create:input_type -> v1.ProjectMemberCreateRequest - 2, // 7: v1.ProjectMemberService.Update:input_type -> v1.ProjectMemberUpdateRequest - 3, // 8: v1.ProjectMemberService.Delete:input_type -> v1.ProjectMemberDeleteRequest - 4, // 9: v1.ProjectMemberService.Get:input_type -> v1.ProjectMemberGetRequest - 5, // 10: v1.ProjectMemberService.Find:input_type -> v1.ProjectMemberFindRequest - 6, // 11: v1.ProjectMemberService.Create:output_type -> v1.ProjectMemberResponse - 6, // 12: v1.ProjectMemberService.Update:output_type -> v1.ProjectMemberResponse - 6, // 13: v1.ProjectMemberService.Delete:output_type -> v1.ProjectMemberResponse - 6, // 14: v1.ProjectMemberService.Get:output_type -> v1.ProjectMemberResponse - 7, // 15: v1.ProjectMemberService.Find:output_type -> v1.ProjectMemberListResponse + return file_api_v1_project_member_proto_rawDescData +} + +var file_api_v1_project_member_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_api_v1_project_member_proto_goTypes = []any{ + (*ProjectMember)(nil), // 0: api.v1.ProjectMember + (*ProjectMemberCreateRequest)(nil), // 1: api.v1.ProjectMemberCreateRequest + (*ProjectMemberUpdateRequest)(nil), // 2: api.v1.ProjectMemberUpdateRequest + (*ProjectMemberDeleteRequest)(nil), // 3: api.v1.ProjectMemberDeleteRequest + (*ProjectMemberGetRequest)(nil), // 4: api.v1.ProjectMemberGetRequest + (*ProjectMemberFindRequest)(nil), // 5: api.v1.ProjectMemberFindRequest + (*ProjectMemberResponse)(nil), // 6: api.v1.ProjectMemberResponse + (*ProjectMemberListResponse)(nil), // 7: api.v1.ProjectMemberListResponse + nil, // 8: api.v1.ProjectMemberFindRequest.AnnotationsEntry + (*Meta)(nil), // 9: api.v1.Meta +} +var file_api_v1_project_member_proto_depIdxs = []int32{ + 9, // 0: api.v1.ProjectMember.meta:type_name -> api.v1.Meta + 0, // 1: api.v1.ProjectMemberCreateRequest.project_member:type_name -> api.v1.ProjectMember + 0, // 2: api.v1.ProjectMemberUpdateRequest.project_member:type_name -> api.v1.ProjectMember + 8, // 3: api.v1.ProjectMemberFindRequest.annotations:type_name -> api.v1.ProjectMemberFindRequest.AnnotationsEntry + 0, // 4: api.v1.ProjectMemberResponse.project_member:type_name -> api.v1.ProjectMember + 0, // 5: api.v1.ProjectMemberListResponse.project_members:type_name -> api.v1.ProjectMember + 1, // 6: api.v1.ProjectMemberService.Create:input_type -> api.v1.ProjectMemberCreateRequest + 2, // 7: api.v1.ProjectMemberService.Update:input_type -> api.v1.ProjectMemberUpdateRequest + 3, // 8: api.v1.ProjectMemberService.Delete:input_type -> api.v1.ProjectMemberDeleteRequest + 4, // 9: api.v1.ProjectMemberService.Get:input_type -> api.v1.ProjectMemberGetRequest + 5, // 10: api.v1.ProjectMemberService.Find:input_type -> api.v1.ProjectMemberFindRequest + 6, // 11: api.v1.ProjectMemberService.Create:output_type -> api.v1.ProjectMemberResponse + 6, // 12: api.v1.ProjectMemberService.Update:output_type -> api.v1.ProjectMemberResponse + 6, // 13: api.v1.ProjectMemberService.Delete:output_type -> api.v1.ProjectMemberResponse + 6, // 14: api.v1.ProjectMemberService.Get:output_type -> api.v1.ProjectMemberResponse + 7, // 15: api.v1.ProjectMemberService.Find:output_type -> api.v1.ProjectMemberListResponse 11, // [11:16] is the sub-list for method output_type 6, // [6:11] is the sub-list for method input_type 6, // [6:6] is the sub-list for extension type_name @@ -496,28 +497,28 @@ var file_v1_project_member_proto_depIdxs = []int32{ 0, // [0:6] is the sub-list for field type_name } -func init() { file_v1_project_member_proto_init() } -func file_v1_project_member_proto_init() { - if File_v1_project_member_proto != nil { +func init() { file_api_v1_project_member_proto_init() } +func file_api_v1_project_member_proto_init() { + if File_api_v1_project_member_proto != nil { return } - file_v1_meta_proto_init() - file_v1_project_member_proto_msgTypes[5].OneofWrappers = []any{} + file_api_v1_meta_proto_init() + file_api_v1_project_member_proto_msgTypes[5].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_v1_project_member_proto_rawDesc), len(file_v1_project_member_proto_rawDesc)), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_api_v1_project_member_proto_rawDesc), len(file_api_v1_project_member_proto_rawDesc)), NumEnums: 0, NumMessages: 9, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_v1_project_member_proto_goTypes, - DependencyIndexes: file_v1_project_member_proto_depIdxs, - MessageInfos: file_v1_project_member_proto_msgTypes, + GoTypes: file_api_v1_project_member_proto_goTypes, + DependencyIndexes: file_api_v1_project_member_proto_depIdxs, + MessageInfos: file_api_v1_project_member_proto_msgTypes, }.Build() - File_v1_project_member_proto = out.File - file_v1_project_member_proto_goTypes = nil - file_v1_project_member_proto_depIdxs = nil + File_api_v1_project_member_proto = out.File + file_api_v1_project_member_proto_goTypes = nil + file_api_v1_project_member_proto_depIdxs = nil } diff --git a/api/v1/project_member_grpc.pb.go b/api/v1/project_member_grpc.pb.go deleted file mode 100644 index c58d842..0000000 --- a/api/v1/project_member_grpc.pb.go +++ /dev/null @@ -1,271 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.5.1 -// - protoc (unknown) -// source: v1/project_member.proto - -package v1 - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.64.0 or later. -const _ = grpc.SupportPackageIsVersion9 - -const ( - ProjectMemberService_Create_FullMethodName = "/v1.ProjectMemberService/Create" - ProjectMemberService_Update_FullMethodName = "/v1.ProjectMemberService/Update" - ProjectMemberService_Delete_FullMethodName = "/v1.ProjectMemberService/Delete" - ProjectMemberService_Get_FullMethodName = "/v1.ProjectMemberService/Get" - ProjectMemberService_Find_FullMethodName = "/v1.ProjectMemberService/Find" -) - -// ProjectMemberServiceClient is the client API for ProjectMemberService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -type ProjectMemberServiceClient interface { - Create(ctx context.Context, in *ProjectMemberCreateRequest, opts ...grpc.CallOption) (*ProjectMemberResponse, error) - Update(ctx context.Context, in *ProjectMemberUpdateRequest, opts ...grpc.CallOption) (*ProjectMemberResponse, error) - Delete(ctx context.Context, in *ProjectMemberDeleteRequest, opts ...grpc.CallOption) (*ProjectMemberResponse, error) - Get(ctx context.Context, in *ProjectMemberGetRequest, opts ...grpc.CallOption) (*ProjectMemberResponse, error) - Find(ctx context.Context, in *ProjectMemberFindRequest, opts ...grpc.CallOption) (*ProjectMemberListResponse, error) -} - -type projectMemberServiceClient struct { - cc grpc.ClientConnInterface -} - -func NewProjectMemberServiceClient(cc grpc.ClientConnInterface) ProjectMemberServiceClient { - return &projectMemberServiceClient{cc} -} - -func (c *projectMemberServiceClient) Create(ctx context.Context, in *ProjectMemberCreateRequest, opts ...grpc.CallOption) (*ProjectMemberResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(ProjectMemberResponse) - err := c.cc.Invoke(ctx, ProjectMemberService_Create_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *projectMemberServiceClient) Update(ctx context.Context, in *ProjectMemberUpdateRequest, opts ...grpc.CallOption) (*ProjectMemberResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(ProjectMemberResponse) - err := c.cc.Invoke(ctx, ProjectMemberService_Update_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *projectMemberServiceClient) Delete(ctx context.Context, in *ProjectMemberDeleteRequest, opts ...grpc.CallOption) (*ProjectMemberResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(ProjectMemberResponse) - err := c.cc.Invoke(ctx, ProjectMemberService_Delete_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *projectMemberServiceClient) Get(ctx context.Context, in *ProjectMemberGetRequest, opts ...grpc.CallOption) (*ProjectMemberResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(ProjectMemberResponse) - err := c.cc.Invoke(ctx, ProjectMemberService_Get_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *projectMemberServiceClient) Find(ctx context.Context, in *ProjectMemberFindRequest, opts ...grpc.CallOption) (*ProjectMemberListResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(ProjectMemberListResponse) - err := c.cc.Invoke(ctx, ProjectMemberService_Find_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -// ProjectMemberServiceServer is the server API for ProjectMemberService service. -// All implementations should embed UnimplementedProjectMemberServiceServer -// for forward compatibility. -type ProjectMemberServiceServer interface { - Create(context.Context, *ProjectMemberCreateRequest) (*ProjectMemberResponse, error) - Update(context.Context, *ProjectMemberUpdateRequest) (*ProjectMemberResponse, error) - Delete(context.Context, *ProjectMemberDeleteRequest) (*ProjectMemberResponse, error) - Get(context.Context, *ProjectMemberGetRequest) (*ProjectMemberResponse, error) - Find(context.Context, *ProjectMemberFindRequest) (*ProjectMemberListResponse, error) -} - -// UnimplementedProjectMemberServiceServer should be embedded to have -// forward compatible implementations. -// -// NOTE: this should be embedded by value instead of pointer to avoid a nil -// pointer dereference when methods are called. -type UnimplementedProjectMemberServiceServer struct{} - -func (UnimplementedProjectMemberServiceServer) Create(context.Context, *ProjectMemberCreateRequest) (*ProjectMemberResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") -} -func (UnimplementedProjectMemberServiceServer) Update(context.Context, *ProjectMemberUpdateRequest) (*ProjectMemberResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Update not implemented") -} -func (UnimplementedProjectMemberServiceServer) Delete(context.Context, *ProjectMemberDeleteRequest) (*ProjectMemberResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") -} -func (UnimplementedProjectMemberServiceServer) Get(context.Context, *ProjectMemberGetRequest) (*ProjectMemberResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") -} -func (UnimplementedProjectMemberServiceServer) Find(context.Context, *ProjectMemberFindRequest) (*ProjectMemberListResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Find not implemented") -} -func (UnimplementedProjectMemberServiceServer) testEmbeddedByValue() {} - -// UnsafeProjectMemberServiceServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to ProjectMemberServiceServer will -// result in compilation errors. -type UnsafeProjectMemberServiceServer interface { - mustEmbedUnimplementedProjectMemberServiceServer() -} - -func RegisterProjectMemberServiceServer(s grpc.ServiceRegistrar, srv ProjectMemberServiceServer) { - // If the following call pancis, it indicates UnimplementedProjectMemberServiceServer was - // embedded by pointer and is nil. This will cause panics if an - // unimplemented method is ever invoked, so we test this at initialization - // time to prevent it from happening at runtime later due to I/O. - if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { - t.testEmbeddedByValue() - } - s.RegisterService(&ProjectMemberService_ServiceDesc, srv) -} - -func _ProjectMemberService_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ProjectMemberCreateRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ProjectMemberServiceServer).Create(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: ProjectMemberService_Create_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ProjectMemberServiceServer).Create(ctx, req.(*ProjectMemberCreateRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ProjectMemberService_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ProjectMemberUpdateRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ProjectMemberServiceServer).Update(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: ProjectMemberService_Update_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ProjectMemberServiceServer).Update(ctx, req.(*ProjectMemberUpdateRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ProjectMemberService_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ProjectMemberDeleteRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ProjectMemberServiceServer).Delete(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: ProjectMemberService_Delete_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ProjectMemberServiceServer).Delete(ctx, req.(*ProjectMemberDeleteRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ProjectMemberService_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ProjectMemberGetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ProjectMemberServiceServer).Get(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: ProjectMemberService_Get_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ProjectMemberServiceServer).Get(ctx, req.(*ProjectMemberGetRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ProjectMemberService_Find_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ProjectMemberFindRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ProjectMemberServiceServer).Find(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: ProjectMemberService_Find_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ProjectMemberServiceServer).Find(ctx, req.(*ProjectMemberFindRequest)) - } - return interceptor(ctx, in, info, handler) -} - -// ProjectMemberService_ServiceDesc is the grpc.ServiceDesc for ProjectMemberService service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var ProjectMemberService_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "v1.ProjectMemberService", - HandlerType: (*ProjectMemberServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Create", - Handler: _ProjectMemberService_Create_Handler, - }, - { - MethodName: "Update", - Handler: _ProjectMemberService_Update_Handler, - }, - { - MethodName: "Delete", - Handler: _ProjectMemberService_Delete_Handler, - }, - { - MethodName: "Get", - Handler: _ProjectMemberService_Get_Handler, - }, - { - MethodName: "Find", - Handler: _ProjectMemberService_Find_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "v1/project_member.proto", -} diff --git a/api/v1/project_scnrvalr.go b/api/v1/project_scnrvalr.go index ac0d082..ea7ccc1 100644 --- a/api/v1/project_scnrvalr.go +++ b/api/v1/project_scnrvalr.go @@ -2,7 +2,7 @@ // DO NOT EDIT MANUALLY. // Regenerate with "go generate" or "make generate" -package v1 +package apiv1 import ( "database/sql/driver" @@ -40,7 +40,7 @@ func (p *Project) Kind() string { } func (p *Project) APIVersion() string { - return "v1" + return "apiv1" } // Value make the Project struct implement the driver.Valuer interface. This method diff --git a/api/v1/projectmember.go b/api/v1/projectmember.go index 78416a3..bb38ca2 100644 --- a/api/v1/projectmember.go +++ b/api/v1/projectmember.go @@ -1,6 +1,6 @@ -package v1 +package apiv1 -//go:generate go run ../../pkg/gen/genscanvaluer.go -package v1 -type ProjectMember +//go:generate go run ../../pkg/gen/genscanvaluer.go -package apiv1 -type ProjectMember func (m *ProjectMember) NewProjectMemberResponse() *ProjectMemberResponse { return &ProjectMemberResponse{ diff --git a/api/v1/projectmember_scnrvalr.go b/api/v1/projectmember_scnrvalr.go index 52be0ee..a592ebd 100644 --- a/api/v1/projectmember_scnrvalr.go +++ b/api/v1/projectmember_scnrvalr.go @@ -2,7 +2,7 @@ // DO NOT EDIT MANUALLY. // Regenerate with "go generate" or "make generate" -package v1 +package apiv1 import ( "database/sql/driver" @@ -40,7 +40,7 @@ func (p *ProjectMember) Kind() string { } func (p *ProjectMember) APIVersion() string { - return "v1" + return "apiv1" } // Value make the ProjectMember struct implement the driver.Valuer interface. This method diff --git a/api/v1/quota.pb.go b/api/v1/quota.pb.go index 1317c8c..3d3d922 100644 --- a/api/v1/quota.pb.go +++ b/api/v1/quota.pb.go @@ -2,9 +2,9 @@ // versions: // protoc-gen-go v1.36.6 // protoc (unknown) -// source: v1/quota.proto +// source: api/v1/quota.proto -package v1 +package apiv1 import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -41,7 +41,7 @@ type QuotaSet struct { func (x *QuotaSet) Reset() { *x = QuotaSet{} - mi := &file_v1_quota_proto_msgTypes[0] + mi := &file_api_v1_quota_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -53,7 +53,7 @@ func (x *QuotaSet) String() string { func (*QuotaSet) ProtoMessage() {} func (x *QuotaSet) ProtoReflect() protoreflect.Message { - mi := &file_v1_quota_proto_msgTypes[0] + mi := &file_api_v1_quota_proto_msgTypes[0] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -66,7 +66,7 @@ func (x *QuotaSet) ProtoReflect() protoreflect.Message { // Deprecated: Use QuotaSet.ProtoReflect.Descriptor instead. func (*QuotaSet) Descriptor() ([]byte, []int) { - return file_v1_quota_proto_rawDescGZIP(), []int{0} + return file_api_v1_quota_proto_rawDescGZIP(), []int{0} } func (x *QuotaSet) GetCluster() *Quota { @@ -108,7 +108,7 @@ type Quota struct { func (x *Quota) Reset() { *x = Quota{} - mi := &file_v1_quota_proto_msgTypes[1] + mi := &file_api_v1_quota_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -120,7 +120,7 @@ func (x *Quota) String() string { func (*Quota) ProtoMessage() {} func (x *Quota) ProtoReflect() protoreflect.Message { - mi := &file_v1_quota_proto_msgTypes[1] + mi := &file_api_v1_quota_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -133,7 +133,7 @@ func (x *Quota) ProtoReflect() protoreflect.Message { // Deprecated: Use Quota.ProtoReflect.Descriptor instead. func (*Quota) Descriptor() ([]byte, []int) { - return file_v1_quota_proto_rawDescGZIP(), []int{1} + return file_api_v1_quota_proto_rawDescGZIP(), []int{1} } func (x *Quota) GetQuota() int32 { @@ -143,44 +143,45 @@ func (x *Quota) GetQuota() int32 { return 0 } -var File_v1_quota_proto protoreflect.FileDescriptor +var File_api_v1_quota_proto protoreflect.FileDescriptor -const file_v1_quota_proto_rawDesc = "" + +const file_api_v1_quota_proto_rawDesc = "" + "\n" + - "\x0ev1/quota.proto\x12\x02v1\"\x94\x01\n" + - "\bQuotaSet\x12#\n" + - "\acluster\x18\x01 \x01(\v2\t.v1.QuotaR\acluster\x12#\n" + - "\amachine\x18\x02 \x01(\v2\t.v1.QuotaR\amachine\x12\x19\n" + - "\x02ip\x18\x03 \x01(\v2\t.v1.QuotaR\x02ip\x12#\n" + - "\aproject\x18\x04 \x01(\v2\t.v1.QuotaR\aproject\",\n" + + "\x12api/v1/quota.proto\x12\x06api.v1\"\xa4\x01\n" + + "\bQuotaSet\x12'\n" + + "\acluster\x18\x01 \x01(\v2\r.api.v1.QuotaR\acluster\x12'\n" + + "\amachine\x18\x02 \x01(\v2\r.api.v1.QuotaR\amachine\x12\x1d\n" + + "\x02ip\x18\x03 \x01(\v2\r.api.v1.QuotaR\x02ip\x12'\n" + + "\aproject\x18\x04 \x01(\v2\r.api.v1.QuotaR\aproject\",\n" + "\x05Quota\x12\x19\n" + "\x05quota\x18\x01 \x01(\x05H\x00R\x05quota\x88\x01\x01B\b\n" + - "\x06_quotaBf\n" + - "\x06com.v1B\n" + - "QuotaProtoP\x01Z(github.com/metal-stack/masterdata-api/v1\xa2\x02\x03VXX\xaa\x02\x02V1\xca\x02\x02V1\xe2\x02\x0eV1\\GPBMetadata\xea\x02\x02V1b\x06proto3" + "\x06_quotaB\x85\x01\n" + + "\n" + + "com.api.v1B\n" + + "QuotaProtoP\x01Z2github.com/metal-stack/masterdata-api/api/v1;apiv1\xa2\x02\x03AXX\xaa\x02\x06Api.V1\xca\x02\x06Api\\V1\xe2\x02\x12Api\\V1\\GPBMetadata\xea\x02\aApi::V1b\x06proto3" var ( - file_v1_quota_proto_rawDescOnce sync.Once - file_v1_quota_proto_rawDescData []byte + file_api_v1_quota_proto_rawDescOnce sync.Once + file_api_v1_quota_proto_rawDescData []byte ) -func file_v1_quota_proto_rawDescGZIP() []byte { - file_v1_quota_proto_rawDescOnce.Do(func() { - file_v1_quota_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_v1_quota_proto_rawDesc), len(file_v1_quota_proto_rawDesc))) +func file_api_v1_quota_proto_rawDescGZIP() []byte { + file_api_v1_quota_proto_rawDescOnce.Do(func() { + file_api_v1_quota_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_api_v1_quota_proto_rawDesc), len(file_api_v1_quota_proto_rawDesc))) }) - return file_v1_quota_proto_rawDescData + return file_api_v1_quota_proto_rawDescData } -var file_v1_quota_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_v1_quota_proto_goTypes = []any{ - (*QuotaSet)(nil), // 0: v1.QuotaSet - (*Quota)(nil), // 1: v1.Quota +var file_api_v1_quota_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_api_v1_quota_proto_goTypes = []any{ + (*QuotaSet)(nil), // 0: api.v1.QuotaSet + (*Quota)(nil), // 1: api.v1.Quota } -var file_v1_quota_proto_depIdxs = []int32{ - 1, // 0: v1.QuotaSet.cluster:type_name -> v1.Quota - 1, // 1: v1.QuotaSet.machine:type_name -> v1.Quota - 1, // 2: v1.QuotaSet.ip:type_name -> v1.Quota - 1, // 3: v1.QuotaSet.project:type_name -> v1.Quota +var file_api_v1_quota_proto_depIdxs = []int32{ + 1, // 0: api.v1.QuotaSet.cluster:type_name -> api.v1.Quota + 1, // 1: api.v1.QuotaSet.machine:type_name -> api.v1.Quota + 1, // 2: api.v1.QuotaSet.ip:type_name -> api.v1.Quota + 1, // 3: api.v1.QuotaSet.project:type_name -> api.v1.Quota 4, // [4:4] is the sub-list for method output_type 4, // [4:4] is the sub-list for method input_type 4, // [4:4] is the sub-list for extension type_name @@ -188,27 +189,27 @@ var file_v1_quota_proto_depIdxs = []int32{ 0, // [0:4] is the sub-list for field type_name } -func init() { file_v1_quota_proto_init() } -func file_v1_quota_proto_init() { - if File_v1_quota_proto != nil { +func init() { file_api_v1_quota_proto_init() } +func file_api_v1_quota_proto_init() { + if File_api_v1_quota_proto != nil { return } - file_v1_quota_proto_msgTypes[1].OneofWrappers = []any{} + file_api_v1_quota_proto_msgTypes[1].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_v1_quota_proto_rawDesc), len(file_v1_quota_proto_rawDesc)), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_api_v1_quota_proto_rawDesc), len(file_api_v1_quota_proto_rawDesc)), NumEnums: 0, NumMessages: 2, NumExtensions: 0, NumServices: 0, }, - GoTypes: file_v1_quota_proto_goTypes, - DependencyIndexes: file_v1_quota_proto_depIdxs, - MessageInfos: file_v1_quota_proto_msgTypes, + GoTypes: file_api_v1_quota_proto_goTypes, + DependencyIndexes: file_api_v1_quota_proto_depIdxs, + MessageInfos: file_api_v1_quota_proto_msgTypes, }.Build() - File_v1_quota_proto = out.File - file_v1_quota_proto_goTypes = nil - file_v1_quota_proto_depIdxs = nil + File_api_v1_quota_proto = out.File + file_api_v1_quota_proto_goTypes = nil + file_api_v1_quota_proto_depIdxs = nil } diff --git a/api/v1/tenant.go b/api/v1/tenant.go index f98d935..fd3cce4 100644 --- a/api/v1/tenant.go +++ b/api/v1/tenant.go @@ -1,6 +1,6 @@ -package v1 +package apiv1 -//go:generate go run ../../pkg/gen/genscanvaluer.go -package v1 -type Tenant +//go:generate go run ../../pkg/gen/genscanvaluer.go -package apiv1 -type Tenant func (m *Tenant) NewTenantResponse() *TenantResponse { return &TenantResponse{ diff --git a/api/v1/tenant.pb.go b/api/v1/tenant.pb.go index 337af2a..9c380ff 100644 --- a/api/v1/tenant.pb.go +++ b/api/v1/tenant.pb.go @@ -2,9 +2,9 @@ // versions: // protoc-gen-go v1.36.6 // protoc (unknown) -// source: v1/tenant.proto +// source: api/v1/tenant.proto -package v1 +package apiv1 import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -32,7 +32,7 @@ type FindParticipatingProjectsRequest struct { func (x *FindParticipatingProjectsRequest) Reset() { *x = FindParticipatingProjectsRequest{} - mi := &file_v1_tenant_proto_msgTypes[0] + mi := &file_api_v1_tenant_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -44,7 +44,7 @@ func (x *FindParticipatingProjectsRequest) String() string { func (*FindParticipatingProjectsRequest) ProtoMessage() {} func (x *FindParticipatingProjectsRequest) ProtoReflect() protoreflect.Message { - mi := &file_v1_tenant_proto_msgTypes[0] + mi := &file_api_v1_tenant_proto_msgTypes[0] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -57,7 +57,7 @@ func (x *FindParticipatingProjectsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use FindParticipatingProjectsRequest.ProtoReflect.Descriptor instead. func (*FindParticipatingProjectsRequest) Descriptor() ([]byte, []int) { - return file_v1_tenant_proto_rawDescGZIP(), []int{0} + return file_api_v1_tenant_proto_rawDescGZIP(), []int{0} } func (x *FindParticipatingProjectsRequest) GetTenantId() string { @@ -84,7 +84,7 @@ type FindParticipatingTenantsRequest struct { func (x *FindParticipatingTenantsRequest) Reset() { *x = FindParticipatingTenantsRequest{} - mi := &file_v1_tenant_proto_msgTypes[1] + mi := &file_api_v1_tenant_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -96,7 +96,7 @@ func (x *FindParticipatingTenantsRequest) String() string { func (*FindParticipatingTenantsRequest) ProtoMessage() {} func (x *FindParticipatingTenantsRequest) ProtoReflect() protoreflect.Message { - mi := &file_v1_tenant_proto_msgTypes[1] + mi := &file_api_v1_tenant_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -109,7 +109,7 @@ func (x *FindParticipatingTenantsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use FindParticipatingTenantsRequest.ProtoReflect.Descriptor instead. func (*FindParticipatingTenantsRequest) Descriptor() ([]byte, []int) { - return file_v1_tenant_proto_rawDescGZIP(), []int{1} + return file_api_v1_tenant_proto_rawDescGZIP(), []int{1} } func (x *FindParticipatingTenantsRequest) GetTenantId() string { @@ -136,7 +136,7 @@ type ListTenantMembersRequest struct { func (x *ListTenantMembersRequest) Reset() { *x = ListTenantMembersRequest{} - mi := &file_v1_tenant_proto_msgTypes[2] + mi := &file_api_v1_tenant_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -148,7 +148,7 @@ func (x *ListTenantMembersRequest) String() string { func (*ListTenantMembersRequest) ProtoMessage() {} func (x *ListTenantMembersRequest) ProtoReflect() protoreflect.Message { - mi := &file_v1_tenant_proto_msgTypes[2] + mi := &file_api_v1_tenant_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -161,7 +161,7 @@ func (x *ListTenantMembersRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTenantMembersRequest.ProtoReflect.Descriptor instead. func (*ListTenantMembersRequest) Descriptor() ([]byte, []int) { - return file_v1_tenant_proto_rawDescGZIP(), []int{2} + return file_api_v1_tenant_proto_rawDescGZIP(), []int{2} } func (x *ListTenantMembersRequest) GetTenantId() string { @@ -187,7 +187,7 @@ type ListTenantMembersResponse struct { func (x *ListTenantMembersResponse) Reset() { *x = ListTenantMembersResponse{} - mi := &file_v1_tenant_proto_msgTypes[3] + mi := &file_api_v1_tenant_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -199,7 +199,7 @@ func (x *ListTenantMembersResponse) String() string { func (*ListTenantMembersResponse) ProtoMessage() {} func (x *ListTenantMembersResponse) ProtoReflect() protoreflect.Message { - mi := &file_v1_tenant_proto_msgTypes[3] + mi := &file_api_v1_tenant_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -212,7 +212,7 @@ func (x *ListTenantMembersResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTenantMembersResponse.ProtoReflect.Descriptor instead. func (*ListTenantMembersResponse) Descriptor() ([]byte, []int) { - return file_v1_tenant_proto_rawDescGZIP(), []int{3} + return file_api_v1_tenant_proto_rawDescGZIP(), []int{3} } func (x *ListTenantMembersResponse) GetTenants() []*TenantWithMembershipAnnotations { @@ -231,7 +231,7 @@ type FindParticipatingProjectsResponse struct { func (x *FindParticipatingProjectsResponse) Reset() { *x = FindParticipatingProjectsResponse{} - mi := &file_v1_tenant_proto_msgTypes[4] + mi := &file_api_v1_tenant_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -243,7 +243,7 @@ func (x *FindParticipatingProjectsResponse) String() string { func (*FindParticipatingProjectsResponse) ProtoMessage() {} func (x *FindParticipatingProjectsResponse) ProtoReflect() protoreflect.Message { - mi := &file_v1_tenant_proto_msgTypes[4] + mi := &file_api_v1_tenant_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -256,7 +256,7 @@ func (x *FindParticipatingProjectsResponse) ProtoReflect() protoreflect.Message // Deprecated: Use FindParticipatingProjectsResponse.ProtoReflect.Descriptor instead. func (*FindParticipatingProjectsResponse) Descriptor() ([]byte, []int) { - return file_v1_tenant_proto_rawDescGZIP(), []int{4} + return file_api_v1_tenant_proto_rawDescGZIP(), []int{4} } func (x *FindParticipatingProjectsResponse) GetProjects() []*ProjectWithMembershipAnnotations { @@ -275,7 +275,7 @@ type FindParticipatingTenantsResponse struct { func (x *FindParticipatingTenantsResponse) Reset() { *x = FindParticipatingTenantsResponse{} - mi := &file_v1_tenant_proto_msgTypes[5] + mi := &file_api_v1_tenant_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -287,7 +287,7 @@ func (x *FindParticipatingTenantsResponse) String() string { func (*FindParticipatingTenantsResponse) ProtoMessage() {} func (x *FindParticipatingTenantsResponse) ProtoReflect() protoreflect.Message { - mi := &file_v1_tenant_proto_msgTypes[5] + mi := &file_api_v1_tenant_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -300,7 +300,7 @@ func (x *FindParticipatingTenantsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use FindParticipatingTenantsResponse.ProtoReflect.Descriptor instead. func (*FindParticipatingTenantsResponse) Descriptor() ([]byte, []int) { - return file_v1_tenant_proto_rawDescGZIP(), []int{5} + return file_api_v1_tenant_proto_rawDescGZIP(), []int{5} } func (x *FindParticipatingTenantsResponse) GetTenants() []*TenantWithMembershipAnnotations { @@ -321,7 +321,7 @@ type ProjectWithMembershipAnnotations struct { func (x *ProjectWithMembershipAnnotations) Reset() { *x = ProjectWithMembershipAnnotations{} - mi := &file_v1_tenant_proto_msgTypes[6] + mi := &file_api_v1_tenant_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -333,7 +333,7 @@ func (x *ProjectWithMembershipAnnotations) String() string { func (*ProjectWithMembershipAnnotations) ProtoMessage() {} func (x *ProjectWithMembershipAnnotations) ProtoReflect() protoreflect.Message { - mi := &file_v1_tenant_proto_msgTypes[6] + mi := &file_api_v1_tenant_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -346,7 +346,7 @@ func (x *ProjectWithMembershipAnnotations) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectWithMembershipAnnotations.ProtoReflect.Descriptor instead. func (*ProjectWithMembershipAnnotations) Descriptor() ([]byte, []int) { - return file_v1_tenant_proto_rawDescGZIP(), []int{6} + return file_api_v1_tenant_proto_rawDescGZIP(), []int{6} } func (x *ProjectWithMembershipAnnotations) GetProject() *Project { @@ -383,7 +383,7 @@ type TenantWithMembershipAnnotations struct { func (x *TenantWithMembershipAnnotations) Reset() { *x = TenantWithMembershipAnnotations{} - mi := &file_v1_tenant_proto_msgTypes[7] + mi := &file_api_v1_tenant_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -395,7 +395,7 @@ func (x *TenantWithMembershipAnnotations) String() string { func (*TenantWithMembershipAnnotations) ProtoMessage() {} func (x *TenantWithMembershipAnnotations) ProtoReflect() protoreflect.Message { - mi := &file_v1_tenant_proto_msgTypes[7] + mi := &file_api_v1_tenant_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -408,7 +408,7 @@ func (x *TenantWithMembershipAnnotations) ProtoReflect() protoreflect.Message { // Deprecated: Use TenantWithMembershipAnnotations.ProtoReflect.Descriptor instead. func (*TenantWithMembershipAnnotations) Descriptor() ([]byte, []int) { - return file_v1_tenant_proto_rawDescGZIP(), []int{7} + return file_api_v1_tenant_proto_rawDescGZIP(), []int{7} } func (x *TenantWithMembershipAnnotations) GetTenant() *Tenant { @@ -453,7 +453,7 @@ type Tenant struct { func (x *Tenant) Reset() { *x = Tenant{} - mi := &file_v1_tenant_proto_msgTypes[8] + mi := &file_api_v1_tenant_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -465,7 +465,7 @@ func (x *Tenant) String() string { func (*Tenant) ProtoMessage() {} func (x *Tenant) ProtoReflect() protoreflect.Message { - mi := &file_v1_tenant_proto_msgTypes[8] + mi := &file_api_v1_tenant_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -478,7 +478,7 @@ func (x *Tenant) ProtoReflect() protoreflect.Message { // Deprecated: Use Tenant.ProtoReflect.Descriptor instead. func (*Tenant) Descriptor() ([]byte, []int) { - return file_v1_tenant_proto_rawDescGZIP(), []int{8} + return file_api_v1_tenant_proto_rawDescGZIP(), []int{8} } func (x *Tenant) GetMeta() *Meta { @@ -532,7 +532,7 @@ type TenantCreateRequest struct { func (x *TenantCreateRequest) Reset() { *x = TenantCreateRequest{} - mi := &file_v1_tenant_proto_msgTypes[9] + mi := &file_api_v1_tenant_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -544,7 +544,7 @@ func (x *TenantCreateRequest) String() string { func (*TenantCreateRequest) ProtoMessage() {} func (x *TenantCreateRequest) ProtoReflect() protoreflect.Message { - mi := &file_v1_tenant_proto_msgTypes[9] + mi := &file_api_v1_tenant_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -557,7 +557,7 @@ func (x *TenantCreateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TenantCreateRequest.ProtoReflect.Descriptor instead. func (*TenantCreateRequest) Descriptor() ([]byte, []int) { - return file_v1_tenant_proto_rawDescGZIP(), []int{9} + return file_api_v1_tenant_proto_rawDescGZIP(), []int{9} } func (x *TenantCreateRequest) GetTenant() *Tenant { @@ -576,7 +576,7 @@ type TenantUpdateRequest struct { func (x *TenantUpdateRequest) Reset() { *x = TenantUpdateRequest{} - mi := &file_v1_tenant_proto_msgTypes[10] + mi := &file_api_v1_tenant_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -588,7 +588,7 @@ func (x *TenantUpdateRequest) String() string { func (*TenantUpdateRequest) ProtoMessage() {} func (x *TenantUpdateRequest) ProtoReflect() protoreflect.Message { - mi := &file_v1_tenant_proto_msgTypes[10] + mi := &file_api_v1_tenant_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -601,7 +601,7 @@ func (x *TenantUpdateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TenantUpdateRequest.ProtoReflect.Descriptor instead. func (*TenantUpdateRequest) Descriptor() ([]byte, []int) { - return file_v1_tenant_proto_rawDescGZIP(), []int{10} + return file_api_v1_tenant_proto_rawDescGZIP(), []int{10} } func (x *TenantUpdateRequest) GetTenant() *Tenant { @@ -620,7 +620,7 @@ type TenantDeleteRequest struct { func (x *TenantDeleteRequest) Reset() { *x = TenantDeleteRequest{} - mi := &file_v1_tenant_proto_msgTypes[11] + mi := &file_api_v1_tenant_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -632,7 +632,7 @@ func (x *TenantDeleteRequest) String() string { func (*TenantDeleteRequest) ProtoMessage() {} func (x *TenantDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_v1_tenant_proto_msgTypes[11] + mi := &file_api_v1_tenant_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -645,7 +645,7 @@ func (x *TenantDeleteRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TenantDeleteRequest.ProtoReflect.Descriptor instead. func (*TenantDeleteRequest) Descriptor() ([]byte, []int) { - return file_v1_tenant_proto_rawDescGZIP(), []int{11} + return file_api_v1_tenant_proto_rawDescGZIP(), []int{11} } func (x *TenantDeleteRequest) GetId() string { @@ -664,7 +664,7 @@ type TenantGetRequest struct { func (x *TenantGetRequest) Reset() { *x = TenantGetRequest{} - mi := &file_v1_tenant_proto_msgTypes[12] + mi := &file_api_v1_tenant_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -676,7 +676,7 @@ func (x *TenantGetRequest) String() string { func (*TenantGetRequest) ProtoMessage() {} func (x *TenantGetRequest) ProtoReflect() protoreflect.Message { - mi := &file_v1_tenant_proto_msgTypes[12] + mi := &file_api_v1_tenant_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -689,7 +689,7 @@ func (x *TenantGetRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TenantGetRequest.ProtoReflect.Descriptor instead. func (*TenantGetRequest) Descriptor() ([]byte, []int) { - return file_v1_tenant_proto_rawDescGZIP(), []int{12} + return file_api_v1_tenant_proto_rawDescGZIP(), []int{12} } func (x *TenantGetRequest) GetId() string { @@ -709,7 +709,7 @@ type TenantGetHistoryRequest struct { func (x *TenantGetHistoryRequest) Reset() { *x = TenantGetHistoryRequest{} - mi := &file_v1_tenant_proto_msgTypes[13] + mi := &file_api_v1_tenant_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -721,7 +721,7 @@ func (x *TenantGetHistoryRequest) String() string { func (*TenantGetHistoryRequest) ProtoMessage() {} func (x *TenantGetHistoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_v1_tenant_proto_msgTypes[13] + mi := &file_api_v1_tenant_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -734,7 +734,7 @@ func (x *TenantGetHistoryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TenantGetHistoryRequest.ProtoReflect.Descriptor instead. func (*TenantGetHistoryRequest) Descriptor() ([]byte, []int) { - return file_v1_tenant_proto_rawDescGZIP(), []int{13} + return file_api_v1_tenant_proto_rawDescGZIP(), []int{13} } func (x *TenantGetHistoryRequest) GetId() string { @@ -763,7 +763,7 @@ type TenantFindRequest struct { func (x *TenantFindRequest) Reset() { *x = TenantFindRequest{} - mi := &file_v1_tenant_proto_msgTypes[14] + mi := &file_api_v1_tenant_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -775,7 +775,7 @@ func (x *TenantFindRequest) String() string { func (*TenantFindRequest) ProtoMessage() {} func (x *TenantFindRequest) ProtoReflect() protoreflect.Message { - mi := &file_v1_tenant_proto_msgTypes[14] + mi := &file_api_v1_tenant_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -788,7 +788,7 @@ func (x *TenantFindRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TenantFindRequest.ProtoReflect.Descriptor instead. func (*TenantFindRequest) Descriptor() ([]byte, []int) { - return file_v1_tenant_proto_rawDescGZIP(), []int{14} + return file_api_v1_tenant_proto_rawDescGZIP(), []int{14} } func (x *TenantFindRequest) GetId() string { @@ -828,7 +828,7 @@ type TenantResponse struct { func (x *TenantResponse) Reset() { *x = TenantResponse{} - mi := &file_v1_tenant_proto_msgTypes[15] + mi := &file_api_v1_tenant_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -840,7 +840,7 @@ func (x *TenantResponse) String() string { func (*TenantResponse) ProtoMessage() {} func (x *TenantResponse) ProtoReflect() protoreflect.Message { - mi := &file_v1_tenant_proto_msgTypes[15] + mi := &file_api_v1_tenant_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -853,7 +853,7 @@ func (x *TenantResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use TenantResponse.ProtoReflect.Descriptor instead. func (*TenantResponse) Descriptor() ([]byte, []int) { - return file_v1_tenant_proto_rawDescGZIP(), []int{15} + return file_api_v1_tenant_proto_rawDescGZIP(), []int{15} } func (x *TenantResponse) GetTenant() *Tenant { @@ -874,7 +874,7 @@ type TenantListResponse struct { func (x *TenantListResponse) Reset() { *x = TenantListResponse{} - mi := &file_v1_tenant_proto_msgTypes[16] + mi := &file_api_v1_tenant_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -886,7 +886,7 @@ func (x *TenantListResponse) String() string { func (*TenantListResponse) ProtoMessage() {} func (x *TenantListResponse) ProtoReflect() protoreflect.Message { - mi := &file_v1_tenant_proto_msgTypes[16] + mi := &file_api_v1_tenant_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -899,7 +899,7 @@ func (x *TenantListResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use TenantListResponse.ProtoReflect.Descriptor instead. func (*TenantListResponse) Descriptor() ([]byte, []int) { - return file_v1_tenant_proto_rawDescGZIP(), []int{16} + return file_api_v1_tenant_proto_rawDescGZIP(), []int{16} } func (x *TenantListResponse) GetTenants() []*Tenant { @@ -916,11 +916,11 @@ func (x *TenantListResponse) GetNextPage() uint64 { return 0 } -var File_v1_tenant_proto protoreflect.FileDescriptor +var File_api_v1_tenant_proto protoreflect.FileDescriptor -const file_v1_tenant_proto_rawDesc = "" + +const file_api_v1_tenant_proto_rawDesc = "" + "\n" + - "\x0fv1/tenant.proto\x12\x02v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x0fv1/common.proto\x1a\fv1/iam.proto\x1a\rv1/meta.proto\x1a\x10v1/project.proto\x1a\x0ev1/quota.proto\"\x87\x01\n" + + "\x13api/v1/tenant.proto\x12\x06api.v1\x1a\x13api/v1/common.proto\x1a\x10api/v1/iam.proto\x1a\x11api/v1/meta.proto\x1a\x14api/v1/project.proto\x1a\x12api/v1/quota.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x87\x01\n" + " FindParticipatingProjectsRequest\x12\x1b\n" + "\ttenant_id\x18\x01 \x01(\tR\btenantId\x120\n" + "\x11include_inherited\x18\x02 \x01(\bH\x00R\x10includeInherited\x88\x01\x01B\x14\n" + @@ -932,28 +932,27 @@ const file_v1_tenant_proto_rawDesc = "" + "\x18ListTenantMembersRequest\x12\x1b\n" + "\ttenant_id\x18\x01 \x01(\tR\btenantId\x120\n" + "\x11include_inherited\x18\x02 \x01(\bH\x00R\x10includeInherited\x88\x01\x01B\x14\n" + - "\x12_include_inherited\"Z\n" + - "\x19ListTenantMembersResponse\x12=\n" + - "\atenants\x18\x01 \x03(\v2#.v1.TenantWithMembershipAnnotationsR\atenants\"e\n" + - "!FindParticipatingProjectsResponse\x12@\n" + - "\bprojects\x18\x01 \x03(\v2$.v1.ProjectWithMembershipAnnotationsR\bprojects\"a\n" + - " FindParticipatingTenantsResponse\x12=\n" + - "\atenants\x18\x01 \x03(\v2#.v1.TenantWithMembershipAnnotationsR\atenants\"\xb1\x03\n" + - " ProjectWithMembershipAnnotations\x12%\n" + - "\aproject\x18\x01 \x01(\v2\v.v1.ProjectR\aproject\x12m\n" + - "\x13project_annotations\x18\x02 \x03(\v2<.v1.ProjectWithMembershipAnnotations.ProjectAnnotationsEntryR\x12projectAnnotations\x12j\n" + - "\x12tenant_annotations\x18\x03 \x03(\v2;.v1.ProjectWithMembershipAnnotations.TenantAnnotationsEntryR\x11tenantAnnotations\x1aE\n" + + "\x12_include_inherited\"^\n" + + "\x19ListTenantMembersResponse\x12A\n" + + "\atenants\x18\x01 \x03(\v2'.api.v1.TenantWithMembershipAnnotationsR\atenants\"i\n" + + "!FindParticipatingProjectsResponse\x12D\n" + + "\bprojects\x18\x01 \x03(\v2(.api.v1.ProjectWithMembershipAnnotationsR\bprojects\"e\n" + + " FindParticipatingTenantsResponse\x12A\n" + + "\atenants\x18\x01 \x03(\v2'.api.v1.TenantWithMembershipAnnotationsR\atenants\"\xbd\x03\n" + + " ProjectWithMembershipAnnotations\x12)\n" + + "\aproject\x18\x01 \x01(\v2\x0f.api.v1.ProjectR\aproject\x12q\n" + + "\x13project_annotations\x18\x02 \x03(\v2@.api.v1.ProjectWithMembershipAnnotations.ProjectAnnotationsEntryR\x12projectAnnotations\x12n\n" + + "\x12tenant_annotations\x18\x03 \x03(\v2?.api.v1.ProjectWithMembershipAnnotations.TenantAnnotationsEntryR\x11tenantAnnotations\x1aE\n" + "\x17ProjectAnnotationsEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1aD\n" + "\x16TenantAnnotationsEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xcc\x03\n" + - "\x1fTenantWithMembershipAnnotations\x12\"\n" + - "\x06tenant\x18\x01 \x01(\v2\n" + - ".v1.TenantR\x06tenant\x12l\n" + - "\x13project_annotations\x18\x02 \x03(\v2;.v1.TenantWithMembershipAnnotations.ProjectAnnotationsEntryR\x12projectAnnotations\x12i\n" + - "\x12tenant_annotations\x18\x03 \x03(\v2:.v1.TenantWithMembershipAnnotations.TenantAnnotationsEntryR\x11tenantAnnotations\x12\x1f\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xd8\x03\n" + + "\x1fTenantWithMembershipAnnotations\x12&\n" + + "\x06tenant\x18\x01 \x01(\v2\x0e.api.v1.TenantR\x06tenant\x12p\n" + + "\x13project_annotations\x18\x02 \x03(\v2?.api.v1.TenantWithMembershipAnnotations.ProjectAnnotationsEntryR\x12projectAnnotations\x12m\n" + + "\x12tenant_annotations\x18\x03 \x03(\v2>.api.v1.TenantWithMembershipAnnotations.TenantAnnotationsEntryR\x11tenantAnnotations\x12\x1f\n" + "\vproject_ids\x18\x04 \x03(\tR\n" + "projectIds\x1aE\n" + "\x17ProjectAnnotationsEntry\x12\x10\n" + @@ -961,143 +960,139 @@ const file_v1_tenant_proto_rawDesc = "" + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1aD\n" + "\x16TenantAnnotationsEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xe5\x01\n" + - "\x06Tenant\x12\x1c\n" + - "\x04meta\x18\x01 \x01(\v2\b.v1.MetaR\x04meta\x12\x12\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xf5\x01\n" + + "\x06Tenant\x12 \n" + + "\x04meta\x18\x01 \x01(\v2\f.api.v1.MetaR\x04meta\x12\x12\n" + "\x04name\x18\x02 \x01(\tR\x04name\x12 \n" + - "\vdescription\x18\x03 \x01(\tR\vdescription\x123\n" + - "\x0edefault_quotas\x18\x04 \x01(\v2\f.v1.QuotaSetR\rdefaultQuotas\x12$\n" + - "\x06quotas\x18\x05 \x01(\v2\f.v1.QuotaSetR\x06quotas\x12,\n" + + "\vdescription\x18\x03 \x01(\tR\vdescription\x127\n" + + "\x0edefault_quotas\x18\x04 \x01(\v2\x10.api.v1.QuotaSetR\rdefaultQuotas\x12(\n" + + "\x06quotas\x18\x05 \x01(\v2\x10.api.v1.QuotaSetR\x06quotas\x120\n" + "\n" + - "iam_config\x18\x06 \x01(\v2\r.v1.IAMConfigR\tiamConfig\"9\n" + - "\x13TenantCreateRequest\x12\"\n" + - "\x06tenant\x18\x01 \x01(\v2\n" + - ".v1.TenantR\x06tenant\"9\n" + - "\x13TenantUpdateRequest\x12\"\n" + - "\x06tenant\x18\x01 \x01(\v2\n" + - ".v1.TenantR\x06tenant\"%\n" + + "iam_config\x18\x06 \x01(\v2\x11.api.v1.IAMConfigR\tiamConfig\"=\n" + + "\x13TenantCreateRequest\x12&\n" + + "\x06tenant\x18\x01 \x01(\v2\x0e.api.v1.TenantR\x06tenant\"=\n" + + "\x13TenantUpdateRequest\x12&\n" + + "\x06tenant\x18\x01 \x01(\v2\x0e.api.v1.TenantR\x06tenant\"%\n" + "\x13TenantDeleteRequest\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\"\"\n" + "\x10TenantGetRequest\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\"U\n" + "\x17TenantGetHistoryRequest\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12*\n" + - "\x02at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\x02at\"\xff\x01\n" + + "\x02at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\x02at\"\x87\x02\n" + "\x11TenantFindRequest\x12\x13\n" + "\x02id\x18\x01 \x01(\tH\x00R\x02id\x88\x01\x01\x12\x17\n" + - "\x04name\x18\x02 \x01(\tH\x01R\x04name\x88\x01\x01\x12\"\n" + - "\x06paging\x18\x03 \x01(\v2\n" + - ".v1.PagingR\x06paging\x12H\n" + - "\vannotations\x18\x04 \x03(\v2&.v1.TenantFindRequest.AnnotationsEntryR\vannotations\x1a>\n" + + "\x04name\x18\x02 \x01(\tH\x01R\x04name\x88\x01\x01\x12&\n" + + "\x06paging\x18\x03 \x01(\v2\x0e.api.v1.PagingR\x06paging\x12L\n" + + "\vannotations\x18\x04 \x03(\v2*.api.v1.TenantFindRequest.AnnotationsEntryR\vannotations\x1a>\n" + "\x10AnnotationsEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\x05\n" + "\x03_idB\a\n" + - "\x05_name\"4\n" + - "\x0eTenantResponse\x12\"\n" + - "\x06tenant\x18\x01 \x01(\v2\n" + - ".v1.TenantR\x06tenant\"j\n" + - "\x12TenantListResponse\x12$\n" + - "\atenants\x18\x01 \x03(\v2\n" + - ".v1.TenantR\atenants\x12 \n" + + "\x05_name\"8\n" + + "\x0eTenantResponse\x12&\n" + + "\x06tenant\x18\x01 \x01(\v2\x0e.api.v1.TenantR\x06tenant\"n\n" + + "\x12TenantListResponse\x12(\n" + + "\atenants\x18\x01 \x03(\v2\x0e.api.v1.TenantR\atenants\x12 \n" + "\tnext_page\x18\x02 \x01(\x04H\x00R\bnextPage\x88\x01\x01B\f\n" + "\n" + - "_next_page2\xfe\x04\n" + - "\rTenantService\x125\n" + - "\x06Create\x12\x17.v1.TenantCreateRequest\x1a\x12.v1.TenantResponse\x125\n" + - "\x06Update\x12\x17.v1.TenantUpdateRequest\x1a\x12.v1.TenantResponse\x125\n" + - "\x06Delete\x12\x17.v1.TenantDeleteRequest\x1a\x12.v1.TenantResponse\x12/\n" + - "\x03Get\x12\x14.v1.TenantGetRequest\x1a\x12.v1.TenantResponse\x12=\n" + + "_next_page2\xc6\x05\n" + + "\rTenantService\x12=\n" + + "\x06Create\x12\x1b.api.v1.TenantCreateRequest\x1a\x16.api.v1.TenantResponse\x12=\n" + + "\x06Update\x12\x1b.api.v1.TenantUpdateRequest\x1a\x16.api.v1.TenantResponse\x12=\n" + + "\x06Delete\x12\x1b.api.v1.TenantDeleteRequest\x1a\x16.api.v1.TenantResponse\x127\n" + + "\x03Get\x12\x18.api.v1.TenantGetRequest\x1a\x16.api.v1.TenantResponse\x12E\n" + "\n" + - "GetHistory\x12\x1b.v1.TenantGetHistoryRequest\x1a\x12.v1.TenantResponse\x125\n" + - "\x04Find\x12\x15.v1.TenantFindRequest\x1a\x16.v1.TenantListResponse\x12P\n" + - "\x11ListTenantMembers\x12\x1c.v1.ListTenantMembersRequest\x1a\x1d.v1.ListTenantMembersResponse\x12h\n" + - "\x19FindParticipatingProjects\x12$.v1.FindParticipatingProjectsRequest\x1a%.v1.FindParticipatingProjectsResponse\x12e\n" + - "\x18FindParticipatingTenants\x12#.v1.FindParticipatingTenantsRequest\x1a$.v1.FindParticipatingTenantsResponseBg\n" + - "\x06com.v1B\vTenantProtoP\x01Z(github.com/metal-stack/masterdata-api/v1\xa2\x02\x03VXX\xaa\x02\x02V1\xca\x02\x02V1\xe2\x02\x0eV1\\GPBMetadata\xea\x02\x02V1b\x06proto3" + "GetHistory\x12\x1f.api.v1.TenantGetHistoryRequest\x1a\x16.api.v1.TenantResponse\x12=\n" + + "\x04Find\x12\x19.api.v1.TenantFindRequest\x1a\x1a.api.v1.TenantListResponse\x12X\n" + + "\x11ListTenantMembers\x12 .api.v1.ListTenantMembersRequest\x1a!.api.v1.ListTenantMembersResponse\x12p\n" + + "\x19FindParticipatingProjects\x12(.api.v1.FindParticipatingProjectsRequest\x1a).api.v1.FindParticipatingProjectsResponse\x12m\n" + + "\x18FindParticipatingTenants\x12'.api.v1.FindParticipatingTenantsRequest\x1a(.api.v1.FindParticipatingTenantsResponseB\x86\x01\n" + + "\n" + + "com.api.v1B\vTenantProtoP\x01Z2github.com/metal-stack/masterdata-api/api/v1;apiv1\xa2\x02\x03AXX\xaa\x02\x06Api.V1\xca\x02\x06Api\\V1\xe2\x02\x12Api\\V1\\GPBMetadata\xea\x02\aApi::V1b\x06proto3" var ( - file_v1_tenant_proto_rawDescOnce sync.Once - file_v1_tenant_proto_rawDescData []byte + file_api_v1_tenant_proto_rawDescOnce sync.Once + file_api_v1_tenant_proto_rawDescData []byte ) -func file_v1_tenant_proto_rawDescGZIP() []byte { - file_v1_tenant_proto_rawDescOnce.Do(func() { - file_v1_tenant_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_v1_tenant_proto_rawDesc), len(file_v1_tenant_proto_rawDesc))) +func file_api_v1_tenant_proto_rawDescGZIP() []byte { + file_api_v1_tenant_proto_rawDescOnce.Do(func() { + file_api_v1_tenant_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_api_v1_tenant_proto_rawDesc), len(file_api_v1_tenant_proto_rawDesc))) }) - return file_v1_tenant_proto_rawDescData -} - -var file_v1_tenant_proto_msgTypes = make([]protoimpl.MessageInfo, 22) -var file_v1_tenant_proto_goTypes = []any{ - (*FindParticipatingProjectsRequest)(nil), // 0: v1.FindParticipatingProjectsRequest - (*FindParticipatingTenantsRequest)(nil), // 1: v1.FindParticipatingTenantsRequest - (*ListTenantMembersRequest)(nil), // 2: v1.ListTenantMembersRequest - (*ListTenantMembersResponse)(nil), // 3: v1.ListTenantMembersResponse - (*FindParticipatingProjectsResponse)(nil), // 4: v1.FindParticipatingProjectsResponse - (*FindParticipatingTenantsResponse)(nil), // 5: v1.FindParticipatingTenantsResponse - (*ProjectWithMembershipAnnotations)(nil), // 6: v1.ProjectWithMembershipAnnotations - (*TenantWithMembershipAnnotations)(nil), // 7: v1.TenantWithMembershipAnnotations - (*Tenant)(nil), // 8: v1.Tenant - (*TenantCreateRequest)(nil), // 9: v1.TenantCreateRequest - (*TenantUpdateRequest)(nil), // 10: v1.TenantUpdateRequest - (*TenantDeleteRequest)(nil), // 11: v1.TenantDeleteRequest - (*TenantGetRequest)(nil), // 12: v1.TenantGetRequest - (*TenantGetHistoryRequest)(nil), // 13: v1.TenantGetHistoryRequest - (*TenantFindRequest)(nil), // 14: v1.TenantFindRequest - (*TenantResponse)(nil), // 15: v1.TenantResponse - (*TenantListResponse)(nil), // 16: v1.TenantListResponse - nil, // 17: v1.ProjectWithMembershipAnnotations.ProjectAnnotationsEntry - nil, // 18: v1.ProjectWithMembershipAnnotations.TenantAnnotationsEntry - nil, // 19: v1.TenantWithMembershipAnnotations.ProjectAnnotationsEntry - nil, // 20: v1.TenantWithMembershipAnnotations.TenantAnnotationsEntry - nil, // 21: v1.TenantFindRequest.AnnotationsEntry - (*Project)(nil), // 22: v1.Project - (*Meta)(nil), // 23: v1.Meta - (*QuotaSet)(nil), // 24: v1.QuotaSet - (*IAMConfig)(nil), // 25: v1.IAMConfig + return file_api_v1_tenant_proto_rawDescData +} + +var file_api_v1_tenant_proto_msgTypes = make([]protoimpl.MessageInfo, 22) +var file_api_v1_tenant_proto_goTypes = []any{ + (*FindParticipatingProjectsRequest)(nil), // 0: api.v1.FindParticipatingProjectsRequest + (*FindParticipatingTenantsRequest)(nil), // 1: api.v1.FindParticipatingTenantsRequest + (*ListTenantMembersRequest)(nil), // 2: api.v1.ListTenantMembersRequest + (*ListTenantMembersResponse)(nil), // 3: api.v1.ListTenantMembersResponse + (*FindParticipatingProjectsResponse)(nil), // 4: api.v1.FindParticipatingProjectsResponse + (*FindParticipatingTenantsResponse)(nil), // 5: api.v1.FindParticipatingTenantsResponse + (*ProjectWithMembershipAnnotations)(nil), // 6: api.v1.ProjectWithMembershipAnnotations + (*TenantWithMembershipAnnotations)(nil), // 7: api.v1.TenantWithMembershipAnnotations + (*Tenant)(nil), // 8: api.v1.Tenant + (*TenantCreateRequest)(nil), // 9: api.v1.TenantCreateRequest + (*TenantUpdateRequest)(nil), // 10: api.v1.TenantUpdateRequest + (*TenantDeleteRequest)(nil), // 11: api.v1.TenantDeleteRequest + (*TenantGetRequest)(nil), // 12: api.v1.TenantGetRequest + (*TenantGetHistoryRequest)(nil), // 13: api.v1.TenantGetHistoryRequest + (*TenantFindRequest)(nil), // 14: api.v1.TenantFindRequest + (*TenantResponse)(nil), // 15: api.v1.TenantResponse + (*TenantListResponse)(nil), // 16: api.v1.TenantListResponse + nil, // 17: api.v1.ProjectWithMembershipAnnotations.ProjectAnnotationsEntry + nil, // 18: api.v1.ProjectWithMembershipAnnotations.TenantAnnotationsEntry + nil, // 19: api.v1.TenantWithMembershipAnnotations.ProjectAnnotationsEntry + nil, // 20: api.v1.TenantWithMembershipAnnotations.TenantAnnotationsEntry + nil, // 21: api.v1.TenantFindRequest.AnnotationsEntry + (*Project)(nil), // 22: api.v1.Project + (*Meta)(nil), // 23: api.v1.Meta + (*QuotaSet)(nil), // 24: api.v1.QuotaSet + (*IAMConfig)(nil), // 25: api.v1.IAMConfig (*timestamppb.Timestamp)(nil), // 26: google.protobuf.Timestamp - (*Paging)(nil), // 27: v1.Paging -} -var file_v1_tenant_proto_depIdxs = []int32{ - 7, // 0: v1.ListTenantMembersResponse.tenants:type_name -> v1.TenantWithMembershipAnnotations - 6, // 1: v1.FindParticipatingProjectsResponse.projects:type_name -> v1.ProjectWithMembershipAnnotations - 7, // 2: v1.FindParticipatingTenantsResponse.tenants:type_name -> v1.TenantWithMembershipAnnotations - 22, // 3: v1.ProjectWithMembershipAnnotations.project:type_name -> v1.Project - 17, // 4: v1.ProjectWithMembershipAnnotations.project_annotations:type_name -> v1.ProjectWithMembershipAnnotations.ProjectAnnotationsEntry - 18, // 5: v1.ProjectWithMembershipAnnotations.tenant_annotations:type_name -> v1.ProjectWithMembershipAnnotations.TenantAnnotationsEntry - 8, // 6: v1.TenantWithMembershipAnnotations.tenant:type_name -> v1.Tenant - 19, // 7: v1.TenantWithMembershipAnnotations.project_annotations:type_name -> v1.TenantWithMembershipAnnotations.ProjectAnnotationsEntry - 20, // 8: v1.TenantWithMembershipAnnotations.tenant_annotations:type_name -> v1.TenantWithMembershipAnnotations.TenantAnnotationsEntry - 23, // 9: v1.Tenant.meta:type_name -> v1.Meta - 24, // 10: v1.Tenant.default_quotas:type_name -> v1.QuotaSet - 24, // 11: v1.Tenant.quotas:type_name -> v1.QuotaSet - 25, // 12: v1.Tenant.iam_config:type_name -> v1.IAMConfig - 8, // 13: v1.TenantCreateRequest.tenant:type_name -> v1.Tenant - 8, // 14: v1.TenantUpdateRequest.tenant:type_name -> v1.Tenant - 26, // 15: v1.TenantGetHistoryRequest.at:type_name -> google.protobuf.Timestamp - 27, // 16: v1.TenantFindRequest.paging:type_name -> v1.Paging - 21, // 17: v1.TenantFindRequest.annotations:type_name -> v1.TenantFindRequest.AnnotationsEntry - 8, // 18: v1.TenantResponse.tenant:type_name -> v1.Tenant - 8, // 19: v1.TenantListResponse.tenants:type_name -> v1.Tenant - 9, // 20: v1.TenantService.Create:input_type -> v1.TenantCreateRequest - 10, // 21: v1.TenantService.Update:input_type -> v1.TenantUpdateRequest - 11, // 22: v1.TenantService.Delete:input_type -> v1.TenantDeleteRequest - 12, // 23: v1.TenantService.Get:input_type -> v1.TenantGetRequest - 13, // 24: v1.TenantService.GetHistory:input_type -> v1.TenantGetHistoryRequest - 14, // 25: v1.TenantService.Find:input_type -> v1.TenantFindRequest - 2, // 26: v1.TenantService.ListTenantMembers:input_type -> v1.ListTenantMembersRequest - 0, // 27: v1.TenantService.FindParticipatingProjects:input_type -> v1.FindParticipatingProjectsRequest - 1, // 28: v1.TenantService.FindParticipatingTenants:input_type -> v1.FindParticipatingTenantsRequest - 15, // 29: v1.TenantService.Create:output_type -> v1.TenantResponse - 15, // 30: v1.TenantService.Update:output_type -> v1.TenantResponse - 15, // 31: v1.TenantService.Delete:output_type -> v1.TenantResponse - 15, // 32: v1.TenantService.Get:output_type -> v1.TenantResponse - 15, // 33: v1.TenantService.GetHistory:output_type -> v1.TenantResponse - 16, // 34: v1.TenantService.Find:output_type -> v1.TenantListResponse - 3, // 35: v1.TenantService.ListTenantMembers:output_type -> v1.ListTenantMembersResponse - 4, // 36: v1.TenantService.FindParticipatingProjects:output_type -> v1.FindParticipatingProjectsResponse - 5, // 37: v1.TenantService.FindParticipatingTenants:output_type -> v1.FindParticipatingTenantsResponse + (*Paging)(nil), // 27: api.v1.Paging +} +var file_api_v1_tenant_proto_depIdxs = []int32{ + 7, // 0: api.v1.ListTenantMembersResponse.tenants:type_name -> api.v1.TenantWithMembershipAnnotations + 6, // 1: api.v1.FindParticipatingProjectsResponse.projects:type_name -> api.v1.ProjectWithMembershipAnnotations + 7, // 2: api.v1.FindParticipatingTenantsResponse.tenants:type_name -> api.v1.TenantWithMembershipAnnotations + 22, // 3: api.v1.ProjectWithMembershipAnnotations.project:type_name -> api.v1.Project + 17, // 4: api.v1.ProjectWithMembershipAnnotations.project_annotations:type_name -> api.v1.ProjectWithMembershipAnnotations.ProjectAnnotationsEntry + 18, // 5: api.v1.ProjectWithMembershipAnnotations.tenant_annotations:type_name -> api.v1.ProjectWithMembershipAnnotations.TenantAnnotationsEntry + 8, // 6: api.v1.TenantWithMembershipAnnotations.tenant:type_name -> api.v1.Tenant + 19, // 7: api.v1.TenantWithMembershipAnnotations.project_annotations:type_name -> api.v1.TenantWithMembershipAnnotations.ProjectAnnotationsEntry + 20, // 8: api.v1.TenantWithMembershipAnnotations.tenant_annotations:type_name -> api.v1.TenantWithMembershipAnnotations.TenantAnnotationsEntry + 23, // 9: api.v1.Tenant.meta:type_name -> api.v1.Meta + 24, // 10: api.v1.Tenant.default_quotas:type_name -> api.v1.QuotaSet + 24, // 11: api.v1.Tenant.quotas:type_name -> api.v1.QuotaSet + 25, // 12: api.v1.Tenant.iam_config:type_name -> api.v1.IAMConfig + 8, // 13: api.v1.TenantCreateRequest.tenant:type_name -> api.v1.Tenant + 8, // 14: api.v1.TenantUpdateRequest.tenant:type_name -> api.v1.Tenant + 26, // 15: api.v1.TenantGetHistoryRequest.at:type_name -> google.protobuf.Timestamp + 27, // 16: api.v1.TenantFindRequest.paging:type_name -> api.v1.Paging + 21, // 17: api.v1.TenantFindRequest.annotations:type_name -> api.v1.TenantFindRequest.AnnotationsEntry + 8, // 18: api.v1.TenantResponse.tenant:type_name -> api.v1.Tenant + 8, // 19: api.v1.TenantListResponse.tenants:type_name -> api.v1.Tenant + 9, // 20: api.v1.TenantService.Create:input_type -> api.v1.TenantCreateRequest + 10, // 21: api.v1.TenantService.Update:input_type -> api.v1.TenantUpdateRequest + 11, // 22: api.v1.TenantService.Delete:input_type -> api.v1.TenantDeleteRequest + 12, // 23: api.v1.TenantService.Get:input_type -> api.v1.TenantGetRequest + 13, // 24: api.v1.TenantService.GetHistory:input_type -> api.v1.TenantGetHistoryRequest + 14, // 25: api.v1.TenantService.Find:input_type -> api.v1.TenantFindRequest + 2, // 26: api.v1.TenantService.ListTenantMembers:input_type -> api.v1.ListTenantMembersRequest + 0, // 27: api.v1.TenantService.FindParticipatingProjects:input_type -> api.v1.FindParticipatingProjectsRequest + 1, // 28: api.v1.TenantService.FindParticipatingTenants:input_type -> api.v1.FindParticipatingTenantsRequest + 15, // 29: api.v1.TenantService.Create:output_type -> api.v1.TenantResponse + 15, // 30: api.v1.TenantService.Update:output_type -> api.v1.TenantResponse + 15, // 31: api.v1.TenantService.Delete:output_type -> api.v1.TenantResponse + 15, // 32: api.v1.TenantService.Get:output_type -> api.v1.TenantResponse + 15, // 33: api.v1.TenantService.GetHistory:output_type -> api.v1.TenantResponse + 16, // 34: api.v1.TenantService.Find:output_type -> api.v1.TenantListResponse + 3, // 35: api.v1.TenantService.ListTenantMembers:output_type -> api.v1.ListTenantMembersResponse + 4, // 36: api.v1.TenantService.FindParticipatingProjects:output_type -> api.v1.FindParticipatingProjectsResponse + 5, // 37: api.v1.TenantService.FindParticipatingTenants:output_type -> api.v1.FindParticipatingTenantsResponse 29, // [29:38] is the sub-list for method output_type 20, // [20:29] is the sub-list for method input_type 20, // [20:20] is the sub-list for extension type_name @@ -1105,36 +1100,36 @@ var file_v1_tenant_proto_depIdxs = []int32{ 0, // [0:20] is the sub-list for field type_name } -func init() { file_v1_tenant_proto_init() } -func file_v1_tenant_proto_init() { - if File_v1_tenant_proto != nil { +func init() { file_api_v1_tenant_proto_init() } +func file_api_v1_tenant_proto_init() { + if File_api_v1_tenant_proto != nil { return } - file_v1_common_proto_init() - file_v1_iam_proto_init() - file_v1_meta_proto_init() - file_v1_project_proto_init() - file_v1_quota_proto_init() - file_v1_tenant_proto_msgTypes[0].OneofWrappers = []any{} - file_v1_tenant_proto_msgTypes[1].OneofWrappers = []any{} - file_v1_tenant_proto_msgTypes[2].OneofWrappers = []any{} - file_v1_tenant_proto_msgTypes[14].OneofWrappers = []any{} - file_v1_tenant_proto_msgTypes[16].OneofWrappers = []any{} + file_api_v1_common_proto_init() + file_api_v1_iam_proto_init() + file_api_v1_meta_proto_init() + file_api_v1_project_proto_init() + file_api_v1_quota_proto_init() + file_api_v1_tenant_proto_msgTypes[0].OneofWrappers = []any{} + file_api_v1_tenant_proto_msgTypes[1].OneofWrappers = []any{} + file_api_v1_tenant_proto_msgTypes[2].OneofWrappers = []any{} + file_api_v1_tenant_proto_msgTypes[14].OneofWrappers = []any{} + file_api_v1_tenant_proto_msgTypes[16].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_v1_tenant_proto_rawDesc), len(file_v1_tenant_proto_rawDesc)), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_api_v1_tenant_proto_rawDesc), len(file_api_v1_tenant_proto_rawDesc)), NumEnums: 0, NumMessages: 22, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_v1_tenant_proto_goTypes, - DependencyIndexes: file_v1_tenant_proto_depIdxs, - MessageInfos: file_v1_tenant_proto_msgTypes, + GoTypes: file_api_v1_tenant_proto_goTypes, + DependencyIndexes: file_api_v1_tenant_proto_depIdxs, + MessageInfos: file_api_v1_tenant_proto_msgTypes, }.Build() - File_v1_tenant_proto = out.File - file_v1_tenant_proto_goTypes = nil - file_v1_tenant_proto_depIdxs = nil + File_api_v1_tenant_proto = out.File + file_api_v1_tenant_proto_goTypes = nil + file_api_v1_tenant_proto_depIdxs = nil } diff --git a/api/v1/tenant_grpc.pb.go b/api/v1/tenant_grpc.pb.go deleted file mode 100644 index c3dc3e2..0000000 --- a/api/v1/tenant_grpc.pb.go +++ /dev/null @@ -1,423 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.5.1 -// - protoc (unknown) -// source: v1/tenant.proto - -package v1 - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.64.0 or later. -const _ = grpc.SupportPackageIsVersion9 - -const ( - TenantService_Create_FullMethodName = "/v1.TenantService/Create" - TenantService_Update_FullMethodName = "/v1.TenantService/Update" - TenantService_Delete_FullMethodName = "/v1.TenantService/Delete" - TenantService_Get_FullMethodName = "/v1.TenantService/Get" - TenantService_GetHistory_FullMethodName = "/v1.TenantService/GetHistory" - TenantService_Find_FullMethodName = "/v1.TenantService/Find" - TenantService_ListTenantMembers_FullMethodName = "/v1.TenantService/ListTenantMembers" - TenantService_FindParticipatingProjects_FullMethodName = "/v1.TenantService/FindParticipatingProjects" - TenantService_FindParticipatingTenants_FullMethodName = "/v1.TenantService/FindParticipatingTenants" -) - -// TenantServiceClient is the client API for TenantService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -type TenantServiceClient interface { - Create(ctx context.Context, in *TenantCreateRequest, opts ...grpc.CallOption) (*TenantResponse, error) - Update(ctx context.Context, in *TenantUpdateRequest, opts ...grpc.CallOption) (*TenantResponse, error) - Delete(ctx context.Context, in *TenantDeleteRequest, opts ...grpc.CallOption) (*TenantResponse, error) - Get(ctx context.Context, in *TenantGetRequest, opts ...grpc.CallOption) (*TenantResponse, error) - GetHistory(ctx context.Context, in *TenantGetHistoryRequest, opts ...grpc.CallOption) (*TenantResponse, error) - Find(ctx context.Context, in *TenantFindRequest, opts ...grpc.CallOption) (*TenantListResponse, error) - ListTenantMembers(ctx context.Context, in *ListTenantMembersRequest, opts ...grpc.CallOption) (*ListTenantMembersResponse, error) - FindParticipatingProjects(ctx context.Context, in *FindParticipatingProjectsRequest, opts ...grpc.CallOption) (*FindParticipatingProjectsResponse, error) - FindParticipatingTenants(ctx context.Context, in *FindParticipatingTenantsRequest, opts ...grpc.CallOption) (*FindParticipatingTenantsResponse, error) -} - -type tenantServiceClient struct { - cc grpc.ClientConnInterface -} - -func NewTenantServiceClient(cc grpc.ClientConnInterface) TenantServiceClient { - return &tenantServiceClient{cc} -} - -func (c *tenantServiceClient) Create(ctx context.Context, in *TenantCreateRequest, opts ...grpc.CallOption) (*TenantResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(TenantResponse) - err := c.cc.Invoke(ctx, TenantService_Create_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *tenantServiceClient) Update(ctx context.Context, in *TenantUpdateRequest, opts ...grpc.CallOption) (*TenantResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(TenantResponse) - err := c.cc.Invoke(ctx, TenantService_Update_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *tenantServiceClient) Delete(ctx context.Context, in *TenantDeleteRequest, opts ...grpc.CallOption) (*TenantResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(TenantResponse) - err := c.cc.Invoke(ctx, TenantService_Delete_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *tenantServiceClient) Get(ctx context.Context, in *TenantGetRequest, opts ...grpc.CallOption) (*TenantResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(TenantResponse) - err := c.cc.Invoke(ctx, TenantService_Get_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *tenantServiceClient) GetHistory(ctx context.Context, in *TenantGetHistoryRequest, opts ...grpc.CallOption) (*TenantResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(TenantResponse) - err := c.cc.Invoke(ctx, TenantService_GetHistory_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *tenantServiceClient) Find(ctx context.Context, in *TenantFindRequest, opts ...grpc.CallOption) (*TenantListResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(TenantListResponse) - err := c.cc.Invoke(ctx, TenantService_Find_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *tenantServiceClient) ListTenantMembers(ctx context.Context, in *ListTenantMembersRequest, opts ...grpc.CallOption) (*ListTenantMembersResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(ListTenantMembersResponse) - err := c.cc.Invoke(ctx, TenantService_ListTenantMembers_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *tenantServiceClient) FindParticipatingProjects(ctx context.Context, in *FindParticipatingProjectsRequest, opts ...grpc.CallOption) (*FindParticipatingProjectsResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(FindParticipatingProjectsResponse) - err := c.cc.Invoke(ctx, TenantService_FindParticipatingProjects_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *tenantServiceClient) FindParticipatingTenants(ctx context.Context, in *FindParticipatingTenantsRequest, opts ...grpc.CallOption) (*FindParticipatingTenantsResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(FindParticipatingTenantsResponse) - err := c.cc.Invoke(ctx, TenantService_FindParticipatingTenants_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -// TenantServiceServer is the server API for TenantService service. -// All implementations should embed UnimplementedTenantServiceServer -// for forward compatibility. -type TenantServiceServer interface { - Create(context.Context, *TenantCreateRequest) (*TenantResponse, error) - Update(context.Context, *TenantUpdateRequest) (*TenantResponse, error) - Delete(context.Context, *TenantDeleteRequest) (*TenantResponse, error) - Get(context.Context, *TenantGetRequest) (*TenantResponse, error) - GetHistory(context.Context, *TenantGetHistoryRequest) (*TenantResponse, error) - Find(context.Context, *TenantFindRequest) (*TenantListResponse, error) - ListTenantMembers(context.Context, *ListTenantMembersRequest) (*ListTenantMembersResponse, error) - FindParticipatingProjects(context.Context, *FindParticipatingProjectsRequest) (*FindParticipatingProjectsResponse, error) - FindParticipatingTenants(context.Context, *FindParticipatingTenantsRequest) (*FindParticipatingTenantsResponse, error) -} - -// UnimplementedTenantServiceServer should be embedded to have -// forward compatible implementations. -// -// NOTE: this should be embedded by value instead of pointer to avoid a nil -// pointer dereference when methods are called. -type UnimplementedTenantServiceServer struct{} - -func (UnimplementedTenantServiceServer) Create(context.Context, *TenantCreateRequest) (*TenantResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") -} -func (UnimplementedTenantServiceServer) Update(context.Context, *TenantUpdateRequest) (*TenantResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Update not implemented") -} -func (UnimplementedTenantServiceServer) Delete(context.Context, *TenantDeleteRequest) (*TenantResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") -} -func (UnimplementedTenantServiceServer) Get(context.Context, *TenantGetRequest) (*TenantResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") -} -func (UnimplementedTenantServiceServer) GetHistory(context.Context, *TenantGetHistoryRequest) (*TenantResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetHistory not implemented") -} -func (UnimplementedTenantServiceServer) Find(context.Context, *TenantFindRequest) (*TenantListResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Find not implemented") -} -func (UnimplementedTenantServiceServer) ListTenantMembers(context.Context, *ListTenantMembersRequest) (*ListTenantMembersResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListTenantMembers not implemented") -} -func (UnimplementedTenantServiceServer) FindParticipatingProjects(context.Context, *FindParticipatingProjectsRequest) (*FindParticipatingProjectsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method FindParticipatingProjects not implemented") -} -func (UnimplementedTenantServiceServer) FindParticipatingTenants(context.Context, *FindParticipatingTenantsRequest) (*FindParticipatingTenantsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method FindParticipatingTenants not implemented") -} -func (UnimplementedTenantServiceServer) testEmbeddedByValue() {} - -// UnsafeTenantServiceServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to TenantServiceServer will -// result in compilation errors. -type UnsafeTenantServiceServer interface { - mustEmbedUnimplementedTenantServiceServer() -} - -func RegisterTenantServiceServer(s grpc.ServiceRegistrar, srv TenantServiceServer) { - // If the following call pancis, it indicates UnimplementedTenantServiceServer was - // embedded by pointer and is nil. This will cause panics if an - // unimplemented method is ever invoked, so we test this at initialization - // time to prevent it from happening at runtime later due to I/O. - if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { - t.testEmbeddedByValue() - } - s.RegisterService(&TenantService_ServiceDesc, srv) -} - -func _TenantService_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(TenantCreateRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TenantServiceServer).Create(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: TenantService_Create_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TenantServiceServer).Create(ctx, req.(*TenantCreateRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _TenantService_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(TenantUpdateRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TenantServiceServer).Update(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: TenantService_Update_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TenantServiceServer).Update(ctx, req.(*TenantUpdateRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _TenantService_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(TenantDeleteRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TenantServiceServer).Delete(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: TenantService_Delete_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TenantServiceServer).Delete(ctx, req.(*TenantDeleteRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _TenantService_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(TenantGetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TenantServiceServer).Get(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: TenantService_Get_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TenantServiceServer).Get(ctx, req.(*TenantGetRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _TenantService_GetHistory_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(TenantGetHistoryRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TenantServiceServer).GetHistory(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: TenantService_GetHistory_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TenantServiceServer).GetHistory(ctx, req.(*TenantGetHistoryRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _TenantService_Find_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(TenantFindRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TenantServiceServer).Find(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: TenantService_Find_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TenantServiceServer).Find(ctx, req.(*TenantFindRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _TenantService_ListTenantMembers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListTenantMembersRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TenantServiceServer).ListTenantMembers(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: TenantService_ListTenantMembers_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TenantServiceServer).ListTenantMembers(ctx, req.(*ListTenantMembersRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _TenantService_FindParticipatingProjects_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(FindParticipatingProjectsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TenantServiceServer).FindParticipatingProjects(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: TenantService_FindParticipatingProjects_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TenantServiceServer).FindParticipatingProjects(ctx, req.(*FindParticipatingProjectsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _TenantService_FindParticipatingTenants_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(FindParticipatingTenantsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TenantServiceServer).FindParticipatingTenants(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: TenantService_FindParticipatingTenants_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TenantServiceServer).FindParticipatingTenants(ctx, req.(*FindParticipatingTenantsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -// TenantService_ServiceDesc is the grpc.ServiceDesc for TenantService service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var TenantService_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "v1.TenantService", - HandlerType: (*TenantServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Create", - Handler: _TenantService_Create_Handler, - }, - { - MethodName: "Update", - Handler: _TenantService_Update_Handler, - }, - { - MethodName: "Delete", - Handler: _TenantService_Delete_Handler, - }, - { - MethodName: "Get", - Handler: _TenantService_Get_Handler, - }, - { - MethodName: "GetHistory", - Handler: _TenantService_GetHistory_Handler, - }, - { - MethodName: "Find", - Handler: _TenantService_Find_Handler, - }, - { - MethodName: "ListTenantMembers", - Handler: _TenantService_ListTenantMembers_Handler, - }, - { - MethodName: "FindParticipatingProjects", - Handler: _TenantService_FindParticipatingProjects_Handler, - }, - { - MethodName: "FindParticipatingTenants", - Handler: _TenantService_FindParticipatingTenants_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "v1/tenant.proto", -} diff --git a/api/v1/tenant_member.pb.go b/api/v1/tenant_member.pb.go index ec62470..0d9cc0b 100644 --- a/api/v1/tenant_member.pb.go +++ b/api/v1/tenant_member.pb.go @@ -2,9 +2,9 @@ // versions: // protoc-gen-go v1.36.6 // protoc (unknown) -// source: v1/tenant_member.proto +// source: api/v1/tenant_member.proto -package v1 +package apiv1 import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -35,7 +35,7 @@ type TenantMember struct { func (x *TenantMember) Reset() { *x = TenantMember{} - mi := &file_v1_tenant_member_proto_msgTypes[0] + mi := &file_api_v1_tenant_member_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -47,7 +47,7 @@ func (x *TenantMember) String() string { func (*TenantMember) ProtoMessage() {} func (x *TenantMember) ProtoReflect() protoreflect.Message { - mi := &file_v1_tenant_member_proto_msgTypes[0] + mi := &file_api_v1_tenant_member_proto_msgTypes[0] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -60,7 +60,7 @@ func (x *TenantMember) ProtoReflect() protoreflect.Message { // Deprecated: Use TenantMember.ProtoReflect.Descriptor instead. func (*TenantMember) Descriptor() ([]byte, []int) { - return file_v1_tenant_member_proto_rawDescGZIP(), []int{0} + return file_api_v1_tenant_member_proto_rawDescGZIP(), []int{0} } func (x *TenantMember) GetMeta() *Meta { @@ -93,7 +93,7 @@ type TenantMemberCreateRequest struct { func (x *TenantMemberCreateRequest) Reset() { *x = TenantMemberCreateRequest{} - mi := &file_v1_tenant_member_proto_msgTypes[1] + mi := &file_api_v1_tenant_member_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -105,7 +105,7 @@ func (x *TenantMemberCreateRequest) String() string { func (*TenantMemberCreateRequest) ProtoMessage() {} func (x *TenantMemberCreateRequest) ProtoReflect() protoreflect.Message { - mi := &file_v1_tenant_member_proto_msgTypes[1] + mi := &file_api_v1_tenant_member_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -118,7 +118,7 @@ func (x *TenantMemberCreateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TenantMemberCreateRequest.ProtoReflect.Descriptor instead. func (*TenantMemberCreateRequest) Descriptor() ([]byte, []int) { - return file_v1_tenant_member_proto_rawDescGZIP(), []int{1} + return file_api_v1_tenant_member_proto_rawDescGZIP(), []int{1} } func (x *TenantMemberCreateRequest) GetTenantMember() *TenantMember { @@ -137,7 +137,7 @@ type TenantMemberUpdateRequest struct { func (x *TenantMemberUpdateRequest) Reset() { *x = TenantMemberUpdateRequest{} - mi := &file_v1_tenant_member_proto_msgTypes[2] + mi := &file_api_v1_tenant_member_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -149,7 +149,7 @@ func (x *TenantMemberUpdateRequest) String() string { func (*TenantMemberUpdateRequest) ProtoMessage() {} func (x *TenantMemberUpdateRequest) ProtoReflect() protoreflect.Message { - mi := &file_v1_tenant_member_proto_msgTypes[2] + mi := &file_api_v1_tenant_member_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -162,7 +162,7 @@ func (x *TenantMemberUpdateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TenantMemberUpdateRequest.ProtoReflect.Descriptor instead. func (*TenantMemberUpdateRequest) Descriptor() ([]byte, []int) { - return file_v1_tenant_member_proto_rawDescGZIP(), []int{2} + return file_api_v1_tenant_member_proto_rawDescGZIP(), []int{2} } func (x *TenantMemberUpdateRequest) GetTenantMember() *TenantMember { @@ -181,7 +181,7 @@ type TenantMemberDeleteRequest struct { func (x *TenantMemberDeleteRequest) Reset() { *x = TenantMemberDeleteRequest{} - mi := &file_v1_tenant_member_proto_msgTypes[3] + mi := &file_api_v1_tenant_member_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -193,7 +193,7 @@ func (x *TenantMemberDeleteRequest) String() string { func (*TenantMemberDeleteRequest) ProtoMessage() {} func (x *TenantMemberDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_v1_tenant_member_proto_msgTypes[3] + mi := &file_api_v1_tenant_member_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -206,7 +206,7 @@ func (x *TenantMemberDeleteRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TenantMemberDeleteRequest.ProtoReflect.Descriptor instead. func (*TenantMemberDeleteRequest) Descriptor() ([]byte, []int) { - return file_v1_tenant_member_proto_rawDescGZIP(), []int{3} + return file_api_v1_tenant_member_proto_rawDescGZIP(), []int{3} } func (x *TenantMemberDeleteRequest) GetId() string { @@ -225,7 +225,7 @@ type TenantMemberGetRequest struct { func (x *TenantMemberGetRequest) Reset() { *x = TenantMemberGetRequest{} - mi := &file_v1_tenant_member_proto_msgTypes[4] + mi := &file_api_v1_tenant_member_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -237,7 +237,7 @@ func (x *TenantMemberGetRequest) String() string { func (*TenantMemberGetRequest) ProtoMessage() {} func (x *TenantMemberGetRequest) ProtoReflect() protoreflect.Message { - mi := &file_v1_tenant_member_proto_msgTypes[4] + mi := &file_api_v1_tenant_member_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -250,7 +250,7 @@ func (x *TenantMemberGetRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TenantMemberGetRequest.ProtoReflect.Descriptor instead. func (*TenantMemberGetRequest) Descriptor() ([]byte, []int) { - return file_v1_tenant_member_proto_rawDescGZIP(), []int{4} + return file_api_v1_tenant_member_proto_rawDescGZIP(), []int{4} } func (x *TenantMemberGetRequest) GetId() string { @@ -271,7 +271,7 @@ type TenantMemberFindRequest struct { func (x *TenantMemberFindRequest) Reset() { *x = TenantMemberFindRequest{} - mi := &file_v1_tenant_member_proto_msgTypes[5] + mi := &file_api_v1_tenant_member_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -283,7 +283,7 @@ func (x *TenantMemberFindRequest) String() string { func (*TenantMemberFindRequest) ProtoMessage() {} func (x *TenantMemberFindRequest) ProtoReflect() protoreflect.Message { - mi := &file_v1_tenant_member_proto_msgTypes[5] + mi := &file_api_v1_tenant_member_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -296,7 +296,7 @@ func (x *TenantMemberFindRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TenantMemberFindRequest.ProtoReflect.Descriptor instead. func (*TenantMemberFindRequest) Descriptor() ([]byte, []int) { - return file_v1_tenant_member_proto_rawDescGZIP(), []int{5} + return file_api_v1_tenant_member_proto_rawDescGZIP(), []int{5} } func (x *TenantMemberFindRequest) GetTenantId() string { @@ -329,7 +329,7 @@ type TenantMemberResponse struct { func (x *TenantMemberResponse) Reset() { *x = TenantMemberResponse{} - mi := &file_v1_tenant_member_proto_msgTypes[6] + mi := &file_api_v1_tenant_member_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -341,7 +341,7 @@ func (x *TenantMemberResponse) String() string { func (*TenantMemberResponse) ProtoMessage() {} func (x *TenantMemberResponse) ProtoReflect() protoreflect.Message { - mi := &file_v1_tenant_member_proto_msgTypes[6] + mi := &file_api_v1_tenant_member_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -354,7 +354,7 @@ func (x *TenantMemberResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use TenantMemberResponse.ProtoReflect.Descriptor instead. func (*TenantMemberResponse) Descriptor() ([]byte, []int) { - return file_v1_tenant_member_proto_rawDescGZIP(), []int{6} + return file_api_v1_tenant_member_proto_rawDescGZIP(), []int{6} } func (x *TenantMemberResponse) GetTenantMember() *TenantMember { @@ -373,7 +373,7 @@ type TenantMemberListResponse struct { func (x *TenantMemberListResponse) Reset() { *x = TenantMemberListResponse{} - mi := &file_v1_tenant_member_proto_msgTypes[7] + mi := &file_api_v1_tenant_member_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -385,7 +385,7 @@ func (x *TenantMemberListResponse) String() string { func (*TenantMemberListResponse) ProtoMessage() {} func (x *TenantMemberListResponse) ProtoReflect() protoreflect.Message { - mi := &file_v1_tenant_member_proto_msgTypes[7] + mi := &file_api_v1_tenant_member_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -398,7 +398,7 @@ func (x *TenantMemberListResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use TenantMemberListResponse.ProtoReflect.Descriptor instead. func (*TenantMemberListResponse) Descriptor() ([]byte, []int) { - return file_v1_tenant_member_proto_rawDescGZIP(), []int{7} + return file_api_v1_tenant_member_proto_rawDescGZIP(), []int{7} } func (x *TenantMemberListResponse) GetTenantMembers() []*TenantMember { @@ -408,88 +408,89 @@ func (x *TenantMemberListResponse) GetTenantMembers() []*TenantMember { return nil } -var File_v1_tenant_member_proto protoreflect.FileDescriptor +var File_api_v1_tenant_member_proto protoreflect.FileDescriptor -const file_v1_tenant_member_proto_rawDesc = "" + +const file_api_v1_tenant_member_proto_rawDesc = "" + "\n" + - "\x16v1/tenant_member.proto\x12\x02v1\x1a\rv1/meta.proto\"f\n" + - "\fTenantMember\x12\x1c\n" + - "\x04meta\x18\x01 \x01(\v2\b.v1.MetaR\x04meta\x12\x1b\n" + + "\x1aapi/v1/tenant_member.proto\x12\x06api.v1\x1a\x11api/v1/meta.proto\"j\n" + + "\fTenantMember\x12 \n" + + "\x04meta\x18\x01 \x01(\v2\f.api.v1.MetaR\x04meta\x12\x1b\n" + "\ttenant_id\x18\x02 \x01(\tR\btenantId\x12\x1b\n" + - "\tmember_id\x18\x03 \x01(\tR\bmemberId\"R\n" + - "\x19TenantMemberCreateRequest\x125\n" + - "\rtenant_member\x18\x01 \x01(\v2\x10.v1.TenantMemberR\ftenantMember\"R\n" + - "\x19TenantMemberUpdateRequest\x125\n" + - "\rtenant_member\x18\x01 \x01(\v2\x10.v1.TenantMemberR\ftenantMember\"+\n" + + "\tmember_id\x18\x03 \x01(\tR\bmemberId\"V\n" + + "\x19TenantMemberCreateRequest\x129\n" + + "\rtenant_member\x18\x01 \x01(\v2\x14.api.v1.TenantMemberR\ftenantMember\"V\n" + + "\x19TenantMemberUpdateRequest\x129\n" + + "\rtenant_member\x18\x01 \x01(\v2\x14.api.v1.TenantMemberR\ftenantMember\"+\n" + "\x19TenantMemberDeleteRequest\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\"(\n" + "\x16TenantMemberGetRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\"\x89\x02\n" + + "\x02id\x18\x01 \x01(\tR\x02id\"\x8d\x02\n" + "\x17TenantMemberFindRequest\x12 \n" + "\ttenant_id\x18\x01 \x01(\tH\x00R\btenantId\x88\x01\x01\x12 \n" + - "\tmember_id\x18\x02 \x01(\tH\x01R\bmemberId\x88\x01\x01\x12N\n" + - "\vannotations\x18\x06 \x03(\v2,.v1.TenantMemberFindRequest.AnnotationsEntryR\vannotations\x1a>\n" + + "\tmember_id\x18\x02 \x01(\tH\x01R\bmemberId\x88\x01\x01\x12R\n" + + "\vannotations\x18\x06 \x03(\v20.api.v1.TenantMemberFindRequest.AnnotationsEntryR\vannotations\x1a>\n" + "\x10AnnotationsEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\f\n" + "\n" + "_tenant_idB\f\n" + "\n" + - "_member_id\"M\n" + - "\x14TenantMemberResponse\x125\n" + - "\rtenant_member\x18\x01 \x01(\v2\x10.v1.TenantMemberR\ftenantMember\"S\n" + - "\x18TenantMemberListResponse\x127\n" + - "\x0etenant_members\x18\x01 \x03(\v2\x10.v1.TenantMemberR\rtenantMembers2\xde\x02\n" + - "\x13TenantMemberService\x12A\n" + - "\x06Create\x12\x1d.v1.TenantMemberCreateRequest\x1a\x18.v1.TenantMemberResponse\x12A\n" + - "\x06Update\x12\x1d.v1.TenantMemberUpdateRequest\x1a\x18.v1.TenantMemberResponse\x12A\n" + - "\x06Delete\x12\x1d.v1.TenantMemberDeleteRequest\x1a\x18.v1.TenantMemberResponse\x12;\n" + - "\x03Get\x12\x1a.v1.TenantMemberGetRequest\x1a\x18.v1.TenantMemberResponse\x12A\n" + - "\x04Find\x12\x1b.v1.TenantMemberFindRequest\x1a\x1c.v1.TenantMemberListResponseBm\n" + - "\x06com.v1B\x11TenantMemberProtoP\x01Z(github.com/metal-stack/masterdata-api/v1\xa2\x02\x03VXX\xaa\x02\x02V1\xca\x02\x02V1\xe2\x02\x0eV1\\GPBMetadata\xea\x02\x02V1b\x06proto3" + "_member_id\"Q\n" + + "\x14TenantMemberResponse\x129\n" + + "\rtenant_member\x18\x01 \x01(\v2\x14.api.v1.TenantMemberR\ftenantMember\"W\n" + + "\x18TenantMemberListResponse\x12;\n" + + "\x0etenant_members\x18\x01 \x03(\v2\x14.api.v1.TenantMemberR\rtenantMembers2\x86\x03\n" + + "\x13TenantMemberService\x12I\n" + + "\x06Create\x12!.api.v1.TenantMemberCreateRequest\x1a\x1c.api.v1.TenantMemberResponse\x12I\n" + + "\x06Update\x12!.api.v1.TenantMemberUpdateRequest\x1a\x1c.api.v1.TenantMemberResponse\x12I\n" + + "\x06Delete\x12!.api.v1.TenantMemberDeleteRequest\x1a\x1c.api.v1.TenantMemberResponse\x12C\n" + + "\x03Get\x12\x1e.api.v1.TenantMemberGetRequest\x1a\x1c.api.v1.TenantMemberResponse\x12I\n" + + "\x04Find\x12\x1f.api.v1.TenantMemberFindRequest\x1a .api.v1.TenantMemberListResponseB\x8c\x01\n" + + "\n" + + "com.api.v1B\x11TenantMemberProtoP\x01Z2github.com/metal-stack/masterdata-api/api/v1;apiv1\xa2\x02\x03AXX\xaa\x02\x06Api.V1\xca\x02\x06Api\\V1\xe2\x02\x12Api\\V1\\GPBMetadata\xea\x02\aApi::V1b\x06proto3" var ( - file_v1_tenant_member_proto_rawDescOnce sync.Once - file_v1_tenant_member_proto_rawDescData []byte + file_api_v1_tenant_member_proto_rawDescOnce sync.Once + file_api_v1_tenant_member_proto_rawDescData []byte ) -func file_v1_tenant_member_proto_rawDescGZIP() []byte { - file_v1_tenant_member_proto_rawDescOnce.Do(func() { - file_v1_tenant_member_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_v1_tenant_member_proto_rawDesc), len(file_v1_tenant_member_proto_rawDesc))) +func file_api_v1_tenant_member_proto_rawDescGZIP() []byte { + file_api_v1_tenant_member_proto_rawDescOnce.Do(func() { + file_api_v1_tenant_member_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_api_v1_tenant_member_proto_rawDesc), len(file_api_v1_tenant_member_proto_rawDesc))) }) - return file_v1_tenant_member_proto_rawDescData -} - -var file_v1_tenant_member_proto_msgTypes = make([]protoimpl.MessageInfo, 9) -var file_v1_tenant_member_proto_goTypes = []any{ - (*TenantMember)(nil), // 0: v1.TenantMember - (*TenantMemberCreateRequest)(nil), // 1: v1.TenantMemberCreateRequest - (*TenantMemberUpdateRequest)(nil), // 2: v1.TenantMemberUpdateRequest - (*TenantMemberDeleteRequest)(nil), // 3: v1.TenantMemberDeleteRequest - (*TenantMemberGetRequest)(nil), // 4: v1.TenantMemberGetRequest - (*TenantMemberFindRequest)(nil), // 5: v1.TenantMemberFindRequest - (*TenantMemberResponse)(nil), // 6: v1.TenantMemberResponse - (*TenantMemberListResponse)(nil), // 7: v1.TenantMemberListResponse - nil, // 8: v1.TenantMemberFindRequest.AnnotationsEntry - (*Meta)(nil), // 9: v1.Meta -} -var file_v1_tenant_member_proto_depIdxs = []int32{ - 9, // 0: v1.TenantMember.meta:type_name -> v1.Meta - 0, // 1: v1.TenantMemberCreateRequest.tenant_member:type_name -> v1.TenantMember - 0, // 2: v1.TenantMemberUpdateRequest.tenant_member:type_name -> v1.TenantMember - 8, // 3: v1.TenantMemberFindRequest.annotations:type_name -> v1.TenantMemberFindRequest.AnnotationsEntry - 0, // 4: v1.TenantMemberResponse.tenant_member:type_name -> v1.TenantMember - 0, // 5: v1.TenantMemberListResponse.tenant_members:type_name -> v1.TenantMember - 1, // 6: v1.TenantMemberService.Create:input_type -> v1.TenantMemberCreateRequest - 2, // 7: v1.TenantMemberService.Update:input_type -> v1.TenantMemberUpdateRequest - 3, // 8: v1.TenantMemberService.Delete:input_type -> v1.TenantMemberDeleteRequest - 4, // 9: v1.TenantMemberService.Get:input_type -> v1.TenantMemberGetRequest - 5, // 10: v1.TenantMemberService.Find:input_type -> v1.TenantMemberFindRequest - 6, // 11: v1.TenantMemberService.Create:output_type -> v1.TenantMemberResponse - 6, // 12: v1.TenantMemberService.Update:output_type -> v1.TenantMemberResponse - 6, // 13: v1.TenantMemberService.Delete:output_type -> v1.TenantMemberResponse - 6, // 14: v1.TenantMemberService.Get:output_type -> v1.TenantMemberResponse - 7, // 15: v1.TenantMemberService.Find:output_type -> v1.TenantMemberListResponse + return file_api_v1_tenant_member_proto_rawDescData +} + +var file_api_v1_tenant_member_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_api_v1_tenant_member_proto_goTypes = []any{ + (*TenantMember)(nil), // 0: api.v1.TenantMember + (*TenantMemberCreateRequest)(nil), // 1: api.v1.TenantMemberCreateRequest + (*TenantMemberUpdateRequest)(nil), // 2: api.v1.TenantMemberUpdateRequest + (*TenantMemberDeleteRequest)(nil), // 3: api.v1.TenantMemberDeleteRequest + (*TenantMemberGetRequest)(nil), // 4: api.v1.TenantMemberGetRequest + (*TenantMemberFindRequest)(nil), // 5: api.v1.TenantMemberFindRequest + (*TenantMemberResponse)(nil), // 6: api.v1.TenantMemberResponse + (*TenantMemberListResponse)(nil), // 7: api.v1.TenantMemberListResponse + nil, // 8: api.v1.TenantMemberFindRequest.AnnotationsEntry + (*Meta)(nil), // 9: api.v1.Meta +} +var file_api_v1_tenant_member_proto_depIdxs = []int32{ + 9, // 0: api.v1.TenantMember.meta:type_name -> api.v1.Meta + 0, // 1: api.v1.TenantMemberCreateRequest.tenant_member:type_name -> api.v1.TenantMember + 0, // 2: api.v1.TenantMemberUpdateRequest.tenant_member:type_name -> api.v1.TenantMember + 8, // 3: api.v1.TenantMemberFindRequest.annotations:type_name -> api.v1.TenantMemberFindRequest.AnnotationsEntry + 0, // 4: api.v1.TenantMemberResponse.tenant_member:type_name -> api.v1.TenantMember + 0, // 5: api.v1.TenantMemberListResponse.tenant_members:type_name -> api.v1.TenantMember + 1, // 6: api.v1.TenantMemberService.Create:input_type -> api.v1.TenantMemberCreateRequest + 2, // 7: api.v1.TenantMemberService.Update:input_type -> api.v1.TenantMemberUpdateRequest + 3, // 8: api.v1.TenantMemberService.Delete:input_type -> api.v1.TenantMemberDeleteRequest + 4, // 9: api.v1.TenantMemberService.Get:input_type -> api.v1.TenantMemberGetRequest + 5, // 10: api.v1.TenantMemberService.Find:input_type -> api.v1.TenantMemberFindRequest + 6, // 11: api.v1.TenantMemberService.Create:output_type -> api.v1.TenantMemberResponse + 6, // 12: api.v1.TenantMemberService.Update:output_type -> api.v1.TenantMemberResponse + 6, // 13: api.v1.TenantMemberService.Delete:output_type -> api.v1.TenantMemberResponse + 6, // 14: api.v1.TenantMemberService.Get:output_type -> api.v1.TenantMemberResponse + 7, // 15: api.v1.TenantMemberService.Find:output_type -> api.v1.TenantMemberListResponse 11, // [11:16] is the sub-list for method output_type 6, // [6:11] is the sub-list for method input_type 6, // [6:6] is the sub-list for extension type_name @@ -497,28 +498,28 @@ var file_v1_tenant_member_proto_depIdxs = []int32{ 0, // [0:6] is the sub-list for field type_name } -func init() { file_v1_tenant_member_proto_init() } -func file_v1_tenant_member_proto_init() { - if File_v1_tenant_member_proto != nil { +func init() { file_api_v1_tenant_member_proto_init() } +func file_api_v1_tenant_member_proto_init() { + if File_api_v1_tenant_member_proto != nil { return } - file_v1_meta_proto_init() - file_v1_tenant_member_proto_msgTypes[5].OneofWrappers = []any{} + file_api_v1_meta_proto_init() + file_api_v1_tenant_member_proto_msgTypes[5].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_v1_tenant_member_proto_rawDesc), len(file_v1_tenant_member_proto_rawDesc)), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_api_v1_tenant_member_proto_rawDesc), len(file_api_v1_tenant_member_proto_rawDesc)), NumEnums: 0, NumMessages: 9, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_v1_tenant_member_proto_goTypes, - DependencyIndexes: file_v1_tenant_member_proto_depIdxs, - MessageInfos: file_v1_tenant_member_proto_msgTypes, + GoTypes: file_api_v1_tenant_member_proto_goTypes, + DependencyIndexes: file_api_v1_tenant_member_proto_depIdxs, + MessageInfos: file_api_v1_tenant_member_proto_msgTypes, }.Build() - File_v1_tenant_member_proto = out.File - file_v1_tenant_member_proto_goTypes = nil - file_v1_tenant_member_proto_depIdxs = nil + File_api_v1_tenant_member_proto = out.File + file_api_v1_tenant_member_proto_goTypes = nil + file_api_v1_tenant_member_proto_depIdxs = nil } diff --git a/api/v1/tenant_member_grpc.pb.go b/api/v1/tenant_member_grpc.pb.go deleted file mode 100644 index aab5df1..0000000 --- a/api/v1/tenant_member_grpc.pb.go +++ /dev/null @@ -1,271 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.5.1 -// - protoc (unknown) -// source: v1/tenant_member.proto - -package v1 - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.64.0 or later. -const _ = grpc.SupportPackageIsVersion9 - -const ( - TenantMemberService_Create_FullMethodName = "/v1.TenantMemberService/Create" - TenantMemberService_Update_FullMethodName = "/v1.TenantMemberService/Update" - TenantMemberService_Delete_FullMethodName = "/v1.TenantMemberService/Delete" - TenantMemberService_Get_FullMethodName = "/v1.TenantMemberService/Get" - TenantMemberService_Find_FullMethodName = "/v1.TenantMemberService/Find" -) - -// TenantMemberServiceClient is the client API for TenantMemberService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -type TenantMemberServiceClient interface { - Create(ctx context.Context, in *TenantMemberCreateRequest, opts ...grpc.CallOption) (*TenantMemberResponse, error) - Update(ctx context.Context, in *TenantMemberUpdateRequest, opts ...grpc.CallOption) (*TenantMemberResponse, error) - Delete(ctx context.Context, in *TenantMemberDeleteRequest, opts ...grpc.CallOption) (*TenantMemberResponse, error) - Get(ctx context.Context, in *TenantMemberGetRequest, opts ...grpc.CallOption) (*TenantMemberResponse, error) - Find(ctx context.Context, in *TenantMemberFindRequest, opts ...grpc.CallOption) (*TenantMemberListResponse, error) -} - -type tenantMemberServiceClient struct { - cc grpc.ClientConnInterface -} - -func NewTenantMemberServiceClient(cc grpc.ClientConnInterface) TenantMemberServiceClient { - return &tenantMemberServiceClient{cc} -} - -func (c *tenantMemberServiceClient) Create(ctx context.Context, in *TenantMemberCreateRequest, opts ...grpc.CallOption) (*TenantMemberResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(TenantMemberResponse) - err := c.cc.Invoke(ctx, TenantMemberService_Create_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *tenantMemberServiceClient) Update(ctx context.Context, in *TenantMemberUpdateRequest, opts ...grpc.CallOption) (*TenantMemberResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(TenantMemberResponse) - err := c.cc.Invoke(ctx, TenantMemberService_Update_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *tenantMemberServiceClient) Delete(ctx context.Context, in *TenantMemberDeleteRequest, opts ...grpc.CallOption) (*TenantMemberResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(TenantMemberResponse) - err := c.cc.Invoke(ctx, TenantMemberService_Delete_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *tenantMemberServiceClient) Get(ctx context.Context, in *TenantMemberGetRequest, opts ...grpc.CallOption) (*TenantMemberResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(TenantMemberResponse) - err := c.cc.Invoke(ctx, TenantMemberService_Get_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *tenantMemberServiceClient) Find(ctx context.Context, in *TenantMemberFindRequest, opts ...grpc.CallOption) (*TenantMemberListResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(TenantMemberListResponse) - err := c.cc.Invoke(ctx, TenantMemberService_Find_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -// TenantMemberServiceServer is the server API for TenantMemberService service. -// All implementations should embed UnimplementedTenantMemberServiceServer -// for forward compatibility. -type TenantMemberServiceServer interface { - Create(context.Context, *TenantMemberCreateRequest) (*TenantMemberResponse, error) - Update(context.Context, *TenantMemberUpdateRequest) (*TenantMemberResponse, error) - Delete(context.Context, *TenantMemberDeleteRequest) (*TenantMemberResponse, error) - Get(context.Context, *TenantMemberGetRequest) (*TenantMemberResponse, error) - Find(context.Context, *TenantMemberFindRequest) (*TenantMemberListResponse, error) -} - -// UnimplementedTenantMemberServiceServer should be embedded to have -// forward compatible implementations. -// -// NOTE: this should be embedded by value instead of pointer to avoid a nil -// pointer dereference when methods are called. -type UnimplementedTenantMemberServiceServer struct{} - -func (UnimplementedTenantMemberServiceServer) Create(context.Context, *TenantMemberCreateRequest) (*TenantMemberResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") -} -func (UnimplementedTenantMemberServiceServer) Update(context.Context, *TenantMemberUpdateRequest) (*TenantMemberResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Update not implemented") -} -func (UnimplementedTenantMemberServiceServer) Delete(context.Context, *TenantMemberDeleteRequest) (*TenantMemberResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") -} -func (UnimplementedTenantMemberServiceServer) Get(context.Context, *TenantMemberGetRequest) (*TenantMemberResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") -} -func (UnimplementedTenantMemberServiceServer) Find(context.Context, *TenantMemberFindRequest) (*TenantMemberListResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Find not implemented") -} -func (UnimplementedTenantMemberServiceServer) testEmbeddedByValue() {} - -// UnsafeTenantMemberServiceServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to TenantMemberServiceServer will -// result in compilation errors. -type UnsafeTenantMemberServiceServer interface { - mustEmbedUnimplementedTenantMemberServiceServer() -} - -func RegisterTenantMemberServiceServer(s grpc.ServiceRegistrar, srv TenantMemberServiceServer) { - // If the following call pancis, it indicates UnimplementedTenantMemberServiceServer was - // embedded by pointer and is nil. This will cause panics if an - // unimplemented method is ever invoked, so we test this at initialization - // time to prevent it from happening at runtime later due to I/O. - if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { - t.testEmbeddedByValue() - } - s.RegisterService(&TenantMemberService_ServiceDesc, srv) -} - -func _TenantMemberService_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(TenantMemberCreateRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TenantMemberServiceServer).Create(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: TenantMemberService_Create_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TenantMemberServiceServer).Create(ctx, req.(*TenantMemberCreateRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _TenantMemberService_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(TenantMemberUpdateRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TenantMemberServiceServer).Update(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: TenantMemberService_Update_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TenantMemberServiceServer).Update(ctx, req.(*TenantMemberUpdateRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _TenantMemberService_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(TenantMemberDeleteRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TenantMemberServiceServer).Delete(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: TenantMemberService_Delete_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TenantMemberServiceServer).Delete(ctx, req.(*TenantMemberDeleteRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _TenantMemberService_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(TenantMemberGetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TenantMemberServiceServer).Get(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: TenantMemberService_Get_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TenantMemberServiceServer).Get(ctx, req.(*TenantMemberGetRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _TenantMemberService_Find_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(TenantMemberFindRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TenantMemberServiceServer).Find(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: TenantMemberService_Find_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TenantMemberServiceServer).Find(ctx, req.(*TenantMemberFindRequest)) - } - return interceptor(ctx, in, info, handler) -} - -// TenantMemberService_ServiceDesc is the grpc.ServiceDesc for TenantMemberService service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var TenantMemberService_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "v1.TenantMemberService", - HandlerType: (*TenantMemberServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Create", - Handler: _TenantMemberService_Create_Handler, - }, - { - MethodName: "Update", - Handler: _TenantMemberService_Update_Handler, - }, - { - MethodName: "Delete", - Handler: _TenantMemberService_Delete_Handler, - }, - { - MethodName: "Get", - Handler: _TenantMemberService_Get_Handler, - }, - { - MethodName: "Find", - Handler: _TenantMemberService_Find_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "v1/tenant_member.proto", -} diff --git a/api/v1/tenant_scnrvalr.go b/api/v1/tenant_scnrvalr.go index b2b9b91..59b2258 100644 --- a/api/v1/tenant_scnrvalr.go +++ b/api/v1/tenant_scnrvalr.go @@ -2,7 +2,7 @@ // DO NOT EDIT MANUALLY. // Regenerate with "go generate" or "make generate" -package v1 +package apiv1 import ( "database/sql/driver" @@ -40,7 +40,7 @@ func (t *Tenant) Kind() string { } func (t *Tenant) APIVersion() string { - return "v1" + return "apiv1" } // Value make the Tenant struct implement the driver.Valuer interface. This method diff --git a/api/v1/tenantmember.go b/api/v1/tenantmember.go index 715c2c1..bcfedc4 100644 --- a/api/v1/tenantmember.go +++ b/api/v1/tenantmember.go @@ -1,6 +1,6 @@ -package v1 +package apiv1 -//go:generate go run ../../pkg/gen/genscanvaluer.go -package v1 -type TenantMember +//go:generate go run ../../pkg/gen/genscanvaluer.go -package apiv1 -type TenantMember func (m *TenantMember) NewTenantMemberResponse() *TenantMemberResponse { return &TenantMemberResponse{ diff --git a/api/v1/tenantmember_scnrvalr.go b/api/v1/tenantmember_scnrvalr.go index c0fdcd2..4a6885c 100644 --- a/api/v1/tenantmember_scnrvalr.go +++ b/api/v1/tenantmember_scnrvalr.go @@ -2,7 +2,7 @@ // DO NOT EDIT MANUALLY. // Regenerate with "go generate" or "make generate" -package v1 +package apiv1 import ( "database/sql/driver" @@ -40,7 +40,7 @@ func (t *TenantMember) Kind() string { } func (t *TenantMember) APIVersion() string { - return "v1" + return "apiv1" } // Value make the TenantMember struct implement the driver.Valuer interface. This method diff --git a/api/v1/version.pb.go b/api/v1/version.pb.go index b6d0995..1d69301 100644 --- a/api/v1/version.pb.go +++ b/api/v1/version.pb.go @@ -2,9 +2,9 @@ // versions: // protoc-gen-go v1.36.6 // protoc (unknown) -// source: v1/version.proto +// source: api/v1/version.proto -package v1 +package apiv1 import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -29,7 +29,7 @@ type GetVersionRequest struct { func (x *GetVersionRequest) Reset() { *x = GetVersionRequest{} - mi := &file_v1_version_proto_msgTypes[0] + mi := &file_api_v1_version_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -41,7 +41,7 @@ func (x *GetVersionRequest) String() string { func (*GetVersionRequest) ProtoMessage() {} func (x *GetVersionRequest) ProtoReflect() protoreflect.Message { - mi := &file_v1_version_proto_msgTypes[0] + mi := &file_api_v1_version_proto_msgTypes[0] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -54,7 +54,7 @@ func (x *GetVersionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetVersionRequest.ProtoReflect.Descriptor instead. func (*GetVersionRequest) Descriptor() ([]byte, []int) { - return file_v1_version_proto_rawDescGZIP(), []int{0} + return file_api_v1_version_proto_rawDescGZIP(), []int{0} } type GetVersionResponse struct { @@ -69,7 +69,7 @@ type GetVersionResponse struct { func (x *GetVersionResponse) Reset() { *x = GetVersionResponse{} - mi := &file_v1_version_proto_msgTypes[1] + mi := &file_api_v1_version_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -81,7 +81,7 @@ func (x *GetVersionResponse) String() string { func (*GetVersionResponse) ProtoMessage() {} func (x *GetVersionResponse) ProtoReflect() protoreflect.Message { - mi := &file_v1_version_proto_msgTypes[1] + mi := &file_api_v1_version_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -94,7 +94,7 @@ func (x *GetVersionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetVersionResponse.ProtoReflect.Descriptor instead. func (*GetVersionResponse) Descriptor() ([]byte, []int) { - return file_v1_version_proto_rawDescGZIP(), []int{1} + return file_api_v1_version_proto_rawDescGZIP(), []int{1} } func (x *GetVersionResponse) GetVersion() string { @@ -125,42 +125,43 @@ func (x *GetVersionResponse) GetBuildDate() string { return "" } -var File_v1_version_proto protoreflect.FileDescriptor +var File_api_v1_version_proto protoreflect.FileDescriptor -const file_v1_version_proto_rawDesc = "" + +const file_api_v1_version_proto_rawDesc = "" + "\n" + - "\x10v1/version.proto\x12\x02v1\"\x13\n" + + "\x14api/v1/version.proto\x12\x06api.v1\"\x13\n" + "\x11GetVersionRequest\"\x84\x01\n" + "\x12GetVersionResponse\x12\x18\n" + "\aversion\x18\x01 \x01(\tR\aversion\x12\x1a\n" + "\brevision\x18\x02 \x01(\tR\brevision\x12\x19\n" + "\bgit_sha1\x18\x03 \x01(\tR\agitSha1\x12\x1d\n" + "\n" + - "build_date\x18\x04 \x01(\tR\tbuildDate2F\n" + - "\x0eVersionService\x124\n" + - "\x03Get\x12\x15.v1.GetVersionRequest\x1a\x16.v1.GetVersionResponseBh\n" + - "\x06com.v1B\fVersionProtoP\x01Z(github.com/metal-stack/masterdata-api/v1\xa2\x02\x03VXX\xaa\x02\x02V1\xca\x02\x02V1\xe2\x02\x0eV1\\GPBMetadata\xea\x02\x02V1b\x06proto3" + "build_date\x18\x04 \x01(\tR\tbuildDate2N\n" + + "\x0eVersionService\x12<\n" + + "\x03Get\x12\x19.api.v1.GetVersionRequest\x1a\x1a.api.v1.GetVersionResponseB\x87\x01\n" + + "\n" + + "com.api.v1B\fVersionProtoP\x01Z2github.com/metal-stack/masterdata-api/api/v1;apiv1\xa2\x02\x03AXX\xaa\x02\x06Api.V1\xca\x02\x06Api\\V1\xe2\x02\x12Api\\V1\\GPBMetadata\xea\x02\aApi::V1b\x06proto3" var ( - file_v1_version_proto_rawDescOnce sync.Once - file_v1_version_proto_rawDescData []byte + file_api_v1_version_proto_rawDescOnce sync.Once + file_api_v1_version_proto_rawDescData []byte ) -func file_v1_version_proto_rawDescGZIP() []byte { - file_v1_version_proto_rawDescOnce.Do(func() { - file_v1_version_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_v1_version_proto_rawDesc), len(file_v1_version_proto_rawDesc))) +func file_api_v1_version_proto_rawDescGZIP() []byte { + file_api_v1_version_proto_rawDescOnce.Do(func() { + file_api_v1_version_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_api_v1_version_proto_rawDesc), len(file_api_v1_version_proto_rawDesc))) }) - return file_v1_version_proto_rawDescData + return file_api_v1_version_proto_rawDescData } -var file_v1_version_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_v1_version_proto_goTypes = []any{ - (*GetVersionRequest)(nil), // 0: v1.GetVersionRequest - (*GetVersionResponse)(nil), // 1: v1.GetVersionResponse +var file_api_v1_version_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_api_v1_version_proto_goTypes = []any{ + (*GetVersionRequest)(nil), // 0: api.v1.GetVersionRequest + (*GetVersionResponse)(nil), // 1: api.v1.GetVersionResponse } -var file_v1_version_proto_depIdxs = []int32{ - 0, // 0: v1.VersionService.Get:input_type -> v1.GetVersionRequest - 1, // 1: v1.VersionService.Get:output_type -> v1.GetVersionResponse +var file_api_v1_version_proto_depIdxs = []int32{ + 0, // 0: api.v1.VersionService.Get:input_type -> api.v1.GetVersionRequest + 1, // 1: api.v1.VersionService.Get:output_type -> api.v1.GetVersionResponse 1, // [1:2] is the sub-list for method output_type 0, // [0:1] is the sub-list for method input_type 0, // [0:0] is the sub-list for extension type_name @@ -168,26 +169,26 @@ var file_v1_version_proto_depIdxs = []int32{ 0, // [0:0] is the sub-list for field type_name } -func init() { file_v1_version_proto_init() } -func file_v1_version_proto_init() { - if File_v1_version_proto != nil { +func init() { file_api_v1_version_proto_init() } +func file_api_v1_version_proto_init() { + if File_api_v1_version_proto != nil { return } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_v1_version_proto_rawDesc), len(file_v1_version_proto_rawDesc)), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_api_v1_version_proto_rawDesc), len(file_api_v1_version_proto_rawDesc)), NumEnums: 0, NumMessages: 2, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_v1_version_proto_goTypes, - DependencyIndexes: file_v1_version_proto_depIdxs, - MessageInfos: file_v1_version_proto_msgTypes, + GoTypes: file_api_v1_version_proto_goTypes, + DependencyIndexes: file_api_v1_version_proto_depIdxs, + MessageInfos: file_api_v1_version_proto_msgTypes, }.Build() - File_v1_version_proto = out.File - file_v1_version_proto_goTypes = nil - file_v1_version_proto_depIdxs = nil + File_api_v1_version_proto = out.File + file_api_v1_version_proto_goTypes = nil + file_api_v1_version_proto_depIdxs = nil } diff --git a/api/v1/version_grpc.pb.go b/api/v1/version_grpc.pb.go deleted file mode 100644 index fbb372d..0000000 --- a/api/v1/version_grpc.pb.go +++ /dev/null @@ -1,119 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.5.1 -// - protoc (unknown) -// source: v1/version.proto - -package v1 - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.64.0 or later. -const _ = grpc.SupportPackageIsVersion9 - -const ( - VersionService_Get_FullMethodName = "/v1.VersionService/Get" -) - -// VersionServiceClient is the client API for VersionService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -type VersionServiceClient interface { - Get(ctx context.Context, in *GetVersionRequest, opts ...grpc.CallOption) (*GetVersionResponse, error) -} - -type versionServiceClient struct { - cc grpc.ClientConnInterface -} - -func NewVersionServiceClient(cc grpc.ClientConnInterface) VersionServiceClient { - return &versionServiceClient{cc} -} - -func (c *versionServiceClient) Get(ctx context.Context, in *GetVersionRequest, opts ...grpc.CallOption) (*GetVersionResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(GetVersionResponse) - err := c.cc.Invoke(ctx, VersionService_Get_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -// VersionServiceServer is the server API for VersionService service. -// All implementations should embed UnimplementedVersionServiceServer -// for forward compatibility. -type VersionServiceServer interface { - Get(context.Context, *GetVersionRequest) (*GetVersionResponse, error) -} - -// UnimplementedVersionServiceServer should be embedded to have -// forward compatible implementations. -// -// NOTE: this should be embedded by value instead of pointer to avoid a nil -// pointer dereference when methods are called. -type UnimplementedVersionServiceServer struct{} - -func (UnimplementedVersionServiceServer) Get(context.Context, *GetVersionRequest) (*GetVersionResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") -} -func (UnimplementedVersionServiceServer) testEmbeddedByValue() {} - -// UnsafeVersionServiceServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to VersionServiceServer will -// result in compilation errors. -type UnsafeVersionServiceServer interface { - mustEmbedUnimplementedVersionServiceServer() -} - -func RegisterVersionServiceServer(s grpc.ServiceRegistrar, srv VersionServiceServer) { - // If the following call pancis, it indicates UnimplementedVersionServiceServer was - // embedded by pointer and is nil. This will cause panics if an - // unimplemented method is ever invoked, so we test this at initialization - // time to prevent it from happening at runtime later due to I/O. - if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { - t.testEmbeddedByValue() - } - s.RegisterService(&VersionService_ServiceDesc, srv) -} - -func _VersionService_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetVersionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(VersionServiceServer).Get(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: VersionService_Get_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VersionServiceServer).Get(ctx, req.(*GetVersionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -// VersionService_ServiceDesc is the grpc.ServiceDesc for VersionService service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var VersionService_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "v1.VersionService", - HandlerType: (*VersionServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Get", - Handler: _VersionService_Get_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "v1/version.proto", -} diff --git a/client/main.go b/client/main.go index 840084e..ab2053f 100644 --- a/client/main.go +++ b/client/main.go @@ -6,12 +6,11 @@ import ( "os" "time" + "connectrpc.com/connect" "github.com/metal-stack/masterdata-api/api/rest/mapper" "github.com/metal-stack/metal-lib/pkg/pointer" "google.golang.org/protobuf/types/known/timestamppb" - "github.com/metal-stack/masterdata-api/pkg/auth" - v1 "github.com/metal-stack/masterdata-api/api/v1" "github.com/metal-stack/masterdata-api/pkg/client" ) @@ -24,27 +23,13 @@ func main() { logger := slog.New(jsonHandler) logger.Info("Starting Client") - hmacKey := os.Getenv("HMAC_KEY") - if hmacKey == "" { - hmacKey = auth.HmacDefaultKey - } - - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) - defer cancel() - c, err := client.NewClient(ctx, "localhost", 50051, "certs/client.pem", "certs/client-key.pem", "certs/ca.pem", hmacKey, true, logger) - if err != nil { - logger.Error(err.Error()) - panic(err) - } + c := client.New(client.DialConfig{ + BaseURL: "http://localhost:9090", + Debug: true, + UserAgent: "sample-client", + }) - defer func() { - err = c.Close() - if err != nil { - logger.Error(err.Error()) - panic(err) - } - }() - err = projectExample(c, logger) + err := projectExample(c, logger) if err != nil { logger.Error(err.Error()) } @@ -83,7 +68,7 @@ func projectExample(c client.Client, log *slog.Logger) error { pcr := &v1.ProjectCreateRequest{ Project: project, } - res, err := c.Project().Create(ctx, pcr) + res, err := c.Project().Create(ctx, connect.NewRequest(pcr)) if err != nil { return err } @@ -92,79 +77,79 @@ func projectExample(c client.Client, log *slog.Logger) error { ts := time.Now() // get - projectId := res.Project.Meta.Id - prj, err := c.Project().Get(ctx, &v1.ProjectGetRequest{Id: projectId}) + projectId := res.Msg.Project.Meta.Id + prj, err := c.Project().Get(ctx, connect.NewRequest(&v1.ProjectGetRequest{Id: projectId})) if err != nil { return err } // update - prj.Project.Description = "Updated Demo Project" - prj.Project.Meta.Annotations["mykey"] = "myvalue" - prures, err := c.Project().Update(ctx, &v1.ProjectUpdateRequest{ - Project: prj.Project, - }) + prj.Msg.Project.Description = "Updated Demo Project" + prj.Msg.Project.Meta.Annotations["mykey"] = "myvalue" + prures, err := c.Project().Update(ctx, connect.NewRequest(&v1.ProjectUpdateRequest{ + Project: prj.Msg.Project, + })) if err != nil { return err } pbHp := timestamppb.New(ts) - phr, err := c.Project().GetHistory(ctx, &v1.ProjectGetHistoryRequest{ - Id: prj.Project.Meta.Id, + phr, err := c.Project().GetHistory(ctx, connect.NewRequest(&v1.ProjectGetHistoryRequest{ + Id: prj.Msg.Project.Meta.Id, At: pbHp, - }) + })) if err != nil { return err } - if phr.Project.Description != "Demo Project" { + if phr.Msg.Project.Description != "Demo Project" { return err } // explicit re-get - prj2, err := c.Project().Get(ctx, &v1.ProjectGetRequest{Id: projectId}) + prj2, err := c.Project().Get(ctx, connect.NewRequest(&v1.ProjectGetRequest{Id: projectId})) if err != nil { return err } - if prj2.GetProject().Meta.Annotations["mykey"] != "myvalue" { + if prj2.Msg.GetProject().Meta.Annotations["mykey"] != "myvalue" { return err } - if prures.Project.Meta.Version <= prj.Project.Meta.Version { + if prures.Msg.Project.Meta.Version <= prj.Msg.Project.Meta.Version { return err } - _, err = c.Project().Get(ctx, &v1.ProjectGetRequest{Id: "123123"}) + _, err = c.Project().Get(ctx, connect.NewRequest(&v1.ProjectGetRequest{Id: "123123"})) if !v1.IsNotFound(err) { return err } // find - pfr, err := c.Project().Find(ctx, &v1.ProjectFindRequest{}) + pfr, err := c.Project().Find(ctx, connect.NewRequest(&v1.ProjectFindRequest{})) if err != nil { return err } - for _, p := range pfr.Projects { + for _, p := range pfr.Msg.Projects { log.Info("found project", "project", p) } - pmcr, err := c.ProjectMember().Create(ctx, &v1.ProjectMemberCreateRequest{ + pmcr, err := c.ProjectMember().Create(ctx, connect.NewRequest(&v1.ProjectMemberCreateRequest{ ProjectMember: &v1.ProjectMember{ ProjectId: projectId, TenantId: "customer-1", }, - }) + })) if err != nil { return err } - log.Info("projectmember created", slog.Any("member", pmcr.ProjectMember)) + log.Info("projectmember created", slog.Any("member", pmcr.Msg.ProjectMember)) // delete projects - for _, p := range pfr.GetProjects() { + for _, p := range pfr.Msg.GetProjects() { pdr := v1.ProjectDeleteRequest{ Id: p.Meta.Id, } - _, err = c.Project().Delete(ctx, &pdr) + _, err = c.Project().Delete(ctx, connect.NewRequest(&pdr)) if err != nil { return err } @@ -210,15 +195,15 @@ func tenantExample(c client.Client, log *slog.Logger) error { Tenant: tnt, } - t, err := c.Tenant().Create(ctx, tcr) + t, err := c.Tenant().Create(ctx, connect.NewRequest(tcr)) if err != nil { return err } log.Info("created tenant", "tenant", t) // try to create the same tenant with the returned id another time... - tcr.Tenant.Meta = t.Tenant.Meta - _, err = c.Tenant().Create(ctx, tcr) + tcr.Tenant.Meta = t.Msg.Tenant.Meta + _, err = c.Tenant().Create(ctx, connect.NewRequest(tcr)) if err != nil { if v1.IsConflict(err) { @@ -234,28 +219,28 @@ func tenantExample(c client.Client, log *slog.Logger) error { tfrq := &v1.TenantFindRequest{ // Id: t.Id, } - tfrs, err := c.Tenant().Find(ctx, tfrq) + tfrs, err := c.Tenant().Find(ctx, connect.NewRequest(tfrq)) if err != nil { return err } - for i := range tfrs.Tenants { - log.Info("found tenant", "tenant", tfrs.Tenants[i]) + for i := range tfrs.Msg.Tenants { + log.Info("found tenant", "tenant", tfrs.Msg.Tenants[i]) } log.Info("get tenant with id") tgr := &v1.TenantGetRequest{ - Id: t.Tenant.Meta.Id, + Id: t.Msg.Tenant.Meta.Id, } - tgres, err := c.Tenant().Get(ctx, tgr) + tgres, err := c.Tenant().Get(ctx, connect.NewRequest(tgr)) if err != nil { return err } log.Info("got tenant", "id", tgres) - v1t := mapper.ToV1Tenant(tgres.Tenant) + v1t := mapper.ToV1Tenant(tgres.Msg.Tenant) mdm1t := mapper.ToMdmV1Tenant(v1t) - _, err = c.Tenant().Update(ctx, &v1.TenantUpdateRequest{Tenant: mdm1t}) + _, err = c.Tenant().Update(ctx, connect.NewRequest(&v1.TenantUpdateRequest{Tenant: mdm1t})) if err != nil { return err @@ -265,78 +250,78 @@ func tenantExample(c client.Client, log *slog.Logger) error { tgrNotFound := &v1.TenantGetRequest{ Id: "1982739817298219873", } - _, err = c.Tenant().Get(ctx, tgrNotFound) + _, err = c.Tenant().Get(ctx, connect.NewRequest(tgrNotFound)) if !v1.IsNotFound(err) { return err } // get tenant one more time to have some older version after update to provoke an optimistic lock error - tgres2, _ := c.Tenant().Get(ctx, tgr) + tgres2, _ := c.Tenant().Get(ctx, connect.NewRequest(tgr)) - tgres, err = c.Tenant().Get(ctx, tgr) + tgres, err = c.Tenant().Get(ctx, connect.NewRequest(tgr)) if err != nil { return err } - tenant := tgres.Tenant + tenant := tgres.Msg.Tenant tenant.Name = "some other name" tur := &v1.TenantUpdateRequest{ Tenant: tenant, } - tures, err := c.Tenant().Update(ctx, tur) + tures, err := c.Tenant().Update(ctx, connect.NewRequest(tur)) if err != nil { return err } log.Info("updated tenant", "tenant", tures) - tenant2 := tgres2.Tenant + tenant2 := tgres2.Msg.Tenant tenant2.Name = "update older tenant" - _, err = c.Tenant().Update(ctx, tur) + _, err = c.Tenant().Update(ctx, connect.NewRequest(tur)) if !v1.IsOptimistickLockError(err) { return err } log.Info("find tenant with id") tfrqi := &v1.TenantFindRequest{ - Id: pointer.Pointer(t.Tenant.Meta.Id), + Id: pointer.Pointer(t.Msg.Tenant.Meta.Id), } - tfrsi, err := c.Tenant().Find(ctx, tfrqi) + tfrsi, err := c.Tenant().Find(ctx, connect.NewRequest(tfrqi)) if err != nil { return err } - for i := range tfrsi.Tenants { - log.Info("found tenant", "tenant", tfrsi.Tenants[i]) + for i := range tfrsi.Msg.Tenants { + log.Info("found tenant", "tenant", tfrsi.Msg.Tenants[i]) } log.Info("delete tenant with id") tdr := &v1.TenantDeleteRequest{ - Id: t.Tenant.Meta.Id, + Id: t.Msg.Tenant.Meta.Id, } - _, err = c.Tenant().Delete(ctx, tdr) + _, err = c.Tenant().Delete(ctx, connect.NewRequest(tdr)) if err != nil { return err } log.Info("try to delete already deleted tenant") tdr2 := &v1.TenantDeleteRequest{ - Id: t.Tenant.Meta.Id, + Id: t.Msg.Tenant.Meta.Id, } - _, err = c.Tenant().Delete(ctx, tdr2) + _, err = c.Tenant().Delete(ctx, connect.NewRequest(tdr2)) if !v1.IsNotFound(err) { log.Info("got expected grpc code, indicating not found") } pbHt := timestamppb.Now() - thr, err := c.Tenant().GetHistory(ctx, &v1.TenantGetHistoryRequest{ + thr, err := c.Tenant().GetHistory(ctx, connect.NewRequest(&v1.TenantGetHistoryRequest{ Id: tdr.Id, At: pbHt, - }) + })) if err != nil { return err } - if thr.Tenant.Name != "some other name" { + if thr.Msg.Tenant.Name != "some other name" { return err } - log.Info("found history tenant", "tenant", thr.Tenant) + log.Info("found history tenant", "tenant", thr.Msg.Tenant) return nil } diff --git a/cmd/server/main.go b/cmd/server/main.go new file mode 100644 index 0000000..7e3c344 --- /dev/null +++ b/cmd/server/main.go @@ -0,0 +1,153 @@ +package main + +import ( + "fmt" + "log" + "log/slog" + "os" + + apiv1 "github.com/metal-stack/masterdata-api/api/v1" + "github.com/metal-stack/masterdata-api/pkg/datastore" + "github.com/metal-stack/v" + cli "github.com/urfave/cli/v2" +) + +func main() { + + app := &cli.App{ + Name: "masterdata server", + Usage: "grpc server for masterdata", + Version: v.V.String(), + Flags: []cli.Flag{ + &cli.StringFlag{ + Name: "grpc-server-endpoint", + Value: ":9090", + Usage: "gRPC server endpoint", + EnvVars: []string{"MASTERDATA_GRPC_SERVER_ENDPOINT"}, + }, + &cli.StringFlag{ + Name: "metrics-endpoint", + Value: ":2112", + Usage: "metrics endpoint", + EnvVars: []string{"MASTERDATA_METRICS_ENDPOINT"}, + }, + &cli.StringFlag{ + Name: "log-level", + Value: "info", + Usage: "log-level can be one of error|warn|info|debug", + EnvVars: []string{"MASTERDATA_LOG_LEVEL"}, + }, + }, + Commands: []*cli.Command{ + // { + // Name: "memory", + // Aliases: []string{"m"}, + // Usage: "start with memory backend", + // Action: func(ctx *cli.Context) error { + // c := getConfig(ctx) + // c.Storage = goipam.NewMemory(ctx.Context) + // s := newServer(c) + // return s.Run() + // }, + // }, + { + Name: "postgres", + Aliases: []string{"pg"}, + Usage: "start with postgres backend", + Flags: []cli.Flag{ + &cli.StringFlag{ + Name: "host", + Value: "localhost", + Usage: "postgres db hostname", + EnvVars: []string{"MASTERDATA_PG_HOST"}, + }, + &cli.StringFlag{ + Name: "port", + Value: "5432", + Usage: "postgres db port", + EnvVars: []string{"MASTERDATA_PG_PORT"}, + }, + &cli.StringFlag{ + Name: "user", + Value: "go-ipam", + Usage: "postgres db user", + EnvVars: []string{"MASTERDATA_PG_USER"}, + }, + &cli.StringFlag{ + Name: "password", + Value: "secret", + Usage: "postgres db password", + EnvVars: []string{"MASTERDATA_PG_PASSWORD"}, + }, + &cli.StringFlag{ + Name: "dbname", + Value: "goipam", + Usage: "postgres db name", + EnvVars: []string{"MASTERDATA_PG_DBNAME"}, + }, + &cli.StringFlag{ + Name: "sslmode", + Value: "disable", + Usage: "postgres sslmode, possible values: disable|require|verify-ca|verify-full", + EnvVars: []string{"MASTERDATA_PG_SSLMODE"}, + }, + }, + Action: func(ctx *cli.Context) error { + c := getConfig(ctx) + host := ctx.String("host") + port := ctx.String("port") + user := ctx.String("user") + password := ctx.String("password") + dbname := ctx.String("dbname") + sslmode := ctx.String("sslmode") + + ves := []datastore.Entity{ + &apiv1.Project{}, + &apiv1.ProjectMember{}, + &apiv1.Tenant{}, + &apiv1.TenantMember{}, + } + + db, err := datastore.NewPostgresDB(c.Log, host, port, user, password, dbname, sslmode, ves...) + if err != nil { + return fmt.Errorf("failed to create postgres connection: %w", err) + } + ps := datastore.New(c.Log, db, &apiv1.Project{}) + pms := datastore.New(c.Log, db, &apiv1.ProjectMember{}) + ts := datastore.New(c.Log, db, &apiv1.Tenant{}) + tms := datastore.New(c.Log, db, &apiv1.TenantMember{}) + c.ProjectDataStore = ps + c.ProjectMemberDataStore = pms + c.TenantDataStore = ts + c.TenantMemberDataStore = tms + c.DB = db + s := newServer(c) + return s.Run() + }, + }, + }, + } + + err := app.Run(os.Args) + if err != nil { + log.Fatalf("unable to start masterdata service: %v", err) + } +} + +func getConfig(ctx *cli.Context) config { + opts := &slog.HandlerOptions{ + Level: slog.LevelInfo, + } + switch ctx.String("log-level") { + case "debug": + opts.Level = slog.LevelDebug + case "error": + opts.Level = slog.LevelError + } + + return config{ + GrpcServerEndpoint: ctx.String("grpc-server-endpoint"), + MetricsEndpoint: ctx.String("metrics-endpoint"), + Log: slog.New(slog.NewJSONHandler(os.Stdout, opts)), + } +} diff --git a/cmd/server/server.go b/cmd/server/server.go new file mode 100644 index 0000000..74403d4 --- /dev/null +++ b/cmd/server/server.go @@ -0,0 +1,181 @@ +package main + +import ( + "context" + "fmt" + "log/slog" + "net/http" + _ "net/http/pprof" // nolint:gosec + "time" + + "github.com/jmoiron/sqlx" + apiv1 "github.com/metal-stack/masterdata-api/api/v1" + + apiv1connect "github.com/metal-stack/masterdata-api/api/v1/apiv1connect" + "github.com/metal-stack/masterdata-api/pkg/datastore" + "github.com/metal-stack/masterdata-api/pkg/service" + + "github.com/metal-stack/v" + "github.com/prometheus/client_golang/prometheus/promhttp" + "go.opentelemetry.io/otel/exporters/prometheus" + "go.opentelemetry.io/otel/sdk/metric" + + "connectrpc.com/connect" + "connectrpc.com/grpcreflect" + "connectrpc.com/otelconnect" + + "connectrpc.com/grpchealth" + + "golang.org/x/net/http2" + "golang.org/x/net/http2/h2c" +) + +type config struct { + GrpcServerEndpoint string + MetricsEndpoint string + Log *slog.Logger + ProjectDataStore datastore.Storage[*apiv1.Project] + ProjectMemberDataStore datastore.Storage[*apiv1.ProjectMember] + TenantDataStore datastore.Storage[*apiv1.Tenant] + TenantMemberDataStore datastore.Storage[*apiv1.TenantMember] + DB *sqlx.DB +} +type server struct { + c config + + projectDataStore datastore.Storage[*apiv1.Project] + projectMemberDataStore datastore.Storage[*apiv1.ProjectMember] + tenantDataStore datastore.Storage[*apiv1.Tenant] + tenantMemberDataStore datastore.Storage[*apiv1.TenantMember] +} + +func newServer(c config) *server { + return &server{ + c: c, + projectDataStore: c.ProjectDataStore, + projectMemberDataStore: c.ProjectMemberDataStore, + tenantDataStore: c.TenantDataStore, + tenantMemberDataStore: c.TenantMemberDataStore, + } +} +func (s *server) Run() error { + s.c.Log.Info("starting masterdata-api", "version", v.V.String()) + + // The exporter embeds a default OpenTelemetry Reader and + // implements prometheus.Collector, allowing it to be used as + // both a Reader and Collector. + exporter, err := prometheus.New() + if err != nil { + return err + } + provider := metric.NewMeterProvider(metric.WithReader(exporter)) + + // Start the prometheus HTTP server and pass the exporter Collector to it + go func() { + s.c.Log.Info("serving metrics", "at", fmt.Sprintf("%s/metrics", s.c.MetricsEndpoint)) + metricsServer := http.NewServeMux() + metricsServer.Handle("/metrics", promhttp.Handler()) + ms := &http.Server{ + Addr: s.c.MetricsEndpoint, + Handler: metricsServer, + ReadHeaderTimeout: time.Minute, + } + err := ms.ListenAndServe() + if err != nil { + s.c.Log.Error("unable to start metric endpoint", "error", err) + return + } + }() + go func() { + s.c.Log.Info("starting pprof endpoint of :2113") + // inspect via + // go tool pprof -http :8080 localhost:2113/debug/pprof/heap + // go tool pprof -http :8080 localhost:2113/debug/pprof/goroutine + server := http.Server{ + Addr: ":2113", + ReadHeaderTimeout: 1 * time.Minute, + } + err := server.ListenAndServe() + if err != nil { + s.c.Log.Error("failed to start pprof endpoint", "error", err) + return + } + }() + + otelInterceptor, err := otelconnect.NewInterceptor(otelconnect.WithMeterProvider(provider)) + if err != nil { + return err + } + + loggingInterceptor := newLoggingInterceptor(s.c.Log) + + projectService := service.NewProjectService(s.c.Log, s.c.ProjectDataStore, s.c.ProjectMemberDataStore, s.c.TenantDataStore) + projectMemberService := service.NewProjectMemberService(s.c.Log, s.c.ProjectDataStore, s.c.ProjectMemberDataStore, s.c.TenantDataStore) + // FIXME db should not be required here + tenantService := service.NewTenantService(s.c.DB, s.c.Log, s.c.TenantDataStore, s.c.TenantMemberDataStore) + tenantMemberService := service.NewTenantMemberService(s.c.Log, s.c.TenantDataStore, s.c.TenantMemberDataStore) + versionService := service.NewVersionService() + + // healthv1.RegisterHealthServer(grpcServer, healthServer) + interceptors := connect.WithInterceptors(loggingInterceptor, otelInterceptor) + + mux := http.NewServeMux() + mux.Handle(apiv1connect.NewProjectServiceHandler(projectService, interceptors)) + mux.Handle(apiv1connect.NewProjectMemberServiceHandler(projectMemberService, interceptors)) + mux.Handle(apiv1connect.NewTenantServiceHandler(tenantService, interceptors)) + mux.Handle(apiv1connect.NewTenantMemberServiceHandler(tenantMemberService, interceptors)) + mux.Handle(apiv1connect.NewVersionServiceHandler(versionService, interceptors)) + + allServiceNames := []string{ + apiv1connect.ProjectServiceName, + apiv1connect.ProjectMemberServiceName, + apiv1connect.TenantServiceName, + apiv1connect.TenantMemberServiceName, + apiv1connect.VersionServiceName, + } + + checker := grpchealth.NewStaticChecker(allServiceNames...) + mux.Handle(grpchealth.NewHandler(checker)) + + // enable remote service listing by enabling reflection + reflector := grpcreflect.NewStaticReflector(allServiceNames...) + mux.Handle(grpcreflect.NewHandlerV1(reflector)) + mux.Handle(grpcreflect.NewHandlerV1Alpha(reflector)) + + server := http.Server{ + Addr: s.c.GrpcServerEndpoint, + // For gRPC clients, it's convenient to support HTTP/2 without TLS. You can + // avoid x/net/http2 by using http.ListenAndServeTLS. + Handler: h2c.NewHandler(mux, &http2.Server{}), + ReadHeaderTimeout: 1 * time.Minute, + } + + s.c.Log.Info("started grpc server", "at", server.Addr) + err = server.ListenAndServe() + return err +} + +func newLoggingInterceptor(log *slog.Logger) connect.UnaryInterceptorFunc { + interceptor := func(next connect.UnaryFunc) connect.UnaryFunc { + return connect.UnaryFunc(func(ctx context.Context, req connect.AnyRequest) (connect.AnyResponse, error) { + var ( + procedure = req.Spec().Procedure + request = req.Any() + ) + if procedure == apiv1connect.VersionServiceGetProcedure { + return next(ctx, req) + } + log.Debug("call", "proc", procedure, "req", request) + + response, err := next(ctx, req) + if err != nil { + log.Error("call", "proc", procedure, "error", err) + } else { + log.Debug("call", "proc", procedure, "req", request, "resp", response.Any()) + } + + return response, err + }) + } + return connect.UnaryInterceptorFunc(interceptor) +} diff --git a/go.mod b/go.mod index 2be3c87..0106f87 100644 --- a/go.mod +++ b/go.mod @@ -3,26 +3,30 @@ module github.com/metal-stack/masterdata-api go 1.24 require ( + connectrpc.com/connect v1.18.1 + connectrpc.com/grpchealth v1.4.0 + connectrpc.com/grpcreflect v1.3.0 + connectrpc.com/otelconnect v0.7.2 github.com/Masterminds/squirrel v1.5.4 github.com/google/go-cmp v0.7.0 github.com/google/uuid v1.6.0 - github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.1 github.com/jmoiron/sqlx v1.4.0 github.com/json-iterator/go v1.1.12 + github.com/klauspost/connect-compress/v2 v2.0.0 github.com/lib/pq v1.10.9 github.com/lopezator/migrator v0.3.1 github.com/metal-stack/metal-lib v0.22.1 github.com/metal-stack/security v0.9.4 github.com/metal-stack/v v1.0.3 github.com/prometheus/client_golang v1.22.0 - github.com/spf13/cobra v1.9.1 - github.com/spf13/viper v1.20.1 github.com/stretchr/testify v1.10.0 github.com/testcontainers/testcontainers-go v0.37.0 github.com/testcontainers/testcontainers-go/modules/postgres v0.37.0 - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 - go.opentelemetry.io/otel/trace v1.35.0 + github.com/urfave/cli/v2 v2.27.6 + go.opentelemetry.io/otel/exporters/prometheus v0.57.0 + go.opentelemetry.io/otel/sdk/metric v1.35.0 + golang.org/x/net v0.39.0 google.golang.org/grpc v1.72.0 google.golang.org/protobuf v1.36.6 sigs.k8s.io/yaml v1.4.0 @@ -40,6 +44,7 @@ require ( github.com/containerd/platforms v0.2.1 // indirect github.com/coreos/go-oidc/v3 v3.14.1 // indirect github.com/cpuguy83/dockercfg v0.3.2 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.6 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 // indirect github.com/distribution/reference v0.6.0 // indirect @@ -48,7 +53,6 @@ require ( github.com/docker/go-units v0.5.0 // indirect github.com/ebitengine/purego v0.8.2 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/go-jose/go-jose/v4 v4.1.0 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect @@ -57,13 +61,11 @@ require ( github.com/go-openapi/runtime v0.28.0 // indirect github.com/go-openapi/strfmt v0.23.0 // indirect github.com/go-openapi/swag v0.23.1 // indirect - github.com/go-viper/mapstructure/v2 v2.2.1 // indirect github.com/goccy/go-json v0.10.5 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt/v5 v5.2.2 // indirect github.com/gorilla/mux v1.8.1 // indirect github.com/icza/dyno v0.0.0-20230330125955-09f820a8d9c0 // indirect - github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/klauspost/compress v1.18.0 // indirect github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect @@ -93,25 +95,20 @@ require ( github.com/oklog/ulid v1.3.1 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.1 // indirect - github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.63.0 // indirect github.com/prometheus/procfs v0.16.1 // indirect - github.com/sagikazarmark/locafero v0.9.0 // indirect + github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/segmentio/asm v1.2.0 // indirect github.com/shirou/gopsutil/v4 v4.25.3 // indirect github.com/sirupsen/logrus v1.9.3 // indirect - github.com/sourcegraph/conc v0.3.0 // indirect - github.com/spf13/afero v1.14.0 // indirect - github.com/spf13/cast v1.7.1 // indirect - github.com/spf13/pflag v1.0.6 // indirect github.com/stretchr/objx v0.5.2 // indirect - github.com/subosito/gotenv v1.6.0 // indirect github.com/tklauser/go-sysconf v0.3.15 // indirect github.com/tklauser/numcpus v0.10.0 // indirect + github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect go.mongodb.org/mongo-driver v1.17.3 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect @@ -119,9 +116,9 @@ require ( go.opentelemetry.io/otel v1.35.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0 // indirect go.opentelemetry.io/otel/metric v1.35.0 // indirect - go.uber.org/multierr v1.11.0 // indirect + go.opentelemetry.io/otel/sdk v1.35.0 // indirect + go.opentelemetry.io/otel/trace v1.35.0 // indirect golang.org/x/crypto v0.37.0 // indirect - golang.org/x/net v0.39.0 // indirect golang.org/x/oauth2 v0.29.0 // indirect golang.org/x/sync v0.13.0 // indirect golang.org/x/sys v0.32.0 // indirect diff --git a/go.sum b/go.sum index be262ef..d1bc2fd 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,11 @@ -cloud.google.com/go/compute/metadata v0.6.0 h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I= -cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg= +connectrpc.com/connect v1.18.1 h1:PAg7CjSAGvscaf6YZKUefjoih5Z/qYkyaTrBW8xvYPw= +connectrpc.com/connect v1.18.1/go.mod h1:0292hj1rnx8oFrStN7cB4jjVBeqs+Yx5yDIC2prWDO8= +connectrpc.com/grpchealth v1.4.0 h1:MJC96JLelARPgZTiRF9KRfY/2N9OcoQvF2EWX07v2IE= +connectrpc.com/grpchealth v1.4.0/go.mod h1:WhW6m1EzTmq3Ky1FE8EfkIpSDc6TfUx2M2KqZO3ts/Q= +connectrpc.com/grpcreflect v1.3.0 h1:Y4V+ACf8/vOb1XOc251Qun7jMB75gCUNw6llvB9csXc= +connectrpc.com/grpcreflect v1.3.0/go.mod h1:nfloOtCS8VUQOQ1+GTdFzVg2CJo4ZGaat8JIovCtDYs= +connectrpc.com/otelconnect v0.7.2 h1:WlnwFzaW64dN06JXU+hREPUGeEzpz3Acz2ACOmN8cMI= +connectrpc.com/otelconnect v0.7.2/go.mod h1:JS7XUKfuJs2adhCnXhNHPHLz6oAaZniCJdSF00OZSew= dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= @@ -28,6 +34,7 @@ github.com/coreos/go-oidc/v3 v3.14.1 h1:9ePWwfdwC4QKRlCXsJGou56adA/owXczOzwKdOum github.com/coreos/go-oidc/v3 v3.14.1/go.mod h1:HaZ3szPaZ0e4r6ebqvsLWlk2Tn+aejfmrfah6hnSYEU= github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= +github.com/cpuguy83/go-md2man/v2 v2.0.6 h1:XJtiaUW6dEEqVuZiMTn1ldk455QWwEIsMIJlo5vtkx0= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= @@ -49,10 +56,6 @@ github.com/ebitengine/purego v0.8.2 h1:jPPGWs2sZ1UgOSgD2bClL0MJIqu58nOmIcBuXr62z github.com/ebitengine/purego v0.8.2/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= -github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= -github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= -github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/go-jose/go-jose/v4 v4.1.0 h1:cYSYxd3pw5zd2FSXk2vGdn9igQU2PS8MuxrCOCl0FdY= github.com/go-jose/go-jose/v4 v4.1.0/go.mod h1:GG/vqmYm3Von2nYiB2vGTXzdoNKE5tix5tuc6iAd+sw= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -85,8 +88,6 @@ github.com/go-openapi/validate v0.24.0 h1:LdfDKwNbpB6Vn40xhTdNZAnfLECL81w+VX3Bum github.com/go-openapi/validate v0.24.0/go.mod h1:iyeX1sEufmv3nPbBdX3ieNviWnOZaJ1+zquzJEf2BAQ= github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y= github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= -github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss= -github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= @@ -103,16 +104,12 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= -github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpSQwGEnkcRpTqNOIR6bJbR0gAorgP9CSALpRcKoAA= -github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.1 h1:KcFzXwzM/kGhIRHvc8jdixfIJjVzuUJdnv+5xsPutog= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.1/go.mod h1:qOchhhIlmRcqk/O9uCo/puJlyo07YINaIqdZfZG3Jkc= github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 h1:e9Rjr40Z98/clHv5Yg79Is0NtosR5LXRvdr7o/6NwbA= github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1/go.mod h1:tIxuGz/9mpox++sgp9fJjHO0+q1X9/UOWd798aAm22M= github.com/icza/dyno v0.0.0-20230330125955-09f820a8d9c0 h1:nHoRIX8iXob3Y2kdt9KsjyIb7iApSvb3vgsd93xb5Ow= github.com/icza/dyno v0.0.0-20230330125955-09f820a8d9c0/go.mod h1:c1tRKs5Tx7E2+uHGSyyncziFjvGpgv4H2HrqXeUQ/Uk= -github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= -github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8= github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= github.com/jackc/pgconn v1.11.0 h1:HiHArx4yFbwl91X3qqIHtUFoiIfLNJXCQRsnzkiwwaQ= @@ -143,6 +140,8 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= +github.com/klauspost/connect-compress/v2 v2.0.0 h1:L7TVsLa6Oo9Hkkb6r3DwSrhBbcWlXjneqBj7fCRXviU= +github.com/klauspost/connect-compress/v2 v2.0.0/go.mod h1:604CD9JSAjGqtVzCM4SRgM/9TFTkWBcp+2wlQfGyJ6c= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -218,8 +217,6 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8 github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= -github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= -github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -237,27 +234,14 @@ github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzM github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sagikazarmark/locafero v0.9.0 h1:GbgQGNtTrEmddYDSAH9QLRyfAHY12md+8YFTqyMTC9k= -github.com/sagikazarmark/locafero v0.9.0/go.mod h1:UBUyz37V+EdMS3hDF3QWIiVr/2dPrx49OMO0Bn0hJqk= github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys= github.com/segmentio/asm v1.2.0/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs= github.com/shirou/gopsutil/v4 v4.25.3 h1:SeA68lsu8gLggyMbmCn8cmp97V1TI9ld9sVzAUcKcKE= github.com/shirou/gopsutil/v4 v4.25.3/go.mod h1:xbuxyoZj+UsgnZrENu3lQivsngRR5BdjbJwf2fv4szA= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= -github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= -github.com/spf13/afero v1.14.0 h1:9tH6MapGnn/j0eb0yIXiLjERO8RB6xIVZRDCX7PtqWA= -github.com/spf13/afero v1.14.0/go.mod h1:acJQ8t0ohCGuMN3O+Pv0V0hgMxNYDlvdk+VTfyZmbYo= -github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y= -github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= -github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= -github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= -github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= -github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.20.1 h1:ZMi+z/lvLyPSCoNtFCpqjy0S4kPbirhpTMwl8BkW9X4= -github.com/spf13/viper v1.20.1/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= @@ -268,8 +252,6 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= -github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/testcontainers/testcontainers-go v0.37.0 h1:L2Qc0vkTw2EHWQ08djon0D2uw7Z/PtHS/QzZZ5Ra/hg= github.com/testcontainers/testcontainers-go v0.37.0/go.mod h1:QPzbxZhQ6Bclip9igjLFj6z0hs01bU8lrl2dHQmgFGM= github.com/testcontainers/testcontainers-go/modules/postgres v0.37.0 h1:hsVwFkS6s+79MbKEO+W7A1wNIw1fmkMtF4fg83m6kbc= @@ -278,6 +260,10 @@ github.com/tklauser/go-sysconf v0.3.15 h1:VE89k0criAymJ/Os65CSn1IXaol+1wrsFHEB8O github.com/tklauser/go-sysconf v0.3.15/go.mod h1:Dmjwr6tYFIseJw7a3dRLJfsHAMXZ3nEnL/aZY+0IuI4= github.com/tklauser/numcpus v0.10.0 h1:18njr6LDBk1zuna922MgdjQuJFjrdppsZG60sHGfjso= github.com/tklauser/numcpus v0.10.0/go.mod h1:BiTKazU708GQTYF4mB+cmlpT2Is1gLk7XVuEeem8LsQ= +github.com/urfave/cli/v2 v2.27.6 h1:VdRdS98FNhKZ8/Az8B7MTyGQmpIr36O1EHybx/LaZ4g= +github.com/urfave/cli/v2 v2.27.6/go.mod h1:3Sevf16NykTbInEnD0yKkjDAeZDS0A6bzhBH5hrMvTQ= +github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4= +github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= @@ -286,8 +272,6 @@ go.mongodb.org/mongo-driver v1.17.3 h1:TQyXhnsWfWtgAhMtOgtYHMTkZIfBTpMTsMnd9ZBeH go.mongodb.org/mongo-driver v1.17.3/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 h1:x7wzEgXfnzJcHDwStJT+mxOz4etr2EcexjqhBvmoakw= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0/go.mod h1:rg+RlpR5dKwaS95IyyZqj5Wd4E13lk/msnTS0Xl9lJM= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 h1:sbiXRNDSWJOTobXh5HyQKjq6wUC5tNybqjIqDpAY4CU= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0/go.mod h1:69uWxva0WgAA/4bu2Yy70SLDBwZXuQ6PbBpbsa5iZrQ= go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= @@ -296,6 +280,8 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 h1:1fTNlAIJZGWLP5FVu0f go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0/go.mod h1:zjPK58DtkqQFn+YUMbx0M2XV3QgKU0gS9LeGohREyK4= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0 h1:xJ2qHD0C1BeYVTLLR9sX12+Qb95kfeD/byKj6Ky1pXg= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0/go.mod h1:u5BF1xyjstDowA1R5QAO9JHzqK+ublenEW/dyqTjBVk= +go.opentelemetry.io/otel/exporters/prometheus v0.57.0 h1:AHh/lAP1BHrY5gBwk8ncc25FXWm/gmmY3BX258z5nuk= +go.opentelemetry.io/otel/exporters/prometheus v0.57.0/go.mod h1:QpFWz1QxqevfjwzYdbMb4Y1NnlJvqSGwyuU0B4iuc9c= go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= @@ -306,8 +292,6 @@ go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4= go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4= -go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= -go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= diff --git a/pkg/client/client.go b/pkg/client/client.go index ea2a933..f43869b 100644 --- a/pkg/client/client.go +++ b/pkg/client/client.go @@ -1,135 +1,72 @@ package client import ( - "context" - "crypto/tls" - "crypto/x509" - "errors" - "fmt" - "log/slog" - "os" - - "github.com/metal-stack/masterdata-api/pkg/auth" - "google.golang.org/grpc" - "google.golang.org/grpc/credentials" - - v1 "github.com/metal-stack/masterdata-api/api/v1" + compress "github.com/klauspost/connect-compress/v2" + "github.com/metal-stack/masterdata-api/api/v1/apiv1connect" ) // Client defines the client API -type Client interface { - Project() v1.ProjectServiceClient - ProjectMember() v1.ProjectMemberServiceClient - Tenant() v1.TenantServiceClient - TenantMember() v1.TenantMemberServiceClient - Version() v1.VersionServiceClient - Close() error -} - -// GRPCClient is a Client implementation with grpc transport. -type GRPCClient struct { - conn *grpc.ClientConn - log *slog.Logger - hmacKey string -} - -// NewClient creates a new client for the services for the given address, with the certificate and hmac. -func NewClient(ctx context.Context, hostname string, port int, certFile string, keyFile string, caFile string, hmacKey string, insecure bool, logger *slog.Logger) (Client, error) { - - address := fmt.Sprintf("%s:%d", hostname, port) - - certPool, err := x509.SystemCertPool() - if err != nil { - return nil, fmt.Errorf("failed to load system credentials: %w", err) - } - - if caFile != "" { - ca, err := os.ReadFile(caFile) - if err != nil { - return nil, fmt.Errorf("could not read ca certificate: %w", err) - } - - ok := certPool.AppendCertsFromPEM(ca) - if !ok { - return nil, fmt.Errorf("failed to append ca certs: %s", caFile) - } - } - - clientCertificate, err := tls.LoadX509KeyPair(certFile, keyFile) - if err != nil { - return nil, fmt.Errorf("could not load client key pair: %w", err) - } - - creds := credentials.NewTLS(&tls.Config{ - ServerName: hostname, - Certificates: []tls.Certificate{clientCertificate}, - RootCAs: certPool, - MinVersion: tls.VersionTLS12, - InsecureSkipVerify: insecure, // nolint:gosec - }) - - if hmacKey == "" { - return nil, errors.New("no hmac-key specified") +type ( + Client interface { + Project() apiv1connect.ProjectServiceClient + ProjectMember() apiv1connect.ProjectMemberServiceClient + Tenant() apiv1connect.TenantServiceClient + TenantMember() apiv1connect.TenantMemberServiceClient + Version() apiv1connect.VersionServiceClient } - client := GRPCClient{ - log: logger, - hmacKey: hmacKey, + client struct { + config DialConfig } +) - // Set up the credentials for the connection. - perRPCHMACAuthenticator, err := auth.NewHMACAuther(hmacKey, auth.EditUser) - if err != nil { - return nil, fmt.Errorf("failed to create hmac-authenticator: %w", err) - } - - opts := []grpc.DialOption{ - // In addition to the following grpc.DialOption, callers may also use - // the grpc.CallOption grpc.PerRPCCredentials with the RPC invocation - // itself. - // See: https://godoc.org/google.golang.org/grpc#PerRPCCredentials - grpc.WithPerRPCCredentials(perRPCHMACAuthenticator), - // oauth.NewOauthAccess requires the configuration of transport - // credentials. - grpc.WithTransportCredentials(creds), - - // grpc.WithInsecure(), - } - // Set up a connection to the server. - conn, err := grpc.NewClient(address, opts...) - if err != nil { - return nil, err +// GRPCClient is a Client implementation with grpc transport. +func New(config DialConfig) Client { + return &client{ + config: config, } - client.conn = conn - - return client, nil -} - -// Close the underlying connection -func (c GRPCClient) Close() error { - return c.conn.Close() } // Project is the root accessor for project related functions -func (c GRPCClient) Project() v1.ProjectServiceClient { - return v1.NewProjectServiceClient(c.conn) +func (c client) Project() apiv1connect.ProjectServiceClient { + return apiv1connect.NewProjectServiceClient( + c.config.HttpClient(), + c.config.BaseURL, + compress.WithAll(compress.LevelBalanced), + ) } // ProjectMember is the root accessor for project member related functions -func (c GRPCClient) ProjectMember() v1.ProjectMemberServiceClient { - return v1.NewProjectMemberServiceClient(c.conn) +func (c client) ProjectMember() apiv1connect.ProjectMemberServiceClient { + return apiv1connect.NewProjectMemberServiceClient( + c.config.HttpClient(), + c.config.BaseURL, + compress.WithAll(compress.LevelBalanced), + ) } // Tenant is the root accessor for tenant related functions -func (c GRPCClient) Tenant() v1.TenantServiceClient { - return v1.NewTenantServiceClient(c.conn) +func (c client) Tenant() apiv1connect.TenantServiceClient { + return apiv1connect.NewTenantServiceClient( + c.config.HttpClient(), + c.config.BaseURL, + compress.WithAll(compress.LevelBalanced), + ) } // Tenant is the root accessor for tenant related functions -func (c GRPCClient) TenantMember() v1.TenantMemberServiceClient { - return v1.NewTenantMemberServiceClient(c.conn) +func (c client) TenantMember() apiv1connect.TenantMemberServiceClient { + return apiv1connect.NewTenantMemberServiceClient( + c.config.HttpClient(), + c.config.BaseURL, + compress.WithAll(compress.LevelBalanced), + ) } -func (c GRPCClient) Version() v1.VersionServiceClient { - return v1.NewVersionServiceClient(c.conn) +func (c client) Version() apiv1connect.VersionServiceClient { + return apiv1connect.NewVersionServiceClient( + c.config.HttpClient(), + c.config.BaseURL, + compress.WithAll(compress.LevelBalanced), + ) } diff --git a/pkg/client/conn.go b/pkg/client/conn.go new file mode 100644 index 0000000..db46542 --- /dev/null +++ b/pkg/client/conn.go @@ -0,0 +1,59 @@ +package client + +import ( + "fmt" + "net/http" + "net/http/httputil" +) + +// DialConfig is the configuration to create a api-server connection +type DialConfig struct { + BaseURL string + Token string + Debug bool + + UserAgent string +} + +func (d *DialConfig) HttpClient() *http.Client { + return &http.Client{ + Transport: &AddHeaderTransport{ + debug: d.Debug, + T: http.DefaultTransport, + Token: d.Token, + }, + } +} + +type AddHeaderTransport struct { + debug bool + + Token string + T http.RoundTripper +} + +func (a *AddHeaderTransport) RoundTrip(req *http.Request) (*http.Response, error) { + req.Header.Add("Authorization", "Bearer "+a.Token) + + if a.debug { + reqDump, err := httputil.DumpRequestOut(req, true) + if err != nil { + fmt.Printf("DEBUG ERROR: %s\n", err) + } else { + fmt.Printf("DEBUG REQUEST:\n%s\n", string(reqDump)) + } + } + + resp, err := a.T.RoundTrip(req) + + if a.debug && resp != nil { + respDump, err := httputil.DumpResponse(resp, true) + if err != nil { + fmt.Printf("DEBUG ERROR: %s\n", err) + } else { + fmt.Printf("DEBUG RESPONSE:\n%s\n", string(respDump)) + } + } + + return resp, err +} diff --git a/pkg/client/mock.go b/pkg/client/mock.go index 17a2768..a6d9fbb 100644 --- a/pkg/client/mock.go +++ b/pkg/client/mock.go @@ -1,18 +1,18 @@ package client import ( - v1 "github.com/metal-stack/masterdata-api/api/v1" + "github.com/metal-stack/masterdata-api/api/v1/apiv1connect" ) type MockClient struct { - psc v1.ProjectServiceClient - tsc v1.TenantServiceClient - pmsc v1.ProjectMemberServiceClient - tmsc v1.TenantMemberServiceClient - vsc v1.VersionServiceClient + psc apiv1connect.ProjectServiceClient + tsc apiv1connect.TenantServiceClient + pmsc apiv1connect.ProjectMemberServiceClient + tmsc apiv1connect.TenantMemberServiceClient + vsc apiv1connect.VersionServiceClient } -func NewMock(psc v1.ProjectServiceClient, tsc v1.TenantServiceClient, pmsc v1.ProjectMemberServiceClient, tmsc v1.TenantMemberServiceClient, vsc v1.VersionServiceClient) *MockClient { +func NewMock(psc apiv1connect.ProjectServiceClient, tsc apiv1connect.TenantServiceClient, pmsc apiv1connect.ProjectMemberServiceClient, tmsc apiv1connect.TenantMemberServiceClient, vsc apiv1connect.VersionServiceClient) *MockClient { return &MockClient{ psc: psc, tsc: tsc, @@ -25,19 +25,19 @@ func NewMock(psc v1.ProjectServiceClient, tsc v1.TenantServiceClient, pmsc v1.Pr func (c *MockClient) Close() error { return nil } -func (c *MockClient) Project() v1.ProjectServiceClient { +func (c *MockClient) Project() apiv1connect.ProjectServiceClient { return c.psc } -func (c *MockClient) ProjectMember() v1.ProjectMemberServiceClient { +func (c *MockClient) ProjectMember() apiv1connect.ProjectMemberServiceClient { return c.pmsc } -func (c *MockClient) Tenant() v1.TenantServiceClient { +func (c *MockClient) Tenant() apiv1connect.TenantServiceClient { return c.tsc } -func (c *MockClient) TenantMember() v1.TenantMemberServiceClient { +func (c *MockClient) TenantMember() apiv1connect.TenantMemberServiceClient { return c.tmsc } -func (c *MockClient) Version() v1.VersionServiceClient { +func (c *MockClient) Version() apiv1connect.VersionServiceClient { return c.vsc } diff --git a/pkg/datastore/mocks/Entity.go b/pkg/datastore/mocks/Entity.go index c6c94f4..9ff6a16 100644 --- a/pkg/datastore/mocks/Entity.go +++ b/pkg/datastore/mocks/Entity.go @@ -3,7 +3,8 @@ package mocks import ( - v1 "github.com/metal-stack/masterdata-api/api/v1" + apiv1 "github.com/metal-stack/masterdata-api/api/v1" + mock "github.com/stretchr/testify/mock" ) @@ -31,19 +32,19 @@ func (_m *Entity) APIVersion() string { } // GetMeta provides a mock function with no fields -func (_m *Entity) GetMeta() *v1.Meta { +func (_m *Entity) GetMeta() *apiv1.Meta { ret := _m.Called() if len(ret) == 0 { panic("no return value specified for GetMeta") } - var r0 *v1.Meta - if rf, ok := ret.Get(0).(func() *v1.Meta); ok { + var r0 *apiv1.Meta + if rf, ok := ret.Get(0).(func() *apiv1.Meta); ok { r0 = rf() } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(*v1.Meta) + r0 = ret.Get(0).(*apiv1.Meta) } } diff --git a/pkg/datastore/mocks/Storage.go b/pkg/datastore/mocks/Storage.go index 1559acf..6d5336b 100644 --- a/pkg/datastore/mocks/Storage.go +++ b/pkg/datastore/mocks/Storage.go @@ -5,12 +5,13 @@ package mocks import ( context "context" + apiv1 "github.com/metal-stack/masterdata-api/api/v1" + datastore "github.com/metal-stack/masterdata-api/pkg/datastore" + mock "github.com/stretchr/testify/mock" time "time" - - v1 "github.com/metal-stack/masterdata-api/api/v1" ) // Storage is an autogenerated mock type for the Storage type @@ -80,7 +81,7 @@ func (_m *Storage[E]) DeleteAll(ctx context.Context, ids ...string) error { } // Find provides a mock function with given fields: ctx, filter, paging -func (_m *Storage[E]) Find(ctx context.Context, filter map[string]interface{}, paging *v1.Paging) ([]E, *uint64, error) { +func (_m *Storage[E]) Find(ctx context.Context, filter map[string]interface{}, paging *apiv1.Paging) ([]E, *uint64, error) { ret := _m.Called(ctx, filter, paging) if len(ret) == 0 { @@ -90,10 +91,10 @@ func (_m *Storage[E]) Find(ctx context.Context, filter map[string]interface{}, p var r0 []E var r1 *uint64 var r2 error - if rf, ok := ret.Get(0).(func(context.Context, map[string]interface{}, *v1.Paging) ([]E, *uint64, error)); ok { + if rf, ok := ret.Get(0).(func(context.Context, map[string]interface{}, *apiv1.Paging) ([]E, *uint64, error)); ok { return rf(ctx, filter, paging) } - if rf, ok := ret.Get(0).(func(context.Context, map[string]interface{}, *v1.Paging) []E); ok { + if rf, ok := ret.Get(0).(func(context.Context, map[string]interface{}, *apiv1.Paging) []E); ok { r0 = rf(ctx, filter, paging) } else { if ret.Get(0) != nil { @@ -101,7 +102,7 @@ func (_m *Storage[E]) Find(ctx context.Context, filter map[string]interface{}, p } } - if rf, ok := ret.Get(1).(func(context.Context, map[string]interface{}, *v1.Paging) *uint64); ok { + if rf, ok := ret.Get(1).(func(context.Context, map[string]interface{}, *apiv1.Paging) *uint64); ok { r1 = rf(ctx, filter, paging) } else { if ret.Get(1) != nil { @@ -109,7 +110,7 @@ func (_m *Storage[E]) Find(ctx context.Context, filter map[string]interface{}, p } } - if rf, ok := ret.Get(2).(func(context.Context, map[string]interface{}, *v1.Paging) error); ok { + if rf, ok := ret.Get(2).(func(context.Context, map[string]interface{}, *apiv1.Paging) error); ok { r2 = rf(ctx, filter, paging) } else { r2 = ret.Error(2) diff --git a/pkg/service/project.go b/pkg/service/project.go index 2964777..3256592 100644 --- a/pkg/service/project.go +++ b/pkg/service/project.go @@ -5,6 +5,7 @@ import ( "fmt" "log/slog" + "connectrpc.com/connect" v1 "github.com/metal-stack/masterdata-api/api/v1" "github.com/metal-stack/masterdata-api/pkg/datastore" "google.golang.org/grpc/codes" @@ -27,7 +28,8 @@ func NewProjectService(l *slog.Logger, pds ProjectDataStore, pmds ProjectMemberD } } -func (s *projectService) Create(ctx context.Context, req *v1.ProjectCreateRequest) (*v1.ProjectResponse, error) { +func (s *projectService) Create(ctx context.Context, rq *connect.Request[v1.ProjectCreateRequest]) (*connect.Response[v1.ProjectResponse], error) { + req := rq.Msg project := req.Project tenant, err := s.tenantStore.Get(ctx, project.GetTenantId()) @@ -62,9 +64,10 @@ func (s *projectService) Create(ctx context.Context, req *v1.ProjectCreateReques project.Meta = &v1.Meta{} } err = s.projectStore.Create(ctx, project) - return project.NewProjectResponse(), err + return connect.NewResponse(project.NewProjectResponse()), err } -func (s *projectService) Update(ctx context.Context, req *v1.ProjectUpdateRequest) (*v1.ProjectResponse, error) { +func (s *projectService) Update(ctx context.Context, rq *connect.Request[v1.ProjectUpdateRequest]) (*connect.Response[v1.ProjectResponse], error) { + req := rq.Msg old, err := s.projectStore.Get(ctx, req.Project.Meta.Id) if err != nil { return nil, err @@ -74,9 +77,10 @@ func (s *projectService) Update(ctx context.Context, req *v1.ProjectUpdateReques return nil, status.Error(codes.InvalidArgument, fmt.Sprintf("update tenant of project:%s is not allowed", project.Meta.Id)) } err = s.projectStore.Update(ctx, project) - return project.NewProjectResponse(), err + return connect.NewResponse(project.NewProjectResponse()), err } -func (s *projectService) Delete(ctx context.Context, req *v1.ProjectDeleteRequest) (*v1.ProjectResponse, error) { +func (s *projectService) Delete(ctx context.Context, rq *connect.Request[v1.ProjectDeleteRequest]) (*connect.Response[v1.ProjectResponse], error) { + req := rq.Msg project := req.NewProject() filter := map[string]any{ "projectmember ->> 'project_id'": project.Meta.Id, @@ -101,25 +105,28 @@ func (s *projectService) Delete(ctx context.Context, req *v1.ProjectDeleteReques if err != nil { return nil, err } - return project.NewProjectResponse(), nil + return connect.NewResponse(project.NewProjectResponse()), nil } -func (s *projectService) Get(ctx context.Context, req *v1.ProjectGetRequest) (*v1.ProjectResponse, error) { +func (s *projectService) Get(ctx context.Context, rq *connect.Request[v1.ProjectGetRequest]) (*connect.Response[v1.ProjectResponse], error) { + req := rq.Msg project, err := s.projectStore.Get(ctx, req.Id) if err != nil { return nil, err } - return project.NewProjectResponse(), nil + return connect.NewResponse(project.NewProjectResponse()), nil } -func (s *projectService) GetHistory(ctx context.Context, req *v1.ProjectGetHistoryRequest) (*v1.ProjectResponse, error) { +func (s *projectService) GetHistory(ctx context.Context, rq *connect.Request[v1.ProjectGetHistoryRequest]) (*connect.Response[v1.ProjectResponse], error) { + req := rq.Msg project := &v1.Project{} at := req.At.AsTime() err := s.projectStore.GetHistory(ctx, req.Id, at, project) if err != nil { return nil, err } - return project.NewProjectResponse(), nil + return connect.NewResponse(project.NewProjectResponse()), nil } -func (s *projectService) Find(ctx context.Context, req *v1.ProjectFindRequest) (*v1.ProjectListResponse, error) { +func (s *projectService) Find(ctx context.Context, rq *connect.Request[v1.ProjectFindRequest]) (*connect.Response[v1.ProjectListResponse], error) { + req := rq.Msg filter := make(map[string]any) if req.Id != nil { filter["id"] = req.Id @@ -145,5 +152,5 @@ func (s *projectService) Find(ctx context.Context, req *v1.ProjectFindRequest) ( resp := new(v1.ProjectListResponse) resp.Projects = append(resp.Projects, res...) resp.NextPage = nextPage - return resp, nil + return connect.NewResponse(resp), nil } diff --git a/pkg/service/project_test.go b/pkg/service/project_test.go index ffa5b32..e89d219 100644 --- a/pkg/service/project_test.go +++ b/pkg/service/project_test.go @@ -4,6 +4,7 @@ import ( "context" "log/slog" + "connectrpc.com/connect" v1 "github.com/metal-stack/masterdata-api/api/v1" "github.com/metal-stack/metal-lib/pkg/pointer" "github.com/stretchr/testify/assert" @@ -44,11 +45,11 @@ func TestCreateProject(t *testing.T) { } tenantStorageMock.On("Get", ctx, p1.GetTenantId()).Return(t1, nil) storageMock.On("Create", ctx, p1).Return(nil) - resp, err := ts.Create(ctx, tcr) + resp, err := ts.Create(ctx, connect.NewRequest(tcr)) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.GetProject()) - assert.Equal(t, tcr.Project.GetName(), resp.GetProject().GetName()) + assert.NotNil(t, resp.Msg.Project) + assert.Equal(t, tcr.Project.GetName(), resp.Msg.Project.GetName()) } func TestCreateProjectWithQuotaCheck(t *testing.T) { @@ -83,11 +84,11 @@ func TestCreateProjectWithQuotaCheck(t *testing.T) { tenantStorageMock.On("Get", ctx, p1.GetTenantId()).Return(t1, nil) storageMock.On("Find", ctx, filter, mock.AnythingOfType("*v1.Paging")).Return(projects, nil, nil) storageMock.On("Create", ctx, p1).Return(nil) - resp, err := ts.Create(ctx, tcr) + resp, err := ts.Create(ctx, connect.NewRequest(tcr)) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.GetProject()) - assert.Equal(t, tcr.Project.GetName(), resp.GetProject().GetName()) + assert.NotNil(t, resp.Msg.Project) + assert.Equal(t, tcr.Project.GetName(), resp.Msg.Project.GetName()) } func TestUpdateProject(t *testing.T) { @@ -116,11 +117,11 @@ func TestUpdateProject(t *testing.T) { storageMock.On("Get", ctx, t1.Meta.Id).Return(t1, nil) storageMock.On("Update", ctx, t1).Return(nil) - resp, err := ts.Update(ctx, tur) + resp, err := ts.Update(ctx, connect.NewRequest(tur)) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.GetProject()) - assert.Equal(t, tur.GetProject().GetName(), resp.GetProject().GetName()) + assert.NotNil(t, resp.Msg.Project) + assert.Equal(t, tur.GetProject().GetName(), resp.Msg.Project.GetName()) } func TestDeleteProject(t *testing.T) { @@ -148,11 +149,11 @@ func TestDeleteProject(t *testing.T) { projectMemberStorageMock.On("Find", ctx, filter, paging).Return([]*v1.ProjectMember{}, nil, nil) storageMock.On("DeleteAll", ctx, p3.Meta.Id).Return(nil) storageMock.On("Delete", ctx, p3.Meta.Id).Return(nil) - resp, err := ps.Delete(ctx, pdr) + resp, err := ps.Delete(ctx, connect.NewRequest(pdr)) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.GetProject()) - assert.Equal(t, pdr.Id, resp.GetProject().GetMeta().GetId()) + assert.NotNil(t, resp.Msg.Project) + assert.Equal(t, pdr.Id, resp.Msg.Project.GetMeta().GetId()) } func TestGetProject(t *testing.T) { @@ -172,11 +173,11 @@ func TestGetProject(t *testing.T) { } storageMock.On("Get", ctx, "p4").Return(t4, nil) - resp, err := ts.Get(ctx, tgr) + resp, err := ts.Get(ctx, connect.NewRequest(tgr)) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.GetProject()) - assert.Equal(t, tgr.Id, resp.GetProject().GetMeta().GetId()) + assert.NotNil(t, resp.Msg.Project) + assert.Equal(t, tgr.Id, resp.Msg.Project.GetMeta().GetId()) } func TestFindProjectByID(t *testing.T) { @@ -197,7 +198,7 @@ func TestFindProjectByID(t *testing.T) { f1["id"] = pointer.Pointer("p5") storageMock.On("Find", ctx, f1, mock.AnythingOfType("*v1.Paging")).Return(t5s, nil, nil) - resp, err := ts.Find(ctx, tfr) + resp, err := ts.Find(ctx, connect.NewRequest(tfr)) require.NoError(t, err) assert.NotNil(t, resp) } @@ -221,7 +222,7 @@ func TestFindProjectByName(t *testing.T) { f2 := make(map[string]any) f2["project ->> 'name'"] = pointer.Pointer("Sixth") storageMock.On("Find", ctx, f2, mock.AnythingOfType("*v1.Paging")).Return(t6s, nil, nil) - resp, err := ts.Find(ctx, tfr) + resp, err := ts.Find(ctx, connect.NewRequest(tfr)) require.NoError(t, err) assert.NotNil(t, resp) } @@ -245,7 +246,7 @@ func TestFindProjectByTenant(t *testing.T) { f2 := make(map[string]any) f2["project ->> 'tenant_id'"] = pointer.Pointer("p1") storageMock.On("Find", ctx, f2, mock.AnythingOfType("*v1.Paging")).Return(t6s, nil, nil) - resp, err := ts.Find(ctx, tfr) + resp, err := ts.Find(ctx, connect.NewRequest(tfr)) require.NoError(t, err) assert.NotNil(t, resp) } diff --git a/pkg/service/projectmember.go b/pkg/service/projectmember.go index 2307dc7..852dfd1 100644 --- a/pkg/service/projectmember.go +++ b/pkg/service/projectmember.go @@ -5,6 +5,7 @@ import ( "fmt" "log/slog" + "connectrpc.com/connect" v1 "github.com/metal-stack/masterdata-api/api/v1" "github.com/metal-stack/masterdata-api/pkg/datastore" "google.golang.org/grpc/codes" @@ -27,7 +28,8 @@ func NewProjectMemberService(l *slog.Logger, pds ProjectDataStore, pmds ProjectM } } -func (s *projectMemberService) Create(ctx context.Context, req *v1.ProjectMemberCreateRequest) (*v1.ProjectMemberResponse, error) { +func (s *projectMemberService) Create(ctx context.Context, rq *connect.Request[v1.ProjectMemberCreateRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { + req := rq.Msg projectMember := req.ProjectMember _, err := s.tenantStore.Get(ctx, projectMember.GetTenantId()) @@ -51,26 +53,30 @@ func (s *projectMemberService) Create(ctx context.Context, req *v1.ProjectMember projectMember.Meta = &v1.Meta{} } err = s.projectMemberStore.Create(ctx, projectMember) - return projectMember.NewProjectMemberResponse(), err + return connect.NewResponse(projectMember.NewProjectMemberResponse()), err } -func (s *projectMemberService) Update(ctx context.Context, req *v1.ProjectMemberUpdateRequest) (*v1.ProjectMemberResponse, error) { +func (s *projectMemberService) Update(ctx context.Context, rq *connect.Request[v1.ProjectMemberUpdateRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { + req := rq.Msg projectMember := req.ProjectMember err := s.projectMemberStore.Update(ctx, projectMember) - return projectMember.NewProjectMemberResponse(), err + return connect.NewResponse(projectMember.NewProjectMemberResponse()), err } -func (s *projectMemberService) Delete(ctx context.Context, req *v1.ProjectMemberDeleteRequest) (*v1.ProjectMemberResponse, error) { +func (s *projectMemberService) Delete(ctx context.Context, rq *connect.Request[v1.ProjectMemberDeleteRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { + req := rq.Msg projectMember := req.NewProjectMember() err := s.projectMemberStore.Delete(ctx, projectMember.Meta.Id) - return projectMember.NewProjectMemberResponse(), err + return connect.NewResponse(projectMember.NewProjectMemberResponse()), err } -func (s *projectMemberService) Get(ctx context.Context, req *v1.ProjectMemberGetRequest) (*v1.ProjectMemberResponse, error) { +func (s *projectMemberService) Get(ctx context.Context, rq *connect.Request[v1.ProjectMemberGetRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { + req := rq.Msg projectMember, err := s.projectMemberStore.Get(ctx, req.Id) if err != nil { return nil, err } - return projectMember.NewProjectMemberResponse(), nil + return connect.NewResponse(projectMember.NewProjectMemberResponse()), nil } -func (s *projectMemberService) Find(ctx context.Context, req *v1.ProjectMemberFindRequest) (*v1.ProjectMemberListResponse, error) { +func (s *projectMemberService) Find(ctx context.Context, rq *connect.Request[v1.ProjectMemberFindRequest]) (*connect.Response[v1.ProjectMemberListResponse], error) { + req := rq.Msg filter := make(map[string]any) if req.ProjectId != nil { filter["projectmember ->> 'project_id'"] = req.ProjectId @@ -89,5 +95,5 @@ func (s *projectMemberService) Find(ctx context.Context, req *v1.ProjectMemberFi } resp := new(v1.ProjectMemberListResponse) resp.ProjectMembers = append(resp.ProjectMembers, res...) - return resp, nil + return connect.NewResponse(resp), nil } diff --git a/pkg/service/projectmember_test.go b/pkg/service/projectmember_test.go index 05fb2dd..9d8e223 100644 --- a/pkg/service/projectmember_test.go +++ b/pkg/service/projectmember_test.go @@ -4,6 +4,7 @@ import ( "context" "log/slog" + "connectrpc.com/connect" v1 "github.com/metal-stack/masterdata-api/api/v1" "github.com/metal-stack/metal-lib/pkg/pointer" "github.com/stretchr/testify/assert" @@ -39,11 +40,11 @@ func TestCreateProjectMember(t *testing.T) { tenantStorageMock.On("Get", ctx, pm1.GetTenantId()).Return(t1, nil) projectStorageMock.On("Get", ctx, pm1.GetProjectId()).Return(p1, nil) storageMock.On("Create", ctx, pm1).Return(nil) - resp, err := ts.Create(ctx, pmcr) + resp, err := ts.Create(ctx, connect.NewRequest(pmcr)) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.GetProjectMember()) - assert.Equal(t, pmcr.ProjectMember.ProjectId, resp.GetProjectMember().GetProjectId()) + assert.NotNil(t, resp.Msg.ProjectMember) + assert.Equal(t, pmcr.ProjectMember.ProjectId, resp.Msg.ProjectMember.GetProjectId()) } func TestUpdateProjectMember(t *testing.T) { @@ -74,11 +75,11 @@ func TestUpdateProjectMember(t *testing.T) { } storageMock.On("Update", ctx, pm1).Return(nil) - resp, err := ts.Update(ctx, pmur) + resp, err := ts.Update(ctx, connect.NewRequest(pmur)) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.GetProjectMember()) - assert.Equal(t, pmur.GetProjectMember().Meta.Annotations, resp.GetProjectMember().Meta.Annotations) + assert.NotNil(t, resp.Msg.ProjectMember) + assert.Equal(t, pmur.ProjectMember.Meta.Annotations, resp.Msg.ProjectMember.Meta.Annotations) } func TestDeleteProjectMember(t *testing.T) { @@ -100,11 +101,11 @@ func TestDeleteProjectMember(t *testing.T) { } storageMock.On("Delete", ctx, t3.Meta.Id).Return(nil) - resp, err := ts.Delete(ctx, tdr) + resp, err := ts.Delete(ctx, connect.NewRequest(tdr)) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.GetProjectMember()) - assert.Equal(t, tdr.Id, resp.GetProjectMember().GetMeta().GetId()) + assert.NotNil(t, resp.Msg.ProjectMember) + assert.Equal(t, tdr.Id, resp.Msg.ProjectMember.GetMeta().GetId()) } func TestGetProjectMember(t *testing.T) { @@ -126,11 +127,11 @@ func TestGetProjectMember(t *testing.T) { } storageMock.On("Get", ctx, "p4").Return(t4, nil) - resp, err := ts.Get(ctx, tgr) + resp, err := ts.Get(ctx, connect.NewRequest(tgr)) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.GetProjectMember()) - assert.Equal(t, tgr.Id, resp.GetProjectMember().GetMeta().GetId()) + assert.NotNil(t, resp.Msg.ProjectMember) + assert.Equal(t, tgr.Id, resp.Msg.ProjectMember.GetMeta().GetId()) } func TestFindProjectMemberByProject(t *testing.T) { @@ -154,7 +155,7 @@ func TestFindProjectMemberByProject(t *testing.T) { f2 := make(map[string]any) f2["projectmember ->> 'project_id'"] = pointer.Pointer("p1") storageMock.On("Find", ctx, f2, mock.AnythingOfType("*v1.Paging")).Return(t6s, nil, nil) - resp, err := ts.Find(ctx, tfr) + resp, err := ts.Find(ctx, connect.NewRequest(tfr)) require.NoError(t, err) assert.NotNil(t, resp) } @@ -180,7 +181,7 @@ func TestFindProjectMemberByTenant(t *testing.T) { f2 := make(map[string]any) f2["projectmember ->> 'tenant_id'"] = pointer.Pointer("t1") storageMock.On("Find", ctx, f2, mock.AnythingOfType("*v1.Paging")).Return(t6s, nil, nil) - resp, err := ts.Find(ctx, tfr) + resp, err := ts.Find(ctx, connect.NewRequest(tfr)) require.NoError(t, err) assert.NotNil(t, resp) } diff --git a/pkg/service/tenant.go b/pkg/service/tenant.go index 30731a0..962214d 100644 --- a/pkg/service/tenant.go +++ b/pkg/service/tenant.go @@ -6,6 +6,7 @@ import ( "fmt" "log/slog" + "connectrpc.com/connect" sq "github.com/Masterminds/squirrel" "github.com/jmoiron/sqlx" v1 "github.com/metal-stack/masterdata-api/api/v1" @@ -35,22 +36,25 @@ func NewTenantService(db *sqlx.DB, l *slog.Logger, tds TenantDataStore, tmds Ten } } -func (s *tenantService) Create(ctx context.Context, req *v1.TenantCreateRequest) (*v1.TenantResponse, error) { +func (s *tenantService) Create(ctx context.Context, rq *connect.Request[v1.TenantCreateRequest]) (*connect.Response[v1.TenantResponse], error) { + req := rq.Msg tenant := req.Tenant // allow create without sending Meta if tenant.Meta == nil { tenant.Meta = &v1.Meta{} } err := s.tenantStore.Create(ctx, tenant) - return tenant.NewTenantResponse(), err + return connect.NewResponse(tenant.NewTenantResponse()), err } -func (s *tenantService) Update(ctx context.Context, req *v1.TenantUpdateRequest) (*v1.TenantResponse, error) { +func (s *tenantService) Update(ctx context.Context, rq *connect.Request[v1.TenantUpdateRequest]) (*connect.Response[v1.TenantResponse], error) { + req := rq.Msg tenant := req.Tenant err := s.tenantStore.Update(ctx, tenant) - return tenant.NewTenantResponse(), err + return connect.NewResponse(tenant.NewTenantResponse()), err } -func (s *tenantService) Delete(ctx context.Context, req *v1.TenantDeleteRequest) (*v1.TenantResponse, error) { +func (s *tenantService) Delete(ctx context.Context, rq *connect.Request[v1.TenantDeleteRequest]) (*connect.Response[v1.TenantResponse], error) { + req := rq.Msg tenant := req.NewTenant() tenantFilter := map[string]any{ "tenantmember ->> 'tenant_id'": tenant.Meta.Id, @@ -84,20 +88,22 @@ func (s *tenantService) Delete(ctx context.Context, req *v1.TenantDeleteRequest) if err != nil { return nil, err } - return tenant.NewTenantResponse(), nil + return connect.NewResponse(tenant.NewTenantResponse()), nil } -func (s *tenantService) Get(ctx context.Context, req *v1.TenantGetRequest) (*v1.TenantResponse, error) { +func (s *tenantService) Get(ctx context.Context, rq *connect.Request[v1.TenantGetRequest]) (*connect.Response[v1.TenantResponse], error) { + req := rq.Msg tenant, err := s.tenantStore.Get(ctx, req.Id) if err != nil { return nil, err } // response with entity, no error - return tenant.NewTenantResponse(), nil + return connect.NewResponse(tenant.NewTenantResponse()), nil } -func (s *tenantService) GetHistory(ctx context.Context, req *v1.TenantGetHistoryRequest) (*v1.TenantResponse, error) { +func (s *tenantService) GetHistory(ctx context.Context, rq *connect.Request[v1.TenantGetHistoryRequest]) (*connect.Response[v1.TenantResponse], error) { + req := rq.Msg tenant := &v1.Tenant{} at := req.At.AsTime() s.log.Info("getHistory", "id", req.Id, "at", at) @@ -107,10 +113,11 @@ func (s *tenantService) GetHistory(ctx context.Context, req *v1.TenantGetHistory } // response with entity, no error - return tenant.NewTenantResponse(), nil + return connect.NewResponse(tenant.NewTenantResponse()), nil } -func (s *tenantService) Find(ctx context.Context, req *v1.TenantFindRequest) (*v1.TenantListResponse, error) { +func (s *tenantService) Find(ctx context.Context, rq *connect.Request[v1.TenantFindRequest]) (*connect.Response[v1.TenantListResponse], error) { + req := rq.Msg filter := make(map[string]any) if req.Id != nil { filter["id"] = req.GetId() @@ -130,7 +137,7 @@ func (s *tenantService) Find(ctx context.Context, req *v1.TenantFindRequest) (*v resp := new(v1.TenantListResponse) resp.Tenants = append(resp.Tenants, res...) resp.NextPage = nextPage - return resp, nil + return connect.NewResponse(resp), nil } var ( @@ -154,7 +161,8 @@ var ( // FindParticipatingProjects returns all projects in which a member participates. // This includes projects in which the member is explicitly participating through a project membership but may also // include memberships, which are inherited by the tenant membership. -func (s *tenantService) FindParticipatingProjects(ctx context.Context, req *v1.FindParticipatingProjectsRequest) (*v1.FindParticipatingProjectsResponse, error) { +func (s *tenantService) FindParticipatingProjects(ctx context.Context, rq *connect.Request[v1.FindParticipatingProjectsRequest]) (*connect.Response[v1.FindParticipatingProjectsResponse], error) { + req := rq.Msg type result struct { Project *v1.Project TenantMembershipAnnotations []byte `db:"tenant_membership_annotations"` @@ -216,7 +224,7 @@ func (s *tenantService) FindParticipatingProjects(ctx context.Context, req *v1.F res = append(res, p) } - return &v1.FindParticipatingProjectsResponse{Projects: res}, nil + return connect.NewResponse(&v1.FindParticipatingProjectsResponse{Projects: res}), nil } var ( @@ -241,7 +249,8 @@ var ( // FindParticipatingTenants returns all tenants in which a member participates. // This includes tenants in which the member is explicitly participating through a tenant membership but may also // include memberships, which are inherited by the project memberships (e.g. through project invites). -func (s *tenantService) FindParticipatingTenants(ctx context.Context, req *v1.FindParticipatingTenantsRequest) (*v1.FindParticipatingTenantsResponse, error) { +func (s *tenantService) FindParticipatingTenants(ctx context.Context, rq *connect.Request[v1.FindParticipatingTenantsRequest]) (*connect.Response[v1.FindParticipatingTenantsResponse], error) { + req := rq.Msg type result struct { Tenant *v1.Tenant TenantMembershipAnnotations []byte `db:"tenant_membership_annotations"` @@ -303,7 +312,7 @@ func (s *tenantService) FindParticipatingTenants(ctx context.Context, req *v1.Fi res = append(res, t) } - return &v1.FindParticipatingTenantsResponse{Tenants: res}, nil + return connect.NewResponse(&v1.FindParticipatingTenantsResponse{Tenants: res}), nil } var ( @@ -328,7 +337,8 @@ var ( // ListTenantMembers returns all members of a tenant. // This includes members which are explicitly participating through a tenant membership but may also // include memberships, which are inherited by the project memberships (e.g. through project invites). -func (s *tenantService) ListTenantMembers(ctx context.Context, req *v1.ListTenantMembersRequest) (*v1.ListTenantMembersResponse, error) { +func (s *tenantService) ListTenantMembers(ctx context.Context, rq *connect.Request[v1.ListTenantMembersRequest]) (*connect.Response[v1.ListTenantMembersResponse], error) { + req := rq.Msg type result struct { Tenant *v1.Tenant TenantMembershipAnnotations []byte `db:"tenant_membership_annotations"` @@ -387,5 +397,5 @@ func (s *tenantService) ListTenantMembers(ctx context.Context, req *v1.ListTenan res = append(res, t) } - return &v1.ListTenantMembersResponse{Tenants: res}, nil + return connect.NewResponse(&v1.ListTenantMembersResponse{Tenants: res}), nil } diff --git a/pkg/service/tenant_test.go b/pkg/service/tenant_test.go index 6684c0a..0ca3c84 100644 --- a/pkg/service/tenant_test.go +++ b/pkg/service/tenant_test.go @@ -7,6 +7,7 @@ import ( "slices" "testing" + "connectrpc.com/connect" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" v1 "github.com/metal-stack/masterdata-api/api/v1" @@ -57,11 +58,11 @@ func TestCreateTenant(t *testing.T) { } storageMock.On("Create", ctx, t1).Return(nil) - resp, err := ts.Create(ctx, tcr) + resp, err := ts.Create(ctx, connect.NewRequest(tcr)) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.GetTenant()) - assert.Equal(t, tcr.Tenant.GetName(), resp.GetTenant().GetName()) + assert.NotNil(t, resp.Msg.Tenant) + assert.Equal(t, tcr.Tenant.GetName(), resp.Msg.Tenant.GetName()) } func TestUpdateTenant(t *testing.T) { @@ -81,11 +82,11 @@ func TestUpdateTenant(t *testing.T) { } storageMock.On("Update", ctx, t1).Return(nil) - resp, err := ts.Update(ctx, tur) + resp, err := ts.Update(ctx, connect.NewRequest(tur)) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.GetTenant()) - assert.Equal(t, tur.Tenant.GetName(), resp.GetTenant().GetName()) + assert.NotNil(t, resp.Msg.Tenant) + assert.Equal(t, tur.Tenant.GetName(), resp.Msg.Tenant.GetName()) } func TestDeleteTenant(t *testing.T) { @@ -114,11 +115,11 @@ func TestDeleteTenant(t *testing.T) { storageMock.On("Delete", ctx, t3.Meta.Id).Return(nil) memberStorageMock.On("Find", ctx, tfilter, paging).Return([]*v1.TenantMember{}, nil, nil) memberStorageMock.On("Find", ctx, mfilter, paging).Return([]*v1.TenantMember{}, nil, nil) - resp, err := ts.Delete(ctx, tdr) + resp, err := ts.Delete(ctx, connect.NewRequest(tdr)) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.GetTenant()) - assert.Equal(t, tdr.Id, resp.GetTenant().GetMeta().GetId()) + assert.NotNil(t, resp.Msg.Tenant) + assert.Equal(t, tdr.Id, resp.Msg.Tenant.GetMeta().GetId()) } func TestGetTenant(t *testing.T) { @@ -136,11 +137,11 @@ func TestGetTenant(t *testing.T) { } storageMock.On("Get", ctx, "t4").Return(t4, nil) - resp, err := ts.Get(ctx, tgr) + resp, err := ts.Get(ctx, connect.NewRequest(tgr)) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.GetTenant()) - assert.Equal(t, tgr.Id, resp.GetTenant().GetMeta().GetId()) + assert.NotNil(t, resp.Msg.Tenant) + assert.Equal(t, tgr.Id, resp.Msg.Tenant.GetMeta().GetId()) } func TestFindTenantByID(t *testing.T) { @@ -159,7 +160,7 @@ func TestFindTenantByID(t *testing.T) { f1["id"] = "t5" storageMock.On("Find", ctx, f1, mock.AnythingOfType("*v1.Paging")).Return(t5s, nil, nil) - resp, err := ts.Find(ctx, tfr) + resp, err := ts.Find(ctx, connect.NewRequest(tfr)) require.NoError(t, err) assert.NotNil(t, resp) } @@ -181,7 +182,7 @@ func TestFindTenantByName(t *testing.T) { f2 := make(map[string]any) f2["tenant ->> 'name'"] = "Fifth" storageMock.On("Find", ctx, f2, mock.AnythingOfType("*v1.Paging")).Return(t6s, nil, nil) - resp, err := ts.Find(ctx, tfr) + resp, err := ts.Find(ctx, connect.NewRequest(tfr)) require.NoError(t, err) assert.NotNil(t, resp) } @@ -412,12 +413,12 @@ func Test_tenantService_FindParticipatingProjects(t *testing.T) { tt.prepare() } - got, err := s.FindParticipatingProjects(ctx, tt.req) + got, err := s.FindParticipatingProjects(ctx, connect.NewRequest(tt.req)) if diff := cmp.Diff(err, tt.wantErr); diff != "" { t.Errorf("(-want +got):\n%s", diff) return } - slices.SortFunc(got.Projects, func(i, j *v1.ProjectWithMembershipAnnotations) int { + slices.SortFunc(got.Msg.Projects, func(i, j *v1.ProjectWithMembershipAnnotations) int { if i.Project.Meta.Id < j.Project.Meta.Id { return -1 } else { @@ -638,13 +639,13 @@ func Test_tenantService_FindParticipatingTenants(t *testing.T) { tt.prepare() } - got, err := s.FindParticipatingTenants(ctx, tt.req) + got, err := s.FindParticipatingTenants(ctx, connect.NewRequest(tt.req)) if diff := cmp.Diff(err, tt.wantErr); diff != "" { t.Errorf("(-want +got):\n%s", diff) return } - slices.SortFunc(got.Tenants, func(i, j *v1.TenantWithMembershipAnnotations) int { + slices.SortFunc(got.Msg.Tenants, func(i, j *v1.TenantWithMembershipAnnotations) int { if i.Tenant.Meta.Id < j.Tenant.Meta.Id { return -1 } else { @@ -868,7 +869,7 @@ func Test_tenantService_ListTenantMembers(t *testing.T) { tt.prepare() } - got, err := s.ListTenantMembers(ctx, tt.req) + got, err := s.ListTenantMembers(ctx, connect.NewRequest(tt.req)) if diff := cmp.Diff(err, tt.wantErr); diff != "" { t.Errorf("(-want +got):\n%s", diff) return diff --git a/pkg/service/tenantmember.go b/pkg/service/tenantmember.go index c61e864..82c3bdb 100644 --- a/pkg/service/tenantmember.go +++ b/pkg/service/tenantmember.go @@ -5,6 +5,7 @@ import ( "fmt" "log/slog" + "connectrpc.com/connect" v1 "github.com/metal-stack/masterdata-api/api/v1" "github.com/metal-stack/masterdata-api/pkg/datastore" "google.golang.org/grpc/codes" @@ -25,7 +26,8 @@ func NewTenantMemberService(l *slog.Logger, tds TenantDataStore, tmds TenantMemb } } -func (s *tenantMemberService) Create(ctx context.Context, req *v1.TenantMemberCreateRequest) (*v1.TenantMemberResponse, error) { +func (s *tenantMemberService) Create(ctx context.Context, rq *connect.Request[v1.TenantMemberCreateRequest]) (*connect.Response[v1.TenantMemberResponse], error) { + req := rq.Msg tenantMember := req.TenantMember _, err := s.tenantStore.Get(ctx, tenantMember.GetTenantId()) @@ -49,26 +51,30 @@ func (s *tenantMemberService) Create(ctx context.Context, req *v1.TenantMemberCr tenantMember.Meta = &v1.Meta{} } err = s.tenantMemberStore.Create(ctx, tenantMember) - return tenantMember.NewTenantMemberResponse(), err + return connect.NewResponse(tenantMember.NewTenantMemberResponse()), err } -func (s *tenantMemberService) Update(ctx context.Context, req *v1.TenantMemberUpdateRequest) (*v1.TenantMemberResponse, error) { +func (s *tenantMemberService) Update(ctx context.Context, rq *connect.Request[v1.TenantMemberUpdateRequest]) (*connect.Response[v1.TenantMemberResponse], error) { + req := rq.Msg tenantMember := req.TenantMember err := s.tenantMemberStore.Update(ctx, tenantMember) - return tenantMember.NewTenantMemberResponse(), err + return connect.NewResponse(tenantMember.NewTenantMemberResponse()), err } -func (s *tenantMemberService) Delete(ctx context.Context, req *v1.TenantMemberDeleteRequest) (*v1.TenantMemberResponse, error) { +func (s *tenantMemberService) Delete(ctx context.Context, rq *connect.Request[v1.TenantMemberDeleteRequest]) (*connect.Response[v1.TenantMemberResponse], error) { + req := rq.Msg tenantMember := req.NewTenantMember() err := s.tenantMemberStore.Delete(ctx, tenantMember.Meta.Id) - return tenantMember.NewTenantMemberResponse(), err + return connect.NewResponse(tenantMember.NewTenantMemberResponse()), err } -func (s *tenantMemberService) Get(ctx context.Context, req *v1.TenantMemberGetRequest) (*v1.TenantMemberResponse, error) { +func (s *tenantMemberService) Get(ctx context.Context, rq *connect.Request[v1.TenantMemberGetRequest]) (*connect.Response[v1.TenantMemberResponse], error) { + req := rq.Msg tenantMember, err := s.tenantMemberStore.Get(ctx, req.Id) if err != nil { return nil, err } - return tenantMember.NewTenantMemberResponse(), nil + return connect.NewResponse(tenantMember.NewTenantMemberResponse()), nil } -func (s *tenantMemberService) Find(ctx context.Context, req *v1.TenantMemberFindRequest) (*v1.TenantMemberListResponse, error) { +func (s *tenantMemberService) Find(ctx context.Context, rq *connect.Request[v1.TenantMemberFindRequest]) (*connect.Response[v1.TenantMemberListResponse], error) { + req := rq.Msg filter := make(map[string]any) if req.TenantId != nil { filter["tenantmember ->> 'tenant_id'"] = req.TenantId @@ -87,5 +93,5 @@ func (s *tenantMemberService) Find(ctx context.Context, req *v1.TenantMemberFind } resp := new(v1.TenantMemberListResponse) resp.TenantMembers = append(resp.TenantMembers, res...) - return resp, nil + return connect.NewResponse(resp), nil } diff --git a/pkg/service/tenantmember_test.go b/pkg/service/tenantmember_test.go index cbe5a8a..8f07715 100644 --- a/pkg/service/tenantmember_test.go +++ b/pkg/service/tenantmember_test.go @@ -4,6 +4,7 @@ import ( "context" "log/slog" + "connectrpc.com/connect" v1 "github.com/metal-stack/masterdata-api/api/v1" "github.com/metal-stack/metal-lib/pkg/pointer" "github.com/stretchr/testify/assert" @@ -37,11 +38,11 @@ func TestCreateTenantMember(t *testing.T) { tenantStorageMock.On("Get", ctx, pm1.GetTenantId()).Return(t1, nil) tenantStorageMock.On("Get", ctx, pm1.GetMemberId()).Return(m1, nil) storageMock.On("Create", ctx, pm1).Return(nil) - resp, err := ts.Create(ctx, pmcr) + resp, err := ts.Create(ctx, connect.NewRequest(pmcr)) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.GetTenantMember()) - assert.Equal(t, pmcr.TenantMember.TenantId, resp.GetTenantMember().GetTenantId()) + assert.NotNil(t, resp.Msg.TenantMember) + assert.Equal(t, pmcr.TenantMember.TenantId, resp.Msg.TenantMember.GetTenantId()) } func TestUpdateTenantMember(t *testing.T) { @@ -70,11 +71,11 @@ func TestUpdateTenantMember(t *testing.T) { } storageMock.On("Update", ctx, pm1).Return(nil) - resp, err := ts.Update(ctx, pmur) + resp, err := ts.Update(ctx, connect.NewRequest(pmur)) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.GetTenantMember()) - assert.Equal(t, pmur.GetTenantMember().Meta.Annotations, resp.GetTenantMember().Meta.Annotations) + assert.NotNil(t, resp.Msg.TenantMember) + assert.Equal(t, pmur.TenantMember.Meta.Annotations, resp.Msg.TenantMember.Meta.Annotations) } func TestDeleteTenantMember(t *testing.T) { @@ -94,11 +95,11 @@ func TestDeleteTenantMember(t *testing.T) { } storageMock.On("Delete", ctx, t3.Meta.Id).Return(nil) - resp, err := ts.Delete(ctx, tdr) + resp, err := ts.Delete(ctx, connect.NewRequest(tdr)) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.GetTenantMember()) - assert.Equal(t, tdr.Id, resp.GetTenantMember().GetMeta().GetId()) + assert.NotNil(t, resp.Msg.TenantMember) + assert.Equal(t, tdr.Id, resp.Msg.TenantMember.GetMeta().GetId()) } func TestGetTenantMember(t *testing.T) { @@ -118,11 +119,11 @@ func TestGetTenantMember(t *testing.T) { } storageMock.On("Get", ctx, "p4").Return(t4, nil) - resp, err := ts.Get(ctx, tgr) + resp, err := ts.Get(ctx, connect.NewRequest(tgr)) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.GetTenantMember()) - assert.Equal(t, tgr.Id, resp.GetTenantMember().GetMeta().GetId()) + assert.NotNil(t, resp.Msg.TenantMember) + assert.Equal(t, tgr.Id, resp.Msg.TenantMember.GetMeta().GetId()) } func TestFindTenantMemberByTenant(t *testing.T) { @@ -144,7 +145,7 @@ func TestFindTenantMemberByTenant(t *testing.T) { f2 := make(map[string]any) f2["tenantmember ->> 'tenant_id'"] = pointer.Pointer("p1") storageMock.On("Find", ctx, f2, mock.AnythingOfType("*v1.Paging")).Return(t6s, nil, nil) - resp, err := ts.Find(ctx, tfr) + resp, err := ts.Find(ctx, connect.NewRequest(tfr)) require.NoError(t, err) assert.NotNil(t, resp) } @@ -168,7 +169,7 @@ func TestFindTenantMemberByMember(t *testing.T) { f2 := make(map[string]any) f2["tenantmember ->> 'member_id'"] = pointer.Pointer("t1") storageMock.On("Find", ctx, f2, mock.AnythingOfType("*v1.Paging")).Return(t6s, nil, nil) - resp, err := ts.Find(ctx, tfr) + resp, err := ts.Find(ctx, connect.NewRequest(tfr)) require.NoError(t, err) assert.NotNil(t, resp) } diff --git a/pkg/service/version.go b/pkg/service/version.go index 93d99a7..673d6a6 100644 --- a/pkg/service/version.go +++ b/pkg/service/version.go @@ -3,6 +3,7 @@ package service import ( "context" + "connectrpc.com/connect" v1 "github.com/metal-stack/masterdata-api/api/v1" "github.com/metal-stack/v" ) @@ -13,7 +14,7 @@ type versionService struct { func NewVersionService() *versionService { return &versionService{} } -func (vs *versionService) Get(ctx context.Context, request *v1.GetVersionRequest) (*v1.GetVersionResponse, error) { +func (vs *versionService) Get(context.Context, *connect.Request[v1.GetVersionRequest]) (*connect.Response[v1.GetVersionResponse], error) { res := v1.GetVersionResponse{Version: v.Version, Revision: v.Revision, BuildDate: v.BuildDate, GitSha1: v.GitSHA1} - return &res, nil + return connect.NewResponse(&res), nil } diff --git a/pkg/service/version_test.go b/pkg/service/version_test.go index 1648208..5072ae5 100644 --- a/pkg/service/version_test.go +++ b/pkg/service/version_test.go @@ -4,6 +4,7 @@ import ( "context" "testing" + "connectrpc.com/connect" v1 "github.com/metal-stack/masterdata-api/api/v1" "github.com/metal-stack/v" "github.com/stretchr/testify/assert" @@ -17,12 +18,12 @@ func TestGetVersion(t *testing.T) { expected := v1.GetVersionResponse{Version: v.Version, Revision: v.Revision, BuildDate: v.BuildDate, GitSha1: v.GitSHA1} - result, err := vs.Get(ctx, &v1.GetVersionRequest{}) + result, err := vs.Get(ctx, connect.NewRequest(&v1.GetVersionRequest{})) require.NoError(t, err) assert.NotNil(t, result) - assert.Equal(t, expected.Version, result.Version) - assert.Equal(t, expected.Revision, result.Revision) - assert.Equal(t, expected.BuildDate, result.BuildDate) - assert.Equal(t, expected.GitSha1, result.GitSha1) + assert.Equal(t, expected.Version, result.Msg.Version) + assert.Equal(t, expected.Revision, result.Msg.Revision) + assert.Equal(t, expected.BuildDate, result.Msg.BuildDate) + assert.Equal(t, expected.GitSha1, result.Msg.GitSha1) } diff --git a/proto/v1/common.proto b/proto/api/v1/common.proto similarity index 95% rename from proto/v1/common.proto rename to proto/api/v1/common.proto index 0b177f9..e13bd4c 100644 --- a/proto/v1/common.proto +++ b/proto/api/v1/common.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package v1; +package api.v1; message Paging { // page is used for pagination, if unset only the first page is returned, diff --git a/proto/v1/iam.proto b/proto/api/v1/iam.proto similarity index 99% rename from proto/v1/iam.proto rename to proto/api/v1/iam.proto index 6b20b30..e3d7d57 100644 --- a/proto/v1/iam.proto +++ b/proto/api/v1/iam.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package v1; +package api.v1; message IAMConfig { IssuerConfig issuer_config = 1; diff --git a/proto/v1/meta.proto b/proto/api/v1/meta.proto similarity index 95% rename from proto/v1/meta.proto rename to proto/api/v1/meta.proto index 855f0c8..7e292df 100644 --- a/proto/v1/meta.proto +++ b/proto/api/v1/meta.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package v1; +package api.v1; import "google/protobuf/timestamp.proto"; diff --git a/proto/v1/project.proto b/proto/api/v1/project.proto similarity index 93% rename from proto/v1/project.proto rename to proto/api/v1/project.proto index 7e16407..dc87220 100644 --- a/proto/v1/project.proto +++ b/proto/api/v1/project.proto @@ -1,11 +1,11 @@ syntax = "proto3"; -package v1; +package api.v1; +import "api/v1/common.proto"; +import "api/v1/meta.proto"; +import "api/v1/quota.proto"; import "google/protobuf/timestamp.proto"; -import "v1/common.proto"; -import "v1/meta.proto"; -import "v1/quota.proto"; service ProjectService { rpc Create(ProjectCreateRequest) returns (ProjectResponse); diff --git a/proto/v1/project_member.proto b/proto/api/v1/project_member.proto similarity index 96% rename from proto/v1/project_member.proto rename to proto/api/v1/project_member.proto index 91d5772..20a646f 100644 --- a/proto/v1/project_member.proto +++ b/proto/api/v1/project_member.proto @@ -1,8 +1,8 @@ syntax = "proto3"; -package v1; +package api.v1; -import "v1/meta.proto"; +import "api/v1/meta.proto"; service ProjectMemberService { rpc Create(ProjectMemberCreateRequest) returns (ProjectMemberResponse); diff --git a/proto/v1/quota.proto b/proto/api/v1/quota.proto similarity index 97% rename from proto/v1/quota.proto rename to proto/api/v1/quota.proto index a7d4feb..9ebd61f 100644 --- a/proto/v1/quota.proto +++ b/proto/api/v1/quota.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package v1; +package api.v1; // QuotaSet defines the types of possible Quotas // might be specified by project or tenant diff --git a/proto/v1/tenant.proto b/proto/api/v1/tenant.proto similarity index 94% rename from proto/v1/tenant.proto rename to proto/api/v1/tenant.proto index 2a968f8..95b44dd 100644 --- a/proto/v1/tenant.proto +++ b/proto/api/v1/tenant.proto @@ -1,13 +1,13 @@ syntax = "proto3"; -package v1; +package api.v1; +import "api/v1/common.proto"; +import "api/v1/iam.proto"; +import "api/v1/meta.proto"; +import "api/v1/project.proto"; +import "api/v1/quota.proto"; import "google/protobuf/timestamp.proto"; -import "v1/common.proto"; -import "v1/iam.proto"; -import "v1/meta.proto"; -import "v1/project.proto"; -import "v1/quota.proto"; service TenantService { rpc Create(TenantCreateRequest) returns (TenantResponse); diff --git a/proto/v1/tenant_member.proto b/proto/api/v1/tenant_member.proto similarity index 96% rename from proto/v1/tenant_member.proto rename to proto/api/v1/tenant_member.proto index 08235a6..840837e 100644 --- a/proto/v1/tenant_member.proto +++ b/proto/api/v1/tenant_member.proto @@ -1,8 +1,8 @@ syntax = "proto3"; -package v1; +package api.v1; -import "v1/meta.proto"; +import "api/v1/meta.proto"; service TenantMemberService { rpc Create(TenantMemberCreateRequest) returns (TenantMemberResponse); diff --git a/proto/v1/version.proto b/proto/api/v1/version.proto similarity index 94% rename from proto/v1/version.proto rename to proto/api/v1/version.proto index 10ad748..9da2ed6 100644 --- a/proto/v1/version.proto +++ b/proto/api/v1/version.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package v1; +package api.v1; service VersionService { rpc Get(GetVersionRequest) returns (GetVersionResponse); diff --git a/proto/buf.gen.yaml b/proto/buf.gen.yaml index 8bb4c78..63e76a1 100644 --- a/proto/buf.gen.yaml +++ b/proto/buf.gen.yaml @@ -5,9 +5,9 @@ managed: - file_option: go_package_prefix value: github.com/metal-stack/masterdata-api plugins: - - remote: buf.build/grpc/go:v1.5.1 - out: ../api - opt: paths=source_relative,require_unimplemented_servers=false + - remote: buf.build/connectrpc/go:v1.18.1 + out: ../ + opt: paths=source_relative - remote: buf.build/protocolbuffers/go:v1.36.6 - out: ../api + out: ../ opt: paths=source_relative diff --git a/server/main.go b/server/main.go deleted file mode 100644 index ae7dba7..0000000 --- a/server/main.go +++ /dev/null @@ -1,319 +0,0 @@ -package main - -import ( - "context" - "crypto/tls" - "crypto/x509" - "fmt" - "log/slog" - "net" - "net/http" - _ "net/http/pprof" //nolint:gosec - "os" - "runtime/debug" - "strings" - "time" - - "github.com/metal-stack/masterdata-api/pkg/auth" - "github.com/metal-stack/masterdata-api/pkg/health" - "github.com/prometheus/client_golang/prometheus" - "github.com/prometheus/client_golang/prometheus/collectors" - "github.com/prometheus/client_golang/prometheus/promauto" - "github.com/prometheus/client_golang/prometheus/promhttp" - "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc" - "go.opentelemetry.io/otel/trace" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/reflection" - "google.golang.org/grpc/status" - - grpcprom "github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus" - "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors" - grpcauth "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/auth" - "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/logging" - "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/recovery" - "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/selector" - - apiv1 "github.com/metal-stack/masterdata-api/api/v1" - "github.com/metal-stack/masterdata-api/pkg/datastore" - "github.com/metal-stack/masterdata-api/pkg/service" - "github.com/metal-stack/v" - "github.com/spf13/cobra" - "github.com/spf13/viper" - "google.golang.org/grpc" - "google.golang.org/grpc/credentials" - healthv1 "google.golang.org/grpc/health/grpc_health_v1" -) - -const ( - moduleName = "masterdata-api" -) - -var ( - logger *slog.Logger -) - -var rootCmd = &cobra.Command{ - Use: moduleName, - Short: "api to manage masterdata data for metal cloud components", - Version: v.V.String(), - RunE: func(cmd *cobra.Command, args []string) error { - return run() - }, -} - -func main() { - if err := rootCmd.Execute(); err != nil { - logger.Error("failed executing root command", "error", err) - } -} - -func initConfig() { - viper.SetEnvPrefix("MASTERDATA_API") - viper.SetEnvKeyReplacer(strings.NewReplacer("-", "_")) - viper.AutomaticEnv() -} - -func init() { - cobra.OnInitialize(initConfig) - rootCmd.Flags().IntP("port", "", 50051, "the port to serve on") - rootCmd.Flags().BoolP("debug", "", false, "enable debugging") - - rootCmd.Flags().StringP("ca", "", "certs/ca.pem", "ca path") - rootCmd.Flags().StringP("cert", "", "certs/server.pem", "server certificate path") - rootCmd.Flags().StringP("certkey", "", "certs/server-key.pem", "server key path") - - rootCmd.Flags().StringP("dbhost", "", "localhost", "postgres database server hostname/ip") - rootCmd.Flags().StringP("dbport", "", "5432", "postgres database server port") - rootCmd.Flags().StringP("dbuser", "", "masterdata", "postgres database user") - rootCmd.Flags().StringP("dbpassword", "", "password", "postgres database password") - rootCmd.Flags().StringP("dbname", "", "masterdata", "postgres database name") - rootCmd.Flags().StringP("dbsslmode", "", "disable", "sslmode to talk to the the database") - rootCmd.Flags().StringP("hmackey", "", auth.HmacDefaultKey, "preshared hmac key to authenticate.") - - err := viper.BindPFlags(rootCmd.Flags()) - if err != nil { - logger.Error("unable to construct root command", "error", err) - } -} - -func run() error { - - lvl := slog.LevelInfo - if viper.IsSet("debug") { - lvl = slog.LevelDebug - } - jsonHandler := slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{Level: lvl, AddSource: false}) - - logger := slog.New(jsonHandler) - - port := viper.GetInt("port") - addr := fmt.Sprintf(":%d", port) - lis, err := net.Listen("tcp", addr) - if err != nil { - return fmt.Errorf("failed to listen: %w", err) - } - - logger.Info("starting masterdata-api", "version", v.V.String(), "address", addr) - - hmacKey := viper.GetString("hmackey") - if hmacKey == "" { - hmacKey = auth.HmacDefaultKey - } - auther, err := auth.NewHMACAuther(hmacKey, auth.EditUser) - if err != nil { - return fmt.Errorf("failed to create auther: %w", err) - } - - caFile := viper.GetString("ca") - // Get system certificate pool - certPool, err := x509.SystemCertPool() - if err != nil { - return fmt.Errorf("could not read system certificate pool: %w", err) - } - - if caFile != "" { - logger.Info("using ca", "ca", caFile) - ca, err := os.ReadFile(caFile) - if err != nil { - return fmt.Errorf("could not read ca certificate: %w", err) - } - // Append the certificates from the CA - if ok := certPool.AppendCertsFromPEM(ca); !ok { - return fmt.Errorf("failed to append ca certs: %w", err) - } - } - - serverCert := viper.GetString("cert") - serverKey := viper.GetString("certkey") - cert, err := tls.LoadX509KeyPair(serverCert, serverKey) - if err != nil { - return fmt.Errorf("failed to load key pair: %w", err) - } - - creds := credentials.NewTLS(&tls.Config{ - ClientAuth: tls.RequireAndVerifyClientCert, - Certificates: []tls.Certificate{cert}, - ClientCAs: certPool, - MinVersion: tls.VersionTLS12, - }) - - srvMetrics := grpcprom.NewServerMetrics( - grpcprom.WithServerHandlingTimeHistogram( - grpcprom.WithHistogramBuckets([]float64{0.001, 0.01, 0.1, 0.3, 0.6, 1, 3, 6, 9, 20, 30, 60, 90, 120}), - ), - ) - exemplarFromContext := func(ctx context.Context) prometheus.Labels { - if span := trace.SpanContextFromContext(ctx); span.IsSampled() { - return prometheus.Labels{"traceID": span.TraceID().String()} - } - return nil - } - allButHealthZ := func(ctx context.Context, callMeta interceptors.CallMeta) bool { - return healthv1.Health_ServiceDesc.ServiceName != callMeta.Service - } - - // Setup metric for panic recoveries. - reg := prometheus.NewRegistry() - reg.MustRegister(srvMetrics) - reg.MustRegister(collectors.NewGoCollector()) - panicsTotal := promauto.With(reg).NewCounter(prometheus.CounterOpts{ - Name: "grpc_req_panics_recovered_total", - Help: "Total number of gRPC requests recovered from internal panic.", - }) - grpcPanicRecoveryHandler := func(p any) (err error) { - panicsTotal.Inc() - logger.Error("recovered from panic", "panic", p, "stack", debug.Stack()) - return status.Errorf(codes.Internal, "%s", p) - } - - // Set GRPC Interceptors - // opts := []grpc.ServerOption{} - // grpcServer := grpc.NewServer(opts...) - grpcServer := grpc.NewServer( - grpc.Creds(creds), - grpc.StatsHandler(otelgrpc.NewServerHandler()), - grpc.ChainUnaryInterceptor( - // Order matters e.g. tracing interceptor have to create span first for the later exemplars to work. - srvMetrics.UnaryServerInterceptor(), - logging.UnaryServerInterceptor(interceptorLogger(logger)), - selector.UnaryServerInterceptor(grpcauth.UnaryServerInterceptor(auther.Auth), selector.MatchFunc(allButHealthZ)), - recovery.UnaryServerInterceptor(recovery.WithRecoveryHandler(grpcPanicRecoveryHandler)), - ), - grpc.ChainStreamInterceptor( - srvMetrics.StreamServerInterceptor(grpcprom.WithExemplarFromContext(exemplarFromContext)), - logging.StreamServerInterceptor(interceptorLogger(logger)), - selector.StreamServerInterceptor(grpcauth.StreamServerInterceptor(auther.Auth), selector.MatchFunc(allButHealthZ)), - recovery.StreamServerInterceptor(recovery.WithRecoveryHandler(grpcPanicRecoveryHandler)), - ), - ) - - ves := []datastore.Entity{ - &apiv1.Project{}, - &apiv1.ProjectMember{}, - &apiv1.Tenant{}, - &apiv1.TenantMember{}, - } - dbHost := viper.GetString("dbhost") - dbPort := viper.GetString("dbport") - dbUser := viper.GetString("dbuser") - dbPassword := viper.GetString("dbpassword") - dbName := viper.GetString("dbname") - dbSSLMode := viper.GetString("dbsslmode") - - db, err := datastore.NewPostgresDB(logger, dbHost, dbPort, dbUser, dbPassword, dbName, dbSSLMode, ves...) - if err != nil { - return fmt.Errorf("failed to create postgres connection: %w", err) - } - - healthServer := health.NewHealthServer() - - err = datastore.Initdb(logger, db, healthServer, "initdb.d") - if err != nil { - logger.Error("unable to apply initdb content", "error", err) - } - - err = datastore.MigrateDB(logger, db, healthServer) - if err != nil { - logger.Error("unable to apply migrate db", "error", err) - } - - ps := datastore.New(logger, db, &apiv1.Project{}) - pms := datastore.New(logger, db, &apiv1.ProjectMember{}) - ts := datastore.New(logger, db, &apiv1.Tenant{}) - tms := datastore.New(logger, db, &apiv1.TenantMember{}) - - projectService := service.NewProjectService(logger, ps, pms, ts) - projectMemberService := service.NewProjectMemberService(logger, ps, pms, ts) - // FIXME db should not be required here - tenantService := service.NewTenantService(db, logger, ts, tms) - tenantMemberService := service.NewTenantMemberService(logger, ts, tms) - versionService := service.NewVersionService() - - apiv1.RegisterProjectServiceServer(grpcServer, projectService) - apiv1.RegisterProjectMemberServiceServer(grpcServer, projectMemberService) - apiv1.RegisterTenantServiceServer(grpcServer, tenantService) - apiv1.RegisterTenantMemberServiceServer(grpcServer, tenantMemberService) - apiv1.RegisterVersionServiceServer(grpcServer, versionService) - healthv1.RegisterHealthServer(grpcServer, healthServer) - - srvMetrics.InitializeMetrics(grpcServer) - - // Register Prometheus metrics handler - metricsServer := http.NewServeMux() - metricsServer.Handle("/metrics", promhttp.HandlerFor(reg, promhttp.HandlerOpts{})) - go func() { - logger.Info("starting metrics endpoint of :2112") - server := http.Server{ - Addr: ":2112", - Handler: metricsServer, - ReadHeaderTimeout: 1 * time.Minute, - } - err := server.ListenAndServe() - if err != nil { - logger.Error("failed to start metrics endpoint", "error", err) - } - os.Exit(1) - }() - - go func() { - logger.Info("starting pprof endpoint of :2113") - // inspect via - // go tool pprof -http :8080 localhost:2113/debug/pprof/heap - // go tool pprof -http :8080 localhost:2113/debug/pprof/goroutine - server := http.Server{ - Addr: ":2113", - ReadHeaderTimeout: 1 * time.Minute, - } - err := server.ListenAndServe() - if err != nil { - logger.Error("failed to start pprof endpoint", "error", err) - } - os.Exit(1) - }() - - reflection.Register(grpcServer) - - if err := grpcServer.Serve(lis); err != nil { - return fmt.Errorf("failed to serve: %w", err) - } - return nil -} - -// interceptorLogger adapts slog logger to interceptor logger. -// This code is simple enough to be copied and not imported. -func interceptorLogger(l *slog.Logger) logging.Logger { - return logging.LoggerFunc(func(_ context.Context, lvl logging.Level, msg string, fields ...any) { - switch lvl { - case logging.LevelDebug: - l.Debug(msg, fields...) - case logging.LevelInfo: - l.Info(msg, fields...) - case logging.LevelWarn: - l.Warn(msg, fields...) - case logging.LevelError: - l.Error(msg, fields...) - default: - panic(fmt.Sprintf("unknown level %v", lvl)) - } - }) -} From c00741f6a0ad7c37304469c2d6f92c42632477d0 Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Tue, 29 Apr 2025 09:56:29 +0200 Subject: [PATCH 22/39] Fix tests --- pkg/datastore/postgres_test.go | 6 +++--- pkg/service/project_test.go | 8 +++---- pkg/service/projectmember_test.go | 4 ++-- pkg/service/tenant_test.go | 36 +++++++++++++++---------------- pkg/service/tenantmember_test.go | 4 ++-- 5 files changed, 29 insertions(+), 29 deletions(-) diff --git a/pkg/datastore/postgres_test.go b/pkg/datastore/postgres_test.go index f4a21d2..5a6a125 100644 --- a/pkg/datastore/postgres_test.go +++ b/pkg/datastore/postgres_test.go @@ -245,7 +245,7 @@ func TestCreate(t *testing.T) { require.NoError(t, err) assert.NotNil(t, tcr3.GetMeta().GetApiversion()) assert.NotEmpty(t, tcr3.GetMeta().GetApiversion()) - assert.Equal(t, "v1", tcr3.GetMeta().GetApiversion()) + assert.Equal(t, "apiv1", tcr3.GetMeta().GetApiversion()) assert.NotNil(t, tcr3.GetMeta().GetKind()) assert.NotEmpty(t, tcr3.GetMeta().GetKind()) assert.Equal(t, "Tenant", tcr3.GetMeta().GetKind()) @@ -268,7 +268,7 @@ func TestCreate(t *testing.T) { } err = tenantDS.Create(ctx, tcr6) require.Error(t, err) - require.EqualError(t, err, "create of type:tenant failed, apiversion must be set to:v1") + require.EqualError(t, err, "create of type:tenant failed, apiversion must be set to:apiv1") } func TestUpdate(t *testing.T) { @@ -338,7 +338,7 @@ func TestUpdate(t *testing.T) { tcr1.Meta.Apiversion = "v2" err = tenantDS.Update(ctx, tcr1) require.Error(t, err) - require.EqualError(t, err, "update of type:tenant failed, apiversion must be set to:v1") + require.EqualError(t, err, "update of type:tenant failed, apiversion must be set to:apiv1") checkHistory(ctx, t, t3, time.Now(), "ctenant", "C Tenant 3") } diff --git a/pkg/service/project_test.go b/pkg/service/project_test.go index e89d219..f165ea3 100644 --- a/pkg/service/project_test.go +++ b/pkg/service/project_test.go @@ -82,7 +82,7 @@ func TestCreateProjectWithQuotaCheck(t *testing.T) { var projects []*v1.Project // see: https://github.com/stretchr/testify/blob/master/mock/mock.go#L149-L162 tenantStorageMock.On("Get", ctx, p1.GetTenantId()).Return(t1, nil) - storageMock.On("Find", ctx, filter, mock.AnythingOfType("*v1.Paging")).Return(projects, nil, nil) + storageMock.On("Find", ctx, filter, mock.AnythingOfType("*apiv1.Paging")).Return(projects, nil, nil) storageMock.On("Create", ctx, p1).Return(nil) resp, err := ts.Create(ctx, connect.NewRequest(tcr)) require.NoError(t, err) @@ -197,7 +197,7 @@ func TestFindProjectByID(t *testing.T) { } f1["id"] = pointer.Pointer("p5") - storageMock.On("Find", ctx, f1, mock.AnythingOfType("*v1.Paging")).Return(t5s, nil, nil) + storageMock.On("Find", ctx, f1, mock.AnythingOfType("*apiv1.Paging")).Return(t5s, nil, nil) resp, err := ts.Find(ctx, connect.NewRequest(tfr)) require.NoError(t, err) assert.NotNil(t, resp) @@ -221,7 +221,7 @@ func TestFindProjectByName(t *testing.T) { f2 := make(map[string]any) f2["project ->> 'name'"] = pointer.Pointer("Sixth") - storageMock.On("Find", ctx, f2, mock.AnythingOfType("*v1.Paging")).Return(t6s, nil, nil) + storageMock.On("Find", ctx, f2, mock.AnythingOfType("*apiv1.Paging")).Return(t6s, nil, nil) resp, err := ts.Find(ctx, connect.NewRequest(tfr)) require.NoError(t, err) assert.NotNil(t, resp) @@ -245,7 +245,7 @@ func TestFindProjectByTenant(t *testing.T) { f2 := make(map[string]any) f2["project ->> 'tenant_id'"] = pointer.Pointer("p1") - storageMock.On("Find", ctx, f2, mock.AnythingOfType("*v1.Paging")).Return(t6s, nil, nil) + storageMock.On("Find", ctx, f2, mock.AnythingOfType("*apiv1.Paging")).Return(t6s, nil, nil) resp, err := ts.Find(ctx, connect.NewRequest(tfr)) require.NoError(t, err) assert.NotNil(t, resp) diff --git a/pkg/service/projectmember_test.go b/pkg/service/projectmember_test.go index 9d8e223..b369dd8 100644 --- a/pkg/service/projectmember_test.go +++ b/pkg/service/projectmember_test.go @@ -154,7 +154,7 @@ func TestFindProjectMemberByProject(t *testing.T) { f2 := make(map[string]any) f2["projectmember ->> 'project_id'"] = pointer.Pointer("p1") - storageMock.On("Find", ctx, f2, mock.AnythingOfType("*v1.Paging")).Return(t6s, nil, nil) + storageMock.On("Find", ctx, f2, mock.AnythingOfType("*apiv1.Paging")).Return(t6s, nil, nil) resp, err := ts.Find(ctx, connect.NewRequest(tfr)) require.NoError(t, err) assert.NotNil(t, resp) @@ -180,7 +180,7 @@ func TestFindProjectMemberByTenant(t *testing.T) { f2 := make(map[string]any) f2["projectmember ->> 'tenant_id'"] = pointer.Pointer("t1") - storageMock.On("Find", ctx, f2, mock.AnythingOfType("*v1.Paging")).Return(t6s, nil, nil) + storageMock.On("Find", ctx, f2, mock.AnythingOfType("*apiv1.Paging")).Return(t6s, nil, nil) resp, err := ts.Find(ctx, connect.NewRequest(tfr)) require.NoError(t, err) assert.NotNil(t, resp) diff --git a/pkg/service/tenant_test.go b/pkg/service/tenant_test.go index 0ca3c84..a405978 100644 --- a/pkg/service/tenant_test.go +++ b/pkg/service/tenant_test.go @@ -159,7 +159,7 @@ func TestFindTenantByID(t *testing.T) { } f1["id"] = "t5" - storageMock.On("Find", ctx, f1, mock.AnythingOfType("*v1.Paging")).Return(t5s, nil, nil) + storageMock.On("Find", ctx, f1, mock.AnythingOfType("*apiv1.Paging")).Return(t5s, nil, nil) resp, err := ts.Find(ctx, connect.NewRequest(tfr)) require.NoError(t, err) assert.NotNil(t, resp) @@ -181,7 +181,7 @@ func TestFindTenantByName(t *testing.T) { f2 := make(map[string]any) f2["tenant ->> 'name'"] = "Fifth" - storageMock.On("Find", ctx, f2, mock.AnythingOfType("*v1.Paging")).Return(t6s, nil, nil) + storageMock.On("Find", ctx, f2, mock.AnythingOfType("*apiv1.Paging")).Return(t6s, nil, nil) resp, err := ts.Find(ctx, connect.NewRequest(tfr)) require.NoError(t, err) assert.NotNil(t, resp) @@ -264,7 +264,7 @@ func Test_tenantService_FindParticipatingProjects(t *testing.T) { Project: &v1.Project{ Meta: &v1.Meta{ Kind: "Project", - Apiversion: "v1", + Apiversion: "apiv1", Id: "1", }, }, @@ -297,7 +297,7 @@ func Test_tenantService_FindParticipatingProjects(t *testing.T) { Project: &v1.Project{ Meta: &v1.Meta{ Kind: "Project", - Apiversion: "v1", + Apiversion: "apiv1", Id: "1", }, }, @@ -324,7 +324,7 @@ func Test_tenantService_FindParticipatingProjects(t *testing.T) { Project: &v1.Project{ Meta: &v1.Meta{ Kind: "Project", - Apiversion: "v1", + Apiversion: "apiv1", Id: "1", }, TenantId: "b", @@ -377,7 +377,7 @@ func Test_tenantService_FindParticipatingProjects(t *testing.T) { Project: &v1.Project{ Meta: &v1.Meta{ Kind: "Project", - Apiversion: "v1", + Apiversion: "apiv1", Id: "direct-1", }, TenantId: "req-tenant", @@ -389,7 +389,7 @@ func Test_tenantService_FindParticipatingProjects(t *testing.T) { Project: &v1.Project{ Meta: &v1.Meta{ Kind: "Project", - Apiversion: "v1", + Apiversion: "apiv1", Id: "indirect-2", }, TenantId: "parent", @@ -425,7 +425,7 @@ func Test_tenantService_FindParticipatingProjects(t *testing.T) { return 1 } }) - if diff := cmp.Diff(tt.want, got, cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { + if diff := cmp.Diff(tt.want, got.Msg, cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { t.Errorf("(-want +got):\n%s", diff) } }) @@ -514,7 +514,7 @@ func Test_tenantService_FindParticipatingTenants(t *testing.T) { Tenant: &v1.Tenant{ Meta: &v1.Meta{ Kind: "Tenant", - Apiversion: "v1", + Apiversion: "apiv1", Id: "b", }, }, @@ -544,7 +544,7 @@ func Test_tenantService_FindParticipatingTenants(t *testing.T) { Tenant: &v1.Tenant{ Meta: &v1.Meta{ Kind: "Tenant", - Apiversion: "v1", + Apiversion: "apiv1", Id: "b", }, }, @@ -607,7 +607,7 @@ func Test_tenantService_FindParticipatingTenants(t *testing.T) { Tenant: &v1.Tenant{ Meta: &v1.Meta{ Kind: "Tenant", - Apiversion: "v1", + Apiversion: "apiv1", Id: "direct-tnt", }, }, @@ -617,7 +617,7 @@ func Test_tenantService_FindParticipatingTenants(t *testing.T) { Tenant: &v1.Tenant{ Meta: &v1.Meta{ Kind: "Tenant", - Apiversion: "v1", + Apiversion: "apiv1", Id: "indirect-tnt", }, }, @@ -652,7 +652,7 @@ func Test_tenantService_FindParticipatingTenants(t *testing.T) { return 1 } }) - if diff := cmp.Diff(tt.want, got, cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { + if diff := cmp.Diff(tt.want, got.Msg, cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { t.Errorf("(-want +got):\n%s", diff) } }) @@ -742,7 +742,7 @@ func Test_tenantService_ListTenantMembers(t *testing.T) { Tenant: &v1.Tenant{ Meta: &v1.Meta{ Kind: "Tenant", - Apiversion: "v1", + Apiversion: "apiv1", Id: "azure", }, }, @@ -772,7 +772,7 @@ func Test_tenantService_ListTenantMembers(t *testing.T) { Tenant: &v1.Tenant{ Meta: &v1.Meta{ Kind: "Tenant", - Apiversion: "v1", + Apiversion: "apiv1", Id: "google", }, }, @@ -831,7 +831,7 @@ func Test_tenantService_ListTenantMembers(t *testing.T) { Tenant: &v1.Tenant{ Meta: &v1.Meta{ Kind: "Tenant", - Apiversion: "v1", + Apiversion: "apiv1", Id: "github", }, }, @@ -845,7 +845,7 @@ func Test_tenantService_ListTenantMembers(t *testing.T) { Tenant: &v1.Tenant{ Meta: &v1.Meta{ Kind: "Tenant", - Apiversion: "v1", + Apiversion: "apiv1", Id: "azure", }, }, @@ -874,7 +874,7 @@ func Test_tenantService_ListTenantMembers(t *testing.T) { t.Errorf("(-want +got):\n%s", diff) return } - if diff := cmp.Diff(tt.want, got, cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { + if diff := cmp.Diff(tt.want, got.Msg, cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { t.Errorf("(-want +got):\n%s", diff) } }) diff --git a/pkg/service/tenantmember_test.go b/pkg/service/tenantmember_test.go index 8f07715..6d8f452 100644 --- a/pkg/service/tenantmember_test.go +++ b/pkg/service/tenantmember_test.go @@ -144,7 +144,7 @@ func TestFindTenantMemberByTenant(t *testing.T) { f2 := make(map[string]any) f2["tenantmember ->> 'tenant_id'"] = pointer.Pointer("p1") - storageMock.On("Find", ctx, f2, mock.AnythingOfType("*v1.Paging")).Return(t6s, nil, nil) + storageMock.On("Find", ctx, f2, mock.AnythingOfType("*apiv1.Paging")).Return(t6s, nil, nil) resp, err := ts.Find(ctx, connect.NewRequest(tfr)) require.NoError(t, err) assert.NotNil(t, resp) @@ -168,7 +168,7 @@ func TestFindTenantMemberByMember(t *testing.T) { f2 := make(map[string]any) f2["tenantmember ->> 'member_id'"] = pointer.Pointer("t1") - storageMock.On("Find", ctx, f2, mock.AnythingOfType("*v1.Paging")).Return(t6s, nil, nil) + storageMock.On("Find", ctx, f2, mock.AnythingOfType("*apiv1.Paging")).Return(t6s, nil, nil) resp, err := ts.Find(ctx, connect.NewRequest(tfr)) require.NoError(t, err) assert.NotNil(t, resp) From 99a31c1f40c60ad1675444181d654a6ae0fc4cd7 Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Tue, 29 Apr 2025 19:03:31 +0200 Subject: [PATCH 23/39] Fix build --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index fd9bd0f..d49ad41 100644 --- a/Makefile +++ b/Makefile @@ -44,7 +44,7 @@ server: protoc generate -X 'github.com/metal-stack/v.Revision=$(GITVERSION)' \ -X 'github.com/metal-stack/v.GitSHA1=$(SHA)' \ -X 'github.com/metal-stack/v.BuildDate=$(BUILDDATE)'" \ - -o bin/server cmd/server/main.go + -o bin/server github.com/metal-stack/masterdata-api/cmd/server strip bin/server .PHONY: client From 6cd8917de0642a3eea0ec459465fc3ea8f8f8f50 Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Wed, 30 Apr 2025 07:23:56 +0200 Subject: [PATCH 24/39] Fixes --- Makefile | 8 +------- certs/ca-config.json | 35 ----------------------------------- certs/ca-csr.json | 14 -------------- certs/ca-key.pem | 5 ----- certs/ca.csr | 8 -------- certs/ca.pem | 13 ------------- certs/client-key.pem | 5 ----- certs/client.csr | 8 -------- certs/client.json | 15 --------------- certs/client.pem | 13 ------------- certs/server-key.pem | 5 ----- certs/server.csr | 9 --------- certs/server.json | 17 ----------------- certs/server.pem | 14 -------------- cmd/server/main.go | 17 +++-------------- deploy/masterdata-api.yaml | 3 +++ go.mod | 6 +++--- go.sum | 12 ++++++------ 18 files changed, 16 insertions(+), 191 deletions(-) delete mode 100644 certs/ca-config.json delete mode 100644 certs/ca-csr.json delete mode 100644 certs/ca-key.pem delete mode 100644 certs/ca.csr delete mode 100644 certs/ca.pem delete mode 100644 certs/client-key.pem delete mode 100644 certs/client.csr delete mode 100644 certs/client.json delete mode 100644 certs/client.pem delete mode 100644 certs/server-key.pem delete mode 100644 certs/server.csr delete mode 100644 certs/server.json delete mode 100644 certs/server.pem diff --git a/Makefile b/Makefile index d49ad41..ae053e5 100644 --- a/Makefile +++ b/Makefile @@ -69,18 +69,12 @@ mocks: .PHONY: postgres-up postgres-up: postgres-rm - docker run -d --name masterdatadb -p 5432:5432 -e POSTGRES_PASSWORD="password" -e POSTGRES_USER="masterdata" -e POSTGRES_DB="masterdata" postgres:16-alpine + docker run -d --name masterdatadb -p 5432:5432 -e POSTGRES_PASSWORD="password" -e POSTGRES_USER="masterdata" -e POSTGRES_DB="masterdata" postgres:17-alpine .PHONY: postgres-rm postgres-rm: docker rm -f masterdatadb || true -.PHONY: certs -certs: - cd certs && cfssl gencert -initca ca-csr.json | cfssljson -bare ca - - cd certs && cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile client-server server.json | cfssljson -bare server - - cd certs && cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile client client.json | cfssljson -bare client - - .PHONY: mini-lab-push mini-lab-push: docker build -t metalstack/masterdata-api:latest . diff --git a/certs/ca-config.json b/certs/ca-config.json deleted file mode 100644 index 1f16e07..0000000 --- a/certs/ca-config.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "signing": { - "default": { - "expiry": "168h" - }, - "profiles": { - "server": { - "expiry": "8760h", - "usages": [ - "signing", - "key encipherment", - "server auth" - ] - }, - "client": { - "expiry": "8760h", - "usages": [ - "signing", - "key encipherment", - "client auth" - ] - }, - "client-server": { - "expiry": "8760h", - "usages": [ - "signing", - "key encipherment", - "server auth", - "client auth" - ] - } - } - } -} - diff --git a/certs/ca-csr.json b/certs/ca-csr.json deleted file mode 100644 index 1a3d24b..0000000 --- a/certs/ca-csr.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "CN": "ca", - "key": { - "algo": "ecdsa", - "size": 256 - }, - "names": [ - { - "C": "DE", - "L": "Bavaria", - "ST": "Munich" - } - ] -} diff --git a/certs/ca-key.pem b/certs/ca-key.pem deleted file mode 100644 index 606c54e..0000000 --- a/certs/ca-key.pem +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN EC PRIVATE KEY----- -MHcCAQEEIN4GTYJJuKRDR7ym1lmj4P3PuGAmA16iLd4C4vmDrHoJoAoGCCqGSM49 -AwEHoUQDQgAEpImXxsye/c/QpKwh13CYSr+UJd0/cfMX03JAdR3G/h2sXEF/T1XM -YhgzxQLDiz7N4qaWf5lqQOMKMTxxNngagw== ------END EC PRIVATE KEY----- diff --git a/certs/ca.csr b/certs/ca.csr deleted file mode 100644 index 4b1c28c..0000000 --- a/certs/ca.csr +++ /dev/null @@ -1,8 +0,0 @@ ------BEGIN CERTIFICATE REQUEST----- -MIH4MIGfAgEAMD0xCzAJBgNVBAYTAkRFMQ8wDQYDVQQIEwZNdW5pY2gxEDAOBgNV -BAcTB0JhdmFyaWExCzAJBgNVBAMTAmNhMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcD -QgAEpImXxsye/c/QpKwh13CYSr+UJd0/cfMX03JAdR3G/h2sXEF/T1XMYhgzxQLD -iz7N4qaWf5lqQOMKMTxxNngag6AAMAoGCCqGSM49BAMCA0gAMEUCIQDIAbbXiJkF -mTiIkUBfzrx1YcfynMYyi1U0RBOPNq4orQIgUd6CJ59Rw+vmqvvoXrn90KGKwaCE -/fEtyUF0bza7Jio= ------END CERTIFICATE REQUEST----- diff --git a/certs/ca.pem b/certs/ca.pem deleted file mode 100644 index 83cd3ba..0000000 --- a/certs/ca.pem +++ /dev/null @@ -1,13 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIB4zCCAYigAwIBAgIUFxYna1ghzd++P9ZPECkZ2fA3+aYwCgYIKoZIzj0EAwIw -PTELMAkGA1UEBhMCREUxDzANBgNVBAgTBk11bmljaDEQMA4GA1UEBxMHQmF2YXJp -YTELMAkGA1UEAxMCY2EwHhcNMjQwMjA2MTY0NTAwWhcNMjkwMjA0MTY0NTAwWjA9 -MQswCQYDVQQGEwJERTEPMA0GA1UECBMGTXVuaWNoMRAwDgYDVQQHEwdCYXZhcmlh -MQswCQYDVQQDEwJjYTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKSJl8bMnv3P -0KSsIddwmEq/lCXdP3HzF9NyQHUdxv4drFxBf09VzGIYM8UCw4s+zeKmln+ZakDj -CjE8cTZ4GoOjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEC -MB0GA1UdDgQWBBQAwjY+rgS3RJdYDU5Sqdwf2ik4ezAfBgNVHSMEGDAWgBQAwjY+ -rgS3RJdYDU5Sqdwf2ik4ezAKBggqhkjOPQQDAgNJADBGAiEA827cGYKaSgHwbMaC -kbyNKtDUaeQV8U5I6/KBxim5iHgCIQD2LlFilUlAiIwUq6cEkdqotH/q99DooXsP -wOPXlugYLA== ------END CERTIFICATE----- diff --git a/certs/client-key.pem b/certs/client-key.pem deleted file mode 100644 index 0a67f62..0000000 --- a/certs/client-key.pem +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN EC PRIVATE KEY----- -MHcCAQEEIDUzDpGw7ageDgXKRX0Ek7c7+Xu4Wd50iD92yETMtgSyoAoGCCqGSM49 -AwEHoUQDQgAE+KuGno/NozQpZ9wAUOYg3aFvTSgMBlT0X5/1M/b2SegP3eSvNdxU -+BeBaaLeD3azVZKJtqevrtrFg1Vu0g0jdw== ------END EC PRIVATE KEY----- diff --git a/certs/client.csr b/certs/client.csr deleted file mode 100644 index 360e86d..0000000 --- a/certs/client.csr +++ /dev/null @@ -1,8 +0,0 @@ ------BEGIN CERTIFICATE REQUEST----- -MIIBGzCBwQIBADBBMQswCQYDVQQGEwJERTEPMA0GA1UECBMGTXVuaWNoMRAwDgYD -VQQHEwdCYXZhcmlhMQ8wDQYDVQQDEwZjbGllbnQwWTATBgcqhkjOPQIBBggqhkjO -PQMBBwNCAAT4q4aej82jNCln3ABQ5iDdoW9NKAwGVPRfn/Uz9vZJ6A/d5K813FT4 -F4Fpot4PdrNVkom2p6+u2sWDVW7SDSN3oB4wHAYJKoZIhvcNAQkOMQ8wDTALBgNV -HREEBDACggAwCgYIKoZIzj0EAwIDSQAwRgIhAOafckME3cqXCeXeycWtP9yHBhSD -+xBvFSXgP8JYq4HjAiEA/NWlCfsDOuS7RzZahgdyfBavd0ylRHAHZzkW6ieMLzM= ------END CERTIFICATE REQUEST----- diff --git a/certs/client.json b/certs/client.json deleted file mode 100644 index 109675d..0000000 --- a/certs/client.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "CN": "client", - "hosts": [""], - "key": { - "algo": "ecdsa", - "size": 256 - }, - "names": [ - { - "C": "DE", - "L": "Bavaria", - "ST": "Munich" - } - ] -} diff --git a/certs/client.pem b/certs/client.pem deleted file mode 100644 index c496def..0000000 --- a/certs/client.pem +++ /dev/null @@ -1,13 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICAzCCAaqgAwIBAgIUDL5gilHcBInoZnkwupRpN57gMGYwCgYIKoZIzj0EAwIw -PTELMAkGA1UEBhMCREUxDzANBgNVBAgTBk11bmljaDEQMA4GA1UEBxMHQmF2YXJp -YTELMAkGA1UEAxMCY2EwHhcNMjQwMjA2MTY0NTAwWhcNMjUwMjA1MTY0NTAwWjBB -MQswCQYDVQQGEwJERTEPMA0GA1UECBMGTXVuaWNoMRAwDgYDVQQHEwdCYXZhcmlh -MQ8wDQYDVQQDEwZjbGllbnQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAT4q4ae -j82jNCln3ABQ5iDdoW9NKAwGVPRfn/Uz9vZJ6A/d5K813FT4F4Fpot4PdrNVkom2 -p6+u2sWDVW7SDSN3o4GDMIGAMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUEDDAKBggr -BgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQMvyMgGCimPRenGUGDMeRp -lSWd3DAfBgNVHSMEGDAWgBQAwjY+rgS3RJdYDU5Sqdwf2ik4ezALBgNVHREEBDAC -ggAwCgYIKoZIzj0EAwIDRwAwRAIgCtIjs1kyDCxigwhO2ZhocT8TOLOMVYvTg7nQ -aUt7EJkCIHzA/BnmqjVCU2z4vnugZqw0GvRSaOsOHk3W8Msb5Le2 ------END CERTIFICATE----- diff --git a/certs/server-key.pem b/certs/server-key.pem deleted file mode 100644 index 752c7f2..0000000 --- a/certs/server-key.pem +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN EC PRIVATE KEY----- -MHcCAQEEILDuGCZl7sZhA2WSr0ul02ODmWrtB1nlr6KZiem/R86/oAoGCCqGSM49 -AwEHoUQDQgAEdpTkKTd3R7KHsRYeL9fTnNdiuNoEsbHxZnWcpvhqnqO5VdFu3swK -W10Ymjbnj5j+6P/ISwYiKrmiFnZSf229NQ== ------END EC PRIVATE KEY----- diff --git a/certs/server.csr b/certs/server.csr deleted file mode 100644 index 1239753..0000000 --- a/certs/server.csr +++ /dev/null @@ -1,9 +0,0 @@ ------BEGIN CERTIFICATE REQUEST----- -MIIBJjCBzQIBADBEMQswCQYDVQQGEwJERTEPMA0GA1UECBMGTXVuaWNoMRAwDgYD -VQQHEwdCYXZhcmlhMRIwEAYDVQQDEwlsb2NhbGhvc3QwWTATBgcqhkjOPQIBBggq -hkjOPQMBBwNCAAR2lOQpN3dHsoexFh4v19Oc12K42gSxsfFmdZym+Gqeo7lV0W7e -zApbXRiaNuePmP7o/8hLBiIquaIWdlJ/bb01oCcwJQYJKoZIhvcNAQkOMRgwFjAU -BgNVHREEDTALgglsb2NhbGhvc3QwCgYIKoZIzj0EAwIDSAAwRQIhAOmgCL0E5Xj8 -ULhUf4wuIcBC1k5aXs2wynhQUtKYR5rCAiAmu3WC+re4K1vPJJwxgjjwiJr5yF9L -j0oolWilNYcE0w== ------END CERTIFICATE REQUEST----- diff --git a/certs/server.json b/certs/server.json deleted file mode 100644 index 5acf3f3..0000000 --- a/certs/server.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "CN": "localhost", - "hosts": [ - "localhost" - ], - "key": { - "algo": "ecdsa", - "size": 256 - }, - "names": [ - { - "C": "DE", - "L": "Bavaria", - "ST": "Munich" - } - ] -} diff --git a/certs/server.pem b/certs/server.pem deleted file mode 100644 index 4b97cf1..0000000 --- a/certs/server.pem +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICGjCCAcCgAwIBAgIUWa6tjanLPx+KTcj2UM9i7wA5x+swCgYIKoZIzj0EAwIw -PTELMAkGA1UEBhMCREUxDzANBgNVBAgTBk11bmljaDEQMA4GA1UEBxMHQmF2YXJp -YTELMAkGA1UEAxMCY2EwHhcNMjQwMjA2MTY0NTAwWhcNMjUwMjA1MTY0NTAwWjBE -MQswCQYDVQQGEwJERTEPMA0GA1UECBMGTXVuaWNoMRAwDgYDVQQHEwdCYXZhcmlh -MRIwEAYDVQQDEwlsb2NhbGhvc3QwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR2 -lOQpN3dHsoexFh4v19Oc12K42gSxsfFmdZym+Gqeo7lV0W7ezApbXRiaNuePmP7o -/8hLBiIquaIWdlJ/bb01o4GWMIGTMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAU -BggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUKzNk -/EcAupZIADSZfI+z8XJ4W98wHwYDVR0jBBgwFoAUAMI2Pq4Et0SXWA1OUqncH9op -OHswFAYDVR0RBA0wC4IJbG9jYWxob3N0MAoGCCqGSM49BAMCA0gAMEUCIQCmmjM3 -z4v8btONqV+jZQjIIwOpez6vrsAJit67oKGAVQIgc+innrlfZiIISlFaWF1SBrwK -xEishfdnkuXkBA+YgVM= ------END CERTIFICATE----- diff --git a/cmd/server/main.go b/cmd/server/main.go index 7e3c344..51f8794 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -39,17 +39,6 @@ func main() { }, }, Commands: []*cli.Command{ - // { - // Name: "memory", - // Aliases: []string{"m"}, - // Usage: "start with memory backend", - // Action: func(ctx *cli.Context) error { - // c := getConfig(ctx) - // c.Storage = goipam.NewMemory(ctx.Context) - // s := newServer(c) - // return s.Run() - // }, - // }, { Name: "postgres", Aliases: []string{"pg"}, @@ -69,19 +58,19 @@ func main() { }, &cli.StringFlag{ Name: "user", - Value: "go-ipam", + Value: "masterdata", Usage: "postgres db user", EnvVars: []string{"MASTERDATA_PG_USER"}, }, &cli.StringFlag{ Name: "password", - Value: "secret", + Value: "password", Usage: "postgres db password", EnvVars: []string{"MASTERDATA_PG_PASSWORD"}, }, &cli.StringFlag{ Name: "dbname", - Value: "goipam", + Value: "masterdata", Usage: "postgres db name", EnvVars: []string{"MASTERDATA_PG_DBNAME"}, }, diff --git a/deploy/masterdata-api.yaml b/deploy/masterdata-api.yaml index abef8a8..f812495 100644 --- a/deploy/masterdata-api.yaml +++ b/deploy/masterdata-api.yaml @@ -179,6 +179,9 @@ spec: - name: POSTGRES_DB value: masterdata resources: + requests: + memory: "128Mi" + cpu: "500m" limits: memory: "128Mi" cpu: "500m" diff --git a/go.mod b/go.mod index 0106f87..9de7cdf 100644 --- a/go.mod +++ b/go.mod @@ -44,7 +44,7 @@ require ( github.com/containerd/platforms v0.2.1 // indirect github.com/coreos/go-oidc/v3 v3.14.1 // indirect github.com/cpuguy83/dockercfg v0.3.2 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.6 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 // indirect github.com/distribution/reference v0.6.0 // indirect @@ -74,7 +74,7 @@ require ( github.com/lestrrat-go/httpcc v1.0.1 // indirect github.com/lestrrat-go/httprc v1.0.6 // indirect github.com/lestrrat-go/iter v1.0.2 // indirect - github.com/lestrrat-go/jwx/v2 v2.1.5 // indirect + github.com/lestrrat-go/jwx/v2 v2.1.6 // indirect github.com/lestrrat-go/option v1.0.1 // indirect github.com/lufia/plan9stats v0.0.0-20250317134145-8bc96cf8fc35 // indirect github.com/magiconair/properties v1.8.10 // indirect @@ -123,7 +123,7 @@ require ( golang.org/x/sync v0.13.0 // indirect golang.org/x/sys v0.32.0 // indirect golang.org/x/text v0.24.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250425173222-7b384671a197 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index d1bc2fd..e559300 100644 --- a/go.sum +++ b/go.sum @@ -34,8 +34,8 @@ github.com/coreos/go-oidc/v3 v3.14.1 h1:9ePWwfdwC4QKRlCXsJGou56adA/owXczOzwKdOum github.com/coreos/go-oidc/v3 v3.14.1/go.mod h1:HaZ3szPaZ0e4r6ebqvsLWlk2Tn+aejfmrfah6hnSYEU= github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= -github.com/cpuguy83/go-md2man/v2 v2.0.6 h1:XJtiaUW6dEEqVuZiMTn1ldk455QWwEIsMIJlo5vtkx0= -github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/cpuguy83/go-md2man/v2 v2.0.7 h1:zbFlGlXEAKlwXpmvle3d8Oe3YnkKIK4xSRTd3sHPnBo= +github.com/cpuguy83/go-md2man/v2 v2.0.7/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -160,8 +160,8 @@ github.com/lestrrat-go/httprc v1.0.6 h1:qgmgIRhpvBqexMJjA/PmwSvhNk679oqD1RbovdCG github.com/lestrrat-go/httprc v1.0.6/go.mod h1:mwwz3JMTPBjHUkkDv/IGJ39aALInZLrhBp0X7KGUZlo= github.com/lestrrat-go/iter v1.0.2 h1:gMXo1q4c2pHmC3dn8LzRhJfP1ceCbgSiT9lUydIzltI= github.com/lestrrat-go/iter v1.0.2/go.mod h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4= -github.com/lestrrat-go/jwx/v2 v2.1.5 h1:PQI5gzadLfJ22ckLrejPVX6eGXKM4M4eGi5fW2jjA3o= -github.com/lestrrat-go/jwx/v2 v2.1.5/go.mod h1:Y722kU5r/8mV7fYDifjug0r8FK8mZdw0K0GpJw/l8pU= +github.com/lestrrat-go/jwx/v2 v2.1.6 h1:hxM1gfDILk/l5ylers6BX/Eq1m/pnxe9NBwW6lVfecA= +github.com/lestrrat-go/jwx/v2 v2.1.6/go.mod h1:Y722kU5r/8mV7fYDifjug0r8FK8mZdw0K0GpJw/l8pU= github.com/lestrrat-go/option v1.0.1 h1:oAzP2fvZGQKWkvHa1/SAcFolBEca1oN+mQ7eooNBEYU= github.com/lestrrat-go/option v1.0.1/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= @@ -340,8 +340,8 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a h1:nwKuGPlUAt+aR+pcrkfFRrTU1BVrSmYyYMxYbUIVHr0= google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a/go.mod h1:3kWAYMk1I75K4vykHtKt2ycnOgpA6974V7bREqbsenU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250425173222-7b384671a197 h1:29cjnHVylHwTzH66WfFZqgSQgnxzvWE+jvBwpZCLRxY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250425173222-7b384671a197/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 h1:h6p3mQqrmT1XkHVTfzLdNz1u7IhINeZkz67/xTbOuWs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= From 8604309730224866bb9003111b2b63402c36c29b Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Wed, 30 Apr 2025 07:31:37 +0200 Subject: [PATCH 25/39] Remove unused --- deploy/masterdata-api.yaml | 2 + go.mod | 22 ---- go.sum | 56 --------- pkg/auth/hmacauther.go | 116 ------------------ pkg/auth/users.go | 21 ---- .../StatusInternalErrorInterceptor.go | 43 ------- 6 files changed, 2 insertions(+), 258 deletions(-) delete mode 100644 pkg/auth/hmacauther.go delete mode 100644 pkg/auth/users.go delete mode 100644 pkg/interceptors/grpc_internalerror/StatusInternalErrorInterceptor.go diff --git a/deploy/masterdata-api.yaml b/deploy/masterdata-api.yaml index f812495..2a23d9e 100644 --- a/deploy/masterdata-api.yaml +++ b/deploy/masterdata-api.yaml @@ -171,6 +171,8 @@ spec: containers: - name: masterdata-db image: postgres:17-alpine + command: + - postgres env: - name: POSTGRES_PASSWORD value: password diff --git a/go.mod b/go.mod index 9de7cdf..4386119 100644 --- a/go.mod +++ b/go.mod @@ -10,14 +10,12 @@ require ( github.com/Masterminds/squirrel v1.5.4 github.com/google/go-cmp v0.7.0 github.com/google/uuid v1.6.0 - github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.1 github.com/jmoiron/sqlx v1.4.0 github.com/json-iterator/go v1.1.12 github.com/klauspost/connect-compress/v2 v2.0.0 github.com/lib/pq v1.10.9 github.com/lopezator/migrator v0.3.1 github.com/metal-stack/metal-lib v0.22.1 - github.com/metal-stack/security v0.9.4 github.com/metal-stack/v v1.0.3 github.com/prometheus/client_golang v1.22.0 github.com/stretchr/testify v1.10.0 @@ -42,43 +40,26 @@ require ( github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/coreos/go-oidc/v3 v3.14.1 // indirect github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.1.1+incompatible // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/ebitengine/purego v0.8.2 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/go-jose/go-jose/v4 v4.1.0 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-openapi/errors v0.22.1 // indirect - github.com/go-openapi/runtime v0.28.0 // indirect github.com/go-openapi/strfmt v0.23.0 // indirect - github.com/go-openapi/swag v0.23.1 // indirect - github.com/goccy/go-json v0.10.5 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v5 v5.2.2 // indirect - github.com/gorilla/mux v1.8.1 // indirect - github.com/icza/dyno v0.0.0-20230330125955-09f820a8d9c0 // indirect - github.com/josharian/intern v1.0.0 // indirect github.com/klauspost/compress v1.18.0 // indirect github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect - github.com/lestrrat-go/blackmagic v1.0.3 // indirect - github.com/lestrrat-go/httpcc v1.0.1 // indirect - github.com/lestrrat-go/httprc v1.0.6 // indirect - github.com/lestrrat-go/iter v1.0.2 // indirect - github.com/lestrrat-go/jwx/v2 v2.1.6 // indirect - github.com/lestrrat-go/option v1.0.1 // indirect github.com/lufia/plan9stats v0.0.0-20250317134145-8bc96cf8fc35 // indirect github.com/magiconair/properties v1.8.10 // indirect - github.com/mailru/easyjson v0.9.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/go-archive v0.1.0 // indirect @@ -102,7 +83,6 @@ require ( github.com/prometheus/common v0.63.0 // indirect github.com/prometheus/procfs v0.16.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/segmentio/asm v1.2.0 // indirect github.com/shirou/gopsutil/v4 v4.25.3 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/stretchr/objx v0.5.2 // indirect @@ -119,8 +99,6 @@ require ( go.opentelemetry.io/otel/sdk v1.35.0 // indirect go.opentelemetry.io/otel/trace v1.35.0 // indirect golang.org/x/crypto v0.37.0 // indirect - golang.org/x/oauth2 v0.29.0 // indirect - golang.org/x/sync v0.13.0 // indirect golang.org/x/sys v0.32.0 // indirect golang.org/x/text v0.24.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect diff --git a/go.sum b/go.sum index e559300..8954572 100644 --- a/go.sum +++ b/go.sum @@ -30,8 +30,6 @@ github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/coreos/go-oidc/v3 v3.14.1 h1:9ePWwfdwC4QKRlCXsJGou56adA/owXczOzwKdOumLqk= -github.com/coreos/go-oidc/v3 v3.14.1/go.mod h1:HaZ3szPaZ0e4r6ebqvsLWlk2Tn+aejfmrfah6hnSYEU= github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/cpuguy83/go-md2man/v2 v2.0.7 h1:zbFlGlXEAKlwXpmvle3d8Oe3YnkKIK4xSRTd3sHPnBo= @@ -42,8 +40,6 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 h1:NMZiJj8QnKe1LgsbDayM4UoHwbvwDRwnI3hwNaAHRnc= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0/go.mod h1:ZXNYxsqcloTdSy/rNShjYzMhyjf0LaoftYK0p+A3h40= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/docker/docker v28.1.1+incompatible h1:49M11BFLsVO1gxY9UX9p/zwkE/rswggs8AdFmXQw51I= @@ -56,8 +52,6 @@ github.com/ebitengine/purego v0.8.2 h1:jPPGWs2sZ1UgOSgD2bClL0MJIqu58nOmIcBuXr62z github.com/ebitengine/purego v0.8.2/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/go-jose/go-jose/v4 v4.1.0 h1:cYSYxd3pw5zd2FSXk2vGdn9igQU2PS8MuxrCOCl0FdY= -github.com/go-jose/go-jose/v4 v4.1.0/go.mod h1:GG/vqmYm3Von2nYiB2vGTXzdoNKE5tix5tuc6iAd+sw= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -66,34 +60,14 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= -github.com/go-openapi/analysis v0.23.0 h1:aGday7OWupfMs+LbmLZG4k0MYXIANxcuBTYUC03zFCU= -github.com/go-openapi/analysis v0.23.0/go.mod h1:9mz9ZWaSlV8TvjQHLl2mUW2PbZtemkE8yA5v22ohupo= github.com/go-openapi/errors v0.22.1 h1:kslMRRnK7NCb/CvR1q1VWuEQCEIsBGn5GgKD9e+HYhU= github.com/go-openapi/errors v0.22.1/go.mod h1:+n/5UdIqdVnLIJ6Q9Se8HNGUXYaY6CN8ImWzfi/Gzp0= -github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= -github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= -github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ= -github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4= -github.com/go-openapi/loads v0.22.0 h1:ECPGd4jX1U6NApCGG1We+uEozOAvXvJSF4nnwHZ8Aco= -github.com/go-openapi/loads v0.22.0/go.mod h1:yLsaTCS92mnSAZX5WWoxszLj0u+Ojl+Zs5Stn1oF+rs= -github.com/go-openapi/runtime v0.28.0 h1:gpPPmWSNGo214l6n8hzdXYhPuJcGtziTOgUpvsFWGIQ= -github.com/go-openapi/runtime v0.28.0/go.mod h1:QN7OzcS+XuYmkQLw05akXk0jRH/eZ3kb18+1KwW9gyc= -github.com/go-openapi/spec v0.21.0 h1:LTVzPc3p/RzRnkQqLRndbAzjY0d0BCL72A6j3CdL9ZY= -github.com/go-openapi/spec v0.21.0/go.mod h1:78u6VdPw81XU44qEWGhtr982gJ5BWg2c0I5XwVMotYk= github.com/go-openapi/strfmt v0.23.0 h1:nlUS6BCqcnAk0pyhi9Y+kdDVZdZMHfEKQiS4HaMgO/c= github.com/go-openapi/strfmt v0.23.0/go.mod h1:NrtIpfKtWIygRkKVsxh7XQMDQW5HKQl6S5ik2elW+K4= -github.com/go-openapi/swag v0.23.1 h1:lpsStH0n2ittzTnbaSloVZLuB5+fvSY/+hnagBjSNZU= -github.com/go-openapi/swag v0.23.1/go.mod h1:STZs8TbRvEQQKUA+JZNAm3EWlgaOBGpyFDqQnDHMef0= -github.com/go-openapi/validate v0.24.0 h1:LdfDKwNbpB6Vn40xhTdNZAnfLECL81w+VX3BumrGD58= -github.com/go-openapi/validate v0.24.0/go.mod h1:iyeX1sEufmv3nPbBdX3ieNviWnOZaJ1+zquzJEf2BAQ= github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y= github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= -github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= -github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8= -github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= @@ -102,14 +76,8 @@ github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= -github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.1 h1:KcFzXwzM/kGhIRHvc8jdixfIJjVzuUJdnv+5xsPutog= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.1/go.mod h1:qOchhhIlmRcqk/O9uCo/puJlyo07YINaIqdZfZG3Jkc= github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 h1:e9Rjr40Z98/clHv5Yg79Is0NtosR5LXRvdr7o/6NwbA= github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1/go.mod h1:tIxuGz/9mpox++sgp9fJjHO0+q1X9/UOWd798aAm22M= -github.com/icza/dyno v0.0.0-20230330125955-09f820a8d9c0 h1:nHoRIX8iXob3Y2kdt9KsjyIb7iApSvb3vgsd93xb5Ow= -github.com/icza/dyno v0.0.0-20230330125955-09f820a8d9c0/go.mod h1:c1tRKs5Tx7E2+uHGSyyncziFjvGpgv4H2HrqXeUQ/Uk= github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8= github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= github.com/jackc/pgconn v1.11.0 h1:HiHArx4yFbwl91X3qqIHtUFoiIfLNJXCQRsnzkiwwaQ= @@ -132,8 +100,6 @@ github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= github.com/jmoiron/sqlx v1.4.0 h1:1PLqN7S1UYp5t4SrVVnt4nUVNemrDAtxlulVe+Qgm3o= github.com/jmoiron/sqlx v1.4.0/go.mod h1:ZrZ7UsYB/weZdl2Bxg6jCRO9c3YHl8r3ahlKmRT4JLY= -github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= -github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -152,18 +118,6 @@ github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 h1:SOEGU9fKiNWd/HOJuq github.com/lann/builder v0.0.0-20180802200727-47ae307949d0/go.mod h1:dXGbAdH5GtBTC4WfIxhKZfyBF/HBFgRZSWwZ9g/He9o= github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 h1:P6pPBnrTSX3DEVR4fDembhRWSsG5rVo6hYhAB/ADZrk= github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0/go.mod h1:vmVJ0l/dxyfGW6FmdpVm2joNMFikkuWg0EoCKLGUMNw= -github.com/lestrrat-go/blackmagic v1.0.3 h1:94HXkVLxkZO9vJI/w2u1T0DAoprShFd13xtnSINtDWs= -github.com/lestrrat-go/blackmagic v1.0.3/go.mod h1:6AWFyKNNj0zEXQYfTMPfZrAXUWUfTIZ5ECEUEJaijtw= -github.com/lestrrat-go/httpcc v1.0.1 h1:ydWCStUeJLkpYyjLDHihupbn2tYmZ7m22BGkcvZZrIE= -github.com/lestrrat-go/httpcc v1.0.1/go.mod h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E= -github.com/lestrrat-go/httprc v1.0.6 h1:qgmgIRhpvBqexMJjA/PmwSvhNk679oqD1RbovdCGW8k= -github.com/lestrrat-go/httprc v1.0.6/go.mod h1:mwwz3JMTPBjHUkkDv/IGJ39aALInZLrhBp0X7KGUZlo= -github.com/lestrrat-go/iter v1.0.2 h1:gMXo1q4c2pHmC3dn8LzRhJfP1ceCbgSiT9lUydIzltI= -github.com/lestrrat-go/iter v1.0.2/go.mod h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4= -github.com/lestrrat-go/jwx/v2 v2.1.6 h1:hxM1gfDILk/l5ylers6BX/Eq1m/pnxe9NBwW6lVfecA= -github.com/lestrrat-go/jwx/v2 v2.1.6/go.mod h1:Y722kU5r/8mV7fYDifjug0r8FK8mZdw0K0GpJw/l8pU= -github.com/lestrrat-go/option v1.0.1 h1:oAzP2fvZGQKWkvHa1/SAcFolBEca1oN+mQ7eooNBEYU= -github.com/lestrrat-go/option v1.0.1/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lopezator/migrator v0.3.1 h1:ZFPT6aC7+nGWkqhleynABZ6ftycSf6hmHHLOaryq1Og= @@ -172,16 +126,12 @@ github.com/lufia/plan9stats v0.0.0-20250317134145-8bc96cf8fc35 h1:PpXWgLPs+Fqr32 github.com/lufia/plan9stats v0.0.0-20250317134145-8bc96cf8fc35/go.mod h1:autxFIvghDt3jPTLoqZ9OZ7s9qTGNAWmYCjVFWPX/zg= github.com/magiconair/properties v1.8.10 h1:s31yESBquKXCV9a/ScB3ESkOjUYYv+X0rg8SYxI99mE= github.com/magiconair/properties v1.8.10/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4= -github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU= github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/mdelapenya/tlscert v0.2.0 h1:7H81W6Z/4weDvZBNOfQte5GpIMo0lGYEeWbkGp5LJHI= github.com/mdelapenya/tlscert v0.2.0/go.mod h1:O4njj3ELLnJjGdkN7M/vIVCpZ+Cf0L6muqOG4tLSl8o= github.com/metal-stack/metal-lib v0.22.1 h1:kAXOHZOSqBA0NQgYmtONxfY5khyQo8ofEL30QBE5DEY= github.com/metal-stack/metal-lib v0.22.1/go.mod h1:QiFb7TpSrvnLAHOlxLiUm1aG+1t5nPHsoDT/bw+F5r8= -github.com/metal-stack/security v0.9.4 h1:qgB4Yx48Wgi57a/ePWE1gdUn4RjilVySQAFRVIoPKBU= -github.com/metal-stack/security v0.9.4/go.mod h1:Qya3sKnaZ+1VmayGcMGgCBsVhzBvWYYx9hcvinfXB1Q= github.com/metal-stack/v v1.0.3 h1:Sh2oBlnxrCUD+mVpzfC8HiqL045YWkxs0gpTvkjppqs= github.com/metal-stack/v v1.0.3/go.mod h1:YTahEu7/ishwpYKnp/VaW/7nf8+PInogkfGwLcGPdXg= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -236,8 +186,6 @@ github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys= -github.com/segmentio/asm v1.2.0/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs= github.com/shirou/gopsutil/v4 v4.25.3 h1:SeA68lsu8gLggyMbmCn8cmp97V1TI9ld9sVzAUcKcKE= github.com/shirou/gopsutil/v4 v4.25.3/go.mod h1:xbuxyoZj+UsgnZrENu3lQivsngRR5BdjbJwf2fv4szA= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= @@ -247,9 +195,7 @@ github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/testcontainers/testcontainers-go v0.37.0 h1:L2Qc0vkTw2EHWQ08djon0D2uw7Z/PtHS/QzZZ5Ra/hg= @@ -305,8 +251,6 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= -golang.org/x/oauth2 v0.29.0 h1:WdYw2tdTK1S8olAzWHdgeqfy+Mtm9XNhv/xJsY65d98= -golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/pkg/auth/hmacauther.go b/pkg/auth/hmacauther.go deleted file mode 100644 index 59cee79..0000000 --- a/pkg/auth/hmacauther.go +++ /dev/null @@ -1,116 +0,0 @@ -package auth - -import ( - "context" - "fmt" - "time" - - "github.com/grpc-ecosystem/go-grpc-middleware/v2/metadata" - "github.com/metal-stack/security" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" -) - -type contextKey string - -const ( - // HmacDefaultKey is a exported constant for convenience - // FIXME where is this used ? - HmacDefaultKey = "4Rahs0WnJ4rJE8ZiwiLec62z" //nolint:gosec - - // hmacMethod fictive non-rest-method used for HMAC-Token - hmacMethod = "GRPC" - - // hmacAuthtype reflects the application for that the hmac is used (tenant masterdata-management) - hmacAuthtype = "tmdm" - - // lifetime of the hmac token - hmacLifetime = 15 * time.Second - - contextKeyUser = contextKey("user") -) - -// HMACAuther provides means for generation/encoding and decoding/validation for grpc. -// This code is potentially re-usable for all grpc-based clients/services -// that want to use hmac-Authentication. -type HMACAuther struct { - hmacAuth *security.HMACAuth -} - -// NewHMACAuther creates a new HMACAuther with the given hmac-pre-shared-key and user. -func NewHMACAuther(hmacKey string, user security.User) (*HMACAuther, error) { - - var hmacAuth *security.HMACAuth - if hmacKey != "" { - auth := security.NewHMACAuth(hmacAuthtype, []byte(hmacKey), security.WithLifetime(hmacLifetime), security.WithUser(user)) - hmacAuth = &auth - - a := &HMACAuther{ - hmacAuth: hmacAuth, - } - - return a, nil - } - - return nil, fmt.Errorf("error creating auther - no hmacKey specified") -} - -// Auth returns a new Context with the authenticated "user" from the current request. -// If there is no authentication info in the request, or the verification of the HMAC -// fails an Status-Error is returned with Code Unauthenticated. -// -// see GetUser() -// -// Used on the service/server-side. -func (a *HMACAuther) Auth(ctx context.Context) (context.Context, error) { - - rqd := security.RequestData{ - Method: hmacMethod, - AuthzHeader: metadata.ExtractIncoming(ctx).Get(security.AuthzHeaderKey), - TimestampHeader: metadata.ExtractIncoming(ctx).Get(security.TsHeaderKey), - SaltHeader: metadata.ExtractIncoming(ctx).Get(security.SaltHeaderKey), - } - - user, err := a.hmacAuth.UserFromRequestData(rqd) - if err != nil { - return nil, status.Errorf(codes.Unauthenticated, "invalid auth token: %v", err) - } - - newCtx := context.WithValue(ctx, contextKeyUser, user) - return newCtx, nil -} - -// GetUser gets the authenticated user from the given context. -// Note that it is necessary to call Auth() in an interceptor to put the user in the context. -// -// May return nil if no user is authenticated or not of the correct type. -// -// Used on the service/server-side. -func GetUser(ctx context.Context) *security.User { - user := ctx.Value(contextKeyUser) - if user == nil { - return nil - } - u, _ := user.(*security.User) - return u -} - -// GetRequestMetadata gets the current request metadata, refreshing -// tokens if required. This should be called by the transport layer on -// each request, and the data should be populated in headers or other -// context. -// -// Used on the client-side. -func (a *HMACAuther) GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error) { - - headers := a.hmacAuth.AuthHeaders(hmacMethod, time.Now()) - return headers, nil -} - -// RequireTransportSecurity indicates whether the credentials requires -// transport security. -// -// Used on the client-side. -func (a *HMACAuther) RequireTransportSecurity() bool { - return true -} diff --git a/pkg/auth/users.go b/pkg/auth/users.go deleted file mode 100644 index 480d502..0000000 --- a/pkg/auth/users.go +++ /dev/null @@ -1,21 +0,0 @@ -package auth - -import "github.com/metal-stack/security" -import "github.com/metal-stack/metal-lib/jwt/sec" - -var ( - // Edit Groupname - EditGroups = []security.ResourceAccess{ - security.ResourceAccess("tmdm-all-all-edit"), - } - - EditAccess = sec.MergeResourceAccess(EditGroups) - - // Edit User - EditUser = security.User{ - EMail: "tmdm@metal-stack.io", - Name: "tmdm", - Groups: sec.MergeResourceAccess(EditGroups), - Tenant: "tmdm", - } -) diff --git a/pkg/interceptors/grpc_internalerror/StatusInternalErrorInterceptor.go b/pkg/interceptors/grpc_internalerror/StatusInternalErrorInterceptor.go deleted file mode 100644 index 0fd76c7..0000000 --- a/pkg/interceptors/grpc_internalerror/StatusInternalErrorInterceptor.go +++ /dev/null @@ -1,43 +0,0 @@ -package grpc_internalerror - -import ( - "context" - - "google.golang.org/grpc" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" -) - -/* - Every response with an "plain" error will be converted to an status-error with codes.Internal. -*/ - -// UnaryServerInterceptor returns a new unary server interceptor for panic recovery. -func UnaryServerInterceptor() grpc.UnaryServerInterceptor { - - return func(ctx context.Context, req any, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (_ any, err error) { - - result, err := handler(ctx, req) - _, ok := status.FromError(err) - if !ok { - err = status.Error(codes.Internal, err.Error()) - } - - return result, err - } -} - -// StreamServerInterceptor returns a new streaming server interceptor for panic recovery. -func StreamServerInterceptor() grpc.StreamServerInterceptor { - - return func(srv any, stream grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) (err error) { - - err = handler(srv, stream) - _, ok := status.FromError(err) - if !ok { - err = status.Error(codes.Internal, err.Error()) - } - - return err - } -} From 12f7c32e1cba561a92022972544e7529d7d91af1 Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Wed, 30 Apr 2025 07:37:38 +0200 Subject: [PATCH 26/39] Keep apiversion v1 --- api/v1/project_scnrvalr.go | 2 +- api/v1/projectmember_scnrvalr.go | 2 +- api/v1/tenant_scnrvalr.go | 2 +- api/v1/tenantmember_scnrvalr.go | 2 +- pkg/datastore/postgres_test.go | 6 +++--- pkg/gen/genscanvaluer.go | 3 ++- pkg/service/tenant_test.go | 26 +++++++++++++------------- 7 files changed, 22 insertions(+), 21 deletions(-) diff --git a/api/v1/project_scnrvalr.go b/api/v1/project_scnrvalr.go index ea7ccc1..464b0c3 100644 --- a/api/v1/project_scnrvalr.go +++ b/api/v1/project_scnrvalr.go @@ -40,7 +40,7 @@ func (p *Project) Kind() string { } func (p *Project) APIVersion() string { - return "apiv1" + return "v1" } // Value make the Project struct implement the driver.Valuer interface. This method diff --git a/api/v1/projectmember_scnrvalr.go b/api/v1/projectmember_scnrvalr.go index a592ebd..6b43e21 100644 --- a/api/v1/projectmember_scnrvalr.go +++ b/api/v1/projectmember_scnrvalr.go @@ -40,7 +40,7 @@ func (p *ProjectMember) Kind() string { } func (p *ProjectMember) APIVersion() string { - return "apiv1" + return "v1" } // Value make the ProjectMember struct implement the driver.Valuer interface. This method diff --git a/api/v1/tenant_scnrvalr.go b/api/v1/tenant_scnrvalr.go index 59b2258..8692e82 100644 --- a/api/v1/tenant_scnrvalr.go +++ b/api/v1/tenant_scnrvalr.go @@ -40,7 +40,7 @@ func (t *Tenant) Kind() string { } func (t *Tenant) APIVersion() string { - return "apiv1" + return "v1" } // Value make the Tenant struct implement the driver.Valuer interface. This method diff --git a/api/v1/tenantmember_scnrvalr.go b/api/v1/tenantmember_scnrvalr.go index 4a6885c..6bcf5c3 100644 --- a/api/v1/tenantmember_scnrvalr.go +++ b/api/v1/tenantmember_scnrvalr.go @@ -40,7 +40,7 @@ func (t *TenantMember) Kind() string { } func (t *TenantMember) APIVersion() string { - return "apiv1" + return "v1" } // Value make the TenantMember struct implement the driver.Valuer interface. This method diff --git a/pkg/datastore/postgres_test.go b/pkg/datastore/postgres_test.go index 5a6a125..f4a21d2 100644 --- a/pkg/datastore/postgres_test.go +++ b/pkg/datastore/postgres_test.go @@ -245,7 +245,7 @@ func TestCreate(t *testing.T) { require.NoError(t, err) assert.NotNil(t, tcr3.GetMeta().GetApiversion()) assert.NotEmpty(t, tcr3.GetMeta().GetApiversion()) - assert.Equal(t, "apiv1", tcr3.GetMeta().GetApiversion()) + assert.Equal(t, "v1", tcr3.GetMeta().GetApiversion()) assert.NotNil(t, tcr3.GetMeta().GetKind()) assert.NotEmpty(t, tcr3.GetMeta().GetKind()) assert.Equal(t, "Tenant", tcr3.GetMeta().GetKind()) @@ -268,7 +268,7 @@ func TestCreate(t *testing.T) { } err = tenantDS.Create(ctx, tcr6) require.Error(t, err) - require.EqualError(t, err, "create of type:tenant failed, apiversion must be set to:apiv1") + require.EqualError(t, err, "create of type:tenant failed, apiversion must be set to:v1") } func TestUpdate(t *testing.T) { @@ -338,7 +338,7 @@ func TestUpdate(t *testing.T) { tcr1.Meta.Apiversion = "v2" err = tenantDS.Update(ctx, tcr1) require.Error(t, err) - require.EqualError(t, err, "update of type:tenant failed, apiversion must be set to:apiv1") + require.EqualError(t, err, "update of type:tenant failed, apiversion must be set to:v1") checkHistory(ctx, t, t3, time.Now(), "ctenant", "C Tenant 3") } diff --git a/pkg/gen/genscanvaluer.go b/pkg/gen/genscanvaluer.go index 4dfb674..2903703 100644 --- a/pkg/gen/genscanvaluer.go +++ b/pkg/gen/genscanvaluer.go @@ -98,6 +98,7 @@ func (g *Generator) generate(packageName, typeName string) error { info := map[string]string{ "packageName": packageName, + "apiversion": "v1", // THIS is kept to v1 to stay compatible with existing database entries "typeName": typeName, "typeVariable": strings.ToLower(string(typeName[0])), "typeNameLower": strings.ToLower(typeName), @@ -180,7 +181,7 @@ func ({{ .typeVariable }} *{{ .typeName }}) Kind() string { } func ({{ .typeVariable }} *{{ .typeName }}) APIVersion() string { - return "{{ .packageName }}" + return "{{ .apiversion }}" } // Value make the {{ .typeName }} struct implement the driver.Valuer interface. This method diff --git a/pkg/service/tenant_test.go b/pkg/service/tenant_test.go index a405978..813b1d0 100644 --- a/pkg/service/tenant_test.go +++ b/pkg/service/tenant_test.go @@ -264,7 +264,7 @@ func Test_tenantService_FindParticipatingProjects(t *testing.T) { Project: &v1.Project{ Meta: &v1.Meta{ Kind: "Project", - Apiversion: "apiv1", + Apiversion: "v1", Id: "1", }, }, @@ -297,7 +297,7 @@ func Test_tenantService_FindParticipatingProjects(t *testing.T) { Project: &v1.Project{ Meta: &v1.Meta{ Kind: "Project", - Apiversion: "apiv1", + Apiversion: "v1", Id: "1", }, }, @@ -324,7 +324,7 @@ func Test_tenantService_FindParticipatingProjects(t *testing.T) { Project: &v1.Project{ Meta: &v1.Meta{ Kind: "Project", - Apiversion: "apiv1", + Apiversion: "v1", Id: "1", }, TenantId: "b", @@ -377,7 +377,7 @@ func Test_tenantService_FindParticipatingProjects(t *testing.T) { Project: &v1.Project{ Meta: &v1.Meta{ Kind: "Project", - Apiversion: "apiv1", + Apiversion: "v1", Id: "direct-1", }, TenantId: "req-tenant", @@ -389,7 +389,7 @@ func Test_tenantService_FindParticipatingProjects(t *testing.T) { Project: &v1.Project{ Meta: &v1.Meta{ Kind: "Project", - Apiversion: "apiv1", + Apiversion: "v1", Id: "indirect-2", }, TenantId: "parent", @@ -514,7 +514,7 @@ func Test_tenantService_FindParticipatingTenants(t *testing.T) { Tenant: &v1.Tenant{ Meta: &v1.Meta{ Kind: "Tenant", - Apiversion: "apiv1", + Apiversion: "v1", Id: "b", }, }, @@ -544,7 +544,7 @@ func Test_tenantService_FindParticipatingTenants(t *testing.T) { Tenant: &v1.Tenant{ Meta: &v1.Meta{ Kind: "Tenant", - Apiversion: "apiv1", + Apiversion: "v1", Id: "b", }, }, @@ -607,7 +607,7 @@ func Test_tenantService_FindParticipatingTenants(t *testing.T) { Tenant: &v1.Tenant{ Meta: &v1.Meta{ Kind: "Tenant", - Apiversion: "apiv1", + Apiversion: "v1", Id: "direct-tnt", }, }, @@ -617,7 +617,7 @@ func Test_tenantService_FindParticipatingTenants(t *testing.T) { Tenant: &v1.Tenant{ Meta: &v1.Meta{ Kind: "Tenant", - Apiversion: "apiv1", + Apiversion: "v1", Id: "indirect-tnt", }, }, @@ -742,7 +742,7 @@ func Test_tenantService_ListTenantMembers(t *testing.T) { Tenant: &v1.Tenant{ Meta: &v1.Meta{ Kind: "Tenant", - Apiversion: "apiv1", + Apiversion: "v1", Id: "azure", }, }, @@ -772,7 +772,7 @@ func Test_tenantService_ListTenantMembers(t *testing.T) { Tenant: &v1.Tenant{ Meta: &v1.Meta{ Kind: "Tenant", - Apiversion: "apiv1", + Apiversion: "v1", Id: "google", }, }, @@ -831,7 +831,7 @@ func Test_tenantService_ListTenantMembers(t *testing.T) { Tenant: &v1.Tenant{ Meta: &v1.Meta{ Kind: "Tenant", - Apiversion: "apiv1", + Apiversion: "v1", Id: "github", }, }, @@ -845,7 +845,7 @@ func Test_tenantService_ListTenantMembers(t *testing.T) { Tenant: &v1.Tenant{ Meta: &v1.Meta{ Kind: "Tenant", - Apiversion: "apiv1", + Apiversion: "v1", Id: "azure", }, }, From 8e90e50461759352b6eb9964e410f1f1326565f3 Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Fri, 4 Jul 2025 10:30:11 +0200 Subject: [PATCH 27/39] Update deps --- .github/workflows/docker.yaml | 2 +- Dockerfile | 2 +- go.mod | 53 ++++++------- go.sum | 135 ++++++++++++++++++---------------- proto/Makefile | 2 +- 5 files changed, 103 insertions(+), 91 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 2d617e3..eeb38e9 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -38,7 +38,7 @@ jobs: cache: false - name: Lint - uses: golangci/golangci-lint-action@v7 + uses: golangci/golangci-lint-action@v8 with: args: --build-tags integration -D protogetter --timeout=10m diff --git a/Dockerfile b/Dockerfile index 9bc557b..14c72d3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM alpine:3.21 AS health-downloader +FROM alpine:3.22 AS health-downloader ENV GRPC_HEALTH_PROBE_VERSION=v0.4.37 \ GRPC_HEALTH_PROBE_URL=https://github.com/grpc-ecosystem/grpc-health-probe/releases/download RUN apk -U add curl \ diff --git a/go.mod b/go.mod index 4386119..5116095 100644 --- a/go.mod +++ b/go.mod @@ -15,41 +15,43 @@ require ( github.com/klauspost/connect-compress/v2 v2.0.0 github.com/lib/pq v1.10.9 github.com/lopezator/migrator v0.3.1 - github.com/metal-stack/metal-lib v0.22.1 + github.com/metal-stack/metal-lib v0.23.1 github.com/metal-stack/v v1.0.3 github.com/prometheus/client_golang v1.22.0 github.com/stretchr/testify v1.10.0 github.com/testcontainers/testcontainers-go v0.37.0 github.com/testcontainers/testcontainers-go/modules/postgres v0.37.0 - github.com/urfave/cli/v2 v2.27.6 - go.opentelemetry.io/otel/exporters/prometheus v0.57.0 - go.opentelemetry.io/otel/sdk/metric v1.35.0 - golang.org/x/net v0.39.0 - google.golang.org/grpc v1.72.0 + github.com/urfave/cli/v2 v2.27.7 + go.opentelemetry.io/otel/exporters/prometheus v0.59.0 + go.opentelemetry.io/otel/sdk/metric v1.37.0 + golang.org/x/net v0.41.0 + google.golang.org/grpc v1.73.0 google.golang.org/protobuf v1.36.6 - sigs.k8s.io/yaml v1.4.0 + sigs.k8s.io/yaml v1.5.0 ) require ( - dario.cat/mergo v1.0.1 // indirect + dario.cat/mergo v1.0.2 // indirect github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/containerd/errdefs v1.0.0 // indirect + github.com/containerd/errdefs/pkg v0.3.0 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/distribution/reference v0.6.0 // indirect - github.com/docker/docker v28.1.1+incompatible // indirect + github.com/docker/docker v28.3.1+incompatible // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect - github.com/ebitengine/purego v0.8.2 // indirect + github.com/ebitengine/purego v0.8.4 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/go-logr/logr v1.4.2 // indirect + github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-openapi/errors v0.22.1 // indirect @@ -80,28 +82,29 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.63.0 // indirect - github.com/prometheus/procfs v0.16.1 // indirect + github.com/prometheus/common v0.65.0 // indirect + github.com/prometheus/procfs v0.17.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/shirou/gopsutil/v4 v4.25.3 // indirect + github.com/shirou/gopsutil/v4 v4.25.6 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/tklauser/go-sysconf v0.3.15 // indirect github.com/tklauser/numcpus v0.10.0 // indirect github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect - go.mongodb.org/mongo-driver v1.17.3 // indirect + go.mongodb.org/mongo-driver v1.17.4 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 // indirect - go.opentelemetry.io/otel v1.35.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0 // indirect - go.opentelemetry.io/otel/metric v1.35.0 // indirect - go.opentelemetry.io/otel/sdk v1.35.0 // indirect - go.opentelemetry.io/otel/trace v1.35.0 // indirect - golang.org/x/crypto v0.37.0 // indirect - golang.org/x/sys v0.32.0 // indirect - golang.org/x/text v0.24.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0 // indirect + go.opentelemetry.io/otel v1.37.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.37.0 // indirect + go.opentelemetry.io/otel/metric v1.37.0 // indirect + go.opentelemetry.io/otel/sdk v1.37.0 // indirect + go.opentelemetry.io/otel/trace v1.37.0 // indirect + go.yaml.in/yaml/v2 v2.4.2 // indirect + golang.org/x/crypto v0.39.0 // indirect + golang.org/x/sys v0.33.0 // indirect + golang.org/x/text v0.26.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 8954572..105df47 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,8 @@ connectrpc.com/grpcreflect v1.3.0 h1:Y4V+ACf8/vOb1XOc251Qun7jMB75gCUNw6llvB9csXc connectrpc.com/grpcreflect v1.3.0/go.mod h1:nfloOtCS8VUQOQ1+GTdFzVg2CJo4ZGaat8JIovCtDYs= connectrpc.com/otelconnect v0.7.2 h1:WlnwFzaW64dN06JXU+hREPUGeEzpz3Acz2ACOmN8cMI= connectrpc.com/otelconnect v0.7.2/go.mod h1:JS7XUKfuJs2adhCnXhNHPHLz6oAaZniCJdSF00OZSew= -dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= -dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= +dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= +dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 h1:He8afgbRMd7mFxO99hRNu+6tazq8nFF9lIwo9JFroBk= @@ -24,8 +24,14 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/cenkalti/backoff/v5 v5.0.2 h1:rIfFVxEf1QsI7E1ZHfp/B4DF/6QBAUhmgkxc0H7Zss8= +github.com/cenkalti/backoff/v5 v5.0.2/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= +github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= +github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE= +github.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= @@ -42,19 +48,19 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/docker v28.1.1+incompatible h1:49M11BFLsVO1gxY9UX9p/zwkE/rswggs8AdFmXQw51I= -github.com/docker/docker v28.1.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v28.3.1+incompatible h1:20+BmuA9FXlCX4ByQ0vYJcUEnOmRM6XljDnFWR+jCyY= +github.com/docker/docker v28.3.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/ebitengine/purego v0.8.2 h1:jPPGWs2sZ1UgOSgD2bClL0MJIqu58nOmIcBuXr62z1I= -github.com/ebitengine/purego v0.8.2/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/ebitengine/purego v0.8.4 h1:CF7LEKg5FFOsASUj0+QwaXf8Ht6TlFxg09+S9wz0omw= +github.com/ebitengine/purego v0.8.4/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= -github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= @@ -70,14 +76,13 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 h1:e9Rjr40Z98/clHv5Yg79Is0NtosR5LXRvdr7o/6NwbA= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1/go.mod h1:tIxuGz/9mpox++sgp9fJjHO0+q1X9/UOWd798aAm22M= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 h1:X5VWvz21y3gzm9Nw/kaUeku/1+uBhcekkmy4IkffJww= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8= github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= github.com/jackc/pgconn v1.11.0 h1:HiHArx4yFbwl91X3qqIHtUFoiIfLNJXCQRsnzkiwwaQ= @@ -130,8 +135,8 @@ github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/mdelapenya/tlscert v0.2.0 h1:7H81W6Z/4weDvZBNOfQte5GpIMo0lGYEeWbkGp5LJHI= github.com/mdelapenya/tlscert v0.2.0/go.mod h1:O4njj3ELLnJjGdkN7M/vIVCpZ+Cf0L6muqOG4tLSl8o= -github.com/metal-stack/metal-lib v0.22.1 h1:kAXOHZOSqBA0NQgYmtONxfY5khyQo8ofEL30QBE5DEY= -github.com/metal-stack/metal-lib v0.22.1/go.mod h1:QiFb7TpSrvnLAHOlxLiUm1aG+1t5nPHsoDT/bw+F5r8= +github.com/metal-stack/metal-lib v0.23.1 h1:/Cpb9Js8RA2wwi12Gy+9D1tMhxh0Ge4VO+fjxMacSs4= +github.com/metal-stack/metal-lib v0.23.1/go.mod h1:QiFb7TpSrvnLAHOlxLiUm1aG+1t5nPHsoDT/bw+F5r8= github.com/metal-stack/v v1.0.3 h1:Sh2oBlnxrCUD+mVpzfC8HiqL045YWkxs0gpTvkjppqs= github.com/metal-stack/v v1.0.3/go.mod h1:YTahEu7/ishwpYKnp/VaW/7nf8+PInogkfGwLcGPdXg= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -178,16 +183,16 @@ github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/ github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= -github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= -github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= -github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= +github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= +github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= +github.com/prometheus/procfs v0.17.0 h1:FuLQ+05u4ZI+SS/w9+BWEM2TXiHKsUQ9TADiRH7DuK0= +github.com/prometheus/procfs v0.17.0/go.mod h1:oPQLaDAMRbA+u8H5Pbfq+dl3VDAvHxMUOVhe0wYB2zw= github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/shirou/gopsutil/v4 v4.25.3 h1:SeA68lsu8gLggyMbmCn8cmp97V1TI9ld9sVzAUcKcKE= -github.com/shirou/gopsutil/v4 v4.25.3/go.mod h1:xbuxyoZj+UsgnZrENu3lQivsngRR5BdjbJwf2fv4szA= +github.com/shirou/gopsutil/v4 v4.25.6 h1:kLysI2JsKorfaFPcYmcJqbzROzsBWEOAtw6A7dIfqXs= +github.com/shirou/gopsutil/v4 v4.25.6/go.mod h1:PfybzyydfZcN+JMMjkF6Zb8Mq1A/VcogFFg7hj50W9c= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -206,56 +211,60 @@ github.com/tklauser/go-sysconf v0.3.15 h1:VE89k0criAymJ/Os65CSn1IXaol+1wrsFHEB8O github.com/tklauser/go-sysconf v0.3.15/go.mod h1:Dmjwr6tYFIseJw7a3dRLJfsHAMXZ3nEnL/aZY+0IuI4= github.com/tklauser/numcpus v0.10.0 h1:18njr6LDBk1zuna922MgdjQuJFjrdppsZG60sHGfjso= github.com/tklauser/numcpus v0.10.0/go.mod h1:BiTKazU708GQTYF4mB+cmlpT2Is1gLk7XVuEeem8LsQ= -github.com/urfave/cli/v2 v2.27.6 h1:VdRdS98FNhKZ8/Az8B7MTyGQmpIr36O1EHybx/LaZ4g= -github.com/urfave/cli/v2 v2.27.6/go.mod h1:3Sevf16NykTbInEnD0yKkjDAeZDS0A6bzhBH5hrMvTQ= +github.com/urfave/cli/v2 v2.27.7 h1:bH59vdhbjLv3LAvIu6gd0usJHgoTTPhCFib8qqOwXYU= +github.com/urfave/cli/v2 v2.27.7/go.mod h1:CyNAG/xg+iAOg0N4MPGZqVmv2rCoP267496AOXUZjA4= github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4= github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -go.mongodb.org/mongo-driver v1.17.3 h1:TQyXhnsWfWtgAhMtOgtYHMTkZIfBTpMTsMnd9ZBeHxQ= -go.mongodb.org/mongo-driver v1.17.3/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= +go.mongodb.org/mongo-driver v1.17.4 h1:jUorfmVzljjr0FLzYQsGP8cgN/qzzxlY9Vh0C9KFXVw= +go.mongodb.org/mongo-driver v1.17.4/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 h1:sbiXRNDSWJOTobXh5HyQKjq6wUC5tNybqjIqDpAY4CU= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0/go.mod h1:69uWxva0WgAA/4bu2Yy70SLDBwZXuQ6PbBpbsa5iZrQ= -go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= -go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 h1:1fTNlAIJZGWLP5FVu0fikVry1IsiUnXjf7QFvoNN3Xw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0/go.mod h1:zjPK58DtkqQFn+YUMbx0M2XV3QgKU0gS9LeGohREyK4= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0 h1:xJ2qHD0C1BeYVTLLR9sX12+Qb95kfeD/byKj6Ky1pXg= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0/go.mod h1:u5BF1xyjstDowA1R5QAO9JHzqK+ublenEW/dyqTjBVk= -go.opentelemetry.io/otel/exporters/prometheus v0.57.0 h1:AHh/lAP1BHrY5gBwk8ncc25FXWm/gmmY3BX258z5nuk= -go.opentelemetry.io/otel/exporters/prometheus v0.57.0/go.mod h1:QpFWz1QxqevfjwzYdbMb4Y1NnlJvqSGwyuU0B4iuc9c= -go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= -go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= -go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= -go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= -go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= -go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= -go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= -go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4= -go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0 h1:Hf9xI/XLML9ElpiHVDNwvqI0hIFlzV8dgIr35kV1kRU= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0/go.mod h1:NfchwuyNoMcZ5MLHwPrODwUF1HWCXWrL31s8gSAdIKY= +go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= +go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 h1:Ahq7pZmv87yiyn3jeFz/LekZmPLLdKejuO3NcK9MssM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0/go.mod h1:MJTqhM0im3mRLw1i8uGHnCvUEeS7VwRyxlLC78PA18M= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.37.0 h1:bDMKF3RUSxshZ5OjOTi8rsHGaPKsAt76FaqgvIUySLc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.37.0/go.mod h1:dDT67G/IkA46Mr2l9Uj7HsQVwsjASyV9SjGofsiUZDA= +go.opentelemetry.io/otel/exporters/prometheus v0.59.0 h1:HHf+wKS6o5++XZhS98wvILrLVgHxjA/AMjqHKes+uzo= +go.opentelemetry.io/otel/exporters/prometheus v0.59.0/go.mod h1:R8GpRXTZrqvXHDEGVH5bF6+JqAZcK8PjJcZ5nGhEWiE= +go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= +go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= +go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= +go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= +go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= +go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= +go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= +go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= +go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= +go.opentelemetry.io/proto/otlp v1.7.0/go.mod h1:fSKjH6YJ7HDlwzltzyMj036AJ3ejJLCgCSHGj4efDDo= +go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= +go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +go.yaml.in/yaml/v3 v3.0.3 h1:bXOww4E/J3f66rav3pX3m8w6jDE4knZjGOw8b5Y6iNE= +go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= -golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= +golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= +golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= -golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= +golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= +golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610= -golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= +golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -264,14 +273,14 @@ golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= -golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/term v0.31.0 h1:erwDkOK1Msy6offm1mOgvspSkslFnIGsFnxOKoufg3o= -golang.org/x/term v0.31.0/go.mod h1:R4BeIy7D95HzImkxGkTW1UQTtP54tio2RyHz7PwK0aw= +golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= +golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= +golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= -golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= +golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= +golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -282,12 +291,12 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a h1:nwKuGPlUAt+aR+pcrkfFRrTU1BVrSmYyYMxYbUIVHr0= -google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a/go.mod h1:3kWAYMk1I75K4vykHtKt2ycnOgpA6974V7bREqbsenU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 h1:h6p3mQqrmT1XkHVTfzLdNz1u7IhINeZkz67/xTbOuWs= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= -google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= +google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= +google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -300,5 +309,5 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= -sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= -sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= +sigs.k8s.io/yaml v1.5.0 h1:M10b2U7aEUY6hRtU870n2VTPgR5RZiL/I6Lcc2F4NUQ= +sigs.k8s.io/yaml v1.5.0/go.mod h1:wZs27Rbxoai4C0f8/9urLZtZtF3avA3gKvGyPdDqTO4= diff --git a/proto/Makefile b/proto/Makefile index 360795c..a7d16de 100644 --- a/proto/Makefile +++ b/proto/Makefile @@ -1,5 +1,5 @@ MAKEFLAGS += --no-print-directory -BUF_VERSION := 1.53.0 +BUF_VERSION := 1.55.1 _buf: docker run --rm \ From 76c493389b5dcc71f4ac6786dfe2012ee7f158ed Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Thu, 24 Jul 2025 15:28:16 +0200 Subject: [PATCH 28/39] Fix manifest --- deploy/masterdata-api.yaml | 3 --- 1 file changed, 3 deletions(-) diff --git a/deploy/masterdata-api.yaml b/deploy/masterdata-api.yaml index 7fe50b7..2a23d9e 100644 --- a/deploy/masterdata-api.yaml +++ b/deploy/masterdata-api.yaml @@ -171,11 +171,8 @@ spec: containers: - name: masterdata-db image: postgres:17-alpine -<<<<<<< HEAD command: - postgres -======= ->>>>>>> 2b74fceb3ead9881fdb248ca8abf4d6fb854eecc env: - name: POSTGRES_PASSWORD value: password From 3f62a2a432e9bbf0ecdde3d9e4138a947dc193b9 Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Fri, 5 Sep 2025 07:56:29 +0200 Subject: [PATCH 29/39] Fix tests --- pkg/service/project_test.go | 4 ++-- pkg/service/projectmember_test.go | 4 ++-- pkg/service/tenant_test.go | 19 ++++++++++++++----- pkg/service/tenantmember_test.go | 4 ++-- 4 files changed, 20 insertions(+), 11 deletions(-) diff --git a/pkg/service/project_test.go b/pkg/service/project_test.go index 2f8ed44..790fd5f 100644 --- a/pkg/service/project_test.go +++ b/pkg/service/project_test.go @@ -88,7 +88,7 @@ func TestCreateProjectWithQuotaCheck(t *testing.T) { var projects []*v1.Project // see: https://github.com/stretchr/testify/blob/master/mock/mock.go#L149-L162 tenantStorageMock.On("Get", ctx, p1.GetTenantId()).Return(t1, nil) - storageMock.On("Find", ctx, mock.AnythingOfType("*v1.Paging"), []any{filter}).Return(projects, nil, nil) + storageMock.On("Find", ctx, mock.Anything, []any{filter}).Return(projects, nil, nil) storageMock.On("Create", ctx, p1).Return(nil) resp, err := ts.Create(ctx, connect.NewRequest(tcr)) require.NoError(t, err) @@ -443,7 +443,7 @@ func TestFindProject(t *testing.T) { return 1 } }) - if diff := cmp.Diff(tt.want, got, cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { + if diff := cmp.Diff(tt.want, got.Msg, cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { t.Errorf("(-want +got):\n%s", diff) } }) diff --git a/pkg/service/projectmember_test.go b/pkg/service/projectmember_test.go index f1b86e5..5d89579 100644 --- a/pkg/service/projectmember_test.go +++ b/pkg/service/projectmember_test.go @@ -155,7 +155,7 @@ func TestFindProjectMemberByProject(t *testing.T) { f2 := make(map[string]any) f2["projectmember ->> 'project_id'"] = p1 - storageMock.On("Find", ctx, mock.AnythingOfType("*v1.Paging"), []any{f2}).Return(t6s, nil, nil) + storageMock.On("Find", ctx, mock.Anything, []any{f2}).Return(t6s, nil, nil) resp, err := ts.Find(ctx, connect.NewRequest(tfr)) require.NoError(t, err) assert.NotNil(t, resp) @@ -181,7 +181,7 @@ func TestFindProjectMemberByTenant(t *testing.T) { f2 := make(map[string]any) f2["projectmember ->> 'tenant_id'"] = pointer.Pointer("t1") - storageMock.On("Find", ctx, mock.AnythingOfType("*v1.Paging"), []any{f2}).Return(t6s, nil, nil) + storageMock.On("Find", ctx, mock.Anything, []any{f2}).Return(t6s, nil, nil) resp, err := ts.Find(ctx, connect.NewRequest(tfr)) require.NoError(t, err) assert.NotNil(t, resp) diff --git a/pkg/service/tenant_test.go b/pkg/service/tenant_test.go index 2095b98..f7fde5f 100644 --- a/pkg/service/tenant_test.go +++ b/pkg/service/tenant_test.go @@ -399,7 +399,7 @@ func TestFindTenant(t *testing.T) { return 1 } }) - if diff := cmp.Diff(tt.want, got, cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { + if diff := cmp.Diff(tt.want, got.Msg, cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { t.Errorf("(-want +got):\n%s", diff) } }) @@ -1051,12 +1051,10 @@ func Test_tenantService_ListTenantMembers(t *testing.T) { Meta: &v1.Meta{ Kind: "Tenant", Apiversion: "v1", - Id: "github", + Id: "azure", }, }, - TenantAnnotations: map[string]string{"tenant-role": "owner"}, ProjectIds: []string{ - "1", "2", }, }, @@ -1065,10 +1063,12 @@ func Test_tenantService_ListTenantMembers(t *testing.T) { Meta: &v1.Meta{ Kind: "Tenant", Apiversion: "v1", - Id: "azure", + Id: "github", }, }, + TenantAnnotations: map[string]string{"tenant-role": "owner"}, ProjectIds: []string{ + "1", "2", }, }, @@ -1093,6 +1093,15 @@ func Test_tenantService_ListTenantMembers(t *testing.T) { t.Errorf("(-want +got):\n%s", diff) return } + + slices.SortFunc(got.Msg.Tenants, func(i, j *v1.TenantWithMembershipAnnotations) int { + if i.Tenant.Meta.Id < j.Tenant.Meta.Id { + return -1 + } else { + return 1 + } + }) + if diff := cmp.Diff(tt.want, got.Msg, cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { t.Errorf("(-want +got):\n%s", diff) } diff --git a/pkg/service/tenantmember_test.go b/pkg/service/tenantmember_test.go index e4e6c49..d3db412 100644 --- a/pkg/service/tenantmember_test.go +++ b/pkg/service/tenantmember_test.go @@ -144,7 +144,7 @@ func TestFindTenantMemberByTenant(t *testing.T) { f2 := make(map[string]any) f2["tenantmember ->> 'tenant_id'"] = pointer.Pointer("p1") - storageMock.On("Find", ctx, mock.AnythingOfType("*v1.Paging"), []any{f2}).Return(t6s, nil, nil) + storageMock.On("Find", ctx, mock.Anything, []any{f2}).Return(t6s, nil, nil) resp, err := ts.Find(ctx, connect.NewRequest(tfr)) require.NoError(t, err) assert.NotNil(t, resp) @@ -168,7 +168,7 @@ func TestFindTenantMemberByMember(t *testing.T) { f2 := make(map[string]any) f2["tenantmember ->> 'member_id'"] = pointer.Pointer("t1") - storageMock.On("Find", ctx, mock.AnythingOfType("*v1.Paging"), []any{f2}).Return(t6s, nil, nil) + storageMock.On("Find", ctx, mock.Anything, []any{f2}).Return(t6s, nil, nil) resp, err := ts.Find(ctx, connect.NewRequest(tfr)) require.NoError(t, err) assert.NotNil(t, resp) From da8159e5058b13b2cd6fe26ac37eb7e28941da7e Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Sat, 6 Sep 2025 08:53:49 +0200 Subject: [PATCH 30/39] Update deps --- go.mod | 9 ++++----- go.sum | 47 ++++++++--------------------------------------- 2 files changed, 12 insertions(+), 44 deletions(-) diff --git a/go.mod b/go.mod index 7c7fd6e..6e5dd52 100644 --- a/go.mod +++ b/go.mod @@ -17,7 +17,7 @@ require ( github.com/lopezator/migrator v0.3.1 github.com/metal-stack/metal-lib v0.23.4 github.com/metal-stack/v v1.0.3 - github.com/prometheus/client_golang v1.23.0 + github.com/prometheus/client_golang v1.23.2 github.com/stretchr/testify v1.11.1 github.com/testcontainers/testcontainers-go v0.38.0 github.com/testcontainers/testcontainers-go/modules/postgres v0.38.0 @@ -46,7 +46,7 @@ require ( github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/distribution/reference v0.6.0 // indirect - github.com/docker/docker v28.3.3+incompatible // indirect + github.com/docker/docker v28.4.0+incompatible // indirect github.com/docker/go-connections v0.6.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/ebitengine/purego v0.8.4 // indirect @@ -56,8 +56,7 @@ require ( github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-openapi/errors v0.22.2 // indirect github.com/go-openapi/strfmt v0.23.0 // indirect - github.com/gogo/protobuf v1.3.2 // indirect - github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc // indirect + github.com/grafana/regexp v0.0.0-20250905093917-f7b3be9d1853 // indirect github.com/klauspost/compress v1.18.0 // indirect github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect @@ -82,7 +81,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.65.0 // indirect + github.com/prometheus/common v0.66.1 // indirect github.com/prometheus/otlptranslator v0.0.2 // indirect github.com/prometheus/procfs v0.17.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect diff --git a/go.sum b/go.sum index b1158f1..5addbc5 100644 --- a/go.sum +++ b/go.sum @@ -48,8 +48,8 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/docker v28.3.3+incompatible h1:Dypm25kh4rmk49v1eiVbsAtpAsYURjYkaKubwuBdxEI= -github.com/docker/docker v28.3.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v28.4.0+incompatible h1:KVC7bz5zJY/4AZe/78BIvCnPsLaC9T/zh72xnlrTTOk= +github.com/docker/docker v28.4.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.6.0 h1:LlMG9azAe1TqfR7sO+NJttz1gy6KO7VJBh+pMmjSD94= github.com/docker/go-connections v0.6.0/go.mod h1:AahvXYshr6JgfUJGdDCs2b5EZG/vmaMAntpSFH5BFKE= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= @@ -72,8 +72,6 @@ github.com/go-openapi/strfmt v0.23.0 h1:nlUS6BCqcnAk0pyhi9Y+kdDVZdZMHfEKQiS4HaMg github.com/go-openapi/strfmt v0.23.0/go.mod h1:NrtIpfKtWIygRkKVsxh7XQMDQW5HKQl6S5ik2elW+K4= github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y= github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= @@ -81,8 +79,8 @@ github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc h1:GN2Lv3MGO7AS6PrRoT6yV5+wkrOpcszoIsO4+4ds248= -github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc/go.mod h1:+JKpmjMGhpgPL+rXZ5nsZieVzvarn86asRlBg4uNGnk= +github.com/grafana/regexp v0.0.0-20250905093917-f7b3be9d1853 h1:cLN4IBkmkYZNnk7EAJ0BHIethd+J6LqxFNw5mSiI2bM= +github.com/grafana/regexp v0.0.0-20250905093917-f7b3be9d1853/go.mod h1:+JKpmjMGhpgPL+rXZ5nsZieVzvarn86asRlBg4uNGnk= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8= @@ -109,8 +107,6 @@ github.com/jmoiron/sqlx v1.4.0 h1:1PLqN7S1UYp5t4SrVVnt4nUVNemrDAtxlulVe+Qgm3o= github.com/jmoiron/sqlx v1.4.0/go.mod h1:ZrZ7UsYB/weZdl2Bxg6jCRO9c3YHl8r3ahlKmRT4JLY= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/klauspost/connect-compress/v2 v2.0.0 h1:L7TVsLa6Oo9Hkkb6r3DwSrhBbcWlXjneqBj7fCRXviU= @@ -181,12 +177,12 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc= -github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE= +github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= +github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= -github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= +github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= +github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= github.com/prometheus/otlptranslator v0.0.2 h1:+1CdeLVrRQ6Psmhnobldo0kTp96Rj80DRXRd5OSnMEQ= github.com/prometheus/otlptranslator v0.0.2/go.mod h1:P8AwMgdD7XEr6QRUJ2QWLpiAZTgTE2UYgjlu3svompI= github.com/prometheus/procfs v0.17.0 h1:FuLQ+05u4ZI+SS/w9+BWEM2TXiHKsUQ9TADiRH7DuK0= @@ -219,8 +215,6 @@ github.com/urfave/cli/v2 v2.27.7 h1:bH59vdhbjLv3LAvIu6gd0usJHgoTTPhCFib8qqOwXYU= github.com/urfave/cli/v2 v2.27.7/go.mod h1:CyNAG/xg+iAOg0N4MPGZqVmv2rCoP267496AOXUZjA4= github.com/xrash/smetrics v0.0.0-20250705151800-55b8f293f342 h1:FnBeRrxr7OU4VvAzt5X7s6266i6cSVkkFPS0TuXWbIg= github.com/xrash/smetrics v0.0.0-20250705151800-55b8f293f342/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.mongodb.org/mongo-driver v1.17.4 h1:jUorfmVzljjr0FLzYQsGP8cgN/qzzxlY9Vh0C9KFXVw= @@ -253,28 +247,13 @@ go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -283,20 +262,10 @@ golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4= golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= From c95105e7049ce43700ea665771e9d21dd5df799b Mon Sep 17 00:00:00 2001 From: Gerrit Date: Mon, 6 Oct 2025 15:08:42 +0200 Subject: [PATCH 31/39] Merge main into connect (#134) * Introduce namespaces for memberships. (#132) * Merge main into connect branch. --- api/v1/project_member.pb.go | 35 +- api/v1/tenant.pb.go | 39 ++- api/v1/tenant_member.pb.go | 29 +- client/main.go | 2 +- pkg/client/client.go | 49 ++- pkg/client/client_test.go | 219 ++++++++++++ pkg/client/conn.go | 9 +- pkg/datastore/query_runner.go | 2 +- pkg/service/projectmember.go | 35 +- pkg/service/projectmember_test.go | 543 +++++++++++++++++++++++++----- pkg/service/tenant.go | 30 +- pkg/service/tenant_test.go | 265 ++++++++++++--- pkg/service/tenantmember.go | 46 ++- pkg/service/tenantmember_test.go | 514 ++++++++++++++++++++++++---- proto/api/v1/project_member.proto | 3 + proto/api/v1/tenant.proto | 3 + proto/api/v1/tenant_member.proto | 3 + 17 files changed, 1577 insertions(+), 249 deletions(-) create mode 100644 pkg/client/client_test.go diff --git a/api/v1/project_member.pb.go b/api/v1/project_member.pb.go index 20fad30..c7cdae1 100644 --- a/api/v1/project_member.pb.go +++ b/api/v1/project_member.pb.go @@ -23,10 +23,12 @@ const ( // ProjectMember is the database model type ProjectMember struct { - state protoimpl.MessageState `protogen:"open.v1"` - Meta *Meta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` - ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` - TenantId string `protobuf:"bytes,4,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Meta *Meta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` + ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + TenantId string `protobuf:"bytes,4,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` + // Namespace introduces the possibility to associate memberships for different applications that use the masterdata-api as a backend. + Namespace string `protobuf:"bytes,5,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -82,6 +84,13 @@ func (x *ProjectMember) GetTenantId() string { return "" } +func (x *ProjectMember) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} + type ProjectMemberCreateRequest struct { state protoimpl.MessageState `protogen:"open.v1"` ProjectMember *ProjectMember `protobuf:"bytes,1,opt,name=project_member,json=projectMember,proto3" json:"project_member,omitempty"` @@ -263,6 +272,7 @@ type ProjectMemberFindRequest struct { ProjectId *string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3,oneof" json:"project_id,omitempty"` TenantId *string `protobuf:"bytes,2,opt,name=tenant_id,json=tenantId,proto3,oneof" json:"tenant_id,omitempty"` Annotations map[string]string `protobuf:"bytes,6,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + Namespace string `protobuf:"bytes,7,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -318,6 +328,13 @@ func (x *ProjectMemberFindRequest) GetAnnotations() map[string]string { return nil } +func (x *ProjectMemberFindRequest) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} + type ProjectMemberResponse struct { state protoimpl.MessageState `protogen:"open.v1"` ProjectMember *ProjectMember `protobuf:"bytes,1,opt,name=project_member,json=projectMember,proto3" json:"project_member,omitempty"` @@ -410,12 +427,13 @@ var File_api_v1_project_member_proto protoreflect.FileDescriptor const file_api_v1_project_member_proto_rawDesc = "" + "\n" + - "\x1bapi/v1/project_member.proto\x12\x06api.v1\x1a\x11api/v1/meta.proto\"m\n" + + "\x1bapi/v1/project_member.proto\x12\x06api.v1\x1a\x11api/v1/meta.proto\"\x8b\x01\n" + "\rProjectMember\x12 \n" + "\x04meta\x18\x01 \x01(\v2\f.api.v1.MetaR\x04meta\x12\x1d\n" + "\n" + "project_id\x18\x02 \x01(\tR\tprojectId\x12\x1b\n" + - "\ttenant_id\x18\x04 \x01(\tR\btenantId\"Z\n" + + "\ttenant_id\x18\x04 \x01(\tR\btenantId\x12\x1c\n" + + "\tnamespace\x18\x05 \x01(\tR\tnamespace\"Z\n" + "\x1aProjectMemberCreateRequest\x12<\n" + "\x0eproject_member\x18\x01 \x01(\v2\x15.api.v1.ProjectMemberR\rprojectMember\"Z\n" + "\x1aProjectMemberUpdateRequest\x12<\n" + @@ -423,12 +441,13 @@ const file_api_v1_project_member_proto_rawDesc = "" + "\x1aProjectMemberDeleteRequest\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\")\n" + "\x17ProjectMemberGetRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\"\x92\x02\n" + + "\x02id\x18\x01 \x01(\tR\x02id\"\xb0\x02\n" + "\x18ProjectMemberFindRequest\x12\"\n" + "\n" + "project_id\x18\x01 \x01(\tH\x00R\tprojectId\x88\x01\x01\x12 \n" + "\ttenant_id\x18\x02 \x01(\tH\x01R\btenantId\x88\x01\x01\x12S\n" + - "\vannotations\x18\x06 \x03(\v21.api.v1.ProjectMemberFindRequest.AnnotationsEntryR\vannotations\x1a>\n" + + "\vannotations\x18\x06 \x03(\v21.api.v1.ProjectMemberFindRequest.AnnotationsEntryR\vannotations\x12\x1c\n" + + "\tnamespace\x18\a \x01(\tR\tnamespace\x1a>\n" + "\x10AnnotationsEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\r\n" + diff --git a/api/v1/tenant.pb.go b/api/v1/tenant.pb.go index dfdf909..d0289ed 100644 --- a/api/v1/tenant.pb.go +++ b/api/v1/tenant.pb.go @@ -27,6 +27,7 @@ type FindParticipatingProjectsRequest struct { state protoimpl.MessageState `protogen:"open.v1"` TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` IncludeInherited *bool `protobuf:"varint,2,opt,name=include_inherited,json=includeInherited,proto3,oneof" json:"include_inherited,omitempty"` + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -75,10 +76,18 @@ func (x *FindParticipatingProjectsRequest) GetIncludeInherited() bool { return false } +func (x *FindParticipatingProjectsRequest) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} + type FindParticipatingTenantsRequest struct { state protoimpl.MessageState `protogen:"open.v1"` TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` IncludeInherited *bool `protobuf:"varint,2,opt,name=include_inherited,json=includeInherited,proto3,oneof" json:"include_inherited,omitempty"` + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -127,10 +136,18 @@ func (x *FindParticipatingTenantsRequest) GetIncludeInherited() bool { return false } +func (x *FindParticipatingTenantsRequest) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} + type ListTenantMembersRequest struct { state protoimpl.MessageState `protogen:"open.v1"` TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` IncludeInherited *bool `protobuf:"varint,2,opt,name=include_inherited,json=includeInherited,proto3,oneof" json:"include_inherited,omitempty"` + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -179,6 +196,13 @@ func (x *ListTenantMembersRequest) GetIncludeInherited() bool { return false } +func (x *ListTenantMembersRequest) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} + type ListTenantMembersResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Tenants []*TenantWithMembershipAnnotations `protobuf:"bytes,1,rep,name=tenants,proto3" json:"tenants,omitempty"` @@ -951,18 +975,21 @@ var File_api_v1_tenant_proto protoreflect.FileDescriptor const file_api_v1_tenant_proto_rawDesc = "" + "\n" + - "\x13api/v1/tenant.proto\x12\x06api.v1\x1a\x13api/v1/common.proto\x1a\x10api/v1/iam.proto\x1a\x11api/v1/meta.proto\x1a\x14api/v1/project.proto\x1a\x12api/v1/quota.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\"\x87\x01\n" + + "\x13api/v1/tenant.proto\x12\x06api.v1\x1a\x13api/v1/common.proto\x1a\x10api/v1/iam.proto\x1a\x11api/v1/meta.proto\x1a\x14api/v1/project.proto\x1a\x12api/v1/quota.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\"\xa5\x01\n" + " FindParticipatingProjectsRequest\x12\x1b\n" + "\ttenant_id\x18\x01 \x01(\tR\btenantId\x120\n" + - "\x11include_inherited\x18\x02 \x01(\bH\x00R\x10includeInherited\x88\x01\x01B\x14\n" + - "\x12_include_inherited\"\x86\x01\n" + + "\x11include_inherited\x18\x02 \x01(\bH\x00R\x10includeInherited\x88\x01\x01\x12\x1c\n" + + "\tnamespace\x18\x03 \x01(\tR\tnamespaceB\x14\n" + + "\x12_include_inherited\"\xa4\x01\n" + "\x1fFindParticipatingTenantsRequest\x12\x1b\n" + "\ttenant_id\x18\x01 \x01(\tR\btenantId\x120\n" + - "\x11include_inherited\x18\x02 \x01(\bH\x00R\x10includeInherited\x88\x01\x01B\x14\n" + - "\x12_include_inherited\"\x7f\n" + + "\x11include_inherited\x18\x02 \x01(\bH\x00R\x10includeInherited\x88\x01\x01\x12\x1c\n" + + "\tnamespace\x18\x03 \x01(\tR\tnamespaceB\x14\n" + + "\x12_include_inherited\"\x9d\x01\n" + "\x18ListTenantMembersRequest\x12\x1b\n" + "\ttenant_id\x18\x01 \x01(\tR\btenantId\x120\n" + - "\x11include_inherited\x18\x02 \x01(\bH\x00R\x10includeInherited\x88\x01\x01B\x14\n" + + "\x11include_inherited\x18\x02 \x01(\bH\x00R\x10includeInherited\x88\x01\x01\x12\x1c\n" + + "\tnamespace\x18\x03 \x01(\tR\tnamespaceB\x14\n" + "\x12_include_inherited\"^\n" + "\x19ListTenantMembersResponse\x12A\n" + "\atenants\x18\x01 \x03(\v2'.api.v1.TenantWithMembershipAnnotationsR\atenants\"i\n" + diff --git a/api/v1/tenant_member.pb.go b/api/v1/tenant_member.pb.go index dacfa36..3f7e43c 100644 --- a/api/v1/tenant_member.pb.go +++ b/api/v1/tenant_member.pb.go @@ -28,7 +28,9 @@ type TenantMember struct { // TenantId is the id of the parent tenant TenantId string `protobuf:"bytes,2,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` // MemberId is the id of the member tenant - MemberId string `protobuf:"bytes,3,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty"` + MemberId string `protobuf:"bytes,3,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty"` + // Namespace introduces the possibility to associate memberships for different applications that use the masterdata-api as a backend. + Namespace string `protobuf:"bytes,4,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -84,6 +86,13 @@ func (x *TenantMember) GetMemberId() string { return "" } +func (x *TenantMember) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} + type TenantMemberCreateRequest struct { state protoimpl.MessageState `protogen:"open.v1"` TenantMember *TenantMember `protobuf:"bytes,1,opt,name=tenant_member,json=tenantMember,proto3" json:"tenant_member,omitempty"` @@ -265,6 +274,7 @@ type TenantMemberFindRequest struct { TenantId *string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3,oneof" json:"tenant_id,omitempty"` MemberId *string `protobuf:"bytes,2,opt,name=member_id,json=memberId,proto3,oneof" json:"member_id,omitempty"` Annotations map[string]string `protobuf:"bytes,6,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + Namespace string `protobuf:"bytes,7,opt,name=namespace,proto3" json:"namespace,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -320,6 +330,13 @@ func (x *TenantMemberFindRequest) GetAnnotations() map[string]string { return nil } +func (x *TenantMemberFindRequest) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} + type TenantMemberResponse struct { state protoimpl.MessageState `protogen:"open.v1"` TenantMember *TenantMember `protobuf:"bytes,1,opt,name=tenant_member,json=tenantMember,proto3" json:"tenant_member,omitempty"` @@ -412,11 +429,12 @@ var File_api_v1_tenant_member_proto protoreflect.FileDescriptor const file_api_v1_tenant_member_proto_rawDesc = "" + "\n" + - "\x1aapi/v1/tenant_member.proto\x12\x06api.v1\x1a\x11api/v1/meta.proto\"j\n" + + "\x1aapi/v1/tenant_member.proto\x12\x06api.v1\x1a\x11api/v1/meta.proto\"\x88\x01\n" + "\fTenantMember\x12 \n" + "\x04meta\x18\x01 \x01(\v2\f.api.v1.MetaR\x04meta\x12\x1b\n" + "\ttenant_id\x18\x02 \x01(\tR\btenantId\x12\x1b\n" + - "\tmember_id\x18\x03 \x01(\tR\bmemberId\"V\n" + + "\tmember_id\x18\x03 \x01(\tR\bmemberId\x12\x1c\n" + + "\tnamespace\x18\x04 \x01(\tR\tnamespace\"V\n" + "\x19TenantMemberCreateRequest\x129\n" + "\rtenant_member\x18\x01 \x01(\v2\x14.api.v1.TenantMemberR\ftenantMember\"V\n" + "\x19TenantMemberUpdateRequest\x129\n" + @@ -424,11 +442,12 @@ const file_api_v1_tenant_member_proto_rawDesc = "" + "\x19TenantMemberDeleteRequest\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\"(\n" + "\x16TenantMemberGetRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\"\x8d\x02\n" + + "\x02id\x18\x01 \x01(\tR\x02id\"\xab\x02\n" + "\x17TenantMemberFindRequest\x12 \n" + "\ttenant_id\x18\x01 \x01(\tH\x00R\btenantId\x88\x01\x01\x12 \n" + "\tmember_id\x18\x02 \x01(\tH\x01R\bmemberId\x88\x01\x01\x12R\n" + - "\vannotations\x18\x06 \x03(\v20.api.v1.TenantMemberFindRequest.AnnotationsEntryR\vannotations\x1a>\n" + + "\vannotations\x18\x06 \x03(\v20.api.v1.TenantMemberFindRequest.AnnotationsEntryR\vannotations\x12\x1c\n" + + "\tnamespace\x18\a \x01(\tR\tnamespace\x1a>\n" + "\x10AnnotationsEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\f\n" + diff --git a/client/main.go b/client/main.go index 04ec43b..5e73c8e 100644 --- a/client/main.go +++ b/client/main.go @@ -23,7 +23,7 @@ func main() { logger := slog.New(jsonHandler) logger.Info("Starting Client") - c := client.New(client.DialConfig{ + c := client.New(&client.Config{ BaseURL: "http://localhost:9090", Debug: true, UserAgent: "sample-client", diff --git a/pkg/client/client.go b/pkg/client/client.go index f43869b..bb79d24 100644 --- a/pkg/client/client.go +++ b/pkg/client/client.go @@ -1,7 +1,11 @@ package client import ( + "context" + + "connectrpc.com/connect" compress "github.com/klauspost/connect-compress/v2" + v1 "github.com/metal-stack/masterdata-api/api/v1" "github.com/metal-stack/masterdata-api/api/v1/apiv1connect" ) @@ -16,12 +20,12 @@ type ( } client struct { - config DialConfig + config *Config } ) // GRPCClient is a Client implementation with grpc transport. -func New(config DialConfig) Client { +func New(config *Config) Client { return &client{ config: config, } @@ -42,6 +46,7 @@ func (c client) ProjectMember() apiv1connect.ProjectMemberServiceClient { c.config.HttpClient(), c.config.BaseURL, compress.WithAll(compress.LevelBalanced), + connect.WithInterceptors(NamespaceInterceptor(c.config.Namespace)), ) } @@ -51,6 +56,7 @@ func (c client) Tenant() apiv1connect.TenantServiceClient { c.config.HttpClient(), c.config.BaseURL, compress.WithAll(compress.LevelBalanced), + connect.WithInterceptors(NamespaceInterceptor(c.config.Namespace)), ) } @@ -60,6 +66,7 @@ func (c client) TenantMember() apiv1connect.TenantMemberServiceClient { c.config.HttpClient(), c.config.BaseURL, compress.WithAll(compress.LevelBalanced), + connect.WithInterceptors(NamespaceInterceptor(c.config.Namespace)), ) } @@ -70,3 +77,41 @@ func (c client) Version() apiv1connect.VersionServiceClient { compress.WithAll(compress.LevelBalanced), ) } + +func NamespaceInterceptor(namespace string) connect.UnaryInterceptorFunc { + return func(uf connect.UnaryFunc) connect.UnaryFunc { + return func(ctx context.Context, ar connect.AnyRequest) (connect.AnyResponse, error) { + switch r := ar.Any().(type) { + case *v1.TenantMemberCreateRequest: + if r.TenantMember.Namespace == "" { + r.TenantMember.Namespace = namespace + } + case *v1.ProjectMemberCreateRequest: + if r.ProjectMember.Namespace == "" { + r.ProjectMember.Namespace = namespace + } + case *v1.TenantMemberFindRequest: + if r.Namespace == "" { + r.Namespace = namespace + } + case *v1.ProjectMemberFindRequest: + if r.Namespace == "" { + r.Namespace = namespace + } + case *v1.FindParticipatingProjectsRequest: + if r.Namespace == "" { + r.Namespace = namespace + } + case *v1.FindParticipatingTenantsRequest: + if r.Namespace == "" { + r.Namespace = namespace + } + case *v1.ListTenantMembersRequest: + if r.Namespace == "" { + r.Namespace = namespace + } + } + return uf(ctx, ar) + } + } +} diff --git a/pkg/client/client_test.go b/pkg/client/client_test.go new file mode 100644 index 0000000..315a7a5 --- /dev/null +++ b/pkg/client/client_test.go @@ -0,0 +1,219 @@ +package client + +import ( + "context" + "fmt" + "net" + "net/http" + "testing" + "time" + + "connectrpc.com/connect" + v1 "github.com/metal-stack/masterdata-api/api/v1" + "github.com/metal-stack/masterdata-api/api/v1/apiv1connect" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "golang.org/x/net/http2" + "golang.org/x/net/http2/h2c" +) + +func Test_Client(t *testing.T) { + const ( + namespace = "a" + ) + + var ( + // log = slog.Default() + projectMemberService = &projectMemberService{} + tenantMemberService = &tenantMemberService{} + + interceptors = connect.WithInterceptors() + ) + + mux := http.NewServeMux() + mux.Handle(apiv1connect.NewProjectMemberServiceHandler(projectMemberService, interceptors)) + mux.Handle(apiv1connect.NewTenantMemberServiceHandler(tenantMemberService, interceptors)) + + lis, err := net.Listen("tcp", "") + require.NoError(t, err) + + _, portString, err := net.SplitHostPort(lis.Addr().String()) + require.NoError(t, err) + + server := http.Server{ + Addr: lis.Addr().String(), + // For gRPC clients, it's convenient to support HTTP/2 without TLS. You can + // avoid x/net/http2 by using http.ListenAndServeTLS. + Handler: h2c.NewHandler(mux, &http2.Server{}), + ReadHeaderTimeout: 1 * time.Minute, + } + + go func() { + _ = server.Serve(lis) + }() + defer func() { + err := server.Close() + require.NoError(t, err) + }() + + client := New(&Config{ + BaseURL: fmt.Sprintf("http://localhost:%s", portString), + Debug: true, + UserAgent: "sample-client", + Namespace: namespace, + }) + require.NoError(t, err) + + t.Run("check namespace interceptor sets missing namespace", func(t *testing.T) { + t.Run("project member", func(t *testing.T) { + projectMemberService.create = func(_ context.Context, pmcr *connect.Request[v1.ProjectMemberCreateRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { + assert.Equal(t, "project-a", pmcr.Msg.ProjectMember.ProjectId) + assert.Equal(t, "tenant-a", pmcr.Msg.ProjectMember.TenantId) + assert.Equal(t, namespace, pmcr.Msg.ProjectMember.Namespace) + return connect.NewResponse(&v1.ProjectMemberResponse{}), nil + } + projectMemberService.find = func(_ context.Context, pmfr *connect.Request[v1.ProjectMemberFindRequest]) (*connect.Response[v1.ProjectMemberListResponse], error) { + assert.Equal(t, namespace, pmfr.Msg.Namespace) + return connect.NewResponse(&v1.ProjectMemberListResponse{}), nil + + } + + _, err = client.ProjectMember().Create(t.Context(), connect.NewRequest(&v1.ProjectMemberCreateRequest{ + ProjectMember: &v1.ProjectMember{ + ProjectId: "project-a", + TenantId: "tenant-a", + }, + })) + require.NoError(t, err) + + _, err = client.ProjectMember().Find(t.Context(), connect.NewRequest(&v1.ProjectMemberFindRequest{})) + require.NoError(t, err) + }) + + t.Run("tenant member", func(t *testing.T) { + tenantMemberService.create = func(_ context.Context, tmcr *connect.Request[v1.TenantMemberCreateRequest]) (*connect.Response[v1.TenantMemberResponse], error) { + assert.Equal(t, "tenant-a", tmcr.Msg.TenantMember.TenantId) + assert.Equal(t, namespace, tmcr.Msg.TenantMember.Namespace) + return connect.NewResponse(&v1.TenantMemberResponse{}), nil + } + tenantMemberService.find = func(ctx context.Context, tmfr *connect.Request[v1.TenantMemberFindRequest]) (*connect.Response[v1.TenantMemberListResponse], error) { + assert.Equal(t, namespace, tmfr.Msg.Namespace) + return connect.NewResponse(&v1.TenantMemberListResponse{}), nil + } + + _, err = client.TenantMember().Create(t.Context(), connect.NewRequest(&v1.TenantMemberCreateRequest{ + TenantMember: &v1.TenantMember{ + TenantId: "tenant-a", + }, + })) + require.NoError(t, err) + + _, err = client.TenantMember().Find(t.Context(), connect.NewRequest(&v1.TenantMemberFindRequest{})) + require.NoError(t, err) + }) + }) + + t.Run("check explicit namespace can be set anyway", func(t *testing.T) { + t.Run("project member", func(t *testing.T) { + projectMemberService.create = func(_ context.Context, pmcr *connect.Request[v1.ProjectMemberCreateRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { + assert.Equal(t, "project-a", pmcr.Msg.ProjectMember.ProjectId) + assert.Equal(t, "tenant-a", pmcr.Msg.ProjectMember.TenantId) + assert.Equal(t, "b", pmcr.Msg.ProjectMember.Namespace) + return connect.NewResponse(&v1.ProjectMemberResponse{}), nil + } + projectMemberService.find = func(_ context.Context, pmfr *connect.Request[v1.ProjectMemberFindRequest]) (*connect.Response[v1.ProjectMemberListResponse], error) { + assert.Equal(t, "b", pmfr.Msg.Namespace) + return connect.NewResponse(&v1.ProjectMemberListResponse{}), nil + } + + _, err = client.ProjectMember().Create(t.Context(), connect.NewRequest(&v1.ProjectMemberCreateRequest{ + ProjectMember: &v1.ProjectMember{ + ProjectId: "project-a", + TenantId: "tenant-a", + Namespace: "b", + }, + })) + require.NoError(t, err) + + _, err = client.ProjectMember().Find(t.Context(), connect.NewRequest(&v1.ProjectMemberFindRequest{ + Namespace: "b", + })) + require.NoError(t, err) + }) + + t.Run("tenant member", func(t *testing.T) { + tenantMemberService.create = func(_ context.Context, tmcr *connect.Request[v1.TenantMemberCreateRequest]) (*connect.Response[v1.TenantMemberResponse], error) { + assert.Equal(t, "tenant-a", tmcr.Msg.TenantMember.TenantId) + assert.Equal(t, "b", tmcr.Msg.TenantMember.Namespace) + return connect.NewResponse(&v1.TenantMemberResponse{}), nil + } + tenantMemberService.find = func(ctx context.Context, tmfr *connect.Request[v1.TenantMemberFindRequest]) (*connect.Response[v1.TenantMemberListResponse], error) { + assert.Equal(t, "b", tmfr.Msg.Namespace) + return connect.NewResponse(&v1.TenantMemberListResponse{}), nil + } + + _, err = client.TenantMember().Create(t.Context(), connect.NewRequest(&v1.TenantMemberCreateRequest{ + TenantMember: &v1.TenantMember{ + TenantId: "tenant-a", + Namespace: "b", + }, + })) + require.NoError(t, err) + + _, err = client.TenantMember().Find(t.Context(), connect.NewRequest(&v1.TenantMemberFindRequest{ + Namespace: "b", + })) + require.NoError(t, err) + }) + }) +} + +type projectMemberService struct { + create func(context.Context, *connect.Request[v1.ProjectMemberCreateRequest]) (*connect.Response[v1.ProjectMemberResponse], error) + find func(context.Context, *connect.Request[v1.ProjectMemberFindRequest]) (*connect.Response[v1.ProjectMemberListResponse], error) +} + +func (p *projectMemberService) Create(ctx context.Context, r *connect.Request[v1.ProjectMemberCreateRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { + return p.create(ctx, r) +} + +func (p *projectMemberService) Delete(context.Context, *connect.Request[v1.ProjectMemberDeleteRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { + panic("unimplemented") +} + +func (p *projectMemberService) Find(ctx context.Context, r *connect.Request[v1.ProjectMemberFindRequest]) (*connect.Response[v1.ProjectMemberListResponse], error) { + return p.find(ctx, r) +} + +func (p *projectMemberService) Get(context.Context, *connect.Request[v1.ProjectMemberGetRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { + panic("unimplemented") +} + +func (p *projectMemberService) Update(context.Context, *connect.Request[v1.ProjectMemberUpdateRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { + panic("unimplemented") +} + +type tenantMemberService struct { + create func(context.Context, *connect.Request[v1.TenantMemberCreateRequest]) (*connect.Response[v1.TenantMemberResponse], error) + find func(context.Context, *connect.Request[v1.TenantMemberFindRequest]) (*connect.Response[v1.TenantMemberListResponse], error) +} + +func (t *tenantMemberService) Create(ctx context.Context, r *connect.Request[v1.TenantMemberCreateRequest]) (*connect.Response[v1.TenantMemberResponse], error) { + return t.create(ctx, r) +} + +func (t *tenantMemberService) Delete(context.Context, *connect.Request[v1.TenantMemberDeleteRequest]) (*connect.Response[v1.TenantMemberResponse], error) { + panic("unimplemented") +} + +func (t *tenantMemberService) Find(ctx context.Context, r *connect.Request[v1.TenantMemberFindRequest]) (*connect.Response[v1.TenantMemberListResponse], error) { + return t.find(ctx, r) +} + +func (t *tenantMemberService) Get(context.Context, *connect.Request[v1.TenantMemberGetRequest]) (*connect.Response[v1.TenantMemberResponse], error) { + panic("unimplemented") +} + +func (t *tenantMemberService) Update(context.Context, *connect.Request[v1.TenantMemberUpdateRequest]) (*connect.Response[v1.TenantMemberResponse], error) { + panic("unimplemented") +} diff --git a/pkg/client/conn.go b/pkg/client/conn.go index db46542..fa8d308 100644 --- a/pkg/client/conn.go +++ b/pkg/client/conn.go @@ -6,16 +6,19 @@ import ( "net/http/httputil" ) -// DialConfig is the configuration to create a api-server connection -type DialConfig struct { +// Config is the configuration to create a api-server connection +type Config struct { BaseURL string Token string Debug bool UserAgent string + + // Namespace if set adds this namespace to namespaced requests such that it does not need to be passed all the time + Namespace string } -func (d *DialConfig) HttpClient() *http.Client { +func (d *Config) HttpClient() *http.Client { return &http.Client{ Transport: &AddHeaderTransport{ debug: d.Debug, diff --git a/pkg/datastore/query_runner.go b/pkg/datastore/query_runner.go index 5cfe9f6..3c10395 100644 --- a/pkg/datastore/query_runner.go +++ b/pkg/datastore/query_runner.go @@ -15,7 +15,7 @@ func RunQuery[E any](ctx context.Context, log *slog.Logger, db *sqlx.DB, builder } if log.Enabled(ctx, slog.LevelDebug) { - log.Debug("query", "sql", query, "values", vals) + log.Debug("query", "sql", query, "values", vals, "input", input) } rows, err := db.NamedQueryContext(ctx, query, input) diff --git a/pkg/service/projectmember.go b/pkg/service/projectmember.go index d46bd83..a4c49c4 100644 --- a/pkg/service/projectmember.go +++ b/pkg/service/projectmember.go @@ -55,29 +55,57 @@ func (s *projectMemberService) Create(ctx context.Context, rq *connect.Request[v err = s.projectMemberStore.Create(ctx, projectMember) return connect.NewResponse(projectMember.NewProjectMemberResponse()), err } + func (s *projectMemberService) Update(ctx context.Context, rq *connect.Request[v1.ProjectMemberUpdateRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { req := rq.Msg projectMember := req.ProjectMember - err := s.projectMemberStore.Update(ctx, projectMember) + + old, err := s.projectMemberStore.Get(ctx, projectMember.Meta.Id) + if err != nil { + return nil, err + } + + if old.ProjectId != projectMember.ProjectId { + return nil, status.Error(codes.InvalidArgument, "updating the project id of a project member is not allowed") + } + if old.TenantId != projectMember.TenantId { + return nil, status.Error(codes.InvalidArgument, "updating the tenant id of a project member is not allowed") + } + if old.Namespace != projectMember.Namespace { + return nil, status.Error(codes.InvalidArgument, "updating the namespace of a project member is not allowed") + } + + err = s.projectMemberStore.Update(ctx, projectMember) + return connect.NewResponse(projectMember.NewProjectMemberResponse()), err } + func (s *projectMemberService) Delete(ctx context.Context, rq *connect.Request[v1.ProjectMemberDeleteRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { req := rq.Msg + projectMember := req.NewProjectMember() + err := s.projectMemberStore.Delete(ctx, projectMember.Meta.Id) + return connect.NewResponse(projectMember.NewProjectMemberResponse()), err } + func (s *projectMemberService) Get(ctx context.Context, rq *connect.Request[v1.ProjectMemberGetRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { req := rq.Msg + projectMember, err := s.projectMemberStore.Get(ctx, req.Id) if err != nil { return nil, err } + return connect.NewResponse(projectMember.NewProjectMemberResponse()), nil } + func (s *projectMemberService) Find(ctx context.Context, rq *connect.Request[v1.ProjectMemberFindRequest]) (*connect.Response[v1.ProjectMemberListResponse], error) { req := rq.Msg - filter := make(map[string]any) + filter := map[string]any{ + "COALESCE(projectmember ->> 'namespace', '')": req.Namespace, + } if req.ProjectId != nil { filter["projectmember ->> 'project_id'"] = req.ProjectId } @@ -89,11 +117,14 @@ func (s *projectMemberService) Find(ctx context.Context, rq *connect.Request[v1. f := fmt.Sprintf("projectmember -> 'meta' -> 'annotations' ->> '%s'", key) filter[f] = value } + res, _, err := s.projectMemberStore.Find(ctx, nil, filter) if err != nil { return nil, err } + resp := new(v1.ProjectMemberListResponse) resp.ProjectMembers = append(resp.ProjectMembers, res...) + return connect.NewResponse(resp), nil } diff --git a/pkg/service/projectmember_test.go b/pkg/service/projectmember_test.go index 5d89579..7167e8a 100644 --- a/pkg/service/projectmember_test.go +++ b/pkg/service/projectmember_test.go @@ -3,16 +3,23 @@ package service import ( "context" "log/slog" + "slices" "connectrpc.com/connect" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" v1 "github.com/metal-stack/masterdata-api/api/v1" "github.com/metal-stack/metal-lib/pkg/pointer" + "github.com/metal-stack/metal-lib/pkg/testcommon" "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + "google.golang.org/protobuf/runtime/protoimpl" "testing" + "github.com/metal-stack/masterdata-api/pkg/datastore" "github.com/metal-stack/masterdata-api/pkg/test/mocks" ) @@ -47,41 +54,6 @@ func TestCreateProjectMember(t *testing.T) { assert.Equal(t, pmcr.ProjectMember.ProjectId, resp.Msg.ProjectMember.GetProjectId()) } -func TestUpdateProjectMember(t *testing.T) { - storageMock := mocks.NewMockStorage[*v1.ProjectMember](t) - tenantStorageMock := mocks.NewMockStorage[*v1.Tenant](t) - projectStorageMock := mocks.NewMockStorage[*v1.Project](t) - ts := &projectMemberService{ - projectMemberStore: storageMock, - tenantStore: tenantStorageMock, - projectStore: projectStorageMock, - log: slog.Default(), - } - ctx := context.Background() - - meta := &v1.Meta{Id: "p2", Annotations: map[string]string{"key": "value"}} - pm1 := &v1.ProjectMember{ - Meta: meta, - ProjectId: "p1", - TenantId: "t1", - } - meta.Annotations = map[string]string{"key": "value2"} - pmur := &v1.ProjectMemberUpdateRequest{ - ProjectMember: &v1.ProjectMember{ - Meta: meta, - ProjectId: "p1", - TenantId: "t1", - }, - } - - storageMock.On("Update", ctx, pm1).Return(nil) - resp, err := ts.Update(ctx, connect.NewRequest(pmur)) - require.NoError(t, err) - assert.NotNil(t, resp) - assert.NotNil(t, resp.Msg.ProjectMember) - assert.Equal(t, pmur.ProjectMember.Meta.Annotations, resp.Msg.ProjectMember.Meta.Annotations) -} - func TestDeleteProjectMember(t *testing.T) { storageMock := mocks.NewMockStorage[*v1.ProjectMember](t) tenantStorageMock := mocks.NewMockStorage[*v1.Tenant](t) @@ -134,55 +106,472 @@ func TestGetProjectMember(t *testing.T) { assert.Equal(t, tgr.Id, resp.Msg.ProjectMember.GetMeta().GetId()) } -func TestFindProjectMemberByProject(t *testing.T) { - storageMock := mocks.NewMockStorage[*v1.ProjectMember](t) - tenantStorageMock := mocks.NewMockStorage[*v1.Tenant](t) - projectStorageMock := mocks.NewMockStorage[*v1.Project](t) - ts := &projectMemberService{ - projectMemberStore: storageMock, - tenantStore: tenantStorageMock, - projectStore: projectStorageMock, - log: slog.Default(), +func TestFindProjectMember(t *testing.T) { + ctx := t.Context() + ves := []datastore.Entity{ + &v1.Project{}, + &v1.ProjectMember{}, + &v1.Tenant{}, + &v1.TenantMember{}, } - ctx := context.Background() - p1 := pointer.Pointer("p1") - // filter by name - var t6s []*v1.ProjectMember - tfr := &v1.ProjectMemberFindRequest{ - ProjectId: p1, + container, db, err := StartPostgres(ctx, ves...) + require.NoError(t, err) + defer func() { + require.NoError(t, db.Close()) + require.NoError(t, container.Terminate(ctx)) + }() + + var ( + projectMemberStore = datastore.New(log, db, &v1.ProjectMember{}) + projectStore = datastore.New(log, db, &v1.Project{}) + tenantStore = datastore.New(log, db, &v1.Tenant{}) + + testTenant1 = &v1.Tenant{ + Meta: &v1.Meta{ + Id: "tenant-1", + Kind: "Tenant", + Apiversion: "v1", + Version: 1, + }, + Name: "tenant 1", + Description: "test tenant 1", + } + testTenant2 = &v1.Tenant{ + Meta: &v1.Meta{ + Id: "tenant-2", + Kind: "Tenant", + Apiversion: "v1", + Version: 1, + }, + Name: "tenant 2", + Description: "test tenant 2", + } + testProject1 = &v1.Project{ + Meta: &v1.Meta{ + Id: "project-1", + Kind: "Project", + Apiversion: "v1", + Version: 1, + }, + Name: "project 1", + Description: "test project 1", + TenantId: "tenant-1", + } + testProjectMember1 = &v1.ProjectMember{ + Meta: &v1.Meta{ + Id: "1", + Kind: "ProjectMember", + Apiversion: "v1", + Version: 1, + Annotations: map[string]string{ + "role": "owner", + }, + Labels: []string{"a", "b"}, + }, + ProjectId: "project-1", + TenantId: "tenant-1", + Namespace: "a", + } + testProjectMember2 = &v1.ProjectMember{ + Meta: &v1.Meta{ + Id: "2", + Kind: "ProjectMember", + Apiversion: "v1", + Version: 1, + Annotations: map[string]string{ + "role": "viewer", + }, + Labels: []string{"c", "d"}, + }, + ProjectId: "project-1", + TenantId: "tenant-2", + Namespace: "a", + } + testProjectMember3 = &v1.ProjectMember{ + Meta: &v1.Meta{ + Id: "3", + Kind: "ProjectMember", + Apiversion: "v1", + Version: 1, + Annotations: map[string]string{ + "role": "owner", + }, + Labels: []string{"e", "f"}, + }, + ProjectId: "project-2", + TenantId: "tenant-2", + Namespace: "a", + } + testProjectMember4 = &v1.ProjectMember{ + Meta: &v1.Meta{ + Id: "4", + Kind: "ProjectMember", + Apiversion: "v1", + Version: 1, + Annotations: map[string]string{ + "role": "owner", + }, + }, + ProjectId: "project-2", + TenantId: "tenant-2", + Namespace: "", + } + + service = &projectMemberService{ + log: log, + projectMemberStore: projectMemberStore, + tenantStore: tenantStore, + projectStore: projectStore, + } + ) + + tests := []struct { + name string + prepare func() + req *v1.ProjectMemberFindRequest + want *v1.ProjectMemberListResponse + wantErr error + }{ + { + name: "find by project", + req: &v1.ProjectMemberFindRequest{ + ProjectId: pointer.Pointer("project-1"), + Namespace: "a", + }, + prepare: func() { + require.NoError(t, tenantStore.Create(ctx, testTenant1)) + require.NoError(t, tenantStore.Create(ctx, testTenant2)) + require.NoError(t, projectStore.Create(ctx, testProject1)) + require.NoError(t, projectMemberStore.Create(ctx, testProjectMember1)) + require.NoError(t, projectMemberStore.Create(ctx, testProjectMember2)) + require.NoError(t, projectMemberStore.Create(ctx, testProjectMember3)) + require.NoError(t, projectMemberStore.Create(ctx, testProjectMember4)) + }, + want: &v1.ProjectMemberListResponse{ + ProjectMembers: []*v1.ProjectMember{ + testProjectMember1, + testProjectMember2, + }, + }, + wantErr: nil, + }, + { + name: "find by project id (no results) #1", + req: &v1.ProjectMemberFindRequest{ + ProjectId: pointer.Pointer("no-result"), + Namespace: "a", + }, + prepare: func() { + require.NoError(t, tenantStore.Create(ctx, testTenant1)) + require.NoError(t, tenantStore.Create(ctx, testTenant2)) + require.NoError(t, projectStore.Create(ctx, testProject1)) + require.NoError(t, projectMemberStore.Create(ctx, testProjectMember1)) + require.NoError(t, projectMemberStore.Create(ctx, testProjectMember2)) + require.NoError(t, projectMemberStore.Create(ctx, testProjectMember3)) + require.NoError(t, projectMemberStore.Create(ctx, testProjectMember4)) + }, + want: &v1.ProjectMemberListResponse{ + ProjectMembers: nil, + }, + wantErr: nil, + }, + { + name: "find by project id (no results) #2", + req: &v1.ProjectMemberFindRequest{ + ProjectId: pointer.Pointer("project-1"), + Namespace: "wrong-namespace", + }, + prepare: func() { + require.NoError(t, tenantStore.Create(ctx, testTenant1)) + require.NoError(t, tenantStore.Create(ctx, testTenant2)) + require.NoError(t, projectStore.Create(ctx, testProject1)) + require.NoError(t, projectMemberStore.Create(ctx, testProjectMember1)) + require.NoError(t, projectMemberStore.Create(ctx, testProjectMember2)) + require.NoError(t, projectMemberStore.Create(ctx, testProjectMember3)) + require.NoError(t, projectMemberStore.Create(ctx, testProjectMember4)) + }, + want: &v1.ProjectMemberListResponse{ + ProjectMembers: nil, + }, + wantErr: nil, + }, + { + name: "find by tenant", + req: &v1.ProjectMemberFindRequest{ + TenantId: pointer.Pointer("tenant-2"), + Namespace: "a", + }, + prepare: func() { + require.NoError(t, tenantStore.Create(ctx, testTenant1)) + require.NoError(t, tenantStore.Create(ctx, testTenant2)) + require.NoError(t, projectStore.Create(ctx, testProject1)) + require.NoError(t, projectMemberStore.Create(ctx, testProjectMember1)) + require.NoError(t, projectMemberStore.Create(ctx, testProjectMember2)) + require.NoError(t, projectMemberStore.Create(ctx, testProjectMember3)) + require.NoError(t, projectMemberStore.Create(ctx, testProjectMember4)) + }, + want: &v1.ProjectMemberListResponse{ + ProjectMembers: []*v1.ProjectMember{ + testProjectMember2, + testProjectMember3, + }, + }, + wantErr: nil, + }, + { + name: "find by annotation", + req: &v1.ProjectMemberFindRequest{ + Annotations: map[string]string{"role": "owner"}, + Namespace: "a", + }, + prepare: func() { + require.NoError(t, tenantStore.Create(ctx, testTenant1)) + require.NoError(t, tenantStore.Create(ctx, testTenant2)) + require.NoError(t, projectStore.Create(ctx, testProject1)) + require.NoError(t, projectMemberStore.Create(ctx, testProjectMember1)) + require.NoError(t, projectMemberStore.Create(ctx, testProjectMember2)) + require.NoError(t, projectMemberStore.Create(ctx, testProjectMember3)) + require.NoError(t, projectMemberStore.Create(ctx, testProjectMember4)) + }, + want: &v1.ProjectMemberListResponse{ + ProjectMembers: []*v1.ProjectMember{ + testProjectMember1, + testProjectMember3, + }, + }, + wantErr: nil, + }, } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + for _, ve := range ves { + _, err := db.ExecContext(ctx, "TRUNCATE TABLE "+ve.TableName()) + require.NoError(t, err) + } - f2 := make(map[string]any) - f2["projectmember ->> 'project_id'"] = p1 - storageMock.On("Find", ctx, mock.Anything, []any{f2}).Return(t6s, nil, nil) - resp, err := ts.Find(ctx, connect.NewRequest(tfr)) - require.NoError(t, err) - assert.NotNil(t, resp) -} + if tt.prepare != nil { + tt.prepare() + } -func TestFindProjectMemberByTenant(t *testing.T) { - storageMock := mocks.NewMockStorage[*v1.ProjectMember](t) - tenantStorageMock := mocks.NewMockStorage[*v1.Tenant](t) - projectStorageMock := mocks.NewMockStorage[*v1.Project](t) - ts := &projectMemberService{ - projectMemberStore: storageMock, - tenantStore: tenantStorageMock, - projectStore: projectStorageMock, - log: slog.Default(), + got, err := service.Find(ctx, connect.NewRequest(tt.req)) + if diff := cmp.Diff(err, tt.wantErr); diff != "" { + t.Errorf("(-want +got):\n%s", diff) + return + } + + slices.SortFunc(got.Msg.ProjectMembers, func(i, j *v1.ProjectMember) int { + if i.Meta.Id < j.Meta.Id { + return -1 + } else { + return 1 + } + }) + + if diff := cmp.Diff(tt.want, pointer.SafeDeref(got).Msg, cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { + t.Errorf("(-want +got):\n%s", diff) + } + }) } - ctx := context.Background() +} - // filter by name - var t6s []*v1.ProjectMember - tfr := &v1.ProjectMemberFindRequest{ - TenantId: pointer.Pointer("t1"), +func TestUpdateProjectMember(t *testing.T) { + ctx := t.Context() + ves := []datastore.Entity{ + &v1.Project{}, + &v1.ProjectMember{}, + &v1.Tenant{}, + &v1.TenantMember{}, } - f2 := make(map[string]any) - f2["projectmember ->> 'tenant_id'"] = pointer.Pointer("t1") - storageMock.On("Find", ctx, mock.Anything, []any{f2}).Return(t6s, nil, nil) - resp, err := ts.Find(ctx, connect.NewRequest(tfr)) + container, db, err := StartPostgres(ctx, ves...) require.NoError(t, err) - assert.NotNil(t, resp) + defer func() { + require.NoError(t, db.Close()) + require.NoError(t, container.Terminate(ctx)) + }() + + var ( + projectMemberStore = datastore.New(log, db, &v1.ProjectMember{}) + projectStore = datastore.New(log, db, &v1.Project{}) + tenantStore = datastore.New(log, db, &v1.Tenant{}) + + service = &projectMemberService{ + log: log, + projectMemberStore: projectMemberStore, + tenantStore: tenantStore, + projectStore: projectStore, + } + ) + + tests := []struct { + name string + prepare func() + req *v1.ProjectMemberUpdateRequest + want *v1.ProjectMemberResponse + wantErr error + }{ + { + name: "update mutable fields", + req: &v1.ProjectMemberUpdateRequest{ + ProjectMember: &v1.ProjectMember{ + Meta: &v1.Meta{ + Id: "1", + Version: 1, + Annotations: map[string]string{ + "role": "owner", + }, + Labels: []string{"a", "b"}, + }, + ProjectId: "project-1", + TenantId: "tenant-1", + Namespace: "a", + }, + }, + prepare: func() { + require.NoError(t, projectMemberStore.Create(ctx, &v1.ProjectMember{ + Meta: &v1.Meta{ + Id: "1", + Kind: "ProjectMember", + Apiversion: "v1", + Version: 1, + }, + ProjectId: "project-1", + TenantId: "tenant-1", + Namespace: "a", + })) + }, + want: &v1.ProjectMemberResponse{ + ProjectMember: &v1.ProjectMember{ + Meta: &v1.Meta{ + Id: "1", + Kind: "ProjectMember", + Apiversion: "v1", + Version: 2, + Annotations: map[string]string{ + "role": "owner", + }, + Labels: []string{"a", "b"}, + }, + ProjectId: "project-1", + TenantId: "tenant-1", + Namespace: "a", + }, + }, + wantErr: nil, + }, + { + name: "unable to update namespace", + req: &v1.ProjectMemberUpdateRequest{ + ProjectMember: &v1.ProjectMember{ + Meta: &v1.Meta{ + Id: "1", + Version: 1, + }, + ProjectId: "project-1", + TenantId: "tenant-1", + Namespace: "b", + }, + }, + prepare: func() { + require.NoError(t, projectMemberStore.Create(ctx, &v1.ProjectMember{ + Meta: &v1.Meta{ + Id: "1", + Kind: "ProjectMember", + Apiversion: "v1", + Version: 1, + }, + ProjectId: "project-1", + TenantId: "tenant-1", + Namespace: "a", + })) + }, + want: nil, + wantErr: status.Error(codes.InvalidArgument, "updating the namespace of a project member is not allowed"), + }, + { + name: "unable to update project", + req: &v1.ProjectMemberUpdateRequest{ + ProjectMember: &v1.ProjectMember{ + Meta: &v1.Meta{ + Id: "1", + Version: 1, + }, + ProjectId: "project-2", + TenantId: "tenant-1", + Namespace: "a", + }, + }, + prepare: func() { + require.NoError(t, projectMemberStore.Create(ctx, &v1.ProjectMember{ + Meta: &v1.Meta{ + Id: "1", + Kind: "ProjectMember", + Apiversion: "v1", + Version: 1, + }, + ProjectId: "project-1", + TenantId: "tenant-1", + Namespace: "a", + })) + }, + want: nil, + wantErr: status.Error(codes.InvalidArgument, "updating the project id of a project member is not allowed"), + }, + { + name: "unable to update tenant", + req: &v1.ProjectMemberUpdateRequest{ + ProjectMember: &v1.ProjectMember{ + Meta: &v1.Meta{ + Id: "1", + Version: 1, + }, + ProjectId: "project-1", + TenantId: "tenant-2", + Namespace: "a", + }, + }, + prepare: func() { + require.NoError(t, projectMemberStore.Create(ctx, &v1.ProjectMember{ + Meta: &v1.Meta{ + Id: "1", + Kind: "ProjectMember", + Apiversion: "v1", + Version: 1, + }, + ProjectId: "project-1", + TenantId: "tenant-1", + Namespace: "a", + })) + }, + want: nil, + wantErr: status.Error(codes.InvalidArgument, "updating the tenant id of a project member is not allowed"), + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + for _, ve := range ves { + _, err := db.ExecContext(ctx, "TRUNCATE TABLE "+ve.TableName()) + require.NoError(t, err) + } + + if tt.prepare != nil { + tt.prepare() + } + + got, err := service.Update(ctx, connect.NewRequest(tt.req)) + if diff := cmp.Diff(err, tt.wantErr, cmpopts.EquateErrors()); diff != "" { + t.Errorf("(-want +got):\n%s", diff) + return + } + + if err == nil { + assert.NotNil(t, got.Msg.ProjectMember.Meta.UpdatedTime) + } + + if diff := cmp.Diff(tt.want, pointer.SafeDeref(got).Msg, cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime", "UpdatedTime"), testcommon.IgnoreUnexported()); diff != "" { + t.Errorf("(-want +got):\n%s", diff) + } + }) + } } diff --git a/pkg/service/tenant.go b/pkg/service/tenant.go index 8173a60..8ce3fc9 100644 --- a/pkg/service/tenant.go +++ b/pkg/service/tenant.go @@ -182,7 +182,9 @@ var ( ). From(projectMembers.TableName()). Join(projects.TableName() + " ON " + projects.TableName() + ".id = " + projectMembers.JSONField() + "->>'project_id'"). - Where(projectMembers.JSONField() + "->>'tenant_id' = :tenantId") + Where(projectMembers.JSONField() + "->>'tenant_id' = :tenantId"). + // COALESCE is required to provide an empty string as default value in case the namespace field is not present + Where("COALESCE(" + projectMembers.JSONField() + "->> 'namespace', '') = :namespace") queryInheritedProjectParticipations = sq.Select( projects.JSONField(), @@ -190,7 +192,9 @@ var ( ). From(tenantMembers.TableName()). Join(projects.TableName() + " ON " + projects.JSONField() + "->>'tenant_id' = " + tenantMembers.JSONField() + "->>'tenant_id'"). - Where(tenantMembers.JSONField() + "->>'member_id' = :tenantId") + Where(tenantMembers.JSONField() + "->>'member_id' = :tenantId"). + // COALESCE is required to provide an empty string as default value in case the namespace field is not present + Where("COALESCE(" + tenantMembers.JSONField() + "->> 'namespace', '') = :namespace") ) // FindParticipatingProjects returns all projects in which a member participates. @@ -208,7 +212,7 @@ func (s *tenantService) FindParticipatingProjects(ctx context.Context, rq *conne res []*v1.ProjectWithMembershipAnnotations resultMap = map[string]*v1.ProjectWithMembershipAnnotations{} - input = map[string]any{"tenantId": req.TenantId} + input = map[string]any{"tenantId": req.TenantId, "namespace": req.Namespace} resultFn = func(e result) error { p, ok := resultMap[e.Project.Meta.Id] @@ -269,7 +273,9 @@ var ( ). From(tenantMembers.TableName()). Join(tenants.TableName() + " ON " + tenants.TableName() + ".id = " + tenantMembers.JSONField() + "->>'tenant_id'"). - Where(tenantMembers.JSONField() + "->>'member_id' = :tenantId") + Where(tenantMembers.JSONField() + "->>'member_id' = :tenantId"). + // COALESCE is required to provide an empty string as default value in case the namespace field is not present + Where("COALESCE(" + tenantMembers.JSONField() + "->> 'namespace', '') = :namespace") queryInheritedTenantParticipations = sq.Select( tenants.JSONField(), @@ -278,7 +284,9 @@ var ( From(projectMembers.TableName()). Join(projects.TableName() + " ON " + projects.TableName() + ".id = " + projectMembers.JSONField() + "->>'project_id'"). Join(tenants.TableName() + " ON " + tenants.TableName() + ".id = " + projects.JSONField() + "->>'tenant_id'"). - Where(projectMembers.JSONField() + "->>'tenant_id' = :tenantId") + Where(projectMembers.JSONField() + "->>'tenant_id' = :tenantId"). + // COALESCE is required to provide an empty string as default value in case the namespace field is not present + Where("COALESCE(" + projectMembers.JSONField() + "->> 'namespace', '') = :namespace") ) // FindParticipatingTenants returns all tenants in which a member participates. @@ -293,7 +301,7 @@ func (s *tenantService) FindParticipatingTenants(ctx context.Context, rq *connec } var ( - input = map[string]any{"tenantId": req.TenantId} + input = map[string]any{"tenantId": req.TenantId, "namespace": req.Namespace} res []*v1.TenantWithMembershipAnnotations resultMap = map[string]*v1.TenantWithMembershipAnnotations{} @@ -357,7 +365,9 @@ var ( ). From(tenantMembers.TableName()). Join(tenants.TableName() + " ON " + tenants.TableName() + ".id = " + tenantMembers.JSONField() + "->>'member_id'"). - Where(tenantMembers.JSONField() + "->>'tenant_id' = :tenantId") + Where(tenantMembers.JSONField() + "->>'tenant_id' = :tenantId"). + // COALESCE is required to provide an empty string as default value in case the namespace field is not present + Where("COALESCE(" + tenantMembers.JSONField() + "->> 'namespace', '') = :namespace") queryInheritedTenantMembers = sq.Select( tenants.JSONField(), @@ -366,7 +376,9 @@ var ( From(projectMembers.TableName()). Join(projects.TableName() + " ON " + projects.TableName() + ".id = " + projectMembers.JSONField() + "->>'project_id'"). Join(tenants.TableName() + " ON " + tenants.TableName() + ".id = " + projectMembers.JSONField() + "->>'tenant_id'"). - Where(projects.JSONField() + "->>'tenant_id' = :tenantId") + Where(projects.JSONField() + "->>'tenant_id' = :tenantId"). + // COALESCE is required to provide an empty string as default value in case the namespace field is not present + Where("COALESCE(" + projectMembers.JSONField() + "->> 'namespace', '') = :namespace") ) // ListTenantMembers returns all members of a tenant. @@ -384,7 +396,7 @@ func (s *tenantService) ListTenantMembers(ctx context.Context, rq *connect.Reque res []*v1.TenantWithMembershipAnnotations resultMap = map[string]*v1.TenantWithMembershipAnnotations{} - input = map[string]any{"tenantId": req.TenantId} + input = map[string]any{"tenantId": req.TenantId, "namespace": req.Namespace} resultFn = func(e result) error { t, ok := resultMap[e.Tenant.Meta.Id] diff --git a/pkg/service/tenant_test.go b/pkg/service/tenant_test.go index f7fde5f..1ec6d67 100644 --- a/pkg/service/tenant_test.go +++ b/pkg/service/tenant_test.go @@ -458,10 +458,12 @@ func Test_tenantService_FindParticipatingProjects(t *testing.T) { IncludeInherited: pointer.Pointer(true), }, prepare: func() { - err := projectStore.Create(ctx, &v1.Project{Meta: &v1.Meta{Id: "1"}}) - require.NoError(t, err) - err = projectMemberStore.Create(ctx, &v1.ProjectMember{Meta: &v1.Meta{Annotations: map[string]string{"role": "admin"}}, ProjectId: "1", TenantId: "someone else"}) - require.NoError(t, err) + require.NoError(t, projectStore.Create(ctx, &v1.Project{Meta: &v1.Meta{Id: "1"}})) + require.NoError(t, projectMemberStore.Create(ctx, &v1.ProjectMember{ + Meta: &v1.Meta{Annotations: map[string]string{"role": "admin"}}, + ProjectId: "1", + TenantId: "someone else", + })) }, want: &v1.FindParticipatingProjectsResponse{}, wantErr: nil, @@ -473,10 +475,63 @@ func Test_tenantService_FindParticipatingProjects(t *testing.T) { IncludeInherited: pointer.Pointer(true), }, prepare: func() { - err := projectStore.Create(ctx, &v1.Project{Meta: &v1.Meta{Id: "1"}}) - require.NoError(t, err) - err = projectMemberStore.Create(ctx, &v1.ProjectMember{Meta: &v1.Meta{Annotations: map[string]string{"role": "admin"}}, ProjectId: "1", TenantId: "a"}) - require.NoError(t, err) + require.NoError(t, projectStore.Create(ctx, &v1.Project{Meta: &v1.Meta{Id: "1"}})) + require.NoError(t, projectMemberStore.Create(ctx, &v1.ProjectMember{ + Meta: &v1.Meta{Annotations: map[string]string{"role": "admin"}}, + ProjectId: "1", + TenantId: "a", + })) + }, + want: &v1.FindParticipatingProjectsResponse{ + Projects: []*v1.ProjectWithMembershipAnnotations{{ + Project: &v1.Project{ + Meta: &v1.Meta{ + Kind: "Project", + Apiversion: "v1", + Id: "1", + }, + }, + ProjectAnnotations: map[string]string{"role": "admin"}, + TenantAnnotations: nil, + }}, + }, + wantErr: nil, + }, + { + name: "no direct membership in other namespace", + req: &v1.FindParticipatingProjectsRequest{ + TenantId: "a", + IncludeInherited: pointer.Pointer(true), + Namespace: "other", + }, + prepare: func() { + require.NoError(t, projectStore.Create(ctx, &v1.Project{Meta: &v1.Meta{Id: "1"}})) + require.NoError(t, projectMemberStore.Create(ctx, &v1.ProjectMember{ + Meta: &v1.Meta{Annotations: map[string]string{"role": "admin"}}, + ProjectId: "1", + TenantId: "a", + })) + }, + want: &v1.FindParticipatingProjectsResponse{ + Projects: nil, + }, + wantErr: nil, + }, + { + name: "direct membership in a namespace", + req: &v1.FindParticipatingProjectsRequest{ + TenantId: "a", + IncludeInherited: pointer.Pointer(true), + Namespace: "a", + }, + prepare: func() { + require.NoError(t, projectStore.Create(ctx, &v1.Project{Meta: &v1.Meta{Id: "1"}})) + require.NoError(t, projectMemberStore.Create(ctx, &v1.ProjectMember{ + Meta: &v1.Meta{Annotations: map[string]string{"role": "admin"}}, + ProjectId: "1", + TenantId: "a", + Namespace: "a", + })) }, want: &v1.FindParticipatingProjectsResponse{ Projects: []*v1.ProjectWithMembershipAnnotations{{ @@ -500,16 +555,23 @@ func Test_tenantService_FindParticipatingProjects(t *testing.T) { IncludeInherited: pointer.Pointer(false), }, prepare: func() { - err := projectStore.Create(ctx, &v1.Project{Meta: &v1.Meta{Id: "1"}}) - require.NoError(t, err) - err = projectStore.Create(ctx, &v1.Project{Meta: &v1.Meta{Id: "2"}, TenantId: "b"}) - require.NoError(t, err) - err = projectMemberStore.Create(ctx, &v1.ProjectMember{Meta: &v1.Meta{Annotations: map[string]string{"role": "admin"}}, ProjectId: "1", TenantId: "a"}) - require.NoError(t, err) - err = projectMemberStore.Create(ctx, &v1.ProjectMember{Meta: &v1.Meta{Annotations: map[string]string{"role": "admin"}}, ProjectId: "2", TenantId: "b"}) - require.NoError(t, err) - err = tenantMemberStore.Create(ctx, &v1.TenantMember{Meta: &v1.Meta{Annotations: map[string]string{"role": "editor"}}, MemberId: "a", TenantId: "b"}) - require.NoError(t, err) + require.NoError(t, projectStore.Create(ctx, &v1.Project{Meta: &v1.Meta{Id: "1"}})) + require.NoError(t, projectStore.Create(ctx, &v1.Project{Meta: &v1.Meta{Id: "2"}, TenantId: "b"})) + require.NoError(t, projectMemberStore.Create(ctx, &v1.ProjectMember{ + Meta: &v1.Meta{Annotations: map[string]string{"role": "admin"}}, + ProjectId: "1", + TenantId: "a", + })) + require.NoError(t, projectMemberStore.Create(ctx, &v1.ProjectMember{ + Meta: &v1.Meta{Annotations: map[string]string{"role": "admin"}}, + ProjectId: "2", + TenantId: "b", + })) + require.NoError(t, tenantMemberStore.Create(ctx, &v1.TenantMember{ + Meta: &v1.Meta{Annotations: map[string]string{"role": "editor"}}, + MemberId: "a", + TenantId: "b", + })) }, want: &v1.FindParticipatingProjectsResponse{ Projects: []*v1.ProjectWithMembershipAnnotations{{ @@ -533,10 +595,8 @@ func Test_tenantService_FindParticipatingProjects(t *testing.T) { IncludeInherited: pointer.Pointer(true), }, prepare: func() { - err := projectStore.Create(ctx, &v1.Project{Meta: &v1.Meta{Id: "1"}, TenantId: "b"}) - require.NoError(t, err) - err = tenantMemberStore.Create(ctx, &v1.TenantMember{Meta: &v1.Meta{Annotations: map[string]string{"role": "viewer"}}, TenantId: "b", MemberId: "a"}) - require.NoError(t, err) + require.NoError(t, projectStore.Create(ctx, &v1.Project{Meta: &v1.Meta{Id: "1"}, TenantId: "b"})) + require.NoError(t, tenantMemberStore.Create(ctx, &v1.TenantMember{Meta: &v1.Meta{Annotations: map[string]string{"role": "viewer"}}, TenantId: "b", MemberId: "a"})) }, want: &v1.FindParticipatingProjectsResponse{ Projects: []*v1.ProjectWithMembershipAnnotations{{ @@ -561,34 +621,29 @@ func Test_tenantService_FindParticipatingProjects(t *testing.T) { IncludeInherited: pointer.Pointer(true), }, prepare: func() { - err := projectStore.Create(ctx, &v1.Project{ + require.NoError(t, projectStore.Create(ctx, &v1.Project{ Meta: &v1.Meta{Id: "direct-1"}, TenantId: "req-tenant", - }) - require.NoError(t, err) - err = projectMemberStore.Create(ctx, &v1.ProjectMember{ + })) + require.NoError(t, projectMemberStore.Create(ctx, &v1.ProjectMember{ Meta: &v1.Meta{Annotations: map[string]string{"role": "owner"}}, ProjectId: "direct-1", TenantId: "req-tenant", - }) - require.NoError(t, err) - err = tenantMemberStore.Create(ctx, &v1.TenantMember{ + })) + require.NoError(t, tenantMemberStore.Create(ctx, &v1.TenantMember{ Meta: &v1.Meta{Annotations: map[string]string{"role": "editor"}}, MemberId: "req-tenant", TenantId: "parent", - }) - require.NoError(t, err) - err = projectStore.Create(ctx, &v1.Project{ + })) + require.NoError(t, projectStore.Create(ctx, &v1.Project{ Meta: &v1.Meta{Id: "indirect-2"}, TenantId: "parent", - }) - require.NoError(t, err) - err = projectMemberStore.Create(ctx, &v1.ProjectMember{ + })) + require.NoError(t, projectMemberStore.Create(ctx, &v1.ProjectMember{ Meta: &v1.Meta{Annotations: map[string]string{"role": "admin"}}, ProjectId: "indirect-2", TenantId: "parent", - }) - require.NoError(t, err) + })) }, want: &v1.FindParticipatingProjectsResponse{ Projects: []*v1.ProjectWithMembershipAnnotations{ @@ -743,6 +798,53 @@ func Test_tenantService_FindParticipatingTenants(t *testing.T) { }, wantErr: nil, }, + { + name: "no direct membership when in different namespace", + req: &v1.FindParticipatingTenantsRequest{ + TenantId: "a", + IncludeInherited: pointer.Pointer(true), + Namespace: "other", + }, + prepare: func() { + err := tenantStore.Create(ctx, &v1.Tenant{Meta: &v1.Meta{Id: "b"}}) + require.NoError(t, err) + err = tenantMemberStore.Create(ctx, &v1.TenantMember{Meta: &v1.Meta{Annotations: map[string]string{"role": "admin"}}, MemberId: "a", TenantId: "b"}) + require.NoError(t, err) + }, + want: &v1.FindParticipatingTenantsResponse{ + Tenants: nil, + }, + wantErr: nil, + }, + { + name: "direct membership in namespace", + req: &v1.FindParticipatingTenantsRequest{ + TenantId: "a", + IncludeInherited: pointer.Pointer(true), + Namespace: "a", + }, + prepare: func() { + err := tenantStore.Create(ctx, &v1.Tenant{Meta: &v1.Meta{Id: "b"}}) + require.NoError(t, err) + err = tenantMemberStore.Create(ctx, &v1.TenantMember{Meta: &v1.Meta{Annotations: map[string]string{"role": "admin"}}, Namespace: "a", MemberId: "a", TenantId: "b"}) + require.NoError(t, err) + }, + want: &v1.FindParticipatingTenantsResponse{ + Tenants: []*v1.TenantWithMembershipAnnotations{ + { + Tenant: &v1.Tenant{ + Meta: &v1.Meta{ + Kind: "Tenant", + Apiversion: "v1", + Id: "b", + }, + }, + TenantAnnotations: map[string]string{"role": "admin"}, + }, + }, + }, + wantErr: nil, + }, { name: "indirect membership", req: &v1.FindParticipatingTenantsRequest{ @@ -791,34 +893,43 @@ func Test_tenantService_FindParticipatingTenants(t *testing.T) { wantErr: nil, }, { - name: "direct and indirect memberships", + name: "direct and indirect memberships (without interference with other namespaces)", req: &v1.FindParticipatingTenantsRequest{ TenantId: "req-tnt", IncludeInherited: pointer.Pointer(true), }, prepare: func() { - err = tenantStore.Create(ctx, &v1.Tenant{Meta: &v1.Meta{Id: "indirect-tnt"}}) - require.NoError(t, err) - err := projectStore.Create(ctx, &v1.Project{ + require.NoError(t, tenantStore.Create(ctx, &v1.Tenant{Meta: &v1.Meta{Id: "indirect-tnt"}})) + require.NoError(t, projectStore.Create(ctx, &v1.Project{ Meta: &v1.Meta{Id: "indirect"}, TenantId: "indirect-tnt", - }) - require.NoError(t, err) - err = projectMemberStore.Create(ctx, &v1.ProjectMember{ + })) + require.NoError(t, projectMemberStore.Create(ctx, &v1.ProjectMember{ Meta: &v1.Meta{Annotations: map[string]string{"role": "admin"}}, ProjectId: "indirect", TenantId: "req-tnt", - }) - require.NoError(t, err) + })) + // should not interfere: + require.NoError(t, projectMemberStore.Create(ctx, &v1.ProjectMember{ + Meta: &v1.Meta{Annotations: map[string]string{"role": "admin"}}, + ProjectId: "indirect", + TenantId: "req-tnt", + Namespace: "other", + })) - err = tenantStore.Create(ctx, &v1.Tenant{Meta: &v1.Meta{Id: "direct-tnt"}}) - require.NoError(t, err) - err = tenantMemberStore.Create(ctx, &v1.TenantMember{ + require.NoError(t, tenantStore.Create(ctx, &v1.Tenant{Meta: &v1.Meta{Id: "direct-tnt"}})) + require.NoError(t, tenantMemberStore.Create(ctx, &v1.TenantMember{ Meta: &v1.Meta{Annotations: map[string]string{"relation": "direct"}}, TenantId: "direct-tnt", MemberId: "req-tnt", - }) - require.NoError(t, err) + })) + // should not interfere: + require.NoError(t, projectMemberStore.Create(ctx, &v1.ProjectMember{ + Meta: &v1.Meta{Annotations: map[string]string{"role": "admin"}}, + ProjectId: "indirect", + TenantId: "req-tnt", + Namespace: "other", + })) }, want: &v1.FindParticipatingTenantsResponse{ Tenants: []*v1.TenantWithMembershipAnnotations{ @@ -871,6 +982,7 @@ func Test_tenantService_FindParticipatingTenants(t *testing.T) { return 1 } }) + if diff := cmp.Diff(tt.want, got.Msg, cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { t.Errorf("(-want +got):\n%s", diff) } @@ -896,7 +1008,7 @@ func Test_tenantService_ListTenantMembers(t *testing.T) { s := &tenantService{ db: db, - log: slog.Default(), + log: slog.New(slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{Level: slog.LevelDebug})), } var ( @@ -971,6 +1083,53 @@ func Test_tenantService_ListTenantMembers(t *testing.T) { }, wantErr: nil, }, + { + name: "no direct membership in other namespace", + req: &v1.ListTenantMembersRequest{ + TenantId: "acme", + IncludeInherited: pointer.Pointer(true), + Namespace: "other", + }, + prepare: func() { + err := tenantStore.Create(ctx, &v1.Tenant{Meta: &v1.Meta{Id: "azure"}}) + require.NoError(t, err) + err = tenantMemberStore.Create(ctx, &v1.TenantMember{Meta: &v1.Meta{Annotations: map[string]string{"role": "admin"}}, MemberId: "azure", TenantId: "acme"}) + require.NoError(t, err) + }, + want: &v1.ListTenantMembersResponse{ + Tenants: nil, + }, + wantErr: nil, + }, + { + name: "direct membership in namespace", + req: &v1.ListTenantMembersRequest{ + TenantId: "acme", + IncludeInherited: pointer.Pointer(true), + Namespace: "a", + }, + prepare: func() { + err := tenantStore.Create(ctx, &v1.Tenant{Meta: &v1.Meta{Id: "azure"}}) + require.NoError(t, err) + err = tenantMemberStore.Create(ctx, &v1.TenantMember{Meta: &v1.Meta{Annotations: map[string]string{"role": "admin"}}, Namespace: "a", MemberId: "azure", TenantId: "acme"}) + require.NoError(t, err) + }, + want: &v1.ListTenantMembersResponse{ + Tenants: []*v1.TenantWithMembershipAnnotations{ + { + Tenant: &v1.Tenant{ + Meta: &v1.Meta{ + Kind: "Tenant", + Apiversion: "v1", + Id: "azure", + }, + }, + TenantAnnotations: map[string]string{"role": "admin"}, + }, + }, + }, + wantErr: nil, + }, { name: "indirect membership", req: &v1.ListTenantMembersRequest{ @@ -1102,7 +1261,7 @@ func Test_tenantService_ListTenantMembers(t *testing.T) { } }) - if diff := cmp.Diff(tt.want, got.Msg, cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { + if diff := cmp.Diff(tt.want, pointer.SafeDeref(got).Msg, cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { t.Errorf("(-want +got):\n%s", diff) } }) diff --git a/pkg/service/tenantmember.go b/pkg/service/tenantmember.go index 8605b09..321d711 100644 --- a/pkg/service/tenantmember.go +++ b/pkg/service/tenantmember.go @@ -38,44 +38,67 @@ func (s *tenantMemberService) Create(ctx context.Context, rq *connect.Request[v1 return nil, err } - _, err = s.tenantStore.Get(ctx, tenantMember.GetMemberId()) - if err != nil && v1.IsNotFound(err) { - return nil, status.Error(codes.NotFound, fmt.Sprintf("unable to find member:%s for tenantMember", tenantMember.GetMemberId())) - } - if err != nil { - return nil, err - } - // allow create without sending Meta if tenantMember.Meta == nil { tenantMember.Meta = &v1.Meta{} } + err = s.tenantMemberStore.Create(ctx, tenantMember) + return connect.NewResponse(tenantMember.NewTenantMemberResponse()), err } + func (s *tenantMemberService) Update(ctx context.Context, rq *connect.Request[v1.TenantMemberUpdateRequest]) (*connect.Response[v1.TenantMemberResponse], error) { req := rq.Msg tenantMember := req.TenantMember - err := s.tenantMemberStore.Update(ctx, tenantMember) + + old, err := s.tenantMemberStore.Get(ctx, tenantMember.Meta.Id) + if err != nil { + return nil, err + } + + if old.TenantId != tenantMember.TenantId { + return nil, status.Error(codes.InvalidArgument, "updating the tenant id of a tenant member is not allowed") + } + if old.MemberId != tenantMember.MemberId { + return nil, status.Error(codes.InvalidArgument, "updating the member id of a tenant member is not allowed") + } + if old.Namespace != tenantMember.Namespace { + return nil, status.Error(codes.InvalidArgument, "updating the namespace of a tenant member is not allowed") + } + + err = s.tenantMemberStore.Update(ctx, tenantMember) + return connect.NewResponse(tenantMember.NewTenantMemberResponse()), err } + func (s *tenantMemberService) Delete(ctx context.Context, rq *connect.Request[v1.TenantMemberDeleteRequest]) (*connect.Response[v1.TenantMemberResponse], error) { req := rq.Msg + tenantMember := req.NewTenantMember() + err := s.tenantMemberStore.Delete(ctx, tenantMember.Meta.Id) + return connect.NewResponse(tenantMember.NewTenantMemberResponse()), err } + func (s *tenantMemberService) Get(ctx context.Context, rq *connect.Request[v1.TenantMemberGetRequest]) (*connect.Response[v1.TenantMemberResponse], error) { req := rq.Msg + tenantMember, err := s.tenantMemberStore.Get(ctx, req.Id) if err != nil { return nil, err } + return connect.NewResponse(tenantMember.NewTenantMemberResponse()), nil } + func (s *tenantMemberService) Find(ctx context.Context, rq *connect.Request[v1.TenantMemberFindRequest]) (*connect.Response[v1.TenantMemberListResponse], error) { req := rq.Msg - filter := make(map[string]any) + filter := map[string]any{ + "COALESCE(tenantmember ->> 'namespace', '')": req.Namespace, + } + if req.TenantId != nil { filter["tenantmember ->> 'tenant_id'"] = req.TenantId } @@ -87,11 +110,14 @@ func (s *tenantMemberService) Find(ctx context.Context, rq *connect.Request[v1.T f := fmt.Sprintf("tenantmember -> 'meta' -> 'annotations' ->> '%s'", key) filter[f] = value } + res, _, err := s.tenantMemberStore.Find(ctx, nil, filter) if err != nil { return nil, err } + resp := new(v1.TenantMemberListResponse) resp.TenantMembers = append(resp.TenantMembers, res...) + return connect.NewResponse(resp), nil } diff --git a/pkg/service/tenantmember_test.go b/pkg/service/tenantmember_test.go index d3db412..291cc89 100644 --- a/pkg/service/tenantmember_test.go +++ b/pkg/service/tenantmember_test.go @@ -3,16 +3,23 @@ package service import ( "context" "log/slog" + "slices" "connectrpc.com/connect" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" v1 "github.com/metal-stack/masterdata-api/api/v1" "github.com/metal-stack/metal-lib/pkg/pointer" + "github.com/metal-stack/metal-lib/pkg/testcommon" "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + "google.golang.org/protobuf/runtime/protoimpl" "testing" + "github.com/metal-stack/masterdata-api/pkg/datastore" "github.com/metal-stack/masterdata-api/pkg/test/mocks" ) @@ -27,7 +34,6 @@ func TestCreateTenantMember(t *testing.T) { ctx := context.Background() t1 := &v1.Tenant{} - m1 := &v1.Tenant{} pm1 := &v1.TenantMember{ TenantId: "t1", MemberId: "m1", @@ -36,7 +42,6 @@ func TestCreateTenantMember(t *testing.T) { TenantMember: pm1, } tenantStorageMock.On("Get", ctx, pm1.GetTenantId()).Return(t1, nil) - tenantStorageMock.On("Get", ctx, pm1.GetMemberId()).Return(m1, nil) storageMock.On("Create", ctx, pm1).Return(nil) resp, err := ts.Create(ctx, connect.NewRequest(pmcr)) require.NoError(t, err) @@ -45,39 +50,6 @@ func TestCreateTenantMember(t *testing.T) { assert.Equal(t, pmcr.TenantMember.TenantId, resp.Msg.TenantMember.GetTenantId()) } -func TestUpdateTenantMember(t *testing.T) { - storageMock := mocks.NewMockStorage[*v1.TenantMember](t) - tenantStorageMock := mocks.NewMockStorage[*v1.Tenant](t) - ts := &tenantMemberService{ - tenantMemberStore: storageMock, - tenantStore: tenantStorageMock, - log: slog.Default(), - } - ctx := context.Background() - - meta := &v1.Meta{Id: "p2", Annotations: map[string]string{"key": "value"}} - pm1 := &v1.TenantMember{ - Meta: meta, - TenantId: "p1", - MemberId: "t1", - } - meta.Annotations = map[string]string{"key": "value2"} - pmur := &v1.TenantMemberUpdateRequest{ - TenantMember: &v1.TenantMember{ - Meta: meta, - TenantId: "p1", - MemberId: "t1", - }, - } - - storageMock.On("Update", ctx, pm1).Return(nil) - resp, err := ts.Update(ctx, connect.NewRequest(pmur)) - require.NoError(t, err) - assert.NotNil(t, resp) - assert.NotNil(t, resp.Msg.TenantMember) - assert.Equal(t, pmur.TenantMember.Meta.Annotations, resp.Msg.TenantMember.Meta.Annotations) -} - func TestDeleteTenantMember(t *testing.T) { storageMock := mocks.NewMockStorage[*v1.TenantMember](t) tenantStorageMock := mocks.NewMockStorage[*v1.Tenant](t) @@ -126,50 +98,448 @@ func TestGetTenantMember(t *testing.T) { assert.Equal(t, tgr.Id, resp.Msg.TenantMember.GetMeta().GetId()) } -func TestFindTenantMemberByTenant(t *testing.T) { - storageMock := mocks.NewMockStorage[*v1.TenantMember](t) - tenantStorageMock := mocks.NewMockStorage[*v1.Tenant](t) - ts := &tenantMemberService{ - tenantMemberStore: storageMock, - tenantStore: tenantStorageMock, - log: slog.Default(), +func TestFindTenantMember(t *testing.T) { + ctx := t.Context() + ves := []datastore.Entity{ + &v1.Tenant{}, + &v1.TenantMember{}, } - ctx := context.Background() - // filter by name - var t6s []*v1.TenantMember - tfr := &v1.TenantMemberFindRequest{ - TenantId: pointer.Pointer("p1"), + container, db, err := StartPostgres(ctx, ves...) + require.NoError(t, err) + defer func() { + require.NoError(t, db.Close()) + require.NoError(t, container.Terminate(ctx)) + }() + + var ( + tenantMemberStore = datastore.New(log, db, &v1.TenantMember{}) + tenantStore = datastore.New(log, db, &v1.Tenant{}) + + testTenant1 = &v1.Tenant{ + Meta: &v1.Meta{ + Id: "tenant-1", + Kind: "Tenant", + Apiversion: "v1", + Version: 1, + }, + Name: "tenant 1", + Description: "test tenant 1", + } + testTenant2 = &v1.Tenant{ + Meta: &v1.Meta{ + Id: "tenant-2", + Kind: "Tenant", + Apiversion: "v1", + Version: 1, + }, + Name: "tenant 2", + Description: "test tenant 2", + } + testTenantMember1 = &v1.TenantMember{ + Meta: &v1.Meta{ + Id: "1", + Kind: "TenantMember", + Apiversion: "v1", + Version: 1, + Annotations: map[string]string{ + "role": "owner", + }, + Labels: []string{"a", "b"}, + }, + TenantId: "tenant-1", + MemberId: "tenant-1", + Namespace: "a", + } + testTenantMember2 = &v1.TenantMember{ + Meta: &v1.Meta{ + Id: "2", + Kind: "TenantMember", + Apiversion: "v1", + Version: 1, + Annotations: map[string]string{ + "role": "owner", + }, + Labels: []string{"c", "d"}, + }, + TenantId: "tenant-2", + MemberId: "tenant-2", + Namespace: "a", + } + testTenantMember3 = &v1.TenantMember{ + Meta: &v1.Meta{ + Id: "3", + Kind: "TenantMember", + Apiversion: "v1", + Version: 1, + Annotations: map[string]string{ + "role": "editor", + }, + Labels: []string{"e", "f"}, + }, + TenantId: "tenant-1", + MemberId: "tenant-2", + Namespace: "a", + } + testTenantMember4 = &v1.TenantMember{ + Meta: &v1.Meta{ + Id: "4", + Kind: "TenantMember", + Apiversion: "v1", + Version: 1, + Annotations: map[string]string{ + "role": "editor", + }, + Labels: []string{"e", "f"}, + }, + TenantId: "tenant-1", + MemberId: "tenant-2", + Namespace: "", + } + + service = &tenantMemberService{ + log: log, + tenantMemberStore: tenantMemberStore, + tenantStore: tenantStore, + } + ) + + tests := []struct { + name string + prepare func() + req *v1.TenantMemberFindRequest + want *v1.TenantMemberListResponse + wantErr error + }{ + { + name: "find by tenant", + req: &v1.TenantMemberFindRequest{ + TenantId: pointer.Pointer("tenant-1"), + Namespace: "a", + }, + prepare: func() { + require.NoError(t, tenantStore.Create(ctx, testTenant1)) + require.NoError(t, tenantStore.Create(ctx, testTenant2)) + require.NoError(t, tenantMemberStore.Create(ctx, testTenantMember1)) + require.NoError(t, tenantMemberStore.Create(ctx, testTenantMember2)) + require.NoError(t, tenantMemberStore.Create(ctx, testTenantMember3)) + require.NoError(t, tenantMemberStore.Create(ctx, testTenantMember4)) + }, + want: &v1.TenantMemberListResponse{ + TenantMembers: []*v1.TenantMember{ + testTenantMember1, + testTenantMember3, + }, + }, + wantErr: nil, + }, + { + name: "find by tenant id (no results) #1", + req: &v1.TenantMemberFindRequest{ + TenantId: pointer.Pointer("no-result"), + Namespace: "a", + }, + prepare: func() { + require.NoError(t, tenantStore.Create(ctx, testTenant1)) + require.NoError(t, tenantStore.Create(ctx, testTenant2)) + require.NoError(t, tenantMemberStore.Create(ctx, testTenantMember1)) + require.NoError(t, tenantMemberStore.Create(ctx, testTenantMember2)) + require.NoError(t, tenantMemberStore.Create(ctx, testTenantMember3)) + require.NoError(t, tenantMemberStore.Create(ctx, testTenantMember4)) + }, + want: &v1.TenantMemberListResponse{ + TenantMembers: nil, + }, + wantErr: nil, + }, + { + name: "find by tenant id (no results) #2", + req: &v1.TenantMemberFindRequest{ + TenantId: pointer.Pointer("tenant-1"), + Namespace: "wrong-namespace", + }, + prepare: func() { + require.NoError(t, tenantStore.Create(ctx, testTenant1)) + require.NoError(t, tenantStore.Create(ctx, testTenant2)) + require.NoError(t, tenantMemberStore.Create(ctx, testTenantMember1)) + require.NoError(t, tenantMemberStore.Create(ctx, testTenantMember2)) + require.NoError(t, tenantMemberStore.Create(ctx, testTenantMember3)) + require.NoError(t, tenantMemberStore.Create(ctx, testTenantMember4)) + }, + want: &v1.TenantMemberListResponse{ + TenantMembers: nil, + }, + wantErr: nil, + }, + { + name: "find by tenant", + req: &v1.TenantMemberFindRequest{ + TenantId: pointer.Pointer("tenant-2"), + Namespace: "a", + }, + prepare: func() { + require.NoError(t, tenantStore.Create(ctx, testTenant1)) + require.NoError(t, tenantStore.Create(ctx, testTenant2)) + require.NoError(t, tenantMemberStore.Create(ctx, testTenantMember1)) + require.NoError(t, tenantMemberStore.Create(ctx, testTenantMember2)) + require.NoError(t, tenantMemberStore.Create(ctx, testTenantMember3)) + require.NoError(t, tenantMemberStore.Create(ctx, testTenantMember4)) + }, + want: &v1.TenantMemberListResponse{ + TenantMembers: []*v1.TenantMember{ + testTenantMember2, + }, + }, + wantErr: nil, + }, + { + name: "find by annotation", + req: &v1.TenantMemberFindRequest{ + Annotations: map[string]string{"role": "owner"}, + Namespace: "a", + }, + prepare: func() { + require.NoError(t, tenantStore.Create(ctx, testTenant1)) + require.NoError(t, tenantStore.Create(ctx, testTenant2)) + require.NoError(t, tenantMemberStore.Create(ctx, testTenantMember1)) + require.NoError(t, tenantMemberStore.Create(ctx, testTenantMember2)) + require.NoError(t, tenantMemberStore.Create(ctx, testTenantMember3)) + require.NoError(t, tenantMemberStore.Create(ctx, testTenantMember4)) + }, + want: &v1.TenantMemberListResponse{ + TenantMembers: []*v1.TenantMember{ + testTenantMember1, + testTenantMember2, + }, + }, + wantErr: nil, + }, } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + for _, ve := range ves { + _, err := db.ExecContext(ctx, "TRUNCATE TABLE "+ve.TableName()) + require.NoError(t, err) + } - f2 := make(map[string]any) - f2["tenantmember ->> 'tenant_id'"] = pointer.Pointer("p1") - storageMock.On("Find", ctx, mock.Anything, []any{f2}).Return(t6s, nil, nil) - resp, err := ts.Find(ctx, connect.NewRequest(tfr)) - require.NoError(t, err) - assert.NotNil(t, resp) -} + if tt.prepare != nil { + tt.prepare() + } -func TestFindTenantMemberByMember(t *testing.T) { - storageMock := mocks.NewMockStorage[*v1.TenantMember](t) - tenantStorageMock := mocks.NewMockStorage[*v1.Tenant](t) - ts := &tenantMemberService{ - tenantMemberStore: storageMock, - tenantStore: tenantStorageMock, - log: slog.Default(), + got, err := service.Find(ctx, connect.NewRequest(tt.req)) + if diff := cmp.Diff(err, tt.wantErr); diff != "" { + t.Errorf("(-want +got):\n%s", diff) + return + } + + slices.SortFunc(got.Msg.TenantMembers, func(i, j *v1.TenantMember) int { + if i.Meta.Id < j.Meta.Id { + return -1 + } else { + return 1 + } + }) + + if diff := cmp.Diff(tt.want, pointer.SafeDeref(got).Msg, cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { + t.Errorf("(-want +got):\n%s", diff) + } + }) } - ctx := context.Background() +} - // filter by name - var t6s []*v1.TenantMember - tfr := &v1.TenantMemberFindRequest{ - MemberId: pointer.Pointer("t1"), +func TestUpdateTenantMember(t *testing.T) { + ctx := t.Context() + ves := []datastore.Entity{ + &v1.Tenant{}, + &v1.TenantMember{}, } - f2 := make(map[string]any) - f2["tenantmember ->> 'member_id'"] = pointer.Pointer("t1") - storageMock.On("Find", ctx, mock.Anything, []any{f2}).Return(t6s, nil, nil) - resp, err := ts.Find(ctx, connect.NewRequest(tfr)) + container, db, err := StartPostgres(ctx, ves...) require.NoError(t, err) - assert.NotNil(t, resp) + defer func() { + require.NoError(t, db.Close()) + require.NoError(t, container.Terminate(ctx)) + }() + + var ( + tenantMemberStore = datastore.New(log, db, &v1.TenantMember{}) + tenantStore = datastore.New(log, db, &v1.Tenant{}) + + service = &tenantMemberService{ + log: log, + tenantMemberStore: tenantMemberStore, + tenantStore: tenantStore, + } + ) + + tests := []struct { + name string + prepare func() + req *v1.TenantMemberUpdateRequest + want *v1.TenantMemberResponse + wantErr error + }{ + { + name: "update mutable fields", + req: &v1.TenantMemberUpdateRequest{ + TenantMember: &v1.TenantMember{ + Meta: &v1.Meta{ + Id: "1", + Version: 1, + Annotations: map[string]string{ + "role": "owner", + }, + Labels: []string{"a", "b"}, + }, + TenantId: "tenant-1", + MemberId: "tenant-1", + Namespace: "a", + }, + }, + prepare: func() { + require.NoError(t, tenantMemberStore.Create(ctx, &v1.TenantMember{ + Meta: &v1.Meta{ + Id: "1", + Kind: "TenantMember", + Apiversion: "v1", + Version: 1, + }, + TenantId: "tenant-1", + MemberId: "tenant-1", + Namespace: "a", + })) + }, + want: &v1.TenantMemberResponse{ + TenantMember: &v1.TenantMember{ + Meta: &v1.Meta{ + Id: "1", + Kind: "TenantMember", + Apiversion: "v1", + Version: 2, + Annotations: map[string]string{ + "role": "owner", + }, + Labels: []string{"a", "b"}, + }, + TenantId: "tenant-1", + MemberId: "tenant-1", + Namespace: "a", + }, + }, + wantErr: nil, + }, + { + name: "unable to update namespace", + req: &v1.TenantMemberUpdateRequest{ + TenantMember: &v1.TenantMember{ + Meta: &v1.Meta{ + Id: "1", + Version: 1, + }, + TenantId: "tenant-1", + MemberId: "tenant-1", + Namespace: "b", + }, + }, + prepare: func() { + require.NoError(t, tenantMemberStore.Create(ctx, &v1.TenantMember{ + Meta: &v1.Meta{ + Id: "1", + Kind: "TenantMember", + Apiversion: "v1", + Version: 1, + }, + TenantId: "tenant-1", + MemberId: "tenant-1", + Namespace: "a", + })) + }, + want: nil, + wantErr: status.Error(codes.InvalidArgument, "updating the namespace of a tenant member is not allowed"), + }, + { + name: "unable to update tenant id", + req: &v1.TenantMemberUpdateRequest{ + TenantMember: &v1.TenantMember{ + Meta: &v1.Meta{ + Id: "1", + Version: 1, + }, + TenantId: "tenant-2", + MemberId: "tenant-1", + Namespace: "a", + }, + }, + prepare: func() { + require.NoError(t, tenantMemberStore.Create(ctx, &v1.TenantMember{ + Meta: &v1.Meta{ + Id: "1", + Kind: "TenantMember", + Apiversion: "v1", + Version: 1, + }, + TenantId: "tenant-1", + MemberId: "tenant-1", + Namespace: "a", + })) + }, + want: nil, + wantErr: status.Error(codes.InvalidArgument, "updating the tenant id of a tenant member is not allowed"), + }, + { + name: "unable to update member id", + req: &v1.TenantMemberUpdateRequest{ + TenantMember: &v1.TenantMember{ + Meta: &v1.Meta{ + Id: "1", + Version: 1, + }, + TenantId: "tenant-1", + MemberId: "tenant-2", + Namespace: "a", + }, + }, + prepare: func() { + require.NoError(t, tenantMemberStore.Create(ctx, &v1.TenantMember{ + Meta: &v1.Meta{ + Id: "1", + Kind: "TenantMember", + Apiversion: "v1", + Version: 1, + }, + TenantId: "tenant-1", + MemberId: "tenant-1", + Namespace: "a", + })) + }, + want: nil, + wantErr: status.Error(codes.InvalidArgument, "updating the member id of a tenant member is not allowed"), + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + for _, ve := range ves { + _, err := db.ExecContext(ctx, "TRUNCATE TABLE "+ve.TableName()) + require.NoError(t, err) + } + + if tt.prepare != nil { + tt.prepare() + } + + got, err := service.Update(ctx, connect.NewRequest(tt.req)) + if diff := cmp.Diff(err, tt.wantErr, cmpopts.EquateErrors()); diff != "" { + t.Errorf("(-want +got):\n%s", diff) + return + } + + if err == nil { + assert.NotNil(t, got.Msg.TenantMember.Meta.UpdatedTime) + } + + if diff := cmp.Diff(tt.want, pointer.SafeDeref(got).Msg, cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime", "UpdatedTime"), testcommon.IgnoreUnexported()); diff != "" { + t.Errorf("(-want +got):\n%s", diff) + } + }) + } } diff --git a/proto/api/v1/project_member.proto b/proto/api/v1/project_member.proto index 20a646f..58fe20f 100644 --- a/proto/api/v1/project_member.proto +++ b/proto/api/v1/project_member.proto @@ -17,6 +17,8 @@ message ProjectMember { Meta meta = 1; string project_id = 2; string tenant_id = 4; + // Namespace introduces the possibility to associate memberships for different applications that use the masterdata-api as a backend. + string namespace = 5; } message ProjectMemberCreateRequest { @@ -39,6 +41,7 @@ message ProjectMemberFindRequest { optional string project_id = 1; optional string tenant_id = 2; map annotations = 6; + string namespace = 7; } message ProjectMemberResponse { diff --git a/proto/api/v1/tenant.proto b/proto/api/v1/tenant.proto index 64181aa..bec0f25 100644 --- a/proto/api/v1/tenant.proto +++ b/proto/api/v1/tenant.proto @@ -25,16 +25,19 @@ service TenantService { message FindParticipatingProjectsRequest { string tenant_id = 1; optional bool include_inherited = 2; + string namespace = 3; } message FindParticipatingTenantsRequest { string tenant_id = 1; optional bool include_inherited = 2; + string namespace = 3; } message ListTenantMembersRequest { string tenant_id = 1; optional bool include_inherited = 2; + string namespace = 3; } message ListTenantMembersResponse { diff --git a/proto/api/v1/tenant_member.proto b/proto/api/v1/tenant_member.proto index 840837e..d094f59 100644 --- a/proto/api/v1/tenant_member.proto +++ b/proto/api/v1/tenant_member.proto @@ -19,6 +19,8 @@ message TenantMember { string tenant_id = 2; // MemberId is the id of the member tenant string member_id = 3; + // Namespace introduces the possibility to associate memberships for different applications that use the masterdata-api as a backend. + string namespace = 4; } message TenantMemberCreateRequest { @@ -41,6 +43,7 @@ message TenantMemberFindRequest { optional string tenant_id = 1; optional string member_id = 2; map annotations = 6; + string namespace = 7; } message TenantMemberResponse { From 513f2cf059fd02fe0b8bafac93978261d6dec38b Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Mon, 6 Oct 2025 16:05:21 +0200 Subject: [PATCH 32/39] Migrate to connect-simple --- api/v1/apiv1connect/project.connect.go | 96 +++++++----- api/v1/apiv1connect/project_member.connect.go | 80 ++++++---- api/v1/apiv1connect/tenant.connect.go | 144 +++++++++++------- api/v1/apiv1connect/tenant_member.connect.go | 80 ++++++---- api/v1/apiv1connect/version.connect.go | 16 +- api/v1/common.pb.go | 2 +- api/v1/iam.pb.go | 2 +- api/v1/meta.pb.go | 2 +- api/v1/project.pb.go | 2 +- api/v1/project_member.pb.go | 2 +- api/v1/quota.pb.go | 2 +- api/v1/tenant.pb.go | 2 +- api/v1/tenant_member.pb.go | 2 +- api/v1/version.pb.go | 2 +- client/main.go | 105 +++++++------ go.mod | 43 +++--- go.sum | 98 ++++++------ pkg/client/client_test.go | 116 +++++++------- pkg/service/project.go | 85 +++++------ pkg/service/project_test.go | 37 +++-- pkg/service/projectmember.go | 48 +++--- pkg/service/projectmember_test.go | 31 ++-- pkg/service/tenant.go | 102 ++++++------- pkg/service/tenant_test.go | 49 +++--- pkg/service/tenantmember.go | 48 +++--- pkg/service/tenantmember_test.go | 31 ++-- pkg/service/version.go | 7 +- pkg/service/version_test.go | 11 +- proto/Makefile | 2 +- proto/buf.gen.yaml | 6 +- 30 files changed, 655 insertions(+), 598 deletions(-) diff --git a/api/v1/apiv1connect/project.connect.go b/api/v1/apiv1connect/project.connect.go index d58609d..efee546 100644 --- a/api/v1/apiv1connect/project.connect.go +++ b/api/v1/apiv1connect/project.connect.go @@ -50,12 +50,12 @@ const ( // ProjectServiceClient is a client for the api.v1.ProjectService service. type ProjectServiceClient interface { - Create(context.Context, *connect.Request[v1.ProjectCreateRequest]) (*connect.Response[v1.ProjectResponse], error) - Update(context.Context, *connect.Request[v1.ProjectUpdateRequest]) (*connect.Response[v1.ProjectResponse], error) - Delete(context.Context, *connect.Request[v1.ProjectDeleteRequest]) (*connect.Response[v1.ProjectResponse], error) - Get(context.Context, *connect.Request[v1.ProjectGetRequest]) (*connect.Response[v1.ProjectResponse], error) - GetHistory(context.Context, *connect.Request[v1.ProjectGetHistoryRequest]) (*connect.Response[v1.ProjectResponse], error) - Find(context.Context, *connect.Request[v1.ProjectFindRequest]) (*connect.Response[v1.ProjectListResponse], error) + Create(context.Context, *v1.ProjectCreateRequest) (*v1.ProjectResponse, error) + Update(context.Context, *v1.ProjectUpdateRequest) (*v1.ProjectResponse, error) + Delete(context.Context, *v1.ProjectDeleteRequest) (*v1.ProjectResponse, error) + Get(context.Context, *v1.ProjectGetRequest) (*v1.ProjectResponse, error) + GetHistory(context.Context, *v1.ProjectGetHistoryRequest) (*v1.ProjectResponse, error) + Find(context.Context, *v1.ProjectFindRequest) (*v1.ProjectListResponse, error) } // NewProjectServiceClient constructs a client for the api.v1.ProjectService service. By default, it @@ -119,43 +119,67 @@ type projectServiceClient struct { } // Create calls api.v1.ProjectService.Create. -func (c *projectServiceClient) Create(ctx context.Context, req *connect.Request[v1.ProjectCreateRequest]) (*connect.Response[v1.ProjectResponse], error) { - return c.create.CallUnary(ctx, req) +func (c *projectServiceClient) Create(ctx context.Context, req *v1.ProjectCreateRequest) (*v1.ProjectResponse, error) { + response, err := c.create.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err } // Update calls api.v1.ProjectService.Update. -func (c *projectServiceClient) Update(ctx context.Context, req *connect.Request[v1.ProjectUpdateRequest]) (*connect.Response[v1.ProjectResponse], error) { - return c.update.CallUnary(ctx, req) +func (c *projectServiceClient) Update(ctx context.Context, req *v1.ProjectUpdateRequest) (*v1.ProjectResponse, error) { + response, err := c.update.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err } // Delete calls api.v1.ProjectService.Delete. -func (c *projectServiceClient) Delete(ctx context.Context, req *connect.Request[v1.ProjectDeleteRequest]) (*connect.Response[v1.ProjectResponse], error) { - return c.delete.CallUnary(ctx, req) +func (c *projectServiceClient) Delete(ctx context.Context, req *v1.ProjectDeleteRequest) (*v1.ProjectResponse, error) { + response, err := c.delete.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err } // Get calls api.v1.ProjectService.Get. -func (c *projectServiceClient) Get(ctx context.Context, req *connect.Request[v1.ProjectGetRequest]) (*connect.Response[v1.ProjectResponse], error) { - return c.get.CallUnary(ctx, req) +func (c *projectServiceClient) Get(ctx context.Context, req *v1.ProjectGetRequest) (*v1.ProjectResponse, error) { + response, err := c.get.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err } // GetHistory calls api.v1.ProjectService.GetHistory. -func (c *projectServiceClient) GetHistory(ctx context.Context, req *connect.Request[v1.ProjectGetHistoryRequest]) (*connect.Response[v1.ProjectResponse], error) { - return c.getHistory.CallUnary(ctx, req) +func (c *projectServiceClient) GetHistory(ctx context.Context, req *v1.ProjectGetHistoryRequest) (*v1.ProjectResponse, error) { + response, err := c.getHistory.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err } // Find calls api.v1.ProjectService.Find. -func (c *projectServiceClient) Find(ctx context.Context, req *connect.Request[v1.ProjectFindRequest]) (*connect.Response[v1.ProjectListResponse], error) { - return c.find.CallUnary(ctx, req) +func (c *projectServiceClient) Find(ctx context.Context, req *v1.ProjectFindRequest) (*v1.ProjectListResponse, error) { + response, err := c.find.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err } // ProjectServiceHandler is an implementation of the api.v1.ProjectService service. type ProjectServiceHandler interface { - Create(context.Context, *connect.Request[v1.ProjectCreateRequest]) (*connect.Response[v1.ProjectResponse], error) - Update(context.Context, *connect.Request[v1.ProjectUpdateRequest]) (*connect.Response[v1.ProjectResponse], error) - Delete(context.Context, *connect.Request[v1.ProjectDeleteRequest]) (*connect.Response[v1.ProjectResponse], error) - Get(context.Context, *connect.Request[v1.ProjectGetRequest]) (*connect.Response[v1.ProjectResponse], error) - GetHistory(context.Context, *connect.Request[v1.ProjectGetHistoryRequest]) (*connect.Response[v1.ProjectResponse], error) - Find(context.Context, *connect.Request[v1.ProjectFindRequest]) (*connect.Response[v1.ProjectListResponse], error) + Create(context.Context, *v1.ProjectCreateRequest) (*v1.ProjectResponse, error) + Update(context.Context, *v1.ProjectUpdateRequest) (*v1.ProjectResponse, error) + Delete(context.Context, *v1.ProjectDeleteRequest) (*v1.ProjectResponse, error) + Get(context.Context, *v1.ProjectGetRequest) (*v1.ProjectResponse, error) + GetHistory(context.Context, *v1.ProjectGetHistoryRequest) (*v1.ProjectResponse, error) + Find(context.Context, *v1.ProjectFindRequest) (*v1.ProjectListResponse, error) } // NewProjectServiceHandler builds an HTTP handler from the service implementation. It returns the @@ -165,37 +189,37 @@ type ProjectServiceHandler interface { // and JSON codecs. They also support gzip compression. func NewProjectServiceHandler(svc ProjectServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { projectServiceMethods := v1.File_api_v1_project_proto.Services().ByName("ProjectService").Methods() - projectServiceCreateHandler := connect.NewUnaryHandler( + projectServiceCreateHandler := connect.NewUnaryHandlerSimple( ProjectServiceCreateProcedure, svc.Create, connect.WithSchema(projectServiceMethods.ByName("Create")), connect.WithHandlerOptions(opts...), ) - projectServiceUpdateHandler := connect.NewUnaryHandler( + projectServiceUpdateHandler := connect.NewUnaryHandlerSimple( ProjectServiceUpdateProcedure, svc.Update, connect.WithSchema(projectServiceMethods.ByName("Update")), connect.WithHandlerOptions(opts...), ) - projectServiceDeleteHandler := connect.NewUnaryHandler( + projectServiceDeleteHandler := connect.NewUnaryHandlerSimple( ProjectServiceDeleteProcedure, svc.Delete, connect.WithSchema(projectServiceMethods.ByName("Delete")), connect.WithHandlerOptions(opts...), ) - projectServiceGetHandler := connect.NewUnaryHandler( + projectServiceGetHandler := connect.NewUnaryHandlerSimple( ProjectServiceGetProcedure, svc.Get, connect.WithSchema(projectServiceMethods.ByName("Get")), connect.WithHandlerOptions(opts...), ) - projectServiceGetHistoryHandler := connect.NewUnaryHandler( + projectServiceGetHistoryHandler := connect.NewUnaryHandlerSimple( ProjectServiceGetHistoryProcedure, svc.GetHistory, connect.WithSchema(projectServiceMethods.ByName("GetHistory")), connect.WithHandlerOptions(opts...), ) - projectServiceFindHandler := connect.NewUnaryHandler( + projectServiceFindHandler := connect.NewUnaryHandlerSimple( ProjectServiceFindProcedure, svc.Find, connect.WithSchema(projectServiceMethods.ByName("Find")), @@ -224,26 +248,26 @@ func NewProjectServiceHandler(svc ProjectServiceHandler, opts ...connect.Handler // UnimplementedProjectServiceHandler returns CodeUnimplemented from all methods. type UnimplementedProjectServiceHandler struct{} -func (UnimplementedProjectServiceHandler) Create(context.Context, *connect.Request[v1.ProjectCreateRequest]) (*connect.Response[v1.ProjectResponse], error) { +func (UnimplementedProjectServiceHandler) Create(context.Context, *v1.ProjectCreateRequest) (*v1.ProjectResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.ProjectService.Create is not implemented")) } -func (UnimplementedProjectServiceHandler) Update(context.Context, *connect.Request[v1.ProjectUpdateRequest]) (*connect.Response[v1.ProjectResponse], error) { +func (UnimplementedProjectServiceHandler) Update(context.Context, *v1.ProjectUpdateRequest) (*v1.ProjectResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.ProjectService.Update is not implemented")) } -func (UnimplementedProjectServiceHandler) Delete(context.Context, *connect.Request[v1.ProjectDeleteRequest]) (*connect.Response[v1.ProjectResponse], error) { +func (UnimplementedProjectServiceHandler) Delete(context.Context, *v1.ProjectDeleteRequest) (*v1.ProjectResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.ProjectService.Delete is not implemented")) } -func (UnimplementedProjectServiceHandler) Get(context.Context, *connect.Request[v1.ProjectGetRequest]) (*connect.Response[v1.ProjectResponse], error) { +func (UnimplementedProjectServiceHandler) Get(context.Context, *v1.ProjectGetRequest) (*v1.ProjectResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.ProjectService.Get is not implemented")) } -func (UnimplementedProjectServiceHandler) GetHistory(context.Context, *connect.Request[v1.ProjectGetHistoryRequest]) (*connect.Response[v1.ProjectResponse], error) { +func (UnimplementedProjectServiceHandler) GetHistory(context.Context, *v1.ProjectGetHistoryRequest) (*v1.ProjectResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.ProjectService.GetHistory is not implemented")) } -func (UnimplementedProjectServiceHandler) Find(context.Context, *connect.Request[v1.ProjectFindRequest]) (*connect.Response[v1.ProjectListResponse], error) { +func (UnimplementedProjectServiceHandler) Find(context.Context, *v1.ProjectFindRequest) (*v1.ProjectListResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.ProjectService.Find is not implemented")) } diff --git a/api/v1/apiv1connect/project_member.connect.go b/api/v1/apiv1connect/project_member.connect.go index 7f9d54b..396dfaf 100644 --- a/api/v1/apiv1connect/project_member.connect.go +++ b/api/v1/apiv1connect/project_member.connect.go @@ -52,11 +52,11 @@ const ( // ProjectMemberServiceClient is a client for the api.v1.ProjectMemberService service. type ProjectMemberServiceClient interface { - Create(context.Context, *connect.Request[v1.ProjectMemberCreateRequest]) (*connect.Response[v1.ProjectMemberResponse], error) - Update(context.Context, *connect.Request[v1.ProjectMemberUpdateRequest]) (*connect.Response[v1.ProjectMemberResponse], error) - Delete(context.Context, *connect.Request[v1.ProjectMemberDeleteRequest]) (*connect.Response[v1.ProjectMemberResponse], error) - Get(context.Context, *connect.Request[v1.ProjectMemberGetRequest]) (*connect.Response[v1.ProjectMemberResponse], error) - Find(context.Context, *connect.Request[v1.ProjectMemberFindRequest]) (*connect.Response[v1.ProjectMemberListResponse], error) + Create(context.Context, *v1.ProjectMemberCreateRequest) (*v1.ProjectMemberResponse, error) + Update(context.Context, *v1.ProjectMemberUpdateRequest) (*v1.ProjectMemberResponse, error) + Delete(context.Context, *v1.ProjectMemberDeleteRequest) (*v1.ProjectMemberResponse, error) + Get(context.Context, *v1.ProjectMemberGetRequest) (*v1.ProjectMemberResponse, error) + Find(context.Context, *v1.ProjectMemberFindRequest) (*v1.ProjectMemberListResponse, error) } // NewProjectMemberServiceClient constructs a client for the api.v1.ProjectMemberService service. By @@ -113,37 +113,57 @@ type projectMemberServiceClient struct { } // Create calls api.v1.ProjectMemberService.Create. -func (c *projectMemberServiceClient) Create(ctx context.Context, req *connect.Request[v1.ProjectMemberCreateRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { - return c.create.CallUnary(ctx, req) +func (c *projectMemberServiceClient) Create(ctx context.Context, req *v1.ProjectMemberCreateRequest) (*v1.ProjectMemberResponse, error) { + response, err := c.create.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err } // Update calls api.v1.ProjectMemberService.Update. -func (c *projectMemberServiceClient) Update(ctx context.Context, req *connect.Request[v1.ProjectMemberUpdateRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { - return c.update.CallUnary(ctx, req) +func (c *projectMemberServiceClient) Update(ctx context.Context, req *v1.ProjectMemberUpdateRequest) (*v1.ProjectMemberResponse, error) { + response, err := c.update.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err } // Delete calls api.v1.ProjectMemberService.Delete. -func (c *projectMemberServiceClient) Delete(ctx context.Context, req *connect.Request[v1.ProjectMemberDeleteRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { - return c.delete.CallUnary(ctx, req) +func (c *projectMemberServiceClient) Delete(ctx context.Context, req *v1.ProjectMemberDeleteRequest) (*v1.ProjectMemberResponse, error) { + response, err := c.delete.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err } // Get calls api.v1.ProjectMemberService.Get. -func (c *projectMemberServiceClient) Get(ctx context.Context, req *connect.Request[v1.ProjectMemberGetRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { - return c.get.CallUnary(ctx, req) +func (c *projectMemberServiceClient) Get(ctx context.Context, req *v1.ProjectMemberGetRequest) (*v1.ProjectMemberResponse, error) { + response, err := c.get.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err } // Find calls api.v1.ProjectMemberService.Find. -func (c *projectMemberServiceClient) Find(ctx context.Context, req *connect.Request[v1.ProjectMemberFindRequest]) (*connect.Response[v1.ProjectMemberListResponse], error) { - return c.find.CallUnary(ctx, req) +func (c *projectMemberServiceClient) Find(ctx context.Context, req *v1.ProjectMemberFindRequest) (*v1.ProjectMemberListResponse, error) { + response, err := c.find.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err } // ProjectMemberServiceHandler is an implementation of the api.v1.ProjectMemberService service. type ProjectMemberServiceHandler interface { - Create(context.Context, *connect.Request[v1.ProjectMemberCreateRequest]) (*connect.Response[v1.ProjectMemberResponse], error) - Update(context.Context, *connect.Request[v1.ProjectMemberUpdateRequest]) (*connect.Response[v1.ProjectMemberResponse], error) - Delete(context.Context, *connect.Request[v1.ProjectMemberDeleteRequest]) (*connect.Response[v1.ProjectMemberResponse], error) - Get(context.Context, *connect.Request[v1.ProjectMemberGetRequest]) (*connect.Response[v1.ProjectMemberResponse], error) - Find(context.Context, *connect.Request[v1.ProjectMemberFindRequest]) (*connect.Response[v1.ProjectMemberListResponse], error) + Create(context.Context, *v1.ProjectMemberCreateRequest) (*v1.ProjectMemberResponse, error) + Update(context.Context, *v1.ProjectMemberUpdateRequest) (*v1.ProjectMemberResponse, error) + Delete(context.Context, *v1.ProjectMemberDeleteRequest) (*v1.ProjectMemberResponse, error) + Get(context.Context, *v1.ProjectMemberGetRequest) (*v1.ProjectMemberResponse, error) + Find(context.Context, *v1.ProjectMemberFindRequest) (*v1.ProjectMemberListResponse, error) } // NewProjectMemberServiceHandler builds an HTTP handler from the service implementation. It returns @@ -153,31 +173,31 @@ type ProjectMemberServiceHandler interface { // and JSON codecs. They also support gzip compression. func NewProjectMemberServiceHandler(svc ProjectMemberServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { projectMemberServiceMethods := v1.File_api_v1_project_member_proto.Services().ByName("ProjectMemberService").Methods() - projectMemberServiceCreateHandler := connect.NewUnaryHandler( + projectMemberServiceCreateHandler := connect.NewUnaryHandlerSimple( ProjectMemberServiceCreateProcedure, svc.Create, connect.WithSchema(projectMemberServiceMethods.ByName("Create")), connect.WithHandlerOptions(opts...), ) - projectMemberServiceUpdateHandler := connect.NewUnaryHandler( + projectMemberServiceUpdateHandler := connect.NewUnaryHandlerSimple( ProjectMemberServiceUpdateProcedure, svc.Update, connect.WithSchema(projectMemberServiceMethods.ByName("Update")), connect.WithHandlerOptions(opts...), ) - projectMemberServiceDeleteHandler := connect.NewUnaryHandler( + projectMemberServiceDeleteHandler := connect.NewUnaryHandlerSimple( ProjectMemberServiceDeleteProcedure, svc.Delete, connect.WithSchema(projectMemberServiceMethods.ByName("Delete")), connect.WithHandlerOptions(opts...), ) - projectMemberServiceGetHandler := connect.NewUnaryHandler( + projectMemberServiceGetHandler := connect.NewUnaryHandlerSimple( ProjectMemberServiceGetProcedure, svc.Get, connect.WithSchema(projectMemberServiceMethods.ByName("Get")), connect.WithHandlerOptions(opts...), ) - projectMemberServiceFindHandler := connect.NewUnaryHandler( + projectMemberServiceFindHandler := connect.NewUnaryHandlerSimple( ProjectMemberServiceFindProcedure, svc.Find, connect.WithSchema(projectMemberServiceMethods.ByName("Find")), @@ -204,22 +224,22 @@ func NewProjectMemberServiceHandler(svc ProjectMemberServiceHandler, opts ...con // UnimplementedProjectMemberServiceHandler returns CodeUnimplemented from all methods. type UnimplementedProjectMemberServiceHandler struct{} -func (UnimplementedProjectMemberServiceHandler) Create(context.Context, *connect.Request[v1.ProjectMemberCreateRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { +func (UnimplementedProjectMemberServiceHandler) Create(context.Context, *v1.ProjectMemberCreateRequest) (*v1.ProjectMemberResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.ProjectMemberService.Create is not implemented")) } -func (UnimplementedProjectMemberServiceHandler) Update(context.Context, *connect.Request[v1.ProjectMemberUpdateRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { +func (UnimplementedProjectMemberServiceHandler) Update(context.Context, *v1.ProjectMemberUpdateRequest) (*v1.ProjectMemberResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.ProjectMemberService.Update is not implemented")) } -func (UnimplementedProjectMemberServiceHandler) Delete(context.Context, *connect.Request[v1.ProjectMemberDeleteRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { +func (UnimplementedProjectMemberServiceHandler) Delete(context.Context, *v1.ProjectMemberDeleteRequest) (*v1.ProjectMemberResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.ProjectMemberService.Delete is not implemented")) } -func (UnimplementedProjectMemberServiceHandler) Get(context.Context, *connect.Request[v1.ProjectMemberGetRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { +func (UnimplementedProjectMemberServiceHandler) Get(context.Context, *v1.ProjectMemberGetRequest) (*v1.ProjectMemberResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.ProjectMemberService.Get is not implemented")) } -func (UnimplementedProjectMemberServiceHandler) Find(context.Context, *connect.Request[v1.ProjectMemberFindRequest]) (*connect.Response[v1.ProjectMemberListResponse], error) { +func (UnimplementedProjectMemberServiceHandler) Find(context.Context, *v1.ProjectMemberFindRequest) (*v1.ProjectMemberListResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.ProjectMemberService.Find is not implemented")) } diff --git a/api/v1/apiv1connect/tenant.connect.go b/api/v1/apiv1connect/tenant.connect.go index 54f0038..63f78fe 100644 --- a/api/v1/apiv1connect/tenant.connect.go +++ b/api/v1/apiv1connect/tenant.connect.go @@ -59,15 +59,15 @@ const ( // TenantServiceClient is a client for the api.v1.TenantService service. type TenantServiceClient interface { - Create(context.Context, *connect.Request[v1.TenantCreateRequest]) (*connect.Response[v1.TenantResponse], error) - Update(context.Context, *connect.Request[v1.TenantUpdateRequest]) (*connect.Response[v1.TenantResponse], error) - Delete(context.Context, *connect.Request[v1.TenantDeleteRequest]) (*connect.Response[v1.TenantResponse], error) - Get(context.Context, *connect.Request[v1.TenantGetRequest]) (*connect.Response[v1.TenantResponse], error) - GetHistory(context.Context, *connect.Request[v1.TenantGetHistoryRequest]) (*connect.Response[v1.TenantResponse], error) - Find(context.Context, *connect.Request[v1.TenantFindRequest]) (*connect.Response[v1.TenantListResponse], error) - ListTenantMembers(context.Context, *connect.Request[v1.ListTenantMembersRequest]) (*connect.Response[v1.ListTenantMembersResponse], error) - FindParticipatingProjects(context.Context, *connect.Request[v1.FindParticipatingProjectsRequest]) (*connect.Response[v1.FindParticipatingProjectsResponse], error) - FindParticipatingTenants(context.Context, *connect.Request[v1.FindParticipatingTenantsRequest]) (*connect.Response[v1.FindParticipatingTenantsResponse], error) + Create(context.Context, *v1.TenantCreateRequest) (*v1.TenantResponse, error) + Update(context.Context, *v1.TenantUpdateRequest) (*v1.TenantResponse, error) + Delete(context.Context, *v1.TenantDeleteRequest) (*v1.TenantResponse, error) + Get(context.Context, *v1.TenantGetRequest) (*v1.TenantResponse, error) + GetHistory(context.Context, *v1.TenantGetHistoryRequest) (*v1.TenantResponse, error) + Find(context.Context, *v1.TenantFindRequest) (*v1.TenantListResponse, error) + ListTenantMembers(context.Context, *v1.ListTenantMembersRequest) (*v1.ListTenantMembersResponse, error) + FindParticipatingProjects(context.Context, *v1.FindParticipatingProjectsRequest) (*v1.FindParticipatingProjectsResponse, error) + FindParticipatingTenants(context.Context, *v1.FindParticipatingTenantsRequest) (*v1.FindParticipatingTenantsResponse, error) } // NewTenantServiceClient constructs a client for the api.v1.TenantService service. By default, it @@ -152,61 +152,97 @@ type tenantServiceClient struct { } // Create calls api.v1.TenantService.Create. -func (c *tenantServiceClient) Create(ctx context.Context, req *connect.Request[v1.TenantCreateRequest]) (*connect.Response[v1.TenantResponse], error) { - return c.create.CallUnary(ctx, req) +func (c *tenantServiceClient) Create(ctx context.Context, req *v1.TenantCreateRequest) (*v1.TenantResponse, error) { + response, err := c.create.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err } // Update calls api.v1.TenantService.Update. -func (c *tenantServiceClient) Update(ctx context.Context, req *connect.Request[v1.TenantUpdateRequest]) (*connect.Response[v1.TenantResponse], error) { - return c.update.CallUnary(ctx, req) +func (c *tenantServiceClient) Update(ctx context.Context, req *v1.TenantUpdateRequest) (*v1.TenantResponse, error) { + response, err := c.update.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err } // Delete calls api.v1.TenantService.Delete. -func (c *tenantServiceClient) Delete(ctx context.Context, req *connect.Request[v1.TenantDeleteRequest]) (*connect.Response[v1.TenantResponse], error) { - return c.delete.CallUnary(ctx, req) +func (c *tenantServiceClient) Delete(ctx context.Context, req *v1.TenantDeleteRequest) (*v1.TenantResponse, error) { + response, err := c.delete.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err } // Get calls api.v1.TenantService.Get. -func (c *tenantServiceClient) Get(ctx context.Context, req *connect.Request[v1.TenantGetRequest]) (*connect.Response[v1.TenantResponse], error) { - return c.get.CallUnary(ctx, req) +func (c *tenantServiceClient) Get(ctx context.Context, req *v1.TenantGetRequest) (*v1.TenantResponse, error) { + response, err := c.get.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err } // GetHistory calls api.v1.TenantService.GetHistory. -func (c *tenantServiceClient) GetHistory(ctx context.Context, req *connect.Request[v1.TenantGetHistoryRequest]) (*connect.Response[v1.TenantResponse], error) { - return c.getHistory.CallUnary(ctx, req) +func (c *tenantServiceClient) GetHistory(ctx context.Context, req *v1.TenantGetHistoryRequest) (*v1.TenantResponse, error) { + response, err := c.getHistory.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err } // Find calls api.v1.TenantService.Find. -func (c *tenantServiceClient) Find(ctx context.Context, req *connect.Request[v1.TenantFindRequest]) (*connect.Response[v1.TenantListResponse], error) { - return c.find.CallUnary(ctx, req) +func (c *tenantServiceClient) Find(ctx context.Context, req *v1.TenantFindRequest) (*v1.TenantListResponse, error) { + response, err := c.find.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err } // ListTenantMembers calls api.v1.TenantService.ListTenantMembers. -func (c *tenantServiceClient) ListTenantMembers(ctx context.Context, req *connect.Request[v1.ListTenantMembersRequest]) (*connect.Response[v1.ListTenantMembersResponse], error) { - return c.listTenantMembers.CallUnary(ctx, req) +func (c *tenantServiceClient) ListTenantMembers(ctx context.Context, req *v1.ListTenantMembersRequest) (*v1.ListTenantMembersResponse, error) { + response, err := c.listTenantMembers.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err } // FindParticipatingProjects calls api.v1.TenantService.FindParticipatingProjects. -func (c *tenantServiceClient) FindParticipatingProjects(ctx context.Context, req *connect.Request[v1.FindParticipatingProjectsRequest]) (*connect.Response[v1.FindParticipatingProjectsResponse], error) { - return c.findParticipatingProjects.CallUnary(ctx, req) +func (c *tenantServiceClient) FindParticipatingProjects(ctx context.Context, req *v1.FindParticipatingProjectsRequest) (*v1.FindParticipatingProjectsResponse, error) { + response, err := c.findParticipatingProjects.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err } // FindParticipatingTenants calls api.v1.TenantService.FindParticipatingTenants. -func (c *tenantServiceClient) FindParticipatingTenants(ctx context.Context, req *connect.Request[v1.FindParticipatingTenantsRequest]) (*connect.Response[v1.FindParticipatingTenantsResponse], error) { - return c.findParticipatingTenants.CallUnary(ctx, req) +func (c *tenantServiceClient) FindParticipatingTenants(ctx context.Context, req *v1.FindParticipatingTenantsRequest) (*v1.FindParticipatingTenantsResponse, error) { + response, err := c.findParticipatingTenants.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err } // TenantServiceHandler is an implementation of the api.v1.TenantService service. type TenantServiceHandler interface { - Create(context.Context, *connect.Request[v1.TenantCreateRequest]) (*connect.Response[v1.TenantResponse], error) - Update(context.Context, *connect.Request[v1.TenantUpdateRequest]) (*connect.Response[v1.TenantResponse], error) - Delete(context.Context, *connect.Request[v1.TenantDeleteRequest]) (*connect.Response[v1.TenantResponse], error) - Get(context.Context, *connect.Request[v1.TenantGetRequest]) (*connect.Response[v1.TenantResponse], error) - GetHistory(context.Context, *connect.Request[v1.TenantGetHistoryRequest]) (*connect.Response[v1.TenantResponse], error) - Find(context.Context, *connect.Request[v1.TenantFindRequest]) (*connect.Response[v1.TenantListResponse], error) - ListTenantMembers(context.Context, *connect.Request[v1.ListTenantMembersRequest]) (*connect.Response[v1.ListTenantMembersResponse], error) - FindParticipatingProjects(context.Context, *connect.Request[v1.FindParticipatingProjectsRequest]) (*connect.Response[v1.FindParticipatingProjectsResponse], error) - FindParticipatingTenants(context.Context, *connect.Request[v1.FindParticipatingTenantsRequest]) (*connect.Response[v1.FindParticipatingTenantsResponse], error) + Create(context.Context, *v1.TenantCreateRequest) (*v1.TenantResponse, error) + Update(context.Context, *v1.TenantUpdateRequest) (*v1.TenantResponse, error) + Delete(context.Context, *v1.TenantDeleteRequest) (*v1.TenantResponse, error) + Get(context.Context, *v1.TenantGetRequest) (*v1.TenantResponse, error) + GetHistory(context.Context, *v1.TenantGetHistoryRequest) (*v1.TenantResponse, error) + Find(context.Context, *v1.TenantFindRequest) (*v1.TenantListResponse, error) + ListTenantMembers(context.Context, *v1.ListTenantMembersRequest) (*v1.ListTenantMembersResponse, error) + FindParticipatingProjects(context.Context, *v1.FindParticipatingProjectsRequest) (*v1.FindParticipatingProjectsResponse, error) + FindParticipatingTenants(context.Context, *v1.FindParticipatingTenantsRequest) (*v1.FindParticipatingTenantsResponse, error) } // NewTenantServiceHandler builds an HTTP handler from the service implementation. It returns the @@ -216,55 +252,55 @@ type TenantServiceHandler interface { // and JSON codecs. They also support gzip compression. func NewTenantServiceHandler(svc TenantServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { tenantServiceMethods := v1.File_api_v1_tenant_proto.Services().ByName("TenantService").Methods() - tenantServiceCreateHandler := connect.NewUnaryHandler( + tenantServiceCreateHandler := connect.NewUnaryHandlerSimple( TenantServiceCreateProcedure, svc.Create, connect.WithSchema(tenantServiceMethods.ByName("Create")), connect.WithHandlerOptions(opts...), ) - tenantServiceUpdateHandler := connect.NewUnaryHandler( + tenantServiceUpdateHandler := connect.NewUnaryHandlerSimple( TenantServiceUpdateProcedure, svc.Update, connect.WithSchema(tenantServiceMethods.ByName("Update")), connect.WithHandlerOptions(opts...), ) - tenantServiceDeleteHandler := connect.NewUnaryHandler( + tenantServiceDeleteHandler := connect.NewUnaryHandlerSimple( TenantServiceDeleteProcedure, svc.Delete, connect.WithSchema(tenantServiceMethods.ByName("Delete")), connect.WithHandlerOptions(opts...), ) - tenantServiceGetHandler := connect.NewUnaryHandler( + tenantServiceGetHandler := connect.NewUnaryHandlerSimple( TenantServiceGetProcedure, svc.Get, connect.WithSchema(tenantServiceMethods.ByName("Get")), connect.WithHandlerOptions(opts...), ) - tenantServiceGetHistoryHandler := connect.NewUnaryHandler( + tenantServiceGetHistoryHandler := connect.NewUnaryHandlerSimple( TenantServiceGetHistoryProcedure, svc.GetHistory, connect.WithSchema(tenantServiceMethods.ByName("GetHistory")), connect.WithHandlerOptions(opts...), ) - tenantServiceFindHandler := connect.NewUnaryHandler( + tenantServiceFindHandler := connect.NewUnaryHandlerSimple( TenantServiceFindProcedure, svc.Find, connect.WithSchema(tenantServiceMethods.ByName("Find")), connect.WithHandlerOptions(opts...), ) - tenantServiceListTenantMembersHandler := connect.NewUnaryHandler( + tenantServiceListTenantMembersHandler := connect.NewUnaryHandlerSimple( TenantServiceListTenantMembersProcedure, svc.ListTenantMembers, connect.WithSchema(tenantServiceMethods.ByName("ListTenantMembers")), connect.WithHandlerOptions(opts...), ) - tenantServiceFindParticipatingProjectsHandler := connect.NewUnaryHandler( + tenantServiceFindParticipatingProjectsHandler := connect.NewUnaryHandlerSimple( TenantServiceFindParticipatingProjectsProcedure, svc.FindParticipatingProjects, connect.WithSchema(tenantServiceMethods.ByName("FindParticipatingProjects")), connect.WithHandlerOptions(opts...), ) - tenantServiceFindParticipatingTenantsHandler := connect.NewUnaryHandler( + tenantServiceFindParticipatingTenantsHandler := connect.NewUnaryHandlerSimple( TenantServiceFindParticipatingTenantsProcedure, svc.FindParticipatingTenants, connect.WithSchema(tenantServiceMethods.ByName("FindParticipatingTenants")), @@ -299,38 +335,38 @@ func NewTenantServiceHandler(svc TenantServiceHandler, opts ...connect.HandlerOp // UnimplementedTenantServiceHandler returns CodeUnimplemented from all methods. type UnimplementedTenantServiceHandler struct{} -func (UnimplementedTenantServiceHandler) Create(context.Context, *connect.Request[v1.TenantCreateRequest]) (*connect.Response[v1.TenantResponse], error) { +func (UnimplementedTenantServiceHandler) Create(context.Context, *v1.TenantCreateRequest) (*v1.TenantResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.TenantService.Create is not implemented")) } -func (UnimplementedTenantServiceHandler) Update(context.Context, *connect.Request[v1.TenantUpdateRequest]) (*connect.Response[v1.TenantResponse], error) { +func (UnimplementedTenantServiceHandler) Update(context.Context, *v1.TenantUpdateRequest) (*v1.TenantResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.TenantService.Update is not implemented")) } -func (UnimplementedTenantServiceHandler) Delete(context.Context, *connect.Request[v1.TenantDeleteRequest]) (*connect.Response[v1.TenantResponse], error) { +func (UnimplementedTenantServiceHandler) Delete(context.Context, *v1.TenantDeleteRequest) (*v1.TenantResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.TenantService.Delete is not implemented")) } -func (UnimplementedTenantServiceHandler) Get(context.Context, *connect.Request[v1.TenantGetRequest]) (*connect.Response[v1.TenantResponse], error) { +func (UnimplementedTenantServiceHandler) Get(context.Context, *v1.TenantGetRequest) (*v1.TenantResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.TenantService.Get is not implemented")) } -func (UnimplementedTenantServiceHandler) GetHistory(context.Context, *connect.Request[v1.TenantGetHistoryRequest]) (*connect.Response[v1.TenantResponse], error) { +func (UnimplementedTenantServiceHandler) GetHistory(context.Context, *v1.TenantGetHistoryRequest) (*v1.TenantResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.TenantService.GetHistory is not implemented")) } -func (UnimplementedTenantServiceHandler) Find(context.Context, *connect.Request[v1.TenantFindRequest]) (*connect.Response[v1.TenantListResponse], error) { +func (UnimplementedTenantServiceHandler) Find(context.Context, *v1.TenantFindRequest) (*v1.TenantListResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.TenantService.Find is not implemented")) } -func (UnimplementedTenantServiceHandler) ListTenantMembers(context.Context, *connect.Request[v1.ListTenantMembersRequest]) (*connect.Response[v1.ListTenantMembersResponse], error) { +func (UnimplementedTenantServiceHandler) ListTenantMembers(context.Context, *v1.ListTenantMembersRequest) (*v1.ListTenantMembersResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.TenantService.ListTenantMembers is not implemented")) } -func (UnimplementedTenantServiceHandler) FindParticipatingProjects(context.Context, *connect.Request[v1.FindParticipatingProjectsRequest]) (*connect.Response[v1.FindParticipatingProjectsResponse], error) { +func (UnimplementedTenantServiceHandler) FindParticipatingProjects(context.Context, *v1.FindParticipatingProjectsRequest) (*v1.FindParticipatingProjectsResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.TenantService.FindParticipatingProjects is not implemented")) } -func (UnimplementedTenantServiceHandler) FindParticipatingTenants(context.Context, *connect.Request[v1.FindParticipatingTenantsRequest]) (*connect.Response[v1.FindParticipatingTenantsResponse], error) { +func (UnimplementedTenantServiceHandler) FindParticipatingTenants(context.Context, *v1.FindParticipatingTenantsRequest) (*v1.FindParticipatingTenantsResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.TenantService.FindParticipatingTenants is not implemented")) } diff --git a/api/v1/apiv1connect/tenant_member.connect.go b/api/v1/apiv1connect/tenant_member.connect.go index 7fa1b5f..36098ab 100644 --- a/api/v1/apiv1connect/tenant_member.connect.go +++ b/api/v1/apiv1connect/tenant_member.connect.go @@ -51,11 +51,11 @@ const ( // TenantMemberServiceClient is a client for the api.v1.TenantMemberService service. type TenantMemberServiceClient interface { - Create(context.Context, *connect.Request[v1.TenantMemberCreateRequest]) (*connect.Response[v1.TenantMemberResponse], error) - Update(context.Context, *connect.Request[v1.TenantMemberUpdateRequest]) (*connect.Response[v1.TenantMemberResponse], error) - Delete(context.Context, *connect.Request[v1.TenantMemberDeleteRequest]) (*connect.Response[v1.TenantMemberResponse], error) - Get(context.Context, *connect.Request[v1.TenantMemberGetRequest]) (*connect.Response[v1.TenantMemberResponse], error) - Find(context.Context, *connect.Request[v1.TenantMemberFindRequest]) (*connect.Response[v1.TenantMemberListResponse], error) + Create(context.Context, *v1.TenantMemberCreateRequest) (*v1.TenantMemberResponse, error) + Update(context.Context, *v1.TenantMemberUpdateRequest) (*v1.TenantMemberResponse, error) + Delete(context.Context, *v1.TenantMemberDeleteRequest) (*v1.TenantMemberResponse, error) + Get(context.Context, *v1.TenantMemberGetRequest) (*v1.TenantMemberResponse, error) + Find(context.Context, *v1.TenantMemberFindRequest) (*v1.TenantMemberListResponse, error) } // NewTenantMemberServiceClient constructs a client for the api.v1.TenantMemberService service. By @@ -112,37 +112,57 @@ type tenantMemberServiceClient struct { } // Create calls api.v1.TenantMemberService.Create. -func (c *tenantMemberServiceClient) Create(ctx context.Context, req *connect.Request[v1.TenantMemberCreateRequest]) (*connect.Response[v1.TenantMemberResponse], error) { - return c.create.CallUnary(ctx, req) +func (c *tenantMemberServiceClient) Create(ctx context.Context, req *v1.TenantMemberCreateRequest) (*v1.TenantMemberResponse, error) { + response, err := c.create.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err } // Update calls api.v1.TenantMemberService.Update. -func (c *tenantMemberServiceClient) Update(ctx context.Context, req *connect.Request[v1.TenantMemberUpdateRequest]) (*connect.Response[v1.TenantMemberResponse], error) { - return c.update.CallUnary(ctx, req) +func (c *tenantMemberServiceClient) Update(ctx context.Context, req *v1.TenantMemberUpdateRequest) (*v1.TenantMemberResponse, error) { + response, err := c.update.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err } // Delete calls api.v1.TenantMemberService.Delete. -func (c *tenantMemberServiceClient) Delete(ctx context.Context, req *connect.Request[v1.TenantMemberDeleteRequest]) (*connect.Response[v1.TenantMemberResponse], error) { - return c.delete.CallUnary(ctx, req) +func (c *tenantMemberServiceClient) Delete(ctx context.Context, req *v1.TenantMemberDeleteRequest) (*v1.TenantMemberResponse, error) { + response, err := c.delete.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err } // Get calls api.v1.TenantMemberService.Get. -func (c *tenantMemberServiceClient) Get(ctx context.Context, req *connect.Request[v1.TenantMemberGetRequest]) (*connect.Response[v1.TenantMemberResponse], error) { - return c.get.CallUnary(ctx, req) +func (c *tenantMemberServiceClient) Get(ctx context.Context, req *v1.TenantMemberGetRequest) (*v1.TenantMemberResponse, error) { + response, err := c.get.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err } // Find calls api.v1.TenantMemberService.Find. -func (c *tenantMemberServiceClient) Find(ctx context.Context, req *connect.Request[v1.TenantMemberFindRequest]) (*connect.Response[v1.TenantMemberListResponse], error) { - return c.find.CallUnary(ctx, req) +func (c *tenantMemberServiceClient) Find(ctx context.Context, req *v1.TenantMemberFindRequest) (*v1.TenantMemberListResponse, error) { + response, err := c.find.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err } // TenantMemberServiceHandler is an implementation of the api.v1.TenantMemberService service. type TenantMemberServiceHandler interface { - Create(context.Context, *connect.Request[v1.TenantMemberCreateRequest]) (*connect.Response[v1.TenantMemberResponse], error) - Update(context.Context, *connect.Request[v1.TenantMemberUpdateRequest]) (*connect.Response[v1.TenantMemberResponse], error) - Delete(context.Context, *connect.Request[v1.TenantMemberDeleteRequest]) (*connect.Response[v1.TenantMemberResponse], error) - Get(context.Context, *connect.Request[v1.TenantMemberGetRequest]) (*connect.Response[v1.TenantMemberResponse], error) - Find(context.Context, *connect.Request[v1.TenantMemberFindRequest]) (*connect.Response[v1.TenantMemberListResponse], error) + Create(context.Context, *v1.TenantMemberCreateRequest) (*v1.TenantMemberResponse, error) + Update(context.Context, *v1.TenantMemberUpdateRequest) (*v1.TenantMemberResponse, error) + Delete(context.Context, *v1.TenantMemberDeleteRequest) (*v1.TenantMemberResponse, error) + Get(context.Context, *v1.TenantMemberGetRequest) (*v1.TenantMemberResponse, error) + Find(context.Context, *v1.TenantMemberFindRequest) (*v1.TenantMemberListResponse, error) } // NewTenantMemberServiceHandler builds an HTTP handler from the service implementation. It returns @@ -152,31 +172,31 @@ type TenantMemberServiceHandler interface { // and JSON codecs. They also support gzip compression. func NewTenantMemberServiceHandler(svc TenantMemberServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { tenantMemberServiceMethods := v1.File_api_v1_tenant_member_proto.Services().ByName("TenantMemberService").Methods() - tenantMemberServiceCreateHandler := connect.NewUnaryHandler( + tenantMemberServiceCreateHandler := connect.NewUnaryHandlerSimple( TenantMemberServiceCreateProcedure, svc.Create, connect.WithSchema(tenantMemberServiceMethods.ByName("Create")), connect.WithHandlerOptions(opts...), ) - tenantMemberServiceUpdateHandler := connect.NewUnaryHandler( + tenantMemberServiceUpdateHandler := connect.NewUnaryHandlerSimple( TenantMemberServiceUpdateProcedure, svc.Update, connect.WithSchema(tenantMemberServiceMethods.ByName("Update")), connect.WithHandlerOptions(opts...), ) - tenantMemberServiceDeleteHandler := connect.NewUnaryHandler( + tenantMemberServiceDeleteHandler := connect.NewUnaryHandlerSimple( TenantMemberServiceDeleteProcedure, svc.Delete, connect.WithSchema(tenantMemberServiceMethods.ByName("Delete")), connect.WithHandlerOptions(opts...), ) - tenantMemberServiceGetHandler := connect.NewUnaryHandler( + tenantMemberServiceGetHandler := connect.NewUnaryHandlerSimple( TenantMemberServiceGetProcedure, svc.Get, connect.WithSchema(tenantMemberServiceMethods.ByName("Get")), connect.WithHandlerOptions(opts...), ) - tenantMemberServiceFindHandler := connect.NewUnaryHandler( + tenantMemberServiceFindHandler := connect.NewUnaryHandlerSimple( TenantMemberServiceFindProcedure, svc.Find, connect.WithSchema(tenantMemberServiceMethods.ByName("Find")), @@ -203,22 +223,22 @@ func NewTenantMemberServiceHandler(svc TenantMemberServiceHandler, opts ...conne // UnimplementedTenantMemberServiceHandler returns CodeUnimplemented from all methods. type UnimplementedTenantMemberServiceHandler struct{} -func (UnimplementedTenantMemberServiceHandler) Create(context.Context, *connect.Request[v1.TenantMemberCreateRequest]) (*connect.Response[v1.TenantMemberResponse], error) { +func (UnimplementedTenantMemberServiceHandler) Create(context.Context, *v1.TenantMemberCreateRequest) (*v1.TenantMemberResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.TenantMemberService.Create is not implemented")) } -func (UnimplementedTenantMemberServiceHandler) Update(context.Context, *connect.Request[v1.TenantMemberUpdateRequest]) (*connect.Response[v1.TenantMemberResponse], error) { +func (UnimplementedTenantMemberServiceHandler) Update(context.Context, *v1.TenantMemberUpdateRequest) (*v1.TenantMemberResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.TenantMemberService.Update is not implemented")) } -func (UnimplementedTenantMemberServiceHandler) Delete(context.Context, *connect.Request[v1.TenantMemberDeleteRequest]) (*connect.Response[v1.TenantMemberResponse], error) { +func (UnimplementedTenantMemberServiceHandler) Delete(context.Context, *v1.TenantMemberDeleteRequest) (*v1.TenantMemberResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.TenantMemberService.Delete is not implemented")) } -func (UnimplementedTenantMemberServiceHandler) Get(context.Context, *connect.Request[v1.TenantMemberGetRequest]) (*connect.Response[v1.TenantMemberResponse], error) { +func (UnimplementedTenantMemberServiceHandler) Get(context.Context, *v1.TenantMemberGetRequest) (*v1.TenantMemberResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.TenantMemberService.Get is not implemented")) } -func (UnimplementedTenantMemberServiceHandler) Find(context.Context, *connect.Request[v1.TenantMemberFindRequest]) (*connect.Response[v1.TenantMemberListResponse], error) { +func (UnimplementedTenantMemberServiceHandler) Find(context.Context, *v1.TenantMemberFindRequest) (*v1.TenantMemberListResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.TenantMemberService.Find is not implemented")) } diff --git a/api/v1/apiv1connect/version.connect.go b/api/v1/apiv1connect/version.connect.go index a0c917c..184db34 100644 --- a/api/v1/apiv1connect/version.connect.go +++ b/api/v1/apiv1connect/version.connect.go @@ -39,7 +39,7 @@ const ( // VersionServiceClient is a client for the api.v1.VersionService service. type VersionServiceClient interface { - Get(context.Context, *connect.Request[v1.GetVersionRequest]) (*connect.Response[v1.GetVersionResponse], error) + Get(context.Context, *v1.GetVersionRequest) (*v1.GetVersionResponse, error) } // NewVersionServiceClient constructs a client for the api.v1.VersionService service. By default, it @@ -68,13 +68,17 @@ type versionServiceClient struct { } // Get calls api.v1.VersionService.Get. -func (c *versionServiceClient) Get(ctx context.Context, req *connect.Request[v1.GetVersionRequest]) (*connect.Response[v1.GetVersionResponse], error) { - return c.get.CallUnary(ctx, req) +func (c *versionServiceClient) Get(ctx context.Context, req *v1.GetVersionRequest) (*v1.GetVersionResponse, error) { + response, err := c.get.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err } // VersionServiceHandler is an implementation of the api.v1.VersionService service. type VersionServiceHandler interface { - Get(context.Context, *connect.Request[v1.GetVersionRequest]) (*connect.Response[v1.GetVersionResponse], error) + Get(context.Context, *v1.GetVersionRequest) (*v1.GetVersionResponse, error) } // NewVersionServiceHandler builds an HTTP handler from the service implementation. It returns the @@ -84,7 +88,7 @@ type VersionServiceHandler interface { // and JSON codecs. They also support gzip compression. func NewVersionServiceHandler(svc VersionServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { versionServiceMethods := v1.File_api_v1_version_proto.Services().ByName("VersionService").Methods() - versionServiceGetHandler := connect.NewUnaryHandler( + versionServiceGetHandler := connect.NewUnaryHandlerSimple( VersionServiceGetProcedure, svc.Get, connect.WithSchema(versionServiceMethods.ByName("Get")), @@ -103,6 +107,6 @@ func NewVersionServiceHandler(svc VersionServiceHandler, opts ...connect.Handler // UnimplementedVersionServiceHandler returns CodeUnimplemented from all methods. type UnimplementedVersionServiceHandler struct{} -func (UnimplementedVersionServiceHandler) Get(context.Context, *connect.Request[v1.GetVersionRequest]) (*connect.Response[v1.GetVersionResponse], error) { +func (UnimplementedVersionServiceHandler) Get(context.Context, *v1.GetVersionRequest) (*v1.GetVersionResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("api.v1.VersionService.Get is not implemented")) } diff --git a/api/v1/common.pb.go b/api/v1/common.pb.go index 7d67ae7..ffe6da5 100644 --- a/api/v1/common.pb.go +++ b/api/v1/common.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.8 +// protoc-gen-go v1.36.10 // protoc (unknown) // source: api/v1/common.proto diff --git a/api/v1/iam.pb.go b/api/v1/iam.pb.go index 0e0e298..713feda 100644 --- a/api/v1/iam.pb.go +++ b/api/v1/iam.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.8 +// protoc-gen-go v1.36.10 // protoc (unknown) // source: api/v1/iam.proto diff --git a/api/v1/meta.pb.go b/api/v1/meta.pb.go index 3ab84a0..db1a354 100644 --- a/api/v1/meta.pb.go +++ b/api/v1/meta.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.8 +// protoc-gen-go v1.36.10 // protoc (unknown) // source: api/v1/meta.proto diff --git a/api/v1/project.pb.go b/api/v1/project.pb.go index 2259642..9ffcfdc 100644 --- a/api/v1/project.pb.go +++ b/api/v1/project.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.8 +// protoc-gen-go v1.36.10 // protoc (unknown) // source: api/v1/project.proto diff --git a/api/v1/project_member.pb.go b/api/v1/project_member.pb.go index c7cdae1..3b89e12 100644 --- a/api/v1/project_member.pb.go +++ b/api/v1/project_member.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.8 +// protoc-gen-go v1.36.10 // protoc (unknown) // source: api/v1/project_member.proto diff --git a/api/v1/quota.pb.go b/api/v1/quota.pb.go index a90f2dc..f642ecc 100644 --- a/api/v1/quota.pb.go +++ b/api/v1/quota.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.8 +// protoc-gen-go v1.36.10 // protoc (unknown) // source: api/v1/quota.proto diff --git a/api/v1/tenant.pb.go b/api/v1/tenant.pb.go index d0289ed..1fbe64e 100644 --- a/api/v1/tenant.pb.go +++ b/api/v1/tenant.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.8 +// protoc-gen-go v1.36.10 // protoc (unknown) // source: api/v1/tenant.proto diff --git a/api/v1/tenant_member.pb.go b/api/v1/tenant_member.pb.go index 3f7e43c..c89a715 100644 --- a/api/v1/tenant_member.pb.go +++ b/api/v1/tenant_member.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.8 +// protoc-gen-go v1.36.10 // protoc (unknown) // source: api/v1/tenant_member.proto diff --git a/api/v1/version.pb.go b/api/v1/version.pb.go index facfd5f..28de1cc 100644 --- a/api/v1/version.pb.go +++ b/api/v1/version.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.8 +// protoc-gen-go v1.36.10 // protoc (unknown) // source: api/v1/version.proto diff --git a/client/main.go b/client/main.go index 5e73c8e..afc4128 100644 --- a/client/main.go +++ b/client/main.go @@ -6,7 +6,6 @@ import ( "os" "time" - "connectrpc.com/connect" "github.com/metal-stack/masterdata-api/api/rest/mapper" "github.com/metal-stack/metal-lib/pkg/pointer" "google.golang.org/protobuf/types/known/timestamppb" @@ -68,7 +67,7 @@ func projectExample(c client.Client, log *slog.Logger) error { pcr := &v1.ProjectCreateRequest{ Project: project, } - res, err := c.Project().Create(ctx, connect.NewRequest(pcr)) + res, err := c.Project().Create(ctx, pcr) if err != nil { return err } @@ -77,79 +76,79 @@ func projectExample(c client.Client, log *slog.Logger) error { ts := time.Now() // get - projectId := res.Msg.Project.Meta.Id - prj, err := c.Project().Get(ctx, connect.NewRequest(&v1.ProjectGetRequest{Id: projectId})) + projectId := res.Project.Meta.Id + prj, err := c.Project().Get(ctx, &v1.ProjectGetRequest{Id: projectId}) if err != nil { return err } // update - prj.Msg.Project.Description = "Updated Demo Project" - prj.Msg.Project.Meta.Annotations["mykey"] = "myvalue" - prures, err := c.Project().Update(ctx, connect.NewRequest(&v1.ProjectUpdateRequest{ - Project: prj.Msg.Project, - })) + prj.Project.Description = "Updated Demo Project" + prj.Project.Meta.Annotations["mykey"] = "myvalue" + prures, err := c.Project().Update(ctx, &v1.ProjectUpdateRequest{ + Project: prj.Project, + }) if err != nil { return err } pbHp := timestamppb.New(ts) - phr, err := c.Project().GetHistory(ctx, connect.NewRequest(&v1.ProjectGetHistoryRequest{ - Id: prj.Msg.Project.Meta.Id, + phr, err := c.Project().GetHistory(ctx, &v1.ProjectGetHistoryRequest{ + Id: prj.Project.Meta.Id, At: pbHp, - })) + }) if err != nil { return err } - if phr.Msg.Project.Description != "Demo Project" { + if phr.Project.Description != "Demo Project" { return err } // explicit re-get - prj2, err := c.Project().Get(ctx, connect.NewRequest(&v1.ProjectGetRequest{Id: projectId})) + prj2, err := c.Project().Get(ctx, &v1.ProjectGetRequest{Id: projectId}) if err != nil { return err } - if prj2.Msg.GetProject().Meta.Annotations["mykey"] != "myvalue" { + if prj2.GetProject().Meta.Annotations["mykey"] != "myvalue" { return err } - if prures.Msg.Project.Meta.Version <= prj.Msg.Project.Meta.Version { + if prures.Project.Meta.Version <= prj.Project.Meta.Version { return err } - _, err = c.Project().Get(ctx, connect.NewRequest(&v1.ProjectGetRequest{Id: "123123"})) + _, err = c.Project().Get(ctx, &v1.ProjectGetRequest{Id: "123123"}) if !v1.IsNotFound(err) { return err } // find - pfr, err := c.Project().Find(ctx, connect.NewRequest(&v1.ProjectFindRequest{})) + pfr, err := c.Project().Find(ctx, &v1.ProjectFindRequest{}) if err != nil { return err } - for _, p := range pfr.Msg.Projects { + for _, p := range pfr.Projects { log.Info("found project", "project", p) } - pmcr, err := c.ProjectMember().Create(ctx, connect.NewRequest(&v1.ProjectMemberCreateRequest{ + pmcr, err := c.ProjectMember().Create(ctx, &v1.ProjectMemberCreateRequest{ ProjectMember: &v1.ProjectMember{ ProjectId: projectId, TenantId: "customer-1", }, - })) + }) if err != nil { return err } - log.Info("projectmember created", slog.Any("member", pmcr.Msg.ProjectMember)) + log.Info("projectmember created", slog.Any("member", pmcr.ProjectMember)) // delete projects - for _, p := range pfr.Msg.GetProjects() { + for _, p := range pfr.GetProjects() { pdr := v1.ProjectDeleteRequest{ Id: p.Meta.Id, } - _, err = c.Project().Delete(ctx, connect.NewRequest(&pdr)) + _, err = c.Project().Delete(ctx, &pdr) if err != nil { return err } @@ -194,15 +193,15 @@ func tenantExample(c client.Client, log *slog.Logger) error { Tenant: tnt, } - t, err := c.Tenant().Create(ctx, connect.NewRequest(tcr)) + t, err := c.Tenant().Create(ctx, tcr) if err != nil { return err } log.Info("created tenant", "tenant", t) // try to create the same tenant with the returned id another time... - tcr.Tenant.Meta = t.Msg.Tenant.Meta - _, err = c.Tenant().Create(ctx, connect.NewRequest(tcr)) + tcr.Tenant.Meta = t.Tenant.Meta + _, err = c.Tenant().Create(ctx, tcr) if err != nil { if v1.IsConflict(err) { @@ -218,28 +217,28 @@ func tenantExample(c client.Client, log *slog.Logger) error { tfrq := &v1.TenantFindRequest{ // Id: t.Id, } - tfrs, err := c.Tenant().Find(ctx, connect.NewRequest(tfrq)) + tfrs, err := c.Tenant().Find(ctx, tfrq) if err != nil { return err } - for i := range tfrs.Msg.Tenants { - log.Info("found tenant", "tenant", tfrs.Msg.Tenants[i]) + for i := range tfrs.Tenants { + log.Info("found tenant", "tenant", tfrs.Tenants[i]) } log.Info("get tenant with id") tgr := &v1.TenantGetRequest{ - Id: t.Msg.Tenant.Meta.Id, + Id: t.Tenant.Meta.Id, } - tgres, err := c.Tenant().Get(ctx, connect.NewRequest(tgr)) + tgres, err := c.Tenant().Get(ctx, tgr) if err != nil { return err } log.Info("got tenant", "id", tgres) - v1t := mapper.ToV1Tenant(tgres.Msg.Tenant) + v1t := mapper.ToV1Tenant(tgres.Tenant) mdm1t := mapper.ToMdmV1Tenant(v1t) - _, err = c.Tenant().Update(ctx, connect.NewRequest(&v1.TenantUpdateRequest{Tenant: mdm1t})) + _, err = c.Tenant().Update(ctx, &v1.TenantUpdateRequest{Tenant: mdm1t}) if err != nil { return err @@ -249,78 +248,78 @@ func tenantExample(c client.Client, log *slog.Logger) error { tgrNotFound := &v1.TenantGetRequest{ Id: "1982739817298219873", } - _, err = c.Tenant().Get(ctx, connect.NewRequest(tgrNotFound)) + _, err = c.Tenant().Get(ctx, tgrNotFound) if !v1.IsNotFound(err) { return err } // get tenant one more time to have some older version after update to provoke an optimistic lock error - tgres2, _ := c.Tenant().Get(ctx, connect.NewRequest(tgr)) + tgres2, _ := c.Tenant().Get(ctx, tgr) - tgres, err = c.Tenant().Get(ctx, connect.NewRequest(tgr)) + tgres, err = c.Tenant().Get(ctx, tgr) if err != nil { return err } - tenant := tgres.Msg.Tenant + tenant := tgres.Tenant tenant.Name = "some other name" tur := &v1.TenantUpdateRequest{ Tenant: tenant, } - tures, err := c.Tenant().Update(ctx, connect.NewRequest(tur)) + tures, err := c.Tenant().Update(ctx, tur) if err != nil { return err } log.Info("updated tenant", "tenant", tures) - tenant2 := tgres2.Msg.Tenant + tenant2 := tgres2.Tenant tenant2.Name = "update older tenant" - _, err = c.Tenant().Update(ctx, connect.NewRequest(tur)) + _, err = c.Tenant().Update(ctx, tur) if !v1.IsOptimistickLockError(err) { return err } log.Info("find tenant with id") tfrqi := &v1.TenantFindRequest{ - Id: pointer.Pointer(t.Msg.Tenant.Meta.Id), + Id: pointer.Pointer(t.Tenant.Meta.Id), } - tfrsi, err := c.Tenant().Find(ctx, connect.NewRequest(tfrqi)) + tfrsi, err := c.Tenant().Find(ctx, tfrqi) if err != nil { return err } - for i := range tfrsi.Msg.Tenants { - log.Info("found tenant", "tenant", tfrsi.Msg.Tenants[i]) + for i := range tfrsi.Tenants { + log.Info("found tenant", "tenant", tfrsi.Tenants[i]) } log.Info("delete tenant with id") tdr := &v1.TenantDeleteRequest{ - Id: t.Msg.Tenant.Meta.Id, + Id: t.Tenant.Meta.Id, } - _, err = c.Tenant().Delete(ctx, connect.NewRequest(tdr)) + _, err = c.Tenant().Delete(ctx, tdr) if err != nil { return err } log.Info("try to delete already deleted tenant") tdr2 := &v1.TenantDeleteRequest{ - Id: t.Msg.Tenant.Meta.Id, + Id: t.Tenant.Meta.Id, } - _, err = c.Tenant().Delete(ctx, connect.NewRequest(tdr2)) + _, err = c.Tenant().Delete(ctx, tdr2) if !v1.IsNotFound(err) { log.Info("got expected grpc code, indicating not found") } pbHt := timestamppb.Now() - thr, err := c.Tenant().GetHistory(ctx, connect.NewRequest(&v1.TenantGetHistoryRequest{ + thr, err := c.Tenant().GetHistory(ctx, &v1.TenantGetHistoryRequest{ Id: tdr.Id, At: pbHt, - })) + }) if err != nil { return err } - if thr.Msg.Tenant.Name != "some other name" { + if thr.Tenant.Name != "some other name" { return err } - log.Info("found history tenant", "tenant", thr.Msg.Tenant) + log.Info("found history tenant", "tenant", thr.Tenant) return nil } diff --git a/go.mod b/go.mod index 6e5dd52..eaef5f0 100644 --- a/go.mod +++ b/go.mod @@ -3,10 +3,10 @@ module github.com/metal-stack/masterdata-api go 1.25 require ( - connectrpc.com/connect v1.18.1 + connectrpc.com/connect v1.19.0 connectrpc.com/grpchealth v1.4.0 connectrpc.com/grpcreflect v1.3.0 - connectrpc.com/otelconnect v0.7.2 + connectrpc.com/otelconnect v0.8.0 github.com/Masterminds/squirrel v1.5.4 github.com/google/go-cmp v0.7.0 github.com/google/uuid v1.6.0 @@ -15,18 +15,18 @@ require ( github.com/klauspost/connect-compress/v2 v2.0.0 github.com/lib/pq v1.10.9 github.com/lopezator/migrator v0.3.1 - github.com/metal-stack/metal-lib v0.23.4 + github.com/metal-stack/metal-lib v0.23.5 github.com/metal-stack/v v1.0.3 github.com/prometheus/client_golang v1.23.2 github.com/stretchr/testify v1.11.1 - github.com/testcontainers/testcontainers-go v0.38.0 - github.com/testcontainers/testcontainers-go/modules/postgres v0.38.0 + github.com/testcontainers/testcontainers-go v0.39.0 + github.com/testcontainers/testcontainers-go/modules/postgres v0.39.0 github.com/urfave/cli/v2 v2.27.7 go.opentelemetry.io/otel/exporters/prometheus v0.60.0 go.opentelemetry.io/otel/sdk/metric v1.38.0 - golang.org/x/net v0.43.0 - google.golang.org/grpc v1.75.0 - google.golang.org/protobuf v1.36.8 + golang.org/x/net v0.44.0 + google.golang.org/grpc v1.75.1 + google.golang.org/protobuf v1.36.10 sigs.k8s.io/yaml v1.6.0 ) @@ -46,23 +46,22 @@ require ( github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/distribution/reference v0.6.0 // indirect - github.com/docker/docker v28.4.0+incompatible // indirect + github.com/docker/docker v28.5.0+incompatible // indirect github.com/docker/go-connections v0.6.0 // indirect github.com/docker/go-units v0.5.0 // indirect - github.com/ebitengine/purego v0.8.4 // indirect + github.com/ebitengine/purego v0.9.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.3.0 // indirect - github.com/go-openapi/errors v0.22.2 // indirect - github.com/go-openapi/strfmt v0.23.0 // indirect - github.com/grafana/regexp v0.0.0-20250905093917-f7b3be9d1853 // indirect + github.com/go-openapi/errors v0.22.3 // indirect + github.com/go-openapi/strfmt v0.24.0 // indirect + github.com/go-viper/mapstructure/v2 v2.4.0 // indirect github.com/klauspost/compress v1.18.0 // indirect github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect github.com/lufia/plan9stats v0.0.0-20250827001030-24949be3fa54 // indirect github.com/magiconair/properties v1.8.10 // indirect - github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/go-archive v0.1.0 // indirect github.com/moby/patternmatcher v0.6.0 // indirect @@ -82,10 +81,10 @@ require ( github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.66.1 // indirect - github.com/prometheus/otlptranslator v0.0.2 // indirect + github.com/prometheus/otlptranslator v1.0.0 // indirect github.com/prometheus/procfs v0.17.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/shirou/gopsutil/v4 v4.25.8 // indirect + github.com/shirou/gopsutil/v4 v4.25.9 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/tklauser/go-sysconf v0.3.15 // indirect @@ -93,19 +92,19 @@ require ( github.com/xrash/smetrics v0.0.0-20250705151800-55b8f293f342 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect go.mongodb.org/mongo-driver v1.17.4 // indirect - go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 // indirect go.opentelemetry.io/otel v1.38.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0 // indirect go.opentelemetry.io/otel/metric v1.38.0 // indirect go.opentelemetry.io/otel/sdk v1.38.0 // indirect go.opentelemetry.io/otel/trace v1.38.0 // indirect - go.yaml.in/yaml/v2 v2.4.2 // indirect + go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.41.0 // indirect - golang.org/x/sys v0.35.0 // indirect - golang.org/x/text v0.28.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250826171959-ef028d996bc1 // indirect + golang.org/x/crypto v0.42.0 // indirect + golang.org/x/sys v0.36.0 // indirect + golang.org/x/text v0.29.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251002232023-7c0ddcbb5797 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 5addbc5..ad48307 100644 --- a/go.sum +++ b/go.sum @@ -1,11 +1,11 @@ -connectrpc.com/connect v1.18.1 h1:PAg7CjSAGvscaf6YZKUefjoih5Z/qYkyaTrBW8xvYPw= -connectrpc.com/connect v1.18.1/go.mod h1:0292hj1rnx8oFrStN7cB4jjVBeqs+Yx5yDIC2prWDO8= +connectrpc.com/connect v1.19.0 h1:LuqUbq01PqbtL0o7vn0WMRXzR2nNsiINe5zfcJ24pJM= +connectrpc.com/connect v1.19.0/go.mod h1:tN20fjdGlewnSFeZxLKb0xwIZ6ozc3OQs2hTXy4du9w= connectrpc.com/grpchealth v1.4.0 h1:MJC96JLelARPgZTiRF9KRfY/2N9OcoQvF2EWX07v2IE= connectrpc.com/grpchealth v1.4.0/go.mod h1:WhW6m1EzTmq3Ky1FE8EfkIpSDc6TfUx2M2KqZO3ts/Q= connectrpc.com/grpcreflect v1.3.0 h1:Y4V+ACf8/vOb1XOc251Qun7jMB75gCUNw6llvB9csXc= connectrpc.com/grpcreflect v1.3.0/go.mod h1:nfloOtCS8VUQOQ1+GTdFzVg2CJo4ZGaat8JIovCtDYs= -connectrpc.com/otelconnect v0.7.2 h1:WlnwFzaW64dN06JXU+hREPUGeEzpz3Acz2ACOmN8cMI= -connectrpc.com/otelconnect v0.7.2/go.mod h1:JS7XUKfuJs2adhCnXhNHPHLz6oAaZniCJdSF00OZSew= +connectrpc.com/otelconnect v0.8.0 h1:a4qrN4H8aEE2jAoCxheZYYfEjXMgVPyL9OzPQLBEFXU= +connectrpc.com/otelconnect v0.8.0/go.mod h1:AEkVLjCPXra+ObGFCOClcJkNjS7zPaQSqvO0lCyjfZc= dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= @@ -48,14 +48,14 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/docker v28.4.0+incompatible h1:KVC7bz5zJY/4AZe/78BIvCnPsLaC9T/zh72xnlrTTOk= -github.com/docker/docker v28.4.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v28.5.0+incompatible h1:ZdSQoRUE9XxhFI/B8YLvhnEFMmYN9Pp8Egd2qcaFk1E= +github.com/docker/docker v28.5.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.6.0 h1:LlMG9azAe1TqfR7sO+NJttz1gy6KO7VJBh+pMmjSD94= github.com/docker/go-connections v0.6.0/go.mod h1:AahvXYshr6JgfUJGdDCs2b5EZG/vmaMAntpSFH5BFKE= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/ebitengine/purego v0.8.4 h1:CF7LEKg5FFOsASUj0+QwaXf8Ht6TlFxg09+S9wz0omw= -github.com/ebitengine/purego v0.8.4/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/ebitengine/purego v0.9.0 h1:mh0zpKBIXDceC63hpvPuGLiJ8ZAa3DfrFTudmfi8A4k= +github.com/ebitengine/purego v0.9.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -66,12 +66,14 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= -github.com/go-openapi/errors v0.22.2 h1:rdxhzcBUazEcGccKqbY1Y7NS8FDcMyIRr0934jrYnZg= -github.com/go-openapi/errors v0.22.2/go.mod h1:+n/5UdIqdVnLIJ6Q9Se8HNGUXYaY6CN8ImWzfi/Gzp0= -github.com/go-openapi/strfmt v0.23.0 h1:nlUS6BCqcnAk0pyhi9Y+kdDVZdZMHfEKQiS4HaMgO/c= -github.com/go-openapi/strfmt v0.23.0/go.mod h1:NrtIpfKtWIygRkKVsxh7XQMDQW5HKQl6S5ik2elW+K4= +github.com/go-openapi/errors v0.22.3 h1:k6Hxa5Jg1TUyZnOwV2Lh81j8ayNw5VVYLvKrp4zFKFs= +github.com/go-openapi/errors v0.22.3/go.mod h1:+WvbaBBULWCOna//9B9TbLNGSFOfF8lY9dw4hGiEiKQ= +github.com/go-openapi/strfmt v0.24.0 h1:dDsopqbI3wrrlIzeXRbqMihRNnjzGC+ez4NQaAAJLuc= +github.com/go-openapi/strfmt v0.24.0/go.mod h1:Lnn1Bk9rZjXxU9VMADbEEOo7D7CDyKGLsSKekhFr7s4= github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y= github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= +github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs= +github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= @@ -79,8 +81,6 @@ github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grafana/regexp v0.0.0-20250905093917-f7b3be9d1853 h1:cLN4IBkmkYZNnk7EAJ0BHIethd+J6LqxFNw5mSiI2bM= -github.com/grafana/regexp v0.0.0-20250905093917-f7b3be9d1853/go.mod h1:+JKpmjMGhpgPL+rXZ5nsZieVzvarn86asRlBg4uNGnk= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8= @@ -133,12 +133,10 @@ github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/mdelapenya/tlscert v0.2.0 h1:7H81W6Z/4weDvZBNOfQte5GpIMo0lGYEeWbkGp5LJHI= github.com/mdelapenya/tlscert v0.2.0/go.mod h1:O4njj3ELLnJjGdkN7M/vIVCpZ+Cf0L6muqOG4tLSl8o= -github.com/metal-stack/metal-lib v0.23.4 h1:/xvCpgfvkGM8kdF0C3+mP7WGl0wiwU33MKG2UGIDXA8= -github.com/metal-stack/metal-lib v0.23.4/go.mod h1:Q0GXBtKJ5ycqtwGYtWI7NFKdGo0+q7TLGnstgfUwBCQ= +github.com/metal-stack/metal-lib v0.23.5 h1:ozrkB3DNr3Cqn8nkBvmzc/KKpYqC1j1mv2OVOj8i7Ac= +github.com/metal-stack/metal-lib v0.23.5/go.mod h1:7uyHIrE19dkLwCZyeh2jmd7IEq5pEpzrzUGLoMN1eqY= github.com/metal-stack/v v1.0.3 h1:Sh2oBlnxrCUD+mVpzfC8HiqL045YWkxs0gpTvkjppqs= github.com/metal-stack/v v1.0.3/go.mod h1:YTahEu7/ishwpYKnp/VaW/7nf8+PInogkfGwLcGPdXg= -github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= -github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= github.com/moby/go-archive v0.1.0 h1:Kk/5rdW/g+H8NHdJW2gsXyZ7UnzvJNOy6VKJqueWdcQ= @@ -183,16 +181,16 @@ github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNw github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= -github.com/prometheus/otlptranslator v0.0.2 h1:+1CdeLVrRQ6Psmhnobldo0kTp96Rj80DRXRd5OSnMEQ= -github.com/prometheus/otlptranslator v0.0.2/go.mod h1:P8AwMgdD7XEr6QRUJ2QWLpiAZTgTE2UYgjlu3svompI= +github.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos= +github.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM= github.com/prometheus/procfs v0.17.0 h1:FuLQ+05u4ZI+SS/w9+BWEM2TXiHKsUQ9TADiRH7DuK0= github.com/prometheus/procfs v0.17.0/go.mod h1:oPQLaDAMRbA+u8H5Pbfq+dl3VDAvHxMUOVhe0wYB2zw= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/shirou/gopsutil/v4 v4.25.8 h1:NnAsw9lN7587WHxjJA9ryDnqhJpFH6A+wagYWTOH970= -github.com/shirou/gopsutil/v4 v4.25.8/go.mod h1:q9QdMmfAOVIw7a+eF86P7ISEU6ka+NLgkUxlopV4RwI= +github.com/shirou/gopsutil/v4 v4.25.9 h1:JImNpf6gCVhKgZhtaAHJ0serfFGtlfIlSC08eaKdTrU= +github.com/shirou/gopsutil/v4 v4.25.9/go.mod h1:gxIxoC+7nQRwUl/xNhutXlD8lq+jxTgpIkEf3rADHL8= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -203,10 +201,10 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -github.com/testcontainers/testcontainers-go v0.38.0 h1:d7uEapLcv2P8AvH8ahLqDMMxda2W9gQN1nRbHS28HBw= -github.com/testcontainers/testcontainers-go v0.38.0/go.mod h1:C52c9MoHpWO+C4aqmgSU+hxlR5jlEayWtgYrb8Pzz1w= -github.com/testcontainers/testcontainers-go/modules/postgres v0.38.0 h1:KFdx9A0yF94K70T6ibSuvgkQQeX1xKlZVF3hEagXEtY= -github.com/testcontainers/testcontainers-go/modules/postgres v0.38.0/go.mod h1:T/QRECND6N6tAKMxF1Za+G2tpwnGEHcODzHRsgIpw9M= +github.com/testcontainers/testcontainers-go v0.39.0 h1:uCUJ5tA+fcxbFAB0uP3pIK3EJ2IjjDUHFSZ1H1UxAts= +github.com/testcontainers/testcontainers-go v0.39.0/go.mod h1:qmHpkG7H5uPf/EvOORKvS6EuDkBUPE3zpVGaH9NL7f8= +github.com/testcontainers/testcontainers-go/modules/postgres v0.39.0 h1:REJz+XwNpGC/dCgTfYvM4SKqobNqDBfvhq74s2oHTUM= +github.com/testcontainers/testcontainers-go/modules/postgres v0.39.0/go.mod h1:4K2OhtHEeT+JSIFX4V8DkGKsyLa96Y2vLdd3xsxD5HE= github.com/tklauser/go-sysconf v0.3.15 h1:VE89k0criAymJ/Os65CSn1IXaol+1wrsFHEB8Ol49K4= github.com/tklauser/go-sysconf v0.3.15/go.mod h1:Dmjwr6tYFIseJw7a3dRLJfsHAMXZ3nEnL/aZY+0IuI4= github.com/tklauser/numcpus v0.10.0 h1:18njr6LDBk1zuna922MgdjQuJFjrdppsZG60sHGfjso= @@ -219,8 +217,8 @@ github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.mongodb.org/mongo-driver v1.17.4 h1:jUorfmVzljjr0FLzYQsGP8cgN/qzzxlY9Vh0C9KFXVw= go.mongodb.org/mongo-driver v1.17.4/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= -go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 h1:RbKq8BG0FI8OiXhBfcRtqqHcZcka+gU3cskNuf05R18= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0/go.mod h1:h06DGIukJOevXaj/xrNjhi/2098RZzcLTbc0jDAUbsg= go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= @@ -243,39 +241,39 @@ go.opentelemetry.io/proto/otlp v1.7.1 h1:gTOMpGDb0WTBOP8JaO72iL3auEZhVmAQg4ipjOV go.opentelemetry.io/proto/otlp v1.7.1/go.mod h1:b2rVh6rfI/s2pHWNlB7ILJcRALpcNDzKhACevjI+ZnE= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= -go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= -go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= +go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= -golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= -golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= -golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= -golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= -golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= +golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= +golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= +golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= +golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= +golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4= -golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw= -golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= -golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= +golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/term v0.35.0 h1:bZBVKBudEyhRcajGcNc3jIfWPqV4y/Kt2XcoigOWtDQ= +golang.org/x/term v0.35.0/go.mod h1:TPGtkTLesOwf2DE8CgVYiZinHAOuy5AYUYT1lENIZnA= +golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= +golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250826171959-ef028d996bc1 h1:pmJpJEvT846VzausCQ5d7KreSROcDqmO388w5YbnltA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250826171959-ef028d996bc1/go.mod h1:GmFNa4BdJZ2a8G+wCe9Bg3wwThLrJun751XstdJt5Og= -google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= -google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251002232023-7c0ddcbb5797 h1:CirRxTOwnRWVLKzDNrs0CXAaVozJoR4G9xvdRecrdpk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251002232023-7c0ddcbb5797/go.mod h1:HSkG/KdJWusxU1F6CNrwNDjBMgisKxGnc5dAZfT0mjQ= +google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= +google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/pkg/client/client_test.go b/pkg/client/client_test.go index 315a7a5..d2a5418 100644 --- a/pkg/client/client_test.go +++ b/pkg/client/client_test.go @@ -66,154 +66,150 @@ func Test_Client(t *testing.T) { t.Run("check namespace interceptor sets missing namespace", func(t *testing.T) { t.Run("project member", func(t *testing.T) { - projectMemberService.create = func(_ context.Context, pmcr *connect.Request[v1.ProjectMemberCreateRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { - assert.Equal(t, "project-a", pmcr.Msg.ProjectMember.ProjectId) - assert.Equal(t, "tenant-a", pmcr.Msg.ProjectMember.TenantId) - assert.Equal(t, namespace, pmcr.Msg.ProjectMember.Namespace) - return connect.NewResponse(&v1.ProjectMemberResponse{}), nil + projectMemberService.create = func(_ context.Context, pmcr *v1.ProjectMemberCreateRequest) (*v1.ProjectMemberResponse, error) { + assert.Equal(t, "project-a", pmcr.ProjectMember.ProjectId) + assert.Equal(t, "tenant-a", pmcr.ProjectMember.TenantId) + assert.Equal(t, namespace, pmcr.ProjectMember.Namespace) + return &v1.ProjectMemberResponse{}, nil } - projectMemberService.find = func(_ context.Context, pmfr *connect.Request[v1.ProjectMemberFindRequest]) (*connect.Response[v1.ProjectMemberListResponse], error) { - assert.Equal(t, namespace, pmfr.Msg.Namespace) - return connect.NewResponse(&v1.ProjectMemberListResponse{}), nil + projectMemberService.find = func(_ context.Context, pmfr *v1.ProjectMemberFindRequest) (*v1.ProjectMemberListResponse, error) { + assert.Equal(t, namespace, pmfr.Namespace) + return &v1.ProjectMemberListResponse{}, nil } - _, err = client.ProjectMember().Create(t.Context(), connect.NewRequest(&v1.ProjectMemberCreateRequest{ + _, err = client.ProjectMember().Create(t.Context(), &v1.ProjectMemberCreateRequest{ ProjectMember: &v1.ProjectMember{ ProjectId: "project-a", TenantId: "tenant-a", }, - })) + }) require.NoError(t, err) - _, err = client.ProjectMember().Find(t.Context(), connect.NewRequest(&v1.ProjectMemberFindRequest{})) + _, err = client.ProjectMember().Find(t.Context(), &v1.ProjectMemberFindRequest{}) require.NoError(t, err) }) t.Run("tenant member", func(t *testing.T) { - tenantMemberService.create = func(_ context.Context, tmcr *connect.Request[v1.TenantMemberCreateRequest]) (*connect.Response[v1.TenantMemberResponse], error) { - assert.Equal(t, "tenant-a", tmcr.Msg.TenantMember.TenantId) - assert.Equal(t, namespace, tmcr.Msg.TenantMember.Namespace) - return connect.NewResponse(&v1.TenantMemberResponse{}), nil + tenantMemberService.create = func(_ context.Context, tmcr *v1.TenantMemberCreateRequest) (*v1.TenantMemberResponse, error) { + assert.Equal(t, "tenant-a", tmcr.TenantMember.TenantId) + assert.Equal(t, namespace, tmcr.TenantMember.Namespace) + return &v1.TenantMemberResponse{}, nil } - tenantMemberService.find = func(ctx context.Context, tmfr *connect.Request[v1.TenantMemberFindRequest]) (*connect.Response[v1.TenantMemberListResponse], error) { - assert.Equal(t, namespace, tmfr.Msg.Namespace) - return connect.NewResponse(&v1.TenantMemberListResponse{}), nil + tenantMemberService.find = func(ctx context.Context, tmfr *v1.TenantMemberFindRequest) (*v1.TenantMemberListResponse, error) { + assert.Equal(t, namespace, tmfr.Namespace) + return &v1.TenantMemberListResponse{}, nil } - _, err = client.TenantMember().Create(t.Context(), connect.NewRequest(&v1.TenantMemberCreateRequest{ + _, err = client.TenantMember().Create(t.Context(), &v1.TenantMemberCreateRequest{ TenantMember: &v1.TenantMember{ TenantId: "tenant-a", }, - })) + }) require.NoError(t, err) - _, err = client.TenantMember().Find(t.Context(), connect.NewRequest(&v1.TenantMemberFindRequest{})) + _, err = client.TenantMember().Find(t.Context(), &v1.TenantMemberFindRequest{}) require.NoError(t, err) }) }) t.Run("check explicit namespace can be set anyway", func(t *testing.T) { t.Run("project member", func(t *testing.T) { - projectMemberService.create = func(_ context.Context, pmcr *connect.Request[v1.ProjectMemberCreateRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { - assert.Equal(t, "project-a", pmcr.Msg.ProjectMember.ProjectId) - assert.Equal(t, "tenant-a", pmcr.Msg.ProjectMember.TenantId) - assert.Equal(t, "b", pmcr.Msg.ProjectMember.Namespace) - return connect.NewResponse(&v1.ProjectMemberResponse{}), nil + projectMemberService.create = func(_ context.Context, pmcr *v1.ProjectMemberCreateRequest) (*v1.ProjectMemberResponse, error) { + assert.Equal(t, "project-a", pmcr.ProjectMember.ProjectId) + assert.Equal(t, "tenant-a", pmcr.ProjectMember.TenantId) + assert.Equal(t, "b", pmcr.ProjectMember.Namespace) + return &v1.ProjectMemberResponse{}, nil } - projectMemberService.find = func(_ context.Context, pmfr *connect.Request[v1.ProjectMemberFindRequest]) (*connect.Response[v1.ProjectMemberListResponse], error) { - assert.Equal(t, "b", pmfr.Msg.Namespace) - return connect.NewResponse(&v1.ProjectMemberListResponse{}), nil + projectMemberService.find = func(_ context.Context, pmfr *v1.ProjectMemberFindRequest) (*v1.ProjectMemberListResponse, error) { + assert.Equal(t, "b", pmfr.Namespace) + return &v1.ProjectMemberListResponse{}, nil } - _, err = client.ProjectMember().Create(t.Context(), connect.NewRequest(&v1.ProjectMemberCreateRequest{ + _, err = client.ProjectMember().Create(t.Context(), &v1.ProjectMemberCreateRequest{ ProjectMember: &v1.ProjectMember{ ProjectId: "project-a", TenantId: "tenant-a", Namespace: "b", }, - })) + }) require.NoError(t, err) - _, err = client.ProjectMember().Find(t.Context(), connect.NewRequest(&v1.ProjectMemberFindRequest{ - Namespace: "b", - })) + _, err = client.ProjectMember().Find(t.Context(), &v1.ProjectMemberFindRequest{Namespace: "b"}) require.NoError(t, err) }) t.Run("tenant member", func(t *testing.T) { - tenantMemberService.create = func(_ context.Context, tmcr *connect.Request[v1.TenantMemberCreateRequest]) (*connect.Response[v1.TenantMemberResponse], error) { - assert.Equal(t, "tenant-a", tmcr.Msg.TenantMember.TenantId) - assert.Equal(t, "b", tmcr.Msg.TenantMember.Namespace) - return connect.NewResponse(&v1.TenantMemberResponse{}), nil + tenantMemberService.create = func(_ context.Context, tmcr *v1.TenantMemberCreateRequest) (*v1.TenantMemberResponse, error) { + assert.Equal(t, "tenant-a", tmcr.TenantMember.TenantId) + assert.Equal(t, "b", tmcr.TenantMember.Namespace) + return &v1.TenantMemberResponse{}, nil } - tenantMemberService.find = func(ctx context.Context, tmfr *connect.Request[v1.TenantMemberFindRequest]) (*connect.Response[v1.TenantMemberListResponse], error) { - assert.Equal(t, "b", tmfr.Msg.Namespace) - return connect.NewResponse(&v1.TenantMemberListResponse{}), nil + tenantMemberService.find = func(ctx context.Context, tmfr *v1.TenantMemberFindRequest) (*v1.TenantMemberListResponse, error) { + assert.Equal(t, "b", tmfr.Namespace) + return &v1.TenantMemberListResponse{}, nil } - _, err = client.TenantMember().Create(t.Context(), connect.NewRequest(&v1.TenantMemberCreateRequest{ + _, err = client.TenantMember().Create(t.Context(), &v1.TenantMemberCreateRequest{ TenantMember: &v1.TenantMember{ TenantId: "tenant-a", Namespace: "b", }, - })) + }) require.NoError(t, err) - _, err = client.TenantMember().Find(t.Context(), connect.NewRequest(&v1.TenantMemberFindRequest{ - Namespace: "b", - })) + _, err = client.TenantMember().Find(t.Context(), &v1.TenantMemberFindRequest{Namespace: "b"}) require.NoError(t, err) }) }) } type projectMemberService struct { - create func(context.Context, *connect.Request[v1.ProjectMemberCreateRequest]) (*connect.Response[v1.ProjectMemberResponse], error) - find func(context.Context, *connect.Request[v1.ProjectMemberFindRequest]) (*connect.Response[v1.ProjectMemberListResponse], error) + create func(context.Context, *v1.ProjectMemberCreateRequest) (*v1.ProjectMemberResponse, error) + find func(context.Context, *v1.ProjectMemberFindRequest) (*v1.ProjectMemberListResponse, error) } -func (p *projectMemberService) Create(ctx context.Context, r *connect.Request[v1.ProjectMemberCreateRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { +func (p *projectMemberService) Create(ctx context.Context, r *v1.ProjectMemberCreateRequest) (*v1.ProjectMemberResponse, error) { return p.create(ctx, r) } -func (p *projectMemberService) Delete(context.Context, *connect.Request[v1.ProjectMemberDeleteRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { +func (p *projectMemberService) Delete(context.Context, *v1.ProjectMemberDeleteRequest) (*v1.ProjectMemberResponse, error) { panic("unimplemented") } -func (p *projectMemberService) Find(ctx context.Context, r *connect.Request[v1.ProjectMemberFindRequest]) (*connect.Response[v1.ProjectMemberListResponse], error) { +func (p *projectMemberService) Find(ctx context.Context, r *v1.ProjectMemberFindRequest) (*v1.ProjectMemberListResponse, error) { return p.find(ctx, r) } -func (p *projectMemberService) Get(context.Context, *connect.Request[v1.ProjectMemberGetRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { +func (p *projectMemberService) Get(context.Context, *v1.ProjectMemberGetRequest) (*v1.ProjectMemberResponse, error) { panic("unimplemented") } -func (p *projectMemberService) Update(context.Context, *connect.Request[v1.ProjectMemberUpdateRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { +func (p *projectMemberService) Update(context.Context, *v1.ProjectMemberUpdateRequest) (*v1.ProjectMemberResponse, error) { panic("unimplemented") } type tenantMemberService struct { - create func(context.Context, *connect.Request[v1.TenantMemberCreateRequest]) (*connect.Response[v1.TenantMemberResponse], error) - find func(context.Context, *connect.Request[v1.TenantMemberFindRequest]) (*connect.Response[v1.TenantMemberListResponse], error) + create func(context.Context, *v1.TenantMemberCreateRequest) (*v1.TenantMemberResponse, error) + find func(context.Context, *v1.TenantMemberFindRequest) (*v1.TenantMemberListResponse, error) } -func (t *tenantMemberService) Create(ctx context.Context, r *connect.Request[v1.TenantMemberCreateRequest]) (*connect.Response[v1.TenantMemberResponse], error) { +func (t *tenantMemberService) Create(ctx context.Context, r *v1.TenantMemberCreateRequest) (*v1.TenantMemberResponse, error) { return t.create(ctx, r) } -func (t *tenantMemberService) Delete(context.Context, *connect.Request[v1.TenantMemberDeleteRequest]) (*connect.Response[v1.TenantMemberResponse], error) { +func (t *tenantMemberService) Delete(context.Context, *v1.TenantMemberDeleteRequest) (*v1.TenantMemberResponse, error) { panic("unimplemented") } -func (t *tenantMemberService) Find(ctx context.Context, r *connect.Request[v1.TenantMemberFindRequest]) (*connect.Response[v1.TenantMemberListResponse], error) { +func (t *tenantMemberService) Find(ctx context.Context, r *v1.TenantMemberFindRequest) (*v1.TenantMemberListResponse, error) { return t.find(ctx, r) } -func (t *tenantMemberService) Get(context.Context, *connect.Request[v1.TenantMemberGetRequest]) (*connect.Response[v1.TenantMemberResponse], error) { +func (t *tenantMemberService) Get(context.Context, *v1.TenantMemberGetRequest) (*v1.TenantMemberResponse, error) { panic("unimplemented") } -func (t *tenantMemberService) Update(context.Context, *connect.Request[v1.TenantMemberUpdateRequest]) (*connect.Response[v1.TenantMemberResponse], error) { +func (t *tenantMemberService) Update(context.Context, *v1.TenantMemberUpdateRequest) (*v1.TenantMemberResponse, error) { panic("unimplemented") } diff --git a/pkg/service/project.go b/pkg/service/project.go index d171228..eaab7a4 100644 --- a/pkg/service/project.go +++ b/pkg/service/project.go @@ -7,7 +7,6 @@ import ( "strconv" "strings" - "connectrpc.com/connect" v1 "github.com/metal-stack/masterdata-api/api/v1" "github.com/metal-stack/masterdata-api/pkg/datastore" "google.golang.org/grpc/codes" @@ -30,9 +29,8 @@ func NewProjectService(l *slog.Logger, pds ProjectDataStore, pmds ProjectMemberD } } -func (s *projectService) Create(ctx context.Context, rq *connect.Request[v1.ProjectCreateRequest]) (*connect.Response[v1.ProjectResponse], error) { - req := rq.Msg - project := req.Project +func (s *projectService) Create(ctx context.Context, rq *v1.ProjectCreateRequest) (*v1.ProjectResponse, error) { + project := rq.Project tenant, err := s.tenantStore.Get(ctx, project.GetTenantId()) if err != nil && v1.IsNotFound(err) { @@ -69,24 +67,22 @@ func (s *projectService) Create(ctx context.Context, rq *connect.Request[v1.Proj project.Meta = &v1.Meta{} } err = s.projectStore.Create(ctx, project) - return connect.NewResponse(project.NewProjectResponse()), err + return project.NewProjectResponse(), err } -func (s *projectService) Update(ctx context.Context, rq *connect.Request[v1.ProjectUpdateRequest]) (*connect.Response[v1.ProjectResponse], error) { - req := rq.Msg - old, err := s.projectStore.Get(ctx, req.Project.Meta.Id) +func (s *projectService) Update(ctx context.Context, rq *v1.ProjectUpdateRequest) (*v1.ProjectResponse, error) { + old, err := s.projectStore.Get(ctx, rq.Project.Meta.Id) if err != nil { return nil, err } - project := req.Project + project := rq.Project if old.TenantId != project.TenantId { return nil, status.Error(codes.InvalidArgument, fmt.Sprintf("update tenant of project:%s is not allowed", project.Meta.Id)) } err = s.projectStore.Update(ctx, project) - return connect.NewResponse(project.NewProjectResponse()), err + return project.NewProjectResponse(), err } -func (s *projectService) Delete(ctx context.Context, rq *connect.Request[v1.ProjectDeleteRequest]) (*connect.Response[v1.ProjectResponse], error) { - req := rq.Msg - project := req.NewProject() +func (s *projectService) Delete(ctx context.Context, rq *v1.ProjectDeleteRequest) (*v1.ProjectResponse, error) { + project := rq.NewProject() filter := map[string]any{ "projectmember ->> 'project_id'": project.Meta.Id, } @@ -110,58 +106,55 @@ func (s *projectService) Delete(ctx context.Context, rq *connect.Request[v1.Proj if err != nil { return nil, err } - return connect.NewResponse(project.NewProjectResponse()), nil + return project.NewProjectResponse(), nil } -func (s *projectService) Get(ctx context.Context, rq *connect.Request[v1.ProjectGetRequest]) (*connect.Response[v1.ProjectResponse], error) { - req := rq.Msg - project, err := s.projectStore.Get(ctx, req.Id) +func (s *projectService) Get(ctx context.Context, rq *v1.ProjectGetRequest) (*v1.ProjectResponse, error) { + project, err := s.projectStore.Get(ctx, rq.Id) if err != nil { return nil, err } - return connect.NewResponse(project.NewProjectResponse()), nil + return project.NewProjectResponse(), nil } -func (s *projectService) GetHistory(ctx context.Context, rq *connect.Request[v1.ProjectGetHistoryRequest]) (*connect.Response[v1.ProjectResponse], error) { - req := rq.Msg +func (s *projectService) GetHistory(ctx context.Context, rq *v1.ProjectGetHistoryRequest) (*v1.ProjectResponse, error) { project := &v1.Project{} - at := req.At.AsTime() - err := s.projectStore.GetHistory(ctx, req.Id, at, project) + at := rq.At.AsTime() + err := s.projectStore.GetHistory(ctx, rq.Id, at, project) if err != nil { return nil, err } - return connect.NewResponse(project.NewProjectResponse()), nil + return project.NewProjectResponse(), nil } -func (s *projectService) Find(ctx context.Context, rq *connect.Request[v1.ProjectFindRequest]) (*connect.Response[v1.ProjectListResponse], error) { - req := rq.Msg +func (s *projectService) Find(ctx context.Context, rq *v1.ProjectFindRequest) (*v1.ProjectListResponse, error) { // TODO: remove in next release - if req.DeprecatedId != nil && req.Id == nil { // nolint:staticcheck - req.Id = &req.DeprecatedId.Value // nolint:staticcheck + if rq.DeprecatedId != nil && rq.Id == nil { // nolint:staticcheck + rq.Id = &rq.DeprecatedId.Value // nolint:staticcheck } - if req.DeprecatedDescription != nil && req.Description == nil { // nolint:staticcheck - req.Description = &req.DeprecatedDescription.Value // nolint:staticcheck + if rq.DeprecatedDescription != nil && rq.Description == nil { // nolint:staticcheck + rq.Description = &rq.DeprecatedDescription.Value // nolint:staticcheck } - if req.DeprecatedName != nil && req.Name == nil { // nolint:staticcheck - req.Name = &req.DeprecatedName.Value // nolint:staticcheck + if rq.DeprecatedName != nil && rq.Name == nil { // nolint:staticcheck + rq.Name = &rq.DeprecatedName.Value // nolint:staticcheck } - if req.DeprecatedTenantId != nil && req.TenantId == nil { // nolint:staticcheck - req.TenantId = &req.DeprecatedTenantId.Value // nolint:staticcheck + if rq.DeprecatedTenantId != nil && rq.TenantId == nil { // nolint:staticcheck + rq.TenantId = &rq.DeprecatedTenantId.Value // nolint:staticcheck } var filters []any mapFilter := make(map[string]any) - if req.Id != nil { - mapFilter["id"] = req.Id + if rq.Id != nil { + mapFilter["id"] = rq.Id } - if req.Name != nil { - mapFilter["project ->> 'name'"] = req.Name + if rq.Name != nil { + mapFilter["project ->> 'name'"] = rq.Name } - if req.Description != nil { - mapFilter["project ->> 'description'"] = req.Description + if rq.Description != nil { + mapFilter["project ->> 'description'"] = rq.Description } - if req.TenantId != nil { - mapFilter["project ->> 'tenant_id'"] = req.TenantId + if rq.TenantId != nil { + mapFilter["project ->> 'tenant_id'"] = rq.TenantId } - for key, value := range req.Annotations { + for key, value := range rq.Annotations { // select * from project where project -> 'meta' -> 'annotations' ->> 'metal-stack.io/admitted' = 'true'; f := fmt.Sprintf("project -> 'meta' -> 'annotations' ->> '%s'", key) mapFilter[f] = value @@ -171,10 +164,10 @@ func (s *projectService) Find(ctx context.Context, rq *connect.Request[v1.Projec filters = append(filters, mapFilter) } - if len(req.Labels) > 0 { + if len(rq.Labels) > 0 { var contains []string - for _, label := range req.Labels { + for _, label := range rq.Labels { contains = append(contains, strconv.Quote(label)) } @@ -184,12 +177,12 @@ func (s *projectService) Find(ctx context.Context, rq *connect.Request[v1.Projec filters = append(filters, labelFilter) } - res, nextPage, err := s.projectStore.Find(ctx, req.Paging, filters...) + res, nextPage, err := s.projectStore.Find(ctx, rq.Paging, filters...) if err != nil { return nil, err } resp := new(v1.ProjectListResponse) resp.Projects = append(resp.Projects, res...) resp.NextPage = nextPage - return connect.NewResponse(resp), nil + return resp, nil } diff --git a/pkg/service/project_test.go b/pkg/service/project_test.go index 790fd5f..da0a769 100644 --- a/pkg/service/project_test.go +++ b/pkg/service/project_test.go @@ -5,7 +5,6 @@ import ( "log/slog" "slices" - "connectrpc.com/connect" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" v1 "github.com/metal-stack/masterdata-api/api/v1" @@ -51,11 +50,11 @@ func TestCreateProject(t *testing.T) { } tenantStorageMock.On("Get", ctx, p1.GetTenantId()).Return(t1, nil) storageMock.On("Create", ctx, p1).Return(nil) - resp, err := ts.Create(ctx, connect.NewRequest(tcr)) + resp, err := ts.Create(ctx, tcr) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.Msg.Project) - assert.Equal(t, tcr.Project.GetName(), resp.Msg.Project.GetName()) + assert.NotNil(t, resp.Project) + assert.Equal(t, tcr.Project.GetName(), resp.Project.GetName()) } func TestCreateProjectWithQuotaCheck(t *testing.T) { @@ -90,11 +89,11 @@ func TestCreateProjectWithQuotaCheck(t *testing.T) { tenantStorageMock.On("Get", ctx, p1.GetTenantId()).Return(t1, nil) storageMock.On("Find", ctx, mock.Anything, []any{filter}).Return(projects, nil, nil) storageMock.On("Create", ctx, p1).Return(nil) - resp, err := ts.Create(ctx, connect.NewRequest(tcr)) + resp, err := ts.Create(ctx, tcr) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.Msg.Project) - assert.Equal(t, tcr.Project.GetName(), resp.Msg.Project.GetName()) + assert.NotNil(t, resp.Project) + assert.Equal(t, tcr.Project.GetName(), resp.Project.GetName()) } func TestUpdateProject(t *testing.T) { @@ -123,11 +122,11 @@ func TestUpdateProject(t *testing.T) { storageMock.On("Get", ctx, t1.Meta.Id).Return(t1, nil) storageMock.On("Update", ctx, t1).Return(nil) - resp, err := ts.Update(ctx, connect.NewRequest(tur)) + resp, err := ts.Update(ctx, tur) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.Msg.Project) - assert.Equal(t, tur.GetProject().GetName(), resp.Msg.Project.GetName()) + assert.NotNil(t, resp.Project) + assert.Equal(t, tur.GetProject().GetName(), resp.Project.GetName()) } func TestDeleteProject(t *testing.T) { @@ -157,11 +156,11 @@ func TestDeleteProject(t *testing.T) { }, nil, nil) projectMemberStorageMock.On("DeleteAll", ctx, []string{p3.Meta.Id}).Return(nil) storageMock.On("Delete", ctx, p3.Meta.Id).Return(nil) - resp, err := ps.Delete(ctx, connect.NewRequest(pdr)) + resp, err := ps.Delete(ctx, pdr) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.Msg.Project) - assert.Equal(t, pdr.Id, resp.Msg.Project.GetMeta().GetId()) + assert.NotNil(t, resp.Project) + assert.Equal(t, pdr.Id, resp.Project.GetMeta().GetId()) } func TestGetProject(t *testing.T) { @@ -181,11 +180,11 @@ func TestGetProject(t *testing.T) { } storageMock.On("Get", ctx, "p4").Return(t4, nil) - resp, err := ts.Get(ctx, connect.NewRequest(tgr)) + resp, err := ts.Get(ctx, tgr) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.Msg.Project) - assert.Equal(t, tgr.Id, resp.Msg.Project.GetMeta().GetId()) + assert.NotNil(t, resp.Project) + assert.Equal(t, tgr.Id, resp.Project.GetMeta().GetId()) } func TestFindProject(t *testing.T) { @@ -431,19 +430,19 @@ func TestFindProject(t *testing.T) { tt.prepare() } - got, err := service.Find(ctx, connect.NewRequest(tt.req)) + got, err := service.Find(ctx, tt.req) if diff := cmp.Diff(err, tt.wantErr); diff != "" { t.Errorf("(-want +got):\n%s", diff) return } - slices.SortFunc(got.Msg.Projects, func(i, j *v1.Project) int { + slices.SortFunc(got.Projects, func(i, j *v1.Project) int { if i.Meta.Id < j.Meta.Id { return -1 } else { return 1 } }) - if diff := cmp.Diff(tt.want, got.Msg, cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { + if diff := cmp.Diff(tt.want, got, cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { t.Errorf("(-want +got):\n%s", diff) } }) diff --git a/pkg/service/projectmember.go b/pkg/service/projectmember.go index a4c49c4..b75d3b2 100644 --- a/pkg/service/projectmember.go +++ b/pkg/service/projectmember.go @@ -5,7 +5,6 @@ import ( "fmt" "log/slog" - "connectrpc.com/connect" v1 "github.com/metal-stack/masterdata-api/api/v1" "github.com/metal-stack/masterdata-api/pkg/datastore" "google.golang.org/grpc/codes" @@ -28,9 +27,8 @@ func NewProjectMemberService(l *slog.Logger, pds ProjectDataStore, pmds ProjectM } } -func (s *projectMemberService) Create(ctx context.Context, rq *connect.Request[v1.ProjectMemberCreateRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { - req := rq.Msg - projectMember := req.ProjectMember +func (s *projectMemberService) Create(ctx context.Context, rq *v1.ProjectMemberCreateRequest) (*v1.ProjectMemberResponse, error) { + projectMember := rq.ProjectMember _, err := s.tenantStore.Get(ctx, projectMember.GetTenantId()) if err != nil && v1.IsNotFound(err) { @@ -53,12 +51,11 @@ func (s *projectMemberService) Create(ctx context.Context, rq *connect.Request[v projectMember.Meta = &v1.Meta{} } err = s.projectMemberStore.Create(ctx, projectMember) - return connect.NewResponse(projectMember.NewProjectMemberResponse()), err + return projectMember.NewProjectMemberResponse(), err } -func (s *projectMemberService) Update(ctx context.Context, rq *connect.Request[v1.ProjectMemberUpdateRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { - req := rq.Msg - projectMember := req.ProjectMember +func (s *projectMemberService) Update(ctx context.Context, rq *v1.ProjectMemberUpdateRequest) (*v1.ProjectMemberResponse, error) { + projectMember := rq.ProjectMember old, err := s.projectMemberStore.Get(ctx, projectMember.Meta.Id) if err != nil { @@ -77,42 +74,37 @@ func (s *projectMemberService) Update(ctx context.Context, rq *connect.Request[v err = s.projectMemberStore.Update(ctx, projectMember) - return connect.NewResponse(projectMember.NewProjectMemberResponse()), err + return projectMember.NewProjectMemberResponse(), err } -func (s *projectMemberService) Delete(ctx context.Context, rq *connect.Request[v1.ProjectMemberDeleteRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { - req := rq.Msg - - projectMember := req.NewProjectMember() +func (s *projectMemberService) Delete(ctx context.Context, rq *v1.ProjectMemberDeleteRequest) (*v1.ProjectMemberResponse, error) { + projectMember := rq.NewProjectMember() err := s.projectMemberStore.Delete(ctx, projectMember.Meta.Id) - return connect.NewResponse(projectMember.NewProjectMemberResponse()), err + return projectMember.NewProjectMemberResponse(), err } -func (s *projectMemberService) Get(ctx context.Context, rq *connect.Request[v1.ProjectMemberGetRequest]) (*connect.Response[v1.ProjectMemberResponse], error) { - req := rq.Msg - - projectMember, err := s.projectMemberStore.Get(ctx, req.Id) +func (s *projectMemberService) Get(ctx context.Context, rq *v1.ProjectMemberGetRequest) (*v1.ProjectMemberResponse, error) { + projectMember, err := s.projectMemberStore.Get(ctx, rq.Id) if err != nil { return nil, err } - return connect.NewResponse(projectMember.NewProjectMemberResponse()), nil + return projectMember.NewProjectMemberResponse(), nil } -func (s *projectMemberService) Find(ctx context.Context, rq *connect.Request[v1.ProjectMemberFindRequest]) (*connect.Response[v1.ProjectMemberListResponse], error) { - req := rq.Msg +func (s *projectMemberService) Find(ctx context.Context, rq *v1.ProjectMemberFindRequest) (*v1.ProjectMemberListResponse, error) { filter := map[string]any{ - "COALESCE(projectmember ->> 'namespace', '')": req.Namespace, + "COALESCE(projectmember ->> 'namespace', '')": rq.Namespace, } - if req.ProjectId != nil { - filter["projectmember ->> 'project_id'"] = req.ProjectId + if rq.ProjectId != nil { + filter["projectmember ->> 'project_id'"] = rq.ProjectId } - if req.TenantId != nil { - filter["projectmember ->> 'tenant_id'"] = req.TenantId + if rq.TenantId != nil { + filter["projectmember ->> 'tenant_id'"] = rq.TenantId } - for key, value := range req.Annotations { + for key, value := range rq.Annotations { // select * from projectMember where projectMember -> 'meta' -> 'annotations' ->> 'metal-stack.io/role' = 'owner'; f := fmt.Sprintf("projectmember -> 'meta' -> 'annotations' ->> '%s'", key) filter[f] = value @@ -126,5 +118,5 @@ func (s *projectMemberService) Find(ctx context.Context, rq *connect.Request[v1. resp := new(v1.ProjectMemberListResponse) resp.ProjectMembers = append(resp.ProjectMembers, res...) - return connect.NewResponse(resp), nil + return resp, nil } diff --git a/pkg/service/projectmember_test.go b/pkg/service/projectmember_test.go index 7167e8a..dc94c0c 100644 --- a/pkg/service/projectmember_test.go +++ b/pkg/service/projectmember_test.go @@ -5,7 +5,6 @@ import ( "log/slog" "slices" - "connectrpc.com/connect" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" v1 "github.com/metal-stack/masterdata-api/api/v1" @@ -47,11 +46,11 @@ func TestCreateProjectMember(t *testing.T) { tenantStorageMock.On("Get", ctx, pm1.GetTenantId()).Return(t1, nil) projectStorageMock.On("Get", ctx, pm1.GetProjectId()).Return(p1, nil) storageMock.On("Create", ctx, pm1).Return(nil) - resp, err := ts.Create(ctx, connect.NewRequest(pmcr)) + resp, err := ts.Create(ctx, pmcr) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.Msg.ProjectMember) - assert.Equal(t, pmcr.ProjectMember.ProjectId, resp.Msg.ProjectMember.GetProjectId()) + assert.NotNil(t, resp.ProjectMember) + assert.Equal(t, pmcr.ProjectMember.ProjectId, resp.ProjectMember.GetProjectId()) } func TestDeleteProjectMember(t *testing.T) { @@ -73,11 +72,11 @@ func TestDeleteProjectMember(t *testing.T) { } storageMock.On("Delete", ctx, t3.Meta.Id).Return(nil) - resp, err := ts.Delete(ctx, connect.NewRequest(tdr)) + resp, err := ts.Delete(ctx, tdr) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.Msg.ProjectMember) - assert.Equal(t, tdr.Id, resp.Msg.ProjectMember.GetMeta().GetId()) + assert.NotNil(t, resp.ProjectMember) + assert.Equal(t, tdr.Id, resp.ProjectMember.GetMeta().GetId()) } func TestGetProjectMember(t *testing.T) { @@ -99,11 +98,11 @@ func TestGetProjectMember(t *testing.T) { } storageMock.On("Get", ctx, "p4").Return(t4, nil) - resp, err := ts.Get(ctx, connect.NewRequest(tgr)) + resp, err := ts.Get(ctx, tgr) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.Msg.ProjectMember) - assert.Equal(t, tgr.Id, resp.Msg.ProjectMember.GetMeta().GetId()) + assert.NotNil(t, resp.ProjectMember) + assert.Equal(t, tgr.Id, resp.ProjectMember.GetMeta().GetId()) } func TestFindProjectMember(t *testing.T) { @@ -354,13 +353,13 @@ func TestFindProjectMember(t *testing.T) { tt.prepare() } - got, err := service.Find(ctx, connect.NewRequest(tt.req)) + got, err := service.Find(ctx, tt.req) if diff := cmp.Diff(err, tt.wantErr); diff != "" { t.Errorf("(-want +got):\n%s", diff) return } - slices.SortFunc(got.Msg.ProjectMembers, func(i, j *v1.ProjectMember) int { + slices.SortFunc(got.ProjectMembers, func(i, j *v1.ProjectMember) int { if i.Meta.Id < j.Meta.Id { return -1 } else { @@ -368,7 +367,7 @@ func TestFindProjectMember(t *testing.T) { } }) - if diff := cmp.Diff(tt.want, pointer.SafeDeref(got).Msg, cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { + if diff := cmp.Diff(tt.want, pointer.SafeDeref(got), cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { t.Errorf("(-want +got):\n%s", diff) } }) @@ -559,17 +558,17 @@ func TestUpdateProjectMember(t *testing.T) { tt.prepare() } - got, err := service.Update(ctx, connect.NewRequest(tt.req)) + got, err := service.Update(ctx, tt.req) if diff := cmp.Diff(err, tt.wantErr, cmpopts.EquateErrors()); diff != "" { t.Errorf("(-want +got):\n%s", diff) return } if err == nil { - assert.NotNil(t, got.Msg.ProjectMember.Meta.UpdatedTime) + assert.NotNil(t, got.ProjectMember.Meta.UpdatedTime) } - if diff := cmp.Diff(tt.want, pointer.SafeDeref(got).Msg, cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime", "UpdatedTime"), testcommon.IgnoreUnexported()); diff != "" { + if diff := cmp.Diff(tt.want, pointer.SafeDeref(got), cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime", "UpdatedTime"), testcommon.IgnoreUnexported()); diff != "" { t.Errorf("(-want +got):\n%s", diff) } }) diff --git a/pkg/service/tenant.go b/pkg/service/tenant.go index 8ce3fc9..5d83e10 100644 --- a/pkg/service/tenant.go +++ b/pkg/service/tenant.go @@ -8,7 +8,6 @@ import ( "strconv" "strings" - "connectrpc.com/connect" sq "github.com/Masterminds/squirrel" "github.com/jmoiron/sqlx" v1 "github.com/metal-stack/masterdata-api/api/v1" @@ -38,26 +37,23 @@ func NewTenantService(db *sqlx.DB, l *slog.Logger, tds TenantDataStore, tmds Ten } } -func (s *tenantService) Create(ctx context.Context, rq *connect.Request[v1.TenantCreateRequest]) (*connect.Response[v1.TenantResponse], error) { - req := rq.Msg - tenant := req.Tenant +func (s *tenantService) Create(ctx context.Context, rq *v1.TenantCreateRequest) (*v1.TenantResponse, error) { + tenant := rq.Tenant // allow create without sending Meta if tenant.Meta == nil { tenant.Meta = &v1.Meta{} } err := s.tenantStore.Create(ctx, tenant) - return connect.NewResponse(tenant.NewTenantResponse()), err + return tenant.NewTenantResponse(), err } -func (s *tenantService) Update(ctx context.Context, rq *connect.Request[v1.TenantUpdateRequest]) (*connect.Response[v1.TenantResponse], error) { - req := rq.Msg - tenant := req.Tenant +func (s *tenantService) Update(ctx context.Context, rq *v1.TenantUpdateRequest) (*v1.TenantResponse, error) { + tenant := rq.Tenant err := s.tenantStore.Update(ctx, tenant) - return connect.NewResponse(tenant.NewTenantResponse()), err + return tenant.NewTenantResponse(), err } -func (s *tenantService) Delete(ctx context.Context, rq *connect.Request[v1.TenantDeleteRequest]) (*connect.Response[v1.TenantResponse], error) { - req := rq.Msg - tenant := req.NewTenant() +func (s *tenantService) Delete(ctx context.Context, rq *v1.TenantDeleteRequest) (*v1.TenantResponse, error) { + tenant := rq.NewTenant() tenantIsHostFilter := map[string]any{ "tenantmember ->> 'tenant_id'": tenant.Meta.Id, } @@ -96,54 +92,51 @@ func (s *tenantService) Delete(ctx context.Context, rq *connect.Request[v1.Tenan if err != nil { return nil, err } - return connect.NewResponse(tenant.NewTenantResponse()), nil + return tenant.NewTenantResponse(), nil } -func (s *tenantService) Get(ctx context.Context, rq *connect.Request[v1.TenantGetRequest]) (*connect.Response[v1.TenantResponse], error) { - req := rq.Msg - tenant, err := s.tenantStore.Get(ctx, req.Id) +func (s *tenantService) Get(ctx context.Context, rq *v1.TenantGetRequest) (*v1.TenantResponse, error) { + tenant, err := s.tenantStore.Get(ctx, rq.Id) if err != nil { return nil, err } // response with entity, no error - return connect.NewResponse(tenant.NewTenantResponse()), nil + return tenant.NewTenantResponse(), nil } -func (s *tenantService) GetHistory(ctx context.Context, rq *connect.Request[v1.TenantGetHistoryRequest]) (*connect.Response[v1.TenantResponse], error) { - req := rq.Msg +func (s *tenantService) GetHistory(ctx context.Context, rq *v1.TenantGetHistoryRequest) (*v1.TenantResponse, error) { tenant := &v1.Tenant{} - at := req.At.AsTime() - s.log.Info("getHistory", "id", req.Id, "at", at) - err := s.tenantStore.GetHistory(ctx, req.Id, at, tenant) + at := rq.At.AsTime() + s.log.Info("getHistory", "id", rq.Id, "at", at) + err := s.tenantStore.GetHistory(ctx, rq.Id, at, tenant) if err != nil { return nil, err } // response with entity, no error - return connect.NewResponse(tenant.NewTenantResponse()), nil + return tenant.NewTenantResponse(), nil } -func (s *tenantService) Find(ctx context.Context, rq *connect.Request[v1.TenantFindRequest]) (*connect.Response[v1.TenantListResponse], error) { - req := rq.Msg +func (s *tenantService) Find(ctx context.Context, rq *v1.TenantFindRequest) (*v1.TenantListResponse, error) { // TODO: remove in next release - if req.DeprecatedId != nil && req.Id == nil { // nolint:staticcheck - req.Id = &req.DeprecatedId.Value // nolint:staticcheck + if rq.DeprecatedId != nil && rq.Id == nil { // nolint:staticcheck + rq.Id = &rq.DeprecatedId.Value // nolint:staticcheck } - if req.DeprecatedName != nil && req.Name == nil { // nolint:staticcheck - req.Name = &req.DeprecatedName.Value // nolint:staticcheck + if rq.DeprecatedName != nil && rq.Name == nil { // nolint:staticcheck + rq.Name = &rq.DeprecatedName.Value // nolint:staticcheck } var filters []any mapFilter := make(map[string]any) - if req.Id != nil { - mapFilter["id"] = req.GetId() + if rq.Id != nil { + mapFilter["id"] = rq.GetId() } - if req.Name != nil { - mapFilter["tenant ->> 'name'"] = req.GetName() + if rq.Name != nil { + mapFilter["tenant ->> 'name'"] = rq.GetName() } - for key, value := range req.Annotations { + for key, value := range rq.Annotations { // select * from tenants where tenant -> 'meta' -> 'annotations' ->> 'metal-stack.io/admitted' = 'true'; f := fmt.Sprintf("tenant -> 'meta' -> 'annotations' ->> '%s'", key) mapFilter[f] = value @@ -153,10 +146,10 @@ func (s *tenantService) Find(ctx context.Context, rq *connect.Request[v1.TenantF filters = append(filters, mapFilter) } - if len(req.Labels) > 0 { + if len(rq.Labels) > 0 { var contains []string - for _, label := range req.Labels { + for _, label := range rq.Labels { contains = append(contains, strconv.Quote(label)) } @@ -165,14 +158,14 @@ func (s *tenantService) Find(ctx context.Context, rq *connect.Request[v1.TenantF filters = append(filters, labelFilter) } - res, nextPage, err := s.tenantStore.Find(ctx, req.Paging, filters...) + res, nextPage, err := s.tenantStore.Find(ctx, rq.Paging, filters...) if err != nil { return nil, err } resp := new(v1.TenantListResponse) resp.Tenants = append(resp.Tenants, res...) resp.NextPage = nextPage - return connect.NewResponse(resp), nil + return resp, nil } var ( @@ -200,8 +193,7 @@ var ( // FindParticipatingProjects returns all projects in which a member participates. // This includes projects in which the member is explicitly participating through a project membership but may also // include memberships, which are inherited by the tenant membership. -func (s *tenantService) FindParticipatingProjects(ctx context.Context, rq *connect.Request[v1.FindParticipatingProjectsRequest]) (*connect.Response[v1.FindParticipatingProjectsResponse], error) { - req := rq.Msg +func (s *tenantService) FindParticipatingProjects(ctx context.Context, rq *v1.FindParticipatingProjectsRequest) (*v1.FindParticipatingProjectsResponse, error) { type result struct { Project *v1.Project TenantMembershipAnnotations []byte `db:"tenant_membership_annotations"` @@ -212,7 +204,7 @@ func (s *tenantService) FindParticipatingProjects(ctx context.Context, rq *conne res []*v1.ProjectWithMembershipAnnotations resultMap = map[string]*v1.ProjectWithMembershipAnnotations{} - input = map[string]any{"tenantId": req.TenantId, "namespace": req.Namespace} + input = map[string]any{"tenantId": rq.TenantId, "namespace": rq.Namespace} resultFn = func(e result) error { p, ok := resultMap[e.Project.Meta.Id] @@ -248,8 +240,8 @@ func (s *tenantService) FindParticipatingProjects(ctx context.Context, rq *conne } includeInherited := true - if req.IncludeInherited != nil { - includeInherited = *req.IncludeInherited + if rq.IncludeInherited != nil { + includeInherited = *rq.IncludeInherited } if includeInherited { @@ -263,7 +255,7 @@ func (s *tenantService) FindParticipatingProjects(ctx context.Context, rq *conne res = append(res, p) } - return connect.NewResponse(&v1.FindParticipatingProjectsResponse{Projects: res}), nil + return &v1.FindParticipatingProjectsResponse{Projects: res}, nil } var ( @@ -292,8 +284,7 @@ var ( // FindParticipatingTenants returns all tenants in which a member participates. // This includes tenants in which the member is explicitly participating through a tenant membership but may also // include memberships, which are inherited by the project memberships (e.g. through project invites). -func (s *tenantService) FindParticipatingTenants(ctx context.Context, rq *connect.Request[v1.FindParticipatingTenantsRequest]) (*connect.Response[v1.FindParticipatingTenantsResponse], error) { - req := rq.Msg +func (s *tenantService) FindParticipatingTenants(ctx context.Context, rq *v1.FindParticipatingTenantsRequest) (*v1.FindParticipatingTenantsResponse, error) { type result struct { Tenant *v1.Tenant TenantMembershipAnnotations []byte `db:"tenant_membership_annotations"` @@ -301,7 +292,7 @@ func (s *tenantService) FindParticipatingTenants(ctx context.Context, rq *connec } var ( - input = map[string]any{"tenantId": req.TenantId, "namespace": req.Namespace} + input = map[string]any{"tenantId": rq.TenantId, "namespace": rq.Namespace} res []*v1.TenantWithMembershipAnnotations resultMap = map[string]*v1.TenantWithMembershipAnnotations{} @@ -340,8 +331,8 @@ func (s *tenantService) FindParticipatingTenants(ctx context.Context, rq *connec } includeInherited := true - if req.IncludeInherited != nil { - includeInherited = *req.IncludeInherited + if rq.IncludeInherited != nil { + includeInherited = *rq.IncludeInherited } if includeInherited { @@ -355,7 +346,7 @@ func (s *tenantService) FindParticipatingTenants(ctx context.Context, rq *connec res = append(res, t) } - return connect.NewResponse(&v1.FindParticipatingTenantsResponse{Tenants: res}), nil + return &v1.FindParticipatingTenantsResponse{Tenants: res}, nil } var ( @@ -384,8 +375,7 @@ var ( // ListTenantMembers returns all members of a tenant. // This includes members which are explicitly participating through a tenant membership but may also // include memberships, which are inherited by the project memberships (e.g. through project invites). -func (s *tenantService) ListTenantMembers(ctx context.Context, rq *connect.Request[v1.ListTenantMembersRequest]) (*connect.Response[v1.ListTenantMembersResponse], error) { - req := rq.Msg +func (s *tenantService) ListTenantMembers(ctx context.Context, rq *v1.ListTenantMembersRequest) (*v1.ListTenantMembersResponse, error) { type result struct { Tenant *v1.Tenant TenantMembershipAnnotations []byte `db:"tenant_membership_annotations"` @@ -396,7 +386,7 @@ func (s *tenantService) ListTenantMembers(ctx context.Context, rq *connect.Reque res []*v1.TenantWithMembershipAnnotations resultMap = map[string]*v1.TenantWithMembershipAnnotations{} - input = map[string]any{"tenantId": req.TenantId, "namespace": req.Namespace} + input = map[string]any{"tenantId": rq.TenantId, "namespace": rq.Namespace} resultFn = func(e result) error { t, ok := resultMap[e.Tenant.Meta.Id] @@ -429,8 +419,8 @@ func (s *tenantService) ListTenantMembers(ctx context.Context, rq *connect.Reque } includeInherited := true - if req.IncludeInherited != nil { - includeInherited = *req.IncludeInherited + if rq.IncludeInherited != nil { + includeInherited = *rq.IncludeInherited } if includeInherited { @@ -444,5 +434,5 @@ func (s *tenantService) ListTenantMembers(ctx context.Context, rq *connect.Reque res = append(res, t) } - return connect.NewResponse(&v1.ListTenantMembersResponse{Tenants: res}), nil + return &v1.ListTenantMembersResponse{Tenants: res}, nil } diff --git a/pkg/service/tenant_test.go b/pkg/service/tenant_test.go index 1ec6d67..895a549 100644 --- a/pkg/service/tenant_test.go +++ b/pkg/service/tenant_test.go @@ -7,7 +7,6 @@ import ( "slices" "testing" - "connectrpc.com/connect" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" v1 "github.com/metal-stack/masterdata-api/api/v1" @@ -57,11 +56,11 @@ func TestCreateTenant(t *testing.T) { } storageMock.On("Create", ctx, t1).Return(nil) - resp, err := ts.Create(ctx, connect.NewRequest(tcr)) + resp, err := ts.Create(ctx, tcr) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.Msg.Tenant) - assert.Equal(t, tcr.Tenant.GetName(), resp.Msg.Tenant.GetName()) + assert.NotNil(t, resp.Tenant) + assert.Equal(t, tcr.Tenant.GetName(), resp.Tenant.GetName()) } func TestUpdateTenant(t *testing.T) { @@ -81,11 +80,11 @@ func TestUpdateTenant(t *testing.T) { } storageMock.On("Update", ctx, t1).Return(nil) - resp, err := ts.Update(ctx, connect.NewRequest(tur)) + resp, err := ts.Update(ctx, tur) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.Msg.Tenant) - assert.Equal(t, tur.Tenant.GetName(), resp.Msg.Tenant.GetName()) + assert.NotNil(t, resp.Tenant) + assert.Equal(t, tur.Tenant.GetName(), resp.Tenant.GetName()) } func TestDeleteTenant(t *testing.T) { @@ -131,11 +130,11 @@ func TestDeleteTenant(t *testing.T) { }, }, nil, nil) memberStorageMock.On("DeleteAll", ctx, []string{"t3"}).Return(nil) - resp, err := ts.Delete(ctx, connect.NewRequest(tdr)) + resp, err := ts.Delete(ctx, tdr) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.Msg.Tenant) - assert.Equal(t, tdr.Id, resp.Msg.Tenant.GetMeta().GetId()) + assert.NotNil(t, resp.Tenant) + assert.Equal(t, tdr.Id, resp.Tenant.GetMeta().GetId()) } func TestGetTenant(t *testing.T) { @@ -153,11 +152,11 @@ func TestGetTenant(t *testing.T) { } storageMock.On("Get", ctx, "t4").Return(t4, nil) - resp, err := ts.Get(ctx, connect.NewRequest(tgr)) + resp, err := ts.Get(ctx, tgr) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.Msg.Tenant) - assert.Equal(t, tgr.Id, resp.Msg.Tenant.GetMeta().GetId()) + assert.NotNil(t, resp.Tenant) + assert.Equal(t, tgr.Id, resp.Tenant.GetMeta().GetId()) } func TestFindTenant(t *testing.T) { @@ -387,19 +386,19 @@ func TestFindTenant(t *testing.T) { tt.prepare() } - got, err := service.Find(ctx, connect.NewRequest(tt.req)) + got, err := service.Find(ctx, tt.req) if diff := cmp.Diff(err, tt.wantErr); diff != "" { t.Errorf("(-want +got):\n%s", diff) return } - slices.SortFunc(got.Msg.Tenants, func(i, j *v1.Tenant) int { + slices.SortFunc(got.Tenants, func(i, j *v1.Tenant) int { if i.Meta.Id < j.Meta.Id { return -1 } else { return 1 } }) - if diff := cmp.Diff(tt.want, got.Msg, cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { + if diff := cmp.Diff(tt.want, got, cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { t.Errorf("(-want +got):\n%s", diff) } }) @@ -687,19 +686,19 @@ func Test_tenantService_FindParticipatingProjects(t *testing.T) { tt.prepare() } - got, err := s.FindParticipatingProjects(ctx, connect.NewRequest(tt.req)) + got, err := s.FindParticipatingProjects(ctx, tt.req) if diff := cmp.Diff(err, tt.wantErr); diff != "" { t.Errorf("(-want +got):\n%s", diff) return } - slices.SortFunc(got.Msg.Projects, func(i, j *v1.ProjectWithMembershipAnnotations) int { + slices.SortFunc(got.Projects, func(i, j *v1.ProjectWithMembershipAnnotations) int { if i.Project.Meta.Id < j.Project.Meta.Id { return -1 } else { return 1 } }) - if diff := cmp.Diff(tt.want, got.Msg, cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { + if diff := cmp.Diff(tt.want, got, cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { t.Errorf("(-want +got):\n%s", diff) } }) @@ -969,13 +968,13 @@ func Test_tenantService_FindParticipatingTenants(t *testing.T) { tt.prepare() } - got, err := s.FindParticipatingTenants(ctx, connect.NewRequest(tt.req)) + got, err := s.FindParticipatingTenants(ctx, tt.req) if diff := cmp.Diff(err, tt.wantErr); diff != "" { t.Errorf("(-want +got):\n%s", diff) return } - slices.SortFunc(got.Msg.Tenants, func(i, j *v1.TenantWithMembershipAnnotations) int { + slices.SortFunc(got.Tenants, func(i, j *v1.TenantWithMembershipAnnotations) int { if i.Tenant.Meta.Id < j.Tenant.Meta.Id { return -1 } else { @@ -983,7 +982,7 @@ func Test_tenantService_FindParticipatingTenants(t *testing.T) { } }) - if diff := cmp.Diff(tt.want, got.Msg, cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { + if diff := cmp.Diff(tt.want, got, cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { t.Errorf("(-want +got):\n%s", diff) } }) @@ -1247,13 +1246,13 @@ func Test_tenantService_ListTenantMembers(t *testing.T) { tt.prepare() } - got, err := s.ListTenantMembers(ctx, connect.NewRequest(tt.req)) + got, err := s.ListTenantMembers(ctx, tt.req) if diff := cmp.Diff(err, tt.wantErr); diff != "" { t.Errorf("(-want +got):\n%s", diff) return } - slices.SortFunc(got.Msg.Tenants, func(i, j *v1.TenantWithMembershipAnnotations) int { + slices.SortFunc(got.Tenants, func(i, j *v1.TenantWithMembershipAnnotations) int { if i.Tenant.Meta.Id < j.Tenant.Meta.Id { return -1 } else { @@ -1261,7 +1260,7 @@ func Test_tenantService_ListTenantMembers(t *testing.T) { } }) - if diff := cmp.Diff(tt.want, pointer.SafeDeref(got).Msg, cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { + if diff := cmp.Diff(tt.want, pointer.SafeDeref(got), cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { t.Errorf("(-want +got):\n%s", diff) } }) diff --git a/pkg/service/tenantmember.go b/pkg/service/tenantmember.go index 321d711..4b4f030 100644 --- a/pkg/service/tenantmember.go +++ b/pkg/service/tenantmember.go @@ -5,7 +5,6 @@ import ( "fmt" "log/slog" - "connectrpc.com/connect" v1 "github.com/metal-stack/masterdata-api/api/v1" "github.com/metal-stack/masterdata-api/pkg/datastore" "google.golang.org/grpc/codes" @@ -26,9 +25,8 @@ func NewTenantMemberService(l *slog.Logger, tds TenantDataStore, tmds TenantMemb } } -func (s *tenantMemberService) Create(ctx context.Context, rq *connect.Request[v1.TenantMemberCreateRequest]) (*connect.Response[v1.TenantMemberResponse], error) { - req := rq.Msg - tenantMember := req.TenantMember +func (s *tenantMemberService) Create(ctx context.Context, rq *v1.TenantMemberCreateRequest) (*v1.TenantMemberResponse, error) { + tenantMember := rq.TenantMember _, err := s.tenantStore.Get(ctx, tenantMember.GetTenantId()) if err != nil && v1.IsNotFound(err) { @@ -45,12 +43,11 @@ func (s *tenantMemberService) Create(ctx context.Context, rq *connect.Request[v1 err = s.tenantMemberStore.Create(ctx, tenantMember) - return connect.NewResponse(tenantMember.NewTenantMemberResponse()), err + return tenantMember.NewTenantMemberResponse(), err } -func (s *tenantMemberService) Update(ctx context.Context, rq *connect.Request[v1.TenantMemberUpdateRequest]) (*connect.Response[v1.TenantMemberResponse], error) { - req := rq.Msg - tenantMember := req.TenantMember +func (s *tenantMemberService) Update(ctx context.Context, rq *v1.TenantMemberUpdateRequest) (*v1.TenantMemberResponse, error) { + tenantMember := rq.TenantMember old, err := s.tenantMemberStore.Get(ctx, tenantMember.Meta.Id) if err != nil { @@ -69,43 +66,38 @@ func (s *tenantMemberService) Update(ctx context.Context, rq *connect.Request[v1 err = s.tenantMemberStore.Update(ctx, tenantMember) - return connect.NewResponse(tenantMember.NewTenantMemberResponse()), err + return tenantMember.NewTenantMemberResponse(), err } -func (s *tenantMemberService) Delete(ctx context.Context, rq *connect.Request[v1.TenantMemberDeleteRequest]) (*connect.Response[v1.TenantMemberResponse], error) { - req := rq.Msg - - tenantMember := req.NewTenantMember() +func (s *tenantMemberService) Delete(ctx context.Context, rq *v1.TenantMemberDeleteRequest) (*v1.TenantMemberResponse, error) { + tenantMember := rq.NewTenantMember() err := s.tenantMemberStore.Delete(ctx, tenantMember.Meta.Id) - return connect.NewResponse(tenantMember.NewTenantMemberResponse()), err + return tenantMember.NewTenantMemberResponse(), err } -func (s *tenantMemberService) Get(ctx context.Context, rq *connect.Request[v1.TenantMemberGetRequest]) (*connect.Response[v1.TenantMemberResponse], error) { - req := rq.Msg - - tenantMember, err := s.tenantMemberStore.Get(ctx, req.Id) +func (s *tenantMemberService) Get(ctx context.Context, rq *v1.TenantMemberGetRequest) (*v1.TenantMemberResponse, error) { + tenantMember, err := s.tenantMemberStore.Get(ctx, rq.Id) if err != nil { return nil, err } - return connect.NewResponse(tenantMember.NewTenantMemberResponse()), nil + return tenantMember.NewTenantMemberResponse(), nil } -func (s *tenantMemberService) Find(ctx context.Context, rq *connect.Request[v1.TenantMemberFindRequest]) (*connect.Response[v1.TenantMemberListResponse], error) { - req := rq.Msg +func (s *tenantMemberService) Find(ctx context.Context, rq *v1.TenantMemberFindRequest) (*v1.TenantMemberListResponse, error) { filter := map[string]any{ - "COALESCE(tenantmember ->> 'namespace', '')": req.Namespace, + "COALESCE(tenantmember ->> 'namespace', '')": rq.Namespace, } - if req.TenantId != nil { - filter["tenantmember ->> 'tenant_id'"] = req.TenantId + if rq.TenantId != nil { + filter["tenantmember ->> 'tenant_id'"] = rq.TenantId } - if req.MemberId != nil { - filter["tenantmember ->> 'member_id'"] = req.MemberId + if rq.MemberId != nil { + filter["tenantmember ->> 'member_id'"] = rq.MemberId } - for key, value := range req.Annotations { + for key, value := range rq.Annotations { // select * from tenantMember where tenantMember -> 'meta' -> 'annotations' ->> 'metal-stack.io/role' = 'owner'; f := fmt.Sprintf("tenantmember -> 'meta' -> 'annotations' ->> '%s'", key) filter[f] = value @@ -119,5 +111,5 @@ func (s *tenantMemberService) Find(ctx context.Context, rq *connect.Request[v1.T resp := new(v1.TenantMemberListResponse) resp.TenantMembers = append(resp.TenantMembers, res...) - return connect.NewResponse(resp), nil + return resp, nil } diff --git a/pkg/service/tenantmember_test.go b/pkg/service/tenantmember_test.go index 291cc89..afd4cb5 100644 --- a/pkg/service/tenantmember_test.go +++ b/pkg/service/tenantmember_test.go @@ -5,7 +5,6 @@ import ( "log/slog" "slices" - "connectrpc.com/connect" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" v1 "github.com/metal-stack/masterdata-api/api/v1" @@ -43,11 +42,11 @@ func TestCreateTenantMember(t *testing.T) { } tenantStorageMock.On("Get", ctx, pm1.GetTenantId()).Return(t1, nil) storageMock.On("Create", ctx, pm1).Return(nil) - resp, err := ts.Create(ctx, connect.NewRequest(pmcr)) + resp, err := ts.Create(ctx, pmcr) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.Msg.TenantMember) - assert.Equal(t, pmcr.TenantMember.TenantId, resp.Msg.TenantMember.GetTenantId()) + assert.NotNil(t, resp.TenantMember) + assert.Equal(t, pmcr.TenantMember.TenantId, resp.TenantMember.GetTenantId()) } func TestDeleteTenantMember(t *testing.T) { @@ -67,11 +66,11 @@ func TestDeleteTenantMember(t *testing.T) { } storageMock.On("Delete", ctx, t3.Meta.Id).Return(nil) - resp, err := ts.Delete(ctx, connect.NewRequest(tdr)) + resp, err := ts.Delete(ctx, tdr) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.Msg.TenantMember) - assert.Equal(t, tdr.Id, resp.Msg.TenantMember.GetMeta().GetId()) + assert.NotNil(t, resp.TenantMember) + assert.Equal(t, tdr.Id, resp.TenantMember.GetMeta().GetId()) } func TestGetTenantMember(t *testing.T) { @@ -91,11 +90,11 @@ func TestGetTenantMember(t *testing.T) { } storageMock.On("Get", ctx, "p4").Return(t4, nil) - resp, err := ts.Get(ctx, connect.NewRequest(tgr)) + resp, err := ts.Get(ctx, tgr) require.NoError(t, err) assert.NotNil(t, resp) - assert.NotNil(t, resp.Msg.TenantMember) - assert.Equal(t, tgr.Id, resp.Msg.TenantMember.GetMeta().GetId()) + assert.NotNil(t, resp.TenantMember) + assert.Equal(t, tgr.Id, resp.TenantMember.GetMeta().GetId()) } func TestFindTenantMember(t *testing.T) { @@ -326,13 +325,13 @@ func TestFindTenantMember(t *testing.T) { tt.prepare() } - got, err := service.Find(ctx, connect.NewRequest(tt.req)) + got, err := service.Find(ctx, tt.req) if diff := cmp.Diff(err, tt.wantErr); diff != "" { t.Errorf("(-want +got):\n%s", diff) return } - slices.SortFunc(got.Msg.TenantMembers, func(i, j *v1.TenantMember) int { + slices.SortFunc(got.TenantMembers, func(i, j *v1.TenantMember) int { if i.Meta.Id < j.Meta.Id { return -1 } else { @@ -340,7 +339,7 @@ func TestFindTenantMember(t *testing.T) { } }) - if diff := cmp.Diff(tt.want, pointer.SafeDeref(got).Msg, cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { + if diff := cmp.Diff(tt.want, pointer.SafeDeref(got), cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { t.Errorf("(-want +got):\n%s", diff) } }) @@ -527,17 +526,17 @@ func TestUpdateTenantMember(t *testing.T) { tt.prepare() } - got, err := service.Update(ctx, connect.NewRequest(tt.req)) + got, err := service.Update(ctx, tt.req) if diff := cmp.Diff(err, tt.wantErr, cmpopts.EquateErrors()); diff != "" { t.Errorf("(-want +got):\n%s", diff) return } if err == nil { - assert.NotNil(t, got.Msg.TenantMember.Meta.UpdatedTime) + assert.NotNil(t, got.TenantMember.Meta.UpdatedTime) } - if diff := cmp.Diff(tt.want, pointer.SafeDeref(got).Msg, cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime", "UpdatedTime"), testcommon.IgnoreUnexported()); diff != "" { + if diff := cmp.Diff(tt.want, pointer.SafeDeref(got), cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime", "UpdatedTime"), testcommon.IgnoreUnexported()); diff != "" { t.Errorf("(-want +got):\n%s", diff) } }) diff --git a/pkg/service/version.go b/pkg/service/version.go index 673d6a6..ae899cd 100644 --- a/pkg/service/version.go +++ b/pkg/service/version.go @@ -3,7 +3,6 @@ package service import ( "context" - "connectrpc.com/connect" v1 "github.com/metal-stack/masterdata-api/api/v1" "github.com/metal-stack/v" ) @@ -14,7 +13,7 @@ type versionService struct { func NewVersionService() *versionService { return &versionService{} } -func (vs *versionService) Get(context.Context, *connect.Request[v1.GetVersionRequest]) (*connect.Response[v1.GetVersionResponse], error) { - res := v1.GetVersionResponse{Version: v.Version, Revision: v.Revision, BuildDate: v.BuildDate, GitSha1: v.GitSHA1} - return connect.NewResponse(&res), nil +func (vs *versionService) Get(context.Context, *v1.GetVersionRequest) (*v1.GetVersionResponse, error) { + res := &v1.GetVersionResponse{Version: v.Version, Revision: v.Revision, BuildDate: v.BuildDate, GitSha1: v.GitSHA1} + return res, nil } diff --git a/pkg/service/version_test.go b/pkg/service/version_test.go index 5072ae5..1648208 100644 --- a/pkg/service/version_test.go +++ b/pkg/service/version_test.go @@ -4,7 +4,6 @@ import ( "context" "testing" - "connectrpc.com/connect" v1 "github.com/metal-stack/masterdata-api/api/v1" "github.com/metal-stack/v" "github.com/stretchr/testify/assert" @@ -18,12 +17,12 @@ func TestGetVersion(t *testing.T) { expected := v1.GetVersionResponse{Version: v.Version, Revision: v.Revision, BuildDate: v.BuildDate, GitSha1: v.GitSHA1} - result, err := vs.Get(ctx, connect.NewRequest(&v1.GetVersionRequest{})) + result, err := vs.Get(ctx, &v1.GetVersionRequest{}) require.NoError(t, err) assert.NotNil(t, result) - assert.Equal(t, expected.Version, result.Msg.Version) - assert.Equal(t, expected.Revision, result.Msg.Revision) - assert.Equal(t, expected.BuildDate, result.Msg.BuildDate) - assert.Equal(t, expected.GitSha1, result.Msg.GitSha1) + assert.Equal(t, expected.Version, result.Version) + assert.Equal(t, expected.Revision, result.Revision) + assert.Equal(t, expected.BuildDate, result.BuildDate) + assert.Equal(t, expected.GitSha1, result.GitSha1) } diff --git a/proto/Makefile b/proto/Makefile index 617dcfd..7292c3d 100644 --- a/proto/Makefile +++ b/proto/Makefile @@ -1,5 +1,5 @@ MAKEFLAGS += --no-print-directory -BUF_VERSION := 1.57.0 +BUF_VERSION := 1.57.2 _buf: docker run --rm \ diff --git a/proto/buf.gen.yaml b/proto/buf.gen.yaml index ae77231..b5e571e 100644 --- a/proto/buf.gen.yaml +++ b/proto/buf.gen.yaml @@ -5,9 +5,9 @@ managed: - file_option: go_package_prefix value: github.com/metal-stack/masterdata-api plugins: - - remote: buf.build/connectrpc/go:v1.18.1 + - remote: buf.build/connectrpc/go:v1.19.0 out: ../ - opt: paths=source_relative - - remote: buf.build/protocolbuffers/go:v1.36.8 + opt: paths=source_relative,simple + - remote: buf.build/protocolbuffers/go:v1.36.10 out: ../ opt: paths=source_relative From b270927f22e07f83076284612841e78d5f10f35e Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Tue, 7 Oct 2025 08:16:47 +0200 Subject: [PATCH 33/39] Fix tests --- go.mod | 4 ++-- go.sum | 8 ++++---- pkg/service/projectmember_test.go | 12 +++++++++--- pkg/service/tenant_test.go | 6 +++++- pkg/service/tenantmember_test.go | 13 ++++++++++--- 5 files changed, 30 insertions(+), 13 deletions(-) diff --git a/go.mod b/go.mod index eaef5f0..2ccb164 100644 --- a/go.mod +++ b/go.mod @@ -25,7 +25,7 @@ require ( go.opentelemetry.io/otel/exporters/prometheus v0.60.0 go.opentelemetry.io/otel/sdk/metric v1.38.0 golang.org/x/net v0.44.0 - google.golang.org/grpc v1.75.1 + google.golang.org/grpc v1.76.0 google.golang.org/protobuf v1.36.10 sigs.k8s.io/yaml v1.6.0 ) @@ -104,7 +104,7 @@ require ( golang.org/x/crypto v0.42.0 // indirect golang.org/x/sys v0.36.0 // indirect golang.org/x/text v0.29.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251002232023-7c0ddcbb5797 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index ad48307..64e3c4a 100644 --- a/go.sum +++ b/go.sum @@ -268,10 +268,10 @@ gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251002232023-7c0ddcbb5797 h1:CirRxTOwnRWVLKzDNrs0CXAaVozJoR4G9xvdRecrdpk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251002232023-7c0ddcbb5797/go.mod h1:HSkG/KdJWusxU1F6CNrwNDjBMgisKxGnc5dAZfT0mjQ= -google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= -google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A= +google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c= google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/pkg/service/projectmember_test.go b/pkg/service/projectmember_test.go index dc94c0c..f419ef3 100644 --- a/pkg/service/projectmember_test.go +++ b/pkg/service/projectmember_test.go @@ -14,7 +14,6 @@ import ( "github.com/stretchr/testify/require" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "google.golang.org/protobuf/runtime/protoimpl" "testing" @@ -367,7 +366,11 @@ func TestFindProjectMember(t *testing.T) { } }) - if diff := cmp.Diff(tt.want, pointer.SafeDeref(got), cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { + if diff := cmp.Diff( + tt.want, got, + cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), + testcommon.IgnoreUnexported(), + ); diff != "" { t.Errorf("(-want +got):\n%s", diff) } }) @@ -568,7 +571,10 @@ func TestUpdateProjectMember(t *testing.T) { assert.NotNil(t, got.ProjectMember.Meta.UpdatedTime) } - if diff := cmp.Diff(tt.want, pointer.SafeDeref(got), cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime", "UpdatedTime"), testcommon.IgnoreUnexported()); diff != "" { + if diff := cmp.Diff( + tt.want, got, cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime", "UpdatedTime"), + testcommon.IgnoreUnexported(), + ); diff != "" { t.Errorf("(-want +got):\n%s", diff) } }) diff --git a/pkg/service/tenant_test.go b/pkg/service/tenant_test.go index 895a549..4ed595c 100644 --- a/pkg/service/tenant_test.go +++ b/pkg/service/tenant_test.go @@ -1260,7 +1260,11 @@ func Test_tenantService_ListTenantMembers(t *testing.T) { } }) - if diff := cmp.Diff(tt.want, pointer.SafeDeref(got), cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { + if diff := cmp.Diff( + tt.want, got, + cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), + testcommon.IgnoreUnexported(), + ); diff != "" { t.Errorf("(-want +got):\n%s", diff) } }) diff --git a/pkg/service/tenantmember_test.go b/pkg/service/tenantmember_test.go index afd4cb5..cbe8a52 100644 --- a/pkg/service/tenantmember_test.go +++ b/pkg/service/tenantmember_test.go @@ -14,7 +14,6 @@ import ( "github.com/stretchr/testify/require" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "google.golang.org/protobuf/runtime/protoimpl" "testing" @@ -339,7 +338,11 @@ func TestFindTenantMember(t *testing.T) { } }) - if diff := cmp.Diff(tt.want, pointer.SafeDeref(got), cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { + if diff := cmp.Diff( + tt.want, got, + cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), + testcommon.IgnoreUnexported(), + ); diff != "" { t.Errorf("(-want +got):\n%s", diff) } }) @@ -536,7 +539,11 @@ func TestUpdateTenantMember(t *testing.T) { assert.NotNil(t, got.TenantMember.Meta.UpdatedTime) } - if diff := cmp.Diff(tt.want, pointer.SafeDeref(got), cmpopts.IgnoreTypes(protoimpl.MessageState{}), cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime", "UpdatedTime"), testcommon.IgnoreUnexported()); diff != "" { + if diff := cmp.Diff( + tt.want, got, + cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime", "UpdatedTime"), + testcommon.IgnoreUnexported(), + ); diff != "" { t.Errorf("(-want +got):\n%s", diff) } }) From 7e2a39eb15193ee8b970b0441a5114f4f5ae069f Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Tue, 7 Oct 2025 13:26:32 +0200 Subject: [PATCH 34/39] Revert req renaming --- pkg/service/project.go | 66 ++++++++++++++++---------------- pkg/service/projectmember.go | 30 +++++++-------- pkg/service/tenant.go | 74 ++++++++++++++++++------------------ pkg/service/tenantmember.go | 30 +++++++-------- 4 files changed, 100 insertions(+), 100 deletions(-) diff --git a/pkg/service/project.go b/pkg/service/project.go index eaab7a4..6d49d25 100644 --- a/pkg/service/project.go +++ b/pkg/service/project.go @@ -29,8 +29,8 @@ func NewProjectService(l *slog.Logger, pds ProjectDataStore, pmds ProjectMemberD } } -func (s *projectService) Create(ctx context.Context, rq *v1.ProjectCreateRequest) (*v1.ProjectResponse, error) { - project := rq.Project +func (s *projectService) Create(ctx context.Context, req *v1.ProjectCreateRequest) (*v1.ProjectResponse, error) { + project := req.Project tenant, err := s.tenantStore.Get(ctx, project.GetTenantId()) if err != nil && v1.IsNotFound(err) { @@ -69,20 +69,20 @@ func (s *projectService) Create(ctx context.Context, rq *v1.ProjectCreateRequest err = s.projectStore.Create(ctx, project) return project.NewProjectResponse(), err } -func (s *projectService) Update(ctx context.Context, rq *v1.ProjectUpdateRequest) (*v1.ProjectResponse, error) { - old, err := s.projectStore.Get(ctx, rq.Project.Meta.Id) +func (s *projectService) Update(ctx context.Context, req *v1.ProjectUpdateRequest) (*v1.ProjectResponse, error) { + old, err := s.projectStore.Get(ctx, req.Project.Meta.Id) if err != nil { return nil, err } - project := rq.Project + project := req.Project if old.TenantId != project.TenantId { return nil, status.Error(codes.InvalidArgument, fmt.Sprintf("update tenant of project:%s is not allowed", project.Meta.Id)) } err = s.projectStore.Update(ctx, project) return project.NewProjectResponse(), err } -func (s *projectService) Delete(ctx context.Context, rq *v1.ProjectDeleteRequest) (*v1.ProjectResponse, error) { - project := rq.NewProject() +func (s *projectService) Delete(ctx context.Context, req *v1.ProjectDeleteRequest) (*v1.ProjectResponse, error) { + project := req.NewProject() filter := map[string]any{ "projectmember ->> 'project_id'": project.Meta.Id, } @@ -108,53 +108,53 @@ func (s *projectService) Delete(ctx context.Context, rq *v1.ProjectDeleteRequest } return project.NewProjectResponse(), nil } -func (s *projectService) Get(ctx context.Context, rq *v1.ProjectGetRequest) (*v1.ProjectResponse, error) { - project, err := s.projectStore.Get(ctx, rq.Id) +func (s *projectService) Get(ctx context.Context, req *v1.ProjectGetRequest) (*v1.ProjectResponse, error) { + project, err := s.projectStore.Get(ctx, req.Id) if err != nil { return nil, err } return project.NewProjectResponse(), nil } -func (s *projectService) GetHistory(ctx context.Context, rq *v1.ProjectGetHistoryRequest) (*v1.ProjectResponse, error) { +func (s *projectService) GetHistory(ctx context.Context, req *v1.ProjectGetHistoryRequest) (*v1.ProjectResponse, error) { project := &v1.Project{} - at := rq.At.AsTime() - err := s.projectStore.GetHistory(ctx, rq.Id, at, project) + at := req.At.AsTime() + err := s.projectStore.GetHistory(ctx, req.Id, at, project) if err != nil { return nil, err } return project.NewProjectResponse(), nil } -func (s *projectService) Find(ctx context.Context, rq *v1.ProjectFindRequest) (*v1.ProjectListResponse, error) { +func (s *projectService) Find(ctx context.Context, req *v1.ProjectFindRequest) (*v1.ProjectListResponse, error) { // TODO: remove in next release - if rq.DeprecatedId != nil && rq.Id == nil { // nolint:staticcheck - rq.Id = &rq.DeprecatedId.Value // nolint:staticcheck + if req.DeprecatedId != nil && req.Id == nil { // nolint:staticcheck + req.Id = &req.DeprecatedId.Value // nolint:staticcheck } - if rq.DeprecatedDescription != nil && rq.Description == nil { // nolint:staticcheck - rq.Description = &rq.DeprecatedDescription.Value // nolint:staticcheck + if req.DeprecatedDescription != nil && req.Description == nil { // nolint:staticcheck + req.Description = &req.DeprecatedDescription.Value // nolint:staticcheck } - if rq.DeprecatedName != nil && rq.Name == nil { // nolint:staticcheck - rq.Name = &rq.DeprecatedName.Value // nolint:staticcheck + if req.DeprecatedName != nil && req.Name == nil { // nolint:staticcheck + req.Name = &req.DeprecatedName.Value // nolint:staticcheck } - if rq.DeprecatedTenantId != nil && rq.TenantId == nil { // nolint:staticcheck - rq.TenantId = &rq.DeprecatedTenantId.Value // nolint:staticcheck + if req.DeprecatedTenantId != nil && req.TenantId == nil { // nolint:staticcheck + req.TenantId = &req.DeprecatedTenantId.Value // nolint:staticcheck } var filters []any mapFilter := make(map[string]any) - if rq.Id != nil { - mapFilter["id"] = rq.Id + if req.Id != nil { + mapFilter["id"] = req.Id } - if rq.Name != nil { - mapFilter["project ->> 'name'"] = rq.Name + if req.Name != nil { + mapFilter["project ->> 'name'"] = req.Name } - if rq.Description != nil { - mapFilter["project ->> 'description'"] = rq.Description + if req.Description != nil { + mapFilter["project ->> 'description'"] = req.Description } - if rq.TenantId != nil { - mapFilter["project ->> 'tenant_id'"] = rq.TenantId + if req.TenantId != nil { + mapFilter["project ->> 'tenant_id'"] = req.TenantId } - for key, value := range rq.Annotations { + for key, value := range req.Annotations { // select * from project where project -> 'meta' -> 'annotations' ->> 'metal-stack.io/admitted' = 'true'; f := fmt.Sprintf("project -> 'meta' -> 'annotations' ->> '%s'", key) mapFilter[f] = value @@ -164,10 +164,10 @@ func (s *projectService) Find(ctx context.Context, rq *v1.ProjectFindRequest) (* filters = append(filters, mapFilter) } - if len(rq.Labels) > 0 { + if len(req.Labels) > 0 { var contains []string - for _, label := range rq.Labels { + for _, label := range req.Labels { contains = append(contains, strconv.Quote(label)) } @@ -177,7 +177,7 @@ func (s *projectService) Find(ctx context.Context, rq *v1.ProjectFindRequest) (* filters = append(filters, labelFilter) } - res, nextPage, err := s.projectStore.Find(ctx, rq.Paging, filters...) + res, nextPage, err := s.projectStore.Find(ctx, req.Paging, filters...) if err != nil { return nil, err } diff --git a/pkg/service/projectmember.go b/pkg/service/projectmember.go index b75d3b2..4445e9a 100644 --- a/pkg/service/projectmember.go +++ b/pkg/service/projectmember.go @@ -27,8 +27,8 @@ func NewProjectMemberService(l *slog.Logger, pds ProjectDataStore, pmds ProjectM } } -func (s *projectMemberService) Create(ctx context.Context, rq *v1.ProjectMemberCreateRequest) (*v1.ProjectMemberResponse, error) { - projectMember := rq.ProjectMember +func (s *projectMemberService) Create(ctx context.Context, req *v1.ProjectMemberCreateRequest) (*v1.ProjectMemberResponse, error) { + projectMember := req.ProjectMember _, err := s.tenantStore.Get(ctx, projectMember.GetTenantId()) if err != nil && v1.IsNotFound(err) { @@ -54,8 +54,8 @@ func (s *projectMemberService) Create(ctx context.Context, rq *v1.ProjectMemberC return projectMember.NewProjectMemberResponse(), err } -func (s *projectMemberService) Update(ctx context.Context, rq *v1.ProjectMemberUpdateRequest) (*v1.ProjectMemberResponse, error) { - projectMember := rq.ProjectMember +func (s *projectMemberService) Update(ctx context.Context, req *v1.ProjectMemberUpdateRequest) (*v1.ProjectMemberResponse, error) { + projectMember := req.ProjectMember old, err := s.projectMemberStore.Get(ctx, projectMember.Meta.Id) if err != nil { @@ -77,16 +77,16 @@ func (s *projectMemberService) Update(ctx context.Context, rq *v1.ProjectMemberU return projectMember.NewProjectMemberResponse(), err } -func (s *projectMemberService) Delete(ctx context.Context, rq *v1.ProjectMemberDeleteRequest) (*v1.ProjectMemberResponse, error) { - projectMember := rq.NewProjectMember() +func (s *projectMemberService) Delete(ctx context.Context, req *v1.ProjectMemberDeleteRequest) (*v1.ProjectMemberResponse, error) { + projectMember := req.NewProjectMember() err := s.projectMemberStore.Delete(ctx, projectMember.Meta.Id) return projectMember.NewProjectMemberResponse(), err } -func (s *projectMemberService) Get(ctx context.Context, rq *v1.ProjectMemberGetRequest) (*v1.ProjectMemberResponse, error) { - projectMember, err := s.projectMemberStore.Get(ctx, rq.Id) +func (s *projectMemberService) Get(ctx context.Context, req *v1.ProjectMemberGetRequest) (*v1.ProjectMemberResponse, error) { + projectMember, err := s.projectMemberStore.Get(ctx, req.Id) if err != nil { return nil, err } @@ -94,17 +94,17 @@ func (s *projectMemberService) Get(ctx context.Context, rq *v1.ProjectMemberGetR return projectMember.NewProjectMemberResponse(), nil } -func (s *projectMemberService) Find(ctx context.Context, rq *v1.ProjectMemberFindRequest) (*v1.ProjectMemberListResponse, error) { +func (s *projectMemberService) Find(ctx context.Context, req *v1.ProjectMemberFindRequest) (*v1.ProjectMemberListResponse, error) { filter := map[string]any{ - "COALESCE(projectmember ->> 'namespace', '')": rq.Namespace, + "COALESCE(projectmember ->> 'namespace', '')": req.Namespace, } - if rq.ProjectId != nil { - filter["projectmember ->> 'project_id'"] = rq.ProjectId + if req.ProjectId != nil { + filter["projectmember ->> 'project_id'"] = req.ProjectId } - if rq.TenantId != nil { - filter["projectmember ->> 'tenant_id'"] = rq.TenantId + if req.TenantId != nil { + filter["projectmember ->> 'tenant_id'"] = req.TenantId } - for key, value := range rq.Annotations { + for key, value := range req.Annotations { // select * from projectMember where projectMember -> 'meta' -> 'annotations' ->> 'metal-stack.io/role' = 'owner'; f := fmt.Sprintf("projectmember -> 'meta' -> 'annotations' ->> '%s'", key) filter[f] = value diff --git a/pkg/service/tenant.go b/pkg/service/tenant.go index 5d83e10..ecfa529 100644 --- a/pkg/service/tenant.go +++ b/pkg/service/tenant.go @@ -37,8 +37,8 @@ func NewTenantService(db *sqlx.DB, l *slog.Logger, tds TenantDataStore, tmds Ten } } -func (s *tenantService) Create(ctx context.Context, rq *v1.TenantCreateRequest) (*v1.TenantResponse, error) { - tenant := rq.Tenant +func (s *tenantService) Create(ctx context.Context, req *v1.TenantCreateRequest) (*v1.TenantResponse, error) { + tenant := req.Tenant // allow create without sending Meta if tenant.Meta == nil { tenant.Meta = &v1.Meta{} @@ -46,14 +46,14 @@ func (s *tenantService) Create(ctx context.Context, rq *v1.TenantCreateRequest) err := s.tenantStore.Create(ctx, tenant) return tenant.NewTenantResponse(), err } -func (s *tenantService) Update(ctx context.Context, rq *v1.TenantUpdateRequest) (*v1.TenantResponse, error) { - tenant := rq.Tenant +func (s *tenantService) Update(ctx context.Context, req *v1.TenantUpdateRequest) (*v1.TenantResponse, error) { + tenant := req.Tenant err := s.tenantStore.Update(ctx, tenant) return tenant.NewTenantResponse(), err } -func (s *tenantService) Delete(ctx context.Context, rq *v1.TenantDeleteRequest) (*v1.TenantResponse, error) { - tenant := rq.NewTenant() +func (s *tenantService) Delete(ctx context.Context, req *v1.TenantDeleteRequest) (*v1.TenantResponse, error) { + tenant := req.NewTenant() tenantIsHostFilter := map[string]any{ "tenantmember ->> 'tenant_id'": tenant.Meta.Id, } @@ -95,8 +95,8 @@ func (s *tenantService) Delete(ctx context.Context, rq *v1.TenantDeleteRequest) return tenant.NewTenantResponse(), nil } -func (s *tenantService) Get(ctx context.Context, rq *v1.TenantGetRequest) (*v1.TenantResponse, error) { - tenant, err := s.tenantStore.Get(ctx, rq.Id) +func (s *tenantService) Get(ctx context.Context, req *v1.TenantGetRequest) (*v1.TenantResponse, error) { + tenant, err := s.tenantStore.Get(ctx, req.Id) if err != nil { return nil, err } @@ -105,11 +105,11 @@ func (s *tenantService) Get(ctx context.Context, rq *v1.TenantGetRequest) (*v1.T return tenant.NewTenantResponse(), nil } -func (s *tenantService) GetHistory(ctx context.Context, rq *v1.TenantGetHistoryRequest) (*v1.TenantResponse, error) { +func (s *tenantService) GetHistory(ctx context.Context, req *v1.TenantGetHistoryRequest) (*v1.TenantResponse, error) { tenant := &v1.Tenant{} - at := rq.At.AsTime() - s.log.Info("getHistory", "id", rq.Id, "at", at) - err := s.tenantStore.GetHistory(ctx, rq.Id, at, tenant) + at := req.At.AsTime() + s.log.Info("getHistory", "id", req.Id, "at", at) + err := s.tenantStore.GetHistory(ctx, req.Id, at, tenant) if err != nil { return nil, err } @@ -118,25 +118,25 @@ func (s *tenantService) GetHistory(ctx context.Context, rq *v1.TenantGetHistoryR return tenant.NewTenantResponse(), nil } -func (s *tenantService) Find(ctx context.Context, rq *v1.TenantFindRequest) (*v1.TenantListResponse, error) { +func (s *tenantService) Find(ctx context.Context, req *v1.TenantFindRequest) (*v1.TenantListResponse, error) { // TODO: remove in next release - if rq.DeprecatedId != nil && rq.Id == nil { // nolint:staticcheck - rq.Id = &rq.DeprecatedId.Value // nolint:staticcheck + if req.DeprecatedId != nil && req.Id == nil { // nolint:staticcheck + req.Id = &req.DeprecatedId.Value // nolint:staticcheck } - if rq.DeprecatedName != nil && rq.Name == nil { // nolint:staticcheck - rq.Name = &rq.DeprecatedName.Value // nolint:staticcheck + if req.DeprecatedName != nil && req.Name == nil { // nolint:staticcheck + req.Name = &req.DeprecatedName.Value // nolint:staticcheck } var filters []any mapFilter := make(map[string]any) - if rq.Id != nil { - mapFilter["id"] = rq.GetId() + if req.Id != nil { + mapFilter["id"] = req.GetId() } - if rq.Name != nil { - mapFilter["tenant ->> 'name'"] = rq.GetName() + if req.Name != nil { + mapFilter["tenant ->> 'name'"] = req.GetName() } - for key, value := range rq.Annotations { + for key, value := range req.Annotations { // select * from tenants where tenant -> 'meta' -> 'annotations' ->> 'metal-stack.io/admitted' = 'true'; f := fmt.Sprintf("tenant -> 'meta' -> 'annotations' ->> '%s'", key) mapFilter[f] = value @@ -146,10 +146,10 @@ func (s *tenantService) Find(ctx context.Context, rq *v1.TenantFindRequest) (*v1 filters = append(filters, mapFilter) } - if len(rq.Labels) > 0 { + if len(req.Labels) > 0 { var contains []string - for _, label := range rq.Labels { + for _, label := range req.Labels { contains = append(contains, strconv.Quote(label)) } @@ -158,7 +158,7 @@ func (s *tenantService) Find(ctx context.Context, rq *v1.TenantFindRequest) (*v1 filters = append(filters, labelFilter) } - res, nextPage, err := s.tenantStore.Find(ctx, rq.Paging, filters...) + res, nextPage, err := s.tenantStore.Find(ctx, req.Paging, filters...) if err != nil { return nil, err } @@ -193,7 +193,7 @@ var ( // FindParticipatingProjects returns all projects in which a member participates. // This includes projects in which the member is explicitly participating through a project membership but may also // include memberships, which are inherited by the tenant membership. -func (s *tenantService) FindParticipatingProjects(ctx context.Context, rq *v1.FindParticipatingProjectsRequest) (*v1.FindParticipatingProjectsResponse, error) { +func (s *tenantService) FindParticipatingProjects(ctx context.Context, req *v1.FindParticipatingProjectsRequest) (*v1.FindParticipatingProjectsResponse, error) { type result struct { Project *v1.Project TenantMembershipAnnotations []byte `db:"tenant_membership_annotations"` @@ -204,7 +204,7 @@ func (s *tenantService) FindParticipatingProjects(ctx context.Context, rq *v1.Fi res []*v1.ProjectWithMembershipAnnotations resultMap = map[string]*v1.ProjectWithMembershipAnnotations{} - input = map[string]any{"tenantId": rq.TenantId, "namespace": rq.Namespace} + input = map[string]any{"tenantId": req.TenantId, "namespace": req.Namespace} resultFn = func(e result) error { p, ok := resultMap[e.Project.Meta.Id] @@ -240,8 +240,8 @@ func (s *tenantService) FindParticipatingProjects(ctx context.Context, rq *v1.Fi } includeInherited := true - if rq.IncludeInherited != nil { - includeInherited = *rq.IncludeInherited + if req.IncludeInherited != nil { + includeInherited = *req.IncludeInherited } if includeInherited { @@ -284,7 +284,7 @@ var ( // FindParticipatingTenants returns all tenants in which a member participates. // This includes tenants in which the member is explicitly participating through a tenant membership but may also // include memberships, which are inherited by the project memberships (e.g. through project invites). -func (s *tenantService) FindParticipatingTenants(ctx context.Context, rq *v1.FindParticipatingTenantsRequest) (*v1.FindParticipatingTenantsResponse, error) { +func (s *tenantService) FindParticipatingTenants(ctx context.Context, req *v1.FindParticipatingTenantsRequest) (*v1.FindParticipatingTenantsResponse, error) { type result struct { Tenant *v1.Tenant TenantMembershipAnnotations []byte `db:"tenant_membership_annotations"` @@ -292,7 +292,7 @@ func (s *tenantService) FindParticipatingTenants(ctx context.Context, rq *v1.Fin } var ( - input = map[string]any{"tenantId": rq.TenantId, "namespace": rq.Namespace} + input = map[string]any{"tenantId": req.TenantId, "namespace": req.Namespace} res []*v1.TenantWithMembershipAnnotations resultMap = map[string]*v1.TenantWithMembershipAnnotations{} @@ -331,8 +331,8 @@ func (s *tenantService) FindParticipatingTenants(ctx context.Context, rq *v1.Fin } includeInherited := true - if rq.IncludeInherited != nil { - includeInherited = *rq.IncludeInherited + if req.IncludeInherited != nil { + includeInherited = *req.IncludeInherited } if includeInherited { @@ -375,7 +375,7 @@ var ( // ListTenantMembers returns all members of a tenant. // This includes members which are explicitly participating through a tenant membership but may also // include memberships, which are inherited by the project memberships (e.g. through project invites). -func (s *tenantService) ListTenantMembers(ctx context.Context, rq *v1.ListTenantMembersRequest) (*v1.ListTenantMembersResponse, error) { +func (s *tenantService) ListTenantMembers(ctx context.Context, req *v1.ListTenantMembersRequest) (*v1.ListTenantMembersResponse, error) { type result struct { Tenant *v1.Tenant TenantMembershipAnnotations []byte `db:"tenant_membership_annotations"` @@ -386,7 +386,7 @@ func (s *tenantService) ListTenantMembers(ctx context.Context, rq *v1.ListTenant res []*v1.TenantWithMembershipAnnotations resultMap = map[string]*v1.TenantWithMembershipAnnotations{} - input = map[string]any{"tenantId": rq.TenantId, "namespace": rq.Namespace} + input = map[string]any{"tenantId": req.TenantId, "namespace": req.Namespace} resultFn = func(e result) error { t, ok := resultMap[e.Tenant.Meta.Id] @@ -419,8 +419,8 @@ func (s *tenantService) ListTenantMembers(ctx context.Context, rq *v1.ListTenant } includeInherited := true - if rq.IncludeInherited != nil { - includeInherited = *rq.IncludeInherited + if req.IncludeInherited != nil { + includeInherited = *req.IncludeInherited } if includeInherited { diff --git a/pkg/service/tenantmember.go b/pkg/service/tenantmember.go index 4b4f030..e3ad4a7 100644 --- a/pkg/service/tenantmember.go +++ b/pkg/service/tenantmember.go @@ -25,8 +25,8 @@ func NewTenantMemberService(l *slog.Logger, tds TenantDataStore, tmds TenantMemb } } -func (s *tenantMemberService) Create(ctx context.Context, rq *v1.TenantMemberCreateRequest) (*v1.TenantMemberResponse, error) { - tenantMember := rq.TenantMember +func (s *tenantMemberService) Create(ctx context.Context, req *v1.TenantMemberCreateRequest) (*v1.TenantMemberResponse, error) { + tenantMember := req.TenantMember _, err := s.tenantStore.Get(ctx, tenantMember.GetTenantId()) if err != nil && v1.IsNotFound(err) { @@ -46,8 +46,8 @@ func (s *tenantMemberService) Create(ctx context.Context, rq *v1.TenantMemberCre return tenantMember.NewTenantMemberResponse(), err } -func (s *tenantMemberService) Update(ctx context.Context, rq *v1.TenantMemberUpdateRequest) (*v1.TenantMemberResponse, error) { - tenantMember := rq.TenantMember +func (s *tenantMemberService) Update(ctx context.Context, req *v1.TenantMemberUpdateRequest) (*v1.TenantMemberResponse, error) { + tenantMember := req.TenantMember old, err := s.tenantMemberStore.Get(ctx, tenantMember.Meta.Id) if err != nil { @@ -69,16 +69,16 @@ func (s *tenantMemberService) Update(ctx context.Context, rq *v1.TenantMemberUpd return tenantMember.NewTenantMemberResponse(), err } -func (s *tenantMemberService) Delete(ctx context.Context, rq *v1.TenantMemberDeleteRequest) (*v1.TenantMemberResponse, error) { - tenantMember := rq.NewTenantMember() +func (s *tenantMemberService) Delete(ctx context.Context, req *v1.TenantMemberDeleteRequest) (*v1.TenantMemberResponse, error) { + tenantMember := req.NewTenantMember() err := s.tenantMemberStore.Delete(ctx, tenantMember.Meta.Id) return tenantMember.NewTenantMemberResponse(), err } -func (s *tenantMemberService) Get(ctx context.Context, rq *v1.TenantMemberGetRequest) (*v1.TenantMemberResponse, error) { - tenantMember, err := s.tenantMemberStore.Get(ctx, rq.Id) +func (s *tenantMemberService) Get(ctx context.Context, req *v1.TenantMemberGetRequest) (*v1.TenantMemberResponse, error) { + tenantMember, err := s.tenantMemberStore.Get(ctx, req.Id) if err != nil { return nil, err } @@ -86,18 +86,18 @@ func (s *tenantMemberService) Get(ctx context.Context, rq *v1.TenantMemberGetReq return tenantMember.NewTenantMemberResponse(), nil } -func (s *tenantMemberService) Find(ctx context.Context, rq *v1.TenantMemberFindRequest) (*v1.TenantMemberListResponse, error) { +func (s *tenantMemberService) Find(ctx context.Context, req *v1.TenantMemberFindRequest) (*v1.TenantMemberListResponse, error) { filter := map[string]any{ - "COALESCE(tenantmember ->> 'namespace', '')": rq.Namespace, + "COALESCE(tenantmember ->> 'namespace', '')": req.Namespace, } - if rq.TenantId != nil { - filter["tenantmember ->> 'tenant_id'"] = rq.TenantId + if req.TenantId != nil { + filter["tenantmember ->> 'tenant_id'"] = req.TenantId } - if rq.MemberId != nil { - filter["tenantmember ->> 'member_id'"] = rq.MemberId + if req.MemberId != nil { + filter["tenantmember ->> 'member_id'"] = req.MemberId } - for key, value := range rq.Annotations { + for key, value := range req.Annotations { // select * from tenantMember where tenantMember -> 'meta' -> 'annotations' ->> 'metal-stack.io/role' = 'owner'; f := fmt.Sprintf("tenantmember -> 'meta' -> 'annotations' ->> '%s'", key) filter[f] = value From 4002011b8653fc8817031c568da66a583b7d44d4 Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Tue, 7 Oct 2025 13:31:54 +0200 Subject: [PATCH 35/39] Formatting --- pkg/service/projectmember_test.go | 11 ++--------- pkg/service/tenantmember_test.go | 12 ++---------- 2 files changed, 4 insertions(+), 19 deletions(-) diff --git a/pkg/service/projectmember_test.go b/pkg/service/projectmember_test.go index f419ef3..a39c690 100644 --- a/pkg/service/projectmember_test.go +++ b/pkg/service/projectmember_test.go @@ -366,11 +366,7 @@ func TestFindProjectMember(t *testing.T) { } }) - if diff := cmp.Diff( - tt.want, got, - cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), - testcommon.IgnoreUnexported(), - ); diff != "" { + if diff := cmp.Diff(tt.want, got, cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { t.Errorf("(-want +got):\n%s", diff) } }) @@ -571,10 +567,7 @@ func TestUpdateProjectMember(t *testing.T) { assert.NotNil(t, got.ProjectMember.Meta.UpdatedTime) } - if diff := cmp.Diff( - tt.want, got, cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime", "UpdatedTime"), - testcommon.IgnoreUnexported(), - ); diff != "" { + if diff := cmp.Diff(tt.want, got, cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime", "UpdatedTime"), testcommon.IgnoreUnexported()); diff != "" { t.Errorf("(-want +got):\n%s", diff) } }) diff --git a/pkg/service/tenantmember_test.go b/pkg/service/tenantmember_test.go index cbe8a52..895d45d 100644 --- a/pkg/service/tenantmember_test.go +++ b/pkg/service/tenantmember_test.go @@ -338,11 +338,7 @@ func TestFindTenantMember(t *testing.T) { } }) - if diff := cmp.Diff( - tt.want, got, - cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), - testcommon.IgnoreUnexported(), - ); diff != "" { + if diff := cmp.Diff(tt.want, got, cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { t.Errorf("(-want +got):\n%s", diff) } }) @@ -539,11 +535,7 @@ func TestUpdateTenantMember(t *testing.T) { assert.NotNil(t, got.TenantMember.Meta.UpdatedTime) } - if diff := cmp.Diff( - tt.want, got, - cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime", "UpdatedTime"), - testcommon.IgnoreUnexported(), - ); diff != "" { + if diff := cmp.Diff(tt.want, got, cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime", "UpdatedTime"), testcommon.IgnoreUnexported()); diff != "" { t.Errorf("(-want +got):\n%s", diff) } }) From 9e9f80d0cec082bc39cf2f0ac23de26598eb8c14 Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Tue, 7 Oct 2025 13:59:25 +0200 Subject: [PATCH 36/39] One more --- .github/workflows/docker.yaml | 2 +- pkg/service/tenant_test.go | 6 +----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 8e7a2bd..1d40222 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -32,7 +32,7 @@ jobs: uses: actions/checkout@v5 - name: Setup Go - uses: actions/setup-go@v5 + uses: actions/setup-go@v6 with: go-version-file: 'go.mod' cache: false diff --git a/pkg/service/tenant_test.go b/pkg/service/tenant_test.go index 4ed595c..c73f103 100644 --- a/pkg/service/tenant_test.go +++ b/pkg/service/tenant_test.go @@ -1260,11 +1260,7 @@ func Test_tenantService_ListTenantMembers(t *testing.T) { } }) - if diff := cmp.Diff( - tt.want, got, - cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), - testcommon.IgnoreUnexported(), - ); diff != "" { + if diff := cmp.Diff(tt.want, got, cmpopts.IgnoreFields(v1.Meta{}, "CreatedTime"), testcommon.IgnoreUnexported()); diff != "" { t.Errorf("(-want +got):\n%s", diff) } }) From 778e02769022d80d6551e03b1ff3f2931dbccc24 Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Wed, 8 Oct 2025 08:07:49 +0200 Subject: [PATCH 37/39] go mod update --- go.mod | 10 +++++----- go.sum | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/go.mod b/go.mod index 2ccb164..e1c01ab 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/metal-stack/masterdata-api go 1.25 require ( - connectrpc.com/connect v1.19.0 + connectrpc.com/connect v1.19.1 connectrpc.com/grpchealth v1.4.0 connectrpc.com/grpcreflect v1.3.0 connectrpc.com/otelconnect v0.8.0 @@ -24,7 +24,7 @@ require ( github.com/urfave/cli/v2 v2.27.7 go.opentelemetry.io/otel/exporters/prometheus v0.60.0 go.opentelemetry.io/otel/sdk/metric v1.38.0 - golang.org/x/net v0.44.0 + golang.org/x/net v0.45.0 google.golang.org/grpc v1.76.0 google.golang.org/protobuf v1.36.10 sigs.k8s.io/yaml v1.6.0 @@ -80,13 +80,13 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.66.1 // indirect + github.com/prometheus/common v0.67.1 // indirect github.com/prometheus/otlptranslator v1.0.0 // indirect github.com/prometheus/procfs v0.17.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/shirou/gopsutil/v4 v4.25.9 // indirect github.com/sirupsen/logrus v1.9.3 // indirect - github.com/stretchr/objx v0.5.2 // indirect + github.com/stretchr/objx v0.5.3 // indirect github.com/tklauser/go-sysconf v0.3.15 // indirect github.com/tklauser/numcpus v0.10.0 // indirect github.com/xrash/smetrics v0.0.0-20250705151800-55b8f293f342 // indirect @@ -104,7 +104,7 @@ require ( golang.org/x/crypto v0.42.0 // indirect golang.org/x/sys v0.36.0 // indirect golang.org/x/text v0.29.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251007200510-49b9836ed3ff // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 64e3c4a..add12e4 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -connectrpc.com/connect v1.19.0 h1:LuqUbq01PqbtL0o7vn0WMRXzR2nNsiINe5zfcJ24pJM= -connectrpc.com/connect v1.19.0/go.mod h1:tN20fjdGlewnSFeZxLKb0xwIZ6ozc3OQs2hTXy4du9w= +connectrpc.com/connect v1.19.1 h1:R5M57z05+90EfEvCY1b7hBxDVOUl45PrtXtAV2fOC14= +connectrpc.com/connect v1.19.1/go.mod h1:tN20fjdGlewnSFeZxLKb0xwIZ6ozc3OQs2hTXy4du9w= connectrpc.com/grpchealth v1.4.0 h1:MJC96JLelARPgZTiRF9KRfY/2N9OcoQvF2EWX07v2IE= connectrpc.com/grpchealth v1.4.0/go.mod h1:WhW6m1EzTmq3Ky1FE8EfkIpSDc6TfUx2M2KqZO3ts/Q= connectrpc.com/grpcreflect v1.3.0 h1:Y4V+ACf8/vOb1XOc251Qun7jMB75gCUNw6llvB9csXc= @@ -179,8 +179,8 @@ github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= -github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= +github.com/prometheus/common v0.67.1 h1:OTSON1P4DNxzTg4hmKCc37o4ZAZDv0cfXLkOt0oEowI= +github.com/prometheus/common v0.67.1/go.mod h1:RpmT9v35q2Y+lsieQsdOh5sXZ6ajUGC8NjZAmr8vb0Q= github.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos= github.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM= github.com/prometheus/procfs v0.17.0 h1:FuLQ+05u4ZI+SS/w9+BWEM2TXiHKsUQ9TADiRH7DuK0= @@ -194,8 +194,8 @@ github.com/shirou/gopsutil/v4 v4.25.9/go.mod h1:gxIxoC+7nQRwUl/xNhutXlD8lq+jxTgp github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= -github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/objx v0.5.3 h1:jmXUvGomnU1o3W/V5h2VEradbpJDwGrzugQQvL0POH4= +github.com/stretchr/objx v0.5.3/go.mod h1:rDQraq+vQZU7Fde9LOZLr8Tax6zZvy4kuNKF+QYS+U0= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= @@ -247,8 +247,8 @@ go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= -golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= -golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= +golang.org/x/net v0.45.0 h1:RLBg5JKixCy82FtLJpeNlVM0nrSqpCRYzVU1n8kj0tM= +golang.org/x/net v0.45.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -268,8 +268,8 @@ gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251007200510-49b9836ed3ff h1:A90eA31Wq6HOMIQlLfzFwzqGKBTuaVztYu/g8sn+8Zc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251007200510-49b9836ed3ff/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A= google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c= google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= From a83f5da34c65ff9469e194f4d0ecabcfacd84364 Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Wed, 8 Oct 2025 11:37:48 +0200 Subject: [PATCH 38/39] Update postgres --- Makefile | 2 +- deploy/masterdata-api.yaml | 2 +- pkg/datastore/postgres_test.go | 2 +- pkg/service/common_test.go | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index a5b831b..e6cf400 100644 --- a/Makefile +++ b/Makefile @@ -63,7 +63,7 @@ mocks: .PHONY: postgres-up postgres-up: postgres-rm - docker run -d --name masterdatadb -p 5432:5432 -e POSTGRES_PASSWORD="password" -e POSTGRES_USER="masterdata" -e POSTGRES_DB="masterdata" postgres:17-alpine + docker run -d --name masterdatadb -p 5432:5432 -e POSTGRES_PASSWORD="password" -e POSTGRES_USER="masterdata" -e POSTGRES_DB="masterdata" postgres:18-alpine .PHONY: postgres-rm postgres-rm: diff --git a/deploy/masterdata-api.yaml b/deploy/masterdata-api.yaml index 2a23d9e..4f52353 100644 --- a/deploy/masterdata-api.yaml +++ b/deploy/masterdata-api.yaml @@ -170,7 +170,7 @@ spec: spec: containers: - name: masterdata-db - image: postgres:17-alpine + image: postgres:18-alpine command: - postgres env: diff --git a/pkg/datastore/postgres_test.go b/pkg/datastore/postgres_test.go index 1240b44..8df6c73 100644 --- a/pkg/datastore/postgres_test.go +++ b/pkg/datastore/postgres_test.go @@ -788,7 +788,7 @@ func createPostgresConnection() (testcontainers.Container, *sqlx.DB, error) { ctx := context.Background() postgres, err := postgres.Run(ctx, - "postgres:17-alpine", + "postgres:18-alpine", postgres.WithPassword("password"), testcontainers.WithWaitStrategy( wait.ForLog("database system is ready to accept connections"). diff --git a/pkg/service/common_test.go b/pkg/service/common_test.go index 9ac40c1..0216fad 100644 --- a/pkg/service/common_test.go +++ b/pkg/service/common_test.go @@ -18,7 +18,7 @@ func StartPostgres(ctx context.Context, ves ...datastore.Entity) (testcontainers var err error pgContainer, err = testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{ ContainerRequest: testcontainers.ContainerRequest{ - Image: "postgres:17-alpine", + Image: "postgres:18-alpine", ExposedPorts: []string{"5432/tcp"}, Env: map[string]string{"POSTGRES_PASSWORD": "password"}, WaitingFor: wait.ForAll( From 547dc719aa7106661e563c1cfd6f2e4ea15344a7 Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Sat, 18 Oct 2025 09:31:25 +0200 Subject: [PATCH 39/39] Update deps --- Dockerfile | 2 +- go.mod | 14 +++++++------- go.sum | 32 ++++++++++++++++---------------- proto/buf.gen.yaml | 2 +- 4 files changed, 25 insertions(+), 25 deletions(-) diff --git a/Dockerfile b/Dockerfile index 36cd888..9111d80 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,7 @@ RUN apk -U add curl \ ${GRPC_HEALTH_PROBE_URL}/${GRPC_HEALTH_PROBE_VERSION}/grpc_health_probe-linux-amd64 \ && chmod +x /bin/grpc_health_probe -FROM gcr.io/distroless/static-debian12:nonroot +FROM gcr.io/distroless/static-debian13:nonroot WORKDIR / COPY --from=health-downloader /bin/grpc_health_probe /bin/grpc_health_probe COPY bin/server /masterdata-api diff --git a/go.mod b/go.mod index e1c01ab..9d0370e 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( github.com/urfave/cli/v2 v2.27.7 go.opentelemetry.io/otel/exporters/prometheus v0.60.0 go.opentelemetry.io/otel/sdk/metric v1.38.0 - golang.org/x/net v0.45.0 + golang.org/x/net v0.46.0 google.golang.org/grpc v1.76.0 google.golang.org/protobuf v1.36.10 sigs.k8s.io/yaml v1.6.0 @@ -46,7 +46,7 @@ require ( github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/distribution/reference v0.6.0 // indirect - github.com/docker/docker v28.5.0+incompatible // indirect + github.com/docker/docker v28.5.1+incompatible // indirect github.com/docker/go-connections v0.6.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/ebitengine/purego v0.9.0 // indirect @@ -60,7 +60,7 @@ require ( github.com/klauspost/compress v1.18.0 // indirect github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect - github.com/lufia/plan9stats v0.0.0-20250827001030-24949be3fa54 // indirect + github.com/lufia/plan9stats v0.0.0-20251013123823-9fd1530e3ec3 // indirect github.com/magiconair/properties v1.8.10 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/go-archive v0.1.0 // indirect @@ -101,10 +101,10 @@ require ( go.opentelemetry.io/otel/trace v1.38.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.42.0 // indirect - golang.org/x/sys v0.36.0 // indirect - golang.org/x/text v0.29.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251007200510-49b9836ed3ff // indirect + golang.org/x/crypto v0.43.0 // indirect + golang.org/x/sys v0.37.0 // indirect + golang.org/x/text v0.30.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251014184007-4626949a642f // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index add12e4..3f90b8a 100644 --- a/go.sum +++ b/go.sum @@ -48,8 +48,8 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/docker v28.5.0+incompatible h1:ZdSQoRUE9XxhFI/B8YLvhnEFMmYN9Pp8Egd2qcaFk1E= -github.com/docker/docker v28.5.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v28.5.1+incompatible h1:Bm8DchhSD2J6PsFzxC35TZo4TLGR2PdW/E69rU45NhM= +github.com/docker/docker v28.5.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.6.0 h1:LlMG9azAe1TqfR7sO+NJttz1gy6KO7VJBh+pMmjSD94= github.com/docker/go-connections v0.6.0/go.mod h1:AahvXYshr6JgfUJGdDCs2b5EZG/vmaMAntpSFH5BFKE= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= @@ -125,8 +125,8 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lopezator/migrator v0.3.1 h1:ZFPT6aC7+nGWkqhleynABZ6ftycSf6hmHHLOaryq1Og= github.com/lopezator/migrator v0.3.1/go.mod h1:X+lHDMZ9Ci3/KdbypJcQYFFwipVrJsX4fRCQ4QLauYk= -github.com/lufia/plan9stats v0.0.0-20250827001030-24949be3fa54 h1:mFWunSatvkQQDhpdyuFAYwyAan3hzCuma+Pz8sqvOfg= -github.com/lufia/plan9stats v0.0.0-20250827001030-24949be3fa54/go.mod h1:autxFIvghDt3jPTLoqZ9OZ7s9qTGNAWmYCjVFWPX/zg= +github.com/lufia/plan9stats v0.0.0-20251013123823-9fd1530e3ec3 h1:PwQumkgq4/acIiZhtifTV5OUqqiP82UAl0h87xj/l9k= +github.com/lufia/plan9stats v0.0.0-20251013123823-9fd1530e3ec3/go.mod h1:autxFIvghDt3jPTLoqZ9OZ7s9qTGNAWmYCjVFWPX/zg= github.com/magiconair/properties v1.8.10 h1:s31yESBquKXCV9a/ScB3ESkOjUYYv+X0rg8SYxI99mE= github.com/magiconair/properties v1.8.10/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= @@ -245,10 +245,10 @@ go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= -golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= -golang.org/x/net v0.45.0 h1:RLBg5JKixCy82FtLJpeNlVM0nrSqpCRYzVU1n8kj0tM= -golang.org/x/net v0.45.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= +golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= +golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= +golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= +golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -256,20 +256,20 @@ golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= -golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/term v0.35.0 h1:bZBVKBudEyhRcajGcNc3jIfWPqV4y/Kt2XcoigOWtDQ= -golang.org/x/term v0.35.0/go.mod h1:TPGtkTLesOwf2DE8CgVYiZinHAOuy5AYUYT1lENIZnA= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= +golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= +golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251007200510-49b9836ed3ff h1:A90eA31Wq6HOMIQlLfzFwzqGKBTuaVztYu/g8sn+8Zc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251007200510-49b9836ed3ff/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251014184007-4626949a642f h1:1FTH6cpXFsENbPR5Bu8NQddPSaUUE6NA2XdZdDSAJK4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251014184007-4626949a642f/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A= google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c= google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= diff --git a/proto/buf.gen.yaml b/proto/buf.gen.yaml index b5e571e..653d7da 100644 --- a/proto/buf.gen.yaml +++ b/proto/buf.gen.yaml @@ -5,7 +5,7 @@ managed: - file_option: go_package_prefix value: github.com/metal-stack/masterdata-api plugins: - - remote: buf.build/connectrpc/go:v1.19.0 + - remote: buf.build/connectrpc/go:v1.19.1 out: ../ opt: paths=source_relative,simple - remote: buf.build/protocolbuffers/go:v1.36.10