@@ -45,6 +45,7 @@ import (
45
45
apierrors "k8s.io/apimachinery/pkg/api/errors"
46
46
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
47
47
"k8s.io/apimachinery/pkg/util/wait"
48
+ clientset "k8s.io/client-go/kubernetes"
48
49
"k8s.io/klog/v2"
49
50
"k8s.io/kubernetes/pkg/volume/util"
50
51
mount "k8s.io/mount-utils"
@@ -449,7 +450,12 @@ func (d *Driver) Run(ctx context.Context) error {
449
450
csi .RegisterControllerServer (server , d )
450
451
csi .RegisterNodeServer (server , d )
451
452
d .server = server
453
+ val , val2 , err := getNodeInfoFromLabels (ctx , d .NodeID , d .cloud .KubeClient )
454
+ if err != nil {
455
+ klog .Warningf ("failed to get node info from labels: %v" , err )
456
+ }
452
457
458
+ klog .V (2 ).Infof ("Node info from labels: %s, %s" , val , val2 )
453
459
listener , err := csicommon .ListenEndpoint (d .endpoint )
454
460
if err != nil {
455
461
klog .Fatalf ("failed to listen endpoint: %v" , err )
@@ -1242,3 +1248,28 @@ func (d *Driver) getStorageEndPointSuffix() string {
1242
1248
}
1243
1249
return d .cloud .Environment .StorageEndpointSuffix
1244
1250
}
1251
+
1252
+ func getNodeInfoFromLabels (ctx context.Context , nodeId string , kubeClient clientset.Interface ) (string , string , error ) {
1253
+ if kubeClient == nil || kubeClient .CoreV1 () == nil {
1254
+ return "" , "" , fmt .Errorf ("kubeClient is nil" )
1255
+ }
1256
+
1257
+ node , err := kubeClient .CoreV1 ().Nodes ().Get (ctx , nodeId , metav1.GetOptions {})
1258
+ if err != nil {
1259
+ return "" , "" , fmt .Errorf ("get node(%s) failed with %v" , nodeId , err )
1260
+ }
1261
+
1262
+ if len (node .Labels ) == 0 {
1263
+ return "" , "" , fmt .Errorf ("node(%s) label is empty" , nodeId )
1264
+ }
1265
+ return node .Labels ["kubernetes.azure.com/kata-mshv-vm-isolation" ], node .Labels ["katacontainers.io/kata-runtime" ], nil
1266
+ }
1267
+
1268
+ func isNodeConfidential (ctx context.Context , nodeId string , kubeClient clientset.Interface ) bool {
1269
+ val , val2 , err := getNodeInfoFromLabels (ctx , nodeId , kubeClient )
1270
+ if err != nil {
1271
+ klog .Warningf ("get node(%s) confidential label failed with %v" , nodeId , err )
1272
+ return false
1273
+ }
1274
+ return val == "true" || val2 == "true"
1275
+ }
0 commit comments