From cf4d224df239e145a6ec0a5fbc93927c95f1133c Mon Sep 17 00:00:00 2001 From: Saswat Praharaj Date: Mon, 6 May 2024 18:33:46 -0700 Subject: [PATCH 1/4] Vpc endpoint (#8) * Add VPC endpoint listing, also documentation on how to list resource * Update vpc endpoint with servicename , subnetIds and routeTable ids * misc. changes * vmSize addition and summary update. * Subnet Id normalization and other changes * Support regions, changed db to bbolt, and additional changes. --- List-New-Resource.md | 145 ++ aws/aws.go | 1 + aws/listInstance.go | 17 +- aws/listInternetGateway.go | 2 +- aws/listNATGateway.go | 2 +- aws/listRegion.go | 49 + aws/listSubnet.go | 2 +- aws/listVPCEndpoint.go | 111 ++ aws/routers.go | 4 +- azure/accounts.go | 6 +- azure/azure.go | 5 + azure/instances.go | 7 +- azure/regions.go | 55 + config.yaml | 2 +- db/bolt_client.go | 36 +- db/bolt_operations.go | 3 +- db/db.go | 16 + db/db_strategy.go | 60 +- gcp/gcp.go | 5 + gcp/instances.go | 3 + gcp/regions.go | 55 + go.mod | 15 + go.sum | 51 + grpc/go/infrapb/cloud.pb.go | 1644 ++++++++++++-------- grpc/go/infrapb/cloud_grpc.pb.go | 72 + grpc/go/infrapb/types.pb.go | 1258 +++++++++------ grpc/js/access_control_pb.js | 19 - grpc/js/cloud_grpc_web_pb.js | 122 ++ grpc/js/cloud_pb.js | 2472 ++++++++++++++++++++---------- grpc/js/kubernetes_pb.js | 19 - grpc/js/types_pb.js | 1162 ++++++++++++-- grpc/proto/cloud.proto | 28 +- grpc/proto/types.proto | 37 +- grpc/server/server.go | 83 +- grpc/server/translate.go | 81 +- grpc/ts/CloudServiceClientPb.ts | 86 ++ grpc/ts/access_control_pb.d.ts | 19 - grpc/ts/cloud_pb.d.ts | 123 +- grpc/ts/kubernetes_pb.d.ts | 19 - grpc/ts/types_pb.d.ts | 149 +- provider/provider.go | 2 + sync/sync.go | 24 +- types/types.go | 305 ++-- 43 files changed, 5969 insertions(+), 2407 deletions(-) create mode 100644 List-New-Resource.md create mode 100644 aws/listRegion.go create mode 100644 aws/listVPCEndpoint.go create mode 100644 azure/regions.go create mode 100644 gcp/regions.go diff --git a/List-New-Resource.md b/List-New-Resource.md new file mode 100644 index 0000000..280b00b --- /dev/null +++ b/List-New-Resource.md @@ -0,0 +1,145 @@ + +This document serves as a comprehensive guide for adding support for the listing a new cloud resource using awi-infra-guard software. It outlines the required modifications across various components of the application. This example shows how a VPCEndpoint was added, but can be used an example to add any other resource. + + +## Prerequisites + +Familiarity with Go, gRPC, and Protocol Buffers. +Set up with the complete development environment of the awi-infra-guard project. + +## File Modifications + + **1. Proto File** + +Update proto/cloud.proto and proto/types.proto to include definitions and service methods for VPCEndpoints. + +``` +// Update to proto/cloud.proto +rpc ListVPCEndpoints (ListVPCEndpointsRequest) returns (ListVPCEndpointsResponse) {} + +// Update to proto/types.proto +message VPCEndpoint { + string id = 1; + string name = 2; + string provider = 3; + string account_id = 4; + string vpc_id = 5; + string region = 6; + string state = 7; + string type = 8; + string service_name = 9; + repeated int32 route_table_ids = 10; + repeated int32 subnet_ids = 11; + map labels = 12; + google.protobuf.Timestamp created_at = 13; + google.protobuf.Timestamp updated_at = 14; + string last_sync_time = 15; +} +``` +Run `make generate` in the repository root directory to generate language-specific generated protobuf files. + +**2. Server Implementation** + +Implement the gRPC server methods in server/server.go and update server/translate.go to handle data translation. + +``` +// server/server.go +func (s *Server) ListVPCEndpoints(ctx context.Context, in *infrapb.ListVPCEndpointsRequest) (*infrapb.ListVPCEndpointsResponse, error) { + // Add your implementation here +} + +// server/translate.go +func typesVPCEndpointsToGrpc(in []types.VPCEndpoint) []*infrapb.VPCEndpoint { + // Add your translation logic here +} +``` + +**3. Synchronization Logic** + +Define synchronization logic for VPCEndpoints in sync/sync.go. + +``` + +// sync/sync.go +func (s *Syncer) syncVPCEndpoints() { + // Add synchronization logic here +} + +func (s *Syncer) syncVPCEndpoints() { + genericCloudSync[*types.VPCEndpoint](s, types.VPCEndpointType, func(ctx context.Context, cloudProvider provider.CloudProvider, accountID string) ([]types.VPCEndpoint, error) { + + return cloudProvider.ListVPCEndpoints(ctx, &infrapb.ListVPCEndpointsRequest{AccountId: accountID}) + }, s.logger, s.dbClient.ListVPCEndpoints, s.dbClient.PutVPCEndpoint, s.dbClient.DeleteVPCEndpoint) +} +``` + +**4. Type Definitions** + +Add or update VPCEndpoint struct definitions in type/types.go. + +``` +// type/types.go +type VPCEndpoint struct { +} + +func (v *VPCEndpoint) DbId() string { + return CloudID(v.Provider, v.ID) +} + +func (v *VPCEndpoint) SetSyncTime(time string) { + v.LastSyncTime = time +} + +func (v *VPCEndpoint) GetProvider() string { + return v.Provider +} + +``` + +**5. Provider Interface** + +Ensure the CloudProvider interface in provider/provider.go supports the ListVPCEndpoints method. + +``` +// provider/provider.go +ListVPCEndpoints(ctx context.Context, input *infrapb.ListVPCEndpointsRequest) ([]types.VPCEndpoint, error) +``` + +**6. Database Layer** + +Implement methods for VPCEndpoints in db/db.go and db/db_strategy.go. + +``` +// db/db.go +interface Client { + ListVPCEndpoints() ([]*types.VPCEndpoint, error) + PutVPCEndpoint(*types.VPCEndpoint) error + GetVPCEndpoint(string) (*types.VPCEndpoint, error) + DeleteVPCEndpoint(string) error +} + +// db/db_strategy.go +func (p *providerWithDB) ListVPCEndpoints(ctx context.Context, params *infrapb.ListVPCEndpointsRequest) ([]types.VPCEndpoint, error) { + // Implement interaction logic here +} + +``` + +**7. BoltDB Client Implementation** + +Add methods to manage VPCEndpoints in BoltDB within boltdb/bolt_client.go. + +``` +// boltdb/bolt_client.go +func (client *boltClient) PutVPCEndpoint(vpce *types.VPCEndpoint) error { + // Implement put logic here +} +``` + +**8. Cloud Provider Specific Logic** + +Implement cloud-specific logic to list VPCEndpoints in aws/listVPCEndpoint.go, azure.go, gcp.go. + +``` +func (c *Client) ListVPCEndpoints(ctx context.Context, params *infrapb.ListVPCEndpointsRequest) ([]types.VPCEndpoint, error) { } +``` diff --git a/aws/aws.go b/aws/aws.go index d51fbc7..711a4ae 100644 --- a/aws/aws.go +++ b/aws/aws.go @@ -40,6 +40,7 @@ const providerName = "AWS" type Client struct { defaultRegion string defaultAccountID string + accountID string profiles []types.Account clients map[string]awsRegionalClientSet diff --git a/aws/listInstance.go b/aws/listInstance.go index c231fab..c546ead 100644 --- a/aws/listInstance.go +++ b/aws/listInstance.go @@ -22,6 +22,7 @@ import ( "fmt" "sync" + "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/ec2" awstypes "github.com/aws/aws-sdk-go-v2/service/ec2/types" @@ -107,13 +108,15 @@ func convertInstances(defaultAccount, defaultRegion, account, region string, res } inst := reservation.Instances[0] name := getTagName(inst.Tags) + instance := types.Instance{ - ID: convertString(inst.InstanceId), - Name: convertString(name), - PrivateIP: convertString(inst.PrivateIpAddress), - PublicIP: convertString(inst.PublicIpAddress), - SubnetID: convertString(inst.SubnetId), - VPCID: convertString(inst.VpcId), + ID: aws.ToString(inst.InstanceId), + Name: aws.ToString(name), + PrivateIP: aws.ToString(inst.PrivateIpAddress), + PublicIP: aws.ToString(inst.PublicIpAddress), + SubnetID: aws.ToString(inst.SubnetId), + VPCID: aws.ToString(inst.VpcId), + Type: aws.ToString((*string)(&inst.InstanceType)), Labels: convertTags(inst.Tags), State: convertState(inst.State), Region: region, @@ -125,8 +128,6 @@ func convertInstances(defaultAccount, defaultRegion, account, region string, res return instances } - - func convertTags(tags []awstypes.Tag) map[string]string { labels := make(map[string]string, len(tags)) for _, t := range tags { diff --git a/aws/listInternetGateway.go b/aws/listInternetGateway.go index 3dbda6b..8a8d38e 100644 --- a/aws/listInternetGateway.go +++ b/aws/listInternetGateway.go @@ -51,7 +51,7 @@ func (c *Client) ListInternetGateways(ctx context.Context, params *infrapb.ListI ec2RegionalClient := ec2.NewFromConfig(regionalCfg) regIgws, err := c.ListInternetGatewaysInRegion(ec2RegionalClient, *region.RegionName) if err != nil { - c.logger.Errorf("Error listing Internet Gateways in region %s: %v", *region.RegionName, err) + //c.logger.Warnf("Failed to list Internet Gateways in region %s: %v", *region.RegionName, err) continue } diff --git a/aws/listNATGateway.go b/aws/listNATGateway.go index 33daa5d..800f69f 100644 --- a/aws/listNATGateway.go +++ b/aws/listNATGateway.go @@ -51,7 +51,7 @@ func (c *Client) ListNATGateways(ctx context.Context, params *infrapb.ListNATGat ec2RegionalClient := ec2.NewFromConfig(regionalCfg) ngs, err := c.ListNATGatewaysInRegion(ec2RegionalClient, *region.RegionName) if err != nil { - c.logger.Errorf("Error listing NAT Gateways in region %s: %v", *region.RegionName, err) + //c.logger.Errorf("Error listing NAT Gateways in region %s: %v", *region.RegionName, err) continue } diff --git a/aws/listRegion.go b/aws/listRegion.go new file mode 100644 index 0000000..e2695ef --- /dev/null +++ b/aws/listRegion.go @@ -0,0 +1,49 @@ +// Copyright (c) 2024 Cisco Systems, Inc. and its affiliates +// 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. +// +// SPDX-License-Identifier: Apache-2.0 + +package aws + +import ( + "context" + + "github.com/app-net-interface/awi-infra-guard/grpc/go/infrapb" + "github.com/app-net-interface/awi-infra-guard/types" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/ec2" +) + +func (c *Client) ListRegions(ctx context.Context, params *infrapb.ListRegionsRequest) ([]types.Region, error) { + + var regions []types.Region + // List all regions to ensure NAT Gateways from every region are considered + regionResult, err := c.defaultAWSClient.ec2Client.DescribeRegions(ctx, &ec2.DescribeRegionsInput{ + AllRegions: aws.Bool(true), + }) + if err != nil { + c.logger.Errorf("Unable to describe regions, %v", err) + return regions, err + } + for count, region := range regionResult.Regions { + c.logger.Debugf("%d.%s", count, *region.RegionName) + regions = append(regions, types.Region{ + ID: *region.RegionName, + Name: *region.RegionName, + Provider: providerName, + }) + } + return regions, err +} diff --git a/aws/listSubnet.go b/aws/listSubnet.go index fa21dfb..e2592a8 100644 --- a/aws/listSubnet.go +++ b/aws/listSubnet.go @@ -145,7 +145,7 @@ func convertSubnets(defaultAccount, defaultRegion, account, region string, subne CidrBlock: convertString(subnet.CidrBlock), Labels: convertTags(subnet.Tags), Region: region, - AccountID: account, + AccountID: *subnet.OwnerId, Provider: providerName, }) } diff --git a/aws/listVPCEndpoint.go b/aws/listVPCEndpoint.go new file mode 100644 index 0000000..b8c1c3b --- /dev/null +++ b/aws/listVPCEndpoint.go @@ -0,0 +1,111 @@ +// Copyright (c) 2023 Cisco Systems, Inc. and its affiliates +// 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. +// +// SPDX-License-Identifier: Apache-2.0 + +package aws + +import ( + "context" + "strings" + + "github.com/app-net-interface/awi-infra-guard/grpc/go/infrapb" + "github.com/app-net-interface/awi-infra-guard/types" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/service/ec2" +) + +func (c *Client) ListVPCEndpoints(ctx context.Context, params *infrapb.ListVPCEndpointsRequest) ([]types.VPCEndpoint, error) { + + var vpces []types.VPCEndpoint + // List all regions to ensure NAT Gateways from every region are considered + regionResult, err := c.defaultAWSClient.ec2Client.DescribeRegions(ctx, &ec2.DescribeRegionsInput{ + AllRegions: aws.Bool(true), + }) + if err != nil { + c.logger.Errorf("Unable to describe regions, %v", err) + return vpces, err + } + for _, region := range regionResult.Regions { + c.logger.Debugf("Listing VPC Endpoints for AWS account %s and region %s ", params.AccountId, *region.RegionName) + regionalCfg, err := config.LoadDefaultConfig(ctx, + config.WithRegion(*region.RegionName), + ) + if err != nil { + c.logger.Errorf("Unable to load SDK config for region %s, %v", *region.RegionName, err) + continue + } + + ec2RegionalClient := ec2.NewFromConfig(regionalCfg) + regVpces, err := c.ListVPCEndpointsInRegion(ec2RegionalClient, *region.RegionName) + if err != nil { + //c.logger.Warnf("Error listing VPC Endpoints in region %s: %v", *region.RegionName, err) + continue + } + vpces = append(vpces, regVpces...) + } + return vpces, err +} + +func (c *Client) ListVPCEndpointsInRegion(client *ec2.Client, region string) ([]types.VPCEndpoint, error) { + var veps []types.VPCEndpoint + paginator := ec2.NewDescribeVpcEndpointsPaginator(client, &ec2.DescribeVpcEndpointsInput{}) + + for paginator.HasMorePages() { + page, err := paginator.NextPage(context.Background()) + if err != nil { + return nil, err + } + for _, vep := range page.VpcEndpoints { + var name, state, serviceName, subnetIds, routeTableIds string + labels := make(map[string]string) + + // Extracting Name from Tags + for _, tag := range vep.Tags { + if *tag.Key == "Name" || *tag.Key == "name" { + name = *tag.Value + } + labels[*tag.Key] = *tag.Value + } + if vep.ServiceName != nil { + serviceName = *vep.ServiceName + } + + //var subnetIds, routeTableIds []string + subnetIds = strings.Join(vep.SubnetIds, ",") + routeTableIds = strings.Join(vep.RouteTableIds, ",") + + veps = append(veps, types.VPCEndpoint{ + ID: *vep.VpcEndpointId, + Provider: c.GetName(), + AccountId: *vep.OwnerId, + Name: name, + VPCId: *vep.VpcId, + Region: region, + State: state, + Labels: labels, + ServiceName: serviceName, + SubnetIds: subnetIds, + RouteTableIds: routeTableIds, + CreatedAt: vep.CreationTimestamp, + }) + + } + + } + + return veps, nil +} diff --git a/aws/routers.go b/aws/routers.go index c7f90ef..86110ea 100644 --- a/aws/routers.go +++ b/aws/routers.go @@ -30,6 +30,7 @@ import ( func (c *Client) ListRouters(ctx context.Context, params *infrapb.ListRoutersRequest) ([]types.Router, error) { var routers []types.Router + c.accountID = params.AccountId regionResult, err := c.defaultAWSClient.ec2Client.DescribeRegions(ctx, &ec2.DescribeRegionsInput{ AllRegions: aws.Bool(true), }) @@ -44,7 +45,7 @@ func (c *Client) ListRouters(ctx context.Context, params *infrapb.ListRoutersReq ec2RegionalClient := ec2.NewFromConfig(regionalCfg) regionalRouters, err := c.ListRoutersForRegion(ec2RegionalClient, *region.RegionName) if err != nil { - c.logger.Warnf("Error listing Transit Gateways in region %s: %v", *region.RegionName, err) + //c.logger.Warnf("Error listing Transit Gateways in region %s: %v", *region.RegionName, err) continue } routers = append(routers, regionalRouters...) @@ -84,6 +85,7 @@ func (c *Client) ListRoutersForRegion(client *ec2.Client, region string) ([]type Region: region, State: string(tgw.State), Labels: labels, + AccountId: *tgw.OwnerId, CreatedAt: *tgw.CreationTime, }) } diff --git a/azure/accounts.go b/azure/accounts.go index 3ca6f90..0dd38bc 100644 --- a/azure/accounts.go +++ b/azure/accounts.go @@ -19,7 +19,6 @@ package azure import ( "context" - "fmt" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armsubscriptions" "github.com/app-net-interface/awi-infra-guard/types" @@ -29,7 +28,7 @@ import ( func (c *Client) ListAccounts() []types.Account { client, err := armsubscriptions.NewClient(c.cred, nil) if err != nil { - fmt.Printf("failed to create subscriptions client: %w", err) + c.logger.Errorf("failed to create subscriptions client: %w", err) return nil } @@ -39,7 +38,7 @@ func (c *Client) ListAccounts() []types.Account { for pager.More() { resp, err := pager.NextPage(ctx) if err != nil { - fmt.Printf("failed to get the next page of subscriptions: %w", err) + c.logger.Warnf("failed to get the next page of subscriptions: %v", err) return nil } @@ -61,6 +60,5 @@ func (c *Client) ListAccounts() []types.Account { accounts = append(accounts, account) // Append the mapped account to the slice } } - return accounts } diff --git a/azure/azure.go b/azure/azure.go index 5aa6aec..9bdcbc3 100644 --- a/azure/azure.go +++ b/azure/azure.go @@ -95,6 +95,11 @@ func (c *Client) ListInternetGateways(ctx context.Context, params *infrapb.ListI return nil, nil } +func (c *Client) ListVPCEndpoints(ctx context.Context, params *infrapb.ListVPCEndpointsRequest) ([]types.VPCEndpoint, error) { + + return nil, nil +} + /* func getSubscriptionToken(ctx context.Context, subscriptionID string, credential *auth.DefaultAzureCredential) (string, error) { // Create a subscription-specific credential using azidentity diff --git a/azure/instances.go b/azure/instances.go index add2800..bb07fae 100644 --- a/azure/instances.go +++ b/azure/instances.go @@ -93,7 +93,7 @@ func (c *Client) ListInstances(ctx context.Context, input *infrapb.ListInstances publicIP = *pip.Properties.IPAddress } } - var vmStatus string = "unknown" + var vmStatus string = "Unknown" if vm.Properties.InstanceView != nil { for _, status := range vm.Properties.InstanceView.Statuses { if status.Code != nil && *status.Code == "PowerState/running" { @@ -109,17 +109,18 @@ func (c *Client) ListInstances(ctx context.Context, input *infrapb.ListInstances } } } - + c.logger.Debug("Azure vmstatus = ", vmStatus) // Construct and append the instance instance := types.Instance{ ID: *vm.ID, Name: *vm.Name, + Type: string(*vm.Properties.HardwareProfile.VMSize), PublicIP: publicIP, PrivateIP: privateIP, SubnetID: *ipConf.Properties.Subnet.ID, VPCID: vNetID, Labels: convertToStringMap(vm.Tags), - State: vmStatus, + State: string(*vm.Properties.ProvisioningState), Region: *vm.Location, Provider: "Azure", AccountID: input.AccountId, diff --git a/azure/regions.go b/azure/regions.go new file mode 100644 index 0000000..c6127ec --- /dev/null +++ b/azure/regions.go @@ -0,0 +1,55 @@ +// Copyright (c) 2024 Cisco Systems, Inc. and its affiliates +// 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. +// +// SPDX-License-Identifier: Apache-2.0 + +package azure + +import ( + "context" + + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armsubscriptions" + "github.com/app-net-interface/awi-infra-guard/grpc/go/infrapb" + "github.com/app-net-interface/awi-infra-guard/types" +) + +func (c *Client) ListRegions(ctx context.Context, params *infrapb.ListRegionsRequest) ([]types.Region, error) { + var regions []types.Region + client, err := armsubscriptions.NewClient(c.cred, nil) + + if err != nil { + c.logger.Errorf("Failed to create vhubClient: %v", err) + return nil, err + } + pager := client.NewListLocationsPager(params.AccountId, nil) + + for pager.More() { + result, err := pager.NextPage(ctx) + if err != nil { + c.logger.Errorf("Failed to get next page of Virtual Hubs: %v", err) + return nil, err + } + for _, location := range result.Value { + //fmt.Printf("* %s - %s\n", *location.Name, *location.DisplayName) + regions = append(regions, types.Region{ + ID: *location.ID, + Name: *location.DisplayName, + Provider: providerName, + }) + } + } + return regions, err + +} diff --git a/config.yaml b/config.yaml index 6ce67e1..acbb8f2 100644 --- a/config.yaml +++ b/config.yaml @@ -26,4 +26,4 @@ useLocalDB: true # how often sync resources from the cloud, if useLocalDB is true syncWaitTime: "180s" # Logging Level: Possible options are PANIC, FATAL, ERROR, INFO, WARN, DEBUG, TRACE -logLevel: DEBUG +logLevel: INFO diff --git a/db/bolt_client.go b/db/bolt_client.go index dc00240..8740421 100644 --- a/db/bolt_client.go +++ b/db/bolt_client.go @@ -21,7 +21,8 @@ import ( "time" "github.com/app-net-interface/awi-infra-guard/types" - "github.com/boltdb/bolt" + //"github.com/boltdb/bolt" + bolt "go.etcd.io/bbolt" ) type boltClient struct { @@ -86,6 +87,22 @@ func (client *boltClient) DeleteVPC(id string) error { return delete_(client, id, vpcTable) } +func (client *boltClient) PutRegion(region *types.Region) error { + return update(client, region, region.DbId(), regionTable) +} + +func (client *boltClient) GetRegion(id string) (*types.Region, error) { + return get[types.Region](client, id, regionTable) +} + +func (client *boltClient) ListRegions() ([]*types.Region, error) { + return list[types.Region](client, regionTable) +} + +func (client *boltClient) DeleteRegion(id string) error { + return delete_(client, id, regionTable) +} + // Instance func (client *boltClient) PutInstance(instance *types.Instance) error { return update(client, instance, instance.DbId(), instanceTable) @@ -188,6 +205,23 @@ func (client *boltClient) DeleteIGW(id string) error { return delete_(client, id, igwTable) } +// VPCEndpoint +func (client *boltClient) PutVPCEndpoint(vpce *types.VPCEndpoint) error { + return update(client, vpce, vpce.DbId(), vpcEndpointTable) +} + +func (client *boltClient) GetVPCEndpoint(id string) (*types.VPCEndpoint, error) { + return get[types.VPCEndpoint](client, id, vpcEndpointTable) +} + +func (client *boltClient) ListVPCEndpoints() ([]*types.VPCEndpoint, error) { + return list[types.VPCEndpoint](client, vpcEndpointTable) +} + +func (client *boltClient) DeleteVPCEndpoint(id string) error { + return delete_(client, id, vpcEndpointTable) +} + // SecurityGroup func (client *boltClient) PutSecurityGroup(securityGroup *types.SecurityGroup) error { return update(client, securityGroup, securityGroup.DbId(), securityGroupTable) diff --git a/db/bolt_operations.go b/db/bolt_operations.go index 8b17cb6..0f5d3c9 100644 --- a/db/bolt_operations.go +++ b/db/bolt_operations.go @@ -20,7 +20,8 @@ package db import ( "encoding/json" - "github.com/boltdb/bolt" + //"github.com/boltdb/bolt" + bolt "go.etcd.io/bbolt" ) func delete_(client *boltClient, id, tableName string) error { diff --git a/db/db.go b/db/db.go index 2485227..7c67898 100644 --- a/db/db.go +++ b/db/db.go @@ -21,6 +21,7 @@ import "github.com/app-net-interface/awi-infra-guard/types" const ( vpcTable = "vpcs" + regionTable = "regions" instanceTable = "instances" subnetTable = "subnets" clusterTable = "clusters" @@ -35,12 +36,14 @@ const ( ngTable = "nat_gateways" routerTable = "routers" igwTable = "igws" + vpcEndpointTable = "vpcEndpoints" syncTimeTable = "sync_time" ) // Add bolt db table to this list; or it will cause a panic var tableNames = []string{ vpcTable, + regionTable, instanceTable, subnetTable, clusterTable, @@ -53,6 +56,7 @@ var tableNames = []string{ ngTable, routerTable, igwTable, + vpcEndpointTable, aclTable, securityGroupTable, syncTimeTable, @@ -69,6 +73,12 @@ type Client interface { Close() error DropDB() error + // VPC + PutRegion(region *types.Region) error + GetRegion(id string) (*types.Region, error) + ListRegions() ([]*types.Region, error) + DeleteRegion(id string) error + // VPC PutVPC(vpc *types.VPC) error GetVPC(id string) (*types.VPC, error) @@ -117,6 +127,12 @@ type Client interface { GetIGW(id string) (*types.IGW, error) DeleteIGW(id string) error + // VPCEndpoint + ListVPCEndpoints() ([]*types.VPCEndpoint, error) + PutVPCEndpoint(ng *types.VPCEndpoint) error + GetVPCEndpoint(id string) (*types.VPCEndpoint, error) + DeleteVPCEndpoint(id string) error + //Security Group PutSecurityGroup(securityGroup *types.SecurityGroup) error GetSecurityGroup(id string) (*types.SecurityGroup, error) diff --git a/db/db_strategy.go b/db/db_strategy.go index a2c8c45..d2087ea 100644 --- a/db/db_strategy.go +++ b/db/db_strategy.go @@ -96,6 +96,24 @@ func (p *providerWithDB) ListAccounts() []types.Account { return p.realProvider.ListAccounts() } +func (p *providerWithDB) ListRegions(ctx context.Context, params *infrapb.ListRegionsRequest) ([]types.Region, error) { + dbRegions, err := p.dbClient.ListRegions() + if err != nil { + return nil, err + } + var providersRegions []types.Region + for _, region := range dbRegions { + if strings.ToLower(region.Provider) != strings.ToLower(p.realProvider.GetName()) { + continue + } + //if params.GetAccountId() != "" && params.GetAccountId() != vpc.AccountID { + // continue + //} + providersRegions = append(providersRegions, *region) + } + return providersRegions, nil +} + func (p *providerWithDB) ListVPC(ctx context.Context, params *infrapb.ListVPCRequest) ([]types.VPC, error) { dbVPCs, err := p.dbClient.ListVPCs() if err != nil { @@ -315,9 +333,9 @@ func (p *providerWithDB) ListNATGateways(ctx context.Context, params *infrapb.Li // continue // } //} - //if params.GetVpcId() != "" && params.GetVpcId() != natGateway.VpcId { - // continue - //} + if params.GetVpcId() != "" && params.GetVpcId() != natGateway.VpcId { + continue + } providerNATGateways = append(providerNATGateways, *natGateway) } return providerNATGateways, nil @@ -350,12 +368,12 @@ func (p *providerWithDB) ListRouters(ctx context.Context, params *infrapb.ListRo } func (p *providerWithDB) ListInternetGateways(ctx context.Context, params *infrapb.ListInternetGatewaysRequest) ([]types.IGW, error) { - dbRouters, err := p.dbClient.ListInternetGateways() + dbIGWs, err := p.dbClient.ListInternetGateways() if err != nil { return nil, err } - var providerRouters []types.IGW - for _, igw := range dbRouters { + var providerIGWs []types.IGW + for _, igw := range dbIGWs { if strings.ToLower(igw.Provider) != strings.ToLower(p.realProvider.GetName()) { continue } @@ -367,12 +385,38 @@ func (p *providerWithDB) ListInternetGateways(ctx context.Context, params *infra // continue // } //} + //if params.GetVpcId() != "" && params.GetVpcId() != igw.AttachedVpcId { + // continue + //} + providerIGWs = append(providerIGWs, *igw) + } + return providerIGWs, nil +} + +func (p *providerWithDB) ListVPCEndpoints(ctx context.Context, params *infrapb.ListVPCEndpointsRequest) ([]types.VPCEndpoint, error) { + dbvpce, err := p.dbClient.ListVPCEndpoints() + if err != nil { + return nil, err + } + var providerVpces []types.VPCEndpoint + for _, vpce := range dbvpce { + if strings.ToLower(vpce.Provider) != strings.ToLower(p.realProvider.GetName()) { + continue + } + if params.GetAccountId() != "" && params.GetAccountId() != vpce.AccountId { + continue + } + //if params.GetRegion() != "global" { + // if params.GetRegion() != "" && params.GetRegion() != natGateway.Region { + // continue + // } + //} //if params.GetVpcId() != "" && params.GetVpcId() != natGateway.VpcId { // continue //} - providerRouters = append(providerRouters, *igw) + providerVpces = append(providerVpces, *vpce) } - return providerRouters, nil + return providerVpces, nil } func (p *providerWithDB) GetSubnet(ctx context.Context, params *infrapb.GetSubnetRequest) (types.Subnet, error) { diff --git a/gcp/gcp.go b/gcp/gcp.go index 1015203..0aaf532 100644 --- a/gcp/gcp.go +++ b/gcp/gcp.go @@ -155,3 +155,8 @@ func (c *Client) ListInternetGateways(ctx context.Context, params *infrapb.ListI return nil, nil } + +func (c *Client) ListVPCEndpoints(ctx context.Context, params *infrapb.ListVPCEndpointsRequest) ([]types.VPCEndpoint, error) { + + return nil, nil +} diff --git a/gcp/instances.go b/gcp/instances.go index 4c89517..9155f9d 100644 --- a/gcp/instances.go +++ b/gcp/instances.go @@ -537,11 +537,14 @@ func (c *Client) removeNetworkTagFromInstancesByIDs(ctx context.Context, project } func convertInstance(projectID string, networks []types.VPC, subnets []types.Subnet, gcpInstance *computepb.Instance) types.Instance { + machineParts := strings.Split(gcpInstance.GetMachineType(), "/") + newInstance := types.Instance{ ID: strconv.FormatUint(gcpInstance.GetId(), 10), Name: gcpInstance.GetName(), Labels: gcpInstance.GetLabels(), Zone: gcpInstance.GetZone(), + Type: machineParts[len(machineParts)-1], AccountID: projectID, Provider: providerName, State: gcpInstance.GetStatus(), diff --git a/gcp/regions.go b/gcp/regions.go new file mode 100644 index 0000000..397bb86 --- /dev/null +++ b/gcp/regions.go @@ -0,0 +1,55 @@ +// Copyright (c) 2024 Cisco Systems, Inc. and its affiliates +// 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. +// +// SPDX-License-Identifier: Apache-2.0 + +package gcp + +import ( + "context" + "strconv" + + "github.com/app-net-interface/awi-infra-guard/grpc/go/infrapb" + "github.com/app-net-interface/awi-infra-guard/types" + "google.golang.org/api/compute/v1" +) + +func (c *Client) ListRegions(ctx context.Context, params *infrapb.ListRegionsRequest) ([]types.Region, error) { + var regions []types.Region + + // Create a new client + computeService, err := compute.NewService(ctx) + if err != nil { + c.logger.Errorf("Failed initialize compute service", err) + return regions, err + } + + // List all regions in the project + req := computeService.Regions.List(params.AccountId) + if err := req.Pages(ctx, func(page *compute.RegionList) error { + for _, region := range page.Items { + //c.logger.Debugf("* %s - %s\n", region.Name, region.Description) + regions = append(regions, types.Region{ + ID: strconv.FormatUint(region.Id, 10), + Name: region.Name, + Provider: providerName, + }) + } + return err + }); err != nil { + c.logger.Warnf("Failed to list regions: %s", err) + } + return regions, err +} diff --git a/go.mod b/go.mod index bdbe2b9..d377403 100644 --- a/go.mod +++ b/go.mod @@ -37,12 +37,26 @@ require ( k8s.io/client-go v0.29.3 ) +require ( + github.com/Azure/go-autorest v14.2.0+incompatible // indirect + github.com/Azure/go-autorest/autorest v0.11.29 // indirect + github.com/Azure/go-autorest/autorest/adal v0.9.22 // indirect + github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect + github.com/Azure/go-autorest/autorest/to v0.4.0 // indirect + github.com/Azure/go-autorest/autorest/validation v0.3.1 // indirect + github.com/Azure/go-autorest/logger v0.2.1 // indirect + github.com/Azure/go-autorest/tracing v0.6.0 // indirect + github.com/boltdb/boltd v0.0.0-20150220181201-1f04e2021e45 // indirect + github.com/golang-jwt/jwt/v4 v4.5.0 // indirect +) + require ( cloud.google.com/go v0.112.1 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect cloud.google.com/go/container v1.31.0 // indirect cloud.google.com/go/iam v1.1.6 // indirect cloud.google.com/go/longrunning v0.5.5 // indirect + github.com/Azure/azure-sdk-for-go v68.0.0+incompatible github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2 // indirect github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect @@ -100,6 +114,7 @@ require ( github.com/spf13/cast v1.6.0 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/subosito/gotenv v1.6.0 // indirect + go.etcd.io/bbolt v1.3.9 go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect diff --git a/go.sum b/go.sum index b9df295..ac32edf 100644 --- a/go.sum +++ b/go.sum @@ -13,6 +13,8 @@ cloud.google.com/go/longrunning v0.5.5 h1:GOE6pZFdSrTb4KAiKnXsJBtlE6mEyaW44oKyMI cloud.google.com/go/longrunning v0.5.5/go.mod h1:WV2LAxD8/rg5Z1cNW6FJ/ZpX4E4VnDnoTk0yawPBB7s= cloud.google.com/go/resourcemanager v1.9.6 h1:VPfJFbWxrTYQzEXCDbJNpcvSB8eZhTSM0YHH146fIB8= cloud.google.com/go/resourcemanager v1.9.6/go.mod h1:d+XUOGbxg6Aka3lmC4fDiserslux3d15uX08C6a0MBg= +github.com/Azure/azure-sdk-for-go v68.0.0+incompatible h1:fcYLmCpyNYRnvJbPerq7U0hS+6+I79yEDJBqVNcqUzU= +github.com/Azure/azure-sdk-for-go v68.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.0 h1:U/kwEXj0Y+1REAkV4kV8VO1CsEp8tSaQDG/7qC5XuqQ= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.0/go.mod h1:a6xsAQUZg+VsS3TJ05SRp524Hs4pZ/AeFSr5ENf0Yjo= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.2 h1:FDif4R1+UUR+00q6wquyX90K7A8dN+R5E8GEadoP7sU= @@ -31,6 +33,24 @@ github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1. github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.1.1/go.mod h1:c/wcGeGx5FUPbM/JltUYHZcKmigwyVLJlDq+4HdtXaw= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armsubscriptions v1.3.0 h1:wxQx2Bt4xzPIKvW59WQf1tJNx/ZZKPfN+EhPX3Z6CYY= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armsubscriptions v1.3.0/go.mod h1:TpiwjwnW/khS0LKs4vW5UmmT9OWcxaveS8U7+tlknzo= +github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= +github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest/autorest v0.11.29 h1:I4+HL/JDvErx2LjyzaVxllw2lRDB5/BT2Bm4g20iqYw= +github.com/Azure/go-autorest/autorest v0.11.29/go.mod h1:ZtEzC4Jy2JDrZLxvWs8LrBWEBycl1hbT1eknI8MtfAs= +github.com/Azure/go-autorest/autorest/adal v0.9.22 h1:/GblQdIudfEM3AWWZ0mrYJQSd7JS4S/Mbzh6F0ov0Xc= +github.com/Azure/go-autorest/autorest/adal v0.9.22/go.mod h1:XuAbAEUv2Tta//+voMI038TrJBqjKam0me7qR+L8Cmk= +github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw= +github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= +github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= +github.com/Azure/go-autorest/autorest/mocks v0.4.2/go.mod h1:Vy7OitM9Kei0i1Oj+LvyAWMXJHeKH1MVlzFugfVrmyU= +github.com/Azure/go-autorest/autorest/to v0.4.0 h1:oXVqrxakqqV1UZdSazDOPOLvOIz+XA683u8EctwboHk= +github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE= +github.com/Azure/go-autorest/autorest/validation v0.3.1 h1:AgyqjAd94fwNAoTjl/WQXg4VvFeRFpO+UhNyRXqF1ac= +github.com/Azure/go-autorest/autorest/validation v0.3.1/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E= +github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg= +github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= +github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= +github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 h1:XHOnouVk1mxXfQidrMEnLlPk9UMeRtyBTnEFtxkV0kU= github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= @@ -71,6 +91,8 @@ github.com/aws/smithy-go v1.20.2 h1:tbp628ireGtzcHDDmLT/6ADHidqnwgF57XOXZe6tp4Q= github.com/aws/smithy-go v1.20.2/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= github.com/boltdb/bolt v1.3.1 h1:JQmyP4ZBrce+ZQu0dY660FMfatumYDLun9hBCUVIkF4= github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= +github.com/boltdb/boltd v0.0.0-20150220181201-1f04e2021e45 h1:ep0QrTbZFgXa8e4lTAdd/NPY9ZiSP/ysDf26+UNPogo= +github.com/boltdb/boltd v0.0.0-20150220181201-1f04e2021e45/go.mod h1:512MO8jN3usqrPdyZ8YtG6vLsQ8wGV5W9cykDwCy1WI= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= @@ -110,6 +132,10 @@ github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEe github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang-jwt/jwt v3.2.1+incompatible h1:73Z+4BJcrTC+KczS6WvTPvRGOp1WmfEP4Q1lOd9Z/+c= +github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= +github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= +github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk= github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -252,6 +278,9 @@ github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8 github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +go.etcd.io/bbolt v1.3.9 h1:8x7aARPEXiXbHmtUwAIv7eV2fQFHrLLavdiJ3uzJXoI= +go.etcd.io/bbolt v1.3.9/go.mod h1:zaO32+Ti0PK1ivdPtgMESzuzL2VPoIG1PCQNvOdo/dE= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg= @@ -273,6 +302,9 @@ go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTV golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -286,6 +318,7 @@ golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3 h1:XQyxROzUlZH+WIQwySDgnISg golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -297,6 +330,10 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -307,20 +344,33 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q= golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= @@ -334,6 +384,7 @@ golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.20.0 h1:hz/CVckiOxybQvFw6h7b/q80NTr9IUQb4s1IIzW7KNY= golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/grpc/go/infrapb/cloud.pb.go b/grpc/go/infrapb/cloud.pb.go index dc8f204..37e6276 100644 --- a/grpc/go/infrapb/cloud.pb.go +++ b/grpc/go/infrapb/cloud.pb.go @@ -131,6 +131,108 @@ func (x *ListAccountsResponse) GetAccounts() []*Account { return nil } +type ListRegionsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Provider string `protobuf:"bytes,1,opt,name=provider,proto3" json:"provider,omitempty"` + AccountId string `protobuf:"bytes,2,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` +} + +func (x *ListRegionsRequest) Reset() { + *x = ListRegionsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_cloud_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListRegionsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListRegionsRequest) ProtoMessage() {} + +func (x *ListRegionsRequest) ProtoReflect() protoreflect.Message { + mi := &file_cloud_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListRegionsRequest.ProtoReflect.Descriptor instead. +func (*ListRegionsRequest) Descriptor() ([]byte, []int) { + return file_cloud_proto_rawDescGZIP(), []int{2} +} + +func (x *ListRegionsRequest) GetProvider() string { + if x != nil { + return x.Provider + } + return "" +} + +func (x *ListRegionsRequest) GetAccountId() string { + if x != nil { + return x.AccountId + } + return "" +} + +type ListRegionsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Regions []*Region `protobuf:"bytes,1,rep,name=regions,proto3" json:"regions,omitempty"` +} + +func (x *ListRegionsResponse) Reset() { + *x = ListRegionsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_cloud_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListRegionsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListRegionsResponse) ProtoMessage() {} + +func (x *ListRegionsResponse) ProtoReflect() protoreflect.Message { + mi := &file_cloud_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListRegionsResponse.ProtoReflect.Descriptor instead. +func (*ListRegionsResponse) Descriptor() ([]byte, []int) { + return file_cloud_proto_rawDescGZIP(), []int{3} +} + +func (x *ListRegionsResponse) GetRegions() []*Region { + if x != nil { + return x.Regions + } + return nil +} + // ListVPC type ListVPCRequest struct { state protoimpl.MessageState @@ -146,7 +248,7 @@ type ListVPCRequest struct { func (x *ListVPCRequest) Reset() { *x = ListVPCRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[2] + mi := &file_cloud_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -159,7 +261,7 @@ func (x *ListVPCRequest) String() string { func (*ListVPCRequest) ProtoMessage() {} func (x *ListVPCRequest) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[2] + mi := &file_cloud_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -172,7 +274,7 @@ func (x *ListVPCRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListVPCRequest.ProtoReflect.Descriptor instead. func (*ListVPCRequest) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{2} + return file_cloud_proto_rawDescGZIP(), []int{4} } func (x *ListVPCRequest) GetProvider() string { @@ -215,7 +317,7 @@ type ListVPCResponse struct { func (x *ListVPCResponse) Reset() { *x = ListVPCResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[3] + mi := &file_cloud_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -228,7 +330,7 @@ func (x *ListVPCResponse) String() string { func (*ListVPCResponse) ProtoMessage() {} func (x *ListVPCResponse) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[3] + mi := &file_cloud_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -241,7 +343,7 @@ func (x *ListVPCResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListVPCResponse.ProtoReflect.Descriptor instead. func (*ListVPCResponse) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{3} + return file_cloud_proto_rawDescGZIP(), []int{5} } func (x *ListVPCResponse) GetVpcs() []*VPC { @@ -275,7 +377,7 @@ type ListInstancesRequest struct { func (x *ListInstancesRequest) Reset() { *x = ListInstancesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[4] + mi := &file_cloud_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -288,7 +390,7 @@ func (x *ListInstancesRequest) String() string { func (*ListInstancesRequest) ProtoMessage() {} func (x *ListInstancesRequest) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[4] + mi := &file_cloud_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -301,7 +403,7 @@ func (x *ListInstancesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListInstancesRequest.ProtoReflect.Descriptor instead. func (*ListInstancesRequest) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{4} + return file_cloud_proto_rawDescGZIP(), []int{6} } func (x *ListInstancesRequest) GetProvider() string { @@ -358,7 +460,7 @@ type ListInstancesResponse struct { func (x *ListInstancesResponse) Reset() { *x = ListInstancesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[5] + mi := &file_cloud_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -371,7 +473,7 @@ func (x *ListInstancesResponse) String() string { func (*ListInstancesResponse) ProtoMessage() {} func (x *ListInstancesResponse) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[5] + mi := &file_cloud_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -384,7 +486,7 @@ func (x *ListInstancesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListInstancesResponse.ProtoReflect.Descriptor instead. func (*ListInstancesResponse) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{5} + return file_cloud_proto_rawDescGZIP(), []int{7} } func (x *ListInstancesResponse) GetInstances() []*Instance { @@ -415,7 +517,7 @@ type ListACLsRequest struct { func (x *ListACLsRequest) Reset() { *x = ListACLsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[6] + mi := &file_cloud_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -428,7 +530,7 @@ func (x *ListACLsRequest) String() string { func (*ListACLsRequest) ProtoMessage() {} func (x *ListACLsRequest) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[6] + mi := &file_cloud_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -441,7 +543,7 @@ func (x *ListACLsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListACLsRequest.ProtoReflect.Descriptor instead. func (*ListACLsRequest) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{6} + return file_cloud_proto_rawDescGZIP(), []int{8} } func (x *ListACLsRequest) GetProvider() string { @@ -484,7 +586,7 @@ type ListACLsResponse struct { func (x *ListACLsResponse) Reset() { *x = ListACLsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[7] + mi := &file_cloud_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -497,7 +599,7 @@ func (x *ListACLsResponse) String() string { func (*ListACLsResponse) ProtoMessage() {} func (x *ListACLsResponse) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[7] + mi := &file_cloud_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -510,7 +612,7 @@ func (x *ListACLsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListACLsResponse.ProtoReflect.Descriptor instead. func (*ListACLsResponse) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{7} + return file_cloud_proto_rawDescGZIP(), []int{9} } func (x *ListACLsResponse) GetAcls() []*ACL { @@ -541,7 +643,7 @@ type ListSecurityGroupsRequest struct { func (x *ListSecurityGroupsRequest) Reset() { *x = ListSecurityGroupsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[8] + mi := &file_cloud_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -554,7 +656,7 @@ func (x *ListSecurityGroupsRequest) String() string { func (*ListSecurityGroupsRequest) ProtoMessage() {} func (x *ListSecurityGroupsRequest) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[8] + mi := &file_cloud_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -567,7 +669,7 @@ func (x *ListSecurityGroupsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSecurityGroupsRequest.ProtoReflect.Descriptor instead. func (*ListSecurityGroupsRequest) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{8} + return file_cloud_proto_rawDescGZIP(), []int{10} } func (x *ListSecurityGroupsRequest) GetProvider() string { @@ -610,7 +712,7 @@ type ListSecurityGroupsResponse struct { func (x *ListSecurityGroupsResponse) Reset() { *x = ListSecurityGroupsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[9] + mi := &file_cloud_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -623,7 +725,7 @@ func (x *ListSecurityGroupsResponse) String() string { func (*ListSecurityGroupsResponse) ProtoMessage() {} func (x *ListSecurityGroupsResponse) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[9] + mi := &file_cloud_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -636,7 +738,7 @@ func (x *ListSecurityGroupsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSecurityGroupsResponse.ProtoReflect.Descriptor instead. func (*ListSecurityGroupsResponse) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{9} + return file_cloud_proto_rawDescGZIP(), []int{11} } func (x *ListSecurityGroupsResponse) GetSecurityGroups() []*SecurityGroup { @@ -667,7 +769,7 @@ type ListRouteTablesRequest struct { func (x *ListRouteTablesRequest) Reset() { *x = ListRouteTablesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[10] + mi := &file_cloud_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -680,7 +782,7 @@ func (x *ListRouteTablesRequest) String() string { func (*ListRouteTablesRequest) ProtoMessage() {} func (x *ListRouteTablesRequest) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[10] + mi := &file_cloud_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -693,7 +795,7 @@ func (x *ListRouteTablesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRouteTablesRequest.ProtoReflect.Descriptor instead. func (*ListRouteTablesRequest) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{10} + return file_cloud_proto_rawDescGZIP(), []int{12} } func (x *ListRouteTablesRequest) GetProvider() string { @@ -736,7 +838,7 @@ type ListRouteTablesResponse struct { func (x *ListRouteTablesResponse) Reset() { *x = ListRouteTablesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[11] + mi := &file_cloud_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -749,7 +851,7 @@ func (x *ListRouteTablesResponse) String() string { func (*ListRouteTablesResponse) ProtoMessage() {} func (x *ListRouteTablesResponse) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[11] + mi := &file_cloud_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -762,7 +864,7 @@ func (x *ListRouteTablesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRouteTablesResponse.ProtoReflect.Descriptor instead. func (*ListRouteTablesResponse) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{11} + return file_cloud_proto_rawDescGZIP(), []int{13} } func (x *ListRouteTablesResponse) GetRouteTables() []*RouteTable { @@ -793,7 +895,7 @@ type ListNATGatewaysRequest struct { func (x *ListNATGatewaysRequest) Reset() { *x = ListNATGatewaysRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[12] + mi := &file_cloud_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -806,7 +908,7 @@ func (x *ListNATGatewaysRequest) String() string { func (*ListNATGatewaysRequest) ProtoMessage() {} func (x *ListNATGatewaysRequest) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[12] + mi := &file_cloud_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -819,7 +921,7 @@ func (x *ListNATGatewaysRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListNATGatewaysRequest.ProtoReflect.Descriptor instead. func (*ListNATGatewaysRequest) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{12} + return file_cloud_proto_rawDescGZIP(), []int{14} } func (x *ListNATGatewaysRequest) GetProvider() string { @@ -862,7 +964,7 @@ type ListNATGatewaysResponse struct { func (x *ListNATGatewaysResponse) Reset() { *x = ListNATGatewaysResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[13] + mi := &file_cloud_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -875,7 +977,7 @@ func (x *ListNATGatewaysResponse) String() string { func (*ListNATGatewaysResponse) ProtoMessage() {} func (x *ListNATGatewaysResponse) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[13] + mi := &file_cloud_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -888,7 +990,7 @@ func (x *ListNATGatewaysResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListNATGatewaysResponse.ProtoReflect.Descriptor instead. func (*ListNATGatewaysResponse) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{13} + return file_cloud_proto_rawDescGZIP(), []int{15} } func (x *ListNATGatewaysResponse) GetNatGateways() []*NATGateway { @@ -919,7 +1021,7 @@ type ListRoutersRequest struct { func (x *ListRoutersRequest) Reset() { *x = ListRoutersRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[14] + mi := &file_cloud_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -932,7 +1034,7 @@ func (x *ListRoutersRequest) String() string { func (*ListRoutersRequest) ProtoMessage() {} func (x *ListRoutersRequest) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[14] + mi := &file_cloud_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -945,7 +1047,7 @@ func (x *ListRoutersRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRoutersRequest.ProtoReflect.Descriptor instead. func (*ListRoutersRequest) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{14} + return file_cloud_proto_rawDescGZIP(), []int{16} } func (x *ListRoutersRequest) GetProvider() string { @@ -988,7 +1090,7 @@ type ListRoutersResponse struct { func (x *ListRoutersResponse) Reset() { *x = ListRoutersResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[15] + mi := &file_cloud_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1001,7 +1103,7 @@ func (x *ListRoutersResponse) String() string { func (*ListRoutersResponse) ProtoMessage() {} func (x *ListRoutersResponse) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[15] + mi := &file_cloud_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1014,7 +1116,7 @@ func (x *ListRoutersResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRoutersResponse.ProtoReflect.Descriptor instead. func (*ListRoutersResponse) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{15} + return file_cloud_proto_rawDescGZIP(), []int{17} } func (x *ListRoutersResponse) GetRouters() []*Router { @@ -1045,7 +1147,7 @@ type ListInternetGatewaysRequest struct { func (x *ListInternetGatewaysRequest) Reset() { *x = ListInternetGatewaysRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[16] + mi := &file_cloud_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1058,7 +1160,7 @@ func (x *ListInternetGatewaysRequest) String() string { func (*ListInternetGatewaysRequest) ProtoMessage() {} func (x *ListInternetGatewaysRequest) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[16] + mi := &file_cloud_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1071,7 +1173,7 @@ func (x *ListInternetGatewaysRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListInternetGatewaysRequest.ProtoReflect.Descriptor instead. func (*ListInternetGatewaysRequest) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{16} + return file_cloud_proto_rawDescGZIP(), []int{18} } func (x *ListInternetGatewaysRequest) GetProvider() string { @@ -1114,7 +1216,7 @@ type ListInternetGatewaysResponse struct { func (x *ListInternetGatewaysResponse) Reset() { *x = ListInternetGatewaysResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[17] + mi := &file_cloud_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1127,7 +1229,7 @@ func (x *ListInternetGatewaysResponse) String() string { func (*ListInternetGatewaysResponse) ProtoMessage() {} func (x *ListInternetGatewaysResponse) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[17] + mi := &file_cloud_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1140,7 +1242,7 @@ func (x *ListInternetGatewaysResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListInternetGatewaysResponse.ProtoReflect.Descriptor instead. func (*ListInternetGatewaysResponse) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{17} + return file_cloud_proto_rawDescGZIP(), []int{19} } func (x *ListInternetGatewaysResponse) GetIgws() []*IGW { @@ -1157,6 +1259,132 @@ func (x *ListInternetGatewaysResponse) GetLastSyncTime() string { return "" } +type ListVPCEndpointsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Veps []*VPCEndpoint `protobuf:"bytes,1,rep,name=veps,proto3" json:"veps,omitempty"` + LastSyncTime string `protobuf:"bytes,2,opt,name=last_sync_time,json=lastSyncTime,proto3" json:"last_sync_time,omitempty"` +} + +func (x *ListVPCEndpointsResponse) Reset() { + *x = ListVPCEndpointsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_cloud_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListVPCEndpointsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListVPCEndpointsResponse) ProtoMessage() {} + +func (x *ListVPCEndpointsResponse) ProtoReflect() protoreflect.Message { + mi := &file_cloud_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListVPCEndpointsResponse.ProtoReflect.Descriptor instead. +func (*ListVPCEndpointsResponse) Descriptor() ([]byte, []int) { + return file_cloud_proto_rawDescGZIP(), []int{20} +} + +func (x *ListVPCEndpointsResponse) GetVeps() []*VPCEndpoint { + if x != nil { + return x.Veps + } + return nil +} + +func (x *ListVPCEndpointsResponse) GetLastSyncTime() string { + if x != nil { + return x.LastSyncTime + } + return "" +} + +type ListVPCEndpointsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Provider string `protobuf:"bytes,1,opt,name=provider,proto3" json:"provider,omitempty"` + VpcId string `protobuf:"bytes,2,opt,name=vpc_id,json=vpcId,proto3" json:"vpc_id,omitempty"` + Region string `protobuf:"bytes,3,opt,name=region,proto3" json:"region,omitempty"` + AccountId string `protobuf:"bytes,4,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` +} + +func (x *ListVPCEndpointsRequest) Reset() { + *x = ListVPCEndpointsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_cloud_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListVPCEndpointsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListVPCEndpointsRequest) ProtoMessage() {} + +func (x *ListVPCEndpointsRequest) ProtoReflect() protoreflect.Message { + mi := &file_cloud_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListVPCEndpointsRequest.ProtoReflect.Descriptor instead. +func (*ListVPCEndpointsRequest) Descriptor() ([]byte, []int) { + return file_cloud_proto_rawDescGZIP(), []int{21} +} + +func (x *ListVPCEndpointsRequest) GetProvider() string { + if x != nil { + return x.Provider + } + return "" +} + +func (x *ListVPCEndpointsRequest) GetVpcId() string { + if x != nil { + return x.VpcId + } + return "" +} + +func (x *ListVPCEndpointsRequest) GetRegion() string { + if x != nil { + return x.Region + } + return "" +} + +func (x *ListVPCEndpointsRequest) GetAccountId() string { + if x != nil { + return x.AccountId + } + return "" +} + // GetSubnet type GetSubnetRequest struct { state protoimpl.MessageState @@ -1173,7 +1401,7 @@ type GetSubnetRequest struct { func (x *GetSubnetRequest) Reset() { *x = GetSubnetRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[18] + mi := &file_cloud_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1186,7 +1414,7 @@ func (x *GetSubnetRequest) String() string { func (*GetSubnetRequest) ProtoMessage() {} func (x *GetSubnetRequest) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[18] + mi := &file_cloud_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1199,7 +1427,7 @@ func (x *GetSubnetRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSubnetRequest.ProtoReflect.Descriptor instead. func (*GetSubnetRequest) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{18} + return file_cloud_proto_rawDescGZIP(), []int{22} } func (x *GetSubnetRequest) GetProvider() string { @@ -1248,7 +1476,7 @@ type GetSubnetResponse struct { func (x *GetSubnetResponse) Reset() { *x = GetSubnetResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[19] + mi := &file_cloud_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1261,7 +1489,7 @@ func (x *GetSubnetResponse) String() string { func (*GetSubnetResponse) ProtoMessage() {} func (x *GetSubnetResponse) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[19] + mi := &file_cloud_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1274,7 +1502,7 @@ func (x *GetSubnetResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSubnetResponse.ProtoReflect.Descriptor instead. func (*GetSubnetResponse) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{19} + return file_cloud_proto_rawDescGZIP(), []int{23} } func (x *GetSubnetResponse) GetSubnet() *Subnet { @@ -1302,7 +1530,7 @@ type ListSubnetsRequest struct { func (x *ListSubnetsRequest) Reset() { *x = ListSubnetsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[20] + mi := &file_cloud_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1315,7 +1543,7 @@ func (x *ListSubnetsRequest) String() string { func (*ListSubnetsRequest) ProtoMessage() {} func (x *ListSubnetsRequest) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[20] + mi := &file_cloud_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1328,7 +1556,7 @@ func (x *ListSubnetsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSubnetsRequest.ProtoReflect.Descriptor instead. func (*ListSubnetsRequest) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{20} + return file_cloud_proto_rawDescGZIP(), []int{24} } func (x *ListSubnetsRequest) GetProvider() string { @@ -1392,7 +1620,7 @@ type ListSubnetsResponse struct { func (x *ListSubnetsResponse) Reset() { *x = ListSubnetsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[21] + mi := &file_cloud_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1405,7 +1633,7 @@ func (x *ListSubnetsResponse) String() string { func (*ListSubnetsResponse) ProtoMessage() {} func (x *ListSubnetsResponse) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[21] + mi := &file_cloud_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1418,7 +1646,7 @@ func (x *ListSubnetsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSubnetsResponse.ProtoReflect.Descriptor instead. func (*ListSubnetsResponse) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{21} + return file_cloud_proto_rawDescGZIP(), []int{25} } func (x *ListSubnetsResponse) GetSubnets() []*Subnet { @@ -1450,7 +1678,7 @@ type GetVPCIDForCIDRRequest struct { func (x *GetVPCIDForCIDRRequest) Reset() { *x = GetVPCIDForCIDRRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[22] + mi := &file_cloud_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1463,7 +1691,7 @@ func (x *GetVPCIDForCIDRRequest) String() string { func (*GetVPCIDForCIDRRequest) ProtoMessage() {} func (x *GetVPCIDForCIDRRequest) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[22] + mi := &file_cloud_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1476,7 +1704,7 @@ func (x *GetVPCIDForCIDRRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetVPCIDForCIDRRequest.ProtoReflect.Descriptor instead. func (*GetVPCIDForCIDRRequest) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{22} + return file_cloud_proto_rawDescGZIP(), []int{26} } func (x *GetVPCIDForCIDRRequest) GetProvider() string { @@ -1518,7 +1746,7 @@ type GetVPCIDForCIDRResponse struct { func (x *GetVPCIDForCIDRResponse) Reset() { *x = GetVPCIDForCIDRResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[23] + mi := &file_cloud_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1531,7 +1759,7 @@ func (x *GetVPCIDForCIDRResponse) String() string { func (*GetVPCIDForCIDRResponse) ProtoMessage() {} func (x *GetVPCIDForCIDRResponse) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[23] + mi := &file_cloud_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1544,7 +1772,7 @@ func (x *GetVPCIDForCIDRResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetVPCIDForCIDRResponse.ProtoReflect.Descriptor instead. func (*GetVPCIDForCIDRResponse) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{23} + return file_cloud_proto_rawDescGZIP(), []int{27} } func (x *GetVPCIDForCIDRResponse) GetVpcId() string { @@ -1569,7 +1797,7 @@ type GetCIDRsForLabelsRequest struct { func (x *GetCIDRsForLabelsRequest) Reset() { *x = GetCIDRsForLabelsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[24] + mi := &file_cloud_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1582,7 +1810,7 @@ func (x *GetCIDRsForLabelsRequest) String() string { func (*GetCIDRsForLabelsRequest) ProtoMessage() {} func (x *GetCIDRsForLabelsRequest) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[24] + mi := &file_cloud_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1595,7 +1823,7 @@ func (x *GetCIDRsForLabelsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCIDRsForLabelsRequest.ProtoReflect.Descriptor instead. func (*GetCIDRsForLabelsRequest) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{24} + return file_cloud_proto_rawDescGZIP(), []int{28} } func (x *GetCIDRsForLabelsRequest) GetProvider() string { @@ -1637,7 +1865,7 @@ type GetCIDRsForLabelsResponse struct { func (x *GetCIDRsForLabelsResponse) Reset() { *x = GetCIDRsForLabelsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[25] + mi := &file_cloud_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1650,7 +1878,7 @@ func (x *GetCIDRsForLabelsResponse) String() string { func (*GetCIDRsForLabelsResponse) ProtoMessage() {} func (x *GetCIDRsForLabelsResponse) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[25] + mi := &file_cloud_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1663,7 +1891,7 @@ func (x *GetCIDRsForLabelsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCIDRsForLabelsResponse.ProtoReflect.Descriptor instead. func (*GetCIDRsForLabelsResponse) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{25} + return file_cloud_proto_rawDescGZIP(), []int{29} } func (x *GetCIDRsForLabelsResponse) GetCidrs() []string { @@ -1688,7 +1916,7 @@ type GetIPsForLabelsRequest struct { func (x *GetIPsForLabelsRequest) Reset() { *x = GetIPsForLabelsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[26] + mi := &file_cloud_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1701,7 +1929,7 @@ func (x *GetIPsForLabelsRequest) String() string { func (*GetIPsForLabelsRequest) ProtoMessage() {} func (x *GetIPsForLabelsRequest) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[26] + mi := &file_cloud_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1714,7 +1942,7 @@ func (x *GetIPsForLabelsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetIPsForLabelsRequest.ProtoReflect.Descriptor instead. func (*GetIPsForLabelsRequest) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{26} + return file_cloud_proto_rawDescGZIP(), []int{30} } func (x *GetIPsForLabelsRequest) GetProvider() string { @@ -1756,7 +1984,7 @@ type GetIPsForLabelsResponse struct { func (x *GetIPsForLabelsResponse) Reset() { *x = GetIPsForLabelsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[27] + mi := &file_cloud_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1769,7 +1997,7 @@ func (x *GetIPsForLabelsResponse) String() string { func (*GetIPsForLabelsResponse) ProtoMessage() {} func (x *GetIPsForLabelsResponse) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[27] + mi := &file_cloud_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1782,7 +2010,7 @@ func (x *GetIPsForLabelsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetIPsForLabelsResponse.ProtoReflect.Descriptor instead. func (*GetIPsForLabelsResponse) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{27} + return file_cloud_proto_rawDescGZIP(), []int{31} } func (x *GetIPsForLabelsResponse) GetIps() []string { @@ -1808,7 +2036,7 @@ type GetInstancesForLabelsRequest struct { func (x *GetInstancesForLabelsRequest) Reset() { *x = GetInstancesForLabelsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[28] + mi := &file_cloud_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1821,7 +2049,7 @@ func (x *GetInstancesForLabelsRequest) String() string { func (*GetInstancesForLabelsRequest) ProtoMessage() {} func (x *GetInstancesForLabelsRequest) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[28] + mi := &file_cloud_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1834,7 +2062,7 @@ func (x *GetInstancesForLabelsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetInstancesForLabelsRequest.ProtoReflect.Descriptor instead. func (*GetInstancesForLabelsRequest) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{28} + return file_cloud_proto_rawDescGZIP(), []int{32} } func (x *GetInstancesForLabelsRequest) GetProvider() string { @@ -1883,7 +2111,7 @@ type GetInstancesForLabelsResponse struct { func (x *GetInstancesForLabelsResponse) Reset() { *x = GetInstancesForLabelsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[29] + mi := &file_cloud_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1896,7 +2124,7 @@ func (x *GetInstancesForLabelsResponse) String() string { func (*GetInstancesForLabelsResponse) ProtoMessage() {} func (x *GetInstancesForLabelsResponse) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[29] + mi := &file_cloud_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1909,7 +2137,7 @@ func (x *GetInstancesForLabelsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetInstancesForLabelsResponse.ProtoReflect.Descriptor instead. func (*GetInstancesForLabelsResponse) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{29} + return file_cloud_proto_rawDescGZIP(), []int{33} } func (x *GetInstancesForLabelsResponse) GetInstances() []*Instance { @@ -1935,7 +2163,7 @@ type GetVPCIDWithTagRequest struct { func (x *GetVPCIDWithTagRequest) Reset() { *x = GetVPCIDWithTagRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[30] + mi := &file_cloud_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1948,7 +2176,7 @@ func (x *GetVPCIDWithTagRequest) String() string { func (*GetVPCIDWithTagRequest) ProtoMessage() {} func (x *GetVPCIDWithTagRequest) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[30] + mi := &file_cloud_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1961,7 +2189,7 @@ func (x *GetVPCIDWithTagRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetVPCIDWithTagRequest.ProtoReflect.Descriptor instead. func (*GetVPCIDWithTagRequest) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{30} + return file_cloud_proto_rawDescGZIP(), []int{34} } func (x *GetVPCIDWithTagRequest) GetProvider() string { @@ -2010,7 +2238,7 @@ type GetVPCIDWithTagResponse struct { func (x *GetVPCIDWithTagResponse) Reset() { *x = GetVPCIDWithTagResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[31] + mi := &file_cloud_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2023,7 +2251,7 @@ func (x *GetVPCIDWithTagResponse) String() string { func (*GetVPCIDWithTagResponse) ProtoMessage() {} func (x *GetVPCIDWithTagResponse) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[31] + mi := &file_cloud_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2036,7 +2264,7 @@ func (x *GetVPCIDWithTagResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetVPCIDWithTagResponse.ProtoReflect.Descriptor instead. func (*GetVPCIDWithTagResponse) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{31} + return file_cloud_proto_rawDescGZIP(), []int{35} } func (x *GetVPCIDWithTagResponse) GetVpcId() string { @@ -2061,7 +2289,7 @@ type ListCloudClustersRequest struct { func (x *ListCloudClustersRequest) Reset() { *x = ListCloudClustersRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[32] + mi := &file_cloud_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2074,7 +2302,7 @@ func (x *ListCloudClustersRequest) String() string { func (*ListCloudClustersRequest) ProtoMessage() {} func (x *ListCloudClustersRequest) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[32] + mi := &file_cloud_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2087,7 +2315,7 @@ func (x *ListCloudClustersRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListCloudClustersRequest.ProtoReflect.Descriptor instead. func (*ListCloudClustersRequest) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{32} + return file_cloud_proto_rawDescGZIP(), []int{36} } func (x *ListCloudClustersRequest) GetProvider() string { @@ -2137,7 +2365,7 @@ type ListCloudClustersResponse struct { func (x *ListCloudClustersResponse) Reset() { *x = ListCloudClustersResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[33] + mi := &file_cloud_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2150,7 +2378,7 @@ func (x *ListCloudClustersResponse) String() string { func (*ListCloudClustersResponse) ProtoMessage() {} func (x *ListCloudClustersResponse) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[33] + mi := &file_cloud_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2163,7 +2391,7 @@ func (x *ListCloudClustersResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListCloudClustersResponse.ProtoReflect.Descriptor instead. func (*ListCloudClustersResponse) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{33} + return file_cloud_proto_rawDescGZIP(), []int{37} } func (x *ListCloudClustersResponse) GetClusters() []*Cluster { @@ -2191,7 +2419,7 @@ type SummaryRequest struct { func (x *SummaryRequest) Reset() { *x = SummaryRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[34] + mi := &file_cloud_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2204,7 +2432,7 @@ func (x *SummaryRequest) String() string { func (*SummaryRequest) ProtoMessage() {} func (x *SummaryRequest) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[34] + mi := &file_cloud_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2217,7 +2445,7 @@ func (x *SummaryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SummaryRequest.ProtoReflect.Descriptor instead. func (*SummaryRequest) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{34} + return file_cloud_proto_rawDescGZIP(), []int{38} } func (x *SummaryRequest) GetProvider() string { @@ -2246,12 +2474,13 @@ type Counters struct { NatGateways int32 `protobuf:"varint,12,opt,name=nat_gateways,json=natGateways,proto3" json:"nat_gateways,omitempty"` Routers int32 `protobuf:"varint,13,opt,name=routers,proto3" json:"routers,omitempty"` Igws int32 `protobuf:"varint,14,opt,name=igws,proto3" json:"igws,omitempty"` + VpcEndpoints int32 `protobuf:"varint,15,opt,name=vpc_endpoints,json=vpcEndpoints,proto3" json:"vpc_endpoints,omitempty"` } func (x *Counters) Reset() { *x = Counters{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[35] + mi := &file_cloud_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2264,7 +2493,7 @@ func (x *Counters) String() string { func (*Counters) ProtoMessage() {} func (x *Counters) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[35] + mi := &file_cloud_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2277,7 +2506,7 @@ func (x *Counters) ProtoReflect() protoreflect.Message { // Deprecated: Use Counters.ProtoReflect.Descriptor instead. func (*Counters) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{35} + return file_cloud_proto_rawDescGZIP(), []int{39} } func (x *Counters) GetAccounts() int32 { @@ -2378,6 +2607,13 @@ func (x *Counters) GetIgws() int32 { return 0 } +func (x *Counters) GetVpcEndpoints() int32 { + if x != nil { + return x.VpcEndpoints + } + return 0 +} + type StatusSummary struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2385,12 +2621,13 @@ type StatusSummary struct { VmStatus map[string]int32 `protobuf:"bytes,1,rep,name=vm_status,json=vmStatus,proto3" json:"vm_status,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` PodStatus map[string]int32 `protobuf:"bytes,2,rep,name=pod_status,json=podStatus,proto3" json:"pod_status,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + VmTypes map[string]int32 `protobuf:"bytes,3,rep,name=vm_types,json=vmTypes,proto3" json:"vm_types,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` } func (x *StatusSummary) Reset() { *x = StatusSummary{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[36] + mi := &file_cloud_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2403,7 +2640,7 @@ func (x *StatusSummary) String() string { func (*StatusSummary) ProtoMessage() {} func (x *StatusSummary) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[36] + mi := &file_cloud_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2416,7 +2653,7 @@ func (x *StatusSummary) ProtoReflect() protoreflect.Message { // Deprecated: Use StatusSummary.ProtoReflect.Descriptor instead. func (*StatusSummary) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{36} + return file_cloud_proto_rawDescGZIP(), []int{40} } func (x *StatusSummary) GetVmStatus() map[string]int32 { @@ -2433,6 +2670,13 @@ func (x *StatusSummary) GetPodStatus() map[string]int32 { return nil } +func (x *StatusSummary) GetVmTypes() map[string]int32 { + if x != nil { + return x.VmTypes + } + return nil +} + type SummaryResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2445,7 +2689,7 @@ type SummaryResponse struct { func (x *SummaryResponse) Reset() { *x = SummaryResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cloud_proto_msgTypes[37] + mi := &file_cloud_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2458,7 +2702,7 @@ func (x *SummaryResponse) String() string { func (*SummaryResponse) ProtoMessage() {} func (x *SummaryResponse) ProtoReflect() protoreflect.Message { - mi := &file_cloud_proto_msgTypes[37] + mi := &file_cloud_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2471,7 +2715,7 @@ func (x *SummaryResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SummaryResponse.ProtoReflect.Descriptor instead. func (*SummaryResponse) Descriptor() ([]byte, []int) { - return file_cloud_proto_rawDescGZIP(), []int{37} + return file_cloud_proto_rawDescGZIP(), []int{41} } func (x *SummaryResponse) GetCount() *Counters { @@ -2500,195 +2744,237 @@ var file_cloud_proto_rawDesc = []byte{ 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x08, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0xd9, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, - 0x74, 0x56, 0x50, 0x43, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, - 0x39, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x21, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x50, 0x43, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x57, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x50, 0x43, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x04, 0x76, 0x70, 0x63, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x56, 0x50, - 0x43, 0x52, 0x04, 0x76, 0x70, 0x63, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, - 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x90, 0x02, - 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x7a, 0x6f, 0x6e, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x3f, 0x0a, - 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, - 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x16, - 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x49, 0x64, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x6c, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x09, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x69, - 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, - 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x7b, - 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x43, 0x4c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x15, 0x0a, - 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x70, 0x63, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x58, 0x0a, 0x10, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x43, 0x4c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x1e, 0x0a, 0x04, 0x61, 0x63, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, - 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x41, 0x43, 0x4c, 0x52, 0x04, 0x61, 0x63, 0x6c, 0x73, 0x12, - 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, - 0x63, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, - 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, - 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1d, - 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x81, 0x01, - 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0f, - 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x53, 0x65, - 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0e, 0x73, 0x65, 0x63, - 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6c, - 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, - 0x65, 0x22, 0x82, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0x4f, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x3e, 0x0a, 0x13, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x27, 0x0a, 0x07, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0d, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, + 0x52, 0x07, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xd9, 0x01, 0x0a, 0x0e, 0x4c, 0x69, + 0x73, 0x74, 0x56, 0x50, 0x43, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, - 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, + 0x12, 0x39, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x50, 0x43, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x57, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x50, 0x43, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x04, 0x76, 0x70, 0x63, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x56, + 0x50, 0x43, 0x52, 0x04, 0x76, 0x70, 0x63, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, + 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x90, + 0x02, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x7a, 0x6f, + 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x3f, + 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, + 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, + 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x75, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x34, 0x0a, 0x0c, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x0b, 0x72, 0x6f, 0x75, 0x74, - 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, - 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x82, 0x01, - 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x41, 0x54, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, - 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, - 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x49, 0x64, 0x22, 0x75, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x41, 0x54, 0x47, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, - 0x0c, 0x6e, 0x61, 0x74, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4e, 0x41, 0x54, 0x47, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x0b, 0x6e, 0x61, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, - 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x7e, 0x0a, 0x12, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x15, 0x0a, 0x06, 0x76, - 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, - 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x64, 0x0a, 0x13, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x27, 0x0a, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x0d, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, - 0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, - 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x22, - 0x87, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, - 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x15, 0x0a, 0x06, 0x76, - 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, - 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x64, 0x0a, 0x1c, 0x4c, 0x69, 0x73, - 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x04, 0x69, 0x67, 0x77, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, - 0x49, 0x47, 0x57, 0x52, 0x04, 0x69, 0x67, 0x77, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, + 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x22, 0x6c, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x09, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x09, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x22, - 0x8c, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x52, 0x65, 0x71, + 0x7b, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x43, 0x4c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x15, + 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, + 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x58, 0x0a, 0x10, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x43, 0x4c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x1e, 0x0a, 0x04, 0x61, 0x63, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, + 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x41, 0x43, 0x4c, 0x52, 0x04, 0x61, 0x63, 0x6c, 0x73, + 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, + 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, - 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, - 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x3a, - 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x53, 0x75, 0x62, 0x6e, - 0x65, 0x74, 0x52, 0x06, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x22, 0xa0, 0x02, 0x0a, 0x12, 0x4c, - 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x15, 0x0a, - 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x70, 0x63, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x69, 0x64, 0x72, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x69, 0x64, 0x72, 0x12, 0x3d, 0x0a, 0x06, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, - 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, - 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, - 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x49, 0x64, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x64, 0x0a, - 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x53, 0x75, - 0x62, 0x6e, 0x65, 0x74, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x12, 0x24, 0x0a, - 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, - 0x69, 0x6d, 0x65, 0x22, 0x7f, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x56, 0x50, 0x43, 0x49, 0x44, 0x46, - 0x6f, 0x72, 0x43, 0x49, 0x44, 0x52, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, + 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, + 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x81, + 0x01, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, + 0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0e, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x24, 0x0a, 0x0e, + 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, + 0x6d, 0x65, 0x22, 0x82, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x69, 0x64, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x69, 0x64, 0x72, 0x12, 0x16, 0x0a, - 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, - 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x49, 0x64, 0x22, 0x30, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x56, 0x50, 0x43, 0x49, 0x44, - 0x46, 0x6f, 0x72, 0x43, 0x49, 0x44, 0x52, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x22, 0xed, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, 0x49, - 0x44, 0x52, 0x73, 0x46, 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, - 0x43, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2b, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x49, 0x44, 0x52, 0x73, + 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, + 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x75, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x34, 0x0a, 0x0c, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, + 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x0b, 0x72, 0x6f, 0x75, + 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, + 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x82, + 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x41, 0x54, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, + 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, + 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x49, 0x64, 0x22, 0x75, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x41, 0x54, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, + 0x0a, 0x0c, 0x6e, 0x61, 0x74, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4e, 0x41, 0x54, + 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x0b, 0x6e, 0x61, 0x74, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, + 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, + 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x7e, 0x0a, 0x12, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x15, 0x0a, 0x06, + 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, + 0x63, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x64, 0x0a, 0x13, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x27, 0x0a, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, + 0x72, 0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, + 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, + 0x22, 0x87, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, + 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x15, 0x0a, 0x06, + 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, + 0x63, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x64, 0x0a, 0x1c, 0x4c, 0x69, + 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x04, 0x69, 0x67, + 0x77, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, + 0x2e, 0x49, 0x47, 0x57, 0x52, 0x04, 0x69, 0x67, 0x77, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, + 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, + 0x22, 0x68, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x50, 0x43, 0x45, 0x6e, 0x64, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x04, + 0x76, 0x65, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x69, 0x6e, 0x66, + 0x72, 0x61, 0x2e, 0x56, 0x50, 0x43, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x04, + 0x76, 0x65, 0x70, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, + 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, + 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x83, 0x01, 0x0a, 0x17, 0x4c, + 0x69, 0x73, 0x74, 0x56, 0x50, 0x43, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, + 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, + 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, + 0x22, 0x8c, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, + 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, + 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, + 0x3a, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x53, 0x75, 0x62, + 0x6e, 0x65, 0x74, 0x52, 0x06, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x22, 0xa0, 0x02, 0x0a, 0x12, + 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x15, + 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x69, 0x64, + 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x69, 0x64, 0x72, 0x12, 0x3d, 0x0a, + 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, + 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, + 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, + 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x49, 0x64, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x64, + 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x53, + 0x75, 0x62, 0x6e, 0x65, 0x74, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x12, 0x24, + 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, + 0x54, 0x69, 0x6d, 0x65, 0x22, 0x7f, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x56, 0x50, 0x43, 0x49, 0x44, + 0x46, 0x6f, 0x72, 0x43, 0x49, 0x44, 0x52, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x69, + 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x69, 0x64, 0x72, 0x12, 0x16, + 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x30, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x56, 0x50, 0x43, 0x49, + 0x44, 0x46, 0x6f, 0x72, 0x43, 0x49, 0x44, 0x52, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x22, 0xed, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, + 0x49, 0x44, 0x52, 0x73, 0x46, 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x12, 0x43, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2b, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x49, 0x44, 0x52, + 0x73, 0x46, 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, + 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x1a, 0x39, 0x0a, 0x0b, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x31, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x43, 0x49, + 0x44, 0x52, 0x73, 0x46, 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x69, 0x64, 0x72, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x69, 0x64, 0x72, 0x73, 0x22, 0xe9, 0x01, 0x0a, 0x16, 0x47, + 0x65, 0x74, 0x49, 0x50, 0x73, 0x46, 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x12, 0x41, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x50, 0x73, 0x46, 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x03, @@ -2698,127 +2984,119 @@ var file_cloud_proto_rawDesc = []byte{ 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x31, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x43, 0x49, 0x44, - 0x52, 0x73, 0x46, 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x69, 0x64, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x05, 0x63, 0x69, 0x64, 0x72, 0x73, 0x22, 0xe9, 0x01, 0x0a, 0x16, 0x47, 0x65, - 0x74, 0x49, 0x50, 0x73, 0x46, 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x2b, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x49, 0x50, 0x73, + 0x46, 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, + 0x69, 0x70, 0x73, 0x22, 0x8c, 0x02, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x73, 0x46, 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x12, 0x41, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x50, 0x73, 0x46, - 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x2b, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x49, 0x50, 0x73, 0x46, - 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x10, 0x0a, 0x03, 0x69, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, - 0x70, 0x73, 0x22, 0x8c, 0x02, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x73, 0x46, 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, - 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, 0x47, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x47, - 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x46, 0x6f, 0x72, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, - 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0x4e, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x73, 0x46, 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x73, 0x22, 0x93, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x56, 0x50, 0x43, 0x49, 0x44, 0x57, 0x69, - 0x74, 0x68, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, - 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, 0x47, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, + 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x46, 0x6f, 0x72, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x30, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x56, 0x50, - 0x43, 0x49, 0x44, 0x57, 0x69, 0x74, 0x68, 0x54, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x22, 0x84, 0x02, 0x0a, 0x18, 0x4c, 0x69, - 0x73, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, - 0x63, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, - 0x64, 0x12, 0x43, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2b, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, - 0x6f, 0x75, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x49, 0x64, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x6d, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, - 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x0e, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, - 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, - 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x22, - 0x2c, 0x0a, 0x0e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0x8d, 0x03, - 0x0a, 0x08, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x70, 0x63, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x03, 0x76, 0x70, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6e, - 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6e, 0x65, - 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, - 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, - 0x6f, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, - 0x1e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, - 0x12, 0x0a, 0x04, 0x61, 0x63, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x61, - 0x63, 0x6c, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x73, 0x65, - 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x21, 0x0a, 0x0c, - 0x6e, 0x61, 0x74, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0b, 0x6e, 0x61, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, - 0x18, 0x0a, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x67, 0x77, - 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x69, 0x67, 0x77, 0x73, 0x22, 0x8f, 0x02, - 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, - 0x3f, 0x0a, 0x09, 0x76, 0x6d, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x56, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x76, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x42, 0x0a, 0x0a, 0x70, 0x6f, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x50, 0x6f, 0x64, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x70, 0x6f, 0x64, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x1a, 0x3b, 0x0a, 0x0d, 0x56, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0x4e, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x73, 0x46, 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x73, 0x22, 0x93, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x56, 0x50, 0x43, 0x49, 0x44, 0x57, + 0x69, 0x74, 0x68, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, + 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x30, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x56, + 0x50, 0x43, 0x49, 0x44, 0x57, 0x69, 0x74, 0x68, 0x54, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x22, 0x84, 0x02, 0x0a, 0x18, 0x4c, + 0x69, 0x73, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x0a, 0x06, 0x76, + 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, + 0x49, 0x64, 0x12, 0x43, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x1a, 0x3c, 0x0a, 0x0e, 0x50, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x22, 0x6d, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, + 0x0a, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x52, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, + 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, + 0x22, 0x2c, 0x0a, 0x0e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0xb2, + 0x03, 0x0a, 0x08, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x70, 0x63, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x76, 0x70, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, + 0x6e, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6e, + 0x65, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x65, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, + 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, + 0x70, 0x6f, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, + 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, + 0x12, 0x12, 0x0a, 0x04, 0x61, 0x63, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, + 0x61, 0x63, 0x6c, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x73, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x21, 0x0a, + 0x0c, 0x6e, 0x61, 0x74, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6e, 0x61, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, + 0x12, 0x18, 0x0a, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x67, + 0x77, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x69, 0x67, 0x77, 0x73, 0x12, 0x23, + 0x0a, 0x0d, 0x76, 0x70, 0x63, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x76, 0x70, 0x63, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x73, 0x22, 0x89, 0x03, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x3f, 0x0a, 0x09, 0x76, 0x6d, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, + 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x56, + 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x76, 0x6d, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x42, 0x0a, 0x0a, 0x70, 0x6f, 0x64, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x66, + 0x72, 0x61, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, + 0x2e, 0x50, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x09, 0x70, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3c, 0x0a, 0x08, 0x76, 0x6d, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, + 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x79, 0x2e, 0x56, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x07, 0x76, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x73, 0x1a, 0x3b, 0x0a, 0x0d, 0x56, 0x6d, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3c, 0x0a, 0x0e, 0x50, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x1a, 0x3a, 0x0a, 0x0c, 0x56, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, @@ -2828,100 +3106,110 @@ var file_cloud_proto_rawDesc = []byte{ 0x72, 0x73, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x32, 0xb4, 0x0b, 0x0a, 0x14, + 0x79, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x32, 0xd3, 0x0c, 0x0a, 0x14, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x49, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x1a, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x3a, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x50, 0x43, 0x12, 0x15, 0x2e, 0x69, 0x6e, 0x66, - 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x50, 0x43, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x16, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x50, - 0x43, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x0d, 0x4c, - 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x1b, 0x2e, 0x69, - 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x69, 0x6e, 0x66, 0x72, - 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x09, 0x47, 0x65, 0x74, - 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x12, 0x17, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x47, - 0x65, 0x74, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x18, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x6e, 0x65, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0b, 0x4c, - 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x12, 0x19, 0x2e, 0x69, 0x6e, 0x66, - 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x43, 0x4c, 0x73, 0x12, - 0x16, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x43, 0x4c, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x41, 0x43, 0x4c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, - 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x20, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x69, 0x6e, 0x66, - 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x52, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1e, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x41, 0x54, 0x47, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, 0x1d, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x4e, 0x41, 0x54, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x4e, 0x41, 0x54, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x12, 0x19, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1a, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x61, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x47, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, 0x22, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x69, 0x6e, - 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, - 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x56, 0x50, 0x43, 0x49, 0x44, 0x46, 0x6f, - 0x72, 0x43, 0x49, 0x44, 0x52, 0x12, 0x1d, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x47, 0x65, - 0x74, 0x56, 0x50, 0x43, 0x49, 0x44, 0x46, 0x6f, 0x72, 0x43, 0x49, 0x44, 0x52, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x47, 0x65, 0x74, - 0x56, 0x50, 0x43, 0x49, 0x44, 0x46, 0x6f, 0x72, 0x43, 0x49, 0x44, 0x52, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x58, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x49, 0x44, - 0x52, 0x73, 0x46, 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1f, 0x2e, 0x69, 0x6e, + 0x46, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x19, + 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x67, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x69, 0x6e, 0x66, 0x72, + 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 0x56, + 0x50, 0x43, 0x12, 0x15, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, + 0x50, 0x43, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x69, 0x6e, 0x66, 0x72, + 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x50, 0x43, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x73, 0x12, 0x1b, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1c, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x40, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x12, 0x17, + 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, + 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x6e, 0x65, + 0x74, 0x73, 0x12, 0x19, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, + 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, + 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x08, 0x4c, + 0x69, 0x73, 0x74, 0x41, 0x43, 0x4c, 0x73, 0x12, 0x16, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x43, 0x4c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x17, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x43, 0x4c, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x12, 0x4c, 0x69, + 0x73, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x12, 0x20, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x69, 0x6e, 0x66, + 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x69, 0x6e, 0x66, 0x72, + 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0f, 0x4c, + 0x69, 0x73, 0x74, 0x4e, 0x41, 0x54, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, 0x1d, + 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x41, 0x54, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, + 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x41, 0x54, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x46, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x12, 0x19, + 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, + 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x69, 0x6e, 0x66, 0x72, + 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x49, + 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, + 0x22, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x6e, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x10, 0x4c, 0x69, + 0x73, 0x74, 0x56, 0x50, 0x43, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x1e, + 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x50, 0x43, 0x45, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, + 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x50, 0x43, 0x45, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x52, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x56, 0x50, 0x43, 0x49, 0x44, 0x46, 0x6f, 0x72, + 0x43, 0x49, 0x44, 0x52, 0x12, 0x1d, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x47, 0x65, 0x74, + 0x56, 0x50, 0x43, 0x49, 0x44, 0x46, 0x6f, 0x72, 0x43, 0x49, 0x44, 0x52, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x56, + 0x50, 0x43, 0x49, 0x44, 0x46, 0x6f, 0x72, 0x43, 0x49, 0x44, 0x52, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x58, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x49, 0x44, 0x52, + 0x73, 0x46, 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1f, 0x2e, 0x69, 0x6e, 0x66, + 0x72, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x49, 0x44, 0x52, 0x73, 0x46, 0x6f, 0x72, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x49, 0x44, 0x52, 0x73, 0x46, 0x6f, 0x72, 0x4c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x69, - 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x49, 0x44, 0x52, 0x73, 0x46, 0x6f, 0x72, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x52, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x49, 0x50, 0x73, 0x46, 0x6f, 0x72, 0x4c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x12, 0x1d, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x49, - 0x50, 0x73, 0x46, 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x50, - 0x73, 0x46, 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x73, 0x46, 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x23, 0x2e, - 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x73, 0x46, 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x46, 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0f, 0x47, 0x65, - 0x74, 0x56, 0x50, 0x43, 0x49, 0x44, 0x57, 0x69, 0x74, 0x68, 0x54, 0x61, 0x67, 0x12, 0x1d, 0x2e, - 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x50, 0x43, 0x49, 0x44, 0x57, 0x69, - 0x74, 0x68, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x69, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x52, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x49, 0x50, 0x73, 0x46, 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x12, 0x1d, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x50, + 0x73, 0x46, 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1e, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x50, 0x73, + 0x46, 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x73, 0x46, 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x23, 0x2e, 0x69, + 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x73, 0x46, 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x24, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x46, 0x6f, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0f, 0x47, 0x65, 0x74, + 0x56, 0x50, 0x43, 0x49, 0x44, 0x57, 0x69, 0x74, 0x68, 0x54, 0x61, 0x67, 0x12, 0x1d, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x50, 0x43, 0x49, 0x44, 0x57, 0x69, 0x74, - 0x68, 0x54, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x58, - 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x73, 0x12, 0x1f, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x07, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x79, 0x12, 0x15, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x69, 0x6e, 0x66, - 0x72, 0x61, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x42, 0x0c, 0x5a, 0x0a, 0x2e, 0x2f, 0x3b, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x70, 0x62, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x68, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x69, 0x6e, + 0x66, 0x72, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x50, 0x43, 0x49, 0x44, 0x57, 0x69, 0x74, 0x68, + 0x54, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x58, 0x0a, + 0x11, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x73, 0x12, 0x1f, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x07, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x79, 0x12, 0x15, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x69, 0x6e, 0x66, 0x72, + 0x61, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x42, 0x0c, 0x5a, 0x0a, 0x2e, 0x2f, 0x3b, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x70, 0x62, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2936,133 +3224,147 @@ func file_cloud_proto_rawDescGZIP() []byte { return file_cloud_proto_rawDescData } -var file_cloud_proto_msgTypes = make([]protoimpl.MessageInfo, 47) +var file_cloud_proto_msgTypes = make([]protoimpl.MessageInfo, 52) var file_cloud_proto_goTypes = []interface{}{ (*ListAccountsRequest)(nil), // 0: infra.ListAccountsRequest (*ListAccountsResponse)(nil), // 1: infra.ListAccountsResponse - (*ListVPCRequest)(nil), // 2: infra.ListVPCRequest - (*ListVPCResponse)(nil), // 3: infra.ListVPCResponse - (*ListInstancesRequest)(nil), // 4: infra.ListInstancesRequest - (*ListInstancesResponse)(nil), // 5: infra.ListInstancesResponse - (*ListACLsRequest)(nil), // 6: infra.ListACLsRequest - (*ListACLsResponse)(nil), // 7: infra.ListACLsResponse - (*ListSecurityGroupsRequest)(nil), // 8: infra.ListSecurityGroupsRequest - (*ListSecurityGroupsResponse)(nil), // 9: infra.ListSecurityGroupsResponse - (*ListRouteTablesRequest)(nil), // 10: infra.ListRouteTablesRequest - (*ListRouteTablesResponse)(nil), // 11: infra.ListRouteTablesResponse - (*ListNATGatewaysRequest)(nil), // 12: infra.ListNATGatewaysRequest - (*ListNATGatewaysResponse)(nil), // 13: infra.ListNATGatewaysResponse - (*ListRoutersRequest)(nil), // 14: infra.ListRoutersRequest - (*ListRoutersResponse)(nil), // 15: infra.ListRoutersResponse - (*ListInternetGatewaysRequest)(nil), // 16: infra.ListInternetGatewaysRequest - (*ListInternetGatewaysResponse)(nil), // 17: infra.ListInternetGatewaysResponse - (*GetSubnetRequest)(nil), // 18: infra.GetSubnetRequest - (*GetSubnetResponse)(nil), // 19: infra.GetSubnetResponse - (*ListSubnetsRequest)(nil), // 20: infra.ListSubnetsRequest - (*ListSubnetsResponse)(nil), // 21: infra.ListSubnetsResponse - (*GetVPCIDForCIDRRequest)(nil), // 22: infra.GetVPCIDForCIDRRequest - (*GetVPCIDForCIDRResponse)(nil), // 23: infra.GetVPCIDForCIDRResponse - (*GetCIDRsForLabelsRequest)(nil), // 24: infra.GetCIDRsForLabelsRequest - (*GetCIDRsForLabelsResponse)(nil), // 25: infra.GetCIDRsForLabelsResponse - (*GetIPsForLabelsRequest)(nil), // 26: infra.GetIPsForLabelsRequest - (*GetIPsForLabelsResponse)(nil), // 27: infra.GetIPsForLabelsResponse - (*GetInstancesForLabelsRequest)(nil), // 28: infra.GetInstancesForLabelsRequest - (*GetInstancesForLabelsResponse)(nil), // 29: infra.GetInstancesForLabelsResponse - (*GetVPCIDWithTagRequest)(nil), // 30: infra.GetVPCIDWithTagRequest - (*GetVPCIDWithTagResponse)(nil), // 31: infra.GetVPCIDWithTagResponse - (*ListCloudClustersRequest)(nil), // 32: infra.ListCloudClustersRequest - (*ListCloudClustersResponse)(nil), // 33: infra.ListCloudClustersResponse - (*SummaryRequest)(nil), // 34: infra.SummaryRequest - (*Counters)(nil), // 35: infra.Counters - (*StatusSummary)(nil), // 36: infra.StatusSummary - (*SummaryResponse)(nil), // 37: infra.SummaryResponse - nil, // 38: infra.ListVPCRequest.LabelsEntry - nil, // 39: infra.ListInstancesRequest.LabelsEntry - nil, // 40: infra.ListSubnetsRequest.LabelsEntry - nil, // 41: infra.GetCIDRsForLabelsRequest.LabelsEntry - nil, // 42: infra.GetIPsForLabelsRequest.LabelsEntry - nil, // 43: infra.GetInstancesForLabelsRequest.LabelsEntry - nil, // 44: infra.ListCloudClustersRequest.LabelsEntry - nil, // 45: infra.StatusSummary.VmStatusEntry - nil, // 46: infra.StatusSummary.PodStatusEntry - (*Account)(nil), // 47: infra.Account - (*VPC)(nil), // 48: infra.VPC - (*Instance)(nil), // 49: infra.Instance - (*ACL)(nil), // 50: infra.ACL - (*SecurityGroup)(nil), // 51: infra.SecurityGroup - (*RouteTable)(nil), // 52: infra.RouteTable - (*NATGateway)(nil), // 53: infra.NATGateway - (*Router)(nil), // 54: infra.Router - (*IGW)(nil), // 55: infra.IGW - (*Subnet)(nil), // 56: infra.Subnet - (*Cluster)(nil), // 57: infra.Cluster + (*ListRegionsRequest)(nil), // 2: infra.ListRegionsRequest + (*ListRegionsResponse)(nil), // 3: infra.ListRegionsResponse + (*ListVPCRequest)(nil), // 4: infra.ListVPCRequest + (*ListVPCResponse)(nil), // 5: infra.ListVPCResponse + (*ListInstancesRequest)(nil), // 6: infra.ListInstancesRequest + (*ListInstancesResponse)(nil), // 7: infra.ListInstancesResponse + (*ListACLsRequest)(nil), // 8: infra.ListACLsRequest + (*ListACLsResponse)(nil), // 9: infra.ListACLsResponse + (*ListSecurityGroupsRequest)(nil), // 10: infra.ListSecurityGroupsRequest + (*ListSecurityGroupsResponse)(nil), // 11: infra.ListSecurityGroupsResponse + (*ListRouteTablesRequest)(nil), // 12: infra.ListRouteTablesRequest + (*ListRouteTablesResponse)(nil), // 13: infra.ListRouteTablesResponse + (*ListNATGatewaysRequest)(nil), // 14: infra.ListNATGatewaysRequest + (*ListNATGatewaysResponse)(nil), // 15: infra.ListNATGatewaysResponse + (*ListRoutersRequest)(nil), // 16: infra.ListRoutersRequest + (*ListRoutersResponse)(nil), // 17: infra.ListRoutersResponse + (*ListInternetGatewaysRequest)(nil), // 18: infra.ListInternetGatewaysRequest + (*ListInternetGatewaysResponse)(nil), // 19: infra.ListInternetGatewaysResponse + (*ListVPCEndpointsResponse)(nil), // 20: infra.ListVPCEndpointsResponse + (*ListVPCEndpointsRequest)(nil), // 21: infra.ListVPCEndpointsRequest + (*GetSubnetRequest)(nil), // 22: infra.GetSubnetRequest + (*GetSubnetResponse)(nil), // 23: infra.GetSubnetResponse + (*ListSubnetsRequest)(nil), // 24: infra.ListSubnetsRequest + (*ListSubnetsResponse)(nil), // 25: infra.ListSubnetsResponse + (*GetVPCIDForCIDRRequest)(nil), // 26: infra.GetVPCIDForCIDRRequest + (*GetVPCIDForCIDRResponse)(nil), // 27: infra.GetVPCIDForCIDRResponse + (*GetCIDRsForLabelsRequest)(nil), // 28: infra.GetCIDRsForLabelsRequest + (*GetCIDRsForLabelsResponse)(nil), // 29: infra.GetCIDRsForLabelsResponse + (*GetIPsForLabelsRequest)(nil), // 30: infra.GetIPsForLabelsRequest + (*GetIPsForLabelsResponse)(nil), // 31: infra.GetIPsForLabelsResponse + (*GetInstancesForLabelsRequest)(nil), // 32: infra.GetInstancesForLabelsRequest + (*GetInstancesForLabelsResponse)(nil), // 33: infra.GetInstancesForLabelsResponse + (*GetVPCIDWithTagRequest)(nil), // 34: infra.GetVPCIDWithTagRequest + (*GetVPCIDWithTagResponse)(nil), // 35: infra.GetVPCIDWithTagResponse + (*ListCloudClustersRequest)(nil), // 36: infra.ListCloudClustersRequest + (*ListCloudClustersResponse)(nil), // 37: infra.ListCloudClustersResponse + (*SummaryRequest)(nil), // 38: infra.SummaryRequest + (*Counters)(nil), // 39: infra.Counters + (*StatusSummary)(nil), // 40: infra.StatusSummary + (*SummaryResponse)(nil), // 41: infra.SummaryResponse + nil, // 42: infra.ListVPCRequest.LabelsEntry + nil, // 43: infra.ListInstancesRequest.LabelsEntry + nil, // 44: infra.ListSubnetsRequest.LabelsEntry + nil, // 45: infra.GetCIDRsForLabelsRequest.LabelsEntry + nil, // 46: infra.GetIPsForLabelsRequest.LabelsEntry + nil, // 47: infra.GetInstancesForLabelsRequest.LabelsEntry + nil, // 48: infra.ListCloudClustersRequest.LabelsEntry + nil, // 49: infra.StatusSummary.VmStatusEntry + nil, // 50: infra.StatusSummary.PodStatusEntry + nil, // 51: infra.StatusSummary.VmTypesEntry + (*Account)(nil), // 52: infra.Account + (*Region)(nil), // 53: infra.Region + (*VPC)(nil), // 54: infra.VPC + (*Instance)(nil), // 55: infra.Instance + (*ACL)(nil), // 56: infra.ACL + (*SecurityGroup)(nil), // 57: infra.SecurityGroup + (*RouteTable)(nil), // 58: infra.RouteTable + (*NATGateway)(nil), // 59: infra.NATGateway + (*Router)(nil), // 60: infra.Router + (*IGW)(nil), // 61: infra.IGW + (*VPCEndpoint)(nil), // 62: infra.VPCEndpoint + (*Subnet)(nil), // 63: infra.Subnet + (*Cluster)(nil), // 64: infra.Cluster } var file_cloud_proto_depIdxs = []int32{ - 47, // 0: infra.ListAccountsResponse.accounts:type_name -> infra.Account - 38, // 1: infra.ListVPCRequest.labels:type_name -> infra.ListVPCRequest.LabelsEntry - 48, // 2: infra.ListVPCResponse.vpcs:type_name -> infra.VPC - 39, // 3: infra.ListInstancesRequest.labels:type_name -> infra.ListInstancesRequest.LabelsEntry - 49, // 4: infra.ListInstancesResponse.instances:type_name -> infra.Instance - 50, // 5: infra.ListACLsResponse.acls:type_name -> infra.ACL - 51, // 6: infra.ListSecurityGroupsResponse.security_groups:type_name -> infra.SecurityGroup - 52, // 7: infra.ListRouteTablesResponse.route_tables:type_name -> infra.RouteTable - 53, // 8: infra.ListNATGatewaysResponse.nat_gateways:type_name -> infra.NATGateway - 54, // 9: infra.ListRoutersResponse.routers:type_name -> infra.Router - 55, // 10: infra.ListInternetGatewaysResponse.igws:type_name -> infra.IGW - 56, // 11: infra.GetSubnetResponse.subnet:type_name -> infra.Subnet - 40, // 12: infra.ListSubnetsRequest.labels:type_name -> infra.ListSubnetsRequest.LabelsEntry - 56, // 13: infra.ListSubnetsResponse.subnets:type_name -> infra.Subnet - 41, // 14: infra.GetCIDRsForLabelsRequest.labels:type_name -> infra.GetCIDRsForLabelsRequest.LabelsEntry - 42, // 15: infra.GetIPsForLabelsRequest.labels:type_name -> infra.GetIPsForLabelsRequest.LabelsEntry - 43, // 16: infra.GetInstancesForLabelsRequest.labels:type_name -> infra.GetInstancesForLabelsRequest.LabelsEntry - 49, // 17: infra.GetInstancesForLabelsResponse.instances:type_name -> infra.Instance - 44, // 18: infra.ListCloudClustersRequest.labels:type_name -> infra.ListCloudClustersRequest.LabelsEntry - 57, // 19: infra.ListCloudClustersResponse.clusters:type_name -> infra.Cluster - 45, // 20: infra.StatusSummary.vm_status:type_name -> infra.StatusSummary.VmStatusEntry - 46, // 21: infra.StatusSummary.pod_status:type_name -> infra.StatusSummary.PodStatusEntry - 35, // 22: infra.SummaryResponse.count:type_name -> infra.Counters - 36, // 23: infra.SummaryResponse.statuses:type_name -> infra.StatusSummary - 0, // 24: infra.CloudProviderService.ListAccounts:input_type -> infra.ListAccountsRequest - 2, // 25: infra.CloudProviderService.ListVPC:input_type -> infra.ListVPCRequest - 4, // 26: infra.CloudProviderService.ListInstances:input_type -> infra.ListInstancesRequest - 18, // 27: infra.CloudProviderService.GetSubnet:input_type -> infra.GetSubnetRequest - 20, // 28: infra.CloudProviderService.ListSubnets:input_type -> infra.ListSubnetsRequest - 6, // 29: infra.CloudProviderService.ListACLs:input_type -> infra.ListACLsRequest - 8, // 30: infra.CloudProviderService.ListSecurityGroups:input_type -> infra.ListSecurityGroupsRequest - 10, // 31: infra.CloudProviderService.ListRouteTables:input_type -> infra.ListRouteTablesRequest - 12, // 32: infra.CloudProviderService.ListNATGateways:input_type -> infra.ListNATGatewaysRequest - 14, // 33: infra.CloudProviderService.ListRouters:input_type -> infra.ListRoutersRequest - 16, // 34: infra.CloudProviderService.ListInternetGateways:input_type -> infra.ListInternetGatewaysRequest - 22, // 35: infra.CloudProviderService.GetVPCIDForCIDR:input_type -> infra.GetVPCIDForCIDRRequest - 24, // 36: infra.CloudProviderService.GetCIDRsForLabels:input_type -> infra.GetCIDRsForLabelsRequest - 26, // 37: infra.CloudProviderService.GetIPsForLabels:input_type -> infra.GetIPsForLabelsRequest - 28, // 38: infra.CloudProviderService.GetInstancesForLabels:input_type -> infra.GetInstancesForLabelsRequest - 30, // 39: infra.CloudProviderService.GetVPCIDWithTag:input_type -> infra.GetVPCIDWithTagRequest - 32, // 40: infra.CloudProviderService.ListCloudClusters:input_type -> infra.ListCloudClustersRequest - 34, // 41: infra.CloudProviderService.Summary:input_type -> infra.SummaryRequest - 1, // 42: infra.CloudProviderService.ListAccounts:output_type -> infra.ListAccountsResponse - 3, // 43: infra.CloudProviderService.ListVPC:output_type -> infra.ListVPCResponse - 5, // 44: infra.CloudProviderService.ListInstances:output_type -> infra.ListInstancesResponse - 19, // 45: infra.CloudProviderService.GetSubnet:output_type -> infra.GetSubnetResponse - 21, // 46: infra.CloudProviderService.ListSubnets:output_type -> infra.ListSubnetsResponse - 7, // 47: infra.CloudProviderService.ListACLs:output_type -> infra.ListACLsResponse - 9, // 48: infra.CloudProviderService.ListSecurityGroups:output_type -> infra.ListSecurityGroupsResponse - 11, // 49: infra.CloudProviderService.ListRouteTables:output_type -> infra.ListRouteTablesResponse - 13, // 50: infra.CloudProviderService.ListNATGateways:output_type -> infra.ListNATGatewaysResponse - 15, // 51: infra.CloudProviderService.ListRouters:output_type -> infra.ListRoutersResponse - 17, // 52: infra.CloudProviderService.ListInternetGateways:output_type -> infra.ListInternetGatewaysResponse - 23, // 53: infra.CloudProviderService.GetVPCIDForCIDR:output_type -> infra.GetVPCIDForCIDRResponse - 25, // 54: infra.CloudProviderService.GetCIDRsForLabels:output_type -> infra.GetCIDRsForLabelsResponse - 27, // 55: infra.CloudProviderService.GetIPsForLabels:output_type -> infra.GetIPsForLabelsResponse - 29, // 56: infra.CloudProviderService.GetInstancesForLabels:output_type -> infra.GetInstancesForLabelsResponse - 31, // 57: infra.CloudProviderService.GetVPCIDWithTag:output_type -> infra.GetVPCIDWithTagResponse - 33, // 58: infra.CloudProviderService.ListCloudClusters:output_type -> infra.ListCloudClustersResponse - 37, // 59: infra.CloudProviderService.Summary:output_type -> infra.SummaryResponse - 42, // [42:60] is the sub-list for method output_type - 24, // [24:42] is the sub-list for method input_type - 24, // [24:24] is the sub-list for extension type_name - 24, // [24:24] is the sub-list for extension extendee - 0, // [0:24] is the sub-list for field type_name + 52, // 0: infra.ListAccountsResponse.accounts:type_name -> infra.Account + 53, // 1: infra.ListRegionsResponse.regions:type_name -> infra.Region + 42, // 2: infra.ListVPCRequest.labels:type_name -> infra.ListVPCRequest.LabelsEntry + 54, // 3: infra.ListVPCResponse.vpcs:type_name -> infra.VPC + 43, // 4: infra.ListInstancesRequest.labels:type_name -> infra.ListInstancesRequest.LabelsEntry + 55, // 5: infra.ListInstancesResponse.instances:type_name -> infra.Instance + 56, // 6: infra.ListACLsResponse.acls:type_name -> infra.ACL + 57, // 7: infra.ListSecurityGroupsResponse.security_groups:type_name -> infra.SecurityGroup + 58, // 8: infra.ListRouteTablesResponse.route_tables:type_name -> infra.RouteTable + 59, // 9: infra.ListNATGatewaysResponse.nat_gateways:type_name -> infra.NATGateway + 60, // 10: infra.ListRoutersResponse.routers:type_name -> infra.Router + 61, // 11: infra.ListInternetGatewaysResponse.igws:type_name -> infra.IGW + 62, // 12: infra.ListVPCEndpointsResponse.veps:type_name -> infra.VPCEndpoint + 63, // 13: infra.GetSubnetResponse.subnet:type_name -> infra.Subnet + 44, // 14: infra.ListSubnetsRequest.labels:type_name -> infra.ListSubnetsRequest.LabelsEntry + 63, // 15: infra.ListSubnetsResponse.subnets:type_name -> infra.Subnet + 45, // 16: infra.GetCIDRsForLabelsRequest.labels:type_name -> infra.GetCIDRsForLabelsRequest.LabelsEntry + 46, // 17: infra.GetIPsForLabelsRequest.labels:type_name -> infra.GetIPsForLabelsRequest.LabelsEntry + 47, // 18: infra.GetInstancesForLabelsRequest.labels:type_name -> infra.GetInstancesForLabelsRequest.LabelsEntry + 55, // 19: infra.GetInstancesForLabelsResponse.instances:type_name -> infra.Instance + 48, // 20: infra.ListCloudClustersRequest.labels:type_name -> infra.ListCloudClustersRequest.LabelsEntry + 64, // 21: infra.ListCloudClustersResponse.clusters:type_name -> infra.Cluster + 49, // 22: infra.StatusSummary.vm_status:type_name -> infra.StatusSummary.VmStatusEntry + 50, // 23: infra.StatusSummary.pod_status:type_name -> infra.StatusSummary.PodStatusEntry + 51, // 24: infra.StatusSummary.vm_types:type_name -> infra.StatusSummary.VmTypesEntry + 39, // 25: infra.SummaryResponse.count:type_name -> infra.Counters + 40, // 26: infra.SummaryResponse.statuses:type_name -> infra.StatusSummary + 0, // 27: infra.CloudProviderService.ListAccounts:input_type -> infra.ListAccountsRequest + 2, // 28: infra.CloudProviderService.ListRegions:input_type -> infra.ListRegionsRequest + 4, // 29: infra.CloudProviderService.ListVPC:input_type -> infra.ListVPCRequest + 6, // 30: infra.CloudProviderService.ListInstances:input_type -> infra.ListInstancesRequest + 22, // 31: infra.CloudProviderService.GetSubnet:input_type -> infra.GetSubnetRequest + 24, // 32: infra.CloudProviderService.ListSubnets:input_type -> infra.ListSubnetsRequest + 8, // 33: infra.CloudProviderService.ListACLs:input_type -> infra.ListACLsRequest + 10, // 34: infra.CloudProviderService.ListSecurityGroups:input_type -> infra.ListSecurityGroupsRequest + 12, // 35: infra.CloudProviderService.ListRouteTables:input_type -> infra.ListRouteTablesRequest + 14, // 36: infra.CloudProviderService.ListNATGateways:input_type -> infra.ListNATGatewaysRequest + 16, // 37: infra.CloudProviderService.ListRouters:input_type -> infra.ListRoutersRequest + 18, // 38: infra.CloudProviderService.ListInternetGateways:input_type -> infra.ListInternetGatewaysRequest + 21, // 39: infra.CloudProviderService.ListVPCEndpoints:input_type -> infra.ListVPCEndpointsRequest + 26, // 40: infra.CloudProviderService.GetVPCIDForCIDR:input_type -> infra.GetVPCIDForCIDRRequest + 28, // 41: infra.CloudProviderService.GetCIDRsForLabels:input_type -> infra.GetCIDRsForLabelsRequest + 30, // 42: infra.CloudProviderService.GetIPsForLabels:input_type -> infra.GetIPsForLabelsRequest + 32, // 43: infra.CloudProviderService.GetInstancesForLabels:input_type -> infra.GetInstancesForLabelsRequest + 34, // 44: infra.CloudProviderService.GetVPCIDWithTag:input_type -> infra.GetVPCIDWithTagRequest + 36, // 45: infra.CloudProviderService.ListCloudClusters:input_type -> infra.ListCloudClustersRequest + 38, // 46: infra.CloudProviderService.Summary:input_type -> infra.SummaryRequest + 1, // 47: infra.CloudProviderService.ListAccounts:output_type -> infra.ListAccountsResponse + 3, // 48: infra.CloudProviderService.ListRegions:output_type -> infra.ListRegionsResponse + 5, // 49: infra.CloudProviderService.ListVPC:output_type -> infra.ListVPCResponse + 7, // 50: infra.CloudProviderService.ListInstances:output_type -> infra.ListInstancesResponse + 23, // 51: infra.CloudProviderService.GetSubnet:output_type -> infra.GetSubnetResponse + 25, // 52: infra.CloudProviderService.ListSubnets:output_type -> infra.ListSubnetsResponse + 9, // 53: infra.CloudProviderService.ListACLs:output_type -> infra.ListACLsResponse + 11, // 54: infra.CloudProviderService.ListSecurityGroups:output_type -> infra.ListSecurityGroupsResponse + 13, // 55: infra.CloudProviderService.ListRouteTables:output_type -> infra.ListRouteTablesResponse + 15, // 56: infra.CloudProviderService.ListNATGateways:output_type -> infra.ListNATGatewaysResponse + 17, // 57: infra.CloudProviderService.ListRouters:output_type -> infra.ListRoutersResponse + 19, // 58: infra.CloudProviderService.ListInternetGateways:output_type -> infra.ListInternetGatewaysResponse + 20, // 59: infra.CloudProviderService.ListVPCEndpoints:output_type -> infra.ListVPCEndpointsResponse + 27, // 60: infra.CloudProviderService.GetVPCIDForCIDR:output_type -> infra.GetVPCIDForCIDRResponse + 29, // 61: infra.CloudProviderService.GetCIDRsForLabels:output_type -> infra.GetCIDRsForLabelsResponse + 31, // 62: infra.CloudProviderService.GetIPsForLabels:output_type -> infra.GetIPsForLabelsResponse + 33, // 63: infra.CloudProviderService.GetInstancesForLabels:output_type -> infra.GetInstancesForLabelsResponse + 35, // 64: infra.CloudProviderService.GetVPCIDWithTag:output_type -> infra.GetVPCIDWithTagResponse + 37, // 65: infra.CloudProviderService.ListCloudClusters:output_type -> infra.ListCloudClustersResponse + 41, // 66: infra.CloudProviderService.Summary:output_type -> infra.SummaryResponse + 47, // [47:67] is the sub-list for method output_type + 27, // [27:47] is the sub-list for method input_type + 27, // [27:27] is the sub-list for extension type_name + 27, // [27:27] is the sub-list for extension extendee + 0, // [0:27] is the sub-list for field type_name } func init() { file_cloud_proto_init() } @@ -3097,7 +3399,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListVPCRequest); i { + switch v := v.(*ListRegionsRequest); i { case 0: return &v.state case 1: @@ -3109,7 +3411,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListVPCResponse); i { + switch v := v.(*ListRegionsResponse); i { case 0: return &v.state case 1: @@ -3121,7 +3423,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListInstancesRequest); i { + switch v := v.(*ListVPCRequest); i { case 0: return &v.state case 1: @@ -3133,7 +3435,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListInstancesResponse); i { + switch v := v.(*ListVPCResponse); i { case 0: return &v.state case 1: @@ -3145,7 +3447,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListACLsRequest); i { + switch v := v.(*ListInstancesRequest); i { case 0: return &v.state case 1: @@ -3157,7 +3459,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListACLsResponse); i { + switch v := v.(*ListInstancesResponse); i { case 0: return &v.state case 1: @@ -3169,7 +3471,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListSecurityGroupsRequest); i { + switch v := v.(*ListACLsRequest); i { case 0: return &v.state case 1: @@ -3181,7 +3483,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListSecurityGroupsResponse); i { + switch v := v.(*ListACLsResponse); i { case 0: return &v.state case 1: @@ -3193,7 +3495,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListRouteTablesRequest); i { + switch v := v.(*ListSecurityGroupsRequest); i { case 0: return &v.state case 1: @@ -3205,7 +3507,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListRouteTablesResponse); i { + switch v := v.(*ListSecurityGroupsResponse); i { case 0: return &v.state case 1: @@ -3217,7 +3519,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListNATGatewaysRequest); i { + switch v := v.(*ListRouteTablesRequest); i { case 0: return &v.state case 1: @@ -3229,7 +3531,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListNATGatewaysResponse); i { + switch v := v.(*ListRouteTablesResponse); i { case 0: return &v.state case 1: @@ -3241,7 +3543,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListRoutersRequest); i { + switch v := v.(*ListNATGatewaysRequest); i { case 0: return &v.state case 1: @@ -3253,7 +3555,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListRoutersResponse); i { + switch v := v.(*ListNATGatewaysResponse); i { case 0: return &v.state case 1: @@ -3265,7 +3567,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListInternetGatewaysRequest); i { + switch v := v.(*ListRoutersRequest); i { case 0: return &v.state case 1: @@ -3277,7 +3579,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListInternetGatewaysResponse); i { + switch v := v.(*ListRoutersResponse); i { case 0: return &v.state case 1: @@ -3289,7 +3591,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSubnetRequest); i { + switch v := v.(*ListInternetGatewaysRequest); i { case 0: return &v.state case 1: @@ -3301,7 +3603,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSubnetResponse); i { + switch v := v.(*ListInternetGatewaysResponse); i { case 0: return &v.state case 1: @@ -3313,7 +3615,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListSubnetsRequest); i { + switch v := v.(*ListVPCEndpointsResponse); i { case 0: return &v.state case 1: @@ -3325,7 +3627,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListSubnetsResponse); i { + switch v := v.(*ListVPCEndpointsRequest); i { case 0: return &v.state case 1: @@ -3337,7 +3639,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetVPCIDForCIDRRequest); i { + switch v := v.(*GetSubnetRequest); i { case 0: return &v.state case 1: @@ -3349,7 +3651,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetVPCIDForCIDRResponse); i { + switch v := v.(*GetSubnetResponse); i { case 0: return &v.state case 1: @@ -3361,7 +3663,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetCIDRsForLabelsRequest); i { + switch v := v.(*ListSubnetsRequest); i { case 0: return &v.state case 1: @@ -3373,7 +3675,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetCIDRsForLabelsResponse); i { + switch v := v.(*ListSubnetsResponse); i { case 0: return &v.state case 1: @@ -3385,7 +3687,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetIPsForLabelsRequest); i { + switch v := v.(*GetVPCIDForCIDRRequest); i { case 0: return &v.state case 1: @@ -3397,7 +3699,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetIPsForLabelsResponse); i { + switch v := v.(*GetVPCIDForCIDRResponse); i { case 0: return &v.state case 1: @@ -3409,7 +3711,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetInstancesForLabelsRequest); i { + switch v := v.(*GetCIDRsForLabelsRequest); i { case 0: return &v.state case 1: @@ -3421,7 +3723,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetInstancesForLabelsResponse); i { + switch v := v.(*GetCIDRsForLabelsResponse); i { case 0: return &v.state case 1: @@ -3433,7 +3735,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetVPCIDWithTagRequest); i { + switch v := v.(*GetIPsForLabelsRequest); i { case 0: return &v.state case 1: @@ -3445,7 +3747,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetVPCIDWithTagResponse); i { + switch v := v.(*GetIPsForLabelsResponse); i { case 0: return &v.state case 1: @@ -3457,7 +3759,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListCloudClustersRequest); i { + switch v := v.(*GetInstancesForLabelsRequest); i { case 0: return &v.state case 1: @@ -3469,7 +3771,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListCloudClustersResponse); i { + switch v := v.(*GetInstancesForLabelsResponse); i { case 0: return &v.state case 1: @@ -3481,7 +3783,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SummaryRequest); i { + switch v := v.(*GetVPCIDWithTagRequest); i { case 0: return &v.state case 1: @@ -3493,7 +3795,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Counters); i { + switch v := v.(*GetVPCIDWithTagResponse); i { case 0: return &v.state case 1: @@ -3505,7 +3807,7 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatusSummary); i { + switch v := v.(*ListCloudClustersRequest); i { case 0: return &v.state case 1: @@ -3517,6 +3819,54 @@ func file_cloud_proto_init() { } } file_cloud_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListCloudClustersResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cloud_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SummaryRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cloud_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Counters); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cloud_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StatusSummary); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cloud_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SummaryResponse); i { case 0: return &v.state @@ -3535,7 +3885,7 @@ func file_cloud_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_cloud_proto_rawDesc, NumEnums: 0, - NumMessages: 47, + NumMessages: 52, NumExtensions: 0, NumServices: 1, }, diff --git a/grpc/go/infrapb/cloud_grpc.pb.go b/grpc/go/infrapb/cloud_grpc.pb.go index 2654a54..900811b 100644 --- a/grpc/go/infrapb/cloud_grpc.pb.go +++ b/grpc/go/infrapb/cloud_grpc.pb.go @@ -19,6 +19,7 @@ const _ = grpc.SupportPackageIsVersion7 // 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 CloudProviderServiceClient interface { ListAccounts(ctx context.Context, in *ListAccountsRequest, opts ...grpc.CallOption) (*ListAccountsResponse, error) + ListRegions(ctx context.Context, in *ListRegionsRequest, opts ...grpc.CallOption) (*ListRegionsResponse, error) ListVPC(ctx context.Context, in *ListVPCRequest, opts ...grpc.CallOption) (*ListVPCResponse, error) ListInstances(ctx context.Context, in *ListInstancesRequest, opts ...grpc.CallOption) (*ListInstancesResponse, error) GetSubnet(ctx context.Context, in *GetSubnetRequest, opts ...grpc.CallOption) (*GetSubnetResponse, error) @@ -29,6 +30,7 @@ type CloudProviderServiceClient interface { ListNATGateways(ctx context.Context, in *ListNATGatewaysRequest, opts ...grpc.CallOption) (*ListNATGatewaysResponse, error) ListRouters(ctx context.Context, in *ListRoutersRequest, opts ...grpc.CallOption) (*ListRoutersResponse, error) ListInternetGateways(ctx context.Context, in *ListInternetGatewaysRequest, opts ...grpc.CallOption) (*ListInternetGatewaysResponse, error) + ListVPCEndpoints(ctx context.Context, in *ListVPCEndpointsRequest, opts ...grpc.CallOption) (*ListVPCEndpointsResponse, error) GetVPCIDForCIDR(ctx context.Context, in *GetVPCIDForCIDRRequest, opts ...grpc.CallOption) (*GetVPCIDForCIDRResponse, error) GetCIDRsForLabels(ctx context.Context, in *GetCIDRsForLabelsRequest, opts ...grpc.CallOption) (*GetCIDRsForLabelsResponse, error) GetIPsForLabels(ctx context.Context, in *GetIPsForLabelsRequest, opts ...grpc.CallOption) (*GetIPsForLabelsResponse, error) @@ -55,6 +57,15 @@ func (c *cloudProviderServiceClient) ListAccounts(ctx context.Context, in *ListA return out, nil } +func (c *cloudProviderServiceClient) ListRegions(ctx context.Context, in *ListRegionsRequest, opts ...grpc.CallOption) (*ListRegionsResponse, error) { + out := new(ListRegionsResponse) + err := c.cc.Invoke(ctx, "/infra.CloudProviderService/ListRegions", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *cloudProviderServiceClient) ListVPC(ctx context.Context, in *ListVPCRequest, opts ...grpc.CallOption) (*ListVPCResponse, error) { out := new(ListVPCResponse) err := c.cc.Invoke(ctx, "/infra.CloudProviderService/ListVPC", in, out, opts...) @@ -145,6 +156,15 @@ func (c *cloudProviderServiceClient) ListInternetGateways(ctx context.Context, i return out, nil } +func (c *cloudProviderServiceClient) ListVPCEndpoints(ctx context.Context, in *ListVPCEndpointsRequest, opts ...grpc.CallOption) (*ListVPCEndpointsResponse, error) { + out := new(ListVPCEndpointsResponse) + err := c.cc.Invoke(ctx, "/infra.CloudProviderService/ListVPCEndpoints", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *cloudProviderServiceClient) GetVPCIDForCIDR(ctx context.Context, in *GetVPCIDForCIDRRequest, opts ...grpc.CallOption) (*GetVPCIDForCIDRResponse, error) { out := new(GetVPCIDForCIDRResponse) err := c.cc.Invoke(ctx, "/infra.CloudProviderService/GetVPCIDForCIDR", in, out, opts...) @@ -213,6 +233,7 @@ func (c *cloudProviderServiceClient) Summary(ctx context.Context, in *SummaryReq // for forward compatibility type CloudProviderServiceServer interface { ListAccounts(context.Context, *ListAccountsRequest) (*ListAccountsResponse, error) + ListRegions(context.Context, *ListRegionsRequest) (*ListRegionsResponse, error) ListVPC(context.Context, *ListVPCRequest) (*ListVPCResponse, error) ListInstances(context.Context, *ListInstancesRequest) (*ListInstancesResponse, error) GetSubnet(context.Context, *GetSubnetRequest) (*GetSubnetResponse, error) @@ -223,6 +244,7 @@ type CloudProviderServiceServer interface { ListNATGateways(context.Context, *ListNATGatewaysRequest) (*ListNATGatewaysResponse, error) ListRouters(context.Context, *ListRoutersRequest) (*ListRoutersResponse, error) ListInternetGateways(context.Context, *ListInternetGatewaysRequest) (*ListInternetGatewaysResponse, error) + ListVPCEndpoints(context.Context, *ListVPCEndpointsRequest) (*ListVPCEndpointsResponse, error) GetVPCIDForCIDR(context.Context, *GetVPCIDForCIDRRequest) (*GetVPCIDForCIDRResponse, error) GetCIDRsForLabels(context.Context, *GetCIDRsForLabelsRequest) (*GetCIDRsForLabelsResponse, error) GetIPsForLabels(context.Context, *GetIPsForLabelsRequest) (*GetIPsForLabelsResponse, error) @@ -240,6 +262,9 @@ type UnimplementedCloudProviderServiceServer struct { func (UnimplementedCloudProviderServiceServer) ListAccounts(context.Context, *ListAccountsRequest) (*ListAccountsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListAccounts not implemented") } +func (UnimplementedCloudProviderServiceServer) ListRegions(context.Context, *ListRegionsRequest) (*ListRegionsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListRegions not implemented") +} func (UnimplementedCloudProviderServiceServer) ListVPC(context.Context, *ListVPCRequest) (*ListVPCResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListVPC not implemented") } @@ -270,6 +295,9 @@ func (UnimplementedCloudProviderServiceServer) ListRouters(context.Context, *Lis func (UnimplementedCloudProviderServiceServer) ListInternetGateways(context.Context, *ListInternetGatewaysRequest) (*ListInternetGatewaysResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListInternetGateways not implemented") } +func (UnimplementedCloudProviderServiceServer) ListVPCEndpoints(context.Context, *ListVPCEndpointsRequest) (*ListVPCEndpointsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListVPCEndpoints not implemented") +} func (UnimplementedCloudProviderServiceServer) GetVPCIDForCIDR(context.Context, *GetVPCIDForCIDRRequest) (*GetVPCIDForCIDRResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetVPCIDForCIDR not implemented") } @@ -322,6 +350,24 @@ func _CloudProviderService_ListAccounts_Handler(srv interface{}, ctx context.Con return interceptor(ctx, in, info, handler) } +func _CloudProviderService_ListRegions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListRegionsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CloudProviderServiceServer).ListRegions(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/infra.CloudProviderService/ListRegions", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CloudProviderServiceServer).ListRegions(ctx, req.(*ListRegionsRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _CloudProviderService_ListVPC_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListVPCRequest) if err := dec(in); err != nil { @@ -502,6 +548,24 @@ func _CloudProviderService_ListInternetGateways_Handler(srv interface{}, ctx con return interceptor(ctx, in, info, handler) } +func _CloudProviderService_ListVPCEndpoints_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListVPCEndpointsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CloudProviderServiceServer).ListVPCEndpoints(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/infra.CloudProviderService/ListVPCEndpoints", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CloudProviderServiceServer).ListVPCEndpoints(ctx, req.(*ListVPCEndpointsRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _CloudProviderService_GetVPCIDForCIDR_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetVPCIDForCIDRRequest) if err := dec(in); err != nil { @@ -639,6 +703,10 @@ var CloudProviderService_ServiceDesc = grpc.ServiceDesc{ MethodName: "ListAccounts", Handler: _CloudProviderService_ListAccounts_Handler, }, + { + MethodName: "ListRegions", + Handler: _CloudProviderService_ListRegions_Handler, + }, { MethodName: "ListVPC", Handler: _CloudProviderService_ListVPC_Handler, @@ -679,6 +747,10 @@ var CloudProviderService_ServiceDesc = grpc.ServiceDesc{ MethodName: "ListInternetGateways", Handler: _CloudProviderService_ListInternetGateways_Handler, }, + { + MethodName: "ListVPCEndpoints", + Handler: _CloudProviderService_ListVPCEndpoints_Handler, + }, { MethodName: "GetVPCIDForCIDR", Handler: _CloudProviderService_GetVPCIDForCIDR_Handler, diff --git a/grpc/go/infrapb/types.pb.go b/grpc/go/infrapb/types.pb.go index ac83b63..6b58ae9 100644 --- a/grpc/go/infrapb/types.pb.go +++ b/grpc/go/infrapb/types.pb.go @@ -55,7 +55,8 @@ type Instance struct { Provider string `protobuf:"bytes,10,opt,name=provider,proto3" json:"provider,omitempty"` AccountId string `protobuf:"bytes,11,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` State string `protobuf:"bytes,12,opt,name=state,proto3" json:"state,omitempty"` - LastSyncTime string `protobuf:"bytes,13,opt,name=last_sync_time,json=lastSyncTime,proto3" json:"last_sync_time,omitempty"` + Type string `protobuf:"bytes,13,opt,name=type,proto3" json:"type,omitempty"` + LastSyncTime string `protobuf:"bytes,14,opt,name=last_sync_time,json=lastSyncTime,proto3" json:"last_sync_time,omitempty"` } func (x *Instance) Reset() { @@ -174,6 +175,13 @@ func (x *Instance) GetState() string { return "" } +func (x *Instance) GetType() string { + if x != nil { + return x.Type + } + return "" +} + func (x *Instance) GetLastSyncTime() string { if x != nil { return x.LastSyncTime @@ -186,9 +194,9 @@ type Subnet struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SubnetId string `protobuf:"bytes,1,opt,name=subnetId,proto3" json:"subnetId,omitempty"` - CidrBlock string `protobuf:"bytes,2,opt,name=cidrBlock,proto3" json:"cidrBlock,omitempty"` - VpcId string `protobuf:"bytes,3,opt,name=vpcId,proto3" json:"vpcId,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + CidrBlock string `protobuf:"bytes,2,opt,name=cidr_block,json=cidrBlock,proto3" json:"cidr_block,omitempty"` + VpcId string `protobuf:"bytes,3,opt,name=vpc_id,json=vpcId,proto3" json:"vpc_id,omitempty"` Zone string `protobuf:"bytes,4,opt,name=zone,proto3" json:"zone,omitempty"` Region string `protobuf:"bytes,5,opt,name=region,proto3" json:"region,omitempty"` Labels map[string]string `protobuf:"bytes,6,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` @@ -230,9 +238,9 @@ func (*Subnet) Descriptor() ([]byte, []int) { return file_types_proto_rawDescGZIP(), []int{1} } -func (x *Subnet) GetSubnetId() string { +func (x *Subnet) GetId() string { if x != nil { - return x.SubnetId + return x.Id } return "" } @@ -482,6 +490,77 @@ func (x *Account) GetLastSyncTime() string { return "" } +type Region struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Provider string `protobuf:"bytes,1,opt,name=provider,proto3" json:"provider,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + LastSyncTime string `protobuf:"bytes,4,opt,name=last_sync_time,json=lastSyncTime,proto3" json:"last_sync_time,omitempty"` +} + +func (x *Region) Reset() { + *x = Region{} + if protoimpl.UnsafeEnabled { + mi := &file_types_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Region) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Region) ProtoMessage() {} + +func (x *Region) ProtoReflect() protoreflect.Message { + mi := &file_types_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Region.ProtoReflect.Descriptor instead. +func (*Region) Descriptor() ([]byte, []int) { + return file_types_proto_rawDescGZIP(), []int{4} +} + +func (x *Region) GetProvider() string { + if x != nil { + return x.Provider + } + return "" +} + +func (x *Region) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Region) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Region) GetLastSyncTime() string { + if x != nil { + return x.LastSyncTime + } + return "" +} + type ACL struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -501,7 +580,7 @@ type ACL struct { func (x *ACL) Reset() { *x = ACL{} if protoimpl.UnsafeEnabled { - mi := &file_types_proto_msgTypes[4] + mi := &file_types_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -514,7 +593,7 @@ func (x *ACL) String() string { func (*ACL) ProtoMessage() {} func (x *ACL) ProtoReflect() protoreflect.Message { - mi := &file_types_proto_msgTypes[4] + mi := &file_types_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -527,7 +606,7 @@ func (x *ACL) ProtoReflect() protoreflect.Message { // Deprecated: Use ACL.ProtoReflect.Descriptor instead. func (*ACL) Descriptor() ([]byte, []int) { - return file_types_proto_rawDescGZIP(), []int{4} + return file_types_proto_rawDescGZIP(), []int{5} } func (x *ACL) GetProvider() string { @@ -612,7 +691,7 @@ type SecurityGroup struct { func (x *SecurityGroup) Reset() { *x = SecurityGroup{} if protoimpl.UnsafeEnabled { - mi := &file_types_proto_msgTypes[5] + mi := &file_types_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -625,7 +704,7 @@ func (x *SecurityGroup) String() string { func (*SecurityGroup) ProtoMessage() {} func (x *SecurityGroup) ProtoReflect() protoreflect.Message { - mi := &file_types_proto_msgTypes[5] + mi := &file_types_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -638,7 +717,7 @@ func (x *SecurityGroup) ProtoReflect() protoreflect.Message { // Deprecated: Use SecurityGroup.ProtoReflect.Descriptor instead. func (*SecurityGroup) Descriptor() ([]byte, []int) { - return file_types_proto_rawDescGZIP(), []int{5} + return file_types_proto_rawDescGZIP(), []int{6} } func (x *SecurityGroup) GetProvider() string { @@ -723,7 +802,7 @@ type RouteTable struct { func (x *RouteTable) Reset() { *x = RouteTable{} if protoimpl.UnsafeEnabled { - mi := &file_types_proto_msgTypes[6] + mi := &file_types_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -736,7 +815,7 @@ func (x *RouteTable) String() string { func (*RouteTable) ProtoMessage() {} func (x *RouteTable) ProtoReflect() protoreflect.Message { - mi := &file_types_proto_msgTypes[6] + mi := &file_types_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -749,7 +828,7 @@ func (x *RouteTable) ProtoReflect() protoreflect.Message { // Deprecated: Use RouteTable.ProtoReflect.Descriptor instead. func (*RouteTable) Descriptor() ([]byte, []int) { - return file_types_proto_rawDescGZIP(), []int{6} + return file_types_proto_rawDescGZIP(), []int{7} } func (x *RouteTable) GetProvider() string { @@ -842,7 +921,7 @@ type Router struct { func (x *Router) Reset() { *x = Router{} if protoimpl.UnsafeEnabled { - mi := &file_types_proto_msgTypes[7] + mi := &file_types_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -855,7 +934,7 @@ func (x *Router) String() string { func (*Router) ProtoMessage() {} func (x *Router) ProtoReflect() protoreflect.Message { - mi := &file_types_proto_msgTypes[7] + mi := &file_types_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -868,7 +947,7 @@ func (x *Router) ProtoReflect() protoreflect.Message { // Deprecated: Use Router.ProtoReflect.Descriptor instead. func (*Router) Descriptor() ([]byte, []int) { - return file_types_proto_rawDescGZIP(), []int{7} + return file_types_proto_rawDescGZIP(), []int{8} } func (x *Router) GetId() string { @@ -1015,7 +1094,7 @@ type NATGateway struct { func (x *NATGateway) Reset() { *x = NATGateway{} if protoimpl.UnsafeEnabled { - mi := &file_types_proto_msgTypes[8] + mi := &file_types_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1028,7 +1107,7 @@ func (x *NATGateway) String() string { func (*NATGateway) ProtoMessage() {} func (x *NATGateway) ProtoReflect() protoreflect.Message { - mi := &file_types_proto_msgTypes[8] + mi := &file_types_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1041,7 +1120,7 @@ func (x *NATGateway) ProtoReflect() protoreflect.Message { // Deprecated: Use NATGateway.ProtoReflect.Descriptor instead. func (*NATGateway) Descriptor() ([]byte, []int) { - return file_types_proto_rawDescGZIP(), []int{8} + return file_types_proto_rawDescGZIP(), []int{9} } func (x *NATGateway) GetId() string { @@ -1170,7 +1249,7 @@ type IGW struct { func (x *IGW) Reset() { *x = IGW{} if protoimpl.UnsafeEnabled { - mi := &file_types_proto_msgTypes[9] + mi := &file_types_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1183,7 +1262,7 @@ func (x *IGW) String() string { func (*IGW) ProtoMessage() {} func (x *IGW) ProtoReflect() protoreflect.Message { - mi := &file_types_proto_msgTypes[9] + mi := &file_types_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1196,7 +1275,7 @@ func (x *IGW) ProtoReflect() protoreflect.Message { // Deprecated: Use IGW.ProtoReflect.Descriptor instead. func (*IGW) Descriptor() ([]byte, []int) { - return file_types_proto_rawDescGZIP(), []int{9} + return file_types_proto_rawDescGZIP(), []int{10} } func (x *IGW) GetId() string { @@ -1276,6 +1355,165 @@ func (x *IGW) GetLastSyncTime() string { return "" } +type VPCEndpoint struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Provider string `protobuf:"bytes,3,opt,name=provider,proto3" json:"provider,omitempty"` + AccountId string `protobuf:"bytes,4,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` + VpcId string `protobuf:"bytes,5,opt,name=vpc_id,json=vpcId,proto3" json:"vpc_id,omitempty"` // + Region string `protobuf:"bytes,6,opt,name=region,proto3" json:"region,omitempty"` // VPC Region + State string `protobuf:"bytes,7,opt,name=state,proto3" json:"state,omitempty"` + Type string `protobuf:"bytes,8,opt,name=type,proto3" json:"type,omitempty"` + ServiceName string `protobuf:"bytes,9,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"` + RouteTableIds string `protobuf:"bytes,10,opt,name=route_table_ids,json=routeTableIds,proto3" json:"route_table_ids,omitempty"` //comma separated subnet ids + SubnetIds string `protobuf:"bytes,11,opt,name=subnet_ids,json=subnetIds,proto3" json:"subnet_ids,omitempty"` //comma separated route table ids + Labels map[string]string `protobuf:"bytes,12,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + LastSyncTime string `protobuf:"bytes,15,opt,name=last_sync_time,json=lastSyncTime,proto3" json:"last_sync_time,omitempty"` +} + +func (x *VPCEndpoint) Reset() { + *x = VPCEndpoint{} + if protoimpl.UnsafeEnabled { + mi := &file_types_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VPCEndpoint) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VPCEndpoint) ProtoMessage() {} + +func (x *VPCEndpoint) ProtoReflect() protoreflect.Message { + mi := &file_types_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VPCEndpoint.ProtoReflect.Descriptor instead. +func (*VPCEndpoint) Descriptor() ([]byte, []int) { + return file_types_proto_rawDescGZIP(), []int{11} +} + +func (x *VPCEndpoint) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *VPCEndpoint) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *VPCEndpoint) GetProvider() string { + if x != nil { + return x.Provider + } + return "" +} + +func (x *VPCEndpoint) GetAccountId() string { + if x != nil { + return x.AccountId + } + return "" +} + +func (x *VPCEndpoint) GetVpcId() string { + if x != nil { + return x.VpcId + } + return "" +} + +func (x *VPCEndpoint) GetRegion() string { + if x != nil { + return x.Region + } + return "" +} + +func (x *VPCEndpoint) GetState() string { + if x != nil { + return x.State + } + return "" +} + +func (x *VPCEndpoint) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *VPCEndpoint) GetServiceName() string { + if x != nil { + return x.ServiceName + } + return "" +} + +func (x *VPCEndpoint) GetRouteTableIds() string { + if x != nil { + return x.RouteTableIds + } + return "" +} + +func (x *VPCEndpoint) GetSubnetIds() string { + if x != nil { + return x.SubnetIds + } + return "" +} + +func (x *VPCEndpoint) GetLabels() map[string]string { + if x != nil { + return x.Labels + } + return nil +} + +func (x *VPCEndpoint) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *VPCEndpoint) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *VPCEndpoint) GetLastSyncTime() string { + if x != nil { + return x.LastSyncTime + } + return "" +} + type Cluster struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1297,7 +1535,7 @@ type Cluster struct { func (x *Cluster) Reset() { *x = Cluster{} if protoimpl.UnsafeEnabled { - mi := &file_types_proto_msgTypes[10] + mi := &file_types_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1310,7 +1548,7 @@ func (x *Cluster) String() string { func (*Cluster) ProtoMessage() {} func (x *Cluster) ProtoReflect() protoreflect.Message { - mi := &file_types_proto_msgTypes[10] + mi := &file_types_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1323,7 +1561,7 @@ func (x *Cluster) ProtoReflect() protoreflect.Message { // Deprecated: Use Cluster.ProtoReflect.Descriptor instead. func (*Cluster) Descriptor() ([]byte, []int) { - return file_types_proto_rawDescGZIP(), []int{10} + return file_types_proto_rawDescGZIP(), []int{12} } func (x *Cluster) GetName() string { @@ -1418,7 +1656,7 @@ type Node struct { func (x *Node) Reset() { *x = Node{} if protoimpl.UnsafeEnabled { - mi := &file_types_proto_msgTypes[11] + mi := &file_types_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1431,7 +1669,7 @@ func (x *Node) String() string { func (*Node) ProtoMessage() {} func (x *Node) ProtoReflect() protoreflect.Message { - mi := &file_types_proto_msgTypes[11] + mi := &file_types_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1444,7 +1682,7 @@ func (x *Node) ProtoReflect() protoreflect.Message { // Deprecated: Use Node.ProtoReflect.Descriptor instead. func (*Node) Descriptor() ([]byte, []int) { - return file_types_proto_rawDescGZIP(), []int{11} + return file_types_proto_rawDescGZIP(), []int{13} } func (x *Node) GetCluster() string { @@ -1496,7 +1734,7 @@ type Namespace struct { func (x *Namespace) Reset() { *x = Namespace{} if protoimpl.UnsafeEnabled { - mi := &file_types_proto_msgTypes[12] + mi := &file_types_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1509,7 +1747,7 @@ func (x *Namespace) String() string { func (*Namespace) ProtoMessage() {} func (x *Namespace) ProtoReflect() protoreflect.Message { - mi := &file_types_proto_msgTypes[12] + mi := &file_types_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1522,7 +1760,7 @@ func (x *Namespace) ProtoReflect() protoreflect.Message { // Deprecated: Use Namespace.ProtoReflect.Descriptor instead. func (*Namespace) Descriptor() ([]byte, []int) { - return file_types_proto_rawDescGZIP(), []int{12} + return file_types_proto_rawDescGZIP(), []int{14} } func (x *Namespace) GetCluster() string { @@ -1570,7 +1808,7 @@ type Pod struct { func (x *Pod) Reset() { *x = Pod{} if protoimpl.UnsafeEnabled { - mi := &file_types_proto_msgTypes[13] + mi := &file_types_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1583,7 +1821,7 @@ func (x *Pod) String() string { func (*Pod) ProtoMessage() {} func (x *Pod) ProtoReflect() protoreflect.Message { - mi := &file_types_proto_msgTypes[13] + mi := &file_types_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1596,7 +1834,7 @@ func (x *Pod) ProtoReflect() protoreflect.Message { // Deprecated: Use Pod.ProtoReflect.Descriptor instead. func (*Pod) Descriptor() ([]byte, []int) { - return file_types_proto_rawDescGZIP(), []int{13} + return file_types_proto_rawDescGZIP(), []int{15} } func (x *Pod) GetCluster() string { @@ -1665,7 +1903,7 @@ type K8SService struct { func (x *K8SService) Reset() { *x = K8SService{} if protoimpl.UnsafeEnabled { - mi := &file_types_proto_msgTypes[14] + mi := &file_types_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1678,7 +1916,7 @@ func (x *K8SService) String() string { func (*K8SService) ProtoMessage() {} func (x *K8SService) ProtoReflect() protoreflect.Message { - mi := &file_types_proto_msgTypes[14] + mi := &file_types_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1691,7 +1929,7 @@ func (x *K8SService) ProtoReflect() protoreflect.Message { // Deprecated: Use K8SService.ProtoReflect.Descriptor instead. func (*K8SService) Descriptor() ([]byte, []int) { - return file_types_proto_rawDescGZIP(), []int{14} + return file_types_proto_rawDescGZIP(), []int{16} } func (x *K8SService) GetCluster() string { @@ -1760,7 +1998,7 @@ type ACL_ACLRule struct { func (x *ACL_ACLRule) Reset() { *x = ACL_ACLRule{} if protoimpl.UnsafeEnabled { - mi := &file_types_proto_msgTypes[18] + mi := &file_types_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1773,7 +2011,7 @@ func (x *ACL_ACLRule) String() string { func (*ACL_ACLRule) ProtoMessage() {} func (x *ACL_ACLRule) ProtoReflect() protoreflect.Message { - mi := &file_types_proto_msgTypes[18] + mi := &file_types_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1786,7 +2024,7 @@ func (x *ACL_ACLRule) ProtoReflect() protoreflect.Message { // Deprecated: Use ACL_ACLRule.ProtoReflect.Descriptor instead. func (*ACL_ACLRule) Descriptor() ([]byte, []int) { - return file_types_proto_rawDescGZIP(), []int{4, 0} + return file_types_proto_rawDescGZIP(), []int{5, 0} } func (x *ACL_ACLRule) GetNumber() int32 { @@ -1852,7 +2090,7 @@ type SecurityGroup_SecurityGroupRule struct { func (x *SecurityGroup_SecurityGroupRule) Reset() { *x = SecurityGroup_SecurityGroupRule{} if protoimpl.UnsafeEnabled { - mi := &file_types_proto_msgTypes[20] + mi := &file_types_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1865,7 +2103,7 @@ func (x *SecurityGroup_SecurityGroupRule) String() string { func (*SecurityGroup_SecurityGroupRule) ProtoMessage() {} func (x *SecurityGroup_SecurityGroupRule) ProtoReflect() protoreflect.Message { - mi := &file_types_proto_msgTypes[20] + mi := &file_types_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1878,7 +2116,7 @@ func (x *SecurityGroup_SecurityGroupRule) ProtoReflect() protoreflect.Message { // Deprecated: Use SecurityGroup_SecurityGroupRule.ProtoReflect.Descriptor instead. func (*SecurityGroup_SecurityGroupRule) Descriptor() ([]byte, []int) { - return file_types_proto_rawDescGZIP(), []int{5, 0} + return file_types_proto_rawDescGZIP(), []int{6, 0} } func (x *SecurityGroup_SecurityGroupRule) GetProtocol() string { @@ -1922,7 +2160,7 @@ type RouteTable_Route struct { func (x *RouteTable_Route) Reset() { *x = RouteTable_Route{} if protoimpl.UnsafeEnabled { - mi := &file_types_proto_msgTypes[22] + mi := &file_types_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1935,7 +2173,7 @@ func (x *RouteTable_Route) String() string { func (*RouteTable_Route) ProtoMessage() {} func (x *RouteTable_Route) ProtoReflect() protoreflect.Message { - mi := &file_types_proto_msgTypes[22] + mi := &file_types_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1948,7 +2186,7 @@ func (x *RouteTable_Route) ProtoReflect() protoreflect.Message { // Deprecated: Use RouteTable_Route.ProtoReflect.Descriptor instead. func (*RouteTable_Route) Descriptor() ([]byte, []int) { - return file_types_proto_rawDescGZIP(), []int{6, 0} + return file_types_proto_rawDescGZIP(), []int{7, 0} } func (x *RouteTable_Route) GetDestination() string { @@ -1985,7 +2223,7 @@ type K8SService_Ingress struct { func (x *K8SService_Ingress) Reset() { *x = K8SService_Ingress{} if protoimpl.UnsafeEnabled { - mi := &file_types_proto_msgTypes[32] + mi := &file_types_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1998,7 +2236,7 @@ func (x *K8SService_Ingress) String() string { func (*K8SService_Ingress) ProtoMessage() {} func (x *K8SService_Ingress) ProtoReflect() protoreflect.Message { - mi := &file_types_proto_msgTypes[32] + mi := &file_types_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2011,7 +2249,7 @@ func (x *K8SService_Ingress) ProtoReflect() protoreflect.Message { // Deprecated: Use K8SService_Ingress.ProtoReflect.Descriptor instead. func (*K8SService_Ingress) Descriptor() ([]byte, []int) { - return file_types_proto_rawDescGZIP(), []int{14, 0} + return file_types_proto_rawDescGZIP(), []int{16, 0} } func (x *K8SService_Ingress) GetHostname() string { @@ -2041,7 +2279,7 @@ var file_types_proto_rawDesc = []byte{ 0x0a, 0x0b, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xad, 0x03, 0x0a, 0x08, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc1, 0x03, 0x0a, 0x08, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, @@ -2062,368 +2300,412 @@ var file_types_proto_rawDesc = []byte{ 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, - 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, - 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe7, 0x02, 0x0a, 0x06, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, - 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, - 0x63, 0x69, 0x64, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x63, 0x69, 0x64, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x70, - 0x63, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x06, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, - 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, - 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, - 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0xc7, 0x02, 0x0a, 0x03, 0x56, 0x50, 0x43, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, - 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, - 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x56, 0x50, 0x43, 0x2e, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x63, 0x69, 0x64, 0x72, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x70, 0x76, 0x34, 0x43, 0x69, 0x64, 0x72, - 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x63, 0x69, 0x64, 0x72, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x70, 0x76, 0x36, 0x43, 0x69, 0x64, 0x72, 0x12, 0x1a, 0x0a, - 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, - 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, + 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6f, 0x0a, 0x07, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, - 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, - 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xb7, 0x04, 0x0a, 0x03, 0x41, - 0x43, 0x4c, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, - 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, - 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, - 0x12, 0x28, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x41, 0x43, 0x4c, 0x2e, 0x41, 0x43, 0x4c, 0x52, - 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x66, - 0x72, 0x61, 0x2e, 0x41, 0x43, 0x4c, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, - 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, - 0x1a, 0xe6, 0x01, 0x0a, 0x07, 0x41, 0x43, 0x4c, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, - 0x23, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x61, - 0x6e, 0x67, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x11, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, - 0x67, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x64, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0xfd, 0x03, 0x0a, 0x0d, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, - 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, 0x16, 0x0a, - 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, - 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3c, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x53, 0x65, 0x63, 0x75, - 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, - 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, - 0x65, 0x73, 0x12, 0x38, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, - 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x24, 0x0a, 0x0e, - 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, - 0x6d, 0x65, 0x1a, 0x84, 0x01, 0x0a, 0x11, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x61, 0x6e, - 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x61, - 0x6e, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0xbe, 0x03, 0x0a, 0x0a, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, - 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, - 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, - 0x64, 0x12, 0x2f, 0x0a, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x06, 0x72, 0x6f, 0x75, 0x74, - 0x65, 0x73, 0x12, 0x35, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, - 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x1a, - 0x59, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, - 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xfd, 0x05, 0x0a, 0x06, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, - 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x73, 0x6e, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x03, 0x61, 0x73, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x64, 0x76, 0x65, 0x72, - 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x52, 0x61, 0x6e, - 0x67, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, - 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x64, - 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x19, 0x0a, - 0x08, 0x76, 0x70, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x76, 0x70, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x6e, - 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x75, 0x62, - 0x6e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, - 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x72, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, - 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, - 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x5c, 0x0a, 0x15, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x11, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, - 0x72, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, - 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x61, 0x64, 0x64, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, - 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x47, 0x0a, 0x19, - 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, - 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc2, 0x05, 0x0a, 0x0a, 0x4e, 0x41, 0x54, 0x47, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, - 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, - 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, - 0x69, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x49, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, - 0x5f, 0x69, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x76, 0x61, - 0x74, 0x65, 0x49, 0x70, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x49, - 0x64, 0x12, 0x35, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4e, 0x41, 0x54, 0x47, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x24, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xdd, 0x02, 0x0a, 0x06, 0x53, 0x75, + 0x62, 0x6e, 0x65, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x69, 0x64, 0x72, 0x5f, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x69, 0x64, 0x72, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x7a, 0x6f, + 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, + 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x53, + 0x75, 0x62, 0x6e, 0x65, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, + 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, + 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0x39, + 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc7, 0x02, 0x0a, 0x03, 0x56, 0x50, + 0x43, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, + 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x56, 0x50, 0x43, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1b, 0x0a, + 0x09, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x63, 0x69, 0x64, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x69, 0x70, 0x76, 0x34, 0x43, 0x69, 0x64, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x70, + 0x76, 0x36, 0x5f, 0x63, 0x69, 0x64, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, + 0x70, 0x76, 0x36, 0x43, 0x69, 0x64, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, + 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0x6f, 0x0a, 0x07, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x60, 0x0a, 0x15, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x0f, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4e, 0x41, 0x54, 0x47, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x14, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, - 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x1a, 0x47, 0x0a, 0x19, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, - 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc1, 0x03, 0x0a, 0x03, 0x49, - 0x47, 0x57, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, - 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x76, 0x70, - 0x63, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x74, 0x74, 0x61, - 0x63, 0x68, 0x65, 0x64, 0x56, 0x70, 0x63, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, - 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, - 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, - 0x49, 0x47, 0x57, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x24, 0x0a, - 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, - 0x69, 0x6d, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, + 0x54, 0x69, 0x6d, 0x65, 0x22, 0x6e, 0x0a, 0x06, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, + 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, + 0x54, 0x69, 0x6d, 0x65, 0x22, 0xb7, 0x04, 0x0a, 0x03, 0x41, 0x43, 0x4c, 0x12, 0x1a, 0x0a, 0x08, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x06, + 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, + 0x63, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x05, 0x72, 0x75, + 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x69, 0x6e, 0x66, 0x72, + 0x61, 0x2e, 0x41, 0x43, 0x4c, 0x2e, 0x41, 0x43, 0x4c, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, + 0x75, 0x6c, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x08, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x41, 0x43, 0x4c, + 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, + 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, + 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0xe6, 0x01, 0x0a, 0x07, 0x41, + 0x43, 0x4c, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f, + 0x72, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x70, 0x6f, 0x72, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x2d, + 0x0a, 0x12, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, + 0x6e, 0x67, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x64, 0x65, 0x73, 0x74, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x16, 0x0a, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xfd, + 0x03, 0x0a, 0x0d, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, + 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, + 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3c, + 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, + 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x06, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x69, + 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, + 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x84, 0x01, 0x0a, + 0x11, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x75, + 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x1d, + 0x0a, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf5, - 0x02, 0x0a, 0x07, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, - 0x0a, 0x09, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x61, - 0x72, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x72, 0x6e, 0x12, 0x15, 0x0a, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xbe, + 0x03, 0x0a, 0x0a, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x32, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, - 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, - 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x06, 0x72, + 0x6f, 0x75, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x6e, + 0x66, 0x72, 0x61, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x52, + 0x6f, 0x75, 0x74, 0x65, 0x52, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x06, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x69, + 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x2e, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, + 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x59, 0x0a, 0x05, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0xfd, 0x05, 0x0a, 0x06, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, + 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, + 0x6f, 0x6e, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x61, 0x73, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x61, 0x73, + 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, + 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x64, 0x76, + 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x29, 0x0a, 0x10, + 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, + 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x76, 0x70, 0x6e, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x70, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x49, 0x64, 0x12, + 0x31, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, + 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, + 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x5c, 0x0a, + 0x15, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x70, + 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, + 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x41, 0x64, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x96, 0x01, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, - 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x22, - 0xd0, 0x01, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, 0x6e, - 0x66, 0x72, 0x61, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, 0x4c, 0x61, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x47, 0x0a, 0x19, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0xc2, 0x05, 0x0a, 0x0a, 0x4e, 0x41, 0x54, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x1d, + 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x15, 0x0a, + 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, + 0x70, 0x63, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x69, 0x70, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x70, 0x12, + 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x49, 0x70, 0x12, 0x1b, + 0x0a, 0x09, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x35, 0x0a, 0x06, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x69, 0x6e, + 0x66, 0x72, 0x61, 0x2e, 0x4e, 0x41, 0x54, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, + 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, + 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x60, + 0x0a, 0x15, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, + 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, + 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4e, 0x41, 0x54, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x61, 0x64, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, + 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x47, 0x0a, 0x19, 0x41, + 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, + 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc1, 0x03, 0x0a, 0x03, 0x49, 0x47, 0x57, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x61, + 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x56, 0x70, + 0x63, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x49, 0x47, 0x57, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, - 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0x88, 0x02, 0x0a, 0x03, 0x50, 0x6f, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, + 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, + 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x39, 0x0a, + 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xbe, 0x04, 0x0a, 0x0b, 0x56, 0x50, 0x43, + 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, 0x16, + 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x6f, + 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73, + 0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x36, 0x0a, 0x06, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x66, + 0x72, 0x61, 0x2e, 0x56, 0x50, 0x43, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, + 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, + 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x39, + 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf5, 0x02, 0x0a, 0x07, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x75, 0x6c, + 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x75, + 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x72, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x72, 0x6e, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, + 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, + 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x12, 0x32, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, + 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x22, 0x96, 0x01, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x2e, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x50, - 0x6f, 0x64, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x0e, - 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, + 0x73, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, + 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, + 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xd0, 0x01, 0x0a, 0x09, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x24, 0x0a, 0x0e, + 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8a, 0x03, - 0x0a, 0x0a, 0x4b, 0x38, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x09, 0x69, 0x6e, 0x67, 0x72, - 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, - 0x66, 0x72, 0x61, 0x2e, 0x4b, 0x38, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x49, - 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x09, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x65, - 0x73, 0x12, 0x35, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4b, 0x38, 0x73, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0e, - 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, - 0x6d, 0x65, 0x1a, 0x4b, 0x0a, 0x07, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, - 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x50, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x50, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x72, - 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x1a, - 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0c, 0x5a, 0x0a, 0x2e, 0x2f, - 0x3b, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x88, 0x02, + 0x0a, 0x03, 0x50, 0x6f, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, + 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x70, 0x12, 0x2e, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x50, 0x6f, 0x64, 0x2e, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, + 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x39, 0x0a, + 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8a, 0x03, 0x0a, 0x0a, 0x4b, 0x38, 0x73, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x09, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4b, + 0x38, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, + 0x73, 0x52, 0x09, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x06, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x69, + 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x4b, 0x38, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, + 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x4b, 0x0a, + 0x07, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x50, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x49, 0x50, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0c, 0x5a, 0x0a, 0x2e, 0x2f, 0x3b, 0x69, 0x6e, 0x66, 0x72, + 0x61, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2438,75 +2720,81 @@ func file_types_proto_rawDescGZIP() []byte { return file_types_proto_rawDescData } -var file_types_proto_msgTypes = make([]protoimpl.MessageInfo, 34) +var file_types_proto_msgTypes = make([]protoimpl.MessageInfo, 37) var file_types_proto_goTypes = []interface{}{ (*Instance)(nil), // 0: infra.Instance (*Subnet)(nil), // 1: infra.Subnet (*VPC)(nil), // 2: infra.VPC (*Account)(nil), // 3: infra.Account - (*ACL)(nil), // 4: infra.ACL - (*SecurityGroup)(nil), // 5: infra.SecurityGroup - (*RouteTable)(nil), // 6: infra.RouteTable - (*Router)(nil), // 7: infra.Router - (*NATGateway)(nil), // 8: infra.NATGateway - (*IGW)(nil), // 9: infra.IGW - (*Cluster)(nil), // 10: infra.Cluster - (*Node)(nil), // 11: infra.Node - (*Namespace)(nil), // 12: infra.Namespace - (*Pod)(nil), // 13: infra.Pod - (*K8SService)(nil), // 14: infra.K8sService - nil, // 15: infra.Instance.LabelsEntry - nil, // 16: infra.Subnet.LabelsEntry - nil, // 17: infra.VPC.LabelsEntry - (*ACL_ACLRule)(nil), // 18: infra.ACL.ACLRule - nil, // 19: infra.ACL.LabelsEntry - (*SecurityGroup_SecurityGroupRule)(nil), // 20: infra.SecurityGroup.SecurityGroupRule - nil, // 21: infra.SecurityGroup.LabelsEntry - (*RouteTable_Route)(nil), // 22: infra.RouteTable.Route - nil, // 23: infra.RouteTable.LabelsEntry - nil, // 24: infra.Router.LabelsEntry - nil, // 25: infra.Router.AdditionalPropertiesEntry - nil, // 26: infra.NATGateway.LabelsEntry - nil, // 27: infra.NATGateway.AdditionalPropertiesEntry - nil, // 28: infra.IGW.LabelsEntry - nil, // 29: infra.Cluster.LabelsEntry - nil, // 30: infra.Namespace.LabelsEntry - nil, // 31: infra.Pod.LabelsEntry - (*K8SService_Ingress)(nil), // 32: infra.K8sService.Ingress - nil, // 33: infra.K8sService.LabelsEntry - (*timestamppb.Timestamp)(nil), // 34: google.protobuf.Timestamp + (*Region)(nil), // 4: infra.Region + (*ACL)(nil), // 5: infra.ACL + (*SecurityGroup)(nil), // 6: infra.SecurityGroup + (*RouteTable)(nil), // 7: infra.RouteTable + (*Router)(nil), // 8: infra.Router + (*NATGateway)(nil), // 9: infra.NATGateway + (*IGW)(nil), // 10: infra.IGW + (*VPCEndpoint)(nil), // 11: infra.VPCEndpoint + (*Cluster)(nil), // 12: infra.Cluster + (*Node)(nil), // 13: infra.Node + (*Namespace)(nil), // 14: infra.Namespace + (*Pod)(nil), // 15: infra.Pod + (*K8SService)(nil), // 16: infra.K8sService + nil, // 17: infra.Instance.LabelsEntry + nil, // 18: infra.Subnet.LabelsEntry + nil, // 19: infra.VPC.LabelsEntry + (*ACL_ACLRule)(nil), // 20: infra.ACL.ACLRule + nil, // 21: infra.ACL.LabelsEntry + (*SecurityGroup_SecurityGroupRule)(nil), // 22: infra.SecurityGroup.SecurityGroupRule + nil, // 23: infra.SecurityGroup.LabelsEntry + (*RouteTable_Route)(nil), // 24: infra.RouteTable.Route + nil, // 25: infra.RouteTable.LabelsEntry + nil, // 26: infra.Router.LabelsEntry + nil, // 27: infra.Router.AdditionalPropertiesEntry + nil, // 28: infra.NATGateway.LabelsEntry + nil, // 29: infra.NATGateway.AdditionalPropertiesEntry + nil, // 30: infra.IGW.LabelsEntry + nil, // 31: infra.VPCEndpoint.LabelsEntry + nil, // 32: infra.Cluster.LabelsEntry + nil, // 33: infra.Namespace.LabelsEntry + nil, // 34: infra.Pod.LabelsEntry + (*K8SService_Ingress)(nil), // 35: infra.K8sService.Ingress + nil, // 36: infra.K8sService.LabelsEntry + (*timestamppb.Timestamp)(nil), // 37: google.protobuf.Timestamp } var file_types_proto_depIdxs = []int32{ - 15, // 0: infra.Instance.labels:type_name -> infra.Instance.LabelsEntry - 16, // 1: infra.Subnet.labels:type_name -> infra.Subnet.LabelsEntry - 17, // 2: infra.VPC.labels:type_name -> infra.VPC.LabelsEntry - 18, // 3: infra.ACL.rules:type_name -> infra.ACL.ACLRule - 19, // 4: infra.ACL.labels:type_name -> infra.ACL.LabelsEntry - 20, // 5: infra.SecurityGroup.rules:type_name -> infra.SecurityGroup.SecurityGroupRule - 21, // 6: infra.SecurityGroup.labels:type_name -> infra.SecurityGroup.LabelsEntry - 22, // 7: infra.RouteTable.routes:type_name -> infra.RouteTable.Route - 23, // 8: infra.RouteTable.labels:type_name -> infra.RouteTable.LabelsEntry - 24, // 9: infra.Router.labels:type_name -> infra.Router.LabelsEntry - 34, // 10: infra.Router.created_at:type_name -> google.protobuf.Timestamp - 34, // 11: infra.Router.updated_at:type_name -> google.protobuf.Timestamp - 25, // 12: infra.Router.additional_properties:type_name -> infra.Router.AdditionalPropertiesEntry - 26, // 13: infra.NATGateway.labels:type_name -> infra.NATGateway.LabelsEntry - 34, // 14: infra.NATGateway.created_at:type_name -> google.protobuf.Timestamp - 34, // 15: infra.NATGateway.updated_at:type_name -> google.protobuf.Timestamp - 27, // 16: infra.NATGateway.additional_properties:type_name -> infra.NATGateway.AdditionalPropertiesEntry - 28, // 17: infra.IGW.labels:type_name -> infra.IGW.LabelsEntry - 34, // 18: infra.IGW.created_at:type_name -> google.protobuf.Timestamp - 34, // 19: infra.IGW.updated_at:type_name -> google.protobuf.Timestamp - 29, // 20: infra.Cluster.labels:type_name -> infra.Cluster.LabelsEntry - 30, // 21: infra.Namespace.labels:type_name -> infra.Namespace.LabelsEntry - 31, // 22: infra.Pod.labels:type_name -> infra.Pod.LabelsEntry - 32, // 23: infra.K8sService.ingresses:type_name -> infra.K8sService.Ingress - 33, // 24: infra.K8sService.labels:type_name -> infra.K8sService.LabelsEntry - 25, // [25:25] is the sub-list for method output_type - 25, // [25:25] is the sub-list for method input_type - 25, // [25:25] is the sub-list for extension type_name - 25, // [25:25] is the sub-list for extension extendee - 0, // [0:25] is the sub-list for field type_name + 17, // 0: infra.Instance.labels:type_name -> infra.Instance.LabelsEntry + 18, // 1: infra.Subnet.labels:type_name -> infra.Subnet.LabelsEntry + 19, // 2: infra.VPC.labels:type_name -> infra.VPC.LabelsEntry + 20, // 3: infra.ACL.rules:type_name -> infra.ACL.ACLRule + 21, // 4: infra.ACL.labels:type_name -> infra.ACL.LabelsEntry + 22, // 5: infra.SecurityGroup.rules:type_name -> infra.SecurityGroup.SecurityGroupRule + 23, // 6: infra.SecurityGroup.labels:type_name -> infra.SecurityGroup.LabelsEntry + 24, // 7: infra.RouteTable.routes:type_name -> infra.RouteTable.Route + 25, // 8: infra.RouteTable.labels:type_name -> infra.RouteTable.LabelsEntry + 26, // 9: infra.Router.labels:type_name -> infra.Router.LabelsEntry + 37, // 10: infra.Router.created_at:type_name -> google.protobuf.Timestamp + 37, // 11: infra.Router.updated_at:type_name -> google.protobuf.Timestamp + 27, // 12: infra.Router.additional_properties:type_name -> infra.Router.AdditionalPropertiesEntry + 28, // 13: infra.NATGateway.labels:type_name -> infra.NATGateway.LabelsEntry + 37, // 14: infra.NATGateway.created_at:type_name -> google.protobuf.Timestamp + 37, // 15: infra.NATGateway.updated_at:type_name -> google.protobuf.Timestamp + 29, // 16: infra.NATGateway.additional_properties:type_name -> infra.NATGateway.AdditionalPropertiesEntry + 30, // 17: infra.IGW.labels:type_name -> infra.IGW.LabelsEntry + 37, // 18: infra.IGW.created_at:type_name -> google.protobuf.Timestamp + 37, // 19: infra.IGW.updated_at:type_name -> google.protobuf.Timestamp + 31, // 20: infra.VPCEndpoint.labels:type_name -> infra.VPCEndpoint.LabelsEntry + 37, // 21: infra.VPCEndpoint.created_at:type_name -> google.protobuf.Timestamp + 37, // 22: infra.VPCEndpoint.updated_at:type_name -> google.protobuf.Timestamp + 32, // 23: infra.Cluster.labels:type_name -> infra.Cluster.LabelsEntry + 33, // 24: infra.Namespace.labels:type_name -> infra.Namespace.LabelsEntry + 34, // 25: infra.Pod.labels:type_name -> infra.Pod.LabelsEntry + 35, // 26: infra.K8sService.ingresses:type_name -> infra.K8sService.Ingress + 36, // 27: infra.K8sService.labels:type_name -> infra.K8sService.LabelsEntry + 28, // [28:28] is the sub-list for method output_type + 28, // [28:28] is the sub-list for method input_type + 28, // [28:28] is the sub-list for extension type_name + 28, // [28:28] is the sub-list for extension extendee + 0, // [0:28] is the sub-list for field type_name } func init() { file_types_proto_init() } @@ -2564,7 +2852,7 @@ func file_types_proto_init() { } } file_types_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ACL); i { + switch v := v.(*Region); i { case 0: return &v.state case 1: @@ -2576,7 +2864,7 @@ func file_types_proto_init() { } } file_types_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SecurityGroup); i { + switch v := v.(*ACL); i { case 0: return &v.state case 1: @@ -2588,7 +2876,7 @@ func file_types_proto_init() { } } file_types_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RouteTable); i { + switch v := v.(*SecurityGroup); i { case 0: return &v.state case 1: @@ -2600,7 +2888,7 @@ func file_types_proto_init() { } } file_types_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Router); i { + switch v := v.(*RouteTable); i { case 0: return &v.state case 1: @@ -2612,7 +2900,7 @@ func file_types_proto_init() { } } file_types_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NATGateway); i { + switch v := v.(*Router); i { case 0: return &v.state case 1: @@ -2624,7 +2912,7 @@ func file_types_proto_init() { } } file_types_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IGW); i { + switch v := v.(*NATGateway); i { case 0: return &v.state case 1: @@ -2636,7 +2924,7 @@ func file_types_proto_init() { } } file_types_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Cluster); i { + switch v := v.(*IGW); i { case 0: return &v.state case 1: @@ -2648,7 +2936,7 @@ func file_types_proto_init() { } } file_types_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Node); i { + switch v := v.(*VPCEndpoint); i { case 0: return &v.state case 1: @@ -2660,7 +2948,7 @@ func file_types_proto_init() { } } file_types_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Namespace); i { + switch v := v.(*Cluster); i { case 0: return &v.state case 1: @@ -2672,7 +2960,7 @@ func file_types_proto_init() { } } file_types_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Pod); i { + switch v := v.(*Node); i { case 0: return &v.state case 1: @@ -2684,6 +2972,30 @@ func file_types_proto_init() { } } file_types_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Namespace); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_types_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Pod); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_types_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*K8SService); i { case 0: return &v.state @@ -2695,7 +3007,7 @@ func file_types_proto_init() { return nil } } - file_types_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_types_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ACL_ACLRule); i { case 0: return &v.state @@ -2707,7 +3019,7 @@ func file_types_proto_init() { return nil } } - file_types_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_types_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SecurityGroup_SecurityGroupRule); i { case 0: return &v.state @@ -2719,7 +3031,7 @@ func file_types_proto_init() { return nil } } - file_types_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_types_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RouteTable_Route); i { case 0: return &v.state @@ -2731,7 +3043,7 @@ func file_types_proto_init() { return nil } } - file_types_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + file_types_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*K8SService_Ingress); i { case 0: return &v.state @@ -2750,7 +3062,7 @@ func file_types_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_types_proto_rawDesc, NumEnums: 0, - NumMessages: 34, + NumMessages: 37, NumExtensions: 0, NumServices: 0, }, diff --git a/grpc/js/access_control_pb.js b/grpc/js/access_control_pb.js index 5af76ee..98744f4 100644 --- a/grpc/js/access_control_pb.js +++ b/grpc/js/access_control_pb.js @@ -1,22 +1,3 @@ -/** - * Copyright (c) 2024 Cisco Systems, Inc. and its affiliates - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - */ - // source: access_control.proto /** * @fileoverview diff --git a/grpc/js/cloud_grpc_web_pb.js b/grpc/js/cloud_grpc_web_pb.js index bbfbdbe..f3ab19e 100644 --- a/grpc/js/cloud_grpc_web_pb.js +++ b/grpc/js/cloud_grpc_web_pb.js @@ -137,6 +137,67 @@ proto.infra.CloudProviderServicePromiseClient.prototype.listAccounts = }; +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.infra.ListRegionsRequest, + * !proto.infra.ListRegionsResponse>} + */ +const methodDescriptor_CloudProviderService_ListRegions = new grpc.web.MethodDescriptor( + '/infra.CloudProviderService/ListRegions', + grpc.web.MethodType.UNARY, + proto.infra.ListRegionsRequest, + proto.infra.ListRegionsResponse, + /** + * @param {!proto.infra.ListRegionsRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.infra.ListRegionsResponse.deserializeBinary +); + + +/** + * @param {!proto.infra.ListRegionsRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.infra.ListRegionsResponse)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.infra.CloudProviderServiceClient.prototype.listRegions = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/infra.CloudProviderService/ListRegions', + request, + metadata || {}, + methodDescriptor_CloudProviderService_ListRegions, + callback); +}; + + +/** + * @param {!proto.infra.ListRegionsRequest} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.infra.CloudProviderServicePromiseClient.prototype.listRegions = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/infra.CloudProviderService/ListRegions', + request, + metadata || {}, + methodDescriptor_CloudProviderService_ListRegions); +}; + + /** * @const * @type {!grpc.web.MethodDescriptor< @@ -747,6 +808,67 @@ proto.infra.CloudProviderServicePromiseClient.prototype.listInternetGateways = }; +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.infra.ListVPCEndpointsRequest, + * !proto.infra.ListVPCEndpointsResponse>} + */ +const methodDescriptor_CloudProviderService_ListVPCEndpoints = new grpc.web.MethodDescriptor( + '/infra.CloudProviderService/ListVPCEndpoints', + grpc.web.MethodType.UNARY, + proto.infra.ListVPCEndpointsRequest, + proto.infra.ListVPCEndpointsResponse, + /** + * @param {!proto.infra.ListVPCEndpointsRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.infra.ListVPCEndpointsResponse.deserializeBinary +); + + +/** + * @param {!proto.infra.ListVPCEndpointsRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.infra.ListVPCEndpointsResponse)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.infra.CloudProviderServiceClient.prototype.listVPCEndpoints = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/infra.CloudProviderService/ListVPCEndpoints', + request, + metadata || {}, + methodDescriptor_CloudProviderService_ListVPCEndpoints, + callback); +}; + + +/** + * @param {!proto.infra.ListVPCEndpointsRequest} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.infra.CloudProviderServicePromiseClient.prototype.listVPCEndpoints = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/infra.CloudProviderService/ListVPCEndpoints', + request, + metadata || {}, + methodDescriptor_CloudProviderService_ListVPCEndpoints); +}; + + /** * @const * @type {!grpc.web.MethodDescriptor< diff --git a/grpc/js/cloud_pb.js b/grpc/js/cloud_pb.js index abc8360..2075584 100644 --- a/grpc/js/cloud_pb.js +++ b/grpc/js/cloud_pb.js @@ -1,22 +1,3 @@ -/** - * Copyright (c) 2024 Cisco Systems, Inc. and its affiliates - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - */ - // source: cloud.proto /** * @fileoverview @@ -61,6 +42,8 @@ goog.exportSymbol('proto.infra.ListInternetGatewaysRequest', null, global); goog.exportSymbol('proto.infra.ListInternetGatewaysResponse', null, global); goog.exportSymbol('proto.infra.ListNATGatewaysRequest', null, global); goog.exportSymbol('proto.infra.ListNATGatewaysResponse', null, global); +goog.exportSymbol('proto.infra.ListRegionsRequest', null, global); +goog.exportSymbol('proto.infra.ListRegionsResponse', null, global); goog.exportSymbol('proto.infra.ListRouteTablesRequest', null, global); goog.exportSymbol('proto.infra.ListRouteTablesResponse', null, global); goog.exportSymbol('proto.infra.ListRoutersRequest', null, global); @@ -69,6 +52,8 @@ goog.exportSymbol('proto.infra.ListSecurityGroupsRequest', null, global); goog.exportSymbol('proto.infra.ListSecurityGroupsResponse', null, global); goog.exportSymbol('proto.infra.ListSubnetsRequest', null, global); goog.exportSymbol('proto.infra.ListSubnetsResponse', null, global); +goog.exportSymbol('proto.infra.ListVPCEndpointsRequest', null, global); +goog.exportSymbol('proto.infra.ListVPCEndpointsResponse', null, global); goog.exportSymbol('proto.infra.ListVPCRequest', null, global); goog.exportSymbol('proto.infra.ListVPCResponse', null, global); goog.exportSymbol('proto.infra.StatusSummary', null, global); @@ -116,6 +101,48 @@ if (goog.DEBUG && !COMPILED) { */ proto.infra.ListAccountsResponse.displayName = 'proto.infra.ListAccountsResponse'; } +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.infra.ListRegionsRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.infra.ListRegionsRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.infra.ListRegionsRequest.displayName = 'proto.infra.ListRegionsRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.infra.ListRegionsResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, proto.infra.ListRegionsResponse.repeatedFields_, null); +}; +goog.inherits(proto.infra.ListRegionsResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.infra.ListRegionsResponse.displayName = 'proto.infra.ListRegionsResponse'; +} /** * Generated by JsPbCodeGenerator. * @param {Array=} opt_data Optional initial data array, typically from a @@ -452,6 +479,48 @@ if (goog.DEBUG && !COMPILED) { */ proto.infra.ListInternetGatewaysResponse.displayName = 'proto.infra.ListInternetGatewaysResponse'; } +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.infra.ListVPCEndpointsResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, proto.infra.ListVPCEndpointsResponse.repeatedFields_, null); +}; +goog.inherits(proto.infra.ListVPCEndpointsResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.infra.ListVPCEndpointsResponse.displayName = 'proto.infra.ListVPCEndpointsResponse'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.infra.ListVPCEndpointsRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.infra.ListVPCEndpointsRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.infra.ListVPCEndpointsRequest.displayName = 'proto.infra.ListVPCEndpointsRequest'; +} /** * Generated by JsPbCodeGenerator. * @param {Array=} opt_data Optional initial data array, typically from a @@ -1178,8 +1247,8 @@ if (jspb.Message.GENERATE_TO_OBJECT) { * http://goto/soy-param-migration * @return {!Object} */ -proto.infra.ListVPCRequest.prototype.toObject = function(opt_includeInstance) { - return proto.infra.ListVPCRequest.toObject(opt_includeInstance, this); +proto.infra.ListRegionsRequest.prototype.toObject = function(opt_includeInstance) { + return proto.infra.ListRegionsRequest.toObject(opt_includeInstance, this); }; @@ -1188,16 +1257,14 @@ proto.infra.ListVPCRequest.prototype.toObject = function(opt_includeInstance) { * @param {boolean|undefined} includeInstance Deprecated. Whether to include * the JSPB instance for transitional soy proto support: * http://goto/soy-param-migration - * @param {!proto.infra.ListVPCRequest} msg The msg instance to transform. + * @param {!proto.infra.ListRegionsRequest} msg The msg instance to transform. * @return {!Object} * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListVPCRequest.toObject = function(includeInstance, msg) { +proto.infra.ListRegionsRequest.toObject = function(includeInstance, msg) { var f, obj = { provider: jspb.Message.getFieldWithDefault(msg, 1, ""), - region: jspb.Message.getFieldWithDefault(msg, 2, ""), - labelsMap: (f = msg.getLabelsMap()) ? f.toObject(includeInstance, undefined) : [], - accountId: jspb.Message.getFieldWithDefault(msg, 4, "") + accountId: jspb.Message.getFieldWithDefault(msg, 2, "") }; if (includeInstance) { @@ -1211,23 +1278,23 @@ proto.infra.ListVPCRequest.toObject = function(includeInstance, msg) { /** * Deserializes binary data (in protobuf wire format). * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.infra.ListVPCRequest} + * @return {!proto.infra.ListRegionsRequest} */ -proto.infra.ListVPCRequest.deserializeBinary = function(bytes) { +proto.infra.ListRegionsRequest.deserializeBinary = function(bytes) { var reader = new jspb.BinaryReader(bytes); - var msg = new proto.infra.ListVPCRequest; - return proto.infra.ListVPCRequest.deserializeBinaryFromReader(msg, reader); + var msg = new proto.infra.ListRegionsRequest; + return proto.infra.ListRegionsRequest.deserializeBinaryFromReader(msg, reader); }; /** * Deserializes binary data (in protobuf wire format) from the * given reader into the given message object. - * @param {!proto.infra.ListVPCRequest} msg The message object to deserialize into. + * @param {!proto.infra.ListRegionsRequest} msg The message object to deserialize into. * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.infra.ListVPCRequest} + * @return {!proto.infra.ListRegionsRequest} */ -proto.infra.ListVPCRequest.deserializeBinaryFromReader = function(msg, reader) { +proto.infra.ListRegionsRequest.deserializeBinaryFromReader = function(msg, reader) { while (reader.nextField()) { if (reader.isEndGroup()) { break; @@ -1239,16 +1306,6 @@ proto.infra.ListVPCRequest.deserializeBinaryFromReader = function(msg, reader) { msg.setProvider(value); break; case 2: - var value = /** @type {string} */ (reader.readString()); - msg.setRegion(value); - break; - case 3: - var value = msg.getLabelsMap(); - reader.readMessage(value, function(message, reader) { - jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, "", ""); - }); - break; - case 4: var value = /** @type {string} */ (reader.readString()); msg.setAccountId(value); break; @@ -1265,9 +1322,9 @@ proto.infra.ListVPCRequest.deserializeBinaryFromReader = function(msg, reader) { * Serializes the message to binary data (in protobuf wire format). * @return {!Uint8Array} */ -proto.infra.ListVPCRequest.prototype.serializeBinary = function() { +proto.infra.ListRegionsRequest.prototype.serializeBinary = function() { var writer = new jspb.BinaryWriter(); - proto.infra.ListVPCRequest.serializeBinaryToWriter(this, writer); + proto.infra.ListRegionsRequest.serializeBinaryToWriter(this, writer); return writer.getResultBuffer(); }; @@ -1275,11 +1332,11 @@ proto.infra.ListVPCRequest.prototype.serializeBinary = function() { /** * Serializes the given message to binary data (in protobuf wire * format), writing to the given BinaryWriter. - * @param {!proto.infra.ListVPCRequest} message + * @param {!proto.infra.ListRegionsRequest} message * @param {!jspb.BinaryWriter} writer * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListVPCRequest.serializeBinaryToWriter = function(message, writer) { +proto.infra.ListRegionsRequest.serializeBinaryToWriter = function(message, writer) { var f = undefined; f = message.getProvider(); if (f.length > 0) { @@ -1288,21 +1345,10 @@ proto.infra.ListVPCRequest.serializeBinaryToWriter = function(message, writer) { f ); } - f = message.getRegion(); - if (f.length > 0) { - writer.writeString( - 2, - f - ); - } - f = message.getLabelsMap(true); - if (f && f.getLength() > 0) { - f.serializeBinary(3, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString); - } f = message.getAccountId(); if (f.length > 0) { writer.writeString( - 4, + 2, f ); } @@ -1313,85 +1359,45 @@ proto.infra.ListVPCRequest.serializeBinaryToWriter = function(message, writer) { * optional string provider = 1; * @return {string} */ -proto.infra.ListVPCRequest.prototype.getProvider = function() { +proto.infra.ListRegionsRequest.prototype.getProvider = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); }; /** * @param {string} value - * @return {!proto.infra.ListVPCRequest} returns this + * @return {!proto.infra.ListRegionsRequest} returns this */ -proto.infra.ListVPCRequest.prototype.setProvider = function(value) { +proto.infra.ListRegionsRequest.prototype.setProvider = function(value) { return jspb.Message.setProto3StringField(this, 1, value); }; /** - * optional string region = 2; + * optional string account_id = 2; * @return {string} */ -proto.infra.ListVPCRequest.prototype.getRegion = function() { +proto.infra.ListRegionsRequest.prototype.getAccountId = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); }; /** * @param {string} value - * @return {!proto.infra.ListVPCRequest} returns this + * @return {!proto.infra.ListRegionsRequest} returns this */ -proto.infra.ListVPCRequest.prototype.setRegion = function(value) { +proto.infra.ListRegionsRequest.prototype.setAccountId = function(value) { return jspb.Message.setProto3StringField(this, 2, value); }; -/** - * map labels = 3; - * @param {boolean=} opt_noLazyCreate Do not create the map if - * empty, instead returning `undefined` - * @return {!jspb.Map} - */ -proto.infra.ListVPCRequest.prototype.getLabelsMap = function(opt_noLazyCreate) { - return /** @type {!jspb.Map} */ ( - jspb.Message.getMapField(this, 3, opt_noLazyCreate, - null)); -}; - - -/** - * Clears values from the map. The map will be non-null. - * @return {!proto.infra.ListVPCRequest} returns this - */ -proto.infra.ListVPCRequest.prototype.clearLabelsMap = function() { - this.getLabelsMap().clear(); - return this;}; - - -/** - * optional string account_id = 4; - * @return {string} - */ -proto.infra.ListVPCRequest.prototype.getAccountId = function() { - return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, "")); -}; - - -/** - * @param {string} value - * @return {!proto.infra.ListVPCRequest} returns this - */ -proto.infra.ListVPCRequest.prototype.setAccountId = function(value) { - return jspb.Message.setProto3StringField(this, 4, value); -}; - - /** * List of repeated fields within this message type. * @private {!Array} * @const */ -proto.infra.ListVPCResponse.repeatedFields_ = [1]; +proto.infra.ListRegionsResponse.repeatedFields_ = [1]; @@ -1408,8 +1414,8 @@ if (jspb.Message.GENERATE_TO_OBJECT) { * http://goto/soy-param-migration * @return {!Object} */ -proto.infra.ListVPCResponse.prototype.toObject = function(opt_includeInstance) { - return proto.infra.ListVPCResponse.toObject(opt_includeInstance, this); +proto.infra.ListRegionsResponse.prototype.toObject = function(opt_includeInstance) { + return proto.infra.ListRegionsResponse.toObject(opt_includeInstance, this); }; @@ -1418,15 +1424,14 @@ proto.infra.ListVPCResponse.prototype.toObject = function(opt_includeInstance) { * @param {boolean|undefined} includeInstance Deprecated. Whether to include * the JSPB instance for transitional soy proto support: * http://goto/soy-param-migration - * @param {!proto.infra.ListVPCResponse} msg The msg instance to transform. + * @param {!proto.infra.ListRegionsResponse} msg The msg instance to transform. * @return {!Object} * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListVPCResponse.toObject = function(includeInstance, msg) { +proto.infra.ListRegionsResponse.toObject = function(includeInstance, msg) { var f, obj = { - vpcsList: jspb.Message.toObjectList(msg.getVpcsList(), - types_pb.VPC.toObject, includeInstance), - lastSyncTime: jspb.Message.getFieldWithDefault(msg, 2, "") + regionsList: jspb.Message.toObjectList(msg.getRegionsList(), + types_pb.Region.toObject, includeInstance) }; if (includeInstance) { @@ -1440,23 +1445,23 @@ proto.infra.ListVPCResponse.toObject = function(includeInstance, msg) { /** * Deserializes binary data (in protobuf wire format). * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.infra.ListVPCResponse} + * @return {!proto.infra.ListRegionsResponse} */ -proto.infra.ListVPCResponse.deserializeBinary = function(bytes) { +proto.infra.ListRegionsResponse.deserializeBinary = function(bytes) { var reader = new jspb.BinaryReader(bytes); - var msg = new proto.infra.ListVPCResponse; - return proto.infra.ListVPCResponse.deserializeBinaryFromReader(msg, reader); + var msg = new proto.infra.ListRegionsResponse; + return proto.infra.ListRegionsResponse.deserializeBinaryFromReader(msg, reader); }; /** * Deserializes binary data (in protobuf wire format) from the * given reader into the given message object. - * @param {!proto.infra.ListVPCResponse} msg The message object to deserialize into. + * @param {!proto.infra.ListRegionsResponse} msg The message object to deserialize into. * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.infra.ListVPCResponse} + * @return {!proto.infra.ListRegionsResponse} */ -proto.infra.ListVPCResponse.deserializeBinaryFromReader = function(msg, reader) { +proto.infra.ListRegionsResponse.deserializeBinaryFromReader = function(msg, reader) { while (reader.nextField()) { if (reader.isEndGroup()) { break; @@ -1464,13 +1469,9 @@ proto.infra.ListVPCResponse.deserializeBinaryFromReader = function(msg, reader) var field = reader.getFieldNumber(); switch (field) { case 1: - var value = new types_pb.VPC; - reader.readMessage(value,types_pb.VPC.deserializeBinaryFromReader); - msg.addVpcs(value); - break; - case 2: - var value = /** @type {string} */ (reader.readString()); - msg.setLastSyncTime(value); + var value = new types_pb.Region; + reader.readMessage(value,types_pb.Region.deserializeBinaryFromReader); + msg.addRegions(value); break; default: reader.skipField(); @@ -1485,9 +1486,9 @@ proto.infra.ListVPCResponse.deserializeBinaryFromReader = function(msg, reader) * Serializes the message to binary data (in protobuf wire format). * @return {!Uint8Array} */ -proto.infra.ListVPCResponse.prototype.serializeBinary = function() { +proto.infra.ListRegionsResponse.prototype.serializeBinary = function() { var writer = new jspb.BinaryWriter(); - proto.infra.ListVPCResponse.serializeBinaryToWriter(this, writer); + proto.infra.ListRegionsResponse.serializeBinaryToWriter(this, writer); return writer.getResultBuffer(); }; @@ -1495,83 +1496,58 @@ proto.infra.ListVPCResponse.prototype.serializeBinary = function() { /** * Serializes the given message to binary data (in protobuf wire * format), writing to the given BinaryWriter. - * @param {!proto.infra.ListVPCResponse} message + * @param {!proto.infra.ListRegionsResponse} message * @param {!jspb.BinaryWriter} writer * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListVPCResponse.serializeBinaryToWriter = function(message, writer) { +proto.infra.ListRegionsResponse.serializeBinaryToWriter = function(message, writer) { var f = undefined; - f = message.getVpcsList(); + f = message.getRegionsList(); if (f.length > 0) { writer.writeRepeatedMessage( 1, f, - types_pb.VPC.serializeBinaryToWriter - ); - } - f = message.getLastSyncTime(); - if (f.length > 0) { - writer.writeString( - 2, - f + types_pb.Region.serializeBinaryToWriter ); } }; /** - * repeated VPC vpcs = 1; - * @return {!Array} + * repeated Region regions = 1; + * @return {!Array} */ -proto.infra.ListVPCResponse.prototype.getVpcsList = function() { - return /** @type{!Array} */ ( - jspb.Message.getRepeatedWrapperField(this, types_pb.VPC, 1)); +proto.infra.ListRegionsResponse.prototype.getRegionsList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, types_pb.Region, 1)); }; /** - * @param {!Array} value - * @return {!proto.infra.ListVPCResponse} returns this + * @param {!Array} value + * @return {!proto.infra.ListRegionsResponse} returns this */ -proto.infra.ListVPCResponse.prototype.setVpcsList = function(value) { +proto.infra.ListRegionsResponse.prototype.setRegionsList = function(value) { return jspb.Message.setRepeatedWrapperField(this, 1, value); }; /** - * @param {!proto.infra.VPC=} opt_value + * @param {!proto.infra.Region=} opt_value * @param {number=} opt_index - * @return {!proto.infra.VPC} + * @return {!proto.infra.Region} */ -proto.infra.ListVPCResponse.prototype.addVpcs = function(opt_value, opt_index) { - return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.infra.VPC, opt_index); +proto.infra.ListRegionsResponse.prototype.addRegions = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.infra.Region, opt_index); }; /** * Clears the list making it empty but non-null. - * @return {!proto.infra.ListVPCResponse} returns this - */ -proto.infra.ListVPCResponse.prototype.clearVpcsList = function() { - return this.setVpcsList([]); -}; - - -/** - * optional string last_sync_time = 2; - * @return {string} - */ -proto.infra.ListVPCResponse.prototype.getLastSyncTime = function() { - return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); -}; - - -/** - * @param {string} value - * @return {!proto.infra.ListVPCResponse} returns this + * @return {!proto.infra.ListRegionsResponse} returns this */ -proto.infra.ListVPCResponse.prototype.setLastSyncTime = function(value) { - return jspb.Message.setProto3StringField(this, 2, value); +proto.infra.ListRegionsResponse.prototype.clearRegionsList = function() { + return this.setRegionsList([]); }; @@ -1591,8 +1567,8 @@ if (jspb.Message.GENERATE_TO_OBJECT) { * http://goto/soy-param-migration * @return {!Object} */ -proto.infra.ListInstancesRequest.prototype.toObject = function(opt_includeInstance) { - return proto.infra.ListInstancesRequest.toObject(opt_includeInstance, this); +proto.infra.ListVPCRequest.prototype.toObject = function(opt_includeInstance) { + return proto.infra.ListVPCRequest.toObject(opt_includeInstance, this); }; @@ -1601,18 +1577,16 @@ proto.infra.ListInstancesRequest.prototype.toObject = function(opt_includeInstan * @param {boolean|undefined} includeInstance Deprecated. Whether to include * the JSPB instance for transitional soy proto support: * http://goto/soy-param-migration - * @param {!proto.infra.ListInstancesRequest} msg The msg instance to transform. + * @param {!proto.infra.ListVPCRequest} msg The msg instance to transform. * @return {!Object} * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListInstancesRequest.toObject = function(includeInstance, msg) { +proto.infra.ListVPCRequest.toObject = function(includeInstance, msg) { var f, obj = { provider: jspb.Message.getFieldWithDefault(msg, 1, ""), - vpcId: jspb.Message.getFieldWithDefault(msg, 2, ""), - zone: jspb.Message.getFieldWithDefault(msg, 3, ""), + region: jspb.Message.getFieldWithDefault(msg, 2, ""), labelsMap: (f = msg.getLabelsMap()) ? f.toObject(includeInstance, undefined) : [], - region: jspb.Message.getFieldWithDefault(msg, 5, ""), - accountId: jspb.Message.getFieldWithDefault(msg, 6, "") + accountId: jspb.Message.getFieldWithDefault(msg, 4, "") }; if (includeInstance) { @@ -1626,23 +1600,909 @@ proto.infra.ListInstancesRequest.toObject = function(includeInstance, msg) { /** * Deserializes binary data (in protobuf wire format). * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.infra.ListInstancesRequest} + * @return {!proto.infra.ListVPCRequest} */ -proto.infra.ListInstancesRequest.deserializeBinary = function(bytes) { +proto.infra.ListVPCRequest.deserializeBinary = function(bytes) { var reader = new jspb.BinaryReader(bytes); - var msg = new proto.infra.ListInstancesRequest; - return proto.infra.ListInstancesRequest.deserializeBinaryFromReader(msg, reader); + var msg = new proto.infra.ListVPCRequest; + return proto.infra.ListVPCRequest.deserializeBinaryFromReader(msg, reader); }; /** * Deserializes binary data (in protobuf wire format) from the * given reader into the given message object. - * @param {!proto.infra.ListInstancesRequest} msg The message object to deserialize into. + * @param {!proto.infra.ListVPCRequest} msg The message object to deserialize into. * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.infra.ListInstancesRequest} + * @return {!proto.infra.ListVPCRequest} */ -proto.infra.ListInstancesRequest.deserializeBinaryFromReader = function(msg, reader) { +proto.infra.ListVPCRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setProvider(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setRegion(value); + break; + case 3: + var value = msg.getLabelsMap(); + reader.readMessage(value, function(message, reader) { + jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, "", ""); + }); + break; + case 4: + var value = /** @type {string} */ (reader.readString()); + msg.setAccountId(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.infra.ListVPCRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.infra.ListVPCRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.infra.ListVPCRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.infra.ListVPCRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getProvider(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getRegion(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } + f = message.getLabelsMap(true); + if (f && f.getLength() > 0) { + f.serializeBinary(3, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString); + } + f = message.getAccountId(); + if (f.length > 0) { + writer.writeString( + 4, + f + ); + } +}; + + +/** + * optional string provider = 1; + * @return {string} + */ +proto.infra.ListVPCRequest.prototype.getProvider = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.infra.ListVPCRequest} returns this + */ +proto.infra.ListVPCRequest.prototype.setProvider = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional string region = 2; + * @return {string} + */ +proto.infra.ListVPCRequest.prototype.getRegion = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.infra.ListVPCRequest} returns this + */ +proto.infra.ListVPCRequest.prototype.setRegion = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + +/** + * map labels = 3; + * @param {boolean=} opt_noLazyCreate Do not create the map if + * empty, instead returning `undefined` + * @return {!jspb.Map} + */ +proto.infra.ListVPCRequest.prototype.getLabelsMap = function(opt_noLazyCreate) { + return /** @type {!jspb.Map} */ ( + jspb.Message.getMapField(this, 3, opt_noLazyCreate, + null)); +}; + + +/** + * Clears values from the map. The map will be non-null. + * @return {!proto.infra.ListVPCRequest} returns this + */ +proto.infra.ListVPCRequest.prototype.clearLabelsMap = function() { + this.getLabelsMap().clear(); + return this;}; + + +/** + * optional string account_id = 4; + * @return {string} + */ +proto.infra.ListVPCRequest.prototype.getAccountId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, "")); +}; + + +/** + * @param {string} value + * @return {!proto.infra.ListVPCRequest} returns this + */ +proto.infra.ListVPCRequest.prototype.setAccountId = function(value) { + return jspb.Message.setProto3StringField(this, 4, value); +}; + + + +/** + * List of repeated fields within this message type. + * @private {!Array} + * @const + */ +proto.infra.ListVPCResponse.repeatedFields_ = [1]; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.infra.ListVPCResponse.prototype.toObject = function(opt_includeInstance) { + return proto.infra.ListVPCResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.infra.ListVPCResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.infra.ListVPCResponse.toObject = function(includeInstance, msg) { + var f, obj = { + vpcsList: jspb.Message.toObjectList(msg.getVpcsList(), + types_pb.VPC.toObject, includeInstance), + lastSyncTime: jspb.Message.getFieldWithDefault(msg, 2, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.infra.ListVPCResponse} + */ +proto.infra.ListVPCResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.infra.ListVPCResponse; + return proto.infra.ListVPCResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.infra.ListVPCResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.infra.ListVPCResponse} + */ +proto.infra.ListVPCResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = new types_pb.VPC; + reader.readMessage(value,types_pb.VPC.deserializeBinaryFromReader); + msg.addVpcs(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setLastSyncTime(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.infra.ListVPCResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.infra.ListVPCResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.infra.ListVPCResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.infra.ListVPCResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getVpcsList(); + if (f.length > 0) { + writer.writeRepeatedMessage( + 1, + f, + types_pb.VPC.serializeBinaryToWriter + ); + } + f = message.getLastSyncTime(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } +}; + + +/** + * repeated VPC vpcs = 1; + * @return {!Array} + */ +proto.infra.ListVPCResponse.prototype.getVpcsList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, types_pb.VPC, 1)); +}; + + +/** + * @param {!Array} value + * @return {!proto.infra.ListVPCResponse} returns this +*/ +proto.infra.ListVPCResponse.prototype.setVpcsList = function(value) { + return jspb.Message.setRepeatedWrapperField(this, 1, value); +}; + + +/** + * @param {!proto.infra.VPC=} opt_value + * @param {number=} opt_index + * @return {!proto.infra.VPC} + */ +proto.infra.ListVPCResponse.prototype.addVpcs = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.infra.VPC, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + * @return {!proto.infra.ListVPCResponse} returns this + */ +proto.infra.ListVPCResponse.prototype.clearVpcsList = function() { + return this.setVpcsList([]); +}; + + +/** + * optional string last_sync_time = 2; + * @return {string} + */ +proto.infra.ListVPCResponse.prototype.getLastSyncTime = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.infra.ListVPCResponse} returns this + */ +proto.infra.ListVPCResponse.prototype.setLastSyncTime = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.infra.ListInstancesRequest.prototype.toObject = function(opt_includeInstance) { + return proto.infra.ListInstancesRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.infra.ListInstancesRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.infra.ListInstancesRequest.toObject = function(includeInstance, msg) { + var f, obj = { + provider: jspb.Message.getFieldWithDefault(msg, 1, ""), + vpcId: jspb.Message.getFieldWithDefault(msg, 2, ""), + zone: jspb.Message.getFieldWithDefault(msg, 3, ""), + labelsMap: (f = msg.getLabelsMap()) ? f.toObject(includeInstance, undefined) : [], + region: jspb.Message.getFieldWithDefault(msg, 5, ""), + accountId: jspb.Message.getFieldWithDefault(msg, 6, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.infra.ListInstancesRequest} + */ +proto.infra.ListInstancesRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.infra.ListInstancesRequest; + return proto.infra.ListInstancesRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.infra.ListInstancesRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.infra.ListInstancesRequest} + */ +proto.infra.ListInstancesRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setProvider(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setVpcId(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setZone(value); + break; + case 4: + var value = msg.getLabelsMap(); + reader.readMessage(value, function(message, reader) { + jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, "", ""); + }); + break; + case 5: + var value = /** @type {string} */ (reader.readString()); + msg.setRegion(value); + break; + case 6: + var value = /** @type {string} */ (reader.readString()); + msg.setAccountId(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.infra.ListInstancesRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.infra.ListInstancesRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.infra.ListInstancesRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.infra.ListInstancesRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getProvider(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getVpcId(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } + f = message.getZone(); + if (f.length > 0) { + writer.writeString( + 3, + f + ); + } + f = message.getLabelsMap(true); + if (f && f.getLength() > 0) { + f.serializeBinary(4, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString); + } + f = message.getRegion(); + if (f.length > 0) { + writer.writeString( + 5, + f + ); + } + f = message.getAccountId(); + if (f.length > 0) { + writer.writeString( + 6, + f + ); + } +}; + + +/** + * optional string provider = 1; + * @return {string} + */ +proto.infra.ListInstancesRequest.prototype.getProvider = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.infra.ListInstancesRequest} returns this + */ +proto.infra.ListInstancesRequest.prototype.setProvider = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional string vpc_id = 2; + * @return {string} + */ +proto.infra.ListInstancesRequest.prototype.getVpcId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.infra.ListInstancesRequest} returns this + */ +proto.infra.ListInstancesRequest.prototype.setVpcId = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + +/** + * optional string zone = 3; + * @return {string} + */ +proto.infra.ListInstancesRequest.prototype.getZone = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** + * @param {string} value + * @return {!proto.infra.ListInstancesRequest} returns this + */ +proto.infra.ListInstancesRequest.prototype.setZone = function(value) { + return jspb.Message.setProto3StringField(this, 3, value); +}; + + +/** + * map labels = 4; + * @param {boolean=} opt_noLazyCreate Do not create the map if + * empty, instead returning `undefined` + * @return {!jspb.Map} + */ +proto.infra.ListInstancesRequest.prototype.getLabelsMap = function(opt_noLazyCreate) { + return /** @type {!jspb.Map} */ ( + jspb.Message.getMapField(this, 4, opt_noLazyCreate, + null)); +}; + + +/** + * Clears values from the map. The map will be non-null. + * @return {!proto.infra.ListInstancesRequest} returns this + */ +proto.infra.ListInstancesRequest.prototype.clearLabelsMap = function() { + this.getLabelsMap().clear(); + return this;}; + + +/** + * optional string region = 5; + * @return {string} + */ +proto.infra.ListInstancesRequest.prototype.getRegion = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, "")); +}; + + +/** + * @param {string} value + * @return {!proto.infra.ListInstancesRequest} returns this + */ +proto.infra.ListInstancesRequest.prototype.setRegion = function(value) { + return jspb.Message.setProto3StringField(this, 5, value); +}; + + +/** + * optional string account_id = 6; + * @return {string} + */ +proto.infra.ListInstancesRequest.prototype.getAccountId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, "")); +}; + + +/** + * @param {string} value + * @return {!proto.infra.ListInstancesRequest} returns this + */ +proto.infra.ListInstancesRequest.prototype.setAccountId = function(value) { + return jspb.Message.setProto3StringField(this, 6, value); +}; + + + +/** + * List of repeated fields within this message type. + * @private {!Array} + * @const + */ +proto.infra.ListInstancesResponse.repeatedFields_ = [1]; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.infra.ListInstancesResponse.prototype.toObject = function(opt_includeInstance) { + return proto.infra.ListInstancesResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.infra.ListInstancesResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.infra.ListInstancesResponse.toObject = function(includeInstance, msg) { + var f, obj = { + instancesList: jspb.Message.toObjectList(msg.getInstancesList(), + types_pb.Instance.toObject, includeInstance), + lastSyncTime: jspb.Message.getFieldWithDefault(msg, 2, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.infra.ListInstancesResponse} + */ +proto.infra.ListInstancesResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.infra.ListInstancesResponse; + return proto.infra.ListInstancesResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.infra.ListInstancesResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.infra.ListInstancesResponse} + */ +proto.infra.ListInstancesResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = new types_pb.Instance; + reader.readMessage(value,types_pb.Instance.deserializeBinaryFromReader); + msg.addInstances(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setLastSyncTime(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.infra.ListInstancesResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.infra.ListInstancesResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.infra.ListInstancesResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.infra.ListInstancesResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getInstancesList(); + if (f.length > 0) { + writer.writeRepeatedMessage( + 1, + f, + types_pb.Instance.serializeBinaryToWriter + ); + } + f = message.getLastSyncTime(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } +}; + + +/** + * repeated Instance instances = 1; + * @return {!Array} + */ +proto.infra.ListInstancesResponse.prototype.getInstancesList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, types_pb.Instance, 1)); +}; + + +/** + * @param {!Array} value + * @return {!proto.infra.ListInstancesResponse} returns this +*/ +proto.infra.ListInstancesResponse.prototype.setInstancesList = function(value) { + return jspb.Message.setRepeatedWrapperField(this, 1, value); +}; + + +/** + * @param {!proto.infra.Instance=} opt_value + * @param {number=} opt_index + * @return {!proto.infra.Instance} + */ +proto.infra.ListInstancesResponse.prototype.addInstances = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.infra.Instance, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + * @return {!proto.infra.ListInstancesResponse} returns this + */ +proto.infra.ListInstancesResponse.prototype.clearInstancesList = function() { + return this.setInstancesList([]); +}; + + +/** + * optional string last_sync_time = 2; + * @return {string} + */ +proto.infra.ListInstancesResponse.prototype.getLastSyncTime = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.infra.ListInstancesResponse} returns this + */ +proto.infra.ListInstancesResponse.prototype.setLastSyncTime = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.infra.ListACLsRequest.prototype.toObject = function(opt_includeInstance) { + return proto.infra.ListACLsRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.infra.ListACLsRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.infra.ListACLsRequest.toObject = function(includeInstance, msg) { + var f, obj = { + provider: jspb.Message.getFieldWithDefault(msg, 1, ""), + vpcId: jspb.Message.getFieldWithDefault(msg, 2, ""), + region: jspb.Message.getFieldWithDefault(msg, 3, ""), + accountId: jspb.Message.getFieldWithDefault(msg, 4, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.infra.ListACLsRequest} + */ +proto.infra.ListACLsRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.infra.ListACLsRequest; + return proto.infra.ListACLsRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.infra.ListACLsRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.infra.ListACLsRequest} + */ +proto.infra.ListACLsRequest.deserializeBinaryFromReader = function(msg, reader) { while (reader.nextField()) { if (reader.isEndGroup()) { break; @@ -1658,20 +2518,10 @@ proto.infra.ListInstancesRequest.deserializeBinaryFromReader = function(msg, rea msg.setVpcId(value); break; case 3: - var value = /** @type {string} */ (reader.readString()); - msg.setZone(value); - break; - case 4: - var value = msg.getLabelsMap(); - reader.readMessage(value, function(message, reader) { - jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, "", ""); - }); - break; - case 5: var value = /** @type {string} */ (reader.readString()); msg.setRegion(value); break; - case 6: + case 4: var value = /** @type {string} */ (reader.readString()); msg.setAccountId(value); break; @@ -1688,9 +2538,9 @@ proto.infra.ListInstancesRequest.deserializeBinaryFromReader = function(msg, rea * Serializes the message to binary data (in protobuf wire format). * @return {!Uint8Array} */ -proto.infra.ListInstancesRequest.prototype.serializeBinary = function() { +proto.infra.ListACLsRequest.prototype.serializeBinary = function() { var writer = new jspb.BinaryWriter(); - proto.infra.ListInstancesRequest.serializeBinaryToWriter(this, writer); + proto.infra.ListACLsRequest.serializeBinaryToWriter(this, writer); return writer.getResultBuffer(); }; @@ -1698,11 +2548,11 @@ proto.infra.ListInstancesRequest.prototype.serializeBinary = function() { /** * Serializes the given message to binary data (in protobuf wire * format), writing to the given BinaryWriter. - * @param {!proto.infra.ListInstancesRequest} message + * @param {!proto.infra.ListACLsRequest} message * @param {!jspb.BinaryWriter} writer * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListInstancesRequest.serializeBinaryToWriter = function(message, writer) { +proto.infra.ListACLsRequest.serializeBinaryToWriter = function(message, writer) { var f = undefined; f = message.getProvider(); if (f.length > 0) { @@ -1718,28 +2568,17 @@ proto.infra.ListInstancesRequest.serializeBinaryToWriter = function(message, wri f ); } - f = message.getZone(); - if (f.length > 0) { - writer.writeString( - 3, - f - ); - } - f = message.getLabelsMap(true); - if (f && f.getLength() > 0) { - f.serializeBinary(4, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString); - } f = message.getRegion(); if (f.length > 0) { writer.writeString( - 5, + 3, f ); } f = message.getAccountId(); if (f.length > 0) { writer.writeString( - 6, + 4, f ); } @@ -1750,16 +2589,16 @@ proto.infra.ListInstancesRequest.serializeBinaryToWriter = function(message, wri * optional string provider = 1; * @return {string} */ -proto.infra.ListInstancesRequest.prototype.getProvider = function() { +proto.infra.ListACLsRequest.prototype.getProvider = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); }; /** * @param {string} value - * @return {!proto.infra.ListInstancesRequest} returns this + * @return {!proto.infra.ListACLsRequest} returns this */ -proto.infra.ListInstancesRequest.prototype.setProvider = function(value) { +proto.infra.ListACLsRequest.prototype.setProvider = function(value) { return jspb.Message.setProto3StringField(this, 1, value); }; @@ -1768,93 +2607,53 @@ proto.infra.ListInstancesRequest.prototype.setProvider = function(value) { * optional string vpc_id = 2; * @return {string} */ -proto.infra.ListInstancesRequest.prototype.getVpcId = function() { +proto.infra.ListACLsRequest.prototype.getVpcId = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); }; /** * @param {string} value - * @return {!proto.infra.ListInstancesRequest} returns this + * @return {!proto.infra.ListACLsRequest} returns this */ -proto.infra.ListInstancesRequest.prototype.setVpcId = function(value) { +proto.infra.ListACLsRequest.prototype.setVpcId = function(value) { return jspb.Message.setProto3StringField(this, 2, value); }; /** - * optional string zone = 3; + * optional string region = 3; * @return {string} */ -proto.infra.ListInstancesRequest.prototype.getZone = function() { +proto.infra.ListACLsRequest.prototype.getRegion = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); }; /** * @param {string} value - * @return {!proto.infra.ListInstancesRequest} returns this + * @return {!proto.infra.ListACLsRequest} returns this */ -proto.infra.ListInstancesRequest.prototype.setZone = function(value) { +proto.infra.ListACLsRequest.prototype.setRegion = function(value) { return jspb.Message.setProto3StringField(this, 3, value); }; /** - * map labels = 4; - * @param {boolean=} opt_noLazyCreate Do not create the map if - * empty, instead returning `undefined` - * @return {!jspb.Map} - */ -proto.infra.ListInstancesRequest.prototype.getLabelsMap = function(opt_noLazyCreate) { - return /** @type {!jspb.Map} */ ( - jspb.Message.getMapField(this, 4, opt_noLazyCreate, - null)); -}; - - -/** - * Clears values from the map. The map will be non-null. - * @return {!proto.infra.ListInstancesRequest} returns this - */ -proto.infra.ListInstancesRequest.prototype.clearLabelsMap = function() { - this.getLabelsMap().clear(); - return this;}; - - -/** - * optional string region = 5; - * @return {string} - */ -proto.infra.ListInstancesRequest.prototype.getRegion = function() { - return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, "")); -}; - - -/** - * @param {string} value - * @return {!proto.infra.ListInstancesRequest} returns this - */ -proto.infra.ListInstancesRequest.prototype.setRegion = function(value) { - return jspb.Message.setProto3StringField(this, 5, value); -}; - - -/** - * optional string account_id = 6; + * optional string account_id = 4; * @return {string} */ -proto.infra.ListInstancesRequest.prototype.getAccountId = function() { - return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, "")); +proto.infra.ListACLsRequest.prototype.getAccountId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, "")); }; /** * @param {string} value - * @return {!proto.infra.ListInstancesRequest} returns this + * @return {!proto.infra.ListACLsRequest} returns this */ -proto.infra.ListInstancesRequest.prototype.setAccountId = function(value) { - return jspb.Message.setProto3StringField(this, 6, value); +proto.infra.ListACLsRequest.prototype.setAccountId = function(value) { + return jspb.Message.setProto3StringField(this, 4, value); }; @@ -1864,7 +2663,7 @@ proto.infra.ListInstancesRequest.prototype.setAccountId = function(value) { * @private {!Array} * @const */ -proto.infra.ListInstancesResponse.repeatedFields_ = [1]; +proto.infra.ListACLsResponse.repeatedFields_ = [1]; @@ -1881,8 +2680,8 @@ if (jspb.Message.GENERATE_TO_OBJECT) { * http://goto/soy-param-migration * @return {!Object} */ -proto.infra.ListInstancesResponse.prototype.toObject = function(opt_includeInstance) { - return proto.infra.ListInstancesResponse.toObject(opt_includeInstance, this); +proto.infra.ListACLsResponse.prototype.toObject = function(opt_includeInstance) { + return proto.infra.ListACLsResponse.toObject(opt_includeInstance, this); }; @@ -1891,14 +2690,14 @@ proto.infra.ListInstancesResponse.prototype.toObject = function(opt_includeInsta * @param {boolean|undefined} includeInstance Deprecated. Whether to include * the JSPB instance for transitional soy proto support: * http://goto/soy-param-migration - * @param {!proto.infra.ListInstancesResponse} msg The msg instance to transform. + * @param {!proto.infra.ListACLsResponse} msg The msg instance to transform. * @return {!Object} * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListInstancesResponse.toObject = function(includeInstance, msg) { - var f, obj = { - instancesList: jspb.Message.toObjectList(msg.getInstancesList(), - types_pb.Instance.toObject, includeInstance), +proto.infra.ListACLsResponse.toObject = function(includeInstance, msg) { + var f, obj = { + aclsList: jspb.Message.toObjectList(msg.getAclsList(), + types_pb.ACL.toObject, includeInstance), lastSyncTime: jspb.Message.getFieldWithDefault(msg, 2, "") }; @@ -1913,23 +2712,23 @@ proto.infra.ListInstancesResponse.toObject = function(includeInstance, msg) { /** * Deserializes binary data (in protobuf wire format). * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.infra.ListInstancesResponse} + * @return {!proto.infra.ListACLsResponse} */ -proto.infra.ListInstancesResponse.deserializeBinary = function(bytes) { +proto.infra.ListACLsResponse.deserializeBinary = function(bytes) { var reader = new jspb.BinaryReader(bytes); - var msg = new proto.infra.ListInstancesResponse; - return proto.infra.ListInstancesResponse.deserializeBinaryFromReader(msg, reader); + var msg = new proto.infra.ListACLsResponse; + return proto.infra.ListACLsResponse.deserializeBinaryFromReader(msg, reader); }; /** * Deserializes binary data (in protobuf wire format) from the * given reader into the given message object. - * @param {!proto.infra.ListInstancesResponse} msg The message object to deserialize into. + * @param {!proto.infra.ListACLsResponse} msg The message object to deserialize into. * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.infra.ListInstancesResponse} + * @return {!proto.infra.ListACLsResponse} */ -proto.infra.ListInstancesResponse.deserializeBinaryFromReader = function(msg, reader) { +proto.infra.ListACLsResponse.deserializeBinaryFromReader = function(msg, reader) { while (reader.nextField()) { if (reader.isEndGroup()) { break; @@ -1937,9 +2736,9 @@ proto.infra.ListInstancesResponse.deserializeBinaryFromReader = function(msg, re var field = reader.getFieldNumber(); switch (field) { case 1: - var value = new types_pb.Instance; - reader.readMessage(value,types_pb.Instance.deserializeBinaryFromReader); - msg.addInstances(value); + var value = new types_pb.ACL; + reader.readMessage(value,types_pb.ACL.deserializeBinaryFromReader); + msg.addAcls(value); break; case 2: var value = /** @type {string} */ (reader.readString()); @@ -1958,9 +2757,9 @@ proto.infra.ListInstancesResponse.deserializeBinaryFromReader = function(msg, re * Serializes the message to binary data (in protobuf wire format). * @return {!Uint8Array} */ -proto.infra.ListInstancesResponse.prototype.serializeBinary = function() { +proto.infra.ListACLsResponse.prototype.serializeBinary = function() { var writer = new jspb.BinaryWriter(); - proto.infra.ListInstancesResponse.serializeBinaryToWriter(this, writer); + proto.infra.ListACLsResponse.serializeBinaryToWriter(this, writer); return writer.getResultBuffer(); }; @@ -1968,18 +2767,18 @@ proto.infra.ListInstancesResponse.prototype.serializeBinary = function() { /** * Serializes the given message to binary data (in protobuf wire * format), writing to the given BinaryWriter. - * @param {!proto.infra.ListInstancesResponse} message + * @param {!proto.infra.ListACLsResponse} message * @param {!jspb.BinaryWriter} writer * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListInstancesResponse.serializeBinaryToWriter = function(message, writer) { +proto.infra.ListACLsResponse.serializeBinaryToWriter = function(message, writer) { var f = undefined; - f = message.getInstancesList(); + f = message.getAclsList(); if (f.length > 0) { writer.writeRepeatedMessage( 1, f, - types_pb.Instance.serializeBinaryToWriter + types_pb.ACL.serializeBinaryToWriter ); } f = message.getLastSyncTime(); @@ -1993,40 +2792,40 @@ proto.infra.ListInstancesResponse.serializeBinaryToWriter = function(message, wr /** - * repeated Instance instances = 1; - * @return {!Array} + * repeated ACL acls = 1; + * @return {!Array} */ -proto.infra.ListInstancesResponse.prototype.getInstancesList = function() { - return /** @type{!Array} */ ( - jspb.Message.getRepeatedWrapperField(this, types_pb.Instance, 1)); +proto.infra.ListACLsResponse.prototype.getAclsList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, types_pb.ACL, 1)); }; /** - * @param {!Array} value - * @return {!proto.infra.ListInstancesResponse} returns this + * @param {!Array} value + * @return {!proto.infra.ListACLsResponse} returns this */ -proto.infra.ListInstancesResponse.prototype.setInstancesList = function(value) { +proto.infra.ListACLsResponse.prototype.setAclsList = function(value) { return jspb.Message.setRepeatedWrapperField(this, 1, value); }; /** - * @param {!proto.infra.Instance=} opt_value + * @param {!proto.infra.ACL=} opt_value * @param {number=} opt_index - * @return {!proto.infra.Instance} + * @return {!proto.infra.ACL} */ -proto.infra.ListInstancesResponse.prototype.addInstances = function(opt_value, opt_index) { - return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.infra.Instance, opt_index); +proto.infra.ListACLsResponse.prototype.addAcls = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.infra.ACL, opt_index); }; /** * Clears the list making it empty but non-null. - * @return {!proto.infra.ListInstancesResponse} returns this + * @return {!proto.infra.ListACLsResponse} returns this */ -proto.infra.ListInstancesResponse.prototype.clearInstancesList = function() { - return this.setInstancesList([]); +proto.infra.ListACLsResponse.prototype.clearAclsList = function() { + return this.setAclsList([]); }; @@ -2034,16 +2833,16 @@ proto.infra.ListInstancesResponse.prototype.clearInstancesList = function() { * optional string last_sync_time = 2; * @return {string} */ -proto.infra.ListInstancesResponse.prototype.getLastSyncTime = function() { +proto.infra.ListACLsResponse.prototype.getLastSyncTime = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); }; /** * @param {string} value - * @return {!proto.infra.ListInstancesResponse} returns this + * @return {!proto.infra.ListACLsResponse} returns this */ -proto.infra.ListInstancesResponse.prototype.setLastSyncTime = function(value) { +proto.infra.ListACLsResponse.prototype.setLastSyncTime = function(value) { return jspb.Message.setProto3StringField(this, 2, value); }; @@ -2064,8 +2863,8 @@ if (jspb.Message.GENERATE_TO_OBJECT) { * http://goto/soy-param-migration * @return {!Object} */ -proto.infra.ListACLsRequest.prototype.toObject = function(opt_includeInstance) { - return proto.infra.ListACLsRequest.toObject(opt_includeInstance, this); +proto.infra.ListSecurityGroupsRequest.prototype.toObject = function(opt_includeInstance) { + return proto.infra.ListSecurityGroupsRequest.toObject(opt_includeInstance, this); }; @@ -2074,11 +2873,11 @@ proto.infra.ListACLsRequest.prototype.toObject = function(opt_includeInstance) { * @param {boolean|undefined} includeInstance Deprecated. Whether to include * the JSPB instance for transitional soy proto support: * http://goto/soy-param-migration - * @param {!proto.infra.ListACLsRequest} msg The msg instance to transform. + * @param {!proto.infra.ListSecurityGroupsRequest} msg The msg instance to transform. * @return {!Object} * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListACLsRequest.toObject = function(includeInstance, msg) { +proto.infra.ListSecurityGroupsRequest.toObject = function(includeInstance, msg) { var f, obj = { provider: jspb.Message.getFieldWithDefault(msg, 1, ""), vpcId: jspb.Message.getFieldWithDefault(msg, 2, ""), @@ -2097,23 +2896,23 @@ proto.infra.ListACLsRequest.toObject = function(includeInstance, msg) { /** * Deserializes binary data (in protobuf wire format). * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.infra.ListACLsRequest} + * @return {!proto.infra.ListSecurityGroupsRequest} */ -proto.infra.ListACLsRequest.deserializeBinary = function(bytes) { +proto.infra.ListSecurityGroupsRequest.deserializeBinary = function(bytes) { var reader = new jspb.BinaryReader(bytes); - var msg = new proto.infra.ListACLsRequest; - return proto.infra.ListACLsRequest.deserializeBinaryFromReader(msg, reader); + var msg = new proto.infra.ListSecurityGroupsRequest; + return proto.infra.ListSecurityGroupsRequest.deserializeBinaryFromReader(msg, reader); }; /** * Deserializes binary data (in protobuf wire format) from the * given reader into the given message object. - * @param {!proto.infra.ListACLsRequest} msg The message object to deserialize into. + * @param {!proto.infra.ListSecurityGroupsRequest} msg The message object to deserialize into. * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.infra.ListACLsRequest} + * @return {!proto.infra.ListSecurityGroupsRequest} */ -proto.infra.ListACLsRequest.deserializeBinaryFromReader = function(msg, reader) { +proto.infra.ListSecurityGroupsRequest.deserializeBinaryFromReader = function(msg, reader) { while (reader.nextField()) { if (reader.isEndGroup()) { break; @@ -2149,9 +2948,9 @@ proto.infra.ListACLsRequest.deserializeBinaryFromReader = function(msg, reader) * Serializes the message to binary data (in protobuf wire format). * @return {!Uint8Array} */ -proto.infra.ListACLsRequest.prototype.serializeBinary = function() { +proto.infra.ListSecurityGroupsRequest.prototype.serializeBinary = function() { var writer = new jspb.BinaryWriter(); - proto.infra.ListACLsRequest.serializeBinaryToWriter(this, writer); + proto.infra.ListSecurityGroupsRequest.serializeBinaryToWriter(this, writer); return writer.getResultBuffer(); }; @@ -2159,11 +2958,11 @@ proto.infra.ListACLsRequest.prototype.serializeBinary = function() { /** * Serializes the given message to binary data (in protobuf wire * format), writing to the given BinaryWriter. - * @param {!proto.infra.ListACLsRequest} message + * @param {!proto.infra.ListSecurityGroupsRequest} message * @param {!jspb.BinaryWriter} writer * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListACLsRequest.serializeBinaryToWriter = function(message, writer) { +proto.infra.ListSecurityGroupsRequest.serializeBinaryToWriter = function(message, writer) { var f = undefined; f = message.getProvider(); if (f.length > 0) { @@ -2200,16 +2999,16 @@ proto.infra.ListACLsRequest.serializeBinaryToWriter = function(message, writer) * optional string provider = 1; * @return {string} */ -proto.infra.ListACLsRequest.prototype.getProvider = function() { +proto.infra.ListSecurityGroupsRequest.prototype.getProvider = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); }; /** * @param {string} value - * @return {!proto.infra.ListACLsRequest} returns this + * @return {!proto.infra.ListSecurityGroupsRequest} returns this */ -proto.infra.ListACLsRequest.prototype.setProvider = function(value) { +proto.infra.ListSecurityGroupsRequest.prototype.setProvider = function(value) { return jspb.Message.setProto3StringField(this, 1, value); }; @@ -2218,16 +3017,16 @@ proto.infra.ListACLsRequest.prototype.setProvider = function(value) { * optional string vpc_id = 2; * @return {string} */ -proto.infra.ListACLsRequest.prototype.getVpcId = function() { +proto.infra.ListSecurityGroupsRequest.prototype.getVpcId = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); }; /** * @param {string} value - * @return {!proto.infra.ListACLsRequest} returns this + * @return {!proto.infra.ListSecurityGroupsRequest} returns this */ -proto.infra.ListACLsRequest.prototype.setVpcId = function(value) { +proto.infra.ListSecurityGroupsRequest.prototype.setVpcId = function(value) { return jspb.Message.setProto3StringField(this, 2, value); }; @@ -2236,16 +3035,16 @@ proto.infra.ListACLsRequest.prototype.setVpcId = function(value) { * optional string region = 3; * @return {string} */ -proto.infra.ListACLsRequest.prototype.getRegion = function() { +proto.infra.ListSecurityGroupsRequest.prototype.getRegion = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); }; /** * @param {string} value - * @return {!proto.infra.ListACLsRequest} returns this + * @return {!proto.infra.ListSecurityGroupsRequest} returns this */ -proto.infra.ListACLsRequest.prototype.setRegion = function(value) { +proto.infra.ListSecurityGroupsRequest.prototype.setRegion = function(value) { return jspb.Message.setProto3StringField(this, 3, value); }; @@ -2254,16 +3053,16 @@ proto.infra.ListACLsRequest.prototype.setRegion = function(value) { * optional string account_id = 4; * @return {string} */ -proto.infra.ListACLsRequest.prototype.getAccountId = function() { +proto.infra.ListSecurityGroupsRequest.prototype.getAccountId = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, "")); }; /** * @param {string} value - * @return {!proto.infra.ListACLsRequest} returns this + * @return {!proto.infra.ListSecurityGroupsRequest} returns this */ -proto.infra.ListACLsRequest.prototype.setAccountId = function(value) { +proto.infra.ListSecurityGroupsRequest.prototype.setAccountId = function(value) { return jspb.Message.setProto3StringField(this, 4, value); }; @@ -2274,7 +3073,7 @@ proto.infra.ListACLsRequest.prototype.setAccountId = function(value) { * @private {!Array} * @const */ -proto.infra.ListACLsResponse.repeatedFields_ = [1]; +proto.infra.ListSecurityGroupsResponse.repeatedFields_ = [1]; @@ -2291,8 +3090,8 @@ if (jspb.Message.GENERATE_TO_OBJECT) { * http://goto/soy-param-migration * @return {!Object} */ -proto.infra.ListACLsResponse.prototype.toObject = function(opt_includeInstance) { - return proto.infra.ListACLsResponse.toObject(opt_includeInstance, this); +proto.infra.ListSecurityGroupsResponse.prototype.toObject = function(opt_includeInstance) { + return proto.infra.ListSecurityGroupsResponse.toObject(opt_includeInstance, this); }; @@ -2301,14 +3100,14 @@ proto.infra.ListACLsResponse.prototype.toObject = function(opt_includeInstance) * @param {boolean|undefined} includeInstance Deprecated. Whether to include * the JSPB instance for transitional soy proto support: * http://goto/soy-param-migration - * @param {!proto.infra.ListACLsResponse} msg The msg instance to transform. + * @param {!proto.infra.ListSecurityGroupsResponse} msg The msg instance to transform. * @return {!Object} * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListACLsResponse.toObject = function(includeInstance, msg) { +proto.infra.ListSecurityGroupsResponse.toObject = function(includeInstance, msg) { var f, obj = { - aclsList: jspb.Message.toObjectList(msg.getAclsList(), - types_pb.ACL.toObject, includeInstance), + securityGroupsList: jspb.Message.toObjectList(msg.getSecurityGroupsList(), + types_pb.SecurityGroup.toObject, includeInstance), lastSyncTime: jspb.Message.getFieldWithDefault(msg, 2, "") }; @@ -2323,23 +3122,23 @@ proto.infra.ListACLsResponse.toObject = function(includeInstance, msg) { /** * Deserializes binary data (in protobuf wire format). * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.infra.ListACLsResponse} + * @return {!proto.infra.ListSecurityGroupsResponse} */ -proto.infra.ListACLsResponse.deserializeBinary = function(bytes) { +proto.infra.ListSecurityGroupsResponse.deserializeBinary = function(bytes) { var reader = new jspb.BinaryReader(bytes); - var msg = new proto.infra.ListACLsResponse; - return proto.infra.ListACLsResponse.deserializeBinaryFromReader(msg, reader); + var msg = new proto.infra.ListSecurityGroupsResponse; + return proto.infra.ListSecurityGroupsResponse.deserializeBinaryFromReader(msg, reader); }; /** * Deserializes binary data (in protobuf wire format) from the * given reader into the given message object. - * @param {!proto.infra.ListACLsResponse} msg The message object to deserialize into. + * @param {!proto.infra.ListSecurityGroupsResponse} msg The message object to deserialize into. * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.infra.ListACLsResponse} + * @return {!proto.infra.ListSecurityGroupsResponse} */ -proto.infra.ListACLsResponse.deserializeBinaryFromReader = function(msg, reader) { +proto.infra.ListSecurityGroupsResponse.deserializeBinaryFromReader = function(msg, reader) { while (reader.nextField()) { if (reader.isEndGroup()) { break; @@ -2347,9 +3146,9 @@ proto.infra.ListACLsResponse.deserializeBinaryFromReader = function(msg, reader) var field = reader.getFieldNumber(); switch (field) { case 1: - var value = new types_pb.ACL; - reader.readMessage(value,types_pb.ACL.deserializeBinaryFromReader); - msg.addAcls(value); + var value = new types_pb.SecurityGroup; + reader.readMessage(value,types_pb.SecurityGroup.deserializeBinaryFromReader); + msg.addSecurityGroups(value); break; case 2: var value = /** @type {string} */ (reader.readString()); @@ -2368,9 +3167,9 @@ proto.infra.ListACLsResponse.deserializeBinaryFromReader = function(msg, reader) * Serializes the message to binary data (in protobuf wire format). * @return {!Uint8Array} */ -proto.infra.ListACLsResponse.prototype.serializeBinary = function() { +proto.infra.ListSecurityGroupsResponse.prototype.serializeBinary = function() { var writer = new jspb.BinaryWriter(); - proto.infra.ListACLsResponse.serializeBinaryToWriter(this, writer); + proto.infra.ListSecurityGroupsResponse.serializeBinaryToWriter(this, writer); return writer.getResultBuffer(); }; @@ -2378,18 +3177,18 @@ proto.infra.ListACLsResponse.prototype.serializeBinary = function() { /** * Serializes the given message to binary data (in protobuf wire * format), writing to the given BinaryWriter. - * @param {!proto.infra.ListACLsResponse} message + * @param {!proto.infra.ListSecurityGroupsResponse} message * @param {!jspb.BinaryWriter} writer * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListACLsResponse.serializeBinaryToWriter = function(message, writer) { +proto.infra.ListSecurityGroupsResponse.serializeBinaryToWriter = function(message, writer) { var f = undefined; - f = message.getAclsList(); + f = message.getSecurityGroupsList(); if (f.length > 0) { writer.writeRepeatedMessage( 1, f, - types_pb.ACL.serializeBinaryToWriter + types_pb.SecurityGroup.serializeBinaryToWriter ); } f = message.getLastSyncTime(); @@ -2403,40 +3202,40 @@ proto.infra.ListACLsResponse.serializeBinaryToWriter = function(message, writer) /** - * repeated ACL acls = 1; - * @return {!Array} + * repeated SecurityGroup security_groups = 1; + * @return {!Array} */ -proto.infra.ListACLsResponse.prototype.getAclsList = function() { - return /** @type{!Array} */ ( - jspb.Message.getRepeatedWrapperField(this, types_pb.ACL, 1)); +proto.infra.ListSecurityGroupsResponse.prototype.getSecurityGroupsList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, types_pb.SecurityGroup, 1)); }; /** - * @param {!Array} value - * @return {!proto.infra.ListACLsResponse} returns this + * @param {!Array} value + * @return {!proto.infra.ListSecurityGroupsResponse} returns this */ -proto.infra.ListACLsResponse.prototype.setAclsList = function(value) { +proto.infra.ListSecurityGroupsResponse.prototype.setSecurityGroupsList = function(value) { return jspb.Message.setRepeatedWrapperField(this, 1, value); }; /** - * @param {!proto.infra.ACL=} opt_value + * @param {!proto.infra.SecurityGroup=} opt_value * @param {number=} opt_index - * @return {!proto.infra.ACL} + * @return {!proto.infra.SecurityGroup} */ -proto.infra.ListACLsResponse.prototype.addAcls = function(opt_value, opt_index) { - return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.infra.ACL, opt_index); +proto.infra.ListSecurityGroupsResponse.prototype.addSecurityGroups = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.infra.SecurityGroup, opt_index); }; /** * Clears the list making it empty but non-null. - * @return {!proto.infra.ListACLsResponse} returns this + * @return {!proto.infra.ListSecurityGroupsResponse} returns this */ -proto.infra.ListACLsResponse.prototype.clearAclsList = function() { - return this.setAclsList([]); +proto.infra.ListSecurityGroupsResponse.prototype.clearSecurityGroupsList = function() { + return this.setSecurityGroupsList([]); }; @@ -2444,16 +3243,16 @@ proto.infra.ListACLsResponse.prototype.clearAclsList = function() { * optional string last_sync_time = 2; * @return {string} */ -proto.infra.ListACLsResponse.prototype.getLastSyncTime = function() { +proto.infra.ListSecurityGroupsResponse.prototype.getLastSyncTime = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); }; /** * @param {string} value - * @return {!proto.infra.ListACLsResponse} returns this + * @return {!proto.infra.ListSecurityGroupsResponse} returns this */ -proto.infra.ListACLsResponse.prototype.setLastSyncTime = function(value) { +proto.infra.ListSecurityGroupsResponse.prototype.setLastSyncTime = function(value) { return jspb.Message.setProto3StringField(this, 2, value); }; @@ -2474,8 +3273,8 @@ if (jspb.Message.GENERATE_TO_OBJECT) { * http://goto/soy-param-migration * @return {!Object} */ -proto.infra.ListSecurityGroupsRequest.prototype.toObject = function(opt_includeInstance) { - return proto.infra.ListSecurityGroupsRequest.toObject(opt_includeInstance, this); +proto.infra.ListRouteTablesRequest.prototype.toObject = function(opt_includeInstance) { + return proto.infra.ListRouteTablesRequest.toObject(opt_includeInstance, this); }; @@ -2484,11 +3283,11 @@ proto.infra.ListSecurityGroupsRequest.prototype.toObject = function(opt_includeI * @param {boolean|undefined} includeInstance Deprecated. Whether to include * the JSPB instance for transitional soy proto support: * http://goto/soy-param-migration - * @param {!proto.infra.ListSecurityGroupsRequest} msg The msg instance to transform. + * @param {!proto.infra.ListRouteTablesRequest} msg The msg instance to transform. * @return {!Object} * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListSecurityGroupsRequest.toObject = function(includeInstance, msg) { +proto.infra.ListRouteTablesRequest.toObject = function(includeInstance, msg) { var f, obj = { provider: jspb.Message.getFieldWithDefault(msg, 1, ""), vpcId: jspb.Message.getFieldWithDefault(msg, 2, ""), @@ -2507,23 +3306,23 @@ proto.infra.ListSecurityGroupsRequest.toObject = function(includeInstance, msg) /** * Deserializes binary data (in protobuf wire format). * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.infra.ListSecurityGroupsRequest} + * @return {!proto.infra.ListRouteTablesRequest} */ -proto.infra.ListSecurityGroupsRequest.deserializeBinary = function(bytes) { +proto.infra.ListRouteTablesRequest.deserializeBinary = function(bytes) { var reader = new jspb.BinaryReader(bytes); - var msg = new proto.infra.ListSecurityGroupsRequest; - return proto.infra.ListSecurityGroupsRequest.deserializeBinaryFromReader(msg, reader); + var msg = new proto.infra.ListRouteTablesRequest; + return proto.infra.ListRouteTablesRequest.deserializeBinaryFromReader(msg, reader); }; /** * Deserializes binary data (in protobuf wire format) from the * given reader into the given message object. - * @param {!proto.infra.ListSecurityGroupsRequest} msg The message object to deserialize into. + * @param {!proto.infra.ListRouteTablesRequest} msg The message object to deserialize into. * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.infra.ListSecurityGroupsRequest} + * @return {!proto.infra.ListRouteTablesRequest} */ -proto.infra.ListSecurityGroupsRequest.deserializeBinaryFromReader = function(msg, reader) { +proto.infra.ListRouteTablesRequest.deserializeBinaryFromReader = function(msg, reader) { while (reader.nextField()) { if (reader.isEndGroup()) { break; @@ -2559,9 +3358,9 @@ proto.infra.ListSecurityGroupsRequest.deserializeBinaryFromReader = function(msg * Serializes the message to binary data (in protobuf wire format). * @return {!Uint8Array} */ -proto.infra.ListSecurityGroupsRequest.prototype.serializeBinary = function() { +proto.infra.ListRouteTablesRequest.prototype.serializeBinary = function() { var writer = new jspb.BinaryWriter(); - proto.infra.ListSecurityGroupsRequest.serializeBinaryToWriter(this, writer); + proto.infra.ListRouteTablesRequest.serializeBinaryToWriter(this, writer); return writer.getResultBuffer(); }; @@ -2569,11 +3368,11 @@ proto.infra.ListSecurityGroupsRequest.prototype.serializeBinary = function() { /** * Serializes the given message to binary data (in protobuf wire * format), writing to the given BinaryWriter. - * @param {!proto.infra.ListSecurityGroupsRequest} message + * @param {!proto.infra.ListRouteTablesRequest} message * @param {!jspb.BinaryWriter} writer * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListSecurityGroupsRequest.serializeBinaryToWriter = function(message, writer) { +proto.infra.ListRouteTablesRequest.serializeBinaryToWriter = function(message, writer) { var f = undefined; f = message.getProvider(); if (f.length > 0) { @@ -2610,16 +3409,16 @@ proto.infra.ListSecurityGroupsRequest.serializeBinaryToWriter = function(message * optional string provider = 1; * @return {string} */ -proto.infra.ListSecurityGroupsRequest.prototype.getProvider = function() { +proto.infra.ListRouteTablesRequest.prototype.getProvider = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); }; /** * @param {string} value - * @return {!proto.infra.ListSecurityGroupsRequest} returns this + * @return {!proto.infra.ListRouteTablesRequest} returns this */ -proto.infra.ListSecurityGroupsRequest.prototype.setProvider = function(value) { +proto.infra.ListRouteTablesRequest.prototype.setProvider = function(value) { return jspb.Message.setProto3StringField(this, 1, value); }; @@ -2628,16 +3427,16 @@ proto.infra.ListSecurityGroupsRequest.prototype.setProvider = function(value) { * optional string vpc_id = 2; * @return {string} */ -proto.infra.ListSecurityGroupsRequest.prototype.getVpcId = function() { +proto.infra.ListRouteTablesRequest.prototype.getVpcId = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); }; /** * @param {string} value - * @return {!proto.infra.ListSecurityGroupsRequest} returns this + * @return {!proto.infra.ListRouteTablesRequest} returns this */ -proto.infra.ListSecurityGroupsRequest.prototype.setVpcId = function(value) { +proto.infra.ListRouteTablesRequest.prototype.setVpcId = function(value) { return jspb.Message.setProto3StringField(this, 2, value); }; @@ -2646,16 +3445,16 @@ proto.infra.ListSecurityGroupsRequest.prototype.setVpcId = function(value) { * optional string region = 3; * @return {string} */ -proto.infra.ListSecurityGroupsRequest.prototype.getRegion = function() { +proto.infra.ListRouteTablesRequest.prototype.getRegion = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); }; /** * @param {string} value - * @return {!proto.infra.ListSecurityGroupsRequest} returns this + * @return {!proto.infra.ListRouteTablesRequest} returns this */ -proto.infra.ListSecurityGroupsRequest.prototype.setRegion = function(value) { +proto.infra.ListRouteTablesRequest.prototype.setRegion = function(value) { return jspb.Message.setProto3StringField(this, 3, value); }; @@ -2664,16 +3463,16 @@ proto.infra.ListSecurityGroupsRequest.prototype.setRegion = function(value) { * optional string account_id = 4; * @return {string} */ -proto.infra.ListSecurityGroupsRequest.prototype.getAccountId = function() { +proto.infra.ListRouteTablesRequest.prototype.getAccountId = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, "")); }; /** * @param {string} value - * @return {!proto.infra.ListSecurityGroupsRequest} returns this + * @return {!proto.infra.ListRouteTablesRequest} returns this */ -proto.infra.ListSecurityGroupsRequest.prototype.setAccountId = function(value) { +proto.infra.ListRouteTablesRequest.prototype.setAccountId = function(value) { return jspb.Message.setProto3StringField(this, 4, value); }; @@ -2684,7 +3483,7 @@ proto.infra.ListSecurityGroupsRequest.prototype.setAccountId = function(value) { * @private {!Array} * @const */ -proto.infra.ListSecurityGroupsResponse.repeatedFields_ = [1]; +proto.infra.ListRouteTablesResponse.repeatedFields_ = [1]; @@ -2701,8 +3500,8 @@ if (jspb.Message.GENERATE_TO_OBJECT) { * http://goto/soy-param-migration * @return {!Object} */ -proto.infra.ListSecurityGroupsResponse.prototype.toObject = function(opt_includeInstance) { - return proto.infra.ListSecurityGroupsResponse.toObject(opt_includeInstance, this); +proto.infra.ListRouteTablesResponse.prototype.toObject = function(opt_includeInstance) { + return proto.infra.ListRouteTablesResponse.toObject(opt_includeInstance, this); }; @@ -2711,14 +3510,14 @@ proto.infra.ListSecurityGroupsResponse.prototype.toObject = function(opt_include * @param {boolean|undefined} includeInstance Deprecated. Whether to include * the JSPB instance for transitional soy proto support: * http://goto/soy-param-migration - * @param {!proto.infra.ListSecurityGroupsResponse} msg The msg instance to transform. + * @param {!proto.infra.ListRouteTablesResponse} msg The msg instance to transform. * @return {!Object} * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListSecurityGroupsResponse.toObject = function(includeInstance, msg) { +proto.infra.ListRouteTablesResponse.toObject = function(includeInstance, msg) { var f, obj = { - securityGroupsList: jspb.Message.toObjectList(msg.getSecurityGroupsList(), - types_pb.SecurityGroup.toObject, includeInstance), + routeTablesList: jspb.Message.toObjectList(msg.getRouteTablesList(), + types_pb.RouteTable.toObject, includeInstance), lastSyncTime: jspb.Message.getFieldWithDefault(msg, 2, "") }; @@ -2733,23 +3532,23 @@ proto.infra.ListSecurityGroupsResponse.toObject = function(includeInstance, msg) /** * Deserializes binary data (in protobuf wire format). * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.infra.ListSecurityGroupsResponse} + * @return {!proto.infra.ListRouteTablesResponse} */ -proto.infra.ListSecurityGroupsResponse.deserializeBinary = function(bytes) { +proto.infra.ListRouteTablesResponse.deserializeBinary = function(bytes) { var reader = new jspb.BinaryReader(bytes); - var msg = new proto.infra.ListSecurityGroupsResponse; - return proto.infra.ListSecurityGroupsResponse.deserializeBinaryFromReader(msg, reader); + var msg = new proto.infra.ListRouteTablesResponse; + return proto.infra.ListRouteTablesResponse.deserializeBinaryFromReader(msg, reader); }; /** * Deserializes binary data (in protobuf wire format) from the * given reader into the given message object. - * @param {!proto.infra.ListSecurityGroupsResponse} msg The message object to deserialize into. + * @param {!proto.infra.ListRouteTablesResponse} msg The message object to deserialize into. * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.infra.ListSecurityGroupsResponse} + * @return {!proto.infra.ListRouteTablesResponse} */ -proto.infra.ListSecurityGroupsResponse.deserializeBinaryFromReader = function(msg, reader) { +proto.infra.ListRouteTablesResponse.deserializeBinaryFromReader = function(msg, reader) { while (reader.nextField()) { if (reader.isEndGroup()) { break; @@ -2757,9 +3556,9 @@ proto.infra.ListSecurityGroupsResponse.deserializeBinaryFromReader = function(ms var field = reader.getFieldNumber(); switch (field) { case 1: - var value = new types_pb.SecurityGroup; - reader.readMessage(value,types_pb.SecurityGroup.deserializeBinaryFromReader); - msg.addSecurityGroups(value); + var value = new types_pb.RouteTable; + reader.readMessage(value,types_pb.RouteTable.deserializeBinaryFromReader); + msg.addRouteTables(value); break; case 2: var value = /** @type {string} */ (reader.readString()); @@ -2778,9 +3577,9 @@ proto.infra.ListSecurityGroupsResponse.deserializeBinaryFromReader = function(ms * Serializes the message to binary data (in protobuf wire format). * @return {!Uint8Array} */ -proto.infra.ListSecurityGroupsResponse.prototype.serializeBinary = function() { +proto.infra.ListRouteTablesResponse.prototype.serializeBinary = function() { var writer = new jspb.BinaryWriter(); - proto.infra.ListSecurityGroupsResponse.serializeBinaryToWriter(this, writer); + proto.infra.ListRouteTablesResponse.serializeBinaryToWriter(this, writer); return writer.getResultBuffer(); }; @@ -2788,18 +3587,18 @@ proto.infra.ListSecurityGroupsResponse.prototype.serializeBinary = function() { /** * Serializes the given message to binary data (in protobuf wire * format), writing to the given BinaryWriter. - * @param {!proto.infra.ListSecurityGroupsResponse} message + * @param {!proto.infra.ListRouteTablesResponse} message * @param {!jspb.BinaryWriter} writer * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListSecurityGroupsResponse.serializeBinaryToWriter = function(message, writer) { +proto.infra.ListRouteTablesResponse.serializeBinaryToWriter = function(message, writer) { var f = undefined; - f = message.getSecurityGroupsList(); + f = message.getRouteTablesList(); if (f.length > 0) { writer.writeRepeatedMessage( 1, f, - types_pb.SecurityGroup.serializeBinaryToWriter + types_pb.RouteTable.serializeBinaryToWriter ); } f = message.getLastSyncTime(); @@ -2813,40 +3612,40 @@ proto.infra.ListSecurityGroupsResponse.serializeBinaryToWriter = function(messag /** - * repeated SecurityGroup security_groups = 1; - * @return {!Array} + * repeated RouteTable route_tables = 1; + * @return {!Array} */ -proto.infra.ListSecurityGroupsResponse.prototype.getSecurityGroupsList = function() { - return /** @type{!Array} */ ( - jspb.Message.getRepeatedWrapperField(this, types_pb.SecurityGroup, 1)); +proto.infra.ListRouteTablesResponse.prototype.getRouteTablesList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, types_pb.RouteTable, 1)); }; /** - * @param {!Array} value - * @return {!proto.infra.ListSecurityGroupsResponse} returns this + * @param {!Array} value + * @return {!proto.infra.ListRouteTablesResponse} returns this */ -proto.infra.ListSecurityGroupsResponse.prototype.setSecurityGroupsList = function(value) { +proto.infra.ListRouteTablesResponse.prototype.setRouteTablesList = function(value) { return jspb.Message.setRepeatedWrapperField(this, 1, value); }; /** - * @param {!proto.infra.SecurityGroup=} opt_value + * @param {!proto.infra.RouteTable=} opt_value * @param {number=} opt_index - * @return {!proto.infra.SecurityGroup} + * @return {!proto.infra.RouteTable} */ -proto.infra.ListSecurityGroupsResponse.prototype.addSecurityGroups = function(opt_value, opt_index) { - return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.infra.SecurityGroup, opt_index); +proto.infra.ListRouteTablesResponse.prototype.addRouteTables = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.infra.RouteTable, opt_index); }; /** * Clears the list making it empty but non-null. - * @return {!proto.infra.ListSecurityGroupsResponse} returns this + * @return {!proto.infra.ListRouteTablesResponse} returns this */ -proto.infra.ListSecurityGroupsResponse.prototype.clearSecurityGroupsList = function() { - return this.setSecurityGroupsList([]); +proto.infra.ListRouteTablesResponse.prototype.clearRouteTablesList = function() { + return this.setRouteTablesList([]); }; @@ -2854,16 +3653,16 @@ proto.infra.ListSecurityGroupsResponse.prototype.clearSecurityGroupsList = funct * optional string last_sync_time = 2; * @return {string} */ -proto.infra.ListSecurityGroupsResponse.prototype.getLastSyncTime = function() { +proto.infra.ListRouteTablesResponse.prototype.getLastSyncTime = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); }; /** * @param {string} value - * @return {!proto.infra.ListSecurityGroupsResponse} returns this + * @return {!proto.infra.ListRouteTablesResponse} returns this */ -proto.infra.ListSecurityGroupsResponse.prototype.setLastSyncTime = function(value) { +proto.infra.ListRouteTablesResponse.prototype.setLastSyncTime = function(value) { return jspb.Message.setProto3StringField(this, 2, value); }; @@ -2884,8 +3683,8 @@ if (jspb.Message.GENERATE_TO_OBJECT) { * http://goto/soy-param-migration * @return {!Object} */ -proto.infra.ListRouteTablesRequest.prototype.toObject = function(opt_includeInstance) { - return proto.infra.ListRouteTablesRequest.toObject(opt_includeInstance, this); +proto.infra.ListNATGatewaysRequest.prototype.toObject = function(opt_includeInstance) { + return proto.infra.ListNATGatewaysRequest.toObject(opt_includeInstance, this); }; @@ -2894,11 +3693,11 @@ proto.infra.ListRouteTablesRequest.prototype.toObject = function(opt_includeInst * @param {boolean|undefined} includeInstance Deprecated. Whether to include * the JSPB instance for transitional soy proto support: * http://goto/soy-param-migration - * @param {!proto.infra.ListRouteTablesRequest} msg The msg instance to transform. + * @param {!proto.infra.ListNATGatewaysRequest} msg The msg instance to transform. * @return {!Object} * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListRouteTablesRequest.toObject = function(includeInstance, msg) { +proto.infra.ListNATGatewaysRequest.toObject = function(includeInstance, msg) { var f, obj = { provider: jspb.Message.getFieldWithDefault(msg, 1, ""), vpcId: jspb.Message.getFieldWithDefault(msg, 2, ""), @@ -2917,23 +3716,23 @@ proto.infra.ListRouteTablesRequest.toObject = function(includeInstance, msg) { /** * Deserializes binary data (in protobuf wire format). * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.infra.ListRouteTablesRequest} + * @return {!proto.infra.ListNATGatewaysRequest} */ -proto.infra.ListRouteTablesRequest.deserializeBinary = function(bytes) { +proto.infra.ListNATGatewaysRequest.deserializeBinary = function(bytes) { var reader = new jspb.BinaryReader(bytes); - var msg = new proto.infra.ListRouteTablesRequest; - return proto.infra.ListRouteTablesRequest.deserializeBinaryFromReader(msg, reader); + var msg = new proto.infra.ListNATGatewaysRequest; + return proto.infra.ListNATGatewaysRequest.deserializeBinaryFromReader(msg, reader); }; /** * Deserializes binary data (in protobuf wire format) from the * given reader into the given message object. - * @param {!proto.infra.ListRouteTablesRequest} msg The message object to deserialize into. + * @param {!proto.infra.ListNATGatewaysRequest} msg The message object to deserialize into. * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.infra.ListRouteTablesRequest} + * @return {!proto.infra.ListNATGatewaysRequest} */ -proto.infra.ListRouteTablesRequest.deserializeBinaryFromReader = function(msg, reader) { +proto.infra.ListNATGatewaysRequest.deserializeBinaryFromReader = function(msg, reader) { while (reader.nextField()) { if (reader.isEndGroup()) { break; @@ -2969,9 +3768,9 @@ proto.infra.ListRouteTablesRequest.deserializeBinaryFromReader = function(msg, r * Serializes the message to binary data (in protobuf wire format). * @return {!Uint8Array} */ -proto.infra.ListRouteTablesRequest.prototype.serializeBinary = function() { +proto.infra.ListNATGatewaysRequest.prototype.serializeBinary = function() { var writer = new jspb.BinaryWriter(); - proto.infra.ListRouteTablesRequest.serializeBinaryToWriter(this, writer); + proto.infra.ListNATGatewaysRequest.serializeBinaryToWriter(this, writer); return writer.getResultBuffer(); }; @@ -2979,11 +3778,11 @@ proto.infra.ListRouteTablesRequest.prototype.serializeBinary = function() { /** * Serializes the given message to binary data (in protobuf wire * format), writing to the given BinaryWriter. - * @param {!proto.infra.ListRouteTablesRequest} message + * @param {!proto.infra.ListNATGatewaysRequest} message * @param {!jspb.BinaryWriter} writer * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListRouteTablesRequest.serializeBinaryToWriter = function(message, writer) { +proto.infra.ListNATGatewaysRequest.serializeBinaryToWriter = function(message, writer) { var f = undefined; f = message.getProvider(); if (f.length > 0) { @@ -3020,16 +3819,16 @@ proto.infra.ListRouteTablesRequest.serializeBinaryToWriter = function(message, w * optional string provider = 1; * @return {string} */ -proto.infra.ListRouteTablesRequest.prototype.getProvider = function() { +proto.infra.ListNATGatewaysRequest.prototype.getProvider = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); }; /** * @param {string} value - * @return {!proto.infra.ListRouteTablesRequest} returns this + * @return {!proto.infra.ListNATGatewaysRequest} returns this */ -proto.infra.ListRouteTablesRequest.prototype.setProvider = function(value) { +proto.infra.ListNATGatewaysRequest.prototype.setProvider = function(value) { return jspb.Message.setProto3StringField(this, 1, value); }; @@ -3038,16 +3837,16 @@ proto.infra.ListRouteTablesRequest.prototype.setProvider = function(value) { * optional string vpc_id = 2; * @return {string} */ -proto.infra.ListRouteTablesRequest.prototype.getVpcId = function() { +proto.infra.ListNATGatewaysRequest.prototype.getVpcId = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); }; /** * @param {string} value - * @return {!proto.infra.ListRouteTablesRequest} returns this + * @return {!proto.infra.ListNATGatewaysRequest} returns this */ -proto.infra.ListRouteTablesRequest.prototype.setVpcId = function(value) { +proto.infra.ListNATGatewaysRequest.prototype.setVpcId = function(value) { return jspb.Message.setProto3StringField(this, 2, value); }; @@ -3056,16 +3855,16 @@ proto.infra.ListRouteTablesRequest.prototype.setVpcId = function(value) { * optional string region = 3; * @return {string} */ -proto.infra.ListRouteTablesRequest.prototype.getRegion = function() { +proto.infra.ListNATGatewaysRequest.prototype.getRegion = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); }; /** * @param {string} value - * @return {!proto.infra.ListRouteTablesRequest} returns this + * @return {!proto.infra.ListNATGatewaysRequest} returns this */ -proto.infra.ListRouteTablesRequest.prototype.setRegion = function(value) { +proto.infra.ListNATGatewaysRequest.prototype.setRegion = function(value) { return jspb.Message.setProto3StringField(this, 3, value); }; @@ -3074,16 +3873,16 @@ proto.infra.ListRouteTablesRequest.prototype.setRegion = function(value) { * optional string account_id = 4; * @return {string} */ -proto.infra.ListRouteTablesRequest.prototype.getAccountId = function() { +proto.infra.ListNATGatewaysRequest.prototype.getAccountId = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, "")); }; /** * @param {string} value - * @return {!proto.infra.ListRouteTablesRequest} returns this + * @return {!proto.infra.ListNATGatewaysRequest} returns this */ -proto.infra.ListRouteTablesRequest.prototype.setAccountId = function(value) { +proto.infra.ListNATGatewaysRequest.prototype.setAccountId = function(value) { return jspb.Message.setProto3StringField(this, 4, value); }; @@ -3094,7 +3893,7 @@ proto.infra.ListRouteTablesRequest.prototype.setAccountId = function(value) { * @private {!Array} * @const */ -proto.infra.ListRouteTablesResponse.repeatedFields_ = [1]; +proto.infra.ListNATGatewaysResponse.repeatedFields_ = [1]; @@ -3111,8 +3910,8 @@ if (jspb.Message.GENERATE_TO_OBJECT) { * http://goto/soy-param-migration * @return {!Object} */ -proto.infra.ListRouteTablesResponse.prototype.toObject = function(opt_includeInstance) { - return proto.infra.ListRouteTablesResponse.toObject(opt_includeInstance, this); +proto.infra.ListNATGatewaysResponse.prototype.toObject = function(opt_includeInstance) { + return proto.infra.ListNATGatewaysResponse.toObject(opt_includeInstance, this); }; @@ -3121,14 +3920,14 @@ proto.infra.ListRouteTablesResponse.prototype.toObject = function(opt_includeIns * @param {boolean|undefined} includeInstance Deprecated. Whether to include * the JSPB instance for transitional soy proto support: * http://goto/soy-param-migration - * @param {!proto.infra.ListRouteTablesResponse} msg The msg instance to transform. + * @param {!proto.infra.ListNATGatewaysResponse} msg The msg instance to transform. * @return {!Object} * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListRouteTablesResponse.toObject = function(includeInstance, msg) { +proto.infra.ListNATGatewaysResponse.toObject = function(includeInstance, msg) { var f, obj = { - routeTablesList: jspb.Message.toObjectList(msg.getRouteTablesList(), - types_pb.RouteTable.toObject, includeInstance), + natGatewaysList: jspb.Message.toObjectList(msg.getNatGatewaysList(), + types_pb.NATGateway.toObject, includeInstance), lastSyncTime: jspb.Message.getFieldWithDefault(msg, 2, "") }; @@ -3143,23 +3942,23 @@ proto.infra.ListRouteTablesResponse.toObject = function(includeInstance, msg) { /** * Deserializes binary data (in protobuf wire format). * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.infra.ListRouteTablesResponse} + * @return {!proto.infra.ListNATGatewaysResponse} */ -proto.infra.ListRouteTablesResponse.deserializeBinary = function(bytes) { +proto.infra.ListNATGatewaysResponse.deserializeBinary = function(bytes) { var reader = new jspb.BinaryReader(bytes); - var msg = new proto.infra.ListRouteTablesResponse; - return proto.infra.ListRouteTablesResponse.deserializeBinaryFromReader(msg, reader); + var msg = new proto.infra.ListNATGatewaysResponse; + return proto.infra.ListNATGatewaysResponse.deserializeBinaryFromReader(msg, reader); }; /** * Deserializes binary data (in protobuf wire format) from the * given reader into the given message object. - * @param {!proto.infra.ListRouteTablesResponse} msg The message object to deserialize into. + * @param {!proto.infra.ListNATGatewaysResponse} msg The message object to deserialize into. * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.infra.ListRouteTablesResponse} + * @return {!proto.infra.ListNATGatewaysResponse} */ -proto.infra.ListRouteTablesResponse.deserializeBinaryFromReader = function(msg, reader) { +proto.infra.ListNATGatewaysResponse.deserializeBinaryFromReader = function(msg, reader) { while (reader.nextField()) { if (reader.isEndGroup()) { break; @@ -3167,9 +3966,9 @@ proto.infra.ListRouteTablesResponse.deserializeBinaryFromReader = function(msg, var field = reader.getFieldNumber(); switch (field) { case 1: - var value = new types_pb.RouteTable; - reader.readMessage(value,types_pb.RouteTable.deserializeBinaryFromReader); - msg.addRouteTables(value); + var value = new types_pb.NATGateway; + reader.readMessage(value,types_pb.NATGateway.deserializeBinaryFromReader); + msg.addNatGateways(value); break; case 2: var value = /** @type {string} */ (reader.readString()); @@ -3188,9 +3987,9 @@ proto.infra.ListRouteTablesResponse.deserializeBinaryFromReader = function(msg, * Serializes the message to binary data (in protobuf wire format). * @return {!Uint8Array} */ -proto.infra.ListRouteTablesResponse.prototype.serializeBinary = function() { +proto.infra.ListNATGatewaysResponse.prototype.serializeBinary = function() { var writer = new jspb.BinaryWriter(); - proto.infra.ListRouteTablesResponse.serializeBinaryToWriter(this, writer); + proto.infra.ListNATGatewaysResponse.serializeBinaryToWriter(this, writer); return writer.getResultBuffer(); }; @@ -3198,18 +3997,18 @@ proto.infra.ListRouteTablesResponse.prototype.serializeBinary = function() { /** * Serializes the given message to binary data (in protobuf wire * format), writing to the given BinaryWriter. - * @param {!proto.infra.ListRouteTablesResponse} message + * @param {!proto.infra.ListNATGatewaysResponse} message * @param {!jspb.BinaryWriter} writer * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListRouteTablesResponse.serializeBinaryToWriter = function(message, writer) { +proto.infra.ListNATGatewaysResponse.serializeBinaryToWriter = function(message, writer) { var f = undefined; - f = message.getRouteTablesList(); + f = message.getNatGatewaysList(); if (f.length > 0) { writer.writeRepeatedMessage( 1, f, - types_pb.RouteTable.serializeBinaryToWriter + types_pb.NATGateway.serializeBinaryToWriter ); } f = message.getLastSyncTime(); @@ -3223,40 +4022,40 @@ proto.infra.ListRouteTablesResponse.serializeBinaryToWriter = function(message, /** - * repeated RouteTable route_tables = 1; - * @return {!Array} + * repeated NATGateway nat_gateways = 1; + * @return {!Array} */ -proto.infra.ListRouteTablesResponse.prototype.getRouteTablesList = function() { - return /** @type{!Array} */ ( - jspb.Message.getRepeatedWrapperField(this, types_pb.RouteTable, 1)); +proto.infra.ListNATGatewaysResponse.prototype.getNatGatewaysList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, types_pb.NATGateway, 1)); }; /** - * @param {!Array} value - * @return {!proto.infra.ListRouteTablesResponse} returns this + * @param {!Array} value + * @return {!proto.infra.ListNATGatewaysResponse} returns this */ -proto.infra.ListRouteTablesResponse.prototype.setRouteTablesList = function(value) { +proto.infra.ListNATGatewaysResponse.prototype.setNatGatewaysList = function(value) { return jspb.Message.setRepeatedWrapperField(this, 1, value); }; /** - * @param {!proto.infra.RouteTable=} opt_value + * @param {!proto.infra.NATGateway=} opt_value * @param {number=} opt_index - * @return {!proto.infra.RouteTable} + * @return {!proto.infra.NATGateway} */ -proto.infra.ListRouteTablesResponse.prototype.addRouteTables = function(opt_value, opt_index) { - return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.infra.RouteTable, opt_index); +proto.infra.ListNATGatewaysResponse.prototype.addNatGateways = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.infra.NATGateway, opt_index); }; /** * Clears the list making it empty but non-null. - * @return {!proto.infra.ListRouteTablesResponse} returns this + * @return {!proto.infra.ListNATGatewaysResponse} returns this */ -proto.infra.ListRouteTablesResponse.prototype.clearRouteTablesList = function() { - return this.setRouteTablesList([]); +proto.infra.ListNATGatewaysResponse.prototype.clearNatGatewaysList = function() { + return this.setNatGatewaysList([]); }; @@ -3264,16 +4063,16 @@ proto.infra.ListRouteTablesResponse.prototype.clearRouteTablesList = function() * optional string last_sync_time = 2; * @return {string} */ -proto.infra.ListRouteTablesResponse.prototype.getLastSyncTime = function() { +proto.infra.ListNATGatewaysResponse.prototype.getLastSyncTime = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); }; /** * @param {string} value - * @return {!proto.infra.ListRouteTablesResponse} returns this + * @return {!proto.infra.ListNATGatewaysResponse} returns this */ -proto.infra.ListRouteTablesResponse.prototype.setLastSyncTime = function(value) { +proto.infra.ListNATGatewaysResponse.prototype.setLastSyncTime = function(value) { return jspb.Message.setProto3StringField(this, 2, value); }; @@ -3294,8 +4093,8 @@ if (jspb.Message.GENERATE_TO_OBJECT) { * http://goto/soy-param-migration * @return {!Object} */ -proto.infra.ListNATGatewaysRequest.prototype.toObject = function(opt_includeInstance) { - return proto.infra.ListNATGatewaysRequest.toObject(opt_includeInstance, this); +proto.infra.ListRoutersRequest.prototype.toObject = function(opt_includeInstance) { + return proto.infra.ListRoutersRequest.toObject(opt_includeInstance, this); }; @@ -3304,11 +4103,11 @@ proto.infra.ListNATGatewaysRequest.prototype.toObject = function(opt_includeInst * @param {boolean|undefined} includeInstance Deprecated. Whether to include * the JSPB instance for transitional soy proto support: * http://goto/soy-param-migration - * @param {!proto.infra.ListNATGatewaysRequest} msg The msg instance to transform. + * @param {!proto.infra.ListRoutersRequest} msg The msg instance to transform. * @return {!Object} * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListNATGatewaysRequest.toObject = function(includeInstance, msg) { +proto.infra.ListRoutersRequest.toObject = function(includeInstance, msg) { var f, obj = { provider: jspb.Message.getFieldWithDefault(msg, 1, ""), vpcId: jspb.Message.getFieldWithDefault(msg, 2, ""), @@ -3327,23 +4126,23 @@ proto.infra.ListNATGatewaysRequest.toObject = function(includeInstance, msg) { /** * Deserializes binary data (in protobuf wire format). * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.infra.ListNATGatewaysRequest} + * @return {!proto.infra.ListRoutersRequest} */ -proto.infra.ListNATGatewaysRequest.deserializeBinary = function(bytes) { +proto.infra.ListRoutersRequest.deserializeBinary = function(bytes) { var reader = new jspb.BinaryReader(bytes); - var msg = new proto.infra.ListNATGatewaysRequest; - return proto.infra.ListNATGatewaysRequest.deserializeBinaryFromReader(msg, reader); + var msg = new proto.infra.ListRoutersRequest; + return proto.infra.ListRoutersRequest.deserializeBinaryFromReader(msg, reader); }; /** * Deserializes binary data (in protobuf wire format) from the * given reader into the given message object. - * @param {!proto.infra.ListNATGatewaysRequest} msg The message object to deserialize into. + * @param {!proto.infra.ListRoutersRequest} msg The message object to deserialize into. * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.infra.ListNATGatewaysRequest} + * @return {!proto.infra.ListRoutersRequest} */ -proto.infra.ListNATGatewaysRequest.deserializeBinaryFromReader = function(msg, reader) { +proto.infra.ListRoutersRequest.deserializeBinaryFromReader = function(msg, reader) { while (reader.nextField()) { if (reader.isEndGroup()) { break; @@ -3379,9 +4178,9 @@ proto.infra.ListNATGatewaysRequest.deserializeBinaryFromReader = function(msg, r * Serializes the message to binary data (in protobuf wire format). * @return {!Uint8Array} */ -proto.infra.ListNATGatewaysRequest.prototype.serializeBinary = function() { +proto.infra.ListRoutersRequest.prototype.serializeBinary = function() { var writer = new jspb.BinaryWriter(); - proto.infra.ListNATGatewaysRequest.serializeBinaryToWriter(this, writer); + proto.infra.ListRoutersRequest.serializeBinaryToWriter(this, writer); return writer.getResultBuffer(); }; @@ -3389,11 +4188,11 @@ proto.infra.ListNATGatewaysRequest.prototype.serializeBinary = function() { /** * Serializes the given message to binary data (in protobuf wire * format), writing to the given BinaryWriter. - * @param {!proto.infra.ListNATGatewaysRequest} message + * @param {!proto.infra.ListRoutersRequest} message * @param {!jspb.BinaryWriter} writer * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListNATGatewaysRequest.serializeBinaryToWriter = function(message, writer) { +proto.infra.ListRoutersRequest.serializeBinaryToWriter = function(message, writer) { var f = undefined; f = message.getProvider(); if (f.length > 0) { @@ -3430,16 +4229,16 @@ proto.infra.ListNATGatewaysRequest.serializeBinaryToWriter = function(message, w * optional string provider = 1; * @return {string} */ -proto.infra.ListNATGatewaysRequest.prototype.getProvider = function() { +proto.infra.ListRoutersRequest.prototype.getProvider = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); }; /** * @param {string} value - * @return {!proto.infra.ListNATGatewaysRequest} returns this + * @return {!proto.infra.ListRoutersRequest} returns this */ -proto.infra.ListNATGatewaysRequest.prototype.setProvider = function(value) { +proto.infra.ListRoutersRequest.prototype.setProvider = function(value) { return jspb.Message.setProto3StringField(this, 1, value); }; @@ -3448,16 +4247,16 @@ proto.infra.ListNATGatewaysRequest.prototype.setProvider = function(value) { * optional string vpc_id = 2; * @return {string} */ -proto.infra.ListNATGatewaysRequest.prototype.getVpcId = function() { +proto.infra.ListRoutersRequest.prototype.getVpcId = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); }; /** * @param {string} value - * @return {!proto.infra.ListNATGatewaysRequest} returns this + * @return {!proto.infra.ListRoutersRequest} returns this */ -proto.infra.ListNATGatewaysRequest.prototype.setVpcId = function(value) { +proto.infra.ListRoutersRequest.prototype.setVpcId = function(value) { return jspb.Message.setProto3StringField(this, 2, value); }; @@ -3466,16 +4265,16 @@ proto.infra.ListNATGatewaysRequest.prototype.setVpcId = function(value) { * optional string region = 3; * @return {string} */ -proto.infra.ListNATGatewaysRequest.prototype.getRegion = function() { +proto.infra.ListRoutersRequest.prototype.getRegion = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); }; /** * @param {string} value - * @return {!proto.infra.ListNATGatewaysRequest} returns this + * @return {!proto.infra.ListRoutersRequest} returns this */ -proto.infra.ListNATGatewaysRequest.prototype.setRegion = function(value) { +proto.infra.ListRoutersRequest.prototype.setRegion = function(value) { return jspb.Message.setProto3StringField(this, 3, value); }; @@ -3484,16 +4283,16 @@ proto.infra.ListNATGatewaysRequest.prototype.setRegion = function(value) { * optional string account_id = 4; * @return {string} */ -proto.infra.ListNATGatewaysRequest.prototype.getAccountId = function() { +proto.infra.ListRoutersRequest.prototype.getAccountId = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, "")); }; /** * @param {string} value - * @return {!proto.infra.ListNATGatewaysRequest} returns this + * @return {!proto.infra.ListRoutersRequest} returns this */ -proto.infra.ListNATGatewaysRequest.prototype.setAccountId = function(value) { +proto.infra.ListRoutersRequest.prototype.setAccountId = function(value) { return jspb.Message.setProto3StringField(this, 4, value); }; @@ -3504,7 +4303,7 @@ proto.infra.ListNATGatewaysRequest.prototype.setAccountId = function(value) { * @private {!Array} * @const */ -proto.infra.ListNATGatewaysResponse.repeatedFields_ = [1]; +proto.infra.ListRoutersResponse.repeatedFields_ = [1]; @@ -3521,8 +4320,8 @@ if (jspb.Message.GENERATE_TO_OBJECT) { * http://goto/soy-param-migration * @return {!Object} */ -proto.infra.ListNATGatewaysResponse.prototype.toObject = function(opt_includeInstance) { - return proto.infra.ListNATGatewaysResponse.toObject(opt_includeInstance, this); +proto.infra.ListRoutersResponse.prototype.toObject = function(opt_includeInstance) { + return proto.infra.ListRoutersResponse.toObject(opt_includeInstance, this); }; @@ -3531,14 +4330,14 @@ proto.infra.ListNATGatewaysResponse.prototype.toObject = function(opt_includeIns * @param {boolean|undefined} includeInstance Deprecated. Whether to include * the JSPB instance for transitional soy proto support: * http://goto/soy-param-migration - * @param {!proto.infra.ListNATGatewaysResponse} msg The msg instance to transform. + * @param {!proto.infra.ListRoutersResponse} msg The msg instance to transform. * @return {!Object} * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListNATGatewaysResponse.toObject = function(includeInstance, msg) { +proto.infra.ListRoutersResponse.toObject = function(includeInstance, msg) { var f, obj = { - natGatewaysList: jspb.Message.toObjectList(msg.getNatGatewaysList(), - types_pb.NATGateway.toObject, includeInstance), + routersList: jspb.Message.toObjectList(msg.getRoutersList(), + types_pb.Router.toObject, includeInstance), lastSyncTime: jspb.Message.getFieldWithDefault(msg, 2, "") }; @@ -3553,23 +4352,23 @@ proto.infra.ListNATGatewaysResponse.toObject = function(includeInstance, msg) { /** * Deserializes binary data (in protobuf wire format). * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.infra.ListNATGatewaysResponse} + * @return {!proto.infra.ListRoutersResponse} */ -proto.infra.ListNATGatewaysResponse.deserializeBinary = function(bytes) { +proto.infra.ListRoutersResponse.deserializeBinary = function(bytes) { var reader = new jspb.BinaryReader(bytes); - var msg = new proto.infra.ListNATGatewaysResponse; - return proto.infra.ListNATGatewaysResponse.deserializeBinaryFromReader(msg, reader); + var msg = new proto.infra.ListRoutersResponse; + return proto.infra.ListRoutersResponse.deserializeBinaryFromReader(msg, reader); }; /** * Deserializes binary data (in protobuf wire format) from the * given reader into the given message object. - * @param {!proto.infra.ListNATGatewaysResponse} msg The message object to deserialize into. + * @param {!proto.infra.ListRoutersResponse} msg The message object to deserialize into. * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.infra.ListNATGatewaysResponse} + * @return {!proto.infra.ListRoutersResponse} */ -proto.infra.ListNATGatewaysResponse.deserializeBinaryFromReader = function(msg, reader) { +proto.infra.ListRoutersResponse.deserializeBinaryFromReader = function(msg, reader) { while (reader.nextField()) { if (reader.isEndGroup()) { break; @@ -3577,9 +4376,9 @@ proto.infra.ListNATGatewaysResponse.deserializeBinaryFromReader = function(msg, var field = reader.getFieldNumber(); switch (field) { case 1: - var value = new types_pb.NATGateway; - reader.readMessage(value,types_pb.NATGateway.deserializeBinaryFromReader); - msg.addNatGateways(value); + var value = new types_pb.Router; + reader.readMessage(value,types_pb.Router.deserializeBinaryFromReader); + msg.addRouters(value); break; case 2: var value = /** @type {string} */ (reader.readString()); @@ -3598,9 +4397,9 @@ proto.infra.ListNATGatewaysResponse.deserializeBinaryFromReader = function(msg, * Serializes the message to binary data (in protobuf wire format). * @return {!Uint8Array} */ -proto.infra.ListNATGatewaysResponse.prototype.serializeBinary = function() { +proto.infra.ListRoutersResponse.prototype.serializeBinary = function() { var writer = new jspb.BinaryWriter(); - proto.infra.ListNATGatewaysResponse.serializeBinaryToWriter(this, writer); + proto.infra.ListRoutersResponse.serializeBinaryToWriter(this, writer); return writer.getResultBuffer(); }; @@ -3608,18 +4407,18 @@ proto.infra.ListNATGatewaysResponse.prototype.serializeBinary = function() { /** * Serializes the given message to binary data (in protobuf wire * format), writing to the given BinaryWriter. - * @param {!proto.infra.ListNATGatewaysResponse} message + * @param {!proto.infra.ListRoutersResponse} message * @param {!jspb.BinaryWriter} writer * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListNATGatewaysResponse.serializeBinaryToWriter = function(message, writer) { +proto.infra.ListRoutersResponse.serializeBinaryToWriter = function(message, writer) { var f = undefined; - f = message.getNatGatewaysList(); + f = message.getRoutersList(); if (f.length > 0) { writer.writeRepeatedMessage( 1, f, - types_pb.NATGateway.serializeBinaryToWriter + types_pb.Router.serializeBinaryToWriter ); } f = message.getLastSyncTime(); @@ -3633,40 +4432,40 @@ proto.infra.ListNATGatewaysResponse.serializeBinaryToWriter = function(message, /** - * repeated NATGateway nat_gateways = 1; - * @return {!Array} + * repeated Router routers = 1; + * @return {!Array} */ -proto.infra.ListNATGatewaysResponse.prototype.getNatGatewaysList = function() { - return /** @type{!Array} */ ( - jspb.Message.getRepeatedWrapperField(this, types_pb.NATGateway, 1)); +proto.infra.ListRoutersResponse.prototype.getRoutersList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, types_pb.Router, 1)); }; /** - * @param {!Array} value - * @return {!proto.infra.ListNATGatewaysResponse} returns this + * @param {!Array} value + * @return {!proto.infra.ListRoutersResponse} returns this */ -proto.infra.ListNATGatewaysResponse.prototype.setNatGatewaysList = function(value) { +proto.infra.ListRoutersResponse.prototype.setRoutersList = function(value) { return jspb.Message.setRepeatedWrapperField(this, 1, value); }; /** - * @param {!proto.infra.NATGateway=} opt_value + * @param {!proto.infra.Router=} opt_value * @param {number=} opt_index - * @return {!proto.infra.NATGateway} + * @return {!proto.infra.Router} */ -proto.infra.ListNATGatewaysResponse.prototype.addNatGateways = function(opt_value, opt_index) { - return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.infra.NATGateway, opt_index); +proto.infra.ListRoutersResponse.prototype.addRouters = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.infra.Router, opt_index); }; /** * Clears the list making it empty but non-null. - * @return {!proto.infra.ListNATGatewaysResponse} returns this + * @return {!proto.infra.ListRoutersResponse} returns this */ -proto.infra.ListNATGatewaysResponse.prototype.clearNatGatewaysList = function() { - return this.setNatGatewaysList([]); +proto.infra.ListRoutersResponse.prototype.clearRoutersList = function() { + return this.setRoutersList([]); }; @@ -3674,16 +4473,16 @@ proto.infra.ListNATGatewaysResponse.prototype.clearNatGatewaysList = function() * optional string last_sync_time = 2; * @return {string} */ -proto.infra.ListNATGatewaysResponse.prototype.getLastSyncTime = function() { +proto.infra.ListRoutersResponse.prototype.getLastSyncTime = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); }; /** * @param {string} value - * @return {!proto.infra.ListNATGatewaysResponse} returns this + * @return {!proto.infra.ListRoutersResponse} returns this */ -proto.infra.ListNATGatewaysResponse.prototype.setLastSyncTime = function(value) { +proto.infra.ListRoutersResponse.prototype.setLastSyncTime = function(value) { return jspb.Message.setProto3StringField(this, 2, value); }; @@ -3704,8 +4503,8 @@ if (jspb.Message.GENERATE_TO_OBJECT) { * http://goto/soy-param-migration * @return {!Object} */ -proto.infra.ListRoutersRequest.prototype.toObject = function(opt_includeInstance) { - return proto.infra.ListRoutersRequest.toObject(opt_includeInstance, this); +proto.infra.ListInternetGatewaysRequest.prototype.toObject = function(opt_includeInstance) { + return proto.infra.ListInternetGatewaysRequest.toObject(opt_includeInstance, this); }; @@ -3714,11 +4513,11 @@ proto.infra.ListRoutersRequest.prototype.toObject = function(opt_includeInstance * @param {boolean|undefined} includeInstance Deprecated. Whether to include * the JSPB instance for transitional soy proto support: * http://goto/soy-param-migration - * @param {!proto.infra.ListRoutersRequest} msg The msg instance to transform. + * @param {!proto.infra.ListInternetGatewaysRequest} msg The msg instance to transform. * @return {!Object} * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListRoutersRequest.toObject = function(includeInstance, msg) { +proto.infra.ListInternetGatewaysRequest.toObject = function(includeInstance, msg) { var f, obj = { provider: jspb.Message.getFieldWithDefault(msg, 1, ""), vpcId: jspb.Message.getFieldWithDefault(msg, 2, ""), @@ -3737,23 +4536,23 @@ proto.infra.ListRoutersRequest.toObject = function(includeInstance, msg) { /** * Deserializes binary data (in protobuf wire format). * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.infra.ListRoutersRequest} + * @return {!proto.infra.ListInternetGatewaysRequest} */ -proto.infra.ListRoutersRequest.deserializeBinary = function(bytes) { +proto.infra.ListInternetGatewaysRequest.deserializeBinary = function(bytes) { var reader = new jspb.BinaryReader(bytes); - var msg = new proto.infra.ListRoutersRequest; - return proto.infra.ListRoutersRequest.deserializeBinaryFromReader(msg, reader); + var msg = new proto.infra.ListInternetGatewaysRequest; + return proto.infra.ListInternetGatewaysRequest.deserializeBinaryFromReader(msg, reader); }; /** * Deserializes binary data (in protobuf wire format) from the * given reader into the given message object. - * @param {!proto.infra.ListRoutersRequest} msg The message object to deserialize into. + * @param {!proto.infra.ListInternetGatewaysRequest} msg The message object to deserialize into. * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.infra.ListRoutersRequest} + * @return {!proto.infra.ListInternetGatewaysRequest} */ -proto.infra.ListRoutersRequest.deserializeBinaryFromReader = function(msg, reader) { +proto.infra.ListInternetGatewaysRequest.deserializeBinaryFromReader = function(msg, reader) { while (reader.nextField()) { if (reader.isEndGroup()) { break; @@ -3789,9 +4588,9 @@ proto.infra.ListRoutersRequest.deserializeBinaryFromReader = function(msg, reade * Serializes the message to binary data (in protobuf wire format). * @return {!Uint8Array} */ -proto.infra.ListRoutersRequest.prototype.serializeBinary = function() { +proto.infra.ListInternetGatewaysRequest.prototype.serializeBinary = function() { var writer = new jspb.BinaryWriter(); - proto.infra.ListRoutersRequest.serializeBinaryToWriter(this, writer); + proto.infra.ListInternetGatewaysRequest.serializeBinaryToWriter(this, writer); return writer.getResultBuffer(); }; @@ -3799,11 +4598,11 @@ proto.infra.ListRoutersRequest.prototype.serializeBinary = function() { /** * Serializes the given message to binary data (in protobuf wire * format), writing to the given BinaryWriter. - * @param {!proto.infra.ListRoutersRequest} message + * @param {!proto.infra.ListInternetGatewaysRequest} message * @param {!jspb.BinaryWriter} writer * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListRoutersRequest.serializeBinaryToWriter = function(message, writer) { +proto.infra.ListInternetGatewaysRequest.serializeBinaryToWriter = function(message, writer) { var f = undefined; f = message.getProvider(); if (f.length > 0) { @@ -3840,16 +4639,16 @@ proto.infra.ListRoutersRequest.serializeBinaryToWriter = function(message, write * optional string provider = 1; * @return {string} */ -proto.infra.ListRoutersRequest.prototype.getProvider = function() { +proto.infra.ListInternetGatewaysRequest.prototype.getProvider = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); }; /** * @param {string} value - * @return {!proto.infra.ListRoutersRequest} returns this + * @return {!proto.infra.ListInternetGatewaysRequest} returns this */ -proto.infra.ListRoutersRequest.prototype.setProvider = function(value) { +proto.infra.ListInternetGatewaysRequest.prototype.setProvider = function(value) { return jspb.Message.setProto3StringField(this, 1, value); }; @@ -3858,16 +4657,16 @@ proto.infra.ListRoutersRequest.prototype.setProvider = function(value) { * optional string vpc_id = 2; * @return {string} */ -proto.infra.ListRoutersRequest.prototype.getVpcId = function() { +proto.infra.ListInternetGatewaysRequest.prototype.getVpcId = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); }; /** * @param {string} value - * @return {!proto.infra.ListRoutersRequest} returns this + * @return {!proto.infra.ListInternetGatewaysRequest} returns this */ -proto.infra.ListRoutersRequest.prototype.setVpcId = function(value) { +proto.infra.ListInternetGatewaysRequest.prototype.setVpcId = function(value) { return jspb.Message.setProto3StringField(this, 2, value); }; @@ -3876,16 +4675,16 @@ proto.infra.ListRoutersRequest.prototype.setVpcId = function(value) { * optional string region = 3; * @return {string} */ -proto.infra.ListRoutersRequest.prototype.getRegion = function() { +proto.infra.ListInternetGatewaysRequest.prototype.getRegion = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); }; /** * @param {string} value - * @return {!proto.infra.ListRoutersRequest} returns this + * @return {!proto.infra.ListInternetGatewaysRequest} returns this */ -proto.infra.ListRoutersRequest.prototype.setRegion = function(value) { +proto.infra.ListInternetGatewaysRequest.prototype.setRegion = function(value) { return jspb.Message.setProto3StringField(this, 3, value); }; @@ -3894,16 +4693,16 @@ proto.infra.ListRoutersRequest.prototype.setRegion = function(value) { * optional string account_id = 4; * @return {string} */ -proto.infra.ListRoutersRequest.prototype.getAccountId = function() { +proto.infra.ListInternetGatewaysRequest.prototype.getAccountId = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, "")); }; /** * @param {string} value - * @return {!proto.infra.ListRoutersRequest} returns this + * @return {!proto.infra.ListInternetGatewaysRequest} returns this */ -proto.infra.ListRoutersRequest.prototype.setAccountId = function(value) { +proto.infra.ListInternetGatewaysRequest.prototype.setAccountId = function(value) { return jspb.Message.setProto3StringField(this, 4, value); }; @@ -3914,7 +4713,7 @@ proto.infra.ListRoutersRequest.prototype.setAccountId = function(value) { * @private {!Array} * @const */ -proto.infra.ListRoutersResponse.repeatedFields_ = [1]; +proto.infra.ListInternetGatewaysResponse.repeatedFields_ = [1]; @@ -3931,8 +4730,8 @@ if (jspb.Message.GENERATE_TO_OBJECT) { * http://goto/soy-param-migration * @return {!Object} */ -proto.infra.ListRoutersResponse.prototype.toObject = function(opt_includeInstance) { - return proto.infra.ListRoutersResponse.toObject(opt_includeInstance, this); +proto.infra.ListInternetGatewaysResponse.prototype.toObject = function(opt_includeInstance) { + return proto.infra.ListInternetGatewaysResponse.toObject(opt_includeInstance, this); }; @@ -3941,14 +4740,14 @@ proto.infra.ListRoutersResponse.prototype.toObject = function(opt_includeInstanc * @param {boolean|undefined} includeInstance Deprecated. Whether to include * the JSPB instance for transitional soy proto support: * http://goto/soy-param-migration - * @param {!proto.infra.ListRoutersResponse} msg The msg instance to transform. + * @param {!proto.infra.ListInternetGatewaysResponse} msg The msg instance to transform. * @return {!Object} * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListRoutersResponse.toObject = function(includeInstance, msg) { +proto.infra.ListInternetGatewaysResponse.toObject = function(includeInstance, msg) { var f, obj = { - routersList: jspb.Message.toObjectList(msg.getRoutersList(), - types_pb.Router.toObject, includeInstance), + igwsList: jspb.Message.toObjectList(msg.getIgwsList(), + types_pb.IGW.toObject, includeInstance), lastSyncTime: jspb.Message.getFieldWithDefault(msg, 2, "") }; @@ -3963,23 +4762,23 @@ proto.infra.ListRoutersResponse.toObject = function(includeInstance, msg) { /** * Deserializes binary data (in protobuf wire format). * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.infra.ListRoutersResponse} + * @return {!proto.infra.ListInternetGatewaysResponse} */ -proto.infra.ListRoutersResponse.deserializeBinary = function(bytes) { +proto.infra.ListInternetGatewaysResponse.deserializeBinary = function(bytes) { var reader = new jspb.BinaryReader(bytes); - var msg = new proto.infra.ListRoutersResponse; - return proto.infra.ListRoutersResponse.deserializeBinaryFromReader(msg, reader); + var msg = new proto.infra.ListInternetGatewaysResponse; + return proto.infra.ListInternetGatewaysResponse.deserializeBinaryFromReader(msg, reader); }; /** * Deserializes binary data (in protobuf wire format) from the * given reader into the given message object. - * @param {!proto.infra.ListRoutersResponse} msg The message object to deserialize into. + * @param {!proto.infra.ListInternetGatewaysResponse} msg The message object to deserialize into. * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.infra.ListRoutersResponse} + * @return {!proto.infra.ListInternetGatewaysResponse} */ -proto.infra.ListRoutersResponse.deserializeBinaryFromReader = function(msg, reader) { +proto.infra.ListInternetGatewaysResponse.deserializeBinaryFromReader = function(msg, reader) { while (reader.nextField()) { if (reader.isEndGroup()) { break; @@ -3987,9 +4786,9 @@ proto.infra.ListRoutersResponse.deserializeBinaryFromReader = function(msg, read var field = reader.getFieldNumber(); switch (field) { case 1: - var value = new types_pb.Router; - reader.readMessage(value,types_pb.Router.deserializeBinaryFromReader); - msg.addRouters(value); + var value = new types_pb.IGW; + reader.readMessage(value,types_pb.IGW.deserializeBinaryFromReader); + msg.addIgws(value); break; case 2: var value = /** @type {string} */ (reader.readString()); @@ -4008,9 +4807,9 @@ proto.infra.ListRoutersResponse.deserializeBinaryFromReader = function(msg, read * Serializes the message to binary data (in protobuf wire format). * @return {!Uint8Array} */ -proto.infra.ListRoutersResponse.prototype.serializeBinary = function() { +proto.infra.ListInternetGatewaysResponse.prototype.serializeBinary = function() { var writer = new jspb.BinaryWriter(); - proto.infra.ListRoutersResponse.serializeBinaryToWriter(this, writer); + proto.infra.ListInternetGatewaysResponse.serializeBinaryToWriter(this, writer); return writer.getResultBuffer(); }; @@ -4018,18 +4817,18 @@ proto.infra.ListRoutersResponse.prototype.serializeBinary = function() { /** * Serializes the given message to binary data (in protobuf wire * format), writing to the given BinaryWriter. - * @param {!proto.infra.ListRoutersResponse} message + * @param {!proto.infra.ListInternetGatewaysResponse} message * @param {!jspb.BinaryWriter} writer * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListRoutersResponse.serializeBinaryToWriter = function(message, writer) { +proto.infra.ListInternetGatewaysResponse.serializeBinaryToWriter = function(message, writer) { var f = undefined; - f = message.getRoutersList(); + f = message.getIgwsList(); if (f.length > 0) { writer.writeRepeatedMessage( 1, f, - types_pb.Router.serializeBinaryToWriter + types_pb.IGW.serializeBinaryToWriter ); } f = message.getLastSyncTime(); @@ -4043,40 +4842,40 @@ proto.infra.ListRoutersResponse.serializeBinaryToWriter = function(message, writ /** - * repeated Router routers = 1; - * @return {!Array} + * repeated IGW igws = 1; + * @return {!Array} */ -proto.infra.ListRoutersResponse.prototype.getRoutersList = function() { - return /** @type{!Array} */ ( - jspb.Message.getRepeatedWrapperField(this, types_pb.Router, 1)); +proto.infra.ListInternetGatewaysResponse.prototype.getIgwsList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, types_pb.IGW, 1)); }; /** - * @param {!Array} value - * @return {!proto.infra.ListRoutersResponse} returns this + * @param {!Array} value + * @return {!proto.infra.ListInternetGatewaysResponse} returns this */ -proto.infra.ListRoutersResponse.prototype.setRoutersList = function(value) { +proto.infra.ListInternetGatewaysResponse.prototype.setIgwsList = function(value) { return jspb.Message.setRepeatedWrapperField(this, 1, value); }; /** - * @param {!proto.infra.Router=} opt_value + * @param {!proto.infra.IGW=} opt_value * @param {number=} opt_index - * @return {!proto.infra.Router} + * @return {!proto.infra.IGW} */ -proto.infra.ListRoutersResponse.prototype.addRouters = function(opt_value, opt_index) { - return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.infra.Router, opt_index); +proto.infra.ListInternetGatewaysResponse.prototype.addIgws = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.infra.IGW, opt_index); }; /** * Clears the list making it empty but non-null. - * @return {!proto.infra.ListRoutersResponse} returns this + * @return {!proto.infra.ListInternetGatewaysResponse} returns this */ -proto.infra.ListRoutersResponse.prototype.clearRoutersList = function() { - return this.setRoutersList([]); +proto.infra.ListInternetGatewaysResponse.prototype.clearIgwsList = function() { + return this.setIgwsList([]); }; @@ -4084,21 +4883,28 @@ proto.infra.ListRoutersResponse.prototype.clearRoutersList = function() { * optional string last_sync_time = 2; * @return {string} */ -proto.infra.ListRoutersResponse.prototype.getLastSyncTime = function() { +proto.infra.ListInternetGatewaysResponse.prototype.getLastSyncTime = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); }; /** * @param {string} value - * @return {!proto.infra.ListRoutersResponse} returns this + * @return {!proto.infra.ListInternetGatewaysResponse} returns this */ -proto.infra.ListRoutersResponse.prototype.setLastSyncTime = function(value) { +proto.infra.ListInternetGatewaysResponse.prototype.setLastSyncTime = function(value) { return jspb.Message.setProto3StringField(this, 2, value); }; +/** + * List of repeated fields within this message type. + * @private {!Array} + * @const + */ +proto.infra.ListVPCEndpointsResponse.repeatedFields_ = [1]; + if (jspb.Message.GENERATE_TO_OBJECT) { @@ -4114,8 +4920,8 @@ if (jspb.Message.GENERATE_TO_OBJECT) { * http://goto/soy-param-migration * @return {!Object} */ -proto.infra.ListInternetGatewaysRequest.prototype.toObject = function(opt_includeInstance) { - return proto.infra.ListInternetGatewaysRequest.toObject(opt_includeInstance, this); +proto.infra.ListVPCEndpointsResponse.prototype.toObject = function(opt_includeInstance) { + return proto.infra.ListVPCEndpointsResponse.toObject(opt_includeInstance, this); }; @@ -4124,16 +4930,15 @@ proto.infra.ListInternetGatewaysRequest.prototype.toObject = function(opt_includ * @param {boolean|undefined} includeInstance Deprecated. Whether to include * the JSPB instance for transitional soy proto support: * http://goto/soy-param-migration - * @param {!proto.infra.ListInternetGatewaysRequest} msg The msg instance to transform. + * @param {!proto.infra.ListVPCEndpointsResponse} msg The msg instance to transform. * @return {!Object} * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListInternetGatewaysRequest.toObject = function(includeInstance, msg) { +proto.infra.ListVPCEndpointsResponse.toObject = function(includeInstance, msg) { var f, obj = { - provider: jspb.Message.getFieldWithDefault(msg, 1, ""), - vpcId: jspb.Message.getFieldWithDefault(msg, 2, ""), - region: jspb.Message.getFieldWithDefault(msg, 3, ""), - accountId: jspb.Message.getFieldWithDefault(msg, 4, "") + vepsList: jspb.Message.toObjectList(msg.getVepsList(), + types_pb.VPCEndpoint.toObject, includeInstance), + lastSyncTime: jspb.Message.getFieldWithDefault(msg, 2, "") }; if (includeInstance) { @@ -4147,23 +4952,23 @@ proto.infra.ListInternetGatewaysRequest.toObject = function(includeInstance, msg /** * Deserializes binary data (in protobuf wire format). * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.infra.ListInternetGatewaysRequest} + * @return {!proto.infra.ListVPCEndpointsResponse} */ -proto.infra.ListInternetGatewaysRequest.deserializeBinary = function(bytes) { +proto.infra.ListVPCEndpointsResponse.deserializeBinary = function(bytes) { var reader = new jspb.BinaryReader(bytes); - var msg = new proto.infra.ListInternetGatewaysRequest; - return proto.infra.ListInternetGatewaysRequest.deserializeBinaryFromReader(msg, reader); + var msg = new proto.infra.ListVPCEndpointsResponse; + return proto.infra.ListVPCEndpointsResponse.deserializeBinaryFromReader(msg, reader); }; /** * Deserializes binary data (in protobuf wire format) from the * given reader into the given message object. - * @param {!proto.infra.ListInternetGatewaysRequest} msg The message object to deserialize into. + * @param {!proto.infra.ListVPCEndpointsResponse} msg The message object to deserialize into. * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.infra.ListInternetGatewaysRequest} + * @return {!proto.infra.ListVPCEndpointsResponse} */ -proto.infra.ListInternetGatewaysRequest.deserializeBinaryFromReader = function(msg, reader) { +proto.infra.ListVPCEndpointsResponse.deserializeBinaryFromReader = function(msg, reader) { while (reader.nextField()) { if (reader.isEndGroup()) { break; @@ -4171,20 +4976,13 @@ proto.infra.ListInternetGatewaysRequest.deserializeBinaryFromReader = function(m var field = reader.getFieldNumber(); switch (field) { case 1: - var value = /** @type {string} */ (reader.readString()); - msg.setProvider(value); + var value = new types_pb.VPCEndpoint; + reader.readMessage(value,types_pb.VPCEndpoint.deserializeBinaryFromReader); + msg.addVeps(value); break; case 2: var value = /** @type {string} */ (reader.readString()); - msg.setVpcId(value); - break; - case 3: - var value = /** @type {string} */ (reader.readString()); - msg.setRegion(value); - break; - case 4: - var value = /** @type {string} */ (reader.readString()); - msg.setAccountId(value); + msg.setLastSyncTime(value); break; default: reader.skipField(); @@ -4199,9 +4997,9 @@ proto.infra.ListInternetGatewaysRequest.deserializeBinaryFromReader = function(m * Serializes the message to binary data (in protobuf wire format). * @return {!Uint8Array} */ -proto.infra.ListInternetGatewaysRequest.prototype.serializeBinary = function() { +proto.infra.ListVPCEndpointsResponse.prototype.serializeBinary = function() { var writer = new jspb.BinaryWriter(); - proto.infra.ListInternetGatewaysRequest.serializeBinaryToWriter(this, writer); + proto.infra.ListVPCEndpointsResponse.serializeBinaryToWriter(this, writer); return writer.getResultBuffer(); }; @@ -4209,123 +5007,87 @@ proto.infra.ListInternetGatewaysRequest.prototype.serializeBinary = function() { /** * Serializes the given message to binary data (in protobuf wire * format), writing to the given BinaryWriter. - * @param {!proto.infra.ListInternetGatewaysRequest} message + * @param {!proto.infra.ListVPCEndpointsResponse} message * @param {!jspb.BinaryWriter} writer * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListInternetGatewaysRequest.serializeBinaryToWriter = function(message, writer) { +proto.infra.ListVPCEndpointsResponse.serializeBinaryToWriter = function(message, writer) { var f = undefined; - f = message.getProvider(); + f = message.getVepsList(); if (f.length > 0) { - writer.writeString( + writer.writeRepeatedMessage( 1, - f + f, + types_pb.VPCEndpoint.serializeBinaryToWriter ); } - f = message.getVpcId(); + f = message.getLastSyncTime(); if (f.length > 0) { writer.writeString( 2, f ); } - f = message.getRegion(); - if (f.length > 0) { - writer.writeString( - 3, - f - ); - } - f = message.getAccountId(); - if (f.length > 0) { - writer.writeString( - 4, - f - ); - } -}; - - -/** - * optional string provider = 1; - * @return {string} - */ -proto.infra.ListInternetGatewaysRequest.prototype.getProvider = function() { - return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); -}; - - -/** - * @param {string} value - * @return {!proto.infra.ListInternetGatewaysRequest} returns this - */ -proto.infra.ListInternetGatewaysRequest.prototype.setProvider = function(value) { - return jspb.Message.setProto3StringField(this, 1, value); }; /** - * optional string vpc_id = 2; - * @return {string} + * repeated VPCEndpoint veps = 1; + * @return {!Array} */ -proto.infra.ListInternetGatewaysRequest.prototype.getVpcId = function() { - return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +proto.infra.ListVPCEndpointsResponse.prototype.getVepsList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, types_pb.VPCEndpoint, 1)); }; /** - * @param {string} value - * @return {!proto.infra.ListInternetGatewaysRequest} returns this - */ -proto.infra.ListInternetGatewaysRequest.prototype.setVpcId = function(value) { - return jspb.Message.setProto3StringField(this, 2, value); + * @param {!Array} value + * @return {!proto.infra.ListVPCEndpointsResponse} returns this +*/ +proto.infra.ListVPCEndpointsResponse.prototype.setVepsList = function(value) { + return jspb.Message.setRepeatedWrapperField(this, 1, value); }; /** - * optional string region = 3; - * @return {string} + * @param {!proto.infra.VPCEndpoint=} opt_value + * @param {number=} opt_index + * @return {!proto.infra.VPCEndpoint} */ -proto.infra.ListInternetGatewaysRequest.prototype.getRegion = function() { - return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +proto.infra.ListVPCEndpointsResponse.prototype.addVeps = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.infra.VPCEndpoint, opt_index); }; /** - * @param {string} value - * @return {!proto.infra.ListInternetGatewaysRequest} returns this + * Clears the list making it empty but non-null. + * @return {!proto.infra.ListVPCEndpointsResponse} returns this */ -proto.infra.ListInternetGatewaysRequest.prototype.setRegion = function(value) { - return jspb.Message.setProto3StringField(this, 3, value); +proto.infra.ListVPCEndpointsResponse.prototype.clearVepsList = function() { + return this.setVepsList([]); }; /** - * optional string account_id = 4; + * optional string last_sync_time = 2; * @return {string} */ -proto.infra.ListInternetGatewaysRequest.prototype.getAccountId = function() { - return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, "")); +proto.infra.ListVPCEndpointsResponse.prototype.getLastSyncTime = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); }; /** * @param {string} value - * @return {!proto.infra.ListInternetGatewaysRequest} returns this + * @return {!proto.infra.ListVPCEndpointsResponse} returns this */ -proto.infra.ListInternetGatewaysRequest.prototype.setAccountId = function(value) { - return jspb.Message.setProto3StringField(this, 4, value); +proto.infra.ListVPCEndpointsResponse.prototype.setLastSyncTime = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); }; -/** - * List of repeated fields within this message type. - * @private {!Array} - * @const - */ -proto.infra.ListInternetGatewaysResponse.repeatedFields_ = [1]; - if (jspb.Message.GENERATE_TO_OBJECT) { @@ -4341,8 +5103,8 @@ if (jspb.Message.GENERATE_TO_OBJECT) { * http://goto/soy-param-migration * @return {!Object} */ -proto.infra.ListInternetGatewaysResponse.prototype.toObject = function(opt_includeInstance) { - return proto.infra.ListInternetGatewaysResponse.toObject(opt_includeInstance, this); +proto.infra.ListVPCEndpointsRequest.prototype.toObject = function(opt_includeInstance) { + return proto.infra.ListVPCEndpointsRequest.toObject(opt_includeInstance, this); }; @@ -4351,15 +5113,16 @@ proto.infra.ListInternetGatewaysResponse.prototype.toObject = function(opt_inclu * @param {boolean|undefined} includeInstance Deprecated. Whether to include * the JSPB instance for transitional soy proto support: * http://goto/soy-param-migration - * @param {!proto.infra.ListInternetGatewaysResponse} msg The msg instance to transform. + * @param {!proto.infra.ListVPCEndpointsRequest} msg The msg instance to transform. * @return {!Object} * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListInternetGatewaysResponse.toObject = function(includeInstance, msg) { +proto.infra.ListVPCEndpointsRequest.toObject = function(includeInstance, msg) { var f, obj = { - igwsList: jspb.Message.toObjectList(msg.getIgwsList(), - types_pb.IGW.toObject, includeInstance), - lastSyncTime: jspb.Message.getFieldWithDefault(msg, 2, "") + provider: jspb.Message.getFieldWithDefault(msg, 1, ""), + vpcId: jspb.Message.getFieldWithDefault(msg, 2, ""), + region: jspb.Message.getFieldWithDefault(msg, 3, ""), + accountId: jspb.Message.getFieldWithDefault(msg, 4, "") }; if (includeInstance) { @@ -4373,23 +5136,23 @@ proto.infra.ListInternetGatewaysResponse.toObject = function(includeInstance, ms /** * Deserializes binary data (in protobuf wire format). * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.infra.ListInternetGatewaysResponse} + * @return {!proto.infra.ListVPCEndpointsRequest} */ -proto.infra.ListInternetGatewaysResponse.deserializeBinary = function(bytes) { +proto.infra.ListVPCEndpointsRequest.deserializeBinary = function(bytes) { var reader = new jspb.BinaryReader(bytes); - var msg = new proto.infra.ListInternetGatewaysResponse; - return proto.infra.ListInternetGatewaysResponse.deserializeBinaryFromReader(msg, reader); + var msg = new proto.infra.ListVPCEndpointsRequest; + return proto.infra.ListVPCEndpointsRequest.deserializeBinaryFromReader(msg, reader); }; /** * Deserializes binary data (in protobuf wire format) from the * given reader into the given message object. - * @param {!proto.infra.ListInternetGatewaysResponse} msg The message object to deserialize into. + * @param {!proto.infra.ListVPCEndpointsRequest} msg The message object to deserialize into. * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.infra.ListInternetGatewaysResponse} + * @return {!proto.infra.ListVPCEndpointsRequest} */ -proto.infra.ListInternetGatewaysResponse.deserializeBinaryFromReader = function(msg, reader) { +proto.infra.ListVPCEndpointsRequest.deserializeBinaryFromReader = function(msg, reader) { while (reader.nextField()) { if (reader.isEndGroup()) { break; @@ -4397,13 +5160,20 @@ proto.infra.ListInternetGatewaysResponse.deserializeBinaryFromReader = function( var field = reader.getFieldNumber(); switch (field) { case 1: - var value = new types_pb.IGW; - reader.readMessage(value,types_pb.IGW.deserializeBinaryFromReader); - msg.addIgws(value); + var value = /** @type {string} */ (reader.readString()); + msg.setProvider(value); break; case 2: var value = /** @type {string} */ (reader.readString()); - msg.setLastSyncTime(value); + msg.setVpcId(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setRegion(value); + break; + case 4: + var value = /** @type {string} */ (reader.readString()); + msg.setAccountId(value); break; default: reader.skipField(); @@ -4418,9 +5188,9 @@ proto.infra.ListInternetGatewaysResponse.deserializeBinaryFromReader = function( * Serializes the message to binary data (in protobuf wire format). * @return {!Uint8Array} */ -proto.infra.ListInternetGatewaysResponse.prototype.serializeBinary = function() { +proto.infra.ListVPCEndpointsRequest.prototype.serializeBinary = function() { var writer = new jspb.BinaryWriter(); - proto.infra.ListInternetGatewaysResponse.serializeBinaryToWriter(this, writer); + proto.infra.ListVPCEndpointsRequest.serializeBinaryToWriter(this, writer); return writer.getResultBuffer(); }; @@ -4428,83 +5198,112 @@ proto.infra.ListInternetGatewaysResponse.prototype.serializeBinary = function() /** * Serializes the given message to binary data (in protobuf wire * format), writing to the given BinaryWriter. - * @param {!proto.infra.ListInternetGatewaysResponse} message + * @param {!proto.infra.ListVPCEndpointsRequest} message * @param {!jspb.BinaryWriter} writer * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ListInternetGatewaysResponse.serializeBinaryToWriter = function(message, writer) { +proto.infra.ListVPCEndpointsRequest.serializeBinaryToWriter = function(message, writer) { var f = undefined; - f = message.getIgwsList(); + f = message.getProvider(); if (f.length > 0) { - writer.writeRepeatedMessage( + writer.writeString( 1, - f, - types_pb.IGW.serializeBinaryToWriter + f ); } - f = message.getLastSyncTime(); + f = message.getVpcId(); if (f.length > 0) { writer.writeString( 2, f ); } + f = message.getRegion(); + if (f.length > 0) { + writer.writeString( + 3, + f + ); + } + f = message.getAccountId(); + if (f.length > 0) { + writer.writeString( + 4, + f + ); + } }; /** - * repeated IGW igws = 1; - * @return {!Array} + * optional string provider = 1; + * @return {string} */ -proto.infra.ListInternetGatewaysResponse.prototype.getIgwsList = function() { - return /** @type{!Array} */ ( - jspb.Message.getRepeatedWrapperField(this, types_pb.IGW, 1)); +proto.infra.ListVPCEndpointsRequest.prototype.getProvider = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); }; /** - * @param {!Array} value - * @return {!proto.infra.ListInternetGatewaysResponse} returns this -*/ -proto.infra.ListInternetGatewaysResponse.prototype.setIgwsList = function(value) { - return jspb.Message.setRepeatedWrapperField(this, 1, value); + * @param {string} value + * @return {!proto.infra.ListVPCEndpointsRequest} returns this + */ +proto.infra.ListVPCEndpointsRequest.prototype.setProvider = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); }; /** - * @param {!proto.infra.IGW=} opt_value - * @param {number=} opt_index - * @return {!proto.infra.IGW} + * optional string vpc_id = 2; + * @return {string} */ -proto.infra.ListInternetGatewaysResponse.prototype.addIgws = function(opt_value, opt_index) { - return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.infra.IGW, opt_index); +proto.infra.ListVPCEndpointsRequest.prototype.getVpcId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); }; /** - * Clears the list making it empty but non-null. - * @return {!proto.infra.ListInternetGatewaysResponse} returns this + * @param {string} value + * @return {!proto.infra.ListVPCEndpointsRequest} returns this */ -proto.infra.ListInternetGatewaysResponse.prototype.clearIgwsList = function() { - return this.setIgwsList([]); +proto.infra.ListVPCEndpointsRequest.prototype.setVpcId = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); }; /** - * optional string last_sync_time = 2; + * optional string region = 3; * @return {string} */ -proto.infra.ListInternetGatewaysResponse.prototype.getLastSyncTime = function() { - return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +proto.infra.ListVPCEndpointsRequest.prototype.getRegion = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); }; /** * @param {string} value - * @return {!proto.infra.ListInternetGatewaysResponse} returns this + * @return {!proto.infra.ListVPCEndpointsRequest} returns this */ -proto.infra.ListInternetGatewaysResponse.prototype.setLastSyncTime = function(value) { - return jspb.Message.setProto3StringField(this, 2, value); +proto.infra.ListVPCEndpointsRequest.prototype.setRegion = function(value) { + return jspb.Message.setProto3StringField(this, 3, value); +}; + + +/** + * optional string account_id = 4; + * @return {string} + */ +proto.infra.ListVPCEndpointsRequest.prototype.getAccountId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, "")); +}; + + +/** + * @param {string} value + * @return {!proto.infra.ListVPCEndpointsRequest} returns this + */ +proto.infra.ListVPCEndpointsRequest.prototype.setAccountId = function(value) { + return jspb.Message.setProto3StringField(this, 4, value); }; @@ -7931,7 +8730,8 @@ proto.infra.Counters.toObject = function(includeInstance, msg) { securityGroups: jspb.Message.getFieldWithDefault(msg, 11, 0), natGateways: jspb.Message.getFieldWithDefault(msg, 12, 0), routers: jspb.Message.getFieldWithDefault(msg, 13, 0), - igws: jspb.Message.getFieldWithDefault(msg, 14, 0) + igws: jspb.Message.getFieldWithDefault(msg, 14, 0), + vpcEndpoints: jspb.Message.getFieldWithDefault(msg, 15, 0) }; if (includeInstance) { @@ -8024,6 +8824,10 @@ proto.infra.Counters.deserializeBinaryFromReader = function(msg, reader) { var value = /** @type {number} */ (reader.readInt32()); msg.setIgws(value); break; + case 15: + var value = /** @type {number} */ (reader.readInt32()); + msg.setVpcEndpoints(value); + break; default: reader.skipField(); break; @@ -8151,6 +8955,13 @@ proto.infra.Counters.serializeBinaryToWriter = function(message, writer) { f ); } + f = message.getVpcEndpoints(); + if (f !== 0) { + writer.writeInt32( + 15, + f + ); + } }; @@ -8406,6 +9217,24 @@ proto.infra.Counters.prototype.setIgws = function(value) { }; +/** + * optional int32 vpc_endpoints = 15; + * @return {number} + */ +proto.infra.Counters.prototype.getVpcEndpoints = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 15, 0)); +}; + + +/** + * @param {number} value + * @return {!proto.infra.Counters} returns this + */ +proto.infra.Counters.prototype.setVpcEndpoints = function(value) { + return jspb.Message.setProto3IntField(this, 15, value); +}; + + @@ -8439,7 +9268,8 @@ proto.infra.StatusSummary.prototype.toObject = function(opt_includeInstance) { proto.infra.StatusSummary.toObject = function(includeInstance, msg) { var f, obj = { vmStatusMap: (f = msg.getVmStatusMap()) ? f.toObject(includeInstance, undefined) : [], - podStatusMap: (f = msg.getPodStatusMap()) ? f.toObject(includeInstance, undefined) : [] + podStatusMap: (f = msg.getPodStatusMap()) ? f.toObject(includeInstance, undefined) : [], + vmTypesMap: (f = msg.getVmTypesMap()) ? f.toObject(includeInstance, undefined) : [] }; if (includeInstance) { @@ -8488,6 +9318,12 @@ proto.infra.StatusSummary.deserializeBinaryFromReader = function(msg, reader) { jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readInt32, null, "", 0); }); break; + case 3: + var value = msg.getVmTypesMap(); + reader.readMessage(value, function(message, reader) { + jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readInt32, null, "", 0); + }); + break; default: reader.skipField(); break; @@ -8525,6 +9361,10 @@ proto.infra.StatusSummary.serializeBinaryToWriter = function(message, writer) { if (f && f.getLength() > 0) { f.serializeBinary(2, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeInt32); } + f = message.getVmTypesMap(true); + if (f && f.getLength() > 0) { + f.serializeBinary(3, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeInt32); + } }; @@ -8572,6 +9412,28 @@ proto.infra.StatusSummary.prototype.clearPodStatusMap = function() { return this;}; +/** + * map vm_types = 3; + * @param {boolean=} opt_noLazyCreate Do not create the map if + * empty, instead returning `undefined` + * @return {!jspb.Map} + */ +proto.infra.StatusSummary.prototype.getVmTypesMap = function(opt_noLazyCreate) { + return /** @type {!jspb.Map} */ ( + jspb.Message.getMapField(this, 3, opt_noLazyCreate, + null)); +}; + + +/** + * Clears values from the map. The map will be non-null. + * @return {!proto.infra.StatusSummary} returns this + */ +proto.infra.StatusSummary.prototype.clearVmTypesMap = function() { + this.getVmTypesMap().clear(); + return this;}; + + diff --git a/grpc/js/kubernetes_pb.js b/grpc/js/kubernetes_pb.js index ced04a6..d5583ed 100644 --- a/grpc/js/kubernetes_pb.js +++ b/grpc/js/kubernetes_pb.js @@ -1,22 +1,3 @@ -/** - * Copyright (c) 2024 Cisco Systems, Inc. and its affiliates - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - */ - // source: kubernetes.proto /** * @fileoverview diff --git a/grpc/js/types_pb.js b/grpc/js/types_pb.js index 90092c2..6fe9fb9 100644 --- a/grpc/js/types_pb.js +++ b/grpc/js/types_pb.js @@ -1,22 +1,3 @@ -/** - * Copyright (c) 2024 Cisco Systems, Inc. and its affiliates - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - */ - // source: types.proto /** * @fileoverview @@ -48,6 +29,7 @@ goog.exportSymbol('proto.infra.NATGateway', null, global); goog.exportSymbol('proto.infra.Namespace', null, global); goog.exportSymbol('proto.infra.Node', null, global); goog.exportSymbol('proto.infra.Pod', null, global); +goog.exportSymbol('proto.infra.Region', null, global); goog.exportSymbol('proto.infra.RouteTable', null, global); goog.exportSymbol('proto.infra.RouteTable.Route', null, global); goog.exportSymbol('proto.infra.Router', null, global); @@ -55,6 +37,7 @@ goog.exportSymbol('proto.infra.SecurityGroup', null, global); goog.exportSymbol('proto.infra.SecurityGroup.SecurityGroupRule', null, global); goog.exportSymbol('proto.infra.Subnet', null, global); goog.exportSymbol('proto.infra.VPC', null, global); +goog.exportSymbol('proto.infra.VPCEndpoint', null, global); /** * Generated by JsPbCodeGenerator. * @param {Array=} opt_data Optional initial data array, typically from a @@ -139,6 +122,27 @@ if (goog.DEBUG && !COMPILED) { */ proto.infra.Account.displayName = 'proto.infra.Account'; } +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.infra.Region = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.infra.Region, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.infra.Region.displayName = 'proto.infra.Region'; +} /** * Generated by JsPbCodeGenerator. * @param {Array=} opt_data Optional initial data array, typically from a @@ -328,6 +332,27 @@ if (goog.DEBUG && !COMPILED) { */ proto.infra.IGW.displayName = 'proto.infra.IGW'; } +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.infra.VPCEndpoint = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.infra.VPCEndpoint, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.infra.VPCEndpoint.displayName = 'proto.infra.VPCEndpoint'; +} /** * Generated by JsPbCodeGenerator. * @param {Array=} opt_data Optional initial data array, typically from a @@ -498,7 +523,8 @@ proto.infra.Instance.toObject = function(includeInstance, msg) { provider: jspb.Message.getFieldWithDefault(msg, 10, ""), accountId: jspb.Message.getFieldWithDefault(msg, 11, ""), state: jspb.Message.getFieldWithDefault(msg, 12, ""), - lastSyncTime: jspb.Message.getFieldWithDefault(msg, 13, "") + type: jspb.Message.getFieldWithDefault(msg, 13, ""), + lastSyncTime: jspb.Message.getFieldWithDefault(msg, 14, "") }; if (includeInstance) { @@ -586,6 +612,10 @@ proto.infra.Instance.deserializeBinaryFromReader = function(msg, reader) { msg.setState(value); break; case 13: + var value = /** @type {string} */ (reader.readString()); + msg.setType(value); + break; + case 14: var value = /** @type {string} */ (reader.readString()); msg.setLastSyncTime(value); break; @@ -699,13 +729,20 @@ proto.infra.Instance.serializeBinaryToWriter = function(message, writer) { f ); } - f = message.getLastSyncTime(); + f = message.getType(); if (f.length > 0) { writer.writeString( 13, f ); } + f = message.getLastSyncTime(); + if (f.length > 0) { + writer.writeString( + 14, + f + ); + } }; @@ -930,10 +967,10 @@ proto.infra.Instance.prototype.setState = function(value) { /** - * optional string last_sync_time = 13; + * optional string type = 13; * @return {string} */ -proto.infra.Instance.prototype.getLastSyncTime = function() { +proto.infra.Instance.prototype.getType = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 13, "")); }; @@ -942,11 +979,29 @@ proto.infra.Instance.prototype.getLastSyncTime = function() { * @param {string} value * @return {!proto.infra.Instance} returns this */ -proto.infra.Instance.prototype.setLastSyncTime = function(value) { +proto.infra.Instance.prototype.setType = function(value) { return jspb.Message.setProto3StringField(this, 13, value); }; +/** + * optional string last_sync_time = 14; + * @return {string} + */ +proto.infra.Instance.prototype.getLastSyncTime = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 14, "")); +}; + + +/** + * @param {string} value + * @return {!proto.infra.Instance} returns this + */ +proto.infra.Instance.prototype.setLastSyncTime = function(value) { + return jspb.Message.setProto3StringField(this, 14, value); +}; + + @@ -979,9 +1034,9 @@ proto.infra.Subnet.prototype.toObject = function(opt_includeInstance) { */ proto.infra.Subnet.toObject = function(includeInstance, msg) { var f, obj = { - subnetid: jspb.Message.getFieldWithDefault(msg, 1, ""), - cidrblock: jspb.Message.getFieldWithDefault(msg, 2, ""), - vpcid: jspb.Message.getFieldWithDefault(msg, 3, ""), + id: jspb.Message.getFieldWithDefault(msg, 1, ""), + cidrBlock: jspb.Message.getFieldWithDefault(msg, 2, ""), + vpcId: jspb.Message.getFieldWithDefault(msg, 3, ""), zone: jspb.Message.getFieldWithDefault(msg, 4, ""), region: jspb.Message.getFieldWithDefault(msg, 5, ""), labelsMap: (f = msg.getLabelsMap()) ? f.toObject(includeInstance, undefined) : [], @@ -1027,15 +1082,15 @@ proto.infra.Subnet.deserializeBinaryFromReader = function(msg, reader) { switch (field) { case 1: var value = /** @type {string} */ (reader.readString()); - msg.setSubnetid(value); + msg.setId(value); break; case 2: var value = /** @type {string} */ (reader.readString()); - msg.setCidrblock(value); + msg.setCidrBlock(value); break; case 3: var value = /** @type {string} */ (reader.readString()); - msg.setVpcid(value); + msg.setVpcId(value); break; case 4: var value = /** @type {string} */ (reader.readString()); @@ -1096,21 +1151,21 @@ proto.infra.Subnet.prototype.serializeBinary = function() { */ proto.infra.Subnet.serializeBinaryToWriter = function(message, writer) { var f = undefined; - f = message.getSubnetid(); + f = message.getId(); if (f.length > 0) { writer.writeString( 1, f ); } - f = message.getCidrblock(); + f = message.getCidrBlock(); if (f.length > 0) { writer.writeString( 2, f ); } - f = message.getVpcid(); + f = message.getVpcId(); if (f.length > 0) { writer.writeString( 3, @@ -1167,10 +1222,10 @@ proto.infra.Subnet.serializeBinaryToWriter = function(message, writer) { /** - * optional string subnetId = 1; + * optional string id = 1; * @return {string} */ -proto.infra.Subnet.prototype.getSubnetid = function() { +proto.infra.Subnet.prototype.getId = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); }; @@ -1179,16 +1234,16 @@ proto.infra.Subnet.prototype.getSubnetid = function() { * @param {string} value * @return {!proto.infra.Subnet} returns this */ -proto.infra.Subnet.prototype.setSubnetid = function(value) { +proto.infra.Subnet.prototype.setId = function(value) { return jspb.Message.setProto3StringField(this, 1, value); }; /** - * optional string cidrBlock = 2; + * optional string cidr_block = 2; * @return {string} */ -proto.infra.Subnet.prototype.getCidrblock = function() { +proto.infra.Subnet.prototype.getCidrBlock = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); }; @@ -1197,16 +1252,16 @@ proto.infra.Subnet.prototype.getCidrblock = function() { * @param {string} value * @return {!proto.infra.Subnet} returns this */ -proto.infra.Subnet.prototype.setCidrblock = function(value) { +proto.infra.Subnet.prototype.setCidrBlock = function(value) { return jspb.Message.setProto3StringField(this, 2, value); }; /** - * optional string vpcId = 3; + * optional string vpc_id = 3; * @return {string} */ -proto.infra.Subnet.prototype.getVpcid = function() { +proto.infra.Subnet.prototype.getVpcId = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); }; @@ -1215,7 +1270,7 @@ proto.infra.Subnet.prototype.getVpcid = function() { * @param {string} value * @return {!proto.infra.Subnet} returns this */ -proto.infra.Subnet.prototype.setVpcid = function(value) { +proto.infra.Subnet.prototype.setVpcId = function(value) { return jspb.Message.setProto3StringField(this, 3, value); }; @@ -1944,13 +1999,6 @@ proto.infra.Account.prototype.setLastSyncTime = function(value) { -/** - * List of repeated fields within this message type. - * @private {!Array} - * @const - */ -proto.infra.ACL.repeatedFields_ = [7]; - if (jspb.Message.GENERATE_TO_OBJECT) { @@ -1966,8 +2014,8 @@ if (jspb.Message.GENERATE_TO_OBJECT) { * http://goto/soy-param-migration * @return {!Object} */ -proto.infra.ACL.prototype.toObject = function(opt_includeInstance) { - return proto.infra.ACL.toObject(opt_includeInstance, this); +proto.infra.Region.prototype.toObject = function(opt_includeInstance) { + return proto.infra.Region.toObject(opt_includeInstance, this); }; @@ -1976,22 +2024,16 @@ proto.infra.ACL.prototype.toObject = function(opt_includeInstance) { * @param {boolean|undefined} includeInstance Deprecated. Whether to include * the JSPB instance for transitional soy proto support: * http://goto/soy-param-migration - * @param {!proto.infra.ACL} msg The msg instance to transform. + * @param {!proto.infra.Region} msg The msg instance to transform. * @return {!Object} * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ACL.toObject = function(includeInstance, msg) { +proto.infra.Region.toObject = function(includeInstance, msg) { var f, obj = { provider: jspb.Message.getFieldWithDefault(msg, 1, ""), id: jspb.Message.getFieldWithDefault(msg, 2, ""), name: jspb.Message.getFieldWithDefault(msg, 3, ""), - vpcId: jspb.Message.getFieldWithDefault(msg, 4, ""), - region: jspb.Message.getFieldWithDefault(msg, 5, ""), - accountId: jspb.Message.getFieldWithDefault(msg, 6, ""), - rulesList: jspb.Message.toObjectList(msg.getRulesList(), - proto.infra.ACL.ACLRule.toObject, includeInstance), - labelsMap: (f = msg.getLabelsMap()) ? f.toObject(includeInstance, undefined) : [], - lastSyncTime: jspb.Message.getFieldWithDefault(msg, 9, "") + lastSyncTime: jspb.Message.getFieldWithDefault(msg, 4, "") }; if (includeInstance) { @@ -2005,23 +2047,23 @@ proto.infra.ACL.toObject = function(includeInstance, msg) { /** * Deserializes binary data (in protobuf wire format). * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.infra.ACL} + * @return {!proto.infra.Region} */ -proto.infra.ACL.deserializeBinary = function(bytes) { +proto.infra.Region.deserializeBinary = function(bytes) { var reader = new jspb.BinaryReader(bytes); - var msg = new proto.infra.ACL; - return proto.infra.ACL.deserializeBinaryFromReader(msg, reader); + var msg = new proto.infra.Region; + return proto.infra.Region.deserializeBinaryFromReader(msg, reader); }; /** * Deserializes binary data (in protobuf wire format) from the * given reader into the given message object. - * @param {!proto.infra.ACL} msg The message object to deserialize into. + * @param {!proto.infra.Region} msg The message object to deserialize into. * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.infra.ACL} + * @return {!proto.infra.Region} */ -proto.infra.ACL.deserializeBinaryFromReader = function(msg, reader) { +proto.infra.Region.deserializeBinaryFromReader = function(msg, reader) { while (reader.nextField()) { if (reader.isEndGroup()) { break; @@ -2041,29 +2083,6 @@ proto.infra.ACL.deserializeBinaryFromReader = function(msg, reader) { msg.setName(value); break; case 4: - var value = /** @type {string} */ (reader.readString()); - msg.setVpcId(value); - break; - case 5: - var value = /** @type {string} */ (reader.readString()); - msg.setRegion(value); - break; - case 6: - var value = /** @type {string} */ (reader.readString()); - msg.setAccountId(value); - break; - case 7: - var value = new proto.infra.ACL.ACLRule; - reader.readMessage(value,proto.infra.ACL.ACLRule.deserializeBinaryFromReader); - msg.addRules(value); - break; - case 8: - var value = msg.getLabelsMap(); - reader.readMessage(value, function(message, reader) { - jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, "", ""); - }); - break; - case 9: var value = /** @type {string} */ (reader.readString()); msg.setLastSyncTime(value); break; @@ -2080,9 +2099,9 @@ proto.infra.ACL.deserializeBinaryFromReader = function(msg, reader) { * Serializes the message to binary data (in protobuf wire format). * @return {!Uint8Array} */ -proto.infra.ACL.prototype.serializeBinary = function() { +proto.infra.Region.prototype.serializeBinary = function() { var writer = new jspb.BinaryWriter(); - proto.infra.ACL.serializeBinaryToWriter(this, writer); + proto.infra.Region.serializeBinaryToWriter(this, writer); return writer.getResultBuffer(); }; @@ -2090,11 +2109,11 @@ proto.infra.ACL.prototype.serializeBinary = function() { /** * Serializes the given message to binary data (in protobuf wire * format), writing to the given BinaryWriter. - * @param {!proto.infra.ACL} message + * @param {!proto.infra.Region} message * @param {!jspb.BinaryWriter} writer * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ACL.serializeBinaryToWriter = function(message, writer) { +proto.infra.Region.serializeBinaryToWriter = function(message, writer) { var f = undefined; f = message.getProvider(); if (f.length > 0) { @@ -2117,56 +2136,95 @@ proto.infra.ACL.serializeBinaryToWriter = function(message, writer) { f ); } - f = message.getVpcId(); - if (f.length > 0) { - writer.writeString( - 4, - f - ); - } - f = message.getRegion(); - if (f.length > 0) { - writer.writeString( - 5, - f - ); - } - f = message.getAccountId(); - if (f.length > 0) { - writer.writeString( - 6, - f - ); - } - f = message.getRulesList(); - if (f.length > 0) { - writer.writeRepeatedMessage( - 7, - f, - proto.infra.ACL.ACLRule.serializeBinaryToWriter - ); - } - f = message.getLabelsMap(true); - if (f && f.getLength() > 0) { - f.serializeBinary(8, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString); - } f = message.getLastSyncTime(); if (f.length > 0) { writer.writeString( - 9, + 4, f ); } }; +/** + * optional string provider = 1; + * @return {string} + */ +proto.infra.Region.prototype.getProvider = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.infra.Region} returns this + */ +proto.infra.Region.prototype.setProvider = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional string id = 2; + * @return {string} + */ +proto.infra.Region.prototype.getId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.infra.Region} returns this + */ +proto.infra.Region.prototype.setId = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + +/** + * optional string name = 3; + * @return {string} + */ +proto.infra.Region.prototype.getName = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** + * @param {string} value + * @return {!proto.infra.Region} returns this + */ +proto.infra.Region.prototype.setName = function(value) { + return jspb.Message.setProto3StringField(this, 3, value); +}; + + +/** + * optional string last_sync_time = 4; + * @return {string} + */ +proto.infra.Region.prototype.getLastSyncTime = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, "")); +}; + + +/** + * @param {string} value + * @return {!proto.infra.Region} returns this + */ +proto.infra.Region.prototype.setLastSyncTime = function(value) { + return jspb.Message.setProto3StringField(this, 4, value); +}; + + /** * List of repeated fields within this message type. * @private {!Array} * @const */ -proto.infra.ACL.ACLRule.repeatedFields_ = [4,5]; +proto.infra.ACL.repeatedFields_ = [7]; @@ -2183,8 +2241,8 @@ if (jspb.Message.GENERATE_TO_OBJECT) { * http://goto/soy-param-migration * @return {!Object} */ -proto.infra.ACL.ACLRule.prototype.toObject = function(opt_includeInstance) { - return proto.infra.ACL.ACLRule.toObject(opt_includeInstance, this); +proto.infra.ACL.prototype.toObject = function(opt_includeInstance) { + return proto.infra.ACL.toObject(opt_includeInstance, this); }; @@ -2193,25 +2251,242 @@ proto.infra.ACL.ACLRule.prototype.toObject = function(opt_includeInstance) { * @param {boolean|undefined} includeInstance Deprecated. Whether to include * the JSPB instance for transitional soy proto support: * http://goto/soy-param-migration - * @param {!proto.infra.ACL.ACLRule} msg The msg instance to transform. + * @param {!proto.infra.ACL} msg The msg instance to transform. * @return {!Object} * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.infra.ACL.ACLRule.toObject = function(includeInstance, msg) { +proto.infra.ACL.toObject = function(includeInstance, msg) { var f, obj = { - number: jspb.Message.getFieldWithDefault(msg, 1, 0), - protocol: jspb.Message.getFieldWithDefault(msg, 2, ""), - portRange: jspb.Message.getFieldWithDefault(msg, 3, ""), - sourceRangesList: (f = jspb.Message.getRepeatedField(msg, 4)) == null ? undefined : f, - destinationRangesList: (f = jspb.Message.getRepeatedField(msg, 5)) == null ? undefined : f, - action: jspb.Message.getFieldWithDefault(msg, 6, ""), - direction: jspb.Message.getFieldWithDefault(msg, 7, "") - }; - - if (includeInstance) { - obj.$jspbMessageInstance = msg; - } - return obj; + provider: jspb.Message.getFieldWithDefault(msg, 1, ""), + id: jspb.Message.getFieldWithDefault(msg, 2, ""), + name: jspb.Message.getFieldWithDefault(msg, 3, ""), + vpcId: jspb.Message.getFieldWithDefault(msg, 4, ""), + region: jspb.Message.getFieldWithDefault(msg, 5, ""), + accountId: jspb.Message.getFieldWithDefault(msg, 6, ""), + rulesList: jspb.Message.toObjectList(msg.getRulesList(), + proto.infra.ACL.ACLRule.toObject, includeInstance), + labelsMap: (f = msg.getLabelsMap()) ? f.toObject(includeInstance, undefined) : [], + lastSyncTime: jspb.Message.getFieldWithDefault(msg, 9, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.infra.ACL} + */ +proto.infra.ACL.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.infra.ACL; + return proto.infra.ACL.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.infra.ACL} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.infra.ACL} + */ +proto.infra.ACL.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setProvider(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setId(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setName(value); + break; + case 4: + var value = /** @type {string} */ (reader.readString()); + msg.setVpcId(value); + break; + case 5: + var value = /** @type {string} */ (reader.readString()); + msg.setRegion(value); + break; + case 6: + var value = /** @type {string} */ (reader.readString()); + msg.setAccountId(value); + break; + case 7: + var value = new proto.infra.ACL.ACLRule; + reader.readMessage(value,proto.infra.ACL.ACLRule.deserializeBinaryFromReader); + msg.addRules(value); + break; + case 8: + var value = msg.getLabelsMap(); + reader.readMessage(value, function(message, reader) { + jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, "", ""); + }); + break; + case 9: + var value = /** @type {string} */ (reader.readString()); + msg.setLastSyncTime(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.infra.ACL.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.infra.ACL.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.infra.ACL} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.infra.ACL.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getProvider(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getId(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } + f = message.getName(); + if (f.length > 0) { + writer.writeString( + 3, + f + ); + } + f = message.getVpcId(); + if (f.length > 0) { + writer.writeString( + 4, + f + ); + } + f = message.getRegion(); + if (f.length > 0) { + writer.writeString( + 5, + f + ); + } + f = message.getAccountId(); + if (f.length > 0) { + writer.writeString( + 6, + f + ); + } + f = message.getRulesList(); + if (f.length > 0) { + writer.writeRepeatedMessage( + 7, + f, + proto.infra.ACL.ACLRule.serializeBinaryToWriter + ); + } + f = message.getLabelsMap(true); + if (f && f.getLength() > 0) { + f.serializeBinary(8, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString); + } + f = message.getLastSyncTime(); + if (f.length > 0) { + writer.writeString( + 9, + f + ); + } +}; + + + +/** + * List of repeated fields within this message type. + * @private {!Array} + * @const + */ +proto.infra.ACL.ACLRule.repeatedFields_ = [4,5]; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.infra.ACL.ACLRule.prototype.toObject = function(opt_includeInstance) { + return proto.infra.ACL.ACLRule.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.infra.ACL.ACLRule} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.infra.ACL.ACLRule.toObject = function(includeInstance, msg) { + var f, obj = { + number: jspb.Message.getFieldWithDefault(msg, 1, 0), + protocol: jspb.Message.getFieldWithDefault(msg, 2, ""), + portRange: jspb.Message.getFieldWithDefault(msg, 3, ""), + sourceRangesList: (f = jspb.Message.getRepeatedField(msg, 4)) == null ? undefined : f, + destinationRangesList: (f = jspb.Message.getRepeatedField(msg, 5)) == null ? undefined : f, + action: jspb.Message.getFieldWithDefault(msg, 6, ""), + direction: jspb.Message.getFieldWithDefault(msg, 7, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; }; } @@ -5677,6 +5952,601 @@ proto.infra.IGW.prototype.setLastSyncTime = function(value) { +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.infra.VPCEndpoint.prototype.toObject = function(opt_includeInstance) { + return proto.infra.VPCEndpoint.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.infra.VPCEndpoint} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.infra.VPCEndpoint.toObject = function(includeInstance, msg) { + var f, obj = { + id: jspb.Message.getFieldWithDefault(msg, 1, ""), + name: jspb.Message.getFieldWithDefault(msg, 2, ""), + provider: jspb.Message.getFieldWithDefault(msg, 3, ""), + accountId: jspb.Message.getFieldWithDefault(msg, 4, ""), + vpcId: jspb.Message.getFieldWithDefault(msg, 5, ""), + region: jspb.Message.getFieldWithDefault(msg, 6, ""), + state: jspb.Message.getFieldWithDefault(msg, 7, ""), + type: jspb.Message.getFieldWithDefault(msg, 8, ""), + serviceName: jspb.Message.getFieldWithDefault(msg, 9, ""), + routeTableIds: jspb.Message.getFieldWithDefault(msg, 10, ""), + subnetIds: jspb.Message.getFieldWithDefault(msg, 11, ""), + labelsMap: (f = msg.getLabelsMap()) ? f.toObject(includeInstance, undefined) : [], + createdAt: (f = msg.getCreatedAt()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f), + updatedAt: (f = msg.getUpdatedAt()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f), + lastSyncTime: jspb.Message.getFieldWithDefault(msg, 15, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.infra.VPCEndpoint} + */ +proto.infra.VPCEndpoint.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.infra.VPCEndpoint; + return proto.infra.VPCEndpoint.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.infra.VPCEndpoint} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.infra.VPCEndpoint} + */ +proto.infra.VPCEndpoint.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setId(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setName(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setProvider(value); + break; + case 4: + var value = /** @type {string} */ (reader.readString()); + msg.setAccountId(value); + break; + case 5: + var value = /** @type {string} */ (reader.readString()); + msg.setVpcId(value); + break; + case 6: + var value = /** @type {string} */ (reader.readString()); + msg.setRegion(value); + break; + case 7: + var value = /** @type {string} */ (reader.readString()); + msg.setState(value); + break; + case 8: + var value = /** @type {string} */ (reader.readString()); + msg.setType(value); + break; + case 9: + var value = /** @type {string} */ (reader.readString()); + msg.setServiceName(value); + break; + case 10: + var value = /** @type {string} */ (reader.readString()); + msg.setRouteTableIds(value); + break; + case 11: + var value = /** @type {string} */ (reader.readString()); + msg.setSubnetIds(value); + break; + case 12: + var value = msg.getLabelsMap(); + reader.readMessage(value, function(message, reader) { + jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, "", ""); + }); + break; + case 13: + var value = new google_protobuf_timestamp_pb.Timestamp; + reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader); + msg.setCreatedAt(value); + break; + case 14: + var value = new google_protobuf_timestamp_pb.Timestamp; + reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader); + msg.setUpdatedAt(value); + break; + case 15: + var value = /** @type {string} */ (reader.readString()); + msg.setLastSyncTime(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.infra.VPCEndpoint.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.infra.VPCEndpoint.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.infra.VPCEndpoint} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.infra.VPCEndpoint.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getId(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getName(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } + f = message.getProvider(); + if (f.length > 0) { + writer.writeString( + 3, + f + ); + } + f = message.getAccountId(); + if (f.length > 0) { + writer.writeString( + 4, + f + ); + } + f = message.getVpcId(); + if (f.length > 0) { + writer.writeString( + 5, + f + ); + } + f = message.getRegion(); + if (f.length > 0) { + writer.writeString( + 6, + f + ); + } + f = message.getState(); + if (f.length > 0) { + writer.writeString( + 7, + f + ); + } + f = message.getType(); + if (f.length > 0) { + writer.writeString( + 8, + f + ); + } + f = message.getServiceName(); + if (f.length > 0) { + writer.writeString( + 9, + f + ); + } + f = message.getRouteTableIds(); + if (f.length > 0) { + writer.writeString( + 10, + f + ); + } + f = message.getSubnetIds(); + if (f.length > 0) { + writer.writeString( + 11, + f + ); + } + f = message.getLabelsMap(true); + if (f && f.getLength() > 0) { + f.serializeBinary(12, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString); + } + f = message.getCreatedAt(); + if (f != null) { + writer.writeMessage( + 13, + f, + google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter + ); + } + f = message.getUpdatedAt(); + if (f != null) { + writer.writeMessage( + 14, + f, + google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter + ); + } + f = message.getLastSyncTime(); + if (f.length > 0) { + writer.writeString( + 15, + f + ); + } +}; + + +/** + * optional string id = 1; + * @return {string} + */ +proto.infra.VPCEndpoint.prototype.getId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.infra.VPCEndpoint} returns this + */ +proto.infra.VPCEndpoint.prototype.setId = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional string name = 2; + * @return {string} + */ +proto.infra.VPCEndpoint.prototype.getName = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.infra.VPCEndpoint} returns this + */ +proto.infra.VPCEndpoint.prototype.setName = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + +/** + * optional string provider = 3; + * @return {string} + */ +proto.infra.VPCEndpoint.prototype.getProvider = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** + * @param {string} value + * @return {!proto.infra.VPCEndpoint} returns this + */ +proto.infra.VPCEndpoint.prototype.setProvider = function(value) { + return jspb.Message.setProto3StringField(this, 3, value); +}; + + +/** + * optional string account_id = 4; + * @return {string} + */ +proto.infra.VPCEndpoint.prototype.getAccountId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, "")); +}; + + +/** + * @param {string} value + * @return {!proto.infra.VPCEndpoint} returns this + */ +proto.infra.VPCEndpoint.prototype.setAccountId = function(value) { + return jspb.Message.setProto3StringField(this, 4, value); +}; + + +/** + * optional string vpc_id = 5; + * @return {string} + */ +proto.infra.VPCEndpoint.prototype.getVpcId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, "")); +}; + + +/** + * @param {string} value + * @return {!proto.infra.VPCEndpoint} returns this + */ +proto.infra.VPCEndpoint.prototype.setVpcId = function(value) { + return jspb.Message.setProto3StringField(this, 5, value); +}; + + +/** + * optional string region = 6; + * @return {string} + */ +proto.infra.VPCEndpoint.prototype.getRegion = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, "")); +}; + + +/** + * @param {string} value + * @return {!proto.infra.VPCEndpoint} returns this + */ +proto.infra.VPCEndpoint.prototype.setRegion = function(value) { + return jspb.Message.setProto3StringField(this, 6, value); +}; + + +/** + * optional string state = 7; + * @return {string} + */ +proto.infra.VPCEndpoint.prototype.getState = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, "")); +}; + + +/** + * @param {string} value + * @return {!proto.infra.VPCEndpoint} returns this + */ +proto.infra.VPCEndpoint.prototype.setState = function(value) { + return jspb.Message.setProto3StringField(this, 7, value); +}; + + +/** + * optional string type = 8; + * @return {string} + */ +proto.infra.VPCEndpoint.prototype.getType = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 8, "")); +}; + + +/** + * @param {string} value + * @return {!proto.infra.VPCEndpoint} returns this + */ +proto.infra.VPCEndpoint.prototype.setType = function(value) { + return jspb.Message.setProto3StringField(this, 8, value); +}; + + +/** + * optional string service_name = 9; + * @return {string} + */ +proto.infra.VPCEndpoint.prototype.getServiceName = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 9, "")); +}; + + +/** + * @param {string} value + * @return {!proto.infra.VPCEndpoint} returns this + */ +proto.infra.VPCEndpoint.prototype.setServiceName = function(value) { + return jspb.Message.setProto3StringField(this, 9, value); +}; + + +/** + * optional string route_table_ids = 10; + * @return {string} + */ +proto.infra.VPCEndpoint.prototype.getRouteTableIds = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 10, "")); +}; + + +/** + * @param {string} value + * @return {!proto.infra.VPCEndpoint} returns this + */ +proto.infra.VPCEndpoint.prototype.setRouteTableIds = function(value) { + return jspb.Message.setProto3StringField(this, 10, value); +}; + + +/** + * optional string subnet_ids = 11; + * @return {string} + */ +proto.infra.VPCEndpoint.prototype.getSubnetIds = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 11, "")); +}; + + +/** + * @param {string} value + * @return {!proto.infra.VPCEndpoint} returns this + */ +proto.infra.VPCEndpoint.prototype.setSubnetIds = function(value) { + return jspb.Message.setProto3StringField(this, 11, value); +}; + + +/** + * map labels = 12; + * @param {boolean=} opt_noLazyCreate Do not create the map if + * empty, instead returning `undefined` + * @return {!jspb.Map} + */ +proto.infra.VPCEndpoint.prototype.getLabelsMap = function(opt_noLazyCreate) { + return /** @type {!jspb.Map} */ ( + jspb.Message.getMapField(this, 12, opt_noLazyCreate, + null)); +}; + + +/** + * Clears values from the map. The map will be non-null. + * @return {!proto.infra.VPCEndpoint} returns this + */ +proto.infra.VPCEndpoint.prototype.clearLabelsMap = function() { + this.getLabelsMap().clear(); + return this;}; + + +/** + * optional google.protobuf.Timestamp created_at = 13; + * @return {?proto.google.protobuf.Timestamp} + */ +proto.infra.VPCEndpoint.prototype.getCreatedAt = function() { + return /** @type{?proto.google.protobuf.Timestamp} */ ( + jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 13)); +}; + + +/** + * @param {?proto.google.protobuf.Timestamp|undefined} value + * @return {!proto.infra.VPCEndpoint} returns this +*/ +proto.infra.VPCEndpoint.prototype.setCreatedAt = function(value) { + return jspb.Message.setWrapperField(this, 13, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.infra.VPCEndpoint} returns this + */ +proto.infra.VPCEndpoint.prototype.clearCreatedAt = function() { + return this.setCreatedAt(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.infra.VPCEndpoint.prototype.hasCreatedAt = function() { + return jspb.Message.getField(this, 13) != null; +}; + + +/** + * optional google.protobuf.Timestamp updated_at = 14; + * @return {?proto.google.protobuf.Timestamp} + */ +proto.infra.VPCEndpoint.prototype.getUpdatedAt = function() { + return /** @type{?proto.google.protobuf.Timestamp} */ ( + jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 14)); +}; + + +/** + * @param {?proto.google.protobuf.Timestamp|undefined} value + * @return {!proto.infra.VPCEndpoint} returns this +*/ +proto.infra.VPCEndpoint.prototype.setUpdatedAt = function(value) { + return jspb.Message.setWrapperField(this, 14, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.infra.VPCEndpoint} returns this + */ +proto.infra.VPCEndpoint.prototype.clearUpdatedAt = function() { + return this.setUpdatedAt(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.infra.VPCEndpoint.prototype.hasUpdatedAt = function() { + return jspb.Message.getField(this, 14) != null; +}; + + +/** + * optional string last_sync_time = 15; + * @return {string} + */ +proto.infra.VPCEndpoint.prototype.getLastSyncTime = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 15, "")); +}; + + +/** + * @param {string} value + * @return {!proto.infra.VPCEndpoint} returns this + */ +proto.infra.VPCEndpoint.prototype.setLastSyncTime = function(value) { + return jspb.Message.setProto3StringField(this, 15, value); +}; + + + + + if (jspb.Message.GENERATE_TO_OBJECT) { /** * Creates an object representation of this proto. diff --git a/grpc/proto/cloud.proto b/grpc/proto/cloud.proto index d6dce94..6652297 100644 --- a/grpc/proto/cloud.proto +++ b/grpc/proto/cloud.proto @@ -25,6 +25,8 @@ option go_package = "./;infrapb"; service CloudProviderService { rpc ListAccounts (ListAccountsRequest) returns (ListAccountsResponse) {} + rpc ListRegions (ListRegionsRequest ) returns (ListRegionsResponse) {} + rpc ListVPC (ListVPCRequest) returns (ListVPCResponse) {} rpc ListInstances (ListInstancesRequest) returns (ListInstancesResponse) {} @@ -42,10 +44,8 @@ service CloudProviderService { rpc ListNATGateways (ListNATGatewaysRequest) returns (ListNATGatewaysResponse) {} rpc ListRouters (ListRoutersRequest) returns (ListRoutersResponse) {} - rpc ListInternetGateways (ListInternetGatewaysRequest) returns (ListInternetGatewaysResponse) {} - - + rpc ListVPCEndpoints (ListVPCEndpointsRequest) returns (ListVPCEndpointsResponse) {} rpc GetVPCIDForCIDR (GetVPCIDForCIDRRequest) returns (GetVPCIDForCIDRResponse) {} rpc GetCIDRsForLabels (GetCIDRsForLabelsRequest) returns (GetCIDRsForLabelsResponse) {} @@ -69,6 +69,15 @@ message ListAccountsResponse { repeated Account accounts = 1; } +message ListRegionsRequest { + string provider = 1; + string account_id = 2; +} + +message ListRegionsResponse { + repeated Region regions = 1; +} + // ListVPC message ListVPCRequest { string provider = 1; @@ -170,6 +179,17 @@ message ListInternetGatewaysResponse { string last_sync_time = 2; } +message ListVPCEndpointsResponse { + repeated VPCEndpoint veps = 1; + string last_sync_time = 2; +} + +message ListVPCEndpointsRequest { + string provider = 1; + string vpc_id = 2; + string region = 3; + string account_id = 4; +} // GetSubnet @@ -295,11 +315,13 @@ message Counters { int32 nat_gateways = 12; int32 routers = 13; int32 igws = 14; + int32 vpc_endpoints = 15; } message StatusSummary { map vm_status = 1; map pod_status = 2; + map vm_types = 3; } message SummaryResponse { diff --git a/grpc/proto/types.proto b/grpc/proto/types.proto index d25fdd4..bc5ba3e 100644 --- a/grpc/proto/types.proto +++ b/grpc/proto/types.proto @@ -35,13 +35,14 @@ message Instance { string provider = 10; string account_id = 11; string state = 12; - string last_sync_time = 13; + string type = 13; + string last_sync_time = 14; } message Subnet { - string subnetId = 1; - string cidrBlock = 2; - string vpcId = 3; + string id = 1; + string cidr_block = 2; + string vpc_id = 3; string zone = 4; string region = 5; map labels = 6; @@ -72,6 +73,13 @@ message Account { string last_sync_time = 4; } +message Region { + string provider = 1; + string id = 2; + string name = 3; + string last_sync_time = 4; +} + message ACL { string provider = 1; string id = 2; @@ -182,6 +190,27 @@ message Router { string last_sync_time = 14; } + message VPCEndpoint { + string id = 1; + string name = 2; + string provider = 3; + string account_id = 4; + string vpc_id = 5; // + string region = 6; // VPC Region + string state = 7; + string type = 8; + string service_name = 9; + string route_table_ids = 10; //comma separated subnet ids + string subnet_ids = 11; //comma separated route table ids + map labels = 12; + google.protobuf.Timestamp created_at = 13; + google.protobuf.Timestamp updated_at = 14; + string last_sync_time = 15; + } + + + // Kubernetes + message Cluster { string name = 1; string full_name = 2; diff --git a/grpc/server/server.go b/grpc/server/server.go index 733e33d..c58d8ce 100644 --- a/grpc/server/server.go +++ b/grpc/server/server.go @@ -237,6 +237,20 @@ func (s *Server) ListAccounts(ctx context.Context, in *infrapb.ListAccountsReque }, nil } +func (s *Server) ListRegions(ctx context.Context, in *infrapb.ListRegionsRequest) (*infrapb.ListRegionsResponse, error) { + cloudProvider, err := s.strategy.GetProvider(ctx, in.Provider) + if err != nil { + return nil, err + } + regions, err := cloudProvider.ListRegions(ctx, in) + if err != nil { + return nil, err + } + return &infrapb.ListRegionsResponse{ + Regions: typesRegionsToGrpc(regions), + }, nil +} + func (s *Server) ListVPC(ctx context.Context, in *infrapb.ListVPCRequest) (*infrapb.ListVPCResponse, error) { cloudProvider, err := s.strategy.GetProvider(ctx, in.Provider) if err != nil { @@ -445,6 +459,31 @@ func (s *Server) ListInternetGateways(ctx context.Context, in *infrapb.ListInter }, nil } +func (s *Server) ListVPCEndpoints(ctx context.Context, in *infrapb.ListVPCEndpointsRequest) (*infrapb.ListVPCEndpointsResponse, error) { + + s.logger.Infof("Listing routers from user query") + cloudProvider, err := s.strategy.GetProvider(ctx, in.Provider) + if err != nil { + return nil, err + } + l, err := cloudProvider.ListVPCEndpoints(ctx, in) + if err != nil { + s.logger.Errorf("Failure to retreive Router %s", err.Error()) + return nil, err + } + var t string + syncTime, err := cloudProvider.GetSyncTime(types.SyncTimeKey(cloudProvider.GetName(), types.RouterType)) + if err != nil { + s.logger.Errorf("Failed to get sync time for %s, provider %s", types.RouterType, cloudProvider.GetName()) + } else { + t = syncTime.Time + } + return &infrapb.ListVPCEndpointsResponse{ + LastSyncTime: t, + Veps: typesVPCEndpointsToGrpc(l), + }, nil +} + func (s *Server) GetVPCIDForCIDR(ctx context.Context, in *infrapb.GetVPCIDForCIDRRequest) (*infrapb.GetVPCIDForCIDRResponse, error) { cloudProvider, err := s.strategy.GetProvider(ctx, in.Provider) if err != nil { @@ -676,6 +715,10 @@ func (s *Server) Summary(ctx context.Context, in *infrapb.SummaryRequest) (*infr for _, vm := range instances { vmStateSummary[strings.ToLower(vm.State)] += 1 } + vmTypeSummary := make(map[string]int32) + for _, vm := range instances { + vmTypeSummary[strings.ToLower(vm.Type)] += 1 + } acls, err := cloudProvider.ListACLs(ctx, &infrapb.ListACLsRequest{}) if err != nil { return nil, err @@ -689,17 +732,27 @@ func (s *Server) Summary(ctx context.Context, in *infrapb.SummaryRequest) (*infr return nil, err } - /* - natGateways, err := cloudProvider.ListNATGateways(ctx, &infrapb.ListNATGatewaysRequest{}) - if err != nil { - return nil, err - } + natGateways, err := cloudProvider.ListNATGateways(ctx, &infrapb.ListNATGatewaysRequest{}) + if err != nil { + return nil, err + } - routers, err := cloudProvider.ListRouters(ctx, &infrapb.ListRoutersRequest{}) - if err != nil { - return nil, err - } - */ + routers, err := cloudProvider.ListRouters(ctx, &infrapb.ListRoutersRequest{}) + if err != nil { + return nil, err + } + + igws, err := cloudProvider.ListInternetGateways(ctx, &infrapb.ListInternetGatewaysRequest{}) + if err != nil { + return nil, err + } + + vpcEndpoints, err := cloudProvider.ListVPCEndpoints(ctx, &infrapb.ListVPCEndpointsRequest{}) + if err != nil { + return nil, err + } + + // Kubernetes Resources clusters, err := cloudProvider.ListClusters(ctx, &infrapb.ListCloudClustersRequest{}) if err != nil { @@ -757,7 +810,12 @@ func (s *Server) Summary(ctx context.Context, in *infrapb.SummaryRequest) (*infr Instances: int32(len(instances)), Acls: int32(len(acls)), SecurityGroups: int32(len(sgs)), - //NATGateways: int32(len(natGateways)), + NatGateways: int32(len(natGateways)), + Routers: int32(len(routers)), + Igws: int32(len(igws)), + VpcEndpoints: int32(len(vpcEndpoints)), + + //Kubernetes Clusters: int32(len(clusters)), Pods: int32(podsCount), Services: int32(servicesCount), @@ -766,6 +824,7 @@ func (s *Server) Summary(ctx context.Context, in *infrapb.SummaryRequest) (*infr Statuses: &infrapb.StatusSummary{ VmStatus: vmStateSummary, PodStatus: podsStateSummary, + VmTypes: vmTypeSummary, }, }, nil } @@ -906,7 +965,7 @@ func (s *Server) unaryServerInterceptor(ctx context.Context, req interface{}, in resp, err := handler(ctx, req) // Log response - s.logger.Debugf("Request = %+v \n Unary Response - Method:%s, Response:%v, Error:%v\n", req, info.FullMethod, resp, err) + s.logger.Infof("Request = %+v \n Unary Response - Method:%s, Response:%v, Error:%v\n", req, info.FullMethod, resp, err) return resp, err } diff --git a/grpc/server/translate.go b/grpc/server/translate.go index cedb676..1fe91b8 100644 --- a/grpc/server/translate.go +++ b/grpc/server/translate.go @@ -51,6 +51,7 @@ func typesInstanceToGrpc(in []types.Instance) []*infrapb.Instance { Provider: instance.Provider, AccountId: instance.AccountID, State: instance.State, + Type: instance.Type, LastSyncTime: instance.LastSyncTime, }) } @@ -61,7 +62,7 @@ func typesSubnetsToGrpc(in []types.Subnet) []*infrapb.Subnet { out := make([]*infrapb.Subnet, 0, len(in)) for _, subnet := range in { out = append(out, &infrapb.Subnet{ - SubnetId: subnet.SubnetId, + Id: subnet.SubnetId, Name: subnet.Name, CidrBlock: subnet.CidrBlock, VpcId: subnet.VpcId, @@ -121,48 +122,42 @@ func typesIGWsToGrpc(in []types.IGW) []*infrapb.IGW { out := make([]*infrapb.IGW, 0, len(in)) for _, igw := range in { out = append(out, &infrapb.IGW{ - Id: igw.ID, - Name: igw.Name, - AttachedVpcId: igw.AttachedVpcId, - Provider: igw.Provider, - Region: igw.Region, - State: igw.State, - Labels: igw.Labels, - AccountId: igw.AccountId, - CreatedAt: igw.CreatedAt, - LastSyncTime: igw.LastSyncTime, + Id: igw.ID, + Name: igw.Name, + AttachedVpcId: igw.AttachedVpcId, + Provider: igw.Provider, + Region: igw.Region, + State: igw.State, + Labels: igw.Labels, + AccountId: igw.AccountId, + CreatedAt: igw.CreatedAt, + LastSyncTime: igw.LastSyncTime, }) } return out } - -/* -type Router struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Provider string `protobuf:"bytes,3,opt,name=provider,proto3" json:"provider,omitempty"` - Region string `protobuf:"bytes,4,opt,name=region,proto3" json:"region,omitempty"` - VpcId string `protobuf:"bytes,5,opt,name=vpc_id,json=vpcId,proto3" json:"vpc_id,omitempty"` - State string `protobuf:"bytes,6,opt,name=state,proto3" json:"state,omitempty"` - Asn uint32 `protobuf:"varint,7,opt,name=asn,proto3" json:"asn,omitempty"` - AdvertisedRange string `protobuf:"bytes,8,opt,name=advertised_range,json=advertisedRange,proto3" json:"advertised_range,omitempty"` - AdvertisedGroup string `protobuf:"bytes,9,opt,name=advertised_group,json=advertisedGroup,proto3" json:"advertised_group,omitempty"` - VpnType string `protobuf:"bytes,10,opt,name=vpn_type,json=vpnType,proto3" json:"vpn_type,omitempty"` - SubnetId string `protobuf:"bytes,11,opt,name=subnet_id,json=subnetId,proto3" json:"subnet_id,omitempty"` - Labels map[string]string `protobuf:"bytes,12,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - AccountId string `protobuf:"bytes,15,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` - LastSyncTime string `protobuf:"bytes,16,opt,name=last_sync_time,json=lastSyncTime,proto3" json:"last_sync_time,omitempty"` - AdditionalProperties map[string]string `protobuf:"bytes,17,rep,name=additional_properties,json=additionalProperties,proto3" json:"additional_properties,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +func typesVPCEndpointsToGrpc(in []types.VPCEndpoint) []*infrapb.VPCEndpoint { + out := make([]*infrapb.VPCEndpoint, 0, len(in)) + for _, vpce := range in { + out = append(out, &infrapb.VPCEndpoint{ + Id: vpce.ID, + Name: vpce.Name, + VpcId: vpce.VPCId, + Provider: vpce.Provider, + Region: vpce.Region, + State: vpce.State, + Labels: vpce.Labels, + AccountId: vpce.AccountId, + RouteTableIds: vpce.RouteTableIds, + SubnetIds: vpce.SubnetIds, + ServiceName: vpce.ServiceName, + CreatedAt: timestamppb.New(*vpce.CreatedAt), + LastSyncTime: vpce.LastSyncTime, + }) + } + return out } -*/ - func typesNATGatewaysToGrpc(in []types.NATGateway) []*infrapb.NATGateway { out := make([]*infrapb.NATGateway, 0, len(in)) for _, gateway := range in { @@ -292,6 +287,18 @@ func typesAccountsToGrpc(in []types.Account) []*infrapb.Account { return out } +func typesRegionsToGrpc(in []types.Region) []*infrapb.Region { + out := make([]*infrapb.Region, 0, len(in)) + for _, region := range in { + out = append(out, &infrapb.Region{ + Provider: region.Provider, + Id: region.ID, + Name: region.Name, + }) + } + return out +} + func typesACLsToGrpc(in []types.ACL) []*infrapb.ACL { out := make([]*infrapb.ACL, 0, len(in)) for _, acl := range in { diff --git a/grpc/ts/CloudServiceClientPb.ts b/grpc/ts/CloudServiceClientPb.ts index 5c4c035..93af513 100644 --- a/grpc/ts/CloudServiceClientPb.ts +++ b/grpc/ts/CloudServiceClientPb.ts @@ -82,6 +82,49 @@ export class CloudProviderServiceClient { this.methodDescriptorListAccounts); } + methodDescriptorListRegions = new grpcWeb.MethodDescriptor( + '/infra.CloudProviderService/ListRegions', + grpcWeb.MethodType.UNARY, + cloud_pb.ListRegionsRequest, + cloud_pb.ListRegionsResponse, + (request: cloud_pb.ListRegionsRequest) => { + return request.serializeBinary(); + }, + cloud_pb.ListRegionsResponse.deserializeBinary + ); + + listRegions( + request: cloud_pb.ListRegionsRequest, + metadata: grpcWeb.Metadata | null): Promise; + + listRegions( + request: cloud_pb.ListRegionsRequest, + metadata: grpcWeb.Metadata | null, + callback: (err: grpcWeb.RpcError, + response: cloud_pb.ListRegionsResponse) => void): grpcWeb.ClientReadableStream; + + listRegions( + request: cloud_pb.ListRegionsRequest, + metadata: grpcWeb.Metadata | null, + callback?: (err: grpcWeb.RpcError, + response: cloud_pb.ListRegionsResponse) => void) { + if (callback !== undefined) { + return this.client_.rpcCall( + this.hostname_ + + '/infra.CloudProviderService/ListRegions', + request, + metadata || {}, + this.methodDescriptorListRegions, + callback); + } + return this.client_.unaryCall( + this.hostname_ + + '/infra.CloudProviderService/ListRegions', + request, + metadata || {}, + this.methodDescriptorListRegions); + } + methodDescriptorListVPC = new grpcWeb.MethodDescriptor( '/infra.CloudProviderService/ListVPC', grpcWeb.MethodType.UNARY, @@ -512,6 +555,49 @@ export class CloudProviderServiceClient { this.methodDescriptorListInternetGateways); } + methodDescriptorListVPCEndpoints = new grpcWeb.MethodDescriptor( + '/infra.CloudProviderService/ListVPCEndpoints', + grpcWeb.MethodType.UNARY, + cloud_pb.ListVPCEndpointsRequest, + cloud_pb.ListVPCEndpointsResponse, + (request: cloud_pb.ListVPCEndpointsRequest) => { + return request.serializeBinary(); + }, + cloud_pb.ListVPCEndpointsResponse.deserializeBinary + ); + + listVPCEndpoints( + request: cloud_pb.ListVPCEndpointsRequest, + metadata: grpcWeb.Metadata | null): Promise; + + listVPCEndpoints( + request: cloud_pb.ListVPCEndpointsRequest, + metadata: grpcWeb.Metadata | null, + callback: (err: grpcWeb.RpcError, + response: cloud_pb.ListVPCEndpointsResponse) => void): grpcWeb.ClientReadableStream; + + listVPCEndpoints( + request: cloud_pb.ListVPCEndpointsRequest, + metadata: grpcWeb.Metadata | null, + callback?: (err: grpcWeb.RpcError, + response: cloud_pb.ListVPCEndpointsResponse) => void) { + if (callback !== undefined) { + return this.client_.rpcCall( + this.hostname_ + + '/infra.CloudProviderService/ListVPCEndpoints', + request, + metadata || {}, + this.methodDescriptorListVPCEndpoints, + callback); + } + return this.client_.unaryCall( + this.hostname_ + + '/infra.CloudProviderService/ListVPCEndpoints', + request, + metadata || {}, + this.methodDescriptorListVPCEndpoints); + } + methodDescriptorGetVPCIDForCIDR = new grpcWeb.MethodDescriptor( '/infra.CloudProviderService/GetVPCIDForCIDR', grpcWeb.MethodType.UNARY, diff --git a/grpc/ts/access_control_pb.d.ts b/grpc/ts/access_control_pb.d.ts index 81fd930..240b612 100644 --- a/grpc/ts/access_control_pb.d.ts +++ b/grpc/ts/access_control_pb.d.ts @@ -1,22 +1,3 @@ -/** - * Copyright (c) 2024 Cisco Systems, Inc. and its affiliates - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - */ - import * as jspb from 'google-protobuf' import * as types_pb from './types_pb'; diff --git a/grpc/ts/cloud_pb.d.ts b/grpc/ts/cloud_pb.d.ts index 9dc0388..9430423 100644 --- a/grpc/ts/cloud_pb.d.ts +++ b/grpc/ts/cloud_pb.d.ts @@ -1,22 +1,3 @@ -/** - * Copyright (c) 2024 Cisco Systems, Inc. and its affiliates - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - */ - import * as jspb from 'google-protobuf' import * as types_pb from './types_pb'; @@ -60,6 +41,48 @@ export namespace ListAccountsResponse { } } +export class ListRegionsRequest extends jspb.Message { + getProvider(): string; + setProvider(value: string): ListRegionsRequest; + + getAccountId(): string; + setAccountId(value: string): ListRegionsRequest; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): ListRegionsRequest.AsObject; + static toObject(includeInstance: boolean, msg: ListRegionsRequest): ListRegionsRequest.AsObject; + static serializeBinaryToWriter(message: ListRegionsRequest, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): ListRegionsRequest; + static deserializeBinaryFromReader(message: ListRegionsRequest, reader: jspb.BinaryReader): ListRegionsRequest; +} + +export namespace ListRegionsRequest { + export type AsObject = { + provider: string, + accountId: string, + } +} + +export class ListRegionsResponse extends jspb.Message { + getRegionsList(): Array; + setRegionsList(value: Array): ListRegionsResponse; + clearRegionsList(): ListRegionsResponse; + addRegions(value?: types_pb.Region, index?: number): types_pb.Region; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): ListRegionsResponse.AsObject; + static toObject(includeInstance: boolean, msg: ListRegionsResponse): ListRegionsResponse.AsObject; + static serializeBinaryToWriter(message: ListRegionsResponse, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): ListRegionsResponse; + static deserializeBinaryFromReader(message: ListRegionsResponse, reader: jspb.BinaryReader): ListRegionsResponse; +} + +export namespace ListRegionsResponse { + export type AsObject = { + regionsList: Array, + } +} + export class ListVPCRequest extends jspb.Message { getProvider(): string; setProvider(value: string): ListVPCRequest; @@ -500,6 +523,60 @@ export namespace ListInternetGatewaysResponse { } } +export class ListVPCEndpointsResponse extends jspb.Message { + getVepsList(): Array; + setVepsList(value: Array): ListVPCEndpointsResponse; + clearVepsList(): ListVPCEndpointsResponse; + addVeps(value?: types_pb.VPCEndpoint, index?: number): types_pb.VPCEndpoint; + + getLastSyncTime(): string; + setLastSyncTime(value: string): ListVPCEndpointsResponse; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): ListVPCEndpointsResponse.AsObject; + static toObject(includeInstance: boolean, msg: ListVPCEndpointsResponse): ListVPCEndpointsResponse.AsObject; + static serializeBinaryToWriter(message: ListVPCEndpointsResponse, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): ListVPCEndpointsResponse; + static deserializeBinaryFromReader(message: ListVPCEndpointsResponse, reader: jspb.BinaryReader): ListVPCEndpointsResponse; +} + +export namespace ListVPCEndpointsResponse { + export type AsObject = { + vepsList: Array, + lastSyncTime: string, + } +} + +export class ListVPCEndpointsRequest extends jspb.Message { + getProvider(): string; + setProvider(value: string): ListVPCEndpointsRequest; + + getVpcId(): string; + setVpcId(value: string): ListVPCEndpointsRequest; + + getRegion(): string; + setRegion(value: string): ListVPCEndpointsRequest; + + getAccountId(): string; + setAccountId(value: string): ListVPCEndpointsRequest; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): ListVPCEndpointsRequest.AsObject; + static toObject(includeInstance: boolean, msg: ListVPCEndpointsRequest): ListVPCEndpointsRequest.AsObject; + static serializeBinaryToWriter(message: ListVPCEndpointsRequest, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): ListVPCEndpointsRequest; + static deserializeBinaryFromReader(message: ListVPCEndpointsRequest, reader: jspb.BinaryReader): ListVPCEndpointsRequest; +} + +export namespace ListVPCEndpointsRequest { + export type AsObject = { + provider: string, + vpcId: string, + region: string, + accountId: string, + } +} + export class GetSubnetRequest extends jspb.Message { getProvider(): string; setProvider(value: string): GetSubnetRequest; @@ -993,6 +1070,9 @@ export class Counters extends jspb.Message { getIgws(): number; setIgws(value: number): Counters; + getVpcEndpoints(): number; + setVpcEndpoints(value: number): Counters; + serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): Counters.AsObject; static toObject(includeInstance: boolean, msg: Counters): Counters.AsObject; @@ -1017,6 +1097,7 @@ export namespace Counters { natGateways: number, routers: number, igws: number, + vpcEndpoints: number, } } @@ -1027,6 +1108,9 @@ export class StatusSummary extends jspb.Message { getPodStatusMap(): jspb.Map; clearPodStatusMap(): StatusSummary; + getVmTypesMap(): jspb.Map; + clearVmTypesMap(): StatusSummary; + serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): StatusSummary.AsObject; static toObject(includeInstance: boolean, msg: StatusSummary): StatusSummary.AsObject; @@ -1039,6 +1123,7 @@ export namespace StatusSummary { export type AsObject = { vmStatusMap: Array<[string, number]>, podStatusMap: Array<[string, number]>, + vmTypesMap: Array<[string, number]>, } } diff --git a/grpc/ts/kubernetes_pb.d.ts b/grpc/ts/kubernetes_pb.d.ts index 3834d18..5b2cb9e 100644 --- a/grpc/ts/kubernetes_pb.d.ts +++ b/grpc/ts/kubernetes_pb.d.ts @@ -1,22 +1,3 @@ -/** - * Copyright (c) 2024 Cisco Systems, Inc. and its affiliates - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - */ - import * as jspb from 'google-protobuf' import * as types_pb from './types_pb'; diff --git a/grpc/ts/types_pb.d.ts b/grpc/ts/types_pb.d.ts index 66505a5..a8366e2 100644 --- a/grpc/ts/types_pb.d.ts +++ b/grpc/ts/types_pb.d.ts @@ -1,22 +1,3 @@ -/** - * Copyright (c) 2024 Cisco Systems, Inc. and its affiliates - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - */ - import * as jspb from 'google-protobuf' import * as google_protobuf_timestamp_pb from 'google-protobuf/google/protobuf/timestamp_pb'; @@ -59,6 +40,9 @@ export class Instance extends jspb.Message { getState(): string; setState(value: string): Instance; + getType(): string; + setType(value: string): Instance; + getLastSyncTime(): string; setLastSyncTime(value: string): Instance; @@ -84,19 +68,20 @@ export namespace Instance { provider: string, accountId: string, state: string, + type: string, lastSyncTime: string, } } export class Subnet extends jspb.Message { - getSubnetid(): string; - setSubnetid(value: string): Subnet; + getId(): string; + setId(value: string): Subnet; - getCidrblock(): string; - setCidrblock(value: string): Subnet; + getCidrBlock(): string; + setCidrBlock(value: string): Subnet; - getVpcid(): string; - setVpcid(value: string): Subnet; + getVpcId(): string; + setVpcId(value: string): Subnet; getZone(): string; setZone(value: string): Subnet; @@ -129,9 +114,9 @@ export class Subnet extends jspb.Message { export namespace Subnet { export type AsObject = { - subnetid: string, - cidrblock: string, - vpcid: string, + id: string, + cidrBlock: string, + vpcId: string, zone: string, region: string, labelsMap: Array<[string, string]>, @@ -222,6 +207,36 @@ export namespace Account { } } +export class Region extends jspb.Message { + getProvider(): string; + setProvider(value: string): Region; + + getId(): string; + setId(value: string): Region; + + getName(): string; + setName(value: string): Region; + + getLastSyncTime(): string; + setLastSyncTime(value: string): Region; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): Region.AsObject; + static toObject(includeInstance: boolean, msg: Region): Region.AsObject; + static serializeBinaryToWriter(message: Region, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): Region; + static deserializeBinaryFromReader(message: Region, reader: jspb.BinaryReader): Region; +} + +export namespace Region { + export type AsObject = { + provider: string, + id: string, + name: string, + lastSyncTime: string, + } +} + export class ACL extends jspb.Message { getProvider(): string; setProvider(value: string): ACL; @@ -711,6 +726,84 @@ export namespace IGW { } } +export class VPCEndpoint extends jspb.Message { + getId(): string; + setId(value: string): VPCEndpoint; + + getName(): string; + setName(value: string): VPCEndpoint; + + getProvider(): string; + setProvider(value: string): VPCEndpoint; + + getAccountId(): string; + setAccountId(value: string): VPCEndpoint; + + getVpcId(): string; + setVpcId(value: string): VPCEndpoint; + + getRegion(): string; + setRegion(value: string): VPCEndpoint; + + getState(): string; + setState(value: string): VPCEndpoint; + + getType(): string; + setType(value: string): VPCEndpoint; + + getServiceName(): string; + setServiceName(value: string): VPCEndpoint; + + getRouteTableIds(): string; + setRouteTableIds(value: string): VPCEndpoint; + + getSubnetIds(): string; + setSubnetIds(value: string): VPCEndpoint; + + getLabelsMap(): jspb.Map; + clearLabelsMap(): VPCEndpoint; + + getCreatedAt(): google_protobuf_timestamp_pb.Timestamp | undefined; + setCreatedAt(value?: google_protobuf_timestamp_pb.Timestamp): VPCEndpoint; + hasCreatedAt(): boolean; + clearCreatedAt(): VPCEndpoint; + + getUpdatedAt(): google_protobuf_timestamp_pb.Timestamp | undefined; + setUpdatedAt(value?: google_protobuf_timestamp_pb.Timestamp): VPCEndpoint; + hasUpdatedAt(): boolean; + clearUpdatedAt(): VPCEndpoint; + + getLastSyncTime(): string; + setLastSyncTime(value: string): VPCEndpoint; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): VPCEndpoint.AsObject; + static toObject(includeInstance: boolean, msg: VPCEndpoint): VPCEndpoint.AsObject; + static serializeBinaryToWriter(message: VPCEndpoint, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): VPCEndpoint; + static deserializeBinaryFromReader(message: VPCEndpoint, reader: jspb.BinaryReader): VPCEndpoint; +} + +export namespace VPCEndpoint { + export type AsObject = { + id: string, + name: string, + provider: string, + accountId: string, + vpcId: string, + region: string, + state: string, + type: string, + serviceName: string, + routeTableIds: string, + subnetIds: string, + labelsMap: Array<[string, string]>, + createdAt?: google_protobuf_timestamp_pb.Timestamp.AsObject, + updatedAt?: google_protobuf_timestamp_pb.Timestamp.AsObject, + lastSyncTime: string, + } +} + export class Cluster extends jspb.Message { getName(): string; setName(value: string): Cluster; diff --git a/provider/provider.go b/provider/provider.go index 56f3335..3503fc6 100644 --- a/provider/provider.go +++ b/provider/provider.go @@ -45,6 +45,7 @@ type Strategy interface { type CloudProvider interface { GetName() string ListAccounts() []types.Account + ListRegions(ctx context.Context, input *infrapb.ListRegionsRequest) ([]types.Region, error) // ListVPC returns cloud instances based on provided filters, empty filter means no filtering by this parameter. ListVPC(ctx context.Context, input *infrapb.ListVPCRequest) ([]types.VPC, error) // ListInstances returns cloud instances based on provided filters, empty filter means no filtering by this parameter. @@ -59,6 +60,7 @@ type CloudProvider interface { ListNATGateways(ctx context.Context, input *infrapb.ListNATGatewaysRequest) ([]types.NATGateway, error) ListRouters(ctx context.Context, input *infrapb.ListRoutersRequest) ([]types.Router, error) ListInternetGateways(ctx context.Context, input *infrapb.ListInternetGatewaysRequest) ([]types.IGW, error) + ListVPCEndpoints(ctx context.Context, input *infrapb.ListVPCEndpointsRequest) ([]types.VPCEndpoint, error) // GetSubnet returns single subnet based on it's ID GetSubnet(ctx context.Context, input *infrapb.GetSubnetRequest) (types.Subnet, error) diff --git a/sync/sync.go b/sync/sync.go index 8ca1c07..6f63d39 100644 --- a/sync/sync.go +++ b/sync/sync.go @@ -48,7 +48,11 @@ type Syncer struct { func (s *Syncer) Sync() { + //Sync VPC s.syncVPC() + s.syncRegions() + + //Sync other cloud resources s.syncInstances() s.syncSubnets() s.syncRouteTables() @@ -57,13 +61,16 @@ func (s *Syncer) Sync() { s.syncNATGateways() s.syncRouters() s.syncIGWs() + s.syncVPCEndpoints() // Kubernetes s.syncClusters() s.syncPods() + s.syncNamespaces() s.syncK8SSsNodes() s.syncK8SServices() + } func (s *Syncer) SyncPeriodically(ctx context.Context) { @@ -80,6 +87,12 @@ func (s *Syncer) SyncPeriodically(ctx context.Context) { } } +func (s *Syncer) syncRegions() { + genericCloudSync[*types.Region](s, types.RegionType, func(ctx context.Context, cloudProvider provider.CloudProvider, accountID string) ([]types.Region, error) { + return cloudProvider.ListRegions(ctx, &infrapb.ListRegionsRequest{AccountId: accountID}) + }, s.logger, s.dbClient.ListRegions, s.dbClient.PutRegion, s.dbClient.DeleteRegion) +} + func (s *Syncer) syncVPC() { genericCloudSync[*types.VPC](s, types.VPCType, func(ctx context.Context, cloudProvider provider.CloudProvider, accountID string) ([]types.VPC, error) { return cloudProvider.ListVPC(ctx, &infrapb.ListVPCRequest{AccountId: accountID}) @@ -136,6 +149,13 @@ func (s *Syncer) syncIGWs() { }, s.logger, s.dbClient.ListInternetGateways, s.dbClient.PutIGW, s.dbClient.DeleteIGW) } +func (s *Syncer) syncVPCEndpoints() { + genericCloudSync[*types.VPCEndpoint](s, types.VPCEndpointType, func(ctx context.Context, cloudProvider provider.CloudProvider, accountID string) ([]types.VPCEndpoint, error) { + + return cloudProvider.ListVPCEndpoints(ctx, &infrapb.ListVPCEndpointsRequest{AccountId: accountID}) + }, s.logger, s.dbClient.ListVPCEndpoints, s.dbClient.PutVPCEndpoint, s.dbClient.DeleteVPCEndpoint) +} + func (s *Syncer) syncClusters() { genericCloudSync[*types.Cluster](s, types.ClusterType, func(ctx context.Context, cloudProvider provider.CloudProvider, accountID string) ([]types.Cluster, error) { return cloudProvider.ListClusters(ctx, &infrapb.ListCloudClustersRequest{AccountId: accountID}) @@ -280,7 +300,7 @@ func genericK8sSync[P interface { } clusters, err := k8sProvider.ListClusters(ctx) if err != nil { - s.logger.Errorf("Error in sync: failed to list clusters: %v", err) + s.logger.Warnf("Error in sync: failed to list clusters: %v", err) return } syncTime := make(map[string]types.SyncTime) @@ -289,7 +309,7 @@ func genericK8sSync[P interface { t := time.Now().UTC().Format(time.RFC3339) remoteObjs, err := listF(ctx, k8sProvider, cluster.Name) if err != nil { - s.logger.Errorf("Sync error: failed to %s in cluster %s: %v", + s.logger.Warnf("Sync error: failed to access %s in cluster %s: %v", typeName, cluster.Name, err) continue } diff --git a/types/types.go b/types/types.go index 91ec536..b022d27 100644 --- a/types/types.go +++ b/types/types.go @@ -34,6 +34,8 @@ const ( ) const ( + AccountType = "Account" + RegionType = "Region" VPCType = "VPC" InstanceType = "Instance" SubnetType = "Subnet" @@ -43,6 +45,7 @@ const ( NATGatewayType = "NATGateway" RouterType = "Router" IGWType = "IGW" + VPCEndpointType = "VPCEndpoint" ClusterType = "Cluster" PodsType = "Pod" K8sServiceType = "K8sService" @@ -50,6 +53,26 @@ const ( NamespaceType = "Namespace" ) +type Region struct { + ID string + Name string + Provider string + AccountID string + LastSyncTime string +} + +func (r *Region) DbId() string { + return CloudID(r.Provider, r.ID) +} + +func (r *Region) SetSyncTime(time string) { + r.LastSyncTime = time +} + +func (r *Region) GetProvider() string { + return r.Provider +} + type VPC struct { ID string Name string @@ -87,6 +110,7 @@ type Instance struct { Zone string Provider string AccountID string + Type string LastSyncTime string } @@ -131,123 +155,6 @@ type Ports []string type ProtocolsAndPorts map[string]Ports -type Cluster struct { - Name string - FullName string - Arn string - VpcID string - Region string - Project string - Labels map[string]string - Provider string - AccountID string - Id string - LastSyncTime string -} - -func (v *Cluster) DbId() string { - return CloudID(v.Provider, v.Name) -} - -func (v *Cluster) SetSyncTime(time string) { - v.LastSyncTime = time -} - -func (v *Cluster) GetProvider() string { - return v.Provider -} - -type Pod struct { - Cluster string - Namespace string - Name string - Ip string - Labels map[string]string - State string - LastSyncTime string -} - -func (v *Pod) DbId() string { - return KubernetesID(v.Cluster, v.Namespace, v.Name) -} - -func (v *Pod) SetSyncTime(time string) { - v.LastSyncTime = time -} - -func (v *Pod) GetProvider() string { - return v.Cluster -} - -type K8SService struct { - Cluster string - Namespace string - Name string - Type string - ProtocolsAndPorts ProtocolsAndPorts - Ingresses []K8sServiceIngress - Labels map[string]string - LastSyncTime string -} - -func (v *K8SService) DbId() string { - return KubernetesID(v.Cluster, v.Namespace, v.Name) -} - -func (v *K8SService) SetSyncTime(time string) { - v.LastSyncTime = time -} - -func (v *K8SService) GetProvider() string { - return v.Cluster -} - -type K8sServiceIngress struct { - Hostname string - IP string - Ports []string -} - -type K8sNode struct { - Cluster string - Name string - Namespace string - Addresses []v1.NodeAddress - Labels map[string]string - LastSyncTime string -} - -func (v *K8sNode) DbId() string { - return KubernetesID(v.Cluster, v.Namespace, v.Name) -} - -func (v *K8sNode) SetSyncTime(time string) { - v.LastSyncTime = time -} - -func (v *K8sNode) GetProvider() string { - return v.Cluster -} - -type Namespace struct { - Cluster string - Name string - Labels map[string]string - LastSyncTime string -} - -func (v *Namespace) DbId() string { - return KubernetesID(v.Cluster, v.Name, "") -} - -func (v *Namespace) SetSyncTime(time string) { - v.LastSyncTime = time -} - -func (v *Namespace) GetProvider() string { - return v.Cluster -} - type Account struct { Name string ID string @@ -380,6 +287,35 @@ func (v *IGW) GetProvider() string { return v.Provider } +type VPCEndpoint struct { + ID string `json:"id,omitempty"` + Name string `json:"name,omitempty"` + Provider string `json:"provider,omitempty"` + AccountId string `json:"account_id,omitempty"` + VPCId string `json:"vpc_id,omitempty"` // + Region string `json:"region,omitempty"` // VPC Region + State string `json:"state,omitempty"` + RouteTableIds string `json:"route_table_ids,omitempty"` + SubnetIds string `json:"subnet_ids,omitempty"` + ServiceName string `json:"service_name,omitempty"` + Labels map[string]string `json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + CreatedAt *time.Time `json:"created_at,omitempty"` + UpdatedAt *time.Time `json:"updated_at,omitempty"` + LastSyncTime string `json:"last_sync_time,omitempty"` +} + +func (v *VPCEndpoint) DbId() string { + return CloudID(v.Provider, v.ID) +} + +func (v *VPCEndpoint) SetSyncTime(time string) { + v.LastSyncTime = time +} + +func (v *VPCEndpoint) GetProvider() string { + return v.Provider +} + type SecurityGroup struct { Name string ID string @@ -463,14 +399,6 @@ func (v *SyncTime) GetProvider() string { return v.Provider } -func KubernetesID(cluster, namespace, name string) string { - n := cluster + "/" + namespace - if name != "" { - n += "/" + name - } - return n -} - func CloudID(provider, id string) string { return provider + ":" + id } @@ -533,3 +461,130 @@ type SingleVPCDisconnectionParams struct { type VPCDisconnectionOutput struct { } + +//Kubernetes + +type Cluster struct { + Name string + FullName string + Arn string + VpcID string + Region string + Project string + Labels map[string]string + Provider string + AccountID string + Id string + LastSyncTime string +} + +func (v *Cluster) DbId() string { + return CloudID(v.Provider, v.Name) +} + +func (v *Cluster) SetSyncTime(time string) { + v.LastSyncTime = time +} + +func (v *Cluster) GetProvider() string { + return v.Provider +} + +type Pod struct { + Cluster string + Namespace string + Name string + Ip string + Labels map[string]string + State string + LastSyncTime string +} + +func (v *Pod) DbId() string { + return KubernetesID(v.Cluster, v.Namespace, v.Name) +} + +func (v *Pod) SetSyncTime(time string) { + v.LastSyncTime = time +} + +func (v *Pod) GetProvider() string { + return v.Cluster +} + +type K8SService struct { + Cluster string + Namespace string + Name string + Type string + ProtocolsAndPorts ProtocolsAndPorts + Ingresses []K8sServiceIngress + Labels map[string]string + LastSyncTime string +} + +func (v *K8SService) DbId() string { + return KubernetesID(v.Cluster, v.Namespace, v.Name) +} + +func (v *K8SService) SetSyncTime(time string) { + v.LastSyncTime = time +} + +func (v *K8SService) GetProvider() string { + return v.Cluster +} + +type K8sServiceIngress struct { + Hostname string + IP string + Ports []string +} + +type K8sNode struct { + Cluster string + Name string + Namespace string + Addresses []v1.NodeAddress + Labels map[string]string + LastSyncTime string +} + +func (v *K8sNode) DbId() string { + return KubernetesID(v.Cluster, v.Namespace, v.Name) +} + +func (v *K8sNode) SetSyncTime(time string) { + v.LastSyncTime = time +} + +func (v *K8sNode) GetProvider() string { + return v.Cluster +} + +type Namespace struct { + Cluster string + Name string + Labels map[string]string + LastSyncTime string +} + +func (v *Namespace) DbId() string { + return KubernetesID(v.Cluster, v.Name, "") +} + +func (v *Namespace) SetSyncTime(time string) { + v.LastSyncTime = time +} + +func (v *Namespace) GetProvider() string { + return v.Cluster +} + +func KubernetesID(cluster, namespace, name string) string { + n := cluster + "/" + namespace + if name != "" { + n += "/" + name + } + return n +} From 4e92249ac51deb23130d4350f96304382fe356db Mon Sep 17 00:00:00 2001 From: Saswat Praharaj Date: Mon, 13 May 2024 09:09:25 -0700 Subject: [PATCH 2/4] Update List-New-Resource.md --- List-New-Resource.md | 78 +++++++++++++++++++++++++++++--------------- 1 file changed, 52 insertions(+), 26 deletions(-) diff --git a/List-New-Resource.md b/List-New-Resource.md index 280b00b..fed094f 100644 --- a/List-New-Resource.md +++ b/List-New-Resource.md @@ -35,10 +35,49 @@ message VPCEndpoint { google.protobuf.Timestamp updated_at = 14; string last_sync_time = 15; } +// Update cloud.proto file and add request response objects for the resource you're trying to fetch +message ListVPCEndpointsResponse { + repeated VPCEndpoint veps = 1; + string last_sync_time = 2; +} + +message ListVPCEndpointsRequest { + string provider = 1; + string vpc_id = 2; + string region = 3; + string account_id = 4; +} + +// Update CloudProvider Service to add List Resource RPC (Method) +rpc ListVPCEndpoints (ListVPCEndpointsRequest) returns (ListVPCEndpointsResponse) {} + ``` Run `make generate` in the repository root directory to generate language-specific generated protobuf files. -**2. Server Implementation** +**2. Type Definitions** + +Add or update VPCEndpoint struct definitions in type/types.go. + +``` +// type/types.go +type VPCEndpoint struct { +} + +func (v *VPCEndpoint) DbId() string { + return CloudID(v.Provider, v.ID) +} + +func (v *VPCEndpoint) SetSyncTime(time string) { + v.LastSyncTime = time +} + +func (v *VPCEndpoint) GetProvider() string { + return v.Provider +} + +``` + +**3. Server Implementation** Implement the gRPC server methods in server/server.go and update server/translate.go to handle data translation. @@ -54,7 +93,7 @@ func typesVPCEndpointsToGrpc(in []types.VPCEndpoint) []*infrapb.VPCEndpoint { } ``` -**3. Synchronization Logic** +**4. Synchronization Logic** Define synchronization logic for VPCEndpoints in sync/sync.go. @@ -73,29 +112,6 @@ func (s *Syncer) syncVPCEndpoints() { } ``` -**4. Type Definitions** - -Add or update VPCEndpoint struct definitions in type/types.go. - -``` -// type/types.go -type VPCEndpoint struct { -} - -func (v *VPCEndpoint) DbId() string { - return CloudID(v.Provider, v.ID) -} - -func (v *VPCEndpoint) SetSyncTime(time string) { - v.LastSyncTime = time -} - -func (v *VPCEndpoint) GetProvider() string { - return v.Provider -} - -``` - **5. Provider Interface** Ensure the CloudProvider interface in provider/provider.go supports the ListVPCEndpoints method. @@ -130,6 +146,15 @@ func (p *providerWithDB) ListVPCEndpoints(ctx context.Context, params *infrapb.L Add methods to manage VPCEndpoints in BoltDB within boltdb/bolt_client.go. ``` +//boltdb/db.go +Add Table Name for your resource +const vpcEndpointTable = "vpcEndpoints" + +var tableNames = [] string { +... +vpcEndpointTable, +... +} // boltdb/bolt_client.go func (client *boltClient) PutVPCEndpoint(vpce *types.VPCEndpoint) error { // Implement put logic here @@ -138,7 +163,8 @@ func (client *boltClient) PutVPCEndpoint(vpce *types.VPCEndpoint) error { **8. Cloud Provider Specific Logic** -Implement cloud-specific logic to list VPCEndpoints in aws/listVPCEndpoint.go, azure.go, gcp.go. +Implement cloud-specific logic to list VPCEndpoints in aws/listVPCEndpoint.go, azure.go, gcp.go. This interface won't be satisfied unless we have function definitions for all providers. +So, even when you don't have implementation for all providers, do add the function definition to avoid compilation errors. ``` func (c *Client) ListVPCEndpoints(ctx context.Context, params *infrapb.ListVPCEndpointsRequest) ([]types.VPCEndpoint, error) { } From 57b77a8ac89943d64701eaae821160027bdd80b5 Mon Sep 17 00:00:00 2001 From: Saswat Praharaj Date: Mon, 13 May 2024 10:45:04 -0700 Subject: [PATCH 3/4] Update List-New-Resource.md --- List-New-Resource.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/List-New-Resource.md b/List-New-Resource.md index fed094f..a0e53e9 100644 --- a/List-New-Resource.md +++ b/List-New-Resource.md @@ -60,6 +60,10 @@ Add or update VPCEndpoint struct definitions in type/types.go. ``` // type/types.go + +const VPCEndpointType = "VPCEndpoint" + + type VPCEndpoint struct { } From 4d97c09f991a00ccbc2b1290468089958931007d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Bernacki?= Date: Sun, 8 Sep 2024 18:53:01 +0200 Subject: [PATCH 4/4] Infrastructure tests CI pipeline (#10) * Create infra-test.yml * terraform infrastructre setup * update working dir for terraform * use hcp for terraform runs * add comment with terraform plan * separate actions for plan and test * action for terraform apply * wait for plan before apply * add jobs dependency * update terraform actions version * add destroy step * use plain terraform without HCP * allow running workflows from cli * pass aws cred with cli * run tests on self-hosted runner * configure self-hosted runner * only test job for demo * first test with grpc_cli * split into 3 workflows * run all workflows locally * backend for tfstate * list instances test * vpcs and route tables tests * check * add gw and subnets tests * error handling for tests * check resource fields * CI readme --- .../create-aws-test-infrastructure.yml | 38 ++++++++++ .../destroy-aws-test-infrastructure.yml | 32 +++++++++ .github/workflows/test-aws-infrastructure.yml | 25 +++++++ .gitignore | 9 +++ CI.md | 67 ++++++++++++++++++ grpc/tests/run_tests.sh | 25 +++++++ grpc/tests/test_grpc_server.sh | 25 +++++++ grpc/tests/test_list_instances.sh | 47 +++++++++++++ grpc/tests/test_list_internet_gateways.sh | 46 ++++++++++++ grpc/tests/test_list_route_tables.sh | 47 +++++++++++++ grpc/tests/test_list_subnets.sh | 47 +++++++++++++ grpc/tests/test_list_vpc.sh | 45 ++++++++++++ grpc/tests/utils.sh | 47 +++++++++++++ terraform/aws/aws.tf | 70 +++++++++++++++++++ 14 files changed, 570 insertions(+) create mode 100644 .github/workflows/create-aws-test-infrastructure.yml create mode 100644 .github/workflows/destroy-aws-test-infrastructure.yml create mode 100644 .github/workflows/test-aws-infrastructure.yml create mode 100644 CI.md create mode 100755 grpc/tests/run_tests.sh create mode 100755 grpc/tests/test_grpc_server.sh create mode 100755 grpc/tests/test_list_instances.sh create mode 100755 grpc/tests/test_list_internet_gateways.sh create mode 100755 grpc/tests/test_list_route_tables.sh create mode 100755 grpc/tests/test_list_subnets.sh create mode 100755 grpc/tests/test_list_vpc.sh create mode 100644 grpc/tests/utils.sh create mode 100644 terraform/aws/aws.tf diff --git a/.github/workflows/create-aws-test-infrastructure.yml b/.github/workflows/create-aws-test-infrastructure.yml new file mode 100644 index 0000000..539325d --- /dev/null +++ b/.github/workflows/create-aws-test-infrastructure.yml @@ -0,0 +1,38 @@ +name: Create AWS test infrastructure +on: + workflow_dispatch: + inputs: + self_hosted_runner_name: + description: 'Self-hosted runner name' + required: true + +env: + AWS_ACCESS_KEY_ID: ${{ secrets[format('{0}_AWS_ACCESS_KEY_ID', github.triggering_actor)] }} + AWS_SECRET_ACCESS_KEY: ${{ secrets[format('{0}_AWS_SECRET_ACCESS_KEY', github.triggering_actor)] }} + +jobs: + create: + name: Create resources + runs-on: [self-hosted, "${{ github.event.inputs.self_hosted_runner_name }}"] + + steps: + - name: Checkout repo + uses: actions/checkout@v3 + with: + clean: false + + - name: Setup Terraform + uses: hashicorp/setup-terraform@v3 + with: + terraform_version: 1.9.2 + - name: Terraform init + id: init + run: terraform init + working-directory: ./terraform/aws + - name: Terraform plan + id: plan + run: terraform plan -out=tfplan + working-directory: ./terraform/aws + - name: Terraform Apply + run: terraform apply -auto-approve tfplan + working-directory: ./terraform/aws \ No newline at end of file diff --git a/.github/workflows/destroy-aws-test-infrastructure.yml b/.github/workflows/destroy-aws-test-infrastructure.yml new file mode 100644 index 0000000..27be237 --- /dev/null +++ b/.github/workflows/destroy-aws-test-infrastructure.yml @@ -0,0 +1,32 @@ +name: Destroy AWS test infrastructure +on: + workflow_dispatch: + inputs: + self_hosted_runner_name: + description: 'Self-hosted runner name' + required: true + +env: + AWS_ACCESS_KEY_ID: ${{ secrets[format('{0}_AWS_ACCESS_KEY_ID', github.triggering_actor)] }} + AWS_SECRET_ACCESS_KEY: ${{ secrets[format('{0}_AWS_SECRET_ACCESS_KEY', github.triggering_actor)] }} + +jobs: + destroy: + name: Destroy resources + runs-on: [self-hosted, "${{ github.event.inputs.self_hosted_runner_name }}"] + steps: + - name: Checkout repo + uses: actions/checkout@v3 + with: + clean: false + + - name: Setup Terraform + uses: hashicorp/setup-terraform@v3 + with: + terraform_version: 1.9.2 + - name: Initialize Terraform + run: terraform init + working-directory: ./terraform/aws + - name: Destroy Terraform configuration + run: terraform destroy -auto-approve + working-directory: ./terraform/aws \ No newline at end of file diff --git a/.github/workflows/test-aws-infrastructure.yml b/.github/workflows/test-aws-infrastructure.yml new file mode 100644 index 0000000..238bb56 --- /dev/null +++ b/.github/workflows/test-aws-infrastructure.yml @@ -0,0 +1,25 @@ +name: Test using AWS infrastructure +on: + workflow_dispatch: + inputs: + self_hosted_runner_name: + description: 'Self-hosted runner name' + required: true + +jobs: + test: + name: Infrastructure tests + runs-on: [self-hosted, "${{ github.event.inputs.self_hosted_runner_name }}"] + steps: + - name: Checkout repo + uses: actions/checkout@v3 + with: + clean: false + + - name: Check if gRPC server is ready + run: ./test_grpc_server.sh + working-directory: ./grpc/tests + + - name: Run tests + run: ./run_tests.sh + working-directory: ./grpc/tests \ No newline at end of file diff --git a/.gitignore b/.gitignore index b223f0d..6cf5281 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,12 @@ bin/* connector/bin/* connector/demo/*.pem +**/.terraform +**/.terraform.lock.hcl +**/terraform.tfstate +**/terraform.tfstate.backup +.github/.secrets +.github/artifacts +.github/workflow_config.yaml +grpc/tests/logs + diff --git a/CI.md b/CI.md new file mode 100644 index 0000000..dcd1934 --- /dev/null +++ b/CI.md @@ -0,0 +1,67 @@ +# CI Pipeline +To streamline the works on the project, CI pipeline is available for developers. It uses GitHub Actions, Terraform and grpc_cli among others and allows to run all the tests locally using self-hosted runners. + +The pipeline consists of 3 workflows, each specified under the [.github/workflows](.github/workflows) directory. Each of the workflows provides a separate functionality - resource creation, testing and deletion. + +## Self-hosted runner +A self-hosted runner is required to run any workflow. To create one locally, please follow the [GitHub's documentation](https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners/adding-self-hosted-runners). A label should also be added to the runner. It will be later used to specify a runner on which to execute workflows. Example label: +`` +- +`` + +Additionally a GitHub CLI tool (``gh``) is required to execute workflows from a local machine. Please follow [GitHub's documentation](https://github.com/cli/cli#installation) to install it. + +## Workflow execution +Once runner is crated and running, a workflow can be executed with the following command +``` +gh workflow run --ref -f self_hosted_runner_name= +``` +``workflow_filename`` - file containing instructions to execute using GitHub Actions
+``branch_name`` - a branch on which to execute a workflow
+``self_hosted_runner_label`` - previously specified label, allows to choose a runner on which the workflow will be executed + +## AWS access +Please specify access credentials to an AWS account using [GitHub Secrets](https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions#creating-secrets-for-a-repository). Two secrets are required: ``AWS_ACCESS_KEY_ID`` and ``AWS_SECRET_ACCESS_KEY``. Please prepend both of these names with an appropriate github handle ````.
+There can be more credentials defined in a repository, to allow usage of multiple AWS accounts the prepended github handle will be used to automatically select credentials based on the user that triggered the workflow. + +The following secrets should be specified before any workflow is executed: +``` +_AWS_ACCESS_KEY_ID +_AWS_SECRET_ACCESS_KEY +``` + +## Create workflow +It uses Terraform to spin up a sample infrastructure on AWS. Created resources can be later used for testing purposes. + +Please run the following command to execute the create workflow: +``` +gh workflow run create-aws-test-infrastructure.yml --ref -f self_hosted_runner_name= +``` + +Please notice that the .tfstate file, created during the workflow run, is kept locally under the ``terraform/aws/backend`` directory in a repository that lives where the self-hosted runner is located, e.g. ``~/actions-runner/_work/awi-infra-guard/awi-infra-guard/terraform/aws/backend`` + +## Test workflow +Runs checks on the created infrastructure, ensuring that the required fields are present and accessible by the awi-infra-guard. + +An instance of the awi-infra-guard, accepting the grpc calls, must be running locally, on the same machine as the self-hosted runner. The tests will be executed against that instance. Please refer to [README.md](README.md) for more information on running the app. + +Please run the following command to execute the test workflow: +``` +gh workflow run test-aws-infrastructure.yml --ref -f self_hosted_runner_name= +``` + +## Destroy workflow +Deletes the sample infrastrcture created by the [Create workflow](#create-workflow) + +Please run the following command to execute the destroy workflow: +``` +gh workflow run destroy-aws-test-infrastructure.yml --ref -f self_hosted_runner_name= +``` + +## Workflow results +All the results and logs from the workflow runs are available on the GitHub page of the repository, under the Actions tab. + +Optionally they can accessed using the following command: +``` +gh run view +``` \ No newline at end of file diff --git a/grpc/tests/run_tests.sh b/grpc/tests/run_tests.sh new file mode 100755 index 0000000..94422b2 --- /dev/null +++ b/grpc/tests/run_tests.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +# List of tests to execute +tests=( + "test_list_instances.sh" + "test_list_vpc.sh" + "test_list_route_tables.sh" + "test_list_subnets.sh" + "test_list_internet_gateways.sh" + ) + +test_error=false +for test in "${tests[@]}"; do + ./$test + if [ $? -eq 1 ]; then + test_error=true + fi +done + +if $test_error; then + echo "Tests failed" + exit 1 +else + echo "Test passed" +fi \ No newline at end of file diff --git a/grpc/tests/test_grpc_server.sh b/grpc/tests/test_grpc_server.sh new file mode 100755 index 0000000..bbe4ff1 --- /dev/null +++ b/grpc/tests/test_grpc_server.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +timeout=60 +interval=5 + +start_time=$(date +%s) + +while true; do + if grpc_cli ls localhost:50052 2>/dev/null | grep -q "infra.CloudProviderService"; then + echo "gRPC server ready" + exit 0 + else + echo "Waiting for gRPC server" + fi + + current_time=$(date +%s) + elapsed_time=$((current_time - start_time)) + if [[ $elapsed_time -ge $timeout ]]; then + echo "gRPC server not responding - timeout" >&2 + exit 1 + fi + + sleep $interval +done + diff --git a/grpc/tests/test_list_instances.sh b/grpc/tests/test_list_instances.sh new file mode 100755 index 0000000..32aebfc --- /dev/null +++ b/grpc/tests/test_list_instances.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +source ./utils.sh + +echo -e "\n-------------Test ListInstances-------------\n" + +response=$(call_endpoint ListInstances) +if [ $? -eq 1 ]; then + echo $response + exit 1 +fi + +# Test instances names +test_names=( + "ani-test-web-server" + ) + +# Fields required in resources +required_fields=( + "provider" + "accountId" + "id" + "region" + "vpcId" +) + +missing_fields=0 +missing_instances=0 +for test_name in "${test_names[@]}"; do + if echo "$response" | jq -e --arg test_name "$test_name" 'any(.instances[]; .name == $test_name and .state == "running")' > /dev/null; then + echo "[V] Instance with name $test_name found" + instance=$(echo $response | jq ".instances[] | select(.name == \"$test_name\" and .state == \"running\" )") + check_fields "$instance" "$required_fields" + else + echo "[X] Instance with name $test_name not found" + missing_instances=$((missing_instances+1)) + fi +done + +if [[ "$missing_instances" -gt 0 ]]; then + echo "Instances not found: $missing_instances" + exit 1 +fi + +if [[ "$missing_fields" -gt 0 ]]; then + exit 1 +fi \ No newline at end of file diff --git a/grpc/tests/test_list_internet_gateways.sh b/grpc/tests/test_list_internet_gateways.sh new file mode 100755 index 0000000..056f534 --- /dev/null +++ b/grpc/tests/test_list_internet_gateways.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +source ./utils.sh + +echo -e "\n-------------Test ListInternetGateways-------------\n" + +response=$(call_endpoint ListInternetGateways) +if [ $? -eq 1 ]; then + echo $response + exit 1 +fi + +# Test internet gateways names +test_names=( + "ani-test-internet-gateway" + ) + +# Fields required in resources +required_fields=( + "provider" + "accountId" + "id" + "region" +) + +missing_fields=0 +missing_instances=0 +for test_name in "${test_names[@]}"; do + if echo "$response" | jq -e --arg tag "$test_name" 'any(.igws[]; .name == $tag and .state == "available")' > /dev/null; then + echo "[V] Internet gateway with name $test_name found" + internet_gateway=$(echo $response | jq ".igws[] | select(.name == \"$test_name\" )") + check_fields "$internet_gateway" "$required_fields" + else + echo "[X] Internet gateway with name $test_name not found" + missing_instances=$((missing_instances+1)) + fi +done + +if [[ "$missing_instances" -gt 0 ]]; then + echo "Internet gateways not found: $missing_instances" + exit 1 +fi + +if [[ "$missing_fields" -gt 0 ]]; then + exit 1 +fi \ No newline at end of file diff --git a/grpc/tests/test_list_route_tables.sh b/grpc/tests/test_list_route_tables.sh new file mode 100755 index 0000000..1ac9ab2 --- /dev/null +++ b/grpc/tests/test_list_route_tables.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +source ./utils.sh + +echo -e "\n-------------Test ListRouteTables-------------\n" + +response=$(call_endpoint ListRouteTables) +if [ $? -eq 1 ]; then + echo $response + exit 1 +fi + +# Test route tables names +test_names=( + "ani-test-route-table" + ) + +# Fields required in resources +required_fields=( + "provider" + "accountId" + "id" + "region" + "vpcId" +) + +missing_fields=0 +missing_instances=0 +for test_name in "${test_names[@]}"; do + if echo "$response" | jq -e --arg tag "$test_name" 'any(.routeTables[]; .name == $tag)' > /dev/null; then + echo "[V] Route table with name $test_name found" + route_table=$(echo $response | jq ".routeTables[] | select(.name == \"$test_name\" )") + check_fields "$route_table" "$required_fields" + else + echo "[X] Route table with name $test_name not found" + error_count=$((error_count+1)) + fi +done + +if [[ "$missing_instances" -gt 0 ]]; then + echo "Route tables not found: $missing_instances" + exit 1 +fi + +if [[ "$missing_fields" -gt 0 ]]; then + exit 1 +fi \ No newline at end of file diff --git a/grpc/tests/test_list_subnets.sh b/grpc/tests/test_list_subnets.sh new file mode 100755 index 0000000..76ea6a8 --- /dev/null +++ b/grpc/tests/test_list_subnets.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +source ./utils.sh + +echo -e "\n-------------Test ListSubnets-------------\n" + +response=$(call_endpoint ListSubnets) +if [ $? -eq 1 ]; then + echo $response + exit 1 +fi + +# Test subnets names +test_names=( + "ani-test-subnet" + ) + +# Fields required in resources +required_fields=( + "provider" + "accountId" + "id" + "region" + "vpcId" +) + +missing_fields=0 +missing_instances=0 +for test_name in "${test_names[@]}"; do + if echo "$response" | jq -e --arg tag "$test_name" 'any(.subnets[]; .name == $tag)' > /dev/null; then + echo "[V] Subnet with name $test_name found" + subnet=$(echo $response | jq ".subnets[] | select(.name == \"$test_name\" )") + check_fields "$subnet" "$required_fields" + else + echo "[X] Subnet with name $test_name not found" + error_count=$((error_count+1)) + fi +done + +if [[ "$missing_instances" -gt 0 ]]; then + echo "Subnets not found: $missing_instances" + exit 1 +fi + +if [[ "$missing_fields" -gt 0 ]]; then + exit 1 +fi \ No newline at end of file diff --git a/grpc/tests/test_list_vpc.sh b/grpc/tests/test_list_vpc.sh new file mode 100755 index 0000000..2b178a1 --- /dev/null +++ b/grpc/tests/test_list_vpc.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +source ./utils.sh + +echo -e "\n-------------Test ListVPC-------------\n" + +response=$(call_endpoint ListVPC) +if [ $? -eq 1 ]; then + echo $response + exit 1 +fi +# Test vpcs names +test_names=( + "ani-test-vpc" + ) + +# Fields required in resources +required_fields=( + "provider" + "accountId" + "id" + "region" +) + +missing_fields=0 +missing_instances=0 +for test_name in "${test_names[@]}"; do + if echo "$response" | jq -e --arg tag "$test_name" 'any(.vpcs[]; .name == $tag)' > /dev/null; then + echo "[V] VPC with name $test_name found" + vpc=$(echo $response | jq ".vpcs[] | select(.name == \"$test_name\" )") + check_fields "$vpc" "$required_fields" + else + echo "[X] VPC with name $test_name not found" + error_count=$((error_count+1)) + fi +done + +if [[ "$missing_instances" -gt 0 ]]; then + echo "VPCs not found: $missing_instances" + exit 1 +fi + +if [[ "$missing_fields" -gt 0 ]]; then + exit 1 +fi \ No newline at end of file diff --git a/grpc/tests/utils.sh b/grpc/tests/utils.sh new file mode 100644 index 0000000..639d025 --- /dev/null +++ b/grpc/tests/utils.sh @@ -0,0 +1,47 @@ +#!/bin/bash + + +call_endpoint() { + server="localhost:50052" + endpoint="$1" + response=$(grpc_cli call $server $endpoint "provider: 'aws'" --timeout=30 --json_output 2>error_file) + + + # Check for endpoint errors + if cat error_file | grep -q "Method name not found"; then + echo "Error calling $endpoint endpoint" + rm error_file + exit 1 + fi + if cat error_file | grep -q "Rpc failed with status code"; then + error_message=$(cat error_file | sed -n '/error message:/s/.*error message: //p') + echo "Error calling $endpoint endpoint:" $error_message + rm error_file + exit 1 + fi + rm error_file + + + # Check if response not empty + if echo $response | jq -e '. == {}' > /dev/null; then + echo "Response from $endpoint is empty" + exit 1 + fi + + echo $response +} + +check_fields() { + json="$1" + required_fields="$2" + + for field in "${required_fields[@]}"; do + field_present=$(echo "$json" | jq " has(\"$field\")") + if [[ "$field_present" != "true" ]]; then + echo -e "\t[x] $field is missing" + missing_fields=$((missing_fields+1)) + fi + done +} + + diff --git a/terraform/aws/aws.tf b/terraform/aws/aws.tf new file mode 100644 index 0000000..1a54970 --- /dev/null +++ b/terraform/aws/aws.tf @@ -0,0 +1,70 @@ +terraform { + backend "local" { + path = "./backend/terraform.tfstate" + } +} + +provider "aws" { + region = "us-east-2" +} + +resource "aws_instance" "web-server-instance" { + ami = "ami-0862be96e41dcbf74" + instance_type = "t2.micro" + + tags = { + Name = "ani-test-web-server" + project = "awi-infra-guard" + ci_created = "true" + } +} + +resource "aws_vpc" "test-vpc" { + cidr_block = "10.0.0.0/16" + tags = { + Name = "ani-test-vpc" + project = "awi-infra-guard" + ci_created = "true" + } +} + +resource "aws_internet_gateway" "test-gw" { + vpc_id = aws_vpc.test-vpc.id + tags = { + Name = "ani-test-internet-gateway" + project = "awi-infra-guard" + ci_created = "true" + } +} + +resource "aws_route_table" "test-route-table" { + vpc_id = aws_vpc.test-vpc.id + + route { + cidr_block = "0.0.0.0/0" + gateway_id = aws_internet_gateway.test-gw.id + } + + route { + ipv6_cidr_block = "::/0" + gateway_id = aws_internet_gateway.test-gw.id + } + + tags = { + Name = "ani-test-route-table" + project = "awi-infra-guard" + ci_created = "true" + } +} + +resource "aws_subnet" "test-subnet" { + vpc_id = aws_vpc.test-vpc.id + cidr_block = "10.0.1.0/24" + availability_zone = "us-east-2a" + + tags = { + Name = "ani-test-subnet" + project = "awi-infra-guard" + ci_created = "true" + } +}