1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- /*
- Copyright 2019 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 rc
- import (
- "fmt"
- "github.com/onsi/ginkgo"
- v1 "k8s.io/api/core/v1"
- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- clientset "k8s.io/client-go/kubernetes"
- scaleclient "k8s.io/client-go/scale"
- api "k8s.io/kubernetes/pkg/apis/core"
- "k8s.io/kubernetes/test/e2e/framework"
- e2ekubectl "k8s.io/kubernetes/test/e2e/framework/kubectl"
- testutils "k8s.io/kubernetes/test/utils"
- )
- // ByNameContainer returns a ReplicationController with specified name and container
- func ByNameContainer(name string, replicas int32, labels map[string]string, c v1.Container,
- gracePeriod *int64) *v1.ReplicationController {
- zeroGracePeriod := int64(0)
- // Add "name": name to the labels, overwriting if it exists.
- labels["name"] = name
- if gracePeriod == nil {
- gracePeriod = &zeroGracePeriod
- }
- return &v1.ReplicationController{
- TypeMeta: metav1.TypeMeta{
- Kind: "ReplicationController",
- APIVersion: "v1",
- },
- ObjectMeta: metav1.ObjectMeta{
- Name: name,
- },
- Spec: v1.ReplicationControllerSpec{
- Replicas: func(i int32) *int32 { return &i }(replicas),
- Selector: map[string]string{
- "name": name,
- },
- Template: &v1.PodTemplateSpec{
- ObjectMeta: metav1.ObjectMeta{
- Labels: labels,
- },
- Spec: v1.PodSpec{
- Containers: []v1.Container{c},
- TerminationGracePeriodSeconds: gracePeriod,
- },
- },
- },
- }
- }
- // DeleteRCAndWaitForGC deletes only the Replication Controller and waits for GC to delete the pods.
- func DeleteRCAndWaitForGC(c clientset.Interface, ns, name string) error {
- return framework.DeleteResourceAndWaitForGC(c, api.Kind("ReplicationController"), ns, name)
- }
- // ScaleRC scales Replication Controller to be desired size.
- func ScaleRC(clientset clientset.Interface, scalesGetter scaleclient.ScalesGetter, ns, name string, size uint, wait bool) error {
- return framework.ScaleResource(clientset, scalesGetter, ns, name, size, wait, api.Kind("ReplicationController"), api.SchemeGroupVersion.WithResource("replicationcontrollers"))
- }
- // RunRC Launches (and verifies correctness) of a Replication Controller
- // and will wait for all pods it spawns to become "Running".
- func RunRC(config testutils.RCConfig) error {
- ginkgo.By(fmt.Sprintf("creating replication controller %s in namespace %s", config.Name, config.Namespace))
- config.NodeDumpFunc = framework.DumpNodeDebugInfo
- config.ContainerDumpFunc = e2ekubectl.LogFailedContainers
- return testutils.RunRC(config)
- }
|