diff --git a/pkg/operator/ceph/object/admin.go b/pkg/operator/ceph/object/admin.go index c9f3ceb4c..b1d262fdd 100644 --- a/pkg/operator/ceph/object/admin.go +++ b/pkg/operator/ceph/object/admin.go @@ -60,7 +60,7 @@ func NewMultisiteContext(context *clusterd.Context, clusterInfo *client.ClusterI func extractJSON(output string) (string, error) { // `radosgw-admin` sometimes leaves logs to stderr even if it succeeds. // So we should skip them if parsing output as json. - pattern := regexp.MustCompile("(?ms)^{.*") + pattern := regexp.MustCompile(`(?ms)^{.*}$`) match := pattern.Find([]byte(output)) if match == nil { return "", errors.Errorf("didn't contain json. %s", output) diff --git a/pkg/operator/ceph/object/admin_test.go b/pkg/operator/ceph/object/admin_test.go index bab789ac1..2c43e81be 100644 --- a/pkg/operator/ceph/object/admin_test.go +++ b/pkg/operator/ceph/object/admin_test.go @@ -45,4 +45,10 @@ func TestExtractJson(t *testing.T) { match, err = extractJSON(s) assert.NoError(t, err) assert.True(t, json.Valid([]byte(match))) + + s = `{"test": "test"} +this line can't be parsed as json` + match, err = extractJSON(s) + assert.NoError(t, err) + assert.True(t, json.Valid([]byte(match))) }