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

Reply via email to