Skip to content

Commit 035ab36

Browse files
authored
Merge pull request #27 from cobaltcore-dev/skip-libvirtd-connection
skip libvirtd connection
2 parents 7e2b421 + 4fedcee commit 035ab36

File tree

5 files changed

+78
-50
lines changed

5 files changed

+78
-50
lines changed

api/v1alpha1/hypervisor_types.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,9 @@ type HypervisorStatus struct {
190190
// +kubebuilder:printcolumn:JSONPath=".status.numInstances",name="Instances",type="integer"
191191
// +kubebuilder:printcolumn:JSONPath=".status.operatingSystem.hardwareModel",name="Hardware",type="string",priority=2
192192
// +kubebuilder:printcolumn:JSONPath=".status.operatingSystem.kernelRelease",name="Kernel",type="string",priority=2
193+
// +kubebuilder:printcolumn:JSONPath=".status.conditions[?(@.type==\"Onboarding\")].reason",name="Onboarding",type="string",priority=3
194+
// +kubebuilder:printcolumn:JSONPath=".status.serviceId",name="Service ID",type="string",priority=3
195+
// +kubebuilder:printcolumn:JSONPath=".status.hypervisorId",name="Hypervisor ID",type="string",priority=3
193196
// +kubebuilder:printcolumn:JSONPath=".metadata.creationTimestamp",name="Age",type="date"
194197

195198
// Hypervisor is the Schema for the hypervisors API

charts/kvm-node-agent/crds/hypervisor-crd.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,18 @@ spec:
3939
name: Kernel
4040
priority: 2
4141
type: string
42+
- jsonPath: .status.conditions[?(@.type=="Onboarding")].reason
43+
name: Onboarding
44+
priority: 3
45+
type: string
46+
- jsonPath: .status.serviceId
47+
name: Service ID
48+
priority: 3
49+
type: string
50+
- jsonPath: .status.hypervisorId
51+
name: Hypervisor ID
52+
priority: 3
53+
type: string
4254
- jsonPath: .metadata.creationTimestamp
4355
name: Age
4456
type: date

config/crd/bases/kvm.cloud.sap_hypervisors.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,18 @@ spec:
4040
name: Kernel
4141
priority: 2
4242
type: string
43+
- jsonPath: .status.conditions[?(@.type=="Onboarding")].reason
44+
name: Onboarding
45+
priority: 3
46+
type: string
47+
- jsonPath: .status.serviceId
48+
name: Service ID
49+
priority: 3
50+
type: string
51+
- jsonPath: .status.hypervisorId
52+
name: Hypervisor ID
53+
priority: 3
54+
type: string
4355
- jsonPath: .metadata.creationTimestamp
4456
name: Age
4557
type: date

internal/controller/hypervisor_controller.go

Lines changed: 45 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -93,50 +93,6 @@ func (r *HypervisorReconciler) Reconcile(ctx context.Context, req ctrl.Request)
9393
r.evacuateOnReboot = hypervisor.Spec.EvacuateOnReboot
9494
}
9595

96-
// ====================================================================================================
97-
// Libvirt
98-
// ====================================================================================================
99-
100-
// Try (re)connect to Libvirt, update status
101-
if err := r.Libvirt.Connect(); err != nil {
102-
log.Error(err, "unable to connect to Libvirt system bus")
103-
meta.SetStatusCondition(&hypervisor.Status.Conditions, metav1.Condition{
104-
Type: LibVirtType,
105-
Status: metav1.ConditionFalse,
106-
Message: err.Error(),
107-
Reason: "ConnectFailed",
108-
})
109-
} else {
110-
hypervisor.Status.LibVirtVersion = r.Libvirt.GetVersion()
111-
meta.SetStatusCondition(&hypervisor.Status.Conditions, metav1.Condition{
112-
Type: LibVirtType,
113-
Status: metav1.ConditionTrue,
114-
Reason: "Connected",
115-
})
116-
117-
// Update hypervisor instances
118-
hypervisor.Status.NumInstances = r.Libvirt.GetNumInstances()
119-
hypervisor.Status.Instances, _ = r.Libvirt.GetInstances()
120-
121-
// Update capabilities status.
122-
if capabilities, err := r.Libvirt.GetCapabilities(); err == nil {
123-
hypervisor.Status.Capabilities = capabilities
124-
meta.SetStatusCondition(&hypervisor.Status.Conditions, metav1.Condition{
125-
Type: CapabilitiesClientType,
126-
Status: metav1.ConditionTrue,
127-
Reason: "CapabilitiesClientGetSucceeded",
128-
})
129-
} else {
130-
log.Error(err, "failed to get capabilities")
131-
meta.SetStatusCondition(&hypervisor.Status.Conditions, metav1.Condition{
132-
Type: CapabilitiesClientType,
133-
Status: metav1.ConditionFalse,
134-
Message: err.Error(),
135-
Reason: "CapabilitiesClientGetFailed",
136-
})
137-
}
138-
}
139-
14096
// ====================================================================================================
14197
// Systemd
14298
// ====================================================================================================
@@ -190,6 +146,51 @@ func (r *HypervisorReconciler) Reconcile(ctx context.Context, req ctrl.Request)
190146
}
191147
}
192148

149+
// ====================================================================================================
150+
// Libvirt
151+
// ====================================================================================================
152+
153+
// Try (re)connect to Libvirt, update status
154+
if err := r.Libvirt.Connect(); err != nil || meta.IsStatusConditionFalse(hypervisor.Status.Conditions,
155+
"libvirtd.service") {
156+
log.Error(err, "unable to connect to Libvirt system bus")
157+
meta.SetStatusCondition(&hypervisor.Status.Conditions, metav1.Condition{
158+
Type: LibVirtType,
159+
Status: metav1.ConditionFalse,
160+
Message: fmt.Sprintf("unable to connect to libvirtd: %v", err),
161+
Reason: "ConnectFailed",
162+
})
163+
} else {
164+
hypervisor.Status.LibVirtVersion = r.Libvirt.GetVersion()
165+
meta.SetStatusCondition(&hypervisor.Status.Conditions, metav1.Condition{
166+
Type: LibVirtType,
167+
Status: metav1.ConditionTrue,
168+
Reason: "Connected",
169+
})
170+
171+
// Update hypervisor instances
172+
hypervisor.Status.NumInstances = r.Libvirt.GetNumInstances()
173+
hypervisor.Status.Instances, _ = r.Libvirt.GetInstances()
174+
175+
// Update capabilities status.
176+
if capabilities, err := r.Libvirt.GetCapabilities(); err == nil {
177+
hypervisor.Status.Capabilities = capabilities
178+
meta.SetStatusCondition(&hypervisor.Status.Conditions, metav1.Condition{
179+
Type: CapabilitiesClientType,
180+
Status: metav1.ConditionTrue,
181+
Reason: "CapabilitiesClientGetSucceeded",
182+
})
183+
} else {
184+
log.Error(err, "failed to get capabilities")
185+
meta.SetStatusCondition(&hypervisor.Status.Conditions, metav1.Condition{
186+
Type: CapabilitiesClientType,
187+
Status: metav1.ConditionFalse,
188+
Message: err.Error(),
189+
Reason: "CapabilitiesClientGetFailed",
190+
})
191+
}
192+
}
193+
193194
// Reconcile operating system update
194195
if hypervisor.Spec.OperatingSystemVersion != "" &&
195196
// only update if the version is different to current running version

internal/controller/hypervisor_controller_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -149,17 +149,17 @@ var _ = Describe("Hypervisor Controller", func() {
149149

150150
Expect(hypervisor.Status.Conditions).To(HaveLen(3))
151151

152-
Expect(hypervisor.Status.Conditions[0].Type).To(Equal("LibVirtConnection"))
152+
Expect(hypervisor.Status.Conditions[0].Type).To(Equal("test-unit"))
153153
Expect(hypervisor.Status.Conditions[0].Status).To(Equal(metav1.ConditionTrue))
154-
Expect(hypervisor.Status.Conditions[0].Reason).To(Equal("Connected"))
154+
Expect(hypervisor.Status.Conditions[0].Reason).To(Equal("Running"))
155155

156-
Expect(hypervisor.Status.Conditions[1].Type).To(Equal("CapabilitiesClientConnection"))
156+
Expect(hypervisor.Status.Conditions[1].Type).To(Equal("LibVirtConnection"))
157157
Expect(hypervisor.Status.Conditions[1].Status).To(Equal(metav1.ConditionTrue))
158-
Expect(hypervisor.Status.Conditions[1].Reason).To(Equal("CapabilitiesClientGetSucceeded"))
158+
Expect(hypervisor.Status.Conditions[1].Reason).To(Equal("Connected"))
159159

160-
Expect(hypervisor.Status.Conditions[2].Type).To(Equal("test-unit"))
160+
Expect(hypervisor.Status.Conditions[2].Type).To(Equal("CapabilitiesClientConnection"))
161161
Expect(hypervisor.Status.Conditions[2].Status).To(Equal(metav1.ConditionTrue))
162-
Expect(hypervisor.Status.Conditions[2].Reason).To(Equal("Running"))
162+
Expect(hypervisor.Status.Conditions[2].Reason).To(Equal("CapabilitiesClientGetSucceeded"))
163163

164164
Expect(hypervisor.Status.Capabilities.HostCpuArch).To(Equal("x86_64"))
165165
Expect(hypervisor.Status.Capabilities.HostCpus.AsDec().UnscaledBig()).

0 commit comments

Comments
 (0)