-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add ClusterAddon and ClusterReconciler controllers and types (#39)
Part of #29
- Loading branch information
Nitish Tiwari
committed
Jul 6, 2023
1 parent
00ff9b3
commit dd2a8cd
Showing
14 changed files
with
636 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
/* | ||
Copyright 2023. | ||
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 v1alpha1 | ||
|
||
import ( | ||
corev1 "k8s.io/api/core/v1" | ||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||
) | ||
|
||
// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN! | ||
// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized. | ||
|
||
// ClusterAddonSpec defines the desired state of ClusterAddon | ||
type ClusterAddonSpec struct { | ||
ClusterStack string `json:"clusterStack,omitempty"` | ||
ClusterAddonVersion string `json:"clusterAddonVersion,omitempty"` | ||
ClusterRef *corev1.ObjectReference `json:"clusterRef,omitempty"` | ||
} | ||
|
||
// ClusterAddonStatus defines the observed state of ClusterAddon | ||
type ClusterAddonStatus struct { | ||
// INSERT ADDITIONAL STATUS FIELD - define observed state of cluster | ||
// Important: Run "make" to regenerate code after modifying this file | ||
} | ||
|
||
//+kubebuilder:object:root=true | ||
//+kubebuilder:subresource:status | ||
|
||
// ClusterAddon is the Schema for the clusteraddons API | ||
type ClusterAddon struct { | ||
metav1.TypeMeta `json:",inline"` | ||
metav1.ObjectMeta `json:"metadata,omitempty"` | ||
|
||
OwnerReferences metav1.OwnerReference `json:"ownerReferences"` | ||
Spec ClusterAddonSpec `json:"spec,omitempty"` | ||
Status ClusterAddonStatus `json:"status,omitempty"` | ||
} | ||
|
||
//+kubebuilder:object:root=true | ||
|
||
// ClusterAddonList contains a list of ClusterAddon | ||
type ClusterAddonList struct { | ||
metav1.TypeMeta `json:",inline"` | ||
metav1.ListMeta `json:"metadata,omitempty"` | ||
Items []ClusterAddon `json:"items"` | ||
} | ||
|
||
func init() { | ||
SchemeBuilder.Register(&ClusterAddon{}, &ClusterAddonList{}) | ||
} |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
147 changes: 147 additions & 0 deletions
147
config/crd/bases/infrastructure.cluster.x-k8s.io.syself.io_clusteraddons.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,147 @@ | ||
--- | ||
apiVersion: apiextensions.k8s.io/v1 | ||
kind: CustomResourceDefinition | ||
metadata: | ||
annotations: | ||
controller-gen.kubebuilder.io/version: v0.12.0 | ||
name: clusteraddons.infrastructure.cluster.x-k8s.io.syself.io | ||
spec: | ||
group: infrastructure.cluster.x-k8s.io.syself.io | ||
names: | ||
kind: ClusterAddon | ||
listKind: ClusterAddonList | ||
plural: clusteraddons | ||
singular: clusteraddon | ||
scope: Namespaced | ||
versions: | ||
- name: v1alpha1 | ||
schema: | ||
openAPIV3Schema: | ||
description: ClusterAddon is the Schema for the clusteraddons API | ||
properties: | ||
apiVersion: | ||
description: 'APIVersion defines the versioned schema of this representation | ||
of an object. Servers should convert recognized schemas to the latest | ||
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' | ||
type: string | ||
kind: | ||
description: 'Kind is a string value representing the REST resource this | ||
object represents. Servers may infer this from the endpoint the client | ||
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' | ||
type: string | ||
metadata: | ||
type: object | ||
ownerReferences: | ||
description: OwnerReference contains enough information to let you identify | ||
an owning object. An owning object must be in the same namespace as | ||
the dependent, or be cluster-scoped, so there is no namespace field. | ||
properties: | ||
apiVersion: | ||
description: API version of the referent. | ||
type: string | ||
blockOwnerDeletion: | ||
description: If true, AND if the owner has the "foregroundDeletion" | ||
finalizer, then the owner cannot be deleted from the key-value store | ||
until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion | ||
for how the garbage collector interacts with this field and enforces | ||
the foreground deletion. Defaults to false. To set this field, a | ||
user needs "delete" permission of the owner, otherwise 422 (Unprocessable | ||
Entity) will be returned. | ||
type: boolean | ||
controller: | ||
description: If true, this reference points to the managing controller. | ||
type: boolean | ||
kind: | ||
description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' | ||
type: string | ||
name: | ||
description: 'Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names' | ||
type: string | ||
uid: | ||
description: 'UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids' | ||
type: string | ||
required: | ||
- apiVersion | ||
- kind | ||
- name | ||
- uid | ||
type: object | ||
x-kubernetes-map-type: atomic | ||
spec: | ||
description: ClusterAddonSpec defines the desired state of ClusterAddon | ||
properties: | ||
clusterAddonVersion: | ||
type: string | ||
clusterRef: | ||
description: "ObjectReference contains enough information to let you | ||
inspect or modify the referred object. --- New uses of this type | ||
are discouraged because of difficulty describing its usage when | ||
embedded in APIs. 1. Ignored fields. It includes many fields which | ||
are not generally honored. For instance, ResourceVersion and FieldPath | ||
are both very rarely valid in actual usage. 2. Invalid usage help. | ||
\ It is impossible to add specific help for individual usage. In | ||
most embedded usages, there are particular restrictions like, \"must | ||
refer only to types A and B\" or \"UID not honored\" or \"name must | ||
be restricted\". Those cannot be well described when embedded. 3. | ||
Inconsistent validation. Because the usages are different, the | ||
validation rules are different by usage, which makes it hard for | ||
users to predict what will happen. 4. The fields are both imprecise | ||
and overly precise. Kind is not a precise mapping to a URL. This | ||
can produce ambiguity during interpretation and require a REST mapping. | ||
\ In most cases, the dependency is on the group,resource tuple and | ||
the version of the actual struct is irrelevant. 5. We cannot easily | ||
change it. Because this type is embedded in many locations, updates | ||
to this type will affect numerous schemas. Don't make new APIs | ||
embed an underspecified API type they do not control. \n Instead | ||
of using this type, create a locally provided and used type that | ||
is well-focused on your reference. For example, ServiceReferences | ||
for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 | ||
." | ||
properties: | ||
apiVersion: | ||
description: API version of the referent. | ||
type: string | ||
fieldPath: | ||
description: 'If referring to a piece of an object instead of | ||
an entire object, this string should contain a valid JSON/Go | ||
field access statement, such as desiredState.manifest.containers[2]. | ||
For example, if the object reference is to a container within | ||
a pod, this would take on a value like: "spec.containers{name}" | ||
(where "name" refers to the name of the container that triggered | ||
the event) or if no container name is specified "spec.containers[2]" | ||
(container with index 2 in this pod). This syntax is chosen | ||
only to have some well-defined way of referencing a part of | ||
an object. TODO: this design is not final and this field is | ||
subject to change in the future.' | ||
type: string | ||
kind: | ||
description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' | ||
type: string | ||
name: | ||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' | ||
type: string | ||
namespace: | ||
description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' | ||
type: string | ||
resourceVersion: | ||
description: 'Specific resourceVersion to which this reference | ||
is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' | ||
type: string | ||
uid: | ||
description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' | ||
type: string | ||
type: object | ||
x-kubernetes-map-type: atomic | ||
clusterStack: | ||
type: string | ||
type: object | ||
status: | ||
description: ClusterAddonStatus defines the observed state of ClusterAddon | ||
type: object | ||
required: | ||
- ownerReferences | ||
type: object | ||
served: true | ||
storage: true | ||
subresources: | ||
status: {} |
Oops, something went wrong.