/* Copyright 2020 Google LLC Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ // This file was generated by "go run gen/main.go > gen.go". Do not edit // directly. package cloud import ( "context" "fmt" "net/http" "sync" "google.golang.org/api/googleapi" "k8s.io/klog/v2" "github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud/filter" "github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud/meta" alpha "google.golang.org/api/compute/v0.alpha" beta "google.golang.org/api/compute/v0.beta" ga "google.golang.org/api/compute/v1" ) // Cloud is an interface for the GCE compute API. type Cloud interface { Addresses() Addresses AlphaAddresses() AlphaAddresses BetaAddresses() BetaAddresses AlphaGlobalAddresses() AlphaGlobalAddresses GlobalAddresses() GlobalAddresses BackendServices() BackendServices BetaBackendServices() BetaBackendServices AlphaBackendServices() AlphaBackendServices RegionBackendServices() RegionBackendServices AlphaRegionBackendServices() AlphaRegionBackendServices BetaRegionBackendServices() BetaRegionBackendServices Disks() Disks RegionDisks() RegionDisks AlphaFirewalls() AlphaFirewalls BetaFirewalls() BetaFirewalls Firewalls() Firewalls ForwardingRules() ForwardingRules AlphaForwardingRules() AlphaForwardingRules BetaForwardingRules() BetaForwardingRules AlphaGlobalForwardingRules() AlphaGlobalForwardingRules BetaGlobalForwardingRules() BetaGlobalForwardingRules GlobalForwardingRules() GlobalForwardingRules HealthChecks() HealthChecks AlphaHealthChecks() AlphaHealthChecks BetaHealthChecks() BetaHealthChecks AlphaRegionHealthChecks() AlphaRegionHealthChecks BetaRegionHealthChecks() BetaRegionHealthChecks RegionHealthChecks() RegionHealthChecks HttpHealthChecks() HttpHealthChecks HttpsHealthChecks() HttpsHealthChecks InstanceGroups() InstanceGroups Instances() Instances BetaInstances() BetaInstances AlphaInstances() AlphaInstances AlphaNetworks() AlphaNetworks BetaNetworks() BetaNetworks Networks() Networks AlphaNetworkEndpointGroups() AlphaNetworkEndpointGroups BetaNetworkEndpointGroups() BetaNetworkEndpointGroups NetworkEndpointGroups() NetworkEndpointGroups Projects() Projects Regions() Regions Routes() Routes BetaSecurityPolicies() BetaSecurityPolicies SslCertificates() SslCertificates BetaSslCertificates() BetaSslCertificates AlphaSslCertificates() AlphaSslCertificates AlphaRegionSslCertificates() AlphaRegionSslCertificates BetaRegionSslCertificates() BetaRegionSslCertificates RegionSslCertificates() RegionSslCertificates SslPolicies() SslPolicies AlphaSubnetworks() AlphaSubnetworks BetaSubnetworks() BetaSubnetworks Subnetworks() Subnetworks AlphaTargetHttpProxies() AlphaTargetHttpProxies BetaTargetHttpProxies() BetaTargetHttpProxies TargetHttpProxies() TargetHttpProxies AlphaRegionTargetHttpProxies() AlphaRegionTargetHttpProxies BetaRegionTargetHttpProxies() BetaRegionTargetHttpProxies RegionTargetHttpProxies() RegionTargetHttpProxies TargetHttpsProxies() TargetHttpsProxies AlphaTargetHttpsProxies() AlphaTargetHttpsProxies BetaTargetHttpsProxies() BetaTargetHttpsProxies AlphaRegionTargetHttpsProxies() AlphaRegionTargetHttpsProxies BetaRegionTargetHttpsProxies() BetaRegionTargetHttpsProxies RegionTargetHttpsProxies() RegionTargetHttpsProxies TargetPools() TargetPools AlphaUrlMaps() AlphaUrlMaps BetaUrlMaps() BetaUrlMaps UrlMaps() UrlMaps AlphaRegionUrlMaps() AlphaRegionUrlMaps BetaRegionUrlMaps() BetaRegionUrlMaps RegionUrlMaps() RegionUrlMaps Zones() Zones } // NewGCE returns a GCE. func NewGCE(s *Service) *GCE { g := &GCE{ gceAddresses: &GCEAddresses{s}, gceAlphaAddresses: &GCEAlphaAddresses{s}, gceBetaAddresses: &GCEBetaAddresses{s}, gceAlphaGlobalAddresses: &GCEAlphaGlobalAddresses{s}, gceGlobalAddresses: &GCEGlobalAddresses{s}, gceBackendServices: &GCEBackendServices{s}, gceBetaBackendServices: &GCEBetaBackendServices{s}, gceAlphaBackendServices: &GCEAlphaBackendServices{s}, gceRegionBackendServices: &GCERegionBackendServices{s}, gceAlphaRegionBackendServices: &GCEAlphaRegionBackendServices{s}, gceBetaRegionBackendServices: &GCEBetaRegionBackendServices{s}, gceDisks: &GCEDisks{s}, gceRegionDisks: &GCERegionDisks{s}, gceAlphaFirewalls: &GCEAlphaFirewalls{s}, gceBetaFirewalls: &GCEBetaFirewalls{s}, gceFirewalls: &GCEFirewalls{s}, gceForwardingRules: &GCEForwardingRules{s}, gceAlphaForwardingRules: &GCEAlphaForwardingRules{s}, gceBetaForwardingRules: &GCEBetaForwardingRules{s}, gceAlphaGlobalForwardingRules: &GCEAlphaGlobalForwardingRules{s}, gceBetaGlobalForwardingRules: &GCEBetaGlobalForwardingRules{s}, gceGlobalForwardingRules: &GCEGlobalForwardingRules{s}, gceHealthChecks: &GCEHealthChecks{s}, gceAlphaHealthChecks: &GCEAlphaHealthChecks{s}, gceBetaHealthChecks: &GCEBetaHealthChecks{s}, gceAlphaRegionHealthChecks: &GCEAlphaRegionHealthChecks{s}, gceBetaRegionHealthChecks: &GCEBetaRegionHealthChecks{s}, gceRegionHealthChecks: &GCERegionHealthChecks{s}, gceHttpHealthChecks: &GCEHttpHealthChecks{s}, gceHttpsHealthChecks: &GCEHttpsHealthChecks{s}, gceInstanceGroups: &GCEInstanceGroups{s}, gceInstances: &GCEInstances{s}, gceBetaInstances: &GCEBetaInstances{s}, gceAlphaInstances: &GCEAlphaInstances{s}, gceAlphaNetworks: &GCEAlphaNetworks{s}, gceBetaNetworks: &GCEBetaNetworks{s}, gceNetworks: &GCENetworks{s}, gceAlphaNetworkEndpointGroups: &GCEAlphaNetworkEndpointGroups{s}, gceBetaNetworkEndpointGroups: &GCEBetaNetworkEndpointGroups{s}, gceNetworkEndpointGroups: &GCENetworkEndpointGroups{s}, gceProjects: &GCEProjects{s}, gceRegions: &GCERegions{s}, gceRoutes: &GCERoutes{s}, gceBetaSecurityPolicies: &GCEBetaSecurityPolicies{s}, gceSslCertificates: &GCESslCertificates{s}, gceBetaSslCertificates: &GCEBetaSslCertificates{s}, gceAlphaSslCertificates: &GCEAlphaSslCertificates{s}, gceAlphaRegionSslCertificates: &GCEAlphaRegionSslCertificates{s}, gceBetaRegionSslCertificates: &GCEBetaRegionSslCertificates{s}, gceRegionSslCertificates: &GCERegionSslCertificates{s}, gceSslPolicies: &GCESslPolicies{s}, gceAlphaSubnetworks: &GCEAlphaSubnetworks{s}, gceBetaSubnetworks: &GCEBetaSubnetworks{s}, gceSubnetworks: &GCESubnetworks{s}, gceAlphaTargetHttpProxies: &GCEAlphaTargetHttpProxies{s}, gceBetaTargetHttpProxies: &GCEBetaTargetHttpProxies{s}, gceTargetHttpProxies: &GCETargetHttpProxies{s}, gceAlphaRegionTargetHttpProxies: &GCEAlphaRegionTargetHttpProxies{s}, gceBetaRegionTargetHttpProxies: &GCEBetaRegionTargetHttpProxies{s}, gceRegionTargetHttpProxies: &GCERegionTargetHttpProxies{s}, gceTargetHttpsProxies: &GCETargetHttpsProxies{s}, gceAlphaTargetHttpsProxies: &GCEAlphaTargetHttpsProxies{s}, gceBetaTargetHttpsProxies: &GCEBetaTargetHttpsProxies{s}, gceAlphaRegionTargetHttpsProxies: &GCEAlphaRegionTargetHttpsProxies{s}, gceBetaRegionTargetHttpsProxies: &GCEBetaRegionTargetHttpsProxies{s}, gceRegionTargetHttpsProxies: &GCERegionTargetHttpsProxies{s}, gceTargetPools: &GCETargetPools{s}, gceAlphaUrlMaps: &GCEAlphaUrlMaps{s}, gceBetaUrlMaps: &GCEBetaUrlMaps{s}, gceUrlMaps: &GCEUrlMaps{s}, gceAlphaRegionUrlMaps: &GCEAlphaRegionUrlMaps{s}, gceBetaRegionUrlMaps: &GCEBetaRegionUrlMaps{s}, gceRegionUrlMaps: &GCERegionUrlMaps{s}, gceZones: &GCEZones{s}, } return g } // GCE implements Cloud. var _ Cloud = (*GCE)(nil) // GCE is the golang adapter for the compute APIs. type GCE struct { gceAddresses *GCEAddresses gceAlphaAddresses *GCEAlphaAddresses gceBetaAddresses *GCEBetaAddresses gceAlphaGlobalAddresses *GCEAlphaGlobalAddresses gceGlobalAddresses *GCEGlobalAddresses gceBackendServices *GCEBackendServices gceBetaBackendServices *GCEBetaBackendServices gceAlphaBackendServices *GCEAlphaBackendServices gceRegionBackendServices *GCERegionBackendServices gceAlphaRegionBackendServices *GCEAlphaRegionBackendServices gceBetaRegionBackendServices *GCEBetaRegionBackendServices gceDisks *GCEDisks gceRegionDisks *GCERegionDisks gceAlphaFirewalls *GCEAlphaFirewalls gceBetaFirewalls *GCEBetaFirewalls gceFirewalls *GCEFirewalls gceForwardingRules *GCEForwardingRules gceAlphaForwardingRules *GCEAlphaForwardingRules gceBetaForwardingRules *GCEBetaForwardingRules gceAlphaGlobalForwardingRules *GCEAlphaGlobalForwardingRules gceBetaGlobalForwardingRules *GCEBetaGlobalForwardingRules gceGlobalForwardingRules *GCEGlobalForwardingRules gceHealthChecks *GCEHealthChecks gceAlphaHealthChecks *GCEAlphaHealthChecks gceBetaHealthChecks *GCEBetaHealthChecks gceAlphaRegionHealthChecks *GCEAlphaRegionHealthChecks gceBetaRegionHealthChecks *GCEBetaRegionHealthChecks gceRegionHealthChecks *GCERegionHealthChecks gceHttpHealthChecks *GCEHttpHealthChecks gceHttpsHealthChecks *GCEHttpsHealthChecks gceInstanceGroups *GCEInstanceGroups gceInstances *GCEInstances gceBetaInstances *GCEBetaInstances gceAlphaInstances *GCEAlphaInstances gceAlphaNetworks *GCEAlphaNetworks gceBetaNetworks *GCEBetaNetworks gceNetworks *GCENetworks gceAlphaNetworkEndpointGroups *GCEAlphaNetworkEndpointGroups gceBetaNetworkEndpointGroups *GCEBetaNetworkEndpointGroups gceNetworkEndpointGroups *GCENetworkEndpointGroups gceProjects *GCEProjects gceRegions *GCERegions gceRoutes *GCERoutes gceBetaSecurityPolicies *GCEBetaSecurityPolicies gceSslCertificates *GCESslCertificates gceBetaSslCertificates *GCEBetaSslCertificates gceAlphaSslCertificates *GCEAlphaSslCertificates gceAlphaRegionSslCertificates *GCEAlphaRegionSslCertificates gceBetaRegionSslCertificates *GCEBetaRegionSslCertificates gceRegionSslCertificates *GCERegionSslCertificates gceSslPolicies *GCESslPolicies gceAlphaSubnetworks *GCEAlphaSubnetworks gceBetaSubnetworks *GCEBetaSubnetworks gceSubnetworks *GCESubnetworks gceAlphaTargetHttpProxies *GCEAlphaTargetHttpProxies gceBetaTargetHttpProxies *GCEBetaTargetHttpProxies gceTargetHttpProxies *GCETargetHttpProxies gceAlphaRegionTargetHttpProxies *GCEAlphaRegionTargetHttpProxies gceBetaRegionTargetHttpProxies *GCEBetaRegionTargetHttpProxies gceRegionTargetHttpProxies *GCERegionTargetHttpProxies gceTargetHttpsProxies *GCETargetHttpsProxies gceAlphaTargetHttpsProxies *GCEAlphaTargetHttpsProxies gceBetaTargetHttpsProxies *GCEBetaTargetHttpsProxies gceAlphaRegionTargetHttpsProxies *GCEAlphaRegionTargetHttpsProxies gceBetaRegionTargetHttpsProxies *GCEBetaRegionTargetHttpsProxies gceRegionTargetHttpsProxies *GCERegionTargetHttpsProxies gceTargetPools *GCETargetPools gceAlphaUrlMaps *GCEAlphaUrlMaps gceBetaUrlMaps *GCEBetaUrlMaps gceUrlMaps *GCEUrlMaps gceAlphaRegionUrlMaps *GCEAlphaRegionUrlMaps gceBetaRegionUrlMaps *GCEBetaRegionUrlMaps gceRegionUrlMaps *GCERegionUrlMaps gceZones *GCEZones } // Addresses returns the interface for the ga Addresses. func (gce *GCE) Addresses() Addresses { return gce.gceAddresses } // AlphaAddresses returns the interface for the alpha Addresses. func (gce *GCE) AlphaAddresses() AlphaAddresses { return gce.gceAlphaAddresses } // BetaAddresses returns the interface for the beta Addresses. func (gce *GCE) BetaAddresses() BetaAddresses { return gce.gceBetaAddresses } // AlphaGlobalAddresses returns the interface for the alpha GlobalAddresses. func (gce *GCE) AlphaGlobalAddresses() AlphaGlobalAddresses { return gce.gceAlphaGlobalAddresses } // GlobalAddresses returns the interface for the ga GlobalAddresses. func (gce *GCE) GlobalAddresses() GlobalAddresses { return gce.gceGlobalAddresses } // BackendServices returns the interface for the ga BackendServices. func (gce *GCE) BackendServices() BackendServices { return gce.gceBackendServices } // BetaBackendServices returns the interface for the beta BackendServices. func (gce *GCE) BetaBackendServices() BetaBackendServices { return gce.gceBetaBackendServices } // AlphaBackendServices returns the interface for the alpha BackendServices. func (gce *GCE) AlphaBackendServices() AlphaBackendServices { return gce.gceAlphaBackendServices } // RegionBackendServices returns the interface for the ga RegionBackendServices. func (gce *GCE) RegionBackendServices() RegionBackendServices { return gce.gceRegionBackendServices } // AlphaRegionBackendServices returns the interface for the alpha RegionBackendServices. func (gce *GCE) AlphaRegionBackendServices() AlphaRegionBackendServices { return gce.gceAlphaRegionBackendServices } // BetaRegionBackendServices returns the interface for the beta RegionBackendServices. func (gce *GCE) BetaRegionBackendServices() BetaRegionBackendServices { return gce.gceBetaRegionBackendServices } // Disks returns the interface for the ga Disks. func (gce *GCE) Disks() Disks { return gce.gceDisks } // RegionDisks returns the interface for the ga RegionDisks. func (gce *GCE) RegionDisks() RegionDisks { return gce.gceRegionDisks } // AlphaFirewalls returns the interface for the alpha Firewalls. func (gce *GCE) AlphaFirewalls() AlphaFirewalls { return gce.gceAlphaFirewalls } // BetaFirewalls returns the interface for the beta Firewalls. func (gce *GCE) BetaFirewalls() BetaFirewalls { return gce.gceBetaFirewalls } // Firewalls returns the interface for the ga Firewalls. func (gce *GCE) Firewalls() Firewalls { return gce.gceFirewalls } // ForwardingRules returns the interface for the ga ForwardingRules. func (gce *GCE) ForwardingRules() ForwardingRules { return gce.gceForwardingRules } // AlphaForwardingRules returns the interface for the alpha ForwardingRules. func (gce *GCE) AlphaForwardingRules() AlphaForwardingRules { return gce.gceAlphaForwardingRules } // BetaForwardingRules returns the interface for the beta ForwardingRules. func (gce *GCE) BetaForwardingRules() BetaForwardingRules { return gce.gceBetaForwardingRules } // AlphaGlobalForwardingRules returns the interface for the alpha GlobalForwardingRules. func (gce *GCE) AlphaGlobalForwardingRules() AlphaGlobalForwardingRules { return gce.gceAlphaGlobalForwardingRules } // BetaGlobalForwardingRules returns the interface for the beta GlobalForwardingRules. func (gce *GCE) BetaGlobalForwardingRules() BetaGlobalForwardingRules { return gce.gceBetaGlobalForwardingRules } // GlobalForwardingRules returns the interface for the ga GlobalForwardingRules. func (gce *GCE) GlobalForwardingRules() GlobalForwardingRules { return gce.gceGlobalForwardingRules } // HealthChecks returns the interface for the ga HealthChecks. func (gce *GCE) HealthChecks() HealthChecks { return gce.gceHealthChecks } // AlphaHealthChecks returns the interface for the alpha HealthChecks. func (gce *GCE) AlphaHealthChecks() AlphaHealthChecks { return gce.gceAlphaHealthChecks } // BetaHealthChecks returns the interface for the beta HealthChecks. func (gce *GCE) BetaHealthChecks() BetaHealthChecks { return gce.gceBetaHealthChecks } // AlphaRegionHealthChecks returns the interface for the alpha RegionHealthChecks. func (gce *GCE) AlphaRegionHealthChecks() AlphaRegionHealthChecks { return gce.gceAlphaRegionHealthChecks } // BetaRegionHealthChecks returns the interface for the beta RegionHealthChecks. func (gce *GCE) BetaRegionHealthChecks() BetaRegionHealthChecks { return gce.gceBetaRegionHealthChecks } // RegionHealthChecks returns the interface for the ga RegionHealthChecks. func (gce *GCE) RegionHealthChecks() RegionHealthChecks { return gce.gceRegionHealthChecks } // HttpHealthChecks returns the interface for the ga HttpHealthChecks. func (gce *GCE) HttpHealthChecks() HttpHealthChecks { return gce.gceHttpHealthChecks } // HttpsHealthChecks returns the interface for the ga HttpsHealthChecks. func (gce *GCE) HttpsHealthChecks() HttpsHealthChecks { return gce.gceHttpsHealthChecks } // InstanceGroups returns the interface for the ga InstanceGroups. func (gce *GCE) InstanceGroups() InstanceGroups { return gce.gceInstanceGroups } // Instances returns the interface for the ga Instances. func (gce *GCE) Instances() Instances { return gce.gceInstances } // BetaInstances returns the interface for the beta Instances. func (gce *GCE) BetaInstances() BetaInstances { return gce.gceBetaInstances } // AlphaInstances returns the interface for the alpha Instances. func (gce *GCE) AlphaInstances() AlphaInstances { return gce.gceAlphaInstances } // AlphaNetworks returns the interface for the alpha Networks. func (gce *GCE) AlphaNetworks() AlphaNetworks { return gce.gceAlphaNetworks } // BetaNetworks returns the interface for the beta Networks. func (gce *GCE) BetaNetworks() BetaNetworks { return gce.gceBetaNetworks } // Networks returns the interface for the ga Networks. func (gce *GCE) Networks() Networks { return gce.gceNetworks } // AlphaNetworkEndpointGroups returns the interface for the alpha NetworkEndpointGroups. func (gce *GCE) AlphaNetworkEndpointGroups() AlphaNetworkEndpointGroups { return gce.gceAlphaNetworkEndpointGroups } // BetaNetworkEndpointGroups returns the interface for the beta NetworkEndpointGroups. func (gce *GCE) BetaNetworkEndpointGroups() BetaNetworkEndpointGroups { return gce.gceBetaNetworkEndpointGroups } // NetworkEndpointGroups returns the interface for the ga NetworkEndpointGroups. func (gce *GCE) NetworkEndpointGroups() NetworkEndpointGroups { return gce.gceNetworkEndpointGroups } // Projects returns the interface for the ga Projects. func (gce *GCE) Projects() Projects { return gce.gceProjects } // Regions returns the interface for the ga Regions. func (gce *GCE) Regions() Regions { return gce.gceRegions } // Routes returns the interface for the ga Routes. func (gce *GCE) Routes() Routes { return gce.gceRoutes } // BetaSecurityPolicies returns the interface for the beta SecurityPolicies. func (gce *GCE) BetaSecurityPolicies() BetaSecurityPolicies { return gce.gceBetaSecurityPolicies } // SslCertificates returns the interface for the ga SslCertificates. func (gce *GCE) SslCertificates() SslCertificates { return gce.gceSslCertificates } // BetaSslCertificates returns the interface for the beta SslCertificates. func (gce *GCE) BetaSslCertificates() BetaSslCertificates { return gce.gceBetaSslCertificates } // AlphaSslCertificates returns the interface for the alpha SslCertificates. func (gce *GCE) AlphaSslCertificates() AlphaSslCertificates { return gce.gceAlphaSslCertificates } // AlphaRegionSslCertificates returns the interface for the alpha RegionSslCertificates. func (gce *GCE) AlphaRegionSslCertificates() AlphaRegionSslCertificates { return gce.gceAlphaRegionSslCertificates } // BetaRegionSslCertificates returns the interface for the beta RegionSslCertificates. func (gce *GCE) BetaRegionSslCertificates() BetaRegionSslCertificates { return gce.gceBetaRegionSslCertificates } // RegionSslCertificates returns the interface for the ga RegionSslCertificates. func (gce *GCE) RegionSslCertificates() RegionSslCertificates { return gce.gceRegionSslCertificates } // SslPolicies returns the interface for the ga SslPolicies. func (gce *GCE) SslPolicies() SslPolicies { return gce.gceSslPolicies } // AlphaSubnetworks returns the interface for the alpha Subnetworks. func (gce *GCE) AlphaSubnetworks() AlphaSubnetworks { return gce.gceAlphaSubnetworks } // BetaSubnetworks returns the interface for the beta Subnetworks. func (gce *GCE) BetaSubnetworks() BetaSubnetworks { return gce.gceBetaSubnetworks } // Subnetworks returns the interface for the ga Subnetworks. func (gce *GCE) Subnetworks() Subnetworks { return gce.gceSubnetworks } // AlphaTargetHttpProxies returns the interface for the alpha TargetHttpProxies. func (gce *GCE) AlphaTargetHttpProxies() AlphaTargetHttpProxies { return gce.gceAlphaTargetHttpProxies } // BetaTargetHttpProxies returns the interface for the beta TargetHttpProxies. func (gce *GCE) BetaTargetHttpProxies() BetaTargetHttpProxies { return gce.gceBetaTargetHttpProxies } // TargetHttpProxies returns the interface for the ga TargetHttpProxies. func (gce *GCE) TargetHttpProxies() TargetHttpProxies { return gce.gceTargetHttpProxies } // AlphaRegionTargetHttpProxies returns the interface for the alpha RegionTargetHttpProxies. func (gce *GCE) AlphaRegionTargetHttpProxies() AlphaRegionTargetHttpProxies { return gce.gceAlphaRegionTargetHttpProxies } // BetaRegionTargetHttpProxies returns the interface for the beta RegionTargetHttpProxies. func (gce *GCE) BetaRegionTargetHttpProxies() BetaRegionTargetHttpProxies { return gce.gceBetaRegionTargetHttpProxies } // RegionTargetHttpProxies returns the interface for the ga RegionTargetHttpProxies. func (gce *GCE) RegionTargetHttpProxies() RegionTargetHttpProxies { return gce.gceRegionTargetHttpProxies } // TargetHttpsProxies returns the interface for the ga TargetHttpsProxies. func (gce *GCE) TargetHttpsProxies() TargetHttpsProxies { return gce.gceTargetHttpsProxies } // AlphaTargetHttpsProxies returns the interface for the alpha TargetHttpsProxies. func (gce *GCE) AlphaTargetHttpsProxies() AlphaTargetHttpsProxies { return gce.gceAlphaTargetHttpsProxies } // BetaTargetHttpsProxies returns the interface for the beta TargetHttpsProxies. func (gce *GCE) BetaTargetHttpsProxies() BetaTargetHttpsProxies { return gce.gceBetaTargetHttpsProxies } // AlphaRegionTargetHttpsProxies returns the interface for the alpha RegionTargetHttpsProxies. func (gce *GCE) AlphaRegionTargetHttpsProxies() AlphaRegionTargetHttpsProxies { return gce.gceAlphaRegionTargetHttpsProxies } // BetaRegionTargetHttpsProxies returns the interface for the beta RegionTargetHttpsProxies. func (gce *GCE) BetaRegionTargetHttpsProxies() BetaRegionTargetHttpsProxies { return gce.gceBetaRegionTargetHttpsProxies } // RegionTargetHttpsProxies returns the interface for the ga RegionTargetHttpsProxies. func (gce *GCE) RegionTargetHttpsProxies() RegionTargetHttpsProxies { return gce.gceRegionTargetHttpsProxies } // TargetPools returns the interface for the ga TargetPools. func (gce *GCE) TargetPools() TargetPools { return gce.gceTargetPools } // AlphaUrlMaps returns the interface for the alpha UrlMaps. func (gce *GCE) AlphaUrlMaps() AlphaUrlMaps { return gce.gceAlphaUrlMaps } // BetaUrlMaps returns the interface for the beta UrlMaps. func (gce *GCE) BetaUrlMaps() BetaUrlMaps { return gce.gceBetaUrlMaps } // UrlMaps returns the interface for the ga UrlMaps. func (gce *GCE) UrlMaps() UrlMaps { return gce.gceUrlMaps } // AlphaRegionUrlMaps returns the interface for the alpha RegionUrlMaps. func (gce *GCE) AlphaRegionUrlMaps() AlphaRegionUrlMaps { return gce.gceAlphaRegionUrlMaps } // BetaRegionUrlMaps returns the interface for the beta RegionUrlMaps. func (gce *GCE) BetaRegionUrlMaps() BetaRegionUrlMaps { return gce.gceBetaRegionUrlMaps } // RegionUrlMaps returns the interface for the ga RegionUrlMaps. func (gce *GCE) RegionUrlMaps() RegionUrlMaps { return gce.gceRegionUrlMaps } // Zones returns the interface for the ga Zones. func (gce *GCE) Zones() Zones { return gce.gceZones } // NewMockGCE returns a new mock for GCE. func NewMockGCE(projectRouter ProjectRouter) *MockGCE { mockAddressesObjs := map[meta.Key]*MockAddressesObj{} mockBackendServicesObjs := map[meta.Key]*MockBackendServicesObj{} mockDisksObjs := map[meta.Key]*MockDisksObj{} mockFirewallsObjs := map[meta.Key]*MockFirewallsObj{} mockForwardingRulesObjs := map[meta.Key]*MockForwardingRulesObj{} mockGlobalAddressesObjs := map[meta.Key]*MockGlobalAddressesObj{} mockGlobalForwardingRulesObjs := map[meta.Key]*MockGlobalForwardingRulesObj{} mockHealthChecksObjs := map[meta.Key]*MockHealthChecksObj{} mockHttpHealthChecksObjs := map[meta.Key]*MockHttpHealthChecksObj{} mockHttpsHealthChecksObjs := map[meta.Key]*MockHttpsHealthChecksObj{} mockInstanceGroupsObjs := map[meta.Key]*MockInstanceGroupsObj{} mockInstancesObjs := map[meta.Key]*MockInstancesObj{} mockNetworkEndpointGroupsObjs := map[meta.Key]*MockNetworkEndpointGroupsObj{} mockNetworksObjs := map[meta.Key]*MockNetworksObj{} mockProjectsObjs := map[meta.Key]*MockProjectsObj{} mockRegionBackendServicesObjs := map[meta.Key]*MockRegionBackendServicesObj{} mockRegionDisksObjs := map[meta.Key]*MockRegionDisksObj{} mockRegionHealthChecksObjs := map[meta.Key]*MockRegionHealthChecksObj{} mockRegionSslCertificatesObjs := map[meta.Key]*MockRegionSslCertificatesObj{} mockRegionTargetHttpProxiesObjs := map[meta.Key]*MockRegionTargetHttpProxiesObj{} mockRegionTargetHttpsProxiesObjs := map[meta.Key]*MockRegionTargetHttpsProxiesObj{} mockRegionUrlMapsObjs := map[meta.Key]*MockRegionUrlMapsObj{} mockRegionsObjs := map[meta.Key]*MockRegionsObj{} mockRoutesObjs := map[meta.Key]*MockRoutesObj{} mockSecurityPoliciesObjs := map[meta.Key]*MockSecurityPoliciesObj{} mockSslCertificatesObjs := map[meta.Key]*MockSslCertificatesObj{} mockSslPoliciesObjs := map[meta.Key]*MockSslPoliciesObj{} mockSubnetworksObjs := map[meta.Key]*MockSubnetworksObj{} mockTargetHttpProxiesObjs := map[meta.Key]*MockTargetHttpProxiesObj{} mockTargetHttpsProxiesObjs := map[meta.Key]*MockTargetHttpsProxiesObj{} mockTargetPoolsObjs := map[meta.Key]*MockTargetPoolsObj{} mockUrlMapsObjs := map[meta.Key]*MockUrlMapsObj{} mockZonesObjs := map[meta.Key]*MockZonesObj{} mock := &MockGCE{ MockAddresses: NewMockAddresses(projectRouter, mockAddressesObjs), MockAlphaAddresses: NewMockAlphaAddresses(projectRouter, mockAddressesObjs), MockBetaAddresses: NewMockBetaAddresses(projectRouter, mockAddressesObjs), MockAlphaGlobalAddresses: NewMockAlphaGlobalAddresses(projectRouter, mockGlobalAddressesObjs), MockGlobalAddresses: NewMockGlobalAddresses(projectRouter, mockGlobalAddressesObjs), MockBackendServices: NewMockBackendServices(projectRouter, mockBackendServicesObjs), MockBetaBackendServices: NewMockBetaBackendServices(projectRouter, mockBackendServicesObjs), MockAlphaBackendServices: NewMockAlphaBackendServices(projectRouter, mockBackendServicesObjs), MockRegionBackendServices: NewMockRegionBackendServices(projectRouter, mockRegionBackendServicesObjs), MockAlphaRegionBackendServices: NewMockAlphaRegionBackendServices(projectRouter, mockRegionBackendServicesObjs), MockBetaRegionBackendServices: NewMockBetaRegionBackendServices(projectRouter, mockRegionBackendServicesObjs), MockDisks: NewMockDisks(projectRouter, mockDisksObjs), MockRegionDisks: NewMockRegionDisks(projectRouter, mockRegionDisksObjs), MockAlphaFirewalls: NewMockAlphaFirewalls(projectRouter, mockFirewallsObjs), MockBetaFirewalls: NewMockBetaFirewalls(projectRouter, mockFirewallsObjs), MockFirewalls: NewMockFirewalls(projectRouter, mockFirewallsObjs), MockForwardingRules: NewMockForwardingRules(projectRouter, mockForwardingRulesObjs), MockAlphaForwardingRules: NewMockAlphaForwardingRules(projectRouter, mockForwardingRulesObjs), MockBetaForwardingRules: NewMockBetaForwardingRules(projectRouter, mockForwardingRulesObjs), MockAlphaGlobalForwardingRules: NewMockAlphaGlobalForwardingRules(projectRouter, mockGlobalForwardingRulesObjs), MockBetaGlobalForwardingRules: NewMockBetaGlobalForwardingRules(projectRouter, mockGlobalForwardingRulesObjs), MockGlobalForwardingRules: NewMockGlobalForwardingRules(projectRouter, mockGlobalForwardingRulesObjs), MockHealthChecks: NewMockHealthChecks(projectRouter, mockHealthChecksObjs), MockAlphaHealthChecks: NewMockAlphaHealthChecks(projectRouter, mockHealthChecksObjs), MockBetaHealthChecks: NewMockBetaHealthChecks(projectRouter, mockHealthChecksObjs), MockAlphaRegionHealthChecks: NewMockAlphaRegionHealthChecks(projectRouter, mockRegionHealthChecksObjs), MockBetaRegionHealthChecks: NewMockBetaRegionHealthChecks(projectRouter, mockRegionHealthChecksObjs), MockRegionHealthChecks: NewMockRegionHealthChecks(projectRouter, mockRegionHealthChecksObjs), MockHttpHealthChecks: NewMockHttpHealthChecks(projectRouter, mockHttpHealthChecksObjs), MockHttpsHealthChecks: NewMockHttpsHealthChecks(projectRouter, mockHttpsHealthChecksObjs), MockInstanceGroups: NewMockInstanceGroups(projectRouter, mockInstanceGroupsObjs), MockInstances: NewMockInstances(projectRouter, mockInstancesObjs), MockBetaInstances: NewMockBetaInstances(projectRouter, mockInstancesObjs), MockAlphaInstances: NewMockAlphaInstances(projectRouter, mockInstancesObjs), MockAlphaNetworks: NewMockAlphaNetworks(projectRouter, mockNetworksObjs), MockBetaNetworks: NewMockBetaNetworks(projectRouter, mockNetworksObjs), MockNetworks: NewMockNetworks(projectRouter, mockNetworksObjs), MockAlphaNetworkEndpointGroups: NewMockAlphaNetworkEndpointGroups(projectRouter, mockNetworkEndpointGroupsObjs), MockBetaNetworkEndpointGroups: NewMockBetaNetworkEndpointGroups(projectRouter, mockNetworkEndpointGroupsObjs), MockNetworkEndpointGroups: NewMockNetworkEndpointGroups(projectRouter, mockNetworkEndpointGroupsObjs), MockProjects: NewMockProjects(projectRouter, mockProjectsObjs), MockRegions: NewMockRegions(projectRouter, mockRegionsObjs), MockRoutes: NewMockRoutes(projectRouter, mockRoutesObjs), MockBetaSecurityPolicies: NewMockBetaSecurityPolicies(projectRouter, mockSecurityPoliciesObjs), MockSslCertificates: NewMockSslCertificates(projectRouter, mockSslCertificatesObjs), MockBetaSslCertificates: NewMockBetaSslCertificates(projectRouter, mockSslCertificatesObjs), MockAlphaSslCertificates: NewMockAlphaSslCertificates(projectRouter, mockSslCertificatesObjs), MockAlphaRegionSslCertificates: NewMockAlphaRegionSslCertificates(projectRouter, mockRegionSslCertificatesObjs), MockBetaRegionSslCertificates: NewMockBetaRegionSslCertificates(projectRouter, mockRegionSslCertificatesObjs), MockRegionSslCertificates: NewMockRegionSslCertificates(projectRouter, mockRegionSslCertificatesObjs), MockSslPolicies: NewMockSslPolicies(projectRouter, mockSslPoliciesObjs), MockAlphaSubnetworks: NewMockAlphaSubnetworks(projectRouter, mockSubnetworksObjs), MockBetaSubnetworks: NewMockBetaSubnetworks(projectRouter, mockSubnetworksObjs), MockSubnetworks: NewMockSubnetworks(projectRouter, mockSubnetworksObjs), MockAlphaTargetHttpProxies: NewMockAlphaTargetHttpProxies(projectRouter, mockTargetHttpProxiesObjs), MockBetaTargetHttpProxies: NewMockBetaTargetHttpProxies(projectRouter, mockTargetHttpProxiesObjs), MockTargetHttpProxies: NewMockTargetHttpProxies(projectRouter, mockTargetHttpProxiesObjs), MockAlphaRegionTargetHttpProxies: NewMockAlphaRegionTargetHttpProxies(projectRouter, mockRegionTargetHttpProxiesObjs), MockBetaRegionTargetHttpProxies: NewMockBetaRegionTargetHttpProxies(projectRouter, mockRegionTargetHttpProxiesObjs), MockRegionTargetHttpProxies: NewMockRegionTargetHttpProxies(projectRouter, mockRegionTargetHttpProxiesObjs), MockTargetHttpsProxies: NewMockTargetHttpsProxies(projectRouter, mockTargetHttpsProxiesObjs), MockAlphaTargetHttpsProxies: NewMockAlphaTargetHttpsProxies(projectRouter, mockTargetHttpsProxiesObjs), MockBetaTargetHttpsProxies: NewMockBetaTargetHttpsProxies(projectRouter, mockTargetHttpsProxiesObjs), MockAlphaRegionTargetHttpsProxies: NewMockAlphaRegionTargetHttpsProxies(projectRouter, mockRegionTargetHttpsProxiesObjs), MockBetaRegionTargetHttpsProxies: NewMockBetaRegionTargetHttpsProxies(projectRouter, mockRegionTargetHttpsProxiesObjs), MockRegionTargetHttpsProxies: NewMockRegionTargetHttpsProxies(projectRouter, mockRegionTargetHttpsProxiesObjs), MockTargetPools: NewMockTargetPools(projectRouter, mockTargetPoolsObjs), MockAlphaUrlMaps: NewMockAlphaUrlMaps(projectRouter, mockUrlMapsObjs), MockBetaUrlMaps: NewMockBetaUrlMaps(projectRouter, mockUrlMapsObjs), MockUrlMaps: NewMockUrlMaps(projectRouter, mockUrlMapsObjs), MockAlphaRegionUrlMaps: NewMockAlphaRegionUrlMaps(projectRouter, mockRegionUrlMapsObjs), MockBetaRegionUrlMaps: NewMockBetaRegionUrlMaps(projectRouter, mockRegionUrlMapsObjs), MockRegionUrlMaps: NewMockRegionUrlMaps(projectRouter, mockRegionUrlMapsObjs), MockZones: NewMockZones(projectRouter, mockZonesObjs), } return mock } // MockGCE implements Cloud. var _ Cloud = (*MockGCE)(nil) // MockGCE is the mock for the compute API. type MockGCE struct { MockAddresses *MockAddresses MockAlphaAddresses *MockAlphaAddresses MockBetaAddresses *MockBetaAddresses MockAlphaGlobalAddresses *MockAlphaGlobalAddresses MockGlobalAddresses *MockGlobalAddresses MockBackendServices *MockBackendServices MockBetaBackendServices *MockBetaBackendServices MockAlphaBackendServices *MockAlphaBackendServices MockRegionBackendServices *MockRegionBackendServices MockAlphaRegionBackendServices *MockAlphaRegionBackendServices MockBetaRegionBackendServices *MockBetaRegionBackendServices MockDisks *MockDisks MockRegionDisks *MockRegionDisks MockAlphaFirewalls *MockAlphaFirewalls MockBetaFirewalls *MockBetaFirewalls MockFirewalls *MockFirewalls MockForwardingRules *MockForwardingRules MockAlphaForwardingRules *MockAlphaForwardingRules MockBetaForwardingRules *MockBetaForwardingRules MockAlphaGlobalForwardingRules *MockAlphaGlobalForwardingRules MockBetaGlobalForwardingRules *MockBetaGlobalForwardingRules MockGlobalForwardingRules *MockGlobalForwardingRules MockHealthChecks *MockHealthChecks MockAlphaHealthChecks *MockAlphaHealthChecks MockBetaHealthChecks *MockBetaHealthChecks MockAlphaRegionHealthChecks *MockAlphaRegionHealthChecks MockBetaRegionHealthChecks *MockBetaRegionHealthChecks MockRegionHealthChecks *MockRegionHealthChecks MockHttpHealthChecks *MockHttpHealthChecks MockHttpsHealthChecks *MockHttpsHealthChecks MockInstanceGroups *MockInstanceGroups MockInstances *MockInstances MockBetaInstances *MockBetaInstances MockAlphaInstances *MockAlphaInstances MockAlphaNetworks *MockAlphaNetworks MockBetaNetworks *MockBetaNetworks MockNetworks *MockNetworks MockAlphaNetworkEndpointGroups *MockAlphaNetworkEndpointGroups MockBetaNetworkEndpointGroups *MockBetaNetworkEndpointGroups MockNetworkEndpointGroups *MockNetworkEndpointGroups MockProjects *MockProjects MockRegions *MockRegions MockRoutes *MockRoutes MockBetaSecurityPolicies *MockBetaSecurityPolicies MockSslCertificates *MockSslCertificates MockBetaSslCertificates *MockBetaSslCertificates MockAlphaSslCertificates *MockAlphaSslCertificates MockAlphaRegionSslCertificates *MockAlphaRegionSslCertificates MockBetaRegionSslCertificates *MockBetaRegionSslCertificates MockRegionSslCertificates *MockRegionSslCertificates MockSslPolicies *MockSslPolicies MockAlphaSubnetworks *MockAlphaSubnetworks MockBetaSubnetworks *MockBetaSubnetworks MockSubnetworks *MockSubnetworks MockAlphaTargetHttpProxies *MockAlphaTargetHttpProxies MockBetaTargetHttpProxies *MockBetaTargetHttpProxies MockTargetHttpProxies *MockTargetHttpProxies MockAlphaRegionTargetHttpProxies *MockAlphaRegionTargetHttpProxies MockBetaRegionTargetHttpProxies *MockBetaRegionTargetHttpProxies MockRegionTargetHttpProxies *MockRegionTargetHttpProxies MockTargetHttpsProxies *MockTargetHttpsProxies MockAlphaTargetHttpsProxies *MockAlphaTargetHttpsProxies MockBetaTargetHttpsProxies *MockBetaTargetHttpsProxies MockAlphaRegionTargetHttpsProxies *MockAlphaRegionTargetHttpsProxies MockBetaRegionTargetHttpsProxies *MockBetaRegionTargetHttpsProxies MockRegionTargetHttpsProxies *MockRegionTargetHttpsProxies MockTargetPools *MockTargetPools MockAlphaUrlMaps *MockAlphaUrlMaps MockBetaUrlMaps *MockBetaUrlMaps MockUrlMaps *MockUrlMaps MockAlphaRegionUrlMaps *MockAlphaRegionUrlMaps MockBetaRegionUrlMaps *MockBetaRegionUrlMaps MockRegionUrlMaps *MockRegionUrlMaps MockZones *MockZones } // Addresses returns the interface for the ga Addresses. func (mock *MockGCE) Addresses() Addresses { return mock.MockAddresses } // AlphaAddresses returns the interface for the alpha Addresses. func (mock *MockGCE) AlphaAddresses() AlphaAddresses { return mock.MockAlphaAddresses } // BetaAddresses returns the interface for the beta Addresses. func (mock *MockGCE) BetaAddresses() BetaAddresses { return mock.MockBetaAddresses } // AlphaGlobalAddresses returns the interface for the alpha GlobalAddresses. func (mock *MockGCE) AlphaGlobalAddresses() AlphaGlobalAddresses { return mock.MockAlphaGlobalAddresses } // GlobalAddresses returns the interface for the ga GlobalAddresses. func (mock *MockGCE) GlobalAddresses() GlobalAddresses { return mock.MockGlobalAddresses } // BackendServices returns the interface for the ga BackendServices. func (mock *MockGCE) BackendServices() BackendServices { return mock.MockBackendServices } // BetaBackendServices returns the interface for the beta BackendServices. func (mock *MockGCE) BetaBackendServices() BetaBackendServices { return mock.MockBetaBackendServices } // AlphaBackendServices returns the interface for the alpha BackendServices. func (mock *MockGCE) AlphaBackendServices() AlphaBackendServices { return mock.MockAlphaBackendServices } // RegionBackendServices returns the interface for the ga RegionBackendServices. func (mock *MockGCE) RegionBackendServices() RegionBackendServices { return mock.MockRegionBackendServices } // AlphaRegionBackendServices returns the interface for the alpha RegionBackendServices. func (mock *MockGCE) AlphaRegionBackendServices() AlphaRegionBackendServices { return mock.MockAlphaRegionBackendServices } // BetaRegionBackendServices returns the interface for the beta RegionBackendServices. func (mock *MockGCE) BetaRegionBackendServices() BetaRegionBackendServices { return mock.MockBetaRegionBackendServices } // Disks returns the interface for the ga Disks. func (mock *MockGCE) Disks() Disks { return mock.MockDisks } // RegionDisks returns the interface for the ga RegionDisks. func (mock *MockGCE) RegionDisks() RegionDisks { return mock.MockRegionDisks } // AlphaFirewalls returns the interface for the alpha Firewalls. func (mock *MockGCE) AlphaFirewalls() AlphaFirewalls { return mock.MockAlphaFirewalls } // BetaFirewalls returns the interface for the beta Firewalls. func (mock *MockGCE) BetaFirewalls() BetaFirewalls { return mock.MockBetaFirewalls } // Firewalls returns the interface for the ga Firewalls. func (mock *MockGCE) Firewalls() Firewalls { return mock.MockFirewalls } // ForwardingRules returns the interface for the ga ForwardingRules. func (mock *MockGCE) ForwardingRules() ForwardingRules { return mock.MockForwardingRules } // AlphaForwardingRules returns the interface for the alpha ForwardingRules. func (mock *MockGCE) AlphaForwardingRules() AlphaForwardingRules { return mock.MockAlphaForwardingRules } // BetaForwardingRules returns the interface for the beta ForwardingRules. func (mock *MockGCE) BetaForwardingRules() BetaForwardingRules { return mock.MockBetaForwardingRules } // AlphaGlobalForwardingRules returns the interface for the alpha GlobalForwardingRules. func (mock *MockGCE) AlphaGlobalForwardingRules() AlphaGlobalForwardingRules { return mock.MockAlphaGlobalForwardingRules } // BetaGlobalForwardingRules returns the interface for the beta GlobalForwardingRules. func (mock *MockGCE) BetaGlobalForwardingRules() BetaGlobalForwardingRules { return mock.MockBetaGlobalForwardingRules } // GlobalForwardingRules returns the interface for the ga GlobalForwardingRules. func (mock *MockGCE) GlobalForwardingRules() GlobalForwardingRules { return mock.MockGlobalForwardingRules } // HealthChecks returns the interface for the ga HealthChecks. func (mock *MockGCE) HealthChecks() HealthChecks { return mock.MockHealthChecks } // AlphaHealthChecks returns the interface for the alpha HealthChecks. func (mock *MockGCE) AlphaHealthChecks() AlphaHealthChecks { return mock.MockAlphaHealthChecks } // BetaHealthChecks returns the interface for the beta HealthChecks. func (mock *MockGCE) BetaHealthChecks() BetaHealthChecks { return mock.MockBetaHealthChecks } // AlphaRegionHealthChecks returns the interface for the alpha RegionHealthChecks. func (mock *MockGCE) AlphaRegionHealthChecks() AlphaRegionHealthChecks { return mock.MockAlphaRegionHealthChecks } // BetaRegionHealthChecks returns the interface for the beta RegionHealthChecks. func (mock *MockGCE) BetaRegionHealthChecks() BetaRegionHealthChecks { return mock.MockBetaRegionHealthChecks } // RegionHealthChecks returns the interface for the ga RegionHealthChecks. func (mock *MockGCE) RegionHealthChecks() RegionHealthChecks { return mock.MockRegionHealthChecks } // HttpHealthChecks returns the interface for the ga HttpHealthChecks. func (mock *MockGCE) HttpHealthChecks() HttpHealthChecks { return mock.MockHttpHealthChecks } // HttpsHealthChecks returns the interface for the ga HttpsHealthChecks. func (mock *MockGCE) HttpsHealthChecks() HttpsHealthChecks { return mock.MockHttpsHealthChecks } // InstanceGroups returns the interface for the ga InstanceGroups. func (mock *MockGCE) InstanceGroups() InstanceGroups { return mock.MockInstanceGroups } // Instances returns the interface for the ga Instances. func (mock *MockGCE) Instances() Instances { return mock.MockInstances } // BetaInstances returns the interface for the beta Instances. func (mock *MockGCE) BetaInstances() BetaInstances { return mock.MockBetaInstances } // AlphaInstances returns the interface for the alpha Instances. func (mock *MockGCE) AlphaInstances() AlphaInstances { return mock.MockAlphaInstances } // AlphaNetworks returns the interface for the alpha Networks. func (mock *MockGCE) AlphaNetworks() AlphaNetworks { return mock.MockAlphaNetworks } // BetaNetworks returns the interface for the beta Networks. func (mock *MockGCE) BetaNetworks() BetaNetworks { return mock.MockBetaNetworks } // Networks returns the interface for the ga Networks. func (mock *MockGCE) Networks() Networks { return mock.MockNetworks } // AlphaNetworkEndpointGroups returns the interface for the alpha NetworkEndpointGroups. func (mock *MockGCE) AlphaNetworkEndpointGroups() AlphaNetworkEndpointGroups { return mock.MockAlphaNetworkEndpointGroups } // BetaNetworkEndpointGroups returns the interface for the beta NetworkEndpointGroups. func (mock *MockGCE) BetaNetworkEndpointGroups() BetaNetworkEndpointGroups { return mock.MockBetaNetworkEndpointGroups } // NetworkEndpointGroups returns the interface for the ga NetworkEndpointGroups. func (mock *MockGCE) NetworkEndpointGroups() NetworkEndpointGroups { return mock.MockNetworkEndpointGroups } // Projects returns the interface for the ga Projects. func (mock *MockGCE) Projects() Projects { return mock.MockProjects } // Regions returns the interface for the ga Regions. func (mock *MockGCE) Regions() Regions { return mock.MockRegions } // Routes returns the interface for the ga Routes. func (mock *MockGCE) Routes() Routes { return mock.MockRoutes } // BetaSecurityPolicies returns the interface for the beta SecurityPolicies. func (mock *MockGCE) BetaSecurityPolicies() BetaSecurityPolicies { return mock.MockBetaSecurityPolicies } // SslCertificates returns the interface for the ga SslCertificates. func (mock *MockGCE) SslCertificates() SslCertificates { return mock.MockSslCertificates } // BetaSslCertificates returns the interface for the beta SslCertificates. func (mock *MockGCE) BetaSslCertificates() BetaSslCertificates { return mock.MockBetaSslCertificates } // AlphaSslCertificates returns the interface for the alpha SslCertificates. func (mock *MockGCE) AlphaSslCertificates() AlphaSslCertificates { return mock.MockAlphaSslCertificates } // AlphaRegionSslCertificates returns the interface for the alpha RegionSslCertificates. func (mock *MockGCE) AlphaRegionSslCertificates() AlphaRegionSslCertificates { return mock.MockAlphaRegionSslCertificates } // BetaRegionSslCertificates returns the interface for the beta RegionSslCertificates. func (mock *MockGCE) BetaRegionSslCertificates() BetaRegionSslCertificates { return mock.MockBetaRegionSslCertificates } // RegionSslCertificates returns the interface for the ga RegionSslCertificates. func (mock *MockGCE) RegionSslCertificates() RegionSslCertificates { return mock.MockRegionSslCertificates } // SslPolicies returns the interface for the ga SslPolicies. func (mock *MockGCE) SslPolicies() SslPolicies { return mock.MockSslPolicies } // AlphaSubnetworks returns the interface for the alpha Subnetworks. func (mock *MockGCE) AlphaSubnetworks() AlphaSubnetworks { return mock.MockAlphaSubnetworks } // BetaSubnetworks returns the interface for the beta Subnetworks. func (mock *MockGCE) BetaSubnetworks() BetaSubnetworks { return mock.MockBetaSubnetworks } // Subnetworks returns the interface for the ga Subnetworks. func (mock *MockGCE) Subnetworks() Subnetworks { return mock.MockSubnetworks } // AlphaTargetHttpProxies returns the interface for the alpha TargetHttpProxies. func (mock *MockGCE) AlphaTargetHttpProxies() AlphaTargetHttpProxies { return mock.MockAlphaTargetHttpProxies } // BetaTargetHttpProxies returns the interface for the beta TargetHttpProxies. func (mock *MockGCE) BetaTargetHttpProxies() BetaTargetHttpProxies { return mock.MockBetaTargetHttpProxies } // TargetHttpProxies returns the interface for the ga TargetHttpProxies. func (mock *MockGCE) TargetHttpProxies() TargetHttpProxies { return mock.MockTargetHttpProxies } // AlphaRegionTargetHttpProxies returns the interface for the alpha RegionTargetHttpProxies. func (mock *MockGCE) AlphaRegionTargetHttpProxies() AlphaRegionTargetHttpProxies { return mock.MockAlphaRegionTargetHttpProxies } // BetaRegionTargetHttpProxies returns the interface for the beta RegionTargetHttpProxies. func (mock *MockGCE) BetaRegionTargetHttpProxies() BetaRegionTargetHttpProxies { return mock.MockBetaRegionTargetHttpProxies } // RegionTargetHttpProxies returns the interface for the ga RegionTargetHttpProxies. func (mock *MockGCE) RegionTargetHttpProxies() RegionTargetHttpProxies { return mock.MockRegionTargetHttpProxies } // TargetHttpsProxies returns the interface for the ga TargetHttpsProxies. func (mock *MockGCE) TargetHttpsProxies() TargetHttpsProxies { return mock.MockTargetHttpsProxies } // AlphaTargetHttpsProxies returns the interface for the alpha TargetHttpsProxies. func (mock *MockGCE) AlphaTargetHttpsProxies() AlphaTargetHttpsProxies { return mock.MockAlphaTargetHttpsProxies } // BetaTargetHttpsProxies returns the interface for the beta TargetHttpsProxies. func (mock *MockGCE) BetaTargetHttpsProxies() BetaTargetHttpsProxies { return mock.MockBetaTargetHttpsProxies } // AlphaRegionTargetHttpsProxies returns the interface for the alpha RegionTargetHttpsProxies. func (mock *MockGCE) AlphaRegionTargetHttpsProxies() AlphaRegionTargetHttpsProxies { return mock.MockAlphaRegionTargetHttpsProxies } // BetaRegionTargetHttpsProxies returns the interface for the beta RegionTargetHttpsProxies. func (mock *MockGCE) BetaRegionTargetHttpsProxies() BetaRegionTargetHttpsProxies { return mock.MockBetaRegionTargetHttpsProxies } // RegionTargetHttpsProxies returns the interface for the ga RegionTargetHttpsProxies. func (mock *MockGCE) RegionTargetHttpsProxies() RegionTargetHttpsProxies { return mock.MockRegionTargetHttpsProxies } // TargetPools returns the interface for the ga TargetPools. func (mock *MockGCE) TargetPools() TargetPools { return mock.MockTargetPools } // AlphaUrlMaps returns the interface for the alpha UrlMaps. func (mock *MockGCE) AlphaUrlMaps() AlphaUrlMaps { return mock.MockAlphaUrlMaps } // BetaUrlMaps returns the interface for the beta UrlMaps. func (mock *MockGCE) BetaUrlMaps() BetaUrlMaps { return mock.MockBetaUrlMaps } // UrlMaps returns the interface for the ga UrlMaps. func (mock *MockGCE) UrlMaps() UrlMaps { return mock.MockUrlMaps } // AlphaRegionUrlMaps returns the interface for the alpha RegionUrlMaps. func (mock *MockGCE) AlphaRegionUrlMaps() AlphaRegionUrlMaps { return mock.MockAlphaRegionUrlMaps } // BetaRegionUrlMaps returns the interface for the beta RegionUrlMaps. func (mock *MockGCE) BetaRegionUrlMaps() BetaRegionUrlMaps { return mock.MockBetaRegionUrlMaps } // RegionUrlMaps returns the interface for the ga RegionUrlMaps. func (mock *MockGCE) RegionUrlMaps() RegionUrlMaps { return mock.MockRegionUrlMaps } // Zones returns the interface for the ga Zones. func (mock *MockGCE) Zones() Zones { return mock.MockZones } // MockAddressesObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockAddressesObj struct { Obj interface{} } // ToAlpha retrieves the given version of the object. func (m *MockAddressesObj) ToAlpha() *alpha.Address { if ret, ok := m.Obj.(*alpha.Address); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &alpha.Address{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *alpha.Address via JSON: %v", m.Obj, err) } return ret } // ToBeta retrieves the given version of the object. func (m *MockAddressesObj) ToBeta() *beta.Address { if ret, ok := m.Obj.(*beta.Address); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &beta.Address{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *beta.Address via JSON: %v", m.Obj, err) } return ret } // ToGA retrieves the given version of the object. func (m *MockAddressesObj) ToGA() *ga.Address { if ret, ok := m.Obj.(*ga.Address); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.Address{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.Address via JSON: %v", m.Obj, err) } return ret } // MockBackendServicesObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockBackendServicesObj struct { Obj interface{} } // ToAlpha retrieves the given version of the object. func (m *MockBackendServicesObj) ToAlpha() *alpha.BackendService { if ret, ok := m.Obj.(*alpha.BackendService); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &alpha.BackendService{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *alpha.BackendService via JSON: %v", m.Obj, err) } return ret } // ToBeta retrieves the given version of the object. func (m *MockBackendServicesObj) ToBeta() *beta.BackendService { if ret, ok := m.Obj.(*beta.BackendService); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &beta.BackendService{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *beta.BackendService via JSON: %v", m.Obj, err) } return ret } // ToGA retrieves the given version of the object. func (m *MockBackendServicesObj) ToGA() *ga.BackendService { if ret, ok := m.Obj.(*ga.BackendService); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.BackendService{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.BackendService via JSON: %v", m.Obj, err) } return ret } // MockDisksObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockDisksObj struct { Obj interface{} } // ToGA retrieves the given version of the object. func (m *MockDisksObj) ToGA() *ga.Disk { if ret, ok := m.Obj.(*ga.Disk); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.Disk{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.Disk via JSON: %v", m.Obj, err) } return ret } // MockFirewallsObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockFirewallsObj struct { Obj interface{} } // ToAlpha retrieves the given version of the object. func (m *MockFirewallsObj) ToAlpha() *alpha.Firewall { if ret, ok := m.Obj.(*alpha.Firewall); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &alpha.Firewall{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *alpha.Firewall via JSON: %v", m.Obj, err) } return ret } // ToBeta retrieves the given version of the object. func (m *MockFirewallsObj) ToBeta() *beta.Firewall { if ret, ok := m.Obj.(*beta.Firewall); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &beta.Firewall{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *beta.Firewall via JSON: %v", m.Obj, err) } return ret } // ToGA retrieves the given version of the object. func (m *MockFirewallsObj) ToGA() *ga.Firewall { if ret, ok := m.Obj.(*ga.Firewall); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.Firewall{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.Firewall via JSON: %v", m.Obj, err) } return ret } // MockForwardingRulesObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockForwardingRulesObj struct { Obj interface{} } // ToAlpha retrieves the given version of the object. func (m *MockForwardingRulesObj) ToAlpha() *alpha.ForwardingRule { if ret, ok := m.Obj.(*alpha.ForwardingRule); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &alpha.ForwardingRule{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *alpha.ForwardingRule via JSON: %v", m.Obj, err) } return ret } // ToBeta retrieves the given version of the object. func (m *MockForwardingRulesObj) ToBeta() *beta.ForwardingRule { if ret, ok := m.Obj.(*beta.ForwardingRule); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &beta.ForwardingRule{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *beta.ForwardingRule via JSON: %v", m.Obj, err) } return ret } // ToGA retrieves the given version of the object. func (m *MockForwardingRulesObj) ToGA() *ga.ForwardingRule { if ret, ok := m.Obj.(*ga.ForwardingRule); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.ForwardingRule{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.ForwardingRule via JSON: %v", m.Obj, err) } return ret } // MockGlobalAddressesObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockGlobalAddressesObj struct { Obj interface{} } // ToAlpha retrieves the given version of the object. func (m *MockGlobalAddressesObj) ToAlpha() *alpha.Address { if ret, ok := m.Obj.(*alpha.Address); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &alpha.Address{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *alpha.Address via JSON: %v", m.Obj, err) } return ret } // ToGA retrieves the given version of the object. func (m *MockGlobalAddressesObj) ToGA() *ga.Address { if ret, ok := m.Obj.(*ga.Address); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.Address{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.Address via JSON: %v", m.Obj, err) } return ret } // MockGlobalForwardingRulesObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockGlobalForwardingRulesObj struct { Obj interface{} } // ToAlpha retrieves the given version of the object. func (m *MockGlobalForwardingRulesObj) ToAlpha() *alpha.ForwardingRule { if ret, ok := m.Obj.(*alpha.ForwardingRule); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &alpha.ForwardingRule{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *alpha.ForwardingRule via JSON: %v", m.Obj, err) } return ret } // ToBeta retrieves the given version of the object. func (m *MockGlobalForwardingRulesObj) ToBeta() *beta.ForwardingRule { if ret, ok := m.Obj.(*beta.ForwardingRule); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &beta.ForwardingRule{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *beta.ForwardingRule via JSON: %v", m.Obj, err) } return ret } // ToGA retrieves the given version of the object. func (m *MockGlobalForwardingRulesObj) ToGA() *ga.ForwardingRule { if ret, ok := m.Obj.(*ga.ForwardingRule); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.ForwardingRule{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.ForwardingRule via JSON: %v", m.Obj, err) } return ret } // MockHealthChecksObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockHealthChecksObj struct { Obj interface{} } // ToAlpha retrieves the given version of the object. func (m *MockHealthChecksObj) ToAlpha() *alpha.HealthCheck { if ret, ok := m.Obj.(*alpha.HealthCheck); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &alpha.HealthCheck{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *alpha.HealthCheck via JSON: %v", m.Obj, err) } return ret } // ToBeta retrieves the given version of the object. func (m *MockHealthChecksObj) ToBeta() *beta.HealthCheck { if ret, ok := m.Obj.(*beta.HealthCheck); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &beta.HealthCheck{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *beta.HealthCheck via JSON: %v", m.Obj, err) } return ret } // ToGA retrieves the given version of the object. func (m *MockHealthChecksObj) ToGA() *ga.HealthCheck { if ret, ok := m.Obj.(*ga.HealthCheck); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.HealthCheck{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.HealthCheck via JSON: %v", m.Obj, err) } return ret } // MockHttpHealthChecksObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockHttpHealthChecksObj struct { Obj interface{} } // ToGA retrieves the given version of the object. func (m *MockHttpHealthChecksObj) ToGA() *ga.HttpHealthCheck { if ret, ok := m.Obj.(*ga.HttpHealthCheck); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.HttpHealthCheck{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.HttpHealthCheck via JSON: %v", m.Obj, err) } return ret } // MockHttpsHealthChecksObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockHttpsHealthChecksObj struct { Obj interface{} } // ToGA retrieves the given version of the object. func (m *MockHttpsHealthChecksObj) ToGA() *ga.HttpsHealthCheck { if ret, ok := m.Obj.(*ga.HttpsHealthCheck); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.HttpsHealthCheck{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.HttpsHealthCheck via JSON: %v", m.Obj, err) } return ret } // MockInstanceGroupsObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockInstanceGroupsObj struct { Obj interface{} } // ToGA retrieves the given version of the object. func (m *MockInstanceGroupsObj) ToGA() *ga.InstanceGroup { if ret, ok := m.Obj.(*ga.InstanceGroup); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.InstanceGroup{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.InstanceGroup via JSON: %v", m.Obj, err) } return ret } // MockInstancesObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockInstancesObj struct { Obj interface{} } // ToAlpha retrieves the given version of the object. func (m *MockInstancesObj) ToAlpha() *alpha.Instance { if ret, ok := m.Obj.(*alpha.Instance); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &alpha.Instance{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *alpha.Instance via JSON: %v", m.Obj, err) } return ret } // ToBeta retrieves the given version of the object. func (m *MockInstancesObj) ToBeta() *beta.Instance { if ret, ok := m.Obj.(*beta.Instance); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &beta.Instance{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *beta.Instance via JSON: %v", m.Obj, err) } return ret } // ToGA retrieves the given version of the object. func (m *MockInstancesObj) ToGA() *ga.Instance { if ret, ok := m.Obj.(*ga.Instance); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.Instance{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.Instance via JSON: %v", m.Obj, err) } return ret } // MockNetworkEndpointGroupsObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockNetworkEndpointGroupsObj struct { Obj interface{} } // ToAlpha retrieves the given version of the object. func (m *MockNetworkEndpointGroupsObj) ToAlpha() *alpha.NetworkEndpointGroup { if ret, ok := m.Obj.(*alpha.NetworkEndpointGroup); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &alpha.NetworkEndpointGroup{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *alpha.NetworkEndpointGroup via JSON: %v", m.Obj, err) } return ret } // ToBeta retrieves the given version of the object. func (m *MockNetworkEndpointGroupsObj) ToBeta() *beta.NetworkEndpointGroup { if ret, ok := m.Obj.(*beta.NetworkEndpointGroup); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &beta.NetworkEndpointGroup{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *beta.NetworkEndpointGroup via JSON: %v", m.Obj, err) } return ret } // ToGA retrieves the given version of the object. func (m *MockNetworkEndpointGroupsObj) ToGA() *ga.NetworkEndpointGroup { if ret, ok := m.Obj.(*ga.NetworkEndpointGroup); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.NetworkEndpointGroup{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.NetworkEndpointGroup via JSON: %v", m.Obj, err) } return ret } // MockNetworksObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockNetworksObj struct { Obj interface{} } // ToAlpha retrieves the given version of the object. func (m *MockNetworksObj) ToAlpha() *alpha.Network { if ret, ok := m.Obj.(*alpha.Network); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &alpha.Network{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *alpha.Network via JSON: %v", m.Obj, err) } return ret } // ToBeta retrieves the given version of the object. func (m *MockNetworksObj) ToBeta() *beta.Network { if ret, ok := m.Obj.(*beta.Network); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &beta.Network{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *beta.Network via JSON: %v", m.Obj, err) } return ret } // ToGA retrieves the given version of the object. func (m *MockNetworksObj) ToGA() *ga.Network { if ret, ok := m.Obj.(*ga.Network); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.Network{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.Network via JSON: %v", m.Obj, err) } return ret } // MockProjectsObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockProjectsObj struct { Obj interface{} } // ToGA retrieves the given version of the object. func (m *MockProjectsObj) ToGA() *ga.Project { if ret, ok := m.Obj.(*ga.Project); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.Project{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.Project via JSON: %v", m.Obj, err) } return ret } // MockRegionBackendServicesObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockRegionBackendServicesObj struct { Obj interface{} } // ToAlpha retrieves the given version of the object. func (m *MockRegionBackendServicesObj) ToAlpha() *alpha.BackendService { if ret, ok := m.Obj.(*alpha.BackendService); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &alpha.BackendService{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *alpha.BackendService via JSON: %v", m.Obj, err) } return ret } // ToBeta retrieves the given version of the object. func (m *MockRegionBackendServicesObj) ToBeta() *beta.BackendService { if ret, ok := m.Obj.(*beta.BackendService); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &beta.BackendService{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *beta.BackendService via JSON: %v", m.Obj, err) } return ret } // ToGA retrieves the given version of the object. func (m *MockRegionBackendServicesObj) ToGA() *ga.BackendService { if ret, ok := m.Obj.(*ga.BackendService); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.BackendService{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.BackendService via JSON: %v", m.Obj, err) } return ret } // MockRegionDisksObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockRegionDisksObj struct { Obj interface{} } // ToGA retrieves the given version of the object. func (m *MockRegionDisksObj) ToGA() *ga.Disk { if ret, ok := m.Obj.(*ga.Disk); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.Disk{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.Disk via JSON: %v", m.Obj, err) } return ret } // MockRegionHealthChecksObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockRegionHealthChecksObj struct { Obj interface{} } // ToAlpha retrieves the given version of the object. func (m *MockRegionHealthChecksObj) ToAlpha() *alpha.HealthCheck { if ret, ok := m.Obj.(*alpha.HealthCheck); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &alpha.HealthCheck{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *alpha.HealthCheck via JSON: %v", m.Obj, err) } return ret } // ToBeta retrieves the given version of the object. func (m *MockRegionHealthChecksObj) ToBeta() *beta.HealthCheck { if ret, ok := m.Obj.(*beta.HealthCheck); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &beta.HealthCheck{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *beta.HealthCheck via JSON: %v", m.Obj, err) } return ret } // ToGA retrieves the given version of the object. func (m *MockRegionHealthChecksObj) ToGA() *ga.HealthCheck { if ret, ok := m.Obj.(*ga.HealthCheck); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.HealthCheck{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.HealthCheck via JSON: %v", m.Obj, err) } return ret } // MockRegionSslCertificatesObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockRegionSslCertificatesObj struct { Obj interface{} } // ToAlpha retrieves the given version of the object. func (m *MockRegionSslCertificatesObj) ToAlpha() *alpha.SslCertificate { if ret, ok := m.Obj.(*alpha.SslCertificate); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &alpha.SslCertificate{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *alpha.SslCertificate via JSON: %v", m.Obj, err) } return ret } // ToBeta retrieves the given version of the object. func (m *MockRegionSslCertificatesObj) ToBeta() *beta.SslCertificate { if ret, ok := m.Obj.(*beta.SslCertificate); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &beta.SslCertificate{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *beta.SslCertificate via JSON: %v", m.Obj, err) } return ret } // ToGA retrieves the given version of the object. func (m *MockRegionSslCertificatesObj) ToGA() *ga.SslCertificate { if ret, ok := m.Obj.(*ga.SslCertificate); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.SslCertificate{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.SslCertificate via JSON: %v", m.Obj, err) } return ret } // MockRegionTargetHttpProxiesObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockRegionTargetHttpProxiesObj struct { Obj interface{} } // ToAlpha retrieves the given version of the object. func (m *MockRegionTargetHttpProxiesObj) ToAlpha() *alpha.TargetHttpProxy { if ret, ok := m.Obj.(*alpha.TargetHttpProxy); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &alpha.TargetHttpProxy{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *alpha.TargetHttpProxy via JSON: %v", m.Obj, err) } return ret } // ToBeta retrieves the given version of the object. func (m *MockRegionTargetHttpProxiesObj) ToBeta() *beta.TargetHttpProxy { if ret, ok := m.Obj.(*beta.TargetHttpProxy); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &beta.TargetHttpProxy{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *beta.TargetHttpProxy via JSON: %v", m.Obj, err) } return ret } // ToGA retrieves the given version of the object. func (m *MockRegionTargetHttpProxiesObj) ToGA() *ga.TargetHttpProxy { if ret, ok := m.Obj.(*ga.TargetHttpProxy); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.TargetHttpProxy{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.TargetHttpProxy via JSON: %v", m.Obj, err) } return ret } // MockRegionTargetHttpsProxiesObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockRegionTargetHttpsProxiesObj struct { Obj interface{} } // ToAlpha retrieves the given version of the object. func (m *MockRegionTargetHttpsProxiesObj) ToAlpha() *alpha.TargetHttpsProxy { if ret, ok := m.Obj.(*alpha.TargetHttpsProxy); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &alpha.TargetHttpsProxy{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *alpha.TargetHttpsProxy via JSON: %v", m.Obj, err) } return ret } // ToBeta retrieves the given version of the object. func (m *MockRegionTargetHttpsProxiesObj) ToBeta() *beta.TargetHttpsProxy { if ret, ok := m.Obj.(*beta.TargetHttpsProxy); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &beta.TargetHttpsProxy{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *beta.TargetHttpsProxy via JSON: %v", m.Obj, err) } return ret } // ToGA retrieves the given version of the object. func (m *MockRegionTargetHttpsProxiesObj) ToGA() *ga.TargetHttpsProxy { if ret, ok := m.Obj.(*ga.TargetHttpsProxy); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.TargetHttpsProxy{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.TargetHttpsProxy via JSON: %v", m.Obj, err) } return ret } // MockRegionUrlMapsObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockRegionUrlMapsObj struct { Obj interface{} } // ToAlpha retrieves the given version of the object. func (m *MockRegionUrlMapsObj) ToAlpha() *alpha.UrlMap { if ret, ok := m.Obj.(*alpha.UrlMap); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &alpha.UrlMap{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *alpha.UrlMap via JSON: %v", m.Obj, err) } return ret } // ToBeta retrieves the given version of the object. func (m *MockRegionUrlMapsObj) ToBeta() *beta.UrlMap { if ret, ok := m.Obj.(*beta.UrlMap); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &beta.UrlMap{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *beta.UrlMap via JSON: %v", m.Obj, err) } return ret } // ToGA retrieves the given version of the object. func (m *MockRegionUrlMapsObj) ToGA() *ga.UrlMap { if ret, ok := m.Obj.(*ga.UrlMap); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.UrlMap{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.UrlMap via JSON: %v", m.Obj, err) } return ret } // MockRegionsObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockRegionsObj struct { Obj interface{} } // ToGA retrieves the given version of the object. func (m *MockRegionsObj) ToGA() *ga.Region { if ret, ok := m.Obj.(*ga.Region); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.Region{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.Region via JSON: %v", m.Obj, err) } return ret } // MockRoutesObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockRoutesObj struct { Obj interface{} } // ToGA retrieves the given version of the object. func (m *MockRoutesObj) ToGA() *ga.Route { if ret, ok := m.Obj.(*ga.Route); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.Route{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.Route via JSON: %v", m.Obj, err) } return ret } // MockSecurityPoliciesObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockSecurityPoliciesObj struct { Obj interface{} } // ToBeta retrieves the given version of the object. func (m *MockSecurityPoliciesObj) ToBeta() *beta.SecurityPolicy { if ret, ok := m.Obj.(*beta.SecurityPolicy); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &beta.SecurityPolicy{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *beta.SecurityPolicy via JSON: %v", m.Obj, err) } return ret } // MockSslCertificatesObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockSslCertificatesObj struct { Obj interface{} } // ToAlpha retrieves the given version of the object. func (m *MockSslCertificatesObj) ToAlpha() *alpha.SslCertificate { if ret, ok := m.Obj.(*alpha.SslCertificate); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &alpha.SslCertificate{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *alpha.SslCertificate via JSON: %v", m.Obj, err) } return ret } // ToBeta retrieves the given version of the object. func (m *MockSslCertificatesObj) ToBeta() *beta.SslCertificate { if ret, ok := m.Obj.(*beta.SslCertificate); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &beta.SslCertificate{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *beta.SslCertificate via JSON: %v", m.Obj, err) } return ret } // ToGA retrieves the given version of the object. func (m *MockSslCertificatesObj) ToGA() *ga.SslCertificate { if ret, ok := m.Obj.(*ga.SslCertificate); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.SslCertificate{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.SslCertificate via JSON: %v", m.Obj, err) } return ret } // MockSslPoliciesObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockSslPoliciesObj struct { Obj interface{} } // ToGA retrieves the given version of the object. func (m *MockSslPoliciesObj) ToGA() *ga.SslPolicy { if ret, ok := m.Obj.(*ga.SslPolicy); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.SslPolicy{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.SslPolicy via JSON: %v", m.Obj, err) } return ret } // MockSubnetworksObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockSubnetworksObj struct { Obj interface{} } // ToAlpha retrieves the given version of the object. func (m *MockSubnetworksObj) ToAlpha() *alpha.Subnetwork { if ret, ok := m.Obj.(*alpha.Subnetwork); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &alpha.Subnetwork{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *alpha.Subnetwork via JSON: %v", m.Obj, err) } return ret } // ToBeta retrieves the given version of the object. func (m *MockSubnetworksObj) ToBeta() *beta.Subnetwork { if ret, ok := m.Obj.(*beta.Subnetwork); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &beta.Subnetwork{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *beta.Subnetwork via JSON: %v", m.Obj, err) } return ret } // ToGA retrieves the given version of the object. func (m *MockSubnetworksObj) ToGA() *ga.Subnetwork { if ret, ok := m.Obj.(*ga.Subnetwork); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.Subnetwork{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.Subnetwork via JSON: %v", m.Obj, err) } return ret } // MockTargetHttpProxiesObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockTargetHttpProxiesObj struct { Obj interface{} } // ToAlpha retrieves the given version of the object. func (m *MockTargetHttpProxiesObj) ToAlpha() *alpha.TargetHttpProxy { if ret, ok := m.Obj.(*alpha.TargetHttpProxy); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &alpha.TargetHttpProxy{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *alpha.TargetHttpProxy via JSON: %v", m.Obj, err) } return ret } // ToBeta retrieves the given version of the object. func (m *MockTargetHttpProxiesObj) ToBeta() *beta.TargetHttpProxy { if ret, ok := m.Obj.(*beta.TargetHttpProxy); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &beta.TargetHttpProxy{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *beta.TargetHttpProxy via JSON: %v", m.Obj, err) } return ret } // ToGA retrieves the given version of the object. func (m *MockTargetHttpProxiesObj) ToGA() *ga.TargetHttpProxy { if ret, ok := m.Obj.(*ga.TargetHttpProxy); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.TargetHttpProxy{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.TargetHttpProxy via JSON: %v", m.Obj, err) } return ret } // MockTargetHttpsProxiesObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockTargetHttpsProxiesObj struct { Obj interface{} } // ToAlpha retrieves the given version of the object. func (m *MockTargetHttpsProxiesObj) ToAlpha() *alpha.TargetHttpsProxy { if ret, ok := m.Obj.(*alpha.TargetHttpsProxy); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &alpha.TargetHttpsProxy{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *alpha.TargetHttpsProxy via JSON: %v", m.Obj, err) } return ret } // ToBeta retrieves the given version of the object. func (m *MockTargetHttpsProxiesObj) ToBeta() *beta.TargetHttpsProxy { if ret, ok := m.Obj.(*beta.TargetHttpsProxy); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &beta.TargetHttpsProxy{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *beta.TargetHttpsProxy via JSON: %v", m.Obj, err) } return ret } // ToGA retrieves the given version of the object. func (m *MockTargetHttpsProxiesObj) ToGA() *ga.TargetHttpsProxy { if ret, ok := m.Obj.(*ga.TargetHttpsProxy); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.TargetHttpsProxy{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.TargetHttpsProxy via JSON: %v", m.Obj, err) } return ret } // MockTargetPoolsObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockTargetPoolsObj struct { Obj interface{} } // ToGA retrieves the given version of the object. func (m *MockTargetPoolsObj) ToGA() *ga.TargetPool { if ret, ok := m.Obj.(*ga.TargetPool); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.TargetPool{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.TargetPool via JSON: %v", m.Obj, err) } return ret } // MockUrlMapsObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockUrlMapsObj struct { Obj interface{} } // ToAlpha retrieves the given version of the object. func (m *MockUrlMapsObj) ToAlpha() *alpha.UrlMap { if ret, ok := m.Obj.(*alpha.UrlMap); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &alpha.UrlMap{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *alpha.UrlMap via JSON: %v", m.Obj, err) } return ret } // ToBeta retrieves the given version of the object. func (m *MockUrlMapsObj) ToBeta() *beta.UrlMap { if ret, ok := m.Obj.(*beta.UrlMap); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &beta.UrlMap{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *beta.UrlMap via JSON: %v", m.Obj, err) } return ret } // ToGA retrieves the given version of the object. func (m *MockUrlMapsObj) ToGA() *ga.UrlMap { if ret, ok := m.Obj.(*ga.UrlMap); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.UrlMap{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.UrlMap via JSON: %v", m.Obj, err) } return ret } // MockZonesObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. type MockZonesObj struct { Obj interface{} } // ToGA retrieves the given version of the object. func (m *MockZonesObj) ToGA() *ga.Zone { if ret, ok := m.Obj.(*ga.Zone); ok { return ret } // Convert the object via JSON copying to the type that was requested. ret := &ga.Zone{} if err := copyViaJSON(ret, m.Obj); err != nil { klog.Errorf("Could not convert %T to *ga.Zone via JSON: %v", m.Obj, err) } return ret } // Addresses is an interface that allows for mocking of Addresses. type Addresses interface { Get(ctx context.Context, key *meta.Key) (*ga.Address, error) List(ctx context.Context, region string, fl *filter.F) ([]*ga.Address, error) Insert(ctx context.Context, key *meta.Key, obj *ga.Address) error Delete(ctx context.Context, key *meta.Key) error AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*ga.Address, error) } // NewMockAddresses returns a new mock for Addresses. func NewMockAddresses(pr ProjectRouter, objs map[meta.Key]*MockAddressesObj) *MockAddresses { mock := &MockAddresses{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockAddresses is the mock for Addresses. type MockAddresses struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockAddressesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error AggregatedListError *error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockAddresses) (bool, *ga.Address, error) ListHook func(ctx context.Context, region string, fl *filter.F, m *MockAddresses) (bool, []*ga.Address, error) InsertHook func(ctx context.Context, key *meta.Key, obj *ga.Address, m *MockAddresses) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockAddresses) (bool, error) AggregatedListHook func(ctx context.Context, fl *filter.F, m *MockAddresses) (bool, map[string][]*ga.Address, error) // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockAddresses) Get(ctx context.Context, key *meta.Key) (*ga.Address, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockAddresses.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockAddresses.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToGA() klog.V(5).Infof("MockAddresses.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAddresses %v not found", key), } klog.V(5).Infof("MockAddresses.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given region. func (m *MockAddresses) List(ctx context.Context, region string, fl *filter.F) ([]*ga.Address, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept { klog.V(5).Infof("MockAddresses.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockAddresses.List(%v, %q, %v) = nil, %v", ctx, region, fl, err) return nil, *m.ListError } var objs []*ga.Address for key, obj := range m.Objects { if key.Region != region { continue } if !fl.Match(obj.ToGA()) { continue } objs = append(objs, obj.ToGA()) } klog.V(5).Infof("MockAddresses.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockAddresses) Insert(ctx context.Context, key *meta.Key, obj *ga.Address) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockAddresses.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockAddresses.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockAddresses %v exists", key), } klog.V(5).Infof("MockAddresses.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "ga", "addresses") obj.SelfLink = SelfLink(meta.VersionGA, projectID, "addresses", key) m.Objects[*key] = &MockAddressesObj{obj} klog.V(5).Infof("MockAddresses.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockAddresses) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockAddresses.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockAddresses.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAddresses %v not found", key), } klog.V(5).Infof("MockAddresses.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockAddresses.Delete(%v, %v) = nil", ctx, key) return nil } // AggregatedList is a mock for AggregatedList. func (m *MockAddresses) AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*ga.Address, error) { if m.AggregatedListHook != nil { if intercept, objs, err := m.AggregatedListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockAddresses.AggregatedList(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.AggregatedListError != nil { err := *m.AggregatedListError klog.V(5).Infof("MockAddresses.AggregatedList(%v, %v) = nil, %v", ctx, fl, err) return nil, err } objs := map[string][]*ga.Address{} for _, obj := range m.Objects { res, err := ParseResourceURL(obj.ToGA().SelfLink) if err != nil { klog.V(5).Infof("MockAddresses.AggregatedList(%v, %v) = nil, %v", ctx, fl, err) return nil, err } if !fl.Match(obj.ToGA()) { continue } location := aggregatedListKey(res.Key) objs[location] = append(objs[location], obj.ToGA()) } klog.V(5).Infof("MockAddresses.AggregatedList(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Obj wraps the object for use in the mock. func (m *MockAddresses) Obj(o *ga.Address) *MockAddressesObj { return &MockAddressesObj{o} } // GCEAddresses is a simplifying adapter for the GCE Addresses. type GCEAddresses struct { s *Service } // Get the Address named by key. func (g *GCEAddresses) Get(ctx context.Context, key *meta.Key) (*ga.Address, error) { klog.V(5).Infof("GCEAddresses.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAddresses.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Addresses") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("ga"), Service: "Addresses", } klog.V(5).Infof("GCEAddresses.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAddresses.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.Addresses.Get(projectID, key.Region, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEAddresses.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all Address objects. func (g *GCEAddresses) List(ctx context.Context, region string, fl *filter.F) ([]*ga.Address, error) { klog.V(5).Infof("GCEAddresses.List(%v, %v, %v) called", ctx, region, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Addresses") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("ga"), Service: "Addresses", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEAddresses.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk) call := g.s.GA.Addresses.List(projectID, region) if fl != filter.None { call.Filter(fl.String()) } var all []*ga.Address f := func(l *ga.AddressList) error { klog.V(5).Infof("GCEAddresses.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEAddresses.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEAddresses.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEAddresses.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert Address with key of value obj. func (g *GCEAddresses) Insert(ctx context.Context, key *meta.Key, obj *ga.Address) error { klog.V(5).Infof("GCEAddresses.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEAddresses.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Addresses") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("ga"), Service: "Addresses", } klog.V(5).Infof("GCEAddresses.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAddresses.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.GA.Addresses.Insert(projectID, key.Region, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAddresses.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAddresses.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the Address referenced by key. func (g *GCEAddresses) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEAddresses.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAddresses.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Addresses") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("ga"), Service: "Addresses", } klog.V(5).Infof("GCEAddresses.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAddresses.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.Addresses.Delete(projectID, key.Region, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAddresses.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAddresses.Delete(%v, %v) = %v", ctx, key, err) return err } // AggregatedList lists all resources of the given type across all locations. func (g *GCEAddresses) AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*ga.Address, error) { klog.V(5).Infof("GCEAddresses.AggregatedList(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Addresses") rk := &RateLimitKey{ ProjectID: projectID, Operation: "AggregatedList", Version: meta.Version("ga"), Service: "Addresses", } klog.V(5).Infof("GCEAddresses.AggregatedList(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(5).Infof("GCEAddresses.AggregatedList(%v, %v): RateLimiter error: %v", ctx, fl, err) return nil, err } call := g.s.GA.Addresses.AggregatedList(projectID) call.Context(ctx) if fl != filter.None { call.Filter(fl.String()) } all := map[string][]*ga.Address{} f := func(l *ga.AddressAggregatedList) error { for k, v := range l.Items { klog.V(5).Infof("GCEAddresses.AggregatedList(%v, %v): page[%v]%+v", ctx, fl, k, v) all[k] = append(all[k], v.Addresses...) } return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEAddresses.AggregatedList(%v, %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEAddresses.AggregatedList(%v, %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEAddresses.AggregatedList(%v, %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // AlphaAddresses is an interface that allows for mocking of Addresses. type AlphaAddresses interface { Get(ctx context.Context, key *meta.Key) (*alpha.Address, error) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.Address, error) Insert(ctx context.Context, key *meta.Key, obj *alpha.Address) error Delete(ctx context.Context, key *meta.Key) error AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*alpha.Address, error) } // NewMockAlphaAddresses returns a new mock for Addresses. func NewMockAlphaAddresses(pr ProjectRouter, objs map[meta.Key]*MockAddressesObj) *MockAlphaAddresses { mock := &MockAlphaAddresses{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockAlphaAddresses is the mock for Addresses. type MockAlphaAddresses struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockAddressesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error AggregatedListError *error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaAddresses) (bool, *alpha.Address, error) ListHook func(ctx context.Context, region string, fl *filter.F, m *MockAlphaAddresses) (bool, []*alpha.Address, error) InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.Address, m *MockAlphaAddresses) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaAddresses) (bool, error) AggregatedListHook func(ctx context.Context, fl *filter.F, m *MockAlphaAddresses) (bool, map[string][]*alpha.Address, error) // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockAlphaAddresses) Get(ctx context.Context, key *meta.Key) (*alpha.Address, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaAddresses.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockAlphaAddresses.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToAlpha() klog.V(5).Infof("MockAlphaAddresses.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaAddresses %v not found", key), } klog.V(5).Infof("MockAlphaAddresses.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given region. func (m *MockAlphaAddresses) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.Address, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept { klog.V(5).Infof("MockAlphaAddresses.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockAlphaAddresses.List(%v, %q, %v) = nil, %v", ctx, region, fl, err) return nil, *m.ListError } var objs []*alpha.Address for key, obj := range m.Objects { if key.Region != region { continue } if !fl.Match(obj.ToAlpha()) { continue } objs = append(objs, obj.ToAlpha()) } klog.V(5).Infof("MockAlphaAddresses.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockAlphaAddresses) Insert(ctx context.Context, key *meta.Key, obj *alpha.Address) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockAlphaAddresses.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockAlphaAddresses.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockAlphaAddresses %v exists", key), } klog.V(5).Infof("MockAlphaAddresses.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "addresses") obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "addresses", key) m.Objects[*key] = &MockAddressesObj{obj} klog.V(5).Infof("MockAlphaAddresses.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockAlphaAddresses) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaAddresses.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockAlphaAddresses.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaAddresses %v not found", key), } klog.V(5).Infof("MockAlphaAddresses.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockAlphaAddresses.Delete(%v, %v) = nil", ctx, key) return nil } // AggregatedList is a mock for AggregatedList. func (m *MockAlphaAddresses) AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*alpha.Address, error) { if m.AggregatedListHook != nil { if intercept, objs, err := m.AggregatedListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockAlphaAddresses.AggregatedList(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.AggregatedListError != nil { err := *m.AggregatedListError klog.V(5).Infof("MockAlphaAddresses.AggregatedList(%v, %v) = nil, %v", ctx, fl, err) return nil, err } objs := map[string][]*alpha.Address{} for _, obj := range m.Objects { res, err := ParseResourceURL(obj.ToAlpha().SelfLink) if err != nil { klog.V(5).Infof("MockAlphaAddresses.AggregatedList(%v, %v) = nil, %v", ctx, fl, err) return nil, err } if !fl.Match(obj.ToAlpha()) { continue } location := aggregatedListKey(res.Key) objs[location] = append(objs[location], obj.ToAlpha()) } klog.V(5).Infof("MockAlphaAddresses.AggregatedList(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Obj wraps the object for use in the mock. func (m *MockAlphaAddresses) Obj(o *alpha.Address) *MockAddressesObj { return &MockAddressesObj{o} } // GCEAlphaAddresses is a simplifying adapter for the GCE Addresses. type GCEAlphaAddresses struct { s *Service } // Get the Address named by key. func (g *GCEAlphaAddresses) Get(ctx context.Context, key *meta.Key) (*alpha.Address, error) { klog.V(5).Infof("GCEAlphaAddresses.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaAddresses.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Addresses") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("alpha"), Service: "Addresses", } klog.V(5).Infof("GCEAlphaAddresses.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaAddresses.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Alpha.Addresses.Get(projectID, key.Region, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEAlphaAddresses.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all Address objects. func (g *GCEAlphaAddresses) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.Address, error) { klog.V(5).Infof("GCEAlphaAddresses.List(%v, %v, %v) called", ctx, region, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Addresses") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("alpha"), Service: "Addresses", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEAlphaAddresses.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk) call := g.s.Alpha.Addresses.List(projectID, region) if fl != filter.None { call.Filter(fl.String()) } var all []*alpha.Address f := func(l *alpha.AddressList) error { klog.V(5).Infof("GCEAlphaAddresses.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEAlphaAddresses.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEAlphaAddresses.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEAlphaAddresses.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert Address with key of value obj. func (g *GCEAlphaAddresses) Insert(ctx context.Context, key *meta.Key, obj *alpha.Address) error { klog.V(5).Infof("GCEAlphaAddresses.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEAlphaAddresses.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Addresses") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("alpha"), Service: "Addresses", } klog.V(5).Infof("GCEAlphaAddresses.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaAddresses.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Alpha.Addresses.Insert(projectID, key.Region, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaAddresses.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaAddresses.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the Address referenced by key. func (g *GCEAlphaAddresses) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEAlphaAddresses.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaAddresses.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Addresses") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("alpha"), Service: "Addresses", } klog.V(5).Infof("GCEAlphaAddresses.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaAddresses.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.Addresses.Delete(projectID, key.Region, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaAddresses.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaAddresses.Delete(%v, %v) = %v", ctx, key, err) return err } // AggregatedList lists all resources of the given type across all locations. func (g *GCEAlphaAddresses) AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*alpha.Address, error) { klog.V(5).Infof("GCEAlphaAddresses.AggregatedList(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Addresses") rk := &RateLimitKey{ ProjectID: projectID, Operation: "AggregatedList", Version: meta.Version("alpha"), Service: "Addresses", } klog.V(5).Infof("GCEAlphaAddresses.AggregatedList(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(5).Infof("GCEAlphaAddresses.AggregatedList(%v, %v): RateLimiter error: %v", ctx, fl, err) return nil, err } call := g.s.Alpha.Addresses.AggregatedList(projectID) call.Context(ctx) if fl != filter.None { call.Filter(fl.String()) } all := map[string][]*alpha.Address{} f := func(l *alpha.AddressAggregatedList) error { for k, v := range l.Items { klog.V(5).Infof("GCEAlphaAddresses.AggregatedList(%v, %v): page[%v]%+v", ctx, fl, k, v) all[k] = append(all[k], v.Addresses...) } return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEAlphaAddresses.AggregatedList(%v, %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEAlphaAddresses.AggregatedList(%v, %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEAlphaAddresses.AggregatedList(%v, %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // BetaAddresses is an interface that allows for mocking of Addresses. type BetaAddresses interface { Get(ctx context.Context, key *meta.Key) (*beta.Address, error) List(ctx context.Context, region string, fl *filter.F) ([]*beta.Address, error) Insert(ctx context.Context, key *meta.Key, obj *beta.Address) error Delete(ctx context.Context, key *meta.Key) error AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*beta.Address, error) } // NewMockBetaAddresses returns a new mock for Addresses. func NewMockBetaAddresses(pr ProjectRouter, objs map[meta.Key]*MockAddressesObj) *MockBetaAddresses { mock := &MockBetaAddresses{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockBetaAddresses is the mock for Addresses. type MockBetaAddresses struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockAddressesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error AggregatedListError *error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaAddresses) (bool, *beta.Address, error) ListHook func(ctx context.Context, region string, fl *filter.F, m *MockBetaAddresses) (bool, []*beta.Address, error) InsertHook func(ctx context.Context, key *meta.Key, obj *beta.Address, m *MockBetaAddresses) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaAddresses) (bool, error) AggregatedListHook func(ctx context.Context, fl *filter.F, m *MockBetaAddresses) (bool, map[string][]*beta.Address, error) // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockBetaAddresses) Get(ctx context.Context, key *meta.Key) (*beta.Address, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaAddresses.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockBetaAddresses.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToBeta() klog.V(5).Infof("MockBetaAddresses.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaAddresses %v not found", key), } klog.V(5).Infof("MockBetaAddresses.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given region. func (m *MockBetaAddresses) List(ctx context.Context, region string, fl *filter.F) ([]*beta.Address, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept { klog.V(5).Infof("MockBetaAddresses.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockBetaAddresses.List(%v, %q, %v) = nil, %v", ctx, region, fl, err) return nil, *m.ListError } var objs []*beta.Address for key, obj := range m.Objects { if key.Region != region { continue } if !fl.Match(obj.ToBeta()) { continue } objs = append(objs, obj.ToBeta()) } klog.V(5).Infof("MockBetaAddresses.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockBetaAddresses) Insert(ctx context.Context, key *meta.Key, obj *beta.Address) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockBetaAddresses.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockBetaAddresses.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockBetaAddresses %v exists", key), } klog.V(5).Infof("MockBetaAddresses.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "beta", "addresses") obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "addresses", key) m.Objects[*key] = &MockAddressesObj{obj} klog.V(5).Infof("MockBetaAddresses.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockBetaAddresses) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaAddresses.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockBetaAddresses.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaAddresses %v not found", key), } klog.V(5).Infof("MockBetaAddresses.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockBetaAddresses.Delete(%v, %v) = nil", ctx, key) return nil } // AggregatedList is a mock for AggregatedList. func (m *MockBetaAddresses) AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*beta.Address, error) { if m.AggregatedListHook != nil { if intercept, objs, err := m.AggregatedListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockBetaAddresses.AggregatedList(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.AggregatedListError != nil { err := *m.AggregatedListError klog.V(5).Infof("MockBetaAddresses.AggregatedList(%v, %v) = nil, %v", ctx, fl, err) return nil, err } objs := map[string][]*beta.Address{} for _, obj := range m.Objects { res, err := ParseResourceURL(obj.ToBeta().SelfLink) if err != nil { klog.V(5).Infof("MockBetaAddresses.AggregatedList(%v, %v) = nil, %v", ctx, fl, err) return nil, err } if !fl.Match(obj.ToBeta()) { continue } location := aggregatedListKey(res.Key) objs[location] = append(objs[location], obj.ToBeta()) } klog.V(5).Infof("MockBetaAddresses.AggregatedList(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Obj wraps the object for use in the mock. func (m *MockBetaAddresses) Obj(o *beta.Address) *MockAddressesObj { return &MockAddressesObj{o} } // GCEBetaAddresses is a simplifying adapter for the GCE Addresses. type GCEBetaAddresses struct { s *Service } // Get the Address named by key. func (g *GCEBetaAddresses) Get(ctx context.Context, key *meta.Key) (*beta.Address, error) { klog.V(5).Infof("GCEBetaAddresses.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaAddresses.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Addresses") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("beta"), Service: "Addresses", } klog.V(5).Infof("GCEBetaAddresses.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaAddresses.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Beta.Addresses.Get(projectID, key.Region, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEBetaAddresses.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all Address objects. func (g *GCEBetaAddresses) List(ctx context.Context, region string, fl *filter.F) ([]*beta.Address, error) { klog.V(5).Infof("GCEBetaAddresses.List(%v, %v, %v) called", ctx, region, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Addresses") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("beta"), Service: "Addresses", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEBetaAddresses.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk) call := g.s.Beta.Addresses.List(projectID, region) if fl != filter.None { call.Filter(fl.String()) } var all []*beta.Address f := func(l *beta.AddressList) error { klog.V(5).Infof("GCEBetaAddresses.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEBetaAddresses.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEBetaAddresses.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEBetaAddresses.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert Address with key of value obj. func (g *GCEBetaAddresses) Insert(ctx context.Context, key *meta.Key, obj *beta.Address) error { klog.V(5).Infof("GCEBetaAddresses.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEBetaAddresses.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Addresses") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("beta"), Service: "Addresses", } klog.V(5).Infof("GCEBetaAddresses.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaAddresses.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Beta.Addresses.Insert(projectID, key.Region, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaAddresses.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaAddresses.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the Address referenced by key. func (g *GCEBetaAddresses) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEBetaAddresses.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaAddresses.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Addresses") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("beta"), Service: "Addresses", } klog.V(5).Infof("GCEBetaAddresses.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaAddresses.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.Addresses.Delete(projectID, key.Region, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaAddresses.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaAddresses.Delete(%v, %v) = %v", ctx, key, err) return err } // AggregatedList lists all resources of the given type across all locations. func (g *GCEBetaAddresses) AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*beta.Address, error) { klog.V(5).Infof("GCEBetaAddresses.AggregatedList(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Addresses") rk := &RateLimitKey{ ProjectID: projectID, Operation: "AggregatedList", Version: meta.Version("beta"), Service: "Addresses", } klog.V(5).Infof("GCEBetaAddresses.AggregatedList(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(5).Infof("GCEBetaAddresses.AggregatedList(%v, %v): RateLimiter error: %v", ctx, fl, err) return nil, err } call := g.s.Beta.Addresses.AggregatedList(projectID) call.Context(ctx) if fl != filter.None { call.Filter(fl.String()) } all := map[string][]*beta.Address{} f := func(l *beta.AddressAggregatedList) error { for k, v := range l.Items { klog.V(5).Infof("GCEBetaAddresses.AggregatedList(%v, %v): page[%v]%+v", ctx, fl, k, v) all[k] = append(all[k], v.Addresses...) } return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEBetaAddresses.AggregatedList(%v, %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEBetaAddresses.AggregatedList(%v, %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEBetaAddresses.AggregatedList(%v, %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // AlphaGlobalAddresses is an interface that allows for mocking of GlobalAddresses. type AlphaGlobalAddresses interface { Get(ctx context.Context, key *meta.Key) (*alpha.Address, error) List(ctx context.Context, fl *filter.F) ([]*alpha.Address, error) Insert(ctx context.Context, key *meta.Key, obj *alpha.Address) error Delete(ctx context.Context, key *meta.Key) error } // NewMockAlphaGlobalAddresses returns a new mock for GlobalAddresses. func NewMockAlphaGlobalAddresses(pr ProjectRouter, objs map[meta.Key]*MockGlobalAddressesObj) *MockAlphaGlobalAddresses { mock := &MockAlphaGlobalAddresses{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockAlphaGlobalAddresses is the mock for GlobalAddresses. type MockAlphaGlobalAddresses struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockGlobalAddressesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaGlobalAddresses) (bool, *alpha.Address, error) ListHook func(ctx context.Context, fl *filter.F, m *MockAlphaGlobalAddresses) (bool, []*alpha.Address, error) InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.Address, m *MockAlphaGlobalAddresses) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaGlobalAddresses) (bool, error) // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockAlphaGlobalAddresses) Get(ctx context.Context, key *meta.Key) (*alpha.Address, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaGlobalAddresses.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockAlphaGlobalAddresses.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToAlpha() klog.V(5).Infof("MockAlphaGlobalAddresses.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaGlobalAddresses %v not found", key), } klog.V(5).Infof("MockAlphaGlobalAddresses.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockAlphaGlobalAddresses) List(ctx context.Context, fl *filter.F) ([]*alpha.Address, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockAlphaGlobalAddresses.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockAlphaGlobalAddresses.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*alpha.Address for _, obj := range m.Objects { if !fl.Match(obj.ToAlpha()) { continue } objs = append(objs, obj.ToAlpha()) } klog.V(5).Infof("MockAlphaGlobalAddresses.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockAlphaGlobalAddresses) Insert(ctx context.Context, key *meta.Key, obj *alpha.Address) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockAlphaGlobalAddresses.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockAlphaGlobalAddresses.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockAlphaGlobalAddresses %v exists", key), } klog.V(5).Infof("MockAlphaGlobalAddresses.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "addresses") obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "addresses", key) m.Objects[*key] = &MockGlobalAddressesObj{obj} klog.V(5).Infof("MockAlphaGlobalAddresses.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockAlphaGlobalAddresses) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaGlobalAddresses.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockAlphaGlobalAddresses.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaGlobalAddresses %v not found", key), } klog.V(5).Infof("MockAlphaGlobalAddresses.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockAlphaGlobalAddresses.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockAlphaGlobalAddresses) Obj(o *alpha.Address) *MockGlobalAddressesObj { return &MockGlobalAddressesObj{o} } // GCEAlphaGlobalAddresses is a simplifying adapter for the GCE GlobalAddresses. type GCEAlphaGlobalAddresses struct { s *Service } // Get the Address named by key. func (g *GCEAlphaGlobalAddresses) Get(ctx context.Context, key *meta.Key) (*alpha.Address, error) { klog.V(5).Infof("GCEAlphaGlobalAddresses.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaGlobalAddresses.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "GlobalAddresses") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("alpha"), Service: "GlobalAddresses", } klog.V(5).Infof("GCEAlphaGlobalAddresses.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaGlobalAddresses.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Alpha.GlobalAddresses.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEAlphaGlobalAddresses.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all Address objects. func (g *GCEAlphaGlobalAddresses) List(ctx context.Context, fl *filter.F) ([]*alpha.Address, error) { klog.V(5).Infof("GCEAlphaGlobalAddresses.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "GlobalAddresses") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("alpha"), Service: "GlobalAddresses", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEAlphaGlobalAddresses.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.Alpha.GlobalAddresses.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*alpha.Address f := func(l *alpha.AddressList) error { klog.V(5).Infof("GCEAlphaGlobalAddresses.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEAlphaGlobalAddresses.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEAlphaGlobalAddresses.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEAlphaGlobalAddresses.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert Address with key of value obj. func (g *GCEAlphaGlobalAddresses) Insert(ctx context.Context, key *meta.Key, obj *alpha.Address) error { klog.V(5).Infof("GCEAlphaGlobalAddresses.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEAlphaGlobalAddresses.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "GlobalAddresses") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("alpha"), Service: "GlobalAddresses", } klog.V(5).Infof("GCEAlphaGlobalAddresses.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaGlobalAddresses.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Alpha.GlobalAddresses.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaGlobalAddresses.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaGlobalAddresses.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the Address referenced by key. func (g *GCEAlphaGlobalAddresses) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEAlphaGlobalAddresses.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaGlobalAddresses.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "GlobalAddresses") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("alpha"), Service: "GlobalAddresses", } klog.V(5).Infof("GCEAlphaGlobalAddresses.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaGlobalAddresses.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.GlobalAddresses.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaGlobalAddresses.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaGlobalAddresses.Delete(%v, %v) = %v", ctx, key, err) return err } // GlobalAddresses is an interface that allows for mocking of GlobalAddresses. type GlobalAddresses interface { Get(ctx context.Context, key *meta.Key) (*ga.Address, error) List(ctx context.Context, fl *filter.F) ([]*ga.Address, error) Insert(ctx context.Context, key *meta.Key, obj *ga.Address) error Delete(ctx context.Context, key *meta.Key) error } // NewMockGlobalAddresses returns a new mock for GlobalAddresses. func NewMockGlobalAddresses(pr ProjectRouter, objs map[meta.Key]*MockGlobalAddressesObj) *MockGlobalAddresses { mock := &MockGlobalAddresses{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockGlobalAddresses is the mock for GlobalAddresses. type MockGlobalAddresses struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockGlobalAddressesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockGlobalAddresses) (bool, *ga.Address, error) ListHook func(ctx context.Context, fl *filter.F, m *MockGlobalAddresses) (bool, []*ga.Address, error) InsertHook func(ctx context.Context, key *meta.Key, obj *ga.Address, m *MockGlobalAddresses) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockGlobalAddresses) (bool, error) // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockGlobalAddresses) Get(ctx context.Context, key *meta.Key) (*ga.Address, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockGlobalAddresses.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockGlobalAddresses.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToGA() klog.V(5).Infof("MockGlobalAddresses.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockGlobalAddresses %v not found", key), } klog.V(5).Infof("MockGlobalAddresses.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockGlobalAddresses) List(ctx context.Context, fl *filter.F) ([]*ga.Address, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockGlobalAddresses.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockGlobalAddresses.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*ga.Address for _, obj := range m.Objects { if !fl.Match(obj.ToGA()) { continue } objs = append(objs, obj.ToGA()) } klog.V(5).Infof("MockGlobalAddresses.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockGlobalAddresses) Insert(ctx context.Context, key *meta.Key, obj *ga.Address) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockGlobalAddresses.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockGlobalAddresses.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockGlobalAddresses %v exists", key), } klog.V(5).Infof("MockGlobalAddresses.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "ga", "addresses") obj.SelfLink = SelfLink(meta.VersionGA, projectID, "addresses", key) m.Objects[*key] = &MockGlobalAddressesObj{obj} klog.V(5).Infof("MockGlobalAddresses.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockGlobalAddresses) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockGlobalAddresses.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockGlobalAddresses.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockGlobalAddresses %v not found", key), } klog.V(5).Infof("MockGlobalAddresses.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockGlobalAddresses.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockGlobalAddresses) Obj(o *ga.Address) *MockGlobalAddressesObj { return &MockGlobalAddressesObj{o} } // GCEGlobalAddresses is a simplifying adapter for the GCE GlobalAddresses. type GCEGlobalAddresses struct { s *Service } // Get the Address named by key. func (g *GCEGlobalAddresses) Get(ctx context.Context, key *meta.Key) (*ga.Address, error) { klog.V(5).Infof("GCEGlobalAddresses.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEGlobalAddresses.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "GlobalAddresses") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("ga"), Service: "GlobalAddresses", } klog.V(5).Infof("GCEGlobalAddresses.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEGlobalAddresses.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.GlobalAddresses.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEGlobalAddresses.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all Address objects. func (g *GCEGlobalAddresses) List(ctx context.Context, fl *filter.F) ([]*ga.Address, error) { klog.V(5).Infof("GCEGlobalAddresses.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "GlobalAddresses") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("ga"), Service: "GlobalAddresses", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEGlobalAddresses.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.GA.GlobalAddresses.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*ga.Address f := func(l *ga.AddressList) error { klog.V(5).Infof("GCEGlobalAddresses.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEGlobalAddresses.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEGlobalAddresses.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEGlobalAddresses.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert Address with key of value obj. func (g *GCEGlobalAddresses) Insert(ctx context.Context, key *meta.Key, obj *ga.Address) error { klog.V(5).Infof("GCEGlobalAddresses.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEGlobalAddresses.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "GlobalAddresses") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("ga"), Service: "GlobalAddresses", } klog.V(5).Infof("GCEGlobalAddresses.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEGlobalAddresses.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.GA.GlobalAddresses.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEGlobalAddresses.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEGlobalAddresses.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the Address referenced by key. func (g *GCEGlobalAddresses) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEGlobalAddresses.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEGlobalAddresses.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "GlobalAddresses") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("ga"), Service: "GlobalAddresses", } klog.V(5).Infof("GCEGlobalAddresses.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEGlobalAddresses.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.GlobalAddresses.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEGlobalAddresses.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEGlobalAddresses.Delete(%v, %v) = %v", ctx, key, err) return err } // BackendServices is an interface that allows for mocking of BackendServices. type BackendServices interface { Get(ctx context.Context, key *meta.Key) (*ga.BackendService, error) List(ctx context.Context, fl *filter.F) ([]*ga.BackendService, error) Insert(ctx context.Context, key *meta.Key, obj *ga.BackendService) error Delete(ctx context.Context, key *meta.Key) error GetHealth(context.Context, *meta.Key, *ga.ResourceGroupReference) (*ga.BackendServiceGroupHealth, error) Patch(context.Context, *meta.Key, *ga.BackendService) error Update(context.Context, *meta.Key, *ga.BackendService) error } // NewMockBackendServices returns a new mock for BackendServices. func NewMockBackendServices(pr ProjectRouter, objs map[meta.Key]*MockBackendServicesObj) *MockBackendServices { mock := &MockBackendServices{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockBackendServices is the mock for BackendServices. type MockBackendServices struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockBackendServicesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockBackendServices) (bool, *ga.BackendService, error) ListHook func(ctx context.Context, fl *filter.F, m *MockBackendServices) (bool, []*ga.BackendService, error) InsertHook func(ctx context.Context, key *meta.Key, obj *ga.BackendService, m *MockBackendServices) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockBackendServices) (bool, error) GetHealthHook func(context.Context, *meta.Key, *ga.ResourceGroupReference, *MockBackendServices) (*ga.BackendServiceGroupHealth, error) PatchHook func(context.Context, *meta.Key, *ga.BackendService, *MockBackendServices) error UpdateHook func(context.Context, *meta.Key, *ga.BackendService, *MockBackendServices) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockBackendServices) Get(ctx context.Context, key *meta.Key) (*ga.BackendService, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockBackendServices.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockBackendServices.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToGA() klog.V(5).Infof("MockBackendServices.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBackendServices %v not found", key), } klog.V(5).Infof("MockBackendServices.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockBackendServices) List(ctx context.Context, fl *filter.F) ([]*ga.BackendService, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockBackendServices.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockBackendServices.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*ga.BackendService for _, obj := range m.Objects { if !fl.Match(obj.ToGA()) { continue } objs = append(objs, obj.ToGA()) } klog.V(5).Infof("MockBackendServices.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockBackendServices) Insert(ctx context.Context, key *meta.Key, obj *ga.BackendService) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockBackendServices %v exists", key), } klog.V(5).Infof("MockBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "ga", "backendServices") obj.SelfLink = SelfLink(meta.VersionGA, projectID, "backendServices", key) m.Objects[*key] = &MockBackendServicesObj{obj} klog.V(5).Infof("MockBackendServices.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockBackendServices) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockBackendServices.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockBackendServices.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBackendServices %v not found", key), } klog.V(5).Infof("MockBackendServices.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockBackendServices.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockBackendServices) Obj(o *ga.BackendService) *MockBackendServicesObj { return &MockBackendServicesObj{o} } // GetHealth is a mock for the corresponding method. func (m *MockBackendServices) GetHealth(ctx context.Context, key *meta.Key, arg0 *ga.ResourceGroupReference) (*ga.BackendServiceGroupHealth, error) { if m.GetHealthHook != nil { return m.GetHealthHook(ctx, key, arg0, m) } return nil, fmt.Errorf("GetHealthHook must be set") } // Patch is a mock for the corresponding method. func (m *MockBackendServices) Patch(ctx context.Context, key *meta.Key, arg0 *ga.BackendService) error { if m.PatchHook != nil { return m.PatchHook(ctx, key, arg0, m) } return nil } // Update is a mock for the corresponding method. func (m *MockBackendServices) Update(ctx context.Context, key *meta.Key, arg0 *ga.BackendService) error { if m.UpdateHook != nil { return m.UpdateHook(ctx, key, arg0, m) } return nil } // GCEBackendServices is a simplifying adapter for the GCE BackendServices. type GCEBackendServices struct { s *Service } // Get the BackendService named by key. func (g *GCEBackendServices) Get(ctx context.Context, key *meta.Key) (*ga.BackendService, error) { klog.V(5).Infof("GCEBackendServices.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBackendServices.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "BackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("ga"), Service: "BackendServices", } klog.V(5).Infof("GCEBackendServices.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBackendServices.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.BackendServices.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEBackendServices.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all BackendService objects. func (g *GCEBackendServices) List(ctx context.Context, fl *filter.F) ([]*ga.BackendService, error) { klog.V(5).Infof("GCEBackendServices.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "BackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("ga"), Service: "BackendServices", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEBackendServices.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.GA.BackendServices.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*ga.BackendService f := func(l *ga.BackendServiceList) error { klog.V(5).Infof("GCEBackendServices.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEBackendServices.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEBackendServices.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEBackendServices.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert BackendService with key of value obj. func (g *GCEBackendServices) Insert(ctx context.Context, key *meta.Key, obj *ga.BackendService) error { klog.V(5).Infof("GCEBackendServices.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEBackendServices.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "BackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("ga"), Service: "BackendServices", } klog.V(5).Infof("GCEBackendServices.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBackendServices.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.GA.BackendServices.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBackendServices.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBackendServices.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the BackendService referenced by key. func (g *GCEBackendServices) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEBackendServices.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBackendServices.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "BackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("ga"), Service: "BackendServices", } klog.V(5).Infof("GCEBackendServices.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBackendServices.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.BackendServices.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBackendServices.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBackendServices.Delete(%v, %v) = %v", ctx, key, err) return err } // GetHealth is a method on GCEBackendServices. func (g *GCEBackendServices) GetHealth(ctx context.Context, key *meta.Key, arg0 *ga.ResourceGroupReference) (*ga.BackendServiceGroupHealth, error) { klog.V(5).Infof("GCEBackendServices.GetHealth(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBackendServices.GetHealth(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "BackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "GetHealth", Version: meta.Version("ga"), Service: "BackendServices", } klog.V(5).Infof("GCEBackendServices.GetHealth(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBackendServices.GetHealth(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.BackendServices.GetHealth(projectID, key.Name, arg0) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEBackendServices.GetHealth(%v, %v, ...) = %+v, %v", ctx, key, v, err) return v, err } // Patch is a method on GCEBackendServices. func (g *GCEBackendServices) Patch(ctx context.Context, key *meta.Key, arg0 *ga.BackendService) error { klog.V(5).Infof("GCEBackendServices.Patch(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBackendServices.Patch(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "BackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Patch", Version: meta.Version("ga"), Service: "BackendServices", } klog.V(5).Infof("GCEBackendServices.Patch(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBackendServices.Patch(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.BackendServices.Patch(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBackendServices.Patch(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBackendServices.Patch(%v, %v, ...) = %+v", ctx, key, err) return err } // Update is a method on GCEBackendServices. func (g *GCEBackendServices) Update(ctx context.Context, key *meta.Key, arg0 *ga.BackendService) error { klog.V(5).Infof("GCEBackendServices.Update(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBackendServices.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "BackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Update", Version: meta.Version("ga"), Service: "BackendServices", } klog.V(5).Infof("GCEBackendServices.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBackendServices.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.BackendServices.Update(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBackendServices.Update(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBackendServices.Update(%v, %v, ...) = %+v", ctx, key, err) return err } // BetaBackendServices is an interface that allows for mocking of BackendServices. type BetaBackendServices interface { Get(ctx context.Context, key *meta.Key) (*beta.BackendService, error) List(ctx context.Context, fl *filter.F) ([]*beta.BackendService, error) Insert(ctx context.Context, key *meta.Key, obj *beta.BackendService) error Delete(ctx context.Context, key *meta.Key) error SetSecurityPolicy(context.Context, *meta.Key, *beta.SecurityPolicyReference) error Update(context.Context, *meta.Key, *beta.BackendService) error } // NewMockBetaBackendServices returns a new mock for BackendServices. func NewMockBetaBackendServices(pr ProjectRouter, objs map[meta.Key]*MockBackendServicesObj) *MockBetaBackendServices { mock := &MockBetaBackendServices{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockBetaBackendServices is the mock for BackendServices. type MockBetaBackendServices struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockBackendServicesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaBackendServices) (bool, *beta.BackendService, error) ListHook func(ctx context.Context, fl *filter.F, m *MockBetaBackendServices) (bool, []*beta.BackendService, error) InsertHook func(ctx context.Context, key *meta.Key, obj *beta.BackendService, m *MockBetaBackendServices) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaBackendServices) (bool, error) SetSecurityPolicyHook func(context.Context, *meta.Key, *beta.SecurityPolicyReference, *MockBetaBackendServices) error UpdateHook func(context.Context, *meta.Key, *beta.BackendService, *MockBetaBackendServices) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockBetaBackendServices) Get(ctx context.Context, key *meta.Key) (*beta.BackendService, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaBackendServices.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockBetaBackendServices.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToBeta() klog.V(5).Infof("MockBetaBackendServices.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaBackendServices %v not found", key), } klog.V(5).Infof("MockBetaBackendServices.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockBetaBackendServices) List(ctx context.Context, fl *filter.F) ([]*beta.BackendService, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockBetaBackendServices.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockBetaBackendServices.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*beta.BackendService for _, obj := range m.Objects { if !fl.Match(obj.ToBeta()) { continue } objs = append(objs, obj.ToBeta()) } klog.V(5).Infof("MockBetaBackendServices.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockBetaBackendServices) Insert(ctx context.Context, key *meta.Key, obj *beta.BackendService) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockBetaBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockBetaBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockBetaBackendServices %v exists", key), } klog.V(5).Infof("MockBetaBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "beta", "backendServices") obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "backendServices", key) m.Objects[*key] = &MockBackendServicesObj{obj} klog.V(5).Infof("MockBetaBackendServices.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockBetaBackendServices) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaBackendServices.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockBetaBackendServices.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaBackendServices %v not found", key), } klog.V(5).Infof("MockBetaBackendServices.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockBetaBackendServices.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockBetaBackendServices) Obj(o *beta.BackendService) *MockBackendServicesObj { return &MockBackendServicesObj{o} } // SetSecurityPolicy is a mock for the corresponding method. func (m *MockBetaBackendServices) SetSecurityPolicy(ctx context.Context, key *meta.Key, arg0 *beta.SecurityPolicyReference) error { if m.SetSecurityPolicyHook != nil { return m.SetSecurityPolicyHook(ctx, key, arg0, m) } return nil } // Update is a mock for the corresponding method. func (m *MockBetaBackendServices) Update(ctx context.Context, key *meta.Key, arg0 *beta.BackendService) error { if m.UpdateHook != nil { return m.UpdateHook(ctx, key, arg0, m) } return nil } // GCEBetaBackendServices is a simplifying adapter for the GCE BackendServices. type GCEBetaBackendServices struct { s *Service } // Get the BackendService named by key. func (g *GCEBetaBackendServices) Get(ctx context.Context, key *meta.Key) (*beta.BackendService, error) { klog.V(5).Infof("GCEBetaBackendServices.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaBackendServices.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "BackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("beta"), Service: "BackendServices", } klog.V(5).Infof("GCEBetaBackendServices.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaBackendServices.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Beta.BackendServices.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEBetaBackendServices.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all BackendService objects. func (g *GCEBetaBackendServices) List(ctx context.Context, fl *filter.F) ([]*beta.BackendService, error) { klog.V(5).Infof("GCEBetaBackendServices.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "BackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("beta"), Service: "BackendServices", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEBetaBackendServices.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.Beta.BackendServices.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*beta.BackendService f := func(l *beta.BackendServiceList) error { klog.V(5).Infof("GCEBetaBackendServices.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEBetaBackendServices.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEBetaBackendServices.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEBetaBackendServices.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert BackendService with key of value obj. func (g *GCEBetaBackendServices) Insert(ctx context.Context, key *meta.Key, obj *beta.BackendService) error { klog.V(5).Infof("GCEBetaBackendServices.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEBetaBackendServices.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "BackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("beta"), Service: "BackendServices", } klog.V(5).Infof("GCEBetaBackendServices.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaBackendServices.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Beta.BackendServices.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaBackendServices.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaBackendServices.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the BackendService referenced by key. func (g *GCEBetaBackendServices) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEBetaBackendServices.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaBackendServices.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "BackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("beta"), Service: "BackendServices", } klog.V(5).Infof("GCEBetaBackendServices.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaBackendServices.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.BackendServices.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaBackendServices.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaBackendServices.Delete(%v, %v) = %v", ctx, key, err) return err } // SetSecurityPolicy is a method on GCEBetaBackendServices. func (g *GCEBetaBackendServices) SetSecurityPolicy(ctx context.Context, key *meta.Key, arg0 *beta.SecurityPolicyReference) error { klog.V(5).Infof("GCEBetaBackendServices.SetSecurityPolicy(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaBackendServices.SetSecurityPolicy(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "BackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "SetSecurityPolicy", Version: meta.Version("beta"), Service: "BackendServices", } klog.V(5).Infof("GCEBetaBackendServices.SetSecurityPolicy(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaBackendServices.SetSecurityPolicy(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.BackendServices.SetSecurityPolicy(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaBackendServices.SetSecurityPolicy(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaBackendServices.SetSecurityPolicy(%v, %v, ...) = %+v", ctx, key, err) return err } // Update is a method on GCEBetaBackendServices. func (g *GCEBetaBackendServices) Update(ctx context.Context, key *meta.Key, arg0 *beta.BackendService) error { klog.V(5).Infof("GCEBetaBackendServices.Update(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaBackendServices.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "BackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Update", Version: meta.Version("beta"), Service: "BackendServices", } klog.V(5).Infof("GCEBetaBackendServices.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaBackendServices.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.BackendServices.Update(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaBackendServices.Update(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaBackendServices.Update(%v, %v, ...) = %+v", ctx, key, err) return err } // AlphaBackendServices is an interface that allows for mocking of BackendServices. type AlphaBackendServices interface { Get(ctx context.Context, key *meta.Key) (*alpha.BackendService, error) List(ctx context.Context, fl *filter.F) ([]*alpha.BackendService, error) Insert(ctx context.Context, key *meta.Key, obj *alpha.BackendService) error Delete(ctx context.Context, key *meta.Key) error SetSecurityPolicy(context.Context, *meta.Key, *alpha.SecurityPolicyReference) error Update(context.Context, *meta.Key, *alpha.BackendService) error } // NewMockAlphaBackendServices returns a new mock for BackendServices. func NewMockAlphaBackendServices(pr ProjectRouter, objs map[meta.Key]*MockBackendServicesObj) *MockAlphaBackendServices { mock := &MockAlphaBackendServices{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockAlphaBackendServices is the mock for BackendServices. type MockAlphaBackendServices struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockBackendServicesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaBackendServices) (bool, *alpha.BackendService, error) ListHook func(ctx context.Context, fl *filter.F, m *MockAlphaBackendServices) (bool, []*alpha.BackendService, error) InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.BackendService, m *MockAlphaBackendServices) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaBackendServices) (bool, error) SetSecurityPolicyHook func(context.Context, *meta.Key, *alpha.SecurityPolicyReference, *MockAlphaBackendServices) error UpdateHook func(context.Context, *meta.Key, *alpha.BackendService, *MockAlphaBackendServices) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockAlphaBackendServices) Get(ctx context.Context, key *meta.Key) (*alpha.BackendService, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaBackendServices.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockAlphaBackendServices.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToAlpha() klog.V(5).Infof("MockAlphaBackendServices.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaBackendServices %v not found", key), } klog.V(5).Infof("MockAlphaBackendServices.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockAlphaBackendServices) List(ctx context.Context, fl *filter.F) ([]*alpha.BackendService, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockAlphaBackendServices.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockAlphaBackendServices.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*alpha.BackendService for _, obj := range m.Objects { if !fl.Match(obj.ToAlpha()) { continue } objs = append(objs, obj.ToAlpha()) } klog.V(5).Infof("MockAlphaBackendServices.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockAlphaBackendServices) Insert(ctx context.Context, key *meta.Key, obj *alpha.BackendService) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockAlphaBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockAlphaBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockAlphaBackendServices %v exists", key), } klog.V(5).Infof("MockAlphaBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "backendServices") obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "backendServices", key) m.Objects[*key] = &MockBackendServicesObj{obj} klog.V(5).Infof("MockAlphaBackendServices.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockAlphaBackendServices) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaBackendServices.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockAlphaBackendServices.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaBackendServices %v not found", key), } klog.V(5).Infof("MockAlphaBackendServices.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockAlphaBackendServices.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockAlphaBackendServices) Obj(o *alpha.BackendService) *MockBackendServicesObj { return &MockBackendServicesObj{o} } // SetSecurityPolicy is a mock for the corresponding method. func (m *MockAlphaBackendServices) SetSecurityPolicy(ctx context.Context, key *meta.Key, arg0 *alpha.SecurityPolicyReference) error { if m.SetSecurityPolicyHook != nil { return m.SetSecurityPolicyHook(ctx, key, arg0, m) } return nil } // Update is a mock for the corresponding method. func (m *MockAlphaBackendServices) Update(ctx context.Context, key *meta.Key, arg0 *alpha.BackendService) error { if m.UpdateHook != nil { return m.UpdateHook(ctx, key, arg0, m) } return nil } // GCEAlphaBackendServices is a simplifying adapter for the GCE BackendServices. type GCEAlphaBackendServices struct { s *Service } // Get the BackendService named by key. func (g *GCEAlphaBackendServices) Get(ctx context.Context, key *meta.Key) (*alpha.BackendService, error) { klog.V(5).Infof("GCEAlphaBackendServices.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaBackendServices.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "BackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("alpha"), Service: "BackendServices", } klog.V(5).Infof("GCEAlphaBackendServices.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaBackendServices.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Alpha.BackendServices.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEAlphaBackendServices.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all BackendService objects. func (g *GCEAlphaBackendServices) List(ctx context.Context, fl *filter.F) ([]*alpha.BackendService, error) { klog.V(5).Infof("GCEAlphaBackendServices.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "BackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("alpha"), Service: "BackendServices", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEAlphaBackendServices.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.Alpha.BackendServices.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*alpha.BackendService f := func(l *alpha.BackendServiceList) error { klog.V(5).Infof("GCEAlphaBackendServices.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEAlphaBackendServices.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEAlphaBackendServices.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEAlphaBackendServices.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert BackendService with key of value obj. func (g *GCEAlphaBackendServices) Insert(ctx context.Context, key *meta.Key, obj *alpha.BackendService) error { klog.V(5).Infof("GCEAlphaBackendServices.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEAlphaBackendServices.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "BackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("alpha"), Service: "BackendServices", } klog.V(5).Infof("GCEAlphaBackendServices.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaBackendServices.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Alpha.BackendServices.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaBackendServices.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaBackendServices.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the BackendService referenced by key. func (g *GCEAlphaBackendServices) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEAlphaBackendServices.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaBackendServices.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "BackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("alpha"), Service: "BackendServices", } klog.V(5).Infof("GCEAlphaBackendServices.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaBackendServices.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.BackendServices.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaBackendServices.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaBackendServices.Delete(%v, %v) = %v", ctx, key, err) return err } // SetSecurityPolicy is a method on GCEAlphaBackendServices. func (g *GCEAlphaBackendServices) SetSecurityPolicy(ctx context.Context, key *meta.Key, arg0 *alpha.SecurityPolicyReference) error { klog.V(5).Infof("GCEAlphaBackendServices.SetSecurityPolicy(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaBackendServices.SetSecurityPolicy(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "BackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "SetSecurityPolicy", Version: meta.Version("alpha"), Service: "BackendServices", } klog.V(5).Infof("GCEAlphaBackendServices.SetSecurityPolicy(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaBackendServices.SetSecurityPolicy(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.BackendServices.SetSecurityPolicy(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaBackendServices.SetSecurityPolicy(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaBackendServices.SetSecurityPolicy(%v, %v, ...) = %+v", ctx, key, err) return err } // Update is a method on GCEAlphaBackendServices. func (g *GCEAlphaBackendServices) Update(ctx context.Context, key *meta.Key, arg0 *alpha.BackendService) error { klog.V(5).Infof("GCEAlphaBackendServices.Update(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaBackendServices.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "BackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Update", Version: meta.Version("alpha"), Service: "BackendServices", } klog.V(5).Infof("GCEAlphaBackendServices.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaBackendServices.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.BackendServices.Update(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaBackendServices.Update(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaBackendServices.Update(%v, %v, ...) = %+v", ctx, key, err) return err } // RegionBackendServices is an interface that allows for mocking of RegionBackendServices. type RegionBackendServices interface { Get(ctx context.Context, key *meta.Key) (*ga.BackendService, error) List(ctx context.Context, region string, fl *filter.F) ([]*ga.BackendService, error) Insert(ctx context.Context, key *meta.Key, obj *ga.BackendService) error Delete(ctx context.Context, key *meta.Key) error GetHealth(context.Context, *meta.Key, *ga.ResourceGroupReference) (*ga.BackendServiceGroupHealth, error) Update(context.Context, *meta.Key, *ga.BackendService) error } // NewMockRegionBackendServices returns a new mock for RegionBackendServices. func NewMockRegionBackendServices(pr ProjectRouter, objs map[meta.Key]*MockRegionBackendServicesObj) *MockRegionBackendServices { mock := &MockRegionBackendServices{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockRegionBackendServices is the mock for RegionBackendServices. type MockRegionBackendServices struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockRegionBackendServicesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockRegionBackendServices) (bool, *ga.BackendService, error) ListHook func(ctx context.Context, region string, fl *filter.F, m *MockRegionBackendServices) (bool, []*ga.BackendService, error) InsertHook func(ctx context.Context, key *meta.Key, obj *ga.BackendService, m *MockRegionBackendServices) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockRegionBackendServices) (bool, error) GetHealthHook func(context.Context, *meta.Key, *ga.ResourceGroupReference, *MockRegionBackendServices) (*ga.BackendServiceGroupHealth, error) UpdateHook func(context.Context, *meta.Key, *ga.BackendService, *MockRegionBackendServices) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockRegionBackendServices) Get(ctx context.Context, key *meta.Key) (*ga.BackendService, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockRegionBackendServices.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockRegionBackendServices.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToGA() klog.V(5).Infof("MockRegionBackendServices.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockRegionBackendServices %v not found", key), } klog.V(5).Infof("MockRegionBackendServices.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given region. func (m *MockRegionBackendServices) List(ctx context.Context, region string, fl *filter.F) ([]*ga.BackendService, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept { klog.V(5).Infof("MockRegionBackendServices.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockRegionBackendServices.List(%v, %q, %v) = nil, %v", ctx, region, fl, err) return nil, *m.ListError } var objs []*ga.BackendService for key, obj := range m.Objects { if key.Region != region { continue } if !fl.Match(obj.ToGA()) { continue } objs = append(objs, obj.ToGA()) } klog.V(5).Infof("MockRegionBackendServices.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockRegionBackendServices) Insert(ctx context.Context, key *meta.Key, obj *ga.BackendService) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockRegionBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockRegionBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockRegionBackendServices %v exists", key), } klog.V(5).Infof("MockRegionBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "ga", "backendServices") obj.SelfLink = SelfLink(meta.VersionGA, projectID, "backendServices", key) m.Objects[*key] = &MockRegionBackendServicesObj{obj} klog.V(5).Infof("MockRegionBackendServices.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockRegionBackendServices) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockRegionBackendServices.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockRegionBackendServices.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockRegionBackendServices %v not found", key), } klog.V(5).Infof("MockRegionBackendServices.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockRegionBackendServices.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockRegionBackendServices) Obj(o *ga.BackendService) *MockRegionBackendServicesObj { return &MockRegionBackendServicesObj{o} } // GetHealth is a mock for the corresponding method. func (m *MockRegionBackendServices) GetHealth(ctx context.Context, key *meta.Key, arg0 *ga.ResourceGroupReference) (*ga.BackendServiceGroupHealth, error) { if m.GetHealthHook != nil { return m.GetHealthHook(ctx, key, arg0, m) } return nil, fmt.Errorf("GetHealthHook must be set") } // Update is a mock for the corresponding method. func (m *MockRegionBackendServices) Update(ctx context.Context, key *meta.Key, arg0 *ga.BackendService) error { if m.UpdateHook != nil { return m.UpdateHook(ctx, key, arg0, m) } return nil } // GCERegionBackendServices is a simplifying adapter for the GCE RegionBackendServices. type GCERegionBackendServices struct { s *Service } // Get the BackendService named by key. func (g *GCERegionBackendServices) Get(ctx context.Context, key *meta.Key) (*ga.BackendService, error) { klog.V(5).Infof("GCERegionBackendServices.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCERegionBackendServices.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionBackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("ga"), Service: "RegionBackendServices", } klog.V(5).Infof("GCERegionBackendServices.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERegionBackendServices.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.RegionBackendServices.Get(projectID, key.Region, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCERegionBackendServices.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all BackendService objects. func (g *GCERegionBackendServices) List(ctx context.Context, region string, fl *filter.F) ([]*ga.BackendService, error) { klog.V(5).Infof("GCERegionBackendServices.List(%v, %v, %v) called", ctx, region, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionBackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("ga"), Service: "RegionBackendServices", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCERegionBackendServices.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk) call := g.s.GA.RegionBackendServices.List(projectID, region) if fl != filter.None { call.Filter(fl.String()) } var all []*ga.BackendService f := func(l *ga.BackendServiceList) error { klog.V(5).Infof("GCERegionBackendServices.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCERegionBackendServices.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCERegionBackendServices.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCERegionBackendServices.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert BackendService with key of value obj. func (g *GCERegionBackendServices) Insert(ctx context.Context, key *meta.Key, obj *ga.BackendService) error { klog.V(5).Infof("GCERegionBackendServices.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCERegionBackendServices.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionBackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("ga"), Service: "RegionBackendServices", } klog.V(5).Infof("GCERegionBackendServices.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERegionBackendServices.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.GA.RegionBackendServices.Insert(projectID, key.Region, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCERegionBackendServices.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCERegionBackendServices.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the BackendService referenced by key. func (g *GCERegionBackendServices) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCERegionBackendServices.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCERegionBackendServices.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionBackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("ga"), Service: "RegionBackendServices", } klog.V(5).Infof("GCERegionBackendServices.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERegionBackendServices.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.RegionBackendServices.Delete(projectID, key.Region, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCERegionBackendServices.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCERegionBackendServices.Delete(%v, %v) = %v", ctx, key, err) return err } // GetHealth is a method on GCERegionBackendServices. func (g *GCERegionBackendServices) GetHealth(ctx context.Context, key *meta.Key, arg0 *ga.ResourceGroupReference) (*ga.BackendServiceGroupHealth, error) { klog.V(5).Infof("GCERegionBackendServices.GetHealth(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCERegionBackendServices.GetHealth(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionBackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "GetHealth", Version: meta.Version("ga"), Service: "RegionBackendServices", } klog.V(5).Infof("GCERegionBackendServices.GetHealth(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERegionBackendServices.GetHealth(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.RegionBackendServices.GetHealth(projectID, key.Region, key.Name, arg0) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCERegionBackendServices.GetHealth(%v, %v, ...) = %+v, %v", ctx, key, v, err) return v, err } // Update is a method on GCERegionBackendServices. func (g *GCERegionBackendServices) Update(ctx context.Context, key *meta.Key, arg0 *ga.BackendService) error { klog.V(5).Infof("GCERegionBackendServices.Update(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCERegionBackendServices.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionBackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Update", Version: meta.Version("ga"), Service: "RegionBackendServices", } klog.V(5).Infof("GCERegionBackendServices.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERegionBackendServices.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.RegionBackendServices.Update(projectID, key.Region, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCERegionBackendServices.Update(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCERegionBackendServices.Update(%v, %v, ...) = %+v", ctx, key, err) return err } // AlphaRegionBackendServices is an interface that allows for mocking of RegionBackendServices. type AlphaRegionBackendServices interface { Get(ctx context.Context, key *meta.Key) (*alpha.BackendService, error) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.BackendService, error) Insert(ctx context.Context, key *meta.Key, obj *alpha.BackendService) error Delete(ctx context.Context, key *meta.Key) error GetHealth(context.Context, *meta.Key, *alpha.ResourceGroupReference) (*alpha.BackendServiceGroupHealth, error) Update(context.Context, *meta.Key, *alpha.BackendService) error } // NewMockAlphaRegionBackendServices returns a new mock for RegionBackendServices. func NewMockAlphaRegionBackendServices(pr ProjectRouter, objs map[meta.Key]*MockRegionBackendServicesObj) *MockAlphaRegionBackendServices { mock := &MockAlphaRegionBackendServices{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockAlphaRegionBackendServices is the mock for RegionBackendServices. type MockAlphaRegionBackendServices struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockRegionBackendServicesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaRegionBackendServices) (bool, *alpha.BackendService, error) ListHook func(ctx context.Context, region string, fl *filter.F, m *MockAlphaRegionBackendServices) (bool, []*alpha.BackendService, error) InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.BackendService, m *MockAlphaRegionBackendServices) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaRegionBackendServices) (bool, error) GetHealthHook func(context.Context, *meta.Key, *alpha.ResourceGroupReference, *MockAlphaRegionBackendServices) (*alpha.BackendServiceGroupHealth, error) UpdateHook func(context.Context, *meta.Key, *alpha.BackendService, *MockAlphaRegionBackendServices) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockAlphaRegionBackendServices) Get(ctx context.Context, key *meta.Key) (*alpha.BackendService, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaRegionBackendServices.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockAlphaRegionBackendServices.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToAlpha() klog.V(5).Infof("MockAlphaRegionBackendServices.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaRegionBackendServices %v not found", key), } klog.V(5).Infof("MockAlphaRegionBackendServices.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given region. func (m *MockAlphaRegionBackendServices) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.BackendService, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept { klog.V(5).Infof("MockAlphaRegionBackendServices.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockAlphaRegionBackendServices.List(%v, %q, %v) = nil, %v", ctx, region, fl, err) return nil, *m.ListError } var objs []*alpha.BackendService for key, obj := range m.Objects { if key.Region != region { continue } if !fl.Match(obj.ToAlpha()) { continue } objs = append(objs, obj.ToAlpha()) } klog.V(5).Infof("MockAlphaRegionBackendServices.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockAlphaRegionBackendServices) Insert(ctx context.Context, key *meta.Key, obj *alpha.BackendService) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockAlphaRegionBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockAlphaRegionBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockAlphaRegionBackendServices %v exists", key), } klog.V(5).Infof("MockAlphaRegionBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "backendServices") obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "backendServices", key) m.Objects[*key] = &MockRegionBackendServicesObj{obj} klog.V(5).Infof("MockAlphaRegionBackendServices.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockAlphaRegionBackendServices) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaRegionBackendServices.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockAlphaRegionBackendServices.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaRegionBackendServices %v not found", key), } klog.V(5).Infof("MockAlphaRegionBackendServices.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockAlphaRegionBackendServices.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockAlphaRegionBackendServices) Obj(o *alpha.BackendService) *MockRegionBackendServicesObj { return &MockRegionBackendServicesObj{o} } // GetHealth is a mock for the corresponding method. func (m *MockAlphaRegionBackendServices) GetHealth(ctx context.Context, key *meta.Key, arg0 *alpha.ResourceGroupReference) (*alpha.BackendServiceGroupHealth, error) { if m.GetHealthHook != nil { return m.GetHealthHook(ctx, key, arg0, m) } return nil, fmt.Errorf("GetHealthHook must be set") } // Update is a mock for the corresponding method. func (m *MockAlphaRegionBackendServices) Update(ctx context.Context, key *meta.Key, arg0 *alpha.BackendService) error { if m.UpdateHook != nil { return m.UpdateHook(ctx, key, arg0, m) } return nil } // GCEAlphaRegionBackendServices is a simplifying adapter for the GCE RegionBackendServices. type GCEAlphaRegionBackendServices struct { s *Service } // Get the BackendService named by key. func (g *GCEAlphaRegionBackendServices) Get(ctx context.Context, key *meta.Key) (*alpha.BackendService, error) { klog.V(5).Infof("GCEAlphaRegionBackendServices.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaRegionBackendServices.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionBackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("alpha"), Service: "RegionBackendServices", } klog.V(5).Infof("GCEAlphaRegionBackendServices.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaRegionBackendServices.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Alpha.RegionBackendServices.Get(projectID, key.Region, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEAlphaRegionBackendServices.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all BackendService objects. func (g *GCEAlphaRegionBackendServices) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.BackendService, error) { klog.V(5).Infof("GCEAlphaRegionBackendServices.List(%v, %v, %v) called", ctx, region, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionBackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("alpha"), Service: "RegionBackendServices", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEAlphaRegionBackendServices.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk) call := g.s.Alpha.RegionBackendServices.List(projectID, region) if fl != filter.None { call.Filter(fl.String()) } var all []*alpha.BackendService f := func(l *alpha.BackendServiceList) error { klog.V(5).Infof("GCEAlphaRegionBackendServices.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEAlphaRegionBackendServices.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEAlphaRegionBackendServices.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEAlphaRegionBackendServices.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert BackendService with key of value obj. func (g *GCEAlphaRegionBackendServices) Insert(ctx context.Context, key *meta.Key, obj *alpha.BackendService) error { klog.V(5).Infof("GCEAlphaRegionBackendServices.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEAlphaRegionBackendServices.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionBackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("alpha"), Service: "RegionBackendServices", } klog.V(5).Infof("GCEAlphaRegionBackendServices.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaRegionBackendServices.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Alpha.RegionBackendServices.Insert(projectID, key.Region, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaRegionBackendServices.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaRegionBackendServices.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the BackendService referenced by key. func (g *GCEAlphaRegionBackendServices) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEAlphaRegionBackendServices.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaRegionBackendServices.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionBackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("alpha"), Service: "RegionBackendServices", } klog.V(5).Infof("GCEAlphaRegionBackendServices.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaRegionBackendServices.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.RegionBackendServices.Delete(projectID, key.Region, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaRegionBackendServices.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaRegionBackendServices.Delete(%v, %v) = %v", ctx, key, err) return err } // GetHealth is a method on GCEAlphaRegionBackendServices. func (g *GCEAlphaRegionBackendServices) GetHealth(ctx context.Context, key *meta.Key, arg0 *alpha.ResourceGroupReference) (*alpha.BackendServiceGroupHealth, error) { klog.V(5).Infof("GCEAlphaRegionBackendServices.GetHealth(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaRegionBackendServices.GetHealth(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionBackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "GetHealth", Version: meta.Version("alpha"), Service: "RegionBackendServices", } klog.V(5).Infof("GCEAlphaRegionBackendServices.GetHealth(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaRegionBackendServices.GetHealth(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Alpha.RegionBackendServices.GetHealth(projectID, key.Region, key.Name, arg0) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEAlphaRegionBackendServices.GetHealth(%v, %v, ...) = %+v, %v", ctx, key, v, err) return v, err } // Update is a method on GCEAlphaRegionBackendServices. func (g *GCEAlphaRegionBackendServices) Update(ctx context.Context, key *meta.Key, arg0 *alpha.BackendService) error { klog.V(5).Infof("GCEAlphaRegionBackendServices.Update(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaRegionBackendServices.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionBackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Update", Version: meta.Version("alpha"), Service: "RegionBackendServices", } klog.V(5).Infof("GCEAlphaRegionBackendServices.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaRegionBackendServices.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.RegionBackendServices.Update(projectID, key.Region, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaRegionBackendServices.Update(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaRegionBackendServices.Update(%v, %v, ...) = %+v", ctx, key, err) return err } // BetaRegionBackendServices is an interface that allows for mocking of RegionBackendServices. type BetaRegionBackendServices interface { Get(ctx context.Context, key *meta.Key) (*beta.BackendService, error) List(ctx context.Context, region string, fl *filter.F) ([]*beta.BackendService, error) Insert(ctx context.Context, key *meta.Key, obj *beta.BackendService) error Delete(ctx context.Context, key *meta.Key) error GetHealth(context.Context, *meta.Key, *beta.ResourceGroupReference) (*beta.BackendServiceGroupHealth, error) Update(context.Context, *meta.Key, *beta.BackendService) error } // NewMockBetaRegionBackendServices returns a new mock for RegionBackendServices. func NewMockBetaRegionBackendServices(pr ProjectRouter, objs map[meta.Key]*MockRegionBackendServicesObj) *MockBetaRegionBackendServices { mock := &MockBetaRegionBackendServices{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockBetaRegionBackendServices is the mock for RegionBackendServices. type MockBetaRegionBackendServices struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockRegionBackendServicesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaRegionBackendServices) (bool, *beta.BackendService, error) ListHook func(ctx context.Context, region string, fl *filter.F, m *MockBetaRegionBackendServices) (bool, []*beta.BackendService, error) InsertHook func(ctx context.Context, key *meta.Key, obj *beta.BackendService, m *MockBetaRegionBackendServices) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaRegionBackendServices) (bool, error) GetHealthHook func(context.Context, *meta.Key, *beta.ResourceGroupReference, *MockBetaRegionBackendServices) (*beta.BackendServiceGroupHealth, error) UpdateHook func(context.Context, *meta.Key, *beta.BackendService, *MockBetaRegionBackendServices) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockBetaRegionBackendServices) Get(ctx context.Context, key *meta.Key) (*beta.BackendService, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaRegionBackendServices.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockBetaRegionBackendServices.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToBeta() klog.V(5).Infof("MockBetaRegionBackendServices.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaRegionBackendServices %v not found", key), } klog.V(5).Infof("MockBetaRegionBackendServices.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given region. func (m *MockBetaRegionBackendServices) List(ctx context.Context, region string, fl *filter.F) ([]*beta.BackendService, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept { klog.V(5).Infof("MockBetaRegionBackendServices.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockBetaRegionBackendServices.List(%v, %q, %v) = nil, %v", ctx, region, fl, err) return nil, *m.ListError } var objs []*beta.BackendService for key, obj := range m.Objects { if key.Region != region { continue } if !fl.Match(obj.ToBeta()) { continue } objs = append(objs, obj.ToBeta()) } klog.V(5).Infof("MockBetaRegionBackendServices.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockBetaRegionBackendServices) Insert(ctx context.Context, key *meta.Key, obj *beta.BackendService) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockBetaRegionBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockBetaRegionBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockBetaRegionBackendServices %v exists", key), } klog.V(5).Infof("MockBetaRegionBackendServices.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "beta", "backendServices") obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "backendServices", key) m.Objects[*key] = &MockRegionBackendServicesObj{obj} klog.V(5).Infof("MockBetaRegionBackendServices.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockBetaRegionBackendServices) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaRegionBackendServices.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockBetaRegionBackendServices.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaRegionBackendServices %v not found", key), } klog.V(5).Infof("MockBetaRegionBackendServices.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockBetaRegionBackendServices.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockBetaRegionBackendServices) Obj(o *beta.BackendService) *MockRegionBackendServicesObj { return &MockRegionBackendServicesObj{o} } // GetHealth is a mock for the corresponding method. func (m *MockBetaRegionBackendServices) GetHealth(ctx context.Context, key *meta.Key, arg0 *beta.ResourceGroupReference) (*beta.BackendServiceGroupHealth, error) { if m.GetHealthHook != nil { return m.GetHealthHook(ctx, key, arg0, m) } return nil, fmt.Errorf("GetHealthHook must be set") } // Update is a mock for the corresponding method. func (m *MockBetaRegionBackendServices) Update(ctx context.Context, key *meta.Key, arg0 *beta.BackendService) error { if m.UpdateHook != nil { return m.UpdateHook(ctx, key, arg0, m) } return nil } // GCEBetaRegionBackendServices is a simplifying adapter for the GCE RegionBackendServices. type GCEBetaRegionBackendServices struct { s *Service } // Get the BackendService named by key. func (g *GCEBetaRegionBackendServices) Get(ctx context.Context, key *meta.Key) (*beta.BackendService, error) { klog.V(5).Infof("GCEBetaRegionBackendServices.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaRegionBackendServices.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionBackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("beta"), Service: "RegionBackendServices", } klog.V(5).Infof("GCEBetaRegionBackendServices.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaRegionBackendServices.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Beta.RegionBackendServices.Get(projectID, key.Region, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEBetaRegionBackendServices.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all BackendService objects. func (g *GCEBetaRegionBackendServices) List(ctx context.Context, region string, fl *filter.F) ([]*beta.BackendService, error) { klog.V(5).Infof("GCEBetaRegionBackendServices.List(%v, %v, %v) called", ctx, region, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionBackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("beta"), Service: "RegionBackendServices", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEBetaRegionBackendServices.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk) call := g.s.Beta.RegionBackendServices.List(projectID, region) if fl != filter.None { call.Filter(fl.String()) } var all []*beta.BackendService f := func(l *beta.BackendServiceList) error { klog.V(5).Infof("GCEBetaRegionBackendServices.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEBetaRegionBackendServices.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEBetaRegionBackendServices.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEBetaRegionBackendServices.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert BackendService with key of value obj. func (g *GCEBetaRegionBackendServices) Insert(ctx context.Context, key *meta.Key, obj *beta.BackendService) error { klog.V(5).Infof("GCEBetaRegionBackendServices.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEBetaRegionBackendServices.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionBackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("beta"), Service: "RegionBackendServices", } klog.V(5).Infof("GCEBetaRegionBackendServices.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaRegionBackendServices.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Beta.RegionBackendServices.Insert(projectID, key.Region, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaRegionBackendServices.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaRegionBackendServices.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the BackendService referenced by key. func (g *GCEBetaRegionBackendServices) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEBetaRegionBackendServices.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaRegionBackendServices.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionBackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("beta"), Service: "RegionBackendServices", } klog.V(5).Infof("GCEBetaRegionBackendServices.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaRegionBackendServices.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.RegionBackendServices.Delete(projectID, key.Region, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaRegionBackendServices.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaRegionBackendServices.Delete(%v, %v) = %v", ctx, key, err) return err } // GetHealth is a method on GCEBetaRegionBackendServices. func (g *GCEBetaRegionBackendServices) GetHealth(ctx context.Context, key *meta.Key, arg0 *beta.ResourceGroupReference) (*beta.BackendServiceGroupHealth, error) { klog.V(5).Infof("GCEBetaRegionBackendServices.GetHealth(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaRegionBackendServices.GetHealth(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionBackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "GetHealth", Version: meta.Version("beta"), Service: "RegionBackendServices", } klog.V(5).Infof("GCEBetaRegionBackendServices.GetHealth(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaRegionBackendServices.GetHealth(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Beta.RegionBackendServices.GetHealth(projectID, key.Region, key.Name, arg0) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEBetaRegionBackendServices.GetHealth(%v, %v, ...) = %+v, %v", ctx, key, v, err) return v, err } // Update is a method on GCEBetaRegionBackendServices. func (g *GCEBetaRegionBackendServices) Update(ctx context.Context, key *meta.Key, arg0 *beta.BackendService) error { klog.V(5).Infof("GCEBetaRegionBackendServices.Update(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaRegionBackendServices.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionBackendServices") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Update", Version: meta.Version("beta"), Service: "RegionBackendServices", } klog.V(5).Infof("GCEBetaRegionBackendServices.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaRegionBackendServices.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.RegionBackendServices.Update(projectID, key.Region, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaRegionBackendServices.Update(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaRegionBackendServices.Update(%v, %v, ...) = %+v", ctx, key, err) return err } // Disks is an interface that allows for mocking of Disks. type Disks interface { Get(ctx context.Context, key *meta.Key) (*ga.Disk, error) List(ctx context.Context, zone string, fl *filter.F) ([]*ga.Disk, error) Insert(ctx context.Context, key *meta.Key, obj *ga.Disk) error Delete(ctx context.Context, key *meta.Key) error Resize(context.Context, *meta.Key, *ga.DisksResizeRequest) error } // NewMockDisks returns a new mock for Disks. func NewMockDisks(pr ProjectRouter, objs map[meta.Key]*MockDisksObj) *MockDisks { mock := &MockDisks{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockDisks is the mock for Disks. type MockDisks struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockDisksObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockDisks) (bool, *ga.Disk, error) ListHook func(ctx context.Context, zone string, fl *filter.F, m *MockDisks) (bool, []*ga.Disk, error) InsertHook func(ctx context.Context, key *meta.Key, obj *ga.Disk, m *MockDisks) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockDisks) (bool, error) ResizeHook func(context.Context, *meta.Key, *ga.DisksResizeRequest, *MockDisks) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockDisks) Get(ctx context.Context, key *meta.Key) (*ga.Disk, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockDisks.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockDisks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToGA() klog.V(5).Infof("MockDisks.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockDisks %v not found", key), } klog.V(5).Infof("MockDisks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given zone. func (m *MockDisks) List(ctx context.Context, zone string, fl *filter.F) ([]*ga.Disk, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, zone, fl, m); intercept { klog.V(5).Infof("MockDisks.List(%v, %q, %v) = [%v items], %v", ctx, zone, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockDisks.List(%v, %q, %v) = nil, %v", ctx, zone, fl, err) return nil, *m.ListError } var objs []*ga.Disk for key, obj := range m.Objects { if key.Zone != zone { continue } if !fl.Match(obj.ToGA()) { continue } objs = append(objs, obj.ToGA()) } klog.V(5).Infof("MockDisks.List(%v, %q, %v) = [%v items], nil", ctx, zone, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockDisks) Insert(ctx context.Context, key *meta.Key, obj *ga.Disk) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockDisks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockDisks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockDisks %v exists", key), } klog.V(5).Infof("MockDisks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "ga", "disks") obj.SelfLink = SelfLink(meta.VersionGA, projectID, "disks", key) m.Objects[*key] = &MockDisksObj{obj} klog.V(5).Infof("MockDisks.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockDisks) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockDisks.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockDisks.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockDisks %v not found", key), } klog.V(5).Infof("MockDisks.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockDisks.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockDisks) Obj(o *ga.Disk) *MockDisksObj { return &MockDisksObj{o} } // Resize is a mock for the corresponding method. func (m *MockDisks) Resize(ctx context.Context, key *meta.Key, arg0 *ga.DisksResizeRequest) error { if m.ResizeHook != nil { return m.ResizeHook(ctx, key, arg0, m) } return nil } // GCEDisks is a simplifying adapter for the GCE Disks. type GCEDisks struct { s *Service } // Get the Disk named by key. func (g *GCEDisks) Get(ctx context.Context, key *meta.Key) (*ga.Disk, error) { klog.V(5).Infof("GCEDisks.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEDisks.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Disks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("ga"), Service: "Disks", } klog.V(5).Infof("GCEDisks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEDisks.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.Disks.Get(projectID, key.Zone, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEDisks.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all Disk objects. func (g *GCEDisks) List(ctx context.Context, zone string, fl *filter.F) ([]*ga.Disk, error) { klog.V(5).Infof("GCEDisks.List(%v, %v, %v) called", ctx, zone, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Disks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("ga"), Service: "Disks", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEDisks.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, zone, fl, projectID, rk) call := g.s.GA.Disks.List(projectID, zone) if fl != filter.None { call.Filter(fl.String()) } var all []*ga.Disk f := func(l *ga.DiskList) error { klog.V(5).Infof("GCEDisks.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEDisks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEDisks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEDisks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert Disk with key of value obj. func (g *GCEDisks) Insert(ctx context.Context, key *meta.Key, obj *ga.Disk) error { klog.V(5).Infof("GCEDisks.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEDisks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Disks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("ga"), Service: "Disks", } klog.V(5).Infof("GCEDisks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEDisks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.GA.Disks.Insert(projectID, key.Zone, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEDisks.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEDisks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the Disk referenced by key. func (g *GCEDisks) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEDisks.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEDisks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Disks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("ga"), Service: "Disks", } klog.V(5).Infof("GCEDisks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEDisks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.Disks.Delete(projectID, key.Zone, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEDisks.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEDisks.Delete(%v, %v) = %v", ctx, key, err) return err } // Resize is a method on GCEDisks. func (g *GCEDisks) Resize(ctx context.Context, key *meta.Key, arg0 *ga.DisksResizeRequest) error { klog.V(5).Infof("GCEDisks.Resize(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEDisks.Resize(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Disks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Resize", Version: meta.Version("ga"), Service: "Disks", } klog.V(5).Infof("GCEDisks.Resize(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEDisks.Resize(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.Disks.Resize(projectID, key.Zone, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEDisks.Resize(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEDisks.Resize(%v, %v, ...) = %+v", ctx, key, err) return err } // RegionDisks is an interface that allows for mocking of RegionDisks. type RegionDisks interface { Get(ctx context.Context, key *meta.Key) (*ga.Disk, error) List(ctx context.Context, region string, fl *filter.F) ([]*ga.Disk, error) Insert(ctx context.Context, key *meta.Key, obj *ga.Disk) error Delete(ctx context.Context, key *meta.Key) error Resize(context.Context, *meta.Key, *ga.RegionDisksResizeRequest) error } // NewMockRegionDisks returns a new mock for RegionDisks. func NewMockRegionDisks(pr ProjectRouter, objs map[meta.Key]*MockRegionDisksObj) *MockRegionDisks { mock := &MockRegionDisks{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockRegionDisks is the mock for RegionDisks. type MockRegionDisks struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockRegionDisksObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockRegionDisks) (bool, *ga.Disk, error) ListHook func(ctx context.Context, region string, fl *filter.F, m *MockRegionDisks) (bool, []*ga.Disk, error) InsertHook func(ctx context.Context, key *meta.Key, obj *ga.Disk, m *MockRegionDisks) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockRegionDisks) (bool, error) ResizeHook func(context.Context, *meta.Key, *ga.RegionDisksResizeRequest, *MockRegionDisks) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockRegionDisks) Get(ctx context.Context, key *meta.Key) (*ga.Disk, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockRegionDisks.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockRegionDisks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToGA() klog.V(5).Infof("MockRegionDisks.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockRegionDisks %v not found", key), } klog.V(5).Infof("MockRegionDisks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given region. func (m *MockRegionDisks) List(ctx context.Context, region string, fl *filter.F) ([]*ga.Disk, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept { klog.V(5).Infof("MockRegionDisks.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockRegionDisks.List(%v, %q, %v) = nil, %v", ctx, region, fl, err) return nil, *m.ListError } var objs []*ga.Disk for key, obj := range m.Objects { if key.Region != region { continue } if !fl.Match(obj.ToGA()) { continue } objs = append(objs, obj.ToGA()) } klog.V(5).Infof("MockRegionDisks.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockRegionDisks) Insert(ctx context.Context, key *meta.Key, obj *ga.Disk) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockRegionDisks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockRegionDisks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockRegionDisks %v exists", key), } klog.V(5).Infof("MockRegionDisks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "ga", "disks") obj.SelfLink = SelfLink(meta.VersionGA, projectID, "disks", key) m.Objects[*key] = &MockRegionDisksObj{obj} klog.V(5).Infof("MockRegionDisks.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockRegionDisks) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockRegionDisks.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockRegionDisks.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockRegionDisks %v not found", key), } klog.V(5).Infof("MockRegionDisks.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockRegionDisks.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockRegionDisks) Obj(o *ga.Disk) *MockRegionDisksObj { return &MockRegionDisksObj{o} } // Resize is a mock for the corresponding method. func (m *MockRegionDisks) Resize(ctx context.Context, key *meta.Key, arg0 *ga.RegionDisksResizeRequest) error { if m.ResizeHook != nil { return m.ResizeHook(ctx, key, arg0, m) } return nil } // GCERegionDisks is a simplifying adapter for the GCE RegionDisks. type GCERegionDisks struct { s *Service } // Get the Disk named by key. func (g *GCERegionDisks) Get(ctx context.Context, key *meta.Key) (*ga.Disk, error) { klog.V(5).Infof("GCERegionDisks.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCERegionDisks.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionDisks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("ga"), Service: "RegionDisks", } klog.V(5).Infof("GCERegionDisks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERegionDisks.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.RegionDisks.Get(projectID, key.Region, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCERegionDisks.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all Disk objects. func (g *GCERegionDisks) List(ctx context.Context, region string, fl *filter.F) ([]*ga.Disk, error) { klog.V(5).Infof("GCERegionDisks.List(%v, %v, %v) called", ctx, region, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionDisks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("ga"), Service: "RegionDisks", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCERegionDisks.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk) call := g.s.GA.RegionDisks.List(projectID, region) if fl != filter.None { call.Filter(fl.String()) } var all []*ga.Disk f := func(l *ga.DiskList) error { klog.V(5).Infof("GCERegionDisks.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCERegionDisks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCERegionDisks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCERegionDisks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert Disk with key of value obj. func (g *GCERegionDisks) Insert(ctx context.Context, key *meta.Key, obj *ga.Disk) error { klog.V(5).Infof("GCERegionDisks.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCERegionDisks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionDisks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("ga"), Service: "RegionDisks", } klog.V(5).Infof("GCERegionDisks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERegionDisks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.GA.RegionDisks.Insert(projectID, key.Region, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCERegionDisks.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCERegionDisks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the Disk referenced by key. func (g *GCERegionDisks) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCERegionDisks.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCERegionDisks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionDisks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("ga"), Service: "RegionDisks", } klog.V(5).Infof("GCERegionDisks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERegionDisks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.RegionDisks.Delete(projectID, key.Region, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCERegionDisks.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCERegionDisks.Delete(%v, %v) = %v", ctx, key, err) return err } // Resize is a method on GCERegionDisks. func (g *GCERegionDisks) Resize(ctx context.Context, key *meta.Key, arg0 *ga.RegionDisksResizeRequest) error { klog.V(5).Infof("GCERegionDisks.Resize(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCERegionDisks.Resize(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionDisks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Resize", Version: meta.Version("ga"), Service: "RegionDisks", } klog.V(5).Infof("GCERegionDisks.Resize(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERegionDisks.Resize(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.RegionDisks.Resize(projectID, key.Region, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCERegionDisks.Resize(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCERegionDisks.Resize(%v, %v, ...) = %+v", ctx, key, err) return err } // AlphaFirewalls is an interface that allows for mocking of Firewalls. type AlphaFirewalls interface { Get(ctx context.Context, key *meta.Key) (*alpha.Firewall, error) List(ctx context.Context, fl *filter.F) ([]*alpha.Firewall, error) Insert(ctx context.Context, key *meta.Key, obj *alpha.Firewall) error Delete(ctx context.Context, key *meta.Key) error Update(context.Context, *meta.Key, *alpha.Firewall) error } // NewMockAlphaFirewalls returns a new mock for Firewalls. func NewMockAlphaFirewalls(pr ProjectRouter, objs map[meta.Key]*MockFirewallsObj) *MockAlphaFirewalls { mock := &MockAlphaFirewalls{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockAlphaFirewalls is the mock for Firewalls. type MockAlphaFirewalls struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockFirewallsObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaFirewalls) (bool, *alpha.Firewall, error) ListHook func(ctx context.Context, fl *filter.F, m *MockAlphaFirewalls) (bool, []*alpha.Firewall, error) InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.Firewall, m *MockAlphaFirewalls) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaFirewalls) (bool, error) UpdateHook func(context.Context, *meta.Key, *alpha.Firewall, *MockAlphaFirewalls) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockAlphaFirewalls) Get(ctx context.Context, key *meta.Key) (*alpha.Firewall, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaFirewalls.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockAlphaFirewalls.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToAlpha() klog.V(5).Infof("MockAlphaFirewalls.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaFirewalls %v not found", key), } klog.V(5).Infof("MockAlphaFirewalls.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockAlphaFirewalls) List(ctx context.Context, fl *filter.F) ([]*alpha.Firewall, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockAlphaFirewalls.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockAlphaFirewalls.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*alpha.Firewall for _, obj := range m.Objects { if !fl.Match(obj.ToAlpha()) { continue } objs = append(objs, obj.ToAlpha()) } klog.V(5).Infof("MockAlphaFirewalls.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockAlphaFirewalls) Insert(ctx context.Context, key *meta.Key, obj *alpha.Firewall) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockAlphaFirewalls.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockAlphaFirewalls.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockAlphaFirewalls %v exists", key), } klog.V(5).Infof("MockAlphaFirewalls.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "firewalls") obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "firewalls", key) m.Objects[*key] = &MockFirewallsObj{obj} klog.V(5).Infof("MockAlphaFirewalls.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockAlphaFirewalls) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaFirewalls.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockAlphaFirewalls.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaFirewalls %v not found", key), } klog.V(5).Infof("MockAlphaFirewalls.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockAlphaFirewalls.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockAlphaFirewalls) Obj(o *alpha.Firewall) *MockFirewallsObj { return &MockFirewallsObj{o} } // Update is a mock for the corresponding method. func (m *MockAlphaFirewalls) Update(ctx context.Context, key *meta.Key, arg0 *alpha.Firewall) error { if m.UpdateHook != nil { return m.UpdateHook(ctx, key, arg0, m) } return nil } // GCEAlphaFirewalls is a simplifying adapter for the GCE Firewalls. type GCEAlphaFirewalls struct { s *Service } // Get the Firewall named by key. func (g *GCEAlphaFirewalls) Get(ctx context.Context, key *meta.Key) (*alpha.Firewall, error) { klog.V(5).Infof("GCEAlphaFirewalls.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaFirewalls.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Firewalls") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("alpha"), Service: "Firewalls", } klog.V(5).Infof("GCEAlphaFirewalls.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaFirewalls.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Alpha.Firewalls.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEAlphaFirewalls.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all Firewall objects. func (g *GCEAlphaFirewalls) List(ctx context.Context, fl *filter.F) ([]*alpha.Firewall, error) { klog.V(5).Infof("GCEAlphaFirewalls.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Firewalls") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("alpha"), Service: "Firewalls", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEAlphaFirewalls.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.Alpha.Firewalls.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*alpha.Firewall f := func(l *alpha.FirewallList) error { klog.V(5).Infof("GCEAlphaFirewalls.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEAlphaFirewalls.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEAlphaFirewalls.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEAlphaFirewalls.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert Firewall with key of value obj. func (g *GCEAlphaFirewalls) Insert(ctx context.Context, key *meta.Key, obj *alpha.Firewall) error { klog.V(5).Infof("GCEAlphaFirewalls.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEAlphaFirewalls.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Firewalls") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("alpha"), Service: "Firewalls", } klog.V(5).Infof("GCEAlphaFirewalls.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaFirewalls.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Alpha.Firewalls.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaFirewalls.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaFirewalls.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the Firewall referenced by key. func (g *GCEAlphaFirewalls) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEAlphaFirewalls.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaFirewalls.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Firewalls") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("alpha"), Service: "Firewalls", } klog.V(5).Infof("GCEAlphaFirewalls.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaFirewalls.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.Firewalls.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaFirewalls.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaFirewalls.Delete(%v, %v) = %v", ctx, key, err) return err } // Update is a method on GCEAlphaFirewalls. func (g *GCEAlphaFirewalls) Update(ctx context.Context, key *meta.Key, arg0 *alpha.Firewall) error { klog.V(5).Infof("GCEAlphaFirewalls.Update(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaFirewalls.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Firewalls") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Update", Version: meta.Version("alpha"), Service: "Firewalls", } klog.V(5).Infof("GCEAlphaFirewalls.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaFirewalls.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.Firewalls.Update(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaFirewalls.Update(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaFirewalls.Update(%v, %v, ...) = %+v", ctx, key, err) return err } // BetaFirewalls is an interface that allows for mocking of Firewalls. type BetaFirewalls interface { Get(ctx context.Context, key *meta.Key) (*beta.Firewall, error) List(ctx context.Context, fl *filter.F) ([]*beta.Firewall, error) Insert(ctx context.Context, key *meta.Key, obj *beta.Firewall) error Delete(ctx context.Context, key *meta.Key) error Update(context.Context, *meta.Key, *beta.Firewall) error } // NewMockBetaFirewalls returns a new mock for Firewalls. func NewMockBetaFirewalls(pr ProjectRouter, objs map[meta.Key]*MockFirewallsObj) *MockBetaFirewalls { mock := &MockBetaFirewalls{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockBetaFirewalls is the mock for Firewalls. type MockBetaFirewalls struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockFirewallsObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaFirewalls) (bool, *beta.Firewall, error) ListHook func(ctx context.Context, fl *filter.F, m *MockBetaFirewalls) (bool, []*beta.Firewall, error) InsertHook func(ctx context.Context, key *meta.Key, obj *beta.Firewall, m *MockBetaFirewalls) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaFirewalls) (bool, error) UpdateHook func(context.Context, *meta.Key, *beta.Firewall, *MockBetaFirewalls) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockBetaFirewalls) Get(ctx context.Context, key *meta.Key) (*beta.Firewall, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaFirewalls.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockBetaFirewalls.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToBeta() klog.V(5).Infof("MockBetaFirewalls.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaFirewalls %v not found", key), } klog.V(5).Infof("MockBetaFirewalls.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockBetaFirewalls) List(ctx context.Context, fl *filter.F) ([]*beta.Firewall, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockBetaFirewalls.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockBetaFirewalls.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*beta.Firewall for _, obj := range m.Objects { if !fl.Match(obj.ToBeta()) { continue } objs = append(objs, obj.ToBeta()) } klog.V(5).Infof("MockBetaFirewalls.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockBetaFirewalls) Insert(ctx context.Context, key *meta.Key, obj *beta.Firewall) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockBetaFirewalls.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockBetaFirewalls.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockBetaFirewalls %v exists", key), } klog.V(5).Infof("MockBetaFirewalls.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "beta", "firewalls") obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "firewalls", key) m.Objects[*key] = &MockFirewallsObj{obj} klog.V(5).Infof("MockBetaFirewalls.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockBetaFirewalls) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaFirewalls.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockBetaFirewalls.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaFirewalls %v not found", key), } klog.V(5).Infof("MockBetaFirewalls.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockBetaFirewalls.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockBetaFirewalls) Obj(o *beta.Firewall) *MockFirewallsObj { return &MockFirewallsObj{o} } // Update is a mock for the corresponding method. func (m *MockBetaFirewalls) Update(ctx context.Context, key *meta.Key, arg0 *beta.Firewall) error { if m.UpdateHook != nil { return m.UpdateHook(ctx, key, arg0, m) } return nil } // GCEBetaFirewalls is a simplifying adapter for the GCE Firewalls. type GCEBetaFirewalls struct { s *Service } // Get the Firewall named by key. func (g *GCEBetaFirewalls) Get(ctx context.Context, key *meta.Key) (*beta.Firewall, error) { klog.V(5).Infof("GCEBetaFirewalls.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaFirewalls.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Firewalls") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("beta"), Service: "Firewalls", } klog.V(5).Infof("GCEBetaFirewalls.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaFirewalls.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Beta.Firewalls.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEBetaFirewalls.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all Firewall objects. func (g *GCEBetaFirewalls) List(ctx context.Context, fl *filter.F) ([]*beta.Firewall, error) { klog.V(5).Infof("GCEBetaFirewalls.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Firewalls") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("beta"), Service: "Firewalls", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEBetaFirewalls.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.Beta.Firewalls.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*beta.Firewall f := func(l *beta.FirewallList) error { klog.V(5).Infof("GCEBetaFirewalls.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEBetaFirewalls.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEBetaFirewalls.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEBetaFirewalls.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert Firewall with key of value obj. func (g *GCEBetaFirewalls) Insert(ctx context.Context, key *meta.Key, obj *beta.Firewall) error { klog.V(5).Infof("GCEBetaFirewalls.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEBetaFirewalls.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Firewalls") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("beta"), Service: "Firewalls", } klog.V(5).Infof("GCEBetaFirewalls.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaFirewalls.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Beta.Firewalls.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaFirewalls.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaFirewalls.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the Firewall referenced by key. func (g *GCEBetaFirewalls) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEBetaFirewalls.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaFirewalls.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Firewalls") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("beta"), Service: "Firewalls", } klog.V(5).Infof("GCEBetaFirewalls.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaFirewalls.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.Firewalls.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaFirewalls.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaFirewalls.Delete(%v, %v) = %v", ctx, key, err) return err } // Update is a method on GCEBetaFirewalls. func (g *GCEBetaFirewalls) Update(ctx context.Context, key *meta.Key, arg0 *beta.Firewall) error { klog.V(5).Infof("GCEBetaFirewalls.Update(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaFirewalls.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Firewalls") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Update", Version: meta.Version("beta"), Service: "Firewalls", } klog.V(5).Infof("GCEBetaFirewalls.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaFirewalls.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.Firewalls.Update(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaFirewalls.Update(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaFirewalls.Update(%v, %v, ...) = %+v", ctx, key, err) return err } // Firewalls is an interface that allows for mocking of Firewalls. type Firewalls interface { Get(ctx context.Context, key *meta.Key) (*ga.Firewall, error) List(ctx context.Context, fl *filter.F) ([]*ga.Firewall, error) Insert(ctx context.Context, key *meta.Key, obj *ga.Firewall) error Delete(ctx context.Context, key *meta.Key) error Update(context.Context, *meta.Key, *ga.Firewall) error } // NewMockFirewalls returns a new mock for Firewalls. func NewMockFirewalls(pr ProjectRouter, objs map[meta.Key]*MockFirewallsObj) *MockFirewalls { mock := &MockFirewalls{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockFirewalls is the mock for Firewalls. type MockFirewalls struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockFirewallsObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockFirewalls) (bool, *ga.Firewall, error) ListHook func(ctx context.Context, fl *filter.F, m *MockFirewalls) (bool, []*ga.Firewall, error) InsertHook func(ctx context.Context, key *meta.Key, obj *ga.Firewall, m *MockFirewalls) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockFirewalls) (bool, error) UpdateHook func(context.Context, *meta.Key, *ga.Firewall, *MockFirewalls) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockFirewalls) Get(ctx context.Context, key *meta.Key) (*ga.Firewall, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockFirewalls.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockFirewalls.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToGA() klog.V(5).Infof("MockFirewalls.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockFirewalls %v not found", key), } klog.V(5).Infof("MockFirewalls.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockFirewalls) List(ctx context.Context, fl *filter.F) ([]*ga.Firewall, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockFirewalls.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockFirewalls.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*ga.Firewall for _, obj := range m.Objects { if !fl.Match(obj.ToGA()) { continue } objs = append(objs, obj.ToGA()) } klog.V(5).Infof("MockFirewalls.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockFirewalls) Insert(ctx context.Context, key *meta.Key, obj *ga.Firewall) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockFirewalls.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockFirewalls.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockFirewalls %v exists", key), } klog.V(5).Infof("MockFirewalls.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "ga", "firewalls") obj.SelfLink = SelfLink(meta.VersionGA, projectID, "firewalls", key) m.Objects[*key] = &MockFirewallsObj{obj} klog.V(5).Infof("MockFirewalls.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockFirewalls) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockFirewalls.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockFirewalls.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockFirewalls %v not found", key), } klog.V(5).Infof("MockFirewalls.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockFirewalls.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockFirewalls) Obj(o *ga.Firewall) *MockFirewallsObj { return &MockFirewallsObj{o} } // Update is a mock for the corresponding method. func (m *MockFirewalls) Update(ctx context.Context, key *meta.Key, arg0 *ga.Firewall) error { if m.UpdateHook != nil { return m.UpdateHook(ctx, key, arg0, m) } return nil } // GCEFirewalls is a simplifying adapter for the GCE Firewalls. type GCEFirewalls struct { s *Service } // Get the Firewall named by key. func (g *GCEFirewalls) Get(ctx context.Context, key *meta.Key) (*ga.Firewall, error) { klog.V(5).Infof("GCEFirewalls.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEFirewalls.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Firewalls") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("ga"), Service: "Firewalls", } klog.V(5).Infof("GCEFirewalls.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEFirewalls.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.Firewalls.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEFirewalls.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all Firewall objects. func (g *GCEFirewalls) List(ctx context.Context, fl *filter.F) ([]*ga.Firewall, error) { klog.V(5).Infof("GCEFirewalls.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Firewalls") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("ga"), Service: "Firewalls", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEFirewalls.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.GA.Firewalls.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*ga.Firewall f := func(l *ga.FirewallList) error { klog.V(5).Infof("GCEFirewalls.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEFirewalls.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEFirewalls.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEFirewalls.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert Firewall with key of value obj. func (g *GCEFirewalls) Insert(ctx context.Context, key *meta.Key, obj *ga.Firewall) error { klog.V(5).Infof("GCEFirewalls.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEFirewalls.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Firewalls") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("ga"), Service: "Firewalls", } klog.V(5).Infof("GCEFirewalls.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEFirewalls.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.GA.Firewalls.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEFirewalls.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEFirewalls.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the Firewall referenced by key. func (g *GCEFirewalls) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEFirewalls.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEFirewalls.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Firewalls") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("ga"), Service: "Firewalls", } klog.V(5).Infof("GCEFirewalls.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEFirewalls.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.Firewalls.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEFirewalls.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEFirewalls.Delete(%v, %v) = %v", ctx, key, err) return err } // Update is a method on GCEFirewalls. func (g *GCEFirewalls) Update(ctx context.Context, key *meta.Key, arg0 *ga.Firewall) error { klog.V(5).Infof("GCEFirewalls.Update(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEFirewalls.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Firewalls") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Update", Version: meta.Version("ga"), Service: "Firewalls", } klog.V(5).Infof("GCEFirewalls.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEFirewalls.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.Firewalls.Update(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEFirewalls.Update(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEFirewalls.Update(%v, %v, ...) = %+v", ctx, key, err) return err } // ForwardingRules is an interface that allows for mocking of ForwardingRules. type ForwardingRules interface { Get(ctx context.Context, key *meta.Key) (*ga.ForwardingRule, error) List(ctx context.Context, region string, fl *filter.F) ([]*ga.ForwardingRule, error) Insert(ctx context.Context, key *meta.Key, obj *ga.ForwardingRule) error Delete(ctx context.Context, key *meta.Key) error SetTarget(context.Context, *meta.Key, *ga.TargetReference) error } // NewMockForwardingRules returns a new mock for ForwardingRules. func NewMockForwardingRules(pr ProjectRouter, objs map[meta.Key]*MockForwardingRulesObj) *MockForwardingRules { mock := &MockForwardingRules{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockForwardingRules is the mock for ForwardingRules. type MockForwardingRules struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockForwardingRulesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockForwardingRules) (bool, *ga.ForwardingRule, error) ListHook func(ctx context.Context, region string, fl *filter.F, m *MockForwardingRules) (bool, []*ga.ForwardingRule, error) InsertHook func(ctx context.Context, key *meta.Key, obj *ga.ForwardingRule, m *MockForwardingRules) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockForwardingRules) (bool, error) SetTargetHook func(context.Context, *meta.Key, *ga.TargetReference, *MockForwardingRules) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockForwardingRules) Get(ctx context.Context, key *meta.Key) (*ga.ForwardingRule, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockForwardingRules.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockForwardingRules.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToGA() klog.V(5).Infof("MockForwardingRules.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockForwardingRules %v not found", key), } klog.V(5).Infof("MockForwardingRules.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given region. func (m *MockForwardingRules) List(ctx context.Context, region string, fl *filter.F) ([]*ga.ForwardingRule, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept { klog.V(5).Infof("MockForwardingRules.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockForwardingRules.List(%v, %q, %v) = nil, %v", ctx, region, fl, err) return nil, *m.ListError } var objs []*ga.ForwardingRule for key, obj := range m.Objects { if key.Region != region { continue } if !fl.Match(obj.ToGA()) { continue } objs = append(objs, obj.ToGA()) } klog.V(5).Infof("MockForwardingRules.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockForwardingRules) Insert(ctx context.Context, key *meta.Key, obj *ga.ForwardingRule) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockForwardingRules %v exists", key), } klog.V(5).Infof("MockForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "ga", "forwardingRules") obj.SelfLink = SelfLink(meta.VersionGA, projectID, "forwardingRules", key) m.Objects[*key] = &MockForwardingRulesObj{obj} klog.V(5).Infof("MockForwardingRules.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockForwardingRules) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockForwardingRules.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockForwardingRules.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockForwardingRules %v not found", key), } klog.V(5).Infof("MockForwardingRules.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockForwardingRules.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockForwardingRules) Obj(o *ga.ForwardingRule) *MockForwardingRulesObj { return &MockForwardingRulesObj{o} } // SetTarget is a mock for the corresponding method. func (m *MockForwardingRules) SetTarget(ctx context.Context, key *meta.Key, arg0 *ga.TargetReference) error { if m.SetTargetHook != nil { return m.SetTargetHook(ctx, key, arg0, m) } return nil } // GCEForwardingRules is a simplifying adapter for the GCE ForwardingRules. type GCEForwardingRules struct { s *Service } // Get the ForwardingRule named by key. func (g *GCEForwardingRules) Get(ctx context.Context, key *meta.Key) (*ga.ForwardingRule, error) { klog.V(5).Infof("GCEForwardingRules.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEForwardingRules.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "ForwardingRules") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("ga"), Service: "ForwardingRules", } klog.V(5).Infof("GCEForwardingRules.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEForwardingRules.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.ForwardingRules.Get(projectID, key.Region, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEForwardingRules.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all ForwardingRule objects. func (g *GCEForwardingRules) List(ctx context.Context, region string, fl *filter.F) ([]*ga.ForwardingRule, error) { klog.V(5).Infof("GCEForwardingRules.List(%v, %v, %v) called", ctx, region, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "ForwardingRules") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("ga"), Service: "ForwardingRules", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEForwardingRules.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk) call := g.s.GA.ForwardingRules.List(projectID, region) if fl != filter.None { call.Filter(fl.String()) } var all []*ga.ForwardingRule f := func(l *ga.ForwardingRuleList) error { klog.V(5).Infof("GCEForwardingRules.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEForwardingRules.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEForwardingRules.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEForwardingRules.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert ForwardingRule with key of value obj. func (g *GCEForwardingRules) Insert(ctx context.Context, key *meta.Key, obj *ga.ForwardingRule) error { klog.V(5).Infof("GCEForwardingRules.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEForwardingRules.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "ForwardingRules") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("ga"), Service: "ForwardingRules", } klog.V(5).Infof("GCEForwardingRules.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEForwardingRules.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.GA.ForwardingRules.Insert(projectID, key.Region, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEForwardingRules.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEForwardingRules.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the ForwardingRule referenced by key. func (g *GCEForwardingRules) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEForwardingRules.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEForwardingRules.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "ForwardingRules") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("ga"), Service: "ForwardingRules", } klog.V(5).Infof("GCEForwardingRules.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEForwardingRules.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.ForwardingRules.Delete(projectID, key.Region, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEForwardingRules.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEForwardingRules.Delete(%v, %v) = %v", ctx, key, err) return err } // SetTarget is a method on GCEForwardingRules. func (g *GCEForwardingRules) SetTarget(ctx context.Context, key *meta.Key, arg0 *ga.TargetReference) error { klog.V(5).Infof("GCEForwardingRules.SetTarget(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEForwardingRules.SetTarget(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "ForwardingRules") rk := &RateLimitKey{ ProjectID: projectID, Operation: "SetTarget", Version: meta.Version("ga"), Service: "ForwardingRules", } klog.V(5).Infof("GCEForwardingRules.SetTarget(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEForwardingRules.SetTarget(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.ForwardingRules.SetTarget(projectID, key.Region, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEForwardingRules.SetTarget(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEForwardingRules.SetTarget(%v, %v, ...) = %+v", ctx, key, err) return err } // AlphaForwardingRules is an interface that allows for mocking of ForwardingRules. type AlphaForwardingRules interface { Get(ctx context.Context, key *meta.Key) (*alpha.ForwardingRule, error) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.ForwardingRule, error) Insert(ctx context.Context, key *meta.Key, obj *alpha.ForwardingRule) error Delete(ctx context.Context, key *meta.Key) error SetTarget(context.Context, *meta.Key, *alpha.TargetReference) error } // NewMockAlphaForwardingRules returns a new mock for ForwardingRules. func NewMockAlphaForwardingRules(pr ProjectRouter, objs map[meta.Key]*MockForwardingRulesObj) *MockAlphaForwardingRules { mock := &MockAlphaForwardingRules{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockAlphaForwardingRules is the mock for ForwardingRules. type MockAlphaForwardingRules struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockForwardingRulesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaForwardingRules) (bool, *alpha.ForwardingRule, error) ListHook func(ctx context.Context, region string, fl *filter.F, m *MockAlphaForwardingRules) (bool, []*alpha.ForwardingRule, error) InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.ForwardingRule, m *MockAlphaForwardingRules) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaForwardingRules) (bool, error) SetTargetHook func(context.Context, *meta.Key, *alpha.TargetReference, *MockAlphaForwardingRules) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockAlphaForwardingRules) Get(ctx context.Context, key *meta.Key) (*alpha.ForwardingRule, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaForwardingRules.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockAlphaForwardingRules.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToAlpha() klog.V(5).Infof("MockAlphaForwardingRules.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaForwardingRules %v not found", key), } klog.V(5).Infof("MockAlphaForwardingRules.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given region. func (m *MockAlphaForwardingRules) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.ForwardingRule, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept { klog.V(5).Infof("MockAlphaForwardingRules.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockAlphaForwardingRules.List(%v, %q, %v) = nil, %v", ctx, region, fl, err) return nil, *m.ListError } var objs []*alpha.ForwardingRule for key, obj := range m.Objects { if key.Region != region { continue } if !fl.Match(obj.ToAlpha()) { continue } objs = append(objs, obj.ToAlpha()) } klog.V(5).Infof("MockAlphaForwardingRules.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockAlphaForwardingRules) Insert(ctx context.Context, key *meta.Key, obj *alpha.ForwardingRule) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockAlphaForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockAlphaForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockAlphaForwardingRules %v exists", key), } klog.V(5).Infof("MockAlphaForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "forwardingRules") obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "forwardingRules", key) m.Objects[*key] = &MockForwardingRulesObj{obj} klog.V(5).Infof("MockAlphaForwardingRules.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockAlphaForwardingRules) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaForwardingRules.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockAlphaForwardingRules.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaForwardingRules %v not found", key), } klog.V(5).Infof("MockAlphaForwardingRules.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockAlphaForwardingRules.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockAlphaForwardingRules) Obj(o *alpha.ForwardingRule) *MockForwardingRulesObj { return &MockForwardingRulesObj{o} } // SetTarget is a mock for the corresponding method. func (m *MockAlphaForwardingRules) SetTarget(ctx context.Context, key *meta.Key, arg0 *alpha.TargetReference) error { if m.SetTargetHook != nil { return m.SetTargetHook(ctx, key, arg0, m) } return nil } // GCEAlphaForwardingRules is a simplifying adapter for the GCE ForwardingRules. type GCEAlphaForwardingRules struct { s *Service } // Get the ForwardingRule named by key. func (g *GCEAlphaForwardingRules) Get(ctx context.Context, key *meta.Key) (*alpha.ForwardingRule, error) { klog.V(5).Infof("GCEAlphaForwardingRules.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaForwardingRules.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "ForwardingRules") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("alpha"), Service: "ForwardingRules", } klog.V(5).Infof("GCEAlphaForwardingRules.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaForwardingRules.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Alpha.ForwardingRules.Get(projectID, key.Region, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEAlphaForwardingRules.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all ForwardingRule objects. func (g *GCEAlphaForwardingRules) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.ForwardingRule, error) { klog.V(5).Infof("GCEAlphaForwardingRules.List(%v, %v, %v) called", ctx, region, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "ForwardingRules") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("alpha"), Service: "ForwardingRules", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEAlphaForwardingRules.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk) call := g.s.Alpha.ForwardingRules.List(projectID, region) if fl != filter.None { call.Filter(fl.String()) } var all []*alpha.ForwardingRule f := func(l *alpha.ForwardingRuleList) error { klog.V(5).Infof("GCEAlphaForwardingRules.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEAlphaForwardingRules.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEAlphaForwardingRules.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEAlphaForwardingRules.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert ForwardingRule with key of value obj. func (g *GCEAlphaForwardingRules) Insert(ctx context.Context, key *meta.Key, obj *alpha.ForwardingRule) error { klog.V(5).Infof("GCEAlphaForwardingRules.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEAlphaForwardingRules.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "ForwardingRules") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("alpha"), Service: "ForwardingRules", } klog.V(5).Infof("GCEAlphaForwardingRules.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaForwardingRules.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Alpha.ForwardingRules.Insert(projectID, key.Region, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaForwardingRules.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaForwardingRules.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the ForwardingRule referenced by key. func (g *GCEAlphaForwardingRules) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEAlphaForwardingRules.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaForwardingRules.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "ForwardingRules") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("alpha"), Service: "ForwardingRules", } klog.V(5).Infof("GCEAlphaForwardingRules.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaForwardingRules.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.ForwardingRules.Delete(projectID, key.Region, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaForwardingRules.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaForwardingRules.Delete(%v, %v) = %v", ctx, key, err) return err } // SetTarget is a method on GCEAlphaForwardingRules. func (g *GCEAlphaForwardingRules) SetTarget(ctx context.Context, key *meta.Key, arg0 *alpha.TargetReference) error { klog.V(5).Infof("GCEAlphaForwardingRules.SetTarget(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaForwardingRules.SetTarget(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "ForwardingRules") rk := &RateLimitKey{ ProjectID: projectID, Operation: "SetTarget", Version: meta.Version("alpha"), Service: "ForwardingRules", } klog.V(5).Infof("GCEAlphaForwardingRules.SetTarget(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaForwardingRules.SetTarget(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.ForwardingRules.SetTarget(projectID, key.Region, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaForwardingRules.SetTarget(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaForwardingRules.SetTarget(%v, %v, ...) = %+v", ctx, key, err) return err } // BetaForwardingRules is an interface that allows for mocking of ForwardingRules. type BetaForwardingRules interface { Get(ctx context.Context, key *meta.Key) (*beta.ForwardingRule, error) List(ctx context.Context, region string, fl *filter.F) ([]*beta.ForwardingRule, error) Insert(ctx context.Context, key *meta.Key, obj *beta.ForwardingRule) error Delete(ctx context.Context, key *meta.Key) error SetTarget(context.Context, *meta.Key, *beta.TargetReference) error } // NewMockBetaForwardingRules returns a new mock for ForwardingRules. func NewMockBetaForwardingRules(pr ProjectRouter, objs map[meta.Key]*MockForwardingRulesObj) *MockBetaForwardingRules { mock := &MockBetaForwardingRules{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockBetaForwardingRules is the mock for ForwardingRules. type MockBetaForwardingRules struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockForwardingRulesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaForwardingRules) (bool, *beta.ForwardingRule, error) ListHook func(ctx context.Context, region string, fl *filter.F, m *MockBetaForwardingRules) (bool, []*beta.ForwardingRule, error) InsertHook func(ctx context.Context, key *meta.Key, obj *beta.ForwardingRule, m *MockBetaForwardingRules) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaForwardingRules) (bool, error) SetTargetHook func(context.Context, *meta.Key, *beta.TargetReference, *MockBetaForwardingRules) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockBetaForwardingRules) Get(ctx context.Context, key *meta.Key) (*beta.ForwardingRule, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaForwardingRules.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockBetaForwardingRules.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToBeta() klog.V(5).Infof("MockBetaForwardingRules.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaForwardingRules %v not found", key), } klog.V(5).Infof("MockBetaForwardingRules.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given region. func (m *MockBetaForwardingRules) List(ctx context.Context, region string, fl *filter.F) ([]*beta.ForwardingRule, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept { klog.V(5).Infof("MockBetaForwardingRules.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockBetaForwardingRules.List(%v, %q, %v) = nil, %v", ctx, region, fl, err) return nil, *m.ListError } var objs []*beta.ForwardingRule for key, obj := range m.Objects { if key.Region != region { continue } if !fl.Match(obj.ToBeta()) { continue } objs = append(objs, obj.ToBeta()) } klog.V(5).Infof("MockBetaForwardingRules.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockBetaForwardingRules) Insert(ctx context.Context, key *meta.Key, obj *beta.ForwardingRule) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockBetaForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockBetaForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockBetaForwardingRules %v exists", key), } klog.V(5).Infof("MockBetaForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "beta", "forwardingRules") obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "forwardingRules", key) m.Objects[*key] = &MockForwardingRulesObj{obj} klog.V(5).Infof("MockBetaForwardingRules.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockBetaForwardingRules) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaForwardingRules.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockBetaForwardingRules.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaForwardingRules %v not found", key), } klog.V(5).Infof("MockBetaForwardingRules.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockBetaForwardingRules.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockBetaForwardingRules) Obj(o *beta.ForwardingRule) *MockForwardingRulesObj { return &MockForwardingRulesObj{o} } // SetTarget is a mock for the corresponding method. func (m *MockBetaForwardingRules) SetTarget(ctx context.Context, key *meta.Key, arg0 *beta.TargetReference) error { if m.SetTargetHook != nil { return m.SetTargetHook(ctx, key, arg0, m) } return nil } // GCEBetaForwardingRules is a simplifying adapter for the GCE ForwardingRules. type GCEBetaForwardingRules struct { s *Service } // Get the ForwardingRule named by key. func (g *GCEBetaForwardingRules) Get(ctx context.Context, key *meta.Key) (*beta.ForwardingRule, error) { klog.V(5).Infof("GCEBetaForwardingRules.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaForwardingRules.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "ForwardingRules") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("beta"), Service: "ForwardingRules", } klog.V(5).Infof("GCEBetaForwardingRules.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaForwardingRules.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Beta.ForwardingRules.Get(projectID, key.Region, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEBetaForwardingRules.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all ForwardingRule objects. func (g *GCEBetaForwardingRules) List(ctx context.Context, region string, fl *filter.F) ([]*beta.ForwardingRule, error) { klog.V(5).Infof("GCEBetaForwardingRules.List(%v, %v, %v) called", ctx, region, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "ForwardingRules") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("beta"), Service: "ForwardingRules", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEBetaForwardingRules.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk) call := g.s.Beta.ForwardingRules.List(projectID, region) if fl != filter.None { call.Filter(fl.String()) } var all []*beta.ForwardingRule f := func(l *beta.ForwardingRuleList) error { klog.V(5).Infof("GCEBetaForwardingRules.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEBetaForwardingRules.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEBetaForwardingRules.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEBetaForwardingRules.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert ForwardingRule with key of value obj. func (g *GCEBetaForwardingRules) Insert(ctx context.Context, key *meta.Key, obj *beta.ForwardingRule) error { klog.V(5).Infof("GCEBetaForwardingRules.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEBetaForwardingRules.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "ForwardingRules") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("beta"), Service: "ForwardingRules", } klog.V(5).Infof("GCEBetaForwardingRules.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaForwardingRules.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Beta.ForwardingRules.Insert(projectID, key.Region, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaForwardingRules.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaForwardingRules.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the ForwardingRule referenced by key. func (g *GCEBetaForwardingRules) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEBetaForwardingRules.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaForwardingRules.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "ForwardingRules") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("beta"), Service: "ForwardingRules", } klog.V(5).Infof("GCEBetaForwardingRules.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaForwardingRules.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.ForwardingRules.Delete(projectID, key.Region, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaForwardingRules.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaForwardingRules.Delete(%v, %v) = %v", ctx, key, err) return err } // SetTarget is a method on GCEBetaForwardingRules. func (g *GCEBetaForwardingRules) SetTarget(ctx context.Context, key *meta.Key, arg0 *beta.TargetReference) error { klog.V(5).Infof("GCEBetaForwardingRules.SetTarget(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaForwardingRules.SetTarget(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "ForwardingRules") rk := &RateLimitKey{ ProjectID: projectID, Operation: "SetTarget", Version: meta.Version("beta"), Service: "ForwardingRules", } klog.V(5).Infof("GCEBetaForwardingRules.SetTarget(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaForwardingRules.SetTarget(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.ForwardingRules.SetTarget(projectID, key.Region, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaForwardingRules.SetTarget(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaForwardingRules.SetTarget(%v, %v, ...) = %+v", ctx, key, err) return err } // AlphaGlobalForwardingRules is an interface that allows for mocking of GlobalForwardingRules. type AlphaGlobalForwardingRules interface { Get(ctx context.Context, key *meta.Key) (*alpha.ForwardingRule, error) List(ctx context.Context, fl *filter.F) ([]*alpha.ForwardingRule, error) Insert(ctx context.Context, key *meta.Key, obj *alpha.ForwardingRule) error Delete(ctx context.Context, key *meta.Key) error SetTarget(context.Context, *meta.Key, *alpha.TargetReference) error } // NewMockAlphaGlobalForwardingRules returns a new mock for GlobalForwardingRules. func NewMockAlphaGlobalForwardingRules(pr ProjectRouter, objs map[meta.Key]*MockGlobalForwardingRulesObj) *MockAlphaGlobalForwardingRules { mock := &MockAlphaGlobalForwardingRules{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockAlphaGlobalForwardingRules is the mock for GlobalForwardingRules. type MockAlphaGlobalForwardingRules struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockGlobalForwardingRulesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaGlobalForwardingRules) (bool, *alpha.ForwardingRule, error) ListHook func(ctx context.Context, fl *filter.F, m *MockAlphaGlobalForwardingRules) (bool, []*alpha.ForwardingRule, error) InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.ForwardingRule, m *MockAlphaGlobalForwardingRules) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaGlobalForwardingRules) (bool, error) SetTargetHook func(context.Context, *meta.Key, *alpha.TargetReference, *MockAlphaGlobalForwardingRules) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockAlphaGlobalForwardingRules) Get(ctx context.Context, key *meta.Key) (*alpha.ForwardingRule, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaGlobalForwardingRules.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockAlphaGlobalForwardingRules.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToAlpha() klog.V(5).Infof("MockAlphaGlobalForwardingRules.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaGlobalForwardingRules %v not found", key), } klog.V(5).Infof("MockAlphaGlobalForwardingRules.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockAlphaGlobalForwardingRules) List(ctx context.Context, fl *filter.F) ([]*alpha.ForwardingRule, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockAlphaGlobalForwardingRules.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockAlphaGlobalForwardingRules.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*alpha.ForwardingRule for _, obj := range m.Objects { if !fl.Match(obj.ToAlpha()) { continue } objs = append(objs, obj.ToAlpha()) } klog.V(5).Infof("MockAlphaGlobalForwardingRules.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockAlphaGlobalForwardingRules) Insert(ctx context.Context, key *meta.Key, obj *alpha.ForwardingRule) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockAlphaGlobalForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockAlphaGlobalForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockAlphaGlobalForwardingRules %v exists", key), } klog.V(5).Infof("MockAlphaGlobalForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "forwardingRules") obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "forwardingRules", key) m.Objects[*key] = &MockGlobalForwardingRulesObj{obj} klog.V(5).Infof("MockAlphaGlobalForwardingRules.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockAlphaGlobalForwardingRules) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaGlobalForwardingRules.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockAlphaGlobalForwardingRules.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaGlobalForwardingRules %v not found", key), } klog.V(5).Infof("MockAlphaGlobalForwardingRules.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockAlphaGlobalForwardingRules.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockAlphaGlobalForwardingRules) Obj(o *alpha.ForwardingRule) *MockGlobalForwardingRulesObj { return &MockGlobalForwardingRulesObj{o} } // SetTarget is a mock for the corresponding method. func (m *MockAlphaGlobalForwardingRules) SetTarget(ctx context.Context, key *meta.Key, arg0 *alpha.TargetReference) error { if m.SetTargetHook != nil { return m.SetTargetHook(ctx, key, arg0, m) } return nil } // GCEAlphaGlobalForwardingRules is a simplifying adapter for the GCE GlobalForwardingRules. type GCEAlphaGlobalForwardingRules struct { s *Service } // Get the ForwardingRule named by key. func (g *GCEAlphaGlobalForwardingRules) Get(ctx context.Context, key *meta.Key) (*alpha.ForwardingRule, error) { klog.V(5).Infof("GCEAlphaGlobalForwardingRules.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaGlobalForwardingRules.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "GlobalForwardingRules") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("alpha"), Service: "GlobalForwardingRules", } klog.V(5).Infof("GCEAlphaGlobalForwardingRules.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaGlobalForwardingRules.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Alpha.GlobalForwardingRules.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEAlphaGlobalForwardingRules.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all ForwardingRule objects. func (g *GCEAlphaGlobalForwardingRules) List(ctx context.Context, fl *filter.F) ([]*alpha.ForwardingRule, error) { klog.V(5).Infof("GCEAlphaGlobalForwardingRules.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "GlobalForwardingRules") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("alpha"), Service: "GlobalForwardingRules", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEAlphaGlobalForwardingRules.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.Alpha.GlobalForwardingRules.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*alpha.ForwardingRule f := func(l *alpha.ForwardingRuleList) error { klog.V(5).Infof("GCEAlphaGlobalForwardingRules.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEAlphaGlobalForwardingRules.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEAlphaGlobalForwardingRules.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEAlphaGlobalForwardingRules.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert ForwardingRule with key of value obj. func (g *GCEAlphaGlobalForwardingRules) Insert(ctx context.Context, key *meta.Key, obj *alpha.ForwardingRule) error { klog.V(5).Infof("GCEAlphaGlobalForwardingRules.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEAlphaGlobalForwardingRules.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "GlobalForwardingRules") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("alpha"), Service: "GlobalForwardingRules", } klog.V(5).Infof("GCEAlphaGlobalForwardingRules.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaGlobalForwardingRules.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Alpha.GlobalForwardingRules.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaGlobalForwardingRules.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaGlobalForwardingRules.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the ForwardingRule referenced by key. func (g *GCEAlphaGlobalForwardingRules) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEAlphaGlobalForwardingRules.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaGlobalForwardingRules.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "GlobalForwardingRules") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("alpha"), Service: "GlobalForwardingRules", } klog.V(5).Infof("GCEAlphaGlobalForwardingRules.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaGlobalForwardingRules.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.GlobalForwardingRules.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaGlobalForwardingRules.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaGlobalForwardingRules.Delete(%v, %v) = %v", ctx, key, err) return err } // SetTarget is a method on GCEAlphaGlobalForwardingRules. func (g *GCEAlphaGlobalForwardingRules) SetTarget(ctx context.Context, key *meta.Key, arg0 *alpha.TargetReference) error { klog.V(5).Infof("GCEAlphaGlobalForwardingRules.SetTarget(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaGlobalForwardingRules.SetTarget(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "GlobalForwardingRules") rk := &RateLimitKey{ ProjectID: projectID, Operation: "SetTarget", Version: meta.Version("alpha"), Service: "GlobalForwardingRules", } klog.V(5).Infof("GCEAlphaGlobalForwardingRules.SetTarget(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaGlobalForwardingRules.SetTarget(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.GlobalForwardingRules.SetTarget(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaGlobalForwardingRules.SetTarget(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaGlobalForwardingRules.SetTarget(%v, %v, ...) = %+v", ctx, key, err) return err } // BetaGlobalForwardingRules is an interface that allows for mocking of GlobalForwardingRules. type BetaGlobalForwardingRules interface { Get(ctx context.Context, key *meta.Key) (*beta.ForwardingRule, error) List(ctx context.Context, fl *filter.F) ([]*beta.ForwardingRule, error) Insert(ctx context.Context, key *meta.Key, obj *beta.ForwardingRule) error Delete(ctx context.Context, key *meta.Key) error SetTarget(context.Context, *meta.Key, *beta.TargetReference) error } // NewMockBetaGlobalForwardingRules returns a new mock for GlobalForwardingRules. func NewMockBetaGlobalForwardingRules(pr ProjectRouter, objs map[meta.Key]*MockGlobalForwardingRulesObj) *MockBetaGlobalForwardingRules { mock := &MockBetaGlobalForwardingRules{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockBetaGlobalForwardingRules is the mock for GlobalForwardingRules. type MockBetaGlobalForwardingRules struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockGlobalForwardingRulesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaGlobalForwardingRules) (bool, *beta.ForwardingRule, error) ListHook func(ctx context.Context, fl *filter.F, m *MockBetaGlobalForwardingRules) (bool, []*beta.ForwardingRule, error) InsertHook func(ctx context.Context, key *meta.Key, obj *beta.ForwardingRule, m *MockBetaGlobalForwardingRules) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaGlobalForwardingRules) (bool, error) SetTargetHook func(context.Context, *meta.Key, *beta.TargetReference, *MockBetaGlobalForwardingRules) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockBetaGlobalForwardingRules) Get(ctx context.Context, key *meta.Key) (*beta.ForwardingRule, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaGlobalForwardingRules.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockBetaGlobalForwardingRules.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToBeta() klog.V(5).Infof("MockBetaGlobalForwardingRules.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaGlobalForwardingRules %v not found", key), } klog.V(5).Infof("MockBetaGlobalForwardingRules.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockBetaGlobalForwardingRules) List(ctx context.Context, fl *filter.F) ([]*beta.ForwardingRule, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockBetaGlobalForwardingRules.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockBetaGlobalForwardingRules.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*beta.ForwardingRule for _, obj := range m.Objects { if !fl.Match(obj.ToBeta()) { continue } objs = append(objs, obj.ToBeta()) } klog.V(5).Infof("MockBetaGlobalForwardingRules.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockBetaGlobalForwardingRules) Insert(ctx context.Context, key *meta.Key, obj *beta.ForwardingRule) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockBetaGlobalForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockBetaGlobalForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockBetaGlobalForwardingRules %v exists", key), } klog.V(5).Infof("MockBetaGlobalForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "beta", "forwardingRules") obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "forwardingRules", key) m.Objects[*key] = &MockGlobalForwardingRulesObj{obj} klog.V(5).Infof("MockBetaGlobalForwardingRules.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockBetaGlobalForwardingRules) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaGlobalForwardingRules.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockBetaGlobalForwardingRules.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaGlobalForwardingRules %v not found", key), } klog.V(5).Infof("MockBetaGlobalForwardingRules.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockBetaGlobalForwardingRules.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockBetaGlobalForwardingRules) Obj(o *beta.ForwardingRule) *MockGlobalForwardingRulesObj { return &MockGlobalForwardingRulesObj{o} } // SetTarget is a mock for the corresponding method. func (m *MockBetaGlobalForwardingRules) SetTarget(ctx context.Context, key *meta.Key, arg0 *beta.TargetReference) error { if m.SetTargetHook != nil { return m.SetTargetHook(ctx, key, arg0, m) } return nil } // GCEBetaGlobalForwardingRules is a simplifying adapter for the GCE GlobalForwardingRules. type GCEBetaGlobalForwardingRules struct { s *Service } // Get the ForwardingRule named by key. func (g *GCEBetaGlobalForwardingRules) Get(ctx context.Context, key *meta.Key) (*beta.ForwardingRule, error) { klog.V(5).Infof("GCEBetaGlobalForwardingRules.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaGlobalForwardingRules.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "GlobalForwardingRules") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("beta"), Service: "GlobalForwardingRules", } klog.V(5).Infof("GCEBetaGlobalForwardingRules.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaGlobalForwardingRules.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Beta.GlobalForwardingRules.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEBetaGlobalForwardingRules.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all ForwardingRule objects. func (g *GCEBetaGlobalForwardingRules) List(ctx context.Context, fl *filter.F) ([]*beta.ForwardingRule, error) { klog.V(5).Infof("GCEBetaGlobalForwardingRules.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "GlobalForwardingRules") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("beta"), Service: "GlobalForwardingRules", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEBetaGlobalForwardingRules.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.Beta.GlobalForwardingRules.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*beta.ForwardingRule f := func(l *beta.ForwardingRuleList) error { klog.V(5).Infof("GCEBetaGlobalForwardingRules.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEBetaGlobalForwardingRules.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEBetaGlobalForwardingRules.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEBetaGlobalForwardingRules.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert ForwardingRule with key of value obj. func (g *GCEBetaGlobalForwardingRules) Insert(ctx context.Context, key *meta.Key, obj *beta.ForwardingRule) error { klog.V(5).Infof("GCEBetaGlobalForwardingRules.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEBetaGlobalForwardingRules.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "GlobalForwardingRules") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("beta"), Service: "GlobalForwardingRules", } klog.V(5).Infof("GCEBetaGlobalForwardingRules.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaGlobalForwardingRules.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Beta.GlobalForwardingRules.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaGlobalForwardingRules.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaGlobalForwardingRules.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the ForwardingRule referenced by key. func (g *GCEBetaGlobalForwardingRules) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEBetaGlobalForwardingRules.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaGlobalForwardingRules.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "GlobalForwardingRules") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("beta"), Service: "GlobalForwardingRules", } klog.V(5).Infof("GCEBetaGlobalForwardingRules.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaGlobalForwardingRules.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.GlobalForwardingRules.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaGlobalForwardingRules.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaGlobalForwardingRules.Delete(%v, %v) = %v", ctx, key, err) return err } // SetTarget is a method on GCEBetaGlobalForwardingRules. func (g *GCEBetaGlobalForwardingRules) SetTarget(ctx context.Context, key *meta.Key, arg0 *beta.TargetReference) error { klog.V(5).Infof("GCEBetaGlobalForwardingRules.SetTarget(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaGlobalForwardingRules.SetTarget(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "GlobalForwardingRules") rk := &RateLimitKey{ ProjectID: projectID, Operation: "SetTarget", Version: meta.Version("beta"), Service: "GlobalForwardingRules", } klog.V(5).Infof("GCEBetaGlobalForwardingRules.SetTarget(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaGlobalForwardingRules.SetTarget(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.GlobalForwardingRules.SetTarget(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaGlobalForwardingRules.SetTarget(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaGlobalForwardingRules.SetTarget(%v, %v, ...) = %+v", ctx, key, err) return err } // GlobalForwardingRules is an interface that allows for mocking of GlobalForwardingRules. type GlobalForwardingRules interface { Get(ctx context.Context, key *meta.Key) (*ga.ForwardingRule, error) List(ctx context.Context, fl *filter.F) ([]*ga.ForwardingRule, error) Insert(ctx context.Context, key *meta.Key, obj *ga.ForwardingRule) error Delete(ctx context.Context, key *meta.Key) error SetTarget(context.Context, *meta.Key, *ga.TargetReference) error } // NewMockGlobalForwardingRules returns a new mock for GlobalForwardingRules. func NewMockGlobalForwardingRules(pr ProjectRouter, objs map[meta.Key]*MockGlobalForwardingRulesObj) *MockGlobalForwardingRules { mock := &MockGlobalForwardingRules{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockGlobalForwardingRules is the mock for GlobalForwardingRules. type MockGlobalForwardingRules struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockGlobalForwardingRulesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockGlobalForwardingRules) (bool, *ga.ForwardingRule, error) ListHook func(ctx context.Context, fl *filter.F, m *MockGlobalForwardingRules) (bool, []*ga.ForwardingRule, error) InsertHook func(ctx context.Context, key *meta.Key, obj *ga.ForwardingRule, m *MockGlobalForwardingRules) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockGlobalForwardingRules) (bool, error) SetTargetHook func(context.Context, *meta.Key, *ga.TargetReference, *MockGlobalForwardingRules) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockGlobalForwardingRules) Get(ctx context.Context, key *meta.Key) (*ga.ForwardingRule, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockGlobalForwardingRules.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockGlobalForwardingRules.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToGA() klog.V(5).Infof("MockGlobalForwardingRules.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockGlobalForwardingRules %v not found", key), } klog.V(5).Infof("MockGlobalForwardingRules.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockGlobalForwardingRules) List(ctx context.Context, fl *filter.F) ([]*ga.ForwardingRule, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockGlobalForwardingRules.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockGlobalForwardingRules.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*ga.ForwardingRule for _, obj := range m.Objects { if !fl.Match(obj.ToGA()) { continue } objs = append(objs, obj.ToGA()) } klog.V(5).Infof("MockGlobalForwardingRules.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockGlobalForwardingRules) Insert(ctx context.Context, key *meta.Key, obj *ga.ForwardingRule) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockGlobalForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockGlobalForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockGlobalForwardingRules %v exists", key), } klog.V(5).Infof("MockGlobalForwardingRules.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "ga", "forwardingRules") obj.SelfLink = SelfLink(meta.VersionGA, projectID, "forwardingRules", key) m.Objects[*key] = &MockGlobalForwardingRulesObj{obj} klog.V(5).Infof("MockGlobalForwardingRules.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockGlobalForwardingRules) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockGlobalForwardingRules.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockGlobalForwardingRules.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockGlobalForwardingRules %v not found", key), } klog.V(5).Infof("MockGlobalForwardingRules.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockGlobalForwardingRules.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockGlobalForwardingRules) Obj(o *ga.ForwardingRule) *MockGlobalForwardingRulesObj { return &MockGlobalForwardingRulesObj{o} } // SetTarget is a mock for the corresponding method. func (m *MockGlobalForwardingRules) SetTarget(ctx context.Context, key *meta.Key, arg0 *ga.TargetReference) error { if m.SetTargetHook != nil { return m.SetTargetHook(ctx, key, arg0, m) } return nil } // GCEGlobalForwardingRules is a simplifying adapter for the GCE GlobalForwardingRules. type GCEGlobalForwardingRules struct { s *Service } // Get the ForwardingRule named by key. func (g *GCEGlobalForwardingRules) Get(ctx context.Context, key *meta.Key) (*ga.ForwardingRule, error) { klog.V(5).Infof("GCEGlobalForwardingRules.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEGlobalForwardingRules.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "GlobalForwardingRules") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("ga"), Service: "GlobalForwardingRules", } klog.V(5).Infof("GCEGlobalForwardingRules.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEGlobalForwardingRules.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.GlobalForwardingRules.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEGlobalForwardingRules.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all ForwardingRule objects. func (g *GCEGlobalForwardingRules) List(ctx context.Context, fl *filter.F) ([]*ga.ForwardingRule, error) { klog.V(5).Infof("GCEGlobalForwardingRules.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "GlobalForwardingRules") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("ga"), Service: "GlobalForwardingRules", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEGlobalForwardingRules.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.GA.GlobalForwardingRules.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*ga.ForwardingRule f := func(l *ga.ForwardingRuleList) error { klog.V(5).Infof("GCEGlobalForwardingRules.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEGlobalForwardingRules.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEGlobalForwardingRules.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEGlobalForwardingRules.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert ForwardingRule with key of value obj. func (g *GCEGlobalForwardingRules) Insert(ctx context.Context, key *meta.Key, obj *ga.ForwardingRule) error { klog.V(5).Infof("GCEGlobalForwardingRules.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEGlobalForwardingRules.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "GlobalForwardingRules") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("ga"), Service: "GlobalForwardingRules", } klog.V(5).Infof("GCEGlobalForwardingRules.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEGlobalForwardingRules.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.GA.GlobalForwardingRules.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEGlobalForwardingRules.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEGlobalForwardingRules.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the ForwardingRule referenced by key. func (g *GCEGlobalForwardingRules) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEGlobalForwardingRules.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEGlobalForwardingRules.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "GlobalForwardingRules") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("ga"), Service: "GlobalForwardingRules", } klog.V(5).Infof("GCEGlobalForwardingRules.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEGlobalForwardingRules.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.GlobalForwardingRules.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEGlobalForwardingRules.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEGlobalForwardingRules.Delete(%v, %v) = %v", ctx, key, err) return err } // SetTarget is a method on GCEGlobalForwardingRules. func (g *GCEGlobalForwardingRules) SetTarget(ctx context.Context, key *meta.Key, arg0 *ga.TargetReference) error { klog.V(5).Infof("GCEGlobalForwardingRules.SetTarget(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEGlobalForwardingRules.SetTarget(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "GlobalForwardingRules") rk := &RateLimitKey{ ProjectID: projectID, Operation: "SetTarget", Version: meta.Version("ga"), Service: "GlobalForwardingRules", } klog.V(5).Infof("GCEGlobalForwardingRules.SetTarget(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEGlobalForwardingRules.SetTarget(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.GlobalForwardingRules.SetTarget(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEGlobalForwardingRules.SetTarget(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEGlobalForwardingRules.SetTarget(%v, %v, ...) = %+v", ctx, key, err) return err } // HealthChecks is an interface that allows for mocking of HealthChecks. type HealthChecks interface { Get(ctx context.Context, key *meta.Key) (*ga.HealthCheck, error) List(ctx context.Context, fl *filter.F) ([]*ga.HealthCheck, error) Insert(ctx context.Context, key *meta.Key, obj *ga.HealthCheck) error Delete(ctx context.Context, key *meta.Key) error Update(context.Context, *meta.Key, *ga.HealthCheck) error } // NewMockHealthChecks returns a new mock for HealthChecks. func NewMockHealthChecks(pr ProjectRouter, objs map[meta.Key]*MockHealthChecksObj) *MockHealthChecks { mock := &MockHealthChecks{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockHealthChecks is the mock for HealthChecks. type MockHealthChecks struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockHealthChecksObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockHealthChecks) (bool, *ga.HealthCheck, error) ListHook func(ctx context.Context, fl *filter.F, m *MockHealthChecks) (bool, []*ga.HealthCheck, error) InsertHook func(ctx context.Context, key *meta.Key, obj *ga.HealthCheck, m *MockHealthChecks) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockHealthChecks) (bool, error) UpdateHook func(context.Context, *meta.Key, *ga.HealthCheck, *MockHealthChecks) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockHealthChecks) Get(ctx context.Context, key *meta.Key) (*ga.HealthCheck, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockHealthChecks.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToGA() klog.V(5).Infof("MockHealthChecks.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockHealthChecks %v not found", key), } klog.V(5).Infof("MockHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockHealthChecks) List(ctx context.Context, fl *filter.F) ([]*ga.HealthCheck, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockHealthChecks.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockHealthChecks.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*ga.HealthCheck for _, obj := range m.Objects { if !fl.Match(obj.ToGA()) { continue } objs = append(objs, obj.ToGA()) } klog.V(5).Infof("MockHealthChecks.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *ga.HealthCheck) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockHealthChecks %v exists", key), } klog.V(5).Infof("MockHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "ga", "healthChecks") obj.SelfLink = SelfLink(meta.VersionGA, projectID, "healthChecks", key) m.Objects[*key] = &MockHealthChecksObj{obj} klog.V(5).Infof("MockHealthChecks.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockHealthChecks) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockHealthChecks %v not found", key), } klog.V(5).Infof("MockHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockHealthChecks.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockHealthChecks) Obj(o *ga.HealthCheck) *MockHealthChecksObj { return &MockHealthChecksObj{o} } // Update is a mock for the corresponding method. func (m *MockHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *ga.HealthCheck) error { if m.UpdateHook != nil { return m.UpdateHook(ctx, key, arg0, m) } return nil } // GCEHealthChecks is a simplifying adapter for the GCE HealthChecks. type GCEHealthChecks struct { s *Service } // Get the HealthCheck named by key. func (g *GCEHealthChecks) Get(ctx context.Context, key *meta.Key) (*ga.HealthCheck, error) { klog.V(5).Infof("GCEHealthChecks.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEHealthChecks.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "HealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("ga"), Service: "HealthChecks", } klog.V(5).Infof("GCEHealthChecks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEHealthChecks.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.HealthChecks.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEHealthChecks.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all HealthCheck objects. func (g *GCEHealthChecks) List(ctx context.Context, fl *filter.F) ([]*ga.HealthCheck, error) { klog.V(5).Infof("GCEHealthChecks.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "HealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("ga"), Service: "HealthChecks", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEHealthChecks.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.GA.HealthChecks.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*ga.HealthCheck f := func(l *ga.HealthCheckList) error { klog.V(5).Infof("GCEHealthChecks.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEHealthChecks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert HealthCheck with key of value obj. func (g *GCEHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *ga.HealthCheck) error { klog.V(5).Infof("GCEHealthChecks.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEHealthChecks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "HealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("ga"), Service: "HealthChecks", } klog.V(5).Infof("GCEHealthChecks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEHealthChecks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.GA.HealthChecks.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEHealthChecks.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEHealthChecks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the HealthCheck referenced by key. func (g *GCEHealthChecks) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEHealthChecks.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEHealthChecks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "HealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("ga"), Service: "HealthChecks", } klog.V(5).Infof("GCEHealthChecks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEHealthChecks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.HealthChecks.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } // Update is a method on GCEHealthChecks. func (g *GCEHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *ga.HealthCheck) error { klog.V(5).Infof("GCEHealthChecks.Update(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEHealthChecks.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "HealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Update", Version: meta.Version("ga"), Service: "HealthChecks", } klog.V(5).Infof("GCEHealthChecks.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEHealthChecks.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.HealthChecks.Update(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err) return err } // AlphaHealthChecks is an interface that allows for mocking of HealthChecks. type AlphaHealthChecks interface { Get(ctx context.Context, key *meta.Key) (*alpha.HealthCheck, error) List(ctx context.Context, fl *filter.F) ([]*alpha.HealthCheck, error) Insert(ctx context.Context, key *meta.Key, obj *alpha.HealthCheck) error Delete(ctx context.Context, key *meta.Key) error Update(context.Context, *meta.Key, *alpha.HealthCheck) error } // NewMockAlphaHealthChecks returns a new mock for HealthChecks. func NewMockAlphaHealthChecks(pr ProjectRouter, objs map[meta.Key]*MockHealthChecksObj) *MockAlphaHealthChecks { mock := &MockAlphaHealthChecks{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockAlphaHealthChecks is the mock for HealthChecks. type MockAlphaHealthChecks struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockHealthChecksObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaHealthChecks) (bool, *alpha.HealthCheck, error) ListHook func(ctx context.Context, fl *filter.F, m *MockAlphaHealthChecks) (bool, []*alpha.HealthCheck, error) InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.HealthCheck, m *MockAlphaHealthChecks) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaHealthChecks) (bool, error) UpdateHook func(context.Context, *meta.Key, *alpha.HealthCheck, *MockAlphaHealthChecks) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockAlphaHealthChecks) Get(ctx context.Context, key *meta.Key) (*alpha.HealthCheck, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaHealthChecks.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockAlphaHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToAlpha() klog.V(5).Infof("MockAlphaHealthChecks.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaHealthChecks %v not found", key), } klog.V(5).Infof("MockAlphaHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockAlphaHealthChecks) List(ctx context.Context, fl *filter.F) ([]*alpha.HealthCheck, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockAlphaHealthChecks.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockAlphaHealthChecks.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*alpha.HealthCheck for _, obj := range m.Objects { if !fl.Match(obj.ToAlpha()) { continue } objs = append(objs, obj.ToAlpha()) } klog.V(5).Infof("MockAlphaHealthChecks.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockAlphaHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *alpha.HealthCheck) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockAlphaHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockAlphaHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockAlphaHealthChecks %v exists", key), } klog.V(5).Infof("MockAlphaHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "healthChecks") obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "healthChecks", key) m.Objects[*key] = &MockHealthChecksObj{obj} klog.V(5).Infof("MockAlphaHealthChecks.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockAlphaHealthChecks) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockAlphaHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaHealthChecks %v not found", key), } klog.V(5).Infof("MockAlphaHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockAlphaHealthChecks.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockAlphaHealthChecks) Obj(o *alpha.HealthCheck) *MockHealthChecksObj { return &MockHealthChecksObj{o} } // Update is a mock for the corresponding method. func (m *MockAlphaHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *alpha.HealthCheck) error { if m.UpdateHook != nil { return m.UpdateHook(ctx, key, arg0, m) } return nil } // GCEAlphaHealthChecks is a simplifying adapter for the GCE HealthChecks. type GCEAlphaHealthChecks struct { s *Service } // Get the HealthCheck named by key. func (g *GCEAlphaHealthChecks) Get(ctx context.Context, key *meta.Key) (*alpha.HealthCheck, error) { klog.V(5).Infof("GCEAlphaHealthChecks.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaHealthChecks.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "HealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("alpha"), Service: "HealthChecks", } klog.V(5).Infof("GCEAlphaHealthChecks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaHealthChecks.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Alpha.HealthChecks.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEAlphaHealthChecks.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all HealthCheck objects. func (g *GCEAlphaHealthChecks) List(ctx context.Context, fl *filter.F) ([]*alpha.HealthCheck, error) { klog.V(5).Infof("GCEAlphaHealthChecks.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "HealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("alpha"), Service: "HealthChecks", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEAlphaHealthChecks.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.Alpha.HealthChecks.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*alpha.HealthCheck f := func(l *alpha.HealthCheckList) error { klog.V(5).Infof("GCEAlphaHealthChecks.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEAlphaHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEAlphaHealthChecks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEAlphaHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert HealthCheck with key of value obj. func (g *GCEAlphaHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *alpha.HealthCheck) error { klog.V(5).Infof("GCEAlphaHealthChecks.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEAlphaHealthChecks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "HealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("alpha"), Service: "HealthChecks", } klog.V(5).Infof("GCEAlphaHealthChecks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaHealthChecks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Alpha.HealthChecks.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaHealthChecks.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaHealthChecks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the HealthCheck referenced by key. func (g *GCEAlphaHealthChecks) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEAlphaHealthChecks.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaHealthChecks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "HealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("alpha"), Service: "HealthChecks", } klog.V(5).Infof("GCEAlphaHealthChecks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaHealthChecks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.HealthChecks.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } // Update is a method on GCEAlphaHealthChecks. func (g *GCEAlphaHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *alpha.HealthCheck) error { klog.V(5).Infof("GCEAlphaHealthChecks.Update(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaHealthChecks.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "HealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Update", Version: meta.Version("alpha"), Service: "HealthChecks", } klog.V(5).Infof("GCEAlphaHealthChecks.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaHealthChecks.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.HealthChecks.Update(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err) return err } // BetaHealthChecks is an interface that allows for mocking of HealthChecks. type BetaHealthChecks interface { Get(ctx context.Context, key *meta.Key) (*beta.HealthCheck, error) List(ctx context.Context, fl *filter.F) ([]*beta.HealthCheck, error) Insert(ctx context.Context, key *meta.Key, obj *beta.HealthCheck) error Delete(ctx context.Context, key *meta.Key) error Update(context.Context, *meta.Key, *beta.HealthCheck) error } // NewMockBetaHealthChecks returns a new mock for HealthChecks. func NewMockBetaHealthChecks(pr ProjectRouter, objs map[meta.Key]*MockHealthChecksObj) *MockBetaHealthChecks { mock := &MockBetaHealthChecks{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockBetaHealthChecks is the mock for HealthChecks. type MockBetaHealthChecks struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockHealthChecksObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaHealthChecks) (bool, *beta.HealthCheck, error) ListHook func(ctx context.Context, fl *filter.F, m *MockBetaHealthChecks) (bool, []*beta.HealthCheck, error) InsertHook func(ctx context.Context, key *meta.Key, obj *beta.HealthCheck, m *MockBetaHealthChecks) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaHealthChecks) (bool, error) UpdateHook func(context.Context, *meta.Key, *beta.HealthCheck, *MockBetaHealthChecks) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockBetaHealthChecks) Get(ctx context.Context, key *meta.Key) (*beta.HealthCheck, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaHealthChecks.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockBetaHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToBeta() klog.V(5).Infof("MockBetaHealthChecks.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaHealthChecks %v not found", key), } klog.V(5).Infof("MockBetaHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockBetaHealthChecks) List(ctx context.Context, fl *filter.F) ([]*beta.HealthCheck, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockBetaHealthChecks.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockBetaHealthChecks.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*beta.HealthCheck for _, obj := range m.Objects { if !fl.Match(obj.ToBeta()) { continue } objs = append(objs, obj.ToBeta()) } klog.V(5).Infof("MockBetaHealthChecks.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockBetaHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *beta.HealthCheck) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockBetaHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockBetaHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockBetaHealthChecks %v exists", key), } klog.V(5).Infof("MockBetaHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "beta", "healthChecks") obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "healthChecks", key) m.Objects[*key] = &MockHealthChecksObj{obj} klog.V(5).Infof("MockBetaHealthChecks.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockBetaHealthChecks) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockBetaHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaHealthChecks %v not found", key), } klog.V(5).Infof("MockBetaHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockBetaHealthChecks.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockBetaHealthChecks) Obj(o *beta.HealthCheck) *MockHealthChecksObj { return &MockHealthChecksObj{o} } // Update is a mock for the corresponding method. func (m *MockBetaHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *beta.HealthCheck) error { if m.UpdateHook != nil { return m.UpdateHook(ctx, key, arg0, m) } return nil } // GCEBetaHealthChecks is a simplifying adapter for the GCE HealthChecks. type GCEBetaHealthChecks struct { s *Service } // Get the HealthCheck named by key. func (g *GCEBetaHealthChecks) Get(ctx context.Context, key *meta.Key) (*beta.HealthCheck, error) { klog.V(5).Infof("GCEBetaHealthChecks.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaHealthChecks.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "HealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("beta"), Service: "HealthChecks", } klog.V(5).Infof("GCEBetaHealthChecks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaHealthChecks.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Beta.HealthChecks.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEBetaHealthChecks.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all HealthCheck objects. func (g *GCEBetaHealthChecks) List(ctx context.Context, fl *filter.F) ([]*beta.HealthCheck, error) { klog.V(5).Infof("GCEBetaHealthChecks.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "HealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("beta"), Service: "HealthChecks", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEBetaHealthChecks.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.Beta.HealthChecks.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*beta.HealthCheck f := func(l *beta.HealthCheckList) error { klog.V(5).Infof("GCEBetaHealthChecks.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEBetaHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEBetaHealthChecks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEBetaHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert HealthCheck with key of value obj. func (g *GCEBetaHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *beta.HealthCheck) error { klog.V(5).Infof("GCEBetaHealthChecks.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEBetaHealthChecks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "HealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("beta"), Service: "HealthChecks", } klog.V(5).Infof("GCEBetaHealthChecks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaHealthChecks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Beta.HealthChecks.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaHealthChecks.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaHealthChecks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the HealthCheck referenced by key. func (g *GCEBetaHealthChecks) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEBetaHealthChecks.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaHealthChecks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "HealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("beta"), Service: "HealthChecks", } klog.V(5).Infof("GCEBetaHealthChecks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaHealthChecks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.HealthChecks.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } // Update is a method on GCEBetaHealthChecks. func (g *GCEBetaHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *beta.HealthCheck) error { klog.V(5).Infof("GCEBetaHealthChecks.Update(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaHealthChecks.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "HealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Update", Version: meta.Version("beta"), Service: "HealthChecks", } klog.V(5).Infof("GCEBetaHealthChecks.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaHealthChecks.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.HealthChecks.Update(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err) return err } // AlphaRegionHealthChecks is an interface that allows for mocking of RegionHealthChecks. type AlphaRegionHealthChecks interface { Get(ctx context.Context, key *meta.Key) (*alpha.HealthCheck, error) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.HealthCheck, error) Insert(ctx context.Context, key *meta.Key, obj *alpha.HealthCheck) error Delete(ctx context.Context, key *meta.Key) error Update(context.Context, *meta.Key, *alpha.HealthCheck) error } // NewMockAlphaRegionHealthChecks returns a new mock for RegionHealthChecks. func NewMockAlphaRegionHealthChecks(pr ProjectRouter, objs map[meta.Key]*MockRegionHealthChecksObj) *MockAlphaRegionHealthChecks { mock := &MockAlphaRegionHealthChecks{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockAlphaRegionHealthChecks is the mock for RegionHealthChecks. type MockAlphaRegionHealthChecks struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockRegionHealthChecksObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaRegionHealthChecks) (bool, *alpha.HealthCheck, error) ListHook func(ctx context.Context, region string, fl *filter.F, m *MockAlphaRegionHealthChecks) (bool, []*alpha.HealthCheck, error) InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.HealthCheck, m *MockAlphaRegionHealthChecks) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaRegionHealthChecks) (bool, error) UpdateHook func(context.Context, *meta.Key, *alpha.HealthCheck, *MockAlphaRegionHealthChecks) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockAlphaRegionHealthChecks) Get(ctx context.Context, key *meta.Key) (*alpha.HealthCheck, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaRegionHealthChecks.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockAlphaRegionHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToAlpha() klog.V(5).Infof("MockAlphaRegionHealthChecks.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaRegionHealthChecks %v not found", key), } klog.V(5).Infof("MockAlphaRegionHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given region. func (m *MockAlphaRegionHealthChecks) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.HealthCheck, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept { klog.V(5).Infof("MockAlphaRegionHealthChecks.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockAlphaRegionHealthChecks.List(%v, %q, %v) = nil, %v", ctx, region, fl, err) return nil, *m.ListError } var objs []*alpha.HealthCheck for key, obj := range m.Objects { if key.Region != region { continue } if !fl.Match(obj.ToAlpha()) { continue } objs = append(objs, obj.ToAlpha()) } klog.V(5).Infof("MockAlphaRegionHealthChecks.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockAlphaRegionHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *alpha.HealthCheck) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockAlphaRegionHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockAlphaRegionHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockAlphaRegionHealthChecks %v exists", key), } klog.V(5).Infof("MockAlphaRegionHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "healthChecks") obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "healthChecks", key) m.Objects[*key] = &MockRegionHealthChecksObj{obj} klog.V(5).Infof("MockAlphaRegionHealthChecks.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockAlphaRegionHealthChecks) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaRegionHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockAlphaRegionHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaRegionHealthChecks %v not found", key), } klog.V(5).Infof("MockAlphaRegionHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockAlphaRegionHealthChecks.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockAlphaRegionHealthChecks) Obj(o *alpha.HealthCheck) *MockRegionHealthChecksObj { return &MockRegionHealthChecksObj{o} } // Update is a mock for the corresponding method. func (m *MockAlphaRegionHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *alpha.HealthCheck) error { if m.UpdateHook != nil { return m.UpdateHook(ctx, key, arg0, m) } return nil } // GCEAlphaRegionHealthChecks is a simplifying adapter for the GCE RegionHealthChecks. type GCEAlphaRegionHealthChecks struct { s *Service } // Get the HealthCheck named by key. func (g *GCEAlphaRegionHealthChecks) Get(ctx context.Context, key *meta.Key) (*alpha.HealthCheck, error) { klog.V(5).Infof("GCEAlphaRegionHealthChecks.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaRegionHealthChecks.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionHealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("alpha"), Service: "RegionHealthChecks", } klog.V(5).Infof("GCEAlphaRegionHealthChecks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaRegionHealthChecks.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Alpha.RegionHealthChecks.Get(projectID, key.Region, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEAlphaRegionHealthChecks.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all HealthCheck objects. func (g *GCEAlphaRegionHealthChecks) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.HealthCheck, error) { klog.V(5).Infof("GCEAlphaRegionHealthChecks.List(%v, %v, %v) called", ctx, region, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionHealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("alpha"), Service: "RegionHealthChecks", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEAlphaRegionHealthChecks.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk) call := g.s.Alpha.RegionHealthChecks.List(projectID, region) if fl != filter.None { call.Filter(fl.String()) } var all []*alpha.HealthCheck f := func(l *alpha.HealthCheckList) error { klog.V(5).Infof("GCEAlphaRegionHealthChecks.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEAlphaRegionHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEAlphaRegionHealthChecks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEAlphaRegionHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert HealthCheck with key of value obj. func (g *GCEAlphaRegionHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *alpha.HealthCheck) error { klog.V(5).Infof("GCEAlphaRegionHealthChecks.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEAlphaRegionHealthChecks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionHealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("alpha"), Service: "RegionHealthChecks", } klog.V(5).Infof("GCEAlphaRegionHealthChecks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaRegionHealthChecks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Alpha.RegionHealthChecks.Insert(projectID, key.Region, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaRegionHealthChecks.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaRegionHealthChecks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the HealthCheck referenced by key. func (g *GCEAlphaRegionHealthChecks) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEAlphaRegionHealthChecks.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaRegionHealthChecks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionHealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("alpha"), Service: "RegionHealthChecks", } klog.V(5).Infof("GCEAlphaRegionHealthChecks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaRegionHealthChecks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.RegionHealthChecks.Delete(projectID, key.Region, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaRegionHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaRegionHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } // Update is a method on GCEAlphaRegionHealthChecks. func (g *GCEAlphaRegionHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *alpha.HealthCheck) error { klog.V(5).Infof("GCEAlphaRegionHealthChecks.Update(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaRegionHealthChecks.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionHealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Update", Version: meta.Version("alpha"), Service: "RegionHealthChecks", } klog.V(5).Infof("GCEAlphaRegionHealthChecks.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaRegionHealthChecks.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.RegionHealthChecks.Update(projectID, key.Region, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaRegionHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaRegionHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err) return err } // BetaRegionHealthChecks is an interface that allows for mocking of RegionHealthChecks. type BetaRegionHealthChecks interface { Get(ctx context.Context, key *meta.Key) (*beta.HealthCheck, error) List(ctx context.Context, region string, fl *filter.F) ([]*beta.HealthCheck, error) Insert(ctx context.Context, key *meta.Key, obj *beta.HealthCheck) error Delete(ctx context.Context, key *meta.Key) error Update(context.Context, *meta.Key, *beta.HealthCheck) error } // NewMockBetaRegionHealthChecks returns a new mock for RegionHealthChecks. func NewMockBetaRegionHealthChecks(pr ProjectRouter, objs map[meta.Key]*MockRegionHealthChecksObj) *MockBetaRegionHealthChecks { mock := &MockBetaRegionHealthChecks{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockBetaRegionHealthChecks is the mock for RegionHealthChecks. type MockBetaRegionHealthChecks struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockRegionHealthChecksObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaRegionHealthChecks) (bool, *beta.HealthCheck, error) ListHook func(ctx context.Context, region string, fl *filter.F, m *MockBetaRegionHealthChecks) (bool, []*beta.HealthCheck, error) InsertHook func(ctx context.Context, key *meta.Key, obj *beta.HealthCheck, m *MockBetaRegionHealthChecks) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaRegionHealthChecks) (bool, error) UpdateHook func(context.Context, *meta.Key, *beta.HealthCheck, *MockBetaRegionHealthChecks) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockBetaRegionHealthChecks) Get(ctx context.Context, key *meta.Key) (*beta.HealthCheck, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaRegionHealthChecks.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockBetaRegionHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToBeta() klog.V(5).Infof("MockBetaRegionHealthChecks.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaRegionHealthChecks %v not found", key), } klog.V(5).Infof("MockBetaRegionHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given region. func (m *MockBetaRegionHealthChecks) List(ctx context.Context, region string, fl *filter.F) ([]*beta.HealthCheck, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept { klog.V(5).Infof("MockBetaRegionHealthChecks.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockBetaRegionHealthChecks.List(%v, %q, %v) = nil, %v", ctx, region, fl, err) return nil, *m.ListError } var objs []*beta.HealthCheck for key, obj := range m.Objects { if key.Region != region { continue } if !fl.Match(obj.ToBeta()) { continue } objs = append(objs, obj.ToBeta()) } klog.V(5).Infof("MockBetaRegionHealthChecks.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockBetaRegionHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *beta.HealthCheck) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockBetaRegionHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockBetaRegionHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockBetaRegionHealthChecks %v exists", key), } klog.V(5).Infof("MockBetaRegionHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "beta", "healthChecks") obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "healthChecks", key) m.Objects[*key] = &MockRegionHealthChecksObj{obj} klog.V(5).Infof("MockBetaRegionHealthChecks.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockBetaRegionHealthChecks) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaRegionHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockBetaRegionHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaRegionHealthChecks %v not found", key), } klog.V(5).Infof("MockBetaRegionHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockBetaRegionHealthChecks.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockBetaRegionHealthChecks) Obj(o *beta.HealthCheck) *MockRegionHealthChecksObj { return &MockRegionHealthChecksObj{o} } // Update is a mock for the corresponding method. func (m *MockBetaRegionHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *beta.HealthCheck) error { if m.UpdateHook != nil { return m.UpdateHook(ctx, key, arg0, m) } return nil } // GCEBetaRegionHealthChecks is a simplifying adapter for the GCE RegionHealthChecks. type GCEBetaRegionHealthChecks struct { s *Service } // Get the HealthCheck named by key. func (g *GCEBetaRegionHealthChecks) Get(ctx context.Context, key *meta.Key) (*beta.HealthCheck, error) { klog.V(5).Infof("GCEBetaRegionHealthChecks.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaRegionHealthChecks.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionHealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("beta"), Service: "RegionHealthChecks", } klog.V(5).Infof("GCEBetaRegionHealthChecks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaRegionHealthChecks.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Beta.RegionHealthChecks.Get(projectID, key.Region, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEBetaRegionHealthChecks.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all HealthCheck objects. func (g *GCEBetaRegionHealthChecks) List(ctx context.Context, region string, fl *filter.F) ([]*beta.HealthCheck, error) { klog.V(5).Infof("GCEBetaRegionHealthChecks.List(%v, %v, %v) called", ctx, region, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionHealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("beta"), Service: "RegionHealthChecks", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEBetaRegionHealthChecks.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk) call := g.s.Beta.RegionHealthChecks.List(projectID, region) if fl != filter.None { call.Filter(fl.String()) } var all []*beta.HealthCheck f := func(l *beta.HealthCheckList) error { klog.V(5).Infof("GCEBetaRegionHealthChecks.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEBetaRegionHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEBetaRegionHealthChecks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEBetaRegionHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert HealthCheck with key of value obj. func (g *GCEBetaRegionHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *beta.HealthCheck) error { klog.V(5).Infof("GCEBetaRegionHealthChecks.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEBetaRegionHealthChecks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionHealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("beta"), Service: "RegionHealthChecks", } klog.V(5).Infof("GCEBetaRegionHealthChecks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaRegionHealthChecks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Beta.RegionHealthChecks.Insert(projectID, key.Region, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaRegionHealthChecks.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaRegionHealthChecks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the HealthCheck referenced by key. func (g *GCEBetaRegionHealthChecks) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEBetaRegionHealthChecks.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaRegionHealthChecks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionHealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("beta"), Service: "RegionHealthChecks", } klog.V(5).Infof("GCEBetaRegionHealthChecks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaRegionHealthChecks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.RegionHealthChecks.Delete(projectID, key.Region, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaRegionHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaRegionHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } // Update is a method on GCEBetaRegionHealthChecks. func (g *GCEBetaRegionHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *beta.HealthCheck) error { klog.V(5).Infof("GCEBetaRegionHealthChecks.Update(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaRegionHealthChecks.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionHealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Update", Version: meta.Version("beta"), Service: "RegionHealthChecks", } klog.V(5).Infof("GCEBetaRegionHealthChecks.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaRegionHealthChecks.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.RegionHealthChecks.Update(projectID, key.Region, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaRegionHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaRegionHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err) return err } // RegionHealthChecks is an interface that allows for mocking of RegionHealthChecks. type RegionHealthChecks interface { Get(ctx context.Context, key *meta.Key) (*ga.HealthCheck, error) List(ctx context.Context, region string, fl *filter.F) ([]*ga.HealthCheck, error) Insert(ctx context.Context, key *meta.Key, obj *ga.HealthCheck) error Delete(ctx context.Context, key *meta.Key) error Update(context.Context, *meta.Key, *ga.HealthCheck) error } // NewMockRegionHealthChecks returns a new mock for RegionHealthChecks. func NewMockRegionHealthChecks(pr ProjectRouter, objs map[meta.Key]*MockRegionHealthChecksObj) *MockRegionHealthChecks { mock := &MockRegionHealthChecks{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockRegionHealthChecks is the mock for RegionHealthChecks. type MockRegionHealthChecks struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockRegionHealthChecksObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockRegionHealthChecks) (bool, *ga.HealthCheck, error) ListHook func(ctx context.Context, region string, fl *filter.F, m *MockRegionHealthChecks) (bool, []*ga.HealthCheck, error) InsertHook func(ctx context.Context, key *meta.Key, obj *ga.HealthCheck, m *MockRegionHealthChecks) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockRegionHealthChecks) (bool, error) UpdateHook func(context.Context, *meta.Key, *ga.HealthCheck, *MockRegionHealthChecks) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockRegionHealthChecks) Get(ctx context.Context, key *meta.Key) (*ga.HealthCheck, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockRegionHealthChecks.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockRegionHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToGA() klog.V(5).Infof("MockRegionHealthChecks.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockRegionHealthChecks %v not found", key), } klog.V(5).Infof("MockRegionHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given region. func (m *MockRegionHealthChecks) List(ctx context.Context, region string, fl *filter.F) ([]*ga.HealthCheck, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept { klog.V(5).Infof("MockRegionHealthChecks.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockRegionHealthChecks.List(%v, %q, %v) = nil, %v", ctx, region, fl, err) return nil, *m.ListError } var objs []*ga.HealthCheck for key, obj := range m.Objects { if key.Region != region { continue } if !fl.Match(obj.ToGA()) { continue } objs = append(objs, obj.ToGA()) } klog.V(5).Infof("MockRegionHealthChecks.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockRegionHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *ga.HealthCheck) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockRegionHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockRegionHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockRegionHealthChecks %v exists", key), } klog.V(5).Infof("MockRegionHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "ga", "healthChecks") obj.SelfLink = SelfLink(meta.VersionGA, projectID, "healthChecks", key) m.Objects[*key] = &MockRegionHealthChecksObj{obj} klog.V(5).Infof("MockRegionHealthChecks.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockRegionHealthChecks) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockRegionHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockRegionHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockRegionHealthChecks %v not found", key), } klog.V(5).Infof("MockRegionHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockRegionHealthChecks.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockRegionHealthChecks) Obj(o *ga.HealthCheck) *MockRegionHealthChecksObj { return &MockRegionHealthChecksObj{o} } // Update is a mock for the corresponding method. func (m *MockRegionHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *ga.HealthCheck) error { if m.UpdateHook != nil { return m.UpdateHook(ctx, key, arg0, m) } return nil } // GCERegionHealthChecks is a simplifying adapter for the GCE RegionHealthChecks. type GCERegionHealthChecks struct { s *Service } // Get the HealthCheck named by key. func (g *GCERegionHealthChecks) Get(ctx context.Context, key *meta.Key) (*ga.HealthCheck, error) { klog.V(5).Infof("GCERegionHealthChecks.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCERegionHealthChecks.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionHealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("ga"), Service: "RegionHealthChecks", } klog.V(5).Infof("GCERegionHealthChecks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERegionHealthChecks.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.RegionHealthChecks.Get(projectID, key.Region, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCERegionHealthChecks.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all HealthCheck objects. func (g *GCERegionHealthChecks) List(ctx context.Context, region string, fl *filter.F) ([]*ga.HealthCheck, error) { klog.V(5).Infof("GCERegionHealthChecks.List(%v, %v, %v) called", ctx, region, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionHealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("ga"), Service: "RegionHealthChecks", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCERegionHealthChecks.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk) call := g.s.GA.RegionHealthChecks.List(projectID, region) if fl != filter.None { call.Filter(fl.String()) } var all []*ga.HealthCheck f := func(l *ga.HealthCheckList) error { klog.V(5).Infof("GCERegionHealthChecks.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCERegionHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCERegionHealthChecks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCERegionHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert HealthCheck with key of value obj. func (g *GCERegionHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *ga.HealthCheck) error { klog.V(5).Infof("GCERegionHealthChecks.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCERegionHealthChecks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionHealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("ga"), Service: "RegionHealthChecks", } klog.V(5).Infof("GCERegionHealthChecks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERegionHealthChecks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.GA.RegionHealthChecks.Insert(projectID, key.Region, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCERegionHealthChecks.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCERegionHealthChecks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the HealthCheck referenced by key. func (g *GCERegionHealthChecks) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCERegionHealthChecks.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCERegionHealthChecks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionHealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("ga"), Service: "RegionHealthChecks", } klog.V(5).Infof("GCERegionHealthChecks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERegionHealthChecks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.RegionHealthChecks.Delete(projectID, key.Region, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCERegionHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCERegionHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } // Update is a method on GCERegionHealthChecks. func (g *GCERegionHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *ga.HealthCheck) error { klog.V(5).Infof("GCERegionHealthChecks.Update(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCERegionHealthChecks.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionHealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Update", Version: meta.Version("ga"), Service: "RegionHealthChecks", } klog.V(5).Infof("GCERegionHealthChecks.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERegionHealthChecks.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.RegionHealthChecks.Update(projectID, key.Region, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCERegionHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCERegionHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err) return err } // HttpHealthChecks is an interface that allows for mocking of HttpHealthChecks. type HttpHealthChecks interface { Get(ctx context.Context, key *meta.Key) (*ga.HttpHealthCheck, error) List(ctx context.Context, fl *filter.F) ([]*ga.HttpHealthCheck, error) Insert(ctx context.Context, key *meta.Key, obj *ga.HttpHealthCheck) error Delete(ctx context.Context, key *meta.Key) error Update(context.Context, *meta.Key, *ga.HttpHealthCheck) error } // NewMockHttpHealthChecks returns a new mock for HttpHealthChecks. func NewMockHttpHealthChecks(pr ProjectRouter, objs map[meta.Key]*MockHttpHealthChecksObj) *MockHttpHealthChecks { mock := &MockHttpHealthChecks{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockHttpHealthChecks is the mock for HttpHealthChecks. type MockHttpHealthChecks struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockHttpHealthChecksObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockHttpHealthChecks) (bool, *ga.HttpHealthCheck, error) ListHook func(ctx context.Context, fl *filter.F, m *MockHttpHealthChecks) (bool, []*ga.HttpHealthCheck, error) InsertHook func(ctx context.Context, key *meta.Key, obj *ga.HttpHealthCheck, m *MockHttpHealthChecks) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockHttpHealthChecks) (bool, error) UpdateHook func(context.Context, *meta.Key, *ga.HttpHealthCheck, *MockHttpHealthChecks) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockHttpHealthChecks) Get(ctx context.Context, key *meta.Key) (*ga.HttpHealthCheck, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockHttpHealthChecks.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockHttpHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToGA() klog.V(5).Infof("MockHttpHealthChecks.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockHttpHealthChecks %v not found", key), } klog.V(5).Infof("MockHttpHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockHttpHealthChecks) List(ctx context.Context, fl *filter.F) ([]*ga.HttpHealthCheck, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockHttpHealthChecks.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockHttpHealthChecks.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*ga.HttpHealthCheck for _, obj := range m.Objects { if !fl.Match(obj.ToGA()) { continue } objs = append(objs, obj.ToGA()) } klog.V(5).Infof("MockHttpHealthChecks.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockHttpHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *ga.HttpHealthCheck) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockHttpHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockHttpHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockHttpHealthChecks %v exists", key), } klog.V(5).Infof("MockHttpHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "ga", "httpHealthChecks") obj.SelfLink = SelfLink(meta.VersionGA, projectID, "httpHealthChecks", key) m.Objects[*key] = &MockHttpHealthChecksObj{obj} klog.V(5).Infof("MockHttpHealthChecks.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockHttpHealthChecks) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockHttpHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockHttpHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockHttpHealthChecks %v not found", key), } klog.V(5).Infof("MockHttpHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockHttpHealthChecks.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockHttpHealthChecks) Obj(o *ga.HttpHealthCheck) *MockHttpHealthChecksObj { return &MockHttpHealthChecksObj{o} } // Update is a mock for the corresponding method. func (m *MockHttpHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *ga.HttpHealthCheck) error { if m.UpdateHook != nil { return m.UpdateHook(ctx, key, arg0, m) } return nil } // GCEHttpHealthChecks is a simplifying adapter for the GCE HttpHealthChecks. type GCEHttpHealthChecks struct { s *Service } // Get the HttpHealthCheck named by key. func (g *GCEHttpHealthChecks) Get(ctx context.Context, key *meta.Key) (*ga.HttpHealthCheck, error) { klog.V(5).Infof("GCEHttpHealthChecks.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEHttpHealthChecks.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "HttpHealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("ga"), Service: "HttpHealthChecks", } klog.V(5).Infof("GCEHttpHealthChecks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEHttpHealthChecks.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.HttpHealthChecks.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEHttpHealthChecks.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all HttpHealthCheck objects. func (g *GCEHttpHealthChecks) List(ctx context.Context, fl *filter.F) ([]*ga.HttpHealthCheck, error) { klog.V(5).Infof("GCEHttpHealthChecks.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "HttpHealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("ga"), Service: "HttpHealthChecks", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEHttpHealthChecks.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.GA.HttpHealthChecks.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*ga.HttpHealthCheck f := func(l *ga.HttpHealthCheckList) error { klog.V(5).Infof("GCEHttpHealthChecks.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEHttpHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEHttpHealthChecks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEHttpHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert HttpHealthCheck with key of value obj. func (g *GCEHttpHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *ga.HttpHealthCheck) error { klog.V(5).Infof("GCEHttpHealthChecks.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEHttpHealthChecks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "HttpHealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("ga"), Service: "HttpHealthChecks", } klog.V(5).Infof("GCEHttpHealthChecks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEHttpHealthChecks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.GA.HttpHealthChecks.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEHttpHealthChecks.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEHttpHealthChecks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the HttpHealthCheck referenced by key. func (g *GCEHttpHealthChecks) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEHttpHealthChecks.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEHttpHealthChecks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "HttpHealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("ga"), Service: "HttpHealthChecks", } klog.V(5).Infof("GCEHttpHealthChecks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEHttpHealthChecks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.HttpHealthChecks.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEHttpHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEHttpHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } // Update is a method on GCEHttpHealthChecks. func (g *GCEHttpHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *ga.HttpHealthCheck) error { klog.V(5).Infof("GCEHttpHealthChecks.Update(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEHttpHealthChecks.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "HttpHealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Update", Version: meta.Version("ga"), Service: "HttpHealthChecks", } klog.V(5).Infof("GCEHttpHealthChecks.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEHttpHealthChecks.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.HttpHealthChecks.Update(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEHttpHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEHttpHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err) return err } // HttpsHealthChecks is an interface that allows for mocking of HttpsHealthChecks. type HttpsHealthChecks interface { Get(ctx context.Context, key *meta.Key) (*ga.HttpsHealthCheck, error) List(ctx context.Context, fl *filter.F) ([]*ga.HttpsHealthCheck, error) Insert(ctx context.Context, key *meta.Key, obj *ga.HttpsHealthCheck) error Delete(ctx context.Context, key *meta.Key) error Update(context.Context, *meta.Key, *ga.HttpsHealthCheck) error } // NewMockHttpsHealthChecks returns a new mock for HttpsHealthChecks. func NewMockHttpsHealthChecks(pr ProjectRouter, objs map[meta.Key]*MockHttpsHealthChecksObj) *MockHttpsHealthChecks { mock := &MockHttpsHealthChecks{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockHttpsHealthChecks is the mock for HttpsHealthChecks. type MockHttpsHealthChecks struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockHttpsHealthChecksObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockHttpsHealthChecks) (bool, *ga.HttpsHealthCheck, error) ListHook func(ctx context.Context, fl *filter.F, m *MockHttpsHealthChecks) (bool, []*ga.HttpsHealthCheck, error) InsertHook func(ctx context.Context, key *meta.Key, obj *ga.HttpsHealthCheck, m *MockHttpsHealthChecks) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockHttpsHealthChecks) (bool, error) UpdateHook func(context.Context, *meta.Key, *ga.HttpsHealthCheck, *MockHttpsHealthChecks) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockHttpsHealthChecks) Get(ctx context.Context, key *meta.Key) (*ga.HttpsHealthCheck, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockHttpsHealthChecks.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockHttpsHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToGA() klog.V(5).Infof("MockHttpsHealthChecks.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockHttpsHealthChecks %v not found", key), } klog.V(5).Infof("MockHttpsHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockHttpsHealthChecks) List(ctx context.Context, fl *filter.F) ([]*ga.HttpsHealthCheck, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockHttpsHealthChecks.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockHttpsHealthChecks.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*ga.HttpsHealthCheck for _, obj := range m.Objects { if !fl.Match(obj.ToGA()) { continue } objs = append(objs, obj.ToGA()) } klog.V(5).Infof("MockHttpsHealthChecks.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockHttpsHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *ga.HttpsHealthCheck) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockHttpsHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockHttpsHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockHttpsHealthChecks %v exists", key), } klog.V(5).Infof("MockHttpsHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "ga", "httpsHealthChecks") obj.SelfLink = SelfLink(meta.VersionGA, projectID, "httpsHealthChecks", key) m.Objects[*key] = &MockHttpsHealthChecksObj{obj} klog.V(5).Infof("MockHttpsHealthChecks.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockHttpsHealthChecks) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockHttpsHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockHttpsHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockHttpsHealthChecks %v not found", key), } klog.V(5).Infof("MockHttpsHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockHttpsHealthChecks.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockHttpsHealthChecks) Obj(o *ga.HttpsHealthCheck) *MockHttpsHealthChecksObj { return &MockHttpsHealthChecksObj{o} } // Update is a mock for the corresponding method. func (m *MockHttpsHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *ga.HttpsHealthCheck) error { if m.UpdateHook != nil { return m.UpdateHook(ctx, key, arg0, m) } return nil } // GCEHttpsHealthChecks is a simplifying adapter for the GCE HttpsHealthChecks. type GCEHttpsHealthChecks struct { s *Service } // Get the HttpsHealthCheck named by key. func (g *GCEHttpsHealthChecks) Get(ctx context.Context, key *meta.Key) (*ga.HttpsHealthCheck, error) { klog.V(5).Infof("GCEHttpsHealthChecks.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEHttpsHealthChecks.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "HttpsHealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("ga"), Service: "HttpsHealthChecks", } klog.V(5).Infof("GCEHttpsHealthChecks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEHttpsHealthChecks.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.HttpsHealthChecks.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEHttpsHealthChecks.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all HttpsHealthCheck objects. func (g *GCEHttpsHealthChecks) List(ctx context.Context, fl *filter.F) ([]*ga.HttpsHealthCheck, error) { klog.V(5).Infof("GCEHttpsHealthChecks.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "HttpsHealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("ga"), Service: "HttpsHealthChecks", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEHttpsHealthChecks.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.GA.HttpsHealthChecks.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*ga.HttpsHealthCheck f := func(l *ga.HttpsHealthCheckList) error { klog.V(5).Infof("GCEHttpsHealthChecks.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEHttpsHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEHttpsHealthChecks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEHttpsHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert HttpsHealthCheck with key of value obj. func (g *GCEHttpsHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *ga.HttpsHealthCheck) error { klog.V(5).Infof("GCEHttpsHealthChecks.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEHttpsHealthChecks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "HttpsHealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("ga"), Service: "HttpsHealthChecks", } klog.V(5).Infof("GCEHttpsHealthChecks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEHttpsHealthChecks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.GA.HttpsHealthChecks.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEHttpsHealthChecks.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEHttpsHealthChecks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the HttpsHealthCheck referenced by key. func (g *GCEHttpsHealthChecks) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEHttpsHealthChecks.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEHttpsHealthChecks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "HttpsHealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("ga"), Service: "HttpsHealthChecks", } klog.V(5).Infof("GCEHttpsHealthChecks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEHttpsHealthChecks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.HttpsHealthChecks.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEHttpsHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEHttpsHealthChecks.Delete(%v, %v) = %v", ctx, key, err) return err } // Update is a method on GCEHttpsHealthChecks. func (g *GCEHttpsHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *ga.HttpsHealthCheck) error { klog.V(5).Infof("GCEHttpsHealthChecks.Update(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEHttpsHealthChecks.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "HttpsHealthChecks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Update", Version: meta.Version("ga"), Service: "HttpsHealthChecks", } klog.V(5).Infof("GCEHttpsHealthChecks.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEHttpsHealthChecks.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.HttpsHealthChecks.Update(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEHttpsHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEHttpsHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err) return err } // InstanceGroups is an interface that allows for mocking of InstanceGroups. type InstanceGroups interface { Get(ctx context.Context, key *meta.Key) (*ga.InstanceGroup, error) List(ctx context.Context, zone string, fl *filter.F) ([]*ga.InstanceGroup, error) Insert(ctx context.Context, key *meta.Key, obj *ga.InstanceGroup) error Delete(ctx context.Context, key *meta.Key) error AddInstances(context.Context, *meta.Key, *ga.InstanceGroupsAddInstancesRequest) error ListInstances(context.Context, *meta.Key, *ga.InstanceGroupsListInstancesRequest, *filter.F) ([]*ga.InstanceWithNamedPorts, error) RemoveInstances(context.Context, *meta.Key, *ga.InstanceGroupsRemoveInstancesRequest) error SetNamedPorts(context.Context, *meta.Key, *ga.InstanceGroupsSetNamedPortsRequest) error } // NewMockInstanceGroups returns a new mock for InstanceGroups. func NewMockInstanceGroups(pr ProjectRouter, objs map[meta.Key]*MockInstanceGroupsObj) *MockInstanceGroups { mock := &MockInstanceGroups{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockInstanceGroups is the mock for InstanceGroups. type MockInstanceGroups struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockInstanceGroupsObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockInstanceGroups) (bool, *ga.InstanceGroup, error) ListHook func(ctx context.Context, zone string, fl *filter.F, m *MockInstanceGroups) (bool, []*ga.InstanceGroup, error) InsertHook func(ctx context.Context, key *meta.Key, obj *ga.InstanceGroup, m *MockInstanceGroups) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockInstanceGroups) (bool, error) AddInstancesHook func(context.Context, *meta.Key, *ga.InstanceGroupsAddInstancesRequest, *MockInstanceGroups) error ListInstancesHook func(context.Context, *meta.Key, *ga.InstanceGroupsListInstancesRequest, *filter.F, *MockInstanceGroups) ([]*ga.InstanceWithNamedPorts, error) RemoveInstancesHook func(context.Context, *meta.Key, *ga.InstanceGroupsRemoveInstancesRequest, *MockInstanceGroups) error SetNamedPortsHook func(context.Context, *meta.Key, *ga.InstanceGroupsSetNamedPortsRequest, *MockInstanceGroups) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockInstanceGroups) Get(ctx context.Context, key *meta.Key) (*ga.InstanceGroup, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockInstanceGroups.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockInstanceGroups.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToGA() klog.V(5).Infof("MockInstanceGroups.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockInstanceGroups %v not found", key), } klog.V(5).Infof("MockInstanceGroups.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given zone. func (m *MockInstanceGroups) List(ctx context.Context, zone string, fl *filter.F) ([]*ga.InstanceGroup, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, zone, fl, m); intercept { klog.V(5).Infof("MockInstanceGroups.List(%v, %q, %v) = [%v items], %v", ctx, zone, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockInstanceGroups.List(%v, %q, %v) = nil, %v", ctx, zone, fl, err) return nil, *m.ListError } var objs []*ga.InstanceGroup for key, obj := range m.Objects { if key.Zone != zone { continue } if !fl.Match(obj.ToGA()) { continue } objs = append(objs, obj.ToGA()) } klog.V(5).Infof("MockInstanceGroups.List(%v, %q, %v) = [%v items], nil", ctx, zone, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockInstanceGroups) Insert(ctx context.Context, key *meta.Key, obj *ga.InstanceGroup) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockInstanceGroups.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockInstanceGroups.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockInstanceGroups %v exists", key), } klog.V(5).Infof("MockInstanceGroups.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "ga", "instanceGroups") obj.SelfLink = SelfLink(meta.VersionGA, projectID, "instanceGroups", key) m.Objects[*key] = &MockInstanceGroupsObj{obj} klog.V(5).Infof("MockInstanceGroups.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockInstanceGroups) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockInstanceGroups.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockInstanceGroups.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockInstanceGroups %v not found", key), } klog.V(5).Infof("MockInstanceGroups.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockInstanceGroups.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockInstanceGroups) Obj(o *ga.InstanceGroup) *MockInstanceGroupsObj { return &MockInstanceGroupsObj{o} } // AddInstances is a mock for the corresponding method. func (m *MockInstanceGroups) AddInstances(ctx context.Context, key *meta.Key, arg0 *ga.InstanceGroupsAddInstancesRequest) error { if m.AddInstancesHook != nil { return m.AddInstancesHook(ctx, key, arg0, m) } return nil } // ListInstances is a mock for the corresponding method. func (m *MockInstanceGroups) ListInstances(ctx context.Context, key *meta.Key, arg0 *ga.InstanceGroupsListInstancesRequest, fl *filter.F) ([]*ga.InstanceWithNamedPorts, error) { if m.ListInstancesHook != nil { return m.ListInstancesHook(ctx, key, arg0, fl, m) } return nil, nil } // RemoveInstances is a mock for the corresponding method. func (m *MockInstanceGroups) RemoveInstances(ctx context.Context, key *meta.Key, arg0 *ga.InstanceGroupsRemoveInstancesRequest) error { if m.RemoveInstancesHook != nil { return m.RemoveInstancesHook(ctx, key, arg0, m) } return nil } // SetNamedPorts is a mock for the corresponding method. func (m *MockInstanceGroups) SetNamedPorts(ctx context.Context, key *meta.Key, arg0 *ga.InstanceGroupsSetNamedPortsRequest) error { if m.SetNamedPortsHook != nil { return m.SetNamedPortsHook(ctx, key, arg0, m) } return nil } // GCEInstanceGroups is a simplifying adapter for the GCE InstanceGroups. type GCEInstanceGroups struct { s *Service } // Get the InstanceGroup named by key. func (g *GCEInstanceGroups) Get(ctx context.Context, key *meta.Key) (*ga.InstanceGroup, error) { klog.V(5).Infof("GCEInstanceGroups.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEInstanceGroups.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "InstanceGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("ga"), Service: "InstanceGroups", } klog.V(5).Infof("GCEInstanceGroups.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEInstanceGroups.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.InstanceGroups.Get(projectID, key.Zone, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEInstanceGroups.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all InstanceGroup objects. func (g *GCEInstanceGroups) List(ctx context.Context, zone string, fl *filter.F) ([]*ga.InstanceGroup, error) { klog.V(5).Infof("GCEInstanceGroups.List(%v, %v, %v) called", ctx, zone, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "InstanceGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("ga"), Service: "InstanceGroups", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEInstanceGroups.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, zone, fl, projectID, rk) call := g.s.GA.InstanceGroups.List(projectID, zone) if fl != filter.None { call.Filter(fl.String()) } var all []*ga.InstanceGroup f := func(l *ga.InstanceGroupList) error { klog.V(5).Infof("GCEInstanceGroups.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEInstanceGroups.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEInstanceGroups.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEInstanceGroups.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert InstanceGroup with key of value obj. func (g *GCEInstanceGroups) Insert(ctx context.Context, key *meta.Key, obj *ga.InstanceGroup) error { klog.V(5).Infof("GCEInstanceGroups.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEInstanceGroups.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "InstanceGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("ga"), Service: "InstanceGroups", } klog.V(5).Infof("GCEInstanceGroups.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEInstanceGroups.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.GA.InstanceGroups.Insert(projectID, key.Zone, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEInstanceGroups.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEInstanceGroups.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the InstanceGroup referenced by key. func (g *GCEInstanceGroups) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEInstanceGroups.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEInstanceGroups.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "InstanceGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("ga"), Service: "InstanceGroups", } klog.V(5).Infof("GCEInstanceGroups.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEInstanceGroups.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.InstanceGroups.Delete(projectID, key.Zone, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEInstanceGroups.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEInstanceGroups.Delete(%v, %v) = %v", ctx, key, err) return err } // AddInstances is a method on GCEInstanceGroups. func (g *GCEInstanceGroups) AddInstances(ctx context.Context, key *meta.Key, arg0 *ga.InstanceGroupsAddInstancesRequest) error { klog.V(5).Infof("GCEInstanceGroups.AddInstances(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEInstanceGroups.AddInstances(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "InstanceGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "AddInstances", Version: meta.Version("ga"), Service: "InstanceGroups", } klog.V(5).Infof("GCEInstanceGroups.AddInstances(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEInstanceGroups.AddInstances(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.InstanceGroups.AddInstances(projectID, key.Zone, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEInstanceGroups.AddInstances(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEInstanceGroups.AddInstances(%v, %v, ...) = %+v", ctx, key, err) return err } // ListInstances is a method on GCEInstanceGroups. func (g *GCEInstanceGroups) ListInstances(ctx context.Context, key *meta.Key, arg0 *ga.InstanceGroupsListInstancesRequest, fl *filter.F) ([]*ga.InstanceWithNamedPorts, error) { klog.V(5).Infof("GCEInstanceGroups.ListInstances(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEInstanceGroups.ListInstances(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "InstanceGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "ListInstances", Version: meta.Version("ga"), Service: "InstanceGroups", } klog.V(5).Infof("GCEInstanceGroups.ListInstances(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEInstanceGroups.ListInstances(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.InstanceGroups.ListInstances(projectID, key.Zone, key.Name, arg0) var all []*ga.InstanceWithNamedPorts f := func(l *ga.InstanceGroupsListInstances) error { klog.V(5).Infof("GCEInstanceGroups.ListInstances(%v, %v, ...): page %+v", ctx, key, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEInstanceGroups.ListInstances(%v, %v, ...) = %v, %v", ctx, key, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEInstanceGroups.ListInstances(%v, %v, ...) = [%v items], %v", ctx, key, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEInstanceGroups.ListInstances(%v, %v, ...) = %v, %v", ctx, key, asStr, nil) } return all, nil } // RemoveInstances is a method on GCEInstanceGroups. func (g *GCEInstanceGroups) RemoveInstances(ctx context.Context, key *meta.Key, arg0 *ga.InstanceGroupsRemoveInstancesRequest) error { klog.V(5).Infof("GCEInstanceGroups.RemoveInstances(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEInstanceGroups.RemoveInstances(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "InstanceGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "RemoveInstances", Version: meta.Version("ga"), Service: "InstanceGroups", } klog.V(5).Infof("GCEInstanceGroups.RemoveInstances(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEInstanceGroups.RemoveInstances(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.InstanceGroups.RemoveInstances(projectID, key.Zone, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEInstanceGroups.RemoveInstances(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEInstanceGroups.RemoveInstances(%v, %v, ...) = %+v", ctx, key, err) return err } // SetNamedPorts is a method on GCEInstanceGroups. func (g *GCEInstanceGroups) SetNamedPorts(ctx context.Context, key *meta.Key, arg0 *ga.InstanceGroupsSetNamedPortsRequest) error { klog.V(5).Infof("GCEInstanceGroups.SetNamedPorts(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEInstanceGroups.SetNamedPorts(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "InstanceGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "SetNamedPorts", Version: meta.Version("ga"), Service: "InstanceGroups", } klog.V(5).Infof("GCEInstanceGroups.SetNamedPorts(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEInstanceGroups.SetNamedPorts(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.InstanceGroups.SetNamedPorts(projectID, key.Zone, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEInstanceGroups.SetNamedPorts(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEInstanceGroups.SetNamedPorts(%v, %v, ...) = %+v", ctx, key, err) return err } // Instances is an interface that allows for mocking of Instances. type Instances interface { Get(ctx context.Context, key *meta.Key) (*ga.Instance, error) List(ctx context.Context, zone string, fl *filter.F) ([]*ga.Instance, error) Insert(ctx context.Context, key *meta.Key, obj *ga.Instance) error Delete(ctx context.Context, key *meta.Key) error AttachDisk(context.Context, *meta.Key, *ga.AttachedDisk) error DetachDisk(context.Context, *meta.Key, string) error } // NewMockInstances returns a new mock for Instances. func NewMockInstances(pr ProjectRouter, objs map[meta.Key]*MockInstancesObj) *MockInstances { mock := &MockInstances{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockInstances is the mock for Instances. type MockInstances struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockInstancesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockInstances) (bool, *ga.Instance, error) ListHook func(ctx context.Context, zone string, fl *filter.F, m *MockInstances) (bool, []*ga.Instance, error) InsertHook func(ctx context.Context, key *meta.Key, obj *ga.Instance, m *MockInstances) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockInstances) (bool, error) AttachDiskHook func(context.Context, *meta.Key, *ga.AttachedDisk, *MockInstances) error DetachDiskHook func(context.Context, *meta.Key, string, *MockInstances) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockInstances) Get(ctx context.Context, key *meta.Key) (*ga.Instance, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockInstances.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockInstances.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToGA() klog.V(5).Infof("MockInstances.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockInstances %v not found", key), } klog.V(5).Infof("MockInstances.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given zone. func (m *MockInstances) List(ctx context.Context, zone string, fl *filter.F) ([]*ga.Instance, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, zone, fl, m); intercept { klog.V(5).Infof("MockInstances.List(%v, %q, %v) = [%v items], %v", ctx, zone, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockInstances.List(%v, %q, %v) = nil, %v", ctx, zone, fl, err) return nil, *m.ListError } var objs []*ga.Instance for key, obj := range m.Objects { if key.Zone != zone { continue } if !fl.Match(obj.ToGA()) { continue } objs = append(objs, obj.ToGA()) } klog.V(5).Infof("MockInstances.List(%v, %q, %v) = [%v items], nil", ctx, zone, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockInstances) Insert(ctx context.Context, key *meta.Key, obj *ga.Instance) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockInstances.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockInstances.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockInstances %v exists", key), } klog.V(5).Infof("MockInstances.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "ga", "instances") obj.SelfLink = SelfLink(meta.VersionGA, projectID, "instances", key) m.Objects[*key] = &MockInstancesObj{obj} klog.V(5).Infof("MockInstances.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockInstances) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockInstances.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockInstances.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockInstances %v not found", key), } klog.V(5).Infof("MockInstances.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockInstances.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockInstances) Obj(o *ga.Instance) *MockInstancesObj { return &MockInstancesObj{o} } // AttachDisk is a mock for the corresponding method. func (m *MockInstances) AttachDisk(ctx context.Context, key *meta.Key, arg0 *ga.AttachedDisk) error { if m.AttachDiskHook != nil { return m.AttachDiskHook(ctx, key, arg0, m) } return nil } // DetachDisk is a mock for the corresponding method. func (m *MockInstances) DetachDisk(ctx context.Context, key *meta.Key, arg0 string) error { if m.DetachDiskHook != nil { return m.DetachDiskHook(ctx, key, arg0, m) } return nil } // GCEInstances is a simplifying adapter for the GCE Instances. type GCEInstances struct { s *Service } // Get the Instance named by key. func (g *GCEInstances) Get(ctx context.Context, key *meta.Key) (*ga.Instance, error) { klog.V(5).Infof("GCEInstances.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEInstances.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Instances") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("ga"), Service: "Instances", } klog.V(5).Infof("GCEInstances.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEInstances.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.Instances.Get(projectID, key.Zone, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEInstances.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all Instance objects. func (g *GCEInstances) List(ctx context.Context, zone string, fl *filter.F) ([]*ga.Instance, error) { klog.V(5).Infof("GCEInstances.List(%v, %v, %v) called", ctx, zone, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Instances") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("ga"), Service: "Instances", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEInstances.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, zone, fl, projectID, rk) call := g.s.GA.Instances.List(projectID, zone) if fl != filter.None { call.Filter(fl.String()) } var all []*ga.Instance f := func(l *ga.InstanceList) error { klog.V(5).Infof("GCEInstances.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEInstances.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEInstances.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEInstances.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert Instance with key of value obj. func (g *GCEInstances) Insert(ctx context.Context, key *meta.Key, obj *ga.Instance) error { klog.V(5).Infof("GCEInstances.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEInstances.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Instances") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("ga"), Service: "Instances", } klog.V(5).Infof("GCEInstances.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEInstances.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.GA.Instances.Insert(projectID, key.Zone, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEInstances.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEInstances.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the Instance referenced by key. func (g *GCEInstances) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEInstances.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEInstances.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Instances") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("ga"), Service: "Instances", } klog.V(5).Infof("GCEInstances.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEInstances.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.Instances.Delete(projectID, key.Zone, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEInstances.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEInstances.Delete(%v, %v) = %v", ctx, key, err) return err } // AttachDisk is a method on GCEInstances. func (g *GCEInstances) AttachDisk(ctx context.Context, key *meta.Key, arg0 *ga.AttachedDisk) error { klog.V(5).Infof("GCEInstances.AttachDisk(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEInstances.AttachDisk(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Instances") rk := &RateLimitKey{ ProjectID: projectID, Operation: "AttachDisk", Version: meta.Version("ga"), Service: "Instances", } klog.V(5).Infof("GCEInstances.AttachDisk(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEInstances.AttachDisk(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.Instances.AttachDisk(projectID, key.Zone, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEInstances.AttachDisk(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEInstances.AttachDisk(%v, %v, ...) = %+v", ctx, key, err) return err } // DetachDisk is a method on GCEInstances. func (g *GCEInstances) DetachDisk(ctx context.Context, key *meta.Key, arg0 string) error { klog.V(5).Infof("GCEInstances.DetachDisk(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEInstances.DetachDisk(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Instances") rk := &RateLimitKey{ ProjectID: projectID, Operation: "DetachDisk", Version: meta.Version("ga"), Service: "Instances", } klog.V(5).Infof("GCEInstances.DetachDisk(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEInstances.DetachDisk(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.Instances.DetachDisk(projectID, key.Zone, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEInstances.DetachDisk(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEInstances.DetachDisk(%v, %v, ...) = %+v", ctx, key, err) return err } // BetaInstances is an interface that allows for mocking of Instances. type BetaInstances interface { Get(ctx context.Context, key *meta.Key) (*beta.Instance, error) List(ctx context.Context, zone string, fl *filter.F) ([]*beta.Instance, error) Insert(ctx context.Context, key *meta.Key, obj *beta.Instance) error Delete(ctx context.Context, key *meta.Key) error AttachDisk(context.Context, *meta.Key, *beta.AttachedDisk) error DetachDisk(context.Context, *meta.Key, string) error UpdateNetworkInterface(context.Context, *meta.Key, string, *beta.NetworkInterface) error } // NewMockBetaInstances returns a new mock for Instances. func NewMockBetaInstances(pr ProjectRouter, objs map[meta.Key]*MockInstancesObj) *MockBetaInstances { mock := &MockBetaInstances{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockBetaInstances is the mock for Instances. type MockBetaInstances struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockInstancesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaInstances) (bool, *beta.Instance, error) ListHook func(ctx context.Context, zone string, fl *filter.F, m *MockBetaInstances) (bool, []*beta.Instance, error) InsertHook func(ctx context.Context, key *meta.Key, obj *beta.Instance, m *MockBetaInstances) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaInstances) (bool, error) AttachDiskHook func(context.Context, *meta.Key, *beta.AttachedDisk, *MockBetaInstances) error DetachDiskHook func(context.Context, *meta.Key, string, *MockBetaInstances) error UpdateNetworkInterfaceHook func(context.Context, *meta.Key, string, *beta.NetworkInterface, *MockBetaInstances) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockBetaInstances) Get(ctx context.Context, key *meta.Key) (*beta.Instance, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaInstances.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockBetaInstances.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToBeta() klog.V(5).Infof("MockBetaInstances.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaInstances %v not found", key), } klog.V(5).Infof("MockBetaInstances.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given zone. func (m *MockBetaInstances) List(ctx context.Context, zone string, fl *filter.F) ([]*beta.Instance, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, zone, fl, m); intercept { klog.V(5).Infof("MockBetaInstances.List(%v, %q, %v) = [%v items], %v", ctx, zone, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockBetaInstances.List(%v, %q, %v) = nil, %v", ctx, zone, fl, err) return nil, *m.ListError } var objs []*beta.Instance for key, obj := range m.Objects { if key.Zone != zone { continue } if !fl.Match(obj.ToBeta()) { continue } objs = append(objs, obj.ToBeta()) } klog.V(5).Infof("MockBetaInstances.List(%v, %q, %v) = [%v items], nil", ctx, zone, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockBetaInstances) Insert(ctx context.Context, key *meta.Key, obj *beta.Instance) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockBetaInstances.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockBetaInstances.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockBetaInstances %v exists", key), } klog.V(5).Infof("MockBetaInstances.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "beta", "instances") obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "instances", key) m.Objects[*key] = &MockInstancesObj{obj} klog.V(5).Infof("MockBetaInstances.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockBetaInstances) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaInstances.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockBetaInstances.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaInstances %v not found", key), } klog.V(5).Infof("MockBetaInstances.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockBetaInstances.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockBetaInstances) Obj(o *beta.Instance) *MockInstancesObj { return &MockInstancesObj{o} } // AttachDisk is a mock for the corresponding method. func (m *MockBetaInstances) AttachDisk(ctx context.Context, key *meta.Key, arg0 *beta.AttachedDisk) error { if m.AttachDiskHook != nil { return m.AttachDiskHook(ctx, key, arg0, m) } return nil } // DetachDisk is a mock for the corresponding method. func (m *MockBetaInstances) DetachDisk(ctx context.Context, key *meta.Key, arg0 string) error { if m.DetachDiskHook != nil { return m.DetachDiskHook(ctx, key, arg0, m) } return nil } // UpdateNetworkInterface is a mock for the corresponding method. func (m *MockBetaInstances) UpdateNetworkInterface(ctx context.Context, key *meta.Key, arg0 string, arg1 *beta.NetworkInterface) error { if m.UpdateNetworkInterfaceHook != nil { return m.UpdateNetworkInterfaceHook(ctx, key, arg0, arg1, m) } return nil } // GCEBetaInstances is a simplifying adapter for the GCE Instances. type GCEBetaInstances struct { s *Service } // Get the Instance named by key. func (g *GCEBetaInstances) Get(ctx context.Context, key *meta.Key) (*beta.Instance, error) { klog.V(5).Infof("GCEBetaInstances.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaInstances.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Instances") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("beta"), Service: "Instances", } klog.V(5).Infof("GCEBetaInstances.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaInstances.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Beta.Instances.Get(projectID, key.Zone, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEBetaInstances.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all Instance objects. func (g *GCEBetaInstances) List(ctx context.Context, zone string, fl *filter.F) ([]*beta.Instance, error) { klog.V(5).Infof("GCEBetaInstances.List(%v, %v, %v) called", ctx, zone, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Instances") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("beta"), Service: "Instances", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEBetaInstances.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, zone, fl, projectID, rk) call := g.s.Beta.Instances.List(projectID, zone) if fl != filter.None { call.Filter(fl.String()) } var all []*beta.Instance f := func(l *beta.InstanceList) error { klog.V(5).Infof("GCEBetaInstances.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEBetaInstances.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEBetaInstances.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEBetaInstances.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert Instance with key of value obj. func (g *GCEBetaInstances) Insert(ctx context.Context, key *meta.Key, obj *beta.Instance) error { klog.V(5).Infof("GCEBetaInstances.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEBetaInstances.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Instances") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("beta"), Service: "Instances", } klog.V(5).Infof("GCEBetaInstances.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaInstances.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Beta.Instances.Insert(projectID, key.Zone, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaInstances.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaInstances.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the Instance referenced by key. func (g *GCEBetaInstances) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEBetaInstances.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaInstances.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Instances") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("beta"), Service: "Instances", } klog.V(5).Infof("GCEBetaInstances.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaInstances.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.Instances.Delete(projectID, key.Zone, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaInstances.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaInstances.Delete(%v, %v) = %v", ctx, key, err) return err } // AttachDisk is a method on GCEBetaInstances. func (g *GCEBetaInstances) AttachDisk(ctx context.Context, key *meta.Key, arg0 *beta.AttachedDisk) error { klog.V(5).Infof("GCEBetaInstances.AttachDisk(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaInstances.AttachDisk(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Instances") rk := &RateLimitKey{ ProjectID: projectID, Operation: "AttachDisk", Version: meta.Version("beta"), Service: "Instances", } klog.V(5).Infof("GCEBetaInstances.AttachDisk(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaInstances.AttachDisk(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.Instances.AttachDisk(projectID, key.Zone, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaInstances.AttachDisk(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaInstances.AttachDisk(%v, %v, ...) = %+v", ctx, key, err) return err } // DetachDisk is a method on GCEBetaInstances. func (g *GCEBetaInstances) DetachDisk(ctx context.Context, key *meta.Key, arg0 string) error { klog.V(5).Infof("GCEBetaInstances.DetachDisk(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaInstances.DetachDisk(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Instances") rk := &RateLimitKey{ ProjectID: projectID, Operation: "DetachDisk", Version: meta.Version("beta"), Service: "Instances", } klog.V(5).Infof("GCEBetaInstances.DetachDisk(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaInstances.DetachDisk(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.Instances.DetachDisk(projectID, key.Zone, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaInstances.DetachDisk(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaInstances.DetachDisk(%v, %v, ...) = %+v", ctx, key, err) return err } // UpdateNetworkInterface is a method on GCEBetaInstances. func (g *GCEBetaInstances) UpdateNetworkInterface(ctx context.Context, key *meta.Key, arg0 string, arg1 *beta.NetworkInterface) error { klog.V(5).Infof("GCEBetaInstances.UpdateNetworkInterface(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaInstances.UpdateNetworkInterface(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Instances") rk := &RateLimitKey{ ProjectID: projectID, Operation: "UpdateNetworkInterface", Version: meta.Version("beta"), Service: "Instances", } klog.V(5).Infof("GCEBetaInstances.UpdateNetworkInterface(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaInstances.UpdateNetworkInterface(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.Instances.UpdateNetworkInterface(projectID, key.Zone, key.Name, arg0, arg1) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaInstances.UpdateNetworkInterface(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaInstances.UpdateNetworkInterface(%v, %v, ...) = %+v", ctx, key, err) return err } // AlphaInstances is an interface that allows for mocking of Instances. type AlphaInstances interface { Get(ctx context.Context, key *meta.Key) (*alpha.Instance, error) List(ctx context.Context, zone string, fl *filter.F) ([]*alpha.Instance, error) Insert(ctx context.Context, key *meta.Key, obj *alpha.Instance) error Delete(ctx context.Context, key *meta.Key) error AttachDisk(context.Context, *meta.Key, *alpha.AttachedDisk) error DetachDisk(context.Context, *meta.Key, string) error UpdateNetworkInterface(context.Context, *meta.Key, string, *alpha.NetworkInterface) error } // NewMockAlphaInstances returns a new mock for Instances. func NewMockAlphaInstances(pr ProjectRouter, objs map[meta.Key]*MockInstancesObj) *MockAlphaInstances { mock := &MockAlphaInstances{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockAlphaInstances is the mock for Instances. type MockAlphaInstances struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockInstancesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaInstances) (bool, *alpha.Instance, error) ListHook func(ctx context.Context, zone string, fl *filter.F, m *MockAlphaInstances) (bool, []*alpha.Instance, error) InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.Instance, m *MockAlphaInstances) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaInstances) (bool, error) AttachDiskHook func(context.Context, *meta.Key, *alpha.AttachedDisk, *MockAlphaInstances) error DetachDiskHook func(context.Context, *meta.Key, string, *MockAlphaInstances) error UpdateNetworkInterfaceHook func(context.Context, *meta.Key, string, *alpha.NetworkInterface, *MockAlphaInstances) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockAlphaInstances) Get(ctx context.Context, key *meta.Key) (*alpha.Instance, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaInstances.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockAlphaInstances.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToAlpha() klog.V(5).Infof("MockAlphaInstances.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaInstances %v not found", key), } klog.V(5).Infof("MockAlphaInstances.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given zone. func (m *MockAlphaInstances) List(ctx context.Context, zone string, fl *filter.F) ([]*alpha.Instance, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, zone, fl, m); intercept { klog.V(5).Infof("MockAlphaInstances.List(%v, %q, %v) = [%v items], %v", ctx, zone, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockAlphaInstances.List(%v, %q, %v) = nil, %v", ctx, zone, fl, err) return nil, *m.ListError } var objs []*alpha.Instance for key, obj := range m.Objects { if key.Zone != zone { continue } if !fl.Match(obj.ToAlpha()) { continue } objs = append(objs, obj.ToAlpha()) } klog.V(5).Infof("MockAlphaInstances.List(%v, %q, %v) = [%v items], nil", ctx, zone, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockAlphaInstances) Insert(ctx context.Context, key *meta.Key, obj *alpha.Instance) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockAlphaInstances.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockAlphaInstances.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockAlphaInstances %v exists", key), } klog.V(5).Infof("MockAlphaInstances.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "instances") obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "instances", key) m.Objects[*key] = &MockInstancesObj{obj} klog.V(5).Infof("MockAlphaInstances.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockAlphaInstances) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaInstances.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockAlphaInstances.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaInstances %v not found", key), } klog.V(5).Infof("MockAlphaInstances.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockAlphaInstances.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockAlphaInstances) Obj(o *alpha.Instance) *MockInstancesObj { return &MockInstancesObj{o} } // AttachDisk is a mock for the corresponding method. func (m *MockAlphaInstances) AttachDisk(ctx context.Context, key *meta.Key, arg0 *alpha.AttachedDisk) error { if m.AttachDiskHook != nil { return m.AttachDiskHook(ctx, key, arg0, m) } return nil } // DetachDisk is a mock for the corresponding method. func (m *MockAlphaInstances) DetachDisk(ctx context.Context, key *meta.Key, arg0 string) error { if m.DetachDiskHook != nil { return m.DetachDiskHook(ctx, key, arg0, m) } return nil } // UpdateNetworkInterface is a mock for the corresponding method. func (m *MockAlphaInstances) UpdateNetworkInterface(ctx context.Context, key *meta.Key, arg0 string, arg1 *alpha.NetworkInterface) error { if m.UpdateNetworkInterfaceHook != nil { return m.UpdateNetworkInterfaceHook(ctx, key, arg0, arg1, m) } return nil } // GCEAlphaInstances is a simplifying adapter for the GCE Instances. type GCEAlphaInstances struct { s *Service } // Get the Instance named by key. func (g *GCEAlphaInstances) Get(ctx context.Context, key *meta.Key) (*alpha.Instance, error) { klog.V(5).Infof("GCEAlphaInstances.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaInstances.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Instances") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("alpha"), Service: "Instances", } klog.V(5).Infof("GCEAlphaInstances.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaInstances.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Alpha.Instances.Get(projectID, key.Zone, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEAlphaInstances.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all Instance objects. func (g *GCEAlphaInstances) List(ctx context.Context, zone string, fl *filter.F) ([]*alpha.Instance, error) { klog.V(5).Infof("GCEAlphaInstances.List(%v, %v, %v) called", ctx, zone, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Instances") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("alpha"), Service: "Instances", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEAlphaInstances.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, zone, fl, projectID, rk) call := g.s.Alpha.Instances.List(projectID, zone) if fl != filter.None { call.Filter(fl.String()) } var all []*alpha.Instance f := func(l *alpha.InstanceList) error { klog.V(5).Infof("GCEAlphaInstances.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEAlphaInstances.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEAlphaInstances.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEAlphaInstances.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert Instance with key of value obj. func (g *GCEAlphaInstances) Insert(ctx context.Context, key *meta.Key, obj *alpha.Instance) error { klog.V(5).Infof("GCEAlphaInstances.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEAlphaInstances.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Instances") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("alpha"), Service: "Instances", } klog.V(5).Infof("GCEAlphaInstances.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaInstances.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Alpha.Instances.Insert(projectID, key.Zone, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaInstances.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaInstances.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the Instance referenced by key. func (g *GCEAlphaInstances) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEAlphaInstances.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaInstances.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Instances") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("alpha"), Service: "Instances", } klog.V(5).Infof("GCEAlphaInstances.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaInstances.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.Instances.Delete(projectID, key.Zone, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaInstances.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaInstances.Delete(%v, %v) = %v", ctx, key, err) return err } // AttachDisk is a method on GCEAlphaInstances. func (g *GCEAlphaInstances) AttachDisk(ctx context.Context, key *meta.Key, arg0 *alpha.AttachedDisk) error { klog.V(5).Infof("GCEAlphaInstances.AttachDisk(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaInstances.AttachDisk(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Instances") rk := &RateLimitKey{ ProjectID: projectID, Operation: "AttachDisk", Version: meta.Version("alpha"), Service: "Instances", } klog.V(5).Infof("GCEAlphaInstances.AttachDisk(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaInstances.AttachDisk(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.Instances.AttachDisk(projectID, key.Zone, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaInstances.AttachDisk(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaInstances.AttachDisk(%v, %v, ...) = %+v", ctx, key, err) return err } // DetachDisk is a method on GCEAlphaInstances. func (g *GCEAlphaInstances) DetachDisk(ctx context.Context, key *meta.Key, arg0 string) error { klog.V(5).Infof("GCEAlphaInstances.DetachDisk(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaInstances.DetachDisk(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Instances") rk := &RateLimitKey{ ProjectID: projectID, Operation: "DetachDisk", Version: meta.Version("alpha"), Service: "Instances", } klog.V(5).Infof("GCEAlphaInstances.DetachDisk(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaInstances.DetachDisk(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.Instances.DetachDisk(projectID, key.Zone, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaInstances.DetachDisk(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaInstances.DetachDisk(%v, %v, ...) = %+v", ctx, key, err) return err } // UpdateNetworkInterface is a method on GCEAlphaInstances. func (g *GCEAlphaInstances) UpdateNetworkInterface(ctx context.Context, key *meta.Key, arg0 string, arg1 *alpha.NetworkInterface) error { klog.V(5).Infof("GCEAlphaInstances.UpdateNetworkInterface(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaInstances.UpdateNetworkInterface(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Instances") rk := &RateLimitKey{ ProjectID: projectID, Operation: "UpdateNetworkInterface", Version: meta.Version("alpha"), Service: "Instances", } klog.V(5).Infof("GCEAlphaInstances.UpdateNetworkInterface(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaInstances.UpdateNetworkInterface(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.Instances.UpdateNetworkInterface(projectID, key.Zone, key.Name, arg0, arg1) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaInstances.UpdateNetworkInterface(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaInstances.UpdateNetworkInterface(%v, %v, ...) = %+v", ctx, key, err) return err } // AlphaNetworks is an interface that allows for mocking of Networks. type AlphaNetworks interface { Get(ctx context.Context, key *meta.Key) (*alpha.Network, error) List(ctx context.Context, fl *filter.F) ([]*alpha.Network, error) Insert(ctx context.Context, key *meta.Key, obj *alpha.Network) error Delete(ctx context.Context, key *meta.Key) error } // NewMockAlphaNetworks returns a new mock for Networks. func NewMockAlphaNetworks(pr ProjectRouter, objs map[meta.Key]*MockNetworksObj) *MockAlphaNetworks { mock := &MockAlphaNetworks{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockAlphaNetworks is the mock for Networks. type MockAlphaNetworks struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockNetworksObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaNetworks) (bool, *alpha.Network, error) ListHook func(ctx context.Context, fl *filter.F, m *MockAlphaNetworks) (bool, []*alpha.Network, error) InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.Network, m *MockAlphaNetworks) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaNetworks) (bool, error) // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockAlphaNetworks) Get(ctx context.Context, key *meta.Key) (*alpha.Network, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaNetworks.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockAlphaNetworks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToAlpha() klog.V(5).Infof("MockAlphaNetworks.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaNetworks %v not found", key), } klog.V(5).Infof("MockAlphaNetworks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockAlphaNetworks) List(ctx context.Context, fl *filter.F) ([]*alpha.Network, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockAlphaNetworks.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockAlphaNetworks.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*alpha.Network for _, obj := range m.Objects { if !fl.Match(obj.ToAlpha()) { continue } objs = append(objs, obj.ToAlpha()) } klog.V(5).Infof("MockAlphaNetworks.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockAlphaNetworks) Insert(ctx context.Context, key *meta.Key, obj *alpha.Network) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockAlphaNetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockAlphaNetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockAlphaNetworks %v exists", key), } klog.V(5).Infof("MockAlphaNetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "networks") obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "networks", key) m.Objects[*key] = &MockNetworksObj{obj} klog.V(5).Infof("MockAlphaNetworks.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockAlphaNetworks) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaNetworks.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockAlphaNetworks.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaNetworks %v not found", key), } klog.V(5).Infof("MockAlphaNetworks.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockAlphaNetworks.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockAlphaNetworks) Obj(o *alpha.Network) *MockNetworksObj { return &MockNetworksObj{o} } // GCEAlphaNetworks is a simplifying adapter for the GCE Networks. type GCEAlphaNetworks struct { s *Service } // Get the Network named by key. func (g *GCEAlphaNetworks) Get(ctx context.Context, key *meta.Key) (*alpha.Network, error) { klog.V(5).Infof("GCEAlphaNetworks.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaNetworks.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Networks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("alpha"), Service: "Networks", } klog.V(5).Infof("GCEAlphaNetworks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaNetworks.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Alpha.Networks.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEAlphaNetworks.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all Network objects. func (g *GCEAlphaNetworks) List(ctx context.Context, fl *filter.F) ([]*alpha.Network, error) { klog.V(5).Infof("GCEAlphaNetworks.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Networks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("alpha"), Service: "Networks", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEAlphaNetworks.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.Alpha.Networks.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*alpha.Network f := func(l *alpha.NetworkList) error { klog.V(5).Infof("GCEAlphaNetworks.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEAlphaNetworks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEAlphaNetworks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEAlphaNetworks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert Network with key of value obj. func (g *GCEAlphaNetworks) Insert(ctx context.Context, key *meta.Key, obj *alpha.Network) error { klog.V(5).Infof("GCEAlphaNetworks.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEAlphaNetworks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Networks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("alpha"), Service: "Networks", } klog.V(5).Infof("GCEAlphaNetworks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaNetworks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Alpha.Networks.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaNetworks.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaNetworks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the Network referenced by key. func (g *GCEAlphaNetworks) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEAlphaNetworks.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaNetworks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Networks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("alpha"), Service: "Networks", } klog.V(5).Infof("GCEAlphaNetworks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaNetworks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.Networks.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaNetworks.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaNetworks.Delete(%v, %v) = %v", ctx, key, err) return err } // BetaNetworks is an interface that allows for mocking of Networks. type BetaNetworks interface { Get(ctx context.Context, key *meta.Key) (*beta.Network, error) List(ctx context.Context, fl *filter.F) ([]*beta.Network, error) Insert(ctx context.Context, key *meta.Key, obj *beta.Network) error Delete(ctx context.Context, key *meta.Key) error } // NewMockBetaNetworks returns a new mock for Networks. func NewMockBetaNetworks(pr ProjectRouter, objs map[meta.Key]*MockNetworksObj) *MockBetaNetworks { mock := &MockBetaNetworks{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockBetaNetworks is the mock for Networks. type MockBetaNetworks struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockNetworksObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaNetworks) (bool, *beta.Network, error) ListHook func(ctx context.Context, fl *filter.F, m *MockBetaNetworks) (bool, []*beta.Network, error) InsertHook func(ctx context.Context, key *meta.Key, obj *beta.Network, m *MockBetaNetworks) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaNetworks) (bool, error) // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockBetaNetworks) Get(ctx context.Context, key *meta.Key) (*beta.Network, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaNetworks.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockBetaNetworks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToBeta() klog.V(5).Infof("MockBetaNetworks.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaNetworks %v not found", key), } klog.V(5).Infof("MockBetaNetworks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockBetaNetworks) List(ctx context.Context, fl *filter.F) ([]*beta.Network, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockBetaNetworks.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockBetaNetworks.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*beta.Network for _, obj := range m.Objects { if !fl.Match(obj.ToBeta()) { continue } objs = append(objs, obj.ToBeta()) } klog.V(5).Infof("MockBetaNetworks.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockBetaNetworks) Insert(ctx context.Context, key *meta.Key, obj *beta.Network) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockBetaNetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockBetaNetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockBetaNetworks %v exists", key), } klog.V(5).Infof("MockBetaNetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "beta", "networks") obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "networks", key) m.Objects[*key] = &MockNetworksObj{obj} klog.V(5).Infof("MockBetaNetworks.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockBetaNetworks) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaNetworks.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockBetaNetworks.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaNetworks %v not found", key), } klog.V(5).Infof("MockBetaNetworks.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockBetaNetworks.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockBetaNetworks) Obj(o *beta.Network) *MockNetworksObj { return &MockNetworksObj{o} } // GCEBetaNetworks is a simplifying adapter for the GCE Networks. type GCEBetaNetworks struct { s *Service } // Get the Network named by key. func (g *GCEBetaNetworks) Get(ctx context.Context, key *meta.Key) (*beta.Network, error) { klog.V(5).Infof("GCEBetaNetworks.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaNetworks.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Networks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("beta"), Service: "Networks", } klog.V(5).Infof("GCEBetaNetworks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaNetworks.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Beta.Networks.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEBetaNetworks.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all Network objects. func (g *GCEBetaNetworks) List(ctx context.Context, fl *filter.F) ([]*beta.Network, error) { klog.V(5).Infof("GCEBetaNetworks.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Networks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("beta"), Service: "Networks", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEBetaNetworks.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.Beta.Networks.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*beta.Network f := func(l *beta.NetworkList) error { klog.V(5).Infof("GCEBetaNetworks.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEBetaNetworks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEBetaNetworks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEBetaNetworks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert Network with key of value obj. func (g *GCEBetaNetworks) Insert(ctx context.Context, key *meta.Key, obj *beta.Network) error { klog.V(5).Infof("GCEBetaNetworks.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEBetaNetworks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Networks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("beta"), Service: "Networks", } klog.V(5).Infof("GCEBetaNetworks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaNetworks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Beta.Networks.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaNetworks.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaNetworks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the Network referenced by key. func (g *GCEBetaNetworks) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEBetaNetworks.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaNetworks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Networks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("beta"), Service: "Networks", } klog.V(5).Infof("GCEBetaNetworks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaNetworks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.Networks.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaNetworks.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaNetworks.Delete(%v, %v) = %v", ctx, key, err) return err } // Networks is an interface that allows for mocking of Networks. type Networks interface { Get(ctx context.Context, key *meta.Key) (*ga.Network, error) List(ctx context.Context, fl *filter.F) ([]*ga.Network, error) Insert(ctx context.Context, key *meta.Key, obj *ga.Network) error Delete(ctx context.Context, key *meta.Key) error } // NewMockNetworks returns a new mock for Networks. func NewMockNetworks(pr ProjectRouter, objs map[meta.Key]*MockNetworksObj) *MockNetworks { mock := &MockNetworks{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockNetworks is the mock for Networks. type MockNetworks struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockNetworksObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockNetworks) (bool, *ga.Network, error) ListHook func(ctx context.Context, fl *filter.F, m *MockNetworks) (bool, []*ga.Network, error) InsertHook func(ctx context.Context, key *meta.Key, obj *ga.Network, m *MockNetworks) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockNetworks) (bool, error) // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockNetworks) Get(ctx context.Context, key *meta.Key) (*ga.Network, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockNetworks.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockNetworks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToGA() klog.V(5).Infof("MockNetworks.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockNetworks %v not found", key), } klog.V(5).Infof("MockNetworks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockNetworks) List(ctx context.Context, fl *filter.F) ([]*ga.Network, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockNetworks.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockNetworks.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*ga.Network for _, obj := range m.Objects { if !fl.Match(obj.ToGA()) { continue } objs = append(objs, obj.ToGA()) } klog.V(5).Infof("MockNetworks.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockNetworks) Insert(ctx context.Context, key *meta.Key, obj *ga.Network) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockNetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockNetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockNetworks %v exists", key), } klog.V(5).Infof("MockNetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "ga", "networks") obj.SelfLink = SelfLink(meta.VersionGA, projectID, "networks", key) m.Objects[*key] = &MockNetworksObj{obj} klog.V(5).Infof("MockNetworks.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockNetworks) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockNetworks.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockNetworks.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockNetworks %v not found", key), } klog.V(5).Infof("MockNetworks.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockNetworks.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockNetworks) Obj(o *ga.Network) *MockNetworksObj { return &MockNetworksObj{o} } // GCENetworks is a simplifying adapter for the GCE Networks. type GCENetworks struct { s *Service } // Get the Network named by key. func (g *GCENetworks) Get(ctx context.Context, key *meta.Key) (*ga.Network, error) { klog.V(5).Infof("GCENetworks.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCENetworks.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Networks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("ga"), Service: "Networks", } klog.V(5).Infof("GCENetworks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCENetworks.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.Networks.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCENetworks.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all Network objects. func (g *GCENetworks) List(ctx context.Context, fl *filter.F) ([]*ga.Network, error) { klog.V(5).Infof("GCENetworks.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Networks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("ga"), Service: "Networks", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCENetworks.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.GA.Networks.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*ga.Network f := func(l *ga.NetworkList) error { klog.V(5).Infof("GCENetworks.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCENetworks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCENetworks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCENetworks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert Network with key of value obj. func (g *GCENetworks) Insert(ctx context.Context, key *meta.Key, obj *ga.Network) error { klog.V(5).Infof("GCENetworks.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCENetworks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Networks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("ga"), Service: "Networks", } klog.V(5).Infof("GCENetworks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCENetworks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.GA.Networks.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCENetworks.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCENetworks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the Network referenced by key. func (g *GCENetworks) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCENetworks.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCENetworks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Networks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("ga"), Service: "Networks", } klog.V(5).Infof("GCENetworks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCENetworks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.Networks.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCENetworks.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCENetworks.Delete(%v, %v) = %v", ctx, key, err) return err } // AlphaNetworkEndpointGroups is an interface that allows for mocking of NetworkEndpointGroups. type AlphaNetworkEndpointGroups interface { Get(ctx context.Context, key *meta.Key) (*alpha.NetworkEndpointGroup, error) List(ctx context.Context, zone string, fl *filter.F) ([]*alpha.NetworkEndpointGroup, error) Insert(ctx context.Context, key *meta.Key, obj *alpha.NetworkEndpointGroup) error Delete(ctx context.Context, key *meta.Key) error AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*alpha.NetworkEndpointGroup, error) AttachNetworkEndpoints(context.Context, *meta.Key, *alpha.NetworkEndpointGroupsAttachEndpointsRequest) error DetachNetworkEndpoints(context.Context, *meta.Key, *alpha.NetworkEndpointGroupsDetachEndpointsRequest) error ListNetworkEndpoints(context.Context, *meta.Key, *alpha.NetworkEndpointGroupsListEndpointsRequest, *filter.F) ([]*alpha.NetworkEndpointWithHealthStatus, error) } // NewMockAlphaNetworkEndpointGroups returns a new mock for NetworkEndpointGroups. func NewMockAlphaNetworkEndpointGroups(pr ProjectRouter, objs map[meta.Key]*MockNetworkEndpointGroupsObj) *MockAlphaNetworkEndpointGroups { mock := &MockAlphaNetworkEndpointGroups{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockAlphaNetworkEndpointGroups is the mock for NetworkEndpointGroups. type MockAlphaNetworkEndpointGroups struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockNetworkEndpointGroupsObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error AggregatedListError *error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaNetworkEndpointGroups) (bool, *alpha.NetworkEndpointGroup, error) ListHook func(ctx context.Context, zone string, fl *filter.F, m *MockAlphaNetworkEndpointGroups) (bool, []*alpha.NetworkEndpointGroup, error) InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.NetworkEndpointGroup, m *MockAlphaNetworkEndpointGroups) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaNetworkEndpointGroups) (bool, error) AggregatedListHook func(ctx context.Context, fl *filter.F, m *MockAlphaNetworkEndpointGroups) (bool, map[string][]*alpha.NetworkEndpointGroup, error) AttachNetworkEndpointsHook func(context.Context, *meta.Key, *alpha.NetworkEndpointGroupsAttachEndpointsRequest, *MockAlphaNetworkEndpointGroups) error DetachNetworkEndpointsHook func(context.Context, *meta.Key, *alpha.NetworkEndpointGroupsDetachEndpointsRequest, *MockAlphaNetworkEndpointGroups) error ListNetworkEndpointsHook func(context.Context, *meta.Key, *alpha.NetworkEndpointGroupsListEndpointsRequest, *filter.F, *MockAlphaNetworkEndpointGroups) ([]*alpha.NetworkEndpointWithHealthStatus, error) // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockAlphaNetworkEndpointGroups) Get(ctx context.Context, key *meta.Key) (*alpha.NetworkEndpointGroup, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaNetworkEndpointGroups.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockAlphaNetworkEndpointGroups.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToAlpha() klog.V(5).Infof("MockAlphaNetworkEndpointGroups.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaNetworkEndpointGroups %v not found", key), } klog.V(5).Infof("MockAlphaNetworkEndpointGroups.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given zone. func (m *MockAlphaNetworkEndpointGroups) List(ctx context.Context, zone string, fl *filter.F) ([]*alpha.NetworkEndpointGroup, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, zone, fl, m); intercept { klog.V(5).Infof("MockAlphaNetworkEndpointGroups.List(%v, %q, %v) = [%v items], %v", ctx, zone, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockAlphaNetworkEndpointGroups.List(%v, %q, %v) = nil, %v", ctx, zone, fl, err) return nil, *m.ListError } var objs []*alpha.NetworkEndpointGroup for key, obj := range m.Objects { if key.Zone != zone { continue } if !fl.Match(obj.ToAlpha()) { continue } objs = append(objs, obj.ToAlpha()) } klog.V(5).Infof("MockAlphaNetworkEndpointGroups.List(%v, %q, %v) = [%v items], nil", ctx, zone, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockAlphaNetworkEndpointGroups) Insert(ctx context.Context, key *meta.Key, obj *alpha.NetworkEndpointGroup) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockAlphaNetworkEndpointGroups.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockAlphaNetworkEndpointGroups.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockAlphaNetworkEndpointGroups %v exists", key), } klog.V(5).Infof("MockAlphaNetworkEndpointGroups.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "networkEndpointGroups") obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "networkEndpointGroups", key) m.Objects[*key] = &MockNetworkEndpointGroupsObj{obj} klog.V(5).Infof("MockAlphaNetworkEndpointGroups.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockAlphaNetworkEndpointGroups) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaNetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockAlphaNetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaNetworkEndpointGroups %v not found", key), } klog.V(5).Infof("MockAlphaNetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockAlphaNetworkEndpointGroups.Delete(%v, %v) = nil", ctx, key) return nil } // AggregatedList is a mock for AggregatedList. func (m *MockAlphaNetworkEndpointGroups) AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*alpha.NetworkEndpointGroup, error) { if m.AggregatedListHook != nil { if intercept, objs, err := m.AggregatedListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockAlphaNetworkEndpointGroups.AggregatedList(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.AggregatedListError != nil { err := *m.AggregatedListError klog.V(5).Infof("MockAlphaNetworkEndpointGroups.AggregatedList(%v, %v) = nil, %v", ctx, fl, err) return nil, err } objs := map[string][]*alpha.NetworkEndpointGroup{} for _, obj := range m.Objects { res, err := ParseResourceURL(obj.ToAlpha().SelfLink) if err != nil { klog.V(5).Infof("MockAlphaNetworkEndpointGroups.AggregatedList(%v, %v) = nil, %v", ctx, fl, err) return nil, err } if !fl.Match(obj.ToAlpha()) { continue } location := aggregatedListKey(res.Key) objs[location] = append(objs[location], obj.ToAlpha()) } klog.V(5).Infof("MockAlphaNetworkEndpointGroups.AggregatedList(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Obj wraps the object for use in the mock. func (m *MockAlphaNetworkEndpointGroups) Obj(o *alpha.NetworkEndpointGroup) *MockNetworkEndpointGroupsObj { return &MockNetworkEndpointGroupsObj{o} } // AttachNetworkEndpoints is a mock for the corresponding method. func (m *MockAlphaNetworkEndpointGroups) AttachNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *alpha.NetworkEndpointGroupsAttachEndpointsRequest) error { if m.AttachNetworkEndpointsHook != nil { return m.AttachNetworkEndpointsHook(ctx, key, arg0, m) } return nil } // DetachNetworkEndpoints is a mock for the corresponding method. func (m *MockAlphaNetworkEndpointGroups) DetachNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *alpha.NetworkEndpointGroupsDetachEndpointsRequest) error { if m.DetachNetworkEndpointsHook != nil { return m.DetachNetworkEndpointsHook(ctx, key, arg0, m) } return nil } // ListNetworkEndpoints is a mock for the corresponding method. func (m *MockAlphaNetworkEndpointGroups) ListNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *alpha.NetworkEndpointGroupsListEndpointsRequest, fl *filter.F) ([]*alpha.NetworkEndpointWithHealthStatus, error) { if m.ListNetworkEndpointsHook != nil { return m.ListNetworkEndpointsHook(ctx, key, arg0, fl, m) } return nil, nil } // GCEAlphaNetworkEndpointGroups is a simplifying adapter for the GCE NetworkEndpointGroups. type GCEAlphaNetworkEndpointGroups struct { s *Service } // Get the NetworkEndpointGroup named by key. func (g *GCEAlphaNetworkEndpointGroups) Get(ctx context.Context, key *meta.Key) (*alpha.NetworkEndpointGroup, error) { klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaNetworkEndpointGroups.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "NetworkEndpointGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("alpha"), Service: "NetworkEndpointGroups", } klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Alpha.NetworkEndpointGroups.Get(projectID, key.Zone, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all NetworkEndpointGroup objects. func (g *GCEAlphaNetworkEndpointGroups) List(ctx context.Context, zone string, fl *filter.F) ([]*alpha.NetworkEndpointGroup, error) { klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.List(%v, %v, %v) called", ctx, zone, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "NetworkEndpointGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("alpha"), Service: "NetworkEndpointGroups", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, zone, fl, projectID, rk) call := g.s.Alpha.NetworkEndpointGroups.List(projectID, zone) if fl != filter.None { call.Filter(fl.String()) } var all []*alpha.NetworkEndpointGroup f := func(l *alpha.NetworkEndpointGroupList) error { klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert NetworkEndpointGroup with key of value obj. func (g *GCEAlphaNetworkEndpointGroups) Insert(ctx context.Context, key *meta.Key, obj *alpha.NetworkEndpointGroup) error { klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEAlphaNetworkEndpointGroups.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "NetworkEndpointGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("alpha"), Service: "NetworkEndpointGroups", } klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Alpha.NetworkEndpointGroups.Insert(projectID, key.Zone, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the NetworkEndpointGroup referenced by key. func (g *GCEAlphaNetworkEndpointGroups) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaNetworkEndpointGroups.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "NetworkEndpointGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("alpha"), Service: "NetworkEndpointGroups", } klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.NetworkEndpointGroups.Delete(projectID, key.Zone, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err) return err } // AggregatedList lists all resources of the given type across all locations. func (g *GCEAlphaNetworkEndpointGroups) AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*alpha.NetworkEndpointGroup, error) { klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.AggregatedList(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "NetworkEndpointGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "AggregatedList", Version: meta.Version("alpha"), Service: "NetworkEndpointGroups", } klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.AggregatedList(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.AggregatedList(%v, %v): RateLimiter error: %v", ctx, fl, err) return nil, err } call := g.s.Alpha.NetworkEndpointGroups.AggregatedList(projectID) call.Context(ctx) if fl != filter.None { call.Filter(fl.String()) } all := map[string][]*alpha.NetworkEndpointGroup{} f := func(l *alpha.NetworkEndpointGroupAggregatedList) error { for k, v := range l.Items { klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.AggregatedList(%v, %v): page[%v]%+v", ctx, fl, k, v) all[k] = append(all[k], v.NetworkEndpointGroups...) } return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.AggregatedList(%v, %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.AggregatedList(%v, %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.AggregatedList(%v, %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // AttachNetworkEndpoints is a method on GCEAlphaNetworkEndpointGroups. func (g *GCEAlphaNetworkEndpointGroups) AttachNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *alpha.NetworkEndpointGroupsAttachEndpointsRequest) error { klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaNetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "NetworkEndpointGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "AttachNetworkEndpoints", Version: meta.Version("alpha"), Service: "NetworkEndpointGroups", } klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.NetworkEndpointGroups.AttachNetworkEndpoints(projectID, key.Zone, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...) = %+v", ctx, key, err) return err } // DetachNetworkEndpoints is a method on GCEAlphaNetworkEndpointGroups. func (g *GCEAlphaNetworkEndpointGroups) DetachNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *alpha.NetworkEndpointGroupsDetachEndpointsRequest) error { klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaNetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "NetworkEndpointGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "DetachNetworkEndpoints", Version: meta.Version("alpha"), Service: "NetworkEndpointGroups", } klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.NetworkEndpointGroups.DetachNetworkEndpoints(projectID, key.Zone, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...) = %+v", ctx, key, err) return err } // ListNetworkEndpoints is a method on GCEAlphaNetworkEndpointGroups. func (g *GCEAlphaNetworkEndpointGroups) ListNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *alpha.NetworkEndpointGroupsListEndpointsRequest, fl *filter.F) ([]*alpha.NetworkEndpointWithHealthStatus, error) { klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "NetworkEndpointGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "ListNetworkEndpoints", Version: meta.Version("alpha"), Service: "NetworkEndpointGroups", } klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Alpha.NetworkEndpointGroups.ListNetworkEndpoints(projectID, key.Zone, key.Name, arg0) var all []*alpha.NetworkEndpointWithHealthStatus f := func(l *alpha.NetworkEndpointGroupsListNetworkEndpoints) error { klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): page %+v", ctx, key, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...) = %v, %v", ctx, key, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEAlphaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...) = [%v items], %v", ctx, key, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEAlphaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...) = %v, %v", ctx, key, asStr, nil) } return all, nil } // BetaNetworkEndpointGroups is an interface that allows for mocking of NetworkEndpointGroups. type BetaNetworkEndpointGroups interface { Get(ctx context.Context, key *meta.Key) (*beta.NetworkEndpointGroup, error) List(ctx context.Context, zone string, fl *filter.F) ([]*beta.NetworkEndpointGroup, error) Insert(ctx context.Context, key *meta.Key, obj *beta.NetworkEndpointGroup) error Delete(ctx context.Context, key *meta.Key) error AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*beta.NetworkEndpointGroup, error) AttachNetworkEndpoints(context.Context, *meta.Key, *beta.NetworkEndpointGroupsAttachEndpointsRequest) error DetachNetworkEndpoints(context.Context, *meta.Key, *beta.NetworkEndpointGroupsDetachEndpointsRequest) error ListNetworkEndpoints(context.Context, *meta.Key, *beta.NetworkEndpointGroupsListEndpointsRequest, *filter.F) ([]*beta.NetworkEndpointWithHealthStatus, error) } // NewMockBetaNetworkEndpointGroups returns a new mock for NetworkEndpointGroups. func NewMockBetaNetworkEndpointGroups(pr ProjectRouter, objs map[meta.Key]*MockNetworkEndpointGroupsObj) *MockBetaNetworkEndpointGroups { mock := &MockBetaNetworkEndpointGroups{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockBetaNetworkEndpointGroups is the mock for NetworkEndpointGroups. type MockBetaNetworkEndpointGroups struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockNetworkEndpointGroupsObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error AggregatedListError *error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaNetworkEndpointGroups) (bool, *beta.NetworkEndpointGroup, error) ListHook func(ctx context.Context, zone string, fl *filter.F, m *MockBetaNetworkEndpointGroups) (bool, []*beta.NetworkEndpointGroup, error) InsertHook func(ctx context.Context, key *meta.Key, obj *beta.NetworkEndpointGroup, m *MockBetaNetworkEndpointGroups) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaNetworkEndpointGroups) (bool, error) AggregatedListHook func(ctx context.Context, fl *filter.F, m *MockBetaNetworkEndpointGroups) (bool, map[string][]*beta.NetworkEndpointGroup, error) AttachNetworkEndpointsHook func(context.Context, *meta.Key, *beta.NetworkEndpointGroupsAttachEndpointsRequest, *MockBetaNetworkEndpointGroups) error DetachNetworkEndpointsHook func(context.Context, *meta.Key, *beta.NetworkEndpointGroupsDetachEndpointsRequest, *MockBetaNetworkEndpointGroups) error ListNetworkEndpointsHook func(context.Context, *meta.Key, *beta.NetworkEndpointGroupsListEndpointsRequest, *filter.F, *MockBetaNetworkEndpointGroups) ([]*beta.NetworkEndpointWithHealthStatus, error) // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockBetaNetworkEndpointGroups) Get(ctx context.Context, key *meta.Key) (*beta.NetworkEndpointGroup, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaNetworkEndpointGroups.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockBetaNetworkEndpointGroups.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToBeta() klog.V(5).Infof("MockBetaNetworkEndpointGroups.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaNetworkEndpointGroups %v not found", key), } klog.V(5).Infof("MockBetaNetworkEndpointGroups.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given zone. func (m *MockBetaNetworkEndpointGroups) List(ctx context.Context, zone string, fl *filter.F) ([]*beta.NetworkEndpointGroup, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, zone, fl, m); intercept { klog.V(5).Infof("MockBetaNetworkEndpointGroups.List(%v, %q, %v) = [%v items], %v", ctx, zone, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockBetaNetworkEndpointGroups.List(%v, %q, %v) = nil, %v", ctx, zone, fl, err) return nil, *m.ListError } var objs []*beta.NetworkEndpointGroup for key, obj := range m.Objects { if key.Zone != zone { continue } if !fl.Match(obj.ToBeta()) { continue } objs = append(objs, obj.ToBeta()) } klog.V(5).Infof("MockBetaNetworkEndpointGroups.List(%v, %q, %v) = [%v items], nil", ctx, zone, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockBetaNetworkEndpointGroups) Insert(ctx context.Context, key *meta.Key, obj *beta.NetworkEndpointGroup) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockBetaNetworkEndpointGroups.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockBetaNetworkEndpointGroups.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockBetaNetworkEndpointGroups %v exists", key), } klog.V(5).Infof("MockBetaNetworkEndpointGroups.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "beta", "networkEndpointGroups") obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "networkEndpointGroups", key) m.Objects[*key] = &MockNetworkEndpointGroupsObj{obj} klog.V(5).Infof("MockBetaNetworkEndpointGroups.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockBetaNetworkEndpointGroups) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaNetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockBetaNetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaNetworkEndpointGroups %v not found", key), } klog.V(5).Infof("MockBetaNetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockBetaNetworkEndpointGroups.Delete(%v, %v) = nil", ctx, key) return nil } // AggregatedList is a mock for AggregatedList. func (m *MockBetaNetworkEndpointGroups) AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*beta.NetworkEndpointGroup, error) { if m.AggregatedListHook != nil { if intercept, objs, err := m.AggregatedListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockBetaNetworkEndpointGroups.AggregatedList(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.AggregatedListError != nil { err := *m.AggregatedListError klog.V(5).Infof("MockBetaNetworkEndpointGroups.AggregatedList(%v, %v) = nil, %v", ctx, fl, err) return nil, err } objs := map[string][]*beta.NetworkEndpointGroup{} for _, obj := range m.Objects { res, err := ParseResourceURL(obj.ToBeta().SelfLink) if err != nil { klog.V(5).Infof("MockBetaNetworkEndpointGroups.AggregatedList(%v, %v) = nil, %v", ctx, fl, err) return nil, err } if !fl.Match(obj.ToBeta()) { continue } location := aggregatedListKey(res.Key) objs[location] = append(objs[location], obj.ToBeta()) } klog.V(5).Infof("MockBetaNetworkEndpointGroups.AggregatedList(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Obj wraps the object for use in the mock. func (m *MockBetaNetworkEndpointGroups) Obj(o *beta.NetworkEndpointGroup) *MockNetworkEndpointGroupsObj { return &MockNetworkEndpointGroupsObj{o} } // AttachNetworkEndpoints is a mock for the corresponding method. func (m *MockBetaNetworkEndpointGroups) AttachNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *beta.NetworkEndpointGroupsAttachEndpointsRequest) error { if m.AttachNetworkEndpointsHook != nil { return m.AttachNetworkEndpointsHook(ctx, key, arg0, m) } return nil } // DetachNetworkEndpoints is a mock for the corresponding method. func (m *MockBetaNetworkEndpointGroups) DetachNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *beta.NetworkEndpointGroupsDetachEndpointsRequest) error { if m.DetachNetworkEndpointsHook != nil { return m.DetachNetworkEndpointsHook(ctx, key, arg0, m) } return nil } // ListNetworkEndpoints is a mock for the corresponding method. func (m *MockBetaNetworkEndpointGroups) ListNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *beta.NetworkEndpointGroupsListEndpointsRequest, fl *filter.F) ([]*beta.NetworkEndpointWithHealthStatus, error) { if m.ListNetworkEndpointsHook != nil { return m.ListNetworkEndpointsHook(ctx, key, arg0, fl, m) } return nil, nil } // GCEBetaNetworkEndpointGroups is a simplifying adapter for the GCE NetworkEndpointGroups. type GCEBetaNetworkEndpointGroups struct { s *Service } // Get the NetworkEndpointGroup named by key. func (g *GCEBetaNetworkEndpointGroups) Get(ctx context.Context, key *meta.Key) (*beta.NetworkEndpointGroup, error) { klog.V(5).Infof("GCEBetaNetworkEndpointGroups.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaNetworkEndpointGroups.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "NetworkEndpointGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("beta"), Service: "NetworkEndpointGroups", } klog.V(5).Infof("GCEBetaNetworkEndpointGroups.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaNetworkEndpointGroups.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Beta.NetworkEndpointGroups.Get(projectID, key.Zone, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEBetaNetworkEndpointGroups.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all NetworkEndpointGroup objects. func (g *GCEBetaNetworkEndpointGroups) List(ctx context.Context, zone string, fl *filter.F) ([]*beta.NetworkEndpointGroup, error) { klog.V(5).Infof("GCEBetaNetworkEndpointGroups.List(%v, %v, %v) called", ctx, zone, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "NetworkEndpointGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("beta"), Service: "NetworkEndpointGroups", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEBetaNetworkEndpointGroups.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, zone, fl, projectID, rk) call := g.s.Beta.NetworkEndpointGroups.List(projectID, zone) if fl != filter.None { call.Filter(fl.String()) } var all []*beta.NetworkEndpointGroup f := func(l *beta.NetworkEndpointGroupList) error { klog.V(5).Infof("GCEBetaNetworkEndpointGroups.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEBetaNetworkEndpointGroups.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEBetaNetworkEndpointGroups.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEBetaNetworkEndpointGroups.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert NetworkEndpointGroup with key of value obj. func (g *GCEBetaNetworkEndpointGroups) Insert(ctx context.Context, key *meta.Key, obj *beta.NetworkEndpointGroup) error { klog.V(5).Infof("GCEBetaNetworkEndpointGroups.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEBetaNetworkEndpointGroups.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "NetworkEndpointGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("beta"), Service: "NetworkEndpointGroups", } klog.V(5).Infof("GCEBetaNetworkEndpointGroups.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaNetworkEndpointGroups.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Beta.NetworkEndpointGroups.Insert(projectID, key.Zone, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaNetworkEndpointGroups.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaNetworkEndpointGroups.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the NetworkEndpointGroup referenced by key. func (g *GCEBetaNetworkEndpointGroups) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEBetaNetworkEndpointGroups.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaNetworkEndpointGroups.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "NetworkEndpointGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("beta"), Service: "NetworkEndpointGroups", } klog.V(5).Infof("GCEBetaNetworkEndpointGroups.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaNetworkEndpointGroups.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.NetworkEndpointGroups.Delete(projectID, key.Zone, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaNetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaNetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err) return err } // AggregatedList lists all resources of the given type across all locations. func (g *GCEBetaNetworkEndpointGroups) AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*beta.NetworkEndpointGroup, error) { klog.V(5).Infof("GCEBetaNetworkEndpointGroups.AggregatedList(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "NetworkEndpointGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "AggregatedList", Version: meta.Version("beta"), Service: "NetworkEndpointGroups", } klog.V(5).Infof("GCEBetaNetworkEndpointGroups.AggregatedList(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(5).Infof("GCEBetaNetworkEndpointGroups.AggregatedList(%v, %v): RateLimiter error: %v", ctx, fl, err) return nil, err } call := g.s.Beta.NetworkEndpointGroups.AggregatedList(projectID) call.Context(ctx) if fl != filter.None { call.Filter(fl.String()) } all := map[string][]*beta.NetworkEndpointGroup{} f := func(l *beta.NetworkEndpointGroupAggregatedList) error { for k, v := range l.Items { klog.V(5).Infof("GCEBetaNetworkEndpointGroups.AggregatedList(%v, %v): page[%v]%+v", ctx, fl, k, v) all[k] = append(all[k], v.NetworkEndpointGroups...) } return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEBetaNetworkEndpointGroups.AggregatedList(%v, %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEBetaNetworkEndpointGroups.AggregatedList(%v, %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEBetaNetworkEndpointGroups.AggregatedList(%v, %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // AttachNetworkEndpoints is a method on GCEBetaNetworkEndpointGroups. func (g *GCEBetaNetworkEndpointGroups) AttachNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *beta.NetworkEndpointGroupsAttachEndpointsRequest) error { klog.V(5).Infof("GCEBetaNetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaNetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "NetworkEndpointGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "AttachNetworkEndpoints", Version: meta.Version("beta"), Service: "NetworkEndpointGroups", } klog.V(5).Infof("GCEBetaNetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaNetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.NetworkEndpointGroups.AttachNetworkEndpoints(projectID, key.Zone, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaNetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaNetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...) = %+v", ctx, key, err) return err } // DetachNetworkEndpoints is a method on GCEBetaNetworkEndpointGroups. func (g *GCEBetaNetworkEndpointGroups) DetachNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *beta.NetworkEndpointGroupsDetachEndpointsRequest) error { klog.V(5).Infof("GCEBetaNetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaNetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "NetworkEndpointGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "DetachNetworkEndpoints", Version: meta.Version("beta"), Service: "NetworkEndpointGroups", } klog.V(5).Infof("GCEBetaNetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaNetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.NetworkEndpointGroups.DetachNetworkEndpoints(projectID, key.Zone, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaNetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaNetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...) = %+v", ctx, key, err) return err } // ListNetworkEndpoints is a method on GCEBetaNetworkEndpointGroups. func (g *GCEBetaNetworkEndpointGroups) ListNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *beta.NetworkEndpointGroupsListEndpointsRequest, fl *filter.F) ([]*beta.NetworkEndpointWithHealthStatus, error) { klog.V(5).Infof("GCEBetaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "NetworkEndpointGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "ListNetworkEndpoints", Version: meta.Version("beta"), Service: "NetworkEndpointGroups", } klog.V(5).Infof("GCEBetaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Beta.NetworkEndpointGroups.ListNetworkEndpoints(projectID, key.Zone, key.Name, arg0) var all []*beta.NetworkEndpointWithHealthStatus f := func(l *beta.NetworkEndpointGroupsListNetworkEndpoints) error { klog.V(5).Infof("GCEBetaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): page %+v", ctx, key, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEBetaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...) = %v, %v", ctx, key, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEBetaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...) = [%v items], %v", ctx, key, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEBetaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...) = %v, %v", ctx, key, asStr, nil) } return all, nil } // NetworkEndpointGroups is an interface that allows for mocking of NetworkEndpointGroups. type NetworkEndpointGroups interface { Get(ctx context.Context, key *meta.Key) (*ga.NetworkEndpointGroup, error) List(ctx context.Context, zone string, fl *filter.F) ([]*ga.NetworkEndpointGroup, error) Insert(ctx context.Context, key *meta.Key, obj *ga.NetworkEndpointGroup) error Delete(ctx context.Context, key *meta.Key) error AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*ga.NetworkEndpointGroup, error) AttachNetworkEndpoints(context.Context, *meta.Key, *ga.NetworkEndpointGroupsAttachEndpointsRequest) error DetachNetworkEndpoints(context.Context, *meta.Key, *ga.NetworkEndpointGroupsDetachEndpointsRequest) error ListNetworkEndpoints(context.Context, *meta.Key, *ga.NetworkEndpointGroupsListEndpointsRequest, *filter.F) ([]*ga.NetworkEndpointWithHealthStatus, error) } // NewMockNetworkEndpointGroups returns a new mock for NetworkEndpointGroups. func NewMockNetworkEndpointGroups(pr ProjectRouter, objs map[meta.Key]*MockNetworkEndpointGroupsObj) *MockNetworkEndpointGroups { mock := &MockNetworkEndpointGroups{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockNetworkEndpointGroups is the mock for NetworkEndpointGroups. type MockNetworkEndpointGroups struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockNetworkEndpointGroupsObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error AggregatedListError *error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockNetworkEndpointGroups) (bool, *ga.NetworkEndpointGroup, error) ListHook func(ctx context.Context, zone string, fl *filter.F, m *MockNetworkEndpointGroups) (bool, []*ga.NetworkEndpointGroup, error) InsertHook func(ctx context.Context, key *meta.Key, obj *ga.NetworkEndpointGroup, m *MockNetworkEndpointGroups) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockNetworkEndpointGroups) (bool, error) AggregatedListHook func(ctx context.Context, fl *filter.F, m *MockNetworkEndpointGroups) (bool, map[string][]*ga.NetworkEndpointGroup, error) AttachNetworkEndpointsHook func(context.Context, *meta.Key, *ga.NetworkEndpointGroupsAttachEndpointsRequest, *MockNetworkEndpointGroups) error DetachNetworkEndpointsHook func(context.Context, *meta.Key, *ga.NetworkEndpointGroupsDetachEndpointsRequest, *MockNetworkEndpointGroups) error ListNetworkEndpointsHook func(context.Context, *meta.Key, *ga.NetworkEndpointGroupsListEndpointsRequest, *filter.F, *MockNetworkEndpointGroups) ([]*ga.NetworkEndpointWithHealthStatus, error) // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockNetworkEndpointGroups) Get(ctx context.Context, key *meta.Key) (*ga.NetworkEndpointGroup, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockNetworkEndpointGroups.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockNetworkEndpointGroups.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToGA() klog.V(5).Infof("MockNetworkEndpointGroups.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockNetworkEndpointGroups %v not found", key), } klog.V(5).Infof("MockNetworkEndpointGroups.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given zone. func (m *MockNetworkEndpointGroups) List(ctx context.Context, zone string, fl *filter.F) ([]*ga.NetworkEndpointGroup, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, zone, fl, m); intercept { klog.V(5).Infof("MockNetworkEndpointGroups.List(%v, %q, %v) = [%v items], %v", ctx, zone, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockNetworkEndpointGroups.List(%v, %q, %v) = nil, %v", ctx, zone, fl, err) return nil, *m.ListError } var objs []*ga.NetworkEndpointGroup for key, obj := range m.Objects { if key.Zone != zone { continue } if !fl.Match(obj.ToGA()) { continue } objs = append(objs, obj.ToGA()) } klog.V(5).Infof("MockNetworkEndpointGroups.List(%v, %q, %v) = [%v items], nil", ctx, zone, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockNetworkEndpointGroups) Insert(ctx context.Context, key *meta.Key, obj *ga.NetworkEndpointGroup) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockNetworkEndpointGroups.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockNetworkEndpointGroups.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockNetworkEndpointGroups %v exists", key), } klog.V(5).Infof("MockNetworkEndpointGroups.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "ga", "networkEndpointGroups") obj.SelfLink = SelfLink(meta.VersionGA, projectID, "networkEndpointGroups", key) m.Objects[*key] = &MockNetworkEndpointGroupsObj{obj} klog.V(5).Infof("MockNetworkEndpointGroups.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockNetworkEndpointGroups) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockNetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockNetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockNetworkEndpointGroups %v not found", key), } klog.V(5).Infof("MockNetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockNetworkEndpointGroups.Delete(%v, %v) = nil", ctx, key) return nil } // AggregatedList is a mock for AggregatedList. func (m *MockNetworkEndpointGroups) AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*ga.NetworkEndpointGroup, error) { if m.AggregatedListHook != nil { if intercept, objs, err := m.AggregatedListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockNetworkEndpointGroups.AggregatedList(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.AggregatedListError != nil { err := *m.AggregatedListError klog.V(5).Infof("MockNetworkEndpointGroups.AggregatedList(%v, %v) = nil, %v", ctx, fl, err) return nil, err } objs := map[string][]*ga.NetworkEndpointGroup{} for _, obj := range m.Objects { res, err := ParseResourceURL(obj.ToGA().SelfLink) if err != nil { klog.V(5).Infof("MockNetworkEndpointGroups.AggregatedList(%v, %v) = nil, %v", ctx, fl, err) return nil, err } if !fl.Match(obj.ToGA()) { continue } location := aggregatedListKey(res.Key) objs[location] = append(objs[location], obj.ToGA()) } klog.V(5).Infof("MockNetworkEndpointGroups.AggregatedList(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Obj wraps the object for use in the mock. func (m *MockNetworkEndpointGroups) Obj(o *ga.NetworkEndpointGroup) *MockNetworkEndpointGroupsObj { return &MockNetworkEndpointGroupsObj{o} } // AttachNetworkEndpoints is a mock for the corresponding method. func (m *MockNetworkEndpointGroups) AttachNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *ga.NetworkEndpointGroupsAttachEndpointsRequest) error { if m.AttachNetworkEndpointsHook != nil { return m.AttachNetworkEndpointsHook(ctx, key, arg0, m) } return nil } // DetachNetworkEndpoints is a mock for the corresponding method. func (m *MockNetworkEndpointGroups) DetachNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *ga.NetworkEndpointGroupsDetachEndpointsRequest) error { if m.DetachNetworkEndpointsHook != nil { return m.DetachNetworkEndpointsHook(ctx, key, arg0, m) } return nil } // ListNetworkEndpoints is a mock for the corresponding method. func (m *MockNetworkEndpointGroups) ListNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *ga.NetworkEndpointGroupsListEndpointsRequest, fl *filter.F) ([]*ga.NetworkEndpointWithHealthStatus, error) { if m.ListNetworkEndpointsHook != nil { return m.ListNetworkEndpointsHook(ctx, key, arg0, fl, m) } return nil, nil } // GCENetworkEndpointGroups is a simplifying adapter for the GCE NetworkEndpointGroups. type GCENetworkEndpointGroups struct { s *Service } // Get the NetworkEndpointGroup named by key. func (g *GCENetworkEndpointGroups) Get(ctx context.Context, key *meta.Key) (*ga.NetworkEndpointGroup, error) { klog.V(5).Infof("GCENetworkEndpointGroups.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCENetworkEndpointGroups.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "NetworkEndpointGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("ga"), Service: "NetworkEndpointGroups", } klog.V(5).Infof("GCENetworkEndpointGroups.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCENetworkEndpointGroups.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.NetworkEndpointGroups.Get(projectID, key.Zone, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCENetworkEndpointGroups.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all NetworkEndpointGroup objects. func (g *GCENetworkEndpointGroups) List(ctx context.Context, zone string, fl *filter.F) ([]*ga.NetworkEndpointGroup, error) { klog.V(5).Infof("GCENetworkEndpointGroups.List(%v, %v, %v) called", ctx, zone, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "NetworkEndpointGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("ga"), Service: "NetworkEndpointGroups", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCENetworkEndpointGroups.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, zone, fl, projectID, rk) call := g.s.GA.NetworkEndpointGroups.List(projectID, zone) if fl != filter.None { call.Filter(fl.String()) } var all []*ga.NetworkEndpointGroup f := func(l *ga.NetworkEndpointGroupList) error { klog.V(5).Infof("GCENetworkEndpointGroups.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCENetworkEndpointGroups.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCENetworkEndpointGroups.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCENetworkEndpointGroups.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert NetworkEndpointGroup with key of value obj. func (g *GCENetworkEndpointGroups) Insert(ctx context.Context, key *meta.Key, obj *ga.NetworkEndpointGroup) error { klog.V(5).Infof("GCENetworkEndpointGroups.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCENetworkEndpointGroups.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "NetworkEndpointGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("ga"), Service: "NetworkEndpointGroups", } klog.V(5).Infof("GCENetworkEndpointGroups.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCENetworkEndpointGroups.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.GA.NetworkEndpointGroups.Insert(projectID, key.Zone, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCENetworkEndpointGroups.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCENetworkEndpointGroups.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the NetworkEndpointGroup referenced by key. func (g *GCENetworkEndpointGroups) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCENetworkEndpointGroups.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCENetworkEndpointGroups.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "NetworkEndpointGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("ga"), Service: "NetworkEndpointGroups", } klog.V(5).Infof("GCENetworkEndpointGroups.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCENetworkEndpointGroups.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.NetworkEndpointGroups.Delete(projectID, key.Zone, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCENetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCENetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err) return err } // AggregatedList lists all resources of the given type across all locations. func (g *GCENetworkEndpointGroups) AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*ga.NetworkEndpointGroup, error) { klog.V(5).Infof("GCENetworkEndpointGroups.AggregatedList(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "NetworkEndpointGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "AggregatedList", Version: meta.Version("ga"), Service: "NetworkEndpointGroups", } klog.V(5).Infof("GCENetworkEndpointGroups.AggregatedList(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(5).Infof("GCENetworkEndpointGroups.AggregatedList(%v, %v): RateLimiter error: %v", ctx, fl, err) return nil, err } call := g.s.GA.NetworkEndpointGroups.AggregatedList(projectID) call.Context(ctx) if fl != filter.None { call.Filter(fl.String()) } all := map[string][]*ga.NetworkEndpointGroup{} f := func(l *ga.NetworkEndpointGroupAggregatedList) error { for k, v := range l.Items { klog.V(5).Infof("GCENetworkEndpointGroups.AggregatedList(%v, %v): page[%v]%+v", ctx, fl, k, v) all[k] = append(all[k], v.NetworkEndpointGroups...) } return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCENetworkEndpointGroups.AggregatedList(%v, %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCENetworkEndpointGroups.AggregatedList(%v, %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCENetworkEndpointGroups.AggregatedList(%v, %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // AttachNetworkEndpoints is a method on GCENetworkEndpointGroups. func (g *GCENetworkEndpointGroups) AttachNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *ga.NetworkEndpointGroupsAttachEndpointsRequest) error { klog.V(5).Infof("GCENetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCENetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "NetworkEndpointGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "AttachNetworkEndpoints", Version: meta.Version("ga"), Service: "NetworkEndpointGroups", } klog.V(5).Infof("GCENetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCENetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.NetworkEndpointGroups.AttachNetworkEndpoints(projectID, key.Zone, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCENetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCENetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...) = %+v", ctx, key, err) return err } // DetachNetworkEndpoints is a method on GCENetworkEndpointGroups. func (g *GCENetworkEndpointGroups) DetachNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *ga.NetworkEndpointGroupsDetachEndpointsRequest) error { klog.V(5).Infof("GCENetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCENetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "NetworkEndpointGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "DetachNetworkEndpoints", Version: meta.Version("ga"), Service: "NetworkEndpointGroups", } klog.V(5).Infof("GCENetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCENetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.NetworkEndpointGroups.DetachNetworkEndpoints(projectID, key.Zone, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCENetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCENetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...) = %+v", ctx, key, err) return err } // ListNetworkEndpoints is a method on GCENetworkEndpointGroups. func (g *GCENetworkEndpointGroups) ListNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *ga.NetworkEndpointGroupsListEndpointsRequest, fl *filter.F) ([]*ga.NetworkEndpointWithHealthStatus, error) { klog.V(5).Infof("GCENetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCENetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "NetworkEndpointGroups") rk := &RateLimitKey{ ProjectID: projectID, Operation: "ListNetworkEndpoints", Version: meta.Version("ga"), Service: "NetworkEndpointGroups", } klog.V(5).Infof("GCENetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCENetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.NetworkEndpointGroups.ListNetworkEndpoints(projectID, key.Zone, key.Name, arg0) var all []*ga.NetworkEndpointWithHealthStatus f := func(l *ga.NetworkEndpointGroupsListNetworkEndpoints) error { klog.V(5).Infof("GCENetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): page %+v", ctx, key, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCENetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...) = %v, %v", ctx, key, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCENetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...) = [%v items], %v", ctx, key, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCENetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...) = %v, %v", ctx, key, asStr, nil) } return all, nil } // Projects is an interface that allows for mocking of Projects. type Projects interface { // ProjectsOps is an interface with additional non-CRUD type methods. // This interface is expected to be implemented by hand (non-autogenerated). ProjectsOps } // NewMockProjects returns a new mock for Projects. func NewMockProjects(pr ProjectRouter, objs map[meta.Key]*MockProjectsObj) *MockProjects { mock := &MockProjects{ ProjectRouter: pr, Objects: objs, } return mock } // MockProjects is the mock for Projects. type MockProjects struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockProjectsObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Obj wraps the object for use in the mock. func (m *MockProjects) Obj(o *ga.Project) *MockProjectsObj { return &MockProjectsObj{o} } // GCEProjects is a simplifying adapter for the GCE Projects. type GCEProjects struct { s *Service } // Regions is an interface that allows for mocking of Regions. type Regions interface { Get(ctx context.Context, key *meta.Key) (*ga.Region, error) List(ctx context.Context, fl *filter.F) ([]*ga.Region, error) } // NewMockRegions returns a new mock for Regions. func NewMockRegions(pr ProjectRouter, objs map[meta.Key]*MockRegionsObj) *MockRegions { mock := &MockRegions{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, } return mock } // MockRegions is the mock for Regions. type MockRegions struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockRegionsObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockRegions) (bool, *ga.Region, error) ListHook func(ctx context.Context, fl *filter.F, m *MockRegions) (bool, []*ga.Region, error) // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockRegions) Get(ctx context.Context, key *meta.Key) (*ga.Region, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockRegions.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockRegions.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToGA() klog.V(5).Infof("MockRegions.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockRegions %v not found", key), } klog.V(5).Infof("MockRegions.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockRegions) List(ctx context.Context, fl *filter.F) ([]*ga.Region, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockRegions.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockRegions.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*ga.Region for _, obj := range m.Objects { if !fl.Match(obj.ToGA()) { continue } objs = append(objs, obj.ToGA()) } klog.V(5).Infof("MockRegions.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Obj wraps the object for use in the mock. func (m *MockRegions) Obj(o *ga.Region) *MockRegionsObj { return &MockRegionsObj{o} } // GCERegions is a simplifying adapter for the GCE Regions. type GCERegions struct { s *Service } // Get the Region named by key. func (g *GCERegions) Get(ctx context.Context, key *meta.Key) (*ga.Region, error) { klog.V(5).Infof("GCERegions.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCERegions.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Regions") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("ga"), Service: "Regions", } klog.V(5).Infof("GCERegions.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERegions.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.Regions.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCERegions.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all Region objects. func (g *GCERegions) List(ctx context.Context, fl *filter.F) ([]*ga.Region, error) { klog.V(5).Infof("GCERegions.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Regions") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("ga"), Service: "Regions", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCERegions.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.GA.Regions.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*ga.Region f := func(l *ga.RegionList) error { klog.V(5).Infof("GCERegions.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCERegions.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCERegions.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCERegions.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Routes is an interface that allows for mocking of Routes. type Routes interface { Get(ctx context.Context, key *meta.Key) (*ga.Route, error) List(ctx context.Context, fl *filter.F) ([]*ga.Route, error) Insert(ctx context.Context, key *meta.Key, obj *ga.Route) error Delete(ctx context.Context, key *meta.Key) error } // NewMockRoutes returns a new mock for Routes. func NewMockRoutes(pr ProjectRouter, objs map[meta.Key]*MockRoutesObj) *MockRoutes { mock := &MockRoutes{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockRoutes is the mock for Routes. type MockRoutes struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockRoutesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockRoutes) (bool, *ga.Route, error) ListHook func(ctx context.Context, fl *filter.F, m *MockRoutes) (bool, []*ga.Route, error) InsertHook func(ctx context.Context, key *meta.Key, obj *ga.Route, m *MockRoutes) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockRoutes) (bool, error) // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockRoutes) Get(ctx context.Context, key *meta.Key) (*ga.Route, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockRoutes.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockRoutes.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToGA() klog.V(5).Infof("MockRoutes.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockRoutes %v not found", key), } klog.V(5).Infof("MockRoutes.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockRoutes) List(ctx context.Context, fl *filter.F) ([]*ga.Route, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockRoutes.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockRoutes.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*ga.Route for _, obj := range m.Objects { if !fl.Match(obj.ToGA()) { continue } objs = append(objs, obj.ToGA()) } klog.V(5).Infof("MockRoutes.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockRoutes) Insert(ctx context.Context, key *meta.Key, obj *ga.Route) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockRoutes.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockRoutes.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockRoutes %v exists", key), } klog.V(5).Infof("MockRoutes.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "ga", "routes") obj.SelfLink = SelfLink(meta.VersionGA, projectID, "routes", key) m.Objects[*key] = &MockRoutesObj{obj} klog.V(5).Infof("MockRoutes.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockRoutes) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockRoutes.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockRoutes.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockRoutes %v not found", key), } klog.V(5).Infof("MockRoutes.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockRoutes.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockRoutes) Obj(o *ga.Route) *MockRoutesObj { return &MockRoutesObj{o} } // GCERoutes is a simplifying adapter for the GCE Routes. type GCERoutes struct { s *Service } // Get the Route named by key. func (g *GCERoutes) Get(ctx context.Context, key *meta.Key) (*ga.Route, error) { klog.V(5).Infof("GCERoutes.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCERoutes.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Routes") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("ga"), Service: "Routes", } klog.V(5).Infof("GCERoutes.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERoutes.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.Routes.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCERoutes.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all Route objects. func (g *GCERoutes) List(ctx context.Context, fl *filter.F) ([]*ga.Route, error) { klog.V(5).Infof("GCERoutes.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Routes") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("ga"), Service: "Routes", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCERoutes.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.GA.Routes.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*ga.Route f := func(l *ga.RouteList) error { klog.V(5).Infof("GCERoutes.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCERoutes.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCERoutes.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCERoutes.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert Route with key of value obj. func (g *GCERoutes) Insert(ctx context.Context, key *meta.Key, obj *ga.Route) error { klog.V(5).Infof("GCERoutes.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCERoutes.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Routes") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("ga"), Service: "Routes", } klog.V(5).Infof("GCERoutes.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERoutes.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.GA.Routes.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCERoutes.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCERoutes.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the Route referenced by key. func (g *GCERoutes) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCERoutes.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCERoutes.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Routes") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("ga"), Service: "Routes", } klog.V(5).Infof("GCERoutes.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERoutes.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.Routes.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCERoutes.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCERoutes.Delete(%v, %v) = %v", ctx, key, err) return err } // BetaSecurityPolicies is an interface that allows for mocking of SecurityPolicies. type BetaSecurityPolicies interface { Get(ctx context.Context, key *meta.Key) (*beta.SecurityPolicy, error) List(ctx context.Context, fl *filter.F) ([]*beta.SecurityPolicy, error) Insert(ctx context.Context, key *meta.Key, obj *beta.SecurityPolicy) error Delete(ctx context.Context, key *meta.Key) error AddRule(context.Context, *meta.Key, *beta.SecurityPolicyRule) error GetRule(context.Context, *meta.Key) (*beta.SecurityPolicyRule, error) Patch(context.Context, *meta.Key, *beta.SecurityPolicy) error PatchRule(context.Context, *meta.Key, *beta.SecurityPolicyRule) error RemoveRule(context.Context, *meta.Key) error } // NewMockBetaSecurityPolicies returns a new mock for SecurityPolicies. func NewMockBetaSecurityPolicies(pr ProjectRouter, objs map[meta.Key]*MockSecurityPoliciesObj) *MockBetaSecurityPolicies { mock := &MockBetaSecurityPolicies{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockBetaSecurityPolicies is the mock for SecurityPolicies. type MockBetaSecurityPolicies struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockSecurityPoliciesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaSecurityPolicies) (bool, *beta.SecurityPolicy, error) ListHook func(ctx context.Context, fl *filter.F, m *MockBetaSecurityPolicies) (bool, []*beta.SecurityPolicy, error) InsertHook func(ctx context.Context, key *meta.Key, obj *beta.SecurityPolicy, m *MockBetaSecurityPolicies) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaSecurityPolicies) (bool, error) AddRuleHook func(context.Context, *meta.Key, *beta.SecurityPolicyRule, *MockBetaSecurityPolicies) error GetRuleHook func(context.Context, *meta.Key, *MockBetaSecurityPolicies) (*beta.SecurityPolicyRule, error) PatchHook func(context.Context, *meta.Key, *beta.SecurityPolicy, *MockBetaSecurityPolicies) error PatchRuleHook func(context.Context, *meta.Key, *beta.SecurityPolicyRule, *MockBetaSecurityPolicies) error RemoveRuleHook func(context.Context, *meta.Key, *MockBetaSecurityPolicies) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockBetaSecurityPolicies) Get(ctx context.Context, key *meta.Key) (*beta.SecurityPolicy, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaSecurityPolicies.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockBetaSecurityPolicies.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToBeta() klog.V(5).Infof("MockBetaSecurityPolicies.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaSecurityPolicies %v not found", key), } klog.V(5).Infof("MockBetaSecurityPolicies.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockBetaSecurityPolicies) List(ctx context.Context, fl *filter.F) ([]*beta.SecurityPolicy, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockBetaSecurityPolicies.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockBetaSecurityPolicies.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*beta.SecurityPolicy for _, obj := range m.Objects { if !fl.Match(obj.ToBeta()) { continue } objs = append(objs, obj.ToBeta()) } klog.V(5).Infof("MockBetaSecurityPolicies.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockBetaSecurityPolicies) Insert(ctx context.Context, key *meta.Key, obj *beta.SecurityPolicy) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockBetaSecurityPolicies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockBetaSecurityPolicies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockBetaSecurityPolicies %v exists", key), } klog.V(5).Infof("MockBetaSecurityPolicies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "beta", "securityPolicies") obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "securityPolicies", key) m.Objects[*key] = &MockSecurityPoliciesObj{obj} klog.V(5).Infof("MockBetaSecurityPolicies.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockBetaSecurityPolicies) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaSecurityPolicies.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockBetaSecurityPolicies.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaSecurityPolicies %v not found", key), } klog.V(5).Infof("MockBetaSecurityPolicies.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockBetaSecurityPolicies.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockBetaSecurityPolicies) Obj(o *beta.SecurityPolicy) *MockSecurityPoliciesObj { return &MockSecurityPoliciesObj{o} } // AddRule is a mock for the corresponding method. func (m *MockBetaSecurityPolicies) AddRule(ctx context.Context, key *meta.Key, arg0 *beta.SecurityPolicyRule) error { if m.AddRuleHook != nil { return m.AddRuleHook(ctx, key, arg0, m) } return nil } // GetRule is a mock for the corresponding method. func (m *MockBetaSecurityPolicies) GetRule(ctx context.Context, key *meta.Key) (*beta.SecurityPolicyRule, error) { if m.GetRuleHook != nil { return m.GetRuleHook(ctx, key, m) } return nil, fmt.Errorf("GetRuleHook must be set") } // Patch is a mock for the corresponding method. func (m *MockBetaSecurityPolicies) Patch(ctx context.Context, key *meta.Key, arg0 *beta.SecurityPolicy) error { if m.PatchHook != nil { return m.PatchHook(ctx, key, arg0, m) } return nil } // PatchRule is a mock for the corresponding method. func (m *MockBetaSecurityPolicies) PatchRule(ctx context.Context, key *meta.Key, arg0 *beta.SecurityPolicyRule) error { if m.PatchRuleHook != nil { return m.PatchRuleHook(ctx, key, arg0, m) } return nil } // RemoveRule is a mock for the corresponding method. func (m *MockBetaSecurityPolicies) RemoveRule(ctx context.Context, key *meta.Key) error { if m.RemoveRuleHook != nil { return m.RemoveRuleHook(ctx, key, m) } return nil } // GCEBetaSecurityPolicies is a simplifying adapter for the GCE SecurityPolicies. type GCEBetaSecurityPolicies struct { s *Service } // Get the SecurityPolicy named by key. func (g *GCEBetaSecurityPolicies) Get(ctx context.Context, key *meta.Key) (*beta.SecurityPolicy, error) { klog.V(5).Infof("GCEBetaSecurityPolicies.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaSecurityPolicies.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "SecurityPolicies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("beta"), Service: "SecurityPolicies", } klog.V(5).Infof("GCEBetaSecurityPolicies.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaSecurityPolicies.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Beta.SecurityPolicies.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEBetaSecurityPolicies.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all SecurityPolicy objects. func (g *GCEBetaSecurityPolicies) List(ctx context.Context, fl *filter.F) ([]*beta.SecurityPolicy, error) { klog.V(5).Infof("GCEBetaSecurityPolicies.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "SecurityPolicies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("beta"), Service: "SecurityPolicies", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEBetaSecurityPolicies.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.Beta.SecurityPolicies.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*beta.SecurityPolicy f := func(l *beta.SecurityPolicyList) error { klog.V(5).Infof("GCEBetaSecurityPolicies.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEBetaSecurityPolicies.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEBetaSecurityPolicies.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEBetaSecurityPolicies.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert SecurityPolicy with key of value obj. func (g *GCEBetaSecurityPolicies) Insert(ctx context.Context, key *meta.Key, obj *beta.SecurityPolicy) error { klog.V(5).Infof("GCEBetaSecurityPolicies.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEBetaSecurityPolicies.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "SecurityPolicies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("beta"), Service: "SecurityPolicies", } klog.V(5).Infof("GCEBetaSecurityPolicies.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaSecurityPolicies.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Beta.SecurityPolicies.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaSecurityPolicies.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaSecurityPolicies.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the SecurityPolicy referenced by key. func (g *GCEBetaSecurityPolicies) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEBetaSecurityPolicies.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaSecurityPolicies.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "SecurityPolicies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("beta"), Service: "SecurityPolicies", } klog.V(5).Infof("GCEBetaSecurityPolicies.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaSecurityPolicies.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.SecurityPolicies.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaSecurityPolicies.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaSecurityPolicies.Delete(%v, %v) = %v", ctx, key, err) return err } // AddRule is a method on GCEBetaSecurityPolicies. func (g *GCEBetaSecurityPolicies) AddRule(ctx context.Context, key *meta.Key, arg0 *beta.SecurityPolicyRule) error { klog.V(5).Infof("GCEBetaSecurityPolicies.AddRule(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaSecurityPolicies.AddRule(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "SecurityPolicies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "AddRule", Version: meta.Version("beta"), Service: "SecurityPolicies", } klog.V(5).Infof("GCEBetaSecurityPolicies.AddRule(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaSecurityPolicies.AddRule(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.SecurityPolicies.AddRule(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaSecurityPolicies.AddRule(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaSecurityPolicies.AddRule(%v, %v, ...) = %+v", ctx, key, err) return err } // GetRule is a method on GCEBetaSecurityPolicies. func (g *GCEBetaSecurityPolicies) GetRule(ctx context.Context, key *meta.Key) (*beta.SecurityPolicyRule, error) { klog.V(5).Infof("GCEBetaSecurityPolicies.GetRule(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaSecurityPolicies.GetRule(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "SecurityPolicies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "GetRule", Version: meta.Version("beta"), Service: "SecurityPolicies", } klog.V(5).Infof("GCEBetaSecurityPolicies.GetRule(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaSecurityPolicies.GetRule(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Beta.SecurityPolicies.GetRule(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEBetaSecurityPolicies.GetRule(%v, %v, ...) = %+v, %v", ctx, key, v, err) return v, err } // Patch is a method on GCEBetaSecurityPolicies. func (g *GCEBetaSecurityPolicies) Patch(ctx context.Context, key *meta.Key, arg0 *beta.SecurityPolicy) error { klog.V(5).Infof("GCEBetaSecurityPolicies.Patch(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaSecurityPolicies.Patch(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "SecurityPolicies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Patch", Version: meta.Version("beta"), Service: "SecurityPolicies", } klog.V(5).Infof("GCEBetaSecurityPolicies.Patch(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaSecurityPolicies.Patch(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.SecurityPolicies.Patch(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaSecurityPolicies.Patch(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaSecurityPolicies.Patch(%v, %v, ...) = %+v", ctx, key, err) return err } // PatchRule is a method on GCEBetaSecurityPolicies. func (g *GCEBetaSecurityPolicies) PatchRule(ctx context.Context, key *meta.Key, arg0 *beta.SecurityPolicyRule) error { klog.V(5).Infof("GCEBetaSecurityPolicies.PatchRule(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaSecurityPolicies.PatchRule(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "SecurityPolicies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "PatchRule", Version: meta.Version("beta"), Service: "SecurityPolicies", } klog.V(5).Infof("GCEBetaSecurityPolicies.PatchRule(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaSecurityPolicies.PatchRule(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.SecurityPolicies.PatchRule(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaSecurityPolicies.PatchRule(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaSecurityPolicies.PatchRule(%v, %v, ...) = %+v", ctx, key, err) return err } // RemoveRule is a method on GCEBetaSecurityPolicies. func (g *GCEBetaSecurityPolicies) RemoveRule(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEBetaSecurityPolicies.RemoveRule(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaSecurityPolicies.RemoveRule(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "SecurityPolicies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "RemoveRule", Version: meta.Version("beta"), Service: "SecurityPolicies", } klog.V(5).Infof("GCEBetaSecurityPolicies.RemoveRule(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaSecurityPolicies.RemoveRule(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.SecurityPolicies.RemoveRule(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaSecurityPolicies.RemoveRule(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaSecurityPolicies.RemoveRule(%v, %v, ...) = %+v", ctx, key, err) return err } // SslCertificates is an interface that allows for mocking of SslCertificates. type SslCertificates interface { Get(ctx context.Context, key *meta.Key) (*ga.SslCertificate, error) List(ctx context.Context, fl *filter.F) ([]*ga.SslCertificate, error) Insert(ctx context.Context, key *meta.Key, obj *ga.SslCertificate) error Delete(ctx context.Context, key *meta.Key) error } // NewMockSslCertificates returns a new mock for SslCertificates. func NewMockSslCertificates(pr ProjectRouter, objs map[meta.Key]*MockSslCertificatesObj) *MockSslCertificates { mock := &MockSslCertificates{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockSslCertificates is the mock for SslCertificates. type MockSslCertificates struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockSslCertificatesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockSslCertificates) (bool, *ga.SslCertificate, error) ListHook func(ctx context.Context, fl *filter.F, m *MockSslCertificates) (bool, []*ga.SslCertificate, error) InsertHook func(ctx context.Context, key *meta.Key, obj *ga.SslCertificate, m *MockSslCertificates) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockSslCertificates) (bool, error) // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockSslCertificates) Get(ctx context.Context, key *meta.Key) (*ga.SslCertificate, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockSslCertificates.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockSslCertificates.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToGA() klog.V(5).Infof("MockSslCertificates.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockSslCertificates %v not found", key), } klog.V(5).Infof("MockSslCertificates.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockSslCertificates) List(ctx context.Context, fl *filter.F) ([]*ga.SslCertificate, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockSslCertificates.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockSslCertificates.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*ga.SslCertificate for _, obj := range m.Objects { if !fl.Match(obj.ToGA()) { continue } objs = append(objs, obj.ToGA()) } klog.V(5).Infof("MockSslCertificates.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockSslCertificates) Insert(ctx context.Context, key *meta.Key, obj *ga.SslCertificate) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockSslCertificates %v exists", key), } klog.V(5).Infof("MockSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "ga", "sslCertificates") obj.SelfLink = SelfLink(meta.VersionGA, projectID, "sslCertificates", key) m.Objects[*key] = &MockSslCertificatesObj{obj} klog.V(5).Infof("MockSslCertificates.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockSslCertificates) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockSslCertificates.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockSslCertificates.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockSslCertificates %v not found", key), } klog.V(5).Infof("MockSslCertificates.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockSslCertificates.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockSslCertificates) Obj(o *ga.SslCertificate) *MockSslCertificatesObj { return &MockSslCertificatesObj{o} } // GCESslCertificates is a simplifying adapter for the GCE SslCertificates. type GCESslCertificates struct { s *Service } // Get the SslCertificate named by key. func (g *GCESslCertificates) Get(ctx context.Context, key *meta.Key) (*ga.SslCertificate, error) { klog.V(5).Infof("GCESslCertificates.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCESslCertificates.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "SslCertificates") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("ga"), Service: "SslCertificates", } klog.V(5).Infof("GCESslCertificates.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCESslCertificates.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.SslCertificates.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCESslCertificates.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all SslCertificate objects. func (g *GCESslCertificates) List(ctx context.Context, fl *filter.F) ([]*ga.SslCertificate, error) { klog.V(5).Infof("GCESslCertificates.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "SslCertificates") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("ga"), Service: "SslCertificates", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCESslCertificates.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.GA.SslCertificates.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*ga.SslCertificate f := func(l *ga.SslCertificateList) error { klog.V(5).Infof("GCESslCertificates.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCESslCertificates.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCESslCertificates.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCESslCertificates.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert SslCertificate with key of value obj. func (g *GCESslCertificates) Insert(ctx context.Context, key *meta.Key, obj *ga.SslCertificate) error { klog.V(5).Infof("GCESslCertificates.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCESslCertificates.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "SslCertificates") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("ga"), Service: "SslCertificates", } klog.V(5).Infof("GCESslCertificates.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCESslCertificates.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.GA.SslCertificates.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCESslCertificates.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCESslCertificates.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the SslCertificate referenced by key. func (g *GCESslCertificates) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCESslCertificates.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCESslCertificates.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "SslCertificates") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("ga"), Service: "SslCertificates", } klog.V(5).Infof("GCESslCertificates.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCESslCertificates.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.SslCertificates.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCESslCertificates.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCESslCertificates.Delete(%v, %v) = %v", ctx, key, err) return err } // BetaSslCertificates is an interface that allows for mocking of SslCertificates. type BetaSslCertificates interface { Get(ctx context.Context, key *meta.Key) (*beta.SslCertificate, error) List(ctx context.Context, fl *filter.F) ([]*beta.SslCertificate, error) Insert(ctx context.Context, key *meta.Key, obj *beta.SslCertificate) error Delete(ctx context.Context, key *meta.Key) error } // NewMockBetaSslCertificates returns a new mock for SslCertificates. func NewMockBetaSslCertificates(pr ProjectRouter, objs map[meta.Key]*MockSslCertificatesObj) *MockBetaSslCertificates { mock := &MockBetaSslCertificates{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockBetaSslCertificates is the mock for SslCertificates. type MockBetaSslCertificates struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockSslCertificatesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaSslCertificates) (bool, *beta.SslCertificate, error) ListHook func(ctx context.Context, fl *filter.F, m *MockBetaSslCertificates) (bool, []*beta.SslCertificate, error) InsertHook func(ctx context.Context, key *meta.Key, obj *beta.SslCertificate, m *MockBetaSslCertificates) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaSslCertificates) (bool, error) // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockBetaSslCertificates) Get(ctx context.Context, key *meta.Key) (*beta.SslCertificate, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaSslCertificates.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockBetaSslCertificates.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToBeta() klog.V(5).Infof("MockBetaSslCertificates.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaSslCertificates %v not found", key), } klog.V(5).Infof("MockBetaSslCertificates.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockBetaSslCertificates) List(ctx context.Context, fl *filter.F) ([]*beta.SslCertificate, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockBetaSslCertificates.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockBetaSslCertificates.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*beta.SslCertificate for _, obj := range m.Objects { if !fl.Match(obj.ToBeta()) { continue } objs = append(objs, obj.ToBeta()) } klog.V(5).Infof("MockBetaSslCertificates.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockBetaSslCertificates) Insert(ctx context.Context, key *meta.Key, obj *beta.SslCertificate) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockBetaSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockBetaSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockBetaSslCertificates %v exists", key), } klog.V(5).Infof("MockBetaSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "beta", "sslCertificates") obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "sslCertificates", key) m.Objects[*key] = &MockSslCertificatesObj{obj} klog.V(5).Infof("MockBetaSslCertificates.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockBetaSslCertificates) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaSslCertificates.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockBetaSslCertificates.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaSslCertificates %v not found", key), } klog.V(5).Infof("MockBetaSslCertificates.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockBetaSslCertificates.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockBetaSslCertificates) Obj(o *beta.SslCertificate) *MockSslCertificatesObj { return &MockSslCertificatesObj{o} } // GCEBetaSslCertificates is a simplifying adapter for the GCE SslCertificates. type GCEBetaSslCertificates struct { s *Service } // Get the SslCertificate named by key. func (g *GCEBetaSslCertificates) Get(ctx context.Context, key *meta.Key) (*beta.SslCertificate, error) { klog.V(5).Infof("GCEBetaSslCertificates.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaSslCertificates.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "SslCertificates") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("beta"), Service: "SslCertificates", } klog.V(5).Infof("GCEBetaSslCertificates.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaSslCertificates.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Beta.SslCertificates.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEBetaSslCertificates.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all SslCertificate objects. func (g *GCEBetaSslCertificates) List(ctx context.Context, fl *filter.F) ([]*beta.SslCertificate, error) { klog.V(5).Infof("GCEBetaSslCertificates.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "SslCertificates") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("beta"), Service: "SslCertificates", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEBetaSslCertificates.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.Beta.SslCertificates.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*beta.SslCertificate f := func(l *beta.SslCertificateList) error { klog.V(5).Infof("GCEBetaSslCertificates.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEBetaSslCertificates.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEBetaSslCertificates.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEBetaSslCertificates.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert SslCertificate with key of value obj. func (g *GCEBetaSslCertificates) Insert(ctx context.Context, key *meta.Key, obj *beta.SslCertificate) error { klog.V(5).Infof("GCEBetaSslCertificates.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEBetaSslCertificates.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "SslCertificates") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("beta"), Service: "SslCertificates", } klog.V(5).Infof("GCEBetaSslCertificates.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaSslCertificates.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Beta.SslCertificates.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaSslCertificates.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaSslCertificates.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the SslCertificate referenced by key. func (g *GCEBetaSslCertificates) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEBetaSslCertificates.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaSslCertificates.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "SslCertificates") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("beta"), Service: "SslCertificates", } klog.V(5).Infof("GCEBetaSslCertificates.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaSslCertificates.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.SslCertificates.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaSslCertificates.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaSslCertificates.Delete(%v, %v) = %v", ctx, key, err) return err } // AlphaSslCertificates is an interface that allows for mocking of SslCertificates. type AlphaSslCertificates interface { Get(ctx context.Context, key *meta.Key) (*alpha.SslCertificate, error) List(ctx context.Context, fl *filter.F) ([]*alpha.SslCertificate, error) Insert(ctx context.Context, key *meta.Key, obj *alpha.SslCertificate) error Delete(ctx context.Context, key *meta.Key) error } // NewMockAlphaSslCertificates returns a new mock for SslCertificates. func NewMockAlphaSslCertificates(pr ProjectRouter, objs map[meta.Key]*MockSslCertificatesObj) *MockAlphaSslCertificates { mock := &MockAlphaSslCertificates{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockAlphaSslCertificates is the mock for SslCertificates. type MockAlphaSslCertificates struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockSslCertificatesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaSslCertificates) (bool, *alpha.SslCertificate, error) ListHook func(ctx context.Context, fl *filter.F, m *MockAlphaSslCertificates) (bool, []*alpha.SslCertificate, error) InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.SslCertificate, m *MockAlphaSslCertificates) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaSslCertificates) (bool, error) // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockAlphaSslCertificates) Get(ctx context.Context, key *meta.Key) (*alpha.SslCertificate, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaSslCertificates.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockAlphaSslCertificates.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToAlpha() klog.V(5).Infof("MockAlphaSslCertificates.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaSslCertificates %v not found", key), } klog.V(5).Infof("MockAlphaSslCertificates.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockAlphaSslCertificates) List(ctx context.Context, fl *filter.F) ([]*alpha.SslCertificate, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockAlphaSslCertificates.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockAlphaSslCertificates.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*alpha.SslCertificate for _, obj := range m.Objects { if !fl.Match(obj.ToAlpha()) { continue } objs = append(objs, obj.ToAlpha()) } klog.V(5).Infof("MockAlphaSslCertificates.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockAlphaSslCertificates) Insert(ctx context.Context, key *meta.Key, obj *alpha.SslCertificate) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockAlphaSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockAlphaSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockAlphaSslCertificates %v exists", key), } klog.V(5).Infof("MockAlphaSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "sslCertificates") obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "sslCertificates", key) m.Objects[*key] = &MockSslCertificatesObj{obj} klog.V(5).Infof("MockAlphaSslCertificates.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockAlphaSslCertificates) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaSslCertificates.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockAlphaSslCertificates.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaSslCertificates %v not found", key), } klog.V(5).Infof("MockAlphaSslCertificates.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockAlphaSslCertificates.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockAlphaSslCertificates) Obj(o *alpha.SslCertificate) *MockSslCertificatesObj { return &MockSslCertificatesObj{o} } // GCEAlphaSslCertificates is a simplifying adapter for the GCE SslCertificates. type GCEAlphaSslCertificates struct { s *Service } // Get the SslCertificate named by key. func (g *GCEAlphaSslCertificates) Get(ctx context.Context, key *meta.Key) (*alpha.SslCertificate, error) { klog.V(5).Infof("GCEAlphaSslCertificates.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaSslCertificates.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "SslCertificates") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("alpha"), Service: "SslCertificates", } klog.V(5).Infof("GCEAlphaSslCertificates.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaSslCertificates.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Alpha.SslCertificates.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEAlphaSslCertificates.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all SslCertificate objects. func (g *GCEAlphaSslCertificates) List(ctx context.Context, fl *filter.F) ([]*alpha.SslCertificate, error) { klog.V(5).Infof("GCEAlphaSslCertificates.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "SslCertificates") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("alpha"), Service: "SslCertificates", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEAlphaSslCertificates.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.Alpha.SslCertificates.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*alpha.SslCertificate f := func(l *alpha.SslCertificateList) error { klog.V(5).Infof("GCEAlphaSslCertificates.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEAlphaSslCertificates.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEAlphaSslCertificates.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEAlphaSslCertificates.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert SslCertificate with key of value obj. func (g *GCEAlphaSslCertificates) Insert(ctx context.Context, key *meta.Key, obj *alpha.SslCertificate) error { klog.V(5).Infof("GCEAlphaSslCertificates.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEAlphaSslCertificates.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "SslCertificates") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("alpha"), Service: "SslCertificates", } klog.V(5).Infof("GCEAlphaSslCertificates.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaSslCertificates.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Alpha.SslCertificates.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaSslCertificates.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaSslCertificates.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the SslCertificate referenced by key. func (g *GCEAlphaSslCertificates) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEAlphaSslCertificates.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaSslCertificates.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "SslCertificates") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("alpha"), Service: "SslCertificates", } klog.V(5).Infof("GCEAlphaSslCertificates.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaSslCertificates.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.SslCertificates.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaSslCertificates.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaSslCertificates.Delete(%v, %v) = %v", ctx, key, err) return err } // AlphaRegionSslCertificates is an interface that allows for mocking of RegionSslCertificates. type AlphaRegionSslCertificates interface { Get(ctx context.Context, key *meta.Key) (*alpha.SslCertificate, error) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.SslCertificate, error) Insert(ctx context.Context, key *meta.Key, obj *alpha.SslCertificate) error Delete(ctx context.Context, key *meta.Key) error } // NewMockAlphaRegionSslCertificates returns a new mock for RegionSslCertificates. func NewMockAlphaRegionSslCertificates(pr ProjectRouter, objs map[meta.Key]*MockRegionSslCertificatesObj) *MockAlphaRegionSslCertificates { mock := &MockAlphaRegionSslCertificates{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockAlphaRegionSslCertificates is the mock for RegionSslCertificates. type MockAlphaRegionSslCertificates struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockRegionSslCertificatesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaRegionSslCertificates) (bool, *alpha.SslCertificate, error) ListHook func(ctx context.Context, region string, fl *filter.F, m *MockAlphaRegionSslCertificates) (bool, []*alpha.SslCertificate, error) InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.SslCertificate, m *MockAlphaRegionSslCertificates) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaRegionSslCertificates) (bool, error) // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockAlphaRegionSslCertificates) Get(ctx context.Context, key *meta.Key) (*alpha.SslCertificate, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaRegionSslCertificates.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockAlphaRegionSslCertificates.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToAlpha() klog.V(5).Infof("MockAlphaRegionSslCertificates.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaRegionSslCertificates %v not found", key), } klog.V(5).Infof("MockAlphaRegionSslCertificates.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given region. func (m *MockAlphaRegionSslCertificates) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.SslCertificate, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept { klog.V(5).Infof("MockAlphaRegionSslCertificates.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockAlphaRegionSslCertificates.List(%v, %q, %v) = nil, %v", ctx, region, fl, err) return nil, *m.ListError } var objs []*alpha.SslCertificate for key, obj := range m.Objects { if key.Region != region { continue } if !fl.Match(obj.ToAlpha()) { continue } objs = append(objs, obj.ToAlpha()) } klog.V(5).Infof("MockAlphaRegionSslCertificates.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockAlphaRegionSslCertificates) Insert(ctx context.Context, key *meta.Key, obj *alpha.SslCertificate) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockAlphaRegionSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockAlphaRegionSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockAlphaRegionSslCertificates %v exists", key), } klog.V(5).Infof("MockAlphaRegionSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "sslCertificates") obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "sslCertificates", key) m.Objects[*key] = &MockRegionSslCertificatesObj{obj} klog.V(5).Infof("MockAlphaRegionSslCertificates.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockAlphaRegionSslCertificates) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaRegionSslCertificates.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockAlphaRegionSslCertificates.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaRegionSslCertificates %v not found", key), } klog.V(5).Infof("MockAlphaRegionSslCertificates.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockAlphaRegionSslCertificates.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockAlphaRegionSslCertificates) Obj(o *alpha.SslCertificate) *MockRegionSslCertificatesObj { return &MockRegionSslCertificatesObj{o} } // GCEAlphaRegionSslCertificates is a simplifying adapter for the GCE RegionSslCertificates. type GCEAlphaRegionSslCertificates struct { s *Service } // Get the SslCertificate named by key. func (g *GCEAlphaRegionSslCertificates) Get(ctx context.Context, key *meta.Key) (*alpha.SslCertificate, error) { klog.V(5).Infof("GCEAlphaRegionSslCertificates.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaRegionSslCertificates.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionSslCertificates") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("alpha"), Service: "RegionSslCertificates", } klog.V(5).Infof("GCEAlphaRegionSslCertificates.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaRegionSslCertificates.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Alpha.RegionSslCertificates.Get(projectID, key.Region, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEAlphaRegionSslCertificates.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all SslCertificate objects. func (g *GCEAlphaRegionSslCertificates) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.SslCertificate, error) { klog.V(5).Infof("GCEAlphaRegionSslCertificates.List(%v, %v, %v) called", ctx, region, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionSslCertificates") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("alpha"), Service: "RegionSslCertificates", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEAlphaRegionSslCertificates.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk) call := g.s.Alpha.RegionSslCertificates.List(projectID, region) if fl != filter.None { call.Filter(fl.String()) } var all []*alpha.SslCertificate f := func(l *alpha.SslCertificateList) error { klog.V(5).Infof("GCEAlphaRegionSslCertificates.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEAlphaRegionSslCertificates.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEAlphaRegionSslCertificates.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEAlphaRegionSslCertificates.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert SslCertificate with key of value obj. func (g *GCEAlphaRegionSslCertificates) Insert(ctx context.Context, key *meta.Key, obj *alpha.SslCertificate) error { klog.V(5).Infof("GCEAlphaRegionSslCertificates.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEAlphaRegionSslCertificates.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionSslCertificates") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("alpha"), Service: "RegionSslCertificates", } klog.V(5).Infof("GCEAlphaRegionSslCertificates.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaRegionSslCertificates.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Alpha.RegionSslCertificates.Insert(projectID, key.Region, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaRegionSslCertificates.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaRegionSslCertificates.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the SslCertificate referenced by key. func (g *GCEAlphaRegionSslCertificates) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEAlphaRegionSslCertificates.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaRegionSslCertificates.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionSslCertificates") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("alpha"), Service: "RegionSslCertificates", } klog.V(5).Infof("GCEAlphaRegionSslCertificates.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaRegionSslCertificates.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.RegionSslCertificates.Delete(projectID, key.Region, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaRegionSslCertificates.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaRegionSslCertificates.Delete(%v, %v) = %v", ctx, key, err) return err } // BetaRegionSslCertificates is an interface that allows for mocking of RegionSslCertificates. type BetaRegionSslCertificates interface { Get(ctx context.Context, key *meta.Key) (*beta.SslCertificate, error) List(ctx context.Context, region string, fl *filter.F) ([]*beta.SslCertificate, error) Insert(ctx context.Context, key *meta.Key, obj *beta.SslCertificate) error Delete(ctx context.Context, key *meta.Key) error } // NewMockBetaRegionSslCertificates returns a new mock for RegionSslCertificates. func NewMockBetaRegionSslCertificates(pr ProjectRouter, objs map[meta.Key]*MockRegionSslCertificatesObj) *MockBetaRegionSslCertificates { mock := &MockBetaRegionSslCertificates{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockBetaRegionSslCertificates is the mock for RegionSslCertificates. type MockBetaRegionSslCertificates struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockRegionSslCertificatesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaRegionSslCertificates) (bool, *beta.SslCertificate, error) ListHook func(ctx context.Context, region string, fl *filter.F, m *MockBetaRegionSslCertificates) (bool, []*beta.SslCertificate, error) InsertHook func(ctx context.Context, key *meta.Key, obj *beta.SslCertificate, m *MockBetaRegionSslCertificates) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaRegionSslCertificates) (bool, error) // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockBetaRegionSslCertificates) Get(ctx context.Context, key *meta.Key) (*beta.SslCertificate, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaRegionSslCertificates.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockBetaRegionSslCertificates.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToBeta() klog.V(5).Infof("MockBetaRegionSslCertificates.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaRegionSslCertificates %v not found", key), } klog.V(5).Infof("MockBetaRegionSslCertificates.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given region. func (m *MockBetaRegionSslCertificates) List(ctx context.Context, region string, fl *filter.F) ([]*beta.SslCertificate, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept { klog.V(5).Infof("MockBetaRegionSslCertificates.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockBetaRegionSslCertificates.List(%v, %q, %v) = nil, %v", ctx, region, fl, err) return nil, *m.ListError } var objs []*beta.SslCertificate for key, obj := range m.Objects { if key.Region != region { continue } if !fl.Match(obj.ToBeta()) { continue } objs = append(objs, obj.ToBeta()) } klog.V(5).Infof("MockBetaRegionSslCertificates.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockBetaRegionSslCertificates) Insert(ctx context.Context, key *meta.Key, obj *beta.SslCertificate) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockBetaRegionSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockBetaRegionSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockBetaRegionSslCertificates %v exists", key), } klog.V(5).Infof("MockBetaRegionSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "beta", "sslCertificates") obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "sslCertificates", key) m.Objects[*key] = &MockRegionSslCertificatesObj{obj} klog.V(5).Infof("MockBetaRegionSslCertificates.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockBetaRegionSslCertificates) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaRegionSslCertificates.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockBetaRegionSslCertificates.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaRegionSslCertificates %v not found", key), } klog.V(5).Infof("MockBetaRegionSslCertificates.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockBetaRegionSslCertificates.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockBetaRegionSslCertificates) Obj(o *beta.SslCertificate) *MockRegionSslCertificatesObj { return &MockRegionSslCertificatesObj{o} } // GCEBetaRegionSslCertificates is a simplifying adapter for the GCE RegionSslCertificates. type GCEBetaRegionSslCertificates struct { s *Service } // Get the SslCertificate named by key. func (g *GCEBetaRegionSslCertificates) Get(ctx context.Context, key *meta.Key) (*beta.SslCertificate, error) { klog.V(5).Infof("GCEBetaRegionSslCertificates.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaRegionSslCertificates.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionSslCertificates") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("beta"), Service: "RegionSslCertificates", } klog.V(5).Infof("GCEBetaRegionSslCertificates.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaRegionSslCertificates.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Beta.RegionSslCertificates.Get(projectID, key.Region, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEBetaRegionSslCertificates.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all SslCertificate objects. func (g *GCEBetaRegionSslCertificates) List(ctx context.Context, region string, fl *filter.F) ([]*beta.SslCertificate, error) { klog.V(5).Infof("GCEBetaRegionSslCertificates.List(%v, %v, %v) called", ctx, region, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionSslCertificates") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("beta"), Service: "RegionSslCertificates", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEBetaRegionSslCertificates.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk) call := g.s.Beta.RegionSslCertificates.List(projectID, region) if fl != filter.None { call.Filter(fl.String()) } var all []*beta.SslCertificate f := func(l *beta.SslCertificateList) error { klog.V(5).Infof("GCEBetaRegionSslCertificates.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEBetaRegionSslCertificates.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEBetaRegionSslCertificates.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEBetaRegionSslCertificates.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert SslCertificate with key of value obj. func (g *GCEBetaRegionSslCertificates) Insert(ctx context.Context, key *meta.Key, obj *beta.SslCertificate) error { klog.V(5).Infof("GCEBetaRegionSslCertificates.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEBetaRegionSslCertificates.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionSslCertificates") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("beta"), Service: "RegionSslCertificates", } klog.V(5).Infof("GCEBetaRegionSslCertificates.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaRegionSslCertificates.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Beta.RegionSslCertificates.Insert(projectID, key.Region, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaRegionSslCertificates.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaRegionSslCertificates.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the SslCertificate referenced by key. func (g *GCEBetaRegionSslCertificates) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEBetaRegionSslCertificates.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaRegionSslCertificates.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionSslCertificates") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("beta"), Service: "RegionSslCertificates", } klog.V(5).Infof("GCEBetaRegionSslCertificates.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaRegionSslCertificates.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.RegionSslCertificates.Delete(projectID, key.Region, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaRegionSslCertificates.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaRegionSslCertificates.Delete(%v, %v) = %v", ctx, key, err) return err } // RegionSslCertificates is an interface that allows for mocking of RegionSslCertificates. type RegionSslCertificates interface { Get(ctx context.Context, key *meta.Key) (*ga.SslCertificate, error) List(ctx context.Context, region string, fl *filter.F) ([]*ga.SslCertificate, error) Insert(ctx context.Context, key *meta.Key, obj *ga.SslCertificate) error Delete(ctx context.Context, key *meta.Key) error } // NewMockRegionSslCertificates returns a new mock for RegionSslCertificates. func NewMockRegionSslCertificates(pr ProjectRouter, objs map[meta.Key]*MockRegionSslCertificatesObj) *MockRegionSslCertificates { mock := &MockRegionSslCertificates{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockRegionSslCertificates is the mock for RegionSslCertificates. type MockRegionSslCertificates struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockRegionSslCertificatesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockRegionSslCertificates) (bool, *ga.SslCertificate, error) ListHook func(ctx context.Context, region string, fl *filter.F, m *MockRegionSslCertificates) (bool, []*ga.SslCertificate, error) InsertHook func(ctx context.Context, key *meta.Key, obj *ga.SslCertificate, m *MockRegionSslCertificates) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockRegionSslCertificates) (bool, error) // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockRegionSslCertificates) Get(ctx context.Context, key *meta.Key) (*ga.SslCertificate, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockRegionSslCertificates.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockRegionSslCertificates.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToGA() klog.V(5).Infof("MockRegionSslCertificates.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockRegionSslCertificates %v not found", key), } klog.V(5).Infof("MockRegionSslCertificates.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given region. func (m *MockRegionSslCertificates) List(ctx context.Context, region string, fl *filter.F) ([]*ga.SslCertificate, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept { klog.V(5).Infof("MockRegionSslCertificates.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockRegionSslCertificates.List(%v, %q, %v) = nil, %v", ctx, region, fl, err) return nil, *m.ListError } var objs []*ga.SslCertificate for key, obj := range m.Objects { if key.Region != region { continue } if !fl.Match(obj.ToGA()) { continue } objs = append(objs, obj.ToGA()) } klog.V(5).Infof("MockRegionSslCertificates.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockRegionSslCertificates) Insert(ctx context.Context, key *meta.Key, obj *ga.SslCertificate) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockRegionSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockRegionSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockRegionSslCertificates %v exists", key), } klog.V(5).Infof("MockRegionSslCertificates.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "ga", "sslCertificates") obj.SelfLink = SelfLink(meta.VersionGA, projectID, "sslCertificates", key) m.Objects[*key] = &MockRegionSslCertificatesObj{obj} klog.V(5).Infof("MockRegionSslCertificates.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockRegionSslCertificates) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockRegionSslCertificates.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockRegionSslCertificates.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockRegionSslCertificates %v not found", key), } klog.V(5).Infof("MockRegionSslCertificates.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockRegionSslCertificates.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockRegionSslCertificates) Obj(o *ga.SslCertificate) *MockRegionSslCertificatesObj { return &MockRegionSslCertificatesObj{o} } // GCERegionSslCertificates is a simplifying adapter for the GCE RegionSslCertificates. type GCERegionSslCertificates struct { s *Service } // Get the SslCertificate named by key. func (g *GCERegionSslCertificates) Get(ctx context.Context, key *meta.Key) (*ga.SslCertificate, error) { klog.V(5).Infof("GCERegionSslCertificates.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCERegionSslCertificates.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionSslCertificates") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("ga"), Service: "RegionSslCertificates", } klog.V(5).Infof("GCERegionSslCertificates.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERegionSslCertificates.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.RegionSslCertificates.Get(projectID, key.Region, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCERegionSslCertificates.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all SslCertificate objects. func (g *GCERegionSslCertificates) List(ctx context.Context, region string, fl *filter.F) ([]*ga.SslCertificate, error) { klog.V(5).Infof("GCERegionSslCertificates.List(%v, %v, %v) called", ctx, region, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionSslCertificates") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("ga"), Service: "RegionSslCertificates", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCERegionSslCertificates.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk) call := g.s.GA.RegionSslCertificates.List(projectID, region) if fl != filter.None { call.Filter(fl.String()) } var all []*ga.SslCertificate f := func(l *ga.SslCertificateList) error { klog.V(5).Infof("GCERegionSslCertificates.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCERegionSslCertificates.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCERegionSslCertificates.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCERegionSslCertificates.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert SslCertificate with key of value obj. func (g *GCERegionSslCertificates) Insert(ctx context.Context, key *meta.Key, obj *ga.SslCertificate) error { klog.V(5).Infof("GCERegionSslCertificates.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCERegionSslCertificates.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionSslCertificates") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("ga"), Service: "RegionSslCertificates", } klog.V(5).Infof("GCERegionSslCertificates.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERegionSslCertificates.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.GA.RegionSslCertificates.Insert(projectID, key.Region, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCERegionSslCertificates.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCERegionSslCertificates.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the SslCertificate referenced by key. func (g *GCERegionSslCertificates) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCERegionSslCertificates.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCERegionSslCertificates.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionSslCertificates") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("ga"), Service: "RegionSslCertificates", } klog.V(5).Infof("GCERegionSslCertificates.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERegionSslCertificates.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.RegionSslCertificates.Delete(projectID, key.Region, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCERegionSslCertificates.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCERegionSslCertificates.Delete(%v, %v) = %v", ctx, key, err) return err } // SslPolicies is an interface that allows for mocking of SslPolicies. type SslPolicies interface { Get(ctx context.Context, key *meta.Key) (*ga.SslPolicy, error) Insert(ctx context.Context, key *meta.Key, obj *ga.SslPolicy) error Delete(ctx context.Context, key *meta.Key) error } // NewMockSslPolicies returns a new mock for SslPolicies. func NewMockSslPolicies(pr ProjectRouter, objs map[meta.Key]*MockSslPoliciesObj) *MockSslPolicies { mock := &MockSslPolicies{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockSslPolicies is the mock for SslPolicies. type MockSslPolicies struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockSslPoliciesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockSslPolicies) (bool, *ga.SslPolicy, error) InsertHook func(ctx context.Context, key *meta.Key, obj *ga.SslPolicy, m *MockSslPolicies) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockSslPolicies) (bool, error) // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockSslPolicies) Get(ctx context.Context, key *meta.Key) (*ga.SslPolicy, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockSslPolicies.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockSslPolicies.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToGA() klog.V(5).Infof("MockSslPolicies.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockSslPolicies %v not found", key), } klog.V(5).Infof("MockSslPolicies.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // Insert is a mock for inserting/creating a new object. func (m *MockSslPolicies) Insert(ctx context.Context, key *meta.Key, obj *ga.SslPolicy) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockSslPolicies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockSslPolicies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockSslPolicies %v exists", key), } klog.V(5).Infof("MockSslPolicies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "ga", "sslPolicies") obj.SelfLink = SelfLink(meta.VersionGA, projectID, "sslPolicies", key) m.Objects[*key] = &MockSslPoliciesObj{obj} klog.V(5).Infof("MockSslPolicies.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockSslPolicies) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockSslPolicies.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockSslPolicies.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockSslPolicies %v not found", key), } klog.V(5).Infof("MockSslPolicies.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockSslPolicies.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockSslPolicies) Obj(o *ga.SslPolicy) *MockSslPoliciesObj { return &MockSslPoliciesObj{o} } // GCESslPolicies is a simplifying adapter for the GCE SslPolicies. type GCESslPolicies struct { s *Service } // Get the SslPolicy named by key. func (g *GCESslPolicies) Get(ctx context.Context, key *meta.Key) (*ga.SslPolicy, error) { klog.V(5).Infof("GCESslPolicies.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCESslPolicies.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "SslPolicies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("ga"), Service: "SslPolicies", } klog.V(5).Infof("GCESslPolicies.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCESslPolicies.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.SslPolicies.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCESslPolicies.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // Insert SslPolicy with key of value obj. func (g *GCESslPolicies) Insert(ctx context.Context, key *meta.Key, obj *ga.SslPolicy) error { klog.V(5).Infof("GCESslPolicies.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCESslPolicies.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "SslPolicies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("ga"), Service: "SslPolicies", } klog.V(5).Infof("GCESslPolicies.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCESslPolicies.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.GA.SslPolicies.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCESslPolicies.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCESslPolicies.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the SslPolicy referenced by key. func (g *GCESslPolicies) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCESslPolicies.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCESslPolicies.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "SslPolicies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("ga"), Service: "SslPolicies", } klog.V(5).Infof("GCESslPolicies.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCESslPolicies.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.SslPolicies.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCESslPolicies.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCESslPolicies.Delete(%v, %v) = %v", ctx, key, err) return err } // AlphaSubnetworks is an interface that allows for mocking of Subnetworks. type AlphaSubnetworks interface { Get(ctx context.Context, key *meta.Key) (*alpha.Subnetwork, error) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.Subnetwork, error) Insert(ctx context.Context, key *meta.Key, obj *alpha.Subnetwork) error Delete(ctx context.Context, key *meta.Key) error } // NewMockAlphaSubnetworks returns a new mock for Subnetworks. func NewMockAlphaSubnetworks(pr ProjectRouter, objs map[meta.Key]*MockSubnetworksObj) *MockAlphaSubnetworks { mock := &MockAlphaSubnetworks{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockAlphaSubnetworks is the mock for Subnetworks. type MockAlphaSubnetworks struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockSubnetworksObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaSubnetworks) (bool, *alpha.Subnetwork, error) ListHook func(ctx context.Context, region string, fl *filter.F, m *MockAlphaSubnetworks) (bool, []*alpha.Subnetwork, error) InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.Subnetwork, m *MockAlphaSubnetworks) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaSubnetworks) (bool, error) // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockAlphaSubnetworks) Get(ctx context.Context, key *meta.Key) (*alpha.Subnetwork, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaSubnetworks.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockAlphaSubnetworks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToAlpha() klog.V(5).Infof("MockAlphaSubnetworks.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaSubnetworks %v not found", key), } klog.V(5).Infof("MockAlphaSubnetworks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given region. func (m *MockAlphaSubnetworks) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.Subnetwork, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept { klog.V(5).Infof("MockAlphaSubnetworks.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockAlphaSubnetworks.List(%v, %q, %v) = nil, %v", ctx, region, fl, err) return nil, *m.ListError } var objs []*alpha.Subnetwork for key, obj := range m.Objects { if key.Region != region { continue } if !fl.Match(obj.ToAlpha()) { continue } objs = append(objs, obj.ToAlpha()) } klog.V(5).Infof("MockAlphaSubnetworks.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockAlphaSubnetworks) Insert(ctx context.Context, key *meta.Key, obj *alpha.Subnetwork) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockAlphaSubnetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockAlphaSubnetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockAlphaSubnetworks %v exists", key), } klog.V(5).Infof("MockAlphaSubnetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "subnetworks") obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "subnetworks", key) m.Objects[*key] = &MockSubnetworksObj{obj} klog.V(5).Infof("MockAlphaSubnetworks.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockAlphaSubnetworks) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaSubnetworks.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockAlphaSubnetworks.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaSubnetworks %v not found", key), } klog.V(5).Infof("MockAlphaSubnetworks.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockAlphaSubnetworks.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockAlphaSubnetworks) Obj(o *alpha.Subnetwork) *MockSubnetworksObj { return &MockSubnetworksObj{o} } // GCEAlphaSubnetworks is a simplifying adapter for the GCE Subnetworks. type GCEAlphaSubnetworks struct { s *Service } // Get the Subnetwork named by key. func (g *GCEAlphaSubnetworks) Get(ctx context.Context, key *meta.Key) (*alpha.Subnetwork, error) { klog.V(5).Infof("GCEAlphaSubnetworks.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaSubnetworks.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Subnetworks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("alpha"), Service: "Subnetworks", } klog.V(5).Infof("GCEAlphaSubnetworks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaSubnetworks.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Alpha.Subnetworks.Get(projectID, key.Region, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEAlphaSubnetworks.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all Subnetwork objects. func (g *GCEAlphaSubnetworks) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.Subnetwork, error) { klog.V(5).Infof("GCEAlphaSubnetworks.List(%v, %v, %v) called", ctx, region, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Subnetworks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("alpha"), Service: "Subnetworks", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEAlphaSubnetworks.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk) call := g.s.Alpha.Subnetworks.List(projectID, region) if fl != filter.None { call.Filter(fl.String()) } var all []*alpha.Subnetwork f := func(l *alpha.SubnetworkList) error { klog.V(5).Infof("GCEAlphaSubnetworks.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEAlphaSubnetworks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEAlphaSubnetworks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEAlphaSubnetworks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert Subnetwork with key of value obj. func (g *GCEAlphaSubnetworks) Insert(ctx context.Context, key *meta.Key, obj *alpha.Subnetwork) error { klog.V(5).Infof("GCEAlphaSubnetworks.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEAlphaSubnetworks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Subnetworks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("alpha"), Service: "Subnetworks", } klog.V(5).Infof("GCEAlphaSubnetworks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaSubnetworks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Alpha.Subnetworks.Insert(projectID, key.Region, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaSubnetworks.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaSubnetworks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the Subnetwork referenced by key. func (g *GCEAlphaSubnetworks) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEAlphaSubnetworks.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaSubnetworks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "Subnetworks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("alpha"), Service: "Subnetworks", } klog.V(5).Infof("GCEAlphaSubnetworks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaSubnetworks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.Subnetworks.Delete(projectID, key.Region, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaSubnetworks.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaSubnetworks.Delete(%v, %v) = %v", ctx, key, err) return err } // BetaSubnetworks is an interface that allows for mocking of Subnetworks. type BetaSubnetworks interface { Get(ctx context.Context, key *meta.Key) (*beta.Subnetwork, error) List(ctx context.Context, region string, fl *filter.F) ([]*beta.Subnetwork, error) Insert(ctx context.Context, key *meta.Key, obj *beta.Subnetwork) error Delete(ctx context.Context, key *meta.Key) error } // NewMockBetaSubnetworks returns a new mock for Subnetworks. func NewMockBetaSubnetworks(pr ProjectRouter, objs map[meta.Key]*MockSubnetworksObj) *MockBetaSubnetworks { mock := &MockBetaSubnetworks{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockBetaSubnetworks is the mock for Subnetworks. type MockBetaSubnetworks struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockSubnetworksObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaSubnetworks) (bool, *beta.Subnetwork, error) ListHook func(ctx context.Context, region string, fl *filter.F, m *MockBetaSubnetworks) (bool, []*beta.Subnetwork, error) InsertHook func(ctx context.Context, key *meta.Key, obj *beta.Subnetwork, m *MockBetaSubnetworks) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaSubnetworks) (bool, error) // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockBetaSubnetworks) Get(ctx context.Context, key *meta.Key) (*beta.Subnetwork, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaSubnetworks.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockBetaSubnetworks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToBeta() klog.V(5).Infof("MockBetaSubnetworks.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaSubnetworks %v not found", key), } klog.V(5).Infof("MockBetaSubnetworks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given region. func (m *MockBetaSubnetworks) List(ctx context.Context, region string, fl *filter.F) ([]*beta.Subnetwork, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept { klog.V(5).Infof("MockBetaSubnetworks.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockBetaSubnetworks.List(%v, %q, %v) = nil, %v", ctx, region, fl, err) return nil, *m.ListError } var objs []*beta.Subnetwork for key, obj := range m.Objects { if key.Region != region { continue } if !fl.Match(obj.ToBeta()) { continue } objs = append(objs, obj.ToBeta()) } klog.V(5).Infof("MockBetaSubnetworks.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockBetaSubnetworks) Insert(ctx context.Context, key *meta.Key, obj *beta.Subnetwork) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockBetaSubnetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockBetaSubnetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockBetaSubnetworks %v exists", key), } klog.V(5).Infof("MockBetaSubnetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "beta", "subnetworks") obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "subnetworks", key) m.Objects[*key] = &MockSubnetworksObj{obj} klog.V(5).Infof("MockBetaSubnetworks.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockBetaSubnetworks) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaSubnetworks.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockBetaSubnetworks.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaSubnetworks %v not found", key), } klog.V(5).Infof("MockBetaSubnetworks.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockBetaSubnetworks.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockBetaSubnetworks) Obj(o *beta.Subnetwork) *MockSubnetworksObj { return &MockSubnetworksObj{o} } // GCEBetaSubnetworks is a simplifying adapter for the GCE Subnetworks. type GCEBetaSubnetworks struct { s *Service } // Get the Subnetwork named by key. func (g *GCEBetaSubnetworks) Get(ctx context.Context, key *meta.Key) (*beta.Subnetwork, error) { klog.V(5).Infof("GCEBetaSubnetworks.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaSubnetworks.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Subnetworks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("beta"), Service: "Subnetworks", } klog.V(5).Infof("GCEBetaSubnetworks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaSubnetworks.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Beta.Subnetworks.Get(projectID, key.Region, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEBetaSubnetworks.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all Subnetwork objects. func (g *GCEBetaSubnetworks) List(ctx context.Context, region string, fl *filter.F) ([]*beta.Subnetwork, error) { klog.V(5).Infof("GCEBetaSubnetworks.List(%v, %v, %v) called", ctx, region, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Subnetworks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("beta"), Service: "Subnetworks", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEBetaSubnetworks.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk) call := g.s.Beta.Subnetworks.List(projectID, region) if fl != filter.None { call.Filter(fl.String()) } var all []*beta.Subnetwork f := func(l *beta.SubnetworkList) error { klog.V(5).Infof("GCEBetaSubnetworks.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEBetaSubnetworks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEBetaSubnetworks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEBetaSubnetworks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert Subnetwork with key of value obj. func (g *GCEBetaSubnetworks) Insert(ctx context.Context, key *meta.Key, obj *beta.Subnetwork) error { klog.V(5).Infof("GCEBetaSubnetworks.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEBetaSubnetworks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Subnetworks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("beta"), Service: "Subnetworks", } klog.V(5).Infof("GCEBetaSubnetworks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaSubnetworks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Beta.Subnetworks.Insert(projectID, key.Region, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaSubnetworks.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaSubnetworks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the Subnetwork referenced by key. func (g *GCEBetaSubnetworks) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEBetaSubnetworks.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaSubnetworks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "Subnetworks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("beta"), Service: "Subnetworks", } klog.V(5).Infof("GCEBetaSubnetworks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaSubnetworks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.Subnetworks.Delete(projectID, key.Region, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaSubnetworks.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaSubnetworks.Delete(%v, %v) = %v", ctx, key, err) return err } // Subnetworks is an interface that allows for mocking of Subnetworks. type Subnetworks interface { Get(ctx context.Context, key *meta.Key) (*ga.Subnetwork, error) List(ctx context.Context, region string, fl *filter.F) ([]*ga.Subnetwork, error) Insert(ctx context.Context, key *meta.Key, obj *ga.Subnetwork) error Delete(ctx context.Context, key *meta.Key) error } // NewMockSubnetworks returns a new mock for Subnetworks. func NewMockSubnetworks(pr ProjectRouter, objs map[meta.Key]*MockSubnetworksObj) *MockSubnetworks { mock := &MockSubnetworks{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockSubnetworks is the mock for Subnetworks. type MockSubnetworks struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockSubnetworksObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockSubnetworks) (bool, *ga.Subnetwork, error) ListHook func(ctx context.Context, region string, fl *filter.F, m *MockSubnetworks) (bool, []*ga.Subnetwork, error) InsertHook func(ctx context.Context, key *meta.Key, obj *ga.Subnetwork, m *MockSubnetworks) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockSubnetworks) (bool, error) // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockSubnetworks) Get(ctx context.Context, key *meta.Key) (*ga.Subnetwork, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockSubnetworks.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockSubnetworks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToGA() klog.V(5).Infof("MockSubnetworks.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockSubnetworks %v not found", key), } klog.V(5).Infof("MockSubnetworks.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given region. func (m *MockSubnetworks) List(ctx context.Context, region string, fl *filter.F) ([]*ga.Subnetwork, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept { klog.V(5).Infof("MockSubnetworks.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockSubnetworks.List(%v, %q, %v) = nil, %v", ctx, region, fl, err) return nil, *m.ListError } var objs []*ga.Subnetwork for key, obj := range m.Objects { if key.Region != region { continue } if !fl.Match(obj.ToGA()) { continue } objs = append(objs, obj.ToGA()) } klog.V(5).Infof("MockSubnetworks.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockSubnetworks) Insert(ctx context.Context, key *meta.Key, obj *ga.Subnetwork) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockSubnetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockSubnetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockSubnetworks %v exists", key), } klog.V(5).Infof("MockSubnetworks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "ga", "subnetworks") obj.SelfLink = SelfLink(meta.VersionGA, projectID, "subnetworks", key) m.Objects[*key] = &MockSubnetworksObj{obj} klog.V(5).Infof("MockSubnetworks.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockSubnetworks) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockSubnetworks.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockSubnetworks.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockSubnetworks %v not found", key), } klog.V(5).Infof("MockSubnetworks.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockSubnetworks.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockSubnetworks) Obj(o *ga.Subnetwork) *MockSubnetworksObj { return &MockSubnetworksObj{o} } // GCESubnetworks is a simplifying adapter for the GCE Subnetworks. type GCESubnetworks struct { s *Service } // Get the Subnetwork named by key. func (g *GCESubnetworks) Get(ctx context.Context, key *meta.Key) (*ga.Subnetwork, error) { klog.V(5).Infof("GCESubnetworks.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCESubnetworks.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Subnetworks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("ga"), Service: "Subnetworks", } klog.V(5).Infof("GCESubnetworks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCESubnetworks.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.Subnetworks.Get(projectID, key.Region, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCESubnetworks.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all Subnetwork objects. func (g *GCESubnetworks) List(ctx context.Context, region string, fl *filter.F) ([]*ga.Subnetwork, error) { klog.V(5).Infof("GCESubnetworks.List(%v, %v, %v) called", ctx, region, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Subnetworks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("ga"), Service: "Subnetworks", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCESubnetworks.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk) call := g.s.GA.Subnetworks.List(projectID, region) if fl != filter.None { call.Filter(fl.String()) } var all []*ga.Subnetwork f := func(l *ga.SubnetworkList) error { klog.V(5).Infof("GCESubnetworks.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCESubnetworks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCESubnetworks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCESubnetworks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert Subnetwork with key of value obj. func (g *GCESubnetworks) Insert(ctx context.Context, key *meta.Key, obj *ga.Subnetwork) error { klog.V(5).Infof("GCESubnetworks.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCESubnetworks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Subnetworks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("ga"), Service: "Subnetworks", } klog.V(5).Infof("GCESubnetworks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCESubnetworks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.GA.Subnetworks.Insert(projectID, key.Region, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCESubnetworks.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCESubnetworks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the Subnetwork referenced by key. func (g *GCESubnetworks) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCESubnetworks.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCESubnetworks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Subnetworks") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("ga"), Service: "Subnetworks", } klog.V(5).Infof("GCESubnetworks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCESubnetworks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.Subnetworks.Delete(projectID, key.Region, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCESubnetworks.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCESubnetworks.Delete(%v, %v) = %v", ctx, key, err) return err } // AlphaTargetHttpProxies is an interface that allows for mocking of TargetHttpProxies. type AlphaTargetHttpProxies interface { Get(ctx context.Context, key *meta.Key) (*alpha.TargetHttpProxy, error) List(ctx context.Context, fl *filter.F) ([]*alpha.TargetHttpProxy, error) Insert(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpProxy) error Delete(ctx context.Context, key *meta.Key) error SetUrlMap(context.Context, *meta.Key, *alpha.UrlMapReference) error } // NewMockAlphaTargetHttpProxies returns a new mock for TargetHttpProxies. func NewMockAlphaTargetHttpProxies(pr ProjectRouter, objs map[meta.Key]*MockTargetHttpProxiesObj) *MockAlphaTargetHttpProxies { mock := &MockAlphaTargetHttpProxies{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockAlphaTargetHttpProxies is the mock for TargetHttpProxies. type MockAlphaTargetHttpProxies struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockTargetHttpProxiesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaTargetHttpProxies) (bool, *alpha.TargetHttpProxy, error) ListHook func(ctx context.Context, fl *filter.F, m *MockAlphaTargetHttpProxies) (bool, []*alpha.TargetHttpProxy, error) InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpProxy, m *MockAlphaTargetHttpProxies) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaTargetHttpProxies) (bool, error) SetUrlMapHook func(context.Context, *meta.Key, *alpha.UrlMapReference, *MockAlphaTargetHttpProxies) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockAlphaTargetHttpProxies) Get(ctx context.Context, key *meta.Key) (*alpha.TargetHttpProxy, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaTargetHttpProxies.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockAlphaTargetHttpProxies.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToAlpha() klog.V(5).Infof("MockAlphaTargetHttpProxies.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaTargetHttpProxies %v not found", key), } klog.V(5).Infof("MockAlphaTargetHttpProxies.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockAlphaTargetHttpProxies) List(ctx context.Context, fl *filter.F) ([]*alpha.TargetHttpProxy, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockAlphaTargetHttpProxies.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockAlphaTargetHttpProxies.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*alpha.TargetHttpProxy for _, obj := range m.Objects { if !fl.Match(obj.ToAlpha()) { continue } objs = append(objs, obj.ToAlpha()) } klog.V(5).Infof("MockAlphaTargetHttpProxies.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockAlphaTargetHttpProxies) Insert(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpProxy) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockAlphaTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockAlphaTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockAlphaTargetHttpProxies %v exists", key), } klog.V(5).Infof("MockAlphaTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "targetHttpProxies") obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "targetHttpProxies", key) m.Objects[*key] = &MockTargetHttpProxiesObj{obj} klog.V(5).Infof("MockAlphaTargetHttpProxies.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockAlphaTargetHttpProxies) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockAlphaTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaTargetHttpProxies %v not found", key), } klog.V(5).Infof("MockAlphaTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockAlphaTargetHttpProxies.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockAlphaTargetHttpProxies) Obj(o *alpha.TargetHttpProxy) *MockTargetHttpProxiesObj { return &MockTargetHttpProxiesObj{o} } // SetUrlMap is a mock for the corresponding method. func (m *MockAlphaTargetHttpProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *alpha.UrlMapReference) error { if m.SetUrlMapHook != nil { return m.SetUrlMapHook(ctx, key, arg0, m) } return nil } // GCEAlphaTargetHttpProxies is a simplifying adapter for the GCE TargetHttpProxies. type GCEAlphaTargetHttpProxies struct { s *Service } // Get the TargetHttpProxy named by key. func (g *GCEAlphaTargetHttpProxies) Get(ctx context.Context, key *meta.Key) (*alpha.TargetHttpProxy, error) { klog.V(5).Infof("GCEAlphaTargetHttpProxies.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaTargetHttpProxies.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "TargetHttpProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("alpha"), Service: "TargetHttpProxies", } klog.V(5).Infof("GCEAlphaTargetHttpProxies.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaTargetHttpProxies.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Alpha.TargetHttpProxies.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEAlphaTargetHttpProxies.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all TargetHttpProxy objects. func (g *GCEAlphaTargetHttpProxies) List(ctx context.Context, fl *filter.F) ([]*alpha.TargetHttpProxy, error) { klog.V(5).Infof("GCEAlphaTargetHttpProxies.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "TargetHttpProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("alpha"), Service: "TargetHttpProxies", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEAlphaTargetHttpProxies.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.Alpha.TargetHttpProxies.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*alpha.TargetHttpProxy f := func(l *alpha.TargetHttpProxyList) error { klog.V(5).Infof("GCEAlphaTargetHttpProxies.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEAlphaTargetHttpProxies.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEAlphaTargetHttpProxies.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEAlphaTargetHttpProxies.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert TargetHttpProxy with key of value obj. func (g *GCEAlphaTargetHttpProxies) Insert(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpProxy) error { klog.V(5).Infof("GCEAlphaTargetHttpProxies.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEAlphaTargetHttpProxies.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "TargetHttpProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("alpha"), Service: "TargetHttpProxies", } klog.V(5).Infof("GCEAlphaTargetHttpProxies.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaTargetHttpProxies.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Alpha.TargetHttpProxies.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaTargetHttpProxies.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaTargetHttpProxies.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the TargetHttpProxy referenced by key. func (g *GCEAlphaTargetHttpProxies) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEAlphaTargetHttpProxies.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaTargetHttpProxies.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "TargetHttpProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("alpha"), Service: "TargetHttpProxies", } klog.V(5).Infof("GCEAlphaTargetHttpProxies.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaTargetHttpProxies.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.TargetHttpProxies.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err) return err } // SetUrlMap is a method on GCEAlphaTargetHttpProxies. func (g *GCEAlphaTargetHttpProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *alpha.UrlMapReference) error { klog.V(5).Infof("GCEAlphaTargetHttpProxies.SetUrlMap(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaTargetHttpProxies.SetUrlMap(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "TargetHttpProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "SetUrlMap", Version: meta.Version("alpha"), Service: "TargetHttpProxies", } klog.V(5).Infof("GCEAlphaTargetHttpProxies.SetUrlMap(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaTargetHttpProxies.SetUrlMap(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.TargetHttpProxies.SetUrlMap(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaTargetHttpProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaTargetHttpProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err) return err } // BetaTargetHttpProxies is an interface that allows for mocking of TargetHttpProxies. type BetaTargetHttpProxies interface { Get(ctx context.Context, key *meta.Key) (*beta.TargetHttpProxy, error) List(ctx context.Context, fl *filter.F) ([]*beta.TargetHttpProxy, error) Insert(ctx context.Context, key *meta.Key, obj *beta.TargetHttpProxy) error Delete(ctx context.Context, key *meta.Key) error SetUrlMap(context.Context, *meta.Key, *beta.UrlMapReference) error } // NewMockBetaTargetHttpProxies returns a new mock for TargetHttpProxies. func NewMockBetaTargetHttpProxies(pr ProjectRouter, objs map[meta.Key]*MockTargetHttpProxiesObj) *MockBetaTargetHttpProxies { mock := &MockBetaTargetHttpProxies{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockBetaTargetHttpProxies is the mock for TargetHttpProxies. type MockBetaTargetHttpProxies struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockTargetHttpProxiesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaTargetHttpProxies) (bool, *beta.TargetHttpProxy, error) ListHook func(ctx context.Context, fl *filter.F, m *MockBetaTargetHttpProxies) (bool, []*beta.TargetHttpProxy, error) InsertHook func(ctx context.Context, key *meta.Key, obj *beta.TargetHttpProxy, m *MockBetaTargetHttpProxies) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaTargetHttpProxies) (bool, error) SetUrlMapHook func(context.Context, *meta.Key, *beta.UrlMapReference, *MockBetaTargetHttpProxies) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockBetaTargetHttpProxies) Get(ctx context.Context, key *meta.Key) (*beta.TargetHttpProxy, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaTargetHttpProxies.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockBetaTargetHttpProxies.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToBeta() klog.V(5).Infof("MockBetaTargetHttpProxies.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaTargetHttpProxies %v not found", key), } klog.V(5).Infof("MockBetaTargetHttpProxies.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockBetaTargetHttpProxies) List(ctx context.Context, fl *filter.F) ([]*beta.TargetHttpProxy, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockBetaTargetHttpProxies.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockBetaTargetHttpProxies.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*beta.TargetHttpProxy for _, obj := range m.Objects { if !fl.Match(obj.ToBeta()) { continue } objs = append(objs, obj.ToBeta()) } klog.V(5).Infof("MockBetaTargetHttpProxies.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockBetaTargetHttpProxies) Insert(ctx context.Context, key *meta.Key, obj *beta.TargetHttpProxy) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockBetaTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockBetaTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockBetaTargetHttpProxies %v exists", key), } klog.V(5).Infof("MockBetaTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "beta", "targetHttpProxies") obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "targetHttpProxies", key) m.Objects[*key] = &MockTargetHttpProxiesObj{obj} klog.V(5).Infof("MockBetaTargetHttpProxies.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockBetaTargetHttpProxies) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockBetaTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaTargetHttpProxies %v not found", key), } klog.V(5).Infof("MockBetaTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockBetaTargetHttpProxies.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockBetaTargetHttpProxies) Obj(o *beta.TargetHttpProxy) *MockTargetHttpProxiesObj { return &MockTargetHttpProxiesObj{o} } // SetUrlMap is a mock for the corresponding method. func (m *MockBetaTargetHttpProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *beta.UrlMapReference) error { if m.SetUrlMapHook != nil { return m.SetUrlMapHook(ctx, key, arg0, m) } return nil } // GCEBetaTargetHttpProxies is a simplifying adapter for the GCE TargetHttpProxies. type GCEBetaTargetHttpProxies struct { s *Service } // Get the TargetHttpProxy named by key. func (g *GCEBetaTargetHttpProxies) Get(ctx context.Context, key *meta.Key) (*beta.TargetHttpProxy, error) { klog.V(5).Infof("GCEBetaTargetHttpProxies.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaTargetHttpProxies.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "TargetHttpProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("beta"), Service: "TargetHttpProxies", } klog.V(5).Infof("GCEBetaTargetHttpProxies.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaTargetHttpProxies.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Beta.TargetHttpProxies.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEBetaTargetHttpProxies.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all TargetHttpProxy objects. func (g *GCEBetaTargetHttpProxies) List(ctx context.Context, fl *filter.F) ([]*beta.TargetHttpProxy, error) { klog.V(5).Infof("GCEBetaTargetHttpProxies.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "TargetHttpProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("beta"), Service: "TargetHttpProxies", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEBetaTargetHttpProxies.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.Beta.TargetHttpProxies.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*beta.TargetHttpProxy f := func(l *beta.TargetHttpProxyList) error { klog.V(5).Infof("GCEBetaTargetHttpProxies.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEBetaTargetHttpProxies.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEBetaTargetHttpProxies.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEBetaTargetHttpProxies.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert TargetHttpProxy with key of value obj. func (g *GCEBetaTargetHttpProxies) Insert(ctx context.Context, key *meta.Key, obj *beta.TargetHttpProxy) error { klog.V(5).Infof("GCEBetaTargetHttpProxies.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEBetaTargetHttpProxies.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "TargetHttpProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("beta"), Service: "TargetHttpProxies", } klog.V(5).Infof("GCEBetaTargetHttpProxies.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaTargetHttpProxies.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Beta.TargetHttpProxies.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaTargetHttpProxies.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaTargetHttpProxies.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the TargetHttpProxy referenced by key. func (g *GCEBetaTargetHttpProxies) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEBetaTargetHttpProxies.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaTargetHttpProxies.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "TargetHttpProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("beta"), Service: "TargetHttpProxies", } klog.V(5).Infof("GCEBetaTargetHttpProxies.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaTargetHttpProxies.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.TargetHttpProxies.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err) return err } // SetUrlMap is a method on GCEBetaTargetHttpProxies. func (g *GCEBetaTargetHttpProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *beta.UrlMapReference) error { klog.V(5).Infof("GCEBetaTargetHttpProxies.SetUrlMap(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaTargetHttpProxies.SetUrlMap(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "TargetHttpProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "SetUrlMap", Version: meta.Version("beta"), Service: "TargetHttpProxies", } klog.V(5).Infof("GCEBetaTargetHttpProxies.SetUrlMap(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaTargetHttpProxies.SetUrlMap(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.TargetHttpProxies.SetUrlMap(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaTargetHttpProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaTargetHttpProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err) return err } // TargetHttpProxies is an interface that allows for mocking of TargetHttpProxies. type TargetHttpProxies interface { Get(ctx context.Context, key *meta.Key) (*ga.TargetHttpProxy, error) List(ctx context.Context, fl *filter.F) ([]*ga.TargetHttpProxy, error) Insert(ctx context.Context, key *meta.Key, obj *ga.TargetHttpProxy) error Delete(ctx context.Context, key *meta.Key) error SetUrlMap(context.Context, *meta.Key, *ga.UrlMapReference) error } // NewMockTargetHttpProxies returns a new mock for TargetHttpProxies. func NewMockTargetHttpProxies(pr ProjectRouter, objs map[meta.Key]*MockTargetHttpProxiesObj) *MockTargetHttpProxies { mock := &MockTargetHttpProxies{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockTargetHttpProxies is the mock for TargetHttpProxies. type MockTargetHttpProxies struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockTargetHttpProxiesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockTargetHttpProxies) (bool, *ga.TargetHttpProxy, error) ListHook func(ctx context.Context, fl *filter.F, m *MockTargetHttpProxies) (bool, []*ga.TargetHttpProxy, error) InsertHook func(ctx context.Context, key *meta.Key, obj *ga.TargetHttpProxy, m *MockTargetHttpProxies) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockTargetHttpProxies) (bool, error) SetUrlMapHook func(context.Context, *meta.Key, *ga.UrlMapReference, *MockTargetHttpProxies) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockTargetHttpProxies) Get(ctx context.Context, key *meta.Key) (*ga.TargetHttpProxy, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockTargetHttpProxies.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockTargetHttpProxies.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToGA() klog.V(5).Infof("MockTargetHttpProxies.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockTargetHttpProxies %v not found", key), } klog.V(5).Infof("MockTargetHttpProxies.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockTargetHttpProxies) List(ctx context.Context, fl *filter.F) ([]*ga.TargetHttpProxy, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockTargetHttpProxies.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockTargetHttpProxies.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*ga.TargetHttpProxy for _, obj := range m.Objects { if !fl.Match(obj.ToGA()) { continue } objs = append(objs, obj.ToGA()) } klog.V(5).Infof("MockTargetHttpProxies.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockTargetHttpProxies) Insert(ctx context.Context, key *meta.Key, obj *ga.TargetHttpProxy) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockTargetHttpProxies %v exists", key), } klog.V(5).Infof("MockTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "ga", "targetHttpProxies") obj.SelfLink = SelfLink(meta.VersionGA, projectID, "targetHttpProxies", key) m.Objects[*key] = &MockTargetHttpProxiesObj{obj} klog.V(5).Infof("MockTargetHttpProxies.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockTargetHttpProxies) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockTargetHttpProxies %v not found", key), } klog.V(5).Infof("MockTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockTargetHttpProxies.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockTargetHttpProxies) Obj(o *ga.TargetHttpProxy) *MockTargetHttpProxiesObj { return &MockTargetHttpProxiesObj{o} } // SetUrlMap is a mock for the corresponding method. func (m *MockTargetHttpProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *ga.UrlMapReference) error { if m.SetUrlMapHook != nil { return m.SetUrlMapHook(ctx, key, arg0, m) } return nil } // GCETargetHttpProxies is a simplifying adapter for the GCE TargetHttpProxies. type GCETargetHttpProxies struct { s *Service } // Get the TargetHttpProxy named by key. func (g *GCETargetHttpProxies) Get(ctx context.Context, key *meta.Key) (*ga.TargetHttpProxy, error) { klog.V(5).Infof("GCETargetHttpProxies.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCETargetHttpProxies.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetHttpProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("ga"), Service: "TargetHttpProxies", } klog.V(5).Infof("GCETargetHttpProxies.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCETargetHttpProxies.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.TargetHttpProxies.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCETargetHttpProxies.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all TargetHttpProxy objects. func (g *GCETargetHttpProxies) List(ctx context.Context, fl *filter.F) ([]*ga.TargetHttpProxy, error) { klog.V(5).Infof("GCETargetHttpProxies.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetHttpProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("ga"), Service: "TargetHttpProxies", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCETargetHttpProxies.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.GA.TargetHttpProxies.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*ga.TargetHttpProxy f := func(l *ga.TargetHttpProxyList) error { klog.V(5).Infof("GCETargetHttpProxies.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCETargetHttpProxies.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCETargetHttpProxies.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCETargetHttpProxies.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert TargetHttpProxy with key of value obj. func (g *GCETargetHttpProxies) Insert(ctx context.Context, key *meta.Key, obj *ga.TargetHttpProxy) error { klog.V(5).Infof("GCETargetHttpProxies.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCETargetHttpProxies.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetHttpProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("ga"), Service: "TargetHttpProxies", } klog.V(5).Infof("GCETargetHttpProxies.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCETargetHttpProxies.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.GA.TargetHttpProxies.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCETargetHttpProxies.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCETargetHttpProxies.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the TargetHttpProxy referenced by key. func (g *GCETargetHttpProxies) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCETargetHttpProxies.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCETargetHttpProxies.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetHttpProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("ga"), Service: "TargetHttpProxies", } klog.V(5).Infof("GCETargetHttpProxies.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCETargetHttpProxies.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.TargetHttpProxies.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCETargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCETargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err) return err } // SetUrlMap is a method on GCETargetHttpProxies. func (g *GCETargetHttpProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *ga.UrlMapReference) error { klog.V(5).Infof("GCETargetHttpProxies.SetUrlMap(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCETargetHttpProxies.SetUrlMap(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetHttpProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "SetUrlMap", Version: meta.Version("ga"), Service: "TargetHttpProxies", } klog.V(5).Infof("GCETargetHttpProxies.SetUrlMap(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCETargetHttpProxies.SetUrlMap(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.TargetHttpProxies.SetUrlMap(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCETargetHttpProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCETargetHttpProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err) return err } // AlphaRegionTargetHttpProxies is an interface that allows for mocking of RegionTargetHttpProxies. type AlphaRegionTargetHttpProxies interface { Get(ctx context.Context, key *meta.Key) (*alpha.TargetHttpProxy, error) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.TargetHttpProxy, error) Insert(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpProxy) error Delete(ctx context.Context, key *meta.Key) error SetUrlMap(context.Context, *meta.Key, *alpha.UrlMapReference) error } // NewMockAlphaRegionTargetHttpProxies returns a new mock for RegionTargetHttpProxies. func NewMockAlphaRegionTargetHttpProxies(pr ProjectRouter, objs map[meta.Key]*MockRegionTargetHttpProxiesObj) *MockAlphaRegionTargetHttpProxies { mock := &MockAlphaRegionTargetHttpProxies{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockAlphaRegionTargetHttpProxies is the mock for RegionTargetHttpProxies. type MockAlphaRegionTargetHttpProxies struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockRegionTargetHttpProxiesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaRegionTargetHttpProxies) (bool, *alpha.TargetHttpProxy, error) ListHook func(ctx context.Context, region string, fl *filter.F, m *MockAlphaRegionTargetHttpProxies) (bool, []*alpha.TargetHttpProxy, error) InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpProxy, m *MockAlphaRegionTargetHttpProxies) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaRegionTargetHttpProxies) (bool, error) SetUrlMapHook func(context.Context, *meta.Key, *alpha.UrlMapReference, *MockAlphaRegionTargetHttpProxies) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockAlphaRegionTargetHttpProxies) Get(ctx context.Context, key *meta.Key) (*alpha.TargetHttpProxy, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaRegionTargetHttpProxies.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockAlphaRegionTargetHttpProxies.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToAlpha() klog.V(5).Infof("MockAlphaRegionTargetHttpProxies.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaRegionTargetHttpProxies %v not found", key), } klog.V(5).Infof("MockAlphaRegionTargetHttpProxies.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given region. func (m *MockAlphaRegionTargetHttpProxies) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.TargetHttpProxy, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept { klog.V(5).Infof("MockAlphaRegionTargetHttpProxies.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockAlphaRegionTargetHttpProxies.List(%v, %q, %v) = nil, %v", ctx, region, fl, err) return nil, *m.ListError } var objs []*alpha.TargetHttpProxy for key, obj := range m.Objects { if key.Region != region { continue } if !fl.Match(obj.ToAlpha()) { continue } objs = append(objs, obj.ToAlpha()) } klog.V(5).Infof("MockAlphaRegionTargetHttpProxies.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockAlphaRegionTargetHttpProxies) Insert(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpProxy) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockAlphaRegionTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockAlphaRegionTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockAlphaRegionTargetHttpProxies %v exists", key), } klog.V(5).Infof("MockAlphaRegionTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "targetHttpProxies") obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "targetHttpProxies", key) m.Objects[*key] = &MockRegionTargetHttpProxiesObj{obj} klog.V(5).Infof("MockAlphaRegionTargetHttpProxies.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockAlphaRegionTargetHttpProxies) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaRegionTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockAlphaRegionTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaRegionTargetHttpProxies %v not found", key), } klog.V(5).Infof("MockAlphaRegionTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockAlphaRegionTargetHttpProxies.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockAlphaRegionTargetHttpProxies) Obj(o *alpha.TargetHttpProxy) *MockRegionTargetHttpProxiesObj { return &MockRegionTargetHttpProxiesObj{o} } // SetUrlMap is a mock for the corresponding method. func (m *MockAlphaRegionTargetHttpProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *alpha.UrlMapReference) error { if m.SetUrlMapHook != nil { return m.SetUrlMapHook(ctx, key, arg0, m) } return nil } // GCEAlphaRegionTargetHttpProxies is a simplifying adapter for the GCE RegionTargetHttpProxies. type GCEAlphaRegionTargetHttpProxies struct { s *Service } // Get the TargetHttpProxy named by key. func (g *GCEAlphaRegionTargetHttpProxies) Get(ctx context.Context, key *meta.Key) (*alpha.TargetHttpProxy, error) { klog.V(5).Infof("GCEAlphaRegionTargetHttpProxies.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaRegionTargetHttpProxies.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionTargetHttpProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("alpha"), Service: "RegionTargetHttpProxies", } klog.V(5).Infof("GCEAlphaRegionTargetHttpProxies.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaRegionTargetHttpProxies.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Alpha.RegionTargetHttpProxies.Get(projectID, key.Region, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEAlphaRegionTargetHttpProxies.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all TargetHttpProxy objects. func (g *GCEAlphaRegionTargetHttpProxies) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.TargetHttpProxy, error) { klog.V(5).Infof("GCEAlphaRegionTargetHttpProxies.List(%v, %v, %v) called", ctx, region, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionTargetHttpProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("alpha"), Service: "RegionTargetHttpProxies", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEAlphaRegionTargetHttpProxies.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk) call := g.s.Alpha.RegionTargetHttpProxies.List(projectID, region) if fl != filter.None { call.Filter(fl.String()) } var all []*alpha.TargetHttpProxy f := func(l *alpha.TargetHttpProxyList) error { klog.V(5).Infof("GCEAlphaRegionTargetHttpProxies.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEAlphaRegionTargetHttpProxies.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEAlphaRegionTargetHttpProxies.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEAlphaRegionTargetHttpProxies.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert TargetHttpProxy with key of value obj. func (g *GCEAlphaRegionTargetHttpProxies) Insert(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpProxy) error { klog.V(5).Infof("GCEAlphaRegionTargetHttpProxies.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEAlphaRegionTargetHttpProxies.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionTargetHttpProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("alpha"), Service: "RegionTargetHttpProxies", } klog.V(5).Infof("GCEAlphaRegionTargetHttpProxies.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaRegionTargetHttpProxies.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Alpha.RegionTargetHttpProxies.Insert(projectID, key.Region, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaRegionTargetHttpProxies.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaRegionTargetHttpProxies.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the TargetHttpProxy referenced by key. func (g *GCEAlphaRegionTargetHttpProxies) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEAlphaRegionTargetHttpProxies.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaRegionTargetHttpProxies.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionTargetHttpProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("alpha"), Service: "RegionTargetHttpProxies", } klog.V(5).Infof("GCEAlphaRegionTargetHttpProxies.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaRegionTargetHttpProxies.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.RegionTargetHttpProxies.Delete(projectID, key.Region, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaRegionTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaRegionTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err) return err } // SetUrlMap is a method on GCEAlphaRegionTargetHttpProxies. func (g *GCEAlphaRegionTargetHttpProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *alpha.UrlMapReference) error { klog.V(5).Infof("GCEAlphaRegionTargetHttpProxies.SetUrlMap(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaRegionTargetHttpProxies.SetUrlMap(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionTargetHttpProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "SetUrlMap", Version: meta.Version("alpha"), Service: "RegionTargetHttpProxies", } klog.V(5).Infof("GCEAlphaRegionTargetHttpProxies.SetUrlMap(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaRegionTargetHttpProxies.SetUrlMap(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.RegionTargetHttpProxies.SetUrlMap(projectID, key.Region, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaRegionTargetHttpProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaRegionTargetHttpProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err) return err } // BetaRegionTargetHttpProxies is an interface that allows for mocking of RegionTargetHttpProxies. type BetaRegionTargetHttpProxies interface { Get(ctx context.Context, key *meta.Key) (*beta.TargetHttpProxy, error) List(ctx context.Context, region string, fl *filter.F) ([]*beta.TargetHttpProxy, error) Insert(ctx context.Context, key *meta.Key, obj *beta.TargetHttpProxy) error Delete(ctx context.Context, key *meta.Key) error SetUrlMap(context.Context, *meta.Key, *beta.UrlMapReference) error } // NewMockBetaRegionTargetHttpProxies returns a new mock for RegionTargetHttpProxies. func NewMockBetaRegionTargetHttpProxies(pr ProjectRouter, objs map[meta.Key]*MockRegionTargetHttpProxiesObj) *MockBetaRegionTargetHttpProxies { mock := &MockBetaRegionTargetHttpProxies{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockBetaRegionTargetHttpProxies is the mock for RegionTargetHttpProxies. type MockBetaRegionTargetHttpProxies struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockRegionTargetHttpProxiesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaRegionTargetHttpProxies) (bool, *beta.TargetHttpProxy, error) ListHook func(ctx context.Context, region string, fl *filter.F, m *MockBetaRegionTargetHttpProxies) (bool, []*beta.TargetHttpProxy, error) InsertHook func(ctx context.Context, key *meta.Key, obj *beta.TargetHttpProxy, m *MockBetaRegionTargetHttpProxies) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaRegionTargetHttpProxies) (bool, error) SetUrlMapHook func(context.Context, *meta.Key, *beta.UrlMapReference, *MockBetaRegionTargetHttpProxies) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockBetaRegionTargetHttpProxies) Get(ctx context.Context, key *meta.Key) (*beta.TargetHttpProxy, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaRegionTargetHttpProxies.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockBetaRegionTargetHttpProxies.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToBeta() klog.V(5).Infof("MockBetaRegionTargetHttpProxies.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaRegionTargetHttpProxies %v not found", key), } klog.V(5).Infof("MockBetaRegionTargetHttpProxies.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given region. func (m *MockBetaRegionTargetHttpProxies) List(ctx context.Context, region string, fl *filter.F) ([]*beta.TargetHttpProxy, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept { klog.V(5).Infof("MockBetaRegionTargetHttpProxies.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockBetaRegionTargetHttpProxies.List(%v, %q, %v) = nil, %v", ctx, region, fl, err) return nil, *m.ListError } var objs []*beta.TargetHttpProxy for key, obj := range m.Objects { if key.Region != region { continue } if !fl.Match(obj.ToBeta()) { continue } objs = append(objs, obj.ToBeta()) } klog.V(5).Infof("MockBetaRegionTargetHttpProxies.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockBetaRegionTargetHttpProxies) Insert(ctx context.Context, key *meta.Key, obj *beta.TargetHttpProxy) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockBetaRegionTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockBetaRegionTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockBetaRegionTargetHttpProxies %v exists", key), } klog.V(5).Infof("MockBetaRegionTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "beta", "targetHttpProxies") obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "targetHttpProxies", key) m.Objects[*key] = &MockRegionTargetHttpProxiesObj{obj} klog.V(5).Infof("MockBetaRegionTargetHttpProxies.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockBetaRegionTargetHttpProxies) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaRegionTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockBetaRegionTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaRegionTargetHttpProxies %v not found", key), } klog.V(5).Infof("MockBetaRegionTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockBetaRegionTargetHttpProxies.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockBetaRegionTargetHttpProxies) Obj(o *beta.TargetHttpProxy) *MockRegionTargetHttpProxiesObj { return &MockRegionTargetHttpProxiesObj{o} } // SetUrlMap is a mock for the corresponding method. func (m *MockBetaRegionTargetHttpProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *beta.UrlMapReference) error { if m.SetUrlMapHook != nil { return m.SetUrlMapHook(ctx, key, arg0, m) } return nil } // GCEBetaRegionTargetHttpProxies is a simplifying adapter for the GCE RegionTargetHttpProxies. type GCEBetaRegionTargetHttpProxies struct { s *Service } // Get the TargetHttpProxy named by key. func (g *GCEBetaRegionTargetHttpProxies) Get(ctx context.Context, key *meta.Key) (*beta.TargetHttpProxy, error) { klog.V(5).Infof("GCEBetaRegionTargetHttpProxies.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaRegionTargetHttpProxies.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionTargetHttpProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("beta"), Service: "RegionTargetHttpProxies", } klog.V(5).Infof("GCEBetaRegionTargetHttpProxies.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaRegionTargetHttpProxies.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Beta.RegionTargetHttpProxies.Get(projectID, key.Region, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEBetaRegionTargetHttpProxies.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all TargetHttpProxy objects. func (g *GCEBetaRegionTargetHttpProxies) List(ctx context.Context, region string, fl *filter.F) ([]*beta.TargetHttpProxy, error) { klog.V(5).Infof("GCEBetaRegionTargetHttpProxies.List(%v, %v, %v) called", ctx, region, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionTargetHttpProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("beta"), Service: "RegionTargetHttpProxies", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEBetaRegionTargetHttpProxies.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk) call := g.s.Beta.RegionTargetHttpProxies.List(projectID, region) if fl != filter.None { call.Filter(fl.String()) } var all []*beta.TargetHttpProxy f := func(l *beta.TargetHttpProxyList) error { klog.V(5).Infof("GCEBetaRegionTargetHttpProxies.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEBetaRegionTargetHttpProxies.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEBetaRegionTargetHttpProxies.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEBetaRegionTargetHttpProxies.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert TargetHttpProxy with key of value obj. func (g *GCEBetaRegionTargetHttpProxies) Insert(ctx context.Context, key *meta.Key, obj *beta.TargetHttpProxy) error { klog.V(5).Infof("GCEBetaRegionTargetHttpProxies.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEBetaRegionTargetHttpProxies.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionTargetHttpProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("beta"), Service: "RegionTargetHttpProxies", } klog.V(5).Infof("GCEBetaRegionTargetHttpProxies.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaRegionTargetHttpProxies.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Beta.RegionTargetHttpProxies.Insert(projectID, key.Region, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaRegionTargetHttpProxies.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaRegionTargetHttpProxies.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the TargetHttpProxy referenced by key. func (g *GCEBetaRegionTargetHttpProxies) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEBetaRegionTargetHttpProxies.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaRegionTargetHttpProxies.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionTargetHttpProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("beta"), Service: "RegionTargetHttpProxies", } klog.V(5).Infof("GCEBetaRegionTargetHttpProxies.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaRegionTargetHttpProxies.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.RegionTargetHttpProxies.Delete(projectID, key.Region, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaRegionTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaRegionTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err) return err } // SetUrlMap is a method on GCEBetaRegionTargetHttpProxies. func (g *GCEBetaRegionTargetHttpProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *beta.UrlMapReference) error { klog.V(5).Infof("GCEBetaRegionTargetHttpProxies.SetUrlMap(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaRegionTargetHttpProxies.SetUrlMap(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionTargetHttpProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "SetUrlMap", Version: meta.Version("beta"), Service: "RegionTargetHttpProxies", } klog.V(5).Infof("GCEBetaRegionTargetHttpProxies.SetUrlMap(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaRegionTargetHttpProxies.SetUrlMap(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.RegionTargetHttpProxies.SetUrlMap(projectID, key.Region, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaRegionTargetHttpProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaRegionTargetHttpProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err) return err } // RegionTargetHttpProxies is an interface that allows for mocking of RegionTargetHttpProxies. type RegionTargetHttpProxies interface { Get(ctx context.Context, key *meta.Key) (*ga.TargetHttpProxy, error) List(ctx context.Context, region string, fl *filter.F) ([]*ga.TargetHttpProxy, error) Insert(ctx context.Context, key *meta.Key, obj *ga.TargetHttpProxy) error Delete(ctx context.Context, key *meta.Key) error SetUrlMap(context.Context, *meta.Key, *ga.UrlMapReference) error } // NewMockRegionTargetHttpProxies returns a new mock for RegionTargetHttpProxies. func NewMockRegionTargetHttpProxies(pr ProjectRouter, objs map[meta.Key]*MockRegionTargetHttpProxiesObj) *MockRegionTargetHttpProxies { mock := &MockRegionTargetHttpProxies{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockRegionTargetHttpProxies is the mock for RegionTargetHttpProxies. type MockRegionTargetHttpProxies struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockRegionTargetHttpProxiesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockRegionTargetHttpProxies) (bool, *ga.TargetHttpProxy, error) ListHook func(ctx context.Context, region string, fl *filter.F, m *MockRegionTargetHttpProxies) (bool, []*ga.TargetHttpProxy, error) InsertHook func(ctx context.Context, key *meta.Key, obj *ga.TargetHttpProxy, m *MockRegionTargetHttpProxies) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockRegionTargetHttpProxies) (bool, error) SetUrlMapHook func(context.Context, *meta.Key, *ga.UrlMapReference, *MockRegionTargetHttpProxies) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockRegionTargetHttpProxies) Get(ctx context.Context, key *meta.Key) (*ga.TargetHttpProxy, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockRegionTargetHttpProxies.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockRegionTargetHttpProxies.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToGA() klog.V(5).Infof("MockRegionTargetHttpProxies.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockRegionTargetHttpProxies %v not found", key), } klog.V(5).Infof("MockRegionTargetHttpProxies.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given region. func (m *MockRegionTargetHttpProxies) List(ctx context.Context, region string, fl *filter.F) ([]*ga.TargetHttpProxy, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept { klog.V(5).Infof("MockRegionTargetHttpProxies.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockRegionTargetHttpProxies.List(%v, %q, %v) = nil, %v", ctx, region, fl, err) return nil, *m.ListError } var objs []*ga.TargetHttpProxy for key, obj := range m.Objects { if key.Region != region { continue } if !fl.Match(obj.ToGA()) { continue } objs = append(objs, obj.ToGA()) } klog.V(5).Infof("MockRegionTargetHttpProxies.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockRegionTargetHttpProxies) Insert(ctx context.Context, key *meta.Key, obj *ga.TargetHttpProxy) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockRegionTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockRegionTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockRegionTargetHttpProxies %v exists", key), } klog.V(5).Infof("MockRegionTargetHttpProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "ga", "targetHttpProxies") obj.SelfLink = SelfLink(meta.VersionGA, projectID, "targetHttpProxies", key) m.Objects[*key] = &MockRegionTargetHttpProxiesObj{obj} klog.V(5).Infof("MockRegionTargetHttpProxies.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockRegionTargetHttpProxies) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockRegionTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockRegionTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockRegionTargetHttpProxies %v not found", key), } klog.V(5).Infof("MockRegionTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockRegionTargetHttpProxies.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockRegionTargetHttpProxies) Obj(o *ga.TargetHttpProxy) *MockRegionTargetHttpProxiesObj { return &MockRegionTargetHttpProxiesObj{o} } // SetUrlMap is a mock for the corresponding method. func (m *MockRegionTargetHttpProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *ga.UrlMapReference) error { if m.SetUrlMapHook != nil { return m.SetUrlMapHook(ctx, key, arg0, m) } return nil } // GCERegionTargetHttpProxies is a simplifying adapter for the GCE RegionTargetHttpProxies. type GCERegionTargetHttpProxies struct { s *Service } // Get the TargetHttpProxy named by key. func (g *GCERegionTargetHttpProxies) Get(ctx context.Context, key *meta.Key) (*ga.TargetHttpProxy, error) { klog.V(5).Infof("GCERegionTargetHttpProxies.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCERegionTargetHttpProxies.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionTargetHttpProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("ga"), Service: "RegionTargetHttpProxies", } klog.V(5).Infof("GCERegionTargetHttpProxies.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERegionTargetHttpProxies.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.RegionTargetHttpProxies.Get(projectID, key.Region, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCERegionTargetHttpProxies.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all TargetHttpProxy objects. func (g *GCERegionTargetHttpProxies) List(ctx context.Context, region string, fl *filter.F) ([]*ga.TargetHttpProxy, error) { klog.V(5).Infof("GCERegionTargetHttpProxies.List(%v, %v, %v) called", ctx, region, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionTargetHttpProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("ga"), Service: "RegionTargetHttpProxies", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCERegionTargetHttpProxies.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk) call := g.s.GA.RegionTargetHttpProxies.List(projectID, region) if fl != filter.None { call.Filter(fl.String()) } var all []*ga.TargetHttpProxy f := func(l *ga.TargetHttpProxyList) error { klog.V(5).Infof("GCERegionTargetHttpProxies.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCERegionTargetHttpProxies.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCERegionTargetHttpProxies.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCERegionTargetHttpProxies.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert TargetHttpProxy with key of value obj. func (g *GCERegionTargetHttpProxies) Insert(ctx context.Context, key *meta.Key, obj *ga.TargetHttpProxy) error { klog.V(5).Infof("GCERegionTargetHttpProxies.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCERegionTargetHttpProxies.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionTargetHttpProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("ga"), Service: "RegionTargetHttpProxies", } klog.V(5).Infof("GCERegionTargetHttpProxies.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERegionTargetHttpProxies.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.GA.RegionTargetHttpProxies.Insert(projectID, key.Region, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCERegionTargetHttpProxies.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCERegionTargetHttpProxies.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the TargetHttpProxy referenced by key. func (g *GCERegionTargetHttpProxies) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCERegionTargetHttpProxies.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCERegionTargetHttpProxies.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionTargetHttpProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("ga"), Service: "RegionTargetHttpProxies", } klog.V(5).Infof("GCERegionTargetHttpProxies.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERegionTargetHttpProxies.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.RegionTargetHttpProxies.Delete(projectID, key.Region, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCERegionTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCERegionTargetHttpProxies.Delete(%v, %v) = %v", ctx, key, err) return err } // SetUrlMap is a method on GCERegionTargetHttpProxies. func (g *GCERegionTargetHttpProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *ga.UrlMapReference) error { klog.V(5).Infof("GCERegionTargetHttpProxies.SetUrlMap(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCERegionTargetHttpProxies.SetUrlMap(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionTargetHttpProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "SetUrlMap", Version: meta.Version("ga"), Service: "RegionTargetHttpProxies", } klog.V(5).Infof("GCERegionTargetHttpProxies.SetUrlMap(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERegionTargetHttpProxies.SetUrlMap(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.RegionTargetHttpProxies.SetUrlMap(projectID, key.Region, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCERegionTargetHttpProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCERegionTargetHttpProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err) return err } // TargetHttpsProxies is an interface that allows for mocking of TargetHttpsProxies. type TargetHttpsProxies interface { Get(ctx context.Context, key *meta.Key) (*ga.TargetHttpsProxy, error) List(ctx context.Context, fl *filter.F) ([]*ga.TargetHttpsProxy, error) Insert(ctx context.Context, key *meta.Key, obj *ga.TargetHttpsProxy) error Delete(ctx context.Context, key *meta.Key) error SetSslCertificates(context.Context, *meta.Key, *ga.TargetHttpsProxiesSetSslCertificatesRequest) error SetSslPolicy(context.Context, *meta.Key, *ga.SslPolicyReference) error SetUrlMap(context.Context, *meta.Key, *ga.UrlMapReference) error } // NewMockTargetHttpsProxies returns a new mock for TargetHttpsProxies. func NewMockTargetHttpsProxies(pr ProjectRouter, objs map[meta.Key]*MockTargetHttpsProxiesObj) *MockTargetHttpsProxies { mock := &MockTargetHttpsProxies{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockTargetHttpsProxies is the mock for TargetHttpsProxies. type MockTargetHttpsProxies struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockTargetHttpsProxiesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockTargetHttpsProxies) (bool, *ga.TargetHttpsProxy, error) ListHook func(ctx context.Context, fl *filter.F, m *MockTargetHttpsProxies) (bool, []*ga.TargetHttpsProxy, error) InsertHook func(ctx context.Context, key *meta.Key, obj *ga.TargetHttpsProxy, m *MockTargetHttpsProxies) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockTargetHttpsProxies) (bool, error) SetSslCertificatesHook func(context.Context, *meta.Key, *ga.TargetHttpsProxiesSetSslCertificatesRequest, *MockTargetHttpsProxies) error SetSslPolicyHook func(context.Context, *meta.Key, *ga.SslPolicyReference, *MockTargetHttpsProxies) error SetUrlMapHook func(context.Context, *meta.Key, *ga.UrlMapReference, *MockTargetHttpsProxies) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockTargetHttpsProxies) Get(ctx context.Context, key *meta.Key) (*ga.TargetHttpsProxy, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockTargetHttpsProxies.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockTargetHttpsProxies.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToGA() klog.V(5).Infof("MockTargetHttpsProxies.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockTargetHttpsProxies %v not found", key), } klog.V(5).Infof("MockTargetHttpsProxies.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockTargetHttpsProxies) List(ctx context.Context, fl *filter.F) ([]*ga.TargetHttpsProxy, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockTargetHttpsProxies.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockTargetHttpsProxies.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*ga.TargetHttpsProxy for _, obj := range m.Objects { if !fl.Match(obj.ToGA()) { continue } objs = append(objs, obj.ToGA()) } klog.V(5).Infof("MockTargetHttpsProxies.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockTargetHttpsProxies) Insert(ctx context.Context, key *meta.Key, obj *ga.TargetHttpsProxy) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockTargetHttpsProxies %v exists", key), } klog.V(5).Infof("MockTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "ga", "targetHttpsProxies") obj.SelfLink = SelfLink(meta.VersionGA, projectID, "targetHttpsProxies", key) m.Objects[*key] = &MockTargetHttpsProxiesObj{obj} klog.V(5).Infof("MockTargetHttpsProxies.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockTargetHttpsProxies) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockTargetHttpsProxies %v not found", key), } klog.V(5).Infof("MockTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockTargetHttpsProxies.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockTargetHttpsProxies) Obj(o *ga.TargetHttpsProxy) *MockTargetHttpsProxiesObj { return &MockTargetHttpsProxiesObj{o} } // SetSslCertificates is a mock for the corresponding method. func (m *MockTargetHttpsProxies) SetSslCertificates(ctx context.Context, key *meta.Key, arg0 *ga.TargetHttpsProxiesSetSslCertificatesRequest) error { if m.SetSslCertificatesHook != nil { return m.SetSslCertificatesHook(ctx, key, arg0, m) } return nil } // SetSslPolicy is a mock for the corresponding method. func (m *MockTargetHttpsProxies) SetSslPolicy(ctx context.Context, key *meta.Key, arg0 *ga.SslPolicyReference) error { if m.SetSslPolicyHook != nil { return m.SetSslPolicyHook(ctx, key, arg0, m) } return nil } // SetUrlMap is a mock for the corresponding method. func (m *MockTargetHttpsProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *ga.UrlMapReference) error { if m.SetUrlMapHook != nil { return m.SetUrlMapHook(ctx, key, arg0, m) } return nil } // GCETargetHttpsProxies is a simplifying adapter for the GCE TargetHttpsProxies. type GCETargetHttpsProxies struct { s *Service } // Get the TargetHttpsProxy named by key. func (g *GCETargetHttpsProxies) Get(ctx context.Context, key *meta.Key) (*ga.TargetHttpsProxy, error) { klog.V(5).Infof("GCETargetHttpsProxies.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCETargetHttpsProxies.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("ga"), Service: "TargetHttpsProxies", } klog.V(5).Infof("GCETargetHttpsProxies.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCETargetHttpsProxies.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.TargetHttpsProxies.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCETargetHttpsProxies.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all TargetHttpsProxy objects. func (g *GCETargetHttpsProxies) List(ctx context.Context, fl *filter.F) ([]*ga.TargetHttpsProxy, error) { klog.V(5).Infof("GCETargetHttpsProxies.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("ga"), Service: "TargetHttpsProxies", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCETargetHttpsProxies.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.GA.TargetHttpsProxies.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*ga.TargetHttpsProxy f := func(l *ga.TargetHttpsProxyList) error { klog.V(5).Infof("GCETargetHttpsProxies.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCETargetHttpsProxies.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCETargetHttpsProxies.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCETargetHttpsProxies.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert TargetHttpsProxy with key of value obj. func (g *GCETargetHttpsProxies) Insert(ctx context.Context, key *meta.Key, obj *ga.TargetHttpsProxy) error { klog.V(5).Infof("GCETargetHttpsProxies.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCETargetHttpsProxies.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("ga"), Service: "TargetHttpsProxies", } klog.V(5).Infof("GCETargetHttpsProxies.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCETargetHttpsProxies.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.GA.TargetHttpsProxies.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCETargetHttpsProxies.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCETargetHttpsProxies.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the TargetHttpsProxy referenced by key. func (g *GCETargetHttpsProxies) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCETargetHttpsProxies.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCETargetHttpsProxies.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("ga"), Service: "TargetHttpsProxies", } klog.V(5).Infof("GCETargetHttpsProxies.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCETargetHttpsProxies.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.TargetHttpsProxies.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCETargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCETargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err) return err } // SetSslCertificates is a method on GCETargetHttpsProxies. func (g *GCETargetHttpsProxies) SetSslCertificates(ctx context.Context, key *meta.Key, arg0 *ga.TargetHttpsProxiesSetSslCertificatesRequest) error { klog.V(5).Infof("GCETargetHttpsProxies.SetSslCertificates(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCETargetHttpsProxies.SetSslCertificates(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "SetSslCertificates", Version: meta.Version("ga"), Service: "TargetHttpsProxies", } klog.V(5).Infof("GCETargetHttpsProxies.SetSslCertificates(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCETargetHttpsProxies.SetSslCertificates(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.TargetHttpsProxies.SetSslCertificates(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCETargetHttpsProxies.SetSslCertificates(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCETargetHttpsProxies.SetSslCertificates(%v, %v, ...) = %+v", ctx, key, err) return err } // SetSslPolicy is a method on GCETargetHttpsProxies. func (g *GCETargetHttpsProxies) SetSslPolicy(ctx context.Context, key *meta.Key, arg0 *ga.SslPolicyReference) error { klog.V(5).Infof("GCETargetHttpsProxies.SetSslPolicy(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCETargetHttpsProxies.SetSslPolicy(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "SetSslPolicy", Version: meta.Version("ga"), Service: "TargetHttpsProxies", } klog.V(5).Infof("GCETargetHttpsProxies.SetSslPolicy(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCETargetHttpsProxies.SetSslPolicy(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.TargetHttpsProxies.SetSslPolicy(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCETargetHttpsProxies.SetSslPolicy(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCETargetHttpsProxies.SetSslPolicy(%v, %v, ...) = %+v", ctx, key, err) return err } // SetUrlMap is a method on GCETargetHttpsProxies. func (g *GCETargetHttpsProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *ga.UrlMapReference) error { klog.V(5).Infof("GCETargetHttpsProxies.SetUrlMap(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCETargetHttpsProxies.SetUrlMap(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "SetUrlMap", Version: meta.Version("ga"), Service: "TargetHttpsProxies", } klog.V(5).Infof("GCETargetHttpsProxies.SetUrlMap(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCETargetHttpsProxies.SetUrlMap(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.TargetHttpsProxies.SetUrlMap(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCETargetHttpsProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCETargetHttpsProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err) return err } // AlphaTargetHttpsProxies is an interface that allows for mocking of TargetHttpsProxies. type AlphaTargetHttpsProxies interface { Get(ctx context.Context, key *meta.Key) (*alpha.TargetHttpsProxy, error) List(ctx context.Context, fl *filter.F) ([]*alpha.TargetHttpsProxy, error) Insert(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpsProxy) error Delete(ctx context.Context, key *meta.Key) error SetSslCertificates(context.Context, *meta.Key, *alpha.TargetHttpsProxiesSetSslCertificatesRequest) error SetSslPolicy(context.Context, *meta.Key, *alpha.SslPolicyReference) error SetUrlMap(context.Context, *meta.Key, *alpha.UrlMapReference) error } // NewMockAlphaTargetHttpsProxies returns a new mock for TargetHttpsProxies. func NewMockAlphaTargetHttpsProxies(pr ProjectRouter, objs map[meta.Key]*MockTargetHttpsProxiesObj) *MockAlphaTargetHttpsProxies { mock := &MockAlphaTargetHttpsProxies{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockAlphaTargetHttpsProxies is the mock for TargetHttpsProxies. type MockAlphaTargetHttpsProxies struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockTargetHttpsProxiesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaTargetHttpsProxies) (bool, *alpha.TargetHttpsProxy, error) ListHook func(ctx context.Context, fl *filter.F, m *MockAlphaTargetHttpsProxies) (bool, []*alpha.TargetHttpsProxy, error) InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpsProxy, m *MockAlphaTargetHttpsProxies) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaTargetHttpsProxies) (bool, error) SetSslCertificatesHook func(context.Context, *meta.Key, *alpha.TargetHttpsProxiesSetSslCertificatesRequest, *MockAlphaTargetHttpsProxies) error SetSslPolicyHook func(context.Context, *meta.Key, *alpha.SslPolicyReference, *MockAlphaTargetHttpsProxies) error SetUrlMapHook func(context.Context, *meta.Key, *alpha.UrlMapReference, *MockAlphaTargetHttpsProxies) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockAlphaTargetHttpsProxies) Get(ctx context.Context, key *meta.Key) (*alpha.TargetHttpsProxy, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaTargetHttpsProxies.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockAlphaTargetHttpsProxies.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToAlpha() klog.V(5).Infof("MockAlphaTargetHttpsProxies.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaTargetHttpsProxies %v not found", key), } klog.V(5).Infof("MockAlphaTargetHttpsProxies.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockAlphaTargetHttpsProxies) List(ctx context.Context, fl *filter.F) ([]*alpha.TargetHttpsProxy, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockAlphaTargetHttpsProxies.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockAlphaTargetHttpsProxies.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*alpha.TargetHttpsProxy for _, obj := range m.Objects { if !fl.Match(obj.ToAlpha()) { continue } objs = append(objs, obj.ToAlpha()) } klog.V(5).Infof("MockAlphaTargetHttpsProxies.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockAlphaTargetHttpsProxies) Insert(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpsProxy) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockAlphaTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockAlphaTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockAlphaTargetHttpsProxies %v exists", key), } klog.V(5).Infof("MockAlphaTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "targetHttpsProxies") obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "targetHttpsProxies", key) m.Objects[*key] = &MockTargetHttpsProxiesObj{obj} klog.V(5).Infof("MockAlphaTargetHttpsProxies.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockAlphaTargetHttpsProxies) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockAlphaTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaTargetHttpsProxies %v not found", key), } klog.V(5).Infof("MockAlphaTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockAlphaTargetHttpsProxies.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockAlphaTargetHttpsProxies) Obj(o *alpha.TargetHttpsProxy) *MockTargetHttpsProxiesObj { return &MockTargetHttpsProxiesObj{o} } // SetSslCertificates is a mock for the corresponding method. func (m *MockAlphaTargetHttpsProxies) SetSslCertificates(ctx context.Context, key *meta.Key, arg0 *alpha.TargetHttpsProxiesSetSslCertificatesRequest) error { if m.SetSslCertificatesHook != nil { return m.SetSslCertificatesHook(ctx, key, arg0, m) } return nil } // SetSslPolicy is a mock for the corresponding method. func (m *MockAlphaTargetHttpsProxies) SetSslPolicy(ctx context.Context, key *meta.Key, arg0 *alpha.SslPolicyReference) error { if m.SetSslPolicyHook != nil { return m.SetSslPolicyHook(ctx, key, arg0, m) } return nil } // SetUrlMap is a mock for the corresponding method. func (m *MockAlphaTargetHttpsProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *alpha.UrlMapReference) error { if m.SetUrlMapHook != nil { return m.SetUrlMapHook(ctx, key, arg0, m) } return nil } // GCEAlphaTargetHttpsProxies is a simplifying adapter for the GCE TargetHttpsProxies. type GCEAlphaTargetHttpsProxies struct { s *Service } // Get the TargetHttpsProxy named by key. func (g *GCEAlphaTargetHttpsProxies) Get(ctx context.Context, key *meta.Key) (*alpha.TargetHttpsProxy, error) { klog.V(5).Infof("GCEAlphaTargetHttpsProxies.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaTargetHttpsProxies.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "TargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("alpha"), Service: "TargetHttpsProxies", } klog.V(5).Infof("GCEAlphaTargetHttpsProxies.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaTargetHttpsProxies.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Alpha.TargetHttpsProxies.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEAlphaTargetHttpsProxies.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all TargetHttpsProxy objects. func (g *GCEAlphaTargetHttpsProxies) List(ctx context.Context, fl *filter.F) ([]*alpha.TargetHttpsProxy, error) { klog.V(5).Infof("GCEAlphaTargetHttpsProxies.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "TargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("alpha"), Service: "TargetHttpsProxies", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEAlphaTargetHttpsProxies.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.Alpha.TargetHttpsProxies.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*alpha.TargetHttpsProxy f := func(l *alpha.TargetHttpsProxyList) error { klog.V(5).Infof("GCEAlphaTargetHttpsProxies.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEAlphaTargetHttpsProxies.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEAlphaTargetHttpsProxies.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEAlphaTargetHttpsProxies.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert TargetHttpsProxy with key of value obj. func (g *GCEAlphaTargetHttpsProxies) Insert(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpsProxy) error { klog.V(5).Infof("GCEAlphaTargetHttpsProxies.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEAlphaTargetHttpsProxies.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "TargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("alpha"), Service: "TargetHttpsProxies", } klog.V(5).Infof("GCEAlphaTargetHttpsProxies.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaTargetHttpsProxies.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Alpha.TargetHttpsProxies.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaTargetHttpsProxies.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaTargetHttpsProxies.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the TargetHttpsProxy referenced by key. func (g *GCEAlphaTargetHttpsProxies) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEAlphaTargetHttpsProxies.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaTargetHttpsProxies.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "TargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("alpha"), Service: "TargetHttpsProxies", } klog.V(5).Infof("GCEAlphaTargetHttpsProxies.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaTargetHttpsProxies.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.TargetHttpsProxies.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err) return err } // SetSslCertificates is a method on GCEAlphaTargetHttpsProxies. func (g *GCEAlphaTargetHttpsProxies) SetSslCertificates(ctx context.Context, key *meta.Key, arg0 *alpha.TargetHttpsProxiesSetSslCertificatesRequest) error { klog.V(5).Infof("GCEAlphaTargetHttpsProxies.SetSslCertificates(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaTargetHttpsProxies.SetSslCertificates(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "TargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "SetSslCertificates", Version: meta.Version("alpha"), Service: "TargetHttpsProxies", } klog.V(5).Infof("GCEAlphaTargetHttpsProxies.SetSslCertificates(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaTargetHttpsProxies.SetSslCertificates(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.TargetHttpsProxies.SetSslCertificates(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaTargetHttpsProxies.SetSslCertificates(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaTargetHttpsProxies.SetSslCertificates(%v, %v, ...) = %+v", ctx, key, err) return err } // SetSslPolicy is a method on GCEAlphaTargetHttpsProxies. func (g *GCEAlphaTargetHttpsProxies) SetSslPolicy(ctx context.Context, key *meta.Key, arg0 *alpha.SslPolicyReference) error { klog.V(5).Infof("GCEAlphaTargetHttpsProxies.SetSslPolicy(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaTargetHttpsProxies.SetSslPolicy(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "TargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "SetSslPolicy", Version: meta.Version("alpha"), Service: "TargetHttpsProxies", } klog.V(5).Infof("GCEAlphaTargetHttpsProxies.SetSslPolicy(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaTargetHttpsProxies.SetSslPolicy(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.TargetHttpsProxies.SetSslPolicy(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaTargetHttpsProxies.SetSslPolicy(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaTargetHttpsProxies.SetSslPolicy(%v, %v, ...) = %+v", ctx, key, err) return err } // SetUrlMap is a method on GCEAlphaTargetHttpsProxies. func (g *GCEAlphaTargetHttpsProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *alpha.UrlMapReference) error { klog.V(5).Infof("GCEAlphaTargetHttpsProxies.SetUrlMap(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaTargetHttpsProxies.SetUrlMap(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "TargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "SetUrlMap", Version: meta.Version("alpha"), Service: "TargetHttpsProxies", } klog.V(5).Infof("GCEAlphaTargetHttpsProxies.SetUrlMap(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaTargetHttpsProxies.SetUrlMap(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.TargetHttpsProxies.SetUrlMap(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaTargetHttpsProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaTargetHttpsProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err) return err } // BetaTargetHttpsProxies is an interface that allows for mocking of TargetHttpsProxies. type BetaTargetHttpsProxies interface { Get(ctx context.Context, key *meta.Key) (*beta.TargetHttpsProxy, error) List(ctx context.Context, fl *filter.F) ([]*beta.TargetHttpsProxy, error) Insert(ctx context.Context, key *meta.Key, obj *beta.TargetHttpsProxy) error Delete(ctx context.Context, key *meta.Key) error SetSslCertificates(context.Context, *meta.Key, *beta.TargetHttpsProxiesSetSslCertificatesRequest) error SetSslPolicy(context.Context, *meta.Key, *beta.SslPolicyReference) error SetUrlMap(context.Context, *meta.Key, *beta.UrlMapReference) error } // NewMockBetaTargetHttpsProxies returns a new mock for TargetHttpsProxies. func NewMockBetaTargetHttpsProxies(pr ProjectRouter, objs map[meta.Key]*MockTargetHttpsProxiesObj) *MockBetaTargetHttpsProxies { mock := &MockBetaTargetHttpsProxies{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockBetaTargetHttpsProxies is the mock for TargetHttpsProxies. type MockBetaTargetHttpsProxies struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockTargetHttpsProxiesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaTargetHttpsProxies) (bool, *beta.TargetHttpsProxy, error) ListHook func(ctx context.Context, fl *filter.F, m *MockBetaTargetHttpsProxies) (bool, []*beta.TargetHttpsProxy, error) InsertHook func(ctx context.Context, key *meta.Key, obj *beta.TargetHttpsProxy, m *MockBetaTargetHttpsProxies) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaTargetHttpsProxies) (bool, error) SetSslCertificatesHook func(context.Context, *meta.Key, *beta.TargetHttpsProxiesSetSslCertificatesRequest, *MockBetaTargetHttpsProxies) error SetSslPolicyHook func(context.Context, *meta.Key, *beta.SslPolicyReference, *MockBetaTargetHttpsProxies) error SetUrlMapHook func(context.Context, *meta.Key, *beta.UrlMapReference, *MockBetaTargetHttpsProxies) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockBetaTargetHttpsProxies) Get(ctx context.Context, key *meta.Key) (*beta.TargetHttpsProxy, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaTargetHttpsProxies.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockBetaTargetHttpsProxies.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToBeta() klog.V(5).Infof("MockBetaTargetHttpsProxies.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaTargetHttpsProxies %v not found", key), } klog.V(5).Infof("MockBetaTargetHttpsProxies.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockBetaTargetHttpsProxies) List(ctx context.Context, fl *filter.F) ([]*beta.TargetHttpsProxy, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockBetaTargetHttpsProxies.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockBetaTargetHttpsProxies.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*beta.TargetHttpsProxy for _, obj := range m.Objects { if !fl.Match(obj.ToBeta()) { continue } objs = append(objs, obj.ToBeta()) } klog.V(5).Infof("MockBetaTargetHttpsProxies.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockBetaTargetHttpsProxies) Insert(ctx context.Context, key *meta.Key, obj *beta.TargetHttpsProxy) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockBetaTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockBetaTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockBetaTargetHttpsProxies %v exists", key), } klog.V(5).Infof("MockBetaTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "beta", "targetHttpsProxies") obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "targetHttpsProxies", key) m.Objects[*key] = &MockTargetHttpsProxiesObj{obj} klog.V(5).Infof("MockBetaTargetHttpsProxies.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockBetaTargetHttpsProxies) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockBetaTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaTargetHttpsProxies %v not found", key), } klog.V(5).Infof("MockBetaTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockBetaTargetHttpsProxies.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockBetaTargetHttpsProxies) Obj(o *beta.TargetHttpsProxy) *MockTargetHttpsProxiesObj { return &MockTargetHttpsProxiesObj{o} } // SetSslCertificates is a mock for the corresponding method. func (m *MockBetaTargetHttpsProxies) SetSslCertificates(ctx context.Context, key *meta.Key, arg0 *beta.TargetHttpsProxiesSetSslCertificatesRequest) error { if m.SetSslCertificatesHook != nil { return m.SetSslCertificatesHook(ctx, key, arg0, m) } return nil } // SetSslPolicy is a mock for the corresponding method. func (m *MockBetaTargetHttpsProxies) SetSslPolicy(ctx context.Context, key *meta.Key, arg0 *beta.SslPolicyReference) error { if m.SetSslPolicyHook != nil { return m.SetSslPolicyHook(ctx, key, arg0, m) } return nil } // SetUrlMap is a mock for the corresponding method. func (m *MockBetaTargetHttpsProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *beta.UrlMapReference) error { if m.SetUrlMapHook != nil { return m.SetUrlMapHook(ctx, key, arg0, m) } return nil } // GCEBetaTargetHttpsProxies is a simplifying adapter for the GCE TargetHttpsProxies. type GCEBetaTargetHttpsProxies struct { s *Service } // Get the TargetHttpsProxy named by key. func (g *GCEBetaTargetHttpsProxies) Get(ctx context.Context, key *meta.Key) (*beta.TargetHttpsProxy, error) { klog.V(5).Infof("GCEBetaTargetHttpsProxies.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaTargetHttpsProxies.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "TargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("beta"), Service: "TargetHttpsProxies", } klog.V(5).Infof("GCEBetaTargetHttpsProxies.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaTargetHttpsProxies.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Beta.TargetHttpsProxies.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEBetaTargetHttpsProxies.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all TargetHttpsProxy objects. func (g *GCEBetaTargetHttpsProxies) List(ctx context.Context, fl *filter.F) ([]*beta.TargetHttpsProxy, error) { klog.V(5).Infof("GCEBetaTargetHttpsProxies.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "TargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("beta"), Service: "TargetHttpsProxies", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEBetaTargetHttpsProxies.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.Beta.TargetHttpsProxies.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*beta.TargetHttpsProxy f := func(l *beta.TargetHttpsProxyList) error { klog.V(5).Infof("GCEBetaTargetHttpsProxies.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEBetaTargetHttpsProxies.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEBetaTargetHttpsProxies.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEBetaTargetHttpsProxies.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert TargetHttpsProxy with key of value obj. func (g *GCEBetaTargetHttpsProxies) Insert(ctx context.Context, key *meta.Key, obj *beta.TargetHttpsProxy) error { klog.V(5).Infof("GCEBetaTargetHttpsProxies.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEBetaTargetHttpsProxies.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "TargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("beta"), Service: "TargetHttpsProxies", } klog.V(5).Infof("GCEBetaTargetHttpsProxies.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaTargetHttpsProxies.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Beta.TargetHttpsProxies.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaTargetHttpsProxies.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaTargetHttpsProxies.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the TargetHttpsProxy referenced by key. func (g *GCEBetaTargetHttpsProxies) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEBetaTargetHttpsProxies.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaTargetHttpsProxies.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "TargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("beta"), Service: "TargetHttpsProxies", } klog.V(5).Infof("GCEBetaTargetHttpsProxies.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaTargetHttpsProxies.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.TargetHttpsProxies.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err) return err } // SetSslCertificates is a method on GCEBetaTargetHttpsProxies. func (g *GCEBetaTargetHttpsProxies) SetSslCertificates(ctx context.Context, key *meta.Key, arg0 *beta.TargetHttpsProxiesSetSslCertificatesRequest) error { klog.V(5).Infof("GCEBetaTargetHttpsProxies.SetSslCertificates(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaTargetHttpsProxies.SetSslCertificates(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "TargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "SetSslCertificates", Version: meta.Version("beta"), Service: "TargetHttpsProxies", } klog.V(5).Infof("GCEBetaTargetHttpsProxies.SetSslCertificates(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaTargetHttpsProxies.SetSslCertificates(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.TargetHttpsProxies.SetSslCertificates(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaTargetHttpsProxies.SetSslCertificates(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaTargetHttpsProxies.SetSslCertificates(%v, %v, ...) = %+v", ctx, key, err) return err } // SetSslPolicy is a method on GCEBetaTargetHttpsProxies. func (g *GCEBetaTargetHttpsProxies) SetSslPolicy(ctx context.Context, key *meta.Key, arg0 *beta.SslPolicyReference) error { klog.V(5).Infof("GCEBetaTargetHttpsProxies.SetSslPolicy(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaTargetHttpsProxies.SetSslPolicy(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "TargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "SetSslPolicy", Version: meta.Version("beta"), Service: "TargetHttpsProxies", } klog.V(5).Infof("GCEBetaTargetHttpsProxies.SetSslPolicy(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaTargetHttpsProxies.SetSslPolicy(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.TargetHttpsProxies.SetSslPolicy(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaTargetHttpsProxies.SetSslPolicy(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaTargetHttpsProxies.SetSslPolicy(%v, %v, ...) = %+v", ctx, key, err) return err } // SetUrlMap is a method on GCEBetaTargetHttpsProxies. func (g *GCEBetaTargetHttpsProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *beta.UrlMapReference) error { klog.V(5).Infof("GCEBetaTargetHttpsProxies.SetUrlMap(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaTargetHttpsProxies.SetUrlMap(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "TargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "SetUrlMap", Version: meta.Version("beta"), Service: "TargetHttpsProxies", } klog.V(5).Infof("GCEBetaTargetHttpsProxies.SetUrlMap(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaTargetHttpsProxies.SetUrlMap(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.TargetHttpsProxies.SetUrlMap(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaTargetHttpsProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaTargetHttpsProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err) return err } // AlphaRegionTargetHttpsProxies is an interface that allows for mocking of RegionTargetHttpsProxies. type AlphaRegionTargetHttpsProxies interface { Get(ctx context.Context, key *meta.Key) (*alpha.TargetHttpsProxy, error) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.TargetHttpsProxy, error) Insert(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpsProxy) error Delete(ctx context.Context, key *meta.Key) error SetSslCertificates(context.Context, *meta.Key, *alpha.RegionTargetHttpsProxiesSetSslCertificatesRequest) error SetUrlMap(context.Context, *meta.Key, *alpha.UrlMapReference) error } // NewMockAlphaRegionTargetHttpsProxies returns a new mock for RegionTargetHttpsProxies. func NewMockAlphaRegionTargetHttpsProxies(pr ProjectRouter, objs map[meta.Key]*MockRegionTargetHttpsProxiesObj) *MockAlphaRegionTargetHttpsProxies { mock := &MockAlphaRegionTargetHttpsProxies{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockAlphaRegionTargetHttpsProxies is the mock for RegionTargetHttpsProxies. type MockAlphaRegionTargetHttpsProxies struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockRegionTargetHttpsProxiesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaRegionTargetHttpsProxies) (bool, *alpha.TargetHttpsProxy, error) ListHook func(ctx context.Context, region string, fl *filter.F, m *MockAlphaRegionTargetHttpsProxies) (bool, []*alpha.TargetHttpsProxy, error) InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpsProxy, m *MockAlphaRegionTargetHttpsProxies) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaRegionTargetHttpsProxies) (bool, error) SetSslCertificatesHook func(context.Context, *meta.Key, *alpha.RegionTargetHttpsProxiesSetSslCertificatesRequest, *MockAlphaRegionTargetHttpsProxies) error SetUrlMapHook func(context.Context, *meta.Key, *alpha.UrlMapReference, *MockAlphaRegionTargetHttpsProxies) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockAlphaRegionTargetHttpsProxies) Get(ctx context.Context, key *meta.Key) (*alpha.TargetHttpsProxy, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaRegionTargetHttpsProxies.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockAlphaRegionTargetHttpsProxies.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToAlpha() klog.V(5).Infof("MockAlphaRegionTargetHttpsProxies.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaRegionTargetHttpsProxies %v not found", key), } klog.V(5).Infof("MockAlphaRegionTargetHttpsProxies.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given region. func (m *MockAlphaRegionTargetHttpsProxies) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.TargetHttpsProxy, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept { klog.V(5).Infof("MockAlphaRegionTargetHttpsProxies.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockAlphaRegionTargetHttpsProxies.List(%v, %q, %v) = nil, %v", ctx, region, fl, err) return nil, *m.ListError } var objs []*alpha.TargetHttpsProxy for key, obj := range m.Objects { if key.Region != region { continue } if !fl.Match(obj.ToAlpha()) { continue } objs = append(objs, obj.ToAlpha()) } klog.V(5).Infof("MockAlphaRegionTargetHttpsProxies.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockAlphaRegionTargetHttpsProxies) Insert(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpsProxy) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockAlphaRegionTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockAlphaRegionTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockAlphaRegionTargetHttpsProxies %v exists", key), } klog.V(5).Infof("MockAlphaRegionTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "targetHttpsProxies") obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "targetHttpsProxies", key) m.Objects[*key] = &MockRegionTargetHttpsProxiesObj{obj} klog.V(5).Infof("MockAlphaRegionTargetHttpsProxies.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockAlphaRegionTargetHttpsProxies) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaRegionTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockAlphaRegionTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaRegionTargetHttpsProxies %v not found", key), } klog.V(5).Infof("MockAlphaRegionTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockAlphaRegionTargetHttpsProxies.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockAlphaRegionTargetHttpsProxies) Obj(o *alpha.TargetHttpsProxy) *MockRegionTargetHttpsProxiesObj { return &MockRegionTargetHttpsProxiesObj{o} } // SetSslCertificates is a mock for the corresponding method. func (m *MockAlphaRegionTargetHttpsProxies) SetSslCertificates(ctx context.Context, key *meta.Key, arg0 *alpha.RegionTargetHttpsProxiesSetSslCertificatesRequest) error { if m.SetSslCertificatesHook != nil { return m.SetSslCertificatesHook(ctx, key, arg0, m) } return nil } // SetUrlMap is a mock for the corresponding method. func (m *MockAlphaRegionTargetHttpsProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *alpha.UrlMapReference) error { if m.SetUrlMapHook != nil { return m.SetUrlMapHook(ctx, key, arg0, m) } return nil } // GCEAlphaRegionTargetHttpsProxies is a simplifying adapter for the GCE RegionTargetHttpsProxies. type GCEAlphaRegionTargetHttpsProxies struct { s *Service } // Get the TargetHttpsProxy named by key. func (g *GCEAlphaRegionTargetHttpsProxies) Get(ctx context.Context, key *meta.Key) (*alpha.TargetHttpsProxy, error) { klog.V(5).Infof("GCEAlphaRegionTargetHttpsProxies.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaRegionTargetHttpsProxies.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionTargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("alpha"), Service: "RegionTargetHttpsProxies", } klog.V(5).Infof("GCEAlphaRegionTargetHttpsProxies.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Alpha.RegionTargetHttpsProxies.Get(projectID, key.Region, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all TargetHttpsProxy objects. func (g *GCEAlphaRegionTargetHttpsProxies) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.TargetHttpsProxy, error) { klog.V(5).Infof("GCEAlphaRegionTargetHttpsProxies.List(%v, %v, %v) called", ctx, region, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionTargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("alpha"), Service: "RegionTargetHttpsProxies", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEAlphaRegionTargetHttpsProxies.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk) call := g.s.Alpha.RegionTargetHttpsProxies.List(projectID, region) if fl != filter.None { call.Filter(fl.String()) } var all []*alpha.TargetHttpsProxy f := func(l *alpha.TargetHttpsProxyList) error { klog.V(5).Infof("GCEAlphaRegionTargetHttpsProxies.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEAlphaRegionTargetHttpsProxies.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert TargetHttpsProxy with key of value obj. func (g *GCEAlphaRegionTargetHttpsProxies) Insert(ctx context.Context, key *meta.Key, obj *alpha.TargetHttpsProxy) error { klog.V(5).Infof("GCEAlphaRegionTargetHttpsProxies.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEAlphaRegionTargetHttpsProxies.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionTargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("alpha"), Service: "RegionTargetHttpsProxies", } klog.V(5).Infof("GCEAlphaRegionTargetHttpsProxies.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Alpha.RegionTargetHttpsProxies.Insert(projectID, key.Region, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the TargetHttpsProxy referenced by key. func (g *GCEAlphaRegionTargetHttpsProxies) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEAlphaRegionTargetHttpsProxies.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaRegionTargetHttpsProxies.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionTargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("alpha"), Service: "RegionTargetHttpsProxies", } klog.V(5).Infof("GCEAlphaRegionTargetHttpsProxies.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.RegionTargetHttpsProxies.Delete(projectID, key.Region, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err) return err } // SetSslCertificates is a method on GCEAlphaRegionTargetHttpsProxies. func (g *GCEAlphaRegionTargetHttpsProxies) SetSslCertificates(ctx context.Context, key *meta.Key, arg0 *alpha.RegionTargetHttpsProxiesSetSslCertificatesRequest) error { klog.V(5).Infof("GCEAlphaRegionTargetHttpsProxies.SetSslCertificates(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaRegionTargetHttpsProxies.SetSslCertificates(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionTargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "SetSslCertificates", Version: meta.Version("alpha"), Service: "RegionTargetHttpsProxies", } klog.V(5).Infof("GCEAlphaRegionTargetHttpsProxies.SetSslCertificates(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.SetSslCertificates(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.RegionTargetHttpsProxies.SetSslCertificates(projectID, key.Region, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.SetSslCertificates(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.SetSslCertificates(%v, %v, ...) = %+v", ctx, key, err) return err } // SetUrlMap is a method on GCEAlphaRegionTargetHttpsProxies. func (g *GCEAlphaRegionTargetHttpsProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *alpha.UrlMapReference) error { klog.V(5).Infof("GCEAlphaRegionTargetHttpsProxies.SetUrlMap(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaRegionTargetHttpsProxies.SetUrlMap(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionTargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "SetUrlMap", Version: meta.Version("alpha"), Service: "RegionTargetHttpsProxies", } klog.V(5).Infof("GCEAlphaRegionTargetHttpsProxies.SetUrlMap(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.SetUrlMap(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.RegionTargetHttpsProxies.SetUrlMap(projectID, key.Region, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaRegionTargetHttpsProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err) return err } // BetaRegionTargetHttpsProxies is an interface that allows for mocking of RegionTargetHttpsProxies. type BetaRegionTargetHttpsProxies interface { Get(ctx context.Context, key *meta.Key) (*beta.TargetHttpsProxy, error) List(ctx context.Context, region string, fl *filter.F) ([]*beta.TargetHttpsProxy, error) Insert(ctx context.Context, key *meta.Key, obj *beta.TargetHttpsProxy) error Delete(ctx context.Context, key *meta.Key) error SetSslCertificates(context.Context, *meta.Key, *beta.RegionTargetHttpsProxiesSetSslCertificatesRequest) error SetUrlMap(context.Context, *meta.Key, *beta.UrlMapReference) error } // NewMockBetaRegionTargetHttpsProxies returns a new mock for RegionTargetHttpsProxies. func NewMockBetaRegionTargetHttpsProxies(pr ProjectRouter, objs map[meta.Key]*MockRegionTargetHttpsProxiesObj) *MockBetaRegionTargetHttpsProxies { mock := &MockBetaRegionTargetHttpsProxies{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockBetaRegionTargetHttpsProxies is the mock for RegionTargetHttpsProxies. type MockBetaRegionTargetHttpsProxies struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockRegionTargetHttpsProxiesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaRegionTargetHttpsProxies) (bool, *beta.TargetHttpsProxy, error) ListHook func(ctx context.Context, region string, fl *filter.F, m *MockBetaRegionTargetHttpsProxies) (bool, []*beta.TargetHttpsProxy, error) InsertHook func(ctx context.Context, key *meta.Key, obj *beta.TargetHttpsProxy, m *MockBetaRegionTargetHttpsProxies) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaRegionTargetHttpsProxies) (bool, error) SetSslCertificatesHook func(context.Context, *meta.Key, *beta.RegionTargetHttpsProxiesSetSslCertificatesRequest, *MockBetaRegionTargetHttpsProxies) error SetUrlMapHook func(context.Context, *meta.Key, *beta.UrlMapReference, *MockBetaRegionTargetHttpsProxies) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockBetaRegionTargetHttpsProxies) Get(ctx context.Context, key *meta.Key) (*beta.TargetHttpsProxy, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaRegionTargetHttpsProxies.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockBetaRegionTargetHttpsProxies.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToBeta() klog.V(5).Infof("MockBetaRegionTargetHttpsProxies.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaRegionTargetHttpsProxies %v not found", key), } klog.V(5).Infof("MockBetaRegionTargetHttpsProxies.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given region. func (m *MockBetaRegionTargetHttpsProxies) List(ctx context.Context, region string, fl *filter.F) ([]*beta.TargetHttpsProxy, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept { klog.V(5).Infof("MockBetaRegionTargetHttpsProxies.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockBetaRegionTargetHttpsProxies.List(%v, %q, %v) = nil, %v", ctx, region, fl, err) return nil, *m.ListError } var objs []*beta.TargetHttpsProxy for key, obj := range m.Objects { if key.Region != region { continue } if !fl.Match(obj.ToBeta()) { continue } objs = append(objs, obj.ToBeta()) } klog.V(5).Infof("MockBetaRegionTargetHttpsProxies.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockBetaRegionTargetHttpsProxies) Insert(ctx context.Context, key *meta.Key, obj *beta.TargetHttpsProxy) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockBetaRegionTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockBetaRegionTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockBetaRegionTargetHttpsProxies %v exists", key), } klog.V(5).Infof("MockBetaRegionTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "beta", "targetHttpsProxies") obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "targetHttpsProxies", key) m.Objects[*key] = &MockRegionTargetHttpsProxiesObj{obj} klog.V(5).Infof("MockBetaRegionTargetHttpsProxies.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockBetaRegionTargetHttpsProxies) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaRegionTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockBetaRegionTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaRegionTargetHttpsProxies %v not found", key), } klog.V(5).Infof("MockBetaRegionTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockBetaRegionTargetHttpsProxies.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockBetaRegionTargetHttpsProxies) Obj(o *beta.TargetHttpsProxy) *MockRegionTargetHttpsProxiesObj { return &MockRegionTargetHttpsProxiesObj{o} } // SetSslCertificates is a mock for the corresponding method. func (m *MockBetaRegionTargetHttpsProxies) SetSslCertificates(ctx context.Context, key *meta.Key, arg0 *beta.RegionTargetHttpsProxiesSetSslCertificatesRequest) error { if m.SetSslCertificatesHook != nil { return m.SetSslCertificatesHook(ctx, key, arg0, m) } return nil } // SetUrlMap is a mock for the corresponding method. func (m *MockBetaRegionTargetHttpsProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *beta.UrlMapReference) error { if m.SetUrlMapHook != nil { return m.SetUrlMapHook(ctx, key, arg0, m) } return nil } // GCEBetaRegionTargetHttpsProxies is a simplifying adapter for the GCE RegionTargetHttpsProxies. type GCEBetaRegionTargetHttpsProxies struct { s *Service } // Get the TargetHttpsProxy named by key. func (g *GCEBetaRegionTargetHttpsProxies) Get(ctx context.Context, key *meta.Key) (*beta.TargetHttpsProxy, error) { klog.V(5).Infof("GCEBetaRegionTargetHttpsProxies.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaRegionTargetHttpsProxies.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionTargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("beta"), Service: "RegionTargetHttpsProxies", } klog.V(5).Infof("GCEBetaRegionTargetHttpsProxies.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Beta.RegionTargetHttpsProxies.Get(projectID, key.Region, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all TargetHttpsProxy objects. func (g *GCEBetaRegionTargetHttpsProxies) List(ctx context.Context, region string, fl *filter.F) ([]*beta.TargetHttpsProxy, error) { klog.V(5).Infof("GCEBetaRegionTargetHttpsProxies.List(%v, %v, %v) called", ctx, region, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionTargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("beta"), Service: "RegionTargetHttpsProxies", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEBetaRegionTargetHttpsProxies.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk) call := g.s.Beta.RegionTargetHttpsProxies.List(projectID, region) if fl != filter.None { call.Filter(fl.String()) } var all []*beta.TargetHttpsProxy f := func(l *beta.TargetHttpsProxyList) error { klog.V(5).Infof("GCEBetaRegionTargetHttpsProxies.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEBetaRegionTargetHttpsProxies.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert TargetHttpsProxy with key of value obj. func (g *GCEBetaRegionTargetHttpsProxies) Insert(ctx context.Context, key *meta.Key, obj *beta.TargetHttpsProxy) error { klog.V(5).Infof("GCEBetaRegionTargetHttpsProxies.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEBetaRegionTargetHttpsProxies.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionTargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("beta"), Service: "RegionTargetHttpsProxies", } klog.V(5).Infof("GCEBetaRegionTargetHttpsProxies.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Beta.RegionTargetHttpsProxies.Insert(projectID, key.Region, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the TargetHttpsProxy referenced by key. func (g *GCEBetaRegionTargetHttpsProxies) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEBetaRegionTargetHttpsProxies.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaRegionTargetHttpsProxies.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionTargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("beta"), Service: "RegionTargetHttpsProxies", } klog.V(5).Infof("GCEBetaRegionTargetHttpsProxies.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.RegionTargetHttpsProxies.Delete(projectID, key.Region, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err) return err } // SetSslCertificates is a method on GCEBetaRegionTargetHttpsProxies. func (g *GCEBetaRegionTargetHttpsProxies) SetSslCertificates(ctx context.Context, key *meta.Key, arg0 *beta.RegionTargetHttpsProxiesSetSslCertificatesRequest) error { klog.V(5).Infof("GCEBetaRegionTargetHttpsProxies.SetSslCertificates(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaRegionTargetHttpsProxies.SetSslCertificates(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionTargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "SetSslCertificates", Version: meta.Version("beta"), Service: "RegionTargetHttpsProxies", } klog.V(5).Infof("GCEBetaRegionTargetHttpsProxies.SetSslCertificates(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.SetSslCertificates(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.RegionTargetHttpsProxies.SetSslCertificates(projectID, key.Region, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.SetSslCertificates(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.SetSslCertificates(%v, %v, ...) = %+v", ctx, key, err) return err } // SetUrlMap is a method on GCEBetaRegionTargetHttpsProxies. func (g *GCEBetaRegionTargetHttpsProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *beta.UrlMapReference) error { klog.V(5).Infof("GCEBetaRegionTargetHttpsProxies.SetUrlMap(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaRegionTargetHttpsProxies.SetUrlMap(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionTargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "SetUrlMap", Version: meta.Version("beta"), Service: "RegionTargetHttpsProxies", } klog.V(5).Infof("GCEBetaRegionTargetHttpsProxies.SetUrlMap(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.SetUrlMap(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.RegionTargetHttpsProxies.SetUrlMap(projectID, key.Region, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaRegionTargetHttpsProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err) return err } // RegionTargetHttpsProxies is an interface that allows for mocking of RegionTargetHttpsProxies. type RegionTargetHttpsProxies interface { Get(ctx context.Context, key *meta.Key) (*ga.TargetHttpsProxy, error) List(ctx context.Context, region string, fl *filter.F) ([]*ga.TargetHttpsProxy, error) Insert(ctx context.Context, key *meta.Key, obj *ga.TargetHttpsProxy) error Delete(ctx context.Context, key *meta.Key) error SetSslCertificates(context.Context, *meta.Key, *ga.RegionTargetHttpsProxiesSetSslCertificatesRequest) error SetUrlMap(context.Context, *meta.Key, *ga.UrlMapReference) error } // NewMockRegionTargetHttpsProxies returns a new mock for RegionTargetHttpsProxies. func NewMockRegionTargetHttpsProxies(pr ProjectRouter, objs map[meta.Key]*MockRegionTargetHttpsProxiesObj) *MockRegionTargetHttpsProxies { mock := &MockRegionTargetHttpsProxies{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockRegionTargetHttpsProxies is the mock for RegionTargetHttpsProxies. type MockRegionTargetHttpsProxies struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockRegionTargetHttpsProxiesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockRegionTargetHttpsProxies) (bool, *ga.TargetHttpsProxy, error) ListHook func(ctx context.Context, region string, fl *filter.F, m *MockRegionTargetHttpsProxies) (bool, []*ga.TargetHttpsProxy, error) InsertHook func(ctx context.Context, key *meta.Key, obj *ga.TargetHttpsProxy, m *MockRegionTargetHttpsProxies) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockRegionTargetHttpsProxies) (bool, error) SetSslCertificatesHook func(context.Context, *meta.Key, *ga.RegionTargetHttpsProxiesSetSslCertificatesRequest, *MockRegionTargetHttpsProxies) error SetUrlMapHook func(context.Context, *meta.Key, *ga.UrlMapReference, *MockRegionTargetHttpsProxies) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockRegionTargetHttpsProxies) Get(ctx context.Context, key *meta.Key) (*ga.TargetHttpsProxy, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockRegionTargetHttpsProxies.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockRegionTargetHttpsProxies.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToGA() klog.V(5).Infof("MockRegionTargetHttpsProxies.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockRegionTargetHttpsProxies %v not found", key), } klog.V(5).Infof("MockRegionTargetHttpsProxies.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given region. func (m *MockRegionTargetHttpsProxies) List(ctx context.Context, region string, fl *filter.F) ([]*ga.TargetHttpsProxy, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept { klog.V(5).Infof("MockRegionTargetHttpsProxies.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockRegionTargetHttpsProxies.List(%v, %q, %v) = nil, %v", ctx, region, fl, err) return nil, *m.ListError } var objs []*ga.TargetHttpsProxy for key, obj := range m.Objects { if key.Region != region { continue } if !fl.Match(obj.ToGA()) { continue } objs = append(objs, obj.ToGA()) } klog.V(5).Infof("MockRegionTargetHttpsProxies.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockRegionTargetHttpsProxies) Insert(ctx context.Context, key *meta.Key, obj *ga.TargetHttpsProxy) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockRegionTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockRegionTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockRegionTargetHttpsProxies %v exists", key), } klog.V(5).Infof("MockRegionTargetHttpsProxies.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "ga", "targetHttpsProxies") obj.SelfLink = SelfLink(meta.VersionGA, projectID, "targetHttpsProxies", key) m.Objects[*key] = &MockRegionTargetHttpsProxiesObj{obj} klog.V(5).Infof("MockRegionTargetHttpsProxies.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockRegionTargetHttpsProxies) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockRegionTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockRegionTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockRegionTargetHttpsProxies %v not found", key), } klog.V(5).Infof("MockRegionTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockRegionTargetHttpsProxies.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockRegionTargetHttpsProxies) Obj(o *ga.TargetHttpsProxy) *MockRegionTargetHttpsProxiesObj { return &MockRegionTargetHttpsProxiesObj{o} } // SetSslCertificates is a mock for the corresponding method. func (m *MockRegionTargetHttpsProxies) SetSslCertificates(ctx context.Context, key *meta.Key, arg0 *ga.RegionTargetHttpsProxiesSetSslCertificatesRequest) error { if m.SetSslCertificatesHook != nil { return m.SetSslCertificatesHook(ctx, key, arg0, m) } return nil } // SetUrlMap is a mock for the corresponding method. func (m *MockRegionTargetHttpsProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *ga.UrlMapReference) error { if m.SetUrlMapHook != nil { return m.SetUrlMapHook(ctx, key, arg0, m) } return nil } // GCERegionTargetHttpsProxies is a simplifying adapter for the GCE RegionTargetHttpsProxies. type GCERegionTargetHttpsProxies struct { s *Service } // Get the TargetHttpsProxy named by key. func (g *GCERegionTargetHttpsProxies) Get(ctx context.Context, key *meta.Key) (*ga.TargetHttpsProxy, error) { klog.V(5).Infof("GCERegionTargetHttpsProxies.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCERegionTargetHttpsProxies.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionTargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("ga"), Service: "RegionTargetHttpsProxies", } klog.V(5).Infof("GCERegionTargetHttpsProxies.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERegionTargetHttpsProxies.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.RegionTargetHttpsProxies.Get(projectID, key.Region, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCERegionTargetHttpsProxies.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all TargetHttpsProxy objects. func (g *GCERegionTargetHttpsProxies) List(ctx context.Context, region string, fl *filter.F) ([]*ga.TargetHttpsProxy, error) { klog.V(5).Infof("GCERegionTargetHttpsProxies.List(%v, %v, %v) called", ctx, region, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionTargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("ga"), Service: "RegionTargetHttpsProxies", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCERegionTargetHttpsProxies.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk) call := g.s.GA.RegionTargetHttpsProxies.List(projectID, region) if fl != filter.None { call.Filter(fl.String()) } var all []*ga.TargetHttpsProxy f := func(l *ga.TargetHttpsProxyList) error { klog.V(5).Infof("GCERegionTargetHttpsProxies.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCERegionTargetHttpsProxies.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCERegionTargetHttpsProxies.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCERegionTargetHttpsProxies.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert TargetHttpsProxy with key of value obj. func (g *GCERegionTargetHttpsProxies) Insert(ctx context.Context, key *meta.Key, obj *ga.TargetHttpsProxy) error { klog.V(5).Infof("GCERegionTargetHttpsProxies.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCERegionTargetHttpsProxies.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionTargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("ga"), Service: "RegionTargetHttpsProxies", } klog.V(5).Infof("GCERegionTargetHttpsProxies.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERegionTargetHttpsProxies.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.GA.RegionTargetHttpsProxies.Insert(projectID, key.Region, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCERegionTargetHttpsProxies.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCERegionTargetHttpsProxies.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the TargetHttpsProxy referenced by key. func (g *GCERegionTargetHttpsProxies) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCERegionTargetHttpsProxies.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCERegionTargetHttpsProxies.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionTargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("ga"), Service: "RegionTargetHttpsProxies", } klog.V(5).Infof("GCERegionTargetHttpsProxies.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERegionTargetHttpsProxies.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.RegionTargetHttpsProxies.Delete(projectID, key.Region, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCERegionTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCERegionTargetHttpsProxies.Delete(%v, %v) = %v", ctx, key, err) return err } // SetSslCertificates is a method on GCERegionTargetHttpsProxies. func (g *GCERegionTargetHttpsProxies) SetSslCertificates(ctx context.Context, key *meta.Key, arg0 *ga.RegionTargetHttpsProxiesSetSslCertificatesRequest) error { klog.V(5).Infof("GCERegionTargetHttpsProxies.SetSslCertificates(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCERegionTargetHttpsProxies.SetSslCertificates(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionTargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "SetSslCertificates", Version: meta.Version("ga"), Service: "RegionTargetHttpsProxies", } klog.V(5).Infof("GCERegionTargetHttpsProxies.SetSslCertificates(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERegionTargetHttpsProxies.SetSslCertificates(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.RegionTargetHttpsProxies.SetSslCertificates(projectID, key.Region, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCERegionTargetHttpsProxies.SetSslCertificates(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCERegionTargetHttpsProxies.SetSslCertificates(%v, %v, ...) = %+v", ctx, key, err) return err } // SetUrlMap is a method on GCERegionTargetHttpsProxies. func (g *GCERegionTargetHttpsProxies) SetUrlMap(ctx context.Context, key *meta.Key, arg0 *ga.UrlMapReference) error { klog.V(5).Infof("GCERegionTargetHttpsProxies.SetUrlMap(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCERegionTargetHttpsProxies.SetUrlMap(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionTargetHttpsProxies") rk := &RateLimitKey{ ProjectID: projectID, Operation: "SetUrlMap", Version: meta.Version("ga"), Service: "RegionTargetHttpsProxies", } klog.V(5).Infof("GCERegionTargetHttpsProxies.SetUrlMap(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERegionTargetHttpsProxies.SetUrlMap(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.RegionTargetHttpsProxies.SetUrlMap(projectID, key.Region, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCERegionTargetHttpsProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCERegionTargetHttpsProxies.SetUrlMap(%v, %v, ...) = %+v", ctx, key, err) return err } // TargetPools is an interface that allows for mocking of TargetPools. type TargetPools interface { Get(ctx context.Context, key *meta.Key) (*ga.TargetPool, error) List(ctx context.Context, region string, fl *filter.F) ([]*ga.TargetPool, error) Insert(ctx context.Context, key *meta.Key, obj *ga.TargetPool) error Delete(ctx context.Context, key *meta.Key) error AddInstance(context.Context, *meta.Key, *ga.TargetPoolsAddInstanceRequest) error RemoveInstance(context.Context, *meta.Key, *ga.TargetPoolsRemoveInstanceRequest) error } // NewMockTargetPools returns a new mock for TargetPools. func NewMockTargetPools(pr ProjectRouter, objs map[meta.Key]*MockTargetPoolsObj) *MockTargetPools { mock := &MockTargetPools{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockTargetPools is the mock for TargetPools. type MockTargetPools struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockTargetPoolsObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockTargetPools) (bool, *ga.TargetPool, error) ListHook func(ctx context.Context, region string, fl *filter.F, m *MockTargetPools) (bool, []*ga.TargetPool, error) InsertHook func(ctx context.Context, key *meta.Key, obj *ga.TargetPool, m *MockTargetPools) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockTargetPools) (bool, error) AddInstanceHook func(context.Context, *meta.Key, *ga.TargetPoolsAddInstanceRequest, *MockTargetPools) error RemoveInstanceHook func(context.Context, *meta.Key, *ga.TargetPoolsRemoveInstanceRequest, *MockTargetPools) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockTargetPools) Get(ctx context.Context, key *meta.Key) (*ga.TargetPool, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockTargetPools.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockTargetPools.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToGA() klog.V(5).Infof("MockTargetPools.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockTargetPools %v not found", key), } klog.V(5).Infof("MockTargetPools.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given region. func (m *MockTargetPools) List(ctx context.Context, region string, fl *filter.F) ([]*ga.TargetPool, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept { klog.V(5).Infof("MockTargetPools.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockTargetPools.List(%v, %q, %v) = nil, %v", ctx, region, fl, err) return nil, *m.ListError } var objs []*ga.TargetPool for key, obj := range m.Objects { if key.Region != region { continue } if !fl.Match(obj.ToGA()) { continue } objs = append(objs, obj.ToGA()) } klog.V(5).Infof("MockTargetPools.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockTargetPools) Insert(ctx context.Context, key *meta.Key, obj *ga.TargetPool) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockTargetPools.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockTargetPools.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockTargetPools %v exists", key), } klog.V(5).Infof("MockTargetPools.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "ga", "targetPools") obj.SelfLink = SelfLink(meta.VersionGA, projectID, "targetPools", key) m.Objects[*key] = &MockTargetPoolsObj{obj} klog.V(5).Infof("MockTargetPools.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockTargetPools) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockTargetPools.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockTargetPools.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockTargetPools %v not found", key), } klog.V(5).Infof("MockTargetPools.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockTargetPools.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockTargetPools) Obj(o *ga.TargetPool) *MockTargetPoolsObj { return &MockTargetPoolsObj{o} } // AddInstance is a mock for the corresponding method. func (m *MockTargetPools) AddInstance(ctx context.Context, key *meta.Key, arg0 *ga.TargetPoolsAddInstanceRequest) error { if m.AddInstanceHook != nil { return m.AddInstanceHook(ctx, key, arg0, m) } return nil } // RemoveInstance is a mock for the corresponding method. func (m *MockTargetPools) RemoveInstance(ctx context.Context, key *meta.Key, arg0 *ga.TargetPoolsRemoveInstanceRequest) error { if m.RemoveInstanceHook != nil { return m.RemoveInstanceHook(ctx, key, arg0, m) } return nil } // GCETargetPools is a simplifying adapter for the GCE TargetPools. type GCETargetPools struct { s *Service } // Get the TargetPool named by key. func (g *GCETargetPools) Get(ctx context.Context, key *meta.Key) (*ga.TargetPool, error) { klog.V(5).Infof("GCETargetPools.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCETargetPools.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetPools") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("ga"), Service: "TargetPools", } klog.V(5).Infof("GCETargetPools.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCETargetPools.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.TargetPools.Get(projectID, key.Region, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCETargetPools.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all TargetPool objects. func (g *GCETargetPools) List(ctx context.Context, region string, fl *filter.F) ([]*ga.TargetPool, error) { klog.V(5).Infof("GCETargetPools.List(%v, %v, %v) called", ctx, region, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetPools") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("ga"), Service: "TargetPools", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCETargetPools.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk) call := g.s.GA.TargetPools.List(projectID, region) if fl != filter.None { call.Filter(fl.String()) } var all []*ga.TargetPool f := func(l *ga.TargetPoolList) error { klog.V(5).Infof("GCETargetPools.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCETargetPools.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCETargetPools.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCETargetPools.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert TargetPool with key of value obj. func (g *GCETargetPools) Insert(ctx context.Context, key *meta.Key, obj *ga.TargetPool) error { klog.V(5).Infof("GCETargetPools.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCETargetPools.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetPools") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("ga"), Service: "TargetPools", } klog.V(5).Infof("GCETargetPools.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCETargetPools.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.GA.TargetPools.Insert(projectID, key.Region, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCETargetPools.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCETargetPools.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the TargetPool referenced by key. func (g *GCETargetPools) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCETargetPools.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCETargetPools.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetPools") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("ga"), Service: "TargetPools", } klog.V(5).Infof("GCETargetPools.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCETargetPools.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.TargetPools.Delete(projectID, key.Region, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCETargetPools.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCETargetPools.Delete(%v, %v) = %v", ctx, key, err) return err } // AddInstance is a method on GCETargetPools. func (g *GCETargetPools) AddInstance(ctx context.Context, key *meta.Key, arg0 *ga.TargetPoolsAddInstanceRequest) error { klog.V(5).Infof("GCETargetPools.AddInstance(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCETargetPools.AddInstance(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetPools") rk := &RateLimitKey{ ProjectID: projectID, Operation: "AddInstance", Version: meta.Version("ga"), Service: "TargetPools", } klog.V(5).Infof("GCETargetPools.AddInstance(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCETargetPools.AddInstance(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.TargetPools.AddInstance(projectID, key.Region, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCETargetPools.AddInstance(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCETargetPools.AddInstance(%v, %v, ...) = %+v", ctx, key, err) return err } // RemoveInstance is a method on GCETargetPools. func (g *GCETargetPools) RemoveInstance(ctx context.Context, key *meta.Key, arg0 *ga.TargetPoolsRemoveInstanceRequest) error { klog.V(5).Infof("GCETargetPools.RemoveInstance(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCETargetPools.RemoveInstance(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "TargetPools") rk := &RateLimitKey{ ProjectID: projectID, Operation: "RemoveInstance", Version: meta.Version("ga"), Service: "TargetPools", } klog.V(5).Infof("GCETargetPools.RemoveInstance(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCETargetPools.RemoveInstance(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.TargetPools.RemoveInstance(projectID, key.Region, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCETargetPools.RemoveInstance(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCETargetPools.RemoveInstance(%v, %v, ...) = %+v", ctx, key, err) return err } // AlphaUrlMaps is an interface that allows for mocking of UrlMaps. type AlphaUrlMaps interface { Get(ctx context.Context, key *meta.Key) (*alpha.UrlMap, error) List(ctx context.Context, fl *filter.F) ([]*alpha.UrlMap, error) Insert(ctx context.Context, key *meta.Key, obj *alpha.UrlMap) error Delete(ctx context.Context, key *meta.Key) error Update(context.Context, *meta.Key, *alpha.UrlMap) error } // NewMockAlphaUrlMaps returns a new mock for UrlMaps. func NewMockAlphaUrlMaps(pr ProjectRouter, objs map[meta.Key]*MockUrlMapsObj) *MockAlphaUrlMaps { mock := &MockAlphaUrlMaps{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockAlphaUrlMaps is the mock for UrlMaps. type MockAlphaUrlMaps struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockUrlMapsObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaUrlMaps) (bool, *alpha.UrlMap, error) ListHook func(ctx context.Context, fl *filter.F, m *MockAlphaUrlMaps) (bool, []*alpha.UrlMap, error) InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.UrlMap, m *MockAlphaUrlMaps) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaUrlMaps) (bool, error) UpdateHook func(context.Context, *meta.Key, *alpha.UrlMap, *MockAlphaUrlMaps) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockAlphaUrlMaps) Get(ctx context.Context, key *meta.Key) (*alpha.UrlMap, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaUrlMaps.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockAlphaUrlMaps.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToAlpha() klog.V(5).Infof("MockAlphaUrlMaps.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaUrlMaps %v not found", key), } klog.V(5).Infof("MockAlphaUrlMaps.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockAlphaUrlMaps) List(ctx context.Context, fl *filter.F) ([]*alpha.UrlMap, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockAlphaUrlMaps.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockAlphaUrlMaps.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*alpha.UrlMap for _, obj := range m.Objects { if !fl.Match(obj.ToAlpha()) { continue } objs = append(objs, obj.ToAlpha()) } klog.V(5).Infof("MockAlphaUrlMaps.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockAlphaUrlMaps) Insert(ctx context.Context, key *meta.Key, obj *alpha.UrlMap) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockAlphaUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockAlphaUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockAlphaUrlMaps %v exists", key), } klog.V(5).Infof("MockAlphaUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "urlMaps") obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "urlMaps", key) m.Objects[*key] = &MockUrlMapsObj{obj} klog.V(5).Infof("MockAlphaUrlMaps.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockAlphaUrlMaps) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaUrlMaps.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockAlphaUrlMaps.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaUrlMaps %v not found", key), } klog.V(5).Infof("MockAlphaUrlMaps.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockAlphaUrlMaps.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockAlphaUrlMaps) Obj(o *alpha.UrlMap) *MockUrlMapsObj { return &MockUrlMapsObj{o} } // Update is a mock for the corresponding method. func (m *MockAlphaUrlMaps) Update(ctx context.Context, key *meta.Key, arg0 *alpha.UrlMap) error { if m.UpdateHook != nil { return m.UpdateHook(ctx, key, arg0, m) } return nil } // GCEAlphaUrlMaps is a simplifying adapter for the GCE UrlMaps. type GCEAlphaUrlMaps struct { s *Service } // Get the UrlMap named by key. func (g *GCEAlphaUrlMaps) Get(ctx context.Context, key *meta.Key) (*alpha.UrlMap, error) { klog.V(5).Infof("GCEAlphaUrlMaps.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaUrlMaps.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "UrlMaps") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("alpha"), Service: "UrlMaps", } klog.V(5).Infof("GCEAlphaUrlMaps.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaUrlMaps.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Alpha.UrlMaps.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEAlphaUrlMaps.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all UrlMap objects. func (g *GCEAlphaUrlMaps) List(ctx context.Context, fl *filter.F) ([]*alpha.UrlMap, error) { klog.V(5).Infof("GCEAlphaUrlMaps.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "UrlMaps") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("alpha"), Service: "UrlMaps", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEAlphaUrlMaps.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.Alpha.UrlMaps.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*alpha.UrlMap f := func(l *alpha.UrlMapList) error { klog.V(5).Infof("GCEAlphaUrlMaps.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEAlphaUrlMaps.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEAlphaUrlMaps.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEAlphaUrlMaps.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert UrlMap with key of value obj. func (g *GCEAlphaUrlMaps) Insert(ctx context.Context, key *meta.Key, obj *alpha.UrlMap) error { klog.V(5).Infof("GCEAlphaUrlMaps.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEAlphaUrlMaps.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "UrlMaps") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("alpha"), Service: "UrlMaps", } klog.V(5).Infof("GCEAlphaUrlMaps.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaUrlMaps.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Alpha.UrlMaps.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaUrlMaps.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaUrlMaps.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the UrlMap referenced by key. func (g *GCEAlphaUrlMaps) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEAlphaUrlMaps.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaUrlMaps.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "UrlMaps") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("alpha"), Service: "UrlMaps", } klog.V(5).Infof("GCEAlphaUrlMaps.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaUrlMaps.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.UrlMaps.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaUrlMaps.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaUrlMaps.Delete(%v, %v) = %v", ctx, key, err) return err } // Update is a method on GCEAlphaUrlMaps. func (g *GCEAlphaUrlMaps) Update(ctx context.Context, key *meta.Key, arg0 *alpha.UrlMap) error { klog.V(5).Infof("GCEAlphaUrlMaps.Update(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaUrlMaps.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "UrlMaps") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Update", Version: meta.Version("alpha"), Service: "UrlMaps", } klog.V(5).Infof("GCEAlphaUrlMaps.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaUrlMaps.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.UrlMaps.Update(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaUrlMaps.Update(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaUrlMaps.Update(%v, %v, ...) = %+v", ctx, key, err) return err } // BetaUrlMaps is an interface that allows for mocking of UrlMaps. type BetaUrlMaps interface { Get(ctx context.Context, key *meta.Key) (*beta.UrlMap, error) List(ctx context.Context, fl *filter.F) ([]*beta.UrlMap, error) Insert(ctx context.Context, key *meta.Key, obj *beta.UrlMap) error Delete(ctx context.Context, key *meta.Key) error Update(context.Context, *meta.Key, *beta.UrlMap) error } // NewMockBetaUrlMaps returns a new mock for UrlMaps. func NewMockBetaUrlMaps(pr ProjectRouter, objs map[meta.Key]*MockUrlMapsObj) *MockBetaUrlMaps { mock := &MockBetaUrlMaps{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockBetaUrlMaps is the mock for UrlMaps. type MockBetaUrlMaps struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockUrlMapsObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaUrlMaps) (bool, *beta.UrlMap, error) ListHook func(ctx context.Context, fl *filter.F, m *MockBetaUrlMaps) (bool, []*beta.UrlMap, error) InsertHook func(ctx context.Context, key *meta.Key, obj *beta.UrlMap, m *MockBetaUrlMaps) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaUrlMaps) (bool, error) UpdateHook func(context.Context, *meta.Key, *beta.UrlMap, *MockBetaUrlMaps) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockBetaUrlMaps) Get(ctx context.Context, key *meta.Key) (*beta.UrlMap, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaUrlMaps.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockBetaUrlMaps.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToBeta() klog.V(5).Infof("MockBetaUrlMaps.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaUrlMaps %v not found", key), } klog.V(5).Infof("MockBetaUrlMaps.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockBetaUrlMaps) List(ctx context.Context, fl *filter.F) ([]*beta.UrlMap, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockBetaUrlMaps.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockBetaUrlMaps.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*beta.UrlMap for _, obj := range m.Objects { if !fl.Match(obj.ToBeta()) { continue } objs = append(objs, obj.ToBeta()) } klog.V(5).Infof("MockBetaUrlMaps.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockBetaUrlMaps) Insert(ctx context.Context, key *meta.Key, obj *beta.UrlMap) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockBetaUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockBetaUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockBetaUrlMaps %v exists", key), } klog.V(5).Infof("MockBetaUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "beta", "urlMaps") obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "urlMaps", key) m.Objects[*key] = &MockUrlMapsObj{obj} klog.V(5).Infof("MockBetaUrlMaps.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockBetaUrlMaps) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaUrlMaps.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockBetaUrlMaps.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaUrlMaps %v not found", key), } klog.V(5).Infof("MockBetaUrlMaps.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockBetaUrlMaps.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockBetaUrlMaps) Obj(o *beta.UrlMap) *MockUrlMapsObj { return &MockUrlMapsObj{o} } // Update is a mock for the corresponding method. func (m *MockBetaUrlMaps) Update(ctx context.Context, key *meta.Key, arg0 *beta.UrlMap) error { if m.UpdateHook != nil { return m.UpdateHook(ctx, key, arg0, m) } return nil } // GCEBetaUrlMaps is a simplifying adapter for the GCE UrlMaps. type GCEBetaUrlMaps struct { s *Service } // Get the UrlMap named by key. func (g *GCEBetaUrlMaps) Get(ctx context.Context, key *meta.Key) (*beta.UrlMap, error) { klog.V(5).Infof("GCEBetaUrlMaps.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaUrlMaps.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "UrlMaps") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("beta"), Service: "UrlMaps", } klog.V(5).Infof("GCEBetaUrlMaps.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaUrlMaps.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Beta.UrlMaps.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEBetaUrlMaps.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all UrlMap objects. func (g *GCEBetaUrlMaps) List(ctx context.Context, fl *filter.F) ([]*beta.UrlMap, error) { klog.V(5).Infof("GCEBetaUrlMaps.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "UrlMaps") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("beta"), Service: "UrlMaps", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEBetaUrlMaps.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.Beta.UrlMaps.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*beta.UrlMap f := func(l *beta.UrlMapList) error { klog.V(5).Infof("GCEBetaUrlMaps.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEBetaUrlMaps.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEBetaUrlMaps.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEBetaUrlMaps.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert UrlMap with key of value obj. func (g *GCEBetaUrlMaps) Insert(ctx context.Context, key *meta.Key, obj *beta.UrlMap) error { klog.V(5).Infof("GCEBetaUrlMaps.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEBetaUrlMaps.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "UrlMaps") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("beta"), Service: "UrlMaps", } klog.V(5).Infof("GCEBetaUrlMaps.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaUrlMaps.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Beta.UrlMaps.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaUrlMaps.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaUrlMaps.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the UrlMap referenced by key. func (g *GCEBetaUrlMaps) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEBetaUrlMaps.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaUrlMaps.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "UrlMaps") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("beta"), Service: "UrlMaps", } klog.V(5).Infof("GCEBetaUrlMaps.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaUrlMaps.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.UrlMaps.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaUrlMaps.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaUrlMaps.Delete(%v, %v) = %v", ctx, key, err) return err } // Update is a method on GCEBetaUrlMaps. func (g *GCEBetaUrlMaps) Update(ctx context.Context, key *meta.Key, arg0 *beta.UrlMap) error { klog.V(5).Infof("GCEBetaUrlMaps.Update(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaUrlMaps.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "UrlMaps") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Update", Version: meta.Version("beta"), Service: "UrlMaps", } klog.V(5).Infof("GCEBetaUrlMaps.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaUrlMaps.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.UrlMaps.Update(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaUrlMaps.Update(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaUrlMaps.Update(%v, %v, ...) = %+v", ctx, key, err) return err } // UrlMaps is an interface that allows for mocking of UrlMaps. type UrlMaps interface { Get(ctx context.Context, key *meta.Key) (*ga.UrlMap, error) List(ctx context.Context, fl *filter.F) ([]*ga.UrlMap, error) Insert(ctx context.Context, key *meta.Key, obj *ga.UrlMap) error Delete(ctx context.Context, key *meta.Key) error Update(context.Context, *meta.Key, *ga.UrlMap) error } // NewMockUrlMaps returns a new mock for UrlMaps. func NewMockUrlMaps(pr ProjectRouter, objs map[meta.Key]*MockUrlMapsObj) *MockUrlMaps { mock := &MockUrlMaps{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockUrlMaps is the mock for UrlMaps. type MockUrlMaps struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockUrlMapsObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockUrlMaps) (bool, *ga.UrlMap, error) ListHook func(ctx context.Context, fl *filter.F, m *MockUrlMaps) (bool, []*ga.UrlMap, error) InsertHook func(ctx context.Context, key *meta.Key, obj *ga.UrlMap, m *MockUrlMaps) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockUrlMaps) (bool, error) UpdateHook func(context.Context, *meta.Key, *ga.UrlMap, *MockUrlMaps) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockUrlMaps) Get(ctx context.Context, key *meta.Key) (*ga.UrlMap, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockUrlMaps.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockUrlMaps.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToGA() klog.V(5).Infof("MockUrlMaps.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockUrlMaps %v not found", key), } klog.V(5).Infof("MockUrlMaps.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockUrlMaps) List(ctx context.Context, fl *filter.F) ([]*ga.UrlMap, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockUrlMaps.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockUrlMaps.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*ga.UrlMap for _, obj := range m.Objects { if !fl.Match(obj.ToGA()) { continue } objs = append(objs, obj.ToGA()) } klog.V(5).Infof("MockUrlMaps.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockUrlMaps) Insert(ctx context.Context, key *meta.Key, obj *ga.UrlMap) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockUrlMaps %v exists", key), } klog.V(5).Infof("MockUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "ga", "urlMaps") obj.SelfLink = SelfLink(meta.VersionGA, projectID, "urlMaps", key) m.Objects[*key] = &MockUrlMapsObj{obj} klog.V(5).Infof("MockUrlMaps.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockUrlMaps) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockUrlMaps.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockUrlMaps.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockUrlMaps %v not found", key), } klog.V(5).Infof("MockUrlMaps.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockUrlMaps.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockUrlMaps) Obj(o *ga.UrlMap) *MockUrlMapsObj { return &MockUrlMapsObj{o} } // Update is a mock for the corresponding method. func (m *MockUrlMaps) Update(ctx context.Context, key *meta.Key, arg0 *ga.UrlMap) error { if m.UpdateHook != nil { return m.UpdateHook(ctx, key, arg0, m) } return nil } // GCEUrlMaps is a simplifying adapter for the GCE UrlMaps. type GCEUrlMaps struct { s *Service } // Get the UrlMap named by key. func (g *GCEUrlMaps) Get(ctx context.Context, key *meta.Key) (*ga.UrlMap, error) { klog.V(5).Infof("GCEUrlMaps.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEUrlMaps.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "UrlMaps") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("ga"), Service: "UrlMaps", } klog.V(5).Infof("GCEUrlMaps.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEUrlMaps.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.UrlMaps.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEUrlMaps.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all UrlMap objects. func (g *GCEUrlMaps) List(ctx context.Context, fl *filter.F) ([]*ga.UrlMap, error) { klog.V(5).Infof("GCEUrlMaps.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "UrlMaps") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("ga"), Service: "UrlMaps", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEUrlMaps.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.GA.UrlMaps.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*ga.UrlMap f := func(l *ga.UrlMapList) error { klog.V(5).Infof("GCEUrlMaps.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEUrlMaps.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEUrlMaps.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEUrlMaps.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert UrlMap with key of value obj. func (g *GCEUrlMaps) Insert(ctx context.Context, key *meta.Key, obj *ga.UrlMap) error { klog.V(5).Infof("GCEUrlMaps.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEUrlMaps.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "UrlMaps") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("ga"), Service: "UrlMaps", } klog.V(5).Infof("GCEUrlMaps.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEUrlMaps.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.GA.UrlMaps.Insert(projectID, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEUrlMaps.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEUrlMaps.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the UrlMap referenced by key. func (g *GCEUrlMaps) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEUrlMaps.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEUrlMaps.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "UrlMaps") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("ga"), Service: "UrlMaps", } klog.V(5).Infof("GCEUrlMaps.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEUrlMaps.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.UrlMaps.Delete(projectID, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEUrlMaps.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEUrlMaps.Delete(%v, %v) = %v", ctx, key, err) return err } // Update is a method on GCEUrlMaps. func (g *GCEUrlMaps) Update(ctx context.Context, key *meta.Key, arg0 *ga.UrlMap) error { klog.V(5).Infof("GCEUrlMaps.Update(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEUrlMaps.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "UrlMaps") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Update", Version: meta.Version("ga"), Service: "UrlMaps", } klog.V(5).Infof("GCEUrlMaps.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEUrlMaps.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.UrlMaps.Update(projectID, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEUrlMaps.Update(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEUrlMaps.Update(%v, %v, ...) = %+v", ctx, key, err) return err } // AlphaRegionUrlMaps is an interface that allows for mocking of RegionUrlMaps. type AlphaRegionUrlMaps interface { Get(ctx context.Context, key *meta.Key) (*alpha.UrlMap, error) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.UrlMap, error) Insert(ctx context.Context, key *meta.Key, obj *alpha.UrlMap) error Delete(ctx context.Context, key *meta.Key) error Update(context.Context, *meta.Key, *alpha.UrlMap) error } // NewMockAlphaRegionUrlMaps returns a new mock for RegionUrlMaps. func NewMockAlphaRegionUrlMaps(pr ProjectRouter, objs map[meta.Key]*MockRegionUrlMapsObj) *MockAlphaRegionUrlMaps { mock := &MockAlphaRegionUrlMaps{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockAlphaRegionUrlMaps is the mock for RegionUrlMaps. type MockAlphaRegionUrlMaps struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockRegionUrlMapsObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaRegionUrlMaps) (bool, *alpha.UrlMap, error) ListHook func(ctx context.Context, region string, fl *filter.F, m *MockAlphaRegionUrlMaps) (bool, []*alpha.UrlMap, error) InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.UrlMap, m *MockAlphaRegionUrlMaps) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaRegionUrlMaps) (bool, error) UpdateHook func(context.Context, *meta.Key, *alpha.UrlMap, *MockAlphaRegionUrlMaps) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockAlphaRegionUrlMaps) Get(ctx context.Context, key *meta.Key) (*alpha.UrlMap, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaRegionUrlMaps.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockAlphaRegionUrlMaps.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToAlpha() klog.V(5).Infof("MockAlphaRegionUrlMaps.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaRegionUrlMaps %v not found", key), } klog.V(5).Infof("MockAlphaRegionUrlMaps.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given region. func (m *MockAlphaRegionUrlMaps) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.UrlMap, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept { klog.V(5).Infof("MockAlphaRegionUrlMaps.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockAlphaRegionUrlMaps.List(%v, %q, %v) = nil, %v", ctx, region, fl, err) return nil, *m.ListError } var objs []*alpha.UrlMap for key, obj := range m.Objects { if key.Region != region { continue } if !fl.Match(obj.ToAlpha()) { continue } objs = append(objs, obj.ToAlpha()) } klog.V(5).Infof("MockAlphaRegionUrlMaps.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockAlphaRegionUrlMaps) Insert(ctx context.Context, key *meta.Key, obj *alpha.UrlMap) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockAlphaRegionUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockAlphaRegionUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockAlphaRegionUrlMaps %v exists", key), } klog.V(5).Infof("MockAlphaRegionUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "alpha", "urlMaps") obj.SelfLink = SelfLink(meta.VersionAlpha, projectID, "urlMaps", key) m.Objects[*key] = &MockRegionUrlMapsObj{obj} klog.V(5).Infof("MockAlphaRegionUrlMaps.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockAlphaRegionUrlMaps) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockAlphaRegionUrlMaps.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockAlphaRegionUrlMaps.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockAlphaRegionUrlMaps %v not found", key), } klog.V(5).Infof("MockAlphaRegionUrlMaps.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockAlphaRegionUrlMaps.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockAlphaRegionUrlMaps) Obj(o *alpha.UrlMap) *MockRegionUrlMapsObj { return &MockRegionUrlMapsObj{o} } // Update is a mock for the corresponding method. func (m *MockAlphaRegionUrlMaps) Update(ctx context.Context, key *meta.Key, arg0 *alpha.UrlMap) error { if m.UpdateHook != nil { return m.UpdateHook(ctx, key, arg0, m) } return nil } // GCEAlphaRegionUrlMaps is a simplifying adapter for the GCE RegionUrlMaps. type GCEAlphaRegionUrlMaps struct { s *Service } // Get the UrlMap named by key. func (g *GCEAlphaRegionUrlMaps) Get(ctx context.Context, key *meta.Key) (*alpha.UrlMap, error) { klog.V(5).Infof("GCEAlphaRegionUrlMaps.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaRegionUrlMaps.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionUrlMaps") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("alpha"), Service: "RegionUrlMaps", } klog.V(5).Infof("GCEAlphaRegionUrlMaps.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaRegionUrlMaps.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Alpha.RegionUrlMaps.Get(projectID, key.Region, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEAlphaRegionUrlMaps.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all UrlMap objects. func (g *GCEAlphaRegionUrlMaps) List(ctx context.Context, region string, fl *filter.F) ([]*alpha.UrlMap, error) { klog.V(5).Infof("GCEAlphaRegionUrlMaps.List(%v, %v, %v) called", ctx, region, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionUrlMaps") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("alpha"), Service: "RegionUrlMaps", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEAlphaRegionUrlMaps.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk) call := g.s.Alpha.RegionUrlMaps.List(projectID, region) if fl != filter.None { call.Filter(fl.String()) } var all []*alpha.UrlMap f := func(l *alpha.UrlMapList) error { klog.V(5).Infof("GCEAlphaRegionUrlMaps.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEAlphaRegionUrlMaps.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEAlphaRegionUrlMaps.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEAlphaRegionUrlMaps.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert UrlMap with key of value obj. func (g *GCEAlphaRegionUrlMaps) Insert(ctx context.Context, key *meta.Key, obj *alpha.UrlMap) error { klog.V(5).Infof("GCEAlphaRegionUrlMaps.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEAlphaRegionUrlMaps.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionUrlMaps") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("alpha"), Service: "RegionUrlMaps", } klog.V(5).Infof("GCEAlphaRegionUrlMaps.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaRegionUrlMaps.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Alpha.RegionUrlMaps.Insert(projectID, key.Region, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaRegionUrlMaps.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaRegionUrlMaps.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the UrlMap referenced by key. func (g *GCEAlphaRegionUrlMaps) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEAlphaRegionUrlMaps.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaRegionUrlMaps.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionUrlMaps") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("alpha"), Service: "RegionUrlMaps", } klog.V(5).Infof("GCEAlphaRegionUrlMaps.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaRegionUrlMaps.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.RegionUrlMaps.Delete(projectID, key.Region, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaRegionUrlMaps.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaRegionUrlMaps.Delete(%v, %v) = %v", ctx, key, err) return err } // Update is a method on GCEAlphaRegionUrlMaps. func (g *GCEAlphaRegionUrlMaps) Update(ctx context.Context, key *meta.Key, arg0 *alpha.UrlMap) error { klog.V(5).Infof("GCEAlphaRegionUrlMaps.Update(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEAlphaRegionUrlMaps.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "RegionUrlMaps") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Update", Version: meta.Version("alpha"), Service: "RegionUrlMaps", } klog.V(5).Infof("GCEAlphaRegionUrlMaps.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEAlphaRegionUrlMaps.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Alpha.RegionUrlMaps.Update(projectID, key.Region, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEAlphaRegionUrlMaps.Update(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEAlphaRegionUrlMaps.Update(%v, %v, ...) = %+v", ctx, key, err) return err } // BetaRegionUrlMaps is an interface that allows for mocking of RegionUrlMaps. type BetaRegionUrlMaps interface { Get(ctx context.Context, key *meta.Key) (*beta.UrlMap, error) List(ctx context.Context, region string, fl *filter.F) ([]*beta.UrlMap, error) Insert(ctx context.Context, key *meta.Key, obj *beta.UrlMap) error Delete(ctx context.Context, key *meta.Key) error Update(context.Context, *meta.Key, *beta.UrlMap) error } // NewMockBetaRegionUrlMaps returns a new mock for RegionUrlMaps. func NewMockBetaRegionUrlMaps(pr ProjectRouter, objs map[meta.Key]*MockRegionUrlMapsObj) *MockBetaRegionUrlMaps { mock := &MockBetaRegionUrlMaps{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockBetaRegionUrlMaps is the mock for RegionUrlMaps. type MockBetaRegionUrlMaps struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockRegionUrlMapsObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockBetaRegionUrlMaps) (bool, *beta.UrlMap, error) ListHook func(ctx context.Context, region string, fl *filter.F, m *MockBetaRegionUrlMaps) (bool, []*beta.UrlMap, error) InsertHook func(ctx context.Context, key *meta.Key, obj *beta.UrlMap, m *MockBetaRegionUrlMaps) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaRegionUrlMaps) (bool, error) UpdateHook func(context.Context, *meta.Key, *beta.UrlMap, *MockBetaRegionUrlMaps) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockBetaRegionUrlMaps) Get(ctx context.Context, key *meta.Key) (*beta.UrlMap, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaRegionUrlMaps.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockBetaRegionUrlMaps.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToBeta() klog.V(5).Infof("MockBetaRegionUrlMaps.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaRegionUrlMaps %v not found", key), } klog.V(5).Infof("MockBetaRegionUrlMaps.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given region. func (m *MockBetaRegionUrlMaps) List(ctx context.Context, region string, fl *filter.F) ([]*beta.UrlMap, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept { klog.V(5).Infof("MockBetaRegionUrlMaps.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockBetaRegionUrlMaps.List(%v, %q, %v) = nil, %v", ctx, region, fl, err) return nil, *m.ListError } var objs []*beta.UrlMap for key, obj := range m.Objects { if key.Region != region { continue } if !fl.Match(obj.ToBeta()) { continue } objs = append(objs, obj.ToBeta()) } klog.V(5).Infof("MockBetaRegionUrlMaps.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockBetaRegionUrlMaps) Insert(ctx context.Context, key *meta.Key, obj *beta.UrlMap) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockBetaRegionUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockBetaRegionUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockBetaRegionUrlMaps %v exists", key), } klog.V(5).Infof("MockBetaRegionUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "beta", "urlMaps") obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "urlMaps", key) m.Objects[*key] = &MockRegionUrlMapsObj{obj} klog.V(5).Infof("MockBetaRegionUrlMaps.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockBetaRegionUrlMaps) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockBetaRegionUrlMaps.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockBetaRegionUrlMaps.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockBetaRegionUrlMaps %v not found", key), } klog.V(5).Infof("MockBetaRegionUrlMaps.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockBetaRegionUrlMaps.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockBetaRegionUrlMaps) Obj(o *beta.UrlMap) *MockRegionUrlMapsObj { return &MockRegionUrlMapsObj{o} } // Update is a mock for the corresponding method. func (m *MockBetaRegionUrlMaps) Update(ctx context.Context, key *meta.Key, arg0 *beta.UrlMap) error { if m.UpdateHook != nil { return m.UpdateHook(ctx, key, arg0, m) } return nil } // GCEBetaRegionUrlMaps is a simplifying adapter for the GCE RegionUrlMaps. type GCEBetaRegionUrlMaps struct { s *Service } // Get the UrlMap named by key. func (g *GCEBetaRegionUrlMaps) Get(ctx context.Context, key *meta.Key) (*beta.UrlMap, error) { klog.V(5).Infof("GCEBetaRegionUrlMaps.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaRegionUrlMaps.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionUrlMaps") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("beta"), Service: "RegionUrlMaps", } klog.V(5).Infof("GCEBetaRegionUrlMaps.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaRegionUrlMaps.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.Beta.RegionUrlMaps.Get(projectID, key.Region, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEBetaRegionUrlMaps.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all UrlMap objects. func (g *GCEBetaRegionUrlMaps) List(ctx context.Context, region string, fl *filter.F) ([]*beta.UrlMap, error) { klog.V(5).Infof("GCEBetaRegionUrlMaps.List(%v, %v, %v) called", ctx, region, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionUrlMaps") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("beta"), Service: "RegionUrlMaps", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEBetaRegionUrlMaps.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk) call := g.s.Beta.RegionUrlMaps.List(projectID, region) if fl != filter.None { call.Filter(fl.String()) } var all []*beta.UrlMap f := func(l *beta.UrlMapList) error { klog.V(5).Infof("GCEBetaRegionUrlMaps.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEBetaRegionUrlMaps.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEBetaRegionUrlMaps.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEBetaRegionUrlMaps.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert UrlMap with key of value obj. func (g *GCEBetaRegionUrlMaps) Insert(ctx context.Context, key *meta.Key, obj *beta.UrlMap) error { klog.V(5).Infof("GCEBetaRegionUrlMaps.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCEBetaRegionUrlMaps.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionUrlMaps") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("beta"), Service: "RegionUrlMaps", } klog.V(5).Infof("GCEBetaRegionUrlMaps.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaRegionUrlMaps.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.Beta.RegionUrlMaps.Insert(projectID, key.Region, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaRegionUrlMaps.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaRegionUrlMaps.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the UrlMap referenced by key. func (g *GCEBetaRegionUrlMaps) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCEBetaRegionUrlMaps.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaRegionUrlMaps.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionUrlMaps") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("beta"), Service: "RegionUrlMaps", } klog.V(5).Infof("GCEBetaRegionUrlMaps.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaRegionUrlMaps.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.RegionUrlMaps.Delete(projectID, key.Region, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaRegionUrlMaps.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaRegionUrlMaps.Delete(%v, %v) = %v", ctx, key, err) return err } // Update is a method on GCEBetaRegionUrlMaps. func (g *GCEBetaRegionUrlMaps) Update(ctx context.Context, key *meta.Key, arg0 *beta.UrlMap) error { klog.V(5).Infof("GCEBetaRegionUrlMaps.Update(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEBetaRegionUrlMaps.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "RegionUrlMaps") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Update", Version: meta.Version("beta"), Service: "RegionUrlMaps", } klog.V(5).Infof("GCEBetaRegionUrlMaps.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEBetaRegionUrlMaps.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.Beta.RegionUrlMaps.Update(projectID, key.Region, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCEBetaRegionUrlMaps.Update(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCEBetaRegionUrlMaps.Update(%v, %v, ...) = %+v", ctx, key, err) return err } // RegionUrlMaps is an interface that allows for mocking of RegionUrlMaps. type RegionUrlMaps interface { Get(ctx context.Context, key *meta.Key) (*ga.UrlMap, error) List(ctx context.Context, region string, fl *filter.F) ([]*ga.UrlMap, error) Insert(ctx context.Context, key *meta.Key, obj *ga.UrlMap) error Delete(ctx context.Context, key *meta.Key) error Update(context.Context, *meta.Key, *ga.UrlMap) error } // NewMockRegionUrlMaps returns a new mock for RegionUrlMaps. func NewMockRegionUrlMaps(pr ProjectRouter, objs map[meta.Key]*MockRegionUrlMapsObj) *MockRegionUrlMaps { mock := &MockRegionUrlMaps{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, InsertError: map[meta.Key]error{}, DeleteError: map[meta.Key]error{}, } return mock } // MockRegionUrlMaps is the mock for RegionUrlMaps. type MockRegionUrlMaps struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockRegionUrlMapsObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error InsertError map[meta.Key]error DeleteError map[meta.Key]error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockRegionUrlMaps) (bool, *ga.UrlMap, error) ListHook func(ctx context.Context, region string, fl *filter.F, m *MockRegionUrlMaps) (bool, []*ga.UrlMap, error) InsertHook func(ctx context.Context, key *meta.Key, obj *ga.UrlMap, m *MockRegionUrlMaps) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockRegionUrlMaps) (bool, error) UpdateHook func(context.Context, *meta.Key, *ga.UrlMap, *MockRegionUrlMaps) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockRegionUrlMaps) Get(ctx context.Context, key *meta.Key) (*ga.UrlMap, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockRegionUrlMaps.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockRegionUrlMaps.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToGA() klog.V(5).Infof("MockRegionUrlMaps.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockRegionUrlMaps %v not found", key), } klog.V(5).Infof("MockRegionUrlMaps.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock in the given region. func (m *MockRegionUrlMaps) List(ctx context.Context, region string, fl *filter.F) ([]*ga.UrlMap, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, region, fl, m); intercept { klog.V(5).Infof("MockRegionUrlMaps.List(%v, %q, %v) = [%v items], %v", ctx, region, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockRegionUrlMaps.List(%v, %q, %v) = nil, %v", ctx, region, fl, err) return nil, *m.ListError } var objs []*ga.UrlMap for key, obj := range m.Objects { if key.Region != region { continue } if !fl.Match(obj.ToGA()) { continue } objs = append(objs, obj.ToGA()) } klog.V(5).Infof("MockRegionUrlMaps.List(%v, %q, %v) = [%v items], nil", ctx, region, fl, len(objs)) return objs, nil } // Insert is a mock for inserting/creating a new object. func (m *MockRegionUrlMaps) Insert(ctx context.Context, key *meta.Key, obj *ga.UrlMap) error { if m.InsertHook != nil { if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { klog.V(5).Infof("MockRegionUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.InsertError[*key]; ok { klog.V(5).Infof("MockRegionUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } if _, ok := m.Objects[*key]; ok { err := &googleapi.Error{ Code: http.StatusConflict, Message: fmt.Sprintf("MockRegionUrlMaps %v exists", key), } klog.V(5).Infof("MockRegionUrlMaps.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) return err } obj.Name = key.Name projectID := m.ProjectRouter.ProjectID(ctx, "ga", "urlMaps") obj.SelfLink = SelfLink(meta.VersionGA, projectID, "urlMaps", key) m.Objects[*key] = &MockRegionUrlMapsObj{obj} klog.V(5).Infof("MockRegionUrlMaps.Insert(%v, %v, %+v) = nil", ctx, key, obj) return nil } // Delete is a mock for deleting the object. func (m *MockRegionUrlMaps) Delete(ctx context.Context, key *meta.Key) error { if m.DeleteHook != nil { if intercept, err := m.DeleteHook(ctx, key, m); intercept { klog.V(5).Infof("MockRegionUrlMaps.Delete(%v, %v) = %v", ctx, key, err) return err } } if !key.Valid() { return fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.DeleteError[*key]; ok { klog.V(5).Infof("MockRegionUrlMaps.Delete(%v, %v) = %v", ctx, key, err) return err } if _, ok := m.Objects[*key]; !ok { err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockRegionUrlMaps %v not found", key), } klog.V(5).Infof("MockRegionUrlMaps.Delete(%v, %v) = %v", ctx, key, err) return err } delete(m.Objects, *key) klog.V(5).Infof("MockRegionUrlMaps.Delete(%v, %v) = nil", ctx, key) return nil } // Obj wraps the object for use in the mock. func (m *MockRegionUrlMaps) Obj(o *ga.UrlMap) *MockRegionUrlMapsObj { return &MockRegionUrlMapsObj{o} } // Update is a mock for the corresponding method. func (m *MockRegionUrlMaps) Update(ctx context.Context, key *meta.Key, arg0 *ga.UrlMap) error { if m.UpdateHook != nil { return m.UpdateHook(ctx, key, arg0, m) } return nil } // GCERegionUrlMaps is a simplifying adapter for the GCE RegionUrlMaps. type GCERegionUrlMaps struct { s *Service } // Get the UrlMap named by key. func (g *GCERegionUrlMaps) Get(ctx context.Context, key *meta.Key) (*ga.UrlMap, error) { klog.V(5).Infof("GCERegionUrlMaps.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCERegionUrlMaps.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionUrlMaps") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("ga"), Service: "RegionUrlMaps", } klog.V(5).Infof("GCERegionUrlMaps.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERegionUrlMaps.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.RegionUrlMaps.Get(projectID, key.Region, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCERegionUrlMaps.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all UrlMap objects. func (g *GCERegionUrlMaps) List(ctx context.Context, region string, fl *filter.F) ([]*ga.UrlMap, error) { klog.V(5).Infof("GCERegionUrlMaps.List(%v, %v, %v) called", ctx, region, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionUrlMaps") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("ga"), Service: "RegionUrlMaps", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCERegionUrlMaps.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, region, fl, projectID, rk) call := g.s.GA.RegionUrlMaps.List(projectID, region) if fl != filter.None { call.Filter(fl.String()) } var all []*ga.UrlMap f := func(l *ga.UrlMapList) error { klog.V(5).Infof("GCERegionUrlMaps.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCERegionUrlMaps.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCERegionUrlMaps.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCERegionUrlMaps.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // Insert UrlMap with key of value obj. func (g *GCERegionUrlMaps) Insert(ctx context.Context, key *meta.Key, obj *ga.UrlMap) error { klog.V(5).Infof("GCERegionUrlMaps.Insert(%v, %v, %+v): called", ctx, key, obj) if !key.Valid() { klog.V(2).Infof("GCERegionUrlMaps.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionUrlMaps") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Insert", Version: meta.Version("ga"), Service: "RegionUrlMaps", } klog.V(5).Infof("GCERegionUrlMaps.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERegionUrlMaps.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } obj.Name = key.Name call := g.s.GA.RegionUrlMaps.Insert(projectID, key.Region, obj) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCERegionUrlMaps.Insert(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCERegionUrlMaps.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) return err } // Delete the UrlMap referenced by key. func (g *GCERegionUrlMaps) Delete(ctx context.Context, key *meta.Key) error { klog.V(5).Infof("GCERegionUrlMaps.Delete(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCERegionUrlMaps.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionUrlMaps") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Delete", Version: meta.Version("ga"), Service: "RegionUrlMaps", } klog.V(5).Infof("GCERegionUrlMaps.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERegionUrlMaps.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.RegionUrlMaps.Delete(projectID, key.Region, key.Name) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCERegionUrlMaps.Delete(%v, %v) = %v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCERegionUrlMaps.Delete(%v, %v) = %v", ctx, key, err) return err } // Update is a method on GCERegionUrlMaps. func (g *GCERegionUrlMaps) Update(ctx context.Context, key *meta.Key, arg0 *ga.UrlMap) error { klog.V(5).Infof("GCERegionUrlMaps.Update(%v, %v, ...): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCERegionUrlMaps.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key) return fmt.Errorf("invalid GCE key (%+v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "RegionUrlMaps") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Update", Version: meta.Version("ga"), Service: "RegionUrlMaps", } klog.V(5).Infof("GCERegionUrlMaps.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCERegionUrlMaps.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err) return err } call := g.s.GA.RegionUrlMaps.Update(projectID, key.Region, key.Name, arg0) call.Context(ctx) op, err := call.Do() if err != nil { klog.V(4).Infof("GCERegionUrlMaps.Update(%v, %v, ...) = %+v", ctx, key, err) return err } err = g.s.WaitForCompletion(ctx, op) klog.V(4).Infof("GCERegionUrlMaps.Update(%v, %v, ...) = %+v", ctx, key, err) return err } // Zones is an interface that allows for mocking of Zones. type Zones interface { Get(ctx context.Context, key *meta.Key) (*ga.Zone, error) List(ctx context.Context, fl *filter.F) ([]*ga.Zone, error) } // NewMockZones returns a new mock for Zones. func NewMockZones(pr ProjectRouter, objs map[meta.Key]*MockZonesObj) *MockZones { mock := &MockZones{ ProjectRouter: pr, Objects: objs, GetError: map[meta.Key]error{}, } return mock } // MockZones is the mock for Zones. type MockZones struct { Lock sync.Mutex ProjectRouter ProjectRouter // Objects maintained by the mock. Objects map[meta.Key]*MockZonesObj // If an entry exists for the given key and operation, then the error // will be returned instead of the operation. GetError map[meta.Key]error ListError *error // xxxHook allow you to intercept the standard processing of the mock in // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. GetHook func(ctx context.Context, key *meta.Key, m *MockZones) (bool, *ga.Zone, error) ListHook func(ctx context.Context, fl *filter.F, m *MockZones) (bool, []*ga.Zone, error) // X is extra state that can be used as part of the mock. Generated code // will not use this field. X interface{} } // Get returns the object from the mock. func (m *MockZones) Get(ctx context.Context, key *meta.Key) (*ga.Zone, error) { if m.GetHook != nil { if intercept, obj, err := m.GetHook(ctx, key, m); intercept { klog.V(5).Infof("MockZones.Get(%v, %s) = %+v, %v", ctx, key, obj, err) return obj, err } } if !key.Valid() { return nil, fmt.Errorf("invalid GCE key (%+v)", key) } m.Lock.Lock() defer m.Lock.Unlock() if err, ok := m.GetError[*key]; ok { klog.V(5).Infof("MockZones.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } if obj, ok := m.Objects[*key]; ok { typedObj := obj.ToGA() klog.V(5).Infof("MockZones.Get(%v, %s) = %+v, nil", ctx, key, typedObj) return typedObj, nil } err := &googleapi.Error{ Code: http.StatusNotFound, Message: fmt.Sprintf("MockZones %v not found", key), } klog.V(5).Infof("MockZones.Get(%v, %s) = nil, %v", ctx, key, err) return nil, err } // List all of the objects in the mock. func (m *MockZones) List(ctx context.Context, fl *filter.F) ([]*ga.Zone, error) { if m.ListHook != nil { if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { klog.V(5).Infof("MockZones.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) return objs, err } } m.Lock.Lock() defer m.Lock.Unlock() if m.ListError != nil { err := *m.ListError klog.V(5).Infof("MockZones.List(%v, %v) = nil, %v", ctx, fl, err) return nil, *m.ListError } var objs []*ga.Zone for _, obj := range m.Objects { if !fl.Match(obj.ToGA()) { continue } objs = append(objs, obj.ToGA()) } klog.V(5).Infof("MockZones.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) return objs, nil } // Obj wraps the object for use in the mock. func (m *MockZones) Obj(o *ga.Zone) *MockZonesObj { return &MockZonesObj{o} } // GCEZones is a simplifying adapter for the GCE Zones. type GCEZones struct { s *Service } // Get the Zone named by key. func (g *GCEZones) Get(ctx context.Context, key *meta.Key) (*ga.Zone, error) { klog.V(5).Infof("GCEZones.Get(%v, %v): called", ctx, key) if !key.Valid() { klog.V(2).Infof("GCEZones.Get(%v, %v): key is invalid (%#v)", ctx, key, key) return nil, fmt.Errorf("invalid GCE key (%#v)", key) } projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Zones") rk := &RateLimitKey{ ProjectID: projectID, Operation: "Get", Version: meta.Version("ga"), Service: "Zones", } klog.V(5).Infof("GCEZones.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { klog.V(4).Infof("GCEZones.Get(%v, %v): RateLimiter error: %v", ctx, key, err) return nil, err } call := g.s.GA.Zones.Get(projectID, key.Name) call.Context(ctx) v, err := call.Do() klog.V(4).Infof("GCEZones.Get(%v, %v) = %+v, %v", ctx, key, v, err) return v, err } // List all Zone objects. func (g *GCEZones) List(ctx context.Context, fl *filter.F) ([]*ga.Zone, error) { klog.V(5).Infof("GCEZones.List(%v, %v) called", ctx, fl) projectID := g.s.ProjectRouter.ProjectID(ctx, "ga", "Zones") rk := &RateLimitKey{ ProjectID: projectID, Operation: "List", Version: meta.Version("ga"), Service: "Zones", } if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { return nil, err } klog.V(5).Infof("GCEZones.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) call := g.s.GA.Zones.List(projectID) if fl != filter.None { call.Filter(fl.String()) } var all []*ga.Zone f := func(l *ga.ZoneList) error { klog.V(5).Infof("GCEZones.List(%v, ..., %v): page %+v", ctx, fl, l) all = append(all, l.Items...) return nil } if err := call.Pages(ctx, f); err != nil { klog.V(4).Infof("GCEZones.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) return nil, err } if klog.V(4).Enabled() { klog.V(4).Infof("GCEZones.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) } else if klog.V(5).Enabled() { var asStr []string for _, o := range all { asStr = append(asStr, fmt.Sprintf("%+v", o)) } klog.V(5).Infof("GCEZones.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) } return all, nil } // NewAddressesResourceID creates a ResourceID for the Addresses resource. func NewAddressesResourceID(project, region, name string) *ResourceID { key := meta.RegionalKey(name, region) return &ResourceID{project, "addresses", key} } // NewBackendServicesResourceID creates a ResourceID for the BackendServices resource. func NewBackendServicesResourceID(project, name string) *ResourceID { key := meta.GlobalKey(name) return &ResourceID{project, "backendServices", key} } // NewDisksResourceID creates a ResourceID for the Disks resource. func NewDisksResourceID(project, zone, name string) *ResourceID { key := meta.ZonalKey(name, zone) return &ResourceID{project, "disks", key} } // NewFirewallsResourceID creates a ResourceID for the Firewalls resource. func NewFirewallsResourceID(project, name string) *ResourceID { key := meta.GlobalKey(name) return &ResourceID{project, "firewalls", key} } // NewForwardingRulesResourceID creates a ResourceID for the ForwardingRules resource. func NewForwardingRulesResourceID(project, region, name string) *ResourceID { key := meta.RegionalKey(name, region) return &ResourceID{project, "forwardingRules", key} } // NewGlobalAddressesResourceID creates a ResourceID for the GlobalAddresses resource. func NewGlobalAddressesResourceID(project, name string) *ResourceID { key := meta.GlobalKey(name) return &ResourceID{project, "addresses", key} } // NewGlobalForwardingRulesResourceID creates a ResourceID for the GlobalForwardingRules resource. func NewGlobalForwardingRulesResourceID(project, name string) *ResourceID { key := meta.GlobalKey(name) return &ResourceID{project, "forwardingRules", key} } // NewHealthChecksResourceID creates a ResourceID for the HealthChecks resource. func NewHealthChecksResourceID(project, name string) *ResourceID { key := meta.GlobalKey(name) return &ResourceID{project, "healthChecks", key} } // NewHttpHealthChecksResourceID creates a ResourceID for the HttpHealthChecks resource. func NewHttpHealthChecksResourceID(project, name string) *ResourceID { key := meta.GlobalKey(name) return &ResourceID{project, "httpHealthChecks", key} } // NewHttpsHealthChecksResourceID creates a ResourceID for the HttpsHealthChecks resource. func NewHttpsHealthChecksResourceID(project, name string) *ResourceID { key := meta.GlobalKey(name) return &ResourceID{project, "httpsHealthChecks", key} } // NewInstanceGroupsResourceID creates a ResourceID for the InstanceGroups resource. func NewInstanceGroupsResourceID(project, zone, name string) *ResourceID { key := meta.ZonalKey(name, zone) return &ResourceID{project, "instanceGroups", key} } // NewInstancesResourceID creates a ResourceID for the Instances resource. func NewInstancesResourceID(project, zone, name string) *ResourceID { key := meta.ZonalKey(name, zone) return &ResourceID{project, "instances", key} } // NewNetworkEndpointGroupsResourceID creates a ResourceID for the NetworkEndpointGroups resource. func NewNetworkEndpointGroupsResourceID(project, zone, name string) *ResourceID { key := meta.ZonalKey(name, zone) return &ResourceID{project, "networkEndpointGroups", key} } // NewNetworksResourceID creates a ResourceID for the Networks resource. func NewNetworksResourceID(project, name string) *ResourceID { key := meta.GlobalKey(name) return &ResourceID{project, "networks", key} } // NewProjectsResourceID creates a ResourceID for the Projects resource. func NewProjectsResourceID(project string) *ResourceID { var key *meta.Key return &ResourceID{project, "projects", key} } // NewRegionBackendServicesResourceID creates a ResourceID for the RegionBackendServices resource. func NewRegionBackendServicesResourceID(project, region, name string) *ResourceID { key := meta.RegionalKey(name, region) return &ResourceID{project, "backendServices", key} } // NewRegionDisksResourceID creates a ResourceID for the RegionDisks resource. func NewRegionDisksResourceID(project, region, name string) *ResourceID { key := meta.RegionalKey(name, region) return &ResourceID{project, "disks", key} } // NewRegionHealthChecksResourceID creates a ResourceID for the RegionHealthChecks resource. func NewRegionHealthChecksResourceID(project, region, name string) *ResourceID { key := meta.RegionalKey(name, region) return &ResourceID{project, "healthChecks", key} } // NewRegionSslCertificatesResourceID creates a ResourceID for the RegionSslCertificates resource. func NewRegionSslCertificatesResourceID(project, region, name string) *ResourceID { key := meta.RegionalKey(name, region) return &ResourceID{project, "sslCertificates", key} } // NewRegionTargetHttpProxiesResourceID creates a ResourceID for the RegionTargetHttpProxies resource. func NewRegionTargetHttpProxiesResourceID(project, region, name string) *ResourceID { key := meta.RegionalKey(name, region) return &ResourceID{project, "targetHttpProxies", key} } // NewRegionTargetHttpsProxiesResourceID creates a ResourceID for the RegionTargetHttpsProxies resource. func NewRegionTargetHttpsProxiesResourceID(project, region, name string) *ResourceID { key := meta.RegionalKey(name, region) return &ResourceID{project, "targetHttpsProxies", key} } // NewRegionUrlMapsResourceID creates a ResourceID for the RegionUrlMaps resource. func NewRegionUrlMapsResourceID(project, region, name string) *ResourceID { key := meta.RegionalKey(name, region) return &ResourceID{project, "urlMaps", key} } // NewRegionsResourceID creates a ResourceID for the Regions resource. func NewRegionsResourceID(project, name string) *ResourceID { key := meta.GlobalKey(name) return &ResourceID{project, "regions", key} } // NewRoutesResourceID creates a ResourceID for the Routes resource. func NewRoutesResourceID(project, name string) *ResourceID { key := meta.GlobalKey(name) return &ResourceID{project, "routes", key} } // NewSecurityPoliciesResourceID creates a ResourceID for the SecurityPolicies resource. func NewSecurityPoliciesResourceID(project, name string) *ResourceID { key := meta.GlobalKey(name) return &ResourceID{project, "securityPolicies", key} } // NewSslCertificatesResourceID creates a ResourceID for the SslCertificates resource. func NewSslCertificatesResourceID(project, name string) *ResourceID { key := meta.GlobalKey(name) return &ResourceID{project, "sslCertificates", key} } // NewSslPoliciesResourceID creates a ResourceID for the SslPolicies resource. func NewSslPoliciesResourceID(project, name string) *ResourceID { key := meta.GlobalKey(name) return &ResourceID{project, "sslPolicies", key} } // NewSubnetworksResourceID creates a ResourceID for the Subnetworks resource. func NewSubnetworksResourceID(project, region, name string) *ResourceID { key := meta.RegionalKey(name, region) return &ResourceID{project, "subnetworks", key} } // NewTargetHttpProxiesResourceID creates a ResourceID for the TargetHttpProxies resource. func NewTargetHttpProxiesResourceID(project, name string) *ResourceID { key := meta.GlobalKey(name) return &ResourceID{project, "targetHttpProxies", key} } // NewTargetHttpsProxiesResourceID creates a ResourceID for the TargetHttpsProxies resource. func NewTargetHttpsProxiesResourceID(project, name string) *ResourceID { key := meta.GlobalKey(name) return &ResourceID{project, "targetHttpsProxies", key} } // NewTargetPoolsResourceID creates a ResourceID for the TargetPools resource. func NewTargetPoolsResourceID(project, region, name string) *ResourceID { key := meta.RegionalKey(name, region) return &ResourceID{project, "targetPools", key} } // NewUrlMapsResourceID creates a ResourceID for the UrlMaps resource. func NewUrlMapsResourceID(project, name string) *ResourceID { key := meta.GlobalKey(name) return &ResourceID{project, "urlMaps", key} } // NewZonesResourceID creates a ResourceID for the Zones resource. func NewZonesResourceID(project, name string) *ResourceID { key := meta.GlobalKey(name) return &ResourceID{project, "zones", key} }