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
20c75956
Commit
20c75956
authored
May 25, 2016
by
Quinton Hoole
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add federation cluster status zone and region update.
parent
03fc51f7
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
77 additions
and
0 deletions
+77
-0
cluster_client.go
...ation/pkg/federation-controller/cluster/cluster_client.go
+55
-0
clustercontroller.go
...on/pkg/federation-controller/cluster/clustercontroller.go
+22
-0
No files found.
federation/pkg/federation-controller/cluster/cluster_client.go
View file @
20c75956
...
@@ -22,15 +22,19 @@ import (
...
@@ -22,15 +22,19 @@ import (
"os"
"os"
"strings"
"strings"
"github.com/golang/glog"
federation_v1alpha1
"k8s.io/kubernetes/federation/apis/federation/v1alpha1"
federation_v1alpha1
"k8s.io/kubernetes/federation/apis/federation/v1alpha1"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/api/v1"
clientset
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/pkg/client/restclient"
"k8s.io/kubernetes/pkg/client/restclient"
"k8s.io/kubernetes/pkg/client/typed/discovery"
"k8s.io/kubernetes/pkg/client/typed/discovery"
client
"k8s.io/kubernetes/pkg/client/unversioned"
client
"k8s.io/kubernetes/pkg/client/unversioned"
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
clientcmdapi
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
clientcmdapi
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
utilnet
"k8s.io/kubernetes/pkg/util/net"
utilnet
"k8s.io/kubernetes/pkg/util/net"
"k8s.io/kubernetes/pkg/util/sets"
)
)
const
(
const
(
...
@@ -153,3 +157,54 @@ func (self *ClusterClient) GetClusterHealthStatus() *federation_v1alpha1.Cluster
...
@@ -153,3 +157,54 @@ func (self *ClusterClient) GetClusterHealthStatus() *federation_v1alpha1.Cluster
}
}
return
&
clusterStatus
return
&
clusterStatus
}
}
// GetClusterZones gets the kubernetes cluster zones and region by inspecting labels on nodes in the cluster.
func
GetClusterZones
(
client
*
clientset
.
Clientset
)
(
zones
[]
string
,
region
string
,
err
error
)
{
return
getZoneNames
(
client
)
}
// Find the name of the zone in which a Node is running
func
getZoneNameForNode
(
node
api
.
Node
)
(
string
,
error
)
{
for
key
,
value
:=
range
node
.
Labels
{
if
key
==
unversioned
.
LabelZoneFailureDomain
{
return
value
,
nil
}
}
return
""
,
fmt
.
Errorf
(
"Zone name for node %s not found. No label with key %s"
,
node
.
Name
,
unversioned
.
LabelZoneFailureDomain
)
}
// Find the name of the region in which a Node is running
func
getRegionNameForNode
(
node
api
.
Node
)
(
string
,
error
)
{
for
key
,
value
:=
range
node
.
Labels
{
if
key
==
unversioned
.
LabelZoneRegion
{
return
value
,
nil
}
}
return
""
,
fmt
.
Errorf
(
"Region name for node %s not found. No label with key %s"
,
node
.
Name
,
unversioned
.
LabelZoneRegion
)
}
// Find the names of all zones and the region in which we have nodes in this cluster.
func
getZoneNames
(
client
*
clientset
.
Clientset
)
(
zones
[]
string
,
region
string
,
err
error
)
{
zoneNames
:=
sets
.
NewString
()
nodes
,
err
:=
client
.
Core
()
.
Nodes
()
.
List
(
api
.
ListOptions
{})
if
err
!=
nil
{
glog
.
Errorf
(
"Failed to list nodes while getting zone names: %v"
,
err
)
return
nil
,
""
,
err
}
for
i
,
node
:=
range
nodes
.
Items
{
zoneName
,
err
:=
getZoneNameForNode
(
node
)
if
err
!=
nil
{
return
nil
,
""
,
err
}
zoneNames
.
Insert
(
zoneName
)
if
i
==
0
{
region
,
err
=
getRegionNameForNode
(
node
)
if
err
!=
nil
{
return
nil
,
""
,
err
}
}
}
return
zoneNames
.
List
(),
region
,
nil
}
federation/pkg/federation-controller/cluster/clustercontroller.go
View file @
20c75956
...
@@ -27,6 +27,9 @@ import (
...
@@ -27,6 +27,9 @@ import (
federationclientset
"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_3"
federationclientset
"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_3"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/client/cache"
"k8s.io/kubernetes/pkg/client/cache"
clientset
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/pkg/client/restclient"
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
"k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/controller/framework"
"k8s.io/kubernetes/pkg/controller/framework"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/runtime"
...
@@ -184,6 +187,14 @@ func (cc *ClusterController) UpdateClusterStatus() error {
...
@@ -184,6 +187,14 @@ func (cc *ClusterController) UpdateClusterStatus() error {
}
}
}
}
}
}
clusterClientSet
,
_
:=
NewClusterClientset
(
&
cluster
)
zones
,
region
,
err
:=
GetClusterZones
(
clusterClientSet
)
if
err
!=
nil
{
glog
.
Errorf
(
"Failed to get zones and region for cluster %s: %v"
,
cluster
.
Name
,
err
)
}
else
{
clusterStatusNew
.
Zones
=
zones
clusterStatusNew
.
Region
=
region
}
cc
.
clusterClusterStatusMap
[
cluster
.
Name
]
=
*
clusterStatusNew
cc
.
clusterClusterStatusMap
[
cluster
.
Name
]
=
*
clusterStatusNew
cluster
.
Status
=
*
clusterStatusNew
cluster
.
Status
=
*
clusterStatusNew
cluster
,
err
:=
cc
.
federationClient
.
Federation
()
.
Clusters
()
.
UpdateStatus
(
&
cluster
)
cluster
,
err
:=
cc
.
federationClient
.
Federation
()
.
Clusters
()
.
UpdateStatus
(
&
cluster
)
...
@@ -194,3 +205,14 @@ func (cc *ClusterController) UpdateClusterStatus() error {
...
@@ -194,3 +205,14 @@ func (cc *ClusterController) UpdateClusterStatus() error {
}
}
return
nil
return
nil
}
}
func
NewClusterClientset
(
c
*
federation_v1alpha1
.
Cluster
)
(
*
clientset
.
Clientset
,
error
)
{
// TODO: Stolen from federation/pkg/federation-controller/service/cluster_helper.go - factor it out of there.
clusterConfig
,
err
:=
clientcmd
.
BuildConfigFromFlags
(
c
.
Spec
.
ServerAddressByClientCIDRs
[
0
]
.
ServerAddress
,
""
)
if
err
!=
nil
{
return
nil
,
err
}
clusterConfig
.
QPS
=
KubeAPIQPS
clusterConfig
.
Burst
=
KubeAPIBurst
clientset
:=
clientset
.
NewForConfigOrDie
(
restclient
.
AddUserAgent
(
clusterConfig
,
UserAgentName
))
return
clientset
,
nil
}
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