use auto reauth when access token is expired

This commit is contained in:
Masahiro Sano 2015-04-18 18:41:54 +09:00
parent ff59f316f6
commit b2d68c79b7

View File

@ -76,7 +76,6 @@ type LoadBalancerOpts struct {
// OpenStack is an implementation of cloud provider Interface for OpenStack. // OpenStack is an implementation of cloud provider Interface for OpenStack.
type OpenStack struct { type OpenStack struct {
provider *gophercloud.ProviderClient provider *gophercloud.ProviderClient
authOpts gophercloud.AuthOptions
region string region string
lbOpts LoadBalancerOpts lbOpts LoadBalancerOpts
} }
@ -117,11 +116,7 @@ func (cfg Config) toAuthOptions() gophercloud.AuthOptions {
TenantID: cfg.Global.TenantId, TenantID: cfg.Global.TenantId,
TenantName: cfg.Global.TenantName, TenantName: cfg.Global.TenantName,
// Persistent service, so we need to be able to renew // Persistent service, so we need to be able to renew tokens.
// tokens.
// (gophercloud doesn't appear to actually reauth yet,
// hence the explicit openstack.Authenticate() calls
// below)
AllowReauth: true, AllowReauth: true,
} }
} }
@ -138,15 +133,13 @@ func readConfig(config io.Reader) (Config, error) {
} }
func newOpenStack(cfg Config) (*OpenStack, error) { func newOpenStack(cfg Config) (*OpenStack, error) {
authOpts := cfg.toAuthOptions() provider, err := openstack.AuthenticatedClient(cfg.toAuthOptions())
provider, err := openstack.AuthenticatedClient(authOpts)
if err != nil { if err != nil {
return nil, err return nil, err
} }
os := OpenStack{ os := OpenStack{
provider: provider, provider: provider,
authOpts: authOpts,
region: cfg.Global.Region, region: cfg.Global.Region,
lbOpts: cfg.LoadBalancer, lbOpts: cfg.LoadBalancer,
} }
@ -162,11 +155,6 @@ type Instances struct {
func (os *OpenStack) Instances() (cloudprovider.Instances, bool) { func (os *OpenStack) Instances() (cloudprovider.Instances, bool) {
glog.V(4).Info("openstack.Instances() called") glog.V(4).Info("openstack.Instances() called")
if err := openstack.Authenticate(os.provider, os.authOpts); err != nil {
glog.Warningf("Failed to reauthenticate: %v", err)
return nil, false
}
compute, err := openstack.NewComputeV2(os.provider, gophercloud.EndpointOpts{ compute, err := openstack.NewComputeV2(os.provider, gophercloud.EndpointOpts{
Region: os.region, Region: os.region,
}) })
@ -413,11 +401,6 @@ type LoadBalancer struct {
func (os *OpenStack) TCPLoadBalancer() (cloudprovider.TCPLoadBalancer, bool) { func (os *OpenStack) TCPLoadBalancer() (cloudprovider.TCPLoadBalancer, bool) {
glog.V(4).Info("openstack.TCPLoadBalancer() called") glog.V(4).Info("openstack.TCPLoadBalancer() called")
if err := openstack.Authenticate(os.provider, os.authOpts); err != nil {
glog.Warningf("Failed to reauthenticate: %v", err)
return nil, false
}
// TODO: Search for and support Rackspace loadbalancer API, and others. // TODO: Search for and support Rackspace loadbalancer API, and others.
network, err := openstack.NewNetworkV2(os.provider, gophercloud.EndpointOpts{ network, err := openstack.NewNetworkV2(os.provider, gophercloud.EndpointOpts{
Region: os.region, Region: os.region,