Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
2cc3c33a
Commit
2cc3c33a
authored
Aug 15, 2017
by
andrewsykim
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Cloud Controller Manager now sets Node.Spec.ProviderID
parent
657db0ea
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
188 additions
and
0 deletions
+188
-0
node_controller.go
pkg/controller/cloud/node_controller.go
+12
-0
node_controller_test.go
pkg/controller/cloud/node_controller_test.go
+176
-0
No files found.
pkg/controller/cloud/node_controller.go
View file @
2cc3c33a
...
@@ -284,6 +284,18 @@ func (cnc *CloudNodeController) AddCloudNode(obj interface{}) {
...
@@ -284,6 +284,18 @@ func (cnc *CloudNodeController) AddCloudNode(obj interface{}) {
return
err
return
err
}
}
if
curNode
.
Spec
.
ProviderID
==
""
{
providerID
,
err
:=
cloudprovider
.
GetInstanceProviderID
(
cnc
.
cloud
,
types
.
NodeName
(
curNode
.
Name
))
if
err
==
nil
{
curNode
.
Spec
.
ProviderID
=
providerID
}
else
{
// we should attempt to set providerID on curNode, but
// we can continue if we fail since we will attempt to set
// node addresses given the node name in getNodeAddressesByProviderIDOrName
glog
.
Errorf
(
"failed to set node provider id: %v"
,
err
)
}
}
nodeAddresses
,
err
:=
getNodeAddressesByProviderIDOrName
(
instances
,
curNode
)
nodeAddresses
,
err
:=
getNodeAddressesByProviderIDOrName
(
instances
,
curNode
)
if
err
!=
nil
{
if
err
!=
nil
{
glog
.
Errorf
(
"%v"
,
err
)
glog
.
Errorf
(
"%v"
,
err
)
...
...
pkg/controller/cloud/node_controller_test.go
View file @
2cc3c33a
...
@@ -804,3 +804,179 @@ func TestNodeAddressesChangeDetected(t *testing.T) {
...
@@ -804,3 +804,179 @@ func TestNodeAddressesChangeDetected(t *testing.T) {
t
.
Errorf
(
"Node address changes are not detected correctly"
)
t
.
Errorf
(
"Node address changes are not detected correctly"
)
}
}
}
}
// This test checks that a node is set with the correct providerID
func
TestNodeProviderID
(
t
*
testing
.
T
)
{
fnh
:=
&
testutil
.
FakeNodeHandler
{
Existing
:
[]
*
v1
.
Node
{
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
"node0"
,
CreationTimestamp
:
metav1
.
Date
(
2012
,
1
,
1
,
0
,
0
,
0
,
0
,
time
.
UTC
),
Labels
:
map
[
string
]
string
{},
},
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
:
"ImproveCoverageTaint"
,
Value
:
"true"
,
Effect
:
v1
.
TaintEffectNoSchedule
,
},
{
Key
:
algorithm
.
TaintExternalCloudProvider
,
Value
:
"true"
,
Effect
:
v1
.
TaintEffectNoSchedule
,
},
},
},
},
},
Clientset
:
fake
.
NewSimpleClientset
(
&
v1
.
PodList
{}),
DeleteWaitChan
:
make
(
chan
struct
{}),
}
factory
:=
informers
.
NewSharedInformerFactory
(
fnh
,
controller
.
NoResyncPeriodFunc
())
fakeCloud
:=
&
fakecloud
.
FakeCloud
{
InstanceTypes
:
map
[
types
.
NodeName
]
string
{},
Addresses
:
[]
v1
.
NodeAddress
{
{
Type
:
v1
.
NodeHostName
,
Address
:
"node0.cloud.internal"
,
},
{
Type
:
v1
.
NodeInternalIP
,
Address
:
"10.0.0.1"
,
},
{
Type
:
v1
.
NodeExternalIP
,
Address
:
"132.143.154.163"
,
},
},
Provider
:
"test"
,
ExtID
:
map
[
types
.
NodeName
]
string
{
types
.
NodeName
(
"node0"
)
:
"12345"
,
},
Err
:
nil
,
}
eventBroadcaster
:=
record
.
NewBroadcaster
()
cloudNodeController
:=
&
CloudNodeController
{
kubeClient
:
fnh
,
nodeInformer
:
factory
.
Core
()
.
V1
()
.
Nodes
(),
cloud
:
fakeCloud
,
nodeMonitorPeriod
:
5
*
time
.
Second
,
nodeStatusUpdateFrequency
:
1
*
time
.
Second
,
recorder
:
eventBroadcaster
.
NewRecorder
(
scheme
.
Scheme
,
v1
.
EventSource
{
Component
:
"cloud-controller-manager"
}),
}
eventBroadcaster
.
StartLogging
(
glog
.
Infof
)
cloudNodeController
.
AddCloudNode
(
fnh
.
Existing
[
0
])
if
len
(
fnh
.
UpdatedNodes
)
!=
1
||
fnh
.
UpdatedNodes
[
0
]
.
Name
!=
"node0"
{
t
.
Errorf
(
"Node was not updated"
)
}
if
fnh
.
UpdatedNodes
[
0
]
.
Spec
.
ProviderID
!=
"test://12345"
{
t
.
Errorf
(
"Node ProviderID not set correctly"
)
}
}
// This test checks that a node's provider ID will not be overwritten
func
TestNodeProviderIDAlreadySet
(
t
*
testing
.
T
)
{
fnh
:=
&
testutil
.
FakeNodeHandler
{
Existing
:
[]
*
v1
.
Node
{
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
"node0"
,
CreationTimestamp
:
metav1
.
Date
(
2012
,
1
,
1
,
0
,
0
,
0
,
0
,
time
.
UTC
),
Labels
:
map
[
string
]
string
{},
},
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
{
ProviderID
:
"test-provider-id"
,
Taints
:
[]
v1
.
Taint
{
{
Key
:
"ImproveCoverageTaint"
,
Value
:
"true"
,
Effect
:
v1
.
TaintEffectNoSchedule
,
},
{
Key
:
algorithm
.
TaintExternalCloudProvider
,
Value
:
"true"
,
Effect
:
v1
.
TaintEffectNoSchedule
,
},
},
},
},
},
Clientset
:
fake
.
NewSimpleClientset
(
&
v1
.
PodList
{}),
DeleteWaitChan
:
make
(
chan
struct
{}),
}
factory
:=
informers
.
NewSharedInformerFactory
(
fnh
,
controller
.
NoResyncPeriodFunc
())
fakeCloud
:=
&
fakecloud
.
FakeCloud
{
InstanceTypes
:
map
[
types
.
NodeName
]
string
{},
Addresses
:
[]
v1
.
NodeAddress
{
{
Type
:
v1
.
NodeHostName
,
Address
:
"node0.cloud.internal"
,
},
{
Type
:
v1
.
NodeInternalIP
,
Address
:
"10.0.0.1"
,
},
{
Type
:
v1
.
NodeExternalIP
,
Address
:
"132.143.154.163"
,
},
},
Provider
:
"test"
,
ExtID
:
map
[
types
.
NodeName
]
string
{
types
.
NodeName
(
"node0"
)
:
"12345"
,
},
Err
:
nil
,
}
eventBroadcaster
:=
record
.
NewBroadcaster
()
cloudNodeController
:=
&
CloudNodeController
{
kubeClient
:
fnh
,
nodeInformer
:
factory
.
Core
()
.
V1
()
.
Nodes
(),
cloud
:
fakeCloud
,
nodeMonitorPeriod
:
5
*
time
.
Second
,
nodeStatusUpdateFrequency
:
1
*
time
.
Second
,
recorder
:
eventBroadcaster
.
NewRecorder
(
scheme
.
Scheme
,
v1
.
EventSource
{
Component
:
"cloud-controller-manager"
}),
}
eventBroadcaster
.
StartLogging
(
glog
.
Infof
)
cloudNodeController
.
AddCloudNode
(
fnh
.
Existing
[
0
])
if
len
(
fnh
.
UpdatedNodes
)
!=
1
||
fnh
.
UpdatedNodes
[
0
]
.
Name
!=
"node0"
{
t
.
Errorf
(
"Node was not updated"
)
}
// CCM node controller should not overwrite provider if it's already set
if
fnh
.
UpdatedNodes
[
0
]
.
Spec
.
ProviderID
!=
"test-provider-id"
{
t
.
Errorf
(
"Node ProviderID not set correctly"
)
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment