The following pull request was submitted through Github. It can be accessed and reviewed at: https://github.com/lxc/lxd/pull/8073
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) === Was previously hard coded to default, but custom volumes can support projects now.
From d520357207a0bb535f78212b25372aaf6478c9c5 Mon Sep 17 00:00:00 2001 From: Thomas Parrott <thomas.parr...@canonical.com> Date: Thu, 22 Oct 2020 09:15:04 +0100 Subject: [PATCH 1/4] lxd/cluster/connect: Renames project arg to projectName in ConnectIfInstanceIsRemote Signed-off-by: Thomas Parrott <thomas.parr...@canonical.com> --- lxd/cluster/connect.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lxd/cluster/connect.go b/lxd/cluster/connect.go index 7ed1dd0773..a180d796f8 100644 --- a/lxd/cluster/connect.go +++ b/lxd/cluster/connect.go @@ -97,11 +97,11 @@ func Connect(address string, cert *shared.CertInfo, notify bool) (lxd.InstanceSe // running the container with the given name. If it's not the local node will // connect to it and return the connected client, otherwise it will just return // nil. -func ConnectIfInstanceIsRemote(cluster *db.Cluster, project, name string, cert *shared.CertInfo, instanceType instancetype.Type) (lxd.InstanceServer, error) { +func ConnectIfInstanceIsRemote(cluster *db.Cluster, projectName string, name string, cert *shared.CertInfo, instanceType instancetype.Type) (lxd.InstanceServer, error) { var address string // Node address err := cluster.Transaction(func(tx *db.ClusterTx) error { var err error - address, err = tx.GetNodeAddressOfInstance(project, name, instanceType) + address, err = tx.GetNodeAddressOfInstance(projectName, name, instanceType) return err }) if err != nil { From a5a1f424b9cdba09d91fd86532cdde51d896b253 Mon Sep 17 00:00:00 2001 From: Thomas Parrott <thomas.parr...@canonical.com> Date: Thu, 22 Oct 2020 09:15:21 +0100 Subject: [PATCH 2/4] lxd/cluster/connect: Adds projectName arg to ConnectIfVolumeIsRemote Rather than being hardcoded to "default" project. Signed-off-by: Thomas Parrott <thomas.parr...@canonical.com> --- lxd/cluster/connect.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lxd/cluster/connect.go b/lxd/cluster/connect.go index a180d796f8..1d93cef6bf 100644 --- a/lxd/cluster/connect.go +++ b/lxd/cluster/connect.go @@ -121,11 +121,11 @@ func ConnectIfInstanceIsRemote(cluster *db.Cluster, projectName string, name str // // If there is more than one node with a matching volume name, an error is // returned. -func ConnectIfVolumeIsRemote(cluster *db.Cluster, poolID int64, volumeName string, volumeType int, cert *shared.CertInfo) (lxd.InstanceServer, error) { +func ConnectIfVolumeIsRemote(cluster *db.Cluster, poolID int64, projectName string, volumeName string, volumeType int, cert *shared.CertInfo) (lxd.InstanceServer, error) { var addresses []string // Node addresses err := cluster.Transaction(func(tx *db.ClusterTx) error { var err error - addresses, err = tx.GetStorageVolumeNodeAddresses(poolID, "default", volumeName, volumeType) + addresses, err = tx.GetStorageVolumeNodeAddresses(poolID, projectName, volumeName, volumeType) return err }) if err != nil { From 845d371084edd548435fb26bc8cfa293b8b06705 Mon Sep 17 00:00:00 2001 From: Thomas Parrott <thomas.parr...@canonical.com> Date: Thu, 22 Oct 2020 09:15:54 +0100 Subject: [PATCH 3/4] lxd/response: Adds projectName argument to forwardedResponseIfVolumeIsRemote Signed-off-by: Thomas Parrott <thomas.parr...@canonical.com> --- lxd/response.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lxd/response.go b/lxd/response.go index 01c3c9c605..77557643cb 100644 --- a/lxd/response.go +++ b/lxd/response.go @@ -59,13 +59,13 @@ func forwardedResponseIfInstanceIsRemote(d *Daemon, r *http.Request, project, na // // This is used when no targetNode is specified, and saves users some typing // when the volume name/type is unique to a node. -func forwardedResponseIfVolumeIsRemote(d *Daemon, r *http.Request, poolID int64, volumeName string, volumeType int) response.Response { +func forwardedResponseIfVolumeIsRemote(d *Daemon, r *http.Request, poolID int64, projectName string, volumeName string, volumeType int) response.Response { if queryParam(r, "target") != "" { return nil } cert := d.endpoints.NetworkCert() - client, err := cluster.ConnectIfVolumeIsRemote(d.cluster, poolID, volumeName, volumeType, cert) + client, err := cluster.ConnectIfVolumeIsRemote(d.cluster, poolID, projectName, volumeName, volumeType, cert) if err != nil && err != db.ErrNoSuchObject { return response.SmartError(err) } From ca3badc5dc32930ab754615b4eae6763b2f6149b Mon Sep 17 00:00:00 2001 From: Thomas Parrott <thomas.parr...@canonical.com> Date: Thu, 22 Oct 2020 09:16:19 +0100 Subject: [PATCH 4/4] lxd/storage/volumes: forwardedResponseIfVolumeIsRemote projectName argument usage Signed-off-by: Thomas Parrott <thomas.parr...@canonical.com> --- lxd/storage_volumes.go | 10 +++++----- lxd/storage_volumes_backup.go | 12 ++++++------ lxd/storage_volumes_snapshot.go | 10 +++++----- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/lxd/storage_volumes.go b/lxd/storage_volumes.go index a7c0f6c4ca..e823b181cd 100644 --- a/lxd/storage_volumes.go +++ b/lxd/storage_volumes.go @@ -634,7 +634,7 @@ func storagePoolVolumeTypePost(d *Daemon, r *http.Request, volumeTypeName string return response.BadRequest(err) } - resp = forwardedResponseIfVolumeIsRemote(d, r, poolID, volumeName, volumeType) + resp = forwardedResponseIfVolumeIsRemote(d, r, poolID, projectName, volumeName, volumeType) if resp != nil { return resp } @@ -857,7 +857,7 @@ func storagePoolVolumeTypeGet(d *Daemon, r *http.Request, volumeTypeName string) return resp } - resp = forwardedResponseIfVolumeIsRemote(d, r, poolID, volumeName, volumeType) + resp = forwardedResponseIfVolumeIsRemote(d, r, poolID, projectName, volumeName, volumeType) if resp != nil { return resp } @@ -936,7 +936,7 @@ func storagePoolVolumeTypePut(d *Daemon, r *http.Request, volumeTypeName string) return resp } - resp = forwardedResponseIfVolumeIsRemote(d, r, pool.ID(), volumeName, volumeType) + resp = forwardedResponseIfVolumeIsRemote(d, r, pool.ID(), projectName, volumeName, volumeType) if resp != nil { return resp } @@ -1078,7 +1078,7 @@ func storagePoolVolumeTypePatch(d *Daemon, r *http.Request, volumeTypeName strin return resp } - resp = forwardedResponseIfVolumeIsRemote(d, r, pool.ID(), volumeName, volumeType) + resp = forwardedResponseIfVolumeIsRemote(d, r, pool.ID(), projectName, volumeName, volumeType) if resp != nil { return resp } @@ -1176,7 +1176,7 @@ func storagePoolVolumeTypeDelete(d *Daemon, r *http.Request, volumeTypeName stri return response.SmartError(err) } - resp = forwardedResponseIfVolumeIsRemote(d, r, poolID, volumeName, volumeType) + resp = forwardedResponseIfVolumeIsRemote(d, r, poolID, projectName, volumeName, volumeType) if resp != nil { return resp } diff --git a/lxd/storage_volumes_backup.go b/lxd/storage_volumes_backup.go index 2979481bbe..2b85e6f6b8 100644 --- a/lxd/storage_volumes_backup.go +++ b/lxd/storage_volumes_backup.go @@ -72,7 +72,7 @@ func storagePoolVolumeTypeCustomBackupsGet(d *Daemon, r *http.Request) response. } // Handle requests targeted to a volume on a different node - resp := forwardedResponseIfVolumeIsRemote(d, r, poolID, volumeName, db.StoragePoolVolumeTypeCustom) + resp := forwardedResponseIfVolumeIsRemote(d, r, poolID, projectName, volumeName, db.StoragePoolVolumeTypeCustom) if resp != nil { return resp } @@ -145,7 +145,7 @@ func storagePoolVolumeTypeCustomBackupsPost(d *Daemon, r *http.Request) response return response.SmartError(err) } - resp = forwardedResponseIfVolumeIsRemote(d, r, poolID, volumeName, db.StoragePoolVolumeTypeCustom) + resp = forwardedResponseIfVolumeIsRemote(d, r, poolID, projectName, volumeName, db.StoragePoolVolumeTypeCustom) if resp != nil { return resp } @@ -287,7 +287,7 @@ func storagePoolVolumeTypeCustomBackupGet(d *Daemon, r *http.Request) response.R return response.SmartError(err) } - resp = forwardedResponseIfVolumeIsRemote(d, r, poolID, volumeName, db.StoragePoolVolumeTypeCustom) + resp = forwardedResponseIfVolumeIsRemote(d, r, poolID, projectName, volumeName, db.StoragePoolVolumeTypeCustom) if resp != nil { return resp } @@ -338,7 +338,7 @@ func storagePoolVolumeTypeCustomBackupPost(d *Daemon, r *http.Request) response. return response.SmartError(err) } - resp = forwardedResponseIfVolumeIsRemote(d, r, poolID, volumeName, db.StoragePoolVolumeTypeCustom) + resp = forwardedResponseIfVolumeIsRemote(d, r, poolID, projectName, volumeName, db.StoragePoolVolumeTypeCustom) if resp != nil { return resp } @@ -420,7 +420,7 @@ func storagePoolVolumeTypeCustomBackupDelete(d *Daemon, r *http.Request) respons return response.SmartError(err) } - resp = forwardedResponseIfVolumeIsRemote(d, r, poolID, volumeName, db.StoragePoolVolumeTypeCustom) + resp = forwardedResponseIfVolumeIsRemote(d, r, poolID, projectName, volumeName, db.StoragePoolVolumeTypeCustom) if resp != nil { return resp } @@ -489,7 +489,7 @@ func storagePoolVolumeTypeCustomBackupExportGet(d *Daemon, r *http.Request) resp return response.SmartError(err) } - resp = forwardedResponseIfVolumeIsRemote(d, r, poolID, volumeName, db.StoragePoolVolumeTypeCustom) + resp = forwardedResponseIfVolumeIsRemote(d, r, poolID, projectName, volumeName, db.StoragePoolVolumeTypeCustom) if resp != nil { return resp } diff --git a/lxd/storage_volumes_snapshot.go b/lxd/storage_volumes_snapshot.go index 9878c0d822..d766a8f7db 100644 --- a/lxd/storage_volumes_snapshot.go +++ b/lxd/storage_volumes_snapshot.go @@ -114,7 +114,7 @@ func storagePoolVolumeSnapshotsTypePost(d *Daemon, r *http.Request) response.Res return resp } - resp = forwardedResponseIfVolumeIsRemote(d, r, poolID, volumeName, volumeType) + resp = forwardedResponseIfVolumeIsRemote(d, r, poolID, projectName, volumeName, volumeType) if resp != nil { return resp } @@ -302,7 +302,7 @@ func storagePoolVolumeSnapshotTypePost(d *Daemon, r *http.Request) response.Resp } fullSnapshotName := fmt.Sprintf("%s/%s", volumeName, snapshotName) - resp = forwardedResponseIfVolumeIsRemote(d, r, poolID, fullSnapshotName, volumeType) + resp = forwardedResponseIfVolumeIsRemote(d, r, poolID, projectName, fullSnapshotName, volumeType) if resp != nil { return resp } @@ -368,7 +368,7 @@ func storagePoolVolumeSnapshotTypeGet(d *Daemon, r *http.Request) response.Respo } fullSnapshotName := fmt.Sprintf("%s/%s", volumeName, snapshotName) - resp = forwardedResponseIfVolumeIsRemote(d, r, poolID, fullSnapshotName, volumeType) + resp = forwardedResponseIfVolumeIsRemote(d, r, poolID, projectName, fullSnapshotName, volumeType) if resp != nil { return resp } @@ -437,7 +437,7 @@ func storagePoolVolumeSnapshotTypePut(d *Daemon, r *http.Request) response.Respo } fullSnapshotName := fmt.Sprintf("%s/%s", volumeName, snapshotName) - resp = forwardedResponseIfVolumeIsRemote(d, r, poolID, fullSnapshotName, volumeType) + resp = forwardedResponseIfVolumeIsRemote(d, r, poolID, projectName, fullSnapshotName, volumeType) if resp != nil { return resp } @@ -533,7 +533,7 @@ func storagePoolVolumeSnapshotTypeDelete(d *Daemon, r *http.Request) response.Re } fullSnapshotName := fmt.Sprintf("%s/%s", volumeName, snapshotName) - resp = forwardedResponseIfVolumeIsRemote(d, r, poolID, fullSnapshotName, volumeType) + resp = forwardedResponseIfVolumeIsRemote(d, r, poolID, projectName, fullSnapshotName, volumeType) if resp != nil { return resp }
_______________________________________________ lxc-devel mailing list lxc-devel@lists.linuxcontainers.org http://lists.linuxcontainers.org/listinfo/lxc-devel