mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Merge pull request #30241 from Q-Lee/webhook
Automatic merge from submit-queue Adding types file for image admission controller. <!-- Checklist for submitting a Pull Request Please remove this comment block before submitting. 1. Please read our [contributor guidelines](https://github.com/kubernetes/kubernetes/blob/master/CONTRIBUTING.md). 2. See our [developer guide](https://github.com/kubernetes/kubernetes/blob/master/docs/devel/development.md). 3. If you want this PR to automatically close an issue when it is merged, add `fixes #<issue number>` or `fixes #<issue number>, fixes #<issue number>` to close multiple issues (see: https://github.com/blog/1506-closing-issues-via-pull-requests). 4. Follow the instructions for [labeling and writing a release note for this PR](https://github.com/kubernetes/kubernetes/blob/master/docs/devel/pull-requests.md#release-notes) in the block below. --> ```release-note Adding container image verification webhook API. ```
This commit is contained in:
		@@ -77,6 +77,7 @@ func New() *Generator {
 | 
			
		||||
			`k8s.io/kubernetes/pkg/apis/rbac/v1alpha1`,
 | 
			
		||||
			`k8s.io/kubernetes/federation/apis/federation/v1beta1`,
 | 
			
		||||
			`k8s.io/kubernetes/pkg/apis/certificates/v1alpha1`,
 | 
			
		||||
			`k8s.io/kubernetes/pkg/apis/imagepolicy/v1alpha1`,
 | 
			
		||||
		}, ","),
 | 
			
		||||
		DropEmbeddedFields: "k8s.io/kubernetes/pkg/api/unversioned.TypeMeta",
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -70,6 +70,7 @@ pkg/apis/extensions/install
 | 
			
		||||
pkg/apis/extensions/v1beta1
 | 
			
		||||
pkg/apis/policy/install
 | 
			
		||||
pkg/apis/rbac/install
 | 
			
		||||
pkg/apis/imagepolicy/install
 | 
			
		||||
pkg/api/v1
 | 
			
		||||
pkg/auth/authenticator
 | 
			
		||||
pkg/auth/authorizer/union
 | 
			
		||||
 
 | 
			
		||||
@@ -66,7 +66,7 @@ KUBE_GOVERALLS_BIN=${KUBE_GOVERALLS_BIN:-}
 | 
			
		||||
# "v1,compute/v1alpha1,experimental/v1alpha2;v1,compute/v2,experimental/v1alpha3"
 | 
			
		||||
# FIXME: due to current implementation of a test client (see: pkg/api/testapi/testapi.go)
 | 
			
		||||
# ONLY the last version is tested in each group.
 | 
			
		||||
KUBE_TEST_API_VERSIONS=${KUBE_TEST_API_VERSIONS:-"v1,apps/v1alpha1,authentication.k8s.io/v1beta1,authorization.k8s.io/v1beta1,autoscaling/v1,batch/v1,batch/v2alpha1,certificates/v1alpha1,extensions/v1beta1,federation/v1beta1,policy/v1alpha1,rbac.authorization.k8s.io/v1alpha1"}
 | 
			
		||||
KUBE_TEST_API_VERSIONS=${KUBE_TEST_API_VERSIONS:-"v1,apps/v1alpha1,authentication.k8s.io/v1beta1,authorization.k8s.io/v1beta1,autoscaling/v1,batch/v1,batch/v2alpha1,certificates/v1alpha1,extensions/v1beta1,federation/v1beta1,policy/v1alpha1,rbac.authorization.k8s.io/v1alpha1,imagepolicy.k8s.io/v1alpha1"}
 | 
			
		||||
# once we have multiple group supports
 | 
			
		||||
# Create a junit-style XML test report in this directory if set.
 | 
			
		||||
KUBE_JUNIT_REPORT_DIR=${KUBE_JUNIT_REPORT_DIR:-}
 | 
			
		||||
@@ -156,6 +156,8 @@ junitFilenamePrefix() {
 | 
			
		||||
  fi
 | 
			
		||||
  mkdir -p "${KUBE_JUNIT_REPORT_DIR}"
 | 
			
		||||
  local KUBE_TEST_API_NO_SLASH="${KUBE_TEST_API//\//-}"
 | 
			
		||||
  # This file name isn't parsed by anything, and tee needs a shorter file name.
 | 
			
		||||
  KUBE_TEST_API_NO_SLASH="${KUBE_TEST_API_NO_SLASH//k8s.io-/}"
 | 
			
		||||
  echo "${KUBE_JUNIT_REPORT_DIR}/junit_${KUBE_TEST_API_NO_SLASH}_$(kube::util::sortable_date)"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -34,6 +34,7 @@ import (
 | 
			
		||||
	"k8s.io/kubernetes/pkg/apis/batch"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/apis/certificates"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/apis/extensions"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/apis/imagepolicy"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/apis/policy"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/apis/rbac"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/runtime"
 | 
			
		||||
@@ -49,6 +50,7 @@ import (
 | 
			
		||||
	_ "k8s.io/kubernetes/pkg/apis/certificates/install"
 | 
			
		||||
	_ "k8s.io/kubernetes/pkg/apis/componentconfig/install"
 | 
			
		||||
	_ "k8s.io/kubernetes/pkg/apis/extensions/install"
 | 
			
		||||
	_ "k8s.io/kubernetes/pkg/apis/imagepolicy/install"
 | 
			
		||||
	_ "k8s.io/kubernetes/pkg/apis/policy/install"
 | 
			
		||||
	_ "k8s.io/kubernetes/pkg/apis/rbac/install"
 | 
			
		||||
)
 | 
			
		||||
@@ -64,6 +66,7 @@ var (
 | 
			
		||||
	Federation   TestGroup
 | 
			
		||||
	Rbac         TestGroup
 | 
			
		||||
	Certificates TestGroup
 | 
			
		||||
	ImagePolicy  TestGroup
 | 
			
		||||
 | 
			
		||||
	serializer        runtime.SerializerInfo
 | 
			
		||||
	storageSerializer runtime.SerializerInfo
 | 
			
		||||
@@ -225,6 +228,16 @@ func init() {
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if _, ok := Groups[imagepolicy.GroupName]; !ok {
 | 
			
		||||
		externalGroupVersion := unversioned.GroupVersion{Group: imagepolicy.GroupName, Version: registered.GroupOrDie(imagepolicy.GroupName).GroupVersion.Version}
 | 
			
		||||
		Groups[imagepolicy.GroupName] = TestGroup{
 | 
			
		||||
			externalGroupVersion: externalGroupVersion,
 | 
			
		||||
			internalGroupVersion: imagepolicy.SchemeGroupVersion,
 | 
			
		||||
			internalTypes:        api.Scheme.KnownTypes(imagepolicy.SchemeGroupVersion),
 | 
			
		||||
			externalTypes:        api.Scheme.KnownTypes(externalGroupVersion),
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	Default = Groups[api.GroupName]
 | 
			
		||||
	Autoscaling = Groups[autoscaling.GroupName]
 | 
			
		||||
	Batch = Groups[batch.GroupName]
 | 
			
		||||
@@ -234,6 +247,7 @@ func init() {
 | 
			
		||||
	Extensions = Groups[extensions.GroupName]
 | 
			
		||||
	Federation = Groups[federation.GroupName]
 | 
			
		||||
	Rbac = Groups[rbac.GroupName]
 | 
			
		||||
	ImagePolicy = Groups[imagepolicy.GroupName]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (g TestGroup) ContentConfig() (string, *unversioned.GroupVersion, runtime.Codec) {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										20
									
								
								pkg/apis/imagepolicy/doc.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								pkg/apis/imagepolicy/doc.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
/*
 | 
			
		||||
Copyright 2016 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.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
// +k8s:deepcopy-gen=package,register
 | 
			
		||||
// +groupName=imagepolicy.k8s.io
 | 
			
		||||
 | 
			
		||||
package imagepolicy // import "k8s.io/kubernetes/pkg/apis/imagepolicy"
 | 
			
		||||
							
								
								
									
										123
									
								
								pkg/apis/imagepolicy/install/install.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										123
									
								
								pkg/apis/imagepolicy/install/install.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,123 @@
 | 
			
		||||
/*
 | 
			
		||||
Copyright 2016 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 install installs the experimental API group, making it available as
 | 
			
		||||
// an option to all of the API encoding/decoding machinery.
 | 
			
		||||
package install
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api/meta"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/apimachinery"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/apis/imagepolicy"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/apis/imagepolicy/v1alpha1"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/runtime"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/util/sets"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const importPrefix = "k8s.io/kubernetes/pkg/apis/imagepolicy"
 | 
			
		||||
 | 
			
		||||
var accessor = meta.NewAccessor()
 | 
			
		||||
 | 
			
		||||
// availableVersions lists all known external versions for this group from most preferred to least preferred
 | 
			
		||||
var availableVersions = []unversioned.GroupVersion{v1alpha1.SchemeGroupVersion}
 | 
			
		||||
 | 
			
		||||
func init() {
 | 
			
		||||
	registered.RegisterVersions(availableVersions)
 | 
			
		||||
	externalVersions := []unversioned.GroupVersion{}
 | 
			
		||||
	for _, v := range availableVersions {
 | 
			
		||||
		if registered.IsAllowedVersion(v) {
 | 
			
		||||
			externalVersions = append(externalVersions, v)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	if len(externalVersions) == 0 {
 | 
			
		||||
		glog.V(4).Infof("No version is registered for group %v", imagepolicy.GroupName)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if err := registered.EnableVersions(externalVersions...); err != nil {
 | 
			
		||||
		glog.V(4).Infof("%v", err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	if err := enableVersions(externalVersions); err != nil {
 | 
			
		||||
		glog.V(4).Infof("%v", err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// TODO: enableVersions should be centralized rather than spread in each API
 | 
			
		||||
// group.
 | 
			
		||||
// We can combine registered.RegisterVersions, registered.EnableVersions and
 | 
			
		||||
// registered.RegisterGroup once we have moved enableVersions there.
 | 
			
		||||
func enableVersions(externalVersions []unversioned.GroupVersion) error {
 | 
			
		||||
	addVersionsToScheme(externalVersions...)
 | 
			
		||||
	preferredExternalVersion := externalVersions[0]
 | 
			
		||||
 | 
			
		||||
	groupMeta := apimachinery.GroupMeta{
 | 
			
		||||
		GroupVersion:  preferredExternalVersion,
 | 
			
		||||
		GroupVersions: externalVersions,
 | 
			
		||||
		RESTMapper:    newRESTMapper(externalVersions),
 | 
			
		||||
		SelfLinker:    runtime.SelfLinker(accessor),
 | 
			
		||||
		InterfacesFor: interfacesFor,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if err := registered.RegisterGroup(groupMeta); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	api.RegisterRESTMapper(groupMeta.RESTMapper)
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func addVersionsToScheme(externalVersions ...unversioned.GroupVersion) {
 | 
			
		||||
	// add the internal version to Scheme
 | 
			
		||||
	imagepolicy.AddToScheme(api.Scheme)
 | 
			
		||||
	// add the enabled external versions to Scheme
 | 
			
		||||
	for _, v := range externalVersions {
 | 
			
		||||
		if !registered.IsEnabledVersion(v) {
 | 
			
		||||
			glog.Errorf("Version %s is not enabled, so it will not be added to the Scheme.", v)
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		switch v {
 | 
			
		||||
		case v1alpha1.SchemeGroupVersion:
 | 
			
		||||
			v1alpha1.AddToScheme(api.Scheme)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func newRESTMapper(externalVersions []unversioned.GroupVersion) meta.RESTMapper {
 | 
			
		||||
	rootScoped := sets.NewString("ImageReview")
 | 
			
		||||
	ignoredKinds := sets.NewString()
 | 
			
		||||
	return api.NewDefaultRESTMapper(externalVersions, interfacesFor, importPrefix, ignoredKinds, rootScoped)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func interfacesFor(version unversioned.GroupVersion) (*meta.VersionInterfaces, error) {
 | 
			
		||||
	switch version {
 | 
			
		||||
	case v1alpha1.SchemeGroupVersion:
 | 
			
		||||
		return &meta.VersionInterfaces{
 | 
			
		||||
			ObjectConvertor:  api.Scheme,
 | 
			
		||||
			MetadataAccessor: accessor,
 | 
			
		||||
		}, nil
 | 
			
		||||
	default:
 | 
			
		||||
		g, _ := registered.Group(imagepolicy.GroupName)
 | 
			
		||||
		return nil, fmt.Errorf("unsupported storage version: %s (valid: %v)", version, g.GroupVersions)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										56
									
								
								pkg/apis/imagepolicy/register.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								pkg/apis/imagepolicy/register.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,56 @@
 | 
			
		||||
/*
 | 
			
		||||
Copyright 2016 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 imagepolicy
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/runtime"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// GroupName is the group name use in this package
 | 
			
		||||
const GroupName = "imagepolicy.k8s.io"
 | 
			
		||||
 | 
			
		||||
// SchemeGroupVersion is group version used to register these objects
 | 
			
		||||
var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal}
 | 
			
		||||
 | 
			
		||||
// Kind takes an unqualified kind and returns back a Group qualified GroupKind
 | 
			
		||||
func Kind(kind string) unversioned.GroupKind {
 | 
			
		||||
	return SchemeGroupVersion.WithKind(kind).GroupKind()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Resource takes an unqualified resource and returns back a Group qualified GroupResource
 | 
			
		||||
func Resource(resource string) unversioned.GroupResource {
 | 
			
		||||
	return SchemeGroupVersion.WithResource(resource).GroupResource()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes)
 | 
			
		||||
	AddToScheme   = SchemeBuilder.AddToScheme
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func addKnownTypes(scheme *runtime.Scheme) error {
 | 
			
		||||
	scheme.AddKnownTypes(SchemeGroupVersion,
 | 
			
		||||
		&api.ListOptions{},
 | 
			
		||||
		&api.DeleteOptions{},
 | 
			
		||||
		&api.ExportOptions{},
 | 
			
		||||
 | 
			
		||||
		&ImageReview{},
 | 
			
		||||
	)
 | 
			
		||||
	//	versioned.AddToGroupVersion(scheme, SchemeGroupVersion)
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										2146
									
								
								pkg/apis/imagepolicy/types.generated.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2146
									
								
								pkg/apis/imagepolicy/types.generated.go
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										67
									
								
								pkg/apis/imagepolicy/types.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								pkg/apis/imagepolicy/types.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,67 @@
 | 
			
		||||
/*
 | 
			
		||||
Copyright 2016 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 imagepolicy
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// +genclient=true
 | 
			
		||||
// +nonNamespaced=true
 | 
			
		||||
// +noMethods=true
 | 
			
		||||
 | 
			
		||||
// ImageReview checks if the set of images in a pod are allowed.
 | 
			
		||||
type ImageReview struct {
 | 
			
		||||
	unversioned.TypeMeta
 | 
			
		||||
	api.ObjectMeta
 | 
			
		||||
 | 
			
		||||
	// Spec holds information about the pod being evaluated
 | 
			
		||||
	Spec ImageReviewSpec
 | 
			
		||||
 | 
			
		||||
	// Status is filled in by the backend and indicates whether the pod should be allowed.
 | 
			
		||||
	Status ImageReviewStatus
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ImageReviewSpec is a description of the pod creation request.
 | 
			
		||||
type ImageReviewSpec struct {
 | 
			
		||||
	// Containers is a list of a subset of the information in each container of the Pod being created.
 | 
			
		||||
	Containers []ImageReviewContainerSpec
 | 
			
		||||
	// Annotations is a list of key-value pairs extracted from the Pod's annotations.
 | 
			
		||||
	// It only includes keys which match the pattern `*.image-policy.k8s.io/*`.
 | 
			
		||||
	// It is up to each webhook backend to determine how to interpret these annotations, if at all.
 | 
			
		||||
	Annotations map[string]string
 | 
			
		||||
	// Namespace is the namespace the pod is being created in.
 | 
			
		||||
	Namespace string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ImageReviewContainerSpec is a description of a container within the pod creation request.
 | 
			
		||||
type ImageReviewContainerSpec struct {
 | 
			
		||||
	// This can be in the form image:tag or image@SHA:012345679abcdef.
 | 
			
		||||
	Image string
 | 
			
		||||
	// In future, we may add command line overrides, exec health check command lines, and so on.
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ImageReviewStatus is the result of the token authentication request.
 | 
			
		||||
type ImageReviewStatus struct {
 | 
			
		||||
	// Allowed indicates that all images were allowed to be run.
 | 
			
		||||
	Allowed bool
 | 
			
		||||
	// Reason should be empty unless Allowed is false in which case it
 | 
			
		||||
	// may contain a short description of what is wrong.  Kubernetes
 | 
			
		||||
	// may truncate excessively long errors when displaying to the user.
 | 
			
		||||
	Reason string
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										21
									
								
								pkg/apis/imagepolicy/v1alpha1/doc.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								pkg/apis/imagepolicy/v1alpha1/doc.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
/*
 | 
			
		||||
Copyright 2016 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.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
// +groupName=imagepolicy.k8s.io
 | 
			
		||||
// +k8s:deepcopy-gen=package,register
 | 
			
		||||
// +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/imagepolicy
 | 
			
		||||
 | 
			
		||||
package v1alpha1 // import "k8s.io/kubernetes/pkg/apis/imagepolicy/v1alpha1"
 | 
			
		||||
							
								
								
									
										1059
									
								
								pkg/apis/imagepolicy/v1alpha1/generated.pb.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1059
									
								
								pkg/apis/imagepolicy/v1alpha1/generated.pb.go
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										74
									
								
								pkg/apis/imagepolicy/v1alpha1/generated.proto
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								pkg/apis/imagepolicy/v1alpha1/generated.proto
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,74 @@
 | 
			
		||||
/*
 | 
			
		||||
Copyright 2016 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.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// This file was autogenerated by go-to-protobuf. Do not edit it manually!
 | 
			
		||||
 | 
			
		||||
syntax = 'proto2';
 | 
			
		||||
 | 
			
		||||
package k8s.io.kubernetes.pkg.apis.imagepolicy.v1alpha1;
 | 
			
		||||
 | 
			
		||||
import "k8s.io/kubernetes/pkg/api/resource/generated.proto";
 | 
			
		||||
import "k8s.io/kubernetes/pkg/api/unversioned/generated.proto";
 | 
			
		||||
import "k8s.io/kubernetes/pkg/api/v1/generated.proto";
 | 
			
		||||
import "k8s.io/kubernetes/pkg/runtime/generated.proto";
 | 
			
		||||
import "k8s.io/kubernetes/pkg/util/intstr/generated.proto";
 | 
			
		||||
 | 
			
		||||
// Package-wide variables from generator "generated".
 | 
			
		||||
option go_package = "v1alpha1";
 | 
			
		||||
 | 
			
		||||
// ImageReview checks if the set of images in a pod are allowed.
 | 
			
		||||
message ImageReview {
 | 
			
		||||
  optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1;
 | 
			
		||||
 | 
			
		||||
  // Spec holds information about the pod being evaluated
 | 
			
		||||
  optional ImageReviewSpec spec = 2;
 | 
			
		||||
 | 
			
		||||
  // Status is filled in by the backend and indicates whether the pod should be allowed.
 | 
			
		||||
  optional ImageReviewStatus status = 3;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ImageReviewContainerSpec is a description of a container within the pod creation request.
 | 
			
		||||
message ImageReviewContainerSpec {
 | 
			
		||||
  // This can be in the form image:tag or image@SHA:012345679abcdef.
 | 
			
		||||
  optional string image = 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ImageReviewSpec is a description of the pod creation request.
 | 
			
		||||
message ImageReviewSpec {
 | 
			
		||||
  // Containers is a list of a subset of the information in each container of the Pod being created.
 | 
			
		||||
  repeated ImageReviewContainerSpec containers = 1;
 | 
			
		||||
 | 
			
		||||
  // Annotations is a list of key-value pairs extracted from the Pod's annotations.
 | 
			
		||||
  // It only includes keys which match the pattern `*.image-policy.k8s.io/*`.
 | 
			
		||||
  // It is up to each webhook backend to determine how to interpret these annotations, if at all.
 | 
			
		||||
  map<string, string> annotations = 2;
 | 
			
		||||
 | 
			
		||||
  // Namespace is the namespace the pod is being created in.
 | 
			
		||||
  optional string namespace = 3;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ImageReviewStatus is the result of the token authentication request.
 | 
			
		||||
message ImageReviewStatus {
 | 
			
		||||
  // Allowed indicates that all images were allowed to be run.
 | 
			
		||||
  optional bool allowed = 1;
 | 
			
		||||
 | 
			
		||||
  // Reason should be empty unless Allowed is false in which case it
 | 
			
		||||
  // may contain a short description of what is wrong.  Kubernetes
 | 
			
		||||
  // may truncate excessively long errors when displaying to the user.
 | 
			
		||||
  optional string reason = 2;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										46
									
								
								pkg/apis/imagepolicy/v1alpha1/register.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								pkg/apis/imagepolicy/v1alpha1/register.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,46 @@
 | 
			
		||||
/*
 | 
			
		||||
Copyright 2016 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 v1alpha1
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api/v1"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/runtime"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// GroupName is the group name for this API.
 | 
			
		||||
const GroupName = "imagepolicy.k8s.io"
 | 
			
		||||
 | 
			
		||||
// SchemeGroupVersion is group version used to register these objects
 | 
			
		||||
var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1alpha1"}
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes)
 | 
			
		||||
	AddToScheme   = SchemeBuilder.AddToScheme
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Adds the list of known types to api.Scheme.
 | 
			
		||||
func addKnownTypes(scheme *runtime.Scheme) error {
 | 
			
		||||
	scheme.AddKnownTypes(SchemeGroupVersion,
 | 
			
		||||
		&v1.ListOptions{},
 | 
			
		||||
		&v1.DeleteOptions{},
 | 
			
		||||
		&v1.ExportOptions{},
 | 
			
		||||
 | 
			
		||||
		&ImageReview{},
 | 
			
		||||
	)
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										1208
									
								
								pkg/apis/imagepolicy/v1alpha1/types.generated.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1208
									
								
								pkg/apis/imagepolicy/v1alpha1/types.generated.go
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										67
									
								
								pkg/apis/imagepolicy/v1alpha1/types.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								pkg/apis/imagepolicy/v1alpha1/types.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,67 @@
 | 
			
		||||
/*
 | 
			
		||||
Copyright 2016 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 v1alpha1
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api/v1"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// +genclient=true
 | 
			
		||||
// +nonNamespaced=true
 | 
			
		||||
// +noMethods=true
 | 
			
		||||
 | 
			
		||||
// ImageReview checks if the set of images in a pod are allowed.
 | 
			
		||||
type ImageReview struct {
 | 
			
		||||
	unversioned.TypeMeta `json:",inline"`
 | 
			
		||||
	v1.ObjectMeta        `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
 | 
			
		||||
 | 
			
		||||
	// Spec holds information about the pod being evaluated
 | 
			
		||||
	Spec ImageReviewSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"`
 | 
			
		||||
 | 
			
		||||
	// Status is filled in by the backend and indicates whether the pod should be allowed.
 | 
			
		||||
	Status ImageReviewStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ImageReviewSpec is a description of the pod creation request.
 | 
			
		||||
type ImageReviewSpec struct {
 | 
			
		||||
	// Containers is a list of a subset of the information in each container of the Pod being created.
 | 
			
		||||
	Containers []ImageReviewContainerSpec `json:"containers,omitempty" protobuf:"bytes,1,rep,name=containers"`
 | 
			
		||||
	// Annotations is a list of key-value pairs extracted from the Pod's annotations.
 | 
			
		||||
	// It only includes keys which match the pattern `*.image-policy.k8s.io/*`.
 | 
			
		||||
	// It is up to each webhook backend to determine how to interpret these annotations, if at all.
 | 
			
		||||
	Annotations map[string]string `json:"annotations,omitempty" protobuf:"bytes,2,rep,name=annotations"`
 | 
			
		||||
	// Namespace is the namespace the pod is being created in.
 | 
			
		||||
	Namespace string `json:"namespace,omitempty" protobuf:"bytes,3,opt,name=namespace"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ImageReviewContainerSpec is a description of a container within the pod creation request.
 | 
			
		||||
type ImageReviewContainerSpec struct {
 | 
			
		||||
	// This can be in the form image:tag or image@SHA:012345679abcdef.
 | 
			
		||||
	Image string `json:"image,omitempty" protobuf:"bytes,1,opt,name=image"`
 | 
			
		||||
	// In future, we may add command line overrides, exec health check command lines, and so on.
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ImageReviewStatus is the result of the token authentication request.
 | 
			
		||||
type ImageReviewStatus struct {
 | 
			
		||||
	// Allowed indicates that all images were allowed to be run.
 | 
			
		||||
	Allowed bool `json:"allowed" protobuf:"varint,1,opt,name=allowed"`
 | 
			
		||||
	// Reason should be empty unless Allowed is false in which case it
 | 
			
		||||
	// may contain a short description of what is wrong.  Kubernetes
 | 
			
		||||
	// may truncate excessively long errors when displaying to the user.
 | 
			
		||||
	Reason string `json:"reason,omitempty" protobuf:"bytes,2,opt,name=reason"`
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										169
									
								
								pkg/apis/imagepolicy/v1alpha1/zz_generated.conversion.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										169
									
								
								pkg/apis/imagepolicy/v1alpha1/zz_generated.conversion.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,169 @@
 | 
			
		||||
// +build !ignore_autogenerated
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
Copyright 2016 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.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
// This file was autogenerated by conversion-gen. Do not edit it manually!
 | 
			
		||||
 | 
			
		||||
package v1alpha1
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	api "k8s.io/kubernetes/pkg/api"
 | 
			
		||||
	imagepolicy "k8s.io/kubernetes/pkg/apis/imagepolicy"
 | 
			
		||||
	conversion "k8s.io/kubernetes/pkg/conversion"
 | 
			
		||||
	runtime "k8s.io/kubernetes/pkg/runtime"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func init() {
 | 
			
		||||
	SchemeBuilder.Register(RegisterConversions)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// RegisterConversions adds conversion functions to the given scheme.
 | 
			
		||||
// Public to allow building arbitrary schemes.
 | 
			
		||||
func RegisterConversions(scheme *runtime.Scheme) error {
 | 
			
		||||
	return scheme.AddGeneratedConversionFuncs(
 | 
			
		||||
		Convert_v1alpha1_ImageReview_To_imagepolicy_ImageReview,
 | 
			
		||||
		Convert_imagepolicy_ImageReview_To_v1alpha1_ImageReview,
 | 
			
		||||
		Convert_v1alpha1_ImageReviewContainerSpec_To_imagepolicy_ImageReviewContainerSpec,
 | 
			
		||||
		Convert_imagepolicy_ImageReviewContainerSpec_To_v1alpha1_ImageReviewContainerSpec,
 | 
			
		||||
		Convert_v1alpha1_ImageReviewSpec_To_imagepolicy_ImageReviewSpec,
 | 
			
		||||
		Convert_imagepolicy_ImageReviewSpec_To_v1alpha1_ImageReviewSpec,
 | 
			
		||||
		Convert_v1alpha1_ImageReviewStatus_To_imagepolicy_ImageReviewStatus,
 | 
			
		||||
		Convert_imagepolicy_ImageReviewStatus_To_v1alpha1_ImageReviewStatus,
 | 
			
		||||
	)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func autoConvert_v1alpha1_ImageReview_To_imagepolicy_ImageReview(in *ImageReview, out *imagepolicy.ImageReview, s conversion.Scope) error {
 | 
			
		||||
	if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	// TODO: Inefficient conversion - can we improve it?
 | 
			
		||||
	if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	if err := Convert_v1alpha1_ImageReviewSpec_To_imagepolicy_ImageReviewSpec(&in.Spec, &out.Spec, s); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	if err := Convert_v1alpha1_ImageReviewStatus_To_imagepolicy_ImageReviewStatus(&in.Status, &out.Status, s); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Convert_v1alpha1_ImageReview_To_imagepolicy_ImageReview(in *ImageReview, out *imagepolicy.ImageReview, s conversion.Scope) error {
 | 
			
		||||
	return autoConvert_v1alpha1_ImageReview_To_imagepolicy_ImageReview(in, out, s)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func autoConvert_imagepolicy_ImageReview_To_v1alpha1_ImageReview(in *imagepolicy.ImageReview, out *ImageReview, s conversion.Scope) error {
 | 
			
		||||
	if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	// TODO: Inefficient conversion - can we improve it?
 | 
			
		||||
	if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	if err := Convert_imagepolicy_ImageReviewSpec_To_v1alpha1_ImageReviewSpec(&in.Spec, &out.Spec, s); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	if err := Convert_imagepolicy_ImageReviewStatus_To_v1alpha1_ImageReviewStatus(&in.Status, &out.Status, s); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Convert_imagepolicy_ImageReview_To_v1alpha1_ImageReview(in *imagepolicy.ImageReview, out *ImageReview, s conversion.Scope) error {
 | 
			
		||||
	return autoConvert_imagepolicy_ImageReview_To_v1alpha1_ImageReview(in, out, s)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func autoConvert_v1alpha1_ImageReviewContainerSpec_To_imagepolicy_ImageReviewContainerSpec(in *ImageReviewContainerSpec, out *imagepolicy.ImageReviewContainerSpec, s conversion.Scope) error {
 | 
			
		||||
	out.Image = in.Image
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Convert_v1alpha1_ImageReviewContainerSpec_To_imagepolicy_ImageReviewContainerSpec(in *ImageReviewContainerSpec, out *imagepolicy.ImageReviewContainerSpec, s conversion.Scope) error {
 | 
			
		||||
	return autoConvert_v1alpha1_ImageReviewContainerSpec_To_imagepolicy_ImageReviewContainerSpec(in, out, s)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func autoConvert_imagepolicy_ImageReviewContainerSpec_To_v1alpha1_ImageReviewContainerSpec(in *imagepolicy.ImageReviewContainerSpec, out *ImageReviewContainerSpec, s conversion.Scope) error {
 | 
			
		||||
	out.Image = in.Image
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Convert_imagepolicy_ImageReviewContainerSpec_To_v1alpha1_ImageReviewContainerSpec(in *imagepolicy.ImageReviewContainerSpec, out *ImageReviewContainerSpec, s conversion.Scope) error {
 | 
			
		||||
	return autoConvert_imagepolicy_ImageReviewContainerSpec_To_v1alpha1_ImageReviewContainerSpec(in, out, s)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func autoConvert_v1alpha1_ImageReviewSpec_To_imagepolicy_ImageReviewSpec(in *ImageReviewSpec, out *imagepolicy.ImageReviewSpec, s conversion.Scope) error {
 | 
			
		||||
	if in.Containers != nil {
 | 
			
		||||
		in, out := &in.Containers, &out.Containers
 | 
			
		||||
		*out = make([]imagepolicy.ImageReviewContainerSpec, len(*in))
 | 
			
		||||
		for i := range *in {
 | 
			
		||||
			if err := Convert_v1alpha1_ImageReviewContainerSpec_To_imagepolicy_ImageReviewContainerSpec(&(*in)[i], &(*out)[i], s); err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	} else {
 | 
			
		||||
		out.Containers = nil
 | 
			
		||||
	}
 | 
			
		||||
	out.Annotations = in.Annotations
 | 
			
		||||
	out.Namespace = in.Namespace
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Convert_v1alpha1_ImageReviewSpec_To_imagepolicy_ImageReviewSpec(in *ImageReviewSpec, out *imagepolicy.ImageReviewSpec, s conversion.Scope) error {
 | 
			
		||||
	return autoConvert_v1alpha1_ImageReviewSpec_To_imagepolicy_ImageReviewSpec(in, out, s)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func autoConvert_imagepolicy_ImageReviewSpec_To_v1alpha1_ImageReviewSpec(in *imagepolicy.ImageReviewSpec, out *ImageReviewSpec, s conversion.Scope) error {
 | 
			
		||||
	if in.Containers != nil {
 | 
			
		||||
		in, out := &in.Containers, &out.Containers
 | 
			
		||||
		*out = make([]ImageReviewContainerSpec, len(*in))
 | 
			
		||||
		for i := range *in {
 | 
			
		||||
			if err := Convert_imagepolicy_ImageReviewContainerSpec_To_v1alpha1_ImageReviewContainerSpec(&(*in)[i], &(*out)[i], s); err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	} else {
 | 
			
		||||
		out.Containers = nil
 | 
			
		||||
	}
 | 
			
		||||
	out.Annotations = in.Annotations
 | 
			
		||||
	out.Namespace = in.Namespace
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Convert_imagepolicy_ImageReviewSpec_To_v1alpha1_ImageReviewSpec(in *imagepolicy.ImageReviewSpec, out *ImageReviewSpec, s conversion.Scope) error {
 | 
			
		||||
	return autoConvert_imagepolicy_ImageReviewSpec_To_v1alpha1_ImageReviewSpec(in, out, s)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func autoConvert_v1alpha1_ImageReviewStatus_To_imagepolicy_ImageReviewStatus(in *ImageReviewStatus, out *imagepolicy.ImageReviewStatus, s conversion.Scope) error {
 | 
			
		||||
	out.Allowed = in.Allowed
 | 
			
		||||
	out.Reason = in.Reason
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Convert_v1alpha1_ImageReviewStatus_To_imagepolicy_ImageReviewStatus(in *ImageReviewStatus, out *imagepolicy.ImageReviewStatus, s conversion.Scope) error {
 | 
			
		||||
	return autoConvert_v1alpha1_ImageReviewStatus_To_imagepolicy_ImageReviewStatus(in, out, s)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func autoConvert_imagepolicy_ImageReviewStatus_To_v1alpha1_ImageReviewStatus(in *imagepolicy.ImageReviewStatus, out *ImageReviewStatus, s conversion.Scope) error {
 | 
			
		||||
	out.Allowed = in.Allowed
 | 
			
		||||
	out.Reason = in.Reason
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Convert_imagepolicy_ImageReviewStatus_To_v1alpha1_ImageReviewStatus(in *imagepolicy.ImageReviewStatus, out *ImageReviewStatus, s conversion.Scope) error {
 | 
			
		||||
	return autoConvert_imagepolicy_ImageReviewStatus_To_v1alpha1_ImageReviewStatus(in, out, s)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										105
									
								
								pkg/apis/imagepolicy/v1alpha1/zz_generated.deepcopy.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								pkg/apis/imagepolicy/v1alpha1/zz_generated.deepcopy.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,105 @@
 | 
			
		||||
// +build !ignore_autogenerated
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
Copyright 2016 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.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
// This file was autogenerated by deepcopy-gen. Do not edit it manually!
 | 
			
		||||
 | 
			
		||||
package v1alpha1
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
			
		||||
	conversion "k8s.io/kubernetes/pkg/conversion"
 | 
			
		||||
	runtime "k8s.io/kubernetes/pkg/runtime"
 | 
			
		||||
	reflect "reflect"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func init() {
 | 
			
		||||
	SchemeBuilder.Register(RegisterDeepCopies)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
 | 
			
		||||
// to allow building arbitrary schemes.
 | 
			
		||||
func RegisterDeepCopies(scheme *runtime.Scheme) error {
 | 
			
		||||
	return scheme.AddGeneratedDeepCopyFuncs(
 | 
			
		||||
		conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_ImageReview, InType: reflect.TypeOf(&ImageReview{})},
 | 
			
		||||
		conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_ImageReviewContainerSpec, InType: reflect.TypeOf(&ImageReviewContainerSpec{})},
 | 
			
		||||
		conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_ImageReviewSpec, InType: reflect.TypeOf(&ImageReviewSpec{})},
 | 
			
		||||
		conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_ImageReviewStatus, InType: reflect.TypeOf(&ImageReviewStatus{})},
 | 
			
		||||
	)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func DeepCopy_v1alpha1_ImageReview(in interface{}, out interface{}, c *conversion.Cloner) error {
 | 
			
		||||
	{
 | 
			
		||||
		in := in.(*ImageReview)
 | 
			
		||||
		out := out.(*ImageReview)
 | 
			
		||||
		out.TypeMeta = in.TypeMeta
 | 
			
		||||
		if err := v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		if err := DeepCopy_v1alpha1_ImageReviewSpec(&in.Spec, &out.Spec, c); err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		out.Status = in.Status
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func DeepCopy_v1alpha1_ImageReviewContainerSpec(in interface{}, out interface{}, c *conversion.Cloner) error {
 | 
			
		||||
	{
 | 
			
		||||
		in := in.(*ImageReviewContainerSpec)
 | 
			
		||||
		out := out.(*ImageReviewContainerSpec)
 | 
			
		||||
		out.Image = in.Image
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func DeepCopy_v1alpha1_ImageReviewSpec(in interface{}, out interface{}, c *conversion.Cloner) error {
 | 
			
		||||
	{
 | 
			
		||||
		in := in.(*ImageReviewSpec)
 | 
			
		||||
		out := out.(*ImageReviewSpec)
 | 
			
		||||
		if in.Containers != nil {
 | 
			
		||||
			in, out := &in.Containers, &out.Containers
 | 
			
		||||
			*out = make([]ImageReviewContainerSpec, len(*in))
 | 
			
		||||
			for i := range *in {
 | 
			
		||||
				(*out)[i] = (*in)[i]
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			out.Containers = nil
 | 
			
		||||
		}
 | 
			
		||||
		if in.Annotations != nil {
 | 
			
		||||
			in, out := &in.Annotations, &out.Annotations
 | 
			
		||||
			*out = make(map[string]string)
 | 
			
		||||
			for key, val := range *in {
 | 
			
		||||
				(*out)[key] = val
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			out.Annotations = nil
 | 
			
		||||
		}
 | 
			
		||||
		out.Namespace = in.Namespace
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func DeepCopy_v1alpha1_ImageReviewStatus(in interface{}, out interface{}, c *conversion.Cloner) error {
 | 
			
		||||
	{
 | 
			
		||||
		in := in.(*ImageReviewStatus)
 | 
			
		||||
		out := out.(*ImageReviewStatus)
 | 
			
		||||
		out.Allowed = in.Allowed
 | 
			
		||||
		out.Reason = in.Reason
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										105
									
								
								pkg/apis/imagepolicy/zz_generated.deepcopy.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								pkg/apis/imagepolicy/zz_generated.deepcopy.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,105 @@
 | 
			
		||||
// +build !ignore_autogenerated
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
Copyright 2016 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.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
// This file was autogenerated by deepcopy-gen. Do not edit it manually!
 | 
			
		||||
 | 
			
		||||
package imagepolicy
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	api "k8s.io/kubernetes/pkg/api"
 | 
			
		||||
	conversion "k8s.io/kubernetes/pkg/conversion"
 | 
			
		||||
	runtime "k8s.io/kubernetes/pkg/runtime"
 | 
			
		||||
	reflect "reflect"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func init() {
 | 
			
		||||
	SchemeBuilder.Register(RegisterDeepCopies)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// RegisterDeepCopies adds deep-copy functions to the given scheme. Public
 | 
			
		||||
// to allow building arbitrary schemes.
 | 
			
		||||
func RegisterDeepCopies(scheme *runtime.Scheme) error {
 | 
			
		||||
	return scheme.AddGeneratedDeepCopyFuncs(
 | 
			
		||||
		conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_imagepolicy_ImageReview, InType: reflect.TypeOf(&ImageReview{})},
 | 
			
		||||
		conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_imagepolicy_ImageReviewContainerSpec, InType: reflect.TypeOf(&ImageReviewContainerSpec{})},
 | 
			
		||||
		conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_imagepolicy_ImageReviewSpec, InType: reflect.TypeOf(&ImageReviewSpec{})},
 | 
			
		||||
		conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_imagepolicy_ImageReviewStatus, InType: reflect.TypeOf(&ImageReviewStatus{})},
 | 
			
		||||
	)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func DeepCopy_imagepolicy_ImageReview(in interface{}, out interface{}, c *conversion.Cloner) error {
 | 
			
		||||
	{
 | 
			
		||||
		in := in.(*ImageReview)
 | 
			
		||||
		out := out.(*ImageReview)
 | 
			
		||||
		out.TypeMeta = in.TypeMeta
 | 
			
		||||
		if err := api.DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		if err := DeepCopy_imagepolicy_ImageReviewSpec(&in.Spec, &out.Spec, c); err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		out.Status = in.Status
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func DeepCopy_imagepolicy_ImageReviewContainerSpec(in interface{}, out interface{}, c *conversion.Cloner) error {
 | 
			
		||||
	{
 | 
			
		||||
		in := in.(*ImageReviewContainerSpec)
 | 
			
		||||
		out := out.(*ImageReviewContainerSpec)
 | 
			
		||||
		out.Image = in.Image
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func DeepCopy_imagepolicy_ImageReviewSpec(in interface{}, out interface{}, c *conversion.Cloner) error {
 | 
			
		||||
	{
 | 
			
		||||
		in := in.(*ImageReviewSpec)
 | 
			
		||||
		out := out.(*ImageReviewSpec)
 | 
			
		||||
		if in.Containers != nil {
 | 
			
		||||
			in, out := &in.Containers, &out.Containers
 | 
			
		||||
			*out = make([]ImageReviewContainerSpec, len(*in))
 | 
			
		||||
			for i := range *in {
 | 
			
		||||
				(*out)[i] = (*in)[i]
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			out.Containers = nil
 | 
			
		||||
		}
 | 
			
		||||
		if in.Annotations != nil {
 | 
			
		||||
			in, out := &in.Annotations, &out.Annotations
 | 
			
		||||
			*out = make(map[string]string)
 | 
			
		||||
			for key, val := range *in {
 | 
			
		||||
				(*out)[key] = val
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			out.Annotations = nil
 | 
			
		||||
		}
 | 
			
		||||
		out.Namespace = in.Namespace
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func DeepCopy_imagepolicy_ImageReviewStatus(in interface{}, out interface{}, c *conversion.Cloner) error {
 | 
			
		||||
	{
 | 
			
		||||
		in := in.(*ImageReviewStatus)
 | 
			
		||||
		out := out.(*ImageReviewStatus)
 | 
			
		||||
		out.Allowed = in.Allowed
 | 
			
		||||
		out.Reason = in.Reason
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user