Skip to content

Commit

Permalink
Merge pull request #1623 from hroyrh/nonbootable-iso-api
Browse files Browse the repository at this point in the history
✨ Add nonbootable iso api
  • Loading branch information
metal3-io-bot authored Apr 3, 2024
2 parents 5cb3e8f + 5815817 commit ba35cd9
Show file tree
Hide file tree
Showing 9 changed files with 404 additions and 0 deletions.
9 changes: 9 additions & 0 deletions PROJECT
Original file line number Diff line number Diff line change
Expand Up @@ -69,4 +69,13 @@ resources:
kind: HostFirmwareComponents
path: github.com/metal3-io/baremetal-operator/apis/metal3.io/v1alpha
version: v1alpha1
- api:
crdVersion: v1
namespaced: true
controller: true
domain: metal3.io
group: metal3.io
kind: DataImage
path: github.com/metal3-io/baremetal-operator/apis/metal3.io/v1alpha1
version: v1alpha1
version: "3"
79 changes: 79 additions & 0 deletions apis/metal3.io/v1alpha1/dataimage_types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
/*
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"
)

const DataImageFinalizer = "dataimage.metal3.io"

// Contains the DataImage currently attached to the BMH.
type AttachedImageReference struct {
URL string `json:"url"`
}

// Contains the count of errors and the last error message.
type DataImageError struct {
Count int `json:"count"`
Message string `json:"message"`
}

// DataImageSpec defines the desired state of DataImage.
type DataImageSpec struct {
// Url is the address of the dataImage that we want to attach
// to a BareMetalHost
URL string `json:"url"`
}

// DataImageStatus defines the observed state of DataImage.
type DataImageStatus struct {
// Time of last reconciliation
// +optional
LastReconciled *metav1.Time `json:"lastReconciled,omitempty"`

// Currently attached DataImage
AttachedImage *AttachedImageReference `json:"attachedImage,omitempty"`

// Error count and message when attaching/detaching
Error *DataImageError `json:"error,omitempty"`
}

//+kubebuilder:object:root=true
//+kubebuilder:subresource:status

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

Spec DataImageSpec `json:"spec,omitempty"`
Status DataImageStatus `json:"status,omitempty"`
}

//+kubebuilder:object:root=true

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

func init() {
SchemeBuilder.Register(&DataImage{}, &DataImageList{})
}
133 changes: 133 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.

75 changes: 75 additions & 0 deletions config/base/crds/bases/metal3.io_dataimages.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.12.1
name: dataimages.metal3.io
spec:
group: metal3.io
names:
kind: DataImage
listKind: DataImageList
plural: dataimages
singular: dataimage
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: DataImage is the Schema for the dataimages 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: DataImageSpec defines the desired state of DataImage.
properties:
url:
description: Url is the address of the dataImage that we want to attach
to a BareMetalHost
type: string
required:
- url
type: object
status:
description: DataImageStatus defines the observed state of DataImage.
properties:
attachedImage:
description: Currently attached DataImage
properties:
url:
type: string
required:
- url
type: object
error:
description: Error count and message when attaching/detaching
properties:
count:
type: integer
message:
type: string
required:
- count
- message
type: object
lastReconciled:
description: Time of last reconciliation
format: date-time
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}
3 changes: 3 additions & 0 deletions config/base/crds/kustomization.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ resources:
- bases/metal3.io_preprovisioningimages.yaml
- bases/metal3.io_bmceventsubscriptions.yaml
- bases/metal3.io_hardwaredata.yaml
- bases/metal3.io_dataimages.yaml
#+kubebuilder:scaffold:crdkustomizeresource

patches:
Expand All @@ -19,6 +20,7 @@ patches:
#- patches/webhook_in_preprovisioningimages.yaml
#- patches/webhook_in_bmceventsubscriptions.yaml
#- patches/webhook_in_hardwaredata.yaml
#- patches/webhook_in_dataimages.yaml
#+kubebuilder:scaffold:crdkustomizewebhookpatch

# [CERTMANAGER] To enable webhook, uncomment all the sections with [CERTMANAGER] prefix.
Expand All @@ -29,6 +31,7 @@ patches:
#- patches/cainjection_in_preprovisioningimages.yaml
#- patches/cainjection_in_bmceventsubscriptions.yaml
#- patches/cainjection_in_hardwaredata.yaml
#- patches/cainjection_in_dataimages.yaml
#+kubebuilder:scaffold:crdkustomizecainjectionpatch

# the following config is for teaching kustomize how to do kustomization for CRDs.
Expand Down
7 changes: 7 additions & 0 deletions config/base/crds/patches/cainjection_in_dataimages.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# The following patch adds a directive for certmanager to inject CA into the CRD
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
cert-manager.io/inject-ca-from: $(CERTIFICATE_NAMESPACE)/$(CERTIFICATE_NAME)
name: dataimages.metal3.io
17 changes: 17 additions & 0 deletions config/base/crds/patches/webhook_in_dataimages.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# The following patch enables a conversion webhook for the CRD
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: dataimages.metal3.io
spec:
conversion:
strategy: Webhook
webhook:
clientConfig:
service:
namespace: system
name: webhook-service
path: /convert
caBundle: Cg==
conversionReviewVersions:
- v1
Loading

0 comments on commit ba35cd9

Please sign in to comment.