Code updates

This commit is contained in:
Justin Santa Barbara 2017-03-15 11:13:44 -04:00
parent b3c0772073
commit cb4641fea3
131 changed files with 483 additions and 556 deletions

View File

@ -255,6 +255,9 @@ utils-dist:
# See docs/development/dependencies.md
copydeps:
rsync -avz _vendor/ vendor/ --delete --exclude vendor/ --exclude .git
ln -sf kubernetes/staging/src/k8s.io/apimachinery vendor/k8s.io/apimachinery
ln -sf kubernetes/staging/src/k8s.io/apiserver vendor/k8s.io/apiserver
ln -sf kubernetes/staging/src/k8s.io/client-go vendor/k8s.io/client-go
gofmt:
gofmt -w -s channels/

View File

@ -19,9 +19,10 @@ package main
import (
"fmt"
"github.com/spf13/cobra"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/pkg/api/v1"
"k8s.io/kops/channels/pkg/channels"
"k8s.io/kops/util/pkg/tables"
"k8s.io/kubernetes/pkg/api/v1"
"os"
)
@ -59,7 +60,7 @@ func (c *GetAddonsCmd) Run(args []string) error {
return err
}
namespaces, err := k8sClient.Namespaces().List(v1.ListOptions{})
namespaces, err := k8sClient.CoreV1().Namespaces().List(metav1.ListOptions{})
if err != nil {
return fmt.Errorf("error listing namespaces: %v", err)
}

View File

@ -20,11 +20,10 @@ import (
goflag "flag"
"fmt"
"github.com/golang/glog"
"github.com/spf13/cobra"
"github.com/spf13/viper"
k8s_clientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/clientcmd"
)
type RootCmd struct {
@ -79,24 +78,21 @@ func (c *RootCmd) AddCommand(cmd *cobra.Command) {
c.cobraCommand.AddCommand(cmd)
}
func (c *RootCmd) KubernetesClient() (*k8s_clientset.Clientset, error) {
config := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(
clientcmd.NewDefaultClientConfigLoadingRules(),
&clientcmd.ConfigOverrides{})
clientConfig, err := config.ClientConfig()
if err != nil {
if clientcmd.IsEmptyConfig(err) {
glog.V(2).Infof("No client config found; will use default config")
clientConfig, err = clientcmd.DefaultClientConfig.ClientConfig()
if err != nil {
return nil, fmt.Errorf("cannot build default kube config settings: %v", err)
}
} else {
return nil, fmt.Errorf("cannot load kubecfg settings: %v", err)
}
func (c *RootCmd) KubernetesClient() (kubernetes.Interface, error) {
loadingRules := clientcmd.NewDefaultClientConfigLoadingRules()
loadingRules.DefaultClientConfig = &clientcmd.DefaultClientConfig
configOverrides := &clientcmd.ConfigOverrides{
ClusterDefaults: clientcmd.ClusterDefaults,
}
k8sClient, err := k8s_clientset.NewForConfig(clientConfig)
kubeConfig := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(loadingRules, configOverrides)
config, err := kubeConfig.ClientConfig()
if err != nil {
return nil, fmt.Errorf("cannot load kubecfg settings: %v", err)
}
k8sClient, err := kubernetes.NewForConfig(config)
if err != nil {
return nil, fmt.Errorf("cannot build kube client: %v", err)
}

View File

@ -17,8 +17,8 @@ limitations under the License.
package api
import (
v1 "k8s.io/kubernetes/pkg/api/v1"
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
v1 "k8s.io/client-go/pkg/api/v1"
)
type Addons struct {

View File

@ -19,9 +19,9 @@ package channels
import (
"fmt"
"github.com/golang/glog"
"k8s.io/apimachinery/pkg/util/validation/field"
"k8s.io/client-go/kubernetes"
"k8s.io/kops/channels/pkg/api"
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
"k8s.io/kubernetes/pkg/util/validation/field"
"net/url"
)
@ -57,7 +57,7 @@ func (a *Addon) buildChannel() *Channel {
}
return channel
}
func (a *Addon) GetRequiredUpdates(k8sClient *clientset.Clientset) (*AddonUpdate, error) {
func (a *Addon) GetRequiredUpdates(k8sClient kubernetes.Interface) (*AddonUpdate, error) {
newVersion := a.ChannelVersion()
channel := a.buildChannel()
@ -78,7 +78,7 @@ func (a *Addon) GetRequiredUpdates(k8sClient *clientset.Clientset) (*AddonUpdate
}, nil
}
func (a *Addon) EnsureUpdated(k8sClient *clientset.Clientset) (*AddonUpdate, error) {
func (a *Addon) EnsureUpdated(k8sClient kubernetes.Interface) (*AddonUpdate, error) {
required, err := a.GetRequiredUpdates(k8sClient)
if err != nil {
return nil, err

View File

@ -21,10 +21,10 @@ import (
"fmt"
"github.com/blang/semver"
"github.com/golang/glog"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/v1"
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/pkg/api/v1"
"strings"
)
@ -116,8 +116,8 @@ func (c *ChannelVersion) Replaces(existing *ChannelVersion) bool {
return true
}
func (c *Channel) GetInstalledVersion(k8sClient *clientset.Clientset) (*ChannelVersion, error) {
ns, err := k8sClient.Namespaces().Get(c.Namespace, metav1.GetOptions{})
func (c *Channel) GetInstalledVersion(k8sClient kubernetes.Interface) (*ChannelVersion, error) {
ns, err := k8sClient.CoreV1().Namespaces().Get(c.Namespace, metav1.GetOptions{})
if err != nil {
return nil, fmt.Errorf("error querying namespace %q: %v", c.Namespace, err)
}
@ -137,9 +137,9 @@ type annotationPatchMetadata struct {
Annotations map[string]string `json:"annotations,omitempty"`
}
func (c *Channel) SetInstalledVersion(k8sClient *clientset.Clientset, version *ChannelVersion) error {
func (c *Channel) SetInstalledVersion(k8sClient kubernetes.Interface, version *ChannelVersion) error {
// Primarily to check it exists
_, err := k8sClient.Namespaces().Get(c.Namespace, metav1.GetOptions{})
_, err := k8sClient.CoreV1().Namespaces().Get(c.Namespace, metav1.GetOptions{})
if err != nil {
return fmt.Errorf("error querying namespace %q: %v", c.Namespace, err)
}
@ -157,7 +157,7 @@ func (c *Channel) SetInstalledVersion(k8sClient *clientset.Clientset, version *C
glog.V(2).Infof("sending patch: %q", string(annotationPatchJson))
_, err = k8sClient.Namespaces().Patch(c.Namespace, api.StrategicMergePatchType, annotationPatchJson)
_, err = k8sClient.CoreV1().Namespaces().Patch(c.Namespace, types.StrategicMergePatchType, annotationPatchJson)
if err != nil {
return fmt.Errorf("error applying annotation to namespace: %v", err)
}

View File

@ -23,16 +23,15 @@ import (
"bytes"
"github.com/golang/glog"
"github.com/spf13/cobra"
apierrors "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/kops/cmd/kops/util"
kopsapi "k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/apis/kops/v1alpha1"
"k8s.io/kops/upup/pkg/fi/cloudup"
"k8s.io/kops/util/pkg/vfs"
k8sapi "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/errors"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/resource"
"k8s.io/kubernetes/pkg/runtime/schema"
)
type CreateOptions struct {
@ -80,7 +79,7 @@ func RunCreate(f *util.Factory, out io.Writer, c *CreateOptions) error {
}
// Codecs provides access to encoding and decoding for the scheme
codecs := k8sapi.Codecs //serializer.NewCodecFactory(scheme)
codecs := kopsapi.Codecs //serializer.NewCodecFactory(scheme)
codec := codecs.UniversalDecoder(kopsapi.SchemeGroupVersion)
@ -106,7 +105,7 @@ func RunCreate(f *util.Factory, out io.Writer, c *CreateOptions) error {
case *kopsapi.Federation:
_, err = clientset.Federations().Create(v)
if err != nil {
if errors.IsAlreadyExists(err) {
if apierrors.IsAlreadyExists(err) {
return fmt.Errorf("federation %q already exists", v.ObjectMeta.Name)
}
return fmt.Errorf("error creating federation: %v", err)
@ -121,7 +120,7 @@ func RunCreate(f *util.Factory, out io.Writer, c *CreateOptions) error {
}
_, err = clientset.Clusters().Create(v)
if err != nil {
if errors.IsAlreadyExists(err) {
if apierrors.IsAlreadyExists(err) {
return fmt.Errorf("cluster %q already exists", v.ObjectMeta.Name)
}
return fmt.Errorf("error creating cluster: %v", err)
@ -134,7 +133,7 @@ func RunCreate(f *util.Factory, out io.Writer, c *CreateOptions) error {
}
_, err = clientset.InstanceGroups(clusterName).Create(v)
if err != nil {
if errors.IsAlreadyExists(err) {
if apierrors.IsAlreadyExists(err) {
return fmt.Errorf("instanceGroup %q already exists", v.ObjectMeta.Name)
}
return fmt.Errorf("error creating instanceGroup: %v", err)

View File

@ -27,6 +27,7 @@ import (
"github.com/golang/glog"
"github.com/spf13/cobra"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/kops"
"k8s.io/kops/cmd/kops/util"
api "k8s.io/kops/pkg/apis/kops"
@ -36,7 +37,6 @@ import (
"k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/upup/pkg/fi/cloudup"
"k8s.io/kops/upup/pkg/fi/utils"
"k8s.io/kubernetes/pkg/util/sets"
)
type CreateClusterOptions struct {

View File

@ -20,18 +20,17 @@ import (
"bytes"
"github.com/golang/glog"
"io/ioutil"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kops/cmd/kops/util"
"k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/diff"
k8sapi "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/meta/v1"
"path"
"strings"
"testing"
"time"
)
var MagicTimestamp = v1.Time{Time: time.Date(2017, 1, 1, 0, 0, 0, 0, time.UTC)}
var MagicTimestamp = metav1.Time{Time: time.Date(2017, 1, 1, 0, 0, 0, 0, time.UTC)}
// TestCreateClusterMinimal runs kops create cluster minimal.example.com --zones us-test-1a
func TestCreateClusterMinimal(t *testing.T) {
@ -119,7 +118,7 @@ func runCreateClusterIntegrationTest(t *testing.T, srcDir string, version string
}
// Compare cluster
clusters, err := clientset.Clusters().List(k8sapi.ListOptions{})
clusters, err := clientset.Clusters().List(metav1.ListOptions{})
if err != nil {
t.Fatalf("error listing clusters: %v", err)
}
@ -143,7 +142,7 @@ func runCreateClusterIntegrationTest(t *testing.T, srcDir string, version string
// Compare instance groups
instanceGroups, err := clientset.InstanceGroups(clusters.Items[0].ObjectMeta.Name).List(k8sapi.ListOptions{})
instanceGroups, err := clientset.InstanceGroups(clusters.Items[0].ObjectMeta.Name).List(metav1.ListOptions{})
if err != nil {
t.Fatalf("error listing instance groups: %v", err)
}

View File

@ -22,13 +22,13 @@ import (
"fmt"
"github.com/spf13/cobra"
"io"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kops/cmd/kops/util"
api "k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/apis/kops/registry"
"k8s.io/kops/pkg/apis/kops/validation"
"k8s.io/kops/pkg/edit"
"k8s.io/kops/upup/pkg/fi/cloudup"
k8sapi "k8s.io/kubernetes/pkg/api"
util_editor "k8s.io/kubernetes/pkg/kubectl/cmd/util/editor"
"os"
"path/filepath"
@ -81,7 +81,7 @@ func RunEditCluster(f *util.Factory, cmd *cobra.Command, args []string, out io.W
return err
}
list, err := clientset.InstanceGroups(oldCluster.ObjectMeta.Name).List(k8sapi.ListOptions{})
list, err := clientset.InstanceGroups(oldCluster.ObjectMeta.Name).List(metav1.ListOptions{})
if err != nil {
return err
}

View File

@ -22,8 +22,8 @@ import (
"io"
"github.com/spf13/cobra"
"k8s.io/apimachinery/pkg/runtime"
api "k8s.io/kops/pkg/apis/kops"
"k8s.io/kubernetes/pkg/runtime"
)
// GetCmd represents the get command

View File

@ -23,11 +23,11 @@ import (
"github.com/spf13/cobra"
"io"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/sets"
api "k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/apis/kops/registry"
"k8s.io/kops/util/pkg/tables"
k8sapi "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/util/sets"
)
type GetClusterOptions struct {
@ -77,7 +77,7 @@ func RunGetClusters(context Factory, out io.Writer, options *GetClusterOptions)
return err
}
clusterList, err := client.Clusters().List(k8sapi.ListOptions{})
clusterList, err := client.Clusters().List(metav1.ListOptions{})
if err != nil {
return err
}

View File

@ -23,9 +23,9 @@ import (
"strings"
"github.com/spf13/cobra"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
api "k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/util/pkg/tables"
k8sapi "k8s.io/kubernetes/pkg/api"
)
type GetFederationOptions struct {
@ -56,7 +56,7 @@ func RunGetFederations(context Factory, out io.Writer, options *GetFederationOpt
return err
}
list, err := client.Federations().List(k8sapi.ListOptions{})
list, err := client.Federations().List(metav1.ListOptions{})
if err != nil {
return err
}

View File

@ -23,9 +23,9 @@ import (
"strings"
"github.com/spf13/cobra"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
api "k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/util/pkg/tables"
k8sapi "k8s.io/kubernetes/pkg/api"
)
type GetInstanceGroupsCmd struct {
@ -63,7 +63,7 @@ func (c *GetInstanceGroupsCmd) Run(args []string) error {
return err
}
list, err := clientset.InstanceGroups(clusterName).List(k8sapi.ListOptions{})
list, err := clientset.InstanceGroups(clusterName).List(metav1.ListOptions{})
if err != nil {
return err
}

View File

@ -26,7 +26,6 @@ import (
"k8s.io/kops/util/pkg/vfs"
kopsapi "k8s.io/kops/pkg/apis/kops"
k8sapi "k8s.io/kubernetes/pkg/api"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/resource"
)
@ -64,7 +63,7 @@ func RunReplace(f *util.Factory, cmd *cobra.Command, out io.Writer, c *ReplaceOp
}
// Codecs provides access to encoding and decoding for the scheme
codecs := k8sapi.Codecs //serializer.NewCodecFactory(scheme)
codecs := kopsapi.Codecs //serializer.NewCodecFactory(scheme)
codec := codecs.UniversalDecoder(kopsapi.SchemeGroupVersion)

View File

@ -25,16 +25,16 @@ import (
"github.com/golang/glog"
"github.com/spf13/cobra"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/pkg/api/v1"
"k8s.io/client-go/tools/clientcmd"
"k8s.io/kops/cmd/kops/util"
api "k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/featureflag"
"k8s.io/kops/upup/pkg/fi/cloudup"
"k8s.io/kops/upup/pkg/kutil"
"k8s.io/kops/util/pkg/tables"
k8sapi "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/v1"
k8s_clientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
)
// Command Object for a Rolling Update.
@ -171,14 +171,14 @@ func RunRollingUpdateCluster(f *util.Factory, out io.Writer, options *RollingUpd
}
var nodes []v1.Node
var k8sClient *k8s_clientset.Clientset
var k8sClient kubernetes.Interface
if !options.CloudOnly {
k8sClient, err = k8s_clientset.NewForConfig(config)
k8sClient, err = kubernetes.NewForConfig(config)
if err != nil {
return fmt.Errorf("cannot build kube client for %q: %v", contextName, err)
}
nodeList, err := k8sClient.Nodes().List(v1.ListOptions{})
nodeList, err := k8sClient.CoreV1().Nodes().List(metav1.ListOptions{})
if err != nil {
fmt.Fprintf(os.Stderr, "Unable to reach the kubernetes API.\n")
fmt.Fprintf(os.Stderr, "Use --cloudonly to do a rolling-update without confirming progress with the k8s API\n\n")
@ -190,7 +190,7 @@ func RunRollingUpdateCluster(f *util.Factory, out io.Writer, options *RollingUpd
}
}
list, err := clientset.InstanceGroups(cluster.ObjectMeta.Name).List(k8sapi.ListOptions{})
list, err := clientset.InstanceGroups(cluster.ObjectMeta.Name).List(metav1.ListOptions{})
if err != nil {
return err
}

View File

@ -25,12 +25,12 @@ import (
"github.com/golang/glog"
"github.com/spf13/cobra"
"github.com/spf13/viper"
"k8s.io/apimachinery/pkg/util/validation/field"
"k8s.io/client-go/tools/clientcmd"
"k8s.io/kops/cmd/kops/util"
kopsapi "k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/client/simple"
"k8s.io/kops/upup/pkg/kutil"
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
"k8s.io/kubernetes/pkg/util/validation/field"
// Register our APIs
_ "k8s.io/kops/pkg/apis/kops/install"

View File

@ -20,11 +20,11 @@ import (
"fmt"
"github.com/spf13/cobra"
"io"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kops/cmd/kops/util"
api "k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/upup/pkg/fi/cloudup/awsup"
"k8s.io/kops/upup/pkg/kutil"
k8sapi "k8s.io/kubernetes/pkg/api"
)
type ToolboxConvertImportedOptions struct {
@ -82,7 +82,7 @@ func RunToolboxConvertImported(f *util.Factory, out io.Writer, options *ToolboxC
return err
}
list, err := clientset.InstanceGroups(cluster.ObjectMeta.Name).List(k8sapi.ListOptions{})
list, err := clientset.InstanceGroups(cluster.ObjectMeta.Name).List(metav1.ListOptions{})
if err != nil {
return err
}

View File

@ -27,6 +27,7 @@ import (
"github.com/golang/glog"
"github.com/spf13/cobra"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kops/cmd/kops/util"
"k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/apis/kops/registry"
@ -34,7 +35,6 @@ import (
"k8s.io/kops/upup/pkg/fi/cloudup"
"k8s.io/kops/upup/pkg/fi/utils"
"k8s.io/kops/upup/pkg/kutil"
k8sapi "k8s.io/kubernetes/pkg/api"
)
type UpdateClusterOptions struct {
@ -153,7 +153,7 @@ func RunUpdateCluster(f *util.Factory, clusterName string, out io.Writer, c *Upd
var instanceGroups []*kops.InstanceGroup
{
list, err := clientset.InstanceGroups(cluster.ObjectMeta.Name).List(k8sapi.ListOptions{})
list, err := clientset.InstanceGroups(cluster.ObjectMeta.Name).List(metav1.ListOptions{})
if err != nil {
return err
}

View File

@ -23,6 +23,7 @@ import (
"github.com/blang/semver"
"github.com/golang/glog"
"github.com/spf13/cobra"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kops"
api "k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/apis/kops/util"
@ -30,7 +31,6 @@ import (
"k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/upup/pkg/fi/cloudup"
"k8s.io/kops/util/pkg/tables"
k8sapi "k8s.io/kubernetes/pkg/api"
)
type UpgradeClusterCmd struct {
@ -85,7 +85,7 @@ func (c *UpgradeClusterCmd) Run(args []string) error {
return err
}
list, err := clientset.InstanceGroups(cluster.ObjectMeta.Name).List(k8sapi.ListOptions{})
list, err := clientset.InstanceGroups(cluster.ObjectMeta.Name).List(metav1.ListOptions{})
if err != nil {
return err
}

View File

@ -18,10 +18,10 @@ package util
import (
"fmt"
"k8s.io/apimachinery/pkg/util/validation/field"
"k8s.io/kops/pkg/client/simple"
"k8s.io/kops/pkg/client/simple/vfsclientset"
"k8s.io/kops/util/pkg/vfs"
"k8s.io/kubernetes/pkg/util/validation/field"
// Register our APIs
_ "k8s.io/kops/pkg/apis/kops/install"

View File

@ -24,14 +24,14 @@ import (
"github.com/golang/glog"
"github.com/spf13/cobra"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/pkg/api/v1"
"k8s.io/client-go/tools/clientcmd"
"k8s.io/kops/cmd/kops/util"
api "k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/validation"
"k8s.io/kops/util/pkg/tables"
k8sapi "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/v1"
k8s_clientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
)
type ValidateClusterOptions struct {
@ -73,7 +73,7 @@ func RunValidateCluster(f *util.Factory, cmd *cobra.Command, args []string, out
return err
}
list, err := clientSet.InstanceGroups(cluster.ObjectMeta.Name).List(k8sapi.ListOptions{})
list, err := clientSet.InstanceGroups(cluster.ObjectMeta.Name).List(metav1.ListOptions{})
if err != nil {
return fmt.Errorf("cannot get InstanceGroups for %q: %v", cluster.ObjectMeta.Name, err)
}
@ -99,7 +99,7 @@ func RunValidateCluster(f *util.Factory, cmd *cobra.Command, args []string, out
return fmt.Errorf("Cannot load kubecfg settings for %q: %v\n", contextName, err)
}
k8sClient, err := k8s_clientset.NewForConfig(config)
k8sClient, err := kubernetes.NewForConfig(config)
if err != nil {
return fmt.Errorf("Cannot build kube api client for %q: %v\n", contextName, err)
}

View File

@ -26,10 +26,9 @@ import (
"k8s.io/kops/dns-controller/pkg/dns"
"k8s.io/kops/dns-controller/pkg/watchers"
"k8s.io/kubernetes/federation/pkg/dnsprovider"
client "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1"
client_extensions "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/extensions/v1beta1"
kubectl_util "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
_ "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/aws/route53"
_ "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns"
)
@ -58,9 +57,6 @@ func main() {
flag.Set("logtostderr", "true")
flags.AddGoFlagSet(flag.CommandLine)
clientConfig := kubectl_util.DefaultClientConfig(flags)
flags.Parse(os.Args)
zoneRules, err := dns.ParseZoneRules(zones)
@ -69,21 +65,21 @@ func main() {
os.Exit(1)
}
config, err := clientConfig.ClientConfig()
config, err := rest.InClusterConfig()
if err != nil {
glog.Errorf("error building client configuration: %v", err)
os.Exit(1)
}
kubeClient, err := client.NewForConfig(config)
kubeClient, err := kubernetes.NewForConfig(config)
if err != nil {
glog.Fatalf("error building REST client: %v", err)
}
kubeExtensionsClient, err := client_extensions.NewForConfig(config)
if err != nil {
glog.Fatalf("error building extensions REST client: %v", err)
}
//kubeExtensionsClient, err := client_extensions.NewForConfig(config)
//if err != nil {
// glog.Fatalf("error building extensions REST client: %v", err)
//}
dnsProvider, err := dnsprovider.GetDnsProvider(dnsProviderId, nil)
if err != nil {
@ -121,7 +117,7 @@ func main() {
var ingressController *watchers.IngressController
if watchIngress {
ingressController, err = watchers.NewIngressController(kubeExtensionsClient, dnsController)
ingressController, err = watchers.NewIngressController(kubeClient, dnsController)
if err != nil {
glog.Errorf("Error building ingress controller: %v", err)
os.Exit(1)

View File

@ -22,23 +22,23 @@ import (
"github.com/golang/glog"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/pkg/apis/extensions/v1beta1"
"k8s.io/kops/dns-controller/pkg/dns"
"k8s.io/kops/dns-controller/pkg/util"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
client_extensions "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/extensions/v1beta1"
"k8s.io/kubernetes/pkg/watch"
)
// IngressController watches for Ingress objects with dns labels
type IngressController struct {
util.Stoppable
kubeClient client_extensions.ExtensionsV1beta1Interface
kubeClient kubernetes.Interface
scope dns.Scope
}
// newIngressController creates a ingressController
func NewIngressController(kubeClient client_extensions.ExtensionsV1beta1Interface, dns dns.Context) (*IngressController, error) {
func NewIngressController(kubeClient kubernetes.Interface, dns dns.Context) (*IngressController, error) {
scope, err := dns.CreateScope("ingress")
if err != nil {
return nil, fmt.Errorf("error building dns scope: %v", err)
@ -64,12 +64,12 @@ func (c *IngressController) Run() {
func (c *IngressController) runWatcher(stopCh <-chan struct{}) {
runOnce := func() (bool, error) {
var listOpts v1.ListOptions
var listOpts metav1.ListOptions
glog.Warningf("querying without label filter")
//listOpts.LabelSelector = labels.Everything()
glog.Warningf("querying without field filter")
//listOpts.FieldSelector = fields.Everything()
ingressList, err := c.kubeClient.Ingresses("").List(listOpts)
ingressList, err := c.kubeClient.ExtensionsV1beta1().Ingresses("").List(listOpts)
if err != nil {
return false, fmt.Errorf("error listing ingresss: %v", err)
}
@ -86,7 +86,7 @@ func (c *IngressController) runWatcher(stopCh <-chan struct{}) {
//listOpts.FieldSelector = fields.Everything()
listOpts.Watch = true
listOpts.ResourceVersion = ingressList.ResourceVersion
watcher, err := c.kubeClient.Ingresses("").Watch(listOpts)
watcher, err := c.kubeClient.ExtensionsV1beta1().Ingresses("").Watch(listOpts)
if err != nil {
return false, fmt.Errorf("error watching ingresss: %v", err)
}

View File

@ -21,23 +21,23 @@ import (
"time"
"github.com/golang/glog"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/pkg/api/v1"
"k8s.io/kops/dns-controller/pkg/dns"
"k8s.io/kops/dns-controller/pkg/util"
"k8s.io/kubernetes/pkg/api/v1"
client "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1"
"k8s.io/kubernetes/pkg/watch"
)
// NodeController watches for nodes
type NodeController struct {
util.Stoppable
kubeClient client.CoreV1Interface
kubeClient kubernetes.Interface
scope dns.Scope
}
// newNodeController creates a nodeController
func NewNodeController(kubeClient client.CoreV1Interface, dns dns.Context) (*NodeController, error) {
func NewNodeController(kubeClient kubernetes.Interface, dns dns.Context) (*NodeController, error) {
scope, err := dns.CreateScope("node")
if err != nil {
return nil, fmt.Errorf("error building dns scope: %v", err)
@ -63,14 +63,14 @@ func (c *NodeController) Run() {
func (c *NodeController) runWatcher(stopCh <-chan struct{}) {
runOnce := func() (bool, error) {
var listOpts v1.ListOptions
var listOpts metav1.ListOptions
// Note we need to watch all the nodes, to set up alias targets
//listOpts.LabelSelector = labels.Everything()
glog.Warningf("querying without field filter")
//listOpts.FieldSelector = fields.Everything()
nodeList, err := c.kubeClient.Nodes().List(listOpts)
nodeList, err := c.kubeClient.CoreV1().Nodes().List(listOpts)
if err != nil {
return false, fmt.Errorf("error listing nodes: %v", err)
}
@ -88,7 +88,7 @@ func (c *NodeController) runWatcher(stopCh <-chan struct{}) {
listOpts.Watch = true
listOpts.ResourceVersion = nodeList.ResourceVersion
watcher, err := c.kubeClient.Nodes().Watch(listOpts)
watcher, err := c.kubeClient.CoreV1().Nodes().Watch(listOpts)
if err != nil {
return false, fmt.Errorf("error watching nodes: %v", err)
}

View File

@ -22,23 +22,24 @@ import (
"github.com/golang/glog"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/pkg/api/v1"
"k8s.io/kops/dns-controller/pkg/dns"
"k8s.io/kops/dns-controller/pkg/util"
"k8s.io/kubernetes/pkg/api/v1"
client "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1"
"k8s.io/kubernetes/pkg/watch"
"strings"
)
// PodController watches for Pods with dns annotations
type PodController struct {
util.Stoppable
kubeClient client.CoreV1Interface
kubeClient kubernetes.Interface
scope dns.Scope
}
// newPodController creates a podController
func NewPodController(kubeClient client.CoreV1Interface, dns dns.Context) (*PodController, error) {
func NewPodController(kubeClient kubernetes.Interface, dns dns.Context) (*PodController, error) {
scope, err := dns.CreateScope("pod")
if err != nil {
return nil, fmt.Errorf("error building dns scope: %v", err)
@ -64,12 +65,12 @@ func (c *PodController) Run() {
func (c *PodController) runWatcher(stopCh <-chan struct{}) {
runOnce := func() (bool, error) {
var listOpts v1.ListOptions
var listOpts metav1.ListOptions
glog.Warningf("querying without label filter")
//listOpts.LabelSelector = labels.Everything()
glog.Warningf("querying without field filter")
//listOpts.FieldSelector = fields.Everything()
podList, err := c.kubeClient.Pods("").List(listOpts)
podList, err := c.kubeClient.CoreV1().Pods("").List(listOpts)
if err != nil {
return false, fmt.Errorf("error listing pods: %v", err)
}
@ -86,7 +87,7 @@ func (c *PodController) runWatcher(stopCh <-chan struct{}) {
//listOpts.FieldSelector = fields.Everything()
listOpts.Watch = true
listOpts.ResourceVersion = podList.ResourceVersion
watcher, err := c.kubeClient.Pods("").Watch(listOpts)
watcher, err := c.kubeClient.CoreV1().Pods("").Watch(listOpts)
if err != nil {
return false, fmt.Errorf("error watching pods: %v", err)
}

View File

@ -18,28 +18,26 @@ package watchers
import (
"fmt"
"time"
"github.com/golang/glog"
"strings"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/pkg/api/v1"
"k8s.io/kops/dns-controller/pkg/dns"
"k8s.io/kops/dns-controller/pkg/util"
"k8s.io/kubernetes/pkg/api/v1"
client "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1"
"k8s.io/kubernetes/pkg/watch"
"strings"
"time"
)
// ServiceController watches for services with dns annotations
type ServiceController struct {
util.Stoppable
kubeClient client.CoreV1Interface
kubeClient kubernetes.Interface
scope dns.Scope
}
// newServiceController creates a serviceController
func NewServiceController(kubeClient client.CoreV1Interface, dns dns.Context) (*ServiceController, error) {
func NewServiceController(kubeClient kubernetes.Interface, dns dns.Context) (*ServiceController, error) {
scope, err := dns.CreateScope("service")
if err != nil {
return nil, fmt.Errorf("error building dns scope: %v", err)
@ -65,12 +63,12 @@ func (c *ServiceController) Run() {
func (c *ServiceController) runWatcher(stopCh <-chan struct{}) {
runOnce := func() (bool, error) {
var listOpts v1.ListOptions
var listOpts metav1.ListOptions
glog.Warningf("querying without label filter")
//listOpts.LabelSelector = labels.Everything()
glog.Warningf("querying without field filter")
//listOpts.FieldSelector = fields.Everything()
serviceList, err := c.kubeClient.Services("").List(listOpts)
serviceList, err := c.kubeClient.CoreV1().Services("").List(listOpts)
if err != nil {
return false, fmt.Errorf("error listing services: %v", err)
}
@ -87,7 +85,7 @@ func (c *ServiceController) runWatcher(stopCh <-chan struct{}) {
//listOpts.FieldSelector = fields.Everything()
listOpts.Watch = true
listOpts.ResourceVersion = serviceList.ResourceVersion
watcher, err := c.kubeClient.Services("").Watch(listOpts)
watcher, err := c.kubeClient.CoreV1().Services("").Watch(listOpts)
if err != nil {
return false, fmt.Errorf("error watching services: %v", err)
}

View File

@ -22,8 +22,12 @@ import (
"crypto/rsa"
"fmt"
"github.com/golang/glog"
apierrors "k8s.io/apimachinery/pkg/api/errors"
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/pkg/api/v1"
"k8s.io/kops/federation/model"
"k8s.io/kops/federation/targets/kubernetes"
"k8s.io/kops/federation/targets/kubernetestarget"
"k8s.io/kops/federation/tasks"
kopsapi "k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/apis/kops/registry"
@ -33,10 +37,7 @@ import (
"k8s.io/kops/upup/pkg/fi/k8sapi"
"k8s.io/kops/upup/pkg/kutil"
federation_clientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
"k8s.io/kubernetes/pkg/api/errors"
k8sapiv1 "k8s.io/kubernetes/pkg/api/v1"
meta_v1 "k8s.io/kubernetes/pkg/apis/meta/v1"
k8s_clientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
"strings"
"text/template"
)
@ -112,7 +113,7 @@ func (o *ApplyFederationOperation) Run() error {
// TODO: sync clusters
var controllerKubernetesClients []k8s_clientset.Interface
var controllerKubernetesClients []kubernetes.Interface
for _, controller := range o.Federation.Spec.Controllers {
cluster, err := o.KopsClient.Clusters().Get(controller)
if err != nil {
@ -129,7 +130,7 @@ func (o *ApplyFederationOperation) Run() error {
return err
}
k8s := context.Target.(*kubernetes.KubernetesTarget).KubernetesClient
k8s := context.Target.(*kubernetestarget.KubernetesTarget).KubernetesClient
controllerKubernetesClients = append(controllerKubernetesClients, k8s)
}
@ -192,7 +193,7 @@ func (o *ApplyFederationOperation) federationContextForCluster(cluster *kopsapi.
return nil, err
}
target, err := kubernetes.NewKubernetesTarget(o.KopsClient, clusterKeystore, cluster)
target, err := kubernetestarget.NewKubernetesTarget(o.KopsClient, clusterKeystore, cluster)
if err != nil {
return nil, err
}
@ -359,20 +360,20 @@ func (o *ApplyFederationOperation) executeTemplate(key string, templateDefinitio
}
func (o *ApplyFederationOperation) EnsureNamespace(c *fi.Context) error {
k8s := c.Target.(*kubernetes.KubernetesTarget).KubernetesClient
k8s := c.Target.(*kubernetestarget.KubernetesTarget).KubernetesClient
ns, err := k8s.Core().Namespaces().Get(o.namespace, meta_v1.GetOptions{})
if err != nil {
if errors.IsNotFound(err) {
if apierrors.IsNotFound(err) {
ns = nil
} else {
return fmt.Errorf("error reading namespace: %v", err)
}
}
if ns == nil {
ns = &k8sapiv1.Namespace{}
ns = &v1.Namespace{}
ns.Name = o.namespace
ns, err = k8s.Core().Namespaces().Create(ns)
ns, err = k8s.CoreV1().Namespaces().Create(ns)
if err != nil {
return fmt.Errorf("error creating namespace: %v", err)
}

View File

@ -19,22 +19,23 @@ package federation
import (
"fmt"
"github.com/golang/glog"
apierrors "k8s.io/apimachinery/pkg/api/errors"
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/pkg/api/v1"
kopsapi "k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/apis/kops/registry"
"k8s.io/kops/pkg/kubeconfig"
"k8s.io/kops/upup/pkg/kutil"
"k8s.io/kubernetes/federation/apis/federation/v1beta1"
"k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
"k8s.io/kubernetes/pkg/api/errors"
"k8s.io/kubernetes/pkg/api/v1"
meta_v1 "k8s.io/kubernetes/pkg/apis/meta/v1"
k8s_clientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
k8sapiv1 "k8s.io/kubernetes/pkg/api/v1"
)
type FederationCluster struct {
FederationNamespace string
ControllerKubernetesClients []k8s_clientset.Interface
ControllerKubernetesClients []kubernetes.Interface
FederationClient federation_clientset.Interface
ClusterSecretName string
@ -90,7 +91,7 @@ func (o *FederationCluster) Run(cluster *kopsapi.Cluster) error {
return nil
}
func (o *FederationCluster) ensureFederationSecret(k8s k8s_clientset.Interface, caCertData []byte, user kubeconfig.KubectlUser) error {
func (o *FederationCluster) ensureFederationSecret(k8s kubernetes.Interface, caCertData []byte, user kubeconfig.KubectlUser) error {
_, err := mutateSecret(k8s, o.FederationNamespace, o.ClusterSecretName, func(s *v1.Secret) (*v1.Secret, error) {
var kubeconfigData []byte
var err error
@ -169,7 +170,7 @@ func (o *FederationCluster) ensureFederationCluster(federationClient federation_
}
// Secret containing credentials for connecting to cluster
c.Spec.SecretRef = &v1.LocalObjectReference{
c.Spec.SecretRef = &k8sapiv1.LocalObjectReference{
Name: o.ClusterSecretName,
}
return c, nil
@ -182,7 +183,7 @@ func findCluster(k8s federation_clientset.Interface, name string) (*v1beta1.Clus
glog.V(2).Infof("querying k8s for federation cluster %s", name)
c, err := k8s.Federation().Clusters().Get(name, meta_v1.GetOptions{})
if err != nil {
if errors.IsNotFound(err) {
if apierrors.IsNotFound(err) {
return nil, nil
} else {
return nil, fmt.Errorf("error reading federation cluster %s: %v", name, err)

View File

@ -19,16 +19,16 @@ package federation
import (
"fmt"
"github.com/golang/glog"
"k8s.io/kops/federation/targets/kubernetes"
apierrors "k8s.io/apimachinery/pkg/api/errors"
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/pkg/api/v1"
"k8s.io/kops/federation/targets/kubernetestarget"
kopsapi "k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/kubeconfig"
"k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/upup/pkg/fi/fitasks"
"k8s.io/kops/upup/pkg/kutil"
"k8s.io/kubernetes/pkg/api/errors"
"k8s.io/kubernetes/pkg/api/v1"
meta_v1 "k8s.io/kubernetes/pkg/apis/meta/v1"
k8s_clientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
)
const UserAdmin = "admin"
@ -65,7 +65,7 @@ func (o *FederationConfiguration) extractKubecfg(c *fi.Context, f *kopsapi.Feder
return nil, err
}
k8s := c.Target.(*kubernetes.KubernetesTarget).KubernetesClient
k8s := c.Target.(*kubernetestarget.KubernetesTarget).KubernetesClient
// Basic auth
secret, err := findSecret(k8s, o.Namespace, o.ApiserverSecretName)
@ -168,7 +168,7 @@ func (o *FederationConfiguration) EnsureConfiguration(c *fi.Context) error {
return fmt.Errorf("cannot find server keypair")
}
k8s := c.Target.(*kubernetes.KubernetesTarget).KubernetesClient
k8s := c.Target.(*kubernetestarget.KubernetesTarget).KubernetesClient
adminPassword := ""
//adminToken := ""
@ -275,7 +275,7 @@ func (o *FederationConfiguration) EnsureConfiguration(c *fi.Context) error {
}
func (o *FederationConfiguration) ensureSecretKubeconfig(c *fi.Context, caCert *fi.Certificate, user kubeconfig.KubectlUser) error {
k8s := c.Target.(*kubernetes.KubernetesTarget).KubernetesClient
k8s := c.Target.(*kubernetestarget.KubernetesTarget).KubernetesClient
_, err := mutateSecret(k8s, o.Namespace, o.KubeconfigSecretName, func(s *v1.Secret) (*v1.Secret, error) {
var kubeconfigData []byte
@ -341,11 +341,11 @@ func (o *FederationConfiguration) ensureSecretKubeconfig(c *fi.Context, caCert *
return err
}
func findSecret(k8s k8s_clientset.Interface, namespace, name string) (*v1.Secret, error) {
func findSecret(k8s kubernetes.Interface, namespace, name string) (*v1.Secret, error) {
glog.V(2).Infof("querying k8s for secret %s/%s", namespace, name)
s, err := k8s.Core().Secrets(namespace).Get(name, meta_v1.GetOptions{})
s, err := k8s.CoreV1().Secrets(namespace).Get(name, meta_v1.GetOptions{})
if err != nil {
if errors.IsNotFound(err) {
if apierrors.IsNotFound(err) {
return nil, nil
} else {
return nil, fmt.Errorf("error reading secret %s/%s: %v", namespace, name, err)
@ -354,7 +354,7 @@ func findSecret(k8s k8s_clientset.Interface, namespace, name string) (*v1.Secret
return s, nil
}
func mutateSecret(k8s k8s_clientset.Interface, namespace string, name string, fn func(s *v1.Secret) (*v1.Secret, error)) (*v1.Secret, error) {
func mutateSecret(k8s kubernetes.Interface, namespace string, name string, fn func(s *v1.Secret) (*v1.Secret, error)) (*v1.Secret, error) {
existing, err := findSecret(k8s, namespace, name)
if err != nil {
return nil, err
@ -370,7 +370,7 @@ func mutateSecret(k8s k8s_clientset.Interface, namespace string, name string, fn
if createObject {
glog.V(2).Infof("creating k8s secret %s/%s", namespace, name)
created, err := k8s.Core().Secrets(namespace).Create(updated)
created, err := k8s.CoreV1().Secrets(namespace).Create(updated)
if err != nil {
return nil, fmt.Errorf("error creating secret %s/%s: %v", namespace, name, err)
}

View File

@ -19,17 +19,17 @@ package federation
import (
"fmt"
"github.com/golang/glog"
apierrors "k8s.io/apimachinery/pkg/api/errors"
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
"k8s.io/kubernetes/pkg/api/errors"
"k8s.io/kubernetes/pkg/api/v1"
meta_v1 "k8s.io/kubernetes/pkg/apis/meta/v1"
)
func findNamespace(k8s federation_clientset.Interface, name string) (*v1.Namespace, error) {
glog.V(2).Infof("querying k8s for federation Namespace %s", name)
c, err := k8s.Core().Namespaces().Get(name, meta_v1.GetOptions{})
c, err := k8s.CoreV1().Namespaces().Get(name, meta_v1.GetOptions{})
if err != nil {
if errors.IsNotFound(err) {
if apierrors.IsNotFound(err) {
return nil, nil
} else {
return nil, fmt.Errorf("error reading federation Namespace %s: %v", name, err)
@ -53,7 +53,7 @@ func mutateNamespace(k8s federation_clientset.Interface, name string, fn func(s
if createObject {
glog.V(2).Infof("creating federation Namespace %s", name)
created, err := k8s.Core().Namespaces().Create(updated)
created, err := k8s.CoreV1().Namespaces().Create(updated)
if err != nil {
return nil, fmt.Errorf("error creating federation Namespace %s: %v", name, err)
}

View File

@ -14,21 +14,21 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package kubernetes
package kubernetestarget
import (
"fmt"
"k8s.io/client-go/kubernetes"
kopsapi "k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/client/simple"
"k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/upup/pkg/kutil"
k8s_clientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
)
type KubernetesTarget struct {
//kubectlContext string
//keystore *k8sapi.KubernetesKeystore
KubernetesClient k8s_clientset.Interface
KubernetesClient kubernetes.Interface
cluster *kopsapi.Cluster
}
@ -50,7 +50,7 @@ func NewKubernetesTarget(clientset simple.Clientset, keystore fi.Keystore, clust
return nil, fmt.Errorf("error building configuration for cluster %q: %v", cluster.ObjectMeta.Name, err)
}
k8sClient, err := k8s_clientset.NewForConfig(clientConfig)
k8sClient, err := kubernetes.NewForConfig(clientConfig)
if err != nil {
return nil, fmt.Errorf("cannot build k8s client: %v", err)
}

View File

@ -18,9 +18,9 @@ package tasks
import (
"fmt"
"k8s.io/kops/federation/targets/kubernetes"
"k8s.io/apimachinery/pkg/util/validation/field"
"k8s.io/kops/federation/targets/kubernetestarget"
"k8s.io/kops/upup/pkg/fi"
"k8s.io/kubernetes/pkg/util/validation/field"
)
//go:generate fitask -type=KubernetesResource
@ -57,7 +57,7 @@ func (_ *KubernetesResource) Render(c *fi.Context, a, e, changes *KubernetesReso
return field.Required(field.NewPath("Name"), "")
}
target, ok := c.Target.(*kubernetes.KubernetesTarget)
target, ok := c.Target.(*kubernetestarget.KubernetesTarget)
if !ok {
return fmt.Errorf("Expected KubernetesTarget, got %T", c.Target)
}

View File

@ -15,7 +15,7 @@ k8s.io/kops/dns-controller/pkg/watchers
k8s.io/kops/examples/kops-api-example
k8s.io/kops/federation
k8s.io/kops/federation/model
k8s.io/kops/federation/targets/kubernetes
k8s.io/kops/federation/targets/kubernetestarget
k8s.io/kops/federation/tasks
k8s.io/kops/nodeup/pkg/bootstrap
k8s.io/kops/nodeup/pkg/distros

View File

@ -19,13 +19,13 @@ package bootstrap
import (
"fmt"
"github.com/golang/glog"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/kops/nodeup/pkg/distros"
"k8s.io/kops/pkg/systemd"
"k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/upup/pkg/fi/nodeup/local"
"k8s.io/kops/upup/pkg/fi/nodeup/nodetasks"
"k8s.io/kops/util/pkg/vfs"
"k8s.io/kubernetes/pkg/util/sets"
"strings"
"time"
)

View File

@ -20,11 +20,11 @@ import (
"bytes"
"fmt"
"github.com/golang/glog"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/pkg/api"
"k8s.io/client-go/pkg/api/v1"
_ "k8s.io/kubernetes/pkg/api/install"
_ "k8s.io/client-go/pkg/api/install"
)
func encoder() runtime.Encoder {

View File

@ -20,13 +20,13 @@ import (
"fmt"
"strings"
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/client-go/pkg/api/v1"
"k8s.io/kops/pkg/flagbuilder"
"k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/upup/pkg/fi/nodeup/nodetasks"
"k8s.io/kubernetes/pkg/api/resource"
"k8s.io/kubernetes/pkg/api/v1"
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
"k8s.io/kubernetes/pkg/util/intstr"
)
// KubeAPIServerBuilder install kube-apiserver (just the manifest at the moment)
@ -83,7 +83,7 @@ func (b *KubeAPIServerBuilder) buildPod() (*v1.Pod, error) {
APIVersion: "v1",
Kind: "Pod",
},
ObjectMeta: v1.ObjectMeta{
ObjectMeta: metav1.ObjectMeta{
Name: "kube-apiserver",
Namespace: "kube-system",
Annotations: b.buildAnnotations(),

View File

@ -18,13 +18,13 @@ package model
import (
"fmt"
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/client-go/pkg/api/v1"
"k8s.io/kops/pkg/flagbuilder"
"k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/upup/pkg/fi/nodeup/nodetasks"
"k8s.io/kubernetes/pkg/api/resource"
"k8s.io/kubernetes/pkg/api/v1"
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
"k8s.io/kubernetes/pkg/util/intstr"
"strings"
)
@ -82,7 +82,7 @@ func (b *KubeControllerManagerBuilder) buildPod() (*v1.Pod, error) {
APIVersion: "v1",
Kind: "Pod",
},
ObjectMeta: v1.ObjectMeta{
ObjectMeta: metav1.ObjectMeta{
Name: "kube-controller-manager",
Namespace: "kube-system",
Labels: map[string]string{

View File

@ -20,11 +20,11 @@ import (
"fmt"
"github.com/blang/semver"
"github.com/golang/glog"
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kops/pkg/apis/kops/util"
"k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/util/pkg/vfs"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/meta/v1"
"net/url"
)
@ -34,7 +34,7 @@ const AlphaChannel = "alpha"
type Channel struct {
v1.TypeMeta `json:",inline"`
ObjectMeta api.ObjectMeta `json:"metadata,omitempty"`
ObjectMeta metav1.ObjectMeta `json:"metadata,omitempty"`
Spec ChannelSpec `json:"spec,omitempty"`
}

View File

@ -19,20 +19,19 @@ package kops
import (
"fmt"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/meta/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
type Cluster struct {
v1.TypeMeta `json:",inline"`
ObjectMeta api.ObjectMeta `json:"metadata,omitempty"`
metav1.TypeMeta `json:",inline"`
ObjectMeta metav1.ObjectMeta `json:"metadata,omitempty"`
Spec ClusterSpec `json:"spec,omitempty"`
}
type ClusterList struct {
v1.TypeMeta `json:",inline"`
v1.ListMeta `json:"metadata,omitempty"`
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []Cluster `json:"items"`
}

View File

@ -20,16 +20,14 @@ import (
"bytes"
"fmt"
"github.com/golang/glog"
k8sapi "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
)
func decoder() runtime.Decoder {
// TODO: Cache?
// Codecs provides access to encoding and decoding for the scheme
codecs := k8sapi.Codecs
codec := codecs.UniversalDecoder(SchemeGroupVersion)
codec := Codecs.UniversalDecoder(SchemeGroupVersion)
return codec
}
@ -38,12 +36,12 @@ func encoder(version string) runtime.Encoder {
//yaml := json.NewYAMLSerializer(json.DefaultMetaFactory, k8sapi.Scheme, k8sapi.Scheme)
// TODO: Cache?
yaml, ok := runtime.SerializerInfoForMediaType(k8sapi.Codecs.SupportedMediaTypes(), "application/yaml")
yaml, ok := runtime.SerializerInfoForMediaType(Codecs.SupportedMediaTypes(), "application/yaml")
if !ok {
glog.Fatalf("no YAML serializer registered")
}
gv := schema.GroupVersion{Group: GroupName, Version: version}
return k8sapi.Codecs.EncoderForVersion(yaml.Serializer, gv)
return Codecs.EncoderForVersion(yaml.Serializer, gv)
}
func preferredAPIVersion() string {

View File

@ -17,7 +17,7 @@ limitations under the License.
package kops
import (
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime"
)
// ApiType adds a Validate() method to runtime.Object

View File

@ -16,7 +16,7 @@ limitations under the License.
package kops
import metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
type KubeletConfigSpec struct {
// not used for clusters version 1.6 and later - flag removed

View File

@ -17,14 +17,13 @@ limitations under the License.
package kops
import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/meta/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// Federation represents a federated set of kubernetes clusters
type Federation struct {
v1.TypeMeta `json:",inline"`
ObjectMeta api.ObjectMeta `json:"metadata,omitempty"`
metav1.TypeMeta `json:",inline"`
ObjectMeta metav1.ObjectMeta `json:"metadata,omitempty"`
Spec FederationSpec `json:"spec,omitempty"`
}
@ -37,8 +36,8 @@ type FederationSpec struct {
}
type FederationList struct {
v1.TypeMeta `json:",inline"`
v1.ListMeta `json:"metadata,omitempty"`
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []Federation `json:"items"`
}

View File

@ -19,19 +19,22 @@ limitations under the License.
package install
import (
"k8s.io/apimachinery/pkg/apimachinery/announced"
"k8s.io/apimachinery/pkg/apimachinery/registered"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/apis/kops/v1alpha1"
"k8s.io/kops/pkg/apis/kops/v1alpha2"
"k8s.io/kubernetes/pkg/apimachinery/announced"
)
func init() {
if err := register(); err != nil {
if err := Install(kops.GroupFactoryRegistry, kops.Registry, kops.Scheme); err != nil {
panic(err)
}
}
func register() error {
// Install registers the API group and adds types to a scheme
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) error {
return announced.NewGroupMetaFactory(
&announced.GroupMetaFactoryArgs{
GroupName: kops.GroupName,
@ -47,5 +50,5 @@ func register() error {
v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme,
v1alpha2.SchemeGroupVersion.Version: v1alpha2.AddToScheme,
},
).Announce().RegisterAndEnable()
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme)
}

View File

@ -19,24 +19,23 @@ package kops
import (
"fmt"
"github.com/golang/glog"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/meta/v1"
"k8s.io/kubernetes/pkg/util/validation/field"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/validation/field"
)
const LabelClusterName = "kops.k8s.io/cluster"
// InstanceGroup represents a group of instances (either nodes or masters) with the same configuration
type InstanceGroup struct {
v1.TypeMeta `json:",inline"`
ObjectMeta api.ObjectMeta `json:"metadata,omitempty"`
metav1.TypeMeta `json:",inline"`
ObjectMeta metav1.ObjectMeta `json:"metadata,omitempty"`
Spec InstanceGroupSpec `json:"spec,omitempty"`
}
type InstanceGroupList struct {
v1.TypeMeta `json:",inline"`
v1.ListMeta `json:"metadata,omitempty"`
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []InstanceGroup `json:"items"`
}

View File

@ -17,8 +17,12 @@ limitations under the License.
package kops
import (
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/apimachinery/announced"
"k8s.io/apimachinery/pkg/apimachinery/registered"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/runtime/serializer"
"os"
)
var (
@ -26,6 +30,14 @@ var (
AddToScheme = SchemeBuilder.AddToScheme
)
var GroupFactoryRegistry = make(announced.APIGroupFactoryRegistry)
var Registry = registered.NewOrDie(os.Getenv("KOPS_API_VERSIONS"))
var Scheme = runtime.NewScheme()
var Codecs = serializer.NewCodecFactory(Scheme)
// GroupName is the group name use in this package
const GroupName = "kops"

View File

@ -18,11 +18,11 @@ package registry
import (
"fmt"
"k8s.io/apimachinery/pkg/util/validation/field"
api "k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/upup/pkg/fi/secrets"
"k8s.io/kops/util/pkg/vfs"
"k8s.io/kubernetes/pkg/util/validation/field"
"strings"
)

View File

@ -17,13 +17,12 @@ limitations under the License.
package v1alpha1
import (
"k8s.io/kubernetes/pkg/api/v1"
meta_v1 "k8s.io/kubernetes/pkg/apis/meta/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
type Cluster struct {
meta_v1.TypeMeta `json:",inline"`
ObjectMeta v1.ObjectMeta `json:"metadata,omitempty"`
metav1.TypeMeta `json:",inline"`
ObjectMeta metav1.ObjectMeta `json:"metadata,omitempty"`
// Spec defines the behavior of a Cluster.
Spec ClusterSpec `json:"spec,omitempty"`
@ -34,8 +33,8 @@ type Cluster struct {
}
type ClusterList struct {
meta_v1.TypeMeta `json:",inline"`
meta_v1.ListMeta `json:"metadata,omitempty"`
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []Cluster `json:"items"`
}

View File

@ -16,7 +16,7 @@ limitations under the License.
package v1alpha1
import metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
type KubeletConfigSpec struct {
// not used for clusters version 1.6 and later

View File

@ -18,8 +18,8 @@ package v1alpha1
import (
"fmt"
"k8s.io/apimachinery/pkg/conversion"
"k8s.io/kops/pkg/apis/kops"
"k8s.io/kubernetes/pkg/conversion"
"reflect"
"sort"
"strings"

View File

@ -18,7 +18,7 @@ package v1alpha1
import (
"github.com/golang/glog"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime"
)
func addDefaultingFuncs(scheme *runtime.Scheme) error {

View File

@ -17,13 +17,12 @@ limitations under the License.
package v1alpha1
import (
"k8s.io/kubernetes/pkg/api/v1"
meta_v1 "k8s.io/kubernetes/pkg/apis/meta/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
type Federation struct {
meta_v1.TypeMeta `json:",inline"`
ObjectMeta v1.ObjectMeta `json:"metadata,omitempty"`
metav1.TypeMeta `json:",inline"`
ObjectMeta metav1.ObjectMeta `json:"metadata,omitempty"`
Spec FederationSpec `json:"spec"`
}
@ -36,8 +35,8 @@ type FederationSpec struct {
}
type FederationList struct {
meta_v1.TypeMeta `json:",inline"`
meta_v1.ListMeta `json:"metadata,omitempty"`
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []Federation `json:"items"`
}

View File

@ -17,21 +17,20 @@ limitations under the License.
package v1alpha1
import (
"k8s.io/kubernetes/pkg/api/v1"
meta_v1 "k8s.io/kubernetes/pkg/apis/meta/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// InstanceGroup represents a group of instances (either nodes or masters) with the same configuration
type InstanceGroup struct {
meta_v1.TypeMeta `json:",inline"`
ObjectMeta v1.ObjectMeta `json:"metadata,omitempty"`
metav1.TypeMeta `json:",inline"`
ObjectMeta metav1.ObjectMeta `json:"metadata,omitempty"`
Spec InstanceGroupSpec `json:"spec,omitempty"`
}
type InstanceGroupList struct {
meta_v1.TypeMeta `json:",inline"`
meta_v1.ListMeta `json:"metadata,omitempty"`
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []InstanceGroup `json:"items"`
}

View File

@ -17,9 +17,9 @@ limitations under the License.
package v1alpha1
import (
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/runtime/schema"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
)
var (
@ -52,9 +52,9 @@ func addKnownTypes(scheme *runtime.Scheme) error {
&InstanceGroupList{},
&Federation{},
&FederationList{},
&v1.ListOptions{},
)
// ?? versionedwatch.AddToGroupVersion(scheme, SchemeGroupVersion)
metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
return nil
}

View File

@ -21,10 +21,9 @@ limitations under the License.
package v1alpha1
import (
conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
kops "k8s.io/kops/pkg/apis/kops"
api "k8s.io/kubernetes/pkg/api"
conversion "k8s.io/kubernetes/pkg/conversion"
runtime "k8s.io/kubernetes/pkg/runtime"
)
func init() {
@ -245,9 +244,6 @@ func Convert_kops_CloudConfiguration_To_v1alpha1_CloudConfiguration(in *kops.Clo
}
func autoConvert_v1alpha1_Cluster_To_kops_Cluster(in *Cluster, out *kops.Cluster, s conversion.Scope) error {
if err := api.Convert_v1_TypeMeta_To_v1_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
// TODO: Inefficient conversion - can we improve it?
if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil {
return err
@ -263,9 +259,6 @@ func Convert_v1alpha1_Cluster_To_kops_Cluster(in *Cluster, out *kops.Cluster, s
}
func autoConvert_kops_Cluster_To_v1alpha1_Cluster(in *kops.Cluster, out *Cluster, s conversion.Scope) error {
if err := api.Convert_v1_TypeMeta_To_v1_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
// TODO: Inefficient conversion - can we improve it?
if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil {
return err
@ -281,9 +274,6 @@ func Convert_kops_Cluster_To_v1alpha1_Cluster(in *kops.Cluster, out *Cluster, s
}
func autoConvert_v1alpha1_ClusterList_To_kops_ClusterList(in *ClusterList, out *kops.ClusterList, s conversion.Scope) error {
if err := api.Convert_v1_TypeMeta_To_v1_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
out.ListMeta = in.ListMeta
if in.Items != nil {
in, out := &in.Items, &out.Items
@ -304,9 +294,6 @@ func Convert_v1alpha1_ClusterList_To_kops_ClusterList(in *ClusterList, out *kops
}
func autoConvert_kops_ClusterList_To_v1alpha1_ClusterList(in *kops.ClusterList, out *ClusterList, s conversion.Scope) error {
if err := api.Convert_v1_TypeMeta_To_v1_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
out.ListMeta = in.ListMeta
if in.Items != nil {
in, out := &in.Items, &out.Items
@ -767,9 +754,6 @@ func Convert_kops_ExternalNetworkingSpec_To_v1alpha1_ExternalNetworkingSpec(in *
}
func autoConvert_v1alpha1_Federation_To_kops_Federation(in *Federation, out *kops.Federation, s conversion.Scope) error {
if err := api.Convert_v1_TypeMeta_To_v1_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
// TODO: Inefficient conversion - can we improve it?
if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil {
return err
@ -785,9 +769,6 @@ func Convert_v1alpha1_Federation_To_kops_Federation(in *Federation, out *kops.Fe
}
func autoConvert_kops_Federation_To_v1alpha1_Federation(in *kops.Federation, out *Federation, s conversion.Scope) error {
if err := api.Convert_v1_TypeMeta_To_v1_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
// TODO: Inefficient conversion - can we improve it?
if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil {
return err
@ -803,9 +784,6 @@ func Convert_kops_Federation_To_v1alpha1_Federation(in *kops.Federation, out *Fe
}
func autoConvert_v1alpha1_FederationList_To_kops_FederationList(in *FederationList, out *kops.FederationList, s conversion.Scope) error {
if err := api.Convert_v1_TypeMeta_To_v1_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
out.ListMeta = in.ListMeta
if in.Items != nil {
in, out := &in.Items, &out.Items
@ -826,9 +804,6 @@ func Convert_v1alpha1_FederationList_To_kops_FederationList(in *FederationList,
}
func autoConvert_kops_FederationList_To_v1alpha1_FederationList(in *kops.FederationList, out *FederationList, s conversion.Scope) error {
if err := api.Convert_v1_TypeMeta_To_v1_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
out.ListMeta = in.ListMeta
if in.Items != nil {
in, out := &in.Items, &out.Items
@ -887,9 +862,6 @@ func Convert_kops_FlannelNetworkingSpec_To_v1alpha1_FlannelNetworkingSpec(in *ko
}
func autoConvert_v1alpha1_InstanceGroup_To_kops_InstanceGroup(in *InstanceGroup, out *kops.InstanceGroup, s conversion.Scope) error {
if err := api.Convert_v1_TypeMeta_To_v1_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
// TODO: Inefficient conversion - can we improve it?
if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil {
return err
@ -905,9 +877,6 @@ func Convert_v1alpha1_InstanceGroup_To_kops_InstanceGroup(in *InstanceGroup, out
}
func autoConvert_kops_InstanceGroup_To_v1alpha1_InstanceGroup(in *kops.InstanceGroup, out *InstanceGroup, s conversion.Scope) error {
if err := api.Convert_v1_TypeMeta_To_v1_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
// TODO: Inefficient conversion - can we improve it?
if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil {
return err
@ -923,9 +892,6 @@ func Convert_kops_InstanceGroup_To_v1alpha1_InstanceGroup(in *kops.InstanceGroup
}
func autoConvert_v1alpha1_InstanceGroupList_To_kops_InstanceGroupList(in *InstanceGroupList, out *kops.InstanceGroupList, s conversion.Scope) error {
if err := api.Convert_v1_TypeMeta_To_v1_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
out.ListMeta = in.ListMeta
if in.Items != nil {
in, out := &in.Items, &out.Items
@ -946,9 +912,6 @@ func Convert_v1alpha1_InstanceGroupList_To_kops_InstanceGroupList(in *InstanceGr
}
func autoConvert_kops_InstanceGroupList_To_v1alpha1_InstanceGroupList(in *kops.InstanceGroupList, out *InstanceGroupList, s conversion.Scope) error {
if err := api.Convert_v1_TypeMeta_To_v1_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
out.ListMeta = in.ListMeta
if in.Items != nil {
in, out := &in.Items, &out.Items

View File

@ -21,7 +21,7 @@ limitations under the License.
package v1alpha1
import (
runtime "k8s.io/kubernetes/pkg/runtime"
runtime "k8s.io/apimachinery/pkg/runtime"
)
// RegisterDefaults adds defaulters functions to the given scheme.

View File

@ -17,20 +17,19 @@ limitations under the License.
package v1alpha2
import (
"k8s.io/kubernetes/pkg/api/v1"
meta_v1 "k8s.io/kubernetes/pkg/apis/meta/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
type Cluster struct {
meta_v1.TypeMeta `json:",inline"`
ObjectMeta v1.ObjectMeta `json:"metadata,omitempty"`
metav1.TypeMeta `json:",inline"`
ObjectMeta metav1.ObjectMeta `json:"metadata,omitempty"`
Spec ClusterSpec `json:"spec,omitempty"`
}
type ClusterList struct {
meta_v1.TypeMeta `json:",inline"`
meta_v1.ListMeta `json:"metadata,omitempty"`
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []Cluster `json:"items"`
}

View File

@ -16,7 +16,7 @@ limitations under the License.
package v1alpha2
import metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
type KubeletConfigSpec struct {
// not used for clusters version 1.6 and later

View File

@ -18,7 +18,7 @@ package v1alpha2
import (
"github.com/golang/glog"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime"
)
func addDefaultingFuncs(scheme *runtime.Scheme) error {

View File

@ -17,14 +17,13 @@ limitations under the License.
package v1alpha2
import (
"k8s.io/kubernetes/pkg/api/v1"
meta_v1 "k8s.io/kubernetes/pkg/apis/meta/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// Federation represents a federated set of kubernetes clusters
type Federation struct {
meta_v1.TypeMeta `json:",inline"`
ObjectMeta v1.ObjectMeta `json:"metadata,omitempty"`
metav1.TypeMeta `json:",inline"`
ObjectMeta metav1.ObjectMeta `json:"metadata,omitempty"`
Spec FederationSpec `json:"spec,omitempty"`
}
@ -37,8 +36,8 @@ type FederationSpec struct {
}
type FederationList struct {
meta_v1.TypeMeta `json:",inline"`
meta_v1.ListMeta `json:"metadata,omitempty"`
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []Federation `json:"items"`
}

View File

@ -17,21 +17,20 @@ limitations under the License.
package v1alpha2
import (
"k8s.io/kubernetes/pkg/api/v1"
meta_v1 "k8s.io/kubernetes/pkg/apis/meta/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// InstanceGroup represents a group of instances (either nodes or masters) with the same configuration
type InstanceGroup struct {
meta_v1.TypeMeta `json:",inline"`
ObjectMeta v1.ObjectMeta `json:"metadata,omitempty"`
metav1.TypeMeta `json:",inline"`
ObjectMeta metav1.ObjectMeta `json:"metadata,omitempty"`
Spec InstanceGroupSpec `json:"spec,omitempty"`
}
type InstanceGroupList struct {
meta_v1.TypeMeta `json:",inline"`
meta_v1.ListMeta `json:"metadata,omitempty"`
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []InstanceGroup `json:"items"`
}

View File

@ -17,9 +17,9 @@ limitations under the License.
package v1alpha2
import (
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/runtime/schema"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
)
var (
@ -53,9 +53,9 @@ func addKnownTypes(scheme *runtime.Scheme) error {
&InstanceGroupList{},
&Federation{},
&FederationList{},
&v1.ListOptions{},
)
// ?? versionedwatch.AddToGroupVersion(scheme, SchemeGroupVersion)
metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
return nil
}

View File

@ -21,10 +21,9 @@ limitations under the License.
package v1alpha2
import (
conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
kops "k8s.io/kops/pkg/apis/kops"
api "k8s.io/kubernetes/pkg/api"
conversion "k8s.io/kubernetes/pkg/conversion"
runtime "k8s.io/kubernetes/pkg/runtime"
)
func init() {
@ -271,9 +270,6 @@ func Convert_kops_CloudConfiguration_To_v1alpha2_CloudConfiguration(in *kops.Clo
}
func autoConvert_v1alpha2_Cluster_To_kops_Cluster(in *Cluster, out *kops.Cluster, s conversion.Scope) error {
if err := api.Convert_v1_TypeMeta_To_v1_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
// TODO: Inefficient conversion - can we improve it?
if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil {
return err
@ -289,9 +285,6 @@ func Convert_v1alpha2_Cluster_To_kops_Cluster(in *Cluster, out *kops.Cluster, s
}
func autoConvert_kops_Cluster_To_v1alpha2_Cluster(in *kops.Cluster, out *Cluster, s conversion.Scope) error {
if err := api.Convert_v1_TypeMeta_To_v1_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
// TODO: Inefficient conversion - can we improve it?
if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil {
return err
@ -307,9 +300,6 @@ func Convert_kops_Cluster_To_v1alpha2_Cluster(in *kops.Cluster, out *Cluster, s
}
func autoConvert_v1alpha2_ClusterList_To_kops_ClusterList(in *ClusterList, out *kops.ClusterList, s conversion.Scope) error {
if err := api.Convert_v1_TypeMeta_To_v1_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
out.ListMeta = in.ListMeta
if in.Items != nil {
in, out := &in.Items, &out.Items
@ -330,9 +320,6 @@ func Convert_v1alpha2_ClusterList_To_kops_ClusterList(in *ClusterList, out *kops
}
func autoConvert_kops_ClusterList_To_v1alpha2_ClusterList(in *kops.ClusterList, out *ClusterList, s conversion.Scope) error {
if err := api.Convert_v1_TypeMeta_To_v1_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
out.ListMeta = in.ListMeta
if in.Items != nil {
in, out := &in.Items, &out.Items
@ -857,9 +844,6 @@ func Convert_kops_ExternalNetworkingSpec_To_v1alpha2_ExternalNetworkingSpec(in *
}
func autoConvert_v1alpha2_Federation_To_kops_Federation(in *Federation, out *kops.Federation, s conversion.Scope) error {
if err := api.Convert_v1_TypeMeta_To_v1_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
// TODO: Inefficient conversion - can we improve it?
if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil {
return err
@ -875,9 +859,6 @@ func Convert_v1alpha2_Federation_To_kops_Federation(in *Federation, out *kops.Fe
}
func autoConvert_kops_Federation_To_v1alpha2_Federation(in *kops.Federation, out *Federation, s conversion.Scope) error {
if err := api.Convert_v1_TypeMeta_To_v1_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
// TODO: Inefficient conversion - can we improve it?
if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil {
return err
@ -893,9 +874,6 @@ func Convert_kops_Federation_To_v1alpha2_Federation(in *kops.Federation, out *Fe
}
func autoConvert_v1alpha2_FederationList_To_kops_FederationList(in *FederationList, out *kops.FederationList, s conversion.Scope) error {
if err := api.Convert_v1_TypeMeta_To_v1_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
out.ListMeta = in.ListMeta
if in.Items != nil {
in, out := &in.Items, &out.Items
@ -916,9 +894,6 @@ func Convert_v1alpha2_FederationList_To_kops_FederationList(in *FederationList,
}
func autoConvert_kops_FederationList_To_v1alpha2_FederationList(in *kops.FederationList, out *FederationList, s conversion.Scope) error {
if err := api.Convert_v1_TypeMeta_To_v1_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
out.ListMeta = in.ListMeta
if in.Items != nil {
in, out := &in.Items, &out.Items
@ -977,9 +952,6 @@ func Convert_kops_FlannelNetworkingSpec_To_v1alpha2_FlannelNetworkingSpec(in *ko
}
func autoConvert_v1alpha2_InstanceGroup_To_kops_InstanceGroup(in *InstanceGroup, out *kops.InstanceGroup, s conversion.Scope) error {
if err := api.Convert_v1_TypeMeta_To_v1_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
// TODO: Inefficient conversion - can we improve it?
if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil {
return err
@ -995,9 +967,6 @@ func Convert_v1alpha2_InstanceGroup_To_kops_InstanceGroup(in *InstanceGroup, out
}
func autoConvert_kops_InstanceGroup_To_v1alpha2_InstanceGroup(in *kops.InstanceGroup, out *InstanceGroup, s conversion.Scope) error {
if err := api.Convert_v1_TypeMeta_To_v1_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
// TODO: Inefficient conversion - can we improve it?
if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil {
return err
@ -1013,9 +982,6 @@ func Convert_kops_InstanceGroup_To_v1alpha2_InstanceGroup(in *kops.InstanceGroup
}
func autoConvert_v1alpha2_InstanceGroupList_To_kops_InstanceGroupList(in *InstanceGroupList, out *kops.InstanceGroupList, s conversion.Scope) error {
if err := api.Convert_v1_TypeMeta_To_v1_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
out.ListMeta = in.ListMeta
if in.Items != nil {
in, out := &in.Items, &out.Items
@ -1036,9 +1002,6 @@ func Convert_v1alpha2_InstanceGroupList_To_kops_InstanceGroupList(in *InstanceGr
}
func autoConvert_kops_InstanceGroupList_To_v1alpha2_InstanceGroupList(in *kops.InstanceGroupList, out *InstanceGroupList, s conversion.Scope) error {
if err := api.Convert_v1_TypeMeta_To_v1_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
out.ListMeta = in.ListMeta
if in.Items != nil {
in, out := &in.Items, &out.Items

View File

@ -21,7 +21,7 @@ limitations under the License.
package v1alpha2
import (
runtime "k8s.io/kubernetes/pkg/runtime"
runtime "k8s.io/apimachinery/pkg/runtime"
)
// RegisterDefaults adds defaulters functions to the given scheme.

View File

@ -17,7 +17,7 @@ limitations under the License.
package validation
import (
"k8s.io/kubernetes/pkg/util/validation/field"
"k8s.io/apimachinery/pkg/util/validation/field"
"net"
"net/url"
)

View File

@ -19,11 +19,11 @@ package validation
import (
"fmt"
"github.com/blang/semver"
"k8s.io/apimachinery/pkg/util/validation"
"k8s.io/apimachinery/pkg/util/validation/field"
"k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/apis/kops/util"
"k8s.io/kops/upup/pkg/fi"
"k8s.io/kubernetes/pkg/util/validation"
"k8s.io/kubernetes/pkg/util/validation/field"
"net"
"strings"
)

View File

@ -18,10 +18,10 @@ package validation
import (
"fmt"
"k8s.io/apimachinery/pkg/api/validation"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/validation/field"
"k8s.io/kops/pkg/apis/kops"
"k8s.io/kubernetes/pkg/api/validation"
"k8s.io/kubernetes/pkg/util/sets"
"k8s.io/kubernetes/pkg/util/validation/field"
"net"
"strings"
)

View File

@ -17,10 +17,10 @@ limitations under the License.
package validation
import (
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/validation"
"k8s.io/apimachinery/pkg/util/validation/field"
"k8s.io/kops/pkg/apis/kops"
"k8s.io/kubernetes/pkg/util/sets"
"k8s.io/kubernetes/pkg/util/validation"
"k8s.io/kubernetes/pkg/util/validation/field"
"testing"
)

View File

@ -17,8 +17,8 @@ limitations under the License.
package simple
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
api "k8s.io/kops/pkg/apis/kops"
k8sapi "k8s.io/kubernetes/pkg/api"
)
// ClusterInterface has methods to work with Cluster resources.
@ -29,7 +29,7 @@ type ClusterInterface interface {
//Delete(name string, options *api.DeleteOptions) error
//DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error
Get(name string) (*api.Cluster, error)
List(opts k8sapi.ListOptions) (*api.ClusterList, error)
List(opts metav1.ListOptions) (*api.ClusterList, error)
//Watch(opts k8sapi.ListOptions) (watch.Interface, error)
//Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *api.Cluster, err error)
//ClusterExpansion

View File

@ -17,8 +17,8 @@ limitations under the License.
package simple
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
api "k8s.io/kops/pkg/apis/kops"
k8sapi "k8s.io/kubernetes/pkg/api"
)
// FederationInterface has methods to work with Federation resources.
@ -26,10 +26,10 @@ type FederationInterface interface {
Create(*api.Federation) (*api.Federation, error)
Update(*api.Federation) (*api.Federation, error)
//UpdateStatus(*api.Federation) (*api.Federation, error)
Delete(name string, options *k8sapi.DeleteOptions) error
Delete(name string, options *metav1.DeleteOptions) error
//DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error
Get(name string) (*api.Federation, error)
List(opts k8sapi.ListOptions) (*api.FederationList, error)
List(opts metav1.ListOptions) (*api.FederationList, error)
//Watch(opts k8sapi.ListOptions) (watch.Interface, error)
//Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *api.Federation, err error)
//FederationExpansion

View File

@ -17,8 +17,8 @@ limitations under the License.
package simple
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
api "k8s.io/kops/pkg/apis/kops"
k8sapi "k8s.io/kubernetes/pkg/api"
)
// InstanceGroupInterface has methods to work with InstanceGroup resources.
@ -26,10 +26,10 @@ type InstanceGroupInterface interface {
Create(*api.InstanceGroup) (*api.InstanceGroup, error)
Update(*api.InstanceGroup) (*api.InstanceGroup, error)
//UpdateStatus(*api.InstanceGroup) (*api.InstanceGroup, error)
Delete(name string, options *k8sapi.DeleteOptions) error
Delete(name string, options *metav1.DeleteOptions) error
//DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error
Get(name string) (*api.InstanceGroup, error)
List(opts k8sapi.ListOptions) (*api.InstanceGroupList, error)
List(opts metav1.ListOptions) (*api.InstanceGroupList, error)
//Watch(opts k8sapi.ListOptions) (watch.Interface, error)
//Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *api.InstanceGroup, err error)
//InstanceGroupExpansion

View File

@ -19,14 +19,13 @@ package vfsclientset
import (
"fmt"
"github.com/golang/glog"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
api "k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/apis/kops/registry"
"k8s.io/kops/pkg/apis/kops/v1alpha1"
"k8s.io/kops/pkg/apis/kops/validation"
"k8s.io/kops/pkg/client/simple"
"k8s.io/kops/util/pkg/vfs"
k8sapi "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/meta/v1"
"os"
"strings"
"time"
@ -59,7 +58,7 @@ func (c *ClusterVFS) ConfigBase(clusterName string) (vfs.Path, error) {
return configPath, nil
}
func (c *ClusterVFS) List(options k8sapi.ListOptions) (*api.ClusterList, error) {
func (c *ClusterVFS) List(options metav1.ListOptions) (*api.ClusterList, error) {
names, err := c.listNames()
if err != nil {
return nil, err
@ -92,7 +91,7 @@ func (r *ClusterVFS) Create(c *api.Cluster) (*api.Cluster, error) {
}
if c.ObjectMeta.CreationTimestamp.IsZero() {
c.ObjectMeta.CreationTimestamp = v1.NewTime(time.Now().UTC())
c.ObjectMeta.CreationTimestamp = metav1.NewTime(time.Now().UTC())
}
clusterName := c.ObjectMeta.Name

View File

@ -20,13 +20,13 @@ import (
"bytes"
"fmt"
"github.com/golang/glog"
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
kops "k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/apis/kops/v1alpha2"
"k8s.io/kops/util/pkg/vfs"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/meta/v1"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/runtime/schema"
"os"
"reflect"
"sort"
@ -44,12 +44,12 @@ type commonVFS struct {
}
func (c *commonVFS) init(kind string, basePath vfs.Path, storeVersion runtime.GroupVersioner) {
yaml, ok := runtime.SerializerInfoForMediaType(api.Codecs.SupportedMediaTypes(), "application/yaml")
yaml, ok := runtime.SerializerInfoForMediaType(kops.Codecs.SupportedMediaTypes(), "application/yaml")
if !ok {
glog.Fatalf("no YAML serializer registered")
}
c.encoder = api.Codecs.EncoderForVersion(yaml.Serializer, storeVersion)
c.decoder = api.Codecs.DecoderToVersion(yaml.Serializer, kops.SchemeGroupVersion)
c.encoder = kops.Codecs.EncoderForVersion(yaml.Serializer, storeVersion)
c.decoder = kops.Codecs.DecoderToVersion(yaml.Serializer, kops.SchemeGroupVersion)
c.kind = kind
c.basePath = basePath
@ -66,12 +66,12 @@ func (c *commonVFS) get(name string) (runtime.Object, error) {
return o, nil
}
func (c *commonVFS) list(items interface{}, options api.ListOptions) (interface{}, error) {
func (c *commonVFS) list(items interface{}, options metav1.ListOptions) (interface{}, error) {
return c.readAll(items)
}
func (c *commonVFS) create(i runtime.Object) error {
objectMeta, err := api.ObjectMetaFor(i)
objectMeta, err := metav1.ObjectMetaFor(i)
if err != nil {
return err
}
@ -162,7 +162,7 @@ func (c *commonVFS) writeConfig(configPath vfs.Path, o runtime.Object, writeOpti
}
func (c *commonVFS) update(i runtime.Object) error {
objectMeta, err := api.ObjectMetaFor(i)
objectMeta, err := metav1.ObjectMetaFor(i)
if err != nil {
return err
}
@ -184,7 +184,7 @@ func (c *commonVFS) update(i runtime.Object) error {
return nil
}
func (c *commonVFS) delete(name string, options *api.DeleteOptions) error {
func (c *commonVFS) delete(name string, options *metav1.DeleteOptions) error {
p := c.basePath.Join(name)
err := p.Remove()
if err != nil {

View File

@ -17,10 +17,10 @@ limitations under the License.
package vfsclientset
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
api "k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/apis/kops/v1alpha1"
"k8s.io/kops/pkg/client/simple"
k8sapi "k8s.io/kubernetes/pkg/api"
)
type FederationVFS struct {
@ -50,7 +50,7 @@ func (c *FederationVFS) Get(name string) (*api.Federation, error) {
return o.(*api.Federation), nil
}
func (c *FederationVFS) List(options k8sapi.ListOptions) (*api.FederationList, error) {
func (c *FederationVFS) List(options metav1.ListOptions) (*api.FederationList, error) {
list := &api.FederationList{}
items, err := c.list(list.Items, options)
if err != nil {
@ -76,6 +76,6 @@ func (c *FederationVFS) Update(g *api.Federation) (*api.Federation, error) {
return g, nil
}
func (c *FederationVFS) Delete(name string, options *k8sapi.DeleteOptions) error {
func (c *FederationVFS) Delete(name string, options *metav1.DeleteOptions) error {
return c.delete(name, options)
}

View File

@ -20,13 +20,13 @@ package vfsclientset
import (
"fmt"
"k8s.io/kops/pkg/apis/kops"
_ "k8s.io/kops/pkg/apis/kops/install"
_ "k8s.io/kubernetes/pkg/api/install"
"k8s.io/kubernetes/pkg/apimachinery/registered"
)
func init() {
if missingVersions := registered.ValidateEnvRequestedVersions(); len(missingVersions) != 0 {
if missingVersions := kops.Registry.ValidateEnvRequestedVersions(); len(missingVersions) != 0 {
panic(fmt.Sprintf("KUBE_API_VERSIONS contains versions that are not installed: %q.", missingVersions))
}
}

View File

@ -18,10 +18,10 @@ package vfsclientset
import (
"github.com/golang/glog"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
api "k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/apis/kops/v1alpha1"
"k8s.io/kops/pkg/client/simple"
k8sapi "k8s.io/kubernetes/pkg/api"
)
type InstanceGroupVFS struct {
@ -70,7 +70,7 @@ func (c *InstanceGroupVFS) addLabels(ig *api.InstanceGroup) {
ig.ObjectMeta.Labels[api.LabelClusterName] = c.clusterName
}
func (c *InstanceGroupVFS) List(options k8sapi.ListOptions) (*api.InstanceGroupList, error) {
func (c *InstanceGroupVFS) List(options metav1.ListOptions) (*api.InstanceGroupList, error) {
list := &api.InstanceGroupList{}
items, err := c.list(list.Items, options)
if err != nil {
@ -99,6 +99,6 @@ func (c *InstanceGroupVFS) Update(g *api.InstanceGroup) (*api.InstanceGroup, err
return g, nil
}
func (c *InstanceGroupVFS) Delete(name string, options *k8sapi.DeleteOptions) error {
func (c *InstanceGroupVFS) Delete(name string, options *metav1.DeleteOptions) error {
return c.delete(name, options)
}

View File

@ -18,10 +18,10 @@ package edit
import (
"bytes"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/diff"
"k8s.io/kops/upup/pkg/fi/utils"
"k8s.io/kubernetes/pkg/runtime"
)
// HasExtraFields checks if the yaml has fields that were not mapped to the object

View File

@ -23,8 +23,8 @@ import (
"strings"
"github.com/golang/glog"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kops/upup/pkg/fi/utils"
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
)
// BuildFlags builds flag arguments based on "flag" tags on the structure

View File

@ -17,9 +17,9 @@ limitations under the License.
package flagbuilder
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/upup/pkg/fi"
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
"testing"
"time"
)

View File

@ -22,10 +22,10 @@ import (
"time"
"github.com/golang/glog"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/upup/pkg/fi/cloudup/awstasks"
"k8s.io/kubernetes/pkg/util/sets"
)
const LoadBalancerDefaultIdleTimeout = 5 * time.Minute

View File

@ -17,10 +17,10 @@ limitations under the License.
package model
import (
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/upup/pkg/fi/cloudup/awstasks"
"k8s.io/kubernetes/pkg/util/sets"
"time"
)

View File

@ -19,10 +19,10 @@ package components
import (
"fmt"
"github.com/blang/semver"
"k8s.io/client-go/pkg/api/v1"
"k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/upup/pkg/fi/loader"
"k8s.io/kubernetes/pkg/api"
)
// KubeAPIServerOptionsBuilder adds options for the apiserver to the model
@ -67,10 +67,10 @@ func (b *KubeAPIServerOptionsBuilder) BuildOptions(o interface{}) error {
// We prioritize the internal IP above the hostname
clusterSpec.KubeAPIServer.KubeletPreferredAddressTypes = []string{
string(api.NodeInternalIP),
string(api.NodeHostName),
string(api.NodeExternalIP),
string(api.NodeLegacyHostIP),
string(v1.NodeInternalIP),
string(v1.NodeHostName),
string(v1.NodeExternalIP),
string(v1.NodeLegacyHostIP),
}
}
}

View File

@ -21,12 +21,12 @@ import (
"time"
"github.com/golang/glog"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/apis/kops/util"
"k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/upup/pkg/fi/cloudup/gce"
"k8s.io/kops/upup/pkg/fi/loader"
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
)
const (

View File

@ -17,8 +17,8 @@ limitations under the License.
package components
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
api "k8s.io/kops/pkg/apis/kops"
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
"testing"
"time"
)

View File

@ -17,8 +17,8 @@ limitations under the License.
package model
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kops/pkg/apis/kops"
"k8s.io/kubernetes/pkg/api"
"testing"
)
@ -48,7 +48,7 @@ func Test_GetELBName32(t *testing.T) {
for _, g := range grid {
c := &KopsModelContext{
Cluster: &kops.Cluster{
ObjectMeta: api.ObjectMeta{
ObjectMeta: metav1.ObjectMeta{
Name: g.ClusterName,
},
},

View File

@ -18,11 +18,11 @@ package gcemodel
import (
"fmt"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/model"
"k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/upup/pkg/fi/cloudup/gcetasks"
"k8s.io/kubernetes/pkg/util/sets"
)
const (

View File

@ -22,10 +22,10 @@ import (
"strings"
"github.com/golang/glog"
"k8s.io/apimachinery/pkg/util/sets"
api "k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/util/stringorslice"
"k8s.io/kops/util/pkg/vfs"
"k8s.io/kubernetes/pkg/util/sets"
)
const IAMPolicyDefaultVersion = "2012-10-17"

View File

@ -19,10 +19,10 @@ package model
import (
"fmt"
"github.com/golang/glog"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/upup/pkg/fi/cloudup/awstasks"
"k8s.io/kubernetes/pkg/util/sets"
"strings"
)

View File

@ -21,10 +21,10 @@ import (
"time"
"github.com/golang/glog"
"k8s.io/kubernetes/pkg/api/v1"
meta_v1 "k8s.io/kubernetes/pkg/apis/meta/v1"
k8s_clientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
"k8s.io/kubernetes/pkg/util/wait"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/pkg/api/v1"
)
const (
@ -42,14 +42,14 @@ const (
// TODO: should we pool the api client connection? My initial thought is no.
type NodeAPIAdapter struct {
// K8s API client this sucker talks to K8s directly - not kubectl, hard api call
client k8s_clientset.Interface
client kubernetes.Interface
//TODO: convert to arg on WaitForNodeToBe
// K8s timeout on method call
timeout time.Duration
}
func NewNodeAPIAdapter(client k8s_clientset.Interface, timeout time.Duration) (*NodeAPIAdapter, error) {
func NewNodeAPIAdapter(client kubernetes.Interface, timeout time.Duration) (*NodeAPIAdapter, error) {
if client == nil {
return nil, fmt.Errorf("client not provided")
}
@ -61,8 +61,8 @@ func NewNodeAPIAdapter(client k8s_clientset.Interface, timeout time.Duration) (*
// GetAllNodes is a access to get all nodes from a cluster api
func (nodeAA *NodeAPIAdapter) GetAllNodes() (nodes *v1.NodeList, err error) {
opts := v1.ListOptions{}
nodes, err = nodeAA.client.Core().Nodes().List(opts)
opts := metav1.ListOptions{}
nodes, err = nodeAA.client.CoreV1().Nodes().List(opts)
if err != nil {
glog.V(4).Infof("getting nodes failed for node %v", err)
return nil, err
@ -111,7 +111,7 @@ func (nodeAA *NodeAPIAdapter) WaitForNodeToBe(nodeName string, conditionType v1.
var cond *v1.NodeCondition
err := wait.PollImmediate(Poll, nodeAA.timeout, func() (bool, error) {
node, err := nodeAA.client.Core().Nodes().Get(nodeName, meta_v1.GetOptions{})
node, err := nodeAA.client.Core().Nodes().Get(nodeName, metav1.GetOptions{})
// FIXME this is not erroring on 500's for instance. We will keep looping
if err != nil {
// TODO: Check if e.g. NotFound
@ -158,7 +158,7 @@ func (nodeAA *NodeAPIAdapter) waitListSchedulableNodes() (*v1.NodeList, error) {
var nodeList *v1.NodeList
err := wait.PollImmediate(Poll, SingleCallTimeout, func() (bool, error) {
var err error
nodeList, err = nodeAA.client.Core().Nodes().List(v1.ListOptions{FieldSelector: "spec.unschedulable=false"})
nodeList, err = nodeAA.client.Core().Nodes().List(metav1.ListOptions{FieldSelector: "spec.unschedulable=false"})
if err != nil {
// error logging TODO
return false, err

View File

@ -20,8 +20,9 @@ import (
"testing"
"time"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset/fake"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes/fake"
"k8s.io/client-go/pkg/api/v1"
)
//func TestBuildNodeAPIAdapter(t *testing.T) {
@ -66,7 +67,7 @@ func TestWaitForNodeToBeNotReady(t *testing.T) {
func setupNodeAA(t *testing.T, conditions []v1.NodeCondition, nodeName string) *NodeAPIAdapter {
node := &v1.Node{
ObjectMeta: v1.ObjectMeta{Name: nodeName},
ObjectMeta: metav1.ObjectMeta{Name: nodeName},
Spec: v1.NodeSpec{Unschedulable: false},
Status: v1.NodeStatus{Conditions: conditions},
}

View File

@ -20,10 +20,11 @@ import (
"fmt"
"time"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/pkg/api/v1"
"k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/upup/pkg/fi"
"k8s.io/kubernetes/pkg/api/v1"
k8s_clientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
)
// A cluster to validate
@ -53,7 +54,7 @@ type ValidationNode struct {
}
// ValidateCluster validate a k8s cluster with a provided instance group list
func ValidateCluster(clusterName string, instanceGroupList *kops.InstanceGroupList, clusterKubernetesClient k8s_clientset.Interface) (*ValidationCluster, error) {
func ValidateCluster(clusterName string, instanceGroupList *kops.InstanceGroupList, clusterKubernetesClient kubernetes.Interface) (*ValidationCluster, error) {
var instanceGroups []*kops.InstanceGroup
validationCluster := &ValidationCluster{}
@ -109,8 +110,8 @@ func getRoleNode(node *v1.Node) string {
return role
}
func collectComponentFailures(client k8s_clientset.Interface) (failures []string, err error) {
componentList, err := client.CoreV1().ComponentStatuses().List(v1.ListOptions{})
func collectComponentFailures(client kubernetes.Interface) (failures []string, err error) {
componentList, err := client.CoreV1().ComponentStatuses().List(metav1.ListOptions{})
if err == nil {
for _, component := range componentList.Items {
for _, condition := range component.Conditions {
@ -123,8 +124,8 @@ func collectComponentFailures(client k8s_clientset.Interface) (failures []string
return
}
func collectPodFailures(client k8s_clientset.Interface) (failures []string, err error) {
pods, err := client.CoreV1().Pods("kube-system").List(v1.ListOptions{})
func collectPodFailures(client kubernetes.Interface) (failures []string, err error) {
pods, err := client.CoreV1().Pods("kube-system").List(metav1.ListOptions{})
if err == nil {
for _, pod := range pods.Items {
for _, status := range pod.Status.ContainerStatuses {

View File

@ -20,13 +20,15 @@ import (
"fmt"
"testing"
"k8s.io/kubernetes/pkg/api/resource"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset/fake"
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes/fake"
"k8s.io/client-go/pkg/api/v1"
)
func Test_ValidateClusterPositive(t *testing.T) {
nodeList, err := dummyClient("true", "true").Core().Nodes().List(v1.ListOptions{})
nodeList, err := dummyClient("true", "true").Core().Nodes().List(metav1.ListOptions{})
if err != nil {
t.Fatalf("unexpected error: %v", err)
@ -42,7 +44,7 @@ func Test_ValidateClusterPositive(t *testing.T) {
}
func Test_ValidateClusterMasterAndNodeNotReady(t *testing.T) {
nodeList, err := dummyClient("false", "false").Core().Nodes().List(v1.ListOptions{})
nodeList, err := dummyClient("false", "false").Core().Nodes().List(metav1.ListOptions{})
if err != nil {
t.Fatalf("unexpected error: %v", err)
@ -58,7 +60,7 @@ func Test_ValidateClusterMasterAndNodeNotReady(t *testing.T) {
}
func Test_ValidateClusterComponents(t *testing.T) {
nodeList, err := dummyClient("true", "true").Core().Nodes().List(v1.ListOptions{})
nodeList, err := dummyClient("true", "true").Core().Nodes().List(metav1.ListOptions{})
if err != nil {
t.Fatalf("unexpected error: %v", err)
@ -75,7 +77,7 @@ func Test_ValidateClusterComponents(t *testing.T) {
}
func Test_ValidateClusterPods(t *testing.T) {
nodeList, err := dummyClient("true", "true").Core().Nodes().List(v1.ListOptions{})
nodeList, err := dummyClient("true", "true").Core().Nodes().List(metav1.ListOptions{})
if err != nil {
t.Fatalf("unexpected error: %v", err)
@ -92,7 +94,7 @@ func Test_ValidateClusterPods(t *testing.T) {
}
func Test_ValidateClusterNodeNotReady(t *testing.T) {
nodeList, err := dummyClient("true", "false").Core().Nodes().List(v1.ListOptions{})
nodeList, err := dummyClient("true", "false").Core().Nodes().List(metav1.ListOptions{})
if err != nil {
t.Fatalf("unexpected error: %v", err)
@ -108,7 +110,7 @@ func Test_ValidateClusterNodeNotReady(t *testing.T) {
}
func Test_ValidateClusterMastersNotEnough(t *testing.T) {
nodeList, err := dummyClient("true", "true").Core().Nodes().List(v1.ListOptions{})
nodeList, err := dummyClient("true", "true").Core().Nodes().List(metav1.ListOptions{})
if err != nil {
t.Fatalf("unexpected error: %v", err)
@ -134,7 +136,7 @@ func printDebug(validationCluster *ValidationCluster) {
const NODE_READY = "nodeReady"
func dummyClient(masterReady string, nodeReady string) *fake.Clientset {
func dummyClient(masterReady string, nodeReady string) kubernetes.Interface {
return fake.NewSimpleClientset(makeNodeList(
[]map[string]string{
{
@ -158,7 +160,7 @@ func dummyNode(nodeMap map[string]string) v1.Node {
nodeReady = v1.ConditionTrue
}
expectedNode := v1.Node{
ObjectMeta: v1.ObjectMeta{
ObjectMeta: metav1.ObjectMeta{
Name: nodeMap["name"],
Labels: map[string]string{
"kubernetes.io/role": nodeMap["kubernetes.io/role"],

View File

@ -19,12 +19,13 @@ package protokube
import (
"bytes"
"fmt"
"github.com/golang/glog"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/runtime"
_ "k8s.io/kubernetes/pkg/api/install"
"github.com/golang/glog"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/pkg/api"
"k8s.io/client-go/pkg/api/v1"
_ "k8s.io/client-go/pkg/api/install"
)
func encoder() runtime.Encoder {

View File

@ -21,7 +21,7 @@ import (
"fmt"
"github.com/golang/glog"
"io/ioutil"
"k8s.io/kubernetes/pkg/api/resource"
"k8s.io/apimachinery/pkg/api/resource"
"os"
"path"
"strings"

View File

@ -18,8 +18,8 @@ package protokube
import (
"fmt"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/util/intstr"
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/client-go/pkg/api/v1"
"strings"
)

View File

@ -17,12 +17,12 @@ limitations under the License.
package protokube
import (
"cloud.google.com/go/compute/metadata"
"fmt"
"github.com/golang/glog"
"golang.org/x/net/context"
"golang.org/x/oauth2/google"
compute "google.golang.org/api/compute/v0.beta"
"google.golang.org/cloud/compute/metadata"
"k8s.io/kops/upup/pkg/fi/cloudup/gce"
"net"
"strings"

View File

@ -18,43 +18,39 @@ package protokube
import (
"fmt"
"github.com/golang/glog"
k8s_clientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/clientcmd"
"sync"
)
type KubernetesContext struct {
mutex sync.Mutex
client *k8s_clientset.Clientset
client kubernetes.Interface
}
func NewKubernetesContext() *KubernetesContext {
return &KubernetesContext{}
}
func (c *KubernetesContext) KubernetesClient() (*k8s_clientset.Clientset, error) {
func (c *KubernetesContext) KubernetesClient() (kubernetes.Interface, error) {
c.mutex.Lock()
defer c.mutex.Unlock()
if c.client == nil {
config := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(
clientcmd.NewDefaultClientConfigLoadingRules(),
&clientcmd.ConfigOverrides{})
clientConfig, err := config.ClientConfig()
if err != nil {
if clientcmd.IsEmptyConfig(err) {
glog.V(2).Infof("No client config found; will use default config")
clientConfig, err = clientcmd.DefaultClientConfig.ClientConfig()
if err != nil {
return nil, fmt.Errorf("cannot build default kube config settings: %v", err)
}
} else {
return nil, fmt.Errorf("cannot load kubecfg settings: %v", err)
}
loadingRules := clientcmd.NewDefaultClientConfigLoadingRules()
loadingRules.DefaultClientConfig = &clientcmd.DefaultClientConfig
configOverrides := &clientcmd.ConfigOverrides{
ClusterDefaults: clientcmd.ClusterDefaults,
}
k8sClient, err := k8s_clientset.NewForConfig(clientConfig)
kubeConfig := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(loadingRules, configOverrides)
config, err := kubeConfig.ClientConfig()
if err != nil {
return nil, fmt.Errorf("cannot load kubecfg settings: %v", err)
}
k8sClient, err := kubernetes.NewForConfig(config)
if err != nil {
return nil, fmt.Errorf("cannot build kube client: %v", err)
}

View File

@ -20,9 +20,10 @@ import (
"encoding/json"
"fmt"
"github.com/golang/glog"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/labels"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/types"
"k8s.io/client-go/pkg/api/v1"
)
type nodePatch struct {
@ -38,6 +39,11 @@ type nodePatchSpec struct {
Unschedulable *bool `json:"unschedulable,omitempty"`
}
// TaintsAnnotationKey represents the key of taints data (json serialized)
// in the Annotations of a Node.
// Note that this is for k8s <= 1.5 only
const TaintsAnnotationKey string = "scheduler.alpha.kubernetes.io/taints"
// ApplyMasterTaints finds masters that have not yet been tainted, and applies the master taint
// Once the kubelet support --taints (like --labels) this can probably go away entirely.
// It also sets the unschedulable flag to false, so pods (with a toleration) can target the node
@ -47,11 +53,11 @@ func ApplyMasterTaints(kubeContext *KubernetesContext) error {
return err
}
options := v1.ListOptions{
options := metav1.ListOptions{
LabelSelector: labels.SelectorFromSet(labels.Set{"kubernetes.io/role": "master"}).String(),
}
glog.V(2).Infof("Querying k8s for nodes with selector %q", options.LabelSelector)
nodes, err := client.Core().Nodes().List(options)
nodes, err := client.CoreV1().Nodes().List(options)
if err != nil {
return fmt.Errorf("error querying nodes: %v", err)
}
@ -65,7 +71,7 @@ func ApplyMasterTaints(kubeContext *KubernetesContext) error {
for i := range nodes.Items {
node := &nodes.Items[i]
nodeTaintJSON := node.Annotations[v1.TaintsAnnotationKey]
nodeTaintJSON := node.Annotations[TaintsAnnotationKey]
if nodeTaintJSON != "" {
if nodeTaintJSON != string(taintJSON) {
glog.Infof("Node %q had unexpected taint: %v", node.Name, nodeTaintJSON)
@ -74,7 +80,7 @@ func ApplyMasterTaints(kubeContext *KubernetesContext) error {
}
nodePatchMetadata := &nodePatchMetadata{
Annotations: map[string]string{v1.TaintsAnnotationKey: string(taintJSON)},
Annotations: map[string]string{TaintsAnnotationKey: string(taintJSON)},
}
unschedulable := false
nodePatchSpec := &nodePatchSpec{
@ -91,7 +97,7 @@ func ApplyMasterTaints(kubeContext *KubernetesContext) error {
glog.V(2).Infof("sending patch for node %q: %q", node.Name, string(nodePatchJson))
_, err = client.Nodes().Patch(node.Name, api.StrategicMergePatchType, nodePatchJson)
_, err = client.CoreV1().Nodes().Patch(node.Name, types.StrategicMergePatchType, nodePatchJson)
if err != nil {
// TODO: Should we keep going?
return fmt.Errorf("error applying patch to node: %v", err)

View File

@ -19,9 +19,9 @@ package protokube
import (
"fmt"
"github.com/golang/glog"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/kubernetes/pkg/util/exec"
"k8s.io/kubernetes/pkg/util/mount"
"k8s.io/kubernetes/pkg/util/sets"
"os"
"sort"
"time"

Some files were not shown because too many files have changed in this diff Show More