Compare commits

..

1 Commits

Author SHA1 Message Date
Kubernetes Publisher
c096072e38 Update dependencies to v0.23.2 tag 2022-01-19 21:45:06 +00:00
8 changed files with 21 additions and 182 deletions

10
go.mod
View File

@@ -30,16 +30,16 @@ require (
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b
golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac
google.golang.org/protobuf v1.27.1
k8s.io/api v0.23.10
k8s.io/apimachinery v0.23.10
k8s.io/api v0.23.2
k8s.io/apimachinery v0.23.2
k8s.io/klog/v2 v2.30.0
k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65
k8s.io/utils v0.0.0-20211116205334-6203023598ed
k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b
sigs.k8s.io/structured-merge-diff/v4 v4.2.1
sigs.k8s.io/yaml v1.2.0
)
replace (
k8s.io/api => k8s.io/api v0.23.10
k8s.io/apimachinery => k8s.io/apimachinery v0.23.10
k8s.io/api => k8s.io/api v0.23.2
k8s.io/apimachinery => k8s.io/apimachinery v0.23.2
)

12
go.sum
View File

@@ -610,10 +610,10 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
k8s.io/api v0.23.10 h1:lbE62dyusvPnPUD5plS9X3hJQ4EWUt8iG69AigC6skE=
k8s.io/api v0.23.10/go.mod h1:+vpqBLTniW6bWQN7M3g3fttf3wQduJuRRmXGSb34Gas=
k8s.io/apimachinery v0.23.10 h1:ZZTDUh8kcKvpjptg/zOii7paedymrOIO9WOOOfZScVk=
k8s.io/apimachinery v0.23.10/go.mod h1:BEuFMMBaIbcOqVIJqNZJXGFTP4W6AycEpb5+m/97hrM=
k8s.io/api v0.23.2 h1:62cpzreV3dCuj0hqPi8r4dyWh48ogMcyh+ga9jEGij4=
k8s.io/api v0.23.2/go.mod h1:sYuDb3flCtRPI8ghn6qFrcK5ZBu2mhbElxRE95qpwlI=
k8s.io/apimachinery v0.23.2 h1:dBmjCOeYBdg2ibcQxMuUq+OopZ9fjfLIR5taP/XKeTs=
k8s.io/apimachinery v0.23.2/go.mod h1:zDqeV0AK62LbCI0CI7KbWCAYdLg+E+8UXJ0rIz5gmS8=
k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE=
k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
@@ -622,8 +622,8 @@ k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65 h1:E3J9oCLlaobFUqsjG9DfKbP2BmgwBL2p7pn0A3dG9W4=
k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk=
k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
k8s.io/utils v0.0.0-20211116205334-6203023598ed h1:ck1fRPWPJWsMd8ZRFsWc6mh/zHp5fZ/shhbrgPUxDAE=
k8s.io/utils v0.0.0-20211116205334-6203023598ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b h1:wxEMGetGMur3J1xuGLQY7GEQYg9bZxKn3tKo5k/eYcs=
k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=

View File

@@ -413,10 +413,6 @@ func (c *Clientset) Discovery() discovery.DiscoveryInterface {
func NewForConfig(c *rest.Config) (*Clientset, error) {
configShallowCopy := *c
if configShallowCopy.UserAgent == "" {
configShallowCopy.UserAgent = rest.DefaultKubernetesUserAgent()
}
// share the transport between all clients
httpClient, err := rest.HTTPClientFor(&configShallowCopy)
if err != nil {

View File

@@ -1,88 +0,0 @@
/*
Copyright 2022 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 kubernetes_test
import (
"context"
"net/http"
"net/http/httptest"
"testing"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes/scheme"
"k8s.io/client-go/rest"
)
func TestClientUserAgent(t *testing.T) {
tests := []struct {
name string
userAgent string
expect string
}{
{
name: "empty",
expect: rest.DefaultKubernetesUserAgent(),
},
{
name: "custom",
userAgent: "test-agent",
expect: "test-agent",
},
}
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
ts := httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
userAgent := r.Header.Get("User-Agent")
if userAgent != tc.expect {
t.Errorf("User Agent expected: %s got: %s", tc.expect, userAgent)
http.Error(w, "Unexpected user agent", http.StatusBadRequest)
return
}
w.Header().Set("Content-Type", "application/json")
w.Write([]byte("{}"))
}))
ts.Start()
defer ts.Close()
gv := v1.SchemeGroupVersion
config := &rest.Config{
Host: ts.URL,
}
config.GroupVersion = &gv
config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
config.UserAgent = tc.userAgent
config.ContentType = "application/json"
client, err := kubernetes.NewForConfig(config)
if err != nil {
t.Fatalf("failed to create REST client: %v", err)
}
_, err = client.CoreV1().Pods("").List(context.TODO(), metav1.ListOptions{})
if err != nil {
t.Error(err)
}
_, err = client.CoreV1().Secrets("").List(context.TODO(), metav1.ListOptions{})
if err != nil {
t.Error(err)
}
})
}
}

1
pkg/version/.gitattributes vendored Normal file
View File

@@ -0,0 +1 @@
base.go export-subst

View File

@@ -284,15 +284,18 @@ func (c *threadSafeMap) updateIndices(oldObj interface{}, newObj interface{}, ke
c.indices[name] = index
}
if len(indexValues) == 1 && len(oldIndexValues) == 1 && indexValues[0] == oldIndexValues[0] {
// We optimize for the most common case where indexFunc returns a single value which has not been changed
continue
}
for _, value := range oldIndexValues {
// We optimize for the most common case where index returns a single value.
if len(indexValues) == 1 && value == indexValues[0] {
continue
}
c.deleteKeyFromIndex(key, value, index)
}
for _, value := range indexValues {
// We optimize for the most common case where index returns a single value.
if len(oldIndexValues) == 1 && value == oldIndexValues[0] {
continue
}
c.addKeyToIndex(key, value, index)
}
}

View File

@@ -18,11 +18,7 @@ package cache
import (
"fmt"
"strings"
"testing"
"github.com/google/go-cmp/cmp"
"github.com/stretchr/testify/assert"
)
func TestThreadSafeStoreDeleteRemovesEmptySetsFromIndex(t *testing.T) {
@@ -96,75 +92,6 @@ func TestThreadSafeStoreAddKeepsNonEmptySetPostDeleteFromIndex(t *testing.T) {
}
}
func TestThreadSafeStoreIndexingFunctionsWithMultipleValues(t *testing.T) {
testIndexer := "testIndexer"
indexers := Indexers{
testIndexer: func(obj interface{}) ([]string, error) {
return strings.Split(obj.(string), ","), nil
},
}
indices := Indices{}
store := NewThreadSafeStore(indexers, indices).(*threadSafeMap)
store.Add("key1", "foo")
store.Add("key2", "bar")
assert := assert.New(t)
compare := func(key string, expected []string) error {
values := store.indices[testIndexer][key].List()
if cmp.Equal(values, expected) {
return nil
}
return fmt.Errorf("unexpected index for key %s, diff=%s", key, cmp.Diff(values, expected))
}
assert.NoError(compare("foo", []string{"key1"}))
assert.NoError(compare("bar", []string{"key2"}))
store.Update("key2", "foo,bar")
assert.NoError(compare("foo", []string{"key1", "key2"}))
assert.NoError(compare("bar", []string{"key2"}))
store.Update("key1", "foo,bar")
assert.NoError(compare("foo", []string{"key1", "key2"}))
assert.NoError(compare("bar", []string{"key1", "key2"}))
store.Add("key3", "foo,bar,baz")
assert.NoError(compare("foo", []string{"key1", "key2", "key3"}))
assert.NoError(compare("bar", []string{"key1", "key2", "key3"}))
assert.NoError(compare("baz", []string{"key3"}))
store.Update("key1", "foo")
assert.NoError(compare("foo", []string{"key1", "key2", "key3"}))
assert.NoError(compare("bar", []string{"key2", "key3"}))
assert.NoError(compare("baz", []string{"key3"}))
store.Update("key2", "bar")
assert.NoError(compare("foo", []string{"key1", "key3"}))
assert.NoError(compare("bar", []string{"key2", "key3"}))
assert.NoError(compare("baz", []string{"key3"}))
store.Delete("key1")
assert.NoError(compare("foo", []string{"key3"}))
assert.NoError(compare("bar", []string{"key2", "key3"}))
assert.NoError(compare("baz", []string{"key3"}))
store.Delete("key3")
assert.NoError(compare("foo", []string{}))
assert.NoError(compare("bar", []string{"key2"}))
assert.NoError(compare("baz", []string{}))
}
func BenchmarkIndexer(b *testing.B) {
testIndexer := "testIndexer"

View File

@@ -51,10 +51,10 @@ func (a *PromptingAuthLoader) LoadAuth(path string) (*clientauth.Info, error) {
// Prompt for user/pass and write a file if none exists.
if _, err := os.Stat(path); os.IsNotExist(err) {
authPtr, err := a.Prompt()
auth := *authPtr
if err != nil {
return nil, err
}
auth := *authPtr
data, err := json.Marshal(auth)
if err != nil {
return &auth, err