/
microvmmachine_types.go
125 lines (105 loc) · 4.8 KB
/
microvmmachine_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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
// Copyright 2021 Weaveworks or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: MPL-2.0
package v1alpha1
import (
microvm "github.com/weaveworks-liquidmetal/controller-pkg/types/microvm"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
"sigs.k8s.io/cluster-api/errors"
)
const (
// MachineFinalizer allows ReconcileMicrovmMachine to clean up resources associated with MicrovmMachine
// before removing it from the apiserver.
MachineFinalizer = "microvmmachine.infrastructure.cluster.x-k8s.io"
)
// MicrovmMachineSpec defines the desired state of MicrovmMachine.
type MicrovmMachineSpec struct {
microvm.VMSpec `json:",inline"`
// SSHPublicKeys is list of SSH public keys that will be used with stated users
// on this machine.
// If specified they will take precedence over any SSH keys specified at
// the cluster level.
// +optional
SSHPublicKeys []microvm.SSHPublicKey `json:"sshPublicKeys,omitempty"`
// ProviderID is the unique identifier as specified by the cloud provider.
ProviderID *string `json:"providerID,omitempty"`
}
// MicrovmMachineStatus defines the observed state of MicrovmMachine.
type MicrovmMachineStatus struct {
// Ready is true when the provider resource is ready.
// +optional
// +kubebuilder:default=false
Ready bool `json:"ready"`
// VMState indicates the state of the microvm.
VMState *microvm.VMState `json:"vmState,omitempty"`
// Addresses contains the microvm associated addresses.
Addresses []clusterv1.MachineAddress `json:"addresses,omitempty"`
// FailureReason will be set in the event that there is a terminal problem
// reconciling the Machine and will contain a succinct value suitable
// for machine interpretation.
//
// This field should not be set for transitive errors that a controller
// faces that are expected to be fixed automatically over
// time (like service outages), but instead indicate that something is
// fundamentally wrong with the Machine's spec or the configuration of
// the controller, and that manual intervention is required. Examples
// of terminal errors would be invalid combinations of settings in the
// spec, values that are unsupported by the controller, or the
// responsible controller itself being critically misconfigured.
//
// Any transient errors that occur during the reconciliation of Machines
// can be added as events to the Machine object and/or logged in the
// controller's output.
// +optional
FailureReason *errors.MachineStatusError `json:"failureReason,omitempty"`
// FailureMessage will be set in the event that there is a terminal problem
// reconciling the Machine and will contain a more verbose string suitable
// for logging and human consumption.
//
// This field should not be set for transitive errors that a controller
// faces that are expected to be fixed automatically over
// time (like service outages), but instead indicate that something is
// fundamentally wrong with the Machine's spec or the configuration of
// the controller, and that manual intervention is required. Examples
// of terminal errors would be invalid combinations of settings in the
// spec, values that are unsupported by the controller, or the
// responsible controller itself being critically misconfigured.
//
// Any transient errors that occur during the reconciliation of Machines
// can be added as events to the Machine object and/or logged in the
// controller's output.
// +optional
FailureMessage *string `json:"failureMessage,omitempty"`
// Conditions defines current service state of the MicrovmMachine.
// +optional
Conditions clusterv1.Conditions `json:"conditions,omitempty"`
}
//+kubebuilder:object:root=true
//+kubebuilder:subresource:status
//+k8s:defaulter-gen=true
// MicrovmMachine is the Schema for the microvmmachines API.
type MicrovmMachine struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec MicrovmMachineSpec `json:"spec,omitempty"`
Status MicrovmMachineStatus `json:"status,omitempty"`
}
// GetConditions returns the observations of the operational state of the MicrovmMachine resource.
func (r *MicrovmMachine) GetConditions() clusterv1.Conditions {
return r.Status.Conditions
}
// SetConditions sets the underlying service state of the MicrovmMachine to the predescribed clusterv1.Conditions.
func (r *MicrovmMachine) SetConditions(conditions clusterv1.Conditions) {
r.Status.Conditions = conditions
}
//+kubebuilder:object:root=true
// MicrovmMachineList contains a list of MicrovmMachine.
type MicrovmMachineList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []MicrovmMachine `json:"items"`
}
//nolint:gochecknoinits // Maybe we can remove it, now just ignore.
func init() {
SchemeBuilder.Register(&MicrovmMachine{}, &MicrovmMachineList{})
}