// newCollector creates and initializes instance of collector. Error is returned // when either authentication or endpoint retrieval failed. func newCollector(config Config) (collectorInterface, error) { auth := gophercloud.AuthOptions{ IdentityEndpoint: config.Url, Username: config.User, Password: config.Pass, TenantName: config.Tenant, AllowReauth: true, } self := &collector{ NovaCache: CachedNovas{}, Auth: auth, config: config, } provider, err := openstack.AuthenticatedClient(auth) if err != nil { return nil, fmt.Errorf("cannot authenticate: (%v)", err) } _, err = self.NovaCache.Get(auth, config.Tenant, provider) if err != nil { return nil, err } client, err := openstack.NewIdentityV2(provider, gophercloud.EndpointOpts{}) if err != nil { return nil, fmt.Errorf("retrieving identity service failed: (%v)", err) } self.Keystone = client return self, nil }
func NewOpenStack(config io.Reader) (*OpenStack, error) { var cfg Config err := gcfg.ReadInto(&cfg, config) if err != nil { glog.Warning("Failed to parse openstack configure file: %v", err) return nil, err } provider, err := openstack.AuthenticatedClient(cfg.toAuthOptions()) if err != nil { glog.Warning("Failed to auth openstack: %v", err) return nil, err } identity, err := openstack.NewIdentityV2(provider, gophercloud.EndpointOpts{ Availability: gophercloud.AvailabilityAdmin, }) if err != nil { glog.Warning("Failed to find identity endpoint") return nil, err } network, err := openstack.NewNetworkV2(provider, gophercloud.EndpointOpts{ Region: cfg.Global.Region, }) if err != nil { glog.Warning("Failed to find neutron endpoint: %v", err) return nil, err } os := OpenStack{ identity: identity, network: network, provider: provider, region: cfg.Global.Region, lbOpts: cfg.LoadBalancer, pluginOpts: cfg.Plugin, ExtNetID: cfg.Global.ExtNetID, } // init plugin if cfg.Plugin.PluginName != "" { integrationBriage := "br-int" if cfg.Plugin.IntegrationBridge != "" { integrationBriage = cfg.Plugin.IntegrationBridge } plugin, _ := plugins.GetNetworkPlugin(cfg.Plugin.PluginName) if plugin != nil { plugin.Init(integrationBriage) os.Plugin = plugin } } return &os, nil }
// NewIdentityV2UnauthenticatedClient returns an unauthenticated *ServiceClient // for the OpenStack Identity v2 API. An error will be returned if // authentication or client creation was not possible. func NewIdentityV2UnauthenticatedClient() (*gophercloud.ServiceClient, error) { ao, err := openstack.AuthOptionsFromEnv() if err != nil { return nil, err } client, err := openstack.NewClient(ao.IdentityEndpoint) if err != nil { return nil, err } return openstack.NewIdentityV2(client, gophercloud.EndpointOpts{}) }
// NewIdentityV2Client returns a *ServiceClient for making calls // to the OpenStack Identity v2 API. An error will be returned // if authentication or client creation was not possible. func NewIdentityV2Client() (*gophercloud.ServiceClient, error) { ao, err := openstack.AuthOptionsFromEnv() if err != nil { return nil, err } client, err := openstack.AuthenticatedClient(ao) if err != nil { return nil, err } return openstack.NewIdentityV2(client, gophercloud.EndpointOpts{ Region: os.Getenv("OS_REGION_NAME"), }) }