Skip to content

Commit

Permalink
Add machine template and RBAC for machines.
Browse files Browse the repository at this point in the history
  • Loading branch information
Gerrit91 committed Nov 6, 2024
1 parent 18b2181 commit 7e21582
Show file tree
Hide file tree
Showing 4 changed files with 245 additions and 1 deletion.
59 changes: 59 additions & 0 deletions api/v1alpha1/metalstackmachinetemplate_types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
/*
Copyright 2024.
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"
)

// 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.

// MetalStackMachineTemplateSpec defines the desired state of MetalStackMachineTemplateSpec.
type MetalStackMachineTemplateSpec struct {
Template MetalStackMachine `json:"template"`
}

// +kubebuilder:object:root=true
// +kubebuilder:resource:path=inframachinetemplates,scope=Namespaced,categories=cluster-api,shortName=imt
// +kubebuilder:storageversion

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

Spec MetalStackMachineTemplateSpec `json:"spec,omitempty"`
}

// +kubebuilder:object:root=true

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

func init() {
SchemeBuilder.Register(&MetalStackMachineTemplate{}, &MetalStackMachineTemplateList{})
}

// MetalStackMachineTemplateResource describes the data needed to create a metal-stack machine from a template.
type MetalStackMachineTemplateResource struct {
Spec MetalStackMachineSpec `json:"spec"`
}
90 changes: 90 additions & 0 deletions api/v1alpha1/zz_generated.deepcopy.go

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

Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.16.4
name: inframachinetemplates.infrastructure.cluster.x-k8s.io
spec:
group: infrastructure.cluster.x-k8s.io
names:
categories:
- cluster-api
kind: MetalStackMachineTemplate
listKind: MetalStackMachineTemplateList
plural: inframachinetemplates
shortNames:
- imt
singular: metalstackmachinetemplate
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: MetalStackMachineTemplate is the Schema for the inframachinetemplates
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: MetalStackMachineTemplateSpec defines the desired state of
MetalStackMachineTemplateSpec.
properties:
template:
description: MetalStackMachine is the Schema for the metalstackmachines
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: MetalStackMachineSpec defines the desired state of
MetalStackMachine.
properties:
image:
description: Image is the operating system to deploy on the
machine
type: string
size:
description: Size is the size of the machine
type: string
required:
- image
- size
type: object
status:
description: MetalStackMachineStatus defines the observed state
of MetalStackMachine.
type: object
type: object
required:
- template
type: object
type: object
served: true
storage: true
3 changes: 2 additions & 1 deletion config/rbac/capi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,15 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: capi-metal-stack-clusters
name: capi-metal-stack
labels:
cluster.x-k8s.io/aggregate-to-manager: "true"
rules:
- apiGroups:
- infrastructure.cluster.x-k8s.io
resources:
- metalstackclusters
- metalstackmachines
verbs:
- create
- delete
Expand Down

0 comments on commit 7e21582

Please sign in to comment.