mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 11:50:44 +00:00
Merge pull request #95499 from nicolehanjing/nicoleh-fix-fake
cloud provider: fix the fake cloud provider
This commit is contained in:
commit
4b59044b8d
@ -843,6 +843,9 @@ func Test_syncNode(t *testing.T) {
|
|||||||
ExtID: map[types.NodeName]string{
|
ExtID: map[types.NodeName]string{
|
||||||
types.NodeName("node0"): "12345",
|
types.NodeName("node0"): "12345",
|
||||||
},
|
},
|
||||||
|
ProviderID: map[types.NodeName]string{
|
||||||
|
types.NodeName("node0"): "fake://12345",
|
||||||
|
},
|
||||||
Addresses: []v1.NodeAddress{
|
Addresses: []v1.NodeAddress{
|
||||||
{
|
{
|
||||||
Type: v1.NodeHostName,
|
Type: v1.NodeHostName,
|
||||||
@ -901,6 +904,9 @@ func Test_syncNode(t *testing.T) {
|
|||||||
"topology.kubernetes.io/zone": "us-west-1a",
|
"topology.kubernetes.io/zone": "us-west-1a",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
Spec: v1.NodeSpec{
|
||||||
|
ProviderID: "fake://12345",
|
||||||
|
},
|
||||||
Status: v1.NodeStatus{
|
Status: v1.NodeStatus{
|
||||||
Conditions: []v1.NodeCondition{
|
Conditions: []v1.NodeCondition{
|
||||||
{
|
{
|
||||||
@ -935,6 +941,9 @@ func Test_syncNode(t *testing.T) {
|
|||||||
ExtID: map[types.NodeName]string{
|
ExtID: map[types.NodeName]string{
|
||||||
types.NodeName("node0"): "12345",
|
types.NodeName("node0"): "12345",
|
||||||
},
|
},
|
||||||
|
ProviderID: map[types.NodeName]string{
|
||||||
|
types.NodeName("node0"): "fake://12345",
|
||||||
|
},
|
||||||
Addresses: []v1.NodeAddress{
|
Addresses: []v1.NodeAddress{
|
||||||
{
|
{
|
||||||
Type: v1.NodeHostName,
|
Type: v1.NodeHostName,
|
||||||
@ -996,6 +1005,7 @@ func Test_syncNode(t *testing.T) {
|
|||||||
Effect: v1.TaintEffectNoSchedule,
|
Effect: v1.TaintEffectNoSchedule,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
ProviderID: "fake://12345",
|
||||||
},
|
},
|
||||||
Status: v1.NodeStatus{
|
Status: v1.NodeStatus{
|
||||||
Addresses: []v1.NodeAddress{
|
Addresses: []v1.NodeAddress{
|
||||||
@ -1276,6 +1286,69 @@ func Test_syncNode(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "[instanceV2] error getting InstanceMetadata",
|
||||||
|
fakeCloud: &fakecloud.Cloud{
|
||||||
|
EnableInstancesV2: true,
|
||||||
|
InstanceTypes: map[types.NodeName]string{},
|
||||||
|
Provider: "test",
|
||||||
|
ExtID: map[types.NodeName]string{},
|
||||||
|
ExtIDErr: map[types.NodeName]error{
|
||||||
|
types.NodeName("node0"): cloudprovider.NotImplemented,
|
||||||
|
},
|
||||||
|
MetadataErr: errors.New("metadata error"),
|
||||||
|
},
|
||||||
|
existingNode: &v1.Node{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: "node0",
|
||||||
|
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
|
||||||
|
},
|
||||||
|
Status: v1.NodeStatus{
|
||||||
|
Conditions: []v1.NodeCondition{
|
||||||
|
{
|
||||||
|
Type: v1.NodeReady,
|
||||||
|
Status: v1.ConditionUnknown,
|
||||||
|
LastHeartbeatTime: metav1.Date(2015, 1, 1, 12, 0, 0, 0, time.UTC),
|
||||||
|
LastTransitionTime: metav1.Date(2015, 1, 1, 12, 0, 0, 0, time.UTC),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Spec: v1.NodeSpec{
|
||||||
|
Taints: []v1.Taint{
|
||||||
|
{
|
||||||
|
Key: cloudproviderapi.TaintExternalCloudProvider,
|
||||||
|
Value: "true",
|
||||||
|
Effect: v1.TaintEffectNoSchedule,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
updatedNode: &v1.Node{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: "node0",
|
||||||
|
CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC),
|
||||||
|
},
|
||||||
|
Status: v1.NodeStatus{
|
||||||
|
Conditions: []v1.NodeCondition{
|
||||||
|
{
|
||||||
|
Type: v1.NodeReady,
|
||||||
|
Status: v1.ConditionUnknown,
|
||||||
|
LastHeartbeatTime: metav1.Date(2015, 1, 1, 12, 0, 0, 0, time.UTC),
|
||||||
|
LastTransitionTime: metav1.Date(2015, 1, 1, 12, 0, 0, 0, time.UTC),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Spec: v1.NodeSpec{
|
||||||
|
Taints: []v1.Taint{
|
||||||
|
{
|
||||||
|
Key: cloudproviderapi.TaintExternalCloudProvider,
|
||||||
|
Value: "true",
|
||||||
|
Effect: v1.TaintEffectNoSchedule,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
|
@ -24,7 +24,7 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"k8s.io/api/core/v1"
|
v1 "k8s.io/api/core/v1"
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
cloudprovider "k8s.io/cloud-provider"
|
cloudprovider "k8s.io/cloud-provider"
|
||||||
)
|
)
|
||||||
@ -64,6 +64,7 @@ type Cloud struct {
|
|||||||
ErrByProviderID error
|
ErrByProviderID error
|
||||||
NodeShutdown bool
|
NodeShutdown bool
|
||||||
ErrShutdownByProviderID error
|
ErrShutdownByProviderID error
|
||||||
|
MetadataErr error
|
||||||
|
|
||||||
Calls []string
|
Calls []string
|
||||||
Addresses []v1.NodeAddress
|
Addresses []v1.NodeAddress
|
||||||
@ -81,6 +82,7 @@ type Cloud struct {
|
|||||||
RouteMap map[string]*Route
|
RouteMap map[string]*Route
|
||||||
Lock sync.Mutex
|
Lock sync.Mutex
|
||||||
Provider string
|
Provider string
|
||||||
|
ProviderID map[types.NodeName]string
|
||||||
addCallLock sync.Mutex
|
addCallLock sync.Mutex
|
||||||
cloudprovider.Zone
|
cloudprovider.Zone
|
||||||
VolumeLabelMap map[string]map[string]string
|
VolumeLabelMap map[string]map[string]string
|
||||||
@ -321,13 +323,20 @@ func (f *Cloud) InstanceMetadata(ctx context.Context, node *v1.Node) (*cloudprov
|
|||||||
f.addCall("instance-metadata-by-provider-id")
|
f.addCall("instance-metadata-by-provider-id")
|
||||||
f.addressesMux.Lock()
|
f.addressesMux.Lock()
|
||||||
defer f.addressesMux.Unlock()
|
defer f.addressesMux.Unlock()
|
||||||
|
|
||||||
|
providerID := ""
|
||||||
|
id, ok := f.ProviderID[types.NodeName(node.Name)]
|
||||||
|
if ok {
|
||||||
|
providerID = id
|
||||||
|
}
|
||||||
|
|
||||||
return &cloudprovider.InstanceMetadata{
|
return &cloudprovider.InstanceMetadata{
|
||||||
ProviderID: node.Spec.ProviderID,
|
ProviderID: providerID,
|
||||||
InstanceType: f.InstanceTypes[types.NodeName(node.Spec.ProviderID)],
|
InstanceType: f.InstanceTypes[types.NodeName(node.Spec.ProviderID)],
|
||||||
NodeAddresses: f.Addresses,
|
NodeAddresses: f.Addresses,
|
||||||
Zone: f.Zone.FailureDomain,
|
Zone: f.Zone.FailureDomain,
|
||||||
Region: f.Zone.Region,
|
Region: f.Zone.Region,
|
||||||
}, f.Err
|
}, f.MetadataErr
|
||||||
}
|
}
|
||||||
|
|
||||||
// List is a test-spy implementation of Instances.List.
|
// List is a test-spy implementation of Instances.List.
|
||||||
|
Loading…
Reference in New Issue
Block a user