mirror of https://github.com/k3s-io/k3s
Move e2e fromManifest funcs to manifest package
parent
3fd593aa2d
commit
76a72f6248
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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"],
|
||||
)
|
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue