//go:build !nautilus && ceph_preview // +build !nautilus,ceph_preview package admin import ( "fmt" ) // ImageSpec values are used to identify an RBD image wherever Ceph APIs // require an image_spec/image_id_spec using image name/id and optional // pool and namespace. // PREVIEW type ImageSpec struct { spec string } // NewImageSpec is used to construct an ImageSpec given an image name/id // and optional namespace and pool names. // PREVIEW // // NewImageSpec constructs an ImageSpec to identify an RBD image and thus // requires image name/id, whereas NewLevelSpec constructs LevelSpec to // identify entire pool, pool namespace or single RBD image, all of which // requires pool name. func NewImageSpec(pool, namespace, image string) ImageSpec { var s string if pool != "" && namespace != "" { s = fmt.Sprintf("%s/%s/%s", pool, namespace, image) } else if pool != "" { s = fmt.Sprintf("%s/%s", pool, image) } else { s = image } return ImageSpec{s} } // NewRawImageSpec returns a ImageSpec directly based on the spec string // argument without constructing it from component values. // PREVIEW // // This should only be used if NewImageSpec can not create the imagespec value // you want to pass to ceph. func NewRawImageSpec(spec string) ImageSpec { return ImageSpec{spec} }