Skip to content

Commit acee077

Browse files
committed
fix the fake cloud provider
1 parent 53d9bed commit acee077

File tree

2 files changed

+85
-3
lines changed

2 files changed

+85
-3
lines changed

staging/src/k8s.io/cloud-provider/controllers/node/node_controller_test.go

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -843,6 +843,9 @@ func Test_syncNode(t *testing.T) {
843843
ExtID: map[types.NodeName]string{
844844
types.NodeName("node0"): "12345",
845845
},
846+
ProviderID: map[types.NodeName]string{
847+
types.NodeName("node0"): "fake://12345",
848+
},
846849
Addresses: []v1.NodeAddress{
847850
{
848851
Type: v1.NodeHostName,
@@ -901,6 +904,9 @@ func Test_syncNode(t *testing.T) {
901904
"topology.kubernetes.io/zone": "us-west-1a",
902905
},
903906
},
907+
Spec: v1.NodeSpec{
908+
ProviderID: "fake://12345",
909+
},
904910
Status: v1.NodeStatus{
905911
Conditions: []v1.NodeCondition{
906912
{
@@ -935,6 +941,9 @@ func Test_syncNode(t *testing.T) {
935941
ExtID: map[types.NodeName]string{
936942
types.NodeName("node0"): "12345",
937943
},
944+
ProviderID: map[types.NodeName]string{
945+
types.NodeName("node0"): "fake://12345",
946+
},
938947
Addresses: []v1.NodeAddress{
939948
{
940949
Type: v1.NodeHostName,
@@ -996,6 +1005,7 @@ func Test_syncNode(t *testing.T) {
9961005
Effect: v1.TaintEffectNoSchedule,
9971006
},
9981007
},
1008+
ProviderID: "fake://12345",
9991009
},
10001010
Status: v1.NodeStatus{
10011011
Addresses: []v1.NodeAddress{
@@ -1276,6 +1286,69 @@ func Test_syncNode(t *testing.T) {
12761286
},
12771287
},
12781288
},
1289+
{
1290+
name: "[instanceV2] error getting InstanceMetadata",
1291+
fakeCloud: &fakecloud.Cloud{
1292+
EnableInstancesV2: true,
1293+
InstanceTypes: map[types.NodeName]string{},
1294+
Provider: "test",
1295+
ExtID: map[types.NodeName]string{},
1296+
ExtIDErr: map[types.NodeName]error{
1297+
types.NodeName("node0"): cloudprovider.NotImplemented,
1298+
},
1299+
MetadataErr: errors.New("metadata error"),
1300+
},
1301+
existingNode: &v1.Node{
1302+
ObjectMeta: metav1.ObjectMeta{
1303+
Name: "node0",
1304+
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
1305+
},
1306+
Status: v1.NodeStatus{
1307+
Conditions: []v1.NodeCondition{
1308+
{
1309+
Type: v1.NodeReady,
1310+
Status: v1.ConditionUnknown,
1311+
LastHeartbeatTime: metav1.Date(2015, 1, 1, 12, 0, 0, 0, time.UTC),
1312+
LastTransitionTime: metav1.Date(2015, 1, 1, 12, 0, 0, 0, time.UTC),
1313+
},
1314+
},
1315+
},
1316+
Spec: v1.NodeSpec{
1317+
Taints: []v1.Taint{
1318+
{
1319+
Key: cloudproviderapi.TaintExternalCloudProvider,
1320+
Value: "true",
1321+
Effect: v1.TaintEffectNoSchedule,
1322+
},
1323+
},
1324+
},
1325+
},
1326+
updatedNode: &v1.Node{
1327+
ObjectMeta: metav1.ObjectMeta{
1328+
Name: "node0",
1329+
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
1330+
},
1331+
Status: v1.NodeStatus{
1332+
Conditions: []v1.NodeCondition{
1333+
{
1334+
Type: v1.NodeReady,
1335+
Status: v1.ConditionUnknown,
1336+
LastHeartbeatTime: metav1.Date(2015, 1, 1, 12, 0, 0, 0, time.UTC),
1337+
LastTransitionTime: metav1.Date(2015, 1, 1, 12, 0, 0, 0, time.UTC),
1338+
},
1339+
},
1340+
},
1341+
Spec: v1.NodeSpec{
1342+
Taints: []v1.Taint{
1343+
{
1344+
Key: cloudproviderapi.TaintExternalCloudProvider,
1345+
Value: "true",
1346+
Effect: v1.TaintEffectNoSchedule,
1347+
},
1348+
},
1349+
},
1350+
},
1351+
},
12791352
}
12801353

12811354
for _, test := range tests {

staging/src/k8s.io/cloud-provider/fake/fake.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import (
2424
"sync"
2525
"time"
2626

27-
"k8s.io/api/core/v1"
27+
v1 "k8s.io/api/core/v1"
2828
"k8s.io/apimachinery/pkg/types"
2929
cloudprovider "k8s.io/cloud-provider"
3030
)
@@ -64,6 +64,7 @@ type Cloud struct {
6464
ErrByProviderID error
6565
NodeShutdown bool
6666
ErrShutdownByProviderID error
67+
MetadataErr error
6768

6869
Calls []string
6970
Addresses []v1.NodeAddress
@@ -81,6 +82,7 @@ type Cloud struct {
8182
RouteMap map[string]*Route
8283
Lock sync.Mutex
8384
Provider string
85+
ProviderID map[types.NodeName]string
8486
addCallLock sync.Mutex
8587
cloudprovider.Zone
8688
VolumeLabelMap map[string]map[string]string
@@ -321,13 +323,20 @@ func (f *Cloud) InstanceMetadata(ctx context.Context, node *v1.Node) (*cloudprov
321323
f.addCall("instance-metadata-by-provider-id")
322324
f.addressesMux.Lock()
323325
defer f.addressesMux.Unlock()
326+
327+
providerID := ""
328+
id, ok := f.ProviderID[types.NodeName(node.Name)]
329+
if ok {
330+
providerID = id
331+
}
332+
324333
return &cloudprovider.InstanceMetadata{
325-
ProviderID: node.Spec.ProviderID,
334+
ProviderID: providerID,
326335
InstanceType: f.InstanceTypes[types.NodeName(node.Spec.ProviderID)],
327336
NodeAddresses: f.Addresses,
328337
Zone: f.Zone.FailureDomain,
329338
Region: f.Zone.Region,
330-
}, f.Err
339+
}, f.MetadataErr
331340
}
332341

333342
// List is a test-spy implementation of Instances.List.

0 commit comments

Comments
 (0)