From fa2c276cc1ecf2e1de8e2df536a18527fa925442 Mon Sep 17 00:00:00 2001 From: Denis Egorenko Date: Wed, 9 Jun 2021 21:55:34 +0400 Subject: [PATCH] ceph: do not fail prepareOSD job if devices are not passed If devices are not specified for node return empty desired devices list and do not fail prepareOSD job. Closes: #8097 Signed-off-by: Denis Egorenko --- cmd/rook/ceph/osd.go | 4 ++++ cmd/rook/ceph/osd_test.go | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/cmd/rook/ceph/osd.go b/cmd/rook/ceph/osd.go index 62e2a2a26..0cdeb8a5e 100644 --- a/cmd/rook/ceph/osd.go +++ b/cmd/rook/ceph/osd.go @@ -290,6 +290,10 @@ func getLocation(clientset kubernetes.Interface) (string, string, error) { // Parse the devices, which are sent as a JSON-marshalled list of device IDs with a StorageConfig spec func parseDevices(devices string) ([]osddaemon.DesiredDevice, error) { + if devices == "" { + return []osddaemon.DesiredDevice{}, nil + } + configuredDevices := []osdcfg.ConfiguredDevice{} err := json.Unmarshal([]byte(devices), &configuredDevices) if err != nil { diff --git a/cmd/rook/ceph/osd_test.go b/cmd/rook/ceph/osd_test.go index add5f09ce..7560849df 100644 --- a/cmd/rook/ceph/osd_test.go +++ b/cmd/rook/ceph/osd_test.go @@ -20,6 +20,7 @@ import ( "encoding/json" "testing" + osddaemon "github.com/rook/rook/pkg/daemon/ceph/osd" osdcfg "github.com/rook/rook/pkg/operator/ceph/cluster/osd/config" "github.com/stretchr/testify/assert" ) @@ -167,4 +168,8 @@ func TestParseDesiredDevices(t *testing.T) { assert.False(t, result[2].IsDevicePathFilter) assert.False(t, result[3].IsDevicePathFilter) + // check empty devices list + result, err = parseDevices("") + assert.NoError(t, err) + assert.Equal(t, []osddaemon.DesiredDevice{}, result) }