// +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. // 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. // PREVIEW 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. This should only be // used if NewImageSpec can not create the imagespec value you want to pass to // ceph. // PREVIEW func NewRawImageSpec(spec string) ImageSpec { return ImageSpec{spec} }