mirror of https://github.com/k3s-io/k3s
commit
014947c16c
|
@ -37,9 +37,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
ErrRegistration = errors.New("unable to register all nodes.")
|
ErrCloudInstance = errors.New("cloud provider doesn't support instances.")
|
||||||
ErrQueryIPAddress = errors.New("unable to query IP address.")
|
|
||||||
ErrCloudInstance = errors.New("cloud provider doesn't support instances.")
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
|
@ -19,7 +19,6 @@ package nodecontroller
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"sort"
|
|
||||||
"sync"
|
"sync"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
@ -666,35 +665,6 @@ func newPod(name, host string) *api.Pod {
|
||||||
return &api.Pod{ObjectMeta: api.ObjectMeta{Name: name}, Spec: api.PodSpec{NodeName: host}}
|
return &api.Pod{ObjectMeta: api.ObjectMeta{Name: name}, Spec: api.PodSpec{NodeName: host}}
|
||||||
}
|
}
|
||||||
|
|
||||||
func sortedNodeNames(nodes []*api.Node) []string {
|
|
||||||
nodeNames := []string{}
|
|
||||||
for _, node := range nodes {
|
|
||||||
nodeNames = append(nodeNames, node.Name)
|
|
||||||
}
|
|
||||||
sort.Strings(nodeNames)
|
|
||||||
return nodeNames
|
|
||||||
}
|
|
||||||
|
|
||||||
func sortedNodeAddresses(nodes []*api.Node) []string {
|
|
||||||
nodeAddresses := []string{}
|
|
||||||
for _, node := range nodes {
|
|
||||||
for _, addr := range node.Status.Addresses {
|
|
||||||
nodeAddresses = append(nodeAddresses, addr.Address)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
sort.Strings(nodeAddresses)
|
|
||||||
return nodeAddresses
|
|
||||||
}
|
|
||||||
|
|
||||||
func sortedNodeExternalIDs(nodes []*api.Node) []string {
|
|
||||||
nodeExternalIDs := []string{}
|
|
||||||
for _, node := range nodes {
|
|
||||||
nodeExternalIDs = append(nodeExternalIDs, node.Spec.ExternalID)
|
|
||||||
}
|
|
||||||
sort.Strings(nodeExternalIDs)
|
|
||||||
return nodeExternalIDs
|
|
||||||
}
|
|
||||||
|
|
||||||
func contains(node *api.Node, nodes []*api.Node) bool {
|
func contains(node *api.Node, nodes []*api.Node) bool {
|
||||||
for i := 0; i < len(nodes); i++ {
|
for i := 0; i < len(nodes); i++ {
|
||||||
if node.Name == nodes[i].Name {
|
if node.Name == nodes[i].Name {
|
||||||
|
|
|
@ -19,7 +19,6 @@ package replicationcontroller
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"net/http"
|
|
||||||
"net/http/httptest"
|
"net/http/httptest"
|
||||||
"sync"
|
"sync"
|
||||||
"testing"
|
"testing"
|
||||||
|
@ -32,12 +31,10 @@ import (
|
||||||
client "k8s.io/kubernetes/pkg/client/unversioned"
|
client "k8s.io/kubernetes/pkg/client/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/client/unversioned/testclient"
|
"k8s.io/kubernetes/pkg/client/unversioned/testclient"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/securitycontext"
|
"k8s.io/kubernetes/pkg/securitycontext"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
"k8s.io/kubernetes/pkg/util/sets"
|
"k8s.io/kubernetes/pkg/util/sets"
|
||||||
"k8s.io/kubernetes/pkg/util/wait"
|
|
||||||
"k8s.io/kubernetes/pkg/watch"
|
"k8s.io/kubernetes/pkg/watch"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -179,51 +176,6 @@ type serverResponse struct {
|
||||||
obj interface{}
|
obj interface{}
|
||||||
}
|
}
|
||||||
|
|
||||||
func makeTestServer(t *testing.T, namespace, name string, podResponse, controllerResponse, updateResponse serverResponse) (*httptest.Server, *util.FakeHandler) {
|
|
||||||
fakePodHandler := util.FakeHandler{
|
|
||||||
StatusCode: podResponse.statusCode,
|
|
||||||
ResponseBody: runtime.EncodeOrDie(testapi.Default.Codec(), podResponse.obj.(runtime.Object)),
|
|
||||||
}
|
|
||||||
fakeControllerHandler := util.FakeHandler{
|
|
||||||
StatusCode: controllerResponse.statusCode,
|
|
||||||
ResponseBody: runtime.EncodeOrDie(testapi.Default.Codec(), controllerResponse.obj.(runtime.Object)),
|
|
||||||
}
|
|
||||||
fakeUpdateHandler := util.FakeHandler{
|
|
||||||
StatusCode: updateResponse.statusCode,
|
|
||||||
ResponseBody: runtime.EncodeOrDie(testapi.Default.Codec(), updateResponse.obj.(runtime.Object)),
|
|
||||||
}
|
|
||||||
mux := http.NewServeMux()
|
|
||||||
mux.Handle(testapi.Default.ResourcePath("pods", namespace, ""), &fakePodHandler)
|
|
||||||
mux.Handle(testapi.Default.ResourcePath(replicationControllerResourceName(), "", ""), &fakeControllerHandler)
|
|
||||||
if namespace != "" {
|
|
||||||
mux.Handle(testapi.Default.ResourcePath(replicationControllerResourceName(), namespace, ""), &fakeControllerHandler)
|
|
||||||
}
|
|
||||||
if name != "" {
|
|
||||||
mux.Handle(testapi.Default.ResourcePath(replicationControllerResourceName(), namespace, name), &fakeUpdateHandler)
|
|
||||||
}
|
|
||||||
mux.HandleFunc("/", func(res http.ResponseWriter, req *http.Request) {
|
|
||||||
t.Errorf("unexpected request: %v", req.RequestURI)
|
|
||||||
res.WriteHeader(http.StatusNotFound)
|
|
||||||
})
|
|
||||||
return httptest.NewServer(mux), &fakeUpdateHandler
|
|
||||||
}
|
|
||||||
|
|
||||||
func startManagerAndWait(manager *ReplicationManager, pods int, t *testing.T) chan struct{} {
|
|
||||||
stopCh := make(chan struct{})
|
|
||||||
go manager.Run(1, stopCh)
|
|
||||||
err := wait.Poll(10*time.Millisecond, 100*time.Millisecond, func() (bool, error) {
|
|
||||||
podList, err := manager.podStore.List(labels.Everything())
|
|
||||||
if err != nil {
|
|
||||||
return false, err
|
|
||||||
}
|
|
||||||
return len(podList) == pods, nil
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("Failed to observe %d pods in 100ms", pods)
|
|
||||||
}
|
|
||||||
return stopCh
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSyncReplicationControllerDoesNothing(t *testing.T) {
|
func TestSyncReplicationControllerDoesNothing(t *testing.T) {
|
||||||
client := client.NewOrDie(&client.Config{Host: "", Version: testapi.Default.Version()})
|
client := client.NewOrDie(&client.Config{Host: "", Version: testapi.Default.Version()})
|
||||||
fakePodControl := FakePodControl{}
|
fakePodControl := FakePodControl{}
|
||||||
|
|
|
@ -17,15 +17,10 @@ limitations under the License.
|
||||||
package serviceaccount
|
package serviceaccount
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"net/http"
|
|
||||||
"net/http/httptest"
|
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/testapi"
|
|
||||||
"k8s.io/kubernetes/pkg/client/unversioned/testclient"
|
"k8s.io/kubernetes/pkg/client/unversioned/testclient"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
|
||||||
"k8s.io/kubernetes/pkg/util"
|
|
||||||
"k8s.io/kubernetes/pkg/util/sets"
|
"k8s.io/kubernetes/pkg/util/sets"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -34,21 +29,6 @@ type serverResponse struct {
|
||||||
obj interface{}
|
obj interface{}
|
||||||
}
|
}
|
||||||
|
|
||||||
func makeTestServer(t *testing.T, namespace string, serviceAccountResponse serverResponse) (*httptest.Server, *util.FakeHandler) {
|
|
||||||
fakeServiceAccountsHandler := util.FakeHandler{
|
|
||||||
StatusCode: serviceAccountResponse.statusCode,
|
|
||||||
ResponseBody: runtime.EncodeOrDie(testapi.Default.Codec(), serviceAccountResponse.obj.(runtime.Object)),
|
|
||||||
}
|
|
||||||
|
|
||||||
mux := http.NewServeMux()
|
|
||||||
mux.Handle(testapi.Default.ResourcePath("serviceAccounts", namespace, ""), &fakeServiceAccountsHandler)
|
|
||||||
mux.HandleFunc("/", func(res http.ResponseWriter, req *http.Request) {
|
|
||||||
t.Errorf("unexpected request: %v", req.RequestURI)
|
|
||||||
res.WriteHeader(http.StatusNotFound)
|
|
||||||
})
|
|
||||||
return httptest.NewServer(mux), &fakeServiceAccountsHandler
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestServiceAccountCreation(t *testing.T) {
|
func TestServiceAccountCreation(t *testing.T) {
|
||||||
ns := api.NamespaceDefault
|
ns := api.NamespaceDefault
|
||||||
|
|
||||||
|
|
|
@ -23,9 +23,6 @@ import (
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/validation"
|
"k8s.io/kubernetes/pkg/api/validation"
|
||||||
"k8s.io/kubernetes/pkg/auth/user"
|
"k8s.io/kubernetes/pkg/auth/user"
|
||||||
client "k8s.io/kubernetes/pkg/client/unversioned"
|
|
||||||
"k8s.io/kubernetes/pkg/fields"
|
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -86,25 +83,6 @@ func UserInfo(namespace, name, uid string) user.Info {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetServiceAccountTokens returns all ServiceAccountToken secrets for the given ServiceAccount
|
|
||||||
func GetServiceAccountTokens(secretsNamespacer client.SecretsNamespacer, sa *api.ServiceAccount) ([]*api.Secret, error) {
|
|
||||||
tokenSelector := fields.SelectorFromSet(map[string]string{client.SecretType: string(api.SecretTypeServiceAccountToken)})
|
|
||||||
secrets, err := secretsNamespacer.Secrets(sa.Namespace).List(labels.Everything(), tokenSelector)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
tokenSecrets := []*api.Secret{}
|
|
||||||
for i := range secrets.Items {
|
|
||||||
secret := &secrets.Items[i]
|
|
||||||
if IsServiceAccountToken(secret, sa) {
|
|
||||||
tokenSecrets = append(tokenSecrets, secret)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return tokenSecrets, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsServiceAccountToken returns true if the secret is a valid api token for the service account
|
// IsServiceAccountToken returns true if the secret is a valid api token for the service account
|
||||||
func IsServiceAccountToken(secret *api.Secret, sa *api.ServiceAccount) bool {
|
func IsServiceAccountToken(secret *api.Secret, sa *api.ServiceAccount) bool {
|
||||||
if secret.Type != api.SecretTypeServiceAccountToken {
|
if secret.Type != api.SecretTypeServiceAccountToken {
|
||||||
|
|
Loading…
Reference in New Issue