Skip to content

Commit eb277da

Browse files
committed
feat(core): mvp
Signed-off-by: Pavel Tishkov <[email protected]>
1 parent 4c6ca06 commit eb277da

File tree

6 files changed

+104
-18
lines changed

6 files changed

+104
-18
lines changed
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
/*
2+
Copyright 2025 Flant JSC
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package main
18+
19+
import (
20+
"context"
21+
"fmt"
22+
23+
"github.com/deckhouse/module-sdk/pkg"
24+
"github.com/deckhouse/module-sdk/pkg/app"
25+
"github.com/deckhouse/module-sdk/pkg/registry"
26+
"k8s.io/utils/ptr"
27+
28+
"hooks/pkg/common"
29+
30+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
31+
)
32+
33+
const (
34+
discoveryNodesSnapshot = "discovery-virthandler-nodes"
35+
virthandlerSchedulableNodeLabel = "kubevirt.internal.virtualization.deckhouse.io/schedulable"
36+
virthandlerSchedulableNodeLabelValue = "true"
37+
kvmEnabledLabel = "virtualization.deckhouse.io/kvm-enabled"
38+
kvmEnabledLabelValue = "true"
39+
)
40+
41+
var _ = registry.RegisterFunc(configDiscoveryService, handleDiscoveryNodes)
42+
43+
var configDiscoveryService = &pkg.HookConfig{
44+
OnBeforeHelm: &pkg.OrderedConfig{Order: 1},
45+
Kubernetes: []pkg.KubernetesConfig{
46+
{
47+
Name: discoveryNodesSnapshot,
48+
APIVersion: "v1",
49+
Kind: "Node",
50+
JqFilter: ".metadata",
51+
LabelSelector: &metav1.LabelSelector{
52+
MatchLabels: map[string]string{
53+
virthandlerSchedulableNodeLabel: virthandlerSchedulableNodeLabelValue,
54+
},
55+
},
56+
ExecuteHookOnSynchronization: ptr.To(false),
57+
},
58+
},
59+
60+
Queue: fmt.Sprintf("modules/%s", common.MODULE_NAME),
61+
}
62+
63+
func handleDiscoveryNodes(_ context.Context, input *pkg.HookInput) error {
64+
nodes := input.Snapshots.Get(discoveryNodesSnapshot)
65+
if len(nodes) == 0 {
66+
return nil
67+
}
68+
69+
for _, node := range nodes {
70+
metadata := &metav1.ObjectMeta{}
71+
if err := node.UnmarshalTo(metadata); err != nil {
72+
input.Logger.Error(fmt.Sprintf("Failed to unmarshal node metadata %v", err))
73+
}
74+
if _, ok := metadata.Labels[kvmEnabledLabel]; !ok {
75+
metadata.Labels[kvmEnabledLabel] = kvmEnabledLabelValue
76+
}
77+
input.PatchCollector.PatchWithMerge(metadata, "v1", "Node", "", metadata.)
78+
}
79+
80+
return nil
81+
}
82+
83+
func main() {
84+
app.Run()
85+
}

images/hooks/werf.inc.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,5 @@ shell:
3434
- go build -ldflags="-s -w" -o /hooks/prevent-default-vmclasses-deletion ./cmd/prevent-default-vmclasses-deletion
3535
- go build -ldflags="-s -w" -o /hooks/generate-secret-for-dvcr ./cmd/generate-secret-for-dvcr
3636
- go build -ldflags="-s -w" -o /hooks/discovery-clusterip-service-for-dvcr ./cmd/discovery-clusterip-service-for-dvcr
37-
- go build -ldflags="-s -w" -o /hooks/discovery-workload-nodes ./cmd/discovery-workload-nodes
37+
- go build -ldflags="-s -w" -o /hooks/discovery-virthandler-nodes ./cmd/discovery-virthandler-nodes
38+
- go build -ldflags="-s -w" -o /hooks/migrate-virthandler-kvm-node-labels ./cmd/migrate-virthandler-kvm-node-labels

templates/kubevirt/_kubevirt_helpers.tpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ spec:
2727
template:
2828
spec:
2929
nodeSelector:
30-
{{- $defaultLabels | toYaml | nindent 8 }}
30+
{{ $defaultLabels | toYaml | nindent 8 }}
3131
{{- end -}}
3232

3333
{{- define "kubevirt.virthandler_nodeseletor_strategic_patch_json" -}}

templates/kubevirt/kubevirt.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,10 +92,10 @@ spec:
9292
patch: {{ include "kubevirt.virthandler_nodeaffinity_strategic_patch_json" $dvpNestingLevel }}
9393
type: strategic
9494
# Run virt-handler pods on required nodes
95-
- resourceType: DaemonSet
96-
resourceName: virt-handler
97-
patch: {{ include "kubevirt.virthandler_nodeseletor_strategic_patch_json" . }}
98-
type: strategic
95+
# - resourceType: DaemonSet
96+
# resourceName: virt-handler
97+
# patch: {{ include "kubevirt.virthandler_nodeseletor_strategic_patch_json" . }}
98+
# type: strategic
9999
{{- if (include "helm_lib_ha_enabled" .) }}
100100
# HA settings for deploy/virt-api.
101101
- resourceType: Deployment

templates/nodegroupconfiguration-detect-kvm.yaml

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ spec:
2222
# limitations under the License.
2323
2424
kvm_enabled_label='virtualization.deckhouse.io/kvm-enabled=true'
25-
kvm_disabled_label='virtualization.deckhouse.io/kvm-enabled=false'
25+
kvm_disabled_label='virtualization.deckhouse.io/kvm-enabled-'
2626
2727
label=$kvm_enabled_label
2828
@@ -41,15 +41,15 @@ spec:
4141
exit 0
4242
fi
4343
44-
node=$(bb-d8-node-name)
44+
# node=$(bb-d8-node-name)
4545
46-
max_attempts=3
47-
until bb-kubectl --kubeconfig $kubeconfig label --overwrite=true node "$node" "$label"; do
48-
attempt=$(( attempt + 1 ))
49-
if [ "$attempt" -gt "$max_attempts" ]; then
50-
bb-log-error "failed to label node $node with label $label after $max_attempts attempts"
51-
exit 1
52-
fi
53-
echo "Waiting for label node $node with label $label (attempt $attempt of $max_attempts)..."
54-
sleep 5
55-
done
46+
# max_attempts=3
47+
# until bb-kubectl --kubeconfig $kubeconfig label --overwrite=true node "$node" "$label"; do
48+
# attempt=$(( attempt + 1 ))
49+
# if [ "$attempt" -gt "$max_attempts" ]; then
50+
# bb-log-error "failed to label node $node with label $label after $max_attempts attempts"
51+
# exit 1
52+
# fi
53+
# echo "Waiting for label node $node with label $label (attempt $attempt of $max_attempts)..."
54+
# sleep 5
55+
# done

0 commit comments

Comments
 (0)