Skip to content

Commit

Permalink
Merge pull request #20532 from soltysh/external_images
Browse files Browse the repository at this point in the history
External graph library and company
  • Loading branch information
openshift-merge-robot authored Aug 21, 2018
2 parents 0192e76 + d14912b commit d87f18a
Show file tree
Hide file tree
Showing 94 changed files with 2,145 additions and 1,989 deletions.
10 changes: 4 additions & 6 deletions hack/import-restrictions.json
Original file line number Diff line number Diff line change
Expand Up @@ -524,16 +524,15 @@
"vendor/github.com/davecgh/go-spew/spew",

"github.com/openshift/origin/pkg/authorization/generated",
"github.com/openshift/origin/pkg/build/apis/build/v1",
"github.com/openshift/origin/pkg/build/generated",
"github.com/openshift/origin/pkg/build/apis/build/internal_helpers",
"github.com/openshift/origin/pkg/image/apis/image/v1",
"github.com/openshift/origin/pkg/image/apis/image/v1",
"github.com/openshift/origin/pkg/image/generated",
"github.com/openshift/origin/pkg/image/util",
"github.com/openshift/origin/pkg/image/util",
"github.com/openshift/origin/pkg/network/generated",
"github.com/openshift/origin/pkg/oauth/generated",
"github.com/openshift/origin/pkg/project/generated",
"github.com/openshift/origin/pkg/quota/generated",
"github.com/openshift/origin/pkg/route/apis/route/v1",
"github.com/openshift/origin/pkg/route/generated",
"github.com/openshift/origin/pkg/template/apis/template/v1",
"github.com/openshift/origin/pkg/template/client/v1",
Expand Down Expand Up @@ -561,6 +560,7 @@
"github.com/openshift/origin/pkg/build/apis/build",
"github.com/openshift/origin/pkg/build/apis/build/install",
"github.com/openshift/origin/pkg/build/buildapihelpers",
"github.com/openshift/origin/pkg/build/apis/build/internal_helpers",
"github.com/openshift/origin/pkg/build/client",
"github.com/openshift/origin/pkg/build/client/v1",
"github.com/openshift/origin/pkg/build/util",
Expand All @@ -587,7 +587,6 @@
"github.com/openshift/origin/pkg/cmd/util/variable",
"github.com/openshift/origin/pkg/git",
"github.com/openshift/origin/pkg/image/apis/image",
"github.com/openshift/origin/pkg/image/apis/image/install",
"github.com/openshift/origin/pkg/image/apis/image/v1/trigger",
"github.com/openshift/origin/pkg/image/apis/image/docker10",
"github.com/openshift/origin/pkg/image/apis/image/reference",
Expand Down Expand Up @@ -645,7 +644,6 @@
"vendor/github.com/miekg/dns",

"vendor/k8s.io/kubernetes/pkg/api/legacyscheme",
"vendor/k8s.io/kubernetes/pkg/api/ref",
"vendor/k8s.io/kubernetes/pkg/controller",
"vendor/k8s.io/kubernetes/pkg/controller/deployment/util",
"vendor/k8s.io/kubernetes/pkg/credentialprovider",
Expand Down
149 changes: 109 additions & 40 deletions pkg/api/imagereferencemutators/pods.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@ package imagereferencemutators
import (
"fmt"

appsv1beta1 "k8s.io/api/apps/v1beta1"
kappsv1 "k8s.io/api/apps/v1"
kappsv1beta1 "k8s.io/api/apps/v1beta1"
kappsv1beta2 "k8s.io/api/apps/v1beta2"
batchv1 "k8s.io/api/batch/v1"
batchv1beta1 "k8s.io/api/batch/v1beta1"
batchv2alpha1 "k8s.io/api/batch/v2alpha1"
corev1 "k8s.io/api/core/v1"
kapiv1 "k8s.io/api/core/v1"
extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
Expand Down Expand Up @@ -93,38 +95,72 @@ func GetPodSpec(obj runtime.Object) (*kapi.PodSpec, *field.Path, error) {
// GetPodSpecV1 returns a mutable pod spec out of the provided object, including a field path
// to the field in the object, or an error if the object does not contain a pod spec.
// This only returns pod specs for v1 compatible objects.
func GetPodSpecV1(obj runtime.Object) (*kapiv1.PodSpec, *field.Path, error) {
func GetPodSpecV1(obj runtime.Object) (*corev1.PodSpec, *field.Path, error) {
switch r := obj.(type) {
case *kapiv1.Pod:

case *corev1.Pod:
return &r.Spec, field.NewPath("spec"), nil
case *kapiv1.PodTemplate:

case *corev1.PodTemplate:
return &r.Template.Spec, field.NewPath("template", "spec"), nil
case *kapiv1.ReplicationController:

case *corev1.ReplicationController:
if r.Spec.Template != nil {
return &r.Spec.Template.Spec, field.NewPath("spec", "template", "spec"), nil
}

case *extensionsv1beta1.DaemonSet:
return &r.Spec.Template.Spec, field.NewPath("spec", "template", "spec"), nil
case *kappsv1.DaemonSet:
return &r.Spec.Template.Spec, field.NewPath("spec", "template", "spec"), nil
case *kappsv1beta2.DaemonSet:
return &r.Spec.Template.Spec, field.NewPath("spec", "template", "spec"), nil

case *extensionsv1beta1.Deployment:
return &r.Spec.Template.Spec, field.NewPath("spec", "template", "spec"), nil
case *kappsv1.Deployment:
return &r.Spec.Template.Spec, field.NewPath("spec", "template", "spec"), nil
case *kappsv1beta1.Deployment:
return &r.Spec.Template.Spec, field.NewPath("spec", "template", "spec"), nil
case *kappsv1beta2.Deployment:
return &r.Spec.Template.Spec, field.NewPath("spec", "template", "spec"), nil

case *extensionsv1beta1.ReplicaSet:
return &r.Spec.Template.Spec, field.NewPath("spec", "template", "spec"), nil
case *kappsv1.ReplicaSet:
return &r.Spec.Template.Spec, field.NewPath("spec", "template", "spec"), nil
case *kappsv1beta2.ReplicaSet:
return &r.Spec.Template.Spec, field.NewPath("spec", "template", "spec"), nil

case *batchv1.Job:
return &r.Spec.Template.Spec, field.NewPath("spec", "template", "spec"), nil

case *batchv2alpha1.CronJob:
return &r.Spec.JobTemplate.Spec.Template.Spec, field.NewPath("spec", "jobTemplate", "spec", "template", "spec"), nil
case *batchv1beta1.CronJob:
return &r.Spec.JobTemplate.Spec.Template.Spec, field.NewPath("spec", "jobTemplate", "spec", "template", "spec"), nil

case *batchv2alpha1.JobTemplate:
return &r.Template.Spec.Template.Spec, field.NewPath("template", "spec", "template", "spec"), nil
case *appsv1beta1.StatefulSet:
case *batchv1beta1.JobTemplate:
return &r.Template.Spec.Template.Spec, field.NewPath("template", "spec", "template", "spec"), nil

case *kappsv1.StatefulSet:
return &r.Spec.Template.Spec, field.NewPath("spec", "template", "spec"), nil
case *kappsv1beta1.StatefulSet:
return &r.Spec.Template.Spec, field.NewPath("spec", "template", "spec"), nil
case *appsv1beta1.Deployment:
case *kappsv1beta2.StatefulSet:
return &r.Spec.Template.Spec, field.NewPath("spec", "template", "spec"), nil

case *securityv1.PodSecurityPolicySubjectReview:
return &r.Spec.Template.Spec, field.NewPath("spec", "template", "spec"), nil

case *securityv1.PodSecurityPolicySelfSubjectReview:
return &r.Spec.Template.Spec, field.NewPath("spec", "template", "spec"), nil

case *securityv1.PodSecurityPolicyReview:
return &r.Spec.Template.Spec, field.NewPath("spec", "template", "spec"), nil

case *appsv1.DeploymentConfig:
if r.Spec.Template != nil {
return &r.Spec.Template.Spec, field.NewPath("spec", "template", "spec"), nil
Expand All @@ -137,68 +173,101 @@ func GetPodSpecV1(obj runtime.Object) (*kapiv1.PodSpec, *field.Path, error) {
// the object contains, or false if no such object is available.
func GetTemplateMetaObject(obj runtime.Object) (metav1.Object, bool) {
switch r := obj.(type) {
case *kapiv1.PodTemplate:

case *kapi.PodTemplate:
return &r.Template.ObjectMeta, true
case *corev1.PodTemplate:
return &r.Template.ObjectMeta, true
case *kapiv1.ReplicationController:

case *kapi.ReplicationController:
if r.Spec.Template != nil {
return &r.Spec.Template.ObjectMeta, true
}
case *corev1.ReplicationController:
if r.Spec.Template != nil {
return &r.Spec.Template.ObjectMeta, true
}

case *extensions.DaemonSet:
return &r.Spec.Template.ObjectMeta, true
case *extensionsv1beta1.DaemonSet:
return &r.Spec.Template.ObjectMeta, true
case *extensionsv1beta1.Deployment:
case *kappsv1.DaemonSet:
return &r.Spec.Template.ObjectMeta, true
case *extensionsv1beta1.ReplicaSet:
case *kappsv1beta2.DaemonSet:
return &r.Spec.Template.ObjectMeta, true
case *batchv1.Job:

case *extensions.Deployment:
return &r.Spec.Template.ObjectMeta, true
case *batchv2alpha1.CronJob:
return &r.Spec.JobTemplate.Spec.Template.ObjectMeta, true
case *batchv2alpha1.JobTemplate:
return &r.Template.Spec.Template.ObjectMeta, true
case *appsv1beta1.StatefulSet:
case *extensionsv1beta1.Deployment:
return &r.Spec.Template.ObjectMeta, true
case *appsv1beta1.Deployment:
case *kappsv1.Deployment:
return &r.Spec.Template.ObjectMeta, true
case *securityv1.PodSecurityPolicySubjectReview:
case *kappsv1beta1.Deployment:
return &r.Spec.Template.ObjectMeta, true
case *securityv1.PodSecurityPolicySelfSubjectReview:
case *kappsv1beta2.Deployment:
return &r.Spec.Template.ObjectMeta, true
case *securityv1.PodSecurityPolicyReview:

case *extensions.ReplicaSet:
return &r.Spec.Template.ObjectMeta, true
case *appsv1.DeploymentConfig:
if r.Spec.Template != nil {
return &r.Spec.Template.ObjectMeta, true
}
case *kapi.PodTemplate:
return &r.Template.ObjectMeta, true
case *kapi.ReplicationController:
if r.Spec.Template != nil {
return &r.Spec.Template.ObjectMeta, true
}
case *extensions.DaemonSet:
case *extensionsv1beta1.ReplicaSet:
return &r.Spec.Template.ObjectMeta, true
case *extensions.Deployment:
case *kappsv1.ReplicaSet:
return &r.Spec.Template.ObjectMeta, true
case *extensions.ReplicaSet:
case *kappsv1beta2.ReplicaSet:
return &r.Spec.Template.ObjectMeta, true

case *batch.Job:
return &r.Spec.Template.ObjectMeta, true
case *batchv1.Job:
return &r.Spec.Template.ObjectMeta, true

case *batch.CronJob:
return &r.Spec.JobTemplate.Spec.Template.ObjectMeta, true
case *batchv2alpha1.CronJob:
return &r.Spec.JobTemplate.Spec.Template.ObjectMeta, true
case *batchv1beta1.CronJob:
return &r.Spec.JobTemplate.Spec.Template.ObjectMeta, true

case *batch.JobTemplate:
return &r.Template.Spec.Template.ObjectMeta, true
case *batchv2alpha1.JobTemplate:
return &r.Template.Spec.Template.ObjectMeta, true
case *batchv1beta1.JobTemplate:
return &r.Template.Spec.Template.ObjectMeta, true

case *apps.StatefulSet:
return &r.Spec.Template.ObjectMeta, true
case *kappsv1.StatefulSet:
return &r.Spec.Template.ObjectMeta, true
case *kappsv1beta1.StatefulSet:
return &r.Spec.Template.ObjectMeta, true
case *kappsv1beta2.StatefulSet:
return &r.Spec.Template.ObjectMeta, true

case *securityapi.PodSecurityPolicySubjectReview:
return &r.Spec.Template.ObjectMeta, true
case *securityv1.PodSecurityPolicySubjectReview:
return &r.Spec.Template.ObjectMeta, true

case *securityapi.PodSecurityPolicySelfSubjectReview:
return &r.Spec.Template.ObjectMeta, true
case *securityv1.PodSecurityPolicySelfSubjectReview:
return &r.Spec.Template.ObjectMeta, true

case *securityapi.PodSecurityPolicyReview:
return &r.Spec.Template.ObjectMeta, true
case *securityv1.PodSecurityPolicyReview:
return &r.Spec.Template.ObjectMeta, true

case *appsapi.DeploymentConfig:
if r.Spec.Template != nil {
return &r.Spec.Template.ObjectMeta, true
}
case *appsv1.DeploymentConfig:
if r.Spec.Template != nil {
return &r.Spec.Template.ObjectMeta, true
}
}
return nil, false
}
Expand All @@ -212,7 +281,7 @@ func (m containerMutator) GetImage() string { return m.Image }
func (m containerMutator) SetImage(image string) { m.Image = image }

type containerV1Mutator struct {
*kapiv1.Container
*corev1.Container
}

func (m containerV1Mutator) GetName() string { return m.Name }
Expand Down Expand Up @@ -322,16 +391,16 @@ func (m *podSpecMutator) GetContainerByIndex(init bool, i int) (ContainerMutator

// podSpecV1Mutator implements the mutation interface over objects with a pod spec.
type podSpecV1Mutator struct {
spec *kapiv1.PodSpec
oldSpec *kapiv1.PodSpec
spec *corev1.PodSpec
oldSpec *corev1.PodSpec
path *field.Path
}

func (m *podSpecV1Mutator) Path() *field.Path {
return m.path
}

func hasIdenticalPodSpecV1Image(spec *kapiv1.PodSpec, containerName, image string) bool {
func hasIdenticalPodSpecV1Image(spec *corev1.PodSpec, containerName, image string) bool {
if spec == nil {
return false
}
Expand Down Expand Up @@ -405,7 +474,7 @@ func (m *podSpecV1Mutator) GetContainerByName(name string) (ContainerMutator, bo
}

func (m *podSpecV1Mutator) GetContainerByIndex(init bool, i int) (ContainerMutator, bool) {
var container *kapiv1.Container
var container *corev1.Container
spec := m.spec
if init {
if i < 0 || i >= len(spec.InitContainers) {
Expand Down
Loading

0 comments on commit d87f18a

Please sign in to comment.