mirror of https://github.com/knative/pkg.git
				
				
				
			
		
			
				
	
	
		
			96 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
/*
 | 
						|
Copyright 2019 The Knative 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 contains functions that construct boilerplate CRD definitions.
 | 
						|
 | 
						|
package test
 | 
						|
 | 
						|
import (
 | 
						|
	corev1 "k8s.io/api/core/v1"
 | 
						|
	rbacv1 "k8s.io/api/rbac/v1"
 | 
						|
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						|
)
 | 
						|
 | 
						|
const (
 | 
						|
	nginxPort  = 80
 | 
						|
	nginxName  = "nginx"
 | 
						|
	nginxImage = "nginx:1.7.9"
 | 
						|
)
 | 
						|
 | 
						|
// ServiceAccount returns ServiceAccount object in given namespace
 | 
						|
func ServiceAccount(name, namespace string) *corev1.ServiceAccount {
 | 
						|
	return &corev1.ServiceAccount{
 | 
						|
		ObjectMeta: metav1.ObjectMeta{
 | 
						|
			Name:      name,
 | 
						|
			Namespace: namespace,
 | 
						|
		},
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// ClusterRoleBinding returns ClusterRoleBinding for given subject and role
 | 
						|
func ClusterRoleBinding(name string, namespace string, serviceAccount string, role string) *rbacv1.ClusterRoleBinding {
 | 
						|
	return &rbacv1.ClusterRoleBinding{
 | 
						|
		ObjectMeta: metav1.ObjectMeta{
 | 
						|
			Name: name,
 | 
						|
		},
 | 
						|
		Subjects: []rbacv1.Subject{
 | 
						|
			{
 | 
						|
				Kind:      "ServiceAccount",
 | 
						|
				Name:      serviceAccount,
 | 
						|
				Namespace: namespace,
 | 
						|
			},
 | 
						|
		},
 | 
						|
		RoleRef: rbacv1.RoleRef{
 | 
						|
			Kind:     "ClusterRole",
 | 
						|
			Name:     role,
 | 
						|
			APIGroup: "rbac.authorization.k8s.io",
 | 
						|
		},
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// CoreV1ObjectReference returns a corev1.ObjectReference for the given name, kind and apiversion
 | 
						|
func CoreV1ObjectReference(kind, apiversion, name string) *corev1.ObjectReference {
 | 
						|
	return &corev1.ObjectReference{
 | 
						|
		Kind:       kind,
 | 
						|
		APIVersion: apiversion,
 | 
						|
		Name:       name,
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// NginxPod returns nginx pod defined in given namespace
 | 
						|
func NginxPod(namespace string) *corev1.Pod {
 | 
						|
	return &corev1.Pod{
 | 
						|
		ObjectMeta: metav1.ObjectMeta{
 | 
						|
			Name:        nginxName,
 | 
						|
			Namespace:   namespace,
 | 
						|
			Annotations: map[string]string{"sidecar.istio.io/inject": "true"},
 | 
						|
		},
 | 
						|
		Spec: corev1.PodSpec{
 | 
						|
			Containers: []corev1.Container{
 | 
						|
				{
 | 
						|
					Name:  nginxName,
 | 
						|
					Image: nginxImage,
 | 
						|
					Ports: []corev1.ContainerPort{
 | 
						|
						{
 | 
						|
							ContainerPort: nginxPort,
 | 
						|
						},
 | 
						|
					},
 | 
						|
				},
 | 
						|
			},
 | 
						|
		},
 | 
						|
	}
 | 
						|
}
 |