add get/create/delete for clusters

This commit is contained in:
jianhuiz
2016-04-26 07:33:47 -07:00
parent a6812d18a5
commit 586eea0691
4 changed files with 107 additions and 3 deletions

View File

@@ -17,6 +17,7 @@ limitations under the License.
package util
import (
fed_clientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset"
"k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/apimachinery/registered"
"k8s.io/kubernetes/pkg/client/restclient"
@@ -26,9 +27,10 @@ import (
func NewClientCache(loader clientcmd.ClientConfig) *ClientCache {
return &ClientCache{
clients: make(map[unversioned.GroupVersion]*client.Client),
configs: make(map[unversioned.GroupVersion]*restclient.Config),
loader: loader,
clients: make(map[unversioned.GroupVersion]*client.Client),
configs: make(map[unversioned.GroupVersion]*restclient.Config),
fedClientSets: make(map[unversioned.GroupVersion]fed_clientset.Interface),
loader: loader,
}
}
@@ -37,6 +39,7 @@ func NewClientCache(loader clientcmd.ClientConfig) *ClientCache {
type ClientCache struct {
loader clientcmd.ClientConfig
clients map[unversioned.GroupVersion]*client.Client
fedClientSets map[unversioned.GroupVersion]fed_clientset.Interface
configs map[unversioned.GroupVersion]*restclient.Config
defaultConfig *restclient.Config
defaultClient *client.Client
@@ -125,3 +128,41 @@ func (c *ClientCache) ClientForVersion(version *unversioned.GroupVersion) (*clie
return kubeclient, nil
}
func (c *ClientCache) FederationClientSetForVersion(version *unversioned.GroupVersion) (fed_clientset.Interface, error) {
if version != nil {
if clientSet, found := c.fedClientSets[*version]; found {
return clientSet, nil
}
}
config, err := c.ClientConfigForVersion(version)
if err != nil {
return nil, err
}
// TODO: support multi versions of client with clientset
clientSet, err := fed_clientset.NewForConfig(config)
if err != nil {
return nil, err
}
c.fedClientSets[*config.GroupVersion] = clientSet
if version != nil {
configCopy := *config
clientSet, err := fed_clientset.NewForConfig(&configCopy)
if err != nil {
return nil, err
}
c.fedClientSets[*version] = clientSet
}
return clientSet, nil
}
func (c *ClientCache) FederationClientForVersion(version *unversioned.GroupVersion) (*restclient.RESTClient, error) {
fedClientSet, err := c.FederationClientSetForVersion(version)
if err != nil {
return nil, err
}
return fedClientSet.(*fed_clientset.Clientset).FederationClient.RESTClient, nil
}