func (g *Cloud) ComputeServices() *Services {
	return &Services{g.service, g.serviceAlpha, g.serviceBeta}
}
ComputeServices returns access to the internal compute services.
package gce
import (
	"context"
	"fmt"
	"io"
	"net/http"
	"runtime"
	"strconv"
	"strings"
	"sync"
	"time"
	gcfg "gopkg.in/gcfg.v1"
	"cloud.google.com/go/compute/metadata"
	"golang.org/x/oauth2"
	"golang.org/x/oauth2/google"
	computealpha "google.golang.org/api/compute/v0.alpha"
	computebeta "google.golang.org/api/compute/v0.beta"
	compute "google.golang.org/api/compute/v1"
	container "google.golang.org/api/container/v1"
	"google.golang.org/api/option"
	"github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud"
	"k8s.io/api/core/v1"
	"k8s.io/apimachinery/pkg/util/sets"
	"k8s.io/apimachinery/pkg/util/wait"
	"k8s.io/client-go/informers"
	clientset "k8s.io/client-go/kubernetes"
	"k8s.io/client-go/kubernetes/scheme"
	v1core "k8s.io/client-go/kubernetes/typed/core/v1"
	"k8s.io/client-go/pkg/version"
	"k8s.io/client-go/tools/cache"
	"k8s.io/client-go/tools/record"
	"k8s.io/client-go/util/flowcontrol"
	cloudprovider "k8s.io/cloud-provider"
	"k8s.io/klog/v2"
)
const (
	ProviderName = "gce"
	k8sNodeRouteTag = "k8s-node-route"
	gceAffinityTypeNone = "NONE"
	gceAffinityTypeClientIP = "CLIENT_IP"
	operationPollInterval           = time.Second
	maxTargetPoolCreateInstances    = 200
	maxInstancesPerTargetPoolUpdate = 1000
	gceHcCheckIntervalSeconds = int64(8)
	gceHcTimeoutSeconds       = int64(1)
	gceHcHealthyThreshold = int64(1)
	gceHcUnhealthyThreshold = int64(3)
	gceComputeAPIEndpoint     = "https://www.googleapis.com/compute/v1/"
	gceComputeAPIEndpointBeta = "https://www.googleapis.com/compute/beta/"
)
var _ cloudprovider.Interface = (*Cloud)(nil)
var _ cloudprovider.Instances = (*Cloud)(nil)
var _ cloudprovider.LoadBalancer = (*Cloud)(nil)
var _ cloudprovider.Routes = (*Cloud)(nil)
var _ cloudprovider.Zones = (*Cloud)(nil)
var _ cloudprovider.PVLabeler = (*Cloud)(nil)
var _ cloudprovider.Clusters = (*Cloud)(nil)
type Cloud struct {
	ClusterID ClusterID
	subnetworkURLAndIsLegacyNetworkInitializer sync.Once
	service          *compute.Service
	serviceBeta      *computebeta.Service
	serviceAlpha     *computealpha.Service
	containerService *container.Service
	tpuService       *tpuService
	client           clientset.Interface
	clientBuilder    cloudprovider.ControllerClientBuilder
	eventBroadcaster record.EventBroadcaster
	eventRecorder    record.EventRecorder
	projectID        string
	region           string
	regional         bool
	localZone        string  
	managedZones []string
	networkURL   string
	unsafeIsLegacyNetwork bool
	unsafeSubnetworkURL string
	secondaryRangeName       string
	networkProjectID         string
	onXPN                    bool
	nodeTags                 []string     
	lastComputedNodeTags     []string     
	lastKnownNodeNames       sets.String  
	computeNodeTagLock       sync.Mutex   
	nodeInstancePrefix       string       
	useMetadataServer        bool
	operationPollRateLimiter flowcontrol.RateLimiter
	manager                  diskServiceManager
	nodeZonesLock sync.Mutex
	nodeZones          map[string]sets.String
	nodeInformerSynced cache.InformerSynced
	sharedResourceLock sync.Mutex
	AlphaFeatureGate *AlphaFeatureGate
	c cloud.Cloud
	s *cloud.Service
	metricsCollector loadbalancerMetricsCollector
	projectsBasePath string
}
type ConfigGlobal struct {
	TokenURL  string `gcfg:"token-url"`
	TokenBody string `gcfg:"token-body" datapolicy:"token"`
	ProjectID string `gcfg:"project-id"`
	NetworkProjectID string `gcfg:"network-project-id"`
	NetworkName      string `gcfg:"network-name"`
	SubnetworkName   string `gcfg:"subnetwork-name"`
	SecondaryRangeName string   `gcfg:"secondary-range-name"`
	NodeTags           []string `gcfg:"node-tags"`
	NodeInstancePrefix string   `gcfg:"node-instance-prefix"`
	Regional           bool     `gcfg:"regional"`
	Multizone          bool     `gcfg:"multizone"`
	APIEndpoint string `gcfg:"api-endpoint"`
	ContainerAPIEndpoint string `gcfg:"container-api-endpoint"`
	LocalZone string `gcfg:"local-zone"`
	AlphaFeatures []string `gcfg:"alpha-features"`
}
type ConfigFile struct {
	Global ConfigGlobal `gcfg:"global"`
}
type CloudConfig struct {
	APIEndpoint          string
	ContainerAPIEndpoint string
	ProjectID            string
	NetworkProjectID     string
	Region               string
	Regional             bool
	Zone                 string
	ManagedZones         []string
	NetworkName          string
	NetworkURL           string
	SubnetworkName       string
	SubnetworkURL        string
	SecondaryRangeName string
	NodeTags           []string
	NodeInstancePrefix string
	TokenSource        oauth2.TokenSource
	UseMetadataServer  bool
	AlphaFeatureGate   *AlphaFeatureGate
}
func init() {
	cloudprovider.RegisterCloudProvider(
		ProviderName,
		func(config io.Reader) (cloudprovider.Interface, error) {
			return newGCECloud(config)
		})
}
type Services struct {
	GA    *compute.Service
	Alpha *computealpha.Service
	Beta  *computebeta.Service
}