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 string, 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,
 | |
| 						},
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 		},
 | |
| 	}
 | |
| }
 |