-
Notifications
You must be signed in to change notification settings - Fork 6
/
custom_resource_definition.go
97 lines (84 loc) · 3.12 KB
/
custom_resource_definition.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/*
Copyright (C) 2018 Synopsys, Inc.
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you 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 api
import (
apiext "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
)
// CRDConfig defines the configuration for a custom defined resource
type CRDConfig struct {
Name string
Namespace string
APIVersion string
ClusterName string
Group string
CRDVersion string
Plural string
Singular string
ShortNames []string
Kind string
ListKind string
Categories []string
ScaleSubresources *CRDScaleSubresources
Versions []CRDVersion
Validation *apiext.JSONSchemaProps
Scope CRDScopeType
ExtraColumns []CRDColumn
ConversionStrategy CRDConversionStraegyType
ConversionWebhookURL *string
ConversionWebhookServiceNamespace string
ConversionWebhookServiceName string
ConversionWebhookServicePath *string
ConversionWebhookCABundle []byte
ConversionReviewVersions []string
}
// CRDScopeType defines the scope of the custom resource definition
type CRDScopeType int
const (
CRDClusterScoped CRDScopeType = iota + 1
CRDNamespaceScoped
)
// CRDVersion defines a version for a custom resource definition
type CRDVersion struct {
Name string
Enabled bool
Storage bool
Schema *apiext.JSONSchemaProps
ScaleSubresources *CRDScaleSubresources
ExtraColumns []CRDColumn
}
// CRDScaleSubresources defines how to serve the scale subresource for the scale subresource of custom resources
type CRDScaleSubresources struct {
SpecPath string
StatusPath string
SelectorPath *string
}
// CRDColumn specifies a column for server side printing of a custom resource definition
type CRDColumn struct {
Name string
Type string
Format string
Description string
Priority int32
Path string
}
// CRDConversionStraegyType defines the type of conversion strategy for the custom resource
type CRDConversionStraegyType int
const (
CRDConversionStraegyTypeNone CRDConversionStraegyType = iota + 1
CRDConversionStraegyTypeWebhook
)