Skip to content

Commit

Permalink
Merge pull request #1949 from rhjanders/hostupdatepolicyapi
Browse files Browse the repository at this point in the history
✨ Add HostUpdatePolicy API
  • Loading branch information
metal3-io-bot committed Sep 20, 2024
2 parents 9a31187 + 706ed94 commit 28011c7
Show file tree
Hide file tree
Showing 8 changed files with 328 additions and 1 deletion.
8 changes: 8 additions & 0 deletions PROJECT
Original file line number Diff line number Diff line change
Expand Up @@ -88,4 +88,12 @@ resources:
kind: DataImage
path: github.com/metal3-io/baremetal-operator/apis/metal3.io/v1alpha1
version: v1alpha1
- api:
crdVersion: v1
namespaced: true
domain: metal3.io
group: metal3.io
kind: HostUpdatePolicy
path: github.com/metal3-io/baremetal-operator/apis/metal3.io/v1alpha1
version: v1alpha1
version: "3"
67 changes: 67 additions & 0 deletions apis/metal3.io/v1alpha1/hostupdatepolicy_types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
/*
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 (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

// HostUpdatePolicy enumerates the allowed host update policies.
type UpdatePolicy string

const (
HostUpdatePolicyOnPreparing UpdatePolicy = "onPreparing"
HostUpdatePolicyOnReboot UpdatePolicy = "onReboot"
)

// HostUpdatePolicySpec defines the desired state of HostUpdatePolicy.
type HostUpdatePolicySpec struct {
// Defines policy for changing firmware settings
// +optional
// +kubebuilder:validation:Enum="onPreparing";"onReboot"
FirmwareSettings UpdatePolicy `json:"firmwareSettings,omitempty"`

// Defines policy for updating firmware
// +optional
// +kubebuilder:validation:Enum="onPreparing";"onReboot"
FirmwareUpdates UpdatePolicy `json:"firmwareUpdates,omitempty"`
}

// HostUpdatePolicyStatus defines the observed state of HostUpdatePolicy.
type HostUpdatePolicyStatus struct{}

// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object

// HostUpdatePolicy is the Schema for the hostupdatepolicy API.
type HostUpdatePolicy struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`

Spec HostUpdatePolicySpec `json:"spec,omitempty"`
Status HostUpdatePolicyStatus `json:"status,omitempty"`
}

// +kubebuilder:object:root=true

// HostUpdatePolicyList contains a list of HostUpdatePolicy.
type HostUpdatePolicyList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []HostUpdatePolicy `json:"items"`
}

func init() {
SchemeBuilder.Register(&HostUpdatePolicy{}, &HostUpdatePolicyList{})
}
89 changes: 89 additions & 0 deletions apis/metal3.io/v1alpha1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

55 changes: 55 additions & 0 deletions config/base/crds/bases/metal3.io_hostupdatepolicies.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.12.1
name: hostupdatepolicies.metal3.io
spec:
group: metal3.io
names:
kind: HostUpdatePolicy
listKind: HostUpdatePolicyList
plural: hostupdatepolicies
singular: hostupdatepolicy
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: HostUpdatePolicy is the Schema for the hostupdatepolicy 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
spec:
description: HostUpdatePolicySpec defines the desired state of HostUpdatePolicy.
properties:
firmwareSettings:
description: Defines policy for changing firmware settings
enum:
- onPreparing
- onReboot
type: string
firmwareUpdates:
description: Defines policy for updating firmware
enum:
- onPreparing
- onReboot
type: string
type: object
status:
description: HostUpdatePolicyStatus defines the observed state of HostUpdatePolicy.
type: object
type: object
served: true
storage: true
1 change: 1 addition & 0 deletions config/base/crds/kustomization.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ resources:
- bases/metal3.io_bmceventsubscriptions.yaml
- bases/metal3.io_hardwaredata.yaml
- bases/metal3.io_dataimages.yaml
- bases/metal3.io_hostupdatepolicies.yaml
#+kubebuilder:scaffold:crdkustomizeresource

patches:
Expand Down
8 changes: 8 additions & 0 deletions config/base/rbac/role.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,14 @@ rules:
- get
- patch
- update
- apiGroups:
- metal3.io
resources:
- hostupdatepolicies
verbs:
- get
- list
- watch
- apiGroups:
- metal3.io
resources:
Expand Down
63 changes: 63 additions & 0 deletions config/render/capm3.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1967,6 +1967,61 @@ spec:
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.12.1
name: hostupdatepolicies.metal3.io
spec:
group: metal3.io
names:
kind: HostUpdatePolicy
listKind: HostUpdatePolicyList
plural: hostupdatepolicies
singular: hostupdatepolicy
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: HostUpdatePolicy is the Schema for the hostupdatepolicy 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
spec:
description: HostUpdatePolicySpec defines the desired state of HostUpdatePolicy.
properties:
firmwareSettings:
description: Defines policy for changing firmware settings
enum:
- onPreparing
- onReboot
type: string
firmwareUpdates:
description: Defines policy for updating firmware
enum:
- onPreparing
- onReboot
type: string
type: object
status:
description: HostUpdatePolicyStatus defines the observed state of HostUpdatePolicy.
type: object
type: object
served: true
storage: true
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.12.1
Expand Down Expand Up @@ -2379,6 +2434,14 @@ rules:
- get
- patch
- update
- apiGroups:
- metal3.io
resources:
- hostupdatepolicies
verbs:
- get
- list
- watch
- apiGroups:
- metal3.io
resources:
Expand Down
Loading

0 comments on commit 28011c7

Please sign in to comment.