| // Copyright 2021 The ChromiumOS Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| syntax = "proto3"; |
| |
| package lab; |
| |
| option go_package = "go.chromium.org/chromiumos/infra/proto/go/lab"; |
| |
| import "google/protobuf/timestamp.proto"; |
| import "google/protobuf/field_mask.proto"; |
| |
| import "chromiumos/test/api/dut_attribute.proto"; |
| import "chromiumos/storage_path.proto"; |
| import "chromiumos/longrunning/operations.proto"; |
| import "chromiumos/config/api/mfg_config_id.proto"; |
| |
| import "lab/managed_dut.proto"; |
| |
| // Dut manager is a service the controls access to Dut's that are |
| service DutManagerService { |
| // Give the DutManager control over a Dut. |
| rpc CreateManagedDut(CreateManagedDutRequest) |
| returns (chromiumos.longrunning.Operation) { |
| option (chromiumos.longrunning.operation_info) = { |
| response_type : "CreateManagedDutResponse", |
| metadata_type : "CreateMManagedDutMetadata" |
| }; |
| } |
| rpc DeleteManagedDut(DeleteManagedDutRequest) |
| returns (DeleteManagedDutResponse); |
| // List all the Dut's and their current state. |
| // this is a MVP - future versions will allow filter params to be |
| // passed in so you can list all the failed Dut's etc/ |
| // The state history will not be populated in List requests. |
| rpc ListManagedDuts(ListManagedDutsRequest) returns (ListManagedDutsResponse); |
| // Get details including state history for a given Dut. |
| rpc GetManagedDut(GetManagedDutRequest) returns (GetManagedDutResponse); |
| rpc UpdateManagedDut(UpdateManagedDutRequest) |
| returns (UpdateManagedDutResponse); |
| // Tests request temporary ownership of a Dut to run test on. |
| // test metadata specifies what type of hardware/software is required. |
| // Leases should be given a timeout, ideally the request would indicate the |
| // length of lease required and that lease time would be used. |
| rpc LeaseManagedDut(LeaseManagedDutRequest) |
| returns (chromiumos.longrunning.Operation) { |
| option (chromiumos.longrunning.operation_info) = { |
| response_type : "LeaseManagedDutResponse", |
| metadata_type : "LeaseManagedDutMetadata" |
| }; |
| } |
| // When a test is done with a Dut it should return the lease. |
| rpc ReturnManagedDutLease(ReturnManagedDutLeaseRequest) |
| returns (ReturnManagedDutLeaseResponse); |
| // If a test needs to extend the time it owns the Dut is should renew |
| // the lease. |
| rpc ExtendManagedDutLease(ExtendManagedDutLeaseRequest) |
| returns (ExtendManagedDutLeaseResponse); |
| // Provision a Dut, used in the Moblab "flashstation" user journey. |
| rpc ProvisionManagedDut(ProvisionManagedDutRequest) |
| returns (ProvisionManagedDutResponse); |
| // Request that a Dut be verified, if the verify fails it should be |
| // put into repairs. The call returns when the verification has started |
| // not when complete/repaired. |
| // Use case is when a Dut has been manually repaired this is how a user |
| // can request that the Dut be checked and returned to READY state. |
| rpc VerifyManagedDut(VerifyManagedDutRequest) |
| returns (VerifyManagedDutResponse); |
| } |
| |
| message CreateManagedDutRequest { |
| NetworkIdentifier name = 1; |
| string display_name = 2; |
| } |
| |
| message CreateManagedDutResponse {} |
| |
| message CreateMManagedDutMetadata {} |
| |
| message CreateManagedDutMetadata {} |
| |
| message DeleteManagedDutRequest { NetworkIdentifier name = 1; } |
| |
| message DeleteManagedDutResponse {} |
| |
| message ListManagedDutsRequest { repeated ManagedDut duts = 1; } |
| |
| message ListManagedDutsResponse { repeated ManagedDut duts = 1; } |
| |
| message GetManagedDutRequest { NetworkIdentifier name = 1; } |
| |
| message GetManagedDutResponse { ManagedDut dut = 1; } |
| |
| message UpdateManagedDutRequest { |
| ManagedDut dut = 1; |
| google.protobuf.FieldMask update_mask = 2; |
| } |
| |
| message UpdateManagedDutResponse {} |
| |
| message LeaseManagedDutRequest { |
| chromiumos.test.api.DutAttribute model = 1; |
| string lease_owner = 2; // The task id / test id of the lease holder |
| chromiumos.StoragePath software_path = 3; // provision_service.proto |
| int32 lease_length_secs = 4; // requested time in second |
| chromiumos.test.api.DutAttributeList tag = 5; |
| chromiumos.test.api.DutAttributeList pool = 6; |
| chromiumos.test.api.DutAttributeList peripheral = 7; |
| chromiumos.config.api.MfgConfigId mfg_config_id = 8; |
| int32 min_duts = 9; // Minimum number of Duts requested, for multi dut |
| int32 max_duts = 10; // Maximum number of Duts requested, for multi dut |
| int32 number_associated_duts = |
| 11; // Get a lease on a Dut that is associated with another DUT and not |
| // generally available for lease. |
| } |
| |
| message LeaseManagedDutResponse { |
| repeated NetworkIdentifier name = 1; |
| google.protobuf.Timestamp expiry_time_secs = 2; |
| } |
| |
| message ReturnManagedDutLeaseRequest { |
| NetworkIdentifier name = 1; |
| bool force = 2; // someone other than the leaseholder is expiring the lease. |
| string force_reason = |
| 3; // why a forced lease return not by the owner was necessary. |
| } |
| |
| message ReturnManagedDutLeaseResponse {} |
| |
| message ExtendManagedDutLeaseRequest { |
| NetworkIdentifier name = 1; |
| int32 lease_length_secs = 3; |
| } |
| |
| message ExtendManagedDutLeaseResponse { |
| google.protobuf.Timestamp expiry_time_secs = 2; |
| } |
| |
| message VerifyManagedDutRequest { NetworkIdentifier name = 1; } |
| |
| message VerifyManagedDutResponse {} |
| |
| message ProvisionManagedDutRequest { |
| NetworkIdentifier name = 1; |
| chromiumos.StoragePath build_path = 2; |
| } |
| |
| message ProvisionManagedDutResponse {} |