Misc build fixes for dns-controller

This commit is contained in:
Justin Santa Barbara 2016-11-18 10:20:40 -05:00
parent a34adc9be3
commit 27026ff110
14 changed files with 86 additions and 71 deletions

View File

@ -21,7 +21,6 @@ import (
"github.com/spf13/cobra"
"k8s.io/kops/channels/pkg/channels"
"k8s.io/kops/util/pkg/tables"
k8sapi "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/v1"
"os"
)
@ -60,7 +59,7 @@ func (c *GetAddonsCmd) Run(args []string) error {
return err
}
namespaces, err := k8sClient.Namespaces().List(k8sapi.ListOptions{})
namespaces, err := k8sClient.Namespaces().List(v1.ListOptions{})
if err != nil {
return fmt.Errorf("error listing namespaces: %v", err)
}

View File

@ -23,7 +23,7 @@ import (
"github.com/golang/glog"
"github.com/spf13/cobra"
"github.com/spf13/viper"
"k8s.io/kubernetes/pkg/client/clientset_generated/release_1_3"
"k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
)
@ -79,7 +79,7 @@ func (c *RootCmd) AddCommand(cmd *cobra.Command) {
c.cobraCommand.AddCommand(cmd)
}
func (c *RootCmd) KubernetesClient() (*release_1_3.Clientset, error) {
func (c *RootCmd) KubernetesClient() (*release_1_5.Clientset, error) {
config := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(
clientcmd.NewDefaultClientConfigLoadingRules(),
&clientcmd.ConfigOverrides{})
@ -96,7 +96,7 @@ func (c *RootCmd) KubernetesClient() (*release_1_3.Clientset, error) {
}
}
k8sClient, err := release_1_3.NewForConfig(clientConfig)
k8sClient, err := release_1_5.NewForConfig(clientConfig)
if err != nil {
return nil, fmt.Errorf("cannot build kube client: %v", err)
}

View File

@ -20,7 +20,7 @@ import (
"fmt"
"github.com/golang/glog"
"k8s.io/kops/channels/pkg/api"
"k8s.io/kubernetes/pkg/client/clientset_generated/release_1_3"
"k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
"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 *release_1_3.Clientset) (*AddonUpdate, error) {
func (a *Addon) GetRequiredUpdates(k8sClient *release_1_5.Clientset) (*AddonUpdate, error) {
newVersion := a.ChannelVersion()
channel := a.buildChannel()
@ -78,7 +78,7 @@ func (a *Addon) GetRequiredUpdates(k8sClient *release_1_3.Clientset) (*AddonUpda
}, nil
}
func (a *Addon) EnsureUpdated(k8sClient *release_1_3.Clientset) (*AddonUpdate, error) {
func (a *Addon) EnsureUpdated(k8sClient *release_1_5.Clientset) (*AddonUpdate, error) {
required, err := a.GetRequiredUpdates(k8sClient)
if err != nil {
return nil, err

View File

@ -21,10 +21,9 @@ import (
"fmt"
"github.com/blang/semver"
"github.com/golang/glog"
"k8s.io/kops/upup/pkg/fi"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/client/clientset_generated/release_1_3"
"k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
"strings"
)
@ -47,7 +46,7 @@ func stringValue(s *string) string {
return *s
}
func (c *ChannelVersion) String() {
func (c *ChannelVersion) String() string {
return "Version=" + stringValue(c.Version) + " Channel=" + stringValue(c.Channel)
}
@ -116,7 +115,7 @@ func (c *ChannelVersion) Replaces(existing *ChannelVersion) bool {
return true
}
func (c *Channel) GetInstalledVersion(k8sClient *release_1_3.Clientset) (*ChannelVersion, error) {
func (c *Channel) GetInstalledVersion(k8sClient *release_1_5.Clientset) (*ChannelVersion, error) {
ns, err := k8sClient.Namespaces().Get(c.Namespace)
if err != nil {
return nil, fmt.Errorf("error querying namespace %q: %v", c.Namespace, err)
@ -137,7 +136,7 @@ type annotationPatchMetadata struct {
Annotations map[string]string `json:"annotations,omitempty"`
}
func (c *Channel) SetInstalledVersion(k8sClient *release_1_3.Clientset, version *ChannelVersion) error {
func (c *Channel) SetInstalledVersion(k8sClient *release_1_5.Clientset, version *ChannelVersion) error {
// Primarily to check it exists
_, err := k8sClient.Namespaces().Get(c.Namespace)
if err != nil {

View File

@ -23,8 +23,8 @@ 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/release_1_3/typed/core/v1"
client_extensions "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_3/typed/extensions/v1beta1"
client "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5/typed/core/v1"
client_extensions "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5/typed/extensions/v1beta1"
kubectl_util "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"os"

View File

@ -23,7 +23,6 @@ import (
"github.com/golang/glog"
"k8s.io/kops/dns-controller/pkg/util"
"k8s.io/kops/upup/pkg/fi/utils"
"k8s.io/kubernetes/federation/pkg/dnsprovider"
"k8s.io/kubernetes/federation/pkg/dnsprovider/rrstype"
"sort"
@ -247,7 +246,7 @@ func (c *DNSController) runOnce() error {
}
oldValues := oldValueMap[k]
if utils.StringSlicesEqual(newValues, oldValues) {
if util.StringSlicesEqual(newValues, oldValues) {
glog.V(4).Infof("no change to records for %s", k)
continue
}

View File

@ -0,0 +1,29 @@
/*
Copyright 2016 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package util
func StringSlicesEqual(l, r []string) bool {
if len(l) != len(r) {
return false
}
for i, v := range l {
if r[i] != v {
return false
}
}
return true
}

View File

@ -22,26 +22,23 @@ import (
"github.com/golang/glog"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
client_extensions "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_3/typed/extensions/v1beta1"
"k8s.io/kubernetes/pkg/fields"
"k8s.io/kubernetes/pkg/labels"
"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/release_1_5/typed/extensions/v1beta1"
"k8s.io/kubernetes/pkg/watch"
)
// IngressController watches for Ingress objects with dns labels
type IngressController struct {
util.Stoppable
kubeClient *client_extensions.ExtensionsClient
kubeClient client_extensions.ExtensionsV1beta1Interface
scope dns.Scope
}
// newIngressController creates a ingressController
func NewIngressController(kubeClient *client_extensions.ExtensionsClient, dns dns.Context) (*IngressController, error) {
func NewIngressController(kubeClient client_extensions.ExtensionsV1beta1Interface, dns dns.Context) (*IngressController, error) {
scope, err := dns.CreateScope("ingress")
if err != nil {
return nil, fmt.Errorf("error building dns scope: %v", err)
@ -67,11 +64,11 @@ func (c *IngressController) Run() {
func (c *IngressController) runWatcher(stopCh <-chan struct{}) {
runOnce := func() (bool, error) {
var listOpts api.ListOptions
var listOpts v1.ListOptions
glog.Warningf("querying without label filter")
listOpts.LabelSelector = labels.Everything()
//listOpts.LabelSelector = labels.Everything()
glog.Warningf("querying without field filter")
listOpts.FieldSelector = fields.Everything()
//listOpts.FieldSelector = fields.Everything()
ingressList, err := c.kubeClient.Ingresses("").List(listOpts)
if err != nil {
return false, fmt.Errorf("error listing ingresss: %v", err)
@ -84,9 +81,9 @@ func (c *IngressController) runWatcher(stopCh <-chan struct{}) {
c.scope.MarkReady()
glog.Warningf("querying without label filter")
listOpts.LabelSelector = labels.Everything()
//listOpts.LabelSelector = labels.Everything()
glog.Warningf("querying without field filter")
listOpts.FieldSelector = fields.Everything()
//listOpts.FieldSelector = fields.Everything()
listOpts.Watch = true
listOpts.ResourceVersion = ingressList.ResourceVersion
watcher, err := c.kubeClient.Ingresses("").Watch(listOpts)

View File

@ -24,23 +24,20 @@ import (
"k8s.io/kops/dns-controller/pkg/dns"
"k8s.io/kops/dns-controller/pkg/util"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/v1"
client "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_3/typed/core/v1"
"k8s.io/kubernetes/pkg/fields"
"k8s.io/kubernetes/pkg/labels"
client "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5/typed/core/v1"
"k8s.io/kubernetes/pkg/watch"
)
// NodeController watches for nodes
type NodeController struct {
util.Stoppable
kubeClient *client.CoreClient
kubeClient client.CoreV1Interface
scope dns.Scope
}
// newNodeController creates a nodeController
func NewNodeController(kubeClient *client.CoreClient, dns dns.Context) (*NodeController, error) {
func NewNodeController(kubeClient client.CoreV1Interface, dns dns.Context) (*NodeController, error) {
scope, err := dns.CreateScope("node")
if err != nil {
return nil, fmt.Errorf("error building dns scope: %v", err)
@ -66,12 +63,12 @@ func (c *NodeController) Run() {
func (c *NodeController) runWatcher(stopCh <-chan struct{}) {
runOnce := func() (bool, error) {
var listOpts api.ListOptions
var listOpts v1.ListOptions
// Note we need to watch all the nodes, to set up alias targets
listOpts.LabelSelector = labels.Everything()
//listOpts.LabelSelector = labels.Everything()
glog.Warningf("querying without field filter")
listOpts.FieldSelector = fields.Everything()
//listOpts.FieldSelector = fields.Everything()
nodeList, err := c.kubeClient.Nodes().List(listOpts)
if err != nil {
@ -85,9 +82,9 @@ func (c *NodeController) runWatcher(stopCh <-chan struct{}) {
c.scope.MarkReady()
// Note we need to watch all the nodes, to set up alias targets
listOpts.LabelSelector = labels.Everything()
//listOpts.LabelSelector = labels.Everything()
glog.Warningf("querying without field filter")
listOpts.FieldSelector = fields.Everything()
//listOpts.FieldSelector = fields.Everything()
listOpts.Watch = true
listOpts.ResourceVersion = nodeList.ResourceVersion

View File

@ -24,11 +24,8 @@ import (
"k8s.io/kops/dns-controller/pkg/dns"
"k8s.io/kops/dns-controller/pkg/util"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/v1"
client "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_3/typed/core/v1"
"k8s.io/kubernetes/pkg/fields"
"k8s.io/kubernetes/pkg/labels"
client "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5/typed/core/v1"
"k8s.io/kubernetes/pkg/watch"
"strings"
)
@ -36,12 +33,12 @@ import (
// PodController watches for Pods with dns annotations
type PodController struct {
util.Stoppable
kubeClient *client.CoreClient
kubeClient client.CoreV1Interface
scope dns.Scope
}
// newPodController creates a podController
func NewPodController(kubeClient *client.CoreClient, dns dns.Context) (*PodController, error) {
func NewPodController(kubeClient client.CoreV1Interface, dns dns.Context) (*PodController, error) {
scope, err := dns.CreateScope("pod")
if err != nil {
return nil, fmt.Errorf("error building dns scope: %v", err)
@ -67,11 +64,11 @@ func (c *PodController) Run() {
func (c *PodController) runWatcher(stopCh <-chan struct{}) {
runOnce := func() (bool, error) {
var listOpts api.ListOptions
var listOpts v1.ListOptions
glog.Warningf("querying without label filter")
listOpts.LabelSelector = labels.Everything()
//listOpts.LabelSelector = labels.Everything()
glog.Warningf("querying without field filter")
listOpts.FieldSelector = fields.Everything()
//listOpts.FieldSelector = fields.Everything()
podList, err := c.kubeClient.Pods("").List(listOpts)
if err != nil {
return false, fmt.Errorf("error listing pods: %v", err)
@ -84,9 +81,9 @@ func (c *PodController) runWatcher(stopCh <-chan struct{}) {
c.scope.MarkReady()
glog.Warningf("querying without label filter")
listOpts.LabelSelector = labels.Everything()
//listOpts.LabelSelector = labels.Everything()
glog.Warningf("querying without field filter")
listOpts.FieldSelector = fields.Everything()
//listOpts.FieldSelector = fields.Everything()
listOpts.Watch = true
listOpts.ResourceVersion = podList.ResourceVersion
watcher, err := c.kubeClient.Pods("").Watch(listOpts)

View File

@ -24,11 +24,8 @@ import (
"k8s.io/kops/dns-controller/pkg/dns"
"k8s.io/kops/dns-controller/pkg/util"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/v1"
client "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_3/typed/core/v1"
"k8s.io/kubernetes/pkg/fields"
"k8s.io/kubernetes/pkg/labels"
client "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5/typed/core/v1"
"k8s.io/kubernetes/pkg/watch"
"strings"
)
@ -36,12 +33,12 @@ import (
// ServiceController watches for services with dns annotations
type ServiceController struct {
util.Stoppable
kubeClient *client.CoreClient
kubeClient client.CoreV1Interface
scope dns.Scope
}
// newServiceController creates a serviceController
func NewServiceController(kubeClient *client.CoreClient, dns dns.Context) (*ServiceController, error) {
func NewServiceController(kubeClient client.CoreV1Interface, dns dns.Context) (*ServiceController, error) {
scope, err := dns.CreateScope("service")
if err != nil {
return nil, fmt.Errorf("error building dns scope: %v", err)
@ -67,11 +64,11 @@ func (c *ServiceController) Run() {
func (c *ServiceController) runWatcher(stopCh <-chan struct{}) {
runOnce := func() (bool, error) {
var listOpts api.ListOptions
var listOpts v1.ListOptions
glog.Warningf("querying without label filter")
listOpts.LabelSelector = labels.Everything()
//listOpts.LabelSelector = labels.Everything()
glog.Warningf("querying without field filter")
listOpts.FieldSelector = fields.Everything()
//listOpts.FieldSelector = fields.Everything()
serviceList, err := c.kubeClient.Services("").List(listOpts)
if err != nil {
return false, fmt.Errorf("error listing services: %v", err)
@ -84,9 +81,9 @@ func (c *ServiceController) runWatcher(stopCh <-chan struct{}) {
c.scope.MarkReady()
glog.Warningf("querying without label filter")
listOpts.LabelSelector = labels.Everything()
//listOpts.LabelSelector = labels.Everything()
glog.Warningf("querying without field filter")
listOpts.FieldSelector = fields.Everything()
//listOpts.FieldSelector = fields.Everything()
listOpts.Watch = true
listOpts.ResourceVersion = serviceList.ResourceVersion
watcher, err := c.kubeClient.Services("").Watch(listOpts)

View File

@ -1,3 +1,5 @@
#!/bin/bash -ex
# Copyright 2016 The Kubernetes Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
@ -12,8 +14,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#!/bin/bash -ex
mkdir -p /go
export GOPATH=/go

View File

@ -19,21 +19,21 @@ package protokube
import (
"fmt"
"github.com/golang/glog"
"k8s.io/kubernetes/pkg/client/clientset_generated/release_1_3"
"k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
"sync"
)
type KubernetesContext struct {
mutex sync.Mutex
client *release_1_3.Clientset
client *release_1_5.Clientset
}
func NewKubernetesContext() *KubernetesContext {
return &KubernetesContext{}
}
func (c *KubernetesContext) KubernetesClient() (*release_1_3.Clientset, error) {
func (c *KubernetesContext) KubernetesClient() (*release_1_5.Clientset, error) {
c.mutex.Lock()
defer c.mutex.Unlock()
@ -54,7 +54,7 @@ func (c *KubernetesContext) KubernetesClient() (*release_1_3.Clientset, error) {
}
}
k8sClient, err := release_1_3.NewForConfig(clientConfig)
k8sClient, err := release_1_5.NewForConfig(clientConfig)
if err != nil {
return nil, fmt.Errorf("cannot build kube client: %v", err)
}

View File

@ -22,6 +22,7 @@ import (
"github.com/golang/glog"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/api/v1"
)
type nodePatch struct {
@ -46,8 +47,8 @@ func ApplyMasterTaints(kubeContext *KubernetesContext) error {
return err
}
options := api.ListOptions{
LabelSelector: labels.SelectorFromSet(labels.Set{"kubernetes.io/role": "master"}),
options := v1.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)