MCPcopy
hub / github.com/rook/rook / updateDeviceCM

Function updateDeviceCM

pkg/daemon/discover/discover.go:330–402  ·  view source on GitHub ↗
(ctx context.Context, clusterdContext *clusterd.Context)

Source from the content-addressed store, hash-verified

328}
329
330func updateDeviceCM(ctx context.Context, clusterdContext *clusterd.Context) error {
331 logger.Infof("updating device configmap")
332 devices, err := probeDevices(clusterdContext)
333 if err != nil {
334 logger.Infof("failed to probe devices: %v", err)
335 return err
336 }
337 deviceJSON, err := json.Marshal(devices)
338 if err != nil {
339 logger.Infof("failed to marshal: %v", err)
340 return err
341 }
342
343 deviceStr := string(deviceJSON)
344 if cm == nil {
345 cm, err = clusterdContext.Clientset.CoreV1().ConfigMaps(namespace).Get(ctx, cmName, metav1.GetOptions{})
346 }
347 if err == nil {
348 lastDevice = cm.Data[LocalDiskCMData]
349 logger.Debugf("last devices %s", lastDevice)
350 } else {
351 if !kerrors.IsNotFound(err) {
352 logger.Infof("failed to get configmap: %v", err)
353 return err
354 }
355
356 data := make(map[string]string, 1)
357 data[LocalDiskCMData] = deviceStr
358
359 // the map doesn't exist yet, create it now
360 cm = &v1.ConfigMap{
361 ObjectMeta: metav1.ObjectMeta{
362 Name: cmName,
363 Namespace: namespace,
364 Labels: map[string]string{
365 k8sutil.AppAttr: AppName,
366 NodeAttr: nodeName,
367 },
368 },
369 Data: data,
370 }
371
372 // Get the discover daemon pod details to attach the owner reference to the config map
373 discoverPod, err := k8sutil.GetRunningPod(ctx, clusterdContext.Clientset)
374 if err != nil {
375 logger.Warningf("failed to get discover pod to set ownerref. %+v", err)
376 } else {
377 k8sutil.SetOwnerRefsWithoutBlockOwner(&cm.ObjectMeta, discoverPod.OwnerReferences)
378 }
379
380 cm, err = clusterdContext.Clientset.CoreV1().ConfigMaps(namespace).Create(ctx, cm, metav1.CreateOptions{})
381 if err != nil {
382 logger.Infof("failed to create configmap: %v", err)
383 return fmt.Errorf("failed to create local device map %s: %+v", cmName, err)
384 }
385 lastDevice = deviceStr
386 }
387 devicesEqual, err := DeviceListsEqual(lastDevice, deviceStr)

Callers 1

RunFunction · 0.85

Calls 10

GetRunningPodFunction · 0.92
probeDevicesFunction · 0.85
DeviceListsEqualFunction · 0.85
InfofMethod · 0.65
GetMethod · 0.65
DebugfMethod · 0.65
WarningfMethod · 0.65
CreateMethod · 0.65
UpdateMethod · 0.65

Tested by

no test coverage detected