Documentation ¶
Index ¶
- Variables
- func RegisterOSServer(s *grpc.Server, srv OSServer)
- type ActivateError
- func (*ActivateError) Descriptor() ([]byte, []int)deprecated
- func (x *ActivateError) GetDetail() string
- func (x *ActivateError) GetType() ActivateError_Type
- func (*ActivateError) ProtoMessage()
- func (x *ActivateError) ProtoReflect() protoreflect.Message
- func (x *ActivateError) Reset()
- func (x *ActivateError) String() string
- type ActivateError_Type
- func (ActivateError_Type) Descriptor() protoreflect.EnumDescriptor
- func (x ActivateError_Type) Enum() *ActivateError_Type
- func (ActivateError_Type) EnumDescriptor() ([]byte, []int)deprecated
- func (x ActivateError_Type) Number() protoreflect.EnumNumber
- func (x ActivateError_Type) String() string
- func (ActivateError_Type) Type() protoreflect.EnumType
- type ActivateOK
- type ActivateRequest
- func (*ActivateRequest) Descriptor() ([]byte, []int)deprecated
- func (x *ActivateRequest) GetStandbySupervisor() bool
- func (x *ActivateRequest) GetVersion() string
- func (*ActivateRequest) ProtoMessage()
- func (x *ActivateRequest) ProtoReflect() protoreflect.Message
- func (x *ActivateRequest) Reset()
- func (x *ActivateRequest) String() string
- type ActivateResponse
- func (*ActivateResponse) Descriptor() ([]byte, []int)deprecated
- func (x *ActivateResponse) GetActivateError() *ActivateError
- func (x *ActivateResponse) GetActivateOk() *ActivateOK
- func (m *ActivateResponse) GetResponse() isActivateResponse_Response
- func (*ActivateResponse) ProtoMessage()
- func (x *ActivateResponse) ProtoReflect() protoreflect.Message
- func (x *ActivateResponse) Reset()
- func (x *ActivateResponse) String() string
- type ActivateResponse_ActivateError
- type ActivateResponse_ActivateOk
- type InstallError
- func (*InstallError) Descriptor() ([]byte, []int)deprecated
- func (x *InstallError) GetDetail() string
- func (x *InstallError) GetType() InstallError_Type
- func (*InstallError) ProtoMessage()
- func (x *InstallError) ProtoReflect() protoreflect.Message
- func (x *InstallError) Reset()
- func (x *InstallError) String() string
- type InstallError_Type
- func (InstallError_Type) Descriptor() protoreflect.EnumDescriptor
- func (x InstallError_Type) Enum() *InstallError_Type
- func (InstallError_Type) EnumDescriptor() ([]byte, []int)deprecated
- func (x InstallError_Type) Number() protoreflect.EnumNumber
- func (x InstallError_Type) String() string
- func (InstallError_Type) Type() protoreflect.EnumType
- type InstallRequest
- func (*InstallRequest) Descriptor() ([]byte, []int)deprecated
- func (m *InstallRequest) GetRequest() isInstallRequest_Request
- func (x *InstallRequest) GetTransferContent() []byte
- func (x *InstallRequest) GetTransferEnd() *TransferEnd
- func (x *InstallRequest) GetTransferRequest() *TransferRequest
- func (*InstallRequest) ProtoMessage()
- func (x *InstallRequest) ProtoReflect() protoreflect.Message
- func (x *InstallRequest) Reset()
- func (x *InstallRequest) String() string
- type InstallRequest_TransferContent
- type InstallRequest_TransferEnd
- type InstallRequest_TransferRequest
- type InstallResponse
- func (*InstallResponse) Descriptor() ([]byte, []int)deprecated
- func (x *InstallResponse) GetInstallError() *InstallError
- func (m *InstallResponse) GetResponse() isInstallResponse_Response
- func (x *InstallResponse) GetSyncProgress() *SyncProgress
- func (x *InstallResponse) GetTransferProgress() *TransferProgress
- func (x *InstallResponse) GetTransferReady() *TransferReady
- func (x *InstallResponse) GetValidated() *Validated
- func (*InstallResponse) ProtoMessage()
- func (x *InstallResponse) ProtoReflect() protoreflect.Message
- func (x *InstallResponse) Reset()
- func (x *InstallResponse) String() string
- type InstallResponse_InstallError
- type InstallResponse_SyncProgress
- type InstallResponse_TransferProgress
- type InstallResponse_TransferReady
- type InstallResponse_Validated
- type OSClient
- type OSServer
- type OS_InstallClient
- type OS_InstallServer
- type StandbyResponse
- func (*StandbyResponse) Descriptor() ([]byte, []int)deprecated
- func (x *StandbyResponse) GetActivationFailMessage() string
- func (x *StandbyResponse) GetId() string
- func (x *StandbyResponse) GetVersion() string
- func (*StandbyResponse) ProtoMessage()
- func (x *StandbyResponse) ProtoReflect() protoreflect.Message
- func (x *StandbyResponse) Reset()
- func (x *StandbyResponse) String() string
- type StandbyState
- type StandbyState_State
- func (StandbyState_State) Descriptor() protoreflect.EnumDescriptor
- func (x StandbyState_State) Enum() *StandbyState_State
- func (StandbyState_State) EnumDescriptor() ([]byte, []int)deprecated
- func (x StandbyState_State) Number() protoreflect.EnumNumber
- func (x StandbyState_State) String() string
- func (StandbyState_State) Type() protoreflect.EnumType
- type SyncProgress
- type TransferEnd
- type TransferProgress
- type TransferReady
- type TransferRequest
- func (*TransferRequest) Descriptor() ([]byte, []int)deprecated
- func (x *TransferRequest) GetStandbySupervisor() bool
- func (x *TransferRequest) GetVersion() string
- func (*TransferRequest) ProtoMessage()
- func (x *TransferRequest) ProtoReflect() protoreflect.Message
- func (x *TransferRequest) Reset()
- func (x *TransferRequest) String() string
- type UnimplementedOSServer
- type Validated
- type VerifyRequest
- type VerifyResponse
- func (*VerifyResponse) Descriptor() ([]byte, []int)deprecated
- func (x *VerifyResponse) GetActivationFailMessage() string
- func (x *VerifyResponse) GetVerifyStandby() *VerifyStandby
- func (x *VerifyResponse) GetVersion() string
- func (*VerifyResponse) ProtoMessage()
- func (x *VerifyResponse) ProtoReflect() protoreflect.Message
- func (x *VerifyResponse) Reset()
- func (x *VerifyResponse) String() string
- type VerifyStandby
- func (*VerifyStandby) Descriptor() ([]byte, []int)deprecated
- func (x *VerifyStandby) GetStandbyState() *StandbyState
- func (m *VerifyStandby) GetState() isVerifyStandby_State
- func (x *VerifyStandby) GetVerifyResponse() *StandbyResponse
- func (*VerifyStandby) ProtoMessage()
- func (x *VerifyStandby) ProtoReflect() protoreflect.Message
- func (x *VerifyStandby) Reset()
- func (x *VerifyStandby) String() string
- type VerifyStandby_StandbyState
- type VerifyStandby_VerifyResponse
Constants ¶
This section is empty.
Variables ¶
var ( InstallError_Type_name = map[int32]string{ 0: "UNSPECIFIED", 1: "INCOMPATIBLE", 2: "TOO_LARGE", 3: "PARSE_FAIL", 4: "INTEGRITY_FAIL", 5: "INSTALL_RUN_PACKAGE", 6: "INSTALL_IN_PROGRESS", 7: "UNEXPECTED_SWITCHOVER", 8: "SYNC_FAIL", } InstallError_Type_value = map[string]int32{ "UNSPECIFIED": 0, "INCOMPATIBLE": 1, "TOO_LARGE": 2, "PARSE_FAIL": 3, "INTEGRITY_FAIL": 4, "INSTALL_RUN_PACKAGE": 5, "INSTALL_IN_PROGRESS": 6, "UNEXPECTED_SWITCHOVER": 7, "SYNC_FAIL": 8, } )
Enum value maps for InstallError_Type.
var ( ActivateError_Type_name = map[int32]string{ 0: "UNSPECIFIED", 1: "NON_EXISTENT_VERSION", } ActivateError_Type_value = map[string]int32{ "UNSPECIFIED": 0, "NON_EXISTENT_VERSION": 1, } )
Enum value maps for ActivateError_Type.
var ( StandbyState_State_name = map[int32]string{ 0: "UNSPECIFIED", 1: "UNSUPORTED", 2: "NON_EXISTENT", 3: "UNAVAILABLE", } StandbyState_State_value = map[string]int32{ "UNSPECIFIED": 0, "UNSUPORTED": 1, "NON_EXISTENT": 2, "UNAVAILABLE": 3, } )
Enum value maps for StandbyState_State.
var File_os_proto protoreflect.FileDescriptor
Functions ¶
func RegisterOSServer ¶
Types ¶
type ActivateError ¶
type ActivateError struct { Type ActivateError_Type `protobuf:"varint,1,opt,name=type,proto3,enum=gnoi.os.ActivateError_Type" json:"type,omitempty"` Detail string `protobuf:"bytes,2,opt,name=detail,proto3" json:"detail,omitempty"` // contains filtered or unexported fields }
func (*ActivateError) Descriptor
deprecated
func (*ActivateError) Descriptor() ([]byte, []int)
Deprecated: Use ActivateError.ProtoReflect.Descriptor instead.
func (*ActivateError) GetDetail ¶
func (x *ActivateError) GetDetail() string
func (*ActivateError) GetType ¶
func (x *ActivateError) GetType() ActivateError_Type
func (*ActivateError) ProtoMessage ¶
func (*ActivateError) ProtoMessage()
func (*ActivateError) ProtoReflect ¶
func (x *ActivateError) ProtoReflect() protoreflect.Message
func (*ActivateError) Reset ¶
func (x *ActivateError) Reset()
func (*ActivateError) String ¶
func (x *ActivateError) String() string
type ActivateError_Type ¶
type ActivateError_Type int32
const ( // An unspecified error. Must use the detail value to describe the issue. ActivateError_UNSPECIFIED ActivateError_Type = 0 // There is no OS package with the version requested for activation. This is // also used for an empty version string. ActivateError_NON_EXISTENT_VERSION ActivateError_Type = 1 )
func (ActivateError_Type) Descriptor ¶
func (ActivateError_Type) Descriptor() protoreflect.EnumDescriptor
func (ActivateError_Type) Enum ¶
func (x ActivateError_Type) Enum() *ActivateError_Type
func (ActivateError_Type) EnumDescriptor
deprecated
func (ActivateError_Type) EnumDescriptor() ([]byte, []int)
Deprecated: Use ActivateError_Type.Descriptor instead.
func (ActivateError_Type) Number ¶
func (x ActivateError_Type) Number() protoreflect.EnumNumber
func (ActivateError_Type) String ¶
func (x ActivateError_Type) String() string
func (ActivateError_Type) Type ¶
func (ActivateError_Type) Type() protoreflect.EnumType
type ActivateOK ¶
type ActivateOK struct {
// contains filtered or unexported fields
}
If the Target is already running the requested version in ActivateRequest, then it replies with ActivateOK. If the Target has the OS package version requested in ActivateRequest then it replies with ActivateOK and proceeds to boot. In a Target with dual Supervisor, performing this RPC on the Active Supervisor triggers a switchover before booting the (old)Active Supervisor. The Target should always perform a switchover with the least impact possible to forwarding.
func (*ActivateOK) Descriptor
deprecated
func (*ActivateOK) Descriptor() ([]byte, []int)
Deprecated: Use ActivateOK.ProtoReflect.Descriptor instead.
func (*ActivateOK) ProtoMessage ¶
func (*ActivateOK) ProtoMessage()
func (*ActivateOK) ProtoReflect ¶
func (x *ActivateOK) ProtoReflect() protoreflect.Message
func (*ActivateOK) Reset ¶
func (x *ActivateOK) Reset()
func (*ActivateOK) String ¶
func (x *ActivateOK) String() string
type ActivateRequest ¶
type ActivateRequest struct { // The version that is required to be activated and booted. Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` // For dual Supervisors setting this flag instructs the Target to perform the // action on the Standby Supervisor. StandbySupervisor bool `protobuf:"varint,2,opt,name=standby_supervisor,json=standbySupervisor,proto3" json:"standby_supervisor,omitempty"` // contains filtered or unexported fields }
The ActivateRequest is sent by the Client to the Target to initiate a change in the next bootable OS version that is to be used on the Target.
func (*ActivateRequest) Descriptor
deprecated
func (*ActivateRequest) Descriptor() ([]byte, []int)
Deprecated: Use ActivateRequest.ProtoReflect.Descriptor instead.
func (*ActivateRequest) GetStandbySupervisor ¶
func (x *ActivateRequest) GetStandbySupervisor() bool
func (*ActivateRequest) GetVersion ¶
func (x *ActivateRequest) GetVersion() string
func (*ActivateRequest) ProtoMessage ¶
func (*ActivateRequest) ProtoMessage()
func (*ActivateRequest) ProtoReflect ¶
func (x *ActivateRequest) ProtoReflect() protoreflect.Message
func (*ActivateRequest) Reset ¶
func (x *ActivateRequest) Reset()
func (*ActivateRequest) String ¶
func (x *ActivateRequest) String() string
type ActivateResponse ¶
type ActivateResponse struct { // Types that are assignable to Response: // *ActivateResponse_ActivateOk // *ActivateResponse_ActivateError Response isActivateResponse_Response `protobuf_oneof:"response"` // contains filtered or unexported fields }
The ActivateResponse is sent from the Target to the Client in response to the Activate RPC. It indicates the success of making the OS package version active.
func (*ActivateResponse) Descriptor
deprecated
func (*ActivateResponse) Descriptor() ([]byte, []int)
Deprecated: Use ActivateResponse.ProtoReflect.Descriptor instead.
func (*ActivateResponse) GetActivateError ¶
func (x *ActivateResponse) GetActivateError() *ActivateError
func (*ActivateResponse) GetActivateOk ¶
func (x *ActivateResponse) GetActivateOk() *ActivateOK
func (*ActivateResponse) GetResponse ¶
func (m *ActivateResponse) GetResponse() isActivateResponse_Response
func (*ActivateResponse) ProtoMessage ¶
func (*ActivateResponse) ProtoMessage()
func (*ActivateResponse) ProtoReflect ¶
func (x *ActivateResponse) ProtoReflect() protoreflect.Message
func (*ActivateResponse) Reset ¶
func (x *ActivateResponse) Reset()
func (*ActivateResponse) String ¶
func (x *ActivateResponse) String() string
type ActivateResponse_ActivateError ¶
type ActivateResponse_ActivateError struct {
ActivateError *ActivateError `protobuf:"bytes,2,opt,name=activate_error,json=activateError,proto3,oneof"`
}
type ActivateResponse_ActivateOk ¶
type ActivateResponse_ActivateOk struct {
ActivateOk *ActivateOK `protobuf:"bytes,1,opt,name=activate_ok,json=activateOk,proto3,oneof"`
}
type InstallError ¶
type InstallError struct { Type InstallError_Type `protobuf:"varint,1,opt,name=type,proto3,enum=gnoi.os.InstallError_Type" json:"type,omitempty"` Detail string `protobuf:"bytes,2,opt,name=detail,proto3" json:"detail,omitempty"` // contains filtered or unexported fields }
The InstallError message MUST be sent by the Target to the Client whenever an issue occurs. The Target MUST immediately close the RPC without a gRPC error.
func (*InstallError) Descriptor
deprecated
func (*InstallError) Descriptor() ([]byte, []int)
Deprecated: Use InstallError.ProtoReflect.Descriptor instead.
func (*InstallError) GetDetail ¶
func (x *InstallError) GetDetail() string
func (*InstallError) GetType ¶
func (x *InstallError) GetType() InstallError_Type
func (*InstallError) ProtoMessage ¶
func (*InstallError) ProtoMessage()
func (*InstallError) ProtoReflect ¶
func (x *InstallError) ProtoReflect() protoreflect.Message
func (*InstallError) Reset ¶
func (x *InstallError) Reset()
func (*InstallError) String ¶
func (x *InstallError) String() string
type InstallError_Type ¶
type InstallError_Type int32
const ( // An unspecified error. Must use the detail value to describe the issue. InstallError_UNSPECIFIED InstallError_Type = 0 // The newly transferred package is not compatible with the Target platform. // The detail field MUST contain the detailed error message. InstallError_INCOMPATIBLE InstallError_Type = 1 // The OS package being transferred is larger than the available size the // Target provisioned. This is unexpected since the Target MUST clear disk // space for the new OS packages. The available space and the OS package // size MUST be guaranteed by the platform maker, therefore the most likely // cause of this error is that a wrong package is being transferred. InstallError_TOO_LARGE InstallError_Type = 2 // Used whenever the system is unable to parse the newly transferred // package, like reading the OS version or the integrity checksums. InstallError_PARSE_FAIL InstallError_Type = 3 // The transferred OS package fails integrity check. InstallError_INTEGRITY_FAIL InstallError_Type = 4 // Attempting to force transfer an OS package with the same version as the // currently running. InstallError_INSTALL_RUN_PACKAGE InstallError_Type = 5 // Another Install RPC to this Target is already in progress. InstallError_INSTALL_IN_PROGRESS InstallError_Type = 6 // A switchover happened during the Install RPC. InstallError_UNEXPECTED_SWITCHOVER InstallError_Type = 7 // Failed to sync the transferred OS package to the standby Supervisor. The // detail value MUST have more information. InstallError_SYNC_FAIL InstallError_Type = 8 )
func (InstallError_Type) Descriptor ¶
func (InstallError_Type) Descriptor() protoreflect.EnumDescriptor
func (InstallError_Type) Enum ¶
func (x InstallError_Type) Enum() *InstallError_Type
func (InstallError_Type) EnumDescriptor
deprecated
func (InstallError_Type) EnumDescriptor() ([]byte, []int)
Deprecated: Use InstallError_Type.Descriptor instead.
func (InstallError_Type) Number ¶
func (x InstallError_Type) Number() protoreflect.EnumNumber
func (InstallError_Type) String ¶
func (x InstallError_Type) String() string
func (InstallError_Type) Type ¶
func (InstallError_Type) Type() protoreflect.EnumType
type InstallRequest ¶
type InstallRequest struct { // Types that are assignable to Request: // *InstallRequest_TransferRequest // *InstallRequest_TransferContent // *InstallRequest_TransferEnd Request isInstallRequest_Request `protobuf_oneof:"request"` // contains filtered or unexported fields }
func (*InstallRequest) Descriptor
deprecated
func (*InstallRequest) Descriptor() ([]byte, []int)
Deprecated: Use InstallRequest.ProtoReflect.Descriptor instead.
func (*InstallRequest) GetRequest ¶
func (m *InstallRequest) GetRequest() isInstallRequest_Request
func (*InstallRequest) GetTransferContent ¶
func (x *InstallRequest) GetTransferContent() []byte
func (*InstallRequest) GetTransferEnd ¶
func (x *InstallRequest) GetTransferEnd() *TransferEnd
func (*InstallRequest) GetTransferRequest ¶
func (x *InstallRequest) GetTransferRequest() *TransferRequest
func (*InstallRequest) ProtoMessage ¶
func (*InstallRequest) ProtoMessage()
func (*InstallRequest) ProtoReflect ¶
func (x *InstallRequest) ProtoReflect() protoreflect.Message
func (*InstallRequest) Reset ¶
func (x *InstallRequest) Reset()
func (*InstallRequest) String ¶
func (x *InstallRequest) String() string
type InstallRequest_TransferContent ¶
type InstallRequest_TransferContent struct {
TransferContent []byte `protobuf:"bytes,2,opt,name=transfer_content,json=transferContent,proto3,oneof"`
}
type InstallRequest_TransferEnd ¶
type InstallRequest_TransferEnd struct {
TransferEnd *TransferEnd `protobuf:"bytes,3,opt,name=transfer_end,json=transferEnd,proto3,oneof"`
}
type InstallRequest_TransferRequest ¶
type InstallRequest_TransferRequest struct {
TransferRequest *TransferRequest `protobuf:"bytes,1,opt,name=transfer_request,json=transferRequest,proto3,oneof"`
}
type InstallResponse ¶
type InstallResponse struct { // Types that are assignable to Response: // *InstallResponse_TransferReady // *InstallResponse_TransferProgress // *InstallResponse_SyncProgress // *InstallResponse_Validated // *InstallResponse_InstallError Response isInstallResponse_Response `protobuf_oneof:"response"` // contains filtered or unexported fields }
The InstallResponse is used by the Target to inform the Client about the state of the Install RPC. At any stage of the process the Target can reply with an Error message which MUST terminate the stream.
func (*InstallResponse) Descriptor
deprecated
func (*InstallResponse) Descriptor() ([]byte, []int)
Deprecated: Use InstallResponse.ProtoReflect.Descriptor instead.
func (*InstallResponse) GetInstallError ¶
func (x *InstallResponse) GetInstallError() *InstallError
func (*InstallResponse) GetResponse ¶
func (m *InstallResponse) GetResponse() isInstallResponse_Response
func (*InstallResponse) GetSyncProgress ¶
func (x *InstallResponse) GetSyncProgress() *SyncProgress
func (*InstallResponse) GetTransferProgress ¶
func (x *InstallResponse) GetTransferProgress() *TransferProgress
func (*InstallResponse) GetTransferReady ¶
func (x *InstallResponse) GetTransferReady() *TransferReady
func (*InstallResponse) GetValidated ¶
func (x *InstallResponse) GetValidated() *Validated
func (*InstallResponse) ProtoMessage ¶
func (*InstallResponse) ProtoMessage()
func (*InstallResponse) ProtoReflect ¶
func (x *InstallResponse) ProtoReflect() protoreflect.Message
func (*InstallResponse) Reset ¶
func (x *InstallResponse) Reset()
func (*InstallResponse) String ¶
func (x *InstallResponse) String() string
type InstallResponse_InstallError ¶
type InstallResponse_InstallError struct {
InstallError *InstallError `protobuf:"bytes,5,opt,name=install_error,json=installError,proto3,oneof"`
}
type InstallResponse_SyncProgress ¶
type InstallResponse_SyncProgress struct {
SyncProgress *SyncProgress `protobuf:"bytes,3,opt,name=sync_progress,json=syncProgress,proto3,oneof"`
}
type InstallResponse_TransferProgress ¶
type InstallResponse_TransferProgress struct {
TransferProgress *TransferProgress `protobuf:"bytes,2,opt,name=transfer_progress,json=transferProgress,proto3,oneof"`
}
type InstallResponse_TransferReady ¶
type InstallResponse_TransferReady struct {
TransferReady *TransferReady `protobuf:"bytes,1,opt,name=transfer_ready,json=transferReady,proto3,oneof"`
}
type InstallResponse_Validated ¶
type InstallResponse_Validated struct {
Validated *Validated `protobuf:"bytes,4,opt,name=validated,proto3,oneof"`
}
type OSClient ¶
type OSClient interface { // Install transfers an OS package into the Target. No concurrent Install RPCs // MUST be allowed to the same Target. // // The OS package file format is platform dependent. The platform MUST // validate that the OS package that is supplied is valid and bootable. This // SHOULD include a hash check against a known good hash. It is recommended // that the hash is embedded in the OS package. // // The Target manages its own persistent storage, and OS installation process. // It stores a set of distinct OS packages, and always proactively frees up // space for incoming new OS packages. It is guaranteed that the Target always // has enough space for a valid incoming OS package. The currently running OS // packages MUST never be removed. The Client MUST expect that the last // successfully installed package is available. // // The Install RPC allows the Client to specify the OS package version. If // the Target already has an OS package with the same version then there is no // need to transfer the OS package to the Target. If the Target does not have // an OS package with the same version, then the OS package is copied. // // Scenario 1 - When the Target already has the OS package: // // Client :--------------|--------------> Target // TransferRequest --> // <-- [Validated|InstallError] // // // Scenario 2 - When the Target does not have the OS package: // // Client :--------------|--------------> Target // TransferRequest --> // <-- [TransferReady|InstallError] // transfer_content --> // ... // <-- [TransferProgress|InstallError] // ... // TransferEnd --> // <-- [Validated|InstallError] // // On a dual Supervisor Target, only the Active Supervisor runs this gNOI // Service. The Install RPC applies to the Active Supervisor unless // InstallRequest->TransferRequest->standby_supervisor is set, in which case // it applies to the Standby Supervisor. One Install RPC is required for each // Supervisor. The Supervisor order of package installation MUST not be fixed. // // The Target MUST always attempt to copy the OS package between Supervisors // first before accepting the transfer from the Client. The syncing progress // is reported to the client with InstallResponse->SyncProgress messages. // // If a switchover is triggered during the Install RPC, the RPC MUST // immediately abort with Error->type->UNEXPECTED_SWITCHOVER. // // Scenario 3 - When both Supervisors already have the OS package, regardless // of the value in Start.standby_supervisor: // // Client :--------------|--------------> Target // TransferRequest --> // <-- [Validated|InstallError] // // // Scenario 4 - When one of the Supervisors already has the OS package but the // other Supervisor is the target of the Install: // // Client :--------------|--------------> Target // TransferRequest --> // <-- [SyncProgress|InstallError] // ... // <-- [Validated|InstallError] // // // Scenario 5 - When neither of the two Supervisors has the OS package: // // Client :--------------|--------------> Target // TransferRequest --> // <-- [TransferReady|InstallError] // transfer_content --> // ... // <-- [TransferProgress|InstallError] // ... // TransferEnd --> // <-- [Validated|InstallError] // Install(ctx context.Context, opts ...grpc.CallOption) (OS_InstallClient, error) // Activate sets the requested OS version as the version which is used at the // next reboot, and reboots the Target. When booting the requested OS version // fails, the Target recovers by booting the previously running OS package. Activate(ctx context.Context, in *ActivateRequest, opts ...grpc.CallOption) (*ActivateResponse, error) // Verify checks the running OS version. This RPC may be called multiple times // while the Target boots, until successful. Verify(ctx context.Context, in *VerifyRequest, opts ...grpc.CallOption) (*VerifyResponse, error) }
OSClient is the client API for OS service.
For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
func NewOSClient ¶
func NewOSClient(cc grpc.ClientConnInterface) OSClient
type OSServer ¶
type OSServer interface { // Install transfers an OS package into the Target. No concurrent Install RPCs // MUST be allowed to the same Target. // // The OS package file format is platform dependent. The platform MUST // validate that the OS package that is supplied is valid and bootable. This // SHOULD include a hash check against a known good hash. It is recommended // that the hash is embedded in the OS package. // // The Target manages its own persistent storage, and OS installation process. // It stores a set of distinct OS packages, and always proactively frees up // space for incoming new OS packages. It is guaranteed that the Target always // has enough space for a valid incoming OS package. The currently running OS // packages MUST never be removed. The Client MUST expect that the last // successfully installed package is available. // // The Install RPC allows the Client to specify the OS package version. If // the Target already has an OS package with the same version then there is no // need to transfer the OS package to the Target. If the Target does not have // an OS package with the same version, then the OS package is copied. // // Scenario 1 - When the Target already has the OS package: // // Client :--------------|--------------> Target // TransferRequest --> // <-- [Validated|InstallError] // // // Scenario 2 - When the Target does not have the OS package: // // Client :--------------|--------------> Target // TransferRequest --> // <-- [TransferReady|InstallError] // transfer_content --> // ... // <-- [TransferProgress|InstallError] // ... // TransferEnd --> // <-- [Validated|InstallError] // // On a dual Supervisor Target, only the Active Supervisor runs this gNOI // Service. The Install RPC applies to the Active Supervisor unless // InstallRequest->TransferRequest->standby_supervisor is set, in which case // it applies to the Standby Supervisor. One Install RPC is required for each // Supervisor. The Supervisor order of package installation MUST not be fixed. // // The Target MUST always attempt to copy the OS package between Supervisors // first before accepting the transfer from the Client. The syncing progress // is reported to the client with InstallResponse->SyncProgress messages. // // If a switchover is triggered during the Install RPC, the RPC MUST // immediately abort with Error->type->UNEXPECTED_SWITCHOVER. // // Scenario 3 - When both Supervisors already have the OS package, regardless // of the value in Start.standby_supervisor: // // Client :--------------|--------------> Target // TransferRequest --> // <-- [Validated|InstallError] // // // Scenario 4 - When one of the Supervisors already has the OS package but the // other Supervisor is the target of the Install: // // Client :--------------|--------------> Target // TransferRequest --> // <-- [SyncProgress|InstallError] // ... // <-- [Validated|InstallError] // // // Scenario 5 - When neither of the two Supervisors has the OS package: // // Client :--------------|--------------> Target // TransferRequest --> // <-- [TransferReady|InstallError] // transfer_content --> // ... // <-- [TransferProgress|InstallError] // ... // TransferEnd --> // <-- [Validated|InstallError] // Install(OS_InstallServer) error // Activate sets the requested OS version as the version which is used at the // next reboot, and reboots the Target. When booting the requested OS version // fails, the Target recovers by booting the previously running OS package. Activate(context.Context, *ActivateRequest) (*ActivateResponse, error) // Verify checks the running OS version. This RPC may be called multiple times // while the Target boots, until successful. Verify(context.Context, *VerifyRequest) (*VerifyResponse, error) }
OSServer is the server API for OS service.
type OS_InstallClient ¶
type OS_InstallClient interface { Send(*InstallRequest) error Recv() (*InstallResponse, error) grpc.ClientStream }
type OS_InstallServer ¶
type OS_InstallServer interface { Send(*InstallResponse) error Recv() (*InstallRequest, error) grpc.ServerStream }
type StandbyResponse ¶
type StandbyResponse struct { // Standby Supervisor ID, usually the slot number. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` ActivationFailMessage string `` /* 126-byte string literal not displayed */ // contains filtered or unexported fields }
func (*StandbyResponse) Descriptor
deprecated
func (*StandbyResponse) Descriptor() ([]byte, []int)
Deprecated: Use StandbyResponse.ProtoReflect.Descriptor instead.
func (*StandbyResponse) GetActivationFailMessage ¶
func (x *StandbyResponse) GetActivationFailMessage() string
func (*StandbyResponse) GetId ¶
func (x *StandbyResponse) GetId() string
func (*StandbyResponse) GetVersion ¶
func (x *StandbyResponse) GetVersion() string
func (*StandbyResponse) ProtoMessage ¶
func (*StandbyResponse) ProtoMessage()
func (*StandbyResponse) ProtoReflect ¶
func (x *StandbyResponse) ProtoReflect() protoreflect.Message
func (*StandbyResponse) Reset ¶
func (x *StandbyResponse) Reset()
func (*StandbyResponse) String ¶
func (x *StandbyResponse) String() string
type StandbyState ¶
type StandbyState struct { State StandbyState_State `protobuf:"varint,1,opt,name=state,proto3,enum=gnoi.os.StandbyState_State" json:"state,omitempty"` // contains filtered or unexported fields }
func (*StandbyState) Descriptor
deprecated
func (*StandbyState) Descriptor() ([]byte, []int)
Deprecated: Use StandbyState.ProtoReflect.Descriptor instead.
func (*StandbyState) GetState ¶
func (x *StandbyState) GetState() StandbyState_State
func (*StandbyState) ProtoMessage ¶
func (*StandbyState) ProtoMessage()
func (*StandbyState) ProtoReflect ¶
func (x *StandbyState) ProtoReflect() protoreflect.Message
func (*StandbyState) Reset ¶
func (x *StandbyState) Reset()
func (*StandbyState) String ¶
func (x *StandbyState) String() string
type StandbyState_State ¶
type StandbyState_State int32
const ( StandbyState_UNSPECIFIED StandbyState_State = 0 // The Target does not support dual Supervisors. StandbyState_UNSUPORTED StandbyState_State = 1 // Standby Supervisor is supported but does not exist. StandbyState_NON_EXISTENT StandbyState_State = 2 // Standby Supervisor is supported but is not available, eg.: rebooting. StandbyState_UNAVAILABLE StandbyState_State = 3 )
func (StandbyState_State) Descriptor ¶
func (StandbyState_State) Descriptor() protoreflect.EnumDescriptor
func (StandbyState_State) Enum ¶
func (x StandbyState_State) Enum() *StandbyState_State
func (StandbyState_State) EnumDescriptor
deprecated
func (StandbyState_State) EnumDescriptor() ([]byte, []int)
Deprecated: Use StandbyState_State.Descriptor instead.
func (StandbyState_State) Number ¶
func (x StandbyState_State) Number() protoreflect.EnumNumber
func (StandbyState_State) String ¶
func (x StandbyState_State) String() string
func (StandbyState_State) Type ¶
func (StandbyState_State) Type() protoreflect.EnumType
type SyncProgress ¶
type SyncProgress struct { // The percentage that has transferred between Supervisors. PercentageTransferred uint32 `protobuf:"varint,1,opt,name=percentage_transferred,json=percentageTransferred,proto3" json:"percentage_transferred,omitempty"` // contains filtered or unexported fields }
The SyncProgress message signals the Client about the progress of transferring the OS package between Supervisors.
func (*SyncProgress) Descriptor
deprecated
func (*SyncProgress) Descriptor() ([]byte, []int)
Deprecated: Use SyncProgress.ProtoReflect.Descriptor instead.
func (*SyncProgress) GetPercentageTransferred ¶
func (x *SyncProgress) GetPercentageTransferred() uint32
func (*SyncProgress) ProtoMessage ¶
func (*SyncProgress) ProtoMessage()
func (*SyncProgress) ProtoReflect ¶
func (x *SyncProgress) ProtoReflect() protoreflect.Message
func (*SyncProgress) Reset ¶
func (x *SyncProgress) Reset()
func (*SyncProgress) String ¶
func (x *SyncProgress) String() string
type TransferEnd ¶
type TransferEnd struct {
// contains filtered or unexported fields
}
The TransferEnd message is sent whenever the Client finishes transferring the OS package to the Target. At this point the Target MUST perform a general health check to the OS package. If the Target fails to parse the OS package it MUST immediately reply with an InstallError->type->PARSE_FAIL. If the integrity check of the OS package fails it MUST immediately reply with an InstallError->type->INTEGRITY_FAIL. If the identified OS version contained in the package is not compatible with the Target either because of the platform type or the running OS, it MUST immediately reply with an InstallError->type->INCOMPATIBLE. If the image is force transferred by omitting the InstallRequest->TransferRequest->version value, and the OS package is the same as the one running in the Target, the RPC MUST immediately abort and reply with an InstallError->type->INSTALL_RUN_PACKAGE.
func (*TransferEnd) Descriptor
deprecated
func (*TransferEnd) Descriptor() ([]byte, []int)
Deprecated: Use TransferEnd.ProtoReflect.Descriptor instead.
func (*TransferEnd) ProtoMessage ¶
func (*TransferEnd) ProtoMessage()
func (*TransferEnd) ProtoReflect ¶
func (x *TransferEnd) ProtoReflect() protoreflect.Message
func (*TransferEnd) Reset ¶
func (x *TransferEnd) Reset()
func (*TransferEnd) String ¶
func (x *TransferEnd) String() string
type TransferProgress ¶
type TransferProgress struct { // The number of bytes transferred. BytesReceived uint64 `protobuf:"varint,1,opt,name=bytes_received,json=bytesReceived,proto3" json:"bytes_received,omitempty"` // contains filtered or unexported fields }
The TransferProgress message is sent by the target asynchronously during a file transfer. The device SHOULD not respond to each input block received from the client, but rather determine reasonable intervals at which to send the message (e.g., 5MB).
func (*TransferProgress) Descriptor
deprecated
func (*TransferProgress) Descriptor() ([]byte, []int)
Deprecated: Use TransferProgress.ProtoReflect.Descriptor instead.
func (*TransferProgress) GetBytesReceived ¶
func (x *TransferProgress) GetBytesReceived() uint64
func (*TransferProgress) ProtoMessage ¶
func (*TransferProgress) ProtoMessage()
func (*TransferProgress) ProtoReflect ¶
func (x *TransferProgress) ProtoReflect() protoreflect.Message
func (*TransferProgress) Reset ¶
func (x *TransferProgress) Reset()
func (*TransferProgress) String ¶
func (x *TransferProgress) String() string
type TransferReady ¶
type TransferReady struct {
// contains filtered or unexported fields
}
The TransferReady message tells the Client that the Target is ready to accept the transfer of the OS package. At this stage the Target MUST have cleared enough space to accept the incoming OS package.
func (*TransferReady) Descriptor
deprecated
func (*TransferReady) Descriptor() ([]byte, []int)
Deprecated: Use TransferReady.ProtoReflect.Descriptor instead.
func (*TransferReady) ProtoMessage ¶
func (*TransferReady) ProtoMessage()
func (*TransferReady) ProtoReflect ¶
func (x *TransferReady) ProtoReflect() protoreflect.Message
func (*TransferReady) Reset ¶
func (x *TransferReady) Reset()
func (*TransferReady) String ¶
func (x *TransferReady) String() string
type TransferRequest ¶
type TransferRequest struct { // The version string is a vendor defined string that identifies the OS // version. It is provided by the vendor and embedded in the OS package. This // value states the desired OS package version to transfer to the Target. If // the Target already has the OS package version it will reply with // InstallResponse->Validated. In the case that the target is a // single Supervisor device, or the partner Supervisor does not have the OS // image specified, it will respond with InstallResponse->TransferReady. In // this case, the client MUST subsequently transfer the image. In the case // that the image is available on the peer Supervisor of a dual Supervisor // system, it will respond with InstallResponse->SyncProgress. In this, // latter, case - the client does not need to transfer the OS image. This // value can also be set empty, in which case the OS package is forced // transferred to the Target. The Target MUST never validate that this value // matches the one in the InstallResponse->Validated message, that is the // Client's responsibility. Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` // For a Target with dual Supervisors setting this flag instructs the Target // to perform the action on the Standby Supervisor. StandbySupervisor bool `protobuf:"varint,2,opt,name=standby_supervisor,json=standbySupervisor,proto3" json:"standby_supervisor,omitempty"` // contains filtered or unexported fields }
func (*TransferRequest) Descriptor
deprecated
func (*TransferRequest) Descriptor() ([]byte, []int)
Deprecated: Use TransferRequest.ProtoReflect.Descriptor instead.
func (*TransferRequest) GetStandbySupervisor ¶
func (x *TransferRequest) GetStandbySupervisor() bool
func (*TransferRequest) GetVersion ¶
func (x *TransferRequest) GetVersion() string
func (*TransferRequest) ProtoMessage ¶
func (*TransferRequest) ProtoMessage()
func (*TransferRequest) ProtoReflect ¶
func (x *TransferRequest) ProtoReflect() protoreflect.Message
func (*TransferRequest) Reset ¶
func (x *TransferRequest) Reset()
func (*TransferRequest) String ¶
func (x *TransferRequest) String() string
type UnimplementedOSServer ¶
type UnimplementedOSServer struct { }
UnimplementedOSServer can be embedded to have forward compatible implementations.
func (*UnimplementedOSServer) Activate ¶
func (*UnimplementedOSServer) Activate(context.Context, *ActivateRequest) (*ActivateResponse, error)
func (*UnimplementedOSServer) Install ¶
func (*UnimplementedOSServer) Install(OS_InstallServer) error
func (*UnimplementedOSServer) Verify ¶
func (*UnimplementedOSServer) Verify(context.Context, *VerifyRequest) (*VerifyResponse, error)
type Validated ¶
type Validated struct { // The OS version string that identifies the OS version in the OS package. Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` // Informational field that SHOULD be used for providing more details about // the OS package and its version. This MUST be strictly informational if // used, and can contain information such as build date, target platform, // developer, etc. Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` // contains filtered or unexported fields }
The Validated message asserts that the Target was able to parse the package and perform integrity checks to its contents.
func (*Validated) Descriptor
deprecated
func (*Validated) GetDescription ¶
func (*Validated) GetVersion ¶
func (*Validated) ProtoMessage ¶
func (*Validated) ProtoMessage()
func (*Validated) ProtoReflect ¶
func (x *Validated) ProtoReflect() protoreflect.Message
type VerifyRequest ¶
type VerifyRequest struct {
// contains filtered or unexported fields
}
func (*VerifyRequest) Descriptor
deprecated
func (*VerifyRequest) Descriptor() ([]byte, []int)
Deprecated: Use VerifyRequest.ProtoReflect.Descriptor instead.
func (*VerifyRequest) ProtoMessage ¶
func (*VerifyRequest) ProtoMessage()
func (*VerifyRequest) ProtoReflect ¶
func (x *VerifyRequest) ProtoReflect() protoreflect.Message
func (*VerifyRequest) Reset ¶
func (x *VerifyRequest) Reset()
func (*VerifyRequest) String ¶
func (x *VerifyRequest) String() string
type VerifyResponse ¶
type VerifyResponse struct { // The OS version currently running. Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` // Informational message describing fail details of the last boot. This MUST // be set when a newly transferred OS fails to boot and the system falls back // to the previously running OS version. It MUST be cleared whenever the // systems successfully boots the activated OS version. ActivationFailMessage string `` /* 126-byte string literal not displayed */ VerifyStandby *VerifyStandby `protobuf:"bytes,3,opt,name=verify_standby,json=verifyStandby,proto3" json:"verify_standby,omitempty"` // contains filtered or unexported fields }
func (*VerifyResponse) Descriptor
deprecated
func (*VerifyResponse) Descriptor() ([]byte, []int)
Deprecated: Use VerifyResponse.ProtoReflect.Descriptor instead.
func (*VerifyResponse) GetActivationFailMessage ¶
func (x *VerifyResponse) GetActivationFailMessage() string
func (*VerifyResponse) GetVerifyStandby ¶
func (x *VerifyResponse) GetVerifyStandby() *VerifyStandby
func (*VerifyResponse) GetVersion ¶
func (x *VerifyResponse) GetVersion() string
func (*VerifyResponse) ProtoMessage ¶
func (*VerifyResponse) ProtoMessage()
func (*VerifyResponse) ProtoReflect ¶
func (x *VerifyResponse) ProtoReflect() protoreflect.Message
func (*VerifyResponse) Reset ¶
func (x *VerifyResponse) Reset()
func (*VerifyResponse) String ¶
func (x *VerifyResponse) String() string
type VerifyStandby ¶
type VerifyStandby struct { // Types that are assignable to State: // *VerifyStandby_StandbyState // *VerifyStandby_VerifyResponse State isVerifyStandby_State `protobuf_oneof:"state"` // contains filtered or unexported fields }
func (*VerifyStandby) Descriptor
deprecated
func (*VerifyStandby) Descriptor() ([]byte, []int)
Deprecated: Use VerifyStandby.ProtoReflect.Descriptor instead.
func (*VerifyStandby) GetStandbyState ¶
func (x *VerifyStandby) GetStandbyState() *StandbyState
func (*VerifyStandby) GetState ¶
func (m *VerifyStandby) GetState() isVerifyStandby_State
func (*VerifyStandby) GetVerifyResponse ¶
func (x *VerifyStandby) GetVerifyResponse() *StandbyResponse
func (*VerifyStandby) ProtoMessage ¶
func (*VerifyStandby) ProtoMessage()
func (*VerifyStandby) ProtoReflect ¶
func (x *VerifyStandby) ProtoReflect() protoreflect.Message
func (*VerifyStandby) Reset ¶
func (x *VerifyStandby) Reset()
func (*VerifyStandby) String ¶
func (x *VerifyStandby) String() string
type VerifyStandby_StandbyState ¶
type VerifyStandby_StandbyState struct {
StandbyState *StandbyState `protobuf:"bytes,1,opt,name=standby_state,json=standbyState,proto3,oneof"`
}
type VerifyStandby_VerifyResponse ¶
type VerifyStandby_VerifyResponse struct {
VerifyResponse *StandbyResponse `protobuf:"bytes,2,opt,name=verify_response,json=verifyResponse,proto3,oneof"`
}