The following pull request was submitted through Github.
It can be accessed and reviewed at: https://github.com/lxc/lxd/pull/3628

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) ===
Closes #3627

Signed-off-by: Stéphane Graber <[email protected]>
From d8836461cfbe5187d8f6bbeb6f6eac8f88bdc83b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <[email protected]>
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 <[email protected]>
---
 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
        }
_______________________________________________
lxc-devel mailing list
[email protected]
http://lists.linuxcontainers.org/listinfo/lxc-devel

Reply via email to