Move e2e fromManifest funcs to manifest package
This commit is contained in:
		@@ -463,6 +463,7 @@ staging/src/k8s.io/metrics/pkg/apis/metrics/install
 | 
			
		||||
staging/src/k8s.io/sample-apiserver
 | 
			
		||||
staging/src/k8s.io/sample-apiserver/pkg/apis/wardle/install
 | 
			
		||||
test/e2e/framework/ginkgowrapper
 | 
			
		||||
test/e2e/manifest
 | 
			
		||||
test/e2e/perftype
 | 
			
		||||
test/e2e_node/perftype
 | 
			
		||||
test/e2e_node/runner/local
 | 
			
		||||
 
 | 
			
		||||
@@ -157,6 +157,7 @@ go_library(
 | 
			
		||||
        "//test/e2e/framework:go_default_library",
 | 
			
		||||
        "//test/e2e/framework/ginkgowrapper:go_default_library",
 | 
			
		||||
        "//test/e2e/generated:go_default_library",
 | 
			
		||||
        "//test/e2e/manifest:go_default_library",
 | 
			
		||||
        "//test/e2e/perf:go_default_library",
 | 
			
		||||
        "//test/e2e/scheduling:go_default_library",
 | 
			
		||||
        "//test/e2e/upgrades:go_default_library",
 | 
			
		||||
@@ -246,6 +247,7 @@ filegroup(
 | 
			
		||||
        "//test/e2e/extension:all-srcs",
 | 
			
		||||
        "//test/e2e/framework:all-srcs",
 | 
			
		||||
        "//test/e2e/generated:all-srcs",
 | 
			
		||||
        "//test/e2e/manifest:all-srcs",
 | 
			
		||||
        "//test/e2e/perf:all-srcs",
 | 
			
		||||
        "//test/e2e/perftype:all-srcs",
 | 
			
		||||
        "//test/e2e/scheduling:all-srcs",
 | 
			
		||||
 
 | 
			
		||||
@@ -31,12 +31,8 @@ import (
 | 
			
		||||
	"github.com/onsi/ginkgo/reporters"
 | 
			
		||||
	"github.com/onsi/gomega"
 | 
			
		||||
 | 
			
		||||
	"k8s.io/api/core/v1"
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
			
		||||
	runtimeutils "k8s.io/apimachinery/pkg/util/runtime"
 | 
			
		||||
	utilyaml "k8s.io/apimachinery/pkg/util/yaml"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/cloudprovider/providers/azure"
 | 
			
		||||
	gcecloud "k8s.io/kubernetes/pkg/cloudprovider/providers/gce"
 | 
			
		||||
@@ -45,7 +41,7 @@ import (
 | 
			
		||||
	commontest "k8s.io/kubernetes/test/e2e/common"
 | 
			
		||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
			
		||||
	"k8s.io/kubernetes/test/e2e/framework/ginkgowrapper"
 | 
			
		||||
	"k8s.io/kubernetes/test/e2e/generated"
 | 
			
		||||
	"k8s.io/kubernetes/test/e2e/manifest"
 | 
			
		||||
	federationtest "k8s.io/kubernetes/test/e2e_federation"
 | 
			
		||||
	testutils "k8s.io/kubernetes/test/utils"
 | 
			
		||||
)
 | 
			
		||||
@@ -341,25 +337,12 @@ func RunE2ETests(t *testing.T) {
 | 
			
		||||
	ginkgo.RunSpecsWithDefaultAndCustomReporters(t, "Kubernetes e2e suite", r)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func podFromManifest(filename string) (*v1.Pod, error) {
 | 
			
		||||
	var pod v1.Pod
 | 
			
		||||
	framework.Logf("Parsing pod from %v", filename)
 | 
			
		||||
	data := generated.ReadOrDie(filename)
 | 
			
		||||
	json, err := utilyaml.ToJSON(data)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	if err := runtime.DecodeInto(api.Codecs.UniversalDecoder(), json, &pod); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return &pod, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Run a test container to try and contact the Kubernetes api-server from a pod, wait for it
 | 
			
		||||
// to flip to Ready, log its output and delete it.
 | 
			
		||||
func runKubernetesServiceTestContainer(c clientset.Interface, ns string) {
 | 
			
		||||
	path := "test/images/clusterapi-tester/pod.yaml"
 | 
			
		||||
	p, err := podFromManifest(path)
 | 
			
		||||
	framework.Logf("Parsing pod from %v", path)
 | 
			
		||||
	p, err := manifest.PodFromManifest(path)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		framework.Logf("Failed to parse clusterapi-tester from manifest %v: %v", path, err)
 | 
			
		||||
		return
 | 
			
		||||
 
 | 
			
		||||
@@ -80,7 +80,7 @@ go_library(
 | 
			
		||||
        "//plugin/pkg/scheduler/algorithm/predicates:go_default_library",
 | 
			
		||||
        "//plugin/pkg/scheduler/schedulercache:go_default_library",
 | 
			
		||||
        "//test/e2e/framework/ginkgowrapper:go_default_library",
 | 
			
		||||
        "//test/e2e/generated:go_default_library",
 | 
			
		||||
        "//test/e2e/manifest:go_default_library",
 | 
			
		||||
        "//test/e2e/perftype:go_default_library",
 | 
			
		||||
        "//test/utils:go_default_library",
 | 
			
		||||
        "//vendor/github.com/aws/aws-sdk-go/aws:go_default_library",
 | 
			
		||||
@@ -125,7 +125,6 @@ go_library(
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/util/uuid:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/util/yaml:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/discovery:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/dynamic:go_default_library",
 | 
			
		||||
 
 | 
			
		||||
@@ -27,7 +27,6 @@ import (
 | 
			
		||||
	"encoding/pem"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io"
 | 
			
		||||
	"io/ioutil"
 | 
			
		||||
	"math/big"
 | 
			
		||||
	"net"
 | 
			
		||||
	"net/http"
 | 
			
		||||
@@ -44,16 +43,14 @@ import (
 | 
			
		||||
	apierrs "k8s.io/apimachinery/pkg/api/errors"
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/labels"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
			
		||||
	utilnet "k8s.io/apimachinery/pkg/util/net"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/sets"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/wait"
 | 
			
		||||
	utilyaml "k8s.io/apimachinery/pkg/util/yaml"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
 | 
			
		||||
	gcecloud "k8s.io/kubernetes/pkg/cloudprovider/providers/gce"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/util"
 | 
			
		||||
	utilexec "k8s.io/kubernetes/pkg/util/exec"
 | 
			
		||||
	"k8s.io/kubernetes/test/e2e/manifest"
 | 
			
		||||
	testutils "k8s.io/kubernetes/test/utils"
 | 
			
		||||
 | 
			
		||||
	. "github.com/onsi/ginkgo"
 | 
			
		||||
@@ -825,14 +822,16 @@ func (j *IngressTestJig) CreateIngress(manifestPath, ns string, ingAnnotations m
 | 
			
		||||
		Logf("creating secret")
 | 
			
		||||
		RunKubectlOrDie("create", "-f", mkpath("secret.yaml"), fmt.Sprintf("--namespace=%v", ns))
 | 
			
		||||
	}
 | 
			
		||||
	j.Ingress = createIngressFromManifest(mkpath("ing.yaml"))
 | 
			
		||||
	Logf("Parsing ingress from %v", filepath.Join(manifestPath, "ing.yaml"))
 | 
			
		||||
	var err error
 | 
			
		||||
	j.Ingress, err = manifest.IngressFromManifest(filepath.Join(manifestPath, "ing.yaml"))
 | 
			
		||||
	ExpectNoError(err)
 | 
			
		||||
	j.Ingress.Namespace = ns
 | 
			
		||||
	j.Ingress.Annotations = map[string]string{ingressClass: j.Class}
 | 
			
		||||
	for k, v := range ingAnnotations {
 | 
			
		||||
		j.Ingress.Annotations[k] = v
 | 
			
		||||
	}
 | 
			
		||||
	Logf(fmt.Sprintf("creating" + j.Ingress.Name + " ingress"))
 | 
			
		||||
	var err error
 | 
			
		||||
	j.Ingress, err = j.Client.Extensions().Ingresses(ns).Create(j.Ingress)
 | 
			
		||||
	ExpectNoError(err)
 | 
			
		||||
}
 | 
			
		||||
@@ -990,20 +989,6 @@ func (j *IngressTestJig) ConstructFirewallForIngress(gceController *GCEIngressCo
 | 
			
		||||
	return &fw
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// createIngressFromManifest reads a .json/yaml file and returns the rc in it.
 | 
			
		||||
func createIngressFromManifest(fileName string) *extensions.Ingress {
 | 
			
		||||
	var ing extensions.Ingress
 | 
			
		||||
	Logf("Parsing ingress from %v", fileName)
 | 
			
		||||
	data, err := ioutil.ReadFile(fileName)
 | 
			
		||||
	ExpectNoError(err)
 | 
			
		||||
 | 
			
		||||
	json, err := utilyaml.ToJSON(data)
 | 
			
		||||
	ExpectNoError(err)
 | 
			
		||||
 | 
			
		||||
	ExpectNoError(runtime.DecodeInto(api.Codecs.UniversalDecoder(), json, &ing))
 | 
			
		||||
	return &ing
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (cont *GCEIngressController) getL7AddonUID() (string, error) {
 | 
			
		||||
	Logf("Retrieving UID from config map: %v/%v", metav1.NamespaceSystem, uidConfigMap)
 | 
			
		||||
	cm, err := cont.Client.Core().ConfigMaps(metav1.NamespaceSystem).Get(uidConfigMap, metav1.GetOptions{})
 | 
			
		||||
 
 | 
			
		||||
@@ -27,21 +27,17 @@ import (
 | 
			
		||||
 | 
			
		||||
	. "github.com/onsi/gomega"
 | 
			
		||||
 | 
			
		||||
	apps "k8s.io/api/apps/v1beta1"
 | 
			
		||||
	"k8s.io/api/core/v1"
 | 
			
		||||
	apierrs "k8s.io/apimachinery/pkg/api/errors"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/api/resource"
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/labels"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/sets"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/wait"
 | 
			
		||||
	utilyaml "k8s.io/apimachinery/pkg/util/yaml"
 | 
			
		||||
 | 
			
		||||
	apps "k8s.io/api/apps/v1beta1"
 | 
			
		||||
	"k8s.io/api/core/v1"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api"
 | 
			
		||||
	podutil "k8s.io/kubernetes/pkg/api/v1/pod"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
 | 
			
		||||
	"k8s.io/kubernetes/test/e2e/generated"
 | 
			
		||||
	"k8s.io/kubernetes/test/e2e/manifest"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
@@ -70,24 +66,6 @@ func CreateStatefulSetService(name string, labels map[string]string) *v1.Service
 | 
			
		||||
	return headlessService
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// StatefulSetFromManifest returns a StatefulSet from a manifest stored in fileName in the Namespace indicated by ns.
 | 
			
		||||
func StatefulSetFromManifest(fileName, ns string) *apps.StatefulSet {
 | 
			
		||||
	var ss apps.StatefulSet
 | 
			
		||||
	Logf("Parsing statefulset from %v", fileName)
 | 
			
		||||
	data := generated.ReadOrDie(fileName)
 | 
			
		||||
	json, err := utilyaml.ToJSON(data)
 | 
			
		||||
	Expect(err).NotTo(HaveOccurred())
 | 
			
		||||
 | 
			
		||||
	Expect(runtime.DecodeInto(api.Codecs.UniversalDecoder(), json, &ss)).NotTo(HaveOccurred())
 | 
			
		||||
	ss.Namespace = ns
 | 
			
		||||
	if ss.Spec.Selector == nil {
 | 
			
		||||
		ss.Spec.Selector = &metav1.LabelSelector{
 | 
			
		||||
			MatchLabels: ss.Spec.Template.Labels,
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return &ss
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// StatefulSetTester is a struct that contains utility methods for testing StatefulSet related functionality. It uses a
 | 
			
		||||
// clientset.Interface to communicate with the API server.
 | 
			
		||||
type StatefulSetTester struct {
 | 
			
		||||
@@ -113,15 +91,21 @@ func (s *StatefulSetTester) CreateStatefulSet(manifestPath, ns string) *apps.Sta
 | 
			
		||||
	mkpath := func(file string) string {
 | 
			
		||||
		return filepath.Join(manifestPath, file)
 | 
			
		||||
	}
 | 
			
		||||
	ss := StatefulSetFromManifest(mkpath("statefulset.yaml"), ns)
 | 
			
		||||
	svcYaml := generated.ReadOrDie(mkpath("service.yaml"))
 | 
			
		||||
	ssYaml := generated.ReadOrDie(mkpath("statefulset.yaml"))
 | 
			
		||||
 | 
			
		||||
	Logf("Parsing statefulset from %v", mkpath("statefulset.yaml"))
 | 
			
		||||
	ss, err := manifest.StatefulSetFromManifest(mkpath("statefulset.yaml"), ns)
 | 
			
		||||
	Expect(err).NotTo(HaveOccurred())
 | 
			
		||||
	Logf("Parsing service from %v", mkpath("service.yaml"))
 | 
			
		||||
	svc, err := manifest.SvcFromManifest(mkpath("service.yaml"))
 | 
			
		||||
	Expect(err).NotTo(HaveOccurred())
 | 
			
		||||
 | 
			
		||||
	Logf(fmt.Sprintf("creating " + ss.Name + " service"))
 | 
			
		||||
	RunKubectlOrDieInput(string(svcYaml[:]), "create", "-f", "-", fmt.Sprintf("--namespace=%v", ns))
 | 
			
		||||
	_, err = s.c.CoreV1().Services(ns).Create(svc)
 | 
			
		||||
	Expect(err).NotTo(HaveOccurred())
 | 
			
		||||
 | 
			
		||||
	Logf(fmt.Sprintf("creating statefulset %v/%v with %d replicas and selector %+v", ss.Namespace, ss.Name, *(ss.Spec.Replicas), ss.Spec.Selector))
 | 
			
		||||
	RunKubectlOrDieInput(string(ssYaml[:]), "create", "-f", "-", fmt.Sprintf("--namespace=%v", ns))
 | 
			
		||||
	_, err = s.c.AppsV1beta1().StatefulSets(ns).Create(ss)
 | 
			
		||||
	Expect(err).NotTo(HaveOccurred())
 | 
			
		||||
	s.WaitForRunningAndReady(*ss.Spec.Replicas, ss)
 | 
			
		||||
	return ss
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										37
									
								
								test/e2e/manifest/BUILD
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								test/e2e/manifest/BUILD
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
			
		||||
package(default_visibility = ["//visibility:public"])
 | 
			
		||||
 | 
			
		||||
licenses(["notice"])
 | 
			
		||||
 | 
			
		||||
load(
 | 
			
		||||
    "@io_bazel_rules_go//go:def.bzl",
 | 
			
		||||
    "go_library",
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
go_library(
 | 
			
		||||
    name = "go_default_library",
 | 
			
		||||
    srcs = ["manifest.go"],
 | 
			
		||||
    tags = ["automanaged"],
 | 
			
		||||
    deps = [
 | 
			
		||||
        "//pkg/api:go_default_library",
 | 
			
		||||
        "//test/e2e/generated:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/api/apps/v1beta1:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/api/core/v1:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/api/extensions/v1beta1:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/util/yaml:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
filegroup(
 | 
			
		||||
    name = "package-srcs",
 | 
			
		||||
    srcs = glob(["**"]),
 | 
			
		||||
    tags = ["automanaged"],
 | 
			
		||||
    visibility = ["//visibility:private"],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
filegroup(
 | 
			
		||||
    name = "all-srcs",
 | 
			
		||||
    srcs = [":package-srcs"],
 | 
			
		||||
    tags = ["automanaged"],
 | 
			
		||||
)
 | 
			
		||||
							
								
								
									
										109
									
								
								test/e2e/manifest/manifest.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										109
									
								
								test/e2e/manifest/manifest.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,109 @@
 | 
			
		||||
/*
 | 
			
		||||
Copyright 2017 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 manifest
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	apps "k8s.io/api/apps/v1beta1"
 | 
			
		||||
	"k8s.io/api/core/v1"
 | 
			
		||||
	extensions "k8s.io/api/extensions/v1beta1"
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
			
		||||
	utilyaml "k8s.io/apimachinery/pkg/util/yaml"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api"
 | 
			
		||||
	"k8s.io/kubernetes/test/e2e/generated"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// PodFromManifest reads a .json/yaml file and returns the pod in it.
 | 
			
		||||
func PodFromManifest(filename string) (*v1.Pod, error) {
 | 
			
		||||
	var pod v1.Pod
 | 
			
		||||
	data := generated.ReadOrDie(filename)
 | 
			
		||||
 | 
			
		||||
	json, err := utilyaml.ToJSON(data)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	if err := runtime.DecodeInto(api.Codecs.UniversalDecoder(), json, &pod); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return &pod, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// RcFromManifest reads a .json/yaml file and returns the rc in it.
 | 
			
		||||
func RcFromManifest(fileName string) (*v1.ReplicationController, error) {
 | 
			
		||||
	var controller v1.ReplicationController
 | 
			
		||||
	data := generated.ReadOrDie(fileName)
 | 
			
		||||
 | 
			
		||||
	json, err := utilyaml.ToJSON(data)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	if err := runtime.DecodeInto(api.Codecs.UniversalDecoder(), json, &controller); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return &controller, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SvcFromManifest reads a .json/yaml file and returns the service in it.
 | 
			
		||||
func SvcFromManifest(fileName string) (*v1.Service, error) {
 | 
			
		||||
	var svc v1.Service
 | 
			
		||||
	data := generated.ReadOrDie(fileName)
 | 
			
		||||
 | 
			
		||||
	json, err := utilyaml.ToJSON(data)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	if err := runtime.DecodeInto(api.Codecs.UniversalDecoder(), json, &svc); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return &svc, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IngressFromManifest reads a .json/yaml file and returns the ingress in it.
 | 
			
		||||
func IngressFromManifest(fileName string) (*extensions.Ingress, error) {
 | 
			
		||||
	var ing extensions.Ingress
 | 
			
		||||
	data := generated.ReadOrDie(fileName)
 | 
			
		||||
 | 
			
		||||
	json, err := utilyaml.ToJSON(data)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	if err := runtime.DecodeInto(api.Codecs.UniversalDecoder(), json, &ing); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return &ing, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// StatefulSetFromManifest returns a StatefulSet from a manifest stored in fileName in the Namespace indicated by ns.
 | 
			
		||||
func StatefulSetFromManifest(fileName, ns string) (*apps.StatefulSet, error) {
 | 
			
		||||
	var ss apps.StatefulSet
 | 
			
		||||
	data := generated.ReadOrDie(fileName)
 | 
			
		||||
 | 
			
		||||
	json, err := utilyaml.ToJSON(data)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	if err := runtime.DecodeInto(api.Codecs.UniversalDecoder(), json, &ss); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	ss.Namespace = ns
 | 
			
		||||
	if ss.Spec.Selector == nil {
 | 
			
		||||
		ss.Spec.Selector = &metav1.LabelSelector{
 | 
			
		||||
			MatchLabels: ss.Spec.Template.Labels,
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return &ss, nil
 | 
			
		||||
}
 | 
			
		||||
@@ -23,13 +23,11 @@ import (
 | 
			
		||||
	"k8s.io/api/core/v1"
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/labels"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/wait"
 | 
			
		||||
	utilyaml "k8s.io/apimachinery/pkg/util/yaml"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
 | 
			
		||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
			
		||||
	"k8s.io/kubernetes/test/e2e/generated"
 | 
			
		||||
	"k8s.io/kubernetes/test/e2e/manifest"
 | 
			
		||||
 | 
			
		||||
	. "github.com/onsi/ginkgo"
 | 
			
		||||
	. "github.com/onsi/gomega"
 | 
			
		||||
@@ -88,7 +86,9 @@ func (h *haproxyControllerTester) getName() string {
 | 
			
		||||
func (h *haproxyControllerTester) start(namespace string) (err error) {
 | 
			
		||||
 | 
			
		||||
	// Create a replication controller with the given configuration.
 | 
			
		||||
	rc := rcFromManifest(h.cfg)
 | 
			
		||||
	framework.Logf("Parsing rc from %v", h.cfg)
 | 
			
		||||
	rc, err := manifest.RcFromManifest(h.cfg)
 | 
			
		||||
	Expect(err).NotTo(HaveOccurred())
 | 
			
		||||
	rc.Namespace = namespace
 | 
			
		||||
	rc.Spec.Template.Labels["name"] = rc.Name
 | 
			
		||||
 | 
			
		||||
@@ -164,7 +164,10 @@ func (s *ingManager) getName() string {
 | 
			
		||||
func (s *ingManager) start(namespace string) (err error) {
 | 
			
		||||
	// Create rcs
 | 
			
		||||
	for _, rcPath := range s.rcCfgPaths {
 | 
			
		||||
		rc := rcFromManifest(rcPath)
 | 
			
		||||
		framework.Logf("Parsing rc from %v", rcPath)
 | 
			
		||||
		var rc *v1.ReplicationController
 | 
			
		||||
		rc, err = manifest.RcFromManifest(rcPath)
 | 
			
		||||
		Expect(err).NotTo(HaveOccurred())
 | 
			
		||||
		rc.Namespace = namespace
 | 
			
		||||
		rc.Spec.Template.Labels["name"] = rc.Name
 | 
			
		||||
		rc, err = s.client.Core().ReplicationControllers(rc.Namespace).Create(rc)
 | 
			
		||||
@@ -179,7 +182,10 @@ func (s *ingManager) start(namespace string) (err error) {
 | 
			
		||||
	// Note that it's up to the caller to make sure the service actually matches
 | 
			
		||||
	// the pods of the rc.
 | 
			
		||||
	for _, svcPath := range s.svcCfgPaths {
 | 
			
		||||
		svc := svcFromManifest(svcPath)
 | 
			
		||||
		framework.Logf("Parsing service from %v", svcPath)
 | 
			
		||||
		var svc *v1.Service
 | 
			
		||||
		svc, err = manifest.SvcFromManifest(svcPath)
 | 
			
		||||
		Expect(err).NotTo(HaveOccurred())
 | 
			
		||||
		svc.Namespace = namespace
 | 
			
		||||
		svc, err = s.client.Core().Services(svc.Namespace).Create(svc)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
@@ -238,29 +244,3 @@ var _ = framework.KubeDescribe("ServiceLoadBalancer [Feature:ServiceLoadBalancer
 | 
			
		||||
		}
 | 
			
		||||
	})
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
// rcFromManifest reads a .json/yaml file and returns the rc in it.
 | 
			
		||||
func rcFromManifest(fileName string) *v1.ReplicationController {
 | 
			
		||||
	var controller v1.ReplicationController
 | 
			
		||||
	framework.Logf("Parsing rc from %v", fileName)
 | 
			
		||||
	data := generated.ReadOrDie(fileName)
 | 
			
		||||
 | 
			
		||||
	json, err := utilyaml.ToJSON(data)
 | 
			
		||||
	Expect(err).NotTo(HaveOccurred())
 | 
			
		||||
 | 
			
		||||
	Expect(runtime.DecodeInto(api.Codecs.UniversalDecoder(), json, &controller)).NotTo(HaveOccurred())
 | 
			
		||||
	return &controller
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// svcFromManifest reads a .json/yaml file and returns the rc in it.
 | 
			
		||||
func svcFromManifest(fileName string) *v1.Service {
 | 
			
		||||
	var svc v1.Service
 | 
			
		||||
	framework.Logf("Parsing service from %v", fileName)
 | 
			
		||||
	data := generated.ReadOrDie(fileName)
 | 
			
		||||
 | 
			
		||||
	json, err := utilyaml.ToJSON(data)
 | 
			
		||||
	Expect(err).NotTo(HaveOccurred())
 | 
			
		||||
 | 
			
		||||
	Expect(runtime.DecodeInto(api.Codecs.UniversalDecoder(), json, &svc)).NotTo(HaveOccurred())
 | 
			
		||||
	return &svc
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user