// CreateGceManager constructs gceManager object. func CreateGceManager(migs []*config.MigConfig, configReader io.Reader) (*GceManager, error) { // Create Google Compute Engine token. tokenSource := google.ComputeTokenSource("") if configReader != nil { var cfg provider_gce.Config if err := gcfg.ReadInto(&cfg, configReader); err != nil { glog.Errorf("Couldn't read config: %v", err) return nil, err } if cfg.Global.TokenURL == "" { glog.Warning("Empty tokenUrl in cloud config") } else { glog.Infof("Using TokenSource from config %#v", tokenSource) tokenSource = provider_gce.NewAltTokenSource(cfg.Global.TokenURL, cfg.Global.TokenBody) } } else { glog.Infof("Using default TokenSource %#v", tokenSource) } // Create Google Compute Engine service. client := oauth2.NewClient(oauth2.NoContext, tokenSource) gceService, err := gce.New(client) if err != nil { return nil, err } migInfos := make([]*migInformation, 0, len(migs)) for _, mig := range migs { migInfos = append(migInfos, &migInformation{ config: mig, }) } manager := &GceManager{ migs: migInfos, service: gceService, migCache: map[config.InstanceConfig]*config.MigConfig{}, } go wait.Forever(func() { manager.regenerateCacheIgnoreError() }, time.Hour) return manager, nil }
// newCloudDns creates a new instance of a Google Cloud DNS Interface. func newCloudDns(config io.Reader) (*Interface, error) { projectID, _ := metadata.ProjectID() // On error we get an empty string, which is fine for now. var tokenSource oauth2.TokenSource // Possibly override defaults with config below if config != nil { var cfg Config if err := gcfg.ReadInto(&cfg, config); err != nil { glog.Errorf("Couldn't read config: %v", err) return nil, err } glog.Infof("Using Google Cloud DNS provider config %+v", cfg) if cfg.Global.ProjectID != "" { projectID = cfg.Global.ProjectID } if cfg.Global.TokenURL != "" { tokenSource = gce.NewAltTokenSource(cfg.Global.TokenURL, cfg.Global.TokenBody) } } return CreateInterface(projectID, tokenSource) }
// CreateGceManager constructs gceManager object. func CreateGceManager(configReader io.Reader) (*GceManager, error) { // Create Google Compute Engine token. tokenSource := google.ComputeTokenSource("") if configReader != nil { var cfg provider_gce.Config if err := gcfg.ReadInto(&cfg, configReader); err != nil { glog.Errorf("Couldn't read config: %v", err) return nil, err } if cfg.Global.TokenURL == "" { glog.Warning("Empty tokenUrl in cloud config") } else { glog.Infof("Using TokenSource from config %#v", tokenSource) tokenSource = provider_gce.NewAltTokenSource(cfg.Global.TokenURL, cfg.Global.TokenBody) } } else { glog.Infof("Using default TokenSource %#v", tokenSource) } // Create Google Compute Engine service. client := oauth2.NewClient(oauth2.NoContext, tokenSource) gceService, err := gce.New(client) if err != nil { return nil, err } manager := &GceManager{ migs: make([]*migInformation, 0), service: gceService, migCache: make(map[GceRef]*Mig), } go wait.Forever(func() { manager.cacheMutex.Lock() defer manager.cacheMutex.Unlock() if err := manager.regenerateCache(); err != nil { glog.Errorf("Error while regenerating Mig cache: %v", err) } }, time.Hour) return manager, nil }