Skip to content
This repository was archived by the owner on Mar 22, 2018. It is now read-only.

Commit a98da2f

Browse files
committed
Add context to all relevant cloud APIs
This adds context to all the relevant cloud provider interface signatures. Callers of those APIs are currently satisfied using context.TODO(). There will be follow on PRs to push the context through the stack. For an idea of the full scope of this change please look at PR #58532.
1 parent aba5950 commit a98da2f

9 files changed

Lines changed: 45 additions & 36 deletions

File tree

pkg/cloudprovider/providers/openstack/openstack.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ limitations under the License.
1717
package openstack
1818

1919
import (
20+
"context"
2021
"crypto/tls"
2122
"errors"
2223
"fmt"
@@ -606,7 +607,7 @@ func (os *OpenStack) Zones() (cloudprovider.Zones, bool) {
606607
}
607608

608609
// GetZone returns the current zone
609-
func (os *OpenStack) GetZone() (cloudprovider.Zone, error) {
610+
func (os *OpenStack) GetZone(ctx context.Context) (cloudprovider.Zone, error) {
610611
md, err := getMetadata(os.metadataOpts.SearchOrder)
611612
if err != nil {
612613
return cloudprovider.Zone{}, err
@@ -623,7 +624,7 @@ func (os *OpenStack) GetZone() (cloudprovider.Zone, error) {
623624
// GetZoneByProviderID implements Zones.GetZoneByProviderID
624625
// This is particularly useful in external cloud providers where the kubelet
625626
// does not initialize node data.
626-
func (os *OpenStack) GetZoneByProviderID(providerID string) (cloudprovider.Zone, error) {
627+
func (os *OpenStack) GetZoneByProviderID(ctx context.Context, providerID string) (cloudprovider.Zone, error) {
627628
instanceID, err := instanceIDFromProviderID(providerID)
628629
if err != nil {
629630
return cloudprovider.Zone{}, err
@@ -650,7 +651,7 @@ func (os *OpenStack) GetZoneByProviderID(providerID string) (cloudprovider.Zone,
650651
// GetZoneByNodeName implements Zones.GetZoneByNodeName
651652
// This is particularly useful in external cloud providers where the kubelet
652653
// does not initialize node data.
653-
func (os *OpenStack) GetZoneByNodeName(nodeName types.NodeName) (cloudprovider.Zone, error) {
654+
func (os *OpenStack) GetZoneByNodeName(ctx context.Context, nodeName types.NodeName) (cloudprovider.Zone, error) {
654655
compute, err := os.NewComputeV2()
655656
if err != nil {
656657
return cloudprovider.Zone{}, err

pkg/cloudprovider/providers/openstack/openstack_instances.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ limitations under the License.
1717
package openstack
1818

1919
import (
20+
"context"
2021
"fmt"
2122
"regexp"
2223

@@ -54,7 +55,7 @@ func (os *OpenStack) Instances() (cloudprovider.Instances, bool) {
5455

5556
// CurrentNodeName implements Instances.CurrentNodeName
5657
// Note this is *not* necessarily the same as hostname.
57-
func (i *Instances) CurrentNodeName(hostname string) (types.NodeName, error) {
58+
func (i *Instances) CurrentNodeName(ctx context.Context, hostname string) (types.NodeName, error) {
5859
md, err := getMetadata(i.opts.SearchOrder)
5960
if err != nil {
6061
return "", err
@@ -63,12 +64,12 @@ func (i *Instances) CurrentNodeName(hostname string) (types.NodeName, error) {
6364
}
6465

6566
// AddSSHKeyToAllInstances is not implemented for OpenStack
66-
func (i *Instances) AddSSHKeyToAllInstances(user string, keyData []byte) error {
67+
func (i *Instances) AddSSHKeyToAllInstances(ctx context.Context, user string, keyData []byte) error {
6768
return cloudprovider.NotImplemented
6869
}
6970

7071
// NodeAddresses implements Instances.NodeAddresses
71-
func (i *Instances) NodeAddresses(name types.NodeName) ([]v1.NodeAddress, error) {
72+
func (i *Instances) NodeAddresses(ctx context.Context, name types.NodeName) ([]v1.NodeAddress, error) {
7273
glog.V(4).Infof("NodeAddresses(%v) called", name)
7374

7475
addrs, err := getAddressesByName(i.compute, name)
@@ -83,7 +84,7 @@ func (i *Instances) NodeAddresses(name types.NodeName) ([]v1.NodeAddress, error)
8384
// NodeAddressesByProviderID returns the node addresses of an instances with the specified unique providerID
8485
// This method will not be called from the node that is requesting this ID. i.e. metadata service
8586
// and other local methods cannot be used here
86-
func (i *Instances) NodeAddressesByProviderID(providerID string) ([]v1.NodeAddress, error) {
87+
func (i *Instances) NodeAddressesByProviderID(ctx context.Context, providerID string) ([]v1.NodeAddress, error) {
8788
instanceID, err := instanceIDFromProviderID(providerID)
8889

8990
if err != nil {
@@ -105,7 +106,7 @@ func (i *Instances) NodeAddressesByProviderID(providerID string) ([]v1.NodeAddre
105106
}
106107

107108
// ExternalID returns the cloud provider ID of the specified instance (deprecated).
108-
func (i *Instances) ExternalID(name types.NodeName) (string, error) {
109+
func (i *Instances) ExternalID(ctx context.Context, name types.NodeName) (string, error) {
109110
srv, err := getServerByName(i.compute, name, true)
110111
if err != nil {
111112
if err == ErrNotFound {
@@ -118,7 +119,7 @@ func (i *Instances) ExternalID(name types.NodeName) (string, error) {
118119

119120
// InstanceExistsByProviderID returns true if the instance with the given provider id still exists and is running.
120121
// If false is returned with no error, the instance will be immediately deleted by the cloud controller manager.
121-
func (i *Instances) InstanceExistsByProviderID(providerID string) (bool, error) {
122+
func (i *Instances) InstanceExistsByProviderID(ctx context.Context, providerID string) (bool, error) {
122123
instanceID, err := instanceIDFromProviderID(providerID)
123124
if err != nil {
124125
return false, err
@@ -153,7 +154,7 @@ func (os *OpenStack) InstanceID() (string, error) {
153154
}
154155

155156
// InstanceID returns the cloud provider ID of the specified instance.
156-
func (i *Instances) InstanceID(name types.NodeName) (string, error) {
157+
func (i *Instances) InstanceID(ctx context.Context, name types.NodeName) (string, error) {
157158
srv, err := getServerByName(i.compute, name, true)
158159
if err != nil {
159160
if err == ErrNotFound {
@@ -169,7 +170,7 @@ func (i *Instances) InstanceID(name types.NodeName) (string, error) {
169170
// InstanceTypeByProviderID returns the cloudprovider instance type of the node with the specified unique providerID
170171
// This method will not be called from the node that is requesting this ID. i.e. metadata service
171172
// and other local methods cannot be used here
172-
func (i *Instances) InstanceTypeByProviderID(providerID string) (string, error) {
173+
func (i *Instances) InstanceTypeByProviderID(ctx context.Context, providerID string) (string, error) {
173174
instanceID, err := instanceIDFromProviderID(providerID)
174175

175176
if err != nil {
@@ -186,7 +187,7 @@ func (i *Instances) InstanceTypeByProviderID(providerID string) (string, error)
186187
}
187188

188189
// InstanceType returns the type of the specified instance.
189-
func (i *Instances) InstanceType(name types.NodeName) (string, error) {
190+
func (i *Instances) InstanceType(ctx context.Context, name types.NodeName) (string, error) {
190191
srv, err := getServerByName(i.compute, name, true)
191192

192193
if err != nil {

pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ limitations under the License.
1717
package openstack
1818

1919
import (
20+
"context"
2021
"fmt"
2122
"net"
2223
"reflect"
@@ -457,7 +458,7 @@ func (lbaas *LbaasV2) createLoadBalancer(service *v1.Service, name string, inter
457458
}
458459

459460
// GetLoadBalancer returns whether the specified load balancer exists and its status
460-
func (lbaas *LbaasV2) GetLoadBalancer(clusterName string, service *v1.Service) (*v1.LoadBalancerStatus, bool, error) {
461+
func (lbaas *LbaasV2) GetLoadBalancer(ctx context.Context, clusterName string, service *v1.Service) (*v1.LoadBalancerStatus, bool, error) {
461462
loadBalancerName := cloudprovider.GetLoadBalancerName(service)
462463
loadbalancer, err := getLoadbalancerByName(lbaas.lb, loadBalancerName)
463464
if err == ErrNotFound {
@@ -635,7 +636,7 @@ func getFloatingNetworkIDForLB(client *gophercloud.ServiceClient) (string, error
635636
// each region.
636637

637638
// EnsureLoadBalancer creates a new load balancer 'name', or updates the existing one.
638-
func (lbaas *LbaasV2) EnsureLoadBalancer(clusterName string, apiService *v1.Service, nodes []*v1.Node) (*v1.LoadBalancerStatus, error) {
639+
func (lbaas *LbaasV2) EnsureLoadBalancer(ctx context.Context, clusterName string, apiService *v1.Service, nodes []*v1.Node) (*v1.LoadBalancerStatus, error) {
639640
glog.V(4).Infof("EnsureLoadBalancer(%v, %v, %v, %v, %v, %v, %v)", clusterName, apiService.Namespace, apiService.Name, apiService.Spec.LoadBalancerIP, apiService.Spec.Ports, nodes, apiService.Annotations)
640641

641642
if len(nodes) == 0 {
@@ -972,7 +973,7 @@ func (lbaas *LbaasV2) EnsureLoadBalancer(clusterName string, apiService *v1.Serv
972973
err := lbaas.ensureSecurityGroup(clusterName, apiService, nodes, loadbalancer)
973974
if err != nil {
974975
// cleanup what was created so far
975-
_ = lbaas.EnsureLoadBalancerDeleted(clusterName, apiService)
976+
_ = lbaas.EnsureLoadBalancerDeleted(ctx, clusterName, apiService)
976977
return status, err
977978
}
978979
}
@@ -1153,7 +1154,7 @@ func (lbaas *LbaasV2) ensureSecurityGroup(clusterName string, apiService *v1.Ser
11531154
}
11541155

11551156
// UpdateLoadBalancer updates hosts under the specified load balancer.
1156-
func (lbaas *LbaasV2) UpdateLoadBalancer(clusterName string, service *v1.Service, nodes []*v1.Node) error {
1157+
func (lbaas *LbaasV2) UpdateLoadBalancer(ctx context.Context, clusterName string, service *v1.Service, nodes []*v1.Node) error {
11571158
loadBalancerName := cloudprovider.GetLoadBalancerName(service)
11581159
glog.V(4).Infof("UpdateLoadBalancer(%v, %v, %v)", clusterName, loadBalancerName, nodes)
11591160

@@ -1374,7 +1375,7 @@ func (lbaas *LbaasV2) updateSecurityGroup(clusterName string, apiService *v1.Ser
13741375
}
13751376

13761377
// EnsureLoadBalancerDeleted deletes the specified load balancer
1377-
func (lbaas *LbaasV2) EnsureLoadBalancerDeleted(clusterName string, service *v1.Service) error {
1378+
func (lbaas *LbaasV2) EnsureLoadBalancerDeleted(ctx context.Context, clusterName string, service *v1.Service) error {
13781379
loadBalancerName := cloudprovider.GetLoadBalancerName(service)
13791380
glog.V(4).Infof("EnsureLoadBalancerDeleted(%v, %v)", clusterName, loadBalancerName)
13801381

pkg/cloudprovider/providers/openstack/openstack_routes.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ limitations under the License.
1717
package openstack
1818

1919
import (
20+
"context"
2021
"errors"
2122

2223
"github.com/gophercloud/gophercloud"
@@ -52,7 +53,7 @@ func NewRoutes(compute *gophercloud.ServiceClient, network *gophercloud.ServiceC
5253
}
5354

5455
// ListRoutes lists all managed routes that belong to the specified clusterName
55-
func (r *Routes) ListRoutes(clusterName string) ([]*cloudprovider.Route, error) {
56+
func (r *Routes) ListRoutes(ctx context.Context, clusterName string) ([]*cloudprovider.Route, error) {
5657
glog.V(4).Infof("ListRoutes(%v)", clusterName)
5758

5859
nodeNamesByAddr := make(map[string]types.NodeName)
@@ -140,7 +141,7 @@ func updateAllowedAddressPairs(network *gophercloud.ServiceClient, port *neutron
140141
}
141142

142143
// CreateRoute creates the described managed route
143-
func (r *Routes) CreateRoute(clusterName string, nameHint string, route *cloudprovider.Route) error {
144+
func (r *Routes) CreateRoute(ctx context.Context, clusterName string, nameHint string, route *cloudprovider.Route) error {
144145
glog.V(4).Infof("CreateRoute(%v, %v, %v)", clusterName, nameHint, route)
145146

146147
onFailure := newCaller()
@@ -213,7 +214,7 @@ func (r *Routes) CreateRoute(clusterName string, nameHint string, route *cloudpr
213214
}
214215

215216
// DeleteRoute deletes the specified managed route
216-
func (r *Routes) DeleteRoute(clusterName string, route *cloudprovider.Route) error {
217+
func (r *Routes) DeleteRoute(ctx context.Context, clusterName string, route *cloudprovider.Route) error {
217218
glog.V(4).Infof("DeleteRoute(%v, %v)", clusterName, route)
218219

219220
onFailure := newCaller()

pkg/cloudprovider/providers/openstack/openstack_routes_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ limitations under the License.
1717
package openstack
1818

1919
import (
20+
"context"
2021
"net"
2122
"testing"
2223

@@ -52,12 +53,12 @@ func TestRoutes(t *testing.T) {
5253
DestinationCIDR: "10.164.2.0/24",
5354
TargetNode: types.NodeName(servername),
5455
}
55-
err = r.CreateRoute(clusterName, "myhint", &newroute)
56+
err = r.CreateRoute(context.TODO(), clusterName, "myhint", &newroute)
5657
if err != nil {
5758
t.Fatalf("CreateRoute error: %v", err)
5859
}
5960

60-
routelist, err := r.ListRoutes(clusterName)
61+
routelist, err := r.ListRoutes(context.TODO(), clusterName)
6162
if err != nil {
6263
t.Fatalf("ListRoutes() error: %v", err)
6364
}
@@ -70,7 +71,7 @@ func TestRoutes(t *testing.T) {
7071
t.Logf("%s via %s", cidr, route.TargetNode)
7172
}
7273

73-
err = r.DeleteRoute(clusterName, &newroute)
74+
err = r.DeleteRoute(context.TODO(), clusterName, &newroute)
7475
if err != nil {
7576
t.Fatalf("DeleteRoute error: %v", err)
7677
}

pkg/cloudprovider/providers/openstack/openstack_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ limitations under the License.
1717
package openstack
1818

1919
import (
20+
"context"
2021
"fmt"
2122
"os"
2223
"reflect"
@@ -492,7 +493,7 @@ func TestLoadBalancer(t *testing.T) {
492493
t.Fatalf("LoadBalancer() returned false - perhaps your stack doesn't support Neutron?")
493494
}
494495

495-
_, exists, err := lb.GetLoadBalancer(testClusterName, &v1.Service{ObjectMeta: metav1.ObjectMeta{Name: "noexist"}})
496+
_, exists, err := lb.GetLoadBalancer(context.TODO(), testClusterName, &v1.Service{ObjectMeta: metav1.ObjectMeta{Name: "noexist"}})
496497
if err != nil {
497498
t.Fatalf("GetLoadBalancer(\"noexist\") returned error: %s", err)
498499
}
@@ -518,7 +519,7 @@ func TestZones(t *testing.T) {
518519
t.Fatalf("Zones() returned false")
519520
}
520521

521-
zone, err := z.GetZone()
522+
zone, err := z.GetZone(context.TODO())
522523
if err != nil {
523524
t.Fatalf("GetZone() returned error: %s", err)
524525
}

pkg/cloudprovider/providers/openstack/openstack_volumes.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ limitations under the License.
1717
package openstack
1818

1919
import (
20+
"context"
2021
"errors"
2122
"fmt"
2223
"io/ioutil"
@@ -691,7 +692,7 @@ func (os *OpenStack) ShouldTrustDevicePath() bool {
691692
}
692693

693694
// GetLabelsForVolume implements PVLabeler.GetLabelsForVolume
694-
func (os *OpenStack) GetLabelsForVolume(pv *v1.PersistentVolume) (map[string]string, error) {
695+
func (os *OpenStack) GetLabelsForVolume(ctx context.Context, pv *v1.PersistentVolume) (map[string]string, error) {
695696
// Ignore any volumes that are being provisioned
696697
if pv.Spec.Cinder.VolumeID == k8s_volume.ProvisionedVolumeName {
697698
return nil, nil

pkg/volume/cinder/attacher.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ limitations under the License.
1717
package cinder
1818

1919
import (
20+
"context"
2021
"fmt"
2122
"os"
2223
"path"
@@ -401,7 +402,7 @@ func (attacher *cinderDiskAttacher) nodeInstanceID(nodeName types.NodeName) (str
401402
if !res {
402403
return "", fmt.Errorf("failed to list openstack instances")
403404
}
404-
instanceID, err := instances.InstanceID(nodeName)
405+
instanceID, err := instances.InstanceID(context.TODO(), nodeName)
405406
if err != nil {
406407
return "", err
407408
}

pkg/volume/cinder/attacher_test.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ limitations under the License.
1717
package cinder
1818

1919
import (
20+
"context"
2021
"errors"
2122
"reflect"
2223
"testing"
@@ -703,42 +704,42 @@ type instances struct {
703704
instanceID string
704705
}
705706

706-
func (instances *instances) NodeAddresses(name types.NodeName) ([]v1.NodeAddress, error) {
707+
func (instances *instances) NodeAddresses(ctx context.Context, name types.NodeName) ([]v1.NodeAddress, error) {
707708
return []v1.NodeAddress{}, errors.New("Not implemented")
708709
}
709710

710-
func (instances *instances) NodeAddressesByProviderID(providerID string) ([]v1.NodeAddress, error) {
711+
func (instances *instances) NodeAddressesByProviderID(ctx context.Context, providerID string) ([]v1.NodeAddress, error) {
711712
return []v1.NodeAddress{}, errors.New("Not implemented")
712713
}
713714

714-
func (instances *instances) ExternalID(name types.NodeName) (string, error) {
715+
func (instances *instances) ExternalID(ctx context.Context, name types.NodeName) (string, error) {
715716
return "", errors.New("Not implemented")
716717
}
717718

718-
func (instances *instances) InstanceID(name types.NodeName) (string, error) {
719+
func (instances *instances) InstanceID(ctx context.Context, name types.NodeName) (string, error) {
719720
return instances.instanceID, nil
720721
}
721722

722-
func (instances *instances) InstanceType(name types.NodeName) (string, error) {
723+
func (instances *instances) InstanceType(ctx context.Context, name types.NodeName) (string, error) {
723724
return "", errors.New("Not implemented")
724725
}
725726

726-
func (instances *instances) InstanceTypeByProviderID(providerID string) (string, error) {
727+
func (instances *instances) InstanceTypeByProviderID(ctx context.Context, providerID string) (string, error) {
727728
return "", errors.New("Not implemented")
728729
}
729730

730-
func (instances *instances) InstanceExistsByProviderID(providerID string) (bool, error) {
731+
func (instances *instances) InstanceExistsByProviderID(ctx context.Context, providerID string) (bool, error) {
731732
return false, errors.New("unimplemented")
732733
}
733734

734735
func (instances *instances) List(filter string) ([]types.NodeName, error) {
735736
return []types.NodeName{}, errors.New("Not implemented")
736737
}
737738

738-
func (instances *instances) AddSSHKeyToAllInstances(user string, keyData []byte) error {
739+
func (instances *instances) AddSSHKeyToAllInstances(ctx context.Context, user string, keyData []byte) error {
739740
return errors.New("Not implemented")
740741
}
741742

742-
func (instances *instances) CurrentNodeName(hostname string) (types.NodeName, error) {
743+
func (instances *instances) CurrentNodeName(ctx context.Context, hostname string) (types.NodeName, error) {
743744
return "", errors.New("Not implemented")
744745
}

0 commit comments

Comments
 (0)