diff --git a/doc/index.html b/doc/index.html index d56b3155..87181b76 100644 --- a/doc/index.html +++ b/doc/index.html @@ -1408,6 +1408,14 @@

Table of Contents

MTenantServiceInvitesListResponse +
  • + MTenantServiceLeaveRequest +
  • + +
  • + MTenantServiceLeaveResponse +
  • +
  • MTenantServiceListRequest
  • @@ -1778,6 +1786,14 @@

    Table of Contents

    MProjectServiceInvitesListResponse +
  • + MProjectServiceLeaveRequest +
  • + +
  • + MProjectServiceLeaveResponse +
  • +
  • MProjectServiceListRequest
  • @@ -11850,6 +11866,37 @@

    TenantServiceInvites +

    TenantServiceLeaveRequest

    +

    TenantServiceLeaveTenantRequest is used to leave a tenant

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    loginstring

    Login of the tenant

    + + + + + +

    TenantServiceLeaveResponse

    +

    TenantServiceLeaveTenantResponse is the response payload to a leave tenant request

    + + + + +

    TenantServiceListRequest

    TenantServiceListRequest is the request payload of the tenant list request

    @@ -12151,6 +12198,13 @@

    TenantService

    Delete a tenant

    + + Leave + TenantServiceLeaveRequest + TenantServiceLeaveResponse +

    Leave remove a member of a tenant

    + + RemoveMember TenantServiceRemoveMemberRequest @@ -14355,6 +14409,37 @@

    ProjectServiceInvit +

    ProjectServiceLeaveRequest

    +

    ProjectServiceLeaveRequest is used to leave a project

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    projectstring

    Project is the uuid of the project

    + + + + + +

    ProjectServiceLeaveResponse

    +

    ProjectServiceLeaveResponse is the response payload to a leave project request

    + + + + +

    ProjectServiceListRequest

    ProjectServiceListRequest is the request payload to list all projects

    @@ -14656,6 +14741,13 @@

    ProjectService

    Update a project

    + + Leave + ProjectServiceLeaveRequest + ProjectServiceLeaveResponse +

    Leave project

    + + RemoveMember ProjectServiceRemoveMemberRequest diff --git a/go/metalstack/api/v2/apiv2connect/project.connect.go b/go/metalstack/api/v2/apiv2connect/project.connect.go index 4a899420..b76c92c6 100644 --- a/go/metalstack/api/v2/apiv2connect/project.connect.go +++ b/go/metalstack/api/v2/apiv2connect/project.connect.go @@ -43,6 +43,8 @@ const ( ProjectServiceDeleteProcedure = "/metalstack.api.v2.ProjectService/Delete" // ProjectServiceUpdateProcedure is the fully-qualified name of the ProjectService's Update RPC. ProjectServiceUpdateProcedure = "/metalstack.api.v2.ProjectService/Update" + // ProjectServiceLeaveProcedure is the fully-qualified name of the ProjectService's Leave RPC. + ProjectServiceLeaveProcedure = "/metalstack.api.v2.ProjectService/Leave" // ProjectServiceRemoveMemberProcedure is the fully-qualified name of the ProjectService's // RemoveMember RPC. ProjectServiceRemoveMemberProcedure = "/metalstack.api.v2.ProjectService/RemoveMember" @@ -77,6 +79,8 @@ type ProjectServiceClient interface { Delete(context.Context, *v2.ProjectServiceDeleteRequest) (*v2.ProjectServiceDeleteResponse, error) // Update a project Update(context.Context, *v2.ProjectServiceUpdateRequest) (*v2.ProjectServiceUpdateResponse, error) + // Leave project + Leave(context.Context, *v2.ProjectServiceLeaveRequest) (*v2.ProjectServiceLeaveResponse, error) // RemoveMember remove a user from a project RemoveMember(context.Context, *v2.ProjectServiceRemoveMemberRequest) (*v2.ProjectServiceRemoveMemberResponse, error) // UpdateMember update a user for a project @@ -134,6 +138,12 @@ func NewProjectServiceClient(httpClient connect.HTTPClient, baseURL string, opts connect.WithSchema(projectServiceMethods.ByName("Update")), connect.WithClientOptions(opts...), ), + leave: connect.NewClient[v2.ProjectServiceLeaveRequest, v2.ProjectServiceLeaveResponse]( + httpClient, + baseURL+ProjectServiceLeaveProcedure, + connect.WithSchema(projectServiceMethods.ByName("Leave")), + connect.WithClientOptions(opts...), + ), removeMember: connect.NewClient[v2.ProjectServiceRemoveMemberRequest, v2.ProjectServiceRemoveMemberResponse]( httpClient, baseURL+ProjectServiceRemoveMemberProcedure, @@ -186,6 +196,7 @@ type projectServiceClient struct { create *connect.Client[v2.ProjectServiceCreateRequest, v2.ProjectServiceCreateResponse] delete *connect.Client[v2.ProjectServiceDeleteRequest, v2.ProjectServiceDeleteResponse] update *connect.Client[v2.ProjectServiceUpdateRequest, v2.ProjectServiceUpdateResponse] + leave *connect.Client[v2.ProjectServiceLeaveRequest, v2.ProjectServiceLeaveResponse] removeMember *connect.Client[v2.ProjectServiceRemoveMemberRequest, v2.ProjectServiceRemoveMemberResponse] updateMember *connect.Client[v2.ProjectServiceUpdateMemberRequest, v2.ProjectServiceUpdateMemberResponse] invite *connect.Client[v2.ProjectServiceInviteRequest, v2.ProjectServiceInviteResponse] @@ -240,6 +251,15 @@ func (c *projectServiceClient) Update(ctx context.Context, req *v2.ProjectServic return nil, err } +// Leave calls metalstack.api.v2.ProjectService.Leave. +func (c *projectServiceClient) Leave(ctx context.Context, req *v2.ProjectServiceLeaveRequest) (*v2.ProjectServiceLeaveResponse, error) { + response, err := c.leave.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err +} + // RemoveMember calls metalstack.api.v2.ProjectService.RemoveMember. func (c *projectServiceClient) RemoveMember(ctx context.Context, req *v2.ProjectServiceRemoveMemberRequest) (*v2.ProjectServiceRemoveMemberResponse, error) { response, err := c.removeMember.CallUnary(ctx, connect.NewRequest(req)) @@ -315,6 +335,8 @@ type ProjectServiceHandler interface { Delete(context.Context, *v2.ProjectServiceDeleteRequest) (*v2.ProjectServiceDeleteResponse, error) // Update a project Update(context.Context, *v2.ProjectServiceUpdateRequest) (*v2.ProjectServiceUpdateResponse, error) + // Leave project + Leave(context.Context, *v2.ProjectServiceLeaveRequest) (*v2.ProjectServiceLeaveResponse, error) // RemoveMember remove a user from a project RemoveMember(context.Context, *v2.ProjectServiceRemoveMemberRequest) (*v2.ProjectServiceRemoveMemberResponse, error) // UpdateMember update a user for a project @@ -368,6 +390,12 @@ func NewProjectServiceHandler(svc ProjectServiceHandler, opts ...connect.Handler connect.WithSchema(projectServiceMethods.ByName("Update")), connect.WithHandlerOptions(opts...), ) + projectServiceLeaveHandler := connect.NewUnaryHandlerSimple( + ProjectServiceLeaveProcedure, + svc.Leave, + connect.WithSchema(projectServiceMethods.ByName("Leave")), + connect.WithHandlerOptions(opts...), + ) projectServiceRemoveMemberHandler := connect.NewUnaryHandlerSimple( ProjectServiceRemoveMemberProcedure, svc.RemoveMember, @@ -422,6 +450,8 @@ func NewProjectServiceHandler(svc ProjectServiceHandler, opts ...connect.Handler projectServiceDeleteHandler.ServeHTTP(w, r) case ProjectServiceUpdateProcedure: projectServiceUpdateHandler.ServeHTTP(w, r) + case ProjectServiceLeaveProcedure: + projectServiceLeaveHandler.ServeHTTP(w, r) case ProjectServiceRemoveMemberProcedure: projectServiceRemoveMemberHandler.ServeHTTP(w, r) case ProjectServiceUpdateMemberProcedure: @@ -465,6 +495,10 @@ func (UnimplementedProjectServiceHandler) Update(context.Context, *v2.ProjectSer return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.ProjectService.Update is not implemented")) } +func (UnimplementedProjectServiceHandler) Leave(context.Context, *v2.ProjectServiceLeaveRequest) (*v2.ProjectServiceLeaveResponse, error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.ProjectService.Leave is not implemented")) +} + func (UnimplementedProjectServiceHandler) RemoveMember(context.Context, *v2.ProjectServiceRemoveMemberRequest) (*v2.ProjectServiceRemoveMemberResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.ProjectService.RemoveMember is not implemented")) } diff --git a/go/metalstack/api/v2/apiv2connect/tenant.connect.go b/go/metalstack/api/v2/apiv2connect/tenant.connect.go index ab60f945..ba11f8a9 100644 --- a/go/metalstack/api/v2/apiv2connect/tenant.connect.go +++ b/go/metalstack/api/v2/apiv2connect/tenant.connect.go @@ -43,6 +43,8 @@ const ( TenantServiceUpdateProcedure = "/metalstack.api.v2.TenantService/Update" // TenantServiceDeleteProcedure is the fully-qualified name of the TenantService's Delete RPC. TenantServiceDeleteProcedure = "/metalstack.api.v2.TenantService/Delete" + // TenantServiceLeaveProcedure is the fully-qualified name of the TenantService's Leave RPC. + TenantServiceLeaveProcedure = "/metalstack.api.v2.TenantService/Leave" // TenantServiceRemoveMemberProcedure is the fully-qualified name of the TenantService's // RemoveMember RPC. TenantServiceRemoveMemberProcedure = "/metalstack.api.v2.TenantService/RemoveMember" @@ -76,6 +78,8 @@ type TenantServiceClient interface { Update(context.Context, *v2.TenantServiceUpdateRequest) (*v2.TenantServiceUpdateResponse, error) // Delete a tenant Delete(context.Context, *v2.TenantServiceDeleteRequest) (*v2.TenantServiceDeleteResponse, error) + // Leave remove a member of a tenant + Leave(context.Context, *v2.TenantServiceLeaveRequest) (*v2.TenantServiceLeaveResponse, error) // RemoveMember remove a member of a tenant RemoveMember(context.Context, *v2.TenantServiceRemoveMemberRequest) (*v2.TenantServiceRemoveMemberResponse, error) // UpdateMember update a member of a tenant @@ -133,6 +137,12 @@ func NewTenantServiceClient(httpClient connect.HTTPClient, baseURL string, opts connect.WithSchema(tenantServiceMethods.ByName("Delete")), connect.WithClientOptions(opts...), ), + leave: connect.NewClient[v2.TenantServiceLeaveRequest, v2.TenantServiceLeaveResponse]( + httpClient, + baseURL+TenantServiceLeaveProcedure, + connect.WithSchema(tenantServiceMethods.ByName("Leave")), + connect.WithClientOptions(opts...), + ), removeMember: connect.NewClient[v2.TenantServiceRemoveMemberRequest, v2.TenantServiceRemoveMemberResponse]( httpClient, baseURL+TenantServiceRemoveMemberProcedure, @@ -185,6 +195,7 @@ type tenantServiceClient struct { get *connect.Client[v2.TenantServiceGetRequest, v2.TenantServiceGetResponse] update *connect.Client[v2.TenantServiceUpdateRequest, v2.TenantServiceUpdateResponse] delete *connect.Client[v2.TenantServiceDeleteRequest, v2.TenantServiceDeleteResponse] + leave *connect.Client[v2.TenantServiceLeaveRequest, v2.TenantServiceLeaveResponse] removeMember *connect.Client[v2.TenantServiceRemoveMemberRequest, v2.TenantServiceRemoveMemberResponse] updateMember *connect.Client[v2.TenantServiceUpdateMemberRequest, v2.TenantServiceUpdateMemberResponse] invite *connect.Client[v2.TenantServiceInviteRequest, v2.TenantServiceInviteResponse] @@ -239,6 +250,15 @@ func (c *tenantServiceClient) Delete(ctx context.Context, req *v2.TenantServiceD return nil, err } +// Leave calls metalstack.api.v2.TenantService.Leave. +func (c *tenantServiceClient) Leave(ctx context.Context, req *v2.TenantServiceLeaveRequest) (*v2.TenantServiceLeaveResponse, error) { + response, err := c.leave.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err +} + // RemoveMember calls metalstack.api.v2.TenantService.RemoveMember. func (c *tenantServiceClient) RemoveMember(ctx context.Context, req *v2.TenantServiceRemoveMemberRequest) (*v2.TenantServiceRemoveMemberResponse, error) { response, err := c.removeMember.CallUnary(ctx, connect.NewRequest(req)) @@ -314,6 +334,8 @@ type TenantServiceHandler interface { Update(context.Context, *v2.TenantServiceUpdateRequest) (*v2.TenantServiceUpdateResponse, error) // Delete a tenant Delete(context.Context, *v2.TenantServiceDeleteRequest) (*v2.TenantServiceDeleteResponse, error) + // Leave remove a member of a tenant + Leave(context.Context, *v2.TenantServiceLeaveRequest) (*v2.TenantServiceLeaveResponse, error) // RemoveMember remove a member of a tenant RemoveMember(context.Context, *v2.TenantServiceRemoveMemberRequest) (*v2.TenantServiceRemoveMemberResponse, error) // UpdateMember update a member of a tenant @@ -367,6 +389,12 @@ func NewTenantServiceHandler(svc TenantServiceHandler, opts ...connect.HandlerOp connect.WithSchema(tenantServiceMethods.ByName("Delete")), connect.WithHandlerOptions(opts...), ) + tenantServiceLeaveHandler := connect.NewUnaryHandlerSimple( + TenantServiceLeaveProcedure, + svc.Leave, + connect.WithSchema(tenantServiceMethods.ByName("Leave")), + connect.WithHandlerOptions(opts...), + ) tenantServiceRemoveMemberHandler := connect.NewUnaryHandlerSimple( TenantServiceRemoveMemberProcedure, svc.RemoveMember, @@ -421,6 +449,8 @@ func NewTenantServiceHandler(svc TenantServiceHandler, opts ...connect.HandlerOp tenantServiceUpdateHandler.ServeHTTP(w, r) case TenantServiceDeleteProcedure: tenantServiceDeleteHandler.ServeHTTP(w, r) + case TenantServiceLeaveProcedure: + tenantServiceLeaveHandler.ServeHTTP(w, r) case TenantServiceRemoveMemberProcedure: tenantServiceRemoveMemberHandler.ServeHTTP(w, r) case TenantServiceUpdateMemberProcedure: @@ -464,6 +494,10 @@ func (UnimplementedTenantServiceHandler) Delete(context.Context, *v2.TenantServi return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.TenantService.Delete is not implemented")) } +func (UnimplementedTenantServiceHandler) Leave(context.Context, *v2.TenantServiceLeaveRequest) (*v2.TenantServiceLeaveResponse, error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.TenantService.Leave is not implemented")) +} + func (UnimplementedTenantServiceHandler) RemoveMember(context.Context, *v2.TenantServiceRemoveMemberRequest) (*v2.TenantServiceRemoveMemberResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.TenantService.RemoveMember is not implemented")) } diff --git a/go/metalstack/api/v2/project.pb.go b/go/metalstack/api/v2/project.pb.go index a39d9858..50d7a4d4 100644 --- a/go/metalstack/api/v2/project.pb.go +++ b/go/metalstack/api/v2/project.pb.go @@ -1173,6 +1173,89 @@ func (x *ProjectServiceInviteGetResponse) GetInvite() *ProjectInvite { return nil } +// ProjectServiceLeaveRequest is used to leave a project +type ProjectServiceLeaveRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Project is the uuid of the project + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ProjectServiceLeaveRequest) Reset() { + *x = ProjectServiceLeaveRequest{} + mi := &file_metalstack_api_v2_project_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ProjectServiceLeaveRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProjectServiceLeaveRequest) ProtoMessage() {} + +func (x *ProjectServiceLeaveRequest) ProtoReflect() protoreflect.Message { + mi := &file_metalstack_api_v2_project_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProjectServiceLeaveRequest.ProtoReflect.Descriptor instead. +func (*ProjectServiceLeaveRequest) Descriptor() ([]byte, []int) { + return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{19} +} + +func (x *ProjectServiceLeaveRequest) GetProject() string { + if x != nil { + return x.Project + } + return "" +} + +// ProjectServiceLeaveResponse is the response payload to a leave project request +type ProjectServiceLeaveResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ProjectServiceLeaveResponse) Reset() { + *x = ProjectServiceLeaveResponse{} + mi := &file_metalstack_api_v2_project_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ProjectServiceLeaveResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProjectServiceLeaveResponse) ProtoMessage() {} + +func (x *ProjectServiceLeaveResponse) ProtoReflect() protoreflect.Message { + mi := &file_metalstack_api_v2_project_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProjectServiceLeaveResponse.ProtoReflect.Descriptor instead. +func (*ProjectServiceLeaveResponse) Descriptor() ([]byte, []int) { + return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{20} +} + // ProjectServiceRemoveMemberRequest is used to remove a member from a project type ProjectServiceRemoveMemberRequest struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -1186,7 +1269,7 @@ type ProjectServiceRemoveMemberRequest struct { func (x *ProjectServiceRemoveMemberRequest) Reset() { *x = ProjectServiceRemoveMemberRequest{} - mi := &file_metalstack_api_v2_project_proto_msgTypes[19] + mi := &file_metalstack_api_v2_project_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1198,7 +1281,7 @@ func (x *ProjectServiceRemoveMemberRequest) String() string { func (*ProjectServiceRemoveMemberRequest) ProtoMessage() {} func (x *ProjectServiceRemoveMemberRequest) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_project_proto_msgTypes[19] + mi := &file_metalstack_api_v2_project_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1211,7 +1294,7 @@ func (x *ProjectServiceRemoveMemberRequest) ProtoReflect() protoreflect.Message // Deprecated: Use ProjectServiceRemoveMemberRequest.ProtoReflect.Descriptor instead. func (*ProjectServiceRemoveMemberRequest) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{19} + return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{21} } func (x *ProjectServiceRemoveMemberRequest) GetProject() string { @@ -1237,7 +1320,7 @@ type ProjectServiceRemoveMemberResponse struct { func (x *ProjectServiceRemoveMemberResponse) Reset() { *x = ProjectServiceRemoveMemberResponse{} - mi := &file_metalstack_api_v2_project_proto_msgTypes[20] + mi := &file_metalstack_api_v2_project_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1249,7 +1332,7 @@ func (x *ProjectServiceRemoveMemberResponse) String() string { func (*ProjectServiceRemoveMemberResponse) ProtoMessage() {} func (x *ProjectServiceRemoveMemberResponse) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_project_proto_msgTypes[20] + mi := &file_metalstack_api_v2_project_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1262,7 +1345,7 @@ func (x *ProjectServiceRemoveMemberResponse) ProtoReflect() protoreflect.Message // Deprecated: Use ProjectServiceRemoveMemberResponse.ProtoReflect.Descriptor instead. func (*ProjectServiceRemoveMemberResponse) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{20} + return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{22} } // ProjectServiceUpdateMemberRequest is used to update a member of a project @@ -1280,7 +1363,7 @@ type ProjectServiceUpdateMemberRequest struct { func (x *ProjectServiceUpdateMemberRequest) Reset() { *x = ProjectServiceUpdateMemberRequest{} - mi := &file_metalstack_api_v2_project_proto_msgTypes[21] + mi := &file_metalstack_api_v2_project_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1292,7 +1375,7 @@ func (x *ProjectServiceUpdateMemberRequest) String() string { func (*ProjectServiceUpdateMemberRequest) ProtoMessage() {} func (x *ProjectServiceUpdateMemberRequest) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_project_proto_msgTypes[21] + mi := &file_metalstack_api_v2_project_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1305,7 +1388,7 @@ func (x *ProjectServiceUpdateMemberRequest) ProtoReflect() protoreflect.Message // Deprecated: Use ProjectServiceUpdateMemberRequest.ProtoReflect.Descriptor instead. func (*ProjectServiceUpdateMemberRequest) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{21} + return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{23} } func (x *ProjectServiceUpdateMemberRequest) GetProject() string { @@ -1340,7 +1423,7 @@ type ProjectServiceUpdateMemberResponse struct { func (x *ProjectServiceUpdateMemberResponse) Reset() { *x = ProjectServiceUpdateMemberResponse{} - mi := &file_metalstack_api_v2_project_proto_msgTypes[22] + mi := &file_metalstack_api_v2_project_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1352,7 +1435,7 @@ func (x *ProjectServiceUpdateMemberResponse) String() string { func (*ProjectServiceUpdateMemberResponse) ProtoMessage() {} func (x *ProjectServiceUpdateMemberResponse) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_project_proto_msgTypes[22] + mi := &file_metalstack_api_v2_project_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1365,7 +1448,7 @@ func (x *ProjectServiceUpdateMemberResponse) ProtoReflect() protoreflect.Message // Deprecated: Use ProjectServiceUpdateMemberResponse.ProtoReflect.Descriptor instead. func (*ProjectServiceUpdateMemberResponse) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{22} + return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{24} } func (x *ProjectServiceUpdateMemberResponse) GetProjectMember() *ProjectMember { @@ -1386,7 +1469,7 @@ type ProjectServiceInviteAcceptRequest struct { func (x *ProjectServiceInviteAcceptRequest) Reset() { *x = ProjectServiceInviteAcceptRequest{} - mi := &file_metalstack_api_v2_project_proto_msgTypes[23] + mi := &file_metalstack_api_v2_project_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1398,7 +1481,7 @@ func (x *ProjectServiceInviteAcceptRequest) String() string { func (*ProjectServiceInviteAcceptRequest) ProtoMessage() {} func (x *ProjectServiceInviteAcceptRequest) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_project_proto_msgTypes[23] + mi := &file_metalstack_api_v2_project_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1411,7 +1494,7 @@ func (x *ProjectServiceInviteAcceptRequest) ProtoReflect() protoreflect.Message // Deprecated: Use ProjectServiceInviteAcceptRequest.ProtoReflect.Descriptor instead. func (*ProjectServiceInviteAcceptRequest) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{23} + return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{25} } func (x *ProjectServiceInviteAcceptRequest) GetSecret() string { @@ -1434,7 +1517,7 @@ type ProjectServiceInviteAcceptResponse struct { func (x *ProjectServiceInviteAcceptResponse) Reset() { *x = ProjectServiceInviteAcceptResponse{} - mi := &file_metalstack_api_v2_project_proto_msgTypes[24] + mi := &file_metalstack_api_v2_project_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1446,7 +1529,7 @@ func (x *ProjectServiceInviteAcceptResponse) String() string { func (*ProjectServiceInviteAcceptResponse) ProtoMessage() {} func (x *ProjectServiceInviteAcceptResponse) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_project_proto_msgTypes[24] + mi := &file_metalstack_api_v2_project_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1459,7 +1542,7 @@ func (x *ProjectServiceInviteAcceptResponse) ProtoReflect() protoreflect.Message // Deprecated: Use ProjectServiceInviteAcceptResponse.ProtoReflect.Descriptor instead. func (*ProjectServiceInviteAcceptResponse) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{24} + return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{26} } func (x *ProjectServiceInviteAcceptResponse) GetProject() string { @@ -1489,7 +1572,7 @@ type ProjectServiceInviteDeleteRequest struct { func (x *ProjectServiceInviteDeleteRequest) Reset() { *x = ProjectServiceInviteDeleteRequest{} - mi := &file_metalstack_api_v2_project_proto_msgTypes[25] + mi := &file_metalstack_api_v2_project_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1501,7 +1584,7 @@ func (x *ProjectServiceInviteDeleteRequest) String() string { func (*ProjectServiceInviteDeleteRequest) ProtoMessage() {} func (x *ProjectServiceInviteDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_project_proto_msgTypes[25] + mi := &file_metalstack_api_v2_project_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1514,7 +1597,7 @@ func (x *ProjectServiceInviteDeleteRequest) ProtoReflect() protoreflect.Message // Deprecated: Use ProjectServiceInviteDeleteRequest.ProtoReflect.Descriptor instead. func (*ProjectServiceInviteDeleteRequest) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{25} + return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{27} } func (x *ProjectServiceInviteDeleteRequest) GetProject() string { @@ -1540,7 +1623,7 @@ type ProjectServiceInviteDeleteResponse struct { func (x *ProjectServiceInviteDeleteResponse) Reset() { *x = ProjectServiceInviteDeleteResponse{} - mi := &file_metalstack_api_v2_project_proto_msgTypes[26] + mi := &file_metalstack_api_v2_project_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1552,7 +1635,7 @@ func (x *ProjectServiceInviteDeleteResponse) String() string { func (*ProjectServiceInviteDeleteResponse) ProtoMessage() {} func (x *ProjectServiceInviteDeleteResponse) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_project_proto_msgTypes[26] + mi := &file_metalstack_api_v2_project_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1565,7 +1648,7 @@ func (x *ProjectServiceInviteDeleteResponse) ProtoReflect() protoreflect.Message // Deprecated: Use ProjectServiceInviteDeleteResponse.ProtoReflect.Descriptor instead. func (*ProjectServiceInviteDeleteResponse) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{26} + return file_metalstack_api_v2_project_proto_rawDescGZIP(), []int{28} } var File_metalstack_api_v2_project_proto protoreflect.FileDescriptor @@ -1661,7 +1744,10 @@ const file_metalstack_api_v2_project_proto_rawDesc = "" + "\x1eProjectServiceInviteGetRequest\x12\x16\n" + "\x06secret\x18\x01 \x01(\tR\x06secret\"[\n" + "\x1fProjectServiceInviteGetResponse\x128\n" + - "\x06invite\x18\x01 \x01(\v2 .metalstack.api.v2.ProjectInviteR\x06invite\"_\n" + + "\x06invite\x18\x01 \x01(\v2 .metalstack.api.v2.ProjectInviteR\x06invite\"@\n" + + "\x1aProjectServiceLeaveRequest\x12\"\n" + + "\aproject\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\aproject\"\x1d\n" + + "\x1bProjectServiceLeaveResponse\"_\n" + "!ProjectServiceRemoveMemberRequest\x12\"\n" + "\aproject\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\aproject\x12\x16\n" + "\x06member\x18\x02 \x01(\tR\x06member\"$\n" + @@ -1680,7 +1766,7 @@ const file_metalstack_api_v2_project_proto_rawDesc = "" + "!ProjectServiceInviteDeleteRequest\x12\"\n" + "\aproject\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\aproject\x12\x16\n" + "\x06secret\x18\x02 \x01(\tR\x06secret\"$\n" + - "\"ProjectServiceInviteDeleteResponse2\xef\v\n" + + "\"ProjectServiceInviteDeleteResponse2\xe2\f\n" + "\x0eProjectService\x12m\n" + "\x04List\x12,.metalstack.api.v2.ProjectServiceListRequest\x1a-.metalstack.api.v2.ProjectServiceListResponse\"\b\xd8\xf3\x18\x03\xe0\xf3\x18\x02\x12m\n" + "\x03Get\x12+.metalstack.api.v2.ProjectServiceGetRequest\x1a,.metalstack.api.v2.ProjectServiceGetResponse\"\v\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12u\n" + @@ -1688,7 +1774,8 @@ const file_metalstack_api_v2_project_proto_rawDesc = "" + "\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12t\n" + "\x06Delete\x12..metalstack.api.v2.ProjectServiceDeleteRequest\x1a/.metalstack.api.v2.ProjectServiceDeleteResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12u\n" + "\x06Update\x12..metalstack.api.v2.ProjectServiceUpdateRequest\x1a/.metalstack.api.v2.ProjectServiceUpdateResponse\"\n" + - "\xca\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12\x86\x01\n" + + "\xca\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12q\n" + + "\x05Leave\x12-.metalstack.api.v2.ProjectServiceLeaveRequest\x1a..metalstack.api.v2.ProjectServiceLeaveResponse\"\t\xca\xf3\x18\x01\x03\xe0\xf3\x18\x01\x12\x86\x01\n" + "\fRemoveMember\x124.metalstack.api.v2.ProjectServiceRemoveMemberRequest\x1a5.metalstack.api.v2.ProjectServiceRemoveMemberResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x86\x01\n" + "\fUpdateMember\x124.metalstack.api.v2.ProjectServiceUpdateMemberRequest\x1a5.metalstack.api.v2.ProjectServiceUpdateMemberResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12t\n" + "\x06Invite\x12..metalstack.api.v2.ProjectServiceInviteRequest\x1a/.metalstack.api.v2.ProjectServiceInviteResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x85\x01\n" + @@ -1710,7 +1797,7 @@ func file_metalstack_api_v2_project_proto_rawDescGZIP() []byte { return file_metalstack_api_v2_project_proto_rawDescData } -var file_metalstack_api_v2_project_proto_msgTypes = make([]protoimpl.MessageInfo, 27) +var file_metalstack_api_v2_project_proto_msgTypes = make([]protoimpl.MessageInfo, 29) var file_metalstack_api_v2_project_proto_goTypes = []any{ (*Project)(nil), // 0: metalstack.api.v2.Project (*ProjectMember)(nil), // 1: metalstack.api.v2.ProjectMember @@ -1731,70 +1818,74 @@ var file_metalstack_api_v2_project_proto_goTypes = []any{ (*ProjectServiceInvitesListResponse)(nil), // 16: metalstack.api.v2.ProjectServiceInvitesListResponse (*ProjectServiceInviteGetRequest)(nil), // 17: metalstack.api.v2.ProjectServiceInviteGetRequest (*ProjectServiceInviteGetResponse)(nil), // 18: metalstack.api.v2.ProjectServiceInviteGetResponse - (*ProjectServiceRemoveMemberRequest)(nil), // 19: metalstack.api.v2.ProjectServiceRemoveMemberRequest - (*ProjectServiceRemoveMemberResponse)(nil), // 20: metalstack.api.v2.ProjectServiceRemoveMemberResponse - (*ProjectServiceUpdateMemberRequest)(nil), // 21: metalstack.api.v2.ProjectServiceUpdateMemberRequest - (*ProjectServiceUpdateMemberResponse)(nil), // 22: metalstack.api.v2.ProjectServiceUpdateMemberResponse - (*ProjectServiceInviteAcceptRequest)(nil), // 23: metalstack.api.v2.ProjectServiceInviteAcceptRequest - (*ProjectServiceInviteAcceptResponse)(nil), // 24: metalstack.api.v2.ProjectServiceInviteAcceptResponse - (*ProjectServiceInviteDeleteRequest)(nil), // 25: metalstack.api.v2.ProjectServiceInviteDeleteRequest - (*ProjectServiceInviteDeleteResponse)(nil), // 26: metalstack.api.v2.ProjectServiceInviteDeleteResponse - (*Meta)(nil), // 27: metalstack.api.v2.Meta - (ProjectRole)(0), // 28: metalstack.api.v2.ProjectRole - (*timestamppb.Timestamp)(nil), // 29: google.protobuf.Timestamp - (*Labels)(nil), // 30: metalstack.api.v2.Labels - (*UpdateMeta)(nil), // 31: metalstack.api.v2.UpdateMeta - (*UpdateLabels)(nil), // 32: metalstack.api.v2.UpdateLabels + (*ProjectServiceLeaveRequest)(nil), // 19: metalstack.api.v2.ProjectServiceLeaveRequest + (*ProjectServiceLeaveResponse)(nil), // 20: metalstack.api.v2.ProjectServiceLeaveResponse + (*ProjectServiceRemoveMemberRequest)(nil), // 21: metalstack.api.v2.ProjectServiceRemoveMemberRequest + (*ProjectServiceRemoveMemberResponse)(nil), // 22: metalstack.api.v2.ProjectServiceRemoveMemberResponse + (*ProjectServiceUpdateMemberRequest)(nil), // 23: metalstack.api.v2.ProjectServiceUpdateMemberRequest + (*ProjectServiceUpdateMemberResponse)(nil), // 24: metalstack.api.v2.ProjectServiceUpdateMemberResponse + (*ProjectServiceInviteAcceptRequest)(nil), // 25: metalstack.api.v2.ProjectServiceInviteAcceptRequest + (*ProjectServiceInviteAcceptResponse)(nil), // 26: metalstack.api.v2.ProjectServiceInviteAcceptResponse + (*ProjectServiceInviteDeleteRequest)(nil), // 27: metalstack.api.v2.ProjectServiceInviteDeleteRequest + (*ProjectServiceInviteDeleteResponse)(nil), // 28: metalstack.api.v2.ProjectServiceInviteDeleteResponse + (*Meta)(nil), // 29: metalstack.api.v2.Meta + (ProjectRole)(0), // 30: metalstack.api.v2.ProjectRole + (*timestamppb.Timestamp)(nil), // 31: google.protobuf.Timestamp + (*Labels)(nil), // 32: metalstack.api.v2.Labels + (*UpdateMeta)(nil), // 33: metalstack.api.v2.UpdateMeta + (*UpdateLabels)(nil), // 34: metalstack.api.v2.UpdateLabels } var file_metalstack_api_v2_project_proto_depIdxs = []int32{ - 27, // 0: metalstack.api.v2.Project.meta:type_name -> metalstack.api.v2.Meta - 28, // 1: metalstack.api.v2.ProjectMember.role:type_name -> metalstack.api.v2.ProjectRole - 29, // 2: metalstack.api.v2.ProjectMember.created_at:type_name -> google.protobuf.Timestamp - 28, // 3: metalstack.api.v2.ProjectInvite.role:type_name -> metalstack.api.v2.ProjectRole - 29, // 4: metalstack.api.v2.ProjectInvite.expires_at:type_name -> google.protobuf.Timestamp - 29, // 5: metalstack.api.v2.ProjectInvite.joined_at:type_name -> google.protobuf.Timestamp - 30, // 6: metalstack.api.v2.ProjectServiceListRequest.labels:type_name -> metalstack.api.v2.Labels + 29, // 0: metalstack.api.v2.Project.meta:type_name -> metalstack.api.v2.Meta + 30, // 1: metalstack.api.v2.ProjectMember.role:type_name -> metalstack.api.v2.ProjectRole + 31, // 2: metalstack.api.v2.ProjectMember.created_at:type_name -> google.protobuf.Timestamp + 30, // 3: metalstack.api.v2.ProjectInvite.role:type_name -> metalstack.api.v2.ProjectRole + 31, // 4: metalstack.api.v2.ProjectInvite.expires_at:type_name -> google.protobuf.Timestamp + 31, // 5: metalstack.api.v2.ProjectInvite.joined_at:type_name -> google.protobuf.Timestamp + 32, // 6: metalstack.api.v2.ProjectServiceListRequest.labels:type_name -> metalstack.api.v2.Labels 0, // 7: metalstack.api.v2.ProjectServiceListResponse.projects:type_name -> metalstack.api.v2.Project 0, // 8: metalstack.api.v2.ProjectServiceGetResponse.project:type_name -> metalstack.api.v2.Project 1, // 9: metalstack.api.v2.ProjectServiceGetResponse.project_members:type_name -> metalstack.api.v2.ProjectMember - 30, // 10: metalstack.api.v2.ProjectServiceCreateRequest.labels:type_name -> metalstack.api.v2.Labels + 32, // 10: metalstack.api.v2.ProjectServiceCreateRequest.labels:type_name -> metalstack.api.v2.Labels 0, // 11: metalstack.api.v2.ProjectServiceCreateResponse.project:type_name -> metalstack.api.v2.Project 0, // 12: metalstack.api.v2.ProjectServiceDeleteResponse.project:type_name -> metalstack.api.v2.Project - 31, // 13: metalstack.api.v2.ProjectServiceUpdateRequest.update_meta:type_name -> metalstack.api.v2.UpdateMeta - 32, // 14: metalstack.api.v2.ProjectServiceUpdateRequest.labels:type_name -> metalstack.api.v2.UpdateLabels + 33, // 13: metalstack.api.v2.ProjectServiceUpdateRequest.update_meta:type_name -> metalstack.api.v2.UpdateMeta + 34, // 14: metalstack.api.v2.ProjectServiceUpdateRequest.labels:type_name -> metalstack.api.v2.UpdateLabels 0, // 15: metalstack.api.v2.ProjectServiceUpdateResponse.project:type_name -> metalstack.api.v2.Project - 28, // 16: metalstack.api.v2.ProjectServiceInviteRequest.role:type_name -> metalstack.api.v2.ProjectRole + 30, // 16: metalstack.api.v2.ProjectServiceInviteRequest.role:type_name -> metalstack.api.v2.ProjectRole 2, // 17: metalstack.api.v2.ProjectServiceInviteResponse.invite:type_name -> metalstack.api.v2.ProjectInvite 2, // 18: metalstack.api.v2.ProjectServiceInvitesListResponse.invites:type_name -> metalstack.api.v2.ProjectInvite 2, // 19: metalstack.api.v2.ProjectServiceInviteGetResponse.invite:type_name -> metalstack.api.v2.ProjectInvite - 28, // 20: metalstack.api.v2.ProjectServiceUpdateMemberRequest.role:type_name -> metalstack.api.v2.ProjectRole + 30, // 20: metalstack.api.v2.ProjectServiceUpdateMemberRequest.role:type_name -> metalstack.api.v2.ProjectRole 1, // 21: metalstack.api.v2.ProjectServiceUpdateMemberResponse.project_member:type_name -> metalstack.api.v2.ProjectMember 3, // 22: metalstack.api.v2.ProjectService.List:input_type -> metalstack.api.v2.ProjectServiceListRequest 5, // 23: metalstack.api.v2.ProjectService.Get:input_type -> metalstack.api.v2.ProjectServiceGetRequest 7, // 24: metalstack.api.v2.ProjectService.Create:input_type -> metalstack.api.v2.ProjectServiceCreateRequest 9, // 25: metalstack.api.v2.ProjectService.Delete:input_type -> metalstack.api.v2.ProjectServiceDeleteRequest 11, // 26: metalstack.api.v2.ProjectService.Update:input_type -> metalstack.api.v2.ProjectServiceUpdateRequest - 19, // 27: metalstack.api.v2.ProjectService.RemoveMember:input_type -> metalstack.api.v2.ProjectServiceRemoveMemberRequest - 21, // 28: metalstack.api.v2.ProjectService.UpdateMember:input_type -> metalstack.api.v2.ProjectServiceUpdateMemberRequest - 13, // 29: metalstack.api.v2.ProjectService.Invite:input_type -> metalstack.api.v2.ProjectServiceInviteRequest - 23, // 30: metalstack.api.v2.ProjectService.InviteAccept:input_type -> metalstack.api.v2.ProjectServiceInviteAcceptRequest - 25, // 31: metalstack.api.v2.ProjectService.InviteDelete:input_type -> metalstack.api.v2.ProjectServiceInviteDeleteRequest - 15, // 32: metalstack.api.v2.ProjectService.InvitesList:input_type -> metalstack.api.v2.ProjectServiceInvitesListRequest - 17, // 33: metalstack.api.v2.ProjectService.InviteGet:input_type -> metalstack.api.v2.ProjectServiceInviteGetRequest - 4, // 34: metalstack.api.v2.ProjectService.List:output_type -> metalstack.api.v2.ProjectServiceListResponse - 6, // 35: metalstack.api.v2.ProjectService.Get:output_type -> metalstack.api.v2.ProjectServiceGetResponse - 8, // 36: metalstack.api.v2.ProjectService.Create:output_type -> metalstack.api.v2.ProjectServiceCreateResponse - 10, // 37: metalstack.api.v2.ProjectService.Delete:output_type -> metalstack.api.v2.ProjectServiceDeleteResponse - 12, // 38: metalstack.api.v2.ProjectService.Update:output_type -> metalstack.api.v2.ProjectServiceUpdateResponse - 20, // 39: metalstack.api.v2.ProjectService.RemoveMember:output_type -> metalstack.api.v2.ProjectServiceRemoveMemberResponse - 22, // 40: metalstack.api.v2.ProjectService.UpdateMember:output_type -> metalstack.api.v2.ProjectServiceUpdateMemberResponse - 14, // 41: metalstack.api.v2.ProjectService.Invite:output_type -> metalstack.api.v2.ProjectServiceInviteResponse - 24, // 42: metalstack.api.v2.ProjectService.InviteAccept:output_type -> metalstack.api.v2.ProjectServiceInviteAcceptResponse - 26, // 43: metalstack.api.v2.ProjectService.InviteDelete:output_type -> metalstack.api.v2.ProjectServiceInviteDeleteResponse - 16, // 44: metalstack.api.v2.ProjectService.InvitesList:output_type -> metalstack.api.v2.ProjectServiceInvitesListResponse - 18, // 45: metalstack.api.v2.ProjectService.InviteGet:output_type -> metalstack.api.v2.ProjectServiceInviteGetResponse - 34, // [34:46] is the sub-list for method output_type - 22, // [22:34] is the sub-list for method input_type + 19, // 27: metalstack.api.v2.ProjectService.Leave:input_type -> metalstack.api.v2.ProjectServiceLeaveRequest + 21, // 28: metalstack.api.v2.ProjectService.RemoveMember:input_type -> metalstack.api.v2.ProjectServiceRemoveMemberRequest + 23, // 29: metalstack.api.v2.ProjectService.UpdateMember:input_type -> metalstack.api.v2.ProjectServiceUpdateMemberRequest + 13, // 30: metalstack.api.v2.ProjectService.Invite:input_type -> metalstack.api.v2.ProjectServiceInviteRequest + 25, // 31: metalstack.api.v2.ProjectService.InviteAccept:input_type -> metalstack.api.v2.ProjectServiceInviteAcceptRequest + 27, // 32: metalstack.api.v2.ProjectService.InviteDelete:input_type -> metalstack.api.v2.ProjectServiceInviteDeleteRequest + 15, // 33: metalstack.api.v2.ProjectService.InvitesList:input_type -> metalstack.api.v2.ProjectServiceInvitesListRequest + 17, // 34: metalstack.api.v2.ProjectService.InviteGet:input_type -> metalstack.api.v2.ProjectServiceInviteGetRequest + 4, // 35: metalstack.api.v2.ProjectService.List:output_type -> metalstack.api.v2.ProjectServiceListResponse + 6, // 36: metalstack.api.v2.ProjectService.Get:output_type -> metalstack.api.v2.ProjectServiceGetResponse + 8, // 37: metalstack.api.v2.ProjectService.Create:output_type -> metalstack.api.v2.ProjectServiceCreateResponse + 10, // 38: metalstack.api.v2.ProjectService.Delete:output_type -> metalstack.api.v2.ProjectServiceDeleteResponse + 12, // 39: metalstack.api.v2.ProjectService.Update:output_type -> metalstack.api.v2.ProjectServiceUpdateResponse + 20, // 40: metalstack.api.v2.ProjectService.Leave:output_type -> metalstack.api.v2.ProjectServiceLeaveResponse + 22, // 41: metalstack.api.v2.ProjectService.RemoveMember:output_type -> metalstack.api.v2.ProjectServiceRemoveMemberResponse + 24, // 42: metalstack.api.v2.ProjectService.UpdateMember:output_type -> metalstack.api.v2.ProjectServiceUpdateMemberResponse + 14, // 43: metalstack.api.v2.ProjectService.Invite:output_type -> metalstack.api.v2.ProjectServiceInviteResponse + 26, // 44: metalstack.api.v2.ProjectService.InviteAccept:output_type -> metalstack.api.v2.ProjectServiceInviteAcceptResponse + 28, // 45: metalstack.api.v2.ProjectService.InviteDelete:output_type -> metalstack.api.v2.ProjectServiceInviteDeleteResponse + 16, // 46: metalstack.api.v2.ProjectService.InvitesList:output_type -> metalstack.api.v2.ProjectServiceInvitesListResponse + 18, // 47: metalstack.api.v2.ProjectService.InviteGet:output_type -> metalstack.api.v2.ProjectServiceInviteGetResponse + 35, // [35:48] is the sub-list for method output_type + 22, // [22:35] is the sub-list for method input_type 22, // [22:22] is the sub-list for extension type_name 22, // [22:22] is the sub-list for extension extendee 0, // [0:22] is the sub-list for field type_name @@ -1817,7 +1908,7 @@ func file_metalstack_api_v2_project_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_metalstack_api_v2_project_proto_rawDesc), len(file_metalstack_api_v2_project_proto_rawDesc)), NumEnums: 0, - NumMessages: 27, + NumMessages: 29, NumExtensions: 0, NumServices: 1, }, diff --git a/go/metalstack/api/v2/tenant.pb.go b/go/metalstack/api/v2/tenant.pb.go index 89c856be..087f13b0 100644 --- a/go/metalstack/api/v2/tenant.pb.go +++ b/go/metalstack/api/v2/tenant.pb.go @@ -1233,6 +1233,89 @@ func (x *TenantServiceRemoveMemberRequest) GetMember() string { return "" } +// TenantServiceLeaveTenantRequest is used to leave a tenant +type TenantServiceLeaveRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Login of the tenant + Login string `protobuf:"bytes,1,opt,name=login,proto3" json:"login,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TenantServiceLeaveRequest) Reset() { + *x = TenantServiceLeaveRequest{} + mi := &file_metalstack_api_v2_tenant_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TenantServiceLeaveRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TenantServiceLeaveRequest) ProtoMessage() {} + +func (x *TenantServiceLeaveRequest) ProtoReflect() protoreflect.Message { + mi := &file_metalstack_api_v2_tenant_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TenantServiceLeaveRequest.ProtoReflect.Descriptor instead. +func (*TenantServiceLeaveRequest) Descriptor() ([]byte, []int) { + return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{20} +} + +func (x *TenantServiceLeaveRequest) GetLogin() string { + if x != nil { + return x.Login + } + return "" +} + +// TenantServiceLeaveTenantResponse is the response payload to a leave tenant request +type TenantServiceLeaveResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TenantServiceLeaveResponse) Reset() { + *x = TenantServiceLeaveResponse{} + mi := &file_metalstack_api_v2_tenant_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TenantServiceLeaveResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TenantServiceLeaveResponse) ProtoMessage() {} + +func (x *TenantServiceLeaveResponse) ProtoReflect() protoreflect.Message { + mi := &file_metalstack_api_v2_tenant_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TenantServiceLeaveResponse.ProtoReflect.Descriptor instead. +func (*TenantServiceLeaveResponse) Descriptor() ([]byte, []int) { + return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{21} +} + // TenantServiceRemoveMemberResponse is the response payload to a remove member request type TenantServiceRemoveMemberResponse struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -1242,7 +1325,7 @@ type TenantServiceRemoveMemberResponse struct { func (x *TenantServiceRemoveMemberResponse) Reset() { *x = TenantServiceRemoveMemberResponse{} - mi := &file_metalstack_api_v2_tenant_proto_msgTypes[20] + mi := &file_metalstack_api_v2_tenant_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1254,7 +1337,7 @@ func (x *TenantServiceRemoveMemberResponse) String() string { func (*TenantServiceRemoveMemberResponse) ProtoMessage() {} func (x *TenantServiceRemoveMemberResponse) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_tenant_proto_msgTypes[20] + mi := &file_metalstack_api_v2_tenant_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1267,7 +1350,7 @@ func (x *TenantServiceRemoveMemberResponse) ProtoReflect() protoreflect.Message // Deprecated: Use TenantServiceRemoveMemberResponse.ProtoReflect.Descriptor instead. func (*TenantServiceRemoveMemberResponse) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{20} + return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{22} } // TenantServiceInviteAcceptRequest is the request payload to a accept invite request @@ -1281,7 +1364,7 @@ type TenantServiceInviteAcceptRequest struct { func (x *TenantServiceInviteAcceptRequest) Reset() { *x = TenantServiceInviteAcceptRequest{} - mi := &file_metalstack_api_v2_tenant_proto_msgTypes[21] + mi := &file_metalstack_api_v2_tenant_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1293,7 +1376,7 @@ func (x *TenantServiceInviteAcceptRequest) String() string { func (*TenantServiceInviteAcceptRequest) ProtoMessage() {} func (x *TenantServiceInviteAcceptRequest) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_tenant_proto_msgTypes[21] + mi := &file_metalstack_api_v2_tenant_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1306,7 +1389,7 @@ func (x *TenantServiceInviteAcceptRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TenantServiceInviteAcceptRequest.ProtoReflect.Descriptor instead. func (*TenantServiceInviteAcceptRequest) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{21} + return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{23} } func (x *TenantServiceInviteAcceptRequest) GetSecret() string { @@ -1329,7 +1412,7 @@ type TenantServiceInviteAcceptResponse struct { func (x *TenantServiceInviteAcceptResponse) Reset() { *x = TenantServiceInviteAcceptResponse{} - mi := &file_metalstack_api_v2_tenant_proto_msgTypes[22] + mi := &file_metalstack_api_v2_tenant_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1341,7 +1424,7 @@ func (x *TenantServiceInviteAcceptResponse) String() string { func (*TenantServiceInviteAcceptResponse) ProtoMessage() {} func (x *TenantServiceInviteAcceptResponse) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_tenant_proto_msgTypes[22] + mi := &file_metalstack_api_v2_tenant_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1354,7 +1437,7 @@ func (x *TenantServiceInviteAcceptResponse) ProtoReflect() protoreflect.Message // Deprecated: Use TenantServiceInviteAcceptResponse.ProtoReflect.Descriptor instead. func (*TenantServiceInviteAcceptResponse) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{22} + return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{24} } func (x *TenantServiceInviteAcceptResponse) GetTenant() string { @@ -1384,7 +1467,7 @@ type TenantServiceInviteDeleteRequest struct { func (x *TenantServiceInviteDeleteRequest) Reset() { *x = TenantServiceInviteDeleteRequest{} - mi := &file_metalstack_api_v2_tenant_proto_msgTypes[23] + mi := &file_metalstack_api_v2_tenant_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1396,7 +1479,7 @@ func (x *TenantServiceInviteDeleteRequest) String() string { func (*TenantServiceInviteDeleteRequest) ProtoMessage() {} func (x *TenantServiceInviteDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_tenant_proto_msgTypes[23] + mi := &file_metalstack_api_v2_tenant_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1409,7 +1492,7 @@ func (x *TenantServiceInviteDeleteRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TenantServiceInviteDeleteRequest.ProtoReflect.Descriptor instead. func (*TenantServiceInviteDeleteRequest) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{23} + return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{25} } func (x *TenantServiceInviteDeleteRequest) GetLogin() string { @@ -1435,7 +1518,7 @@ type TenantServiceInviteDeleteResponse struct { func (x *TenantServiceInviteDeleteResponse) Reset() { *x = TenantServiceInviteDeleteResponse{} - mi := &file_metalstack_api_v2_tenant_proto_msgTypes[24] + mi := &file_metalstack_api_v2_tenant_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1447,7 +1530,7 @@ func (x *TenantServiceInviteDeleteResponse) String() string { func (*TenantServiceInviteDeleteResponse) ProtoMessage() {} func (x *TenantServiceInviteDeleteResponse) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_tenant_proto_msgTypes[24] + mi := &file_metalstack_api_v2_tenant_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1460,7 +1543,7 @@ func (x *TenantServiceInviteDeleteResponse) ProtoReflect() protoreflect.Message // Deprecated: Use TenantServiceInviteDeleteResponse.ProtoReflect.Descriptor instead. func (*TenantServiceInviteDeleteResponse) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{24} + return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{26} } // TenantServiceUpdateMemberRequest is used to update a member from a tenant @@ -1478,7 +1561,7 @@ type TenantServiceUpdateMemberRequest struct { func (x *TenantServiceUpdateMemberRequest) Reset() { *x = TenantServiceUpdateMemberRequest{} - mi := &file_metalstack_api_v2_tenant_proto_msgTypes[25] + mi := &file_metalstack_api_v2_tenant_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1490,7 +1573,7 @@ func (x *TenantServiceUpdateMemberRequest) String() string { func (*TenantServiceUpdateMemberRequest) ProtoMessage() {} func (x *TenantServiceUpdateMemberRequest) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_tenant_proto_msgTypes[25] + mi := &file_metalstack_api_v2_tenant_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1503,7 +1586,7 @@ func (x *TenantServiceUpdateMemberRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TenantServiceUpdateMemberRequest.ProtoReflect.Descriptor instead. func (*TenantServiceUpdateMemberRequest) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{25} + return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{27} } func (x *TenantServiceUpdateMemberRequest) GetLogin() string { @@ -1538,7 +1621,7 @@ type TenantServiceUpdateMemberResponse struct { func (x *TenantServiceUpdateMemberResponse) Reset() { *x = TenantServiceUpdateMemberResponse{} - mi := &file_metalstack_api_v2_tenant_proto_msgTypes[26] + mi := &file_metalstack_api_v2_tenant_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1550,7 +1633,7 @@ func (x *TenantServiceUpdateMemberResponse) String() string { func (*TenantServiceUpdateMemberResponse) ProtoMessage() {} func (x *TenantServiceUpdateMemberResponse) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_tenant_proto_msgTypes[26] + mi := &file_metalstack_api_v2_tenant_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1563,7 +1646,7 @@ func (x *TenantServiceUpdateMemberResponse) ProtoReflect() protoreflect.Message // Deprecated: Use TenantServiceUpdateMemberResponse.ProtoReflect.Descriptor instead. func (*TenantServiceUpdateMemberResponse) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{26} + return file_metalstack_api_v2_tenant_proto_rawDescGZIP(), []int{28} } func (x *TenantServiceUpdateMemberResponse) GetTenantMember() *TenantMember { @@ -1670,7 +1753,10 @@ const file_metalstack_api_v2_tenant_proto_rawDesc = "" + "\x06invite\x18\x01 \x01(\v2\x1f.metalstack.api.v2.TenantInviteR\x06invite\"P\n" + " TenantServiceRemoveMemberRequest\x12\x14\n" + "\x05login\x18\x01 \x01(\tR\x05login\x12\x16\n" + - "\x06member\x18\x02 \x01(\tR\x06member\"#\n" + + "\x06member\x18\x02 \x01(\tR\x06member\"1\n" + + "\x19TenantServiceLeaveRequest\x12\x14\n" + + "\x05login\x18\x01 \x01(\tR\x05login\"\x1c\n" + + "\x1aTenantServiceLeaveResponse\"#\n" + "!TenantServiceRemoveMemberResponse\":\n" + " TenantServiceInviteAcceptRequest\x12\x16\n" + "\x06secret\x18\x01 \x01(\tR\x06secret\"\\\n" + @@ -1687,7 +1773,7 @@ const file_metalstack_api_v2_tenant_proto_rawDesc = "" + "\x06member\x18\x02 \x01(\tR\x06member\x12;\n" + "\x04role\x18\x03 \x01(\x0e2\x1d.metalstack.api.v2.TenantRoleB\b\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"i\n" + "!TenantServiceUpdateMemberResponse\x12D\n" + - "\rtenant_member\x18\x01 \x01(\v2\x1f.metalstack.api.v2.TenantMemberR\ftenantMember2\xd6\v\n" + + "\rtenant_member\x18\x01 \x01(\v2\x1f.metalstack.api.v2.TenantMemberR\ftenantMember2\xc7\f\n" + "\rTenantService\x12q\n" + "\x06Create\x12-.metalstack.api.v2.TenantServiceCreateRequest\x1a..metalstack.api.v2.TenantServiceCreateResponse\"\b\xd8\xf3\x18\x03\xe0\xf3\x18\x01\x12k\n" + "\x04List\x12+.metalstack.api.v2.TenantServiceListRequest\x1a,.metalstack.api.v2.TenantServiceListResponse\"\b\xd8\xf3\x18\x03\xe0\xf3\x18\x02\x12l\n" + @@ -1695,7 +1781,8 @@ const file_metalstack_api_v2_tenant_proto_rawDesc = "" + "\x06Update\x12-.metalstack.api.v2.TenantServiceUpdateRequest\x1a..metalstack.api.v2.TenantServiceUpdateResponse\"\n" + "\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12s\n" + "\x06Delete\x12-.metalstack.api.v2.TenantServiceDeleteRequest\x1a..metalstack.api.v2.TenantServiceDeleteResponse\"\n" + - "\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12\x84\x01\n" + + "\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12o\n" + + "\x05Leave\x12,.metalstack.api.v2.TenantServiceLeaveRequest\x1a-.metalstack.api.v2.TenantServiceLeaveResponse\"\t\xc2\xf3\x18\x01\x03\xe0\xf3\x18\x01\x12\x84\x01\n" + "\fRemoveMember\x123.metalstack.api.v2.TenantServiceRemoveMemberRequest\x1a4.metalstack.api.v2.TenantServiceRemoveMemberResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x84\x01\n" + "\fUpdateMember\x123.metalstack.api.v2.TenantServiceUpdateMemberRequest\x1a4.metalstack.api.v2.TenantServiceUpdateMemberResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12r\n" + "\x06Invite\x12-.metalstack.api.v2.TenantServiceInviteRequest\x1a..metalstack.api.v2.TenantServiceInviteResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x83\x01\n" + @@ -1717,7 +1804,7 @@ func file_metalstack_api_v2_tenant_proto_rawDescGZIP() []byte { return file_metalstack_api_v2_tenant_proto_rawDescData } -var file_metalstack_api_v2_tenant_proto_msgTypes = make([]protoimpl.MessageInfo, 27) +var file_metalstack_api_v2_tenant_proto_msgTypes = make([]protoimpl.MessageInfo, 29) var file_metalstack_api_v2_tenant_proto_goTypes = []any{ (*Tenant)(nil), // 0: metalstack.api.v2.Tenant (*TenantMember)(nil), // 1: metalstack.api.v2.TenantMember @@ -1739,69 +1826,73 @@ var file_metalstack_api_v2_tenant_proto_goTypes = []any{ (*TenantServiceInviteGetRequest)(nil), // 17: metalstack.api.v2.TenantServiceInviteGetRequest (*TenantServiceInviteGetResponse)(nil), // 18: metalstack.api.v2.TenantServiceInviteGetResponse (*TenantServiceRemoveMemberRequest)(nil), // 19: metalstack.api.v2.TenantServiceRemoveMemberRequest - (*TenantServiceRemoveMemberResponse)(nil), // 20: metalstack.api.v2.TenantServiceRemoveMemberResponse - (*TenantServiceInviteAcceptRequest)(nil), // 21: metalstack.api.v2.TenantServiceInviteAcceptRequest - (*TenantServiceInviteAcceptResponse)(nil), // 22: metalstack.api.v2.TenantServiceInviteAcceptResponse - (*TenantServiceInviteDeleteRequest)(nil), // 23: metalstack.api.v2.TenantServiceInviteDeleteRequest - (*TenantServiceInviteDeleteResponse)(nil), // 24: metalstack.api.v2.TenantServiceInviteDeleteResponse - (*TenantServiceUpdateMemberRequest)(nil), // 25: metalstack.api.v2.TenantServiceUpdateMemberRequest - (*TenantServiceUpdateMemberResponse)(nil), // 26: metalstack.api.v2.TenantServiceUpdateMemberResponse - (*Meta)(nil), // 27: metalstack.api.v2.Meta - (TenantRole)(0), // 28: metalstack.api.v2.TenantRole - (*timestamppb.Timestamp)(nil), // 29: google.protobuf.Timestamp - (*Labels)(nil), // 30: metalstack.api.v2.Labels - (*UpdateMeta)(nil), // 31: metalstack.api.v2.UpdateMeta - (*UpdateLabels)(nil), // 32: metalstack.api.v2.UpdateLabels + (*TenantServiceLeaveRequest)(nil), // 20: metalstack.api.v2.TenantServiceLeaveRequest + (*TenantServiceLeaveResponse)(nil), // 21: metalstack.api.v2.TenantServiceLeaveResponse + (*TenantServiceRemoveMemberResponse)(nil), // 22: metalstack.api.v2.TenantServiceRemoveMemberResponse + (*TenantServiceInviteAcceptRequest)(nil), // 23: metalstack.api.v2.TenantServiceInviteAcceptRequest + (*TenantServiceInviteAcceptResponse)(nil), // 24: metalstack.api.v2.TenantServiceInviteAcceptResponse + (*TenantServiceInviteDeleteRequest)(nil), // 25: metalstack.api.v2.TenantServiceInviteDeleteRequest + (*TenantServiceInviteDeleteResponse)(nil), // 26: metalstack.api.v2.TenantServiceInviteDeleteResponse + (*TenantServiceUpdateMemberRequest)(nil), // 27: metalstack.api.v2.TenantServiceUpdateMemberRequest + (*TenantServiceUpdateMemberResponse)(nil), // 28: metalstack.api.v2.TenantServiceUpdateMemberResponse + (*Meta)(nil), // 29: metalstack.api.v2.Meta + (TenantRole)(0), // 30: metalstack.api.v2.TenantRole + (*timestamppb.Timestamp)(nil), // 31: google.protobuf.Timestamp + (*Labels)(nil), // 32: metalstack.api.v2.Labels + (*UpdateMeta)(nil), // 33: metalstack.api.v2.UpdateMeta + (*UpdateLabels)(nil), // 34: metalstack.api.v2.UpdateLabels } var file_metalstack_api_v2_tenant_proto_depIdxs = []int32{ - 27, // 0: metalstack.api.v2.Tenant.meta:type_name -> metalstack.api.v2.Meta - 28, // 1: metalstack.api.v2.TenantMember.role:type_name -> metalstack.api.v2.TenantRole - 29, // 2: metalstack.api.v2.TenantMember.created_at:type_name -> google.protobuf.Timestamp - 28, // 3: metalstack.api.v2.TenantInvite.role:type_name -> metalstack.api.v2.TenantRole - 29, // 4: metalstack.api.v2.TenantInvite.expires_at:type_name -> google.protobuf.Timestamp - 29, // 5: metalstack.api.v2.TenantInvite.joined_at:type_name -> google.protobuf.Timestamp - 30, // 6: metalstack.api.v2.TenantServiceListRequest.labels:type_name -> metalstack.api.v2.Labels - 30, // 7: metalstack.api.v2.TenantServiceCreateRequest.labels:type_name -> metalstack.api.v2.Labels - 31, // 8: metalstack.api.v2.TenantServiceUpdateRequest.update_meta:type_name -> metalstack.api.v2.UpdateMeta - 32, // 9: metalstack.api.v2.TenantServiceUpdateRequest.labels:type_name -> metalstack.api.v2.UpdateLabels + 29, // 0: metalstack.api.v2.Tenant.meta:type_name -> metalstack.api.v2.Meta + 30, // 1: metalstack.api.v2.TenantMember.role:type_name -> metalstack.api.v2.TenantRole + 31, // 2: metalstack.api.v2.TenantMember.created_at:type_name -> google.protobuf.Timestamp + 30, // 3: metalstack.api.v2.TenantInvite.role:type_name -> metalstack.api.v2.TenantRole + 31, // 4: metalstack.api.v2.TenantInvite.expires_at:type_name -> google.protobuf.Timestamp + 31, // 5: metalstack.api.v2.TenantInvite.joined_at:type_name -> google.protobuf.Timestamp + 32, // 6: metalstack.api.v2.TenantServiceListRequest.labels:type_name -> metalstack.api.v2.Labels + 32, // 7: metalstack.api.v2.TenantServiceCreateRequest.labels:type_name -> metalstack.api.v2.Labels + 33, // 8: metalstack.api.v2.TenantServiceUpdateRequest.update_meta:type_name -> metalstack.api.v2.UpdateMeta + 34, // 9: metalstack.api.v2.TenantServiceUpdateRequest.labels:type_name -> metalstack.api.v2.UpdateLabels 0, // 10: metalstack.api.v2.TenantServiceGetResponse.tenant:type_name -> metalstack.api.v2.Tenant 1, // 11: metalstack.api.v2.TenantServiceGetResponse.tenant_members:type_name -> metalstack.api.v2.TenantMember 0, // 12: metalstack.api.v2.TenantServiceListResponse.tenants:type_name -> metalstack.api.v2.Tenant 0, // 13: metalstack.api.v2.TenantServiceCreateResponse.tenant:type_name -> metalstack.api.v2.Tenant 0, // 14: metalstack.api.v2.TenantServiceUpdateResponse.tenant:type_name -> metalstack.api.v2.Tenant 0, // 15: metalstack.api.v2.TenantServiceDeleteResponse.tenant:type_name -> metalstack.api.v2.Tenant - 28, // 16: metalstack.api.v2.TenantServiceInviteRequest.role:type_name -> metalstack.api.v2.TenantRole + 30, // 16: metalstack.api.v2.TenantServiceInviteRequest.role:type_name -> metalstack.api.v2.TenantRole 2, // 17: metalstack.api.v2.TenantServiceInviteResponse.invite:type_name -> metalstack.api.v2.TenantInvite 2, // 18: metalstack.api.v2.TenantServiceInvitesListResponse.invites:type_name -> metalstack.api.v2.TenantInvite 2, // 19: metalstack.api.v2.TenantServiceInviteGetResponse.invite:type_name -> metalstack.api.v2.TenantInvite - 28, // 20: metalstack.api.v2.TenantServiceUpdateMemberRequest.role:type_name -> metalstack.api.v2.TenantRole + 30, // 20: metalstack.api.v2.TenantServiceUpdateMemberRequest.role:type_name -> metalstack.api.v2.TenantRole 1, // 21: metalstack.api.v2.TenantServiceUpdateMemberResponse.tenant_member:type_name -> metalstack.api.v2.TenantMember 5, // 22: metalstack.api.v2.TenantService.Create:input_type -> metalstack.api.v2.TenantServiceCreateRequest 3, // 23: metalstack.api.v2.TenantService.List:input_type -> metalstack.api.v2.TenantServiceListRequest 4, // 24: metalstack.api.v2.TenantService.Get:input_type -> metalstack.api.v2.TenantServiceGetRequest 6, // 25: metalstack.api.v2.TenantService.Update:input_type -> metalstack.api.v2.TenantServiceUpdateRequest 7, // 26: metalstack.api.v2.TenantService.Delete:input_type -> metalstack.api.v2.TenantServiceDeleteRequest - 19, // 27: metalstack.api.v2.TenantService.RemoveMember:input_type -> metalstack.api.v2.TenantServiceRemoveMemberRequest - 25, // 28: metalstack.api.v2.TenantService.UpdateMember:input_type -> metalstack.api.v2.TenantServiceUpdateMemberRequest - 13, // 29: metalstack.api.v2.TenantService.Invite:input_type -> metalstack.api.v2.TenantServiceInviteRequest - 21, // 30: metalstack.api.v2.TenantService.InviteAccept:input_type -> metalstack.api.v2.TenantServiceInviteAcceptRequest - 23, // 31: metalstack.api.v2.TenantService.InviteDelete:input_type -> metalstack.api.v2.TenantServiceInviteDeleteRequest - 15, // 32: metalstack.api.v2.TenantService.InvitesList:input_type -> metalstack.api.v2.TenantServiceInvitesListRequest - 17, // 33: metalstack.api.v2.TenantService.InviteGet:input_type -> metalstack.api.v2.TenantServiceInviteGetRequest - 10, // 34: metalstack.api.v2.TenantService.Create:output_type -> metalstack.api.v2.TenantServiceCreateResponse - 9, // 35: metalstack.api.v2.TenantService.List:output_type -> metalstack.api.v2.TenantServiceListResponse - 8, // 36: metalstack.api.v2.TenantService.Get:output_type -> metalstack.api.v2.TenantServiceGetResponse - 11, // 37: metalstack.api.v2.TenantService.Update:output_type -> metalstack.api.v2.TenantServiceUpdateResponse - 12, // 38: metalstack.api.v2.TenantService.Delete:output_type -> metalstack.api.v2.TenantServiceDeleteResponse - 20, // 39: metalstack.api.v2.TenantService.RemoveMember:output_type -> metalstack.api.v2.TenantServiceRemoveMemberResponse - 26, // 40: metalstack.api.v2.TenantService.UpdateMember:output_type -> metalstack.api.v2.TenantServiceUpdateMemberResponse - 14, // 41: metalstack.api.v2.TenantService.Invite:output_type -> metalstack.api.v2.TenantServiceInviteResponse - 22, // 42: metalstack.api.v2.TenantService.InviteAccept:output_type -> metalstack.api.v2.TenantServiceInviteAcceptResponse - 24, // 43: metalstack.api.v2.TenantService.InviteDelete:output_type -> metalstack.api.v2.TenantServiceInviteDeleteResponse - 16, // 44: metalstack.api.v2.TenantService.InvitesList:output_type -> metalstack.api.v2.TenantServiceInvitesListResponse - 18, // 45: metalstack.api.v2.TenantService.InviteGet:output_type -> metalstack.api.v2.TenantServiceInviteGetResponse - 34, // [34:46] is the sub-list for method output_type - 22, // [22:34] is the sub-list for method input_type + 20, // 27: metalstack.api.v2.TenantService.Leave:input_type -> metalstack.api.v2.TenantServiceLeaveRequest + 19, // 28: metalstack.api.v2.TenantService.RemoveMember:input_type -> metalstack.api.v2.TenantServiceRemoveMemberRequest + 27, // 29: metalstack.api.v2.TenantService.UpdateMember:input_type -> metalstack.api.v2.TenantServiceUpdateMemberRequest + 13, // 30: metalstack.api.v2.TenantService.Invite:input_type -> metalstack.api.v2.TenantServiceInviteRequest + 23, // 31: metalstack.api.v2.TenantService.InviteAccept:input_type -> metalstack.api.v2.TenantServiceInviteAcceptRequest + 25, // 32: metalstack.api.v2.TenantService.InviteDelete:input_type -> metalstack.api.v2.TenantServiceInviteDeleteRequest + 15, // 33: metalstack.api.v2.TenantService.InvitesList:input_type -> metalstack.api.v2.TenantServiceInvitesListRequest + 17, // 34: metalstack.api.v2.TenantService.InviteGet:input_type -> metalstack.api.v2.TenantServiceInviteGetRequest + 10, // 35: metalstack.api.v2.TenantService.Create:output_type -> metalstack.api.v2.TenantServiceCreateResponse + 9, // 36: metalstack.api.v2.TenantService.List:output_type -> metalstack.api.v2.TenantServiceListResponse + 8, // 37: metalstack.api.v2.TenantService.Get:output_type -> metalstack.api.v2.TenantServiceGetResponse + 11, // 38: metalstack.api.v2.TenantService.Update:output_type -> metalstack.api.v2.TenantServiceUpdateResponse + 12, // 39: metalstack.api.v2.TenantService.Delete:output_type -> metalstack.api.v2.TenantServiceDeleteResponse + 21, // 40: metalstack.api.v2.TenantService.Leave:output_type -> metalstack.api.v2.TenantServiceLeaveResponse + 22, // 41: metalstack.api.v2.TenantService.RemoveMember:output_type -> metalstack.api.v2.TenantServiceRemoveMemberResponse + 28, // 42: metalstack.api.v2.TenantService.UpdateMember:output_type -> metalstack.api.v2.TenantServiceUpdateMemberResponse + 14, // 43: metalstack.api.v2.TenantService.Invite:output_type -> metalstack.api.v2.TenantServiceInviteResponse + 24, // 44: metalstack.api.v2.TenantService.InviteAccept:output_type -> metalstack.api.v2.TenantServiceInviteAcceptResponse + 26, // 45: metalstack.api.v2.TenantService.InviteDelete:output_type -> metalstack.api.v2.TenantServiceInviteDeleteResponse + 16, // 46: metalstack.api.v2.TenantService.InvitesList:output_type -> metalstack.api.v2.TenantServiceInvitesListResponse + 18, // 47: metalstack.api.v2.TenantService.InviteGet:output_type -> metalstack.api.v2.TenantServiceInviteGetResponse + 35, // [35:48] is the sub-list for method output_type + 22, // [22:35] is the sub-list for method input_type 22, // [22:22] is the sub-list for extension type_name 22, // [22:22] is the sub-list for extension extendee 0, // [0:22] is the sub-list for field type_name @@ -1823,7 +1914,7 @@ func file_metalstack_api_v2_tenant_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_metalstack_api_v2_tenant_proto_rawDesc), len(file_metalstack_api_v2_tenant_proto_rawDesc)), NumEnums: 0, - NumMessages: 27, + NumMessages: 29, NumExtensions: 0, NumServices: 1, }, diff --git a/go/permissions/servicepermissions.go b/go/permissions/servicepermissions.go index 3def2b90..b132fa84 100755 --- a/go/permissions/servicepermissions.go +++ b/go/permissions/servicepermissions.go @@ -122,6 +122,7 @@ func GetServicePermissions() *ServicePermissions { }, "TENANT_ROLE_VIEWER": []string{ "/metalstack.api.v2.TenantService/Get", + "/metalstack.api.v2.TenantService/Leave", }, }, Project: Project{ @@ -180,6 +181,7 @@ func GetServicePermissions() *ServicePermissions { "/metalstack.api.v2.NetworkService/List", "/metalstack.api.v2.NetworkService/ListBaseNetworks", "/metalstack.api.v2.ProjectService/Get", + "/metalstack.api.v2.ProjectService/Leave", }, }, }, @@ -251,6 +253,7 @@ func GetServicePermissions() *ServicePermissions { "/metalstack.api.v2.ProjectService/InviteDelete": true, "/metalstack.api.v2.ProjectService/InviteGet": true, "/metalstack.api.v2.ProjectService/InvitesList": true, + "/metalstack.api.v2.ProjectService/Leave": true, "/metalstack.api.v2.ProjectService/List": true, "/metalstack.api.v2.ProjectService/RemoveMember": true, "/metalstack.api.v2.ProjectService/Update": true, @@ -265,6 +268,7 @@ func GetServicePermissions() *ServicePermissions { "/metalstack.api.v2.TenantService/InviteDelete": true, "/metalstack.api.v2.TenantService/InviteGet": true, "/metalstack.api.v2.TenantService/InvitesList": true, + "/metalstack.api.v2.TenantService/Leave": true, "/metalstack.api.v2.TenantService/List": true, "/metalstack.api.v2.TenantService/RemoveMember": true, "/metalstack.api.v2.TenantService/Update": true, @@ -364,6 +368,7 @@ func GetServicePermissions() *ServicePermissions { "/metalstack.api.v2.TenantService/Invite": true, "/metalstack.api.v2.TenantService/InviteDelete": true, "/metalstack.api.v2.TenantService/InvitesList": true, + "/metalstack.api.v2.TenantService/Leave": true, "/metalstack.api.v2.TenantService/RemoveMember": true, "/metalstack.api.v2.TenantService/Update": true, "/metalstack.api.v2.TenantService/UpdateMember": true, @@ -390,6 +395,7 @@ func GetServicePermissions() *ServicePermissions { "/metalstack.api.v2.ProjectService/Invite": true, "/metalstack.api.v2.ProjectService/InviteDelete": true, "/metalstack.api.v2.ProjectService/InvitesList": true, + "/metalstack.api.v2.ProjectService/Leave": true, "/metalstack.api.v2.ProjectService/RemoveMember": true, "/metalstack.api.v2.ProjectService/Update": true, "/metalstack.api.v2.ProjectService/UpdateMember": true, @@ -463,6 +469,7 @@ func GetServicePermissions() *ServicePermissions { "/metalstack.api.v2.ProjectService/InviteDelete": true, "/metalstack.api.v2.ProjectService/InviteGet": false, "/metalstack.api.v2.ProjectService/InvitesList": false, + "/metalstack.api.v2.ProjectService/Leave": true, "/metalstack.api.v2.ProjectService/List": false, "/metalstack.api.v2.ProjectService/RemoveMember": true, "/metalstack.api.v2.ProjectService/Update": true, @@ -477,6 +484,7 @@ func GetServicePermissions() *ServicePermissions { "/metalstack.api.v2.TenantService/InviteDelete": true, "/metalstack.api.v2.TenantService/InviteGet": false, "/metalstack.api.v2.TenantService/InvitesList": false, + "/metalstack.api.v2.TenantService/Leave": true, "/metalstack.api.v2.TenantService/List": false, "/metalstack.api.v2.TenantService/RemoveMember": true, "/metalstack.api.v2.TenantService/Update": true, diff --git a/go/tests/mocks/metalstack/api/v2/apiv2connect/ProjectServiceClient.go b/go/tests/mocks/metalstack/api/v2/apiv2connect/ProjectServiceClient.go index 380999bc..cf9a4e64 100644 --- a/go/tests/mocks/metalstack/api/v2/apiv2connect/ProjectServiceClient.go +++ b/go/tests/mocks/metalstack/api/v2/apiv2connect/ProjectServiceClient.go @@ -255,6 +255,36 @@ func (_m *ProjectServiceClient) InvitesList(_a0 context.Context, _a1 *apiv2.Proj return r0, r1 } +// Leave provides a mock function with given fields: _a0, _a1 +func (_m *ProjectServiceClient) Leave(_a0 context.Context, _a1 *apiv2.ProjectServiceLeaveRequest) (*apiv2.ProjectServiceLeaveResponse, error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Leave") + } + + var r0 *apiv2.ProjectServiceLeaveResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *apiv2.ProjectServiceLeaveRequest) (*apiv2.ProjectServiceLeaveResponse, error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *apiv2.ProjectServiceLeaveRequest) *apiv2.ProjectServiceLeaveResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*apiv2.ProjectServiceLeaveResponse) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *apiv2.ProjectServiceLeaveRequest) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + // List provides a mock function with given fields: _a0, _a1 func (_m *ProjectServiceClient) List(_a0 context.Context, _a1 *apiv2.ProjectServiceListRequest) (*apiv2.ProjectServiceListResponse, error) { ret := _m.Called(_a0, _a1) diff --git a/go/tests/mocks/metalstack/api/v2/apiv2connect/ProjectServiceHandler.go b/go/tests/mocks/metalstack/api/v2/apiv2connect/ProjectServiceHandler.go index 1f1ad021..7b6b8472 100644 --- a/go/tests/mocks/metalstack/api/v2/apiv2connect/ProjectServiceHandler.go +++ b/go/tests/mocks/metalstack/api/v2/apiv2connect/ProjectServiceHandler.go @@ -255,6 +255,36 @@ func (_m *ProjectServiceHandler) InvitesList(_a0 context.Context, _a1 *apiv2.Pro return r0, r1 } +// Leave provides a mock function with given fields: _a0, _a1 +func (_m *ProjectServiceHandler) Leave(_a0 context.Context, _a1 *apiv2.ProjectServiceLeaveRequest) (*apiv2.ProjectServiceLeaveResponse, error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Leave") + } + + var r0 *apiv2.ProjectServiceLeaveResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *apiv2.ProjectServiceLeaveRequest) (*apiv2.ProjectServiceLeaveResponse, error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *apiv2.ProjectServiceLeaveRequest) *apiv2.ProjectServiceLeaveResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*apiv2.ProjectServiceLeaveResponse) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *apiv2.ProjectServiceLeaveRequest) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + // List provides a mock function with given fields: _a0, _a1 func (_m *ProjectServiceHandler) List(_a0 context.Context, _a1 *apiv2.ProjectServiceListRequest) (*apiv2.ProjectServiceListResponse, error) { ret := _m.Called(_a0, _a1) diff --git a/go/tests/mocks/metalstack/api/v2/apiv2connect/TenantServiceClient.go b/go/tests/mocks/metalstack/api/v2/apiv2connect/TenantServiceClient.go index 3d45bde6..b78d0137 100644 --- a/go/tests/mocks/metalstack/api/v2/apiv2connect/TenantServiceClient.go +++ b/go/tests/mocks/metalstack/api/v2/apiv2connect/TenantServiceClient.go @@ -255,6 +255,36 @@ func (_m *TenantServiceClient) InvitesList(_a0 context.Context, _a1 *apiv2.Tenan return r0, r1 } +// Leave provides a mock function with given fields: _a0, _a1 +func (_m *TenantServiceClient) Leave(_a0 context.Context, _a1 *apiv2.TenantServiceLeaveRequest) (*apiv2.TenantServiceLeaveResponse, error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Leave") + } + + var r0 *apiv2.TenantServiceLeaveResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *apiv2.TenantServiceLeaveRequest) (*apiv2.TenantServiceLeaveResponse, error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *apiv2.TenantServiceLeaveRequest) *apiv2.TenantServiceLeaveResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*apiv2.TenantServiceLeaveResponse) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *apiv2.TenantServiceLeaveRequest) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + // List provides a mock function with given fields: _a0, _a1 func (_m *TenantServiceClient) List(_a0 context.Context, _a1 *apiv2.TenantServiceListRequest) (*apiv2.TenantServiceListResponse, error) { ret := _m.Called(_a0, _a1) diff --git a/go/tests/mocks/metalstack/api/v2/apiv2connect/TenantServiceHandler.go b/go/tests/mocks/metalstack/api/v2/apiv2connect/TenantServiceHandler.go index 68746aca..68bc9898 100644 --- a/go/tests/mocks/metalstack/api/v2/apiv2connect/TenantServiceHandler.go +++ b/go/tests/mocks/metalstack/api/v2/apiv2connect/TenantServiceHandler.go @@ -255,6 +255,36 @@ func (_m *TenantServiceHandler) InvitesList(_a0 context.Context, _a1 *apiv2.Tena return r0, r1 } +// Leave provides a mock function with given fields: _a0, _a1 +func (_m *TenantServiceHandler) Leave(_a0 context.Context, _a1 *apiv2.TenantServiceLeaveRequest) (*apiv2.TenantServiceLeaveResponse, error) { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Leave") + } + + var r0 *apiv2.TenantServiceLeaveResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *apiv2.TenantServiceLeaveRequest) (*apiv2.TenantServiceLeaveResponse, error)); ok { + return rf(_a0, _a1) + } + if rf, ok := ret.Get(0).(func(context.Context, *apiv2.TenantServiceLeaveRequest) *apiv2.TenantServiceLeaveResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*apiv2.TenantServiceLeaveResponse) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *apiv2.TenantServiceLeaveRequest) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + // List provides a mock function with given fields: _a0, _a1 func (_m *TenantServiceHandler) List(_a0 context.Context, _a1 *apiv2.TenantServiceListRequest) (*apiv2.TenantServiceListResponse, error) { ret := _m.Called(_a0, _a1) diff --git a/proto/metalstack/api/v2/project.proto b/proto/metalstack/api/v2/project.proto index 8b261fab..f44d2f54 100644 --- a/proto/metalstack/api/v2/project.proto +++ b/proto/metalstack/api/v2/project.proto @@ -38,6 +38,11 @@ service ProjectService { option (project_roles) = PROJECT_ROLE_EDITOR; option (auditing) = AUDITING_INCLUDED; } + // Leave project + rpc Leave(ProjectServiceLeaveRequest) returns (ProjectServiceLeaveResponse) { + option (project_roles) = PROJECT_ROLE_VIEWER; + option (auditing) = AUDITING_INCLUDED; + } // RemoveMember remove a user from a project rpc RemoveMember(ProjectServiceRemoveMemberRequest) returns (ProjectServiceRemoveMemberResponse) { option (project_roles) = PROJECT_ROLE_OWNER; @@ -262,6 +267,15 @@ message ProjectServiceInviteGetResponse { ProjectInvite invite = 1; } +// ProjectServiceLeaveRequest is used to leave a project +message ProjectServiceLeaveRequest { + // Project is the uuid of the project + string project = 1 [(buf.validate.field).string.uuid = true]; +} + +// ProjectServiceLeaveResponse is the response payload to a leave project request +message ProjectServiceLeaveResponse {} + // ProjectServiceRemoveMemberRequest is used to remove a member from a project message ProjectServiceRemoveMemberRequest { // Project is the uuid of the project diff --git a/proto/metalstack/api/v2/tenant.proto b/proto/metalstack/api/v2/tenant.proto index 79c5ad19..32d631fa 100644 --- a/proto/metalstack/api/v2/tenant.proto +++ b/proto/metalstack/api/v2/tenant.proto @@ -40,6 +40,12 @@ service TenantService { option (auditing) = AUDITING_INCLUDED; } + // Leave remove a member of a tenant + rpc Leave(TenantServiceLeaveRequest) returns (TenantServiceLeaveResponse) { + option (tenant_roles) = TENANT_ROLE_VIEWER; + option (auditing) = AUDITING_INCLUDED; + } + // RemoveMember remove a member of a tenant rpc RemoveMember(TenantServiceRemoveMemberRequest) returns (TenantServiceRemoveMemberResponse) { option (tenant_roles) = TENANT_ROLE_OWNER; @@ -265,6 +271,15 @@ message TenantServiceRemoveMemberRequest { string member = 2; } +// TenantServiceLeaveTenantRequest is used to leave a tenant +message TenantServiceLeaveRequest { + // Login of the tenant + string login = 1; +} + +// TenantServiceLeaveTenantResponse is the response payload to a leave tenant request +message TenantServiceLeaveResponse {} + // TenantServiceRemoveMemberResponse is the response payload to a remove member request message TenantServiceRemoveMemberResponse {} diff --git a/python/metalstack/api/v2/project_connect.py b/python/metalstack/api/v2/project_connect.py index 351fe264..3bf2a913 100644 --- a/python/metalstack/api/v2/project_connect.py +++ b/python/metalstack/api/v2/project_connect.py @@ -31,6 +31,9 @@ async def delete(self, request: metalstack_dot_api_dot_v2_dot_project__pb2.Proje async def update(self, request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceUpdateRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceUpdateResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + async def leave(self, request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + async def remove_member(self, request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceRemoveMemberRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceRemoveMemberResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") @@ -107,6 +110,16 @@ def __init__(self, service: ProjectService, *, interceptors: Iterable[Intercepto ), function=service.update, ), + "/metalstack.api.v2.ProjectService/Leave": Endpoint.unary( + method=MethodInfo( + name="Leave", + service_name="metalstack.api.v2.ProjectService", + input=metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveRequest, + output=metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.leave, + ), "/metalstack.api.v2.ProjectService/RemoveMember": Endpoint.unary( method=MethodInfo( name="RemoveMember", @@ -289,6 +302,26 @@ async def update( timeout_ms=timeout_ms, ) + async def leave( + self, + request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="Leave", + service_name="metalstack.api.v2.ProjectService", + input=metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveRequest, + output=metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + async def remove_member( self, request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceRemoveMemberRequest, @@ -441,6 +474,8 @@ def delete(self, request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") def update(self, request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceUpdateRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceUpdateResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def leave(self, request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") def remove_member(self, request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceRemoveMemberRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceRemoveMemberResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") def update_member(self, request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceUpdateMemberRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceUpdateMemberResponse: @@ -511,6 +546,16 @@ def __init__(self, service: ProjectServiceSync, interceptors: Iterable[Intercept ), function=service.update, ), + "/metalstack.api.v2.ProjectService/Leave": EndpointSync.unary( + method=MethodInfo( + name="Leave", + service_name="metalstack.api.v2.ProjectService", + input=metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveRequest, + output=metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.leave, + ), "/metalstack.api.v2.ProjectService/RemoveMember": EndpointSync.unary( method=MethodInfo( name="RemoveMember", @@ -693,6 +738,26 @@ def update( timeout_ms=timeout_ms, ) + def leave( + self, + request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="Leave", + service_name="metalstack.api.v2.ProjectService", + input=metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveRequest, + output=metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + def remove_member( self, request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceRemoveMemberRequest, diff --git a/python/metalstack/api/v2/project_pb2.py b/python/metalstack/api/v2/project_pb2.py index 07136004..285e3d78 100644 --- a/python/metalstack/api/v2/project_pb2.py +++ b/python/metalstack/api/v2/project_pb2.py @@ -28,7 +28,7 @@ from metalstack.api.v2 import predefined_rules_pb2 as metalstack_dot_api_dot_v2_dot_predefined__rules__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fmetalstack/api/v2/project.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\"\xe5\x01\n\x07Project\x12\x12\n\x04uuid\x18\x01 \x01(\tR\x04uuid\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12\x1f\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12-\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12\x16\n\x06tenant\x18\x05 \x01(\tR\x06tenant\x12\"\n\navatar_url\x18\x06 \x01(\tH\x00R\tavatarUrl\x88\x01\x01\x42\r\n\x0b_avatar_url\"\xcb\x01\n\rProjectMember\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12<\n\x04role\x18\x02 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12\x31\n\x14inherited_membership\x18\x03 \x01(\x08R\x13inheritedMembership\x12\x39\n\ncreated_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\"\xe7\x02\n\rProjectInvite\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\x12\x18\n\x07project\x18\x02 \x01(\tR\x07project\x12<\n\x04role\x18\x03 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12\x16\n\x06joined\x18\x04 \x01(\x08R\x06joined\x12!\n\x0cproject_name\x18\x05 \x01(\tR\x0bprojectName\x12\x16\n\x06tenant\x18\x06 \x01(\tR\x06tenant\x12\x1f\n\x0btenant_name\x18\x07 \x01(\tR\ntenantName\x12\x39\n\nexpires_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\x12\x37\n\tjoined_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x08joinedAt\"\xdd\x01\n\x19ProjectServiceListRequest\x12\x13\n\x02id\x18\x01 \x01(\tH\x00R\x02id\x88\x01\x01\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04name\x88\x01\x01\x12\'\n\x06tenant\x18\x03 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x02R\x06tenant\x88\x01\x01\x12\x36\n\x06labels\x18\x06 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x03R\x06labels\x88\x01\x01\x42\x05\n\x03_idB\x07\n\x05_nameB\t\n\x07_tenantB\t\n\x07_labels\"T\n\x1aProjectServiceListResponse\x12\x36\n\x08projects\x18\x01 \x03(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x08projects\">\n\x18ProjectServiceGetRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"\x9c\x01\n\x19ProjectServiceGetResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\x12I\n\x0fproject_members\x18\x02 \x03(\x0b\x32 .metalstack.api.v2.ProjectMemberR\x0eprojectMembers\"\xf5\x01\n\x1bProjectServiceCreateRequest\x12 \n\x05login\x18\x01 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01R\x05login\x12\x1f\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12-\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12\"\n\navatar_url\x18\x04 \x01(\tH\x00R\tavatarUrl\x88\x01\x01\x12\x31\n\x06labels\x18\x05 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labelsB\r\n\x0b_avatar_url\"T\n\x1cProjectServiceCreateResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\"A\n\x1bProjectServiceDeleteRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"T\n\x1cProjectServiceDeleteResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\"\xf8\x02\n\x1bProjectServiceUpdateRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x46\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x01R\nupdateMeta\x12$\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12\"\n\navatar_url\x18\x05 \x01(\tH\x02R\tavatarUrl\x88\x01\x01\x12<\n\x06labels\x18\x06 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsH\x03R\x06labels\x88\x01\x01\x42\x07\n\x05_nameB\x0e\n\x0c_descriptionB\r\n\x0b_avatar_urlB\t\n\x07_labels\"T\n\x1cProjectServiceUpdateResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\"\x7f\n\x1bProjectServiceInviteRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12<\n\x04role\x18\x03 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"X\n\x1cProjectServiceInviteResponse\x12\x38\n\x06invite\x18\x01 \x01(\x0b\x32 .metalstack.api.v2.ProjectInviteR\x06invite\"F\n ProjectServiceInvitesListRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"_\n!ProjectServiceInvitesListResponse\x12:\n\x07invites\x18\x01 \x03(\x0b\x32 .metalstack.api.v2.ProjectInviteR\x07invites\"8\n\x1eProjectServiceInviteGetRequest\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\"[\n\x1fProjectServiceInviteGetResponse\x12\x38\n\x06invite\x18\x01 \x01(\x0b\x32 .metalstack.api.v2.ProjectInviteR\x06invite\"_\n!ProjectServiceRemoveMemberRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x16\n\x06member\x18\x02 \x01(\tR\x06member\"$\n\"ProjectServiceRemoveMemberResponse\"\x9d\x01\n!ProjectServiceUpdateMemberRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x16\n\x06member\x18\x02 \x01(\tR\x06member\x12<\n\x04role\x18\x03 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"m\n\"ProjectServiceUpdateMemberResponse\x12G\n\x0eproject_member\x18\x05 \x01(\x0b\x32 .metalstack.api.v2.ProjectMemberR\rprojectMember\";\n!ProjectServiceInviteAcceptRequest\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\"a\n\"ProjectServiceInviteAcceptResponse\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12!\n\x0cproject_name\x18\x02 \x01(\tR\x0bprojectName\"_\n!ProjectServiceInviteDeleteRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x16\n\x06secret\x18\x02 \x01(\tR\x06secret\"$\n\"ProjectServiceInviteDeleteResponse2\xef\x0b\n\x0eProjectService\x12m\n\x04List\x12,.metalstack.api.v2.ProjectServiceListRequest\x1a-.metalstack.api.v2.ProjectServiceListResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x02\x12m\n\x03Get\x12+.metalstack.api.v2.ProjectServiceGetRequest\x1a,.metalstack.api.v2.ProjectServiceGetResponse\"\x0b\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12u\n\x06\x43reate\x12..metalstack.api.v2.ProjectServiceCreateRequest\x1a/.metalstack.api.v2.ProjectServiceCreateResponse\"\n\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12t\n\x06\x44\x65lete\x12..metalstack.api.v2.ProjectServiceDeleteRequest\x1a/.metalstack.api.v2.ProjectServiceDeleteResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12u\n\x06Update\x12..metalstack.api.v2.ProjectServiceUpdateRequest\x1a/.metalstack.api.v2.ProjectServiceUpdateResponse\"\n\xca\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12\x86\x01\n\x0cRemoveMember\x12\x34.metalstack.api.v2.ProjectServiceRemoveMemberRequest\x1a\x35.metalstack.api.v2.ProjectServiceRemoveMemberResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x86\x01\n\x0cUpdateMember\x12\x34.metalstack.api.v2.ProjectServiceUpdateMemberRequest\x1a\x35.metalstack.api.v2.ProjectServiceUpdateMemberResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12t\n\x06Invite\x12..metalstack.api.v2.ProjectServiceInviteRequest\x1a/.metalstack.api.v2.ProjectServiceInviteResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x85\x01\n\x0cInviteAccept\x12\x34.metalstack.api.v2.ProjectServiceInviteAcceptRequest\x1a\x35.metalstack.api.v2.ProjectServiceInviteAcceptResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x01\x12\x86\x01\n\x0cInviteDelete\x12\x34.metalstack.api.v2.ProjectServiceInviteDeleteRequest\x1a\x35.metalstack.api.v2.ProjectServiceInviteDeleteResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x83\x01\n\x0bInvitesList\x12\x33.metalstack.api.v2.ProjectServiceInvitesListRequest\x1a\x34.metalstack.api.v2.ProjectServiceInvitesListResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x02\x12|\n\tInviteGet\x12\x31.metalstack.api.v2.ProjectServiceInviteGetRequest\x1a\x32.metalstack.api.v2.ProjectServiceInviteGetResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x02\x42\xc2\x01\n\x15\x63om.metalstack.api.v2B\x0cProjectProtoP\x01Z5github.com/metal-stack/api/go/metalstack/api/v2;apiv2\xa2\x02\x03MAX\xaa\x02\x11Metalstack.Api.V2\xca\x02\x11Metalstack\\Api\\V2\xe2\x02\x1dMetalstack\\Api\\V2\\GPBMetadata\xea\x02\x13Metalstack::Api::V2b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fmetalstack/api/v2/project.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\"\xe5\x01\n\x07Project\x12\x12\n\x04uuid\x18\x01 \x01(\tR\x04uuid\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12\x1f\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12-\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12\x16\n\x06tenant\x18\x05 \x01(\tR\x06tenant\x12\"\n\navatar_url\x18\x06 \x01(\tH\x00R\tavatarUrl\x88\x01\x01\x42\r\n\x0b_avatar_url\"\xcb\x01\n\rProjectMember\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12<\n\x04role\x18\x02 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12\x31\n\x14inherited_membership\x18\x03 \x01(\x08R\x13inheritedMembership\x12\x39\n\ncreated_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\"\xe7\x02\n\rProjectInvite\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\x12\x18\n\x07project\x18\x02 \x01(\tR\x07project\x12<\n\x04role\x18\x03 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12\x16\n\x06joined\x18\x04 \x01(\x08R\x06joined\x12!\n\x0cproject_name\x18\x05 \x01(\tR\x0bprojectName\x12\x16\n\x06tenant\x18\x06 \x01(\tR\x06tenant\x12\x1f\n\x0btenant_name\x18\x07 \x01(\tR\ntenantName\x12\x39\n\nexpires_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\x12\x37\n\tjoined_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x08joinedAt\"\xdd\x01\n\x19ProjectServiceListRequest\x12\x13\n\x02id\x18\x01 \x01(\tH\x00R\x02id\x88\x01\x01\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04name\x88\x01\x01\x12\'\n\x06tenant\x18\x03 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x02R\x06tenant\x88\x01\x01\x12\x36\n\x06labels\x18\x06 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x03R\x06labels\x88\x01\x01\x42\x05\n\x03_idB\x07\n\x05_nameB\t\n\x07_tenantB\t\n\x07_labels\"T\n\x1aProjectServiceListResponse\x12\x36\n\x08projects\x18\x01 \x03(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x08projects\">\n\x18ProjectServiceGetRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"\x9c\x01\n\x19ProjectServiceGetResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\x12I\n\x0fproject_members\x18\x02 \x03(\x0b\x32 .metalstack.api.v2.ProjectMemberR\x0eprojectMembers\"\xf5\x01\n\x1bProjectServiceCreateRequest\x12 \n\x05login\x18\x01 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01R\x05login\x12\x1f\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12-\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12\"\n\navatar_url\x18\x04 \x01(\tH\x00R\tavatarUrl\x88\x01\x01\x12\x31\n\x06labels\x18\x05 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labelsB\r\n\x0b_avatar_url\"T\n\x1cProjectServiceCreateResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\"A\n\x1bProjectServiceDeleteRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"T\n\x1cProjectServiceDeleteResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\"\xf8\x02\n\x1bProjectServiceUpdateRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x46\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x01R\nupdateMeta\x12$\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12\"\n\navatar_url\x18\x05 \x01(\tH\x02R\tavatarUrl\x88\x01\x01\x12<\n\x06labels\x18\x06 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsH\x03R\x06labels\x88\x01\x01\x42\x07\n\x05_nameB\x0e\n\x0c_descriptionB\r\n\x0b_avatar_urlB\t\n\x07_labels\"T\n\x1cProjectServiceUpdateResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\"\x7f\n\x1bProjectServiceInviteRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12<\n\x04role\x18\x03 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"X\n\x1cProjectServiceInviteResponse\x12\x38\n\x06invite\x18\x01 \x01(\x0b\x32 .metalstack.api.v2.ProjectInviteR\x06invite\"F\n ProjectServiceInvitesListRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"_\n!ProjectServiceInvitesListResponse\x12:\n\x07invites\x18\x01 \x03(\x0b\x32 .metalstack.api.v2.ProjectInviteR\x07invites\"8\n\x1eProjectServiceInviteGetRequest\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\"[\n\x1fProjectServiceInviteGetResponse\x12\x38\n\x06invite\x18\x01 \x01(\x0b\x32 .metalstack.api.v2.ProjectInviteR\x06invite\"@\n\x1aProjectServiceLeaveRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"\x1d\n\x1bProjectServiceLeaveResponse\"_\n!ProjectServiceRemoveMemberRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x16\n\x06member\x18\x02 \x01(\tR\x06member\"$\n\"ProjectServiceRemoveMemberResponse\"\x9d\x01\n!ProjectServiceUpdateMemberRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x16\n\x06member\x18\x02 \x01(\tR\x06member\x12<\n\x04role\x18\x03 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"m\n\"ProjectServiceUpdateMemberResponse\x12G\n\x0eproject_member\x18\x05 \x01(\x0b\x32 .metalstack.api.v2.ProjectMemberR\rprojectMember\";\n!ProjectServiceInviteAcceptRequest\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\"a\n\"ProjectServiceInviteAcceptResponse\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12!\n\x0cproject_name\x18\x02 \x01(\tR\x0bprojectName\"_\n!ProjectServiceInviteDeleteRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x16\n\x06secret\x18\x02 \x01(\tR\x06secret\"$\n\"ProjectServiceInviteDeleteResponse2\xe2\x0c\n\x0eProjectService\x12m\n\x04List\x12,.metalstack.api.v2.ProjectServiceListRequest\x1a-.metalstack.api.v2.ProjectServiceListResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x02\x12m\n\x03Get\x12+.metalstack.api.v2.ProjectServiceGetRequest\x1a,.metalstack.api.v2.ProjectServiceGetResponse\"\x0b\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12u\n\x06\x43reate\x12..metalstack.api.v2.ProjectServiceCreateRequest\x1a/.metalstack.api.v2.ProjectServiceCreateResponse\"\n\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12t\n\x06\x44\x65lete\x12..metalstack.api.v2.ProjectServiceDeleteRequest\x1a/.metalstack.api.v2.ProjectServiceDeleteResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12u\n\x06Update\x12..metalstack.api.v2.ProjectServiceUpdateRequest\x1a/.metalstack.api.v2.ProjectServiceUpdateResponse\"\n\xca\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12q\n\x05Leave\x12-.metalstack.api.v2.ProjectServiceLeaveRequest\x1a..metalstack.api.v2.ProjectServiceLeaveResponse\"\t\xca\xf3\x18\x01\x03\xe0\xf3\x18\x01\x12\x86\x01\n\x0cRemoveMember\x12\x34.metalstack.api.v2.ProjectServiceRemoveMemberRequest\x1a\x35.metalstack.api.v2.ProjectServiceRemoveMemberResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x86\x01\n\x0cUpdateMember\x12\x34.metalstack.api.v2.ProjectServiceUpdateMemberRequest\x1a\x35.metalstack.api.v2.ProjectServiceUpdateMemberResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12t\n\x06Invite\x12..metalstack.api.v2.ProjectServiceInviteRequest\x1a/.metalstack.api.v2.ProjectServiceInviteResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x85\x01\n\x0cInviteAccept\x12\x34.metalstack.api.v2.ProjectServiceInviteAcceptRequest\x1a\x35.metalstack.api.v2.ProjectServiceInviteAcceptResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x01\x12\x86\x01\n\x0cInviteDelete\x12\x34.metalstack.api.v2.ProjectServiceInviteDeleteRequest\x1a\x35.metalstack.api.v2.ProjectServiceInviteDeleteResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x83\x01\n\x0bInvitesList\x12\x33.metalstack.api.v2.ProjectServiceInvitesListRequest\x1a\x34.metalstack.api.v2.ProjectServiceInvitesListResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x02\x12|\n\tInviteGet\x12\x31.metalstack.api.v2.ProjectServiceInviteGetRequest\x1a\x32.metalstack.api.v2.ProjectServiceInviteGetResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x02\x42\xc2\x01\n\x15\x63om.metalstack.api.v2B\x0cProjectProtoP\x01Z5github.com/metal-stack/api/go/metalstack/api/v2;apiv2\xa2\x02\x03MAX\xaa\x02\x11Metalstack.Api.V2\xca\x02\x11Metalstack\\Api\\V2\xe2\x02\x1dMetalstack\\Api\\V2\\GPBMetadata\xea\x02\x13Metalstack::Api::V2b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -72,6 +72,8 @@ _globals['_PROJECTSERVICEINVITEREQUEST'].fields_by_name['role']._serialized_options = b'\272H\005\202\001\002\020\001' _globals['_PROJECTSERVICEINVITESLISTREQUEST'].fields_by_name['project']._loaded_options = None _globals['_PROJECTSERVICEINVITESLISTREQUEST'].fields_by_name['project']._serialized_options = b'\272H\005r\003\260\001\001' + _globals['_PROJECTSERVICELEAVEREQUEST'].fields_by_name['project']._loaded_options = None + _globals['_PROJECTSERVICELEAVEREQUEST'].fields_by_name['project']._serialized_options = b'\272H\005r\003\260\001\001' _globals['_PROJECTSERVICEREMOVEMEMBERREQUEST'].fields_by_name['project']._loaded_options = None _globals['_PROJECTSERVICEREMOVEMEMBERREQUEST'].fields_by_name['project']._serialized_options = b'\272H\005r\003\260\001\001' _globals['_PROJECTSERVICEUPDATEMEMBERREQUEST'].fields_by_name['project']._loaded_options = None @@ -90,6 +92,8 @@ _globals['_PROJECTSERVICE'].methods_by_name['Delete']._serialized_options = b'\312\363\030\001\001\340\363\030\001' _globals['_PROJECTSERVICE'].methods_by_name['Update']._loaded_options = None _globals['_PROJECTSERVICE'].methods_by_name['Update']._serialized_options = b'\312\363\030\002\001\002\340\363\030\001' + _globals['_PROJECTSERVICE'].methods_by_name['Leave']._loaded_options = None + _globals['_PROJECTSERVICE'].methods_by_name['Leave']._serialized_options = b'\312\363\030\001\003\340\363\030\001' _globals['_PROJECTSERVICE'].methods_by_name['RemoveMember']._loaded_options = None _globals['_PROJECTSERVICE'].methods_by_name['RemoveMember']._serialized_options = b'\312\363\030\001\001\340\363\030\001' _globals['_PROJECTSERVICE'].methods_by_name['UpdateMember']._loaded_options = None @@ -142,22 +146,26 @@ _globals['_PROJECTSERVICEINVITEGETREQUEST']._serialized_end=2919 _globals['_PROJECTSERVICEINVITEGETRESPONSE']._serialized_start=2921 _globals['_PROJECTSERVICEINVITEGETRESPONSE']._serialized_end=3012 - _globals['_PROJECTSERVICEREMOVEMEMBERREQUEST']._serialized_start=3014 - _globals['_PROJECTSERVICEREMOVEMEMBERREQUEST']._serialized_end=3109 - _globals['_PROJECTSERVICEREMOVEMEMBERRESPONSE']._serialized_start=3111 - _globals['_PROJECTSERVICEREMOVEMEMBERRESPONSE']._serialized_end=3147 - _globals['_PROJECTSERVICEUPDATEMEMBERREQUEST']._serialized_start=3150 - _globals['_PROJECTSERVICEUPDATEMEMBERREQUEST']._serialized_end=3307 - _globals['_PROJECTSERVICEUPDATEMEMBERRESPONSE']._serialized_start=3309 - _globals['_PROJECTSERVICEUPDATEMEMBERRESPONSE']._serialized_end=3418 - _globals['_PROJECTSERVICEINVITEACCEPTREQUEST']._serialized_start=3420 - _globals['_PROJECTSERVICEINVITEACCEPTREQUEST']._serialized_end=3479 - _globals['_PROJECTSERVICEINVITEACCEPTRESPONSE']._serialized_start=3481 - _globals['_PROJECTSERVICEINVITEACCEPTRESPONSE']._serialized_end=3578 - _globals['_PROJECTSERVICEINVITEDELETEREQUEST']._serialized_start=3580 - _globals['_PROJECTSERVICEINVITEDELETEREQUEST']._serialized_end=3675 - _globals['_PROJECTSERVICEINVITEDELETERESPONSE']._serialized_start=3677 - _globals['_PROJECTSERVICEINVITEDELETERESPONSE']._serialized_end=3713 - _globals['_PROJECTSERVICE']._serialized_start=3716 - _globals['_PROJECTSERVICE']._serialized_end=5235 + _globals['_PROJECTSERVICELEAVEREQUEST']._serialized_start=3014 + _globals['_PROJECTSERVICELEAVEREQUEST']._serialized_end=3078 + _globals['_PROJECTSERVICELEAVERESPONSE']._serialized_start=3080 + _globals['_PROJECTSERVICELEAVERESPONSE']._serialized_end=3109 + _globals['_PROJECTSERVICEREMOVEMEMBERREQUEST']._serialized_start=3111 + _globals['_PROJECTSERVICEREMOVEMEMBERREQUEST']._serialized_end=3206 + _globals['_PROJECTSERVICEREMOVEMEMBERRESPONSE']._serialized_start=3208 + _globals['_PROJECTSERVICEREMOVEMEMBERRESPONSE']._serialized_end=3244 + _globals['_PROJECTSERVICEUPDATEMEMBERREQUEST']._serialized_start=3247 + _globals['_PROJECTSERVICEUPDATEMEMBERREQUEST']._serialized_end=3404 + _globals['_PROJECTSERVICEUPDATEMEMBERRESPONSE']._serialized_start=3406 + _globals['_PROJECTSERVICEUPDATEMEMBERRESPONSE']._serialized_end=3515 + _globals['_PROJECTSERVICEINVITEACCEPTREQUEST']._serialized_start=3517 + _globals['_PROJECTSERVICEINVITEACCEPTREQUEST']._serialized_end=3576 + _globals['_PROJECTSERVICEINVITEACCEPTRESPONSE']._serialized_start=3578 + _globals['_PROJECTSERVICEINVITEACCEPTRESPONSE']._serialized_end=3675 + _globals['_PROJECTSERVICEINVITEDELETEREQUEST']._serialized_start=3677 + _globals['_PROJECTSERVICEINVITEDELETEREQUEST']._serialized_end=3772 + _globals['_PROJECTSERVICEINVITEDELETERESPONSE']._serialized_start=3774 + _globals['_PROJECTSERVICEINVITEDELETERESPONSE']._serialized_end=3810 + _globals['_PROJECTSERVICE']._serialized_start=3813 + _globals['_PROJECTSERVICE']._serialized_end=5447 # @@protoc_insertion_point(module_scope) diff --git a/python/metalstack/api/v2/project_pb2.pyi b/python/metalstack/api/v2/project_pb2.pyi index 7bb7bfc2..4f2f758b 100644 --- a/python/metalstack/api/v2/project_pb2.pyi +++ b/python/metalstack/api/v2/project_pb2.pyi @@ -186,6 +186,16 @@ class ProjectServiceInviteGetResponse(_message.Message): invite: ProjectInvite def __init__(self, invite: _Optional[_Union[ProjectInvite, _Mapping]] = ...) -> None: ... +class ProjectServiceLeaveRequest(_message.Message): + __slots__ = ("project",) + PROJECT_FIELD_NUMBER: _ClassVar[int] + project: str + def __init__(self, project: _Optional[str] = ...) -> None: ... + +class ProjectServiceLeaveResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + class ProjectServiceRemoveMemberRequest(_message.Message): __slots__ = ("project", "member") PROJECT_FIELD_NUMBER: _ClassVar[int] diff --git a/python/metalstack/api/v2/tenant_connect.py b/python/metalstack/api/v2/tenant_connect.py index 547b5152..c4a79f87 100644 --- a/python/metalstack/api/v2/tenant_connect.py +++ b/python/metalstack/api/v2/tenant_connect.py @@ -31,6 +31,9 @@ async def update(self, request: metalstack_dot_api_dot_v2_dot_tenant__pb2.Tenant async def delete(self, request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceDeleteRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceDeleteResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + async def leave(self, request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + async def remove_member(self, request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceRemoveMemberRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceRemoveMemberResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") @@ -107,6 +110,16 @@ def __init__(self, service: TenantService, *, interceptors: Iterable[Interceptor ), function=service.delete, ), + "/metalstack.api.v2.TenantService/Leave": Endpoint.unary( + method=MethodInfo( + name="Leave", + service_name="metalstack.api.v2.TenantService", + input=metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveRequest, + output=metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.leave, + ), "/metalstack.api.v2.TenantService/RemoveMember": Endpoint.unary( method=MethodInfo( name="RemoveMember", @@ -289,6 +302,26 @@ async def delete( timeout_ms=timeout_ms, ) + async def leave( + self, + request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="Leave", + service_name="metalstack.api.v2.TenantService", + input=metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveRequest, + output=metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + async def remove_member( self, request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceRemoveMemberRequest, @@ -441,6 +474,8 @@ def update(self, request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServic raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") def delete(self, request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceDeleteRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceDeleteResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def leave(self, request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") def remove_member(self, request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceRemoveMemberRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceRemoveMemberResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") def update_member(self, request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceUpdateMemberRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceUpdateMemberResponse: @@ -511,6 +546,16 @@ def __init__(self, service: TenantServiceSync, interceptors: Iterable[Intercepto ), function=service.delete, ), + "/metalstack.api.v2.TenantService/Leave": EndpointSync.unary( + method=MethodInfo( + name="Leave", + service_name="metalstack.api.v2.TenantService", + input=metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveRequest, + output=metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.leave, + ), "/metalstack.api.v2.TenantService/RemoveMember": EndpointSync.unary( method=MethodInfo( name="RemoveMember", @@ -693,6 +738,26 @@ def delete( timeout_ms=timeout_ms, ) + def leave( + self, + request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="Leave", + service_name="metalstack.api.v2.TenantService", + input=metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveRequest, + output=metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + def remove_member( self, request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceRemoveMemberRequest, diff --git a/python/metalstack/api/v2/tenant_pb2.py b/python/metalstack/api/v2/tenant_pb2.py index 0ca870a4..148b76e3 100644 --- a/python/metalstack/api/v2/tenant_pb2.py +++ b/python/metalstack/api/v2/tenant_pb2.py @@ -28,7 +28,7 @@ from metalstack.api.v2 import predefined_rules_pb2 as metalstack_dot_api_dot_v2_dot_predefined__rules__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1emetalstack/api/v2/tenant.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\"\xef\x01\n\x06Tenant\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12\x1f\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12\x14\n\x05\x65mail\x18\x04 \x01(\tR\x05\x65mail\x12-\n\x0b\x64\x65scription\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12\x1d\n\navatar_url\x18\x06 \x01(\tR\tavatarUrl\x12\x1d\n\ncreated_by\x18\x0f \x01(\tR\tcreatedBy\"\xb2\x01\n\x0cTenantMember\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12;\n\x04role\x18\x02 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12\x1a\n\x08projects\x18\x04 \x03(\tR\x08projects\x12\x39\n\ncreated_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\"\xfb\x02\n\x0cTenantInvite\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\x12#\n\rtarget_tenant\x18\x02 \x01(\tR\x0ctargetTenant\x12;\n\x04role\x18\x03 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12\x16\n\x06joined\x18\x04 \x01(\x08R\x06joined\x12,\n\x12target_tenant_name\x18\x05 \x01(\tR\x10targetTenantName\x12\x16\n\x06tenant\x18\x06 \x01(\tR\x06tenant\x12\x1f\n\x0btenant_name\x18\x07 \x01(\tR\ntenantName\x12\x39\n\nexpires_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\x12\x37\n\tjoined_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x08joinedAt\"\xa8\x01\n\x18TenantServiceListRequest\x12\x13\n\x02id\x18\x01 \x01(\tH\x00R\x02id\x88\x01\x01\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04name\x88\x01\x01\x12\x36\n\x06labels\x18\x03 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x02R\x06labels\x88\x01\x01\x42\x05\n\x03_idB\x07\n\x05_nameB\t\n\x07_labels\"/\n\x17TenantServiceGetRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\"\x95\x02\n\x1aTenantServiceCreateRequest\x12\x1f\n\x04name\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12\x32\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12\"\n\x05\x65mail\x18\x03 \x01(\tB\x07\xbaH\x04r\x02`\x01H\x01R\x05\x65mail\x88\x01\x01\x12\"\n\navatar_url\x18\x04 \x01(\tH\x02R\tavatarUrl\x88\x01\x01\x12\x31\n\x06labels\x18\x05 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labelsB\x0e\n\x0c_descriptionB\x08\n\x06_emailB\r\n\x0b_avatar_url\"\x97\x03\n\x1aTenantServiceUpdateRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12\x46\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x01R\nupdateMeta\x12$\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\"\n\x05\x65mail\x18\x04 \x01(\tB\x07\xbaH\x04r\x02`\x01H\x01R\x05\x65mail\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x02R\x0b\x64\x65scription\x88\x01\x01\x12\"\n\navatar_url\x18\x06 \x01(\tH\x03R\tavatarUrl\x88\x01\x01\x12<\n\x06labels\x18\x07 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsH\x04R\x06labels\x88\x01\x01\x42\x07\n\x05_nameB\x08\n\x06_emailB\x0e\n\x0c_descriptionB\r\n\x0b_avatar_urlB\t\n\x07_labels\"2\n\x1aTenantServiceDeleteRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\"\x95\x01\n\x18TenantServiceGetResponse\x12\x31\n\x06tenant\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.TenantR\x06tenant\x12\x46\n\x0etenant_members\x18\x02 \x03(\x0b\x32\x1f.metalstack.api.v2.TenantMemberR\rtenantMembers\"P\n\x19TenantServiceListResponse\x12\x33\n\x07tenants\x18\x01 \x03(\x0b\x32\x19.metalstack.api.v2.TenantR\x07tenants\"P\n\x1bTenantServiceCreateResponse\x12\x31\n\x06tenant\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.TenantR\x06tenant\"P\n\x1bTenantServiceUpdateResponse\x12\x31\n\x06tenant\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.TenantR\x06tenant\"P\n\x1bTenantServiceDeleteResponse\x12\x31\n\x06tenant\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.TenantR\x06tenant\"o\n\x1aTenantServiceInviteRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12;\n\x04role\x18\x02 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"V\n\x1bTenantServiceInviteResponse\x12\x37\n\x06invite\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.TenantInviteR\x06invite\"7\n\x1fTenantServiceInvitesListRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\"]\n TenantServiceInvitesListResponse\x12\x39\n\x07invites\x18\x01 \x03(\x0b\x32\x1f.metalstack.api.v2.TenantInviteR\x07invites\"7\n\x1dTenantServiceInviteGetRequest\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\"Y\n\x1eTenantServiceInviteGetResponse\x12\x37\n\x06invite\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.TenantInviteR\x06invite\"P\n TenantServiceRemoveMemberRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12\x16\n\x06member\x18\x02 \x01(\tR\x06member\"#\n!TenantServiceRemoveMemberResponse\":\n TenantServiceInviteAcceptRequest\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\"\\\n!TenantServiceInviteAcceptResponse\x12\x16\n\x06tenant\x18\x01 \x01(\tR\x06tenant\x12\x1f\n\x0btenant_name\x18\x02 \x01(\tR\ntenantName\"P\n TenantServiceInviteDeleteRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12\x16\n\x06secret\x18\x02 \x01(\tR\x06secret\"#\n!TenantServiceInviteDeleteResponse\"\x8d\x01\n TenantServiceUpdateMemberRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12\x16\n\x06member\x18\x02 \x01(\tR\x06member\x12;\n\x04role\x18\x03 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"i\n!TenantServiceUpdateMemberResponse\x12\x44\n\rtenant_member\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.TenantMemberR\x0ctenantMember2\xd6\x0b\n\rTenantService\x12q\n\x06\x43reate\x12-.metalstack.api.v2.TenantServiceCreateRequest\x1a..metalstack.api.v2.TenantServiceCreateResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x01\x12k\n\x04List\x12+.metalstack.api.v2.TenantServiceListRequest\x1a,.metalstack.api.v2.TenantServiceListResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x02\x12l\n\x03Get\x12*.metalstack.api.v2.TenantServiceGetRequest\x1a+.metalstack.api.v2.TenantServiceGetResponse\"\x0c\xc2\xf3\x18\x04\x01\x02\x03\x04\xe0\xf3\x18\x02\x12s\n\x06Update\x12-.metalstack.api.v2.TenantServiceUpdateRequest\x1a..metalstack.api.v2.TenantServiceUpdateResponse\"\n\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12s\n\x06\x44\x65lete\x12-.metalstack.api.v2.TenantServiceDeleteRequest\x1a..metalstack.api.v2.TenantServiceDeleteResponse\"\n\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12\x84\x01\n\x0cRemoveMember\x12\x33.metalstack.api.v2.TenantServiceRemoveMemberRequest\x1a\x34.metalstack.api.v2.TenantServiceRemoveMemberResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x84\x01\n\x0cUpdateMember\x12\x33.metalstack.api.v2.TenantServiceUpdateMemberRequest\x1a\x34.metalstack.api.v2.TenantServiceUpdateMemberResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12r\n\x06Invite\x12-.metalstack.api.v2.TenantServiceInviteRequest\x1a..metalstack.api.v2.TenantServiceInviteResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x83\x01\n\x0cInviteAccept\x12\x33.metalstack.api.v2.TenantServiceInviteAcceptRequest\x1a\x34.metalstack.api.v2.TenantServiceInviteAcceptResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x01\x12\x84\x01\n\x0cInviteDelete\x12\x33.metalstack.api.v2.TenantServiceInviteDeleteRequest\x1a\x34.metalstack.api.v2.TenantServiceInviteDeleteResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x81\x01\n\x0bInvitesList\x12\x32.metalstack.api.v2.TenantServiceInvitesListRequest\x1a\x33.metalstack.api.v2.TenantServiceInvitesListResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x02\x12z\n\tInviteGet\x12\x30.metalstack.api.v2.TenantServiceInviteGetRequest\x1a\x31.metalstack.api.v2.TenantServiceInviteGetResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x02\x42\xc1\x01\n\x15\x63om.metalstack.api.v2B\x0bTenantProtoP\x01Z5github.com/metal-stack/api/go/metalstack/api/v2;apiv2\xa2\x02\x03MAX\xaa\x02\x11Metalstack.Api.V2\xca\x02\x11Metalstack\\Api\\V2\xe2\x02\x1dMetalstack\\Api\\V2\\GPBMetadata\xea\x02\x13Metalstack::Api::V2b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1emetalstack/api/v2/tenant.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\"\xef\x01\n\x06Tenant\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12\x1f\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12\x14\n\x05\x65mail\x18\x04 \x01(\tR\x05\x65mail\x12-\n\x0b\x64\x65scription\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12\x1d\n\navatar_url\x18\x06 \x01(\tR\tavatarUrl\x12\x1d\n\ncreated_by\x18\x0f \x01(\tR\tcreatedBy\"\xb2\x01\n\x0cTenantMember\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12;\n\x04role\x18\x02 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12\x1a\n\x08projects\x18\x04 \x03(\tR\x08projects\x12\x39\n\ncreated_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\"\xfb\x02\n\x0cTenantInvite\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\x12#\n\rtarget_tenant\x18\x02 \x01(\tR\x0ctargetTenant\x12;\n\x04role\x18\x03 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12\x16\n\x06joined\x18\x04 \x01(\x08R\x06joined\x12,\n\x12target_tenant_name\x18\x05 \x01(\tR\x10targetTenantName\x12\x16\n\x06tenant\x18\x06 \x01(\tR\x06tenant\x12\x1f\n\x0btenant_name\x18\x07 \x01(\tR\ntenantName\x12\x39\n\nexpires_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\x12\x37\n\tjoined_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x08joinedAt\"\xa8\x01\n\x18TenantServiceListRequest\x12\x13\n\x02id\x18\x01 \x01(\tH\x00R\x02id\x88\x01\x01\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04name\x88\x01\x01\x12\x36\n\x06labels\x18\x03 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x02R\x06labels\x88\x01\x01\x42\x05\n\x03_idB\x07\n\x05_nameB\t\n\x07_labels\"/\n\x17TenantServiceGetRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\"\x95\x02\n\x1aTenantServiceCreateRequest\x12\x1f\n\x04name\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12\x32\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12\"\n\x05\x65mail\x18\x03 \x01(\tB\x07\xbaH\x04r\x02`\x01H\x01R\x05\x65mail\x88\x01\x01\x12\"\n\navatar_url\x18\x04 \x01(\tH\x02R\tavatarUrl\x88\x01\x01\x12\x31\n\x06labels\x18\x05 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labelsB\x0e\n\x0c_descriptionB\x08\n\x06_emailB\r\n\x0b_avatar_url\"\x97\x03\n\x1aTenantServiceUpdateRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12\x46\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x01R\nupdateMeta\x12$\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\"\n\x05\x65mail\x18\x04 \x01(\tB\x07\xbaH\x04r\x02`\x01H\x01R\x05\x65mail\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x02R\x0b\x64\x65scription\x88\x01\x01\x12\"\n\navatar_url\x18\x06 \x01(\tH\x03R\tavatarUrl\x88\x01\x01\x12<\n\x06labels\x18\x07 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsH\x04R\x06labels\x88\x01\x01\x42\x07\n\x05_nameB\x08\n\x06_emailB\x0e\n\x0c_descriptionB\r\n\x0b_avatar_urlB\t\n\x07_labels\"2\n\x1aTenantServiceDeleteRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\"\x95\x01\n\x18TenantServiceGetResponse\x12\x31\n\x06tenant\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.TenantR\x06tenant\x12\x46\n\x0etenant_members\x18\x02 \x03(\x0b\x32\x1f.metalstack.api.v2.TenantMemberR\rtenantMembers\"P\n\x19TenantServiceListResponse\x12\x33\n\x07tenants\x18\x01 \x03(\x0b\x32\x19.metalstack.api.v2.TenantR\x07tenants\"P\n\x1bTenantServiceCreateResponse\x12\x31\n\x06tenant\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.TenantR\x06tenant\"P\n\x1bTenantServiceUpdateResponse\x12\x31\n\x06tenant\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.TenantR\x06tenant\"P\n\x1bTenantServiceDeleteResponse\x12\x31\n\x06tenant\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.TenantR\x06tenant\"o\n\x1aTenantServiceInviteRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12;\n\x04role\x18\x02 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"V\n\x1bTenantServiceInviteResponse\x12\x37\n\x06invite\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.TenantInviteR\x06invite\"7\n\x1fTenantServiceInvitesListRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\"]\n TenantServiceInvitesListResponse\x12\x39\n\x07invites\x18\x01 \x03(\x0b\x32\x1f.metalstack.api.v2.TenantInviteR\x07invites\"7\n\x1dTenantServiceInviteGetRequest\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\"Y\n\x1eTenantServiceInviteGetResponse\x12\x37\n\x06invite\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.TenantInviteR\x06invite\"P\n TenantServiceRemoveMemberRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12\x16\n\x06member\x18\x02 \x01(\tR\x06member\"1\n\x19TenantServiceLeaveRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\"\x1c\n\x1aTenantServiceLeaveResponse\"#\n!TenantServiceRemoveMemberResponse\":\n TenantServiceInviteAcceptRequest\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\"\\\n!TenantServiceInviteAcceptResponse\x12\x16\n\x06tenant\x18\x01 \x01(\tR\x06tenant\x12\x1f\n\x0btenant_name\x18\x02 \x01(\tR\ntenantName\"P\n TenantServiceInviteDeleteRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12\x16\n\x06secret\x18\x02 \x01(\tR\x06secret\"#\n!TenantServiceInviteDeleteResponse\"\x8d\x01\n TenantServiceUpdateMemberRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12\x16\n\x06member\x18\x02 \x01(\tR\x06member\x12;\n\x04role\x18\x03 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"i\n!TenantServiceUpdateMemberResponse\x12\x44\n\rtenant_member\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.TenantMemberR\x0ctenantMember2\xc7\x0c\n\rTenantService\x12q\n\x06\x43reate\x12-.metalstack.api.v2.TenantServiceCreateRequest\x1a..metalstack.api.v2.TenantServiceCreateResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x01\x12k\n\x04List\x12+.metalstack.api.v2.TenantServiceListRequest\x1a,.metalstack.api.v2.TenantServiceListResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x02\x12l\n\x03Get\x12*.metalstack.api.v2.TenantServiceGetRequest\x1a+.metalstack.api.v2.TenantServiceGetResponse\"\x0c\xc2\xf3\x18\x04\x01\x02\x03\x04\xe0\xf3\x18\x02\x12s\n\x06Update\x12-.metalstack.api.v2.TenantServiceUpdateRequest\x1a..metalstack.api.v2.TenantServiceUpdateResponse\"\n\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12s\n\x06\x44\x65lete\x12-.metalstack.api.v2.TenantServiceDeleteRequest\x1a..metalstack.api.v2.TenantServiceDeleteResponse\"\n\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12o\n\x05Leave\x12,.metalstack.api.v2.TenantServiceLeaveRequest\x1a-.metalstack.api.v2.TenantServiceLeaveResponse\"\t\xc2\xf3\x18\x01\x03\xe0\xf3\x18\x01\x12\x84\x01\n\x0cRemoveMember\x12\x33.metalstack.api.v2.TenantServiceRemoveMemberRequest\x1a\x34.metalstack.api.v2.TenantServiceRemoveMemberResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x84\x01\n\x0cUpdateMember\x12\x33.metalstack.api.v2.TenantServiceUpdateMemberRequest\x1a\x34.metalstack.api.v2.TenantServiceUpdateMemberResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12r\n\x06Invite\x12-.metalstack.api.v2.TenantServiceInviteRequest\x1a..metalstack.api.v2.TenantServiceInviteResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x83\x01\n\x0cInviteAccept\x12\x33.metalstack.api.v2.TenantServiceInviteAcceptRequest\x1a\x34.metalstack.api.v2.TenantServiceInviteAcceptResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x01\x12\x84\x01\n\x0cInviteDelete\x12\x33.metalstack.api.v2.TenantServiceInviteDeleteRequest\x1a\x34.metalstack.api.v2.TenantServiceInviteDeleteResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x81\x01\n\x0bInvitesList\x12\x32.metalstack.api.v2.TenantServiceInvitesListRequest\x1a\x33.metalstack.api.v2.TenantServiceInvitesListResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x02\x12z\n\tInviteGet\x12\x30.metalstack.api.v2.TenantServiceInviteGetRequest\x1a\x31.metalstack.api.v2.TenantServiceInviteGetResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x02\x42\xc1\x01\n\x15\x63om.metalstack.api.v2B\x0bTenantProtoP\x01Z5github.com/metal-stack/api/go/metalstack/api/v2;apiv2\xa2\x02\x03MAX\xaa\x02\x11Metalstack.Api.V2\xca\x02\x11Metalstack\\Api\\V2\xe2\x02\x1dMetalstack\\Api\\V2\\GPBMetadata\xea\x02\x13Metalstack::Api::V2b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -74,6 +74,8 @@ _globals['_TENANTSERVICE'].methods_by_name['Update']._serialized_options = b'\302\363\030\002\001\002\340\363\030\001' _globals['_TENANTSERVICE'].methods_by_name['Delete']._loaded_options = None _globals['_TENANTSERVICE'].methods_by_name['Delete']._serialized_options = b'\302\363\030\002\001\002\340\363\030\001' + _globals['_TENANTSERVICE'].methods_by_name['Leave']._loaded_options = None + _globals['_TENANTSERVICE'].methods_by_name['Leave']._serialized_options = b'\302\363\030\001\003\340\363\030\001' _globals['_TENANTSERVICE'].methods_by_name['RemoveMember']._loaded_options = None _globals['_TENANTSERVICE'].methods_by_name['RemoveMember']._serialized_options = b'\302\363\030\001\001\340\363\030\001' _globals['_TENANTSERVICE'].methods_by_name['UpdateMember']._loaded_options = None @@ -128,20 +130,24 @@ _globals['_TENANTSERVICEINVITEGETRESPONSE']._serialized_end=2935 _globals['_TENANTSERVICEREMOVEMEMBERREQUEST']._serialized_start=2937 _globals['_TENANTSERVICEREMOVEMEMBERREQUEST']._serialized_end=3017 - _globals['_TENANTSERVICEREMOVEMEMBERRESPONSE']._serialized_start=3019 - _globals['_TENANTSERVICEREMOVEMEMBERRESPONSE']._serialized_end=3054 - _globals['_TENANTSERVICEINVITEACCEPTREQUEST']._serialized_start=3056 - _globals['_TENANTSERVICEINVITEACCEPTREQUEST']._serialized_end=3114 - _globals['_TENANTSERVICEINVITEACCEPTRESPONSE']._serialized_start=3116 - _globals['_TENANTSERVICEINVITEACCEPTRESPONSE']._serialized_end=3208 - _globals['_TENANTSERVICEINVITEDELETEREQUEST']._serialized_start=3210 - _globals['_TENANTSERVICEINVITEDELETEREQUEST']._serialized_end=3290 - _globals['_TENANTSERVICEINVITEDELETERESPONSE']._serialized_start=3292 - _globals['_TENANTSERVICEINVITEDELETERESPONSE']._serialized_end=3327 - _globals['_TENANTSERVICEUPDATEMEMBERREQUEST']._serialized_start=3330 - _globals['_TENANTSERVICEUPDATEMEMBERREQUEST']._serialized_end=3471 - _globals['_TENANTSERVICEUPDATEMEMBERRESPONSE']._serialized_start=3473 - _globals['_TENANTSERVICEUPDATEMEMBERRESPONSE']._serialized_end=3578 - _globals['_TENANTSERVICE']._serialized_start=3581 - _globals['_TENANTSERVICE']._serialized_end=5075 + _globals['_TENANTSERVICELEAVEREQUEST']._serialized_start=3019 + _globals['_TENANTSERVICELEAVEREQUEST']._serialized_end=3068 + _globals['_TENANTSERVICELEAVERESPONSE']._serialized_start=3070 + _globals['_TENANTSERVICELEAVERESPONSE']._serialized_end=3098 + _globals['_TENANTSERVICEREMOVEMEMBERRESPONSE']._serialized_start=3100 + _globals['_TENANTSERVICEREMOVEMEMBERRESPONSE']._serialized_end=3135 + _globals['_TENANTSERVICEINVITEACCEPTREQUEST']._serialized_start=3137 + _globals['_TENANTSERVICEINVITEACCEPTREQUEST']._serialized_end=3195 + _globals['_TENANTSERVICEINVITEACCEPTRESPONSE']._serialized_start=3197 + _globals['_TENANTSERVICEINVITEACCEPTRESPONSE']._serialized_end=3289 + _globals['_TENANTSERVICEINVITEDELETEREQUEST']._serialized_start=3291 + _globals['_TENANTSERVICEINVITEDELETEREQUEST']._serialized_end=3371 + _globals['_TENANTSERVICEINVITEDELETERESPONSE']._serialized_start=3373 + _globals['_TENANTSERVICEINVITEDELETERESPONSE']._serialized_end=3408 + _globals['_TENANTSERVICEUPDATEMEMBERREQUEST']._serialized_start=3411 + _globals['_TENANTSERVICEUPDATEMEMBERREQUEST']._serialized_end=3552 + _globals['_TENANTSERVICEUPDATEMEMBERRESPONSE']._serialized_start=3554 + _globals['_TENANTSERVICEUPDATEMEMBERRESPONSE']._serialized_end=3659 + _globals['_TENANTSERVICE']._serialized_start=3662 + _globals['_TENANTSERVICE']._serialized_end=5269 # @@protoc_insertion_point(module_scope) diff --git a/python/metalstack/api/v2/tenant_pb2.pyi b/python/metalstack/api/v2/tenant_pb2.pyi index 00b19f25..190f6252 100644 --- a/python/metalstack/api/v2/tenant_pb2.pyi +++ b/python/metalstack/api/v2/tenant_pb2.pyi @@ -196,6 +196,16 @@ class TenantServiceRemoveMemberRequest(_message.Message): member: str def __init__(self, login: _Optional[str] = ..., member: _Optional[str] = ...) -> None: ... +class TenantServiceLeaveRequest(_message.Message): + __slots__ = ("login",) + LOGIN_FIELD_NUMBER: _ClassVar[int] + login: str + def __init__(self, login: _Optional[str] = ...) -> None: ... + +class TenantServiceLeaveResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + class TenantServiceRemoveMemberResponse(_message.Message): __slots__ = () def __init__(self) -> None: ...