provider/google.go
func NewGoogleProvider(project string, domainFilter DomainFilter, zoneIDFilter ZoneIDFilter, dryRun bool) (*GoogleProvider, error) {
	gcloud, err := google.DefaultClient(context.TODO(), dns.NdevClouddnsReadwriteScope)
	if err != nil {
		return nil, err
	}

	gcloud = instrumented_http.NewClient(gcloud, &instrumented_http.Callbacks{
		PathProcessor: func(path string) string {
			parts := strings.Split(path, "/")
			return parts[len(parts)-1]
		},
	})

	dnsClient, err := dns.New(gcloud)
	if err != nil {
		return nil, err
	}

	if project == "" {
		mProject, mErr := metadata.ProjectID()
		if mErr == nil {
			log.Infof("Google project auto-detected: %s", mProject)
			project = mProject
		}
	}

	provider := &GoogleProvider{
		project:                  project,
		dryRun:                   dryRun,
		domainFilter:             domainFilter,
		zoneIDFilter:             zoneIDFilter,
		resourceRecordSetsClient: resourceRecordSetsService{dnsClient.ResourceRecordSets},
		managedZonesClient:       managedZonesService{dnsClient.ManagedZones},
		changesClient:            changesService{dnsClient.Changes},
	}

	return provider, nil
}
func NewGoogleProvider(project string, domainFilter DomainFilter, zoneIDFilter ZoneIDFilter, dryRun bool) (*GoogleProvider, error) {
	gcloud, err := google.DefaultClient(context.TODO(), dns.NdevClouddnsReadwriteScope)
	if err != nil {
		return nil, err
	}

	gcloud = instrumented_http.NewClient(gcloud, &instrumented_http.Callbacks{
		PathProcessor: func(path string) string {
			parts := strings.Split(path, "/")
			return parts[len(parts)-1]
		},
	})

	dnsClient, err := dns.New(gcloud)
	if err != nil {
		return nil, err
	}

	if project == "" {
		mProject, mErr := metadata.ProjectID()
		if mErr == nil {
			log.Infof("Google project auto-detected: %s", mProject)
			project = mProject
		}
	}

	provider := &GoogleProvider{
		project:                  project,
		dryRun:                   dryRun,
		domainFilter:             domainFilter,
		zoneIDFilter:             zoneIDFilter,
		resourceRecordSetsClient: resourceRecordSetsService{dnsClient.ResourceRecordSets},
		managedZonesClient:       managedZonesService{dnsClient.ManagedZones},
		changesClient:            changesService{dnsClient.Changes},
	}

	return provider, nil
}
func NewGoogleProvider ( project string , domainFilter DomainFilter , zoneIDFilter ZoneIDFilter , dryRun bool ) ( * GoogleProvider , error ) { gcloud , err := google . DefaultClient ( context . TODO ( ) , dns . NdevClouddnsReadwriteScope ) if err != nil { return nil , err } gcloud = instrumented_http . NewClient ( gcloud , & instrumented_http . Callbacks { PathProcessor : func ( path string ) string { parts := strings . Split ( path , " " ) return parts [ len ( parts ) - 1 ] } , } ) dnsClient , err := dns . New ( gcloud ) if err != nil { return nil , err } if project == " " { mProject , mErr := metadata . ProjectID ( ) if mErr == nil { log . Infof ( " " , mProject ) project = mProject } } provider := & GoogleProvider { project : project , dryRun : dryRun , domainFilter : domainFilter , zoneIDFilter : zoneIDFilter , resourceRecordSetsClient : resourceRecordSetsService { dnsClient . ResourceRecordSets } , managedZonesClient : managedZonesService { dnsClient . ManagedZones } , changesClient : changesService { dnsClient . Changes } , } return provider , nil }
// NewGoogleProvider initializes a new Google CloudDNS based Provider.
NewGoogleProvider initializes a new Google CloudDNS based Provider .