This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

core / spindle / mill / proto / gen / mill.pb.go
51 kB 1679 lines
1// Code generated by protoc-gen-go. DO NOT EDIT. 2// versions: 3// protoc-gen-go v1.36.11 4// protoc (unknown) 5// source: spindle/mill/v1/mill.proto 6 7package millv1 8 9import ( 10 _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate" 11 protoreflect "google.golang.org/protobuf/reflect/protoreflect" 12 protoimpl "google.golang.org/protobuf/runtime/protoimpl" 13 reflect "reflect" 14 sync "sync" 15 unsafe "unsafe" 16) 17 18const ( 19 // Verify that this generated code is sufficiently up-to-date. 20 _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) 21 // Verify that runtime/protoimpl is sufficiently up-to-date. 22 _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) 23) 24 25type RejectClass int32 26 27const ( 28 RejectClass_REJECT_CLASS_UNSPECIFIED RejectClass = 0 29 RejectClass_REJECT_CLASS_TRANSIENT RejectClass = 1 30 RejectClass_REJECT_CLASS_INCOMPATIBLE RejectClass = 2 31) 32 33// Enum value maps for RejectClass. 34var ( 35 RejectClass_name = map[int32]string{ 36 0: "REJECT_CLASS_UNSPECIFIED", 37 1: "REJECT_CLASS_TRANSIENT", 38 2: "REJECT_CLASS_INCOMPATIBLE", 39 } 40 RejectClass_value = map[string]int32{ 41 "REJECT_CLASS_UNSPECIFIED": 0, 42 "REJECT_CLASS_TRANSIENT": 1, 43 "REJECT_CLASS_INCOMPATIBLE": 2, 44 } 45) 46 47func (x RejectClass) Enum() *RejectClass { 48 p := new(RejectClass) 49 *p = x 50 return p 51} 52 53func (x RejectClass) String() string { 54 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 55} 56 57func (RejectClass) Descriptor() protoreflect.EnumDescriptor { 58 return file_spindle_mill_v1_mill_proto_enumTypes[0].Descriptor() 59} 60 61func (RejectClass) Type() protoreflect.EnumType { 62 return &file_spindle_mill_v1_mill_proto_enumTypes[0] 63} 64 65func (x RejectClass) Number() protoreflect.EnumNumber { 66 return protoreflect.EnumNumber(x) 67} 68 69// Deprecated: Use RejectClass.Descriptor instead. 70func (RejectClass) EnumDescriptor() ([]byte, []int) { 71 return file_spindle_mill_v1_mill_proto_rawDescGZIP(), []int{0} 72} 73 74type NonterminalStatus int32 75 76const ( 77 NonterminalStatus_NONTERMINAL_STATUS_UNSPECIFIED NonterminalStatus = 0 78 NonterminalStatus_RUNNING NonterminalStatus = 1 79) 80 81// Enum value maps for NonterminalStatus. 82var ( 83 NonterminalStatus_name = map[int32]string{ 84 0: "NONTERMINAL_STATUS_UNSPECIFIED", 85 1: "RUNNING", 86 } 87 NonterminalStatus_value = map[string]int32{ 88 "NONTERMINAL_STATUS_UNSPECIFIED": 0, 89 "RUNNING": 1, 90 } 91) 92 93func (x NonterminalStatus) Enum() *NonterminalStatus { 94 p := new(NonterminalStatus) 95 *p = x 96 return p 97} 98 99func (x NonterminalStatus) String() string { 100 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 101} 102 103func (NonterminalStatus) Descriptor() protoreflect.EnumDescriptor { 104 return file_spindle_mill_v1_mill_proto_enumTypes[1].Descriptor() 105} 106 107func (NonterminalStatus) Type() protoreflect.EnumType { 108 return &file_spindle_mill_v1_mill_proto_enumTypes[1] 109} 110 111func (x NonterminalStatus) Number() protoreflect.EnumNumber { 112 return protoreflect.EnumNumber(x) 113} 114 115// Deprecated: Use NonterminalStatus.Descriptor instead. 116func (NonterminalStatus) EnumDescriptor() ([]byte, []int) { 117 return file_spindle_mill_v1_mill_proto_rawDescGZIP(), []int{1} 118} 119 120type TerminalStatus int32 121 122const ( 123 TerminalStatus_TERMINAL_STATUS_UNSPECIFIED TerminalStatus = 0 124 TerminalStatus_SUCCESS TerminalStatus = 1 125 TerminalStatus_FAILED TerminalStatus = 2 126 TerminalStatus_TIMEOUT TerminalStatus = 3 127 TerminalStatus_CANCELLED TerminalStatus = 4 128) 129 130// Enum value maps for TerminalStatus. 131var ( 132 TerminalStatus_name = map[int32]string{ 133 0: "TERMINAL_STATUS_UNSPECIFIED", 134 1: "SUCCESS", 135 2: "FAILED", 136 3: "TIMEOUT", 137 4: "CANCELLED", 138 } 139 TerminalStatus_value = map[string]int32{ 140 "TERMINAL_STATUS_UNSPECIFIED": 0, 141 "SUCCESS": 1, 142 "FAILED": 2, 143 "TIMEOUT": 3, 144 "CANCELLED": 4, 145 } 146) 147 148func (x TerminalStatus) Enum() *TerminalStatus { 149 p := new(TerminalStatus) 150 *p = x 151 return p 152} 153 154func (x TerminalStatus) String() string { 155 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 156} 157 158func (TerminalStatus) Descriptor() protoreflect.EnumDescriptor { 159 return file_spindle_mill_v1_mill_proto_enumTypes[2].Descriptor() 160} 161 162func (TerminalStatus) Type() protoreflect.EnumType { 163 return &file_spindle_mill_v1_mill_proto_enumTypes[2] 164} 165 166func (x TerminalStatus) Number() protoreflect.EnumNumber { 167 return protoreflect.EnumNumber(x) 168} 169 170// Deprecated: Use TerminalStatus.Descriptor instead. 171func (TerminalStatus) EnumDescriptor() ([]byte, []int) { 172 return file_spindle_mill_v1_mill_proto_rawDescGZIP(), []int{2} 173} 174 175// executor identity, sent on connect 176type Hello struct { 177 state protoimpl.MessageState `protogen:"open.v1"` 178 ProtocolVersion uint32 `protobuf:"varint,1,opt,name=protocol_version,json=protocolVersion,proto3" json:"protocol_version,omitempty"` 179 // GOARCH of the node, informational only 180 Arch string `protobuf:"bytes,2,opt,name=arch,proto3" json:"arch,omitempty"` 181 // operator-defined labels, matched against runs_on 182 Labels []string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty"` 183 Epoch string `protobuf:"bytes,4,opt,name=epoch,proto3" json:"epoch,omitempty"` 184 unknownFields protoimpl.UnknownFields 185 sizeCache protoimpl.SizeCache 186} 187 188func (x *Hello) Reset() { 189 *x = Hello{} 190 mi := &file_spindle_mill_v1_mill_proto_msgTypes[0] 191 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 192 ms.StoreMessageInfo(mi) 193} 194 195func (x *Hello) String() string { 196 return protoimpl.X.MessageStringOf(x) 197} 198 199func (*Hello) ProtoMessage() {} 200 201func (x *Hello) ProtoReflect() protoreflect.Message { 202 mi := &file_spindle_mill_v1_mill_proto_msgTypes[0] 203 if x != nil { 204 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 205 if ms.LoadMessageInfo() == nil { 206 ms.StoreMessageInfo(mi) 207 } 208 return ms 209 } 210 return mi.MessageOf(x) 211} 212 213// Deprecated: Use Hello.ProtoReflect.Descriptor instead. 214func (*Hello) Descriptor() ([]byte, []int) { 215 return file_spindle_mill_v1_mill_proto_rawDescGZIP(), []int{0} 216} 217 218func (x *Hello) GetProtocolVersion() uint32 { 219 if x != nil { 220 return x.ProtocolVersion 221 } 222 return 0 223} 224 225func (x *Hello) GetArch() string { 226 if x != nil { 227 return x.Arch 228 } 229 return "" 230} 231 232func (x *Hello) GetLabels() []string { 233 if x != nil { 234 return x.Labels 235 } 236 return nil 237} 238 239func (x *Hello) GetEpoch() string { 240 if x != nil { 241 return x.Epoch 242 } 243 return "" 244} 245 246// reconnect state for an existing epoch 247type Resume struct { 248 state protoimpl.MessageState `protogen:"open.v1"` 249 Epoch string `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` 250 AckSeqno uint64 `protobuf:"varint,2,opt,name=ack_seqno,json=ackSeqno,proto3" json:"ack_seqno,omitempty"` 251 unknownFields protoimpl.UnknownFields 252 sizeCache protoimpl.SizeCache 253} 254 255func (x *Resume) Reset() { 256 *x = Resume{} 257 mi := &file_spindle_mill_v1_mill_proto_msgTypes[1] 258 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 259 ms.StoreMessageInfo(mi) 260} 261 262func (x *Resume) String() string { 263 return protoimpl.X.MessageStringOf(x) 264} 265 266func (*Resume) ProtoMessage() {} 267 268func (x *Resume) ProtoReflect() protoreflect.Message { 269 mi := &file_spindle_mill_v1_mill_proto_msgTypes[1] 270 if x != nil { 271 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 272 if ms.LoadMessageInfo() == nil { 273 ms.StoreMessageInfo(mi) 274 } 275 return ms 276 } 277 return mi.MessageOf(x) 278} 279 280// Deprecated: Use Resume.ProtoReflect.Descriptor instead. 281func (*Resume) Descriptor() ([]byte, []int) { 282 return file_spindle_mill_v1_mill_proto_rawDescGZIP(), []int{1} 283} 284 285func (x *Resume) GetEpoch() string { 286 if x != nil { 287 return x.Epoch 288 } 289 return "" 290} 291 292func (x *Resume) GetAckSeqno() uint64 { 293 if x != nil { 294 return x.AckSeqno 295 } 296 return 0 297} 298 299// per-engine state of a node 300type EngineAvailability struct { 301 state protoimpl.MessageState `protogen:"open.v1"` 302 Available bool `protobuf:"varint,1,opt,name=available,proto3" json:"available,omitempty"` 303 // opaque engine-defined load metrics, higher means more loaded 304 Load map[string]float64 `protobuf:"bytes,2,rep,name=load,proto3" json:"load,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"` 305 unknownFields protoimpl.UnknownFields 306 sizeCache protoimpl.SizeCache 307} 308 309func (x *EngineAvailability) Reset() { 310 *x = EngineAvailability{} 311 mi := &file_spindle_mill_v1_mill_proto_msgTypes[2] 312 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 313 ms.StoreMessageInfo(mi) 314} 315 316func (x *EngineAvailability) String() string { 317 return protoimpl.X.MessageStringOf(x) 318} 319 320func (*EngineAvailability) ProtoMessage() {} 321 322func (x *EngineAvailability) ProtoReflect() protoreflect.Message { 323 mi := &file_spindle_mill_v1_mill_proto_msgTypes[2] 324 if x != nil { 325 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 326 if ms.LoadMessageInfo() == nil { 327 ms.StoreMessageInfo(mi) 328 } 329 return ms 330 } 331 return mi.MessageOf(x) 332} 333 334// Deprecated: Use EngineAvailability.ProtoReflect.Descriptor instead. 335func (*EngineAvailability) Descriptor() ([]byte, []int) { 336 return file_spindle_mill_v1_mill_proto_rawDescGZIP(), []int{2} 337} 338 339func (x *EngineAvailability) GetAvailable() bool { 340 if x != nil { 341 return x.Available 342 } 343 return false 344} 345 346func (x *EngineAvailability) GetLoad() map[string]float64 { 347 if x != nil { 348 return x.Load 349 } 350 return nil 351} 352 353// full node state 354type NodeSnapshot struct { 355 state protoimpl.MessageState `protogen:"open.v1"` 356 Seqno uint64 `protobuf:"varint,1,opt,name=seqno,proto3" json:"seqno,omitempty"` 357 Engines map[string]*EngineAvailability `protobuf:"bytes,2,rep,name=engines,proto3" json:"engines,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` 358 // every lease the executor currently holds, reserved or running 359 ActiveLeaseIds []string `protobuf:"bytes,3,rep,name=active_lease_ids,json=activeLeaseIds,proto3" json:"active_lease_ids,omitempty"` 360 unknownFields protoimpl.UnknownFields 361 sizeCache protoimpl.SizeCache 362} 363 364func (x *NodeSnapshot) Reset() { 365 *x = NodeSnapshot{} 366 mi := &file_spindle_mill_v1_mill_proto_msgTypes[3] 367 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 368 ms.StoreMessageInfo(mi) 369} 370 371func (x *NodeSnapshot) String() string { 372 return protoimpl.X.MessageStringOf(x) 373} 374 375func (*NodeSnapshot) ProtoMessage() {} 376 377func (x *NodeSnapshot) ProtoReflect() protoreflect.Message { 378 mi := &file_spindle_mill_v1_mill_proto_msgTypes[3] 379 if x != nil { 380 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 381 if ms.LoadMessageInfo() == nil { 382 ms.StoreMessageInfo(mi) 383 } 384 return ms 385 } 386 return mi.MessageOf(x) 387} 388 389// Deprecated: Use NodeSnapshot.ProtoReflect.Descriptor instead. 390func (*NodeSnapshot) Descriptor() ([]byte, []int) { 391 return file_spindle_mill_v1_mill_proto_rawDescGZIP(), []int{3} 392} 393 394func (x *NodeSnapshot) GetSeqno() uint64 { 395 if x != nil { 396 return x.Seqno 397 } 398 return 0 399} 400 401func (x *NodeSnapshot) GetEngines() map[string]*EngineAvailability { 402 if x != nil { 403 return x.Engines 404 } 405 return nil 406} 407 408func (x *NodeSnapshot) GetActiveLeaseIds() []string { 409 if x != nil { 410 return x.ActiveLeaseIds 411 } 412 return nil 413} 414 415// a seat reservation, carries no secrets 416type ReserveSeat struct { 417 state protoimpl.MessageState `protogen:"open.v1"` 418 LeaseId string `protobuf:"bytes,1,opt,name=lease_id,json=leaseId,proto3" json:"lease_id,omitempty"` 419 TargetEngine string `protobuf:"bytes,2,opt,name=target_engine,json=targetEngine,proto3" json:"target_engine,omitempty"` 420 RawPipelineJson string `protobuf:"bytes,3,opt,name=raw_pipeline_json,json=rawPipelineJson,proto3" json:"raw_pipeline_json,omitempty"` 421 RawWorkflowJson string `protobuf:"bytes,4,opt,name=raw_workflow_json,json=rawWorkflowJson,proto3" json:"raw_workflow_json,omitempty"` 422 // pipeline id, the executor reconstructs the exact WorkflowId from it 423 Knot string `protobuf:"bytes,5,opt,name=knot,proto3" json:"knot,omitempty"` 424 Rkey string `protobuf:"bytes,6,opt,name=rkey,proto3" json:"rkey,omitempty"` 425 TtlSeconds uint32 `protobuf:"varint,7,opt,name=ttl_seconds,json=ttlSeconds,proto3" json:"ttl_seconds,omitempty"` 426 unknownFields protoimpl.UnknownFields 427 sizeCache protoimpl.SizeCache 428} 429 430func (x *ReserveSeat) Reset() { 431 *x = ReserveSeat{} 432 mi := &file_spindle_mill_v1_mill_proto_msgTypes[4] 433 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 434 ms.StoreMessageInfo(mi) 435} 436 437func (x *ReserveSeat) String() string { 438 return protoimpl.X.MessageStringOf(x) 439} 440 441func (*ReserveSeat) ProtoMessage() {} 442 443func (x *ReserveSeat) ProtoReflect() protoreflect.Message { 444 mi := &file_spindle_mill_v1_mill_proto_msgTypes[4] 445 if x != nil { 446 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 447 if ms.LoadMessageInfo() == nil { 448 ms.StoreMessageInfo(mi) 449 } 450 return ms 451 } 452 return mi.MessageOf(x) 453} 454 455// Deprecated: Use ReserveSeat.ProtoReflect.Descriptor instead. 456func (*ReserveSeat) Descriptor() ([]byte, []int) { 457 return file_spindle_mill_v1_mill_proto_rawDescGZIP(), []int{4} 458} 459 460func (x *ReserveSeat) GetLeaseId() string { 461 if x != nil { 462 return x.LeaseId 463 } 464 return "" 465} 466 467func (x *ReserveSeat) GetTargetEngine() string { 468 if x != nil { 469 return x.TargetEngine 470 } 471 return "" 472} 473 474func (x *ReserveSeat) GetRawPipelineJson() string { 475 if x != nil { 476 return x.RawPipelineJson 477 } 478 return "" 479} 480 481func (x *ReserveSeat) GetRawWorkflowJson() string { 482 if x != nil { 483 return x.RawWorkflowJson 484 } 485 return "" 486} 487 488func (x *ReserveSeat) GetKnot() string { 489 if x != nil { 490 return x.Knot 491 } 492 return "" 493} 494 495func (x *ReserveSeat) GetRkey() string { 496 if x != nil { 497 return x.Rkey 498 } 499 return "" 500} 501 502func (x *ReserveSeat) GetTtlSeconds() uint32 { 503 if x != nil { 504 return x.TtlSeconds 505 } 506 return 0 507} 508 509type ReserveResult struct { 510 state protoimpl.MessageState `protogen:"open.v1"` 511 LeaseId string `protobuf:"bytes,1,opt,name=lease_id,json=leaseId,proto3" json:"lease_id,omitempty"` 512 Accepted bool `protobuf:"varint,2,opt,name=accepted,proto3" json:"accepted,omitempty"` 513 RejectReason string `protobuf:"bytes,3,opt,name=reject_reason,json=rejectReason,proto3" json:"reject_reason,omitempty"` 514 RejectClass RejectClass `protobuf:"varint,4,opt,name=reject_class,json=rejectClass,proto3,enum=spindle.mill.v1.RejectClass" json:"reject_class,omitempty"` 515 unknownFields protoimpl.UnknownFields 516 sizeCache protoimpl.SizeCache 517} 518 519func (x *ReserveResult) Reset() { 520 *x = ReserveResult{} 521 mi := &file_spindle_mill_v1_mill_proto_msgTypes[5] 522 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 523 ms.StoreMessageInfo(mi) 524} 525 526func (x *ReserveResult) String() string { 527 return protoimpl.X.MessageStringOf(x) 528} 529 530func (*ReserveResult) ProtoMessage() {} 531 532func (x *ReserveResult) ProtoReflect() protoreflect.Message { 533 mi := &file_spindle_mill_v1_mill_proto_msgTypes[5] 534 if x != nil { 535 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 536 if ms.LoadMessageInfo() == nil { 537 ms.StoreMessageInfo(mi) 538 } 539 return ms 540 } 541 return mi.MessageOf(x) 542} 543 544// Deprecated: Use ReserveResult.ProtoReflect.Descriptor instead. 545func (*ReserveResult) Descriptor() ([]byte, []int) { 546 return file_spindle_mill_v1_mill_proto_rawDescGZIP(), []int{5} 547} 548 549func (x *ReserveResult) GetLeaseId() string { 550 if x != nil { 551 return x.LeaseId 552 } 553 return "" 554} 555 556func (x *ReserveResult) GetAccepted() bool { 557 if x != nil { 558 return x.Accepted 559 } 560 return false 561} 562 563func (x *ReserveResult) GetRejectReason() string { 564 if x != nil { 565 return x.RejectReason 566 } 567 return "" 568} 569 570func (x *ReserveResult) GetRejectClass() RejectClass { 571 if x != nil { 572 return x.RejectClass 573 } 574 return RejectClass_REJECT_CLASS_UNSPECIFIED 575} 576 577// a single unlocked secret 578type Secret struct { 579 state protoimpl.MessageState `protogen:"open.v1"` 580 Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` 581 Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` 582 unknownFields protoimpl.UnknownFields 583 sizeCache protoimpl.SizeCache 584} 585 586func (x *Secret) Reset() { 587 *x = Secret{} 588 mi := &file_spindle_mill_v1_mill_proto_msgTypes[6] 589 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 590 ms.StoreMessageInfo(mi) 591} 592 593func (x *Secret) String() string { 594 return protoimpl.X.MessageStringOf(x) 595} 596 597func (*Secret) ProtoMessage() {} 598 599func (x *Secret) ProtoReflect() protoreflect.Message { 600 mi := &file_spindle_mill_v1_mill_proto_msgTypes[6] 601 if x != nil { 602 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 603 if ms.LoadMessageInfo() == nil { 604 ms.StoreMessageInfo(mi) 605 } 606 return ms 607 } 608 return mi.MessageOf(x) 609} 610 611// Deprecated: Use Secret.ProtoReflect.Descriptor instead. 612func (*Secret) Descriptor() ([]byte, []int) { 613 return file_spindle_mill_v1_mill_proto_rawDescGZIP(), []int{6} 614} 615 616func (x *Secret) GetKey() string { 617 if x != nil { 618 return x.Key 619 } 620 return "" 621} 622 623func (x *Secret) GetValue() string { 624 if x != nil { 625 return x.Value 626 } 627 return "" 628} 629 630// promotes a reservation to a running job and hands over the secrets 631type CommitLease struct { 632 state protoimpl.MessageState `protogen:"open.v1"` 633 LeaseId string `protobuf:"bytes,1,opt,name=lease_id,json=leaseId,proto3" json:"lease_id,omitempty"` 634 Secrets []*Secret `protobuf:"bytes,2,rep,name=secrets,proto3" json:"secrets,omitempty"` 635 unknownFields protoimpl.UnknownFields 636 sizeCache protoimpl.SizeCache 637} 638 639func (x *CommitLease) Reset() { 640 *x = CommitLease{} 641 mi := &file_spindle_mill_v1_mill_proto_msgTypes[7] 642 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 643 ms.StoreMessageInfo(mi) 644} 645 646func (x *CommitLease) String() string { 647 return protoimpl.X.MessageStringOf(x) 648} 649 650func (*CommitLease) ProtoMessage() {} 651 652func (x *CommitLease) ProtoReflect() protoreflect.Message { 653 mi := &file_spindle_mill_v1_mill_proto_msgTypes[7] 654 if x != nil { 655 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 656 if ms.LoadMessageInfo() == nil { 657 ms.StoreMessageInfo(mi) 658 } 659 return ms 660 } 661 return mi.MessageOf(x) 662} 663 664// Deprecated: Use CommitLease.ProtoReflect.Descriptor instead. 665func (*CommitLease) Descriptor() ([]byte, []int) { 666 return file_spindle_mill_v1_mill_proto_rawDescGZIP(), []int{7} 667} 668 669func (x *CommitLease) GetLeaseId() string { 670 if x != nil { 671 return x.LeaseId 672 } 673 return "" 674} 675 676func (x *CommitLease) GetSecrets() []*Secret { 677 if x != nil { 678 return x.Secrets 679 } 680 return nil 681} 682 683type Committed struct { 684 state protoimpl.MessageState `protogen:"open.v1"` 685 LeaseId string `protobuf:"bytes,1,opt,name=lease_id,json=leaseId,proto3" json:"lease_id,omitempty"` 686 unknownFields protoimpl.UnknownFields 687 sizeCache protoimpl.SizeCache 688} 689 690func (x *Committed) Reset() { 691 *x = Committed{} 692 mi := &file_spindle_mill_v1_mill_proto_msgTypes[8] 693 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 694 ms.StoreMessageInfo(mi) 695} 696 697func (x *Committed) String() string { 698 return protoimpl.X.MessageStringOf(x) 699} 700 701func (*Committed) ProtoMessage() {} 702 703func (x *Committed) ProtoReflect() protoreflect.Message { 704 mi := &file_spindle_mill_v1_mill_proto_msgTypes[8] 705 if x != nil { 706 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 707 if ms.LoadMessageInfo() == nil { 708 ms.StoreMessageInfo(mi) 709 } 710 return ms 711 } 712 return mi.MessageOf(x) 713} 714 715// Deprecated: Use Committed.ProtoReflect.Descriptor instead. 716func (*Committed) Descriptor() ([]byte, []int) { 717 return file_spindle_mill_v1_mill_proto_rawDescGZIP(), []int{8} 718} 719 720func (x *Committed) GetLeaseId() string { 721 if x != nil { 722 return x.LeaseId 723 } 724 return "" 725} 726 727// drops a reservation that was never committed 728type ReleaseLease struct { 729 state protoimpl.MessageState `protogen:"open.v1"` 730 LeaseId string `protobuf:"bytes,1,opt,name=lease_id,json=leaseId,proto3" json:"lease_id,omitempty"` 731 unknownFields protoimpl.UnknownFields 732 sizeCache protoimpl.SizeCache 733} 734 735func (x *ReleaseLease) Reset() { 736 *x = ReleaseLease{} 737 mi := &file_spindle_mill_v1_mill_proto_msgTypes[9] 738 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 739 ms.StoreMessageInfo(mi) 740} 741 742func (x *ReleaseLease) String() string { 743 return protoimpl.X.MessageStringOf(x) 744} 745 746func (*ReleaseLease) ProtoMessage() {} 747 748func (x *ReleaseLease) ProtoReflect() protoreflect.Message { 749 mi := &file_spindle_mill_v1_mill_proto_msgTypes[9] 750 if x != nil { 751 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 752 if ms.LoadMessageInfo() == nil { 753 ms.StoreMessageInfo(mi) 754 } 755 return ms 756 } 757 return mi.MessageOf(x) 758} 759 760// Deprecated: Use ReleaseLease.ProtoReflect.Descriptor instead. 761func (*ReleaseLease) Descriptor() ([]byte, []int) { 762 return file_spindle_mill_v1_mill_proto_rawDescGZIP(), []int{9} 763} 764 765func (x *ReleaseLease) GetLeaseId() string { 766 if x != nil { 767 return x.LeaseId 768 } 769 return "" 770} 771 772// cancels a running attempt 773type CancelAttempt struct { 774 state protoimpl.MessageState `protogen:"open.v1"` 775 LeaseId string `protobuf:"bytes,1,opt,name=lease_id,json=leaseId,proto3" json:"lease_id,omitempty"` 776 Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` 777 unknownFields protoimpl.UnknownFields 778 sizeCache protoimpl.SizeCache 779} 780 781func (x *CancelAttempt) Reset() { 782 *x = CancelAttempt{} 783 mi := &file_spindle_mill_v1_mill_proto_msgTypes[10] 784 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 785 ms.StoreMessageInfo(mi) 786} 787 788func (x *CancelAttempt) String() string { 789 return protoimpl.X.MessageStringOf(x) 790} 791 792func (*CancelAttempt) ProtoMessage() {} 793 794func (x *CancelAttempt) ProtoReflect() protoreflect.Message { 795 mi := &file_spindle_mill_v1_mill_proto_msgTypes[10] 796 if x != nil { 797 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 798 if ms.LoadMessageInfo() == nil { 799 ms.StoreMessageInfo(mi) 800 } 801 return ms 802 } 803 return mi.MessageOf(x) 804} 805 806// Deprecated: Use CancelAttempt.ProtoReflect.Descriptor instead. 807func (*CancelAttempt) Descriptor() ([]byte, []int) { 808 return file_spindle_mill_v1_mill_proto_rawDescGZIP(), []int{10} 809} 810 811func (x *CancelAttempt) GetLeaseId() string { 812 if x != nil { 813 return x.LeaseId 814 } 815 return "" 816} 817 818func (x *CancelAttempt) GetReason() string { 819 if x != nil { 820 return x.Reason 821 } 822 return "" 823} 824 825type CancelAck struct { 826 state protoimpl.MessageState `protogen:"open.v1"` 827 LeaseId string `protobuf:"bytes,1,opt,name=lease_id,json=leaseId,proto3" json:"lease_id,omitempty"` 828 unknownFields protoimpl.UnknownFields 829 sizeCache protoimpl.SizeCache 830} 831 832func (x *CancelAck) Reset() { 833 *x = CancelAck{} 834 mi := &file_spindle_mill_v1_mill_proto_msgTypes[11] 835 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 836 ms.StoreMessageInfo(mi) 837} 838 839func (x *CancelAck) String() string { 840 return protoimpl.X.MessageStringOf(x) 841} 842 843func (*CancelAck) ProtoMessage() {} 844 845func (x *CancelAck) ProtoReflect() protoreflect.Message { 846 mi := &file_spindle_mill_v1_mill_proto_msgTypes[11] 847 if x != nil { 848 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 849 if ms.LoadMessageInfo() == nil { 850 ms.StoreMessageInfo(mi) 851 } 852 return ms 853 } 854 return mi.MessageOf(x) 855} 856 857// Deprecated: Use CancelAck.ProtoReflect.Descriptor instead. 858func (*CancelAck) Descriptor() ([]byte, []int) { 859 return file_spindle_mill_v1_mill_proto_rawDescGZIP(), []int{11} 860} 861 862func (x *CancelAck) GetLeaseId() string { 863 if x != nil { 864 return x.LeaseId 865 } 866 return "" 867} 868 869type StatusEvent struct { 870 state protoimpl.MessageState `protogen:"open.v1"` 871 Status NonterminalStatus `protobuf:"varint,1,opt,name=status,proto3,enum=spindle.mill.v1.NonterminalStatus" json:"status,omitempty"` 872 Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` 873 ExitCode int64 `protobuf:"varint,3,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"` 874 unknownFields protoimpl.UnknownFields 875 sizeCache protoimpl.SizeCache 876} 877 878func (x *StatusEvent) Reset() { 879 *x = StatusEvent{} 880 mi := &file_spindle_mill_v1_mill_proto_msgTypes[12] 881 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 882 ms.StoreMessageInfo(mi) 883} 884 885func (x *StatusEvent) String() string { 886 return protoimpl.X.MessageStringOf(x) 887} 888 889func (*StatusEvent) ProtoMessage() {} 890 891func (x *StatusEvent) ProtoReflect() protoreflect.Message { 892 mi := &file_spindle_mill_v1_mill_proto_msgTypes[12] 893 if x != nil { 894 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 895 if ms.LoadMessageInfo() == nil { 896 ms.StoreMessageInfo(mi) 897 } 898 return ms 899 } 900 return mi.MessageOf(x) 901} 902 903// Deprecated: Use StatusEvent.ProtoReflect.Descriptor instead. 904func (*StatusEvent) Descriptor() ([]byte, []int) { 905 return file_spindle_mill_v1_mill_proto_rawDescGZIP(), []int{12} 906} 907 908func (x *StatusEvent) GetStatus() NonterminalStatus { 909 if x != nil { 910 return x.Status 911 } 912 return NonterminalStatus_NONTERMINAL_STATUS_UNSPECIFIED 913} 914 915func (x *StatusEvent) GetError() string { 916 if x != nil { 917 return x.Error 918 } 919 return "" 920} 921 922func (x *StatusEvent) GetExitCode() int64 { 923 if x != nil { 924 return x.ExitCode 925 } 926 return 0 927} 928 929type LogArtifact struct { 930 state protoimpl.MessageState `protogen:"open.v1"` 931 Ref string `protobuf:"bytes,1,opt,name=ref,proto3" json:"ref,omitempty"` 932 Hash string `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"` 933 unknownFields protoimpl.UnknownFields 934 sizeCache protoimpl.SizeCache 935} 936 937func (x *LogArtifact) Reset() { 938 *x = LogArtifact{} 939 mi := &file_spindle_mill_v1_mill_proto_msgTypes[13] 940 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 941 ms.StoreMessageInfo(mi) 942} 943 944func (x *LogArtifact) String() string { 945 return protoimpl.X.MessageStringOf(x) 946} 947 948func (*LogArtifact) ProtoMessage() {} 949 950func (x *LogArtifact) ProtoReflect() protoreflect.Message { 951 mi := &file_spindle_mill_v1_mill_proto_msgTypes[13] 952 if x != nil { 953 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 954 if ms.LoadMessageInfo() == nil { 955 ms.StoreMessageInfo(mi) 956 } 957 return ms 958 } 959 return mi.MessageOf(x) 960} 961 962// Deprecated: Use LogArtifact.ProtoReflect.Descriptor instead. 963func (*LogArtifact) Descriptor() ([]byte, []int) { 964 return file_spindle_mill_v1_mill_proto_rawDescGZIP(), []int{13} 965} 966 967func (x *LogArtifact) GetRef() string { 968 if x != nil { 969 return x.Ref 970 } 971 return "" 972} 973 974func (x *LogArtifact) GetHash() string { 975 if x != nil { 976 return x.Hash 977 } 978 return "" 979} 980 981// terminal outcome of an attempt 982type AttemptResult struct { 983 state protoimpl.MessageState `protogen:"open.v1"` 984 Status TerminalStatus `protobuf:"varint,1,opt,name=status,proto3,enum=spindle.mill.v1.TerminalStatus" json:"status,omitempty"` 985 Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` 986 ExitCode int64 `protobuf:"varint,3,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"` 987 LogArtifact *LogArtifact `protobuf:"bytes,4,opt,name=log_artifact,json=logArtifact,proto3" json:"log_artifact,omitempty"` 988 unknownFields protoimpl.UnknownFields 989 sizeCache protoimpl.SizeCache 990} 991 992func (x *AttemptResult) Reset() { 993 *x = AttemptResult{} 994 mi := &file_spindle_mill_v1_mill_proto_msgTypes[14] 995 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 996 ms.StoreMessageInfo(mi) 997} 998 999func (x *AttemptResult) String() string { 1000 return protoimpl.X.MessageStringOf(x) 1001} 1002 1003func (*AttemptResult) ProtoMessage() {} 1004 1005func (x *AttemptResult) ProtoReflect() protoreflect.Message { 1006 mi := &file_spindle_mill_v1_mill_proto_msgTypes[14] 1007 if x != nil { 1008 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1009 if ms.LoadMessageInfo() == nil { 1010 ms.StoreMessageInfo(mi) 1011 } 1012 return ms 1013 } 1014 return mi.MessageOf(x) 1015} 1016 1017// Deprecated: Use AttemptResult.ProtoReflect.Descriptor instead. 1018func (*AttemptResult) Descriptor() ([]byte, []int) { 1019 return file_spindle_mill_v1_mill_proto_rawDescGZIP(), []int{14} 1020} 1021 1022func (x *AttemptResult) GetStatus() TerminalStatus { 1023 if x != nil { 1024 return x.Status 1025 } 1026 return TerminalStatus_TERMINAL_STATUS_UNSPECIFIED 1027} 1028 1029func (x *AttemptResult) GetError() string { 1030 if x != nil { 1031 return x.Error 1032 } 1033 return "" 1034} 1035 1036func (x *AttemptResult) GetExitCode() int64 { 1037 if x != nil { 1038 return x.ExitCode 1039 } 1040 return 0 1041} 1042 1043func (x *AttemptResult) GetLogArtifact() *LogArtifact { 1044 if x != nil { 1045 return x.LogArtifact 1046 } 1047 return nil 1048} 1049 1050// live non-replay log frame 1051type LiveLog struct { 1052 state protoimpl.MessageState `protogen:"open.v1"` 1053 LeaseId string `protobuf:"bytes,1,opt,name=lease_id,json=leaseId,proto3" json:"lease_id,omitempty"` 1054 RawJson []byte `protobuf:"bytes,2,opt,name=raw_json,json=rawJson,proto3" json:"raw_json,omitempty"` 1055 unknownFields protoimpl.UnknownFields 1056 sizeCache protoimpl.SizeCache 1057} 1058 1059func (x *LiveLog) Reset() { 1060 *x = LiveLog{} 1061 mi := &file_spindle_mill_v1_mill_proto_msgTypes[15] 1062 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1063 ms.StoreMessageInfo(mi) 1064} 1065 1066func (x *LiveLog) String() string { 1067 return protoimpl.X.MessageStringOf(x) 1068} 1069 1070func (*LiveLog) ProtoMessage() {} 1071 1072func (x *LiveLog) ProtoReflect() protoreflect.Message { 1073 mi := &file_spindle_mill_v1_mill_proto_msgTypes[15] 1074 if x != nil { 1075 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1076 if ms.LoadMessageInfo() == nil { 1077 ms.StoreMessageInfo(mi) 1078 } 1079 return ms 1080 } 1081 return mi.MessageOf(x) 1082} 1083 1084// Deprecated: Use LiveLog.ProtoReflect.Descriptor instead. 1085func (*LiveLog) Descriptor() ([]byte, []int) { 1086 return file_spindle_mill_v1_mill_proto_rawDescGZIP(), []int{15} 1087} 1088 1089func (x *LiveLog) GetLeaseId() string { 1090 if x != nil { 1091 return x.LeaseId 1092 } 1093 return "" 1094} 1095 1096func (x *LiveLog) GetRawJson() []byte { 1097 if x != nil { 1098 return x.RawJson 1099 } 1100 return nil 1101} 1102 1103// one event in the executor's stream back to the mill 1104type Event struct { 1105 state protoimpl.MessageState `protogen:"open.v1"` 1106 Seqno uint64 `protobuf:"varint,1,opt,name=seqno,proto3" json:"seqno,omitempty"` 1107 LeaseId string `protobuf:"bytes,2,opt,name=lease_id,json=leaseId,proto3" json:"lease_id,omitempty"` 1108 // Types that are valid to be assigned to Payload: 1109 // 1110 // *Event_StatusEvent 1111 // *Event_AttemptResult 1112 Payload isEvent_Payload `protobuf_oneof:"payload"` 1113 unknownFields protoimpl.UnknownFields 1114 sizeCache protoimpl.SizeCache 1115} 1116 1117func (x *Event) Reset() { 1118 *x = Event{} 1119 mi := &file_spindle_mill_v1_mill_proto_msgTypes[16] 1120 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1121 ms.StoreMessageInfo(mi) 1122} 1123 1124func (x *Event) String() string { 1125 return protoimpl.X.MessageStringOf(x) 1126} 1127 1128func (*Event) ProtoMessage() {} 1129 1130func (x *Event) ProtoReflect() protoreflect.Message { 1131 mi := &file_spindle_mill_v1_mill_proto_msgTypes[16] 1132 if x != nil { 1133 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1134 if ms.LoadMessageInfo() == nil { 1135 ms.StoreMessageInfo(mi) 1136 } 1137 return ms 1138 } 1139 return mi.MessageOf(x) 1140} 1141 1142// Deprecated: Use Event.ProtoReflect.Descriptor instead. 1143func (*Event) Descriptor() ([]byte, []int) { 1144 return file_spindle_mill_v1_mill_proto_rawDescGZIP(), []int{16} 1145} 1146 1147func (x *Event) GetSeqno() uint64 { 1148 if x != nil { 1149 return x.Seqno 1150 } 1151 return 0 1152} 1153 1154func (x *Event) GetLeaseId() string { 1155 if x != nil { 1156 return x.LeaseId 1157 } 1158 return "" 1159} 1160 1161func (x *Event) GetPayload() isEvent_Payload { 1162 if x != nil { 1163 return x.Payload 1164 } 1165 return nil 1166} 1167 1168func (x *Event) GetStatusEvent() *StatusEvent { 1169 if x != nil { 1170 if x, ok := x.Payload.(*Event_StatusEvent); ok { 1171 return x.StatusEvent 1172 } 1173 } 1174 return nil 1175} 1176 1177func (x *Event) GetAttemptResult() *AttemptResult { 1178 if x != nil { 1179 if x, ok := x.Payload.(*Event_AttemptResult); ok { 1180 return x.AttemptResult 1181 } 1182 } 1183 return nil 1184} 1185 1186type isEvent_Payload interface { 1187 isEvent_Payload() 1188} 1189 1190type Event_StatusEvent struct { 1191 StatusEvent *StatusEvent `protobuf:"bytes,3,opt,name=status_event,json=statusEvent,proto3,oneof"` 1192} 1193 1194type Event_AttemptResult struct { 1195 AttemptResult *AttemptResult `protobuf:"bytes,4,opt,name=attempt_result,json=attemptResult,proto3,oneof"` 1196} 1197 1198func (*Event_StatusEvent) isEvent_Payload() {} 1199 1200func (*Event_AttemptResult) isEvent_Payload() {} 1201 1202// a flushed bundle of events 1203type EventBatch struct { 1204 state protoimpl.MessageState `protogen:"open.v1"` 1205 Epoch string `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` 1206 Events []*Event `protobuf:"bytes,2,rep,name=events,proto3" json:"events,omitempty"` 1207 unknownFields protoimpl.UnknownFields 1208 sizeCache protoimpl.SizeCache 1209} 1210 1211func (x *EventBatch) Reset() { 1212 *x = EventBatch{} 1213 mi := &file_spindle_mill_v1_mill_proto_msgTypes[17] 1214 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1215 ms.StoreMessageInfo(mi) 1216} 1217 1218func (x *EventBatch) String() string { 1219 return protoimpl.X.MessageStringOf(x) 1220} 1221 1222func (*EventBatch) ProtoMessage() {} 1223 1224func (x *EventBatch) ProtoReflect() protoreflect.Message { 1225 mi := &file_spindle_mill_v1_mill_proto_msgTypes[17] 1226 if x != nil { 1227 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1228 if ms.LoadMessageInfo() == nil { 1229 ms.StoreMessageInfo(mi) 1230 } 1231 return ms 1232 } 1233 return mi.MessageOf(x) 1234} 1235 1236// Deprecated: Use EventBatch.ProtoReflect.Descriptor instead. 1237func (*EventBatch) Descriptor() ([]byte, []int) { 1238 return file_spindle_mill_v1_mill_proto_rawDescGZIP(), []int{17} 1239} 1240 1241func (x *EventBatch) GetEpoch() string { 1242 if x != nil { 1243 return x.Epoch 1244 } 1245 return "" 1246} 1247 1248func (x *EventBatch) GetEvents() []*Event { 1249 if x != nil { 1250 return x.Events 1251 } 1252 return nil 1253} 1254 1255// all events up to and including up_to_seqno are durably processed 1256type Ack struct { 1257 state protoimpl.MessageState `protogen:"open.v1"` 1258 Epoch string `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` 1259 UpToSeqno uint64 `protobuf:"varint,2,opt,name=up_to_seqno,json=upToSeqno,proto3" json:"up_to_seqno,omitempty"` 1260 unknownFields protoimpl.UnknownFields 1261 sizeCache protoimpl.SizeCache 1262} 1263 1264func (x *Ack) Reset() { 1265 *x = Ack{} 1266 mi := &file_spindle_mill_v1_mill_proto_msgTypes[18] 1267 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1268 ms.StoreMessageInfo(mi) 1269} 1270 1271func (x *Ack) String() string { 1272 return protoimpl.X.MessageStringOf(x) 1273} 1274 1275func (*Ack) ProtoMessage() {} 1276 1277func (x *Ack) ProtoReflect() protoreflect.Message { 1278 mi := &file_spindle_mill_v1_mill_proto_msgTypes[18] 1279 if x != nil { 1280 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1281 if ms.LoadMessageInfo() == nil { 1282 ms.StoreMessageInfo(mi) 1283 } 1284 return ms 1285 } 1286 return mi.MessageOf(x) 1287} 1288 1289// Deprecated: Use Ack.ProtoReflect.Descriptor instead. 1290func (*Ack) Descriptor() ([]byte, []int) { 1291 return file_spindle_mill_v1_mill_proto_rawDescGZIP(), []int{18} 1292} 1293 1294func (x *Ack) GetEpoch() string { 1295 if x != nil { 1296 return x.Epoch 1297 } 1298 return "" 1299} 1300 1301func (x *Ack) GetUpToSeqno() uint64 { 1302 if x != nil { 1303 return x.UpToSeqno 1304 } 1305 return 0 1306} 1307 1308type Message struct { 1309 state protoimpl.MessageState `protogen:"open.v1"` 1310 Hello *Hello `protobuf:"bytes,1,opt,name=hello,proto3" json:"hello,omitempty"` 1311 Resume *Resume `protobuf:"bytes,2,opt,name=resume,proto3" json:"resume,omitempty"` 1312 NodeSnapshot *NodeSnapshot `protobuf:"bytes,3,opt,name=node_snapshot,json=nodeSnapshot,proto3" json:"node_snapshot,omitempty"` 1313 ReserveSeat *ReserveSeat `protobuf:"bytes,4,opt,name=reserve_seat,json=reserveSeat,proto3" json:"reserve_seat,omitempty"` 1314 ReserveResult *ReserveResult `protobuf:"bytes,5,opt,name=reserve_result,json=reserveResult,proto3" json:"reserve_result,omitempty"` 1315 CommitLease *CommitLease `protobuf:"bytes,6,opt,name=commit_lease,json=commitLease,proto3" json:"commit_lease,omitempty"` 1316 Committed *Committed `protobuf:"bytes,7,opt,name=committed,proto3" json:"committed,omitempty"` 1317 ReleaseLease *ReleaseLease `protobuf:"bytes,8,opt,name=release_lease,json=releaseLease,proto3" json:"release_lease,omitempty"` 1318 CancelAttempt *CancelAttempt `protobuf:"bytes,9,opt,name=cancel_attempt,json=cancelAttempt,proto3" json:"cancel_attempt,omitempty"` 1319 CancelAck *CancelAck `protobuf:"bytes,10,opt,name=cancel_ack,json=cancelAck,proto3" json:"cancel_ack,omitempty"` 1320 EventBatch *EventBatch `protobuf:"bytes,11,opt,name=event_batch,json=eventBatch,proto3" json:"event_batch,omitempty"` 1321 Ack *Ack `protobuf:"bytes,12,opt,name=ack,proto3" json:"ack,omitempty"` 1322 LiveLog *LiveLog `protobuf:"bytes,13,opt,name=live_log,json=liveLog,proto3" json:"live_log,omitempty"` 1323 unknownFields protoimpl.UnknownFields 1324 sizeCache protoimpl.SizeCache 1325} 1326 1327func (x *Message) Reset() { 1328 *x = Message{} 1329 mi := &file_spindle_mill_v1_mill_proto_msgTypes[19] 1330 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1331 ms.StoreMessageInfo(mi) 1332} 1333 1334func (x *Message) String() string { 1335 return protoimpl.X.MessageStringOf(x) 1336} 1337 1338func (*Message) ProtoMessage() {} 1339 1340func (x *Message) ProtoReflect() protoreflect.Message { 1341 mi := &file_spindle_mill_v1_mill_proto_msgTypes[19] 1342 if x != nil { 1343 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1344 if ms.LoadMessageInfo() == nil { 1345 ms.StoreMessageInfo(mi) 1346 } 1347 return ms 1348 } 1349 return mi.MessageOf(x) 1350} 1351 1352// Deprecated: Use Message.ProtoReflect.Descriptor instead. 1353func (*Message) Descriptor() ([]byte, []int) { 1354 return file_spindle_mill_v1_mill_proto_rawDescGZIP(), []int{19} 1355} 1356 1357func (x *Message) GetHello() *Hello { 1358 if x != nil { 1359 return x.Hello 1360 } 1361 return nil 1362} 1363 1364func (x *Message) GetResume() *Resume { 1365 if x != nil { 1366 return x.Resume 1367 } 1368 return nil 1369} 1370 1371func (x *Message) GetNodeSnapshot() *NodeSnapshot { 1372 if x != nil { 1373 return x.NodeSnapshot 1374 } 1375 return nil 1376} 1377 1378func (x *Message) GetReserveSeat() *ReserveSeat { 1379 if x != nil { 1380 return x.ReserveSeat 1381 } 1382 return nil 1383} 1384 1385func (x *Message) GetReserveResult() *ReserveResult { 1386 if x != nil { 1387 return x.ReserveResult 1388 } 1389 return nil 1390} 1391 1392func (x *Message) GetCommitLease() *CommitLease { 1393 if x != nil { 1394 return x.CommitLease 1395 } 1396 return nil 1397} 1398 1399func (x *Message) GetCommitted() *Committed { 1400 if x != nil { 1401 return x.Committed 1402 } 1403 return nil 1404} 1405 1406func (x *Message) GetReleaseLease() *ReleaseLease { 1407 if x != nil { 1408 return x.ReleaseLease 1409 } 1410 return nil 1411} 1412 1413func (x *Message) GetCancelAttempt() *CancelAttempt { 1414 if x != nil { 1415 return x.CancelAttempt 1416 } 1417 return nil 1418} 1419 1420func (x *Message) GetCancelAck() *CancelAck { 1421 if x != nil { 1422 return x.CancelAck 1423 } 1424 return nil 1425} 1426 1427func (x *Message) GetEventBatch() *EventBatch { 1428 if x != nil { 1429 return x.EventBatch 1430 } 1431 return nil 1432} 1433 1434func (x *Message) GetAck() *Ack { 1435 if x != nil { 1436 return x.Ack 1437 } 1438 return nil 1439} 1440 1441func (x *Message) GetLiveLog() *LiveLog { 1442 if x != nil { 1443 return x.LiveLog 1444 } 1445 return nil 1446} 1447 1448var File_spindle_mill_v1_mill_proto protoreflect.FileDescriptor 1449 1450const file_spindle_mill_v1_mill_proto_rawDesc = "" + 1451 "\n" + 1452 "\x1aspindle/mill/v1/mill.proto\x12\x0fspindle.mill.v1\x1a\x1bbuf/validate/validate.proto\"}\n" + 1453 "\x05Hello\x12)\n" + 1454 "\x10protocol_version\x18\x01 \x01(\rR\x0fprotocolVersion\x12\x12\n" + 1455 "\x04arch\x18\x02 \x01(\tR\x04arch\x12\x16\n" + 1456 "\x06labels\x18\x03 \x03(\tR\x06labels\x12\x1d\n" + 1457 "\x05epoch\x18\x04 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\x05epoch\"D\n" + 1458 "\x06Resume\x12\x1d\n" + 1459 "\x05epoch\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\x05epoch\x12\x1b\n" + 1460 "\tack_seqno\x18\x02 \x01(\x04R\backSeqno\"\xae\x01\n" + 1461 "\x12EngineAvailability\x12\x1c\n" + 1462 "\tavailable\x18\x01 \x01(\bR\tavailable\x12A\n" + 1463 "\x04load\x18\x02 \x03(\v2-.spindle.mill.v1.EngineAvailability.LoadEntryR\x04load\x1a7\n" + 1464 "\tLoadEntry\x12\x10\n" + 1465 "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + 1466 "\x05value\x18\x02 \x01(\x01R\x05value:\x028\x01\"\xfe\x01\n" + 1467 "\fNodeSnapshot\x12\x1d\n" + 1468 "\x05seqno\x18\x01 \x01(\x04B\a\xbaH\x042\x02 \x00R\x05seqno\x12D\n" + 1469 "\aengines\x18\x02 \x03(\v2*.spindle.mill.v1.NodeSnapshot.EnginesEntryR\aengines\x12(\n" + 1470 "\x10active_lease_ids\x18\x03 \x03(\tR\x0eactiveLeaseIds\x1a_\n" + 1471 "\fEnginesEntry\x12\x10\n" + 1472 "\x03key\x18\x01 \x01(\tR\x03key\x129\n" + 1473 "\x05value\x18\x02 \x01(\v2#.spindle.mill.v1.EngineAvailabilityR\x05value:\x028\x01\"\x80\x02\n" + 1474 "\vReserveSeat\x12\"\n" + 1475 "\blease_id\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\aleaseId\x12,\n" + 1476 "\rtarget_engine\x18\x02 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\ftargetEngine\x12*\n" + 1477 "\x11raw_pipeline_json\x18\x03 \x01(\tR\x0frawPipelineJson\x12*\n" + 1478 "\x11raw_workflow_json\x18\x04 \x01(\tR\x0frawWorkflowJson\x12\x12\n" + 1479 "\x04knot\x18\x05 \x01(\tR\x04knot\x12\x12\n" + 1480 "\x04rkey\x18\x06 \x01(\tR\x04rkey\x12\x1f\n" + 1481 "\vttl_seconds\x18\a \x01(\rR\n" + 1482 "ttlSeconds\"\xbf\x01\n" + 1483 "\rReserveResult\x12\"\n" + 1484 "\blease_id\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\aleaseId\x12\x1a\n" + 1485 "\baccepted\x18\x02 \x01(\bR\baccepted\x12#\n" + 1486 "\rreject_reason\x18\x03 \x01(\tR\frejectReason\x12I\n" + 1487 "\freject_class\x18\x04 \x01(\x0e2\x1c.spindle.mill.v1.RejectClassB\b\xbaH\x05\x82\x01\x02\x10\x01R\vrejectClass\"0\n" + 1488 "\x06Secret\x12\x10\n" + 1489 "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + 1490 "\x05value\x18\x02 \x01(\tR\x05value\"d\n" + 1491 "\vCommitLease\x12\"\n" + 1492 "\blease_id\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\aleaseId\x121\n" + 1493 "\asecrets\x18\x02 \x03(\v2\x17.spindle.mill.v1.SecretR\asecrets\"/\n" + 1494 "\tCommitted\x12\"\n" + 1495 "\blease_id\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\aleaseId\"2\n" + 1496 "\fReleaseLease\x12\"\n" + 1497 "\blease_id\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\aleaseId\"K\n" + 1498 "\rCancelAttempt\x12\"\n" + 1499 "\blease_id\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\aleaseId\x12\x16\n" + 1500 "\x06reason\x18\x02 \x01(\tR\x06reason\"/\n" + 1501 "\tCancelAck\x12\"\n" + 1502 "\blease_id\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\aleaseId\"\x93\x01\n" + 1503 "\vStatusEvent\x12F\n" + 1504 "\x06status\x18\x01 \x01(\x0e2\".spindle.mill.v1.NonterminalStatusB\n" + 1505 "\xbaH\a\x82\x01\x04\x10\x01 \x00R\x06status\x12\x1f\n" + 1506 "\x05error\x18\x02 \x01(\tB\t\xbaH\x06r\x04(\x80\x80\x04R\x05error\x12\x1b\n" + 1507 "\texit_code\x18\x03 \x01(\x03R\bexitCode\"E\n" + 1508 "\vLogArtifact\x12\x19\n" + 1509 "\x03ref\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\x03ref\x12\x1b\n" + 1510 "\x04hash\x18\x02 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\x04hash\"\xd3\x01\n" + 1511 "\rAttemptResult\x12C\n" + 1512 "\x06status\x18\x01 \x01(\x0e2\x1f.spindle.mill.v1.TerminalStatusB\n" + 1513 "\xbaH\a\x82\x01\x04\x10\x01 \x00R\x06status\x12\x1f\n" + 1514 "\x05error\x18\x02 \x01(\tB\t\xbaH\x06r\x04(\x80\x80\x04R\x05error\x12\x1b\n" + 1515 "\texit_code\x18\x03 \x01(\x03R\bexitCode\x12?\n" + 1516 "\flog_artifact\x18\x04 \x01(\v2\x1c.spindle.mill.v1.LogArtifactR\vlogArtifact\"Q\n" + 1517 "\aLiveLog\x12\"\n" + 1518 "\blease_id\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\aleaseId\x12\"\n" + 1519 "\braw_json\x18\x02 \x01(\fB\a\xbaH\x04z\x02\x10\x01R\arawJson\"\xe8\x01\n" + 1520 "\x05Event\x12\x1d\n" + 1521 "\x05seqno\x18\x01 \x01(\x04B\a\xbaH\x042\x02 \x00R\x05seqno\x12\"\n" + 1522 "\blease_id\x18\x02 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\aleaseId\x12A\n" + 1523 "\fstatus_event\x18\x03 \x01(\v2\x1c.spindle.mill.v1.StatusEventH\x00R\vstatusEvent\x12G\n" + 1524 "\x0eattempt_result\x18\x04 \x01(\v2\x1e.spindle.mill.v1.AttemptResultH\x00R\rattemptResultB\x10\n" + 1525 "\apayload\x12\x05\xbaH\x02\b\x01\"e\n" + 1526 "\n" + 1527 "EventBatch\x12\x1d\n" + 1528 "\x05epoch\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\x05epoch\x128\n" + 1529 "\x06events\x18\x02 \x03(\v2\x16.spindle.mill.v1.EventB\b\xbaH\x05\x92\x01\x02\b\x01R\x06events\"D\n" + 1530 "\x03Ack\x12\x1d\n" + 1531 "\x05epoch\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\x05epoch\x12\x1e\n" + 1532 "\vup_to_seqno\x18\x02 \x01(\x04R\tupToSeqno\"\xb8\a\n" + 1533 "\aMessage\x12,\n" + 1534 "\x05hello\x18\x01 \x01(\v2\x16.spindle.mill.v1.HelloR\x05hello\x12/\n" + 1535 "\x06resume\x18\x02 \x01(\v2\x17.spindle.mill.v1.ResumeR\x06resume\x12B\n" + 1536 "\rnode_snapshot\x18\x03 \x01(\v2\x1d.spindle.mill.v1.NodeSnapshotR\fnodeSnapshot\x12?\n" + 1537 "\freserve_seat\x18\x04 \x01(\v2\x1c.spindle.mill.v1.ReserveSeatR\vreserveSeat\x12E\n" + 1538 "\x0ereserve_result\x18\x05 \x01(\v2\x1e.spindle.mill.v1.ReserveResultR\rreserveResult\x12?\n" + 1539 "\fcommit_lease\x18\x06 \x01(\v2\x1c.spindle.mill.v1.CommitLeaseR\vcommitLease\x128\n" + 1540 "\tcommitted\x18\a \x01(\v2\x1a.spindle.mill.v1.CommittedR\tcommitted\x12B\n" + 1541 "\rrelease_lease\x18\b \x01(\v2\x1d.spindle.mill.v1.ReleaseLeaseR\freleaseLease\x12E\n" + 1542 "\x0ecancel_attempt\x18\t \x01(\v2\x1e.spindle.mill.v1.CancelAttemptR\rcancelAttempt\x129\n" + 1543 "\n" + 1544 "cancel_ack\x18\n" + 1545 " \x01(\v2\x1a.spindle.mill.v1.CancelAckR\tcancelAck\x12<\n" + 1546 "\vevent_batch\x18\v \x01(\v2\x1b.spindle.mill.v1.EventBatchR\n" + 1547 "eventBatch\x12&\n" + 1548 "\x03ack\x18\f \x01(\v2\x14.spindle.mill.v1.AckR\x03ack\x123\n" + 1549 "\blive_log\x18\r \x01(\v2\x18.spindle.mill.v1.LiveLogR\aliveLog:\xa5\x01\xbaH\xa1\x01\"\x9e\x01\n" + 1550 "\x05hello\n" + 1551 "\x06resume\n" + 1552 "\rnode_snapshot\n" + 1553 "\freserve_seat\n" + 1554 "\x0ereserve_result\n" + 1555 "\fcommit_lease\n" + 1556 "\tcommitted\n" + 1557 "\rrelease_lease\n" + 1558 "\x0ecancel_attempt\n" + 1559 "\n" + 1560 "cancel_ack\n" + 1561 "\vevent_batch\n" + 1562 "\x03ack\n" + 1563 "\blive_log\x10\x01*f\n" + 1564 "\vRejectClass\x12\x1c\n" + 1565 "\x18REJECT_CLASS_UNSPECIFIED\x10\x00\x12\x1a\n" + 1566 "\x16REJECT_CLASS_TRANSIENT\x10\x01\x12\x1d\n" + 1567 "\x19REJECT_CLASS_INCOMPATIBLE\x10\x02*D\n" + 1568 "\x11NonterminalStatus\x12\"\n" + 1569 "\x1eNONTERMINAL_STATUS_UNSPECIFIED\x10\x00\x12\v\n" + 1570 "\aRUNNING\x10\x01*f\n" + 1571 "\x0eTerminalStatus\x12\x1f\n" + 1572 "\x1bTERMINAL_STATUS_UNSPECIFIED\x10\x00\x12\v\n" + 1573 "\aSUCCESS\x10\x01\x12\n" + 1574 "\n" + 1575 "\x06FAILED\x10\x02\x12\v\n" + 1576 "\aTIMEOUT\x10\x03\x12\r\n" + 1577 "\tCANCELLED\x10\x04B0Z.tangled.org/core/spindle/mill/proto/gen;millv1b\x06proto3" 1578 1579var ( 1580 file_spindle_mill_v1_mill_proto_rawDescOnce sync.Once 1581 file_spindle_mill_v1_mill_proto_rawDescData []byte 1582) 1583 1584func file_spindle_mill_v1_mill_proto_rawDescGZIP() []byte { 1585 file_spindle_mill_v1_mill_proto_rawDescOnce.Do(func() { 1586 file_spindle_mill_v1_mill_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_spindle_mill_v1_mill_proto_rawDesc), len(file_spindle_mill_v1_mill_proto_rawDesc))) 1587 }) 1588 return file_spindle_mill_v1_mill_proto_rawDescData 1589} 1590 1591var file_spindle_mill_v1_mill_proto_enumTypes = make([]protoimpl.EnumInfo, 3) 1592var file_spindle_mill_v1_mill_proto_msgTypes = make([]protoimpl.MessageInfo, 22) 1593var file_spindle_mill_v1_mill_proto_goTypes = []any{ 1594 (RejectClass)(0), // 0: spindle.mill.v1.RejectClass 1595 (NonterminalStatus)(0), // 1: spindle.mill.v1.NonterminalStatus 1596 (TerminalStatus)(0), // 2: spindle.mill.v1.TerminalStatus 1597 (*Hello)(nil), // 3: spindle.mill.v1.Hello 1598 (*Resume)(nil), // 4: spindle.mill.v1.Resume 1599 (*EngineAvailability)(nil), // 5: spindle.mill.v1.EngineAvailability 1600 (*NodeSnapshot)(nil), // 6: spindle.mill.v1.NodeSnapshot 1601 (*ReserveSeat)(nil), // 7: spindle.mill.v1.ReserveSeat 1602 (*ReserveResult)(nil), // 8: spindle.mill.v1.ReserveResult 1603 (*Secret)(nil), // 9: spindle.mill.v1.Secret 1604 (*CommitLease)(nil), // 10: spindle.mill.v1.CommitLease 1605 (*Committed)(nil), // 11: spindle.mill.v1.Committed 1606 (*ReleaseLease)(nil), // 12: spindle.mill.v1.ReleaseLease 1607 (*CancelAttempt)(nil), // 13: spindle.mill.v1.CancelAttempt 1608 (*CancelAck)(nil), // 14: spindle.mill.v1.CancelAck 1609 (*StatusEvent)(nil), // 15: spindle.mill.v1.StatusEvent 1610 (*LogArtifact)(nil), // 16: spindle.mill.v1.LogArtifact 1611 (*AttemptResult)(nil), // 17: spindle.mill.v1.AttemptResult 1612 (*LiveLog)(nil), // 18: spindle.mill.v1.LiveLog 1613 (*Event)(nil), // 19: spindle.mill.v1.Event 1614 (*EventBatch)(nil), // 20: spindle.mill.v1.EventBatch 1615 (*Ack)(nil), // 21: spindle.mill.v1.Ack 1616 (*Message)(nil), // 22: spindle.mill.v1.Message 1617 nil, // 23: spindle.mill.v1.EngineAvailability.LoadEntry 1618 nil, // 24: spindle.mill.v1.NodeSnapshot.EnginesEntry 1619} 1620var file_spindle_mill_v1_mill_proto_depIdxs = []int32{ 1621 23, // 0: spindle.mill.v1.EngineAvailability.load:type_name -> spindle.mill.v1.EngineAvailability.LoadEntry 1622 24, // 1: spindle.mill.v1.NodeSnapshot.engines:type_name -> spindle.mill.v1.NodeSnapshot.EnginesEntry 1623 0, // 2: spindle.mill.v1.ReserveResult.reject_class:type_name -> spindle.mill.v1.RejectClass 1624 9, // 3: spindle.mill.v1.CommitLease.secrets:type_name -> spindle.mill.v1.Secret 1625 1, // 4: spindle.mill.v1.StatusEvent.status:type_name -> spindle.mill.v1.NonterminalStatus 1626 2, // 5: spindle.mill.v1.AttemptResult.status:type_name -> spindle.mill.v1.TerminalStatus 1627 16, // 6: spindle.mill.v1.AttemptResult.log_artifact:type_name -> spindle.mill.v1.LogArtifact 1628 15, // 7: spindle.mill.v1.Event.status_event:type_name -> spindle.mill.v1.StatusEvent 1629 17, // 8: spindle.mill.v1.Event.attempt_result:type_name -> spindle.mill.v1.AttemptResult 1630 19, // 9: spindle.mill.v1.EventBatch.events:type_name -> spindle.mill.v1.Event 1631 3, // 10: spindle.mill.v1.Message.hello:type_name -> spindle.mill.v1.Hello 1632 4, // 11: spindle.mill.v1.Message.resume:type_name -> spindle.mill.v1.Resume 1633 6, // 12: spindle.mill.v1.Message.node_snapshot:type_name -> spindle.mill.v1.NodeSnapshot 1634 7, // 13: spindle.mill.v1.Message.reserve_seat:type_name -> spindle.mill.v1.ReserveSeat 1635 8, // 14: spindle.mill.v1.Message.reserve_result:type_name -> spindle.mill.v1.ReserveResult 1636 10, // 15: spindle.mill.v1.Message.commit_lease:type_name -> spindle.mill.v1.CommitLease 1637 11, // 16: spindle.mill.v1.Message.committed:type_name -> spindle.mill.v1.Committed 1638 12, // 17: spindle.mill.v1.Message.release_lease:type_name -> spindle.mill.v1.ReleaseLease 1639 13, // 18: spindle.mill.v1.Message.cancel_attempt:type_name -> spindle.mill.v1.CancelAttempt 1640 14, // 19: spindle.mill.v1.Message.cancel_ack:type_name -> spindle.mill.v1.CancelAck 1641 20, // 20: spindle.mill.v1.Message.event_batch:type_name -> spindle.mill.v1.EventBatch 1642 21, // 21: spindle.mill.v1.Message.ack:type_name -> spindle.mill.v1.Ack 1643 18, // 22: spindle.mill.v1.Message.live_log:type_name -> spindle.mill.v1.LiveLog 1644 5, // 23: spindle.mill.v1.NodeSnapshot.EnginesEntry.value:type_name -> spindle.mill.v1.EngineAvailability 1645 24, // [24:24] is the sub-list for method output_type 1646 24, // [24:24] is the sub-list for method input_type 1647 24, // [24:24] is the sub-list for extension type_name 1648 24, // [24:24] is the sub-list for extension extendee 1649 0, // [0:24] is the sub-list for field type_name 1650} 1651 1652func init() { file_spindle_mill_v1_mill_proto_init() } 1653func file_spindle_mill_v1_mill_proto_init() { 1654 if File_spindle_mill_v1_mill_proto != nil { 1655 return 1656 } 1657 file_spindle_mill_v1_mill_proto_msgTypes[16].OneofWrappers = []any{ 1658 (*Event_StatusEvent)(nil), 1659 (*Event_AttemptResult)(nil), 1660 } 1661 type x struct{} 1662 out := protoimpl.TypeBuilder{ 1663 File: protoimpl.DescBuilder{ 1664 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 1665 RawDescriptor: unsafe.Slice(unsafe.StringData(file_spindle_mill_v1_mill_proto_rawDesc), len(file_spindle_mill_v1_mill_proto_rawDesc)), 1666 NumEnums: 3, 1667 NumMessages: 22, 1668 NumExtensions: 0, 1669 NumServices: 0, 1670 }, 1671 GoTypes: file_spindle_mill_v1_mill_proto_goTypes, 1672 DependencyIndexes: file_spindle_mill_v1_mill_proto_depIdxs, 1673 EnumInfos: file_spindle_mill_v1_mill_proto_enumTypes, 1674 MessageInfos: file_spindle_mill_v1_mill_proto_msgTypes, 1675 }.Build() 1676 File_spindle_mill_v1_mill_proto = out.File 1677 file_spindle_mill_v1_mill_proto_goTypes = nil 1678 file_spindle_mill_v1_mill_proto_depIdxs = nil 1679}