k8c.io/api/v3@v3.0.0-20230904060738-b0a93889c0b6/pkg/apis/kubermatic/v1/addon_config.go (about) 1 /* 2 Copyright 2023 The Kubermatic Kubernetes Platform contributors. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 17 package v1 18 19 import ( 20 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 21 ) 22 23 // +genclient 24 // +kubebuilder:resource:scope=Cluster 25 // +kubebuilder:object:generate=true 26 // +kubebuilder:object:root=true 27 // +kubebuilder:printcolumn:JSONPath=".metadata.creationTimestamp",name="Age",type="date" 28 29 // AddonConfig specifies addon configuration. Addons can be installed without 30 // a matching AddonConfig, but they will be missing a logo, description and 31 // the potentially necessary form fields in the KKP dashboard to make the 32 // addon comfortable to use. 33 type AddonConfig struct { 34 metav1.TypeMeta `json:",inline"` 35 metav1.ObjectMeta `json:"metadata,omitempty"` 36 37 Spec AddonConfigSpec `json:"spec,omitempty"` 38 } 39 40 // AddonConfigSpec specifies configuration of addon. 41 type AddonConfigSpec struct { 42 // ShortDescription of the configured addon that contains more detailed information about the addon, 43 // it will be displayed in the addon details view in the UI 44 ShortDescription string `json:"shortDescription,omitempty"` 45 // Description of the configured addon, it will be displayed in the addon overview in the UI 46 Description string `json:"description,omitempty"` 47 // Logo of the configured addon, encoded in base64 48 Logo string `json:"logo,omitempty"` 49 // LogoFormat contains logo format of the configured addon, i.e. svg+xml 50 LogoFormat string `json:"logoFormat,omitempty"` 51 // Controls that can be set for configured addon 52 Controls []AddonFormControl `json:"formSpec,omitempty"` 53 } 54 55 // AddonFormControl specifies addon form control. 56 type AddonFormControl struct { 57 // DisplayName is visible in the UI 58 DisplayName string `json:"displayName,omitempty"` 59 // InternalName is used internally to save in the addon object 60 InternalName string `json:"internalName,omitempty"` 61 // HelpText is visible in the UI next to the control 62 HelpText string `json:"helpText,omitempty"` 63 // Required indicates if the control has to be set 64 Required bool `json:"required,omitempty"` 65 // Type of displayed control 66 Type string `json:"type,omitempty"` 67 } 68 69 // +kubebuilder:object:generate=true 70 // +kubebuilder:object:root=true 71 72 // AddonConfigList is a list of addon configs. 73 type AddonConfigList struct { 74 metav1.TypeMeta `json:",inline"` 75 metav1.ListMeta `json:"metadata,omitempty"` 76 77 Items []AddonConfig `json:"items"` 78 }