forked from filanov/cluster-api-provider-agent
-
Notifications
You must be signed in to change notification settings - Fork 14
/
agentcluster_types.go
103 lines (82 loc) · 3.37 KB
/
agentcluster_types.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
98
99
100
101
102
103
/*
Copyright 2021.
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 v1beta1
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
)
type ClusterDeploymentReference struct {
// Name is unique within a namespace to reference a clusterDeployment resource.
// +optional
Name string `json:"name,omitempty"`
// Namespace defines the space within which the clusterDeployment name must be unique.
// +optional
Namespace string `json:"namespace,omitempty"`
}
// AgentClusterSpec defines the desired state of AgentCluster
type AgentClusterSpec struct {
// IgnitionEndpoint store the data to of the custom ignition endpoint.
// +optional
IgnitionEndpoint *IgnitionEndpoint `json:"ignitionEndpoint,omitempty"`
// ControlPlaneEndpoint represents the endpoint used to communicate with the control plane.
// +optional
ControlPlaneEndpoint clusterv1.APIEndpoint `json:"controlPlaneEndpoint"`
}
// IgnitionEndpoint store the data to of the custom ignition endpoint.
type IgnitionEndpoint struct {
// Url store the URL of the custom ignition endpoint.
// +optional
Url string `json:"url,omitempty"`
// CaCertificateReference is a reference to the secret containing CA certificate to be used
// when contacting the URL via HTTPS.
// +optional
CaCertificateReference *CaCertificateReference `json:"caCertificateReference,omitempty"`
}
type CaCertificateReference struct {
// Namespace is the namespace of the secret containing the CA certificate.
Namespace string `json:"namespace"`
// Name is the name of the secret containing the CA certificate.
Name string `json:"name"`
}
// AgentClusterStatus defines the observed state of AgentCluster
type AgentClusterStatus struct {
// +optional
Ready bool `json:"ready"`
// ClusterDeploymentRef is a reference to the associated Hive ClusterDeployment.
ClusterDeploymentRef ClusterDeploymentReference `json:"clusterDeploymentReference"`
// Conditions defines current service state of the ClusterDeployment.
// +optional
Conditions clusterv1.Conditions `json:"conditions,omitempty"`
// FailureDomains is a list of failure domain objects synced from the infrastructure provider.
FailureDomains clusterv1.FailureDomains `json:"failureDomains,omitempty"`
}
//+kubebuilder:object:root=true
//+kubebuilder:subresource:status
//+kubebuilder:storageversion
// AgentCluster is the Schema for the agentclusters API
type AgentCluster struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec AgentClusterSpec `json:"spec,omitempty"`
Status AgentClusterStatus `json:"status,omitempty"`
}
//+kubebuilder:object:root=true
// AgentClusterList contains a list of AgentCluster
type AgentClusterList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []AgentCluster `json:"items"`
}
func init() {
SchemeBuilder.Register(&AgentCluster{}, &AgentClusterList{})
}