[lxc-devel] [lxd/master] Cluster: Makes ServerAddress field required for clusterPutJoin
tomponline on Github
lxc-bot at linuxcontainers.org
Wed Aug 26 08:42:17 UTC 2020
A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 433 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20200826/d011d5a0/attachment.bin>
-------------- next part --------------
From bdd896a5297752261fc885a092a19a7d0e5c8989 Mon Sep 17 00:00:00 2001
From: Thomas Parrott <thomas.parrott at canonical.com>
Date: Wed, 26 Aug 2020 09:40:00 +0100
Subject: [PATCH] lxd/api/cluster: Makes ServerAddress field required for
clusterPutJoin
With the intention of removing the old pre-clustering_join approach.
Signed-off-by: Thomas Parrott <thomas.parrott at canonical.com>
---
lxd/api_cluster.go | 53 +++++++++++++++++++++-------------------------
1 file changed, 24 insertions(+), 29 deletions(-)
diff --git a/lxd/api_cluster.go b/lxd/api_cluster.go
index 81cdd258eb..32d3e5ac1a 100644
--- a/lxd/api_cluster.go
+++ b/lxd/api_cluster.go
@@ -285,17 +285,18 @@ func clusterPutJoin(d *Daemon, req api.ClusterPut) response.Response {
return response.BadRequest(fmt.Errorf("This server is already clustered"))
}
+ // The old pre 'clustering_join' join API approach is no longer supported.
+ if req.ServerAddress == "" {
+ return response.BadRequest(fmt.Errorf("No server address provided for this member"))
+ }
+
address, err := node.HTTPSAddress(d.db)
if err != nil {
return response.SmartError(err)
}
if address == "" {
- if req.ServerAddress == "" {
- return response.BadRequest(fmt.Errorf("No core.https_address config key is set on this member"))
- }
-
- // The user has provided a server address, and no networking
+ // As the user always provides a server address, but no networking
// was setup on this node, let's do the job and open the
// port. We'll use the same address both for the REST API and
// for clustering.
@@ -325,17 +326,15 @@ func clusterPutJoin(d *Daemon, req api.ClusterPut) response.Response {
address = req.ServerAddress
} else {
- if req.ServerAddress != "" {
- // The user has previously set core.https_address and
- // is now providing a cluster address as well. If they
- // differ we need to listen to it.
- if !util.IsAddressCovered(req.ServerAddress, address) {
- err := d.endpoints.ClusterUpdateAddress(req.ServerAddress)
- if err != nil {
- return response.SmartError(err)
- }
- address = req.ServerAddress
+ // The user has previously set core.https_address and
+ // is now providing a cluster address as well. If they
+ // differ we need to listen to it.
+ if !util.IsAddressCovered(req.ServerAddress, address) {
+ err := d.endpoints.ClusterUpdateAddress(req.ServerAddress)
+ if err != nil {
+ return response.SmartError(err)
}
+ address = req.ServerAddress
}
// Update the cluster.https_address config key.
@@ -384,21 +383,17 @@ func clusterPutJoin(d *Daemon, req api.ClusterPut) response.Response {
return err
}
- // If the ServerAddress field is set it means that we're using
- // the new join API introduced with the 'clustering_join'
- // extension.
- if req.ServerAddress != "" {
- // Connect to ourselves to initialize storage pools and
- // networks using the API.
- d, err := lxd.ConnectLXDUnix(d.UnixSocket(), nil)
- if err != nil {
- return errors.Wrap(err, "Failed to connect to local LXD")
- }
+ // As ServerAddress field is required to be set it means that we're using the new join API
+ // introduced with the 'clustering_join' extension.
+ // Connect to ourselves to initialize storage pools and networks using the API.
+ localClient, err := lxd.ConnectLXDUnix(d.UnixSocket(), nil)
+ if err != nil {
+ return errors.Wrap(err, "Failed to connect to local LXD")
+ }
- err = clusterInitMember(d, client, req.MemberConfig)
- if err != nil {
- return errors.Wrap(err, "Failed to initialize member")
- }
+ err = clusterInitMember(localClient, client, req.MemberConfig)
+ if err != nil {
+ return errors.Wrap(err, "Failed to initialize member")
}
// Get all defined storage pools and networks, so they can be compared
More information about the lxc-devel
mailing list