From 1a7bf9198942e4c58d0fa1438c07e7df9e527966 Mon Sep 17 00:00:00 2001 From: Eric Breverman Date: Mon, 4 Aug 2025 14:11:42 -0700 Subject: [PATCH 1/9] Initial proposal. --- optic_firmware_install/BUILD.bazel | 68 +++ .../optic_firmware_install.proto | 420 ++++++++++++++++++ 2 files changed, 488 insertions(+) create mode 100644 optic_firmware_install/BUILD.bazel create mode 100644 optic_firmware_install/optic_firmware_install.proto diff --git a/optic_firmware_install/BUILD.bazel b/optic_firmware_install/BUILD.bazel new file mode 100644 index 00000000..f748a635 --- /dev/null +++ b/optic_firmware_install/BUILD.bazel @@ -0,0 +1,68 @@ +load("@com_github_grpc_grpc//bazel:cc_grpc_library.bzl", "cc_grpc_library") +load("@com_google_protobuf//bazel:cc_proto_library.bzl", "cc_proto_library") +load("@com_google_protobuf//bazel:proto_library.bzl", "proto_library") +load("@io_bazel_rules_go//go:def.bzl", "go_library") +load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") + +#Copyright 2021 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +package( + default_visibility = ["//visibility:public"], + licenses = ["notice"], +) + +proto_library( + name = "optic_firmware_install_proto", + srcs = ["optic_firmware_install.proto"], + import_prefix = "github.com/openconfig/gnoi", + deps = [ + "@com_google_protobuf//:duration_proto", + "@com_google_protobuf//:timestamp_proto", + "//types:types_proto", + ], +) + +cc_proto_library( + name = "optic_firmware_install_cc_proto", + deps = [":optic_firmware_install_proto"], +) + +cc_grpc_library( + name = "optic_firmware_install_cc_grpc_proto", + srcs = [":optic_firmware_install_proto"], + grpc_only = True, + deps = [":optic_firmware_install_cc_proto"], +) + +go_proto_library( + name = "optic_firmware_install_go_proto", + compilers = [ + "@io_bazel_rules_go//proto:go_grpc_v2", + "@io_bazel_rules_go//proto:go_proto", + ], + importpath = "github.com/openconfig/gnoi/optic_firmware_install", + proto = ":optic_firmware_install_proto", + deps = [ + "@com_google_protobuf//:duration_proto", + "@com_google_protobuf//:timestamp_proto", + "//types", + ], +) + +go_library( + name = "optic_firmware_install", + embed = [":optic_firmware_install_go_proto"], + importpath = "github.com/openconfig/gnoi/optic_firmware_install", +) diff --git a/optic_firmware_install/optic_firmware_install.proto b/optic_firmware_install/optic_firmware_install.proto new file mode 100644 index 00000000..d86b7f23 --- /dev/null +++ b/optic_firmware_install/optic_firmware_install.proto @@ -0,0 +1,420 @@ +// +// Copyright 2017 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package gnoi.optic_firmware_install; + +import "github.com/openconfig/gnoi/types/types.proto"; +import "google/protobuf/duration.proto"; +import "google/protobuf/timestamp.proto"; + +option go_package = "github.com/openconfig/gnoi/optic_firmware_install"; + +option (types.gnoi_version) = "0.1.0"; + +// The service provides an interface for installation of firmware on optics +// in a Target. The Client progresses through RPCs in the following order: +// 1) Transfer - Provide the Target with the package which can be used for +// multiple optics. +// 2) Install - Copy the package to the requested optics and make it the +// active package. +// 3) Verify - Verify that the package is installed on the optic(s). This is +// redundant to the Install RPC responding with InstallOK, but is useful +// for the Client if the RPC is interrupted while in progress or if the +// Client is interested polling for the progress of the install. +// +service OpticFirmwareInstall { + // Transfer performs a package transfer from either: + // 1) External to Target. + // 2) Target to inactive bank of an Optic. + rpc Transfer(stream TransferRequest) returns (stream TransferResponse); + + // Install initiates the install process on an optic(s). + // The install requires that the package was previously transferred to the + // Target using the Transfer RPC. + // If the optic is already using the desired version or the install is already + // in progress for the identical version, do not re-install the package unless + // force_install is set to true. Otherwise, report success so this RPC is + // idempotent. + // If the RPC is terminated after the RPC is initiated, the install must + // continue in the background. + rpc Install(InstallRequest) returns (stream InstallResponse); + + // Verify checks the firmware related details for an optic(s). + // During reboot, gRPC client returns the gRPC status code UNAVAILABLE while + // the optic is unreachable, which should be retried by the client until + // successful. + rpc Verify(VerifyRequest) returns (VerifyResponse); + + // Delete removes the package from the Target's storage. + // Deletion for a package should not be allowed if the package was bundled + // with the OS image or if a transfer is currently in progress. + rpc Delete(DeleteRequest) returns (DeleteResponse); +} + +message TransferRequest { + oneof request { + TransferToDeviceRequest transfer_to_device = 1; + TransferToOpticRequest transfer_to_optic = 2; + } +} + +// The TransferToDeviceRequest is used by the Client to transfer the package to +// the Target. The Target MUST store the package in a generic location that can +// later be utilized to repeatedly transfer the package to multiple optics. +message TransferToDeviceRequest { + oneof request { + TransferToDeviceStartRequest transfer_start_request = 1; + bytes transfer_content = 2; + TransferEnd transfer_end = 3; + } +} + +message TransferToDeviceStartRequest { + // The package name is a unique identifier for a firmware package. Typically, + // the file name of the package (e.g., "aaa.x.y.z.tgz"). + string package_name = 1; + + // Optionally specify the package size in bytes. + // If 1) the value is different than 0 + // and 2) the required space in the Target is larger than the available space + // and 3) the Target is unable to release space for the incoming package, + // then the Target must reply with TransferError->Type->TOO_LARGE. + uint64 package_size_bytes = 2; + + // Optionally specify the hash of the package which the Target can use to + // verify the integrity of the package. The Target must reply with + // TransferError->Type->INTEGRITY_FAIL if the hash does not + // match the hash of the package that the Target has stored. + types.HashType hash = 3; +} + +// The TransferEnd message is sent whenever the Client finishes transferring +// the package to the Target. At this point the Target MUST perform a general +// health check to the package. If the Target fails to parse the package +// it MUST immediately reply with an TransferError->type->PARSE_FAIL. If the +// integrity check of the package fails it MUST immediately reply with an +// TransferError->type->INTEGRITY_FAIL. +message TransferEnd {} + +// The TransferToOpticRequest is used by the Client to transfer the package ONLY +// to a inactive bank of the optic. +// This would make the package available for the Install RPC, but the package +// MUST NOT be made active as a result of this transfer. +message TransferToOpticRequest { + // Absolute path to the /components/component list member in the OpenConfig + // model corresponding to the optic to perform the install on. + // (e.g., /components/component[name=optic-1/2]) + types.Path optic = 1; + + // The package name is a unique identifier for a firmware package. Typically, + // the file name of the package (e.g., "aaa.x.y.z.tgz"). + string package_name = 2; + + // Optionally specify the package size in bytes. + // If 1) the value is different than 0 + // and 2) the required space in the optic is larger than the available space + // and 3) the optic is unable to release space for the incoming package, + // then the Target must reply with TransferError->Type->TOO_LARGE. + // If the optic does not support advertising its available space, then the + // Target must return TransferError->Type->INVALID_ARGUMENT. + uint64 package_size_bytes = 3; + + // The bank identifier of the optic to install the firmware on. + // If the optic only contains a single bank, then the Target must reply with + // TransferError->Type->INCOMPATIBLE. + // If the optic only contains an active and standby bank, then this field + // may be considered optional as the transfer must be made to the standby + // bank. + // This is a 0-based index intended to standardize the mapping of different + // vendor specific identifers. Mapping examples of optics that support + // two banks include: + // - Active|Standby --> 0|1 + // - A|B --> 0|1 + // - 1|2 --> 0|1 + uint32 firmware_bank = 4; +} + +// The TransferResponse is used by the Target to inform the Client about the +// state of the Transfer RPC. At any stage of the process the Target can reply +// with an Error message which MUST terminate the stream. +message TransferResponse { + oneof response { + TransferReady transfer_ready = 1; + TransferProgress transfer_progress = 2; + Validated validated = 3; + TransferError transfer_error = 4; + } +} + +// The TransferReady message tells the Client that the Target is ready to accept +// the package transfer. At this stage the Target MUST have cleared enough space +// to accept the incoming package if the package size was specified. +message TransferReady {} + +// The TransferProgress message is sent by the target asynchronously during a +// file transfer. The Target 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). +message TransferProgress { + // The number of bytes transferred. + uint64 bytes_received = 1; +} + +// The Validated message asserts that the Target was able to parse the package +// and perform integrity checks to its contents. +// This message is sent at the conclusion of a successful RPC. +message Validated {} + +// The TransferError 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. +message TransferError { + enum Type { + // An unspecified error. Must use the detail value to describe the issue. + UNSPECIFIED = 0; + // The newly transferred package is not compatible with the Target platform. + // The detail field MUST contain the detailed error message. + INCOMPATIBLE = 1; + // The package being transferred is larger than the available size the + // client provisioned. This error may be returned if the target does not + // have enough space for the new package and the existing packages. + TOO_LARGE = 2; + // Used whenever the system is unable to parse the newly transferred + // package, like reading the version or the integrity checksums. + PARSE_FAIL = 3; + // The transferred package fails integrity check. + INTEGRITY_FAIL = 4; + // Another Transfer RPC to this Target is already in progress with a + // different firmware version. However, if the in progress transfer is for + // the identical firmware version, then this error should not be returned + // and the Transfer RPC should return success. + TRANSFER_IN_PROGRESS = 5; + // The transfer request provided an invalid argument. When this error is + // returned, the Target must provide more details in the detail field. + INVALID_ARGUMENT = 6; + } + Type type = 1; + string detail = 2; +} + +message InstallRequest { + repeated InstallSingleRequest install_requests = 1; +} + +message InstallSingleRequest { + // Absolute path to the /components/component list member in the OpenConfig + // model corresponding to the optic to perform the install on. + // (e.g., /components/component[name=optic-1/2]) + types.Path optic = 1; + + oneof install_from { + InstallFromDeviceRequest install_from_device = 2; + InstallFromOpticBankRequest install_from_optic_bank = 3; + } + + // If true, the Target MUST install the package even if the optic is already + // running the same package. + bool force_install = 4; +} + +message InstallFromDeviceRequest { + // The package name is a unique identifier for a firmware package. Typically, + // the file name of the package (e.g., "aaa.x.y.z.tgz"). + string package_name = 1; + + // Optionally specify the package size in bytes. + // If 1) the value is different than 0 + // and 2) the required space in the optic is larger than the available space + // and 3) the optic is unable to release space for the incoming package, + // then the Target must reply with TransferError->Type->TOO_LARGE. + uint64 package_size_bytes = 2; +} + +message InstallFromOpticBankRequest { + // The bank identifier of the optic to install the firmware from. + // This would be used if the firmware package is already pre-loaded on the + // optic in an inactive bank. + // If the optic only contains a single bank, then the Target must reply with + // InstallError->Type->INCOMPATIBLE. + // If the specified bank is empty, then the Target must reply with + // InstallError->Type->EMPTY_FIRMWARE_BANK. + // This is a 0-based index intended to standardize the mapping of different + // vendor specific identifers. Mapping examples of optics that support + // two banks include: + // - Active|Standby --> 0|1 + // - A|B --> 0|1 + // - 1|2 --> 0|1 + uint32 firmware_bank = 4; +} + +message InstallResponse { + repeated InstallSingleResponse install_responses = 1; +} + +message InstallSingleResponse { + // Absolute path to the /components/component list member in the OpenConfig + // model corresponding to the optic to perform the install on. + // (e.g., /components/component[name=optic-1/2]) + types.Path optic = 1; + + oneof response { + InstallReady install_ready = 2; + TransferProgress transfer_progress = 3; + InstallProgress install_progress = 4; + InstallOK install_ok = 5; + InstallError install_error = 6; + } +} + +// The InstallReady message tells the Client that the Target is ready to accept +// the package install. At this stage the Target MUST have cleared enough space +// to accept the incoming package if the package size was specified. +message InstallReady {} + +// The InstallProgress message signals the Client about the progress of the +// optic install process. +message InstallProgress { + // The percentage complete of the install process. + uint32 percentage_installed = 1; +} + +// InstallOK is sent when the package is successfully installed on the optic. +// If the optic is already running the requested version in InstallRequest, +// then it replies with InstallOK. +message InstallOK {} + +// 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. +message InstallError { + enum Type { + // An unspecified error. Must use the detail value to describe the issue. + UNSPECIFIED = 0; + // There is no package with the version requested for activation. This is + // also used for an empty version string. + NON_EXISTENT_VERSION = 1; + // The newly transferred package is not compatible with the optic. + // The detail field MUST contain the detailed error message. + INCOMPATIBLE = 2; + // The package being transferred is larger than the available size the + // client provisioned. This error may be returned if the optic does not + // have enough space for the new package and the existing packages. + TOO_LARGE = 3; + // Used whenever the system is unable to parse the newly transferred + // package, like reading the version or the integrity checksums. + PARSE_FAIL = 4; + // The transferred package fails integrity check. + INTEGRITY_FAIL = 5; + // Another Install RPC to this Target is already in progress with a + // different firmware version. However, if the in progress install is for + // the identical firmware version, then this error should not be returned + // and the Install RPC should return success. + INSTALL_IN_PROGRESS = 6; + // A switchover happened during the Install RPC. + UNEXPECTED_SWITCHOVER = 7; + // Used when a specified bank is empty and does not contain a package. + EMPTY_FIRMWARE_BANK = 8; + } + Type type = 1; + string detail = 2; +} + +message VerifyRequest { + repeated VerifySingleRequest verify_requests = 1; +} + +message VerifySingleRequest { + // Absolute path to the /components/component list member in the OpenConfig + // model corresponding to the optic to verify. + // (e.g., /components/component[name=optic-1/2]) + types.Path optic = 1; +} + +message VerifyResponse { + repeated VerifySingleResponse verify_responses = 1; +} + +message VerifySingleResponse { + // Absolute path to the /components/component list member in the OpenConfig + // model corresponding to the optic to verify. + // (e.g., /components/component[name=optic-1/2]) + types.Path optic = 1; + + // The version currently running. + string running_version = 2; + + // The version that is being attempted to be installed. + string new_version = 3; + + // The firmware package that is contained within each bank on the optic. + repeated FirmwareBank bank = 4; + + // True if the new_version would result in a traffic disruption. + bool new_version_service_impacting = 5; + + // The current state of the latest install process. + InstallStatus install_status = 6; + + // The current in-progress step of the install. + string step = 7; + + // The percentage complete of the current in-progress step. + uint32 step_percent_complete = 8; + + // The percentage complete of the latest install process. + uint32 total_percent_complete = 9; + + // The time when the latest install was initiated. + google.protobuf.Timestamp start_time = 10; + + // The time when the latest install was completed. + google.protobuf.Timestamp stop_time = 11; + + // The time elapsed since the latest install was initiated. + google.protobuf.Duration duration = 12; + + // The failure message if the latest install failed. + string failure_message = 13; +} + +message FirmwareBank { + // The bank identifier of the optic (e.g., "A" or "B"). + string bank = 1; + + // The version of the firmware package in the bank. + string version = 2; +} + +enum InstallStatus { + // An unknown status. + INSTALL_STATUS_UNKNOWN = 0; + // The package is being transferred to the optic. + INSTALL_STATUS_TRANSFER_IN_PROGRESS = 1; + // The package is being installed on the optic. + INSTALL_STATUS_INSTALL_IN_PROGRESS = 2; + // The installation was successfully completed on the optic. + INSTALL_STATUS_COMPLETED = 3; + // The installation failed on the optic. + INSTALL_STATUS_FAILED = 4; +} + +message DeleteRequest { + // The package name is a unique identifier for a firmware package. Typically, + // the file name of the package (e.g., "aaa.x.y.z.tgz"). + string package_name = 1; +} + +message DeleteResponse {} From 550fc6e80b8f17e39c0d299d56fc53f2baf26c14 Mon Sep 17 00:00:00 2001 From: Eric Breverman Date: Mon, 4 Aug 2025 14:21:22 -0700 Subject: [PATCH 2/9] Fix lint errs. --- .../optic_firmware_install.proto | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/optic_firmware_install/optic_firmware_install.proto b/optic_firmware_install/optic_firmware_install.proto index d86b7f23..37694548 100644 --- a/optic_firmware_install/optic_firmware_install.proto +++ b/optic_firmware_install/optic_firmware_install.proto @@ -108,7 +108,9 @@ message TransferToDeviceStartRequest { // it MUST immediately reply with an TransferError->type->PARSE_FAIL. If the // integrity check of the package fails it MUST immediately reply with an // TransferError->type->INTEGRITY_FAIL. -message TransferEnd {} +message TransferEnd { + +} // The TransferToOpticRequest is used by the Client to transfer the package ONLY // to a inactive bank of the optic. @@ -163,7 +165,9 @@ message TransferResponse { // The TransferReady message tells the Client that the Target is ready to accept // the package transfer. At this stage the Target MUST have cleared enough space // to accept the incoming package if the package size was specified. -message TransferReady {} +message TransferReady { + +} // The TransferProgress message is sent by the target asynchronously during a // file transfer. The Target SHOULD not respond to each input block received @@ -177,7 +181,9 @@ message TransferProgress { // The Validated message asserts that the Target was able to parse the package // and perform integrity checks to its contents. // This message is sent at the conclusion of a successful RPC. -message Validated {} +message Validated { + +} // The TransferError message MUST be sent by the Target to the Client whenever // an issue occurs. The Target MUST immediately close the RPC without a @@ -283,7 +289,9 @@ message InstallSingleResponse { // The InstallReady message tells the Client that the Target is ready to accept // the package install. At this stage the Target MUST have cleared enough space // to accept the incoming package if the package size was specified. -message InstallReady {} +message InstallReady { + +} // The InstallProgress message signals the Client about the progress of the // optic install process. @@ -295,7 +303,9 @@ message InstallProgress { // InstallOK is sent when the package is successfully installed on the optic. // If the optic is already running the requested version in InstallRequest, // then it replies with InstallOK. -message InstallOK {} +message InstallOK { + +} // 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. @@ -417,4 +427,6 @@ message DeleteRequest { string package_name = 1; } -message DeleteResponse {} +message DeleteResponse { + +} From 1be17d996db4ab381879681890f6d52ad5145fbd Mon Sep 17 00:00:00 2001 From: Eric Breverman Date: Wed, 13 Aug 2025 14:25:33 -0700 Subject: [PATCH 3/9] Updated from optic to transceiver to match OC terminology. --- .../BUILD.bazel | 26 +-- .../transceiver_firmware_install.proto | 160 +++++++++--------- 2 files changed, 96 insertions(+), 90 deletions(-) rename {optic_firmware_install => transceiver_firmware_install}/BUILD.bazel (68%) rename optic_firmware_install/optic_firmware_install.proto => transceiver_firmware_install/transceiver_firmware_install.proto (73%) diff --git a/optic_firmware_install/BUILD.bazel b/transceiver_firmware_install/BUILD.bazel similarity index 68% rename from optic_firmware_install/BUILD.bazel rename to transceiver_firmware_install/BUILD.bazel index f748a635..428b98b6 100644 --- a/optic_firmware_install/BUILD.bazel +++ b/transceiver_firmware_install/BUILD.bazel @@ -24,8 +24,8 @@ package( ) proto_library( - name = "optic_firmware_install_proto", - srcs = ["optic_firmware_install.proto"], + name = "transceiver_firmware_install_proto", + srcs = ["transceiver_firmware_install.proto"], import_prefix = "github.com/openconfig/gnoi", deps = [ "@com_google_protobuf//:duration_proto", @@ -35,25 +35,25 @@ proto_library( ) cc_proto_library( - name = "optic_firmware_install_cc_proto", - deps = [":optic_firmware_install_proto"], + name = "transceiver_firmware_install_cc_proto", + deps = [":transceiver_firmware_install_proto"], ) cc_grpc_library( - name = "optic_firmware_install_cc_grpc_proto", - srcs = [":optic_firmware_install_proto"], + name = "transceiver_firmware_install_cc_grpc_proto", + srcs = [":transceiver_firmware_install_proto"], grpc_only = True, - deps = [":optic_firmware_install_cc_proto"], + deps = [":transceiver_firmware_install_cc_proto"], ) go_proto_library( - name = "optic_firmware_install_go_proto", + name = "transceiver_firmware_install_go_proto", compilers = [ "@io_bazel_rules_go//proto:go_grpc_v2", "@io_bazel_rules_go//proto:go_proto", ], - importpath = "github.com/openconfig/gnoi/optic_firmware_install", - proto = ":optic_firmware_install_proto", + importpath = "github.com/openconfig/gnoi/transceiver_firmware_install", + proto = ":transceiver_firmware_install_proto", deps = [ "@com_google_protobuf//:duration_proto", "@com_google_protobuf//:timestamp_proto", @@ -62,7 +62,7 @@ go_proto_library( ) go_library( - name = "optic_firmware_install", - embed = [":optic_firmware_install_go_proto"], - importpath = "github.com/openconfig/gnoi/optic_firmware_install", + name = "transceiver_firmware_install", + embed = [":transceiver_firmware_install_go_proto"], + importpath = "github.com/openconfig/gnoi/transceiver_firmware_install", ) diff --git a/optic_firmware_install/optic_firmware_install.proto b/transceiver_firmware_install/transceiver_firmware_install.proto similarity index 73% rename from optic_firmware_install/optic_firmware_install.proto rename to transceiver_firmware_install/transceiver_firmware_install.proto index 37694548..f527f8ed 100644 --- a/optic_firmware_install/optic_firmware_install.proto +++ b/transceiver_firmware_install/transceiver_firmware_install.proto @@ -15,47 +15,48 @@ syntax = "proto3"; -package gnoi.optic_firmware_install; +package gnoi.transceiver_firmware_install; import "github.com/openconfig/gnoi/types/types.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; -option go_package = "github.com/openconfig/gnoi/optic_firmware_install"; +option go_package = "github.com/openconfig/gnoi/transceiver_firmware_install"; option (types.gnoi_version) = "0.1.0"; -// The service provides an interface for installation of firmware on optics -// in a Target. The Client progresses through RPCs in the following order: +// The service provides an interface for installation of firmware on +// transceivers in a Target. +// The Client progresses through RPCs in the following order: // 1) Transfer - Provide the Target with the package which can be used for -// multiple optics. -// 2) Install - Copy the package to the requested optics and make it the -// active package. -// 3) Verify - Verify that the package is installed on the optic(s). This is -// redundant to the Install RPC responding with InstallOK, but is useful -// for the Client if the RPC is interrupted while in progress or if the -// Client is interested polling for the progress of the install. +// multiple transceivers. +// 2) Install - Copy the package to the requested transceivers and make it +// the active package. +// 3) Verify - Verify that the package is installed on the transceiver(s). +// This is redundant to the Install RPC responding with InstallOK, but +// is useful for the Client if the RPC is interrupted while in progress +// or if the Client is interested polling for the progress of the install. // -service OpticFirmwareInstall { +service TransceiverFirmwareInstall { // Transfer performs a package transfer from either: // 1) External to Target. - // 2) Target to inactive bank of an Optic. + // 2) Target to inactive bank of an Transceiver. rpc Transfer(stream TransferRequest) returns (stream TransferResponse); - // Install initiates the install process on an optic(s). + // Install initiates the install process on a transceiver(s). // The install requires that the package was previously transferred to the // Target using the Transfer RPC. - // If the optic is already using the desired version or the install is already - // in progress for the identical version, do not re-install the package unless - // force_install is set to true. Otherwise, report success so this RPC is - // idempotent. + // If the transceiver is already using the desired version or the install is + // already in progress for the identical version, do not re-install the + // package unless force_install is set to true. Otherwise, report success so + // this RPC is idempotent. // If the RPC is terminated after the RPC is initiated, the install must // continue in the background. rpc Install(InstallRequest) returns (stream InstallResponse); - // Verify checks the firmware related details for an optic(s). + // Verify checks the firmware related details for a transceiver(s). // During reboot, gRPC client returns the gRPC status code UNAVAILABLE while - // the optic is unreachable, which should be retried by the client until + // the transceiver is unreachable, which should be retried by the client until // successful. rpc Verify(VerifyRequest) returns (VerifyResponse); @@ -68,13 +69,14 @@ service OpticFirmwareInstall { message TransferRequest { oneof request { TransferToDeviceRequest transfer_to_device = 1; - TransferToOpticRequest transfer_to_optic = 2; + TransferToTransceiverRequest transfer_to_transceiver = 2; } } // The TransferToDeviceRequest is used by the Client to transfer the package to // the Target. The Target MUST store the package in a generic location that can -// later be utilized to repeatedly transfer the package to multiple optics. +// later be utilized to repeatedly transfer the package to multiple +// transceivers. message TransferToDeviceRequest { oneof request { TransferToDeviceStartRequest transfer_start_request = 1; @@ -112,15 +114,15 @@ message TransferEnd { } -// The TransferToOpticRequest is used by the Client to transfer the package ONLY -// to a inactive bank of the optic. +// The TransferToTransceiverRequest is used by the Client to transfer the +// package ONLY to an inactive bank of the transceiver. // This would make the package available for the Install RPC, but the package // MUST NOT be made active as a result of this transfer. -message TransferToOpticRequest { +message TransferToTransceiverRequest { // Absolute path to the /components/component list member in the OpenConfig - // model corresponding to the optic to perform the install on. - // (e.g., /components/component[name=optic-1/2]) - types.Path optic = 1; + // model corresponding to the transceiver to perform the install on. + // (e.g., /components/component[name=transceiver-1/2]) + types.Path transceiver = 1; // The package name is a unique identifier for a firmware package. Typically, // the file name of the package (e.g., "aaa.x.y.z.tgz"). @@ -128,21 +130,22 @@ message TransferToOpticRequest { // Optionally specify the package size in bytes. // If 1) the value is different than 0 - // and 2) the required space in the optic is larger than the available space - // and 3) the optic is unable to release space for the incoming package, + // and 2) the required space in the transceiver is larger than the available + // space + // and 3) the transceiver is unable to release space for the incoming package, // then the Target must reply with TransferError->Type->TOO_LARGE. - // If the optic does not support advertising its available space, then the - // Target must return TransferError->Type->INVALID_ARGUMENT. + // If the transceiver does not support advertising its available space, then + // the Target must return TransferError->Type->INVALID_ARGUMENT. uint64 package_size_bytes = 3; - // The bank identifier of the optic to install the firmware on. - // If the optic only contains a single bank, then the Target must reply with - // TransferError->Type->INCOMPATIBLE. - // If the optic only contains an active and standby bank, then this field - // may be considered optional as the transfer must be made to the standby - // bank. + // The bank identifier of the transceiver to install the firmware on. + // If the transceiver only contains a single bank, then the Target must reply + // with TransferError->Type->INCOMPATIBLE. + // If the transceiver only contains an active and standby bank, then this + // field may be considered optional as the transfer must be made to the + //standby bank. // This is a 0-based index intended to standardize the mapping of different - // vendor specific identifers. Mapping examples of optics that support + // vendor specific identifers. Mapping examples of transceivers that support // two banks include: // - Active|Standby --> 0|1 // - A|B --> 0|1 @@ -223,17 +226,17 @@ message InstallRequest { message InstallSingleRequest { // Absolute path to the /components/component list member in the OpenConfig - // model corresponding to the optic to perform the install on. - // (e.g., /components/component[name=optic-1/2]) - types.Path optic = 1; + // model corresponding to the transceiver to perform the install on. + // (e.g., /components/component[name=transceiver-1/2]) + types.Path transceiver = 1; oneof install_from { InstallFromDeviceRequest install_from_device = 2; - InstallFromOpticBankRequest install_from_optic_bank = 3; + InstallFromTransceiverBankRequest install_from_transceiver_bank = 3; } - // If true, the Target MUST install the package even if the optic is already - // running the same package. + // If true, the Target MUST install the package even if the transceiver is + // already running the same package. bool force_install = 4; } @@ -244,22 +247,23 @@ message InstallFromDeviceRequest { // Optionally specify the package size in bytes. // If 1) the value is different than 0 - // and 2) the required space in the optic is larger than the available space - // and 3) the optic is unable to release space for the incoming package, + // and 2) the required space in the transceiver is larger than the available + // space + // and 3) the transceiver is unable to release space for the incoming package, // then the Target must reply with TransferError->Type->TOO_LARGE. uint64 package_size_bytes = 2; } -message InstallFromOpticBankRequest { - // The bank identifier of the optic to install the firmware from. +message InstallFromTransceiverBankRequest { + // The bank identifier of the transceiver to install the firmware from. // This would be used if the firmware package is already pre-loaded on the - // optic in an inactive bank. - // If the optic only contains a single bank, then the Target must reply with - // InstallError->Type->INCOMPATIBLE. + // transceiver in an inactive bank. + // If the transceiver only contains a single bank, then the Target must reply + // with InstallError->Type->INCOMPATIBLE. // If the specified bank is empty, then the Target must reply with // InstallError->Type->EMPTY_FIRMWARE_BANK. // This is a 0-based index intended to standardize the mapping of different - // vendor specific identifers. Mapping examples of optics that support + // vendor specific identifers. Mapping examples of transceivers that support // two banks include: // - Active|Standby --> 0|1 // - A|B --> 0|1 @@ -273,9 +277,9 @@ message InstallResponse { message InstallSingleResponse { // Absolute path to the /components/component list member in the OpenConfig - // model corresponding to the optic to perform the install on. - // (e.g., /components/component[name=optic-1/2]) - types.Path optic = 1; + // model corresponding to the transceiver to perform the install on. + // (e.g., /components/component[name=transceiver-1/2]) + types.Path transceiver = 1; oneof response { InstallReady install_ready = 2; @@ -294,21 +298,23 @@ message InstallReady { } // The InstallProgress message signals the Client about the progress of the -// optic install process. +// transceiver install process. message InstallProgress { // The percentage complete of the install process. uint32 percentage_installed = 1; } -// InstallOK is sent when the package is successfully installed on the optic. -// If the optic is already running the requested version in InstallRequest, -// then it replies with InstallOK. +// InstallOK is sent when the package is successfully installed on the +// transceiver. +// If the transceiver is already running the requested version in +// InstallRequest, then it replies with InstallOK. message InstallOK { } -// 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. +// 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. message InstallError { enum Type { // An unspecified error. Must use the detail value to describe the issue. @@ -316,12 +322,12 @@ message InstallError { // There is no package with the version requested for activation. This is // also used for an empty version string. NON_EXISTENT_VERSION = 1; - // The newly transferred package is not compatible with the optic. + // The newly transferred package is not compatible with the transceiver. // The detail field MUST contain the detailed error message. INCOMPATIBLE = 2; // The package being transferred is larger than the available size the - // client provisioned. This error may be returned if the optic does not - // have enough space for the new package and the existing packages. + // client provisioned. This error may be returned if the transceiver does + // not have enough space for the new package and the existing packages. TOO_LARGE = 3; // Used whenever the system is unable to parse the newly transferred // package, like reading the version or the integrity checksums. @@ -348,9 +354,9 @@ message VerifyRequest { message VerifySingleRequest { // Absolute path to the /components/component list member in the OpenConfig - // model corresponding to the optic to verify. - // (e.g., /components/component[name=optic-1/2]) - types.Path optic = 1; + // model corresponding to the transceiver to verify. + // (e.g., /components/component[name=transceiver-1/2]) + types.Path transceiver = 1; } message VerifyResponse { @@ -359,9 +365,9 @@ message VerifyResponse { message VerifySingleResponse { // Absolute path to the /components/component list member in the OpenConfig - // model corresponding to the optic to verify. - // (e.g., /components/component[name=optic-1/2]) - types.Path optic = 1; + // model corresponding to the transceiver to verify. + // (e.g., /components/component[name=transceiver-1/2]) + types.Path transceiver = 1; // The version currently running. string running_version = 2; @@ -369,7 +375,7 @@ message VerifySingleResponse { // The version that is being attempted to be installed. string new_version = 3; - // The firmware package that is contained within each bank on the optic. + // The firmware package that is contained within each bank on the transceiver. repeated FirmwareBank bank = 4; // True if the new_version would result in a traffic disruption. @@ -401,7 +407,7 @@ message VerifySingleResponse { } message FirmwareBank { - // The bank identifier of the optic (e.g., "A" or "B"). + // The bank identifier of the transceiver (e.g., "A" or "B"). string bank = 1; // The version of the firmware package in the bank. @@ -411,13 +417,13 @@ message FirmwareBank { enum InstallStatus { // An unknown status. INSTALL_STATUS_UNKNOWN = 0; - // The package is being transferred to the optic. + // The package is being transferred to the transceiver. INSTALL_STATUS_TRANSFER_IN_PROGRESS = 1; - // The package is being installed on the optic. + // The package is being installed on the transceiver. INSTALL_STATUS_INSTALL_IN_PROGRESS = 2; - // The installation was successfully completed on the optic. + // The installation was successfully completed on the transceiver. INSTALL_STATUS_COMPLETED = 3; - // The installation failed on the optic. + // The installation failed on the transceiver. INSTALL_STATUS_FAILED = 4; } From 0296bf80dcda12f121c8eee01e771e58e1d985fd Mon Sep 17 00:00:00 2001 From: Eric Breverman Date: Wed, 13 Aug 2025 14:33:22 -0700 Subject: [PATCH 4/9] Add visibility --- transceiver_firmware_install/BUILD.bazel | 3 +++ 1 file changed, 3 insertions(+) diff --git a/transceiver_firmware_install/BUILD.bazel b/transceiver_firmware_install/BUILD.bazel index 428b98b6..a49d668f 100644 --- a/transceiver_firmware_install/BUILD.bazel +++ b/transceiver_firmware_install/BUILD.bazel @@ -27,6 +27,7 @@ proto_library( name = "transceiver_firmware_install_proto", srcs = ["transceiver_firmware_install.proto"], import_prefix = "github.com/openconfig/gnoi", + visibility = ["//visibility:public"], deps = [ "@com_google_protobuf//:duration_proto", "@com_google_protobuf//:timestamp_proto", @@ -54,6 +55,7 @@ go_proto_library( ], importpath = "github.com/openconfig/gnoi/transceiver_firmware_install", proto = ":transceiver_firmware_install_proto", + visibility = ["//visibility:public"], deps = [ "@com_google_protobuf//:duration_proto", "@com_google_protobuf//:timestamp_proto", @@ -65,4 +67,5 @@ go_library( name = "transceiver_firmware_install", embed = [":transceiver_firmware_install_go_proto"], importpath = "github.com/openconfig/gnoi/transceiver_firmware_install", + visibility = ["//visibility:public"], ) From 78ad00e792b77c2c0f0aa6d86523fd5160c3c020 Mon Sep 17 00:00:00 2001 From: Eric Breverman Date: Wed, 20 Aug 2025 16:40:36 -0700 Subject: [PATCH 5/9] Add generated proto files and update regeneration script. --- MODULE.bazel.lock | 85 +- regenerate-files.sh | 2 + transceiver_firmware_install/BUILD.bazel | 2 - .../transceiver_firmware_install.pb.go | 2108 +++++++++++++++++ .../transceiver_firmware_install_grpc.pb.go | 231 ++ 5 files changed, 2383 insertions(+), 45 deletions(-) create mode 100644 transceiver_firmware_install/transceiver_firmware_install.pb.go create mode 100644 transceiver_firmware_install/transceiver_firmware_install_grpc.pb.go diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 5ac15f16..ebe02af2 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -15,7 +15,9 @@ "https://bcr.bazel.build/modules/abseil-cpp/20240722.0/MODULE.bazel": "88668a07647adbdc14cb3a7cd116fb23c9dda37a90a1681590b6c9d8339a5b84", "https://bcr.bazel.build/modules/abseil-cpp/20250127.0/MODULE.bazel": "d1086e248cda6576862b4b3fe9ad76a214e08c189af5b42557a6e1888812c5d5", "https://bcr.bazel.build/modules/abseil-cpp/20250127.1/MODULE.bazel": "c4a89e7ceb9bf1e25cf84a9f830ff6b817b72874088bf5141b314726e46a57c1", - "https://bcr.bazel.build/modules/abseil-cpp/20250127.1/source.json": "03c90ee57977264436d3231676dcddae116c4769a5d02b6fc16c2c9e019b583a", + "https://bcr.bazel.build/modules/abseil-cpp/20250512.0/MODULE.bazel": "c4d02dd22cd87458516655a45512060246ee2a4732f1fbe948a5bd9eb614e626", + "https://bcr.bazel.build/modules/abseil-cpp/20250512.1/MODULE.bazel": "d209fdb6f36ffaf61c509fcc81b19e81b411a999a934a032e10cd009a0226215", + "https://bcr.bazel.build/modules/abseil-cpp/20250512.1/source.json": "d725d73707d01bb46ab3ca59ba408b8e9bd336642ca77a2269d4bfb8bbfd413d", "https://bcr.bazel.build/modules/apple_support/1.11.1/MODULE.bazel": "1843d7cd8a58369a444fc6000e7304425fba600ff641592161d9f15b179fb896", "https://bcr.bazel.build/modules/apple_support/1.13.0/MODULE.bazel": "7c8cdea7e031b7f9f67f0b497adf6d2c6a2675e9304ca93a9af6ed84eef5a524", "https://bcr.bazel.build/modules/apple_support/1.15.1/MODULE.bazel": "a0556fefca0b1bb2de8567b8827518f94db6a6e7e7d632b4c48dc5f865bc7c85", @@ -38,8 +40,9 @@ "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58", "https://bcr.bazel.build/modules/bazel_features/1.21.0/MODULE.bazel": "675642261665d8eea09989aa3b8afb5c37627f1be178382c320d1b46afba5e3b", "https://bcr.bazel.build/modules/bazel_features/1.23.0/MODULE.bazel": "fd1ac84bc4e97a5a0816b7fd7d4d4f6d837b0047cf4cbd81652d616af3a6591a", - "https://bcr.bazel.build/modules/bazel_features/1.23.0/source.json": "c72c61b722d7c3f884994fe647afeb2ed1ae66c437f8f370753551f7b4d8be7f", "https://bcr.bazel.build/modules/bazel_features/1.3.0/MODULE.bazel": "cdcafe83ec318cda34e02948e81d790aab8df7a929cec6f6969f13a489ccecd9", + "https://bcr.bazel.build/modules/bazel_features/1.30.0/MODULE.bazel": "a14b62d05969a293b80257e72e597c2da7f717e1e69fa8b339703ed6731bec87", + "https://bcr.bazel.build/modules/bazel_features/1.30.0/source.json": "b07e17f067fe4f69f90b03b36ef1e08fe0d1f3cac254c1241a1818773e3423bc", "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7", "https://bcr.bazel.build/modules/bazel_features/1.9.1/MODULE.bazel": "8f679097876a9b609ad1f60249c49d68bfab783dd9be012faf9d82547b14815a", "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8", @@ -86,26 +89,29 @@ "https://bcr.bazel.build/modules/gazelle/0.36.0/MODULE.bazel": "e375d5d6e9a6ca59b0cb38b0540bc9a05b6aa926d322f2de268ad267a2ee74c0", "https://bcr.bazel.build/modules/gazelle/0.37.0/MODULE.bazel": "d1327ba0907d0275ed5103bfbbb13518f6c04955b402213319d0d6c0ce9839d4", "https://bcr.bazel.build/modules/gazelle/0.41.0/MODULE.bazel": "fdce8a8f5129d5b6d693d91cb191d0a014fdcb88e9094e528325a7165de2a826", - "https://bcr.bazel.build/modules/gazelle/0.41.0/source.json": "bc00c665344d775b5cae6064608262e0478789c523677d40eef8f85031c6bfda", + "https://bcr.bazel.build/modules/gazelle/0.44.0/MODULE.bazel": "fd3177ca0938da57a1e416cad3f39b9c4334defbc717e89aba9d9ddbbb0341da", + "https://bcr.bazel.build/modules/gazelle/0.44.0/source.json": "7fb65ef9c1ce470d099ca27fd478673d9d64c844af28d0d472b0874c7d590cb6", "https://bcr.bazel.build/modules/google_benchmark/1.8.2/MODULE.bazel": "a70cf1bba851000ba93b58ae2f6d76490a9feb74192e57ab8e8ff13c34ec50cb", "https://bcr.bazel.build/modules/google_benchmark/1.8.4/MODULE.bazel": "c6d54a11dcf64ee63545f42561eda3fd94c1b5f5ebe1357011de63ae33739d5e", "https://bcr.bazel.build/modules/google_benchmark/1.8.5/MODULE.bazel": "9ba9b31b984022828a950e3300410977eda2e35df35584c6b0b2d0c2e52766b7", "https://bcr.bazel.build/modules/google_benchmark/1.8.5/source.json": "2c9c685f9b496f125b9e3a9c696c549d1ed2f33b75830a2fb6ac94fab23c0398", + "https://bcr.bazel.build/modules/googleapis-rules-registry/1.0.0/MODULE.bazel": "97c6a4d413b373d4cc97065da3de1b2166e22cbbb5f4cc9f05760bfa83619e24", + "https://bcr.bazel.build/modules/googleapis-rules-registry/1.0.0/source.json": "cf611c836a60e98e2e2ab2de8004f119e9f06878dcf4ea2d95a437b1b7a89fe9", "https://bcr.bazel.build/modules/googleapis/0.0.0-20240326-1c8d509c5/MODULE.bazel": "a4b7e46393c1cdcc5a00e6f85524467c48c565256b22b5fae20f84ab4a999a68", "https://bcr.bazel.build/modules/googleapis/0.0.0-20240819-fe8ba054a/MODULE.bazel": "117b7c7be7327ed5d6c482274533f2dbd78631313f607094d4625c28203cacdf", - "https://bcr.bazel.build/modules/googleapis/0.0.0-20240819-fe8ba054a/source.json": "b31fc7eb283a83f71d2e5bfc3d1c562d2994198fa1278409fbe8caec3afc1d3e", + "https://bcr.bazel.build/modules/googleapis/0.0.0-20250703-f9d6fe4a/MODULE.bazel": "d1a3f5d60acdc6466b2f86320855c8a5543cec1af1e4bf9d34d3115fe043c851", + "https://bcr.bazel.build/modules/googleapis/0.0.0-20250703-f9d6fe4a/source.json": "a51564703aa367b73e995ab01c8485860066ad39866065767871887c63122392", "https://bcr.bazel.build/modules/googletest/1.11.0/MODULE.bazel": "3a83f095183f66345ca86aa13c58b59f9f94a2f81999c093d4eeaa2d262d12f4", "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/MODULE.bazel": "22c31a561553727960057361aa33bf20fb2e98584bc4fec007906e27053f80c6", "https://bcr.bazel.build/modules/googletest/1.14.0/MODULE.bazel": "cfbcbf3e6eac06ef9d85900f64424708cc08687d1b527f0ef65aa7517af8118f", "https://bcr.bazel.build/modules/googletest/1.15.2/MODULE.bazel": "6de1edc1d26cafb0ea1a6ab3f4d4192d91a312fd2d360b63adaa213cd00b2108", "https://bcr.bazel.build/modules/googletest/1.16.0/MODULE.bazel": "a175623c69e94fca4ca7acbc12031e637b0c489318cd4805606981d4d7adb34a", - "https://bcr.bazel.build/modules/googletest/1.16.0/source.json": "dd011b202542efcd4c0e3df34b1558d41598c6f287846728315ded5f7984b77a", + "https://bcr.bazel.build/modules/googletest/1.17.0/MODULE.bazel": "dbec758171594a705933a29fcf69293d2468c49ec1f2ebca65c36f504d72df46", + "https://bcr.bazel.build/modules/googletest/1.17.0/source.json": "38e4454b25fc30f15439c0378e57909ab1fd0a443158aa35aec685da727cd713", "https://bcr.bazel.build/modules/grpc-java/1.62.2/MODULE.bazel": "99b8771e8c7cacb130170fed2a10c9e8fed26334a93e73b42d2953250885a158", "https://bcr.bazel.build/modules/grpc-java/1.66.0/MODULE.bazel": "86ff26209fac846adb89db11f3714b3dc0090fb2fb81575673cc74880cda4e7e", "https://bcr.bazel.build/modules/grpc-java/1.69.0/MODULE.bazel": "53887af6a00b3b406d70175d3d07e84ea9362016ff55ea90b9185f0227bfaf98", - "https://bcr.bazel.build/modules/grpc-java/1.69.0/source.json": "daf42ef1f7a2b86d9178d288c5245802f9b6157adc302b2b05c8fd12cbd79659", "https://bcr.bazel.build/modules/grpc-proto/0.0.0-20240627-ec30f58/MODULE.bazel": "88de79051e668a04726e9ea94a481ec6f1692086735fd6f488ab908b3b909238", - "https://bcr.bazel.build/modules/grpc-proto/0.0.0-20240627-ec30f58/source.json": "5035d379c61042930244ab59e750106d893ec440add92ec0df6a0098ca7f131d", "https://bcr.bazel.build/modules/grpc/1.41.0/MODULE.bazel": "5bcbfc2b274dabea628f0649dc50c90cf36543b1cfc31624832538644ad1aae8", "https://bcr.bazel.build/modules/grpc/1.56.3.bcr.1/MODULE.bazel": "cd5b1eb276b806ec5ab85032921f24acc51735a69ace781be586880af20ab33f", "https://bcr.bazel.build/modules/grpc/1.62.1/MODULE.bazel": "2998211594b8a79a6b459c4e797cfa19f0fb8b3be3149760ec7b8c99abfd426f", @@ -113,8 +119,9 @@ "https://bcr.bazel.build/modules/grpc/1.66.0.bcr.2/MODULE.bazel": "0fa2b0fd028ce354febf0fe90f1ed8fecfbfc33118cddd95ac0418cc283333a0", "https://bcr.bazel.build/modules/grpc/1.66.0.bcr.3/MODULE.bazel": "f6047e89faf488f5e3e65cb2594c6f5e86992abec7487163ff6b623526e543b0", "https://bcr.bazel.build/modules/grpc/1.69.0/MODULE.bazel": "4e26e05c9e1ef291ccbc96aad8e457b1b8abedbc141623831629da2f8168eef6", - "https://bcr.bazel.build/modules/grpc/1.73.1/MODULE.bazel": "69737e1dab5c36fd12daf0a0f9d3adaaf983c8422052a58a3a652454435975b4", - "https://bcr.bazel.build/modules/grpc/1.73.1/source.json": "38ddb26495a5241da802af9b80c51bf0cbc13d06dce4a1e68e2f898d9d981ea0", + "https://bcr.bazel.build/modules/grpc/1.71.0/MODULE.bazel": "7fcab2c05530373f1a442c362b17740dd0c75b6a2a975eec8f5bf4c70a37928a", + "https://bcr.bazel.build/modules/grpc/1.74.0/MODULE.bazel": "83bca3739c1a3eba91f63f38b352e8681c9e58576f2def545e49a1e461b98a1f", + "https://bcr.bazel.build/modules/grpc/1.74.0/source.json": "87c009e2f3226fd43170ce4896a3f17c819bd4c7388ff1336158b12b636a0ed9", "https://bcr.bazel.build/modules/jsoncpp/1.9.5/MODULE.bazel": "31271aedc59e815656f5736f282bb7509a97c7ecb43e927ac1a37966e0578075", "https://bcr.bazel.build/modules/jsoncpp/1.9.6/MODULE.bazel": "2f8d20d3b7d54143213c4dfc3d98225c42de7d666011528dc8fe91591e2e17b0", "https://bcr.bazel.build/modules/jsoncpp/1.9.6/source.json": "a04756d367a2126c3541682864ecec52f92cdee80a35735a3cb249ce015ca000", @@ -125,12 +132,14 @@ "https://bcr.bazel.build/modules/nlohmann_json/3.11.3/MODULE.bazel": "87023db2f55fc3a9949c7b08dc711fae4d4be339a80a99d04453c4bb3998eefc", "https://bcr.bazel.build/modules/nlohmann_json/3.11.3/source.json": "296c63a90c6813e53b3812d24245711981fc7e563d98fe15625f55181494488a", "https://bcr.bazel.build/modules/nlohmann_json/3.6.1/MODULE.bazel": "6f7b417dcc794d9add9e556673ad25cb3ba835224290f4f848f8e2db1e1fca74", + "https://bcr.bazel.build/modules/opencensus-cpp/0.0.0-20230502-50eb5de.bcr.2/MODULE.bazel": "cc18734138dd18c912c6ce2a59186db28f85d8058c99c9f21b46ca3e0aba0ebe", + "https://bcr.bazel.build/modules/opencensus-cpp/0.0.0-20230502-50eb5de.bcr.2/source.json": "7c135f9d42bb3b045669c3c6ab3bb3c208e00b46aca4422eea64c29811a5b240", "https://bcr.bazel.build/modules/opencensus-cpp/0.0.0-20230502-50eb5de/MODULE.bazel": "02201d2921dadb4ec90c4980eca4b2a02904eddcf6fa02f3da7594fb7b0d821c", - "https://bcr.bazel.build/modules/opencensus-cpp/0.0.0-20230502-50eb5de/source.json": "f50efc07822f5425bd1d3e40e977484f9c0142463052717d40ec85cd6744243e", + "https://bcr.bazel.build/modules/opencensus-proto/0.4.1.bcr.2/MODULE.bazel": "789706a714855f92c5c8cfcf1ef32bbb64dcd3b7c9066756ad7986ec59709d29", + "https://bcr.bazel.build/modules/opencensus-proto/0.4.1.bcr.2/source.json": "aadf3f53e08b72376506b7c4ea3d167010c9efb160d7d6e1e304ed646bac1b36", "https://bcr.bazel.build/modules/opencensus-proto/0.4.1/MODULE.bazel": "4a2e8b4d0b544002502474d611a5a183aa282251e14f6a01afe841c0c1b10372", - "https://bcr.bazel.build/modules/opencensus-proto/0.4.1/source.json": "a7d956700a85b833c43fc61455c0e111ab75bab40768ed17a206ee18a2bbe38f", - "https://bcr.bazel.build/modules/openconfig_bootz/0.5.0/MODULE.bazel": "9bfb3d8a05f401141f10b037a9e5e9e617e2b827624598d2868c45236fc154b7", - "https://bcr.bazel.build/modules/openconfig_bootz/0.5.0/source.json": "a7157cb39c7c17c3e043d625d61c0cc98f2e11c9367ef727a6647b3c9a529f2b", + "https://bcr.bazel.build/modules/openconfig_bootz/0.6.0/MODULE.bazel": "8c5ac591d7ac92f87b428ce121a2db66e46c57ef7d8097ea92931749aacc0476", + "https://bcr.bazel.build/modules/openconfig_bootz/0.6.0/source.json": "93f425b92f3e306313c1fefecf311e7f6b626debea897c33ad42d363c6421a25", "https://bcr.bazel.build/modules/openconfig_gnmi/0.14.1/MODULE.bazel": "1965a4108e585c2e9f54350e690ede6d985a3abdf0907a536c89a49dda6a8bbd", "https://bcr.bazel.build/modules/openconfig_gnmi/0.14.1/source.json": "a1a91e1fed377ab98c984b04e798ea1845ecd4ccd2c76d4fc17cafd5d33b4ff4", "https://bcr.bazel.build/modules/openconfig_gnsi/1.9.0/MODULE.bazel": "0cd8a165612ba5241e40e38e2b2bd629298abfa697354d9605d20b34af87e4f6", @@ -148,6 +157,8 @@ "https://bcr.bazel.build/modules/opentelemetry-proto/1.5.0/source.json": "046b721ce203e88cdaad44d7dd17a86b7200eab9388b663b234e72e13ff7b143", "https://bcr.bazel.build/modules/opentracing-cpp/1.6.0/MODULE.bazel": "b3925269f63561b8b880ae7cf62ccf81f6ece55b62cd791eda9925147ae116ec", "https://bcr.bazel.build/modules/opentracing-cpp/1.6.0/source.json": "da1cb1add160f5e5074b7272e9db6fd8f1b3336c15032cd0a653af9d2f484aed", + "https://bcr.bazel.build/modules/package_metadata/0.0.2/MODULE.bazel": "fb8d25550742674d63d7b250063d4580ca530499f045d70748b1b142081ebb92", + "https://bcr.bazel.build/modules/package_metadata/0.0.2/source.json": "e53a759a72488d2c0576f57491ef2da0cf4aab05ac0997314012495935531b73", "https://bcr.bazel.build/modules/platforms/0.0.10/MODULE.bazel": "8cb8efaf200bdeb2150d93e162c40f388529a25852b332cec879373771e48ed5", "https://bcr.bazel.build/modules/platforms/0.0.11/MODULE.bazel": "0daefc49732e227caa8bfa834d65dc52e8cc18a2faf80df25e8caea151a9413f", "https://bcr.bazel.build/modules/platforms/0.0.11/source.json": "f7e188b79ebedebfe75e9e1d098b8845226c7992b307e28e1496f23112e8fc29", @@ -158,20 +169,24 @@ "https://bcr.bazel.build/modules/platforms/0.0.8/MODULE.bazel": "9f142c03e348f6d263719f5074b21ef3adf0b139ee4c5133e2aa35664da9eb2d", "https://bcr.bazel.build/modules/platforms/0.0.9/MODULE.bazel": "4a87a60c927b56ddd67db50c89acaa62f4ce2a1d2149ccb63ffd871d5ce29ebc", "https://bcr.bazel.build/modules/prometheus-cpp/1.2.4/MODULE.bazel": "0fbe5dcff66311947a3f6b86ebc6a6d9328e31a28413ca864debc4a043f371e5", + "https://bcr.bazel.build/modules/prometheus-cpp/1.3.0.bcr.1/MODULE.bazel": "116ad46e97c1d2aeb020fe2899a342a7e703574ce7c0faf7e4810f938c974a9a", + "https://bcr.bazel.build/modules/prometheus-cpp/1.3.0.bcr.1/source.json": "e813cce2d450708cfcb26e309c5172583a7440776edf354e83e6788c768e5cca", "https://bcr.bazel.build/modules/prometheus-cpp/1.3.0/MODULE.bazel": "ce82e086bbc0b60267e970f6a54b2ca6d0f22d3eb6633e00e2cc2899c700f3d8", - "https://bcr.bazel.build/modules/prometheus-cpp/1.3.0/source.json": "8cb66b4e535afc718e9d104a3db96ccb71a42ee816a100e50fd0d5ac843c0606", "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7", "https://bcr.bazel.build/modules/protobuf/23.1/MODULE.bazel": "88b393b3eb4101d18129e5db51847cd40a5517a53e81216144a8c32dfeeca52a", "https://bcr.bazel.build/modules/protobuf/24.4/MODULE.bazel": "7bc7ce5f2abf36b3b7b7c8218d3acdebb9426aeb35c2257c96445756f970eb12", + "https://bcr.bazel.build/modules/protobuf/25.6/MODULE.bazel": "fc0ae073b47c7ede88b825ff79e64f1c058967c7a87a86cdf4abecd9e0516625", "https://bcr.bazel.build/modules/protobuf/26.0.bcr.1/MODULE.bazel": "8f04d38c2da40a3715ff6bdce4d32c5981e6432557571482d43a62c31a24c2cf", "https://bcr.bazel.build/modules/protobuf/26.0.bcr.2/MODULE.bazel": "62e0b84ca727bdeb55a6fe1ef180e6b191bbe548a58305ea1426c158067be534", "https://bcr.bazel.build/modules/protobuf/26.0/MODULE.bazel": "8402da964092af40097f4a205eec2a33fd4a7748dc43632b7d1629bfd9a2b856", "https://bcr.bazel.build/modules/protobuf/27.0-rc2/MODULE.bazel": "b2b0dbafd57b6bec0ca9b251da02e628c357dab53a097570aa7d79d020f107cf", "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c", "https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d", + "https://bcr.bazel.build/modules/protobuf/29.0-rc2.bcr.1/MODULE.bazel": "52f4126f63a2f0bbf36b99c2a87648f08467a4eaf92ba726bc7d6a500bbf770c", "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df", "https://bcr.bazel.build/modules/protobuf/29.0-rc3/MODULE.bazel": "33c2dfa286578573afc55a7acaea3cada4122b9631007c594bf0729f41c8de92", "https://bcr.bazel.build/modules/protobuf/29.0/MODULE.bazel": "319dc8bf4c679ff87e71b1ccfb5a6e90a6dbc4693501d471f48662ac46d04e4e", + "https://bcr.bazel.build/modules/protobuf/29.1/MODULE.bazel": "557c3457560ff49e122ed76c0bc3397a64af9574691cb8201b4e46d4ab2ecb95", "https://bcr.bazel.build/modules/protobuf/29.3/MODULE.bazel": "77480eea5fb5541903e49683f24dc3e09f4a79e0eea247414887bb9fc0066e94", "https://bcr.bazel.build/modules/protobuf/3.19.0/MODULE.bazel": "6b5fbb433f760a99a22b18b6850ed5784ef0e9928a72668b66e4d7ccd47db9b0", "https://bcr.bazel.build/modules/protobuf/3.19.2/MODULE.bazel": "532ffe5f2186b69fdde039efe6df13ba726ff338c6bc82275ad433013fa10573", @@ -183,6 +198,7 @@ "https://bcr.bazel.build/modules/protoc-gen-validate/1.0.4/MODULE.bazel": "b8913c154b16177990f6126d2d2477d187f9ddc568e95ee3e2d50fc65d2c494a", "https://bcr.bazel.build/modules/protoc-gen-validate/1.2.1.bcr.1/MODULE.bazel": "4bf09676b62fa587ae07e073420a76ec8766dcce7545e5f8c68cfa8e484b5120", "https://bcr.bazel.build/modules/protoc-gen-validate/1.2.1.bcr.1/source.json": "c19071ebc4b53b5f1cfab9c66eefaf6e4179eb8a998970d07b1077687e777f29", + "https://bcr.bazel.build/modules/protoc-gen-validate/1.2.1/MODULE.bazel": "52b51f50533ec4fbd5d613cd093773f979ac2e035d954e02ca11de383f502505", "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e", "https://bcr.bazel.build/modules/pybind11_bazel/2.12.0/MODULE.bazel": "e6f4c20442eaa7c90d7190d8dc539d0ab422f95c65a57cc59562170c58ae3d34", "https://bcr.bazel.build/modules/pybind11_bazel/2.12.0/source.json": "6900fdc8a9e95866b8c0d4ad4aba4d4236317b5c1cd04c502df3f0d33afed680", @@ -208,12 +224,13 @@ "https://bcr.bazel.build/modules/rules_cc/0.0.15/MODULE.bazel": "6704c35f7b4a72502ee81f61bf88706b54f06b3cbe5558ac17e2e14666cd5dcc", "https://bcr.bazel.build/modules/rules_cc/0.0.16/MODULE.bazel": "7661303b8fc1b4d7f532e54e9d6565771fea666fbdf839e0a86affcd02defe87", "https://bcr.bazel.build/modules/rules_cc/0.0.17/MODULE.bazel": "2ae1d8f4238ec67d7185d8861cb0a2cdf4bc608697c331b95bf990e69b62e64a", - "https://bcr.bazel.build/modules/rules_cc/0.0.17/source.json": "4db99b3f55c90ab28d14552aa0632533e3e8e5e9aea0f5c24ac0014282c2a7c5", "https://bcr.bazel.build/modules/rules_cc/0.0.2/MODULE.bazel": "6915987c90970493ab97393024c156ea8fb9f3bea953b2f3ec05c34f19b5695c", "https://bcr.bazel.build/modules/rules_cc/0.0.5/MODULE.bazel": "be41f87587998fe8890cd82ea4e848ed8eb799e053c224f78f3ff7fe1a1d9b74", "https://bcr.bazel.build/modules/rules_cc/0.0.6/MODULE.bazel": "abf360251023dfe3efcef65ab9d56beefa8394d4176dd29529750e1c57eaa33f", "https://bcr.bazel.build/modules/rules_cc/0.0.8/MODULE.bazel": "964c85c82cfeb6f3855e6a07054fdb159aced38e99a5eecf7bce9d53990afa3e", "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5", + "https://bcr.bazel.build/modules/rules_cc/0.1.1/MODULE.bazel": "2f0222a6f229f0bf44cd711dc13c858dad98c62d52bd51d8fc3a764a83125513", + "https://bcr.bazel.build/modules/rules_cc/0.1.1/source.json": "d61627377bd7dd1da4652063e368d9366fc9a73920bfa396798ad92172cf645c", "https://bcr.bazel.build/modules/rules_foreign_cc/0.10.1/MODULE.bazel": "b9527010e5fef060af92b6724edb3691970a5b1f76f74b21d39f7d433641be60", "https://bcr.bazel.build/modules/rules_foreign_cc/0.10.1/source.json": "9300e71df0cdde0952f10afff1401fa664e9fc5d9ae6204660ba1b158d90d6a6", "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6", @@ -228,7 +245,8 @@ "https://bcr.bazel.build/modules/rules_go/0.48.0/MODULE.bazel": "d00ebcae0908ee3f5e6d53f68677a303d6d59a77beef879598700049c3980a03", "https://bcr.bazel.build/modules/rules_go/0.50.1/MODULE.bazel": "b91a308dc5782bb0a8021ad4330c81fea5bda77f96b9e4c117b9b9c8f6665ee0", "https://bcr.bazel.build/modules/rules_go/0.51.0/MODULE.bazel": "b6920f505935bfd69381651c942496d99b16e2a12f3dd5263b90ded16f3b4d0f", - "https://bcr.bazel.build/modules/rules_go/0.51.0/source.json": "473c0263360b1ae3aca71758e001d257a638620b2e2a36e3a2721fdae04377ec", + "https://bcr.bazel.build/modules/rules_go/0.55.1/MODULE.bazel": "a57a6fc59a74326c0b440d07cca209edf13c7d1a641e48cfbeab56e79f873609", + "https://bcr.bazel.build/modules/rules_go/0.55.1/source.json": "827a740c8959c9d20616889e7746cde4dcc6ee80d25146943627ccea0736328f", "https://bcr.bazel.build/modules/rules_java/4.0.0/MODULE.bazel": "5a78a7ae82cd1a33cef56dc578c7d2a46ed0dca12643ee45edbb8417899e6f74", "https://bcr.bazel.build/modules/rules_java/5.1.0/MODULE.bazel": "324b6478b0343a3ce7a9add8586ad75d24076d6d43d2f622990b9c1cfd8a1b15", "https://bcr.bazel.build/modules/rules_java/5.3.5/MODULE.bazel": "a4ec4f2db570171e3e5eb753276ee4b389bae16b96207e9d3230895c99644b86", @@ -244,10 +262,11 @@ "https://bcr.bazel.build/modules/rules_java/7.3.2/MODULE.bazel": "50dece891cfdf1741ea230d001aa9c14398062f2b7c066470accace78e412bc2", "https://bcr.bazel.build/modules/rules_java/7.4.0/MODULE.bazel": "a592852f8a3dd539e82ee6542013bf2cadfc4c6946be8941e189d224500a8934", "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe", + "https://bcr.bazel.build/modules/rules_java/8.12.0/MODULE.bazel": "8e6590b961f2defdfc2811c089c75716cb2f06c8a4edeb9a8d85eaa64ee2a761", + "https://bcr.bazel.build/modules/rules_java/8.12.0/source.json": "cbd5d55d9d38d4008a7d00bee5b5a5a4b6031fcd4a56515c9accbcd42c7be2ba", "https://bcr.bazel.build/modules/rules_java/8.3.2/MODULE.bazel": "7336d5511ad5af0b8615fdc7477535a2e4e723a357b6713af439fe8cf0195017", "https://bcr.bazel.build/modules/rules_java/8.5.1/MODULE.bazel": "d8a9e38cc5228881f7055a6079f6f7821a073df3744d441978e7a43e20226939", "https://bcr.bazel.build/modules/rules_java/8.6.1/MODULE.bazel": "f4808e2ab5b0197f094cabce9f4b006a27766beb6a9975931da07099560ca9c2", - "https://bcr.bazel.build/modules/rules_java/8.6.1/source.json": "f18d9ad3c4c54945bf422ad584fa6c5ca5b3116ff55a5b1bc77e5c1210be5960", "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel": "a56b85e418c83eb1839819f0b515c431010160383306d13ec21959ac412d2fe7", "https://bcr.bazel.build/modules/rules_jvm_external/5.1/MODULE.bazel": "33f6f999e03183f7d088c9be518a63467dfd0be94a11d0055fe2d210f89aa909", "https://bcr.bazel.build/modules/rules_jvm_external/5.2/MODULE.bazel": "d9351ba35217ad0de03816ef3ed63f89d411349353077348a45348b096615036", @@ -277,7 +296,8 @@ "https://bcr.bazel.build/modules/rules_proto/6.0.0/MODULE.bazel": "b531d7f09f58dce456cd61b4579ce8c86b38544da75184eadaf0a7cb7966453f", "https://bcr.bazel.build/modules/rules_proto/6.0.2/MODULE.bazel": "ce916b775a62b90b61888052a416ccdda405212b6aaeb39522f7dc53431a5e73", "https://bcr.bazel.build/modules/rules_proto/7.0.2/MODULE.bazel": "bf81793bd6d2ad89a37a40693e56c61b0ee30f7a7fdbaf3eabbf5f39de47dea2", - "https://bcr.bazel.build/modules/rules_proto/7.0.2/source.json": "1e5e7260ae32ef4f2b52fd1d0de8d03b606a44c91b694d2f1afb1d3b28a48ce1", + "https://bcr.bazel.build/modules/rules_proto/7.1.0/MODULE.bazel": "002d62d9108f75bb807cd56245d45648f38275cb3a99dcd45dfb864c5d74cb96", + "https://bcr.bazel.build/modules/rules_proto/7.1.0/source.json": "39f89066c12c24097854e8f57ab8558929f9c8d474d34b2c00ac04630ad8940e", "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel": "cc82bc96f2997baa545ab3ce73f196d040ffb8756fd2d66125a530031cd90e5f", "https://bcr.bazel.build/modules/rules_python/0.20.0/MODULE.bazel": "bfe14d17f20e3fe900b9588f526f52c967a6f281e47a1d6b988679bd15082286", "https://bcr.bazel.build/modules/rules_python/0.22.0/MODULE.bazel": "b8057bafa11a9e0f4b08fc3b7cd7bee0dcbccea209ac6fc9a3ff051cd03e19e9", @@ -287,6 +307,7 @@ "https://bcr.bazel.build/modules/rules_python/0.28.0/MODULE.bazel": "cba2573d870babc976664a912539b320cbaa7114cd3e8f053c720171cde331ed", "https://bcr.bazel.build/modules/rules_python/0.29.0/MODULE.bazel": "2ac8cd70524b4b9ec49a0b8284c79e4cd86199296f82f6e0d5da3f783d660c82", "https://bcr.bazel.build/modules/rules_python/0.31.0/MODULE.bazel": "93a43dc47ee570e6ec9f5779b2e64c1476a6ce921c48cc9a1678a91dd5f8fd58", + "https://bcr.bazel.build/modules/rules_python/0.32.2/MODULE.bazel": "01052470fc30b49de91fb8483d26bea6f664500cfad0b078d4605b03e3a83ed4", "https://bcr.bazel.build/modules/rules_python/0.33.2/MODULE.bazel": "3e036c4ad8d804a4dad897d333d8dce200d943df4827cb849840055be8d2e937", "https://bcr.bazel.build/modules/rules_python/0.37.1/MODULE.bazel": "3faeb2d9fa0a81f8980643ee33f212308f4d93eea4b9ce6f36d0b742e71e9500", "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c", @@ -333,7 +354,7 @@ "moduleExtensions": { "@@apple_support+//crosstool:setup.bzl%apple_cc_configure_extension": { "general": { - "bzlTransitiveDigest": "Ync9nL0AbHC6ondeEY7fBjBjLxojTsiXcJh65ZDTRlA=", + "bzlTransitiveDigest": "xcBTf2+GaloFpg7YEh/Bv+1yAczRkiCt3DGws4K7kSk=", "usagesDigest": "ypfdsRT1Lze/3i07sp0fc1st5t9vrHXgYeCPQdYKeDo=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -531,7 +552,7 @@ }, "@@rules_foreign_cc+//foreign_cc:extensions.bzl%tools": { "general": { - "bzlTransitiveDigest": "FApcIcVN43WOEs7g8eg7Cy1hrfRbVNEoUu8IiF+8WOc=", + "bzlTransitiveDigest": "ginC3lIGOKKivBi0nyv2igKvSiz42Thm8yaX2RwVaHg=", "usagesDigest": "9LXdVp01HkdYQT8gYPjYLO6VLVJHo9uFfxWaU1ymiRE=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -843,31 +864,9 @@ ] } }, - "@@rules_java+//java:rules_java_deps.bzl%compatibility_proxy": { - "general": { - "bzlTransitiveDigest": "84xJEZ1jnXXwo8BXMprvBm++rRt4jsTu9liBxz0ivps=", - "usagesDigest": "jTQDdLDxsS43zuRmg1faAjIEPWdLAbDAowI1pInQSoo=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "compatibility_proxy": { - "repoRuleId": "@@rules_java+//java:rules_java_deps.bzl%_compatibility_proxy_repo_rule", - "attributes": {} - } - }, - "recordedRepoMappingEntries": [ - [ - "rules_java+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, "@@rules_kotlin+//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": { "general": { - "bzlTransitiveDigest": "sFhcgPbDQehmbD1EOXzX4H1q/CD5df8zwG4kp4jbvr8=", + "bzlTransitiveDigest": "hUTp2w+RUVdL7ma5esCXZJAFnX7vLbVfLd7FwnQI6bU=", "usagesDigest": "QI2z8ZUR+mqtbwsf2fLqYdJAkPOHdOV+tF2yVAUgRzw=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, diff --git a/regenerate-files.sh b/regenerate-files.sh index a23fc1de..3c950e55 100755 --- a/regenerate-files.sh +++ b/regenerate-files.sh @@ -50,6 +50,8 @@ bazel build //packet_link_qualification:all copy_generated "packet_link_qualification" "linkqual" bazel build //system:all copy_generated "system" +bazel build //transceiver_firmware_install:all +copy_generated "transceiver_firmware_install" bazel build //types:all copy_generated "types" bazel build //wavelength_router:all diff --git a/transceiver_firmware_install/BUILD.bazel b/transceiver_firmware_install/BUILD.bazel index a49d668f..c970cc9f 100644 --- a/transceiver_firmware_install/BUILD.bazel +++ b/transceiver_firmware_install/BUILD.bazel @@ -57,8 +57,6 @@ go_proto_library( proto = ":transceiver_firmware_install_proto", visibility = ["//visibility:public"], deps = [ - "@com_google_protobuf//:duration_proto", - "@com_google_protobuf//:timestamp_proto", "//types", ], ) diff --git a/transceiver_firmware_install/transceiver_firmware_install.pb.go b/transceiver_firmware_install/transceiver_firmware_install.pb.go new file mode 100644 index 00000000..ac82ad2c --- /dev/null +++ b/transceiver_firmware_install/transceiver_firmware_install.pb.go @@ -0,0 +1,2108 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc v6.32.0 +// source: github.com/openconfig/gnoi/transceiver_firmware_install/transceiver_firmware_install.proto + +package transceiver_firmware_install + +import ( + types "github.com/openconfig/gnoi/types" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type InstallStatus int32 + +const ( + InstallStatus_INSTALL_STATUS_UNKNOWN InstallStatus = 0 + InstallStatus_INSTALL_STATUS_TRANSFER_IN_PROGRESS InstallStatus = 1 + InstallStatus_INSTALL_STATUS_INSTALL_IN_PROGRESS InstallStatus = 2 + InstallStatus_INSTALL_STATUS_COMPLETED InstallStatus = 3 + InstallStatus_INSTALL_STATUS_FAILED InstallStatus = 4 +) + +// Enum value maps for InstallStatus. +var ( + InstallStatus_name = map[int32]string{ + 0: "INSTALL_STATUS_UNKNOWN", + 1: "INSTALL_STATUS_TRANSFER_IN_PROGRESS", + 2: "INSTALL_STATUS_INSTALL_IN_PROGRESS", + 3: "INSTALL_STATUS_COMPLETED", + 4: "INSTALL_STATUS_FAILED", + } + InstallStatus_value = map[string]int32{ + "INSTALL_STATUS_UNKNOWN": 0, + "INSTALL_STATUS_TRANSFER_IN_PROGRESS": 1, + "INSTALL_STATUS_INSTALL_IN_PROGRESS": 2, + "INSTALL_STATUS_COMPLETED": 3, + "INSTALL_STATUS_FAILED": 4, + } +) + +func (x InstallStatus) Enum() *InstallStatus { + p := new(InstallStatus) + *p = x + return p +} + +func (x InstallStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (InstallStatus) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_enumTypes[0].Descriptor() +} + +func (InstallStatus) Type() protoreflect.EnumType { + return &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_enumTypes[0] +} + +func (x InstallStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use InstallStatus.Descriptor instead. +func (InstallStatus) EnumDescriptor() ([]byte, []int) { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescGZIP(), []int{0} +} + +type TransferError_Type int32 + +const ( + TransferError_UNSPECIFIED TransferError_Type = 0 + TransferError_INCOMPATIBLE TransferError_Type = 1 + TransferError_TOO_LARGE TransferError_Type = 2 + TransferError_PARSE_FAIL TransferError_Type = 3 + TransferError_INTEGRITY_FAIL TransferError_Type = 4 + TransferError_TRANSFER_IN_PROGRESS TransferError_Type = 5 + TransferError_INVALID_ARGUMENT TransferError_Type = 6 +) + +// Enum value maps for TransferError_Type. +var ( + TransferError_Type_name = map[int32]string{ + 0: "UNSPECIFIED", + 1: "INCOMPATIBLE", + 2: "TOO_LARGE", + 3: "PARSE_FAIL", + 4: "INTEGRITY_FAIL", + 5: "TRANSFER_IN_PROGRESS", + 6: "INVALID_ARGUMENT", + } + TransferError_Type_value = map[string]int32{ + "UNSPECIFIED": 0, + "INCOMPATIBLE": 1, + "TOO_LARGE": 2, + "PARSE_FAIL": 3, + "INTEGRITY_FAIL": 4, + "TRANSFER_IN_PROGRESS": 5, + "INVALID_ARGUMENT": 6, + } +) + +func (x TransferError_Type) Enum() *TransferError_Type { + p := new(TransferError_Type) + *p = x + return p +} + +func (x TransferError_Type) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TransferError_Type) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_enumTypes[1].Descriptor() +} + +func (TransferError_Type) Type() protoreflect.EnumType { + return &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_enumTypes[1] +} + +func (x TransferError_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TransferError_Type.Descriptor instead. +func (TransferError_Type) EnumDescriptor() ([]byte, []int) { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescGZIP(), []int{9, 0} +} + +type InstallError_Type int32 + +const ( + InstallError_UNSPECIFIED InstallError_Type = 0 + InstallError_NON_EXISTENT_VERSION InstallError_Type = 1 + InstallError_INCOMPATIBLE InstallError_Type = 2 + InstallError_TOO_LARGE InstallError_Type = 3 + InstallError_PARSE_FAIL InstallError_Type = 4 + InstallError_INTEGRITY_FAIL InstallError_Type = 5 + InstallError_INSTALL_IN_PROGRESS InstallError_Type = 6 + InstallError_UNEXPECTED_SWITCHOVER InstallError_Type = 7 + InstallError_EMPTY_FIRMWARE_BANK InstallError_Type = 8 +) + +// Enum value maps for InstallError_Type. +var ( + InstallError_Type_name = map[int32]string{ + 0: "UNSPECIFIED", + 1: "NON_EXISTENT_VERSION", + 2: "INCOMPATIBLE", + 3: "TOO_LARGE", + 4: "PARSE_FAIL", + 5: "INTEGRITY_FAIL", + 6: "INSTALL_IN_PROGRESS", + 7: "UNEXPECTED_SWITCHOVER", + 8: "EMPTY_FIRMWARE_BANK", + } + InstallError_Type_value = map[string]int32{ + "UNSPECIFIED": 0, + "NON_EXISTENT_VERSION": 1, + "INCOMPATIBLE": 2, + "TOO_LARGE": 3, + "PARSE_FAIL": 4, + "INTEGRITY_FAIL": 5, + "INSTALL_IN_PROGRESS": 6, + "UNEXPECTED_SWITCHOVER": 7, + "EMPTY_FIRMWARE_BANK": 8, + } +) + +func (x InstallError_Type) Enum() *InstallError_Type { + p := new(InstallError_Type) + *p = x + return p +} + +func (x InstallError_Type) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (InstallError_Type) Descriptor() protoreflect.EnumDescriptor { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_enumTypes[2].Descriptor() +} + +func (InstallError_Type) Type() protoreflect.EnumType { + return &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_enumTypes[2] +} + +func (x InstallError_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use InstallError_Type.Descriptor instead. +func (InstallError_Type) EnumDescriptor() ([]byte, []int) { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescGZIP(), []int{19, 0} +} + +type TransferRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Request: + // + // *TransferRequest_TransferToDevice + // *TransferRequest_TransferToTransceiver + Request isTransferRequest_Request `protobuf_oneof:"request"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TransferRequest) Reset() { + *x = TransferRequest{} + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TransferRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransferRequest) ProtoMessage() {} + +func (x *TransferRequest) ProtoReflect() protoreflect.Message { + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TransferRequest.ProtoReflect.Descriptor instead. +func (*TransferRequest) Descriptor() ([]byte, []int) { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescGZIP(), []int{0} +} + +func (x *TransferRequest) GetRequest() isTransferRequest_Request { + if x != nil { + return x.Request + } + return nil +} + +func (x *TransferRequest) GetTransferToDevice() *TransferToDeviceRequest { + if x != nil { + if x, ok := x.Request.(*TransferRequest_TransferToDevice); ok { + return x.TransferToDevice + } + } + return nil +} + +func (x *TransferRequest) GetTransferToTransceiver() *TransferToTransceiverRequest { + if x != nil { + if x, ok := x.Request.(*TransferRequest_TransferToTransceiver); ok { + return x.TransferToTransceiver + } + } + return nil +} + +type isTransferRequest_Request interface { + isTransferRequest_Request() +} + +type TransferRequest_TransferToDevice struct { + TransferToDevice *TransferToDeviceRequest `protobuf:"bytes,1,opt,name=transfer_to_device,json=transferToDevice,proto3,oneof"` +} + +type TransferRequest_TransferToTransceiver struct { + TransferToTransceiver *TransferToTransceiverRequest `protobuf:"bytes,2,opt,name=transfer_to_transceiver,json=transferToTransceiver,proto3,oneof"` +} + +func (*TransferRequest_TransferToDevice) isTransferRequest_Request() {} + +func (*TransferRequest_TransferToTransceiver) isTransferRequest_Request() {} + +type TransferToDeviceRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Request: + // + // *TransferToDeviceRequest_TransferStartRequest + // *TransferToDeviceRequest_TransferContent + // *TransferToDeviceRequest_TransferEnd + Request isTransferToDeviceRequest_Request `protobuf_oneof:"request"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TransferToDeviceRequest) Reset() { + *x = TransferToDeviceRequest{} + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TransferToDeviceRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransferToDeviceRequest) ProtoMessage() {} + +func (x *TransferToDeviceRequest) ProtoReflect() protoreflect.Message { + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TransferToDeviceRequest.ProtoReflect.Descriptor instead. +func (*TransferToDeviceRequest) Descriptor() ([]byte, []int) { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescGZIP(), []int{1} +} + +func (x *TransferToDeviceRequest) GetRequest() isTransferToDeviceRequest_Request { + if x != nil { + return x.Request + } + return nil +} + +func (x *TransferToDeviceRequest) GetTransferStartRequest() *TransferToDeviceStartRequest { + if x != nil { + if x, ok := x.Request.(*TransferToDeviceRequest_TransferStartRequest); ok { + return x.TransferStartRequest + } + } + return nil +} + +func (x *TransferToDeviceRequest) GetTransferContent() []byte { + if x != nil { + if x, ok := x.Request.(*TransferToDeviceRequest_TransferContent); ok { + return x.TransferContent + } + } + return nil +} + +func (x *TransferToDeviceRequest) GetTransferEnd() *TransferEnd { + if x != nil { + if x, ok := x.Request.(*TransferToDeviceRequest_TransferEnd); ok { + return x.TransferEnd + } + } + return nil +} + +type isTransferToDeviceRequest_Request interface { + isTransferToDeviceRequest_Request() +} + +type TransferToDeviceRequest_TransferStartRequest struct { + TransferStartRequest *TransferToDeviceStartRequest `protobuf:"bytes,1,opt,name=transfer_start_request,json=transferStartRequest,proto3,oneof"` +} + +type TransferToDeviceRequest_TransferContent struct { + TransferContent []byte `protobuf:"bytes,2,opt,name=transfer_content,json=transferContent,proto3,oneof"` +} + +type TransferToDeviceRequest_TransferEnd struct { + TransferEnd *TransferEnd `protobuf:"bytes,3,opt,name=transfer_end,json=transferEnd,proto3,oneof"` +} + +func (*TransferToDeviceRequest_TransferStartRequest) isTransferToDeviceRequest_Request() {} + +func (*TransferToDeviceRequest_TransferContent) isTransferToDeviceRequest_Request() {} + +func (*TransferToDeviceRequest_TransferEnd) isTransferToDeviceRequest_Request() {} + +type TransferToDeviceStartRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` + PackageSizeBytes uint64 `protobuf:"varint,2,opt,name=package_size_bytes,json=packageSizeBytes,proto3" json:"package_size_bytes,omitempty"` + Hash *types.HashType `protobuf:"bytes,3,opt,name=hash,proto3" json:"hash,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TransferToDeviceStartRequest) Reset() { + *x = TransferToDeviceStartRequest{} + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TransferToDeviceStartRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransferToDeviceStartRequest) ProtoMessage() {} + +func (x *TransferToDeviceStartRequest) ProtoReflect() protoreflect.Message { + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TransferToDeviceStartRequest.ProtoReflect.Descriptor instead. +func (*TransferToDeviceStartRequest) Descriptor() ([]byte, []int) { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescGZIP(), []int{2} +} + +func (x *TransferToDeviceStartRequest) GetPackageName() string { + if x != nil { + return x.PackageName + } + return "" +} + +func (x *TransferToDeviceStartRequest) GetPackageSizeBytes() uint64 { + if x != nil { + return x.PackageSizeBytes + } + return 0 +} + +func (x *TransferToDeviceStartRequest) GetHash() *types.HashType { + if x != nil { + return x.Hash + } + return nil +} + +type TransferEnd struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TransferEnd) Reset() { + *x = TransferEnd{} + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TransferEnd) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransferEnd) ProtoMessage() {} + +func (x *TransferEnd) ProtoReflect() protoreflect.Message { + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TransferEnd.ProtoReflect.Descriptor instead. +func (*TransferEnd) Descriptor() ([]byte, []int) { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescGZIP(), []int{3} +} + +type TransferToTransceiverRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Transceiver *types.Path `protobuf:"bytes,1,opt,name=transceiver,proto3" json:"transceiver,omitempty"` + PackageName string `protobuf:"bytes,2,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` + PackageSizeBytes uint64 `protobuf:"varint,3,opt,name=package_size_bytes,json=packageSizeBytes,proto3" json:"package_size_bytes,omitempty"` + FirmwareBank uint32 `protobuf:"varint,4,opt,name=firmware_bank,json=firmwareBank,proto3" json:"firmware_bank,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TransferToTransceiverRequest) Reset() { + *x = TransferToTransceiverRequest{} + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TransferToTransceiverRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransferToTransceiverRequest) ProtoMessage() {} + +func (x *TransferToTransceiverRequest) ProtoReflect() protoreflect.Message { + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TransferToTransceiverRequest.ProtoReflect.Descriptor instead. +func (*TransferToTransceiverRequest) Descriptor() ([]byte, []int) { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescGZIP(), []int{4} +} + +func (x *TransferToTransceiverRequest) GetTransceiver() *types.Path { + if x != nil { + return x.Transceiver + } + return nil +} + +func (x *TransferToTransceiverRequest) GetPackageName() string { + if x != nil { + return x.PackageName + } + return "" +} + +func (x *TransferToTransceiverRequest) GetPackageSizeBytes() uint64 { + if x != nil { + return x.PackageSizeBytes + } + return 0 +} + +func (x *TransferToTransceiverRequest) GetFirmwareBank() uint32 { + if x != nil { + return x.FirmwareBank + } + return 0 +} + +type TransferResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Response: + // + // *TransferResponse_TransferReady + // *TransferResponse_TransferProgress + // *TransferResponse_Validated + // *TransferResponse_TransferError + Response isTransferResponse_Response `protobuf_oneof:"response"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TransferResponse) Reset() { + *x = TransferResponse{} + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TransferResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransferResponse) ProtoMessage() {} + +func (x *TransferResponse) ProtoReflect() protoreflect.Message { + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TransferResponse.ProtoReflect.Descriptor instead. +func (*TransferResponse) Descriptor() ([]byte, []int) { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescGZIP(), []int{5} +} + +func (x *TransferResponse) GetResponse() isTransferResponse_Response { + if x != nil { + return x.Response + } + return nil +} + +func (x *TransferResponse) GetTransferReady() *TransferReady { + if x != nil { + if x, ok := x.Response.(*TransferResponse_TransferReady); ok { + return x.TransferReady + } + } + return nil +} + +func (x *TransferResponse) GetTransferProgress() *TransferProgress { + if x != nil { + if x, ok := x.Response.(*TransferResponse_TransferProgress); ok { + return x.TransferProgress + } + } + return nil +} + +func (x *TransferResponse) GetValidated() *Validated { + if x != nil { + if x, ok := x.Response.(*TransferResponse_Validated); ok { + return x.Validated + } + } + return nil +} + +func (x *TransferResponse) GetTransferError() *TransferError { + if x != nil { + if x, ok := x.Response.(*TransferResponse_TransferError); ok { + return x.TransferError + } + } + return nil +} + +type isTransferResponse_Response interface { + isTransferResponse_Response() +} + +type TransferResponse_TransferReady struct { + TransferReady *TransferReady `protobuf:"bytes,1,opt,name=transfer_ready,json=transferReady,proto3,oneof"` +} + +type TransferResponse_TransferProgress struct { + TransferProgress *TransferProgress `protobuf:"bytes,2,opt,name=transfer_progress,json=transferProgress,proto3,oneof"` +} + +type TransferResponse_Validated struct { + Validated *Validated `protobuf:"bytes,3,opt,name=validated,proto3,oneof"` +} + +type TransferResponse_TransferError struct { + TransferError *TransferError `protobuf:"bytes,4,opt,name=transfer_error,json=transferError,proto3,oneof"` +} + +func (*TransferResponse_TransferReady) isTransferResponse_Response() {} + +func (*TransferResponse_TransferProgress) isTransferResponse_Response() {} + +func (*TransferResponse_Validated) isTransferResponse_Response() {} + +func (*TransferResponse_TransferError) isTransferResponse_Response() {} + +type TransferReady struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TransferReady) Reset() { + *x = TransferReady{} + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TransferReady) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransferReady) ProtoMessage() {} + +func (x *TransferReady) ProtoReflect() protoreflect.Message { + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TransferReady.ProtoReflect.Descriptor instead. +func (*TransferReady) Descriptor() ([]byte, []int) { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescGZIP(), []int{6} +} + +type TransferProgress struct { + state protoimpl.MessageState `protogen:"open.v1"` + BytesReceived uint64 `protobuf:"varint,1,opt,name=bytes_received,json=bytesReceived,proto3" json:"bytes_received,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TransferProgress) Reset() { + *x = TransferProgress{} + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TransferProgress) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransferProgress) ProtoMessage() {} + +func (x *TransferProgress) ProtoReflect() protoreflect.Message { + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TransferProgress.ProtoReflect.Descriptor instead. +func (*TransferProgress) Descriptor() ([]byte, []int) { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescGZIP(), []int{7} +} + +func (x *TransferProgress) GetBytesReceived() uint64 { + if x != nil { + return x.BytesReceived + } + return 0 +} + +type Validated struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Validated) Reset() { + *x = Validated{} + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Validated) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Validated) ProtoMessage() {} + +func (x *Validated) ProtoReflect() protoreflect.Message { + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Validated.ProtoReflect.Descriptor instead. +func (*Validated) Descriptor() ([]byte, []int) { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescGZIP(), []int{8} +} + +type TransferError struct { + state protoimpl.MessageState `protogen:"open.v1"` + Type TransferError_Type `protobuf:"varint,1,opt,name=type,proto3,enum=gnoi.transceiver_firmware_install.TransferError_Type" json:"type,omitempty"` + Detail string `protobuf:"bytes,2,opt,name=detail,proto3" json:"detail,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TransferError) Reset() { + *x = TransferError{} + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TransferError) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransferError) ProtoMessage() {} + +func (x *TransferError) ProtoReflect() protoreflect.Message { + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TransferError.ProtoReflect.Descriptor instead. +func (*TransferError) Descriptor() ([]byte, []int) { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescGZIP(), []int{9} +} + +func (x *TransferError) GetType() TransferError_Type { + if x != nil { + return x.Type + } + return TransferError_UNSPECIFIED +} + +func (x *TransferError) GetDetail() string { + if x != nil { + return x.Detail + } + return "" +} + +type InstallRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + InstallRequests []*InstallSingleRequest `protobuf:"bytes,1,rep,name=install_requests,json=installRequests,proto3" json:"install_requests,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InstallRequest) Reset() { + *x = InstallRequest{} + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InstallRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstallRequest) ProtoMessage() {} + +func (x *InstallRequest) ProtoReflect() protoreflect.Message { + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InstallRequest.ProtoReflect.Descriptor instead. +func (*InstallRequest) Descriptor() ([]byte, []int) { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescGZIP(), []int{10} +} + +func (x *InstallRequest) GetInstallRequests() []*InstallSingleRequest { + if x != nil { + return x.InstallRequests + } + return nil +} + +type InstallSingleRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Transceiver *types.Path `protobuf:"bytes,1,opt,name=transceiver,proto3" json:"transceiver,omitempty"` + // Types that are valid to be assigned to InstallFrom: + // + // *InstallSingleRequest_InstallFromDevice + // *InstallSingleRequest_InstallFromTransceiverBank + InstallFrom isInstallSingleRequest_InstallFrom `protobuf_oneof:"install_from"` + ForceInstall bool `protobuf:"varint,4,opt,name=force_install,json=forceInstall,proto3" json:"force_install,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InstallSingleRequest) Reset() { + *x = InstallSingleRequest{} + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InstallSingleRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstallSingleRequest) ProtoMessage() {} + +func (x *InstallSingleRequest) ProtoReflect() protoreflect.Message { + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InstallSingleRequest.ProtoReflect.Descriptor instead. +func (*InstallSingleRequest) Descriptor() ([]byte, []int) { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescGZIP(), []int{11} +} + +func (x *InstallSingleRequest) GetTransceiver() *types.Path { + if x != nil { + return x.Transceiver + } + return nil +} + +func (x *InstallSingleRequest) GetInstallFrom() isInstallSingleRequest_InstallFrom { + if x != nil { + return x.InstallFrom + } + return nil +} + +func (x *InstallSingleRequest) GetInstallFromDevice() *InstallFromDeviceRequest { + if x != nil { + if x, ok := x.InstallFrom.(*InstallSingleRequest_InstallFromDevice); ok { + return x.InstallFromDevice + } + } + return nil +} + +func (x *InstallSingleRequest) GetInstallFromTransceiverBank() *InstallFromTransceiverBankRequest { + if x != nil { + if x, ok := x.InstallFrom.(*InstallSingleRequest_InstallFromTransceiverBank); ok { + return x.InstallFromTransceiverBank + } + } + return nil +} + +func (x *InstallSingleRequest) GetForceInstall() bool { + if x != nil { + return x.ForceInstall + } + return false +} + +type isInstallSingleRequest_InstallFrom interface { + isInstallSingleRequest_InstallFrom() +} + +type InstallSingleRequest_InstallFromDevice struct { + InstallFromDevice *InstallFromDeviceRequest `protobuf:"bytes,2,opt,name=install_from_device,json=installFromDevice,proto3,oneof"` +} + +type InstallSingleRequest_InstallFromTransceiverBank struct { + InstallFromTransceiverBank *InstallFromTransceiverBankRequest `protobuf:"bytes,3,opt,name=install_from_transceiver_bank,json=installFromTransceiverBank,proto3,oneof"` +} + +func (*InstallSingleRequest_InstallFromDevice) isInstallSingleRequest_InstallFrom() {} + +func (*InstallSingleRequest_InstallFromTransceiverBank) isInstallSingleRequest_InstallFrom() {} + +type InstallFromDeviceRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` + PackageSizeBytes uint64 `protobuf:"varint,2,opt,name=package_size_bytes,json=packageSizeBytes,proto3" json:"package_size_bytes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InstallFromDeviceRequest) Reset() { + *x = InstallFromDeviceRequest{} + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InstallFromDeviceRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstallFromDeviceRequest) ProtoMessage() {} + +func (x *InstallFromDeviceRequest) ProtoReflect() protoreflect.Message { + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InstallFromDeviceRequest.ProtoReflect.Descriptor instead. +func (*InstallFromDeviceRequest) Descriptor() ([]byte, []int) { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescGZIP(), []int{12} +} + +func (x *InstallFromDeviceRequest) GetPackageName() string { + if x != nil { + return x.PackageName + } + return "" +} + +func (x *InstallFromDeviceRequest) GetPackageSizeBytes() uint64 { + if x != nil { + return x.PackageSizeBytes + } + return 0 +} + +type InstallFromTransceiverBankRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + FirmwareBank uint32 `protobuf:"varint,4,opt,name=firmware_bank,json=firmwareBank,proto3" json:"firmware_bank,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InstallFromTransceiverBankRequest) Reset() { + *x = InstallFromTransceiverBankRequest{} + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InstallFromTransceiverBankRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstallFromTransceiverBankRequest) ProtoMessage() {} + +func (x *InstallFromTransceiverBankRequest) ProtoReflect() protoreflect.Message { + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InstallFromTransceiverBankRequest.ProtoReflect.Descriptor instead. +func (*InstallFromTransceiverBankRequest) Descriptor() ([]byte, []int) { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescGZIP(), []int{13} +} + +func (x *InstallFromTransceiverBankRequest) GetFirmwareBank() uint32 { + if x != nil { + return x.FirmwareBank + } + return 0 +} + +type InstallResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + InstallResponses []*InstallSingleResponse `protobuf:"bytes,1,rep,name=install_responses,json=installResponses,proto3" json:"install_responses,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InstallResponse) Reset() { + *x = InstallResponse{} + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InstallResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstallResponse) ProtoMessage() {} + +func (x *InstallResponse) ProtoReflect() protoreflect.Message { + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InstallResponse.ProtoReflect.Descriptor instead. +func (*InstallResponse) Descriptor() ([]byte, []int) { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescGZIP(), []int{14} +} + +func (x *InstallResponse) GetInstallResponses() []*InstallSingleResponse { + if x != nil { + return x.InstallResponses + } + return nil +} + +type InstallSingleResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Transceiver *types.Path `protobuf:"bytes,1,opt,name=transceiver,proto3" json:"transceiver,omitempty"` + // Types that are valid to be assigned to Response: + // + // *InstallSingleResponse_InstallReady + // *InstallSingleResponse_TransferProgress + // *InstallSingleResponse_InstallProgress + // *InstallSingleResponse_InstallOk + // *InstallSingleResponse_InstallError + Response isInstallSingleResponse_Response `protobuf_oneof:"response"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InstallSingleResponse) Reset() { + *x = InstallSingleResponse{} + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InstallSingleResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstallSingleResponse) ProtoMessage() {} + +func (x *InstallSingleResponse) ProtoReflect() protoreflect.Message { + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InstallSingleResponse.ProtoReflect.Descriptor instead. +func (*InstallSingleResponse) Descriptor() ([]byte, []int) { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescGZIP(), []int{15} +} + +func (x *InstallSingleResponse) GetTransceiver() *types.Path { + if x != nil { + return x.Transceiver + } + return nil +} + +func (x *InstallSingleResponse) GetResponse() isInstallSingleResponse_Response { + if x != nil { + return x.Response + } + return nil +} + +func (x *InstallSingleResponse) GetInstallReady() *InstallReady { + if x != nil { + if x, ok := x.Response.(*InstallSingleResponse_InstallReady); ok { + return x.InstallReady + } + } + return nil +} + +func (x *InstallSingleResponse) GetTransferProgress() *TransferProgress { + if x != nil { + if x, ok := x.Response.(*InstallSingleResponse_TransferProgress); ok { + return x.TransferProgress + } + } + return nil +} + +func (x *InstallSingleResponse) GetInstallProgress() *InstallProgress { + if x != nil { + if x, ok := x.Response.(*InstallSingleResponse_InstallProgress); ok { + return x.InstallProgress + } + } + return nil +} + +func (x *InstallSingleResponse) GetInstallOk() *InstallOK { + if x != nil { + if x, ok := x.Response.(*InstallSingleResponse_InstallOk); ok { + return x.InstallOk + } + } + return nil +} + +func (x *InstallSingleResponse) GetInstallError() *InstallError { + if x != nil { + if x, ok := x.Response.(*InstallSingleResponse_InstallError); ok { + return x.InstallError + } + } + return nil +} + +type isInstallSingleResponse_Response interface { + isInstallSingleResponse_Response() +} + +type InstallSingleResponse_InstallReady struct { + InstallReady *InstallReady `protobuf:"bytes,2,opt,name=install_ready,json=installReady,proto3,oneof"` +} + +type InstallSingleResponse_TransferProgress struct { + TransferProgress *TransferProgress `protobuf:"bytes,3,opt,name=transfer_progress,json=transferProgress,proto3,oneof"` +} + +type InstallSingleResponse_InstallProgress struct { + InstallProgress *InstallProgress `protobuf:"bytes,4,opt,name=install_progress,json=installProgress,proto3,oneof"` +} + +type InstallSingleResponse_InstallOk struct { + InstallOk *InstallOK `protobuf:"bytes,5,opt,name=install_ok,json=installOk,proto3,oneof"` +} + +type InstallSingleResponse_InstallError struct { + InstallError *InstallError `protobuf:"bytes,6,opt,name=install_error,json=installError,proto3,oneof"` +} + +func (*InstallSingleResponse_InstallReady) isInstallSingleResponse_Response() {} + +func (*InstallSingleResponse_TransferProgress) isInstallSingleResponse_Response() {} + +func (*InstallSingleResponse_InstallProgress) isInstallSingleResponse_Response() {} + +func (*InstallSingleResponse_InstallOk) isInstallSingleResponse_Response() {} + +func (*InstallSingleResponse_InstallError) isInstallSingleResponse_Response() {} + +type InstallReady struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InstallReady) Reset() { + *x = InstallReady{} + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InstallReady) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstallReady) ProtoMessage() {} + +func (x *InstallReady) ProtoReflect() protoreflect.Message { + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InstallReady.ProtoReflect.Descriptor instead. +func (*InstallReady) Descriptor() ([]byte, []int) { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescGZIP(), []int{16} +} + +type InstallProgress struct { + state protoimpl.MessageState `protogen:"open.v1"` + PercentageInstalled uint32 `protobuf:"varint,1,opt,name=percentage_installed,json=percentageInstalled,proto3" json:"percentage_installed,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InstallProgress) Reset() { + *x = InstallProgress{} + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InstallProgress) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstallProgress) ProtoMessage() {} + +func (x *InstallProgress) ProtoReflect() protoreflect.Message { + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InstallProgress.ProtoReflect.Descriptor instead. +func (*InstallProgress) Descriptor() ([]byte, []int) { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescGZIP(), []int{17} +} + +func (x *InstallProgress) GetPercentageInstalled() uint32 { + if x != nil { + return x.PercentageInstalled + } + return 0 +} + +type InstallOK struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InstallOK) Reset() { + *x = InstallOK{} + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InstallOK) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstallOK) ProtoMessage() {} + +func (x *InstallOK) ProtoReflect() protoreflect.Message { + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InstallOK.ProtoReflect.Descriptor instead. +func (*InstallOK) Descriptor() ([]byte, []int) { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescGZIP(), []int{18} +} + +type InstallError struct { + state protoimpl.MessageState `protogen:"open.v1"` + Type InstallError_Type `protobuf:"varint,1,opt,name=type,proto3,enum=gnoi.transceiver_firmware_install.InstallError_Type" json:"type,omitempty"` + Detail string `protobuf:"bytes,2,opt,name=detail,proto3" json:"detail,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InstallError) Reset() { + *x = InstallError{} + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InstallError) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstallError) ProtoMessage() {} + +func (x *InstallError) ProtoReflect() protoreflect.Message { + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InstallError.ProtoReflect.Descriptor instead. +func (*InstallError) Descriptor() ([]byte, []int) { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescGZIP(), []int{19} +} + +func (x *InstallError) GetType() InstallError_Type { + if x != nil { + return x.Type + } + return InstallError_UNSPECIFIED +} + +func (x *InstallError) GetDetail() string { + if x != nil { + return x.Detail + } + return "" +} + +type VerifyRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + VerifyRequests []*VerifySingleRequest `protobuf:"bytes,1,rep,name=verify_requests,json=verifyRequests,proto3" json:"verify_requests,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VerifyRequest) Reset() { + *x = VerifyRequest{} + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VerifyRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VerifyRequest) ProtoMessage() {} + +func (x *VerifyRequest) ProtoReflect() protoreflect.Message { + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VerifyRequest.ProtoReflect.Descriptor instead. +func (*VerifyRequest) Descriptor() ([]byte, []int) { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescGZIP(), []int{20} +} + +func (x *VerifyRequest) GetVerifyRequests() []*VerifySingleRequest { + if x != nil { + return x.VerifyRequests + } + return nil +} + +type VerifySingleRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Transceiver *types.Path `protobuf:"bytes,1,opt,name=transceiver,proto3" json:"transceiver,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VerifySingleRequest) Reset() { + *x = VerifySingleRequest{} + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VerifySingleRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VerifySingleRequest) ProtoMessage() {} + +func (x *VerifySingleRequest) ProtoReflect() protoreflect.Message { + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VerifySingleRequest.ProtoReflect.Descriptor instead. +func (*VerifySingleRequest) Descriptor() ([]byte, []int) { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescGZIP(), []int{21} +} + +func (x *VerifySingleRequest) GetTransceiver() *types.Path { + if x != nil { + return x.Transceiver + } + return nil +} + +type VerifyResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + VerifyResponses []*VerifySingleResponse `protobuf:"bytes,1,rep,name=verify_responses,json=verifyResponses,proto3" json:"verify_responses,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VerifyResponse) Reset() { + *x = VerifyResponse{} + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VerifyResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VerifyResponse) ProtoMessage() {} + +func (x *VerifyResponse) ProtoReflect() protoreflect.Message { + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VerifyResponse.ProtoReflect.Descriptor instead. +func (*VerifyResponse) Descriptor() ([]byte, []int) { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescGZIP(), []int{22} +} + +func (x *VerifyResponse) GetVerifyResponses() []*VerifySingleResponse { + if x != nil { + return x.VerifyResponses + } + return nil +} + +type VerifySingleResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Transceiver *types.Path `protobuf:"bytes,1,opt,name=transceiver,proto3" json:"transceiver,omitempty"` + RunningVersion string `protobuf:"bytes,2,opt,name=running_version,json=runningVersion,proto3" json:"running_version,omitempty"` + NewVersion string `protobuf:"bytes,3,opt,name=new_version,json=newVersion,proto3" json:"new_version,omitempty"` + Bank []*FirmwareBank `protobuf:"bytes,4,rep,name=bank,proto3" json:"bank,omitempty"` + NewVersionServiceImpacting bool `protobuf:"varint,5,opt,name=new_version_service_impacting,json=newVersionServiceImpacting,proto3" json:"new_version_service_impacting,omitempty"` + InstallStatus InstallStatus `protobuf:"varint,6,opt,name=install_status,json=installStatus,proto3,enum=gnoi.transceiver_firmware_install.InstallStatus" json:"install_status,omitempty"` + Step string `protobuf:"bytes,7,opt,name=step,proto3" json:"step,omitempty"` + StepPercentComplete uint32 `protobuf:"varint,8,opt,name=step_percent_complete,json=stepPercentComplete,proto3" json:"step_percent_complete,omitempty"` + TotalPercentComplete uint32 `protobuf:"varint,9,opt,name=total_percent_complete,json=totalPercentComplete,proto3" json:"total_percent_complete,omitempty"` + StartTime *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` + StopTime *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=stop_time,json=stopTime,proto3" json:"stop_time,omitempty"` + Duration *durationpb.Duration `protobuf:"bytes,12,opt,name=duration,proto3" json:"duration,omitempty"` + FailureMessage string `protobuf:"bytes,13,opt,name=failure_message,json=failureMessage,proto3" json:"failure_message,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VerifySingleResponse) Reset() { + *x = VerifySingleResponse{} + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VerifySingleResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VerifySingleResponse) ProtoMessage() {} + +func (x *VerifySingleResponse) ProtoReflect() protoreflect.Message { + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[23] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VerifySingleResponse.ProtoReflect.Descriptor instead. +func (*VerifySingleResponse) Descriptor() ([]byte, []int) { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescGZIP(), []int{23} +} + +func (x *VerifySingleResponse) GetTransceiver() *types.Path { + if x != nil { + return x.Transceiver + } + return nil +} + +func (x *VerifySingleResponse) GetRunningVersion() string { + if x != nil { + return x.RunningVersion + } + return "" +} + +func (x *VerifySingleResponse) GetNewVersion() string { + if x != nil { + return x.NewVersion + } + return "" +} + +func (x *VerifySingleResponse) GetBank() []*FirmwareBank { + if x != nil { + return x.Bank + } + return nil +} + +func (x *VerifySingleResponse) GetNewVersionServiceImpacting() bool { + if x != nil { + return x.NewVersionServiceImpacting + } + return false +} + +func (x *VerifySingleResponse) GetInstallStatus() InstallStatus { + if x != nil { + return x.InstallStatus + } + return InstallStatus_INSTALL_STATUS_UNKNOWN +} + +func (x *VerifySingleResponse) GetStep() string { + if x != nil { + return x.Step + } + return "" +} + +func (x *VerifySingleResponse) GetStepPercentComplete() uint32 { + if x != nil { + return x.StepPercentComplete + } + return 0 +} + +func (x *VerifySingleResponse) GetTotalPercentComplete() uint32 { + if x != nil { + return x.TotalPercentComplete + } + return 0 +} + +func (x *VerifySingleResponse) GetStartTime() *timestamppb.Timestamp { + if x != nil { + return x.StartTime + } + return nil +} + +func (x *VerifySingleResponse) GetStopTime() *timestamppb.Timestamp { + if x != nil { + return x.StopTime + } + return nil +} + +func (x *VerifySingleResponse) GetDuration() *durationpb.Duration { + if x != nil { + return x.Duration + } + return nil +} + +func (x *VerifySingleResponse) GetFailureMessage() string { + if x != nil { + return x.FailureMessage + } + return "" +} + +type FirmwareBank struct { + state protoimpl.MessageState `protogen:"open.v1"` + Bank string `protobuf:"bytes,1,opt,name=bank,proto3" json:"bank,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FirmwareBank) Reset() { + *x = FirmwareBank{} + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FirmwareBank) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FirmwareBank) ProtoMessage() {} + +func (x *FirmwareBank) ProtoReflect() protoreflect.Message { + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[24] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FirmwareBank.ProtoReflect.Descriptor instead. +func (*FirmwareBank) Descriptor() ([]byte, []int) { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescGZIP(), []int{24} +} + +func (x *FirmwareBank) GetBank() string { + if x != nil { + return x.Bank + } + return "" +} + +func (x *FirmwareBank) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +type DeleteRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeleteRequest) Reset() { + *x = DeleteRequest{} + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteRequest) ProtoMessage() {} + +func (x *DeleteRequest) ProtoReflect() protoreflect.Message { + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[25] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteRequest.ProtoReflect.Descriptor instead. +func (*DeleteRequest) Descriptor() ([]byte, []int) { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescGZIP(), []int{25} +} + +func (x *DeleteRequest) GetPackageName() string { + if x != nil { + return x.PackageName + } + return "" +} + +type DeleteResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeleteResponse) Reset() { + *x = DeleteResponse{} + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteResponse) ProtoMessage() {} + +func (x *DeleteResponse) ProtoReflect() protoreflect.Message { + mi := &file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[26] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteResponse.ProtoReflect.Descriptor instead. +func (*DeleteResponse) Descriptor() ([]byte, []int) { + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescGZIP(), []int{26} +} + +var File_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto protoreflect.FileDescriptor + +const file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDesc = "" + + "\n" + + "Zgithub.com/openconfig/gnoi/transceiver_firmware_install/transceiver_firmware_install.proto\x12!gnoi.transceiver_firmware_install\x1a,github.com/openconfig/gnoi/types/types.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x83\x02\n" + + "\x0fTransferRequest\x12j\n" + + "\x12transfer_to_device\x18\x01 \x01(\v2:.gnoi.transceiver_firmware_install.TransferToDeviceRequestH\x00R\x10transferToDevice\x12y\n" + + "\x17transfer_to_transceiver\x18\x02 \x01(\v2?.gnoi.transceiver_firmware_install.TransferToTransceiverRequestH\x00R\x15transferToTransceiverB\t\n" + + "\arequest\"\x9f\x02\n" + + "\x17TransferToDeviceRequest\x12w\n" + + "\x16transfer_start_request\x18\x01 \x01(\v2?.gnoi.transceiver_firmware_install.TransferToDeviceStartRequestH\x00R\x14transferStartRequest\x12+\n" + + "\x10transfer_content\x18\x02 \x01(\fH\x00R\x0ftransferContent\x12S\n" + + "\ftransfer_end\x18\x03 \x01(\v2..gnoi.transceiver_firmware_install.TransferEndH\x00R\vtransferEndB\t\n" + + "\arequest\"\x99\x01\n" + + "\x1cTransferToDeviceStartRequest\x12!\n" + + "\fpackage_name\x18\x01 \x01(\tR\vpackageName\x12,\n" + + "\x12package_size_bytes\x18\x02 \x01(\x04R\x10packageSizeBytes\x12(\n" + + "\x04hash\x18\x03 \x01(\v2\x14.gnoi.types.HashTypeR\x04hash\"\r\n" + + "\vTransferEnd\"\xc8\x01\n" + + "\x1cTransferToTransceiverRequest\x122\n" + + "\vtransceiver\x18\x01 \x01(\v2\x10.gnoi.types.PathR\vtransceiver\x12!\n" + + "\fpackage_name\x18\x02 \x01(\tR\vpackageName\x12,\n" + + "\x12package_size_bytes\x18\x03 \x01(\x04R\x10packageSizeBytes\x12#\n" + + "\rfirmware_bank\x18\x04 \x01(\rR\ffirmwareBank\"\x86\x03\n" + + "\x10TransferResponse\x12Y\n" + + "\x0etransfer_ready\x18\x01 \x01(\v20.gnoi.transceiver_firmware_install.TransferReadyH\x00R\rtransferReady\x12b\n" + + "\x11transfer_progress\x18\x02 \x01(\v23.gnoi.transceiver_firmware_install.TransferProgressH\x00R\x10transferProgress\x12L\n" + + "\tvalidated\x18\x03 \x01(\v2,.gnoi.transceiver_firmware_install.ValidatedH\x00R\tvalidated\x12Y\n" + + "\x0etransfer_error\x18\x04 \x01(\v20.gnoi.transceiver_firmware_install.TransferErrorH\x00R\rtransferErrorB\n" + + "\n" + + "\bresponse\"\x0f\n" + + "\rTransferReady\"9\n" + + "\x10TransferProgress\x12%\n" + + "\x0ebytes_received\x18\x01 \x01(\x04R\rbytesReceived\"\v\n" + + "\tValidated\"\x81\x02\n" + + "\rTransferError\x12I\n" + + "\x04type\x18\x01 \x01(\x0e25.gnoi.transceiver_firmware_install.TransferError.TypeR\x04type\x12\x16\n" + + "\x06detail\x18\x02 \x01(\tR\x06detail\"\x8c\x01\n" + + "\x04Type\x12\x0f\n" + + "\vUNSPECIFIED\x10\x00\x12\x10\n" + + "\fINCOMPATIBLE\x10\x01\x12\r\n" + + "\tTOO_LARGE\x10\x02\x12\x0e\n" + + "\n" + + "PARSE_FAIL\x10\x03\x12\x12\n" + + "\x0eINTEGRITY_FAIL\x10\x04\x12\x18\n" + + "\x14TRANSFER_IN_PROGRESS\x10\x05\x12\x14\n" + + "\x10INVALID_ARGUMENT\x10\x06\"t\n" + + "\x0eInstallRequest\x12b\n" + + "\x10install_requests\x18\x01 \x03(\v27.gnoi.transceiver_firmware_install.InstallSingleRequestR\x0finstallRequests\"\xfa\x02\n" + + "\x14InstallSingleRequest\x122\n" + + "\vtransceiver\x18\x01 \x01(\v2\x10.gnoi.types.PathR\vtransceiver\x12m\n" + + "\x13install_from_device\x18\x02 \x01(\v2;.gnoi.transceiver_firmware_install.InstallFromDeviceRequestH\x00R\x11installFromDevice\x12\x89\x01\n" + + "\x1dinstall_from_transceiver_bank\x18\x03 \x01(\v2D.gnoi.transceiver_firmware_install.InstallFromTransceiverBankRequestH\x00R\x1ainstallFromTransceiverBank\x12#\n" + + "\rforce_install\x18\x04 \x01(\bR\fforceInstallB\x0e\n" + + "\finstall_from\"k\n" + + "\x18InstallFromDeviceRequest\x12!\n" + + "\fpackage_name\x18\x01 \x01(\tR\vpackageName\x12,\n" + + "\x12package_size_bytes\x18\x02 \x01(\x04R\x10packageSizeBytes\"H\n" + + "!InstallFromTransceiverBankRequest\x12#\n" + + "\rfirmware_bank\x18\x04 \x01(\rR\ffirmwareBank\"x\n" + + "\x0fInstallResponse\x12e\n" + + "\x11install_responses\x18\x01 \x03(\v28.gnoi.transceiver_firmware_install.InstallSingleResponseR\x10installResponses\"\x9b\x04\n" + + "\x15InstallSingleResponse\x122\n" + + "\vtransceiver\x18\x01 \x01(\v2\x10.gnoi.types.PathR\vtransceiver\x12V\n" + + "\rinstall_ready\x18\x02 \x01(\v2/.gnoi.transceiver_firmware_install.InstallReadyH\x00R\finstallReady\x12b\n" + + "\x11transfer_progress\x18\x03 \x01(\v23.gnoi.transceiver_firmware_install.TransferProgressH\x00R\x10transferProgress\x12_\n" + + "\x10install_progress\x18\x04 \x01(\v22.gnoi.transceiver_firmware_install.InstallProgressH\x00R\x0finstallProgress\x12M\n" + + "\n" + + "install_ok\x18\x05 \x01(\v2,.gnoi.transceiver_firmware_install.InstallOKH\x00R\tinstallOk\x12V\n" + + "\rinstall_error\x18\x06 \x01(\v2/.gnoi.transceiver_firmware_install.InstallErrorH\x00R\finstallErrorB\n" + + "\n" + + "\bresponse\"\x0e\n" + + "\fInstallReady\"D\n" + + "\x0fInstallProgress\x121\n" + + "\x14percentage_installed\x18\x01 \x01(\rR\x13percentageInstalled\"\v\n" + + "\tInstallOK\"\xb6\x02\n" + + "\fInstallError\x12H\n" + + "\x04type\x18\x01 \x01(\x0e24.gnoi.transceiver_firmware_install.InstallError.TypeR\x04type\x12\x16\n" + + "\x06detail\x18\x02 \x01(\tR\x06detail\"\xc3\x01\n" + + "\x04Type\x12\x0f\n" + + "\vUNSPECIFIED\x10\x00\x12\x18\n" + + "\x14NON_EXISTENT_VERSION\x10\x01\x12\x10\n" + + "\fINCOMPATIBLE\x10\x02\x12\r\n" + + "\tTOO_LARGE\x10\x03\x12\x0e\n" + + "\n" + + "PARSE_FAIL\x10\x04\x12\x12\n" + + "\x0eINTEGRITY_FAIL\x10\x05\x12\x17\n" + + "\x13INSTALL_IN_PROGRESS\x10\x06\x12\x19\n" + + "\x15UNEXPECTED_SWITCHOVER\x10\a\x12\x17\n" + + "\x13EMPTY_FIRMWARE_BANK\x10\b\"p\n" + + "\rVerifyRequest\x12_\n" + + "\x0fverify_requests\x18\x01 \x03(\v26.gnoi.transceiver_firmware_install.VerifySingleRequestR\x0everifyRequests\"I\n" + + "\x13VerifySingleRequest\x122\n" + + "\vtransceiver\x18\x01 \x01(\v2\x10.gnoi.types.PathR\vtransceiver\"t\n" + + "\x0eVerifyResponse\x12b\n" + + "\x10verify_responses\x18\x01 \x03(\v27.gnoi.transceiver_firmware_install.VerifySingleResponseR\x0fverifyResponses\"\xc7\x05\n" + + "\x14VerifySingleResponse\x122\n" + + "\vtransceiver\x18\x01 \x01(\v2\x10.gnoi.types.PathR\vtransceiver\x12'\n" + + "\x0frunning_version\x18\x02 \x01(\tR\x0erunningVersion\x12\x1f\n" + + "\vnew_version\x18\x03 \x01(\tR\n" + + "newVersion\x12C\n" + + "\x04bank\x18\x04 \x03(\v2/.gnoi.transceiver_firmware_install.FirmwareBankR\x04bank\x12A\n" + + "\x1dnew_version_service_impacting\x18\x05 \x01(\bR\x1anewVersionServiceImpacting\x12W\n" + + "\x0einstall_status\x18\x06 \x01(\x0e20.gnoi.transceiver_firmware_install.InstallStatusR\rinstallStatus\x12\x12\n" + + "\x04step\x18\a \x01(\tR\x04step\x122\n" + + "\x15step_percent_complete\x18\b \x01(\rR\x13stepPercentComplete\x124\n" + + "\x16total_percent_complete\x18\t \x01(\rR\x14totalPercentComplete\x129\n" + + "\n" + + "start_time\x18\n" + + " \x01(\v2\x1a.google.protobuf.TimestampR\tstartTime\x127\n" + + "\tstop_time\x18\v \x01(\v2\x1a.google.protobuf.TimestampR\bstopTime\x125\n" + + "\bduration\x18\f \x01(\v2\x19.google.protobuf.DurationR\bduration\x12'\n" + + "\x0ffailure_message\x18\r \x01(\tR\x0efailureMessage\"<\n" + + "\fFirmwareBank\x12\x12\n" + + "\x04bank\x18\x01 \x01(\tR\x04bank\x12\x18\n" + + "\aversion\x18\x02 \x01(\tR\aversion\"2\n" + + "\rDeleteRequest\x12!\n" + + "\fpackage_name\x18\x01 \x01(\tR\vpackageName\"\x10\n" + + "\x0eDeleteResponse*\xb5\x01\n" + + "\rInstallStatus\x12\x1a\n" + + "\x16INSTALL_STATUS_UNKNOWN\x10\x00\x12'\n" + + "#INSTALL_STATUS_TRANSFER_IN_PROGRESS\x10\x01\x12&\n" + + "\"INSTALL_STATUS_INSTALL_IN_PROGRESS\x10\x02\x12\x1c\n" + + "\x18INSTALL_STATUS_COMPLETED\x10\x03\x12\x19\n" + + "\x15INSTALL_STATUS_FAILED\x10\x042\xe7\x03\n" + + "\x1aTransceiverFirmwareInstall\x12w\n" + + "\bTransfer\x122.gnoi.transceiver_firmware_install.TransferRequest\x1a3.gnoi.transceiver_firmware_install.TransferResponse(\x010\x01\x12r\n" + + "\aInstall\x121.gnoi.transceiver_firmware_install.InstallRequest\x1a2.gnoi.transceiver_firmware_install.InstallResponse0\x01\x12m\n" + + "\x06Verify\x120.gnoi.transceiver_firmware_install.VerifyRequest\x1a1.gnoi.transceiver_firmware_install.VerifyResponse\x12m\n" + + "\x06Delete\x120.gnoi.transceiver_firmware_install.DeleteRequest\x1a1.gnoi.transceiver_firmware_install.DeleteResponseBA\xd2>\x050.1.0Z7github.com/openconfig/gnoi/transceiver_firmware_installb\x06proto3" + +var ( + file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescOnce sync.Once + file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescData []byte +) + +func file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescGZIP() []byte { + file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescOnce.Do(func() { + file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDesc), len(file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDesc))) + }) + return file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDescData +} + +var file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes = make([]protoimpl.MessageInfo, 27) +var file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_goTypes = []any{ + (InstallStatus)(0), // 0: gnoi.transceiver_firmware_install.InstallStatus + (TransferError_Type)(0), // 1: gnoi.transceiver_firmware_install.TransferError.Type + (InstallError_Type)(0), // 2: gnoi.transceiver_firmware_install.InstallError.Type + (*TransferRequest)(nil), // 3: gnoi.transceiver_firmware_install.TransferRequest + (*TransferToDeviceRequest)(nil), // 4: gnoi.transceiver_firmware_install.TransferToDeviceRequest + (*TransferToDeviceStartRequest)(nil), // 5: gnoi.transceiver_firmware_install.TransferToDeviceStartRequest + (*TransferEnd)(nil), // 6: gnoi.transceiver_firmware_install.TransferEnd + (*TransferToTransceiverRequest)(nil), // 7: gnoi.transceiver_firmware_install.TransferToTransceiverRequest + (*TransferResponse)(nil), // 8: gnoi.transceiver_firmware_install.TransferResponse + (*TransferReady)(nil), // 9: gnoi.transceiver_firmware_install.TransferReady + (*TransferProgress)(nil), // 10: gnoi.transceiver_firmware_install.TransferProgress + (*Validated)(nil), // 11: gnoi.transceiver_firmware_install.Validated + (*TransferError)(nil), // 12: gnoi.transceiver_firmware_install.TransferError + (*InstallRequest)(nil), // 13: gnoi.transceiver_firmware_install.InstallRequest + (*InstallSingleRequest)(nil), // 14: gnoi.transceiver_firmware_install.InstallSingleRequest + (*InstallFromDeviceRequest)(nil), // 15: gnoi.transceiver_firmware_install.InstallFromDeviceRequest + (*InstallFromTransceiverBankRequest)(nil), // 16: gnoi.transceiver_firmware_install.InstallFromTransceiverBankRequest + (*InstallResponse)(nil), // 17: gnoi.transceiver_firmware_install.InstallResponse + (*InstallSingleResponse)(nil), // 18: gnoi.transceiver_firmware_install.InstallSingleResponse + (*InstallReady)(nil), // 19: gnoi.transceiver_firmware_install.InstallReady + (*InstallProgress)(nil), // 20: gnoi.transceiver_firmware_install.InstallProgress + (*InstallOK)(nil), // 21: gnoi.transceiver_firmware_install.InstallOK + (*InstallError)(nil), // 22: gnoi.transceiver_firmware_install.InstallError + (*VerifyRequest)(nil), // 23: gnoi.transceiver_firmware_install.VerifyRequest + (*VerifySingleRequest)(nil), // 24: gnoi.transceiver_firmware_install.VerifySingleRequest + (*VerifyResponse)(nil), // 25: gnoi.transceiver_firmware_install.VerifyResponse + (*VerifySingleResponse)(nil), // 26: gnoi.transceiver_firmware_install.VerifySingleResponse + (*FirmwareBank)(nil), // 27: gnoi.transceiver_firmware_install.FirmwareBank + (*DeleteRequest)(nil), // 28: gnoi.transceiver_firmware_install.DeleteRequest + (*DeleteResponse)(nil), // 29: gnoi.transceiver_firmware_install.DeleteResponse + (*types.HashType)(nil), // 30: gnoi.types.HashType + (*types.Path)(nil), // 31: gnoi.types.Path + (*timestamppb.Timestamp)(nil), // 32: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 33: google.protobuf.Duration +} +var file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_depIdxs = []int32{ + 4, // 0: gnoi.transceiver_firmware_install.TransferRequest.transfer_to_device:type_name -> gnoi.transceiver_firmware_install.TransferToDeviceRequest + 7, // 1: gnoi.transceiver_firmware_install.TransferRequest.transfer_to_transceiver:type_name -> gnoi.transceiver_firmware_install.TransferToTransceiverRequest + 5, // 2: gnoi.transceiver_firmware_install.TransferToDeviceRequest.transfer_start_request:type_name -> gnoi.transceiver_firmware_install.TransferToDeviceStartRequest + 6, // 3: gnoi.transceiver_firmware_install.TransferToDeviceRequest.transfer_end:type_name -> gnoi.transceiver_firmware_install.TransferEnd + 30, // 4: gnoi.transceiver_firmware_install.TransferToDeviceStartRequest.hash:type_name -> gnoi.types.HashType + 31, // 5: gnoi.transceiver_firmware_install.TransferToTransceiverRequest.transceiver:type_name -> gnoi.types.Path + 9, // 6: gnoi.transceiver_firmware_install.TransferResponse.transfer_ready:type_name -> gnoi.transceiver_firmware_install.TransferReady + 10, // 7: gnoi.transceiver_firmware_install.TransferResponse.transfer_progress:type_name -> gnoi.transceiver_firmware_install.TransferProgress + 11, // 8: gnoi.transceiver_firmware_install.TransferResponse.validated:type_name -> gnoi.transceiver_firmware_install.Validated + 12, // 9: gnoi.transceiver_firmware_install.TransferResponse.transfer_error:type_name -> gnoi.transceiver_firmware_install.TransferError + 1, // 10: gnoi.transceiver_firmware_install.TransferError.type:type_name -> gnoi.transceiver_firmware_install.TransferError.Type + 14, // 11: gnoi.transceiver_firmware_install.InstallRequest.install_requests:type_name -> gnoi.transceiver_firmware_install.InstallSingleRequest + 31, // 12: gnoi.transceiver_firmware_install.InstallSingleRequest.transceiver:type_name -> gnoi.types.Path + 15, // 13: gnoi.transceiver_firmware_install.InstallSingleRequest.install_from_device:type_name -> gnoi.transceiver_firmware_install.InstallFromDeviceRequest + 16, // 14: gnoi.transceiver_firmware_install.InstallSingleRequest.install_from_transceiver_bank:type_name -> gnoi.transceiver_firmware_install.InstallFromTransceiverBankRequest + 18, // 15: gnoi.transceiver_firmware_install.InstallResponse.install_responses:type_name -> gnoi.transceiver_firmware_install.InstallSingleResponse + 31, // 16: gnoi.transceiver_firmware_install.InstallSingleResponse.transceiver:type_name -> gnoi.types.Path + 19, // 17: gnoi.transceiver_firmware_install.InstallSingleResponse.install_ready:type_name -> gnoi.transceiver_firmware_install.InstallReady + 10, // 18: gnoi.transceiver_firmware_install.InstallSingleResponse.transfer_progress:type_name -> gnoi.transceiver_firmware_install.TransferProgress + 20, // 19: gnoi.transceiver_firmware_install.InstallSingleResponse.install_progress:type_name -> gnoi.transceiver_firmware_install.InstallProgress + 21, // 20: gnoi.transceiver_firmware_install.InstallSingleResponse.install_ok:type_name -> gnoi.transceiver_firmware_install.InstallOK + 22, // 21: gnoi.transceiver_firmware_install.InstallSingleResponse.install_error:type_name -> gnoi.transceiver_firmware_install.InstallError + 2, // 22: gnoi.transceiver_firmware_install.InstallError.type:type_name -> gnoi.transceiver_firmware_install.InstallError.Type + 24, // 23: gnoi.transceiver_firmware_install.VerifyRequest.verify_requests:type_name -> gnoi.transceiver_firmware_install.VerifySingleRequest + 31, // 24: gnoi.transceiver_firmware_install.VerifySingleRequest.transceiver:type_name -> gnoi.types.Path + 26, // 25: gnoi.transceiver_firmware_install.VerifyResponse.verify_responses:type_name -> gnoi.transceiver_firmware_install.VerifySingleResponse + 31, // 26: gnoi.transceiver_firmware_install.VerifySingleResponse.transceiver:type_name -> gnoi.types.Path + 27, // 27: gnoi.transceiver_firmware_install.VerifySingleResponse.bank:type_name -> gnoi.transceiver_firmware_install.FirmwareBank + 0, // 28: gnoi.transceiver_firmware_install.VerifySingleResponse.install_status:type_name -> gnoi.transceiver_firmware_install.InstallStatus + 32, // 29: gnoi.transceiver_firmware_install.VerifySingleResponse.start_time:type_name -> google.protobuf.Timestamp + 32, // 30: gnoi.transceiver_firmware_install.VerifySingleResponse.stop_time:type_name -> google.protobuf.Timestamp + 33, // 31: gnoi.transceiver_firmware_install.VerifySingleResponse.duration:type_name -> google.protobuf.Duration + 3, // 32: gnoi.transceiver_firmware_install.TransceiverFirmwareInstall.Transfer:input_type -> gnoi.transceiver_firmware_install.TransferRequest + 13, // 33: gnoi.transceiver_firmware_install.TransceiverFirmwareInstall.Install:input_type -> gnoi.transceiver_firmware_install.InstallRequest + 23, // 34: gnoi.transceiver_firmware_install.TransceiverFirmwareInstall.Verify:input_type -> gnoi.transceiver_firmware_install.VerifyRequest + 28, // 35: gnoi.transceiver_firmware_install.TransceiverFirmwareInstall.Delete:input_type -> gnoi.transceiver_firmware_install.DeleteRequest + 8, // 36: gnoi.transceiver_firmware_install.TransceiverFirmwareInstall.Transfer:output_type -> gnoi.transceiver_firmware_install.TransferResponse + 17, // 37: gnoi.transceiver_firmware_install.TransceiverFirmwareInstall.Install:output_type -> gnoi.transceiver_firmware_install.InstallResponse + 25, // 38: gnoi.transceiver_firmware_install.TransceiverFirmwareInstall.Verify:output_type -> gnoi.transceiver_firmware_install.VerifyResponse + 29, // 39: gnoi.transceiver_firmware_install.TransceiverFirmwareInstall.Delete:output_type -> gnoi.transceiver_firmware_install.DeleteResponse + 36, // [36:40] is the sub-list for method output_type + 32, // [32:36] is the sub-list for method input_type + 32, // [32:32] is the sub-list for extension type_name + 32, // [32:32] is the sub-list for extension extendee + 0, // [0:32] is the sub-list for field type_name +} + +func init() { + file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_init() +} +func file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_init() { + if File_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto != nil { + return + } + file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[0].OneofWrappers = []any{ + (*TransferRequest_TransferToDevice)(nil), + (*TransferRequest_TransferToTransceiver)(nil), + } + file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[1].OneofWrappers = []any{ + (*TransferToDeviceRequest_TransferStartRequest)(nil), + (*TransferToDeviceRequest_TransferContent)(nil), + (*TransferToDeviceRequest_TransferEnd)(nil), + } + file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[5].OneofWrappers = []any{ + (*TransferResponse_TransferReady)(nil), + (*TransferResponse_TransferProgress)(nil), + (*TransferResponse_Validated)(nil), + (*TransferResponse_TransferError)(nil), + } + file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[11].OneofWrappers = []any{ + (*InstallSingleRequest_InstallFromDevice)(nil), + (*InstallSingleRequest_InstallFromTransceiverBank)(nil), + } + file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes[15].OneofWrappers = []any{ + (*InstallSingleResponse_InstallReady)(nil), + (*InstallSingleResponse_TransferProgress)(nil), + (*InstallSingleResponse_InstallProgress)(nil), + (*InstallSingleResponse_InstallOk)(nil), + (*InstallSingleResponse_InstallError)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDesc), len(file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_rawDesc)), + NumEnums: 3, + NumMessages: 27, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_goTypes, + DependencyIndexes: file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_depIdxs, + EnumInfos: file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_enumTypes, + MessageInfos: file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_msgTypes, + }.Build() + File_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto = out.File + file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_goTypes = nil + file_github_com_openconfig_gnoi_transceiver_firmware_install_transceiver_firmware_install_proto_depIdxs = nil +} diff --git a/transceiver_firmware_install/transceiver_firmware_install_grpc.pb.go b/transceiver_firmware_install/transceiver_firmware_install_grpc.pb.go new file mode 100644 index 00000000..7dbc9d00 --- /dev/null +++ b/transceiver_firmware_install/transceiver_firmware_install_grpc.pb.go @@ -0,0 +1,231 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.5.1 +// - protoc v6.32.0 +// source: github.com/openconfig/gnoi/transceiver_firmware_install/transceiver_firmware_install.proto + +package transceiver_firmware_install + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + TransceiverFirmwareInstall_Transfer_FullMethodName = "/gnoi.transceiver_firmware_install.TransceiverFirmwareInstall/Transfer" + TransceiverFirmwareInstall_Install_FullMethodName = "/gnoi.transceiver_firmware_install.TransceiverFirmwareInstall/Install" + TransceiverFirmwareInstall_Verify_FullMethodName = "/gnoi.transceiver_firmware_install.TransceiverFirmwareInstall/Verify" + TransceiverFirmwareInstall_Delete_FullMethodName = "/gnoi.transceiver_firmware_install.TransceiverFirmwareInstall/Delete" +) + +// TransceiverFirmwareInstallClient is the client API for TransceiverFirmwareInstall service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type TransceiverFirmwareInstallClient interface { + Transfer(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[TransferRequest, TransferResponse], error) + Install(ctx context.Context, in *InstallRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[InstallResponse], error) + Verify(ctx context.Context, in *VerifyRequest, opts ...grpc.CallOption) (*VerifyResponse, error) + Delete(ctx context.Context, in *DeleteRequest, opts ...grpc.CallOption) (*DeleteResponse, error) +} + +type transceiverFirmwareInstallClient struct { + cc grpc.ClientConnInterface +} + +func NewTransceiverFirmwareInstallClient(cc grpc.ClientConnInterface) TransceiverFirmwareInstallClient { + return &transceiverFirmwareInstallClient{cc} +} + +func (c *transceiverFirmwareInstallClient) Transfer(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[TransferRequest, TransferResponse], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &TransceiverFirmwareInstall_ServiceDesc.Streams[0], TransceiverFirmwareInstall_Transfer_FullMethodName, cOpts...) + if err != nil { + return nil, err + } + x := &grpc.GenericClientStream[TransferRequest, TransferResponse]{ClientStream: stream} + return x, nil +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type TransceiverFirmwareInstall_TransferClient = grpc.BidiStreamingClient[TransferRequest, TransferResponse] + +func (c *transceiverFirmwareInstallClient) Install(ctx context.Context, in *InstallRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[InstallResponse], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &TransceiverFirmwareInstall_ServiceDesc.Streams[1], TransceiverFirmwareInstall_Install_FullMethodName, cOpts...) + if err != nil { + return nil, err + } + x := &grpc.GenericClientStream[InstallRequest, InstallResponse]{ClientStream: stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type TransceiverFirmwareInstall_InstallClient = grpc.ServerStreamingClient[InstallResponse] + +func (c *transceiverFirmwareInstallClient) Verify(ctx context.Context, in *VerifyRequest, opts ...grpc.CallOption) (*VerifyResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(VerifyResponse) + err := c.cc.Invoke(ctx, TransceiverFirmwareInstall_Verify_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *transceiverFirmwareInstallClient) Delete(ctx context.Context, in *DeleteRequest, opts ...grpc.CallOption) (*DeleteResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(DeleteResponse) + err := c.cc.Invoke(ctx, TransceiverFirmwareInstall_Delete_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// TransceiverFirmwareInstallServer is the server API for TransceiverFirmwareInstall service. +// All implementations should embed UnimplementedTransceiverFirmwareInstallServer +// for forward compatibility. +type TransceiverFirmwareInstallServer interface { + Transfer(grpc.BidiStreamingServer[TransferRequest, TransferResponse]) error + Install(*InstallRequest, grpc.ServerStreamingServer[InstallResponse]) error + Verify(context.Context, *VerifyRequest) (*VerifyResponse, error) + Delete(context.Context, *DeleteRequest) (*DeleteResponse, error) +} + +// UnimplementedTransceiverFirmwareInstallServer should be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedTransceiverFirmwareInstallServer struct{} + +func (UnimplementedTransceiverFirmwareInstallServer) Transfer(grpc.BidiStreamingServer[TransferRequest, TransferResponse]) error { + return status.Errorf(codes.Unimplemented, "method Transfer not implemented") +} +func (UnimplementedTransceiverFirmwareInstallServer) Install(*InstallRequest, grpc.ServerStreamingServer[InstallResponse]) error { + return status.Errorf(codes.Unimplemented, "method Install not implemented") +} +func (UnimplementedTransceiverFirmwareInstallServer) Verify(context.Context, *VerifyRequest) (*VerifyResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Verify not implemented") +} +func (UnimplementedTransceiverFirmwareInstallServer) Delete(context.Context, *DeleteRequest) (*DeleteResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") +} +func (UnimplementedTransceiverFirmwareInstallServer) testEmbeddedByValue() {} + +// UnsafeTransceiverFirmwareInstallServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to TransceiverFirmwareInstallServer will +// result in compilation errors. +type UnsafeTransceiverFirmwareInstallServer interface { + mustEmbedUnimplementedTransceiverFirmwareInstallServer() +} + +func RegisterTransceiverFirmwareInstallServer(s grpc.ServiceRegistrar, srv TransceiverFirmwareInstallServer) { + // If the following call pancis, it indicates UnimplementedTransceiverFirmwareInstallServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&TransceiverFirmwareInstall_ServiceDesc, srv) +} + +func _TransceiverFirmwareInstall_Transfer_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(TransceiverFirmwareInstallServer).Transfer(&grpc.GenericServerStream[TransferRequest, TransferResponse]{ServerStream: stream}) +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type TransceiverFirmwareInstall_TransferServer = grpc.BidiStreamingServer[TransferRequest, TransferResponse] + +func _TransceiverFirmwareInstall_Install_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(InstallRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(TransceiverFirmwareInstallServer).Install(m, &grpc.GenericServerStream[InstallRequest, InstallResponse]{ServerStream: stream}) +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type TransceiverFirmwareInstall_InstallServer = grpc.ServerStreamingServer[InstallResponse] + +func _TransceiverFirmwareInstall_Verify_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(VerifyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TransceiverFirmwareInstallServer).Verify(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: TransceiverFirmwareInstall_Verify_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TransceiverFirmwareInstallServer).Verify(ctx, req.(*VerifyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _TransceiverFirmwareInstall_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TransceiverFirmwareInstallServer).Delete(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: TransceiverFirmwareInstall_Delete_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TransceiverFirmwareInstallServer).Delete(ctx, req.(*DeleteRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// TransceiverFirmwareInstall_ServiceDesc is the grpc.ServiceDesc for TransceiverFirmwareInstall service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var TransceiverFirmwareInstall_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "gnoi.transceiver_firmware_install.TransceiverFirmwareInstall", + HandlerType: (*TransceiverFirmwareInstallServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Verify", + Handler: _TransceiverFirmwareInstall_Verify_Handler, + }, + { + MethodName: "Delete", + Handler: _TransceiverFirmwareInstall_Delete_Handler, + }, + }, + Streams: []grpc.StreamDesc{ + { + StreamName: "Transfer", + Handler: _TransceiverFirmwareInstall_Transfer_Handler, + ServerStreams: true, + ClientStreams: true, + }, + { + StreamName: "Install", + Handler: _TransceiverFirmwareInstall_Install_Handler, + ServerStreams: true, + }, + }, + Metadata: "github.com/openconfig/gnoi/transceiver_firmware_install/transceiver_firmware_install.proto", +} From 4183a958af8768268336b3169dc46723d3390cc1 Mon Sep 17 00:00:00 2001 From: Eric Breverman Date: Mon, 25 Aug 2025 15:56:52 -0700 Subject: [PATCH 6/9] * Clarify the behavior for InstallError to only close the RPC if it is the last in progress install from the request. * Clarify the behavior when the RPC gets terminated. --- .../transceiver_firmware_install.proto | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/transceiver_firmware_install/transceiver_firmware_install.proto b/transceiver_firmware_install/transceiver_firmware_install.proto index f527f8ed..922197c8 100644 --- a/transceiver_firmware_install/transceiver_firmware_install.proto +++ b/transceiver_firmware_install/transceiver_firmware_install.proto @@ -51,7 +51,9 @@ service TransceiverFirmwareInstall { // package unless force_install is set to true. Otherwise, report success so // this RPC is idempotent. // If the RPC is terminated after the RPC is initiated, the install must - // continue in the background. + // continue in the background for ongoing installs. For example, if there + // is a network communication issue which disrupts the RPC, the in-progress + // installations would continue their progress. rpc Install(InstallRequest) returns (stream InstallResponse); // Verify checks the firmware related details for a transceiver(s). @@ -313,8 +315,10 @@ message InstallOK { } // 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. +// an issue occurs. If there are other in progress installs from the same RPC, +// then no further messages for this transceiver install would be sent. +// However, if there are not other in progress installs from the same RPC then +// the Target MUST immediately close the RPC without a gRPC error. message InstallError { enum Type { // An unspecified error. Must use the detail value to describe the issue. From 6c1d90acd611fff2ac9031899922efa8eb51c66b Mon Sep 17 00:00:00 2001 From: Eric Breverman Date: Wed, 17 Sep 2025 22:36:24 -0700 Subject: [PATCH 7/9] Several changes based on feedback: * Switched to "Activate" instead of "Install" for the RPC and wording thoughout as this better explains what is being done whereas install might have had some confusion because if is more easily mixed with transferring the package. * Clarified the behavior in the top header which didn't describe the activate well. * Added top level definition for Device and Transceiver. This also replaced "Target" with "Device" throughout as Target was getting confused with the transceiver itself. --- .../transceiver_firmware_install.proto | 240 +++++++++--------- 1 file changed, 125 insertions(+), 115 deletions(-) diff --git a/transceiver_firmware_install/transceiver_firmware_install.proto b/transceiver_firmware_install/transceiver_firmware_install.proto index 922197c8..a684871c 100644 --- a/transceiver_firmware_install/transceiver_firmware_install.proto +++ b/transceiver_firmware_install/transceiver_firmware_install.proto @@ -25,36 +25,46 @@ option go_package = "github.com/openconfig/gnoi/transceiver_firmware_install"; option (types.gnoi_version) = "0.1.0"; +// The following definitions are used throughout this service: +// - Device: the host, such as a router, that the transceiver(s) are within. +// - Transceiver: the pluggable optic that is plugged into the Device. +// // The service provides an interface for installation of firmware on -// transceivers in a Target. +// transceivers in a device. // The Client progresses through RPCs in the following order: -// 1) Transfer - Provide the Target with the package which can be used for -// multiple transceivers. -// 2) Install - Copy the package to the requested transceivers and make it -// the active package. -// 3) Verify - Verify that the package is installed on the transceiver(s). -// This is redundant to the Install RPC responding with InstallOK, but +// 1) Transfer - Performs one of two steps: +// a) Provide the device with the package in an inactive bank which can +// be used for multiple transceivers. +// b) Provide the transceiver with the package to an inactive bank. +// 2) Activate - Performs the activation of the package on the transceiver. +// Typically this would activate a package from an inactive bank on the +// transceiver, however, if the transceiver does not support inactive +// banks, then this step could perform the transfer and activate together. +// 3) Verify - Verify that the package is activated on the transceiver(s). +// This is redundant to the Activate RPC responding with ActivateOK, but // is useful for the Client if the RPC is interrupted while in progress -// or if the Client is interested polling for the progress of the install. +// or if the Client is interested polling for the progress of the +// activation. // service TransceiverFirmwareInstall { // Transfer performs a package transfer from either: - // 1) External to Target. - // 2) Target to inactive bank of an Transceiver. + // 1) External to device. + // 2) Device to inactive bank of an Transceiver. rpc Transfer(stream TransferRequest) returns (stream TransferResponse); - // Install initiates the install process on a transceiver(s). - // The install requires that the package was previously transferred to the - // Target using the Transfer RPC. - // If the transceiver is already using the desired version or the install is - // already in progress for the identical version, do not re-install the - // package unless force_install is set to true. Otherwise, report success so + // Activate initiates the activation process on a transceiver(s). + // Activate typically requires that the package was previously transferred + // to the device using the Transfer RPC. However, if the transceiver does not + // support an inactive bank, this RPC can perform the transfer and activate. + // If the transceiver is already using the desired version or the activate is + // already in progress for the identical version, do not re-activate the + // package unless force_activate is set to true. Otherwise, report success so // this RPC is idempotent. - // If the RPC is terminated after the RPC is initiated, the install must - // continue in the background for ongoing installs. For example, if there + // If the RPC is terminated after the RPC is initiated, the activate must + // continue in the background for ongoing activations. For example, if there // is a network communication issue which disrupts the RPC, the in-progress - // installations would continue their progress. - rpc Install(InstallRequest) returns (stream InstallResponse); + // activations would continue their progress. + rpc Activate(ActivateRequest) returns (stream ActivateResponse); // Verify checks the firmware related details for a transceiver(s). // During reboot, gRPC client returns the gRPC status code UNAVAILABLE while @@ -62,7 +72,7 @@ service TransceiverFirmwareInstall { // successful. rpc Verify(VerifyRequest) returns (VerifyResponse); - // Delete removes the package from the Target's storage. + // Delete removes the package from the device's storage. // Deletion for a package should not be allowed if the package was bundled // with the OS image or if a transfer is currently in progress. rpc Delete(DeleteRequest) returns (DeleteResponse); @@ -76,7 +86,7 @@ message TransferRequest { } // The TransferToDeviceRequest is used by the Client to transfer the package to -// the Target. The Target MUST store the package in a generic location that can +// the device. The device MUST store the package in a generic location that can // later be utilized to repeatedly transfer the package to multiple // transceivers. message TransferToDeviceRequest { @@ -94,21 +104,21 @@ message TransferToDeviceStartRequest { // Optionally specify the package size in bytes. // If 1) the value is different than 0 - // and 2) the required space in the Target is larger than the available space - // and 3) the Target is unable to release space for the incoming package, - // then the Target must reply with TransferError->Type->TOO_LARGE. + // and 2) the required space in the device is larger than the available space + // and 3) the device is unable to release space for the incoming package, + // then the device must reply with TransferError->Type->TOO_LARGE. uint64 package_size_bytes = 2; - // Optionally specify the hash of the package which the Target can use to - // verify the integrity of the package. The Target must reply with + // Optionally specify the hash of the package which the device can use to + // verify the integrity of the package. The device must reply with // TransferError->Type->INTEGRITY_FAIL if the hash does not - // match the hash of the package that the Target has stored. + // match the hash of the package that the device has stored. types.HashType hash = 3; } // The TransferEnd message is sent whenever the Client finishes transferring -// the package to the Target. At this point the Target MUST perform a general -// health check to the package. If the Target fails to parse the package +// the package to the device. At this point the device MUST perform a general +// health check to the package. If the device fails to parse the package // it MUST immediately reply with an TransferError->type->PARSE_FAIL. If the // integrity check of the package fails it MUST immediately reply with an // TransferError->type->INTEGRITY_FAIL. @@ -118,11 +128,11 @@ message TransferEnd { // The TransferToTransceiverRequest is used by the Client to transfer the // package ONLY to an inactive bank of the transceiver. -// This would make the package available for the Install RPC, but the package +// This would make the package available for the Activate RPC, but the package // MUST NOT be made active as a result of this transfer. message TransferToTransceiverRequest { // Absolute path to the /components/component list member in the OpenConfig - // model corresponding to the transceiver to perform the install on. + // model corresponding to the transceiver to perform the activation on. // (e.g., /components/component[name=transceiver-1/2]) types.Path transceiver = 1; @@ -135,13 +145,13 @@ message TransferToTransceiverRequest { // and 2) the required space in the transceiver is larger than the available // space // and 3) the transceiver is unable to release space for the incoming package, - // then the Target must reply with TransferError->Type->TOO_LARGE. + // then the device must reply with TransferError->Type->TOO_LARGE. // If the transceiver does not support advertising its available space, then - // the Target must return TransferError->Type->INVALID_ARGUMENT. + // the device must return TransferError->Type->INVALID_ARGUMENT. uint64 package_size_bytes = 3; - // The bank identifier of the transceiver to install the firmware on. - // If the transceiver only contains a single bank, then the Target must reply + // The bank identifier of the transceiver to activate the firmware on. + // If the transceiver only contains a single bank, then the device must reply // with TransferError->Type->INCOMPATIBLE. // If the transceiver only contains an active and standby bank, then this // field may be considered optional as the transfer must be made to the @@ -155,8 +165,8 @@ message TransferToTransceiverRequest { uint32 firmware_bank = 4; } -// The TransferResponse is used by the Target to inform the Client about the -// state of the Transfer RPC. At any stage of the process the Target can reply +// The TransferResponse is used by the device to inform the Client about the +// state of the Transfer RPC. At any stage of the process the device can reply // with an Error message which MUST terminate the stream. message TransferResponse { oneof response { @@ -167,15 +177,15 @@ message TransferResponse { } } -// The TransferReady message tells the Client that the Target is ready to accept -// the package transfer. At this stage the Target MUST have cleared enough space +// The TransferReady message tells the Client that the device is ready to accept +// the package transfer. At this stage the device MUST have cleared enough space // to accept the incoming package if the package size was specified. message TransferReady { } -// The TransferProgress message is sent by the target asynchronously during a -// file transfer. The Target SHOULD not respond to each input block received +// The TransferProgress message is sent by the device 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). message TransferProgress { @@ -183,25 +193,25 @@ message TransferProgress { uint64 bytes_received = 1; } -// The Validated message asserts that the Target was able to parse the package +// The Validated message asserts that the device was able to parse the package // and perform integrity checks to its contents. // This message is sent at the conclusion of a successful RPC. message Validated { } -// The TransferError message MUST be sent by the Target to the Client whenever -// an issue occurs. The Target MUST immediately close the RPC without a +// The TransferError message MUST be sent by the device to the Client whenever +// an issue occurs. The device MUST immediately close the RPC without a // gRPC error. message TransferError { enum Type { // An unspecified error. Must use the detail value to describe the issue. UNSPECIFIED = 0; - // The newly transferred package is not compatible with the Target platform. + // The newly transferred package is not compatible with the device platform. // The detail field MUST contain the detailed error message. INCOMPATIBLE = 1; // The package being transferred is larger than the available size the - // client provisioned. This error may be returned if the target does not + // client provisioned. This error may be returned if the device does not // have enough space for the new package and the existing packages. TOO_LARGE = 2; // Used whenever the system is unable to parse the newly transferred @@ -209,40 +219,40 @@ message TransferError { PARSE_FAIL = 3; // The transferred package fails integrity check. INTEGRITY_FAIL = 4; - // Another Transfer RPC to this Target is already in progress with a + // Another Transfer RPC to this device is already in progress with a // different firmware version. However, if the in progress transfer is for // the identical firmware version, then this error should not be returned // and the Transfer RPC should return success. TRANSFER_IN_PROGRESS = 5; // The transfer request provided an invalid argument. When this error is - // returned, the Target must provide more details in the detail field. + // returned, the device must provide more details in the detail field. INVALID_ARGUMENT = 6; } Type type = 1; string detail = 2; } -message InstallRequest { - repeated InstallSingleRequest install_requests = 1; +message ActivateRequest { + repeated ActivateSingleRequest activate_requests = 1; } -message InstallSingleRequest { +message ActivateSingleRequest { // Absolute path to the /components/component list member in the OpenConfig - // model corresponding to the transceiver to perform the install on. + // model corresponding to the transceiver to perform the activation on. // (e.g., /components/component[name=transceiver-1/2]) types.Path transceiver = 1; - oneof install_from { - InstallFromDeviceRequest install_from_device = 2; - InstallFromTransceiverBankRequest install_from_transceiver_bank = 3; + oneof activate_from { + ActivateFromDeviceRequest activate_from_device = 2; + ActivateFromTransceiverBankRequest activate_from_transceiver_bank = 3; } - // If true, the Target MUST install the package even if the transceiver is + // If true, the device MUST activate the package even if the transceiver is // already running the same package. - bool force_install = 4; + bool force_activate = 4; } -message InstallFromDeviceRequest { +message ActivateFromDeviceRequest { // The package name is a unique identifier for a firmware package. Typically, // the file name of the package (e.g., "aaa.x.y.z.tgz"). string package_name = 1; @@ -252,18 +262,18 @@ message InstallFromDeviceRequest { // and 2) the required space in the transceiver is larger than the available // space // and 3) the transceiver is unable to release space for the incoming package, - // then the Target must reply with TransferError->Type->TOO_LARGE. + // then the device must reply with TransferError->Type->TOO_LARGE. uint64 package_size_bytes = 2; } -message InstallFromTransceiverBankRequest { - // The bank identifier of the transceiver to install the firmware from. +message ActivateFromTransceiverBankRequest { + // The bank identifier of the transceiver to activate the firmware from. // This would be used if the firmware package is already pre-loaded on the // transceiver in an inactive bank. - // If the transceiver only contains a single bank, then the Target must reply - // with InstallError->Type->INCOMPATIBLE. - // If the specified bank is empty, then the Target must reply with - // InstallError->Type->EMPTY_FIRMWARE_BANK. + // If the transceiver only contains a single bank, then the device must reply + // with ActivateError->Type->INCOMPATIBLE. + // If the specified bank is empty, then the device must reply with + // ActivateError->Type->EMPTY_FIRMWARE_BANK. // This is a 0-based index intended to standardize the mapping of different // vendor specific identifers. Mapping examples of transceivers that support // two banks include: @@ -273,53 +283,53 @@ message InstallFromTransceiverBankRequest { uint32 firmware_bank = 4; } -message InstallResponse { - repeated InstallSingleResponse install_responses = 1; +message ActivateResponse { + repeated ActivateSingleResponse activate_responses = 1; } -message InstallSingleResponse { +message ActivateSingleResponse { // Absolute path to the /components/component list member in the OpenConfig - // model corresponding to the transceiver to perform the install on. + // model corresponding to the transceiver to perform the activations on. // (e.g., /components/component[name=transceiver-1/2]) types.Path transceiver = 1; oneof response { - InstallReady install_ready = 2; + ActivateReady activate_ready = 2; TransferProgress transfer_progress = 3; - InstallProgress install_progress = 4; - InstallOK install_ok = 5; - InstallError install_error = 6; + ActivateProgress activate_progress = 4; + ActivateOK activate_ok = 5; + ActivateError activate_error = 6; } } -// The InstallReady message tells the Client that the Target is ready to accept -// the package install. At this stage the Target MUST have cleared enough space -// to accept the incoming package if the package size was specified. -message InstallReady { +// The ActivateReady message tells the Client that the device is ready to accept +// the package activation. At this stage the device MUST have cleared enough +// space to accept the incoming package if the package size was specified. +message ActivateReady { } -// The InstallProgress message signals the Client about the progress of the -// transceiver install process. -message InstallProgress { - // The percentage complete of the install process. - uint32 percentage_installed = 1; +// The ActivateProgress message signals the Client about the progress of the +// transceiver activation process. +message ActivateProgress { + // The percentage complete of the activate process. + uint32 percentage_activated = 1; } -// InstallOK is sent when the package is successfully installed on the +// ActivateOK is sent when the package is successfully activated on the // transceiver. // If the transceiver is already running the requested version in -// InstallRequest, then it replies with InstallOK. -message InstallOK { +// ActivateRequest, then it replies with ActivateOK. +message ActivateOK { } -// The InstallError message MUST be sent by the Target to the Client whenever -// an issue occurs. If there are other in progress installs from the same RPC, -// then no further messages for this transceiver install would be sent. -// However, if there are not other in progress installs from the same RPC then -// the Target MUST immediately close the RPC without a gRPC error. -message InstallError { +// The ActivateError message MUST be sent by the device to the Client whenever +// an issue occurs. If there are other in progress activations from the same +// RPC, then no further messages for this transceiver activation would be sent. +// However, if there are not other in progress activations from the same RPC +// then the device MUST immediately close the RPC without a gRPC error. +message ActivateError { enum Type { // An unspecified error. Must use the detail value to describe the issue. UNSPECIFIED = 0; @@ -338,12 +348,12 @@ message InstallError { PARSE_FAIL = 4; // The transferred package fails integrity check. INTEGRITY_FAIL = 5; - // Another Install RPC to this Target is already in progress with a - // different firmware version. However, if the in progress install is for + // Another Activate RPC to this device is already in progress with a + // different firmware version. However, if the in progress activate is for // the identical firmware version, then this error should not be returned - // and the Install RPC should return success. - INSTALL_IN_PROGRESS = 6; - // A switchover happened during the Install RPC. + // and the Activate RPC should return success. + ACTIVATE_IN_PROGRESS = 6; + // A switchover happened during the Activate RPC. UNEXPECTED_SWITCHOVER = 7; // Used when a specified bank is empty and does not contain a package. EMPTY_FIRMWARE_BANK = 8; @@ -376,7 +386,7 @@ message VerifySingleResponse { // The version currently running. string running_version = 2; - // The version that is being attempted to be installed. + // The version that is being attempted to be activated. string new_version = 3; // The firmware package that is contained within each bank on the transceiver. @@ -385,28 +395,28 @@ message VerifySingleResponse { // True if the new_version would result in a traffic disruption. bool new_version_service_impacting = 5; - // The current state of the latest install process. - InstallStatus install_status = 6; + // The current state of the latest activate process. + ActivateStatus activate_status = 6; - // The current in-progress step of the install. + // The current in-progress step of the activation. string step = 7; // The percentage complete of the current in-progress step. uint32 step_percent_complete = 8; - // The percentage complete of the latest install process. + // The percentage complete of the latest activate process. uint32 total_percent_complete = 9; - // The time when the latest install was initiated. + // The time when the latest activation was initiated. google.protobuf.Timestamp start_time = 10; - // The time when the latest install was completed. + // The time when the latest activation was completed. google.protobuf.Timestamp stop_time = 11; - // The time elapsed since the latest install was initiated. + // The time elapsed since the latest activation was initiated. google.protobuf.Duration duration = 12; - // The failure message if the latest install failed. + // The failure message if the latest activation failed. string failure_message = 13; } @@ -418,17 +428,17 @@ message FirmwareBank { string version = 2; } -enum InstallStatus { +enum ActivateStatus { // An unknown status. - INSTALL_STATUS_UNKNOWN = 0; + ACTIVATE_STATUS_UNKNOWN = 0; // The package is being transferred to the transceiver. - INSTALL_STATUS_TRANSFER_IN_PROGRESS = 1; - // The package is being installed on the transceiver. - INSTALL_STATUS_INSTALL_IN_PROGRESS = 2; - // The installation was successfully completed on the transceiver. - INSTALL_STATUS_COMPLETED = 3; - // The installation failed on the transceiver. - INSTALL_STATUS_FAILED = 4; + ACTIVATE_STATUS_TRANSFER_IN_PROGRESS = 1; + // The package is being activated on the transceiver. + ACTIVATE_STATUS_ACTIVATE_IN_PROGRESS = 2; + // The activation was successfully completed on the transceiver. + ACTIVATE_STATUS_COMPLETED = 3; + // The activation failed on the transceiver. + ACTIVATE_STATUS_FAILED = 4; } message DeleteRequest { From a6126c6a1a97332eceb72e730ce1fbab0ce66902 Mon Sep 17 00:00:00 2001 From: Eric Breverman Date: Wed, 17 Sep 2025 22:41:20 -0700 Subject: [PATCH 8/9] Change package_name to file_name which is a little more generic. --- .../transceiver_firmware_install.proto | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/transceiver_firmware_install/transceiver_firmware_install.proto b/transceiver_firmware_install/transceiver_firmware_install.proto index a684871c..d55a22ea 100644 --- a/transceiver_firmware_install/transceiver_firmware_install.proto +++ b/transceiver_firmware_install/transceiver_firmware_install.proto @@ -98,9 +98,9 @@ message TransferToDeviceRequest { } message TransferToDeviceStartRequest { - // The package name is a unique identifier for a firmware package. Typically, + // The file name is a unique identifier for a firmware package. Typically, // the file name of the package (e.g., "aaa.x.y.z.tgz"). - string package_name = 1; + string file_name = 1; // Optionally specify the package size in bytes. // If 1) the value is different than 0 @@ -136,9 +136,9 @@ message TransferToTransceiverRequest { // (e.g., /components/component[name=transceiver-1/2]) types.Path transceiver = 1; - // The package name is a unique identifier for a firmware package. Typically, + // The file name name is a unique identifier for a firmware package. Typically, // the file name of the package (e.g., "aaa.x.y.z.tgz"). - string package_name = 2; + string file_name = 2; // Optionally specify the package size in bytes. // If 1) the value is different than 0 @@ -253,9 +253,9 @@ message ActivateSingleRequest { } message ActivateFromDeviceRequest { - // The package name is a unique identifier for a firmware package. Typically, + // The file name is a unique identifier for a firmware package. Typically, // the file name of the package (e.g., "aaa.x.y.z.tgz"). - string package_name = 1; + string file_name = 1; // Optionally specify the package size in bytes. // If 1) the value is different than 0 @@ -442,9 +442,9 @@ enum ActivateStatus { } message DeleteRequest { - // The package name is a unique identifier for a firmware package. Typically, + // The file name name is a unique identifier for a firmware package. Typically, // the file name of the package (e.g., "aaa.x.y.z.tgz"). - string package_name = 1; + string file_name = 1; } message DeleteResponse { From c19eec5c52b79ac69b8873ccaada8c272172742e Mon Sep 17 00:00:00 2001 From: Eric Breverman Date: Wed, 17 Sep 2025 22:42:49 -0700 Subject: [PATCH 9/9] In the example, used the OIF naming example for better alignment. --- .../transceiver_firmware_install.proto | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/transceiver_firmware_install/transceiver_firmware_install.proto b/transceiver_firmware_install/transceiver_firmware_install.proto index d55a22ea..775059da 100644 --- a/transceiver_firmware_install/transceiver_firmware_install.proto +++ b/transceiver_firmware_install/transceiver_firmware_install.proto @@ -99,7 +99,7 @@ message TransferToDeviceRequest { message TransferToDeviceStartRequest { // The file name is a unique identifier for a firmware package. Typically, - // the file name of the package (e.g., "aaa.x.y.z.tgz"). + // the file name of the package (e.g., "abcdef.01.02.0304_FwUpdate.tgz"). string file_name = 1; // Optionally specify the package size in bytes. @@ -137,7 +137,7 @@ message TransferToTransceiverRequest { types.Path transceiver = 1; // The file name name is a unique identifier for a firmware package. Typically, - // the file name of the package (e.g., "aaa.x.y.z.tgz"). + // the file name of the package (e.g., "abcdef.01.02.0304_FwUpdate.tgz"). string file_name = 2; // Optionally specify the package size in bytes. @@ -254,7 +254,7 @@ message ActivateSingleRequest { message ActivateFromDeviceRequest { // The file name is a unique identifier for a firmware package. Typically, - // the file name of the package (e.g., "aaa.x.y.z.tgz"). + // the file name of the package (e.g., "abcdef.01.02.0304_FwUpdate.tgz"). string file_name = 1; // Optionally specify the package size in bytes. @@ -443,7 +443,7 @@ enum ActivateStatus { message DeleteRequest { // The file name name is a unique identifier for a firmware package. Typically, - // the file name of the package (e.g., "aaa.x.y.z.tgz"). + // the file name of the package (e.g., "abcdef.01.02.0304_FwUpdate.tgz"). string file_name = 1; }