diff --git a/doc/index.html b/doc/index.html index d57f5f76..aac2728d 100644 --- a/doc/index.html +++ b/doc/index.html @@ -2770,6 +2770,14 @@

Table of Contents

MBootServiceRegisterResponse +
  • + MBootServiceSendEventRequest +
  • + +
  • + MBootServiceSendEventResponse +
  • +
  • MBootServiceSuperUserPasswordRequest
  • @@ -22412,6 +22420,44 @@

    BootServiceRegisterResp +

    BootServiceSendEventRequest

    +

    BootServiceEventSendRequest is the request payload for sending a provisioning event.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    uuidstring

    UUID of the machine.

    eventmetalstack.api.v2.MachineProvisioningEvent

    Event is the machine provisioning event.

    + + + + + +

    BootServiceSendEventResponse

    +

    BootServiceEventSendResponse is the response payload for sending provisioning events.

    + + + + +

    BootServiceSuperUserPasswordRequest

    BootServiceSuperUserPasswordRequest this call returns the password for the machine superuser.

    @@ -22578,6 +22624,13 @@

    BootService

    InstallationSucceeded tells metal-apiserver that installation was successful.

    + + SendEvent + BootServiceSendEventRequest + BootServiceSendEventResponse +

    SendEvent is used to send provisioning events to the metal-apiserver.

    + + diff --git a/go/metalstack/infra/v2/boot.pb.go b/go/metalstack/infra/v2/boot.pb.go index 03162a7b..1241084e 100644 --- a/go/metalstack/infra/v2/boot.pb.go +++ b/go/metalstack/infra/v2/boot.pb.go @@ -821,6 +821,98 @@ func (x *BootServiceSuperUserPasswordResponse) GetSuperUserPassword() string { return "" } +// BootServiceEventSendRequest is the request payload for sending a provisioning event. +type BootServiceSendEventRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // UUID of the machine. + Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` + // Event is the machine provisioning event. + Event *v2.MachineProvisioningEvent `protobuf:"bytes,2,opt,name=event,proto3" json:"event,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BootServiceSendEventRequest) Reset() { + *x = BootServiceSendEventRequest{} + mi := &file_metalstack_infra_v2_boot_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BootServiceSendEventRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BootServiceSendEventRequest) ProtoMessage() {} + +func (x *BootServiceSendEventRequest) ProtoReflect() protoreflect.Message { + mi := &file_metalstack_infra_v2_boot_proto_msgTypes[14] + 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 BootServiceSendEventRequest.ProtoReflect.Descriptor instead. +func (*BootServiceSendEventRequest) Descriptor() ([]byte, []int) { + return file_metalstack_infra_v2_boot_proto_rawDescGZIP(), []int{14} +} + +func (x *BootServiceSendEventRequest) GetUuid() string { + if x != nil { + return x.Uuid + } + return "" +} + +func (x *BootServiceSendEventRequest) GetEvent() *v2.MachineProvisioningEvent { + if x != nil { + return x.Event + } + return nil +} + +// BootServiceEventSendResponse is the response payload for sending provisioning events. +type BootServiceSendEventResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BootServiceSendEventResponse) Reset() { + *x = BootServiceSendEventResponse{} + mi := &file_metalstack_infra_v2_boot_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BootServiceSendEventResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BootServiceSendEventResponse) ProtoMessage() {} + +func (x *BootServiceSendEventResponse) ProtoReflect() protoreflect.Message { + mi := &file_metalstack_infra_v2_boot_proto_msgTypes[15] + 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 BootServiceSendEventResponse.ProtoReflect.Descriptor instead. +func (*BootServiceSendEventResponse) Descriptor() ([]byte, []int) { + return file_metalstack_infra_v2_boot_proto_rawDescGZIP(), []int{15} +} + var File_metalstack_infra_v2_boot_proto protoreflect.FileDescriptor const file_metalstack_infra_v2_boot_proto_rawDesc = "" + @@ -876,7 +968,11 @@ const file_metalstack_infra_v2_boot_proto_rawDesc = "" + "$BootServiceSuperUserPasswordResponse\x12)\n" + "\x10feature_disabled\x18\x01 \x01(\bR\x0ffeatureDisabled\x12:\n" + "\x13super_user_password\x18\x02 \x01(\tB\n" + - "\xbaH\ar\x05\x10\x02\x18\x80\x01R\x11superUserPassword2\x92\a\n" + + "\xbaH\ar\x05\x10\x02\x18\x80\x01R\x11superUserPassword\"~\n" + + "\x1bBootServiceSendEventRequest\x12\x1c\n" + + "\x04uuid\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12A\n" + + "\x05event\x18\x02 \x01(\v2+.metalstack.api.v2.MachineProvisioningEventR\x05event\"\x1e\n" + + "\x1cBootServiceSendEventResponse2\x8f\b\n" + "\vBootService\x12l\n" + "\x04Dhcp\x12+.metalstack.infra.v2.BootServiceDhcpRequest\x1a,.metalstack.infra.v2.BootServiceDhcpResponse\"\t\xe0\xf3\x18\x01\xea\xf3\x18\x01\x01\x12l\n" + "\x04Boot\x12+.metalstack.infra.v2.BootServiceBootRequest\x1a,.metalstack.infra.v2.BootServiceBootResponse\"\t\xe0\xf3\x18\x01\xea\xf3\x18\x01\x01\x12\x84\x01\n" + @@ -884,7 +980,8 @@ const file_metalstack_infra_v2_boot_proto_rawDesc = "" + "\x11SuperUserPassword\x128.metalstack.infra.v2.BootServiceSuperUserPasswordRequest\x1a9.metalstack.infra.v2.BootServiceSuperUserPasswordResponse\"\t\xe0\xf3\x18\x01\xf2\xf3\x18\x01\x01\x12x\n" + "\bRegister\x12/.metalstack.infra.v2.BootServiceRegisterRequest\x1a0.metalstack.infra.v2.BootServiceRegisterResponse\"\t\xe0\xf3\x18\x01\xf2\xf3\x18\x01\x01\x12n\n" + "\x04Wait\x12+.metalstack.infra.v2.BootServiceWaitRequest\x1a,.metalstack.infra.v2.BootServiceWaitResponse\"\t\xe0\xf3\x18\x01\xf2\xf3\x18\x01\x010\x01\x12\x9f\x01\n" + - "\x15InstallationSucceeded\x12<.metalstack.infra.v2.BootServiceInstallationSucceededRequest\x1a=.metalstack.infra.v2.BootServiceInstallationSucceededResponse\"\t\xe0\xf3\x18\x01\xf2\xf3\x18\x01\x01B\xcd\x01\n" + + "\x15InstallationSucceeded\x12<.metalstack.infra.v2.BootServiceInstallationSucceededRequest\x1a=.metalstack.infra.v2.BootServiceInstallationSucceededResponse\"\t\xe0\xf3\x18\x01\xf2\xf3\x18\x01\x01\x12{\n" + + "\tSendEvent\x120.metalstack.infra.v2.BootServiceSendEventRequest\x1a1.metalstack.infra.v2.BootServiceSendEventResponse\"\t\xe0\xf3\x18\x01\xf2\xf3\x18\x01\x01B\xcd\x01\n" + "\x17com.metalstack.infra.v2B\tBootProtoP\x01Z9github.com/metal-stack/api/go/metalstack/infra/v2;infrav2\xa2\x02\x03MIX\xaa\x02\x13Metalstack.Infra.V2\xca\x02\x13Metalstack\\Infra\\V2\xe2\x02\x1fMetalstack\\Infra\\V2\\GPBMetadata\xea\x02\x15Metalstack::Infra::V2b\x06proto3" var ( @@ -899,7 +996,7 @@ func file_metalstack_infra_v2_boot_proto_rawDescGZIP() []byte { return file_metalstack_infra_v2_boot_proto_rawDescData } -var file_metalstack_infra_v2_boot_proto_msgTypes = make([]protoimpl.MessageInfo, 14) +var file_metalstack_infra_v2_boot_proto_msgTypes = make([]protoimpl.MessageInfo, 16) var file_metalstack_infra_v2_boot_proto_goTypes = []any{ (*BootServiceDhcpRequest)(nil), // 0: metalstack.infra.v2.BootServiceDhcpRequest (*BootServiceDhcpResponse)(nil), // 1: metalstack.infra.v2.BootServiceDhcpResponse @@ -915,43 +1012,49 @@ var file_metalstack_infra_v2_boot_proto_goTypes = []any{ (*BootServiceInstallationSucceededResponse)(nil), // 11: metalstack.infra.v2.BootServiceInstallationSucceededResponse (*BootServiceSuperUserPasswordRequest)(nil), // 12: metalstack.infra.v2.BootServiceSuperUserPasswordRequest (*BootServiceSuperUserPasswordResponse)(nil), // 13: metalstack.infra.v2.BootServiceSuperUserPasswordResponse - (*durationpb.Duration)(nil), // 14: google.protobuf.Duration - (*v2.Labels)(nil), // 15: metalstack.api.v2.Labels - (*v2.Token)(nil), // 16: metalstack.api.v2.Token - (*v2.MachineHardware)(nil), // 17: metalstack.api.v2.MachineHardware - (*v2.MachineBios)(nil), // 18: metalstack.api.v2.MachineBios - (*v2.MachineBMC)(nil), // 19: metalstack.api.v2.MachineBMC - (*v2.MachineFRU)(nil), // 20: metalstack.api.v2.MachineFRU - (*v2.MachineAllocation)(nil), // 21: metalstack.api.v2.MachineAllocation + (*BootServiceSendEventRequest)(nil), // 14: metalstack.infra.v2.BootServiceSendEventRequest + (*BootServiceSendEventResponse)(nil), // 15: metalstack.infra.v2.BootServiceSendEventResponse + (*durationpb.Duration)(nil), // 16: google.protobuf.Duration + (*v2.Labels)(nil), // 17: metalstack.api.v2.Labels + (*v2.Token)(nil), // 18: metalstack.api.v2.Token + (*v2.MachineHardware)(nil), // 19: metalstack.api.v2.MachineHardware + (*v2.MachineBios)(nil), // 20: metalstack.api.v2.MachineBios + (*v2.MachineBMC)(nil), // 21: metalstack.api.v2.MachineBMC + (*v2.MachineFRU)(nil), // 22: metalstack.api.v2.MachineFRU + (*v2.MachineAllocation)(nil), // 23: metalstack.api.v2.MachineAllocation + (*v2.MachineProvisioningEvent)(nil), // 24: metalstack.api.v2.MachineProvisioningEvent } var file_metalstack_infra_v2_boot_proto_depIdxs = []int32{ - 14, // 0: metalstack.infra.v2.BootServiceMachineTokenRequest.expires:type_name -> google.protobuf.Duration - 15, // 1: metalstack.infra.v2.BootServiceMachineTokenRequest.labels:type_name -> metalstack.api.v2.Labels - 16, // 2: metalstack.infra.v2.BootServiceMachineTokenResponse.token:type_name -> metalstack.api.v2.Token - 17, // 3: metalstack.infra.v2.BootServiceRegisterRequest.hardware:type_name -> metalstack.api.v2.MachineHardware - 18, // 4: metalstack.infra.v2.BootServiceRegisterRequest.bios:type_name -> metalstack.api.v2.MachineBios - 19, // 5: metalstack.infra.v2.BootServiceRegisterRequest.bmc:type_name -> metalstack.api.v2.MachineBMC - 20, // 6: metalstack.infra.v2.BootServiceRegisterRequest.fru:type_name -> metalstack.api.v2.MachineFRU - 21, // 7: metalstack.infra.v2.BootServiceWaitResponse.allocation:type_name -> metalstack.api.v2.MachineAllocation - 0, // 8: metalstack.infra.v2.BootService.Dhcp:input_type -> metalstack.infra.v2.BootServiceDhcpRequest - 4, // 9: metalstack.infra.v2.BootService.Boot:input_type -> metalstack.infra.v2.BootServiceBootRequest - 2, // 10: metalstack.infra.v2.BootService.MachineToken:input_type -> metalstack.infra.v2.BootServiceMachineTokenRequest - 12, // 11: metalstack.infra.v2.BootService.SuperUserPassword:input_type -> metalstack.infra.v2.BootServiceSuperUserPasswordRequest - 6, // 12: metalstack.infra.v2.BootService.Register:input_type -> metalstack.infra.v2.BootServiceRegisterRequest - 8, // 13: metalstack.infra.v2.BootService.Wait:input_type -> metalstack.infra.v2.BootServiceWaitRequest - 10, // 14: metalstack.infra.v2.BootService.InstallationSucceeded:input_type -> metalstack.infra.v2.BootServiceInstallationSucceededRequest - 1, // 15: metalstack.infra.v2.BootService.Dhcp:output_type -> metalstack.infra.v2.BootServiceDhcpResponse - 5, // 16: metalstack.infra.v2.BootService.Boot:output_type -> metalstack.infra.v2.BootServiceBootResponse - 3, // 17: metalstack.infra.v2.BootService.MachineToken:output_type -> metalstack.infra.v2.BootServiceMachineTokenResponse - 13, // 18: metalstack.infra.v2.BootService.SuperUserPassword:output_type -> metalstack.infra.v2.BootServiceSuperUserPasswordResponse - 7, // 19: metalstack.infra.v2.BootService.Register:output_type -> metalstack.infra.v2.BootServiceRegisterResponse - 9, // 20: metalstack.infra.v2.BootService.Wait:output_type -> metalstack.infra.v2.BootServiceWaitResponse - 11, // 21: metalstack.infra.v2.BootService.InstallationSucceeded:output_type -> metalstack.infra.v2.BootServiceInstallationSucceededResponse - 15, // [15:22] is the sub-list for method output_type - 8, // [8:15] is the sub-list for method input_type - 8, // [8:8] is the sub-list for extension type_name - 8, // [8:8] is the sub-list for extension extendee - 0, // [0:8] is the sub-list for field type_name + 16, // 0: metalstack.infra.v2.BootServiceMachineTokenRequest.expires:type_name -> google.protobuf.Duration + 17, // 1: metalstack.infra.v2.BootServiceMachineTokenRequest.labels:type_name -> metalstack.api.v2.Labels + 18, // 2: metalstack.infra.v2.BootServiceMachineTokenResponse.token:type_name -> metalstack.api.v2.Token + 19, // 3: metalstack.infra.v2.BootServiceRegisterRequest.hardware:type_name -> metalstack.api.v2.MachineHardware + 20, // 4: metalstack.infra.v2.BootServiceRegisterRequest.bios:type_name -> metalstack.api.v2.MachineBios + 21, // 5: metalstack.infra.v2.BootServiceRegisterRequest.bmc:type_name -> metalstack.api.v2.MachineBMC + 22, // 6: metalstack.infra.v2.BootServiceRegisterRequest.fru:type_name -> metalstack.api.v2.MachineFRU + 23, // 7: metalstack.infra.v2.BootServiceWaitResponse.allocation:type_name -> metalstack.api.v2.MachineAllocation + 24, // 8: metalstack.infra.v2.BootServiceSendEventRequest.event:type_name -> metalstack.api.v2.MachineProvisioningEvent + 0, // 9: metalstack.infra.v2.BootService.Dhcp:input_type -> metalstack.infra.v2.BootServiceDhcpRequest + 4, // 10: metalstack.infra.v2.BootService.Boot:input_type -> metalstack.infra.v2.BootServiceBootRequest + 2, // 11: metalstack.infra.v2.BootService.MachineToken:input_type -> metalstack.infra.v2.BootServiceMachineTokenRequest + 12, // 12: metalstack.infra.v2.BootService.SuperUserPassword:input_type -> metalstack.infra.v2.BootServiceSuperUserPasswordRequest + 6, // 13: metalstack.infra.v2.BootService.Register:input_type -> metalstack.infra.v2.BootServiceRegisterRequest + 8, // 14: metalstack.infra.v2.BootService.Wait:input_type -> metalstack.infra.v2.BootServiceWaitRequest + 10, // 15: metalstack.infra.v2.BootService.InstallationSucceeded:input_type -> metalstack.infra.v2.BootServiceInstallationSucceededRequest + 14, // 16: metalstack.infra.v2.BootService.SendEvent:input_type -> metalstack.infra.v2.BootServiceSendEventRequest + 1, // 17: metalstack.infra.v2.BootService.Dhcp:output_type -> metalstack.infra.v2.BootServiceDhcpResponse + 5, // 18: metalstack.infra.v2.BootService.Boot:output_type -> metalstack.infra.v2.BootServiceBootResponse + 3, // 19: metalstack.infra.v2.BootService.MachineToken:output_type -> metalstack.infra.v2.BootServiceMachineTokenResponse + 13, // 20: metalstack.infra.v2.BootService.SuperUserPassword:output_type -> metalstack.infra.v2.BootServiceSuperUserPasswordResponse + 7, // 21: metalstack.infra.v2.BootService.Register:output_type -> metalstack.infra.v2.BootServiceRegisterResponse + 9, // 22: metalstack.infra.v2.BootService.Wait:output_type -> metalstack.infra.v2.BootServiceWaitResponse + 11, // 23: metalstack.infra.v2.BootService.InstallationSucceeded:output_type -> metalstack.infra.v2.BootServiceInstallationSucceededResponse + 15, // 24: metalstack.infra.v2.BootService.SendEvent:output_type -> metalstack.infra.v2.BootServiceSendEventResponse + 17, // [17:25] is the sub-list for method output_type + 9, // [9:17] is the sub-list for method input_type + 9, // [9:9] is the sub-list for extension type_name + 9, // [9:9] is the sub-list for extension extendee + 0, // [0:9] is the sub-list for field type_name } func init() { file_metalstack_infra_v2_boot_proto_init() } @@ -966,7 +1069,7 @@ func file_metalstack_infra_v2_boot_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_metalstack_infra_v2_boot_proto_rawDesc), len(file_metalstack_infra_v2_boot_proto_rawDesc)), NumEnums: 0, - NumMessages: 14, + NumMessages: 16, NumExtensions: 0, NumServices: 1, }, diff --git a/go/metalstack/infra/v2/infrav2connect/boot.connect.go b/go/metalstack/infra/v2/infrav2connect/boot.connect.go index 5a46ccdf..ea23d3af 100644 --- a/go/metalstack/infra/v2/infrav2connect/boot.connect.go +++ b/go/metalstack/infra/v2/infrav2connect/boot.connect.go @@ -50,6 +50,8 @@ const ( // BootServiceInstallationSucceededProcedure is the fully-qualified name of the BootService's // InstallationSucceeded RPC. BootServiceInstallationSucceededProcedure = "/metalstack.infra.v2.BootService/InstallationSucceeded" + // BootServiceSendEventProcedure is the fully-qualified name of the BootService's SendEvent RPC. + BootServiceSendEventProcedure = "/metalstack.infra.v2.BootService/SendEvent" ) // BootServiceClient is a client for the metalstack.infra.v2.BootService service. @@ -68,6 +70,8 @@ type BootServiceClient interface { Wait(context.Context, *v2.BootServiceWaitRequest) (*connect.ServerStreamForClient[v2.BootServiceWaitResponse], error) // InstallationSucceeded tells metal-apiserver that installation was successful. InstallationSucceeded(context.Context, *v2.BootServiceInstallationSucceededRequest) (*v2.BootServiceInstallationSucceededResponse, error) + // SendEvent is used to send provisioning events to the metal-apiserver. + SendEvent(context.Context, *v2.BootServiceSendEventRequest) (*v2.BootServiceSendEventResponse, error) } // NewBootServiceClient constructs a client for the metalstack.infra.v2.BootService service. By @@ -123,6 +127,12 @@ func NewBootServiceClient(httpClient connect.HTTPClient, baseURL string, opts .. connect.WithSchema(bootServiceMethods.ByName("InstallationSucceeded")), connect.WithClientOptions(opts...), ), + sendEvent: connect.NewClient[v2.BootServiceSendEventRequest, v2.BootServiceSendEventResponse]( + httpClient, + baseURL+BootServiceSendEventProcedure, + connect.WithSchema(bootServiceMethods.ByName("SendEvent")), + connect.WithClientOptions(opts...), + ), } } @@ -135,6 +145,7 @@ type bootServiceClient struct { register *connect.Client[v2.BootServiceRegisterRequest, v2.BootServiceRegisterResponse] wait *connect.Client[v2.BootServiceWaitRequest, v2.BootServiceWaitResponse] installationSucceeded *connect.Client[v2.BootServiceInstallationSucceededRequest, v2.BootServiceInstallationSucceededResponse] + sendEvent *connect.Client[v2.BootServiceSendEventRequest, v2.BootServiceSendEventResponse] } // Dhcp calls metalstack.infra.v2.BootService.Dhcp. @@ -196,6 +207,15 @@ func (c *bootServiceClient) InstallationSucceeded(ctx context.Context, req *v2.B return nil, err } +// SendEvent calls metalstack.infra.v2.BootService.SendEvent. +func (c *bootServiceClient) SendEvent(ctx context.Context, req *v2.BootServiceSendEventRequest) (*v2.BootServiceSendEventResponse, error) { + response, err := c.sendEvent.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err +} + // BootServiceHandler is an implementation of the metalstack.infra.v2.BootService service. type BootServiceHandler interface { // Dhcp handles the first DHCP request (option 97). A ProvisioningEventPXEBooting is fired. @@ -212,6 +232,8 @@ type BootServiceHandler interface { Wait(context.Context, *v2.BootServiceWaitRequest, *connect.ServerStream[v2.BootServiceWaitResponse]) error // InstallationSucceeded tells metal-apiserver that installation was successful. InstallationSucceeded(context.Context, *v2.BootServiceInstallationSucceededRequest) (*v2.BootServiceInstallationSucceededResponse, error) + // SendEvent is used to send provisioning events to the metal-apiserver. + SendEvent(context.Context, *v2.BootServiceSendEventRequest) (*v2.BootServiceSendEventResponse, error) } // NewBootServiceHandler builds an HTTP handler from the service implementation. It returns the path @@ -263,6 +285,12 @@ func NewBootServiceHandler(svc BootServiceHandler, opts ...connect.HandlerOption connect.WithSchema(bootServiceMethods.ByName("InstallationSucceeded")), connect.WithHandlerOptions(opts...), ) + bootServiceSendEventHandler := connect.NewUnaryHandlerSimple( + BootServiceSendEventProcedure, + svc.SendEvent, + connect.WithSchema(bootServiceMethods.ByName("SendEvent")), + connect.WithHandlerOptions(opts...), + ) return "/metalstack.infra.v2.BootService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { switch r.URL.Path { case BootServiceDhcpProcedure: @@ -279,6 +307,8 @@ func NewBootServiceHandler(svc BootServiceHandler, opts ...connect.HandlerOption bootServiceWaitHandler.ServeHTTP(w, r) case BootServiceInstallationSucceededProcedure: bootServiceInstallationSucceededHandler.ServeHTTP(w, r) + case BootServiceSendEventProcedure: + bootServiceSendEventHandler.ServeHTTP(w, r) default: http.NotFound(w, r) } @@ -315,3 +345,7 @@ func (UnimplementedBootServiceHandler) Wait(context.Context, *v2.BootServiceWait func (UnimplementedBootServiceHandler) InstallationSucceeded(context.Context, *v2.BootServiceInstallationSucceededRequest) (*v2.BootServiceInstallationSucceededResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.infra.v2.BootService.InstallationSucceeded is not implemented")) } + +func (UnimplementedBootServiceHandler) SendEvent(context.Context, *v2.BootServiceSendEventRequest) (*v2.BootServiceSendEventResponse, error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.infra.v2.BootService.SendEvent is not implemented")) +} diff --git a/go/permissions/servicepermissions.go b/go/permissions/servicepermissions.go index f6eaedd9..d90e4c40 100755 --- a/go/permissions/servicepermissions.go +++ b/go/permissions/servicepermissions.go @@ -179,6 +179,7 @@ func GetServicePermissions() *ServicePermissions { apiv2.MachineRole_MACHINE_ROLE_EDITOR: map[string]struct{}{ "/metalstack.infra.v2.BootService/InstallationSucceeded": {}, "/metalstack.infra.v2.BootService/Register": {}, + "/metalstack.infra.v2.BootService/SendEvent": {}, "/metalstack.infra.v2.BootService/SuperUserPassword": {}, "/metalstack.infra.v2.BootService/Wait": {}, }, @@ -434,6 +435,7 @@ func GetServicePermissions() *ServicePermissions { "/metalstack.infra.v2.BootService/InstallationSucceeded": {}, "/metalstack.infra.v2.BootService/MachineToken": {}, "/metalstack.infra.v2.BootService/Register": {}, + "/metalstack.infra.v2.BootService/SendEvent": {}, "/metalstack.infra.v2.BootService/SuperUserPassword": {}, "/metalstack.infra.v2.BootService/Wait": {}, "/metalstack.infra.v2.ComponentService/Ping": {}, @@ -563,6 +565,7 @@ func GetServicePermissions() *ServicePermissions { Machine: map[string]bool{ "/metalstack.infra.v2.BootService/InstallationSucceeded": true, "/metalstack.infra.v2.BootService/Register": true, + "/metalstack.infra.v2.BootService/SendEvent": true, "/metalstack.infra.v2.BootService/SuperUserPassword": true, "/metalstack.infra.v2.BootService/Wait": true, }, @@ -762,6 +765,7 @@ func GetServicePermissions() *ServicePermissions { "/metalstack.infra.v2.BootService/InstallationSucceeded": true, "/metalstack.infra.v2.BootService/MachineToken": true, "/metalstack.infra.v2.BootService/Register": true, + "/metalstack.infra.v2.BootService/SendEvent": true, "/metalstack.infra.v2.BootService/SuperUserPassword": true, "/metalstack.infra.v2.BootService/Wait": true, "/metalstack.infra.v2.ComponentService/Ping": false, diff --git a/js/metalstack/infra/v2/boot_pb.d.ts b/js/metalstack/infra/v2/boot_pb.d.ts index 0d3344c7..96ce0768 100644 --- a/js/metalstack/infra/v2/boot_pb.d.ts +++ b/js/metalstack/infra/v2/boot_pb.d.ts @@ -1,7 +1,7 @@ import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; import type { Duration } from "@bufbuild/protobuf/wkt"; import type { Labels } from "../../api/v2/common_pb"; -import type { MachineAllocation, MachineBios, MachineBMC, MachineFRU, MachineHardware } from "../../api/v2/machine_pb"; +import type { MachineAllocation, MachineBios, MachineBMC, MachineFRU, MachineHardware, MachineProvisioningEvent } from "../../api/v2/machine_pb"; import type { Token } from "../../api/v2/token_pb"; import type { Message } from "@bufbuild/protobuf"; /** @@ -360,6 +360,41 @@ export type BootServiceSuperUserPasswordResponse = Message<"metalstack.infra.v2. * Use `create(BootServiceSuperUserPasswordResponseSchema)` to create a new message. */ export declare const BootServiceSuperUserPasswordResponseSchema: GenMessage; +/** + * BootServiceEventSendRequest is the request payload for sending a provisioning event. + * + * @generated from message metalstack.infra.v2.BootServiceSendEventRequest + */ +export type BootServiceSendEventRequest = Message<"metalstack.infra.v2.BootServiceSendEventRequest"> & { + /** + * UUID of the machine. + * + * @generated from field: string uuid = 1; + */ + uuid: string; + /** + * Event is the machine provisioning event. + * + * @generated from field: metalstack.api.v2.MachineProvisioningEvent event = 2; + */ + event?: MachineProvisioningEvent | undefined; +}; +/** + * Describes the message metalstack.infra.v2.BootServiceSendEventRequest. + * Use `create(BootServiceSendEventRequestSchema)` to create a new message. + */ +export declare const BootServiceSendEventRequestSchema: GenMessage; +/** + * BootServiceEventSendResponse is the response payload for sending provisioning events. + * + * @generated from message metalstack.infra.v2.BootServiceSendEventResponse + */ +export type BootServiceSendEventResponse = Message<"metalstack.infra.v2.BootServiceSendEventResponse"> & {}; +/** + * Describes the message metalstack.infra.v2.BootServiceSendEventResponse. + * Use `create(BootServiceSendEventResponseSchema)` to create a new message. + */ +export declare const BootServiceSendEventResponseSchema: GenMessage; /** * BootService provides boot-related operations for pixiecore and metal-hammer. * @@ -438,4 +473,14 @@ export declare const BootService: GenService<{ input: typeof BootServiceInstallationSucceededRequestSchema; output: typeof BootServiceInstallationSucceededResponseSchema; }; + /** + * SendEvent is used to send provisioning events to the metal-apiserver. + * + * @generated from rpc metalstack.infra.v2.BootService.SendEvent + */ + sendEvent: { + methodKind: "unary"; + input: typeof BootServiceSendEventRequestSchema; + output: typeof BootServiceSendEventResponseSchema; + }; }>; diff --git a/js/metalstack/infra/v2/boot_pb.js b/js/metalstack/infra/v2/boot_pb.js index f529fd2b..4d589099 100644 --- a/js/metalstack/infra/v2/boot_pb.js +++ b/js/metalstack/infra/v2/boot_pb.js @@ -11,7 +11,7 @@ import { file_metalstack_api_v2_token } from "../../api/v2/token_pb"; /** * Describes the file metalstack/infra/v2/boot.proto. */ -export const file_metalstack_infra_v2_boot = /*@__PURE__*/ fileDesc("Ch5tZXRhbHN0YWNrL2luZnJhL3YyL2Jvb3QucHJvdG8SE21ldGFsc3RhY2suaW5mcmEudjIiUAoWQm9vdFNlcnZpY2VEaGNwUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIeCglwYXJ0aXRpb24YAiABKAlCC7pICHIG0LOusQIBIhkKF0Jvb3RTZXJ2aWNlRGhjcFJlc3BvbnNlIr0BCh5Cb290U2VydmljZU1hY2hpbmVUb2tlblJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoEdXNlchgCIAEoCUILukgIcgb4s66xAgESPQoHZXhwaXJlcxgDIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkIRukgOqgELGgQIgPUkMgMI2AQSKQoGbGFiZWxzGAQgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzIloKH0Jvb3RTZXJ2aWNlTWFjaGluZVRva2VuUmVzcG9uc2USJwoFdG9rZW4YASABKAsyGC5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlbhIOCgZzZWNyZXQYAiABKAkiUgoWQm9vdFNlcnZpY2VCb290UmVxdWVzdBIYCgNtYWMYASABKAlCC7pICHIGuLOusQIBEh4KCXBhcnRpdGlvbhgCIAEoCUILukgIcgbQs66xAgEifQoXQm9vdFNlcnZpY2VCb290UmVzcG9uc2USGwoGa2VybmVsGAEgASgJQgu6SAhyBuCzrrECARIWCg5pbml0X3JhbV9kaXNrcxgCIAMoCRIhCgdjbWRsaW5lGAMgASgJQgu6SAhyBsizrrECAUgAiAEBQgoKCF9jbWRsaW5lIskCChpCb290U2VydmljZVJlZ2lzdGVyUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARI0CghoYXJkd2FyZRgCIAEoCzIiLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVIYXJkd2FyZRIsCgRiaW9zGAMgASgLMh4ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJpb3MSKgoDYm1jGAQgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJNQxIqCgNmcnUYBSABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lRlJVEgwKBHRhZ3MYBiADKAkSKQoUbWV0YWxfaGFtbWVyX3ZlcnNpb24YByABKAlCC7pICHIGyLOusQIBEh4KCXBhcnRpdGlvbhgIIAEoCUILukgIcgbQs66xAgEicAobQm9vdFNlcnZpY2VSZWdpc3RlclJlc3BvbnNlEhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEhkKBHNpemUYAiABKAlCC7pICHIGyLOusQIBEh4KCXBhcnRpdGlvbhgDIAEoCUILukgIcgbQs66xAgEiMAoWQm9vdFNlcnZpY2VXYWl0UmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABASJTChdCb290U2VydmljZVdhaXRSZXNwb25zZRI4CgphbGxvY2F0aW9uGAEgASgLMiQubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUFsbG9jYXRpb24iZwonQm9vdFNlcnZpY2VJbnN0YWxsYXRpb25TdWNjZWVkZWRSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEiQKEGNvbnNvbGVfcGFzc3dvcmQYAiABKAlCCrpIB3IFEAIYgAEiKgooQm9vdFNlcnZpY2VJbnN0YWxsYXRpb25TdWNjZWVkZWRSZXNwb25zZSI9CiNCb290U2VydmljZVN1cGVyVXNlclBhc3N3b3JkUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABASJpCiRCb290U2VydmljZVN1cGVyVXNlclBhc3N3b3JkUmVzcG9uc2USGAoQZmVhdHVyZV9kaXNhYmxlZBgBIAEoCBInChNzdXBlcl91c2VyX3Bhc3N3b3JkGAIgASgJQgq6SAdyBRACGIABMpIHCgtCb290U2VydmljZRJsCgREaGNwEisubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZURoY3BSZXF1ZXN0GiwubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZURoY3BSZXNwb25zZSIJ4PMYAerzGAEBEmwKBEJvb3QSKy5tZXRhbHN0YWNrLmluZnJhLnYyLkJvb3RTZXJ2aWNlQm9vdFJlcXVlc3QaLC5tZXRhbHN0YWNrLmluZnJhLnYyLkJvb3RTZXJ2aWNlQm9vdFJlc3BvbnNlIgng8xgB6vMYAQEShAEKDE1hY2hpbmVUb2tlbhIzLm1ldGFsc3RhY2suaW5mcmEudjIuQm9vdFNlcnZpY2VNYWNoaW5lVG9rZW5SZXF1ZXN0GjQubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZU1hY2hpbmVUb2tlblJlc3BvbnNlIgng8xgB6vMYAQESkwEKEVN1cGVyVXNlclBhc3N3b3JkEjgubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZVN1cGVyVXNlclBhc3N3b3JkUmVxdWVzdBo5Lm1ldGFsc3RhY2suaW5mcmEudjIuQm9vdFNlcnZpY2VTdXBlclVzZXJQYXNzd29yZFJlc3BvbnNlIgng8xgB8vMYAQESeAoIUmVnaXN0ZXISLy5tZXRhbHN0YWNrLmluZnJhLnYyLkJvb3RTZXJ2aWNlUmVnaXN0ZXJSZXF1ZXN0GjAubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZVJlZ2lzdGVyUmVzcG9uc2UiCeDzGAHy8xgBARJuCgRXYWl0EisubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZVdhaXRSZXF1ZXN0GiwubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZVdhaXRSZXNwb25zZSIJ4PMYAfLzGAEBMAESnwEKFUluc3RhbGxhdGlvblN1Y2NlZWRlZBI8Lm1ldGFsc3RhY2suaW5mcmEudjIuQm9vdFNlcnZpY2VJbnN0YWxsYXRpb25TdWNjZWVkZWRSZXF1ZXN0Gj0ubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZUluc3RhbGxhdGlvblN1Y2NlZWRlZFJlc3BvbnNlIgng8xgB8vMYAQFCzQEKF2NvbS5tZXRhbHN0YWNrLmluZnJhLnYyQglCb290UHJvdG9QAVo5Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9pbmZyYS92MjtpbmZyYXYyogIDTUlYqgITTWV0YWxzdGFjay5JbmZyYS5WMsoCE01ldGFsc3RhY2tcSW5mcmFcVjLiAh9NZXRhbHN0YWNrXEluZnJhXFYyXEdQQk1ldGFkYXRh6gIVTWV0YWxzdGFjazo6SW5mcmE6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_duration, file_metalstack_api_v2_common, file_metalstack_api_v2_machine, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_token]); +export const file_metalstack_infra_v2_boot = /*@__PURE__*/ fileDesc("Ch5tZXRhbHN0YWNrL2luZnJhL3YyL2Jvb3QucHJvdG8SE21ldGFsc3RhY2suaW5mcmEudjIiUAoWQm9vdFNlcnZpY2VEaGNwUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIeCglwYXJ0aXRpb24YAiABKAlCC7pICHIG0LOusQIBIhkKF0Jvb3RTZXJ2aWNlRGhjcFJlc3BvbnNlIr0BCh5Cb290U2VydmljZU1hY2hpbmVUb2tlblJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoEdXNlchgCIAEoCUILukgIcgb4s66xAgESPQoHZXhwaXJlcxgDIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkIRukgOqgELGgQIgPUkMgMI2AQSKQoGbGFiZWxzGAQgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzIloKH0Jvb3RTZXJ2aWNlTWFjaGluZVRva2VuUmVzcG9uc2USJwoFdG9rZW4YASABKAsyGC5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlbhIOCgZzZWNyZXQYAiABKAkiUgoWQm9vdFNlcnZpY2VCb290UmVxdWVzdBIYCgNtYWMYASABKAlCC7pICHIGuLOusQIBEh4KCXBhcnRpdGlvbhgCIAEoCUILukgIcgbQs66xAgEifQoXQm9vdFNlcnZpY2VCb290UmVzcG9uc2USGwoGa2VybmVsGAEgASgJQgu6SAhyBuCzrrECARIWCg5pbml0X3JhbV9kaXNrcxgCIAMoCRIhCgdjbWRsaW5lGAMgASgJQgu6SAhyBsizrrECAUgAiAEBQgoKCF9jbWRsaW5lIskCChpCb290U2VydmljZVJlZ2lzdGVyUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARI0CghoYXJkd2FyZRgCIAEoCzIiLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVIYXJkd2FyZRIsCgRiaW9zGAMgASgLMh4ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJpb3MSKgoDYm1jGAQgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJNQxIqCgNmcnUYBSABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lRlJVEgwKBHRhZ3MYBiADKAkSKQoUbWV0YWxfaGFtbWVyX3ZlcnNpb24YByABKAlCC7pICHIGyLOusQIBEh4KCXBhcnRpdGlvbhgIIAEoCUILukgIcgbQs66xAgEicAobQm9vdFNlcnZpY2VSZWdpc3RlclJlc3BvbnNlEhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEhkKBHNpemUYAiABKAlCC7pICHIGyLOusQIBEh4KCXBhcnRpdGlvbhgDIAEoCUILukgIcgbQs66xAgEiMAoWQm9vdFNlcnZpY2VXYWl0UmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABASJTChdCb290U2VydmljZVdhaXRSZXNwb25zZRI4CgphbGxvY2F0aW9uGAEgASgLMiQubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUFsbG9jYXRpb24iZwonQm9vdFNlcnZpY2VJbnN0YWxsYXRpb25TdWNjZWVkZWRSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEiQKEGNvbnNvbGVfcGFzc3dvcmQYAiABKAlCCrpIB3IFEAIYgAEiKgooQm9vdFNlcnZpY2VJbnN0YWxsYXRpb25TdWNjZWVkZWRSZXNwb25zZSI9CiNCb290U2VydmljZVN1cGVyVXNlclBhc3N3b3JkUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABASJpCiRCb290U2VydmljZVN1cGVyVXNlclBhc3N3b3JkUmVzcG9uc2USGAoQZmVhdHVyZV9kaXNhYmxlZBgBIAEoCBInChNzdXBlcl91c2VyX3Bhc3N3b3JkGAIgASgJQgq6SAdyBRACGIABInEKG0Jvb3RTZXJ2aWNlU2VuZEV2ZW50UmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARI6CgVldmVudBgCIAEoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudCIeChxCb290U2VydmljZVNlbmRFdmVudFJlc3BvbnNlMo8ICgtCb290U2VydmljZRJsCgREaGNwEisubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZURoY3BSZXF1ZXN0GiwubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZURoY3BSZXNwb25zZSIJ4PMYAerzGAEBEmwKBEJvb3QSKy5tZXRhbHN0YWNrLmluZnJhLnYyLkJvb3RTZXJ2aWNlQm9vdFJlcXVlc3QaLC5tZXRhbHN0YWNrLmluZnJhLnYyLkJvb3RTZXJ2aWNlQm9vdFJlc3BvbnNlIgng8xgB6vMYAQEShAEKDE1hY2hpbmVUb2tlbhIzLm1ldGFsc3RhY2suaW5mcmEudjIuQm9vdFNlcnZpY2VNYWNoaW5lVG9rZW5SZXF1ZXN0GjQubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZU1hY2hpbmVUb2tlblJlc3BvbnNlIgng8xgB6vMYAQESkwEKEVN1cGVyVXNlclBhc3N3b3JkEjgubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZVN1cGVyVXNlclBhc3N3b3JkUmVxdWVzdBo5Lm1ldGFsc3RhY2suaW5mcmEudjIuQm9vdFNlcnZpY2VTdXBlclVzZXJQYXNzd29yZFJlc3BvbnNlIgng8xgB8vMYAQESeAoIUmVnaXN0ZXISLy5tZXRhbHN0YWNrLmluZnJhLnYyLkJvb3RTZXJ2aWNlUmVnaXN0ZXJSZXF1ZXN0GjAubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZVJlZ2lzdGVyUmVzcG9uc2UiCeDzGAHy8xgBARJuCgRXYWl0EisubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZVdhaXRSZXF1ZXN0GiwubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZVdhaXRSZXNwb25zZSIJ4PMYAfLzGAEBMAESnwEKFUluc3RhbGxhdGlvblN1Y2NlZWRlZBI8Lm1ldGFsc3RhY2suaW5mcmEudjIuQm9vdFNlcnZpY2VJbnN0YWxsYXRpb25TdWNjZWVkZWRSZXF1ZXN0Gj0ubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZUluc3RhbGxhdGlvblN1Y2NlZWRlZFJlc3BvbnNlIgng8xgB8vMYAQESewoJU2VuZEV2ZW50EjAubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZVNlbmRFdmVudFJlcXVlc3QaMS5tZXRhbHN0YWNrLmluZnJhLnYyLkJvb3RTZXJ2aWNlU2VuZEV2ZW50UmVzcG9uc2UiCeDzGAHy8xgBAULNAQoXY29tLm1ldGFsc3RhY2suaW5mcmEudjJCCUJvb3RQcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2luZnJhL3YyO2luZnJhdjKiAgNNSViqAhNNZXRhbHN0YWNrLkluZnJhLlYyygITTWV0YWxzdGFja1xJbmZyYVxWMuICH01ldGFsc3RhY2tcSW5mcmFcVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpJbmZyYTo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_google_protobuf_duration, file_metalstack_api_v2_common, file_metalstack_api_v2_machine, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_token]); /** * Describes the message metalstack.infra.v2.BootServiceDhcpRequest. * Use `create(BootServiceDhcpRequestSchema)` to create a new message. @@ -82,6 +82,16 @@ export const BootServiceSuperUserPasswordRequestSchema = /*@__PURE__*/ messageDe * Use `create(BootServiceSuperUserPasswordResponseSchema)` to create a new message. */ export const BootServiceSuperUserPasswordResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_boot, 13); +/** + * Describes the message metalstack.infra.v2.BootServiceSendEventRequest. + * Use `create(BootServiceSendEventRequestSchema)` to create a new message. + */ +export const BootServiceSendEventRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_boot, 14); +/** + * Describes the message metalstack.infra.v2.BootServiceSendEventResponse. + * Use `create(BootServiceSendEventResponseSchema)` to create a new message. + */ +export const BootServiceSendEventResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_boot, 15); /** * BootService provides boot-related operations for pixiecore and metal-hammer. * diff --git a/js/metalstack/infra/v2/boot_pb.ts b/js/metalstack/infra/v2/boot_pb.ts index 01cb711b..fe8a33ef 100644 --- a/js/metalstack/infra/v2/boot_pb.ts +++ b/js/metalstack/infra/v2/boot_pb.ts @@ -9,7 +9,7 @@ import type { Duration } from "@bufbuild/protobuf/wkt"; import { file_google_protobuf_duration } from "@bufbuild/protobuf/wkt"; import type { Labels } from "../../api/v2/common_pb"; import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; -import type { MachineAllocation, MachineBios, MachineBMC, MachineFRU, MachineHardware } from "../../api/v2/machine_pb"; +import type { MachineAllocation, MachineBios, MachineBMC, MachineFRU, MachineHardware, MachineProvisioningEvent } from "../../api/v2/machine_pb"; import { file_metalstack_api_v2_machine } from "../../api/v2/machine_pb"; import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb"; import type { Token } from "../../api/v2/token_pb"; @@ -20,7 +20,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file metalstack/infra/v2/boot.proto. */ export const file_metalstack_infra_v2_boot: GenFile = /*@__PURE__*/ - fileDesc("Ch5tZXRhbHN0YWNrL2luZnJhL3YyL2Jvb3QucHJvdG8SE21ldGFsc3RhY2suaW5mcmEudjIiUAoWQm9vdFNlcnZpY2VEaGNwUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIeCglwYXJ0aXRpb24YAiABKAlCC7pICHIG0LOusQIBIhkKF0Jvb3RTZXJ2aWNlRGhjcFJlc3BvbnNlIr0BCh5Cb290U2VydmljZU1hY2hpbmVUb2tlblJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoEdXNlchgCIAEoCUILukgIcgb4s66xAgESPQoHZXhwaXJlcxgDIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkIRukgOqgELGgQIgPUkMgMI2AQSKQoGbGFiZWxzGAQgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzIloKH0Jvb3RTZXJ2aWNlTWFjaGluZVRva2VuUmVzcG9uc2USJwoFdG9rZW4YASABKAsyGC5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlbhIOCgZzZWNyZXQYAiABKAkiUgoWQm9vdFNlcnZpY2VCb290UmVxdWVzdBIYCgNtYWMYASABKAlCC7pICHIGuLOusQIBEh4KCXBhcnRpdGlvbhgCIAEoCUILukgIcgbQs66xAgEifQoXQm9vdFNlcnZpY2VCb290UmVzcG9uc2USGwoGa2VybmVsGAEgASgJQgu6SAhyBuCzrrECARIWCg5pbml0X3JhbV9kaXNrcxgCIAMoCRIhCgdjbWRsaW5lGAMgASgJQgu6SAhyBsizrrECAUgAiAEBQgoKCF9jbWRsaW5lIskCChpCb290U2VydmljZVJlZ2lzdGVyUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARI0CghoYXJkd2FyZRgCIAEoCzIiLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVIYXJkd2FyZRIsCgRiaW9zGAMgASgLMh4ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJpb3MSKgoDYm1jGAQgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJNQxIqCgNmcnUYBSABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lRlJVEgwKBHRhZ3MYBiADKAkSKQoUbWV0YWxfaGFtbWVyX3ZlcnNpb24YByABKAlCC7pICHIGyLOusQIBEh4KCXBhcnRpdGlvbhgIIAEoCUILukgIcgbQs66xAgEicAobQm9vdFNlcnZpY2VSZWdpc3RlclJlc3BvbnNlEhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEhkKBHNpemUYAiABKAlCC7pICHIGyLOusQIBEh4KCXBhcnRpdGlvbhgDIAEoCUILukgIcgbQs66xAgEiMAoWQm9vdFNlcnZpY2VXYWl0UmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABASJTChdCb290U2VydmljZVdhaXRSZXNwb25zZRI4CgphbGxvY2F0aW9uGAEgASgLMiQubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUFsbG9jYXRpb24iZwonQm9vdFNlcnZpY2VJbnN0YWxsYXRpb25TdWNjZWVkZWRSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEiQKEGNvbnNvbGVfcGFzc3dvcmQYAiABKAlCCrpIB3IFEAIYgAEiKgooQm9vdFNlcnZpY2VJbnN0YWxsYXRpb25TdWNjZWVkZWRSZXNwb25zZSI9CiNCb290U2VydmljZVN1cGVyVXNlclBhc3N3b3JkUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABASJpCiRCb290U2VydmljZVN1cGVyVXNlclBhc3N3b3JkUmVzcG9uc2USGAoQZmVhdHVyZV9kaXNhYmxlZBgBIAEoCBInChNzdXBlcl91c2VyX3Bhc3N3b3JkGAIgASgJQgq6SAdyBRACGIABMpIHCgtCb290U2VydmljZRJsCgREaGNwEisubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZURoY3BSZXF1ZXN0GiwubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZURoY3BSZXNwb25zZSIJ4PMYAerzGAEBEmwKBEJvb3QSKy5tZXRhbHN0YWNrLmluZnJhLnYyLkJvb3RTZXJ2aWNlQm9vdFJlcXVlc3QaLC5tZXRhbHN0YWNrLmluZnJhLnYyLkJvb3RTZXJ2aWNlQm9vdFJlc3BvbnNlIgng8xgB6vMYAQEShAEKDE1hY2hpbmVUb2tlbhIzLm1ldGFsc3RhY2suaW5mcmEudjIuQm9vdFNlcnZpY2VNYWNoaW5lVG9rZW5SZXF1ZXN0GjQubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZU1hY2hpbmVUb2tlblJlc3BvbnNlIgng8xgB6vMYAQESkwEKEVN1cGVyVXNlclBhc3N3b3JkEjgubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZVN1cGVyVXNlclBhc3N3b3JkUmVxdWVzdBo5Lm1ldGFsc3RhY2suaW5mcmEudjIuQm9vdFNlcnZpY2VTdXBlclVzZXJQYXNzd29yZFJlc3BvbnNlIgng8xgB8vMYAQESeAoIUmVnaXN0ZXISLy5tZXRhbHN0YWNrLmluZnJhLnYyLkJvb3RTZXJ2aWNlUmVnaXN0ZXJSZXF1ZXN0GjAubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZVJlZ2lzdGVyUmVzcG9uc2UiCeDzGAHy8xgBARJuCgRXYWl0EisubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZVdhaXRSZXF1ZXN0GiwubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZVdhaXRSZXNwb25zZSIJ4PMYAfLzGAEBMAESnwEKFUluc3RhbGxhdGlvblN1Y2NlZWRlZBI8Lm1ldGFsc3RhY2suaW5mcmEudjIuQm9vdFNlcnZpY2VJbnN0YWxsYXRpb25TdWNjZWVkZWRSZXF1ZXN0Gj0ubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZUluc3RhbGxhdGlvblN1Y2NlZWRlZFJlc3BvbnNlIgng8xgB8vMYAQFCzQEKF2NvbS5tZXRhbHN0YWNrLmluZnJhLnYyQglCb290UHJvdG9QAVo5Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9pbmZyYS92MjtpbmZyYXYyogIDTUlYqgITTWV0YWxzdGFjay5JbmZyYS5WMsoCE01ldGFsc3RhY2tcSW5mcmFcVjLiAh9NZXRhbHN0YWNrXEluZnJhXFYyXEdQQk1ldGFkYXRh6gIVTWV0YWxzdGFjazo6SW5mcmE6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_duration, file_metalstack_api_v2_common, file_metalstack_api_v2_machine, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_token]); + fileDesc("Ch5tZXRhbHN0YWNrL2luZnJhL3YyL2Jvb3QucHJvdG8SE21ldGFsc3RhY2suaW5mcmEudjIiUAoWQm9vdFNlcnZpY2VEaGNwUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIeCglwYXJ0aXRpb24YAiABKAlCC7pICHIG0LOusQIBIhkKF0Jvb3RTZXJ2aWNlRGhjcFJlc3BvbnNlIr0BCh5Cb290U2VydmljZU1hY2hpbmVUb2tlblJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoEdXNlchgCIAEoCUILukgIcgb4s66xAgESPQoHZXhwaXJlcxgDIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkIRukgOqgELGgQIgPUkMgMI2AQSKQoGbGFiZWxzGAQgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzIloKH0Jvb3RTZXJ2aWNlTWFjaGluZVRva2VuUmVzcG9uc2USJwoFdG9rZW4YASABKAsyGC5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlbhIOCgZzZWNyZXQYAiABKAkiUgoWQm9vdFNlcnZpY2VCb290UmVxdWVzdBIYCgNtYWMYASABKAlCC7pICHIGuLOusQIBEh4KCXBhcnRpdGlvbhgCIAEoCUILukgIcgbQs66xAgEifQoXQm9vdFNlcnZpY2VCb290UmVzcG9uc2USGwoGa2VybmVsGAEgASgJQgu6SAhyBuCzrrECARIWCg5pbml0X3JhbV9kaXNrcxgCIAMoCRIhCgdjbWRsaW5lGAMgASgJQgu6SAhyBsizrrECAUgAiAEBQgoKCF9jbWRsaW5lIskCChpCb290U2VydmljZVJlZ2lzdGVyUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARI0CghoYXJkd2FyZRgCIAEoCzIiLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVIYXJkd2FyZRIsCgRiaW9zGAMgASgLMh4ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJpb3MSKgoDYm1jGAQgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJNQxIqCgNmcnUYBSABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lRlJVEgwKBHRhZ3MYBiADKAkSKQoUbWV0YWxfaGFtbWVyX3ZlcnNpb24YByABKAlCC7pICHIGyLOusQIBEh4KCXBhcnRpdGlvbhgIIAEoCUILukgIcgbQs66xAgEicAobQm9vdFNlcnZpY2VSZWdpc3RlclJlc3BvbnNlEhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEhkKBHNpemUYAiABKAlCC7pICHIGyLOusQIBEh4KCXBhcnRpdGlvbhgDIAEoCUILukgIcgbQs66xAgEiMAoWQm9vdFNlcnZpY2VXYWl0UmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABASJTChdCb290U2VydmljZVdhaXRSZXNwb25zZRI4CgphbGxvY2F0aW9uGAEgASgLMiQubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUFsbG9jYXRpb24iZwonQm9vdFNlcnZpY2VJbnN0YWxsYXRpb25TdWNjZWVkZWRSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEiQKEGNvbnNvbGVfcGFzc3dvcmQYAiABKAlCCrpIB3IFEAIYgAEiKgooQm9vdFNlcnZpY2VJbnN0YWxsYXRpb25TdWNjZWVkZWRSZXNwb25zZSI9CiNCb290U2VydmljZVN1cGVyVXNlclBhc3N3b3JkUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABASJpCiRCb290U2VydmljZVN1cGVyVXNlclBhc3N3b3JkUmVzcG9uc2USGAoQZmVhdHVyZV9kaXNhYmxlZBgBIAEoCBInChNzdXBlcl91c2VyX3Bhc3N3b3JkGAIgASgJQgq6SAdyBRACGIABInEKG0Jvb3RTZXJ2aWNlU2VuZEV2ZW50UmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARI6CgVldmVudBgCIAEoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudCIeChxCb290U2VydmljZVNlbmRFdmVudFJlc3BvbnNlMo8ICgtCb290U2VydmljZRJsCgREaGNwEisubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZURoY3BSZXF1ZXN0GiwubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZURoY3BSZXNwb25zZSIJ4PMYAerzGAEBEmwKBEJvb3QSKy5tZXRhbHN0YWNrLmluZnJhLnYyLkJvb3RTZXJ2aWNlQm9vdFJlcXVlc3QaLC5tZXRhbHN0YWNrLmluZnJhLnYyLkJvb3RTZXJ2aWNlQm9vdFJlc3BvbnNlIgng8xgB6vMYAQEShAEKDE1hY2hpbmVUb2tlbhIzLm1ldGFsc3RhY2suaW5mcmEudjIuQm9vdFNlcnZpY2VNYWNoaW5lVG9rZW5SZXF1ZXN0GjQubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZU1hY2hpbmVUb2tlblJlc3BvbnNlIgng8xgB6vMYAQESkwEKEVN1cGVyVXNlclBhc3N3b3JkEjgubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZVN1cGVyVXNlclBhc3N3b3JkUmVxdWVzdBo5Lm1ldGFsc3RhY2suaW5mcmEudjIuQm9vdFNlcnZpY2VTdXBlclVzZXJQYXNzd29yZFJlc3BvbnNlIgng8xgB8vMYAQESeAoIUmVnaXN0ZXISLy5tZXRhbHN0YWNrLmluZnJhLnYyLkJvb3RTZXJ2aWNlUmVnaXN0ZXJSZXF1ZXN0GjAubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZVJlZ2lzdGVyUmVzcG9uc2UiCeDzGAHy8xgBARJuCgRXYWl0EisubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZVdhaXRSZXF1ZXN0GiwubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZVdhaXRSZXNwb25zZSIJ4PMYAfLzGAEBMAESnwEKFUluc3RhbGxhdGlvblN1Y2NlZWRlZBI8Lm1ldGFsc3RhY2suaW5mcmEudjIuQm9vdFNlcnZpY2VJbnN0YWxsYXRpb25TdWNjZWVkZWRSZXF1ZXN0Gj0ubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZUluc3RhbGxhdGlvblN1Y2NlZWRlZFJlc3BvbnNlIgng8xgB8vMYAQESewoJU2VuZEV2ZW50EjAubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZVNlbmRFdmVudFJlcXVlc3QaMS5tZXRhbHN0YWNrLmluZnJhLnYyLkJvb3RTZXJ2aWNlU2VuZEV2ZW50UmVzcG9uc2UiCeDzGAHy8xgBAULNAQoXY29tLm1ldGFsc3RhY2suaW5mcmEudjJCCUJvb3RQcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2luZnJhL3YyO2luZnJhdjKiAgNNSViqAhNNZXRhbHN0YWNrLkluZnJhLlYyygITTWV0YWxzdGFja1xJbmZyYVxWMuICH01ldGFsc3RhY2tcSW5mcmFcVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpJbmZyYTo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_google_protobuf_duration, file_metalstack_api_v2_common, file_metalstack_api_v2_machine, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_token]); /** * BootServiceDhcpRequest is called once a machine issues a dhcp request. @@ -437,6 +437,49 @@ export type BootServiceSuperUserPasswordResponse = Message<"metalstack.infra.v2. export const BootServiceSuperUserPasswordResponseSchema: GenMessage = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_boot, 13); +/** + * BootServiceEventSendRequest is the request payload for sending a provisioning event. + * + * @generated from message metalstack.infra.v2.BootServiceSendEventRequest + */ +export type BootServiceSendEventRequest = Message<"metalstack.infra.v2.BootServiceSendEventRequest"> & { + /** + * UUID of the machine. + * + * @generated from field: string uuid = 1; + */ + uuid: string; + + /** + * Event is the machine provisioning event. + * + * @generated from field: metalstack.api.v2.MachineProvisioningEvent event = 2; + */ + event?: MachineProvisioningEvent | undefined; +}; + +/** + * Describes the message metalstack.infra.v2.BootServiceSendEventRequest. + * Use `create(BootServiceSendEventRequestSchema)` to create a new message. + */ +export const BootServiceSendEventRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_infra_v2_boot, 14); + +/** + * BootServiceEventSendResponse is the response payload for sending provisioning events. + * + * @generated from message metalstack.infra.v2.BootServiceSendEventResponse + */ +export type BootServiceSendEventResponse = Message<"metalstack.infra.v2.BootServiceSendEventResponse"> & { +}; + +/** + * Describes the message metalstack.infra.v2.BootServiceSendEventResponse. + * Use `create(BootServiceSendEventResponseSchema)` to create a new message. + */ +export const BootServiceSendEventResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_infra_v2_boot, 15); + /** * BootService provides boot-related operations for pixiecore and metal-hammer. * @@ -515,6 +558,16 @@ export const BootService: GenService<{ input: typeof BootServiceInstallationSucceededRequestSchema; output: typeof BootServiceInstallationSucceededResponseSchema; }, + /** + * SendEvent is used to send provisioning events to the metal-apiserver. + * + * @generated from rpc metalstack.infra.v2.BootService.SendEvent + */ + sendEvent: { + methodKind: "unary"; + input: typeof BootServiceSendEventRequestSchema; + output: typeof BootServiceSendEventResponseSchema; + }, }> = /*@__PURE__*/ serviceDesc(file_metalstack_infra_v2_boot, 0); diff --git a/proto/metalstack/infra/v2/boot.proto b/proto/metalstack/infra/v2/boot.proto index 1401d1c3..33e60e1b 100644 --- a/proto/metalstack/infra/v2/boot.proto +++ b/proto/metalstack/infra/v2/boot.proto @@ -51,6 +51,11 @@ service BootService { option (metalstack.api.v2.machine_roles) = MACHINE_ROLE_EDITOR; option (metalstack.api.v2.auditing) = AUDITING_INCLUDED; } + // SendEvent is used to send provisioning events to the metal-apiserver. + rpc SendEvent(BootServiceSendEventRequest) returns (BootServiceSendEventResponse) { + option (metalstack.api.v2.machine_roles) = MACHINE_ROLE_EDITOR; + option (metalstack.api.v2.auditing) = AUDITING_INCLUDED; + } } // BootServiceDhcpRequest is called once a machine issues a dhcp request. @@ -178,3 +183,14 @@ message BootServiceSuperUserPasswordResponse { max_len: 128 }]; } + +// BootServiceEventSendRequest is the request payload for sending a provisioning event. +message BootServiceSendEventRequest { + // UUID of the machine. + string uuid = 1 [(buf.validate.field).string.uuid = true]; + // Event is the machine provisioning event. + metalstack.api.v2.MachineProvisioningEvent event = 2; +} + +// BootServiceEventSendResponse is the response payload for sending provisioning events. +message BootServiceSendEventResponse {} diff --git a/python/metalstack/infra/v2/boot_connect.py b/python/metalstack/infra/v2/boot_connect.py index 7c4cf2f8..ae60d5c3 100644 --- a/python/metalstack/infra/v2/boot_connect.py +++ b/python/metalstack/infra/v2/boot_connect.py @@ -39,6 +39,9 @@ def wait(self, request: metalstack_dot_infra_dot_v2_dot_boot__pb2.BootServiceWai async def installation_succeeded(self, request: metalstack_dot_infra_dot_v2_dot_boot__pb2.BootServiceInstallationSucceededRequest, ctx: RequestContext) -> metalstack_dot_infra_dot_v2_dot_boot__pb2.BootServiceInstallationSucceededResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + async def send_event(self, request: metalstack_dot_infra_dot_v2_dot_boot__pb2.BootServiceSendEventRequest, ctx: RequestContext) -> metalstack_dot_infra_dot_v2_dot_boot__pb2.BootServiceSendEventResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + class BootServiceASGIApplication(ConnectASGIApplication[BootService]): def __init__(self, service: BootService | AsyncGenerator[BootService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None, codecs: Iterable[Codec] | None = None) -> None: @@ -115,6 +118,16 @@ def __init__(self, service: BootService | AsyncGenerator[BootService], *, interc ), function=svc.installation_succeeded, ), + "/metalstack.infra.v2.BootService/SendEvent": Endpoint.unary( + method=MethodInfo( + name="SendEvent", + service_name="metalstack.infra.v2.BootService", + input=metalstack_dot_infra_dot_v2_dot_boot__pb2.BootServiceSendEventRequest, + output=metalstack_dot_infra_dot_v2_dot_boot__pb2.BootServiceSendEventResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.send_event, + ), }, interceptors=interceptors, read_max_bytes=read_max_bytes, @@ -269,6 +282,26 @@ async def installation_succeeded( timeout_ms=timeout_ms, ) + async def send_event( + self, + request: metalstack_dot_infra_dot_v2_dot_boot__pb2.BootServiceSendEventRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> metalstack_dot_infra_dot_v2_dot_boot__pb2.BootServiceSendEventResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="SendEvent", + service_name="metalstack.infra.v2.BootService", + input=metalstack_dot_infra_dot_v2_dot_boot__pb2.BootServiceSendEventRequest, + output=metalstack_dot_infra_dot_v2_dot_boot__pb2.BootServiceSendEventResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + @@ -288,6 +321,8 @@ def wait(self, request: metalstack_dot_infra_dot_v2_dot_boot__pb2.BootServiceWai raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") def installation_succeeded(self, request: metalstack_dot_infra_dot_v2_dot_boot__pb2.BootServiceInstallationSucceededRequest, ctx: RequestContext) -> metalstack_dot_infra_dot_v2_dot_boot__pb2.BootServiceInstallationSucceededResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def send_event(self, request: metalstack_dot_infra_dot_v2_dot_boot__pb2.BootServiceSendEventRequest, ctx: RequestContext) -> metalstack_dot_infra_dot_v2_dot_boot__pb2.BootServiceSendEventResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") class BootServiceWSGIApplication(ConnectWSGIApplication): @@ -364,6 +399,16 @@ def __init__(self, service: BootServiceSync, interceptors: Iterable[InterceptorS ), function=service.installation_succeeded, ), + "/metalstack.infra.v2.BootService/SendEvent": EndpointSync.unary( + method=MethodInfo( + name="SendEvent", + service_name="metalstack.infra.v2.BootService", + input=metalstack_dot_infra_dot_v2_dot_boot__pb2.BootServiceSendEventRequest, + output=metalstack_dot_infra_dot_v2_dot_boot__pb2.BootServiceSendEventResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.send_event, + ), }, interceptors=interceptors, read_max_bytes=read_max_bytes, @@ -518,4 +563,24 @@ def installation_succeeded( timeout_ms=timeout_ms, ) + def send_event( + self, + request: metalstack_dot_infra_dot_v2_dot_boot__pb2.BootServiceSendEventRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> metalstack_dot_infra_dot_v2_dot_boot__pb2.BootServiceSendEventResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="SendEvent", + service_name="metalstack.infra.v2.BootService", + input=metalstack_dot_infra_dot_v2_dot_boot__pb2.BootServiceSendEventRequest, + output=metalstack_dot_infra_dot_v2_dot_boot__pb2.BootServiceSendEventResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + diff --git a/python/metalstack/infra/v2/boot_pb2.py b/python/metalstack/infra/v2/boot_pb2.py index 6e7b5574..9bddf9ac 100644 --- a/python/metalstack/infra/v2/boot_pb2.py +++ b/python/metalstack/infra/v2/boot_pb2.py @@ -30,7 +30,7 @@ from metalstack.api.v2 import token_pb2 as metalstack_dot_api_dot_v2_dot_token__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1emetalstack/infra/v2/boot.proto\x12\x13metalstack.infra.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1emetalstack/api/v2/common.proto\x1a\x1fmetalstack/api/v2/machine.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1dmetalstack/api/v2/token.proto\"a\n\x16\x42ootServiceDhcpRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12)\n\tpartition\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01R\tpartition\"\x19\n\x17\x42ootServiceDhcpResponse\"\xda\x01\n\x1e\x42ootServiceMachineTokenRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x1f\n\x04user\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xf8\xb3\xae\xb1\x02\x01R\x04user\x12\x46\n\x07\x65xpires\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationB\x11\xbaH\x0e\xaa\x01\x0b\x1a\x04\x08\x80\xf5$2\x03\x08\xd8\x04R\x07\x65xpires\x12\x31\n\x06labels\x18\x04 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labels\"i\n\x1f\x42ootServiceMachineTokenResponse\x12.\n\x05token\x18\x01 \x01(\x0b\x32\x18.metalstack.api.v2.TokenR\x05token\x12\x16\n\x06secret\x18\x02 \x01(\tR\x06secret\"b\n\x16\x42ootServiceBootRequest\x12\x1d\n\x03mac\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xb8\xb3\xae\xb1\x02\x01R\x03mac\x12)\n\tpartition\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01R\tpartition\"\x9c\x01\n\x17\x42ootServiceBootResponse\x12#\n\x06kernel\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xe0\xb3\xae\xb1\x02\x01R\x06kernel\x12$\n\x0einit_ram_disks\x18\x02 \x03(\tR\x0cinitRamDisks\x12*\n\x07\x63mdline\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x07\x63mdline\x88\x01\x01\x42\n\n\x08_cmdline\"\x8e\x03\n\x1a\x42ootServiceRegisterRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12>\n\x08hardware\x18\x02 \x01(\x0b\x32\".metalstack.api.v2.MachineHardwareR\x08hardware\x12\x32\n\x04\x62ios\x18\x03 \x01(\x0b\x32\x1e.metalstack.api.v2.MachineBiosR\x04\x62ios\x12/\n\x03\x62mc\x18\x04 \x01(\x0b\x32\x1d.metalstack.api.v2.MachineBMCR\x03\x62mc\x12/\n\x03\x66ru\x18\x05 \x01(\x0b\x32\x1d.metalstack.api.v2.MachineFRUR\x03\x66ru\x12\x12\n\x04tags\x18\x06 \x03(\tR\x04tags\x12=\n\x14metal_hammer_version\x18\x07 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x12metalHammerVersion\x12)\n\tpartition\x18\x08 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01R\tpartition\"\x87\x01\n\x1b\x42ootServiceRegisterResponse\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x1f\n\x04size\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x04size\x12)\n\tpartition\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01R\tpartition\"6\n\x16\x42ootServiceWaitRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\"_\n\x17\x42ootServiceWaitResponse\x12\x44\n\nallocation\x18\x01 \x01(\x0b\x32$.metalstack.api.v2.MachineAllocationR\nallocation\"~\n\'BootServiceInstallationSucceededRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x35\n\x10\x63onsole_password\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01R\x0f\x63onsolePassword\"*\n(BootServiceInstallationSucceededResponse\"C\n#BootServiceSuperUserPasswordRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\"\x8d\x01\n$BootServiceSuperUserPasswordResponse\x12)\n\x10\x66\x65\x61ture_disabled\x18\x01 \x01(\x08R\x0f\x66\x65\x61tureDisabled\x12:\n\x13super_user_password\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01R\x11superUserPassword2\x92\x07\n\x0b\x42ootService\x12l\n\x04\x44hcp\x12+.metalstack.infra.v2.BootServiceDhcpRequest\x1a,.metalstack.infra.v2.BootServiceDhcpResponse\"\t\xe0\xf3\x18\x01\xea\xf3\x18\x01\x01\x12l\n\x04\x42oot\x12+.metalstack.infra.v2.BootServiceBootRequest\x1a,.metalstack.infra.v2.BootServiceBootResponse\"\t\xe0\xf3\x18\x01\xea\xf3\x18\x01\x01\x12\x84\x01\n\x0cMachineToken\x12\x33.metalstack.infra.v2.BootServiceMachineTokenRequest\x1a\x34.metalstack.infra.v2.BootServiceMachineTokenResponse\"\t\xe0\xf3\x18\x01\xea\xf3\x18\x01\x01\x12\x93\x01\n\x11SuperUserPassword\x12\x38.metalstack.infra.v2.BootServiceSuperUserPasswordRequest\x1a\x39.metalstack.infra.v2.BootServiceSuperUserPasswordResponse\"\t\xe0\xf3\x18\x01\xf2\xf3\x18\x01\x01\x12x\n\x08Register\x12/.metalstack.infra.v2.BootServiceRegisterRequest\x1a\x30.metalstack.infra.v2.BootServiceRegisterResponse\"\t\xe0\xf3\x18\x01\xf2\xf3\x18\x01\x01\x12n\n\x04Wait\x12+.metalstack.infra.v2.BootServiceWaitRequest\x1a,.metalstack.infra.v2.BootServiceWaitResponse\"\t\xe0\xf3\x18\x01\xf2\xf3\x18\x01\x01\x30\x01\x12\x9f\x01\n\x15InstallationSucceeded\x12<.metalstack.infra.v2.BootServiceInstallationSucceededRequest\x1a=.metalstack.infra.v2.BootServiceInstallationSucceededResponse\"\t\xe0\xf3\x18\x01\xf2\xf3\x18\x01\x01\x42\xcd\x01\n\x17\x63om.metalstack.infra.v2B\tBootProtoP\x01Z9github.com/metal-stack/api/go/metalstack/infra/v2;infrav2\xa2\x02\x03MIX\xaa\x02\x13Metalstack.Infra.V2\xca\x02\x13Metalstack\\Infra\\V2\xe2\x02\x1fMetalstack\\Infra\\V2\\GPBMetadata\xea\x02\x15Metalstack::Infra::V2b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1emetalstack/infra/v2/boot.proto\x12\x13metalstack.infra.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1emetalstack/api/v2/common.proto\x1a\x1fmetalstack/api/v2/machine.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1dmetalstack/api/v2/token.proto\"a\n\x16\x42ootServiceDhcpRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12)\n\tpartition\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01R\tpartition\"\x19\n\x17\x42ootServiceDhcpResponse\"\xda\x01\n\x1e\x42ootServiceMachineTokenRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x1f\n\x04user\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xf8\xb3\xae\xb1\x02\x01R\x04user\x12\x46\n\x07\x65xpires\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationB\x11\xbaH\x0e\xaa\x01\x0b\x1a\x04\x08\x80\xf5$2\x03\x08\xd8\x04R\x07\x65xpires\x12\x31\n\x06labels\x18\x04 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labels\"i\n\x1f\x42ootServiceMachineTokenResponse\x12.\n\x05token\x18\x01 \x01(\x0b\x32\x18.metalstack.api.v2.TokenR\x05token\x12\x16\n\x06secret\x18\x02 \x01(\tR\x06secret\"b\n\x16\x42ootServiceBootRequest\x12\x1d\n\x03mac\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xb8\xb3\xae\xb1\x02\x01R\x03mac\x12)\n\tpartition\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01R\tpartition\"\x9c\x01\n\x17\x42ootServiceBootResponse\x12#\n\x06kernel\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xe0\xb3\xae\xb1\x02\x01R\x06kernel\x12$\n\x0einit_ram_disks\x18\x02 \x03(\tR\x0cinitRamDisks\x12*\n\x07\x63mdline\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x07\x63mdline\x88\x01\x01\x42\n\n\x08_cmdline\"\x8e\x03\n\x1a\x42ootServiceRegisterRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12>\n\x08hardware\x18\x02 \x01(\x0b\x32\".metalstack.api.v2.MachineHardwareR\x08hardware\x12\x32\n\x04\x62ios\x18\x03 \x01(\x0b\x32\x1e.metalstack.api.v2.MachineBiosR\x04\x62ios\x12/\n\x03\x62mc\x18\x04 \x01(\x0b\x32\x1d.metalstack.api.v2.MachineBMCR\x03\x62mc\x12/\n\x03\x66ru\x18\x05 \x01(\x0b\x32\x1d.metalstack.api.v2.MachineFRUR\x03\x66ru\x12\x12\n\x04tags\x18\x06 \x03(\tR\x04tags\x12=\n\x14metal_hammer_version\x18\x07 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x12metalHammerVersion\x12)\n\tpartition\x18\x08 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01R\tpartition\"\x87\x01\n\x1b\x42ootServiceRegisterResponse\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x1f\n\x04size\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x04size\x12)\n\tpartition\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01R\tpartition\"6\n\x16\x42ootServiceWaitRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\"_\n\x17\x42ootServiceWaitResponse\x12\x44\n\nallocation\x18\x01 \x01(\x0b\x32$.metalstack.api.v2.MachineAllocationR\nallocation\"~\n\'BootServiceInstallationSucceededRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x35\n\x10\x63onsole_password\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01R\x0f\x63onsolePassword\"*\n(BootServiceInstallationSucceededResponse\"C\n#BootServiceSuperUserPasswordRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\"\x8d\x01\n$BootServiceSuperUserPasswordResponse\x12)\n\x10\x66\x65\x61ture_disabled\x18\x01 \x01(\x08R\x0f\x66\x65\x61tureDisabled\x12:\n\x13super_user_password\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01R\x11superUserPassword\"~\n\x1b\x42ootServiceSendEventRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x41\n\x05\x65vent\x18\x02 \x01(\x0b\x32+.metalstack.api.v2.MachineProvisioningEventR\x05\x65vent\"\x1e\n\x1c\x42ootServiceSendEventResponse2\x8f\x08\n\x0b\x42ootService\x12l\n\x04\x44hcp\x12+.metalstack.infra.v2.BootServiceDhcpRequest\x1a,.metalstack.infra.v2.BootServiceDhcpResponse\"\t\xe0\xf3\x18\x01\xea\xf3\x18\x01\x01\x12l\n\x04\x42oot\x12+.metalstack.infra.v2.BootServiceBootRequest\x1a,.metalstack.infra.v2.BootServiceBootResponse\"\t\xe0\xf3\x18\x01\xea\xf3\x18\x01\x01\x12\x84\x01\n\x0cMachineToken\x12\x33.metalstack.infra.v2.BootServiceMachineTokenRequest\x1a\x34.metalstack.infra.v2.BootServiceMachineTokenResponse\"\t\xe0\xf3\x18\x01\xea\xf3\x18\x01\x01\x12\x93\x01\n\x11SuperUserPassword\x12\x38.metalstack.infra.v2.BootServiceSuperUserPasswordRequest\x1a\x39.metalstack.infra.v2.BootServiceSuperUserPasswordResponse\"\t\xe0\xf3\x18\x01\xf2\xf3\x18\x01\x01\x12x\n\x08Register\x12/.metalstack.infra.v2.BootServiceRegisterRequest\x1a\x30.metalstack.infra.v2.BootServiceRegisterResponse\"\t\xe0\xf3\x18\x01\xf2\xf3\x18\x01\x01\x12n\n\x04Wait\x12+.metalstack.infra.v2.BootServiceWaitRequest\x1a,.metalstack.infra.v2.BootServiceWaitResponse\"\t\xe0\xf3\x18\x01\xf2\xf3\x18\x01\x01\x30\x01\x12\x9f\x01\n\x15InstallationSucceeded\x12<.metalstack.infra.v2.BootServiceInstallationSucceededRequest\x1a=.metalstack.infra.v2.BootServiceInstallationSucceededResponse\"\t\xe0\xf3\x18\x01\xf2\xf3\x18\x01\x01\x12{\n\tSendEvent\x12\x30.metalstack.infra.v2.BootServiceSendEventRequest\x1a\x31.metalstack.infra.v2.BootServiceSendEventResponse\"\t\xe0\xf3\x18\x01\xf2\xf3\x18\x01\x01\x42\xcd\x01\n\x17\x63om.metalstack.infra.v2B\tBootProtoP\x01Z9github.com/metal-stack/api/go/metalstack/infra/v2;infrav2\xa2\x02\x03MIX\xaa\x02\x13Metalstack.Infra.V2\xca\x02\x13Metalstack\\Infra\\V2\xe2\x02\x1fMetalstack\\Infra\\V2\\GPBMetadata\xea\x02\x15Metalstack::Infra::V2b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -78,6 +78,8 @@ _globals['_BOOTSERVICESUPERUSERPASSWORDREQUEST'].fields_by_name['uuid']._serialized_options = b'\272H\005r\003\260\001\001' _globals['_BOOTSERVICESUPERUSERPASSWORDRESPONSE'].fields_by_name['super_user_password']._loaded_options = None _globals['_BOOTSERVICESUPERUSERPASSWORDRESPONSE'].fields_by_name['super_user_password']._serialized_options = b'\272H\007r\005\020\002\030\200\001' + _globals['_BOOTSERVICESENDEVENTREQUEST'].fields_by_name['uuid']._loaded_options = None + _globals['_BOOTSERVICESENDEVENTREQUEST'].fields_by_name['uuid']._serialized_options = b'\272H\005r\003\260\001\001' _globals['_BOOTSERVICE'].methods_by_name['Dhcp']._loaded_options = None _globals['_BOOTSERVICE'].methods_by_name['Dhcp']._serialized_options = b'\340\363\030\001\352\363\030\001\001' _globals['_BOOTSERVICE'].methods_by_name['Boot']._loaded_options = None @@ -92,6 +94,8 @@ _globals['_BOOTSERVICE'].methods_by_name['Wait']._serialized_options = b'\340\363\030\001\362\363\030\001\001' _globals['_BOOTSERVICE'].methods_by_name['InstallationSucceeded']._loaded_options = None _globals['_BOOTSERVICE'].methods_by_name['InstallationSucceeded']._serialized_options = b'\340\363\030\001\362\363\030\001\001' + _globals['_BOOTSERVICE'].methods_by_name['SendEvent']._loaded_options = None + _globals['_BOOTSERVICE'].methods_by_name['SendEvent']._serialized_options = b'\340\363\030\001\362\363\030\001\001' _globals['_BOOTSERVICEDHCPREQUEST']._serialized_start=254 _globals['_BOOTSERVICEDHCPREQUEST']._serialized_end=351 _globals['_BOOTSERVICEDHCPRESPONSE']._serialized_start=353 @@ -120,6 +124,10 @@ _globals['_BOOTSERVICESUPERUSERPASSWORDREQUEST']._serialized_end=1898 _globals['_BOOTSERVICESUPERUSERPASSWORDRESPONSE']._serialized_start=1901 _globals['_BOOTSERVICESUPERUSERPASSWORDRESPONSE']._serialized_end=2042 - _globals['_BOOTSERVICE']._serialized_start=2045 - _globals['_BOOTSERVICE']._serialized_end=2959 + _globals['_BOOTSERVICESENDEVENTREQUEST']._serialized_start=2044 + _globals['_BOOTSERVICESENDEVENTREQUEST']._serialized_end=2170 + _globals['_BOOTSERVICESENDEVENTRESPONSE']._serialized_start=2172 + _globals['_BOOTSERVICESENDEVENTRESPONSE']._serialized_end=2202 + _globals['_BOOTSERVICE']._serialized_start=2205 + _globals['_BOOTSERVICE']._serialized_end=3244 # @@protoc_insertion_point(module_scope) diff --git a/python/metalstack/infra/v2/boot_pb2.pyi b/python/metalstack/infra/v2/boot_pb2.pyi index 4795f450..c35525f2 100644 --- a/python/metalstack/infra/v2/boot_pb2.pyi +++ b/python/metalstack/infra/v2/boot_pb2.pyi @@ -131,3 +131,15 @@ class BootServiceSuperUserPasswordResponse(_message.Message): feature_disabled: bool super_user_password: str def __init__(self, feature_disabled: _Optional[bool] = ..., super_user_password: _Optional[str] = ...) -> None: ... + +class BootServiceSendEventRequest(_message.Message): + __slots__ = ("uuid", "event") + UUID_FIELD_NUMBER: _ClassVar[int] + EVENT_FIELD_NUMBER: _ClassVar[int] + uuid: str + event: _machine_pb2.MachineProvisioningEvent + def __init__(self, uuid: _Optional[str] = ..., event: _Optional[_Union[_machine_pb2.MachineProvisioningEvent, _Mapping]] = ...) -> None: ... + +class BootServiceSendEventResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ...