[lxc-devel] [lxd/master] lxc/remote: Don't require a crt for public remotes

stgraber on Github lxc-bot at linuxcontainers.org
Thu Aug 3 19:07:53 UTC 2017


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 370 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20170803/7bb094b9/attachment.bin>
-------------- next part --------------
From d8836461cfbe5187d8f6bbeb6f6eac8f88bdc83b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 3 Aug 2017 14:57:42 -0400
Subject: [PATCH] lxc/remote: Don't require a crt for public remotes
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Closes #3627

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxc/remote.go | 31 ++++++++++++++++++++++++-------
 1 file changed, 24 insertions(+), 7 deletions(-)

diff --git a/lxc/remote.go b/lxc/remote.go
index 594d24566..5296d250b 100644
--- a/lxc/remote.go
+++ b/lxc/remote.go
@@ -16,6 +16,7 @@ import (
 
 	"golang.org/x/crypto/ssh/terminal"
 
+	"github.com/lxc/lxd/client"
 	"github.com/lxc/lxd/lxc/config"
 	"github.com/lxc/lxd/shared"
 	"github.com/lxc/lxd/shared/api"
@@ -211,7 +212,12 @@ func (c *remoteCmd) addServer(conf *config.Config, server string, addr string, a
 	conf.Remotes[server] = config.Remote{Addr: addr, Protocol: protocol}
 
 	// Attempt to connect
-	d, err := conf.GetContainerServer(server)
+	var d interface{}
+	if public {
+		d, err = conf.GetImageServer(server)
+	} else {
+		d, err = conf.GetContainerServer(server)
+	}
 
 	// Handle Unix socket connections
 	if strings.HasPrefix(addr, "unix:") {
@@ -261,20 +267,31 @@ func (c *remoteCmd) addServer(conf *config.Config, server string, addr string, a
 		certOut.Close()
 
 		// Setup a new connection, this time with the remote certificate
-		d, err = conf.GetContainerServer(server)
+		if public {
+			d, err = conf.GetImageServer(server)
+		} else {
+			d, err = conf.GetContainerServer(server)
+		}
+
 		if err != nil {
 			return err
 		}
 	}
 
+	// Handle public remotes
+	if public {
+		conf.Remotes[server] = config.Remote{Addr: addr, Public: true}
+		return nil
+	}
+
 	// Get server information
-	srv, _, err := d.GetServer()
+	srv, _, err := d.(lxd.ContainerServer).GetServer()
 	if err != nil {
 		return err
 	}
 
-	// Detect a public remote
-	if srv.Public || public {
+	// Detect public remotes
+	if srv.Public {
 		conf.Remotes[server] = config.Remote{Addr: addr, Public: true}
 		return nil
 	}
@@ -306,13 +323,13 @@ func (c *remoteCmd) addServer(conf *config.Config, server string, addr string, a
 	}
 	req.Type = "client"
 
-	err = d.CreateCertificate(req)
+	err = d.(lxd.ContainerServer).CreateCertificate(req)
 	if err != nil {
 		return err
 	}
 
 	// And check if trusted now
-	srv, _, err = d.GetServer()
+	srv, _, err = d.(lxd.ContainerServer).GetServer()
 	if err != nil {
 		return err
 	}


More information about the lxc-devel mailing list