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 @@ BootServiceEventSendRequest is the request payload for sending a 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: ...