The following pull request was submitted through Github. It can be accessed and reviewed at: https://github.com/lxc/lxd/pull/6424
This e-mail was sent by the LXC bot, direct replies will not reach the author unless they happen to be subscribed to this list. === Description (from pull-request) ===
From 5ccc04b3d32cd7bd6e8fe47919dd24501b83a953 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgra...@ubuntu.com> Date: Fri, 8 Nov 2019 20:24:37 -0500 Subject: [PATCH 1/2] lxc/storage: Add support for virtual-machine volumes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Graber <stgra...@ubuntu.com> --- lxc/storage_volume.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lxc/storage_volume.go b/lxc/storage_volume.go index e4c94e4b18..fb2a353db7 100644 --- a/lxc/storage_volume.go +++ b/lxc/storage_volume.go @@ -109,7 +109,7 @@ func (c *cmdStorageVolume) parseVolume(defaultType string, name string) (string, fields := strings.SplitN(name, "/", 2) if len(fields) == 1 { return fields[0], defaultType - } else if len(fields) == 2 && !shared.StringInSlice(fields[0], []string{"custom", "image", "container"}) { + } else if len(fields) == 2 && !shared.StringInSlice(fields[0], []string{"custom", "image", "container", "virtual-machine"}) { return name, defaultType } From e74b3b8d8624a063b64da34ec57f777f44b6e9b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgra...@ubuntu.com> Date: Fri, 8 Nov 2019 20:24:57 -0500 Subject: [PATCH 2/2] lxd/storage: Add support for virtual-machine volumes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Graber <stgra...@ubuntu.com> --- lxd/api_1.0.go | 1 + lxd/storage_volumes.go | 34 ++++++++++++++++++++++++++++++++++ lxd/storage_volumes_utils.go | 9 ++++++++- 3 files changed, 43 insertions(+), 1 deletion(-) diff --git a/lxd/api_1.0.go b/lxd/api_1.0.go index 8854bd86fe..cf8a7c0bca 100644 --- a/lxd/api_1.0.go +++ b/lxd/api_1.0.go @@ -82,6 +82,7 @@ var api10 = []APIEndpoint{ storagePoolVolumeTypeContainerCmd, storagePoolVolumeTypeCustomCmd, storagePoolVolumeTypeImageCmd, + storagePoolVolumeTypeVMCmd, } func api10Get(d *Daemon, r *http.Request) response.Response { diff --git a/lxd/storage_volumes.go b/lxd/storage_volumes.go index 1f7f31cea4..0e04c9b611 100644 --- a/lxd/storage_volumes.go +++ b/lxd/storage_volumes.go @@ -49,6 +49,16 @@ var storagePoolVolumeTypeContainerCmd = APIEndpoint{ Put: APIEndpointAction{Handler: storagePoolVolumeTypeContainerPut}, } +var storagePoolVolumeTypeVMCmd = APIEndpoint{ + Path: "storage-pools/{pool}/volumes/virtual-machine/{name:.*}", + + Delete: APIEndpointAction{Handler: storagePoolVolumeTypeVMDelete}, + Get: APIEndpointAction{Handler: storagePoolVolumeTypeVMGet, AccessHandler: AllowAuthenticated}, + Patch: APIEndpointAction{Handler: storagePoolVolumeTypeVMPatch}, + Post: APIEndpointAction{Handler: storagePoolVolumeTypeVMPost}, + Put: APIEndpointAction{Handler: storagePoolVolumeTypeVMPut}, +} + var storagePoolVolumeTypeCustomCmd = APIEndpoint{ Path: "storage-pools/{pool}/volumes/custom/{name}", @@ -122,6 +132,8 @@ func storagePoolVolumesGet(d *Daemon, r *http.Request) response.Response { if apiEndpoint == storagePoolVolumeAPIEndpointContainers { apiEndpoint = "container" + } else if apiEndpoint == storagePoolVolumeAPIEndpointVMs { + apiEndpoint = "virtual-machine" } else if apiEndpoint == storagePoolVolumeAPIEndpointImages { apiEndpoint = "image" } @@ -202,6 +214,8 @@ func storagePoolVolumesTypeGet(d *Daemon, r *http.Request) response.Response { if apiEndpoint == storagePoolVolumeAPIEndpointContainers { apiEndpoint = "container" + } else if apiEndpoint == storagePoolVolumeAPIEndpointVMs { + apiEndpoint = "virtual-machine" } else if apiEndpoint == storagePoolVolumeAPIEndpointImages { apiEndpoint = "image" } @@ -786,6 +800,10 @@ func storagePoolVolumeTypeContainerPost(d *Daemon, r *http.Request) response.Res return storagePoolVolumeTypePost(d, r, "container") } +func storagePoolVolumeTypeVMPost(d *Daemon, r *http.Request) response.Response { + return storagePoolVolumeTypePost(d, r, "virtual-machine") +} + func storagePoolVolumeTypeCustomPost(d *Daemon, r *http.Request) response.Response { return storagePoolVolumeTypePost(d, r, "custom") } @@ -874,6 +892,10 @@ func storagePoolVolumeTypeContainerGet(d *Daemon, r *http.Request) response.Resp return storagePoolVolumeTypeGet(d, r, "container") } +func storagePoolVolumeTypeVMGet(d *Daemon, r *http.Request) response.Response { + return storagePoolVolumeTypeGet(d, r, "virtual-machine") +} + func storagePoolVolumeTypeCustomGet(d *Daemon, r *http.Request) response.Response { return storagePoolVolumeTypeGet(d, r, "custom") } @@ -1022,6 +1044,10 @@ func storagePoolVolumeTypeContainerPut(d *Daemon, r *http.Request) response.Resp return storagePoolVolumeTypePut(d, r, "container") } +func storagePoolVolumeTypeVMPut(d *Daemon, r *http.Request) response.Response { + return storagePoolVolumeTypePut(d, r, "virtual-machine") +} + func storagePoolVolumeTypeCustomPut(d *Daemon, r *http.Request) response.Response { return storagePoolVolumeTypePut(d, r, "custom") } @@ -1131,6 +1157,10 @@ func storagePoolVolumeTypeContainerPatch(d *Daemon, r *http.Request) response.Re return storagePoolVolumeTypePatch(d, r, "container") } +func storagePoolVolumeTypeVMPatch(d *Daemon, r *http.Request) response.Response { + return storagePoolVolumeTypePatch(d, r, "virtual-machine") +} + func storagePoolVolumeTypeCustomPatch(d *Daemon, r *http.Request) response.Response { return storagePoolVolumeTypePatch(d, r, "custom") } @@ -1268,6 +1298,10 @@ func storagePoolVolumeTypeContainerDelete(d *Daemon, r *http.Request) response.R return storagePoolVolumeTypeDelete(d, r, "container") } +func storagePoolVolumeTypeVMDelete(d *Daemon, r *http.Request) response.Response { + return storagePoolVolumeTypeDelete(d, r, "virtual-machine") +} + func storagePoolVolumeTypeCustomDelete(d *Daemon, r *http.Request) response.Response { return storagePoolVolumeTypeDelete(d, r, "custom") } diff --git a/lxd/storage_volumes_utils.go b/lxd/storage_volumes_utils.go index ab7791e742..2774cd4b30 100644 --- a/lxd/storage_volumes_utils.go +++ b/lxd/storage_volumes_utils.go @@ -17,12 +17,14 @@ import ( // extracted to its own package. We should eventually clean this up. const ( storagePoolVolumeTypeContainer = db.StoragePoolVolumeTypeContainer + storagePoolVolumeTypeVM = db.StoragePoolVolumeTypeVM storagePoolVolumeTypeImage = db.StoragePoolVolumeTypeImage storagePoolVolumeTypeCustom = db.StoragePoolVolumeTypeCustom ) const ( storagePoolVolumeTypeNameContainer = db.StoragePoolVolumeTypeNameContainer + storagePoolVolumeTypeNameVM = db.StoragePoolVolumeTypeNameVM storagePoolVolumeTypeNameImage = db.StoragePoolVolumeTypeNameImage storagePoolVolumeTypeNameCustom = db.StoragePoolVolumeTypeNameCustom ) @@ -32,11 +34,12 @@ const ( // constants which is not what we want. const ( storagePoolVolumeAPIEndpointContainers string = "containers" + storagePoolVolumeAPIEndpointVMs string = "virtual-machines" storagePoolVolumeAPIEndpointImages string = "images" storagePoolVolumeAPIEndpointCustom string = "custom" ) -var supportedVolumeTypesExceptImages = []int{storagePoolVolumeTypeContainer, storagePoolVolumeTypeCustom} +var supportedVolumeTypesExceptImages = []int{storagePoolVolumeTypeContainer, storagePoolVolumeTypeVM, storagePoolVolumeTypeCustom} var supportedVolumeTypes = append(supportedVolumeTypesExceptImages, storagePoolVolumeTypeImage) func init() { @@ -47,6 +50,8 @@ func storagePoolVolumeTypeNameToAPIEndpoint(volumeTypeName string) (string, erro switch volumeTypeName { case storagePoolVolumeTypeNameContainer: return storagePoolVolumeAPIEndpointContainers, nil + case storagePoolVolumeTypeNameVM: + return storagePoolVolumeAPIEndpointVMs, nil case storagePoolVolumeTypeNameImage: return storagePoolVolumeAPIEndpointImages, nil case storagePoolVolumeTypeNameCustom: @@ -60,6 +65,8 @@ func storagePoolVolumeTypeToAPIEndpoint(volumeType int) (string, error) { switch volumeType { case storagePoolVolumeTypeContainer: return storagePoolVolumeAPIEndpointContainers, nil + case storagePoolVolumeTypeVM: + return storagePoolVolumeAPIEndpointVMs, nil case storagePoolVolumeTypeImage: return storagePoolVolumeAPIEndpointImages, nil case storagePoolVolumeTypeCustom:
_______________________________________________ lxc-devel mailing list lxc-devel@lists.linuxcontainers.org http://lists.linuxcontainers.org/listinfo/lxc-devel