[lxc-devel] [lxd/master] [RFC] Add support for external authentication via Macaroons
albertodonato on Github
lxc-bot at linuxcontainers.org
Fri Jul 28 16:34:03 UTC 2017
A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 301 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20170728/a9a93c0d/attachment.bin>
-------------- next part --------------
From 4dcb5788137a6245638c5a350b8c66b3de5ca96b Mon Sep 17 00:00:00 2001
From: Alberto Donato <alberto.donato at canonical.com>
Date: Wed, 19 Jul 2017 14:58:20 +0200
Subject: [PATCH 1/2] server: support for macaroons-based authentication
Signed-off-by: Alberto Donato <alberto.donato at canonical.com>
---
doc/api-extensions.md | 3 +
doc/server.md | 31 ++++----
lxc/remote.go | 6 +-
lxd/api_1.0.go | 16 +++--
lxd/certificates.go | 2 +-
lxd/daemon.go | 171 +++++++++++++++++++++++++++++++++++---------
lxd/daemon_config.go | 10 +++
lxd/images.go | 10 +--
shared/api/server.go | 1 +
test/suites/serverconfig.sh | 9 +++
10 files changed, 198 insertions(+), 61 deletions(-)
diff --git a/doc/api-extensions.md b/doc/api-extensions.md
index 4550b7d72..af004197a 100644
--- a/doc/api-extensions.md
+++ b/doc/api-extensions.md
@@ -322,3 +322,6 @@ This adds the ability to specify the ceph user.
## instance\_types
This adds the "instance\_type" field to the container creation request.
Its value is expanded to LXD resource limits.
+
+## external\_authentication
+This adds support for external authentication via Macaroons.
diff --git a/doc/server.md b/doc/server.md
index 5fa2fe3f2..54044a5d2 100644
--- a/doc/server.md
+++ b/doc/server.md
@@ -6,21 +6,22 @@ currently supported:
- core (core daemon configuration)
- images (image configuration)
-Key | Type | Default | API extension | Description
-:-- | :--- | :------ | :------------ | :----------
-core.https\_address | string | - | - | Address to bind for the remote API
-core.https\_allowed\_headers | string | - | - | Access-Control-Allow-Headers http header value
-core.https\_allowed\_methods | string | - | - | Access-Control-Allow-Methods http header value
-core.https\_allowed\_origin | string | - | - | Access-Control-Allow-Origin http header value
-core.https\_allowed\_credentials| boolean | - | - | Whether to set Access-Control-Allow-Credentials http header value to "true"
-core.proxy\_http | string | - | - | http proxy to use, if any (falls back to HTTP\_PROXY environment variable)
-core.proxy\_https | string | - | - | https proxy to use, if any (falls back to HTTPS\_PROXY environment variable)
-core.proxy\_ignore\_hosts | string | - | - | hosts which don't need the proxy for use (similar format to NO\_PROXY, e.g. 1.2.3.4,1.2.3.5, falls back to NO\_PROXY environment variable)
-core.trust\_password | string | - | - | Password to be provided by clients to setup a trust
-images.auto\_update\_cached | boolean | true | - | Whether to automatically update any image that LXD caches
-images.auto\_update\_interval | integer | 6 | - | Interval in hours at which to look for update to cached images (0 disables it)
-images.compression\_algorithm | string | gzip | - | Compression algorithm to use for new images (bzip2, gzip, lzma, xz or none)
-images.remote\_cache\_expiry | integer | 10 | - | Number of days after which an unused cached remote image will be flushed
+Key | Type | Default | API extension | Description
+:-- | :--- | :------ | :------------ | :----------
+core.external\_auth.endpoint | string | - | external_authentication | URL of the the external authentication endpoint
+core.https\_address | string | - | - | Address to bind for the remote API
+core.https\_allowed\_headers | string | - | - | Access-Control-Allow-Headers http header value
+core.https\_allowed\_methods | string | - | - | Access-Control-Allow-Methods http header value
+core.https\_allowed\_origin | string | - | - | Access-Control-Allow-Origin http header value
+core.https\_allowed\_credentials| boolean | - | - | Whether to set Access-Control-Allow-Credentials http header value to "true"
+core.proxy\_http | string | - | - | http proxy to use, if any (falls back to HTTP\_PROXY environment variable)
+core.proxy\_https | string | - | - | https proxy to use, if any (falls back to HTTPS\_PROXY environment variable)
+core.proxy\_ignore\_hosts | string | - | - | hosts which don't need the proxy for use (similar format to NO\_PROXY, e.g. 1.2.3.4,1.2.3.5, falls back to NO\_PROXY environment variable)
+core.trust\_password | string | - | - | Password to be provided by clients to setup a trust
+images.auto\_update\_cached | boolean | true | - | Whether to automatically update any image that LXD caches
+images.auto\_update\_interval | integer | 6 | - | Interval in hours at which to look for update to cached images (0 disables it)
+images.compression\_algorithm | string | gzip | - | Compression algorithm to use for new images (bzip2, gzip, lzma, xz or none)
+images.remote\_cache\_expiry | integer | 10 | - | Number of days after which an unused cached remote image will be flushed
Those keys can be set using the lxc tool with:
diff --git a/lxc/remote.go b/lxc/remote.go
index 594d24566..a8e3c0888 100644
--- a/lxc/remote.go
+++ b/lxc/remote.go
@@ -318,10 +318,12 @@ func (c *remoteCmd) addServer(conf *config.Config, server string, addr string, a
}
if srv.Auth != "trusted" {
- return fmt.Errorf(i18n.G("Server doesn't trust us after adding our cert"))
+ return fmt.Errorf(i18n.G("Server doesn't trust us after authentication"))
}
- fmt.Println(i18n.G("Client certificate stored at server: "), server)
+ if authType == "tls" {
+ fmt.Println(i18n.G("Client certificate stored at server: "), server)
+ }
return nil
}
diff --git a/lxd/api_1.0.go b/lxd/api_1.0.go
index f9a6c1b5c..7b8c4c0de 100644
--- a/lxd/api_1.0.go
+++ b/lxd/api_1.0.go
@@ -55,6 +55,10 @@ var api10 = []Command{
}
func api10Get(d *Daemon, r *http.Request) Response {
+ authMethods := []string{"tls"}
+ if daemonConfig["core.external_auth.endpoint"].Get() != "" {
+ authMethods = append(authMethods, "macaroons")
+ }
srv := api.ServerUntrusted{
/* List of API extensions in the order they were added.
*
@@ -121,15 +125,17 @@ func api10Get(d *Daemon, r *http.Request) Response {
"storage_driver_ceph",
"storage_ceph_user_name",
"resource_limits",
+ "external_authentication",
},
- APIStatus: "stable",
- APIVersion: version.APIVersion,
- Public: false,
- Auth: "untrusted",
+ APIStatus: "stable",
+ APIVersion: version.APIVersion,
+ Public: false,
+ Auth: "untrusted",
+ AuthMethods: authMethods,
}
// If untrusted, return now
- if !d.isTrustedClient(r) {
+ if err := d.checkTrustedClient(r); err != nil {
return SyncResponseETag(true, srv, nil)
}
diff --git a/lxd/certificates.go b/lxd/certificates.go
index 6154b8be1..5daab22cf 100644
--- a/lxd/certificates.go
+++ b/lxd/certificates.go
@@ -95,7 +95,7 @@ func certificatesPost(d *Daemon, r *http.Request) Response {
}
// Access check
- if !d.isTrustedClient(r) && d.PasswordCheck(req.Password) != nil {
+ if d.checkTrustedClient(r) != nil && d.PasswordCheck(req.Password) != nil {
return Forbidden
}
diff --git a/lxd/daemon.go b/lxd/daemon.go
index 0e5c3e306..985af4221 100644
--- a/lxd/daemon.go
+++ b/lxd/daemon.go
@@ -23,10 +23,12 @@ import (
"time"
"golang.org/x/crypto/scrypt"
+ "golang.org/x/net/context"
"github.com/gorilla/mux"
_ "github.com/mattn/go-sqlite3"
"github.com/syndtr/gocapability/capability"
+
"gopkg.in/tomb.v2"
"github.com/lxc/lxd/client"
@@ -37,6 +39,11 @@ import (
"github.com/lxc/lxd/shared/version"
log "gopkg.in/inconshreveable/log15.v2"
+
+ "github.com/juju/idmclient"
+
+ "gopkg.in/macaroon-bakery.v2-unstable/bakery"
+ "gopkg.in/macaroon-bakery.v2-unstable/httpbakery"
)
// AppArmor
@@ -92,6 +99,13 @@ type Daemon struct {
tlsConfig *tls.Config
proxy func(req *http.Request) (*url.URL, error)
+
+ externalAuth *externalAuth
+}
+
+type externalAuth struct {
+ endpoint string
+ bakery *bakery.Bakery
}
// Command is the basic structure for every API call.
@@ -158,23 +172,62 @@ func readMyCert() (string, string, error) {
return certf, keyf, err
}
-func (d *Daemon) isTrustedClient(r *http.Request) bool {
+// Check whether the request comes from a trusted client.
+func (d *Daemon) checkTrustedClient(r *http.Request) error {
if r.RemoteAddr == "@" {
// Unix socket
- return true
+ return nil
}
if r.TLS == nil {
- return false
+ return fmt.Errorf("no TLS")
+ }
+
+ if d.externalAuth != nil && r.Header.Get(httpbakery.BakeryProtocolHeader) != "" {
+ ctx := httpbakery.ContextWithRequest(context.TODO(), r)
+ authChecker := d.externalAuth.bakery.Checker.Auth(
+ httpbakery.RequestMacaroons(r)...)
+ ops := getBakeryOps(r)
+ _, err := authChecker.Allow(ctx, ops...)
+ return err
}
for i := range r.TLS.PeerCertificates {
if d.CheckTrustState(*r.TLS.PeerCertificates[i]) {
- return true
+ return nil
}
}
+ return fmt.Errorf("unauthorized")
+}
- return false
+// Return the bakery operations implied by the given HTTP request
+func getBakeryOps(r *http.Request) []bakery.Op {
+ elems := strings.SplitN(r.URL.Path, "/", 3)
+ entity := ""
+ if len(elems) >= 3 {
+ entity = elems[2]
+ }
+ return []bakery.Op{{
+ Entity: entity,
+ Action: r.Method,
+ }}
+}
+
+func writeMacaroonsRequiredResponse(b *bakery.Bakery, r *http.Request, w http.ResponseWriter, derr *bakery.DischargeRequiredError) {
+ ctx := httpbakery.ContextWithRequest(context.TODO(), r)
+ // Mint an appropriate macaroon and send it back to the client.
+ m, err := b.Oven.NewMacaroon(
+ ctx, httpbakery.RequestVersion(r), time.Now().Add(5*time.Minute), derr.Caveats, derr.Ops...)
+ if err != nil {
+ resp := errorResponse{http.StatusInternalServerError, err.Error()}
+ resp.Render(w)
+ return
+ }
+
+ herr := httpbakery.NewDischargeRequiredError(m, "/", derr)
+ herr.(*httpbakery.Error).Info.CookieNameSuffix = "auth"
+ httpbakery.WriteDischargeRequiredErrorForRequest(w, m, "", herr, r)
+ return
}
func isJSONRequest(r *http.Request) bool {
@@ -210,18 +263,20 @@ func (d *Daemon) createCmd(version string, c Command) {
d.mux.HandleFunc(uri, func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
- if d.isTrustedClient(r) {
+ untrustedOk := (r.Method == "GET" && c.untrustedGet) || (r.Method == "POST" && c.untrustedPost)
+
+ err := d.checkTrustedClient(r)
+ if err == nil {
logger.Debug(
"handling",
log.Ctx{"method": r.Method, "url": r.URL.RequestURI(), "ip": r.RemoteAddr})
- } else if r.Method == "GET" && c.untrustedGet {
- logger.Debug(
- "allowing untrusted GET",
- log.Ctx{"url": r.URL.RequestURI(), "ip": r.RemoteAddr})
- } else if r.Method == "POST" && c.untrustedPost {
+ } else if untrustedOk && r.Header.Get("X-LXD-authenticated") == "" {
logger.Debug(
- "allowing untrusted POST",
+ fmt.Sprintf("allowing untrusted %s", r.Method),
log.Ctx{"url": r.URL.RequestURI(), "ip": r.RemoteAddr})
+ } else if derr, ok := err.(*bakery.DischargeRequiredError); ok {
+ writeMacaroonsRequiredResponse(d.externalAuth.bakery, r, w, derr)
+ return
} else {
logger.Warn(
"rejecting request from untrusted client",
@@ -925,29 +980,12 @@ func (d *Daemon) Init() error {
readSavedClientCAList(d)
}
- /* Setup the web server */
- d.mux = mux.NewRouter()
- d.mux.StrictSlash(false)
-
- d.mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
- w.Header().Set("Content-Type", "application/json")
- SyncResponse(true, []string{"/1.0"}).Render(w)
- })
-
- for _, c := range api10 {
- d.createCmd("1.0", c)
- }
-
- for _, c := range apiInternal {
- d.createCmd("internal", c)
+ d.setupWebServer()
+ err = d.setupExternalAuthentication(daemonConfig["core.external_auth.endpoint"].Get())
+ if err != nil {
+ return err
}
- d.mux.NotFoundHandler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- logger.Info("Sending top level 404", log.Ctx{"url": r.URL})
- w.Header().Set("Content-Type", "application/json")
- NotFound.Render(w)
- })
-
// Prepare the list of listeners
listeners := d.GetListeners()
if len(listeners) > 0 {
@@ -1367,6 +1405,73 @@ func (d *Daemon) GetListeners() []net.Listener {
return listeners
}
+// Setup the API web server
+func (d *Daemon) setupWebServer() {
+ /* Setup the web server */
+ d.mux = mux.NewRouter()
+ d.mux.StrictSlash(false)
+
+ d.mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
+ w.Header().Set("Content-Type", "application/json")
+ SyncResponse(true, []string{"/1.0"}).Render(w)
+ })
+
+ for _, c := range api10 {
+ d.createCmd("1.0", c)
+ }
+
+ for _, c := range apiInternal {
+ d.createCmd("internal", c)
+ }
+
+ d.mux.NotFoundHandler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ logger.Info("Sending top level 404", log.Ctx{"url": r.URL})
+ w.Header().Set("Content-Type", "application/json")
+ NotFound.Render(w)
+ })
+
+}
+
+// Setup external authentication
+func (d *Daemon) setupExternalAuthentication(authEndpoint string) error {
+ if authEndpoint == "" {
+ d.externalAuth = nil
+ logger.Infof("External authentication disabled")
+ return nil
+ }
+
+ idmClient, err := idmclient.New(idmclient.NewParams{
+ BaseURL: authEndpoint,
+ })
+ if err != nil {
+ return err
+ }
+ key, err := bakery.GenerateKey()
+ if err != nil {
+ return err
+ }
+ pkLocator := httpbakery.NewThirdPartyLocator(nil, nil)
+ pkLocator.AllowInsecure()
+ bakery := bakery.New(bakery.BakeryParams{
+ Key: key,
+ Location: authEndpoint,
+ Locator: pkLocator,
+ Checker: httpbakery.NewChecker(),
+ IdentityClient: idmClient,
+ Authorizer: bakery.ACLAuthorizer{
+ GetACL: func(ctx context.Context, op bakery.Op) ([]string, error) {
+ return []string{"everyone"}, nil
+ },
+ },
+ })
+ d.externalAuth = &externalAuth{
+ endpoint: authEndpoint,
+ bakery: bakery,
+ }
+ logger.Info("External authentication enabled", log.Ctx{"endpoint": authEndpoint})
+ return nil
+}
+
type lxdHttpServer struct {
r *mux.Router
d *Daemon
diff --git a/lxd/daemon_config.go b/lxd/daemon_config.go
index 15c55a429..35582b53a 100644
--- a/lxd/daemon_config.go
+++ b/lxd/daemon_config.go
@@ -183,6 +183,7 @@ func daemonConfigInit(db *sql.DB) error {
"core.proxy_https": {valueType: "string", setter: daemonConfigSetProxy},
"core.proxy_ignore_hosts": {valueType: "string", setter: daemonConfigSetProxy},
"core.trust_password": {valueType: "string", hiddenValue: true, setter: daemonConfigSetPassword},
+ "core.external_auth.endpoint": {valueType: "string", setter: daemonConfigSetExternalAuthEndpoint},
"images.auto_update_cached": {valueType: "bool", defaultValue: "true"},
"images.auto_update_interval": {valueType: "int", defaultValue: "6"},
@@ -272,6 +273,15 @@ func daemonConfigSetAddress(d *Daemon, key string, value string) (string, error)
return value, nil
}
+func daemonConfigSetExternalAuthEndpoint(d *Daemon, key string, value string) (string, error) {
+ err := d.setupExternalAuthentication(value)
+ if err != nil {
+ return "", err
+ }
+
+ return value, nil
+}
+
func daemonConfigSetProxy(d *Daemon, key string, value string) (string, error) {
// Get the current config
config := map[string]string{}
diff --git a/lxd/images.go b/lxd/images.go
index 8a89fd4ab..500380fb5 100644
--- a/lxd/images.go
+++ b/lxd/images.go
@@ -836,7 +836,7 @@ func doImagesGet(d *Daemon, recursion bool, public bool) (interface{}, error) {
}
func imagesGet(d *Daemon, r *http.Request) Response {
- public := !d.isTrustedClient(r)
+ public := d.checkTrustedClient(r) != nil
result, err := doImagesGet(d, d.isRecursionRequest(r), public)
if err != nil {
@@ -1180,7 +1180,7 @@ func imageValidSecret(fingerprint string, secret string) bool {
func imageGet(d *Daemon, r *http.Request) Response {
fingerprint := mux.Vars(r)["fingerprint"]
- public := !d.isTrustedClient(r)
+ public := d.checkTrustedClient(r) != nil
secret := r.FormValue("secret")
info, response := doImageGet(d, fingerprint, false)
@@ -1341,7 +1341,7 @@ func aliasesGet(d *Daemon, r *http.Request) Response {
responseStr = append(responseStr, url)
} else {
- _, alias, err := dbImageAliasGet(d.db, name, d.isTrustedClient(r))
+ _, alias, err := dbImageAliasGet(d.db, name, d.checkTrustedClient(r) == nil)
if err != nil {
continue
}
@@ -1359,7 +1359,7 @@ func aliasesGet(d *Daemon, r *http.Request) Response {
func aliasGet(d *Daemon, r *http.Request) Response {
name := mux.Vars(r)["name"]
- _, alias, err := dbImageAliasGet(d.db, name, d.isTrustedClient(r))
+ _, alias, err := dbImageAliasGet(d.db, name, d.checkTrustedClient(r) == nil)
if err != nil {
return SmartError(err)
}
@@ -1500,7 +1500,7 @@ func aliasPost(d *Daemon, r *http.Request) Response {
func imageExport(d *Daemon, r *http.Request) Response {
fingerprint := mux.Vars(r)["fingerprint"]
- public := !d.isTrustedClient(r)
+ public := d.checkTrustedClient(r) != nil
secret := r.FormValue("secret")
_, imgInfo, err := dbImageGet(d.db, fingerprint, false, false)
diff --git a/shared/api/server.go b/shared/api/server.go
index 53a4c81be..a986f062f 100644
--- a/shared/api/server.go
+++ b/shared/api/server.go
@@ -29,6 +29,7 @@ type ServerUntrusted struct {
APIStatus string `json:"api_status" yaml:"api_status"`
APIVersion string `json:"api_version" yaml:"api_version"`
Auth string `json:"auth" yaml:"auth"`
+ AuthMethods []string `json:"auth_methods" yaml:"auth_methods"`
Public bool `json:"public" yaml:"public"`
}
diff --git a/test/suites/serverconfig.sh b/test/suites/serverconfig.sh
index ba36f2040..7dbb1eb44 100644
--- a/test/suites/serverconfig.sh
+++ b/test/suites/serverconfig.sh
@@ -14,4 +14,13 @@ test_server_config() {
# test untrusted server GET
my_curl -X GET "https://$(cat "${LXD_SERVERCONFIG_DIR}/lxd.addr")/1.0" | grep -v -q environment
+
+ # test authentication type
+ curl --unix-socket "$LXD_DIR/unix.socket" "lxd/1.0" | jq .metadata.auth_methods | grep tls
+ # only tls is enabled by default
+ ! curl --unix-socket "$LXD_DIR/unix.socket" "lxd/1.0" | jq .metadata.auth_methods | grep macaroons
+ lxc config set core.external_auth.endpoint "https://localhost:8081"
+ # macaroons are also enabled
+ curl --unix-socket "$LXD_DIR/unix.socket" "lxd/1.0" | jq .metadata.auth_methods | grep macaroons
+ lxc config unset core.external_auth.endpoint
}
From a74c1dcc480d04d1ef3ebbe8ec63238f7bf86e08 Mon Sep 17 00:00:00 2001
From: Alberto Donato <alberto.donato at canonical.com>
Date: Fri, 21 Jul 2017 14:19:22 +0200
Subject: [PATCH 2/2] client: support for macaroons-based authentication
Signed-off-by: Alberto Donato <alberto.donato at canonical.com>
---
client/connection.go | 17 +++++++
client/interfaces.go | 1 +
client/lxd.go | 62 +++++++++++++++++++++++++-
client/lxd_containers.go | 6 +--
client/lxd_images.go | 2 +-
client/lxd_server.go | 5 +++
lxc/config/config.go | 26 +++++++++++
lxc/config/default.go | 6 ---
lxc/config/file.go | 12 +++--
lxc/config/remote.go | 4 ++
lxc/image.go | 2 +-
lxc/main.go | 8 ++--
lxc/remote.go | 92 ++++++++++++++++++++++++++------------
lxd/daemon.go | 2 +-
po/de.po | 107 ++++++++++++++++++++++++++------------------
po/el.po | 106 ++++++++++++++++++++++++++------------------
po/fr.po | 108 +++++++++++++++++++++++++++------------------
po/it.po | 106 ++++++++++++++++++++++++++------------------
po/ja.po | 108 +++++++++++++++++++++++++++------------------
po/lxd.pot | 106 ++++++++++++++++++++++++++------------------
po/nl.po | 106 ++++++++++++++++++++++++++------------------
po/ru.po | 106 ++++++++++++++++++++++++++------------------
po/sr.po | 106 ++++++++++++++++++++++++++------------------
po/sv.po | 106 ++++++++++++++++++++++++++------------------
po/tr.po | 106 ++++++++++++++++++++++++++------------------
po/zh.po | 106 ++++++++++++++++++++++++++------------------
po/zh_Hans.po | 106 ++++++++++++++++++++++++++------------------
test/lxd-benchmark/main.go | 2 +-
test/suites/remote.sh | 3 ++
29 files changed, 1013 insertions(+), 620 deletions(-)
diff --git a/client/connection.go b/client/connection.go
index 759ac3d25..3f0d688c7 100644
--- a/client/connection.go
+++ b/client/connection.go
@@ -6,6 +6,8 @@ import (
"os"
"path/filepath"
+ "github.com/juju/persistent-cookiejar"
+
"github.com/lxc/lxd/shared/logger"
"github.com/lxc/lxd/shared/simplestreams"
)
@@ -27,11 +29,17 @@ type ConnectionArgs struct {
// User agent string
UserAgent string
+ // Authentication type
+ AuthType string
+
// Custom proxy
Proxy func(*http.Request) (*url.URL, error)
// Custom HTTP Client (used as base for the connection)
HTTPClient *http.Client
+
+ // Persistent cookie jar
+ CookieJar *cookiejar.Jar
}
// ConnectLXD lets you connect to a remote LXD daemon over HTTPs.
@@ -150,13 +158,22 @@ func httpsLXD(url string, args *ConnectionArgs) (ContainerServer, error) {
httpProtocol: "https",
httpUserAgent: args.UserAgent,
}
+ if args.AuthType == "macaroons" {
+ server.RequireAuthenticated(true)
+ }
// Setup the HTTP client
httpClient, err := tlsHTTPClient(args.HTTPClient, args.TLSClientCert, args.TLSClientKey, args.TLSCA, args.TLSServerCert, args.Proxy)
if err != nil {
return nil, err
}
+ if args.CookieJar != nil {
+ httpClient.Jar = args.CookieJar
+ }
server.http = httpClient
+ if args.AuthType == "macaroons" {
+ server.setupBakeryClient()
+ }
// Test the connection and seed the server information
_, _, err = server.GetServer()
diff --git a/client/interfaces.go b/client/interfaces.go
index ed9b001a3..9efcb02b7 100644
--- a/client/interfaces.go
+++ b/client/interfaces.go
@@ -45,6 +45,7 @@ type ContainerServer interface {
GetServer() (server *api.Server, ETag string, err error)
UpdateServer(server api.ServerPut, ETag string) (err error)
HasExtension(extension string) bool
+ RequireAuthenticated(authenticated bool)
// Certificate functions
GetCertificateFingerprints() (fingerprints []string, err error)
diff --git a/client/lxd.go b/client/lxd.go
index 3473e317c..39670571e 100644
--- a/client/lxd.go
+++ b/client/lxd.go
@@ -5,11 +5,17 @@ import (
"encoding/json"
"fmt"
"net/http"
+ neturl "net/url"
"strings"
"sync"
"github.com/gorilla/websocket"
+ schemaform "gopkg.in/juju/environschema.v1/form"
+ "gopkg.in/macaroon-bakery.v2-unstable/bakery"
+ "gopkg.in/macaroon-bakery.v2-unstable/httpbakery"
+ "gopkg.in/macaroon-bakery.v2-unstable/httpbakery/form"
+
"github.com/lxc/lxd/shared"
"github.com/lxc/lxd/shared/api"
"github.com/lxc/lxd/shared/logger"
@@ -27,6 +33,9 @@ type ProtocolLXD struct {
httpHost string
httpProtocol string
httpUserAgent string
+
+ bakeryClient *httpbakery.Client
+ requireAuthenticated bool
}
// GetConnectionInfo returns the basic connection information used to interact with the server
@@ -62,6 +71,28 @@ func (r *ProtocolLXD) GetHTTPClient() (*http.Client, error) {
return r.http, nil
}
+// Do performs a Request, using macaroon authentication if set.
+func (r *ProtocolLXD) Do(req *http.Request) (*http.Response, error) {
+ if r.bakeryClient != nil {
+ r.addMacaroonHeaders(req)
+ return r.bakeryClient.Do(req)
+ }
+ return r.http.Do(req)
+}
+
+func (r *ProtocolLXD) addMacaroonHeaders(req *http.Request) {
+ req.Header.Set(httpbakery.BakeryProtocolHeader, fmt.Sprint(bakery.LatestVersion))
+
+ for _, cookie := range r.http.Jar.Cookies(req.URL) {
+ req.AddCookie(cookie)
+ }
+}
+
+// RequireAuthenticated sets whether we expect to be authenticated with the server
+func (r *ProtocolLXD) RequireAuthenticated(authenticated bool) {
+ r.requireAuthenticated = authenticated
+}
+
// RawQuery allows directly querying the LXD API
//
// This should only be used by internal LXD tools.
@@ -130,7 +161,8 @@ func (r *ProtocolLXD) rawQuery(method string, url string, data interface{}, ETag
}
// Some data to be sent along with the request
- req, err = http.NewRequest(method, url, &buf)
+ // Use a reader since the request body needs to be seekable
+ req, err = http.NewRequest(method, url, bytes.NewReader(buf.Bytes()))
if err != nil {
return nil, "", err
}
@@ -158,8 +190,13 @@ func (r *ProtocolLXD) rawQuery(method string, url string, data interface{}, ETag
req.Header.Set("If-Match", ETag)
}
+ // Set the authentication header
+ if r.requireAuthenticated {
+ req.Header.Set("X-LXD-authenticated", "true")
+ }
+
// Send the request
- resp, err := r.http.Do(req)
+ resp, err := r.Do(req)
if err != nil {
return nil, "", err
}
@@ -252,6 +289,20 @@ func (r *ProtocolLXD) rawWebsocket(url string) (*websocket.Conn, error) {
headers.Set("User-Agent", r.httpUserAgent)
}
+ if r.requireAuthenticated {
+ headers.Set("X-LXD-authenticated", "true")
+ }
+
+ //Set macaroons headers if needed
+ if r.bakeryClient != nil {
+ u, err := neturl.Parse(r.httpHost) // use the http url, not the ws one
+ if err != nil {
+ return nil, err
+ }
+ req := &http.Request{URL: u, Header: headers}
+ r.addMacaroonHeaders(req)
+ }
+
// Establish the connection
conn, _, err := dialer.Dial(url, headers)
if err != nil {
@@ -275,3 +326,10 @@ func (r *ProtocolLXD) websocket(path string) (*websocket.Conn, error) {
return r.rawWebsocket(url)
}
+
+func (r *ProtocolLXD) setupBakeryClient() {
+ r.bakeryClient = httpbakery.NewClient()
+ r.bakeryClient.Client = r.http
+ r.bakeryClient.WebPageVisitor = httpbakery.NewMultiVisitor(
+ form.Visitor{Filler: schemaform.IOFiller{}})
+}
diff --git a/client/lxd_containers.go b/client/lxd_containers.go
index 421c60183..b0d191ef6 100644
--- a/client/lxd_containers.go
+++ b/client/lxd_containers.go
@@ -718,7 +718,7 @@ func (r *ProtocolLXD) GetContainerFile(containerName string, path string) (io.Re
}
// Send the request
- resp, err := r.http.Do(req)
+ resp, err := r.Do(req)
if err != nil {
return nil, nil, err
}
@@ -824,7 +824,7 @@ func (r *ProtocolLXD) CreateContainerFile(containerName string, path string, arg
}
// Send the request
- resp, err := r.http.Do(req)
+ resp, err := r.Do(req)
if err != nil {
return err
}
@@ -1246,7 +1246,7 @@ func (r *ProtocolLXD) GetContainerLogfile(name string, filename string) (io.Read
}
// Send the request
- resp, err := r.http.Do(req)
+ resp, err := r.Do(req)
if err != nil {
return nil, err
}
diff --git a/client/lxd_images.go b/client/lxd_images.go
index 0ba289f34..79b5f35dc 100644
--- a/client/lxd_images.go
+++ b/client/lxd_images.go
@@ -404,7 +404,7 @@ func (r *ProtocolLXD) CreateImage(image api.ImagesPost, args *ImageCreateArgs) (
}
// Send the request
- resp, err := r.http.Do(req)
+ resp, err := r.Do(req)
if err != nil {
return nil, err
}
diff --git a/client/lxd_server.go b/client/lxd_server.go
index 2e42f3944..745e17fbe 100644
--- a/client/lxd_server.go
+++ b/client/lxd_server.go
@@ -26,6 +26,11 @@ func (r *ProtocolLXD) GetServer() (*api.Server, string, error) {
}
}
+ if !server.Public && len(server.AuthMethods) == 0 {
+ // TLS is always available for LXD servers
+ server.AuthMethods = []string{"tls"}
+ }
+
// Add the value to the cache
r.server = &server
diff --git a/lxc/config/config.go b/lxc/config/config.go
index 7e5f3df1b..5fb3f6bde 100644
--- a/lxc/config/config.go
+++ b/lxc/config/config.go
@@ -3,6 +3,8 @@ package config
import (
"fmt"
"path/filepath"
+
+ "github.com/juju/persistent-cookiejar"
)
// Config holds settings to be used by a client or daemon
@@ -23,6 +25,8 @@ type Config struct {
// The UserAgent to pass for all queries
UserAgent string `yaml:"-"`
+
+ cookiejar *cookiejar.Jar
}
// ConfigPath returns a joined path of the configuration directory and passed arguments
@@ -37,3 +41,25 @@ func (c *Config) ConfigPath(paths ...string) string {
func (c *Config) ServerCertPath(remote string) string {
return c.ConfigPath("servercerts", fmt.Sprintf("%s.crt", remote))
}
+
+// SaveCookies saves cookies to file
+func (c *Config) SaveCookies() {
+ if c.cookiejar != nil {
+ c.cookiejar.Save()
+ }
+}
+
+// NewConfig returns a Config, optionally using default remotes.
+func NewConfig(configDir string, defaults bool) *Config {
+ config := &Config{ConfigDir: configDir}
+ if defaults {
+ config.Remotes = DefaultRemotes
+ config.DefaultRemote = "local"
+ }
+ if configDir != "" {
+ config.cookiejar, _ = cookiejar.New(
+ &cookiejar.Options{
+ Filename: filepath.Join(configDir, "cookies")})
+ }
+ return config
+}
diff --git a/lxc/config/default.go b/lxc/config/default.go
index b16af972c..a6fe876f9 100644
--- a/lxc/config/default.go
+++ b/lxc/config/default.go
@@ -44,9 +44,3 @@ var DefaultRemotes = map[string]Remote{
"ubuntu": UbuntuRemote,
"ubuntu-daily": UbuntuDailyRemote,
}
-
-// DefaultConfig is the default configuration
-var DefaultConfig = Config{
- Remotes: DefaultRemotes,
- DefaultRemote: "local",
-}
diff --git a/lxc/config/file.go b/lxc/config/file.go
index 716277445..86a707e79 100644
--- a/lxc/config/file.go
+++ b/lxc/config/file.go
@@ -21,24 +21,30 @@ func LoadConfig(path string) (*Config, error) {
}
// Decode the yaml document
- c := Config{}
+ c := NewConfig(filepath.Dir(path), false)
err = yaml.Unmarshal(content, &c)
if err != nil {
return nil, fmt.Errorf("Unable to decode the configuration: %v", err)
}
+ for k, r := range c.Remotes {
+ if !r.Public && r.AuthType == "" {
+ r.AuthType = "tls"
+ c.Remotes[k] = r
+ }
+ }
+
// Set default values
if c.Remotes == nil {
c.Remotes = make(map[string]Remote)
}
- c.ConfigDir = filepath.Dir(path)
// Apply the static remotes
for k, v := range StaticRemotes {
c.Remotes[k] = v
}
- return &c, nil
+ return c, nil
}
// SaveConfig writes the provided configuration to the config file.
diff --git a/lxc/config/remote.go b/lxc/config/remote.go
index aaf2095b0..b6cd38ed9 100644
--- a/lxc/config/remote.go
+++ b/lxc/config/remote.go
@@ -14,6 +14,7 @@ type Remote struct {
Addr string `yaml:"addr"`
Public bool `yaml:"public"`
Protocol string `yaml:"protocol,omitempty"`
+ AuthType string `yaml:"auth_type,omitempty"`
Static bool `yaml:"-"`
}
@@ -133,8 +134,11 @@ func (c *Config) GetImageServer(name string) (lxd.ImageServer, error) {
}
func (c *Config) getConnectionArgs(name string) (*lxd.ConnectionArgs, error) {
+ remote, _ := c.Remotes[name]
args := lxd.ConnectionArgs{
UserAgent: c.UserAgent,
+ CookieJar: c.cookiejar,
+ AuthType: remote.AuthType,
}
// Client certificate
diff --git a/lxc/image.go b/lxc/image.go
index 8b214375b..c660f9d26 100644
--- a/lxc/image.go
+++ b/lxc/image.go
@@ -359,7 +359,7 @@ func (c *imageCmd) run(conf *config.Config, args []string) error {
return c.doImageAlias(conf, args)
case "copy":
- /* copy [<remote>:]<image> [<rmeote>:]<image> */
+ /* copy [<remote>:]<image> [<remote>:]<image> */
if len(args) != 3 {
return errArgs
}
diff --git a/lxc/main.go b/lxc/main.go
index 7d4dfeef8..e3750981d 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -90,17 +90,19 @@ func run() error {
var err error
if *forceLocal {
- conf = &config.DefaultConfig
+ conf = config.NewConfig("", true)
} else if shared.PathExists(configPath) {
conf, err = config.LoadConfig(configPath)
if err != nil {
return err
}
} else {
- conf = &config.DefaultConfig
- conf.ConfigDir = filepath.Dir(configPath)
+ conf = config.NewConfig(filepath.Dir(configPath), true)
}
+ // Save cookies on exit
+ defer conf.SaveCookies()
+
// Set the user agent
conf.UserAgent = version.UserAgent
diff --git a/lxc/remote.go b/lxc/remote.go
index a8e3c0888..6fbc779a1 100644
--- a/lxc/remote.go
+++ b/lxc/remote.go
@@ -29,6 +29,7 @@ type remoteCmd struct {
password string
public bool
protocol string
+ authType string
}
func (c *remoteCmd) showByDefault() bool {
@@ -41,7 +42,7 @@ func (c *remoteCmd) usage() string {
Manage the list of remote LXD servers.
-lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--password=PASSWORD] [--public] [--protocol=PROTOCOL]
+lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]
Add the remote <remote> at <url>.
lxc remote remove <remote>
@@ -67,6 +68,7 @@ func (c *remoteCmd) flags() {
gnuflag.BoolVar(&c.acceptCert, "accept-certificate", false, i18n.G("Accept certificate"))
gnuflag.StringVar(&c.password, "password", "", i18n.G("Remote admin password"))
gnuflag.StringVar(&c.protocol, "protocol", "", i18n.G("Server protocol (lxd or simplestreams)"))
+ gnuflag.StringVar(&c.authType, "auth-type", "", i18n.G("Server authentication type (tls or macaroons)"))
gnuflag.BoolVar(&c.public, "public", false, i18n.G("Public image server"))
}
@@ -122,11 +124,18 @@ func (c *remoteCmd) getRemoteCertificate(address string) (*x509.Certificate, err
return resp.TLS.PeerCertificates[0], nil
}
-func (c *remoteCmd) addServer(conf *config.Config, server string, addr string, acceptCert bool, password string, public bool, protocol string) error {
+func (c *remoteCmd) addServer(conf *config.Config, server string, addr string, acceptCert bool, password string, public bool, protocol string, authType string) error {
var rScheme string
var rHost string
var rPort string
+ if protocol == "" {
+ protocol = "lxd"
+ }
+ if authType == "" {
+ authType = "tls"
+ }
+
// Setup the remotes list
if conf.Remotes == nil {
conf.Remotes = make(map[string]config.Remote)
@@ -146,6 +155,8 @@ func (c *remoteCmd) addServer(conf *config.Config, server string, addr string, a
conf.Remotes[server] = config.Remote{Addr: addr, Public: true, Protocol: protocol}
return nil
+ } else if protocol != "lxd" {
+ return fmt.Errorf(i18n.G("Invalid protocol: %s"), protocol)
}
// Fix broken URL parser
@@ -202,13 +213,13 @@ func (c *remoteCmd) addServer(conf *config.Config, server string, addr string, a
// Finally, actually add the remote, almost... If the remote is a private
// HTTPS server then we need to ensure we have a client certificate before
// adding the remote server.
- if rScheme != "unix" && !public {
+ if rScheme != "unix" && authType == "tls" {
err = c.generateClientCertificate(conf)
if err != nil {
return err
}
}
- conf.Remotes[server] = config.Remote{Addr: addr, Protocol: protocol}
+ conf.Remotes[server] = config.Remote{Addr: addr, Protocol: protocol, AuthType: authType}
// Attempt to connect
d, err := conf.GetContainerServer(server)
@@ -267,11 +278,30 @@ func (c *remoteCmd) addServer(conf *config.Config, server string, addr string, a
}
}
- // Get server information
+ // Get server information with an unauthenticated requrest
+ if authType == "macaroons" {
+ d.RequireAuthenticated(false)
+ }
srv, _, err := d.GetServer()
if err != nil {
return err
}
+ if authType == "macaroons" {
+ d.RequireAuthenticated(true)
+ }
+
+ if !srv.Public {
+ validAuth := false
+ for _, method := range srv.AuthMethods {
+ if authType == method {
+ validAuth = true
+ break
+ }
+ }
+ if !validAuth {
+ return fmt.Errorf(i18n.G("Authentication type '%s' not supported by server"), authType)
+ }
+ }
// Detect a public remote
if srv.Public || public {
@@ -284,31 +314,35 @@ func (c *remoteCmd) addServer(conf *config.Config, server string, addr string, a
return nil
}
- // Prompt for trust password
- if password == "" {
- fmt.Printf(i18n.G("Admin password for %s: "), server)
- pwd, err := terminal.ReadPassword(0)
- if err != nil {
- /* We got an error, maybe this isn't a terminal, let's try to
- * read it as a file */
- pwd, err = shared.ReadStdin()
+ if authType == "tls" {
+ // Prompt for trust password
+ if password == "" {
+ fmt.Printf(i18n.G("Admin password for %s: "), server)
+ pwd, err := terminal.ReadPassword(0)
if err != nil {
- return err
+ /* We got an error, maybe this isn't a terminal, let's try to
+ * read it as a file */
+ pwd, err = shared.ReadStdin()
+ if err != nil {
+ return err
+ }
}
+ fmt.Println("")
+ password = string(pwd)
}
- fmt.Println("")
- password = string(pwd)
- }
- // Add client certificate to trust store
- req := api.CertificatesPost{
- Password: password,
- }
- req.Type = "client"
+ // Add client certificate to trust store
+ req := api.CertificatesPost{
+ Password: password,
+ }
+ req.Type = "client"
- err = d.CreateCertificate(req)
- if err != nil {
- return err
+ err = d.CreateCertificate(req)
+ if err != nil {
+ return err
+ }
+ } else {
+ d.RequireAuthenticated(true)
}
// And check if trusted now
@@ -355,7 +389,7 @@ func (c *remoteCmd) run(conf *config.Config, args []string) error {
return fmt.Errorf(i18n.G("remote %s exists as <%s>"), remote, rc.Addr)
}
- err := c.addServer(conf, remote, fqdn, c.acceptCert, c.password, c.public, c.protocol)
+ err := c.addServer(conf, remote, fqdn, c.acceptCert, c.password, c.public, c.protocol, c.authType)
if err != nil {
delete(conf.Remotes, remote)
c.removeCertificate(conf, remote)
@@ -400,12 +434,15 @@ func (c *remoteCmd) run(conf *config.Config, args []string) error {
if rc.Protocol == "" {
rc.Protocol = "lxd"
}
+ if rc.AuthType == "" && !rc.Public {
+ rc.AuthType = "tls"
+ }
strName := name
if name == conf.DefaultRemote {
strName = fmt.Sprintf("%s (%s)", name, i18n.G("default"))
}
- data = append(data, []string{strName, rc.Addr, rc.Protocol, strPublic, strStatic})
+ data = append(data, []string{strName, rc.Addr, rc.Protocol, rc.AuthType, strPublic, strStatic})
}
table := tablewriter.NewWriter(os.Stdout)
@@ -416,6 +453,7 @@ func (c *remoteCmd) run(conf *config.Config, args []string) error {
i18n.G("NAME"),
i18n.G("URL"),
i18n.G("PROTOCOL"),
+ i18n.G("AUTH TYPE"),
i18n.G("PUBLIC"),
i18n.G("STATIC")})
sort.Sort(byName(data))
diff --git a/lxd/daemon.go b/lxd/daemon.go
index 985af4221..52166fc8a 100644
--- a/lxd/daemon.go
+++ b/lxd/daemon.go
@@ -1460,7 +1460,7 @@ func (d *Daemon) setupExternalAuthentication(authEndpoint string) error {
IdentityClient: idmClient,
Authorizer: bakery.ACLAuthorizer{
GetACL: func(ctx context.Context, op bakery.Op) ([]string, error) {
- return []string{"everyone"}, nil
+ return []string{bakery.Everyone}, nil
},
},
})
diff --git a/po/de.po b/po/de.po
index c9bc552dc..b32e78777 100644
--- a/po/de.po
+++ b/po/de.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: LXD\n"
"Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-"POT-Creation-Date: 2017-07-27 18:42-0400\n"
+"POT-Creation-Date: 2017-07-28 18:33+0200\n"
"PO-Revision-Date: 2017-02-14 17:11+0000\n"
"Last-Translator: Tim Rose <tim at netlope.de>\n"
"Language-Team: German <https://hosted.weblate.org/projects/linux-containers/"
@@ -295,11 +295,15 @@ msgstr ""
msgid "ARCHITECTURE"
msgstr ""
-#: lxc/remote.go:67
+#: lxc/remote.go:456
+msgid "AUTH TYPE"
+msgstr ""
+
+#: lxc/remote.go:68
msgid "Accept certificate"
msgstr "Akzeptiere Zertifikat"
-#: lxc/remote.go:289
+#: lxc/remote.go:320
#, c-format
msgid "Admin password for %s: "
msgstr "Administrator Passwort für %s: "
@@ -314,6 +318,11 @@ msgstr "Aliasse:\n"
msgid "Architecture: %s"
msgstr "Architektur: %s\n"
+#: lxc/remote.go:302
+#, c-format
+msgid "Authentication type '%s' not supported by server"
+msgstr ""
+
#: lxc/image.go:601
#, c-format
msgid "Auto update: %s"
@@ -372,12 +381,12 @@ msgstr ""
msgid "Cannot provide container name to list"
msgstr ""
-#: lxc/remote.go:236
+#: lxc/remote.go:247
#, fuzzy, c-format
msgid "Certificate fingerprint: %s"
msgstr "Fingerabdruck des Zertifikats: % x\n"
-#: lxc/remote.go:324
+#: lxc/remote.go:359
msgid "Client certificate stored at server: "
msgstr "Gespeichertes Nutzerzertifikat auf dem Server: "
@@ -436,12 +445,12 @@ msgstr "Herunterfahren des Containers erzwingen."
msgid "Copying the image: %s"
msgstr ""
-#: lxc/remote.go:78
+#: lxc/remote.go:80
#, fuzzy
msgid "Could not create config dir"
msgstr "Kann Verzeichnis für Zertifikate auf dem Server nicht erstellen"
-#: lxc/remote.go:251
+#: lxc/remote.go:262
msgid "Could not create server cert dir"
msgstr "Kann Verzeichnis für Zertifikate auf dem Server nicht erstellen"
@@ -630,7 +639,7 @@ msgstr ""
msgid "Format (csv|json|table|yaml)"
msgstr ""
-#: lxc/remote.go:89
+#: lxc/remote.go:91
#, fuzzy
msgid "Generating a client certificate. This may take a minute..."
msgstr "Generiere Nutzerzertifikat. Dies kann wenige Minuten dauern...\n"
@@ -647,7 +656,7 @@ msgstr ""
msgid "ISSUE DATE"
msgstr ""
-#: lxc/main.go:163
+#: lxc/main.go:165
msgid "If this is your first time using LXD, you should also run: lxd init"
msgstr ""
@@ -685,7 +694,7 @@ msgstr ""
msgid "Instance type"
msgstr ""
-#: lxc/remote.go:159
+#: lxc/remote.go:170
#, c-format
msgid "Invalid URL scheme \"%s\" in \"%s\""
msgstr ""
@@ -704,6 +713,11 @@ msgstr ""
msgid "Invalid path %s"
msgstr "Ungültiges Ziel %s"
+#: lxc/remote.go:159
+#, fuzzy, c-format
+msgid "Invalid protocol: %s"
+msgstr "Ungültiges Ziel %s"
+
#: lxc/file.go:457
#, c-format
msgid "Invalid source %s"
@@ -795,12 +809,12 @@ msgstr ""
msgid "Must supply container name for: "
msgstr "der Name des Ursprung Containers muss angegeben werden"
-#: lxc/list.go:465 lxc/network.go:504 lxc/profile.go:555 lxc/remote.go:414
+#: lxc/list.go:465 lxc/network.go:504 lxc/profile.go:555 lxc/remote.go:453
#: lxc/storage.go:653 lxc/storage.go:748
msgid "NAME"
msgstr ""
-#: lxc/network.go:490 lxc/remote.go:388 lxc/remote.go:393
+#: lxc/network.go:490 lxc/remote.go:424 lxc/remote.go:429
msgid "NO"
msgstr ""
@@ -855,7 +869,7 @@ msgstr "Kein Fingerabdruck angegeben."
msgid "Only \"custom\" volumes can be attached to containers."
msgstr ""
-#: lxc/remote.go:144
+#: lxc/remote.go:153
msgid "Only https URLs are supported for simplestreams"
msgstr ""
@@ -867,7 +881,7 @@ msgstr ""
msgid "Only managed networks can be modified."
msgstr ""
-#: lxc/help.go:71 lxc/main.go:130 lxc/main.go:187
+#: lxc/help.go:71 lxc/main.go:132 lxc/main.go:189
msgid "Options:"
msgstr ""
@@ -887,11 +901,11 @@ msgstr ""
msgid "PROFILES"
msgstr ""
-#: lxc/remote.go:416
+#: lxc/remote.go:455
msgid "PROTOCOL"
msgstr ""
-#: lxc/image.go:230 lxc/remote.go:417
+#: lxc/image.go:230 lxc/remote.go:457
msgid "PUBLIC"
msgstr ""
@@ -913,7 +927,7 @@ msgstr "Alternatives config Verzeichnis."
msgid "Path to an alternate server directory"
msgstr "Alternatives config Verzeichnis."
-#: lxc/main.go:226
+#: lxc/main.go:228
#, fuzzy
msgid "Pause containers."
msgstr "kann nicht zum selben Container Namen kopieren"
@@ -993,7 +1007,7 @@ msgstr "Profil %s erstellt\n"
msgid "Properties:"
msgstr "Eigenschaften:\n"
-#: lxc/remote.go:70
+#: lxc/remote.go:72
msgid "Public image server"
msgstr ""
@@ -1011,7 +1025,7 @@ msgstr ""
msgid "Refreshing the image: %s"
msgstr ""
-#: lxc/remote.go:68
+#: lxc/remote.go:69
msgid "Remote admin password"
msgstr "Entferntes Administrator Passwort"
@@ -1038,7 +1052,7 @@ msgstr ""
msgid "Resources:"
msgstr ""
-#: lxc/main.go:234
+#: lxc/main.go:236
#, fuzzy
msgid "Restart containers."
msgstr "kann nicht zum selben Container Namen kopieren"
@@ -1064,7 +1078,7 @@ msgstr ""
msgid "STATE"
msgstr ""
-#: lxc/remote.go:418
+#: lxc/remote.go:458
msgid "STATIC"
msgstr ""
@@ -1072,16 +1086,21 @@ msgstr ""
msgid "STORAGE POOL"
msgstr ""
-#: lxc/remote.go:244
+#: lxc/remote.go:71
+msgid "Server authentication type (tls or macaroons)"
+msgstr ""
+
+#: lxc/remote.go:255
msgid "Server certificate NACKed by user"
msgstr "Server Zertifikat vom Benutzer nicht akzeptiert"
-#: lxc/remote.go:321
-msgid "Server doesn't trust us after adding our cert"
+#: lxc/remote.go:355
+#, fuzzy
+msgid "Server doesn't trust us after authentication"
msgstr ""
"Der Server vertraut uns nicht nachdem er unser Zertifikat hinzugefügt hat"
-#: lxc/remote.go:69
+#: lxc/remote.go:70
msgid "Server protocol (lxd or simplestreams)"
msgstr ""
@@ -1131,7 +1150,7 @@ msgstr "Anhalten des Containers fehlgeschlagen!"
msgid "Source:"
msgstr ""
-#: lxc/main.go:244
+#: lxc/main.go:246
#, fuzzy
msgid "Start containers."
msgstr "kann nicht zum selben Container Namen kopieren"
@@ -1146,7 +1165,7 @@ msgstr ""
msgid "Status: %s"
msgstr ""
-#: lxc/main.go:250
+#: lxc/main.go:252
#, fuzzy
msgid "Stop containers."
msgstr "Anhalten des Containers fehlgeschlagen!"
@@ -1280,7 +1299,7 @@ msgstr ""
msgid "To create a new network, use: lxc network create"
msgstr ""
-#: lxc/main.go:164
+#: lxc/main.go:166
msgid "To start your first container, try: lxc launch ubuntu:16.04"
msgstr ""
@@ -1315,7 +1334,7 @@ msgstr ""
msgid "UPLOAD DATE"
msgstr ""
-#: lxc/remote.go:415
+#: lxc/remote.go:454
msgid "URL"
msgstr ""
@@ -1327,7 +1346,7 @@ msgstr ""
msgid "Unable to find help2man."
msgstr ""
-#: lxc/remote.go:119
+#: lxc/remote.go:121
msgid "Unable to read remote TLS certificate"
msgstr ""
@@ -2095,7 +2114,7 @@ msgid ""
"Publish containers as images."
msgstr ""
-#: lxc/remote.go:39
+#: lxc/remote.go:40
#, fuzzy
msgid ""
"Usage: lxc remote <subcommand> [options]\n"
@@ -2103,7 +2122,7 @@ msgid ""
"Manage the list of remote LXD servers.\n"
"\n"
"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL]\n"
+"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
" Add the remote <remote> at <url>.\n"
"\n"
"lxc remote remove <remote>\n"
@@ -2297,7 +2316,7 @@ msgstr ""
msgid "Whether or not to snapshot the container's running state"
msgstr "Zustand des laufenden Containers sichern oder nicht"
-#: lxc/network.go:492 lxc/remote.go:390 lxc/remote.go:395
+#: lxc/network.go:492 lxc/remote.go:426 lxc/remote.go:431
msgid "YES"
msgstr ""
@@ -2319,7 +2338,7 @@ msgstr "der Name des Ursprung Containers muss angegeben werden"
msgid "`lxc config profile` is deprecated, please use `lxc profile`"
msgstr ""
-#: lxc/remote.go:378
+#: lxc/remote.go:414
msgid "can't remove the default remote"
msgstr ""
@@ -2327,7 +2346,7 @@ msgstr ""
msgid "can't supply uid/gid/mode in recursive mode"
msgstr ""
-#: lxc/remote.go:404
+#: lxc/remote.go:443
msgid "default"
msgstr ""
@@ -2343,12 +2362,12 @@ msgstr ""
msgid "enabled"
msgstr ""
-#: lxc/action.go:134 lxc/main.go:29 lxc/main.go:183
+#: lxc/action.go:134 lxc/main.go:29 lxc/main.go:185
#, fuzzy, c-format
msgid "error: %v"
msgstr "Fehler: %v\n"
-#: lxc/help.go:37 lxc/main.go:124
+#: lxc/help.go:37 lxc/main.go:126
#, fuzzy, c-format
msgid "error: unknown command: %s"
msgstr "Fehler: unbekannter Befehl: %s\n"
@@ -2357,12 +2376,12 @@ msgstr "Fehler: unbekannter Befehl: %s\n"
msgid "no"
msgstr ""
-#: lxc/remote.go:237
+#: lxc/remote.go:248
#, fuzzy
msgid "ok (y/n)?"
msgstr "OK (y/n)? "
-#: lxc/main.go:355 lxc/main.go:359
+#: lxc/main.go:357 lxc/main.go:361
#, c-format
msgid "processing aliases failed %s\n"
msgstr ""
@@ -2371,22 +2390,22 @@ msgstr ""
msgid "recursive edit doesn't make sense :("
msgstr ""
-#: lxc/remote.go:440
+#: lxc/remote.go:480
#, c-format
msgid "remote %s already exists"
msgstr "entfernte Instanz %s existiert bereits"
-#: lxc/remote.go:370 lxc/remote.go:432 lxc/remote.go:467 lxc/remote.go:483
+#: lxc/remote.go:406 lxc/remote.go:472 lxc/remote.go:507 lxc/remote.go:523
#, c-format
msgid "remote %s doesn't exist"
msgstr "entfernte Instanz %s existiert nicht"
-#: lxc/remote.go:353
+#: lxc/remote.go:389
#, c-format
msgid "remote %s exists as <%s>"
msgstr "entfernte Instanz %s existiert als <%s>"
-#: lxc/remote.go:374 lxc/remote.go:436 lxc/remote.go:471
+#: lxc/remote.go:410 lxc/remote.go:476 lxc/remote.go:511
#, c-format
msgid "remote %s is static and cannot be modified"
msgstr ""
@@ -2404,7 +2423,7 @@ msgstr ""
msgid "taken at %s"
msgstr ""
-#: lxc/main.go:286
+#: lxc/main.go:288
msgid "wrong number of subcommand arguments"
msgstr "falsche Anzahl an Parametern für Unterbefehl"
diff --git a/po/el.po b/po/el.po
index eb1113eb4..0885ef347 100644
--- a/po/el.po
+++ b/po/el.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: lxd\n"
"Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-"POT-Creation-Date: 2017-07-27 18:42-0400\n"
+"POT-Creation-Date: 2017-07-28 18:33+0200\n"
"PO-Revision-Date: 2017-02-14 08:00+0000\n"
"Last-Translator: Simos Xenitellis <simos.65 at gmail.com>\n"
"Language-Team: Greek <https://hosted.weblate.org/projects/linux-containers/"
@@ -190,11 +190,15 @@ msgstr ""
msgid "ARCHITECTURE"
msgstr ""
-#: lxc/remote.go:67
+#: lxc/remote.go:456
+msgid "AUTH TYPE"
+msgstr ""
+
+#: lxc/remote.go:68
msgid "Accept certificate"
msgstr ""
-#: lxc/remote.go:289
+#: lxc/remote.go:320
#, c-format
msgid "Admin password for %s: "
msgstr ""
@@ -208,6 +212,11 @@ msgstr ""
msgid "Architecture: %s"
msgstr ""
+#: lxc/remote.go:302
+#, c-format
+msgid "Authentication type '%s' not supported by server"
+msgstr ""
+
#: lxc/image.go:601
#, c-format
msgid "Auto update: %s"
@@ -266,12 +275,12 @@ msgstr ""
msgid "Cannot provide container name to list"
msgstr ""
-#: lxc/remote.go:236
+#: lxc/remote.go:247
#, c-format
msgid "Certificate fingerprint: %s"
msgstr ""
-#: lxc/remote.go:324
+#: lxc/remote.go:359
msgid "Client certificate stored at server: "
msgstr ""
@@ -328,11 +337,11 @@ msgstr ""
msgid "Copying the image: %s"
msgstr ""
-#: lxc/remote.go:78
+#: lxc/remote.go:80
msgid "Could not create config dir"
msgstr ""
-#: lxc/remote.go:251
+#: lxc/remote.go:262
msgid "Could not create server cert dir"
msgstr ""
@@ -516,7 +525,7 @@ msgstr ""
msgid "Format (csv|json|table|yaml)"
msgstr ""
-#: lxc/remote.go:89
+#: lxc/remote.go:91
msgid "Generating a client certificate. This may take a minute..."
msgstr ""
@@ -532,7 +541,7 @@ msgstr ""
msgid "ISSUE DATE"
msgstr ""
-#: lxc/main.go:163
+#: lxc/main.go:165
msgid "If this is your first time using LXD, you should also run: lxd init"
msgstr ""
@@ -569,7 +578,7 @@ msgstr ""
msgid "Instance type"
msgstr ""
-#: lxc/remote.go:159
+#: lxc/remote.go:170
#, c-format
msgid "Invalid URL scheme \"%s\" in \"%s\""
msgstr ""
@@ -587,6 +596,11 @@ msgstr ""
msgid "Invalid path %s"
msgstr ""
+#: lxc/remote.go:159
+#, c-format
+msgid "Invalid protocol: %s"
+msgstr ""
+
#: lxc/file.go:457
#, c-format
msgid "Invalid source %s"
@@ -675,12 +689,12 @@ msgstr ""
msgid "Must supply container name for: "
msgstr ""
-#: lxc/list.go:465 lxc/network.go:504 lxc/profile.go:555 lxc/remote.go:414
+#: lxc/list.go:465 lxc/network.go:504 lxc/profile.go:555 lxc/remote.go:453
#: lxc/storage.go:653 lxc/storage.go:748
msgid "NAME"
msgstr ""
-#: lxc/network.go:490 lxc/remote.go:388 lxc/remote.go:393
+#: lxc/network.go:490 lxc/remote.go:424 lxc/remote.go:429
msgid "NO"
msgstr ""
@@ -732,7 +746,7 @@ msgstr ""
msgid "Only \"custom\" volumes can be attached to containers."
msgstr ""
-#: lxc/remote.go:144
+#: lxc/remote.go:153
msgid "Only https URLs are supported for simplestreams"
msgstr ""
@@ -744,7 +758,7 @@ msgstr ""
msgid "Only managed networks can be modified."
msgstr ""
-#: lxc/help.go:71 lxc/main.go:130 lxc/main.go:187
+#: lxc/help.go:71 lxc/main.go:132 lxc/main.go:189
msgid "Options:"
msgstr ""
@@ -764,11 +778,11 @@ msgstr ""
msgid "PROFILES"
msgstr ""
-#: lxc/remote.go:416
+#: lxc/remote.go:455
msgid "PROTOCOL"
msgstr ""
-#: lxc/image.go:230 lxc/remote.go:417
+#: lxc/image.go:230 lxc/remote.go:457
msgid "PUBLIC"
msgstr ""
@@ -788,7 +802,7 @@ msgstr ""
msgid "Path to an alternate server directory"
msgstr ""
-#: lxc/main.go:226
+#: lxc/main.go:228
msgid "Pause containers."
msgstr ""
@@ -865,7 +879,7 @@ msgstr ""
msgid "Properties:"
msgstr ""
-#: lxc/remote.go:70
+#: lxc/remote.go:72
msgid "Public image server"
msgstr ""
@@ -883,7 +897,7 @@ msgstr ""
msgid "Refreshing the image: %s"
msgstr ""
-#: lxc/remote.go:68
+#: lxc/remote.go:69
msgid "Remote admin password"
msgstr ""
@@ -909,7 +923,7 @@ msgstr ""
msgid "Resources:"
msgstr ""
-#: lxc/main.go:234
+#: lxc/main.go:236
msgid "Restart containers."
msgstr ""
@@ -934,7 +948,7 @@ msgstr ""
msgid "STATE"
msgstr ""
-#: lxc/remote.go:418
+#: lxc/remote.go:458
msgid "STATIC"
msgstr ""
@@ -942,15 +956,19 @@ msgstr ""
msgid "STORAGE POOL"
msgstr ""
-#: lxc/remote.go:244
+#: lxc/remote.go:71
+msgid "Server authentication type (tls or macaroons)"
+msgstr ""
+
+#: lxc/remote.go:255
msgid "Server certificate NACKed by user"
msgstr ""
-#: lxc/remote.go:321
-msgid "Server doesn't trust us after adding our cert"
+#: lxc/remote.go:355
+msgid "Server doesn't trust us after authentication"
msgstr ""
-#: lxc/remote.go:69
+#: lxc/remote.go:70
msgid "Server protocol (lxd or simplestreams)"
msgstr ""
@@ -1000,7 +1018,7 @@ msgstr ""
msgid "Source:"
msgstr ""
-#: lxc/main.go:244
+#: lxc/main.go:246
msgid "Start containers."
msgstr ""
@@ -1014,7 +1032,7 @@ msgstr ""
msgid "Status: %s"
msgstr ""
-#: lxc/main.go:250
+#: lxc/main.go:252
msgid "Stop containers."
msgstr ""
@@ -1139,7 +1157,7 @@ msgstr ""
msgid "To create a new network, use: lxc network create"
msgstr ""
-#: lxc/main.go:164
+#: lxc/main.go:166
msgid "To start your first container, try: lxc launch ubuntu:16.04"
msgstr ""
@@ -1174,7 +1192,7 @@ msgstr ""
msgid "UPLOAD DATE"
msgstr ""
-#: lxc/remote.go:415
+#: lxc/remote.go:454
msgid "URL"
msgstr ""
@@ -1186,7 +1204,7 @@ msgstr ""
msgid "Unable to find help2man."
msgstr ""
-#: lxc/remote.go:119
+#: lxc/remote.go:121
msgid "Unable to read remote TLS certificate"
msgstr ""
@@ -1816,14 +1834,14 @@ msgid ""
"Publish containers as images."
msgstr ""
-#: lxc/remote.go:39
+#: lxc/remote.go:40
msgid ""
"Usage: lxc remote <subcommand> [options]\n"
"\n"
"Manage the list of remote LXD servers.\n"
"\n"
"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL]\n"
+"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
" Add the remote <remote> at <url>.\n"
"\n"
"lxc remote remove <remote>\n"
@@ -1995,7 +2013,7 @@ msgstr ""
msgid "Whether or not to snapshot the container's running state"
msgstr ""
-#: lxc/network.go:492 lxc/remote.go:390 lxc/remote.go:395
+#: lxc/network.go:492 lxc/remote.go:426 lxc/remote.go:431
msgid "YES"
msgstr ""
@@ -2015,7 +2033,7 @@ msgstr ""
msgid "`lxc config profile` is deprecated, please use `lxc profile`"
msgstr ""
-#: lxc/remote.go:378
+#: lxc/remote.go:414
msgid "can't remove the default remote"
msgstr ""
@@ -2023,7 +2041,7 @@ msgstr ""
msgid "can't supply uid/gid/mode in recursive mode"
msgstr ""
-#: lxc/remote.go:404
+#: lxc/remote.go:443
msgid "default"
msgstr ""
@@ -2039,12 +2057,12 @@ msgstr ""
msgid "enabled"
msgstr ""
-#: lxc/action.go:134 lxc/main.go:29 lxc/main.go:183
+#: lxc/action.go:134 lxc/main.go:29 lxc/main.go:185
#, c-format
msgid "error: %v"
msgstr ""
-#: lxc/help.go:37 lxc/main.go:124
+#: lxc/help.go:37 lxc/main.go:126
#, c-format
msgid "error: unknown command: %s"
msgstr ""
@@ -2053,11 +2071,11 @@ msgstr ""
msgid "no"
msgstr ""
-#: lxc/remote.go:237
+#: lxc/remote.go:248
msgid "ok (y/n)?"
msgstr ""
-#: lxc/main.go:355 lxc/main.go:359
+#: lxc/main.go:357 lxc/main.go:361
#, c-format
msgid "processing aliases failed %s\n"
msgstr ""
@@ -2066,22 +2084,22 @@ msgstr ""
msgid "recursive edit doesn't make sense :("
msgstr ""
-#: lxc/remote.go:440
+#: lxc/remote.go:480
#, c-format
msgid "remote %s already exists"
msgstr ""
-#: lxc/remote.go:370 lxc/remote.go:432 lxc/remote.go:467 lxc/remote.go:483
+#: lxc/remote.go:406 lxc/remote.go:472 lxc/remote.go:507 lxc/remote.go:523
#, c-format
msgid "remote %s doesn't exist"
msgstr ""
-#: lxc/remote.go:353
+#: lxc/remote.go:389
#, c-format
msgid "remote %s exists as <%s>"
msgstr ""
-#: lxc/remote.go:374 lxc/remote.go:436 lxc/remote.go:471
+#: lxc/remote.go:410 lxc/remote.go:476 lxc/remote.go:511
#, c-format
msgid "remote %s is static and cannot be modified"
msgstr ""
@@ -2099,7 +2117,7 @@ msgstr ""
msgid "taken at %s"
msgstr ""
-#: lxc/main.go:286
+#: lxc/main.go:288
msgid "wrong number of subcommand arguments"
msgstr ""
diff --git a/po/fr.po b/po/fr.po
index 874436957..e87aac8bb 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: LXD\n"
"Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-"POT-Creation-Date: 2017-07-27 18:42-0400\n"
+"POT-Creation-Date: 2017-07-28 18:33+0200\n"
"PO-Revision-Date: 2017-06-07 15:24+0000\n"
"Last-Translator: Stéphane Graber <stgraber at stgraber.org>\n"
"Language-Team: French <https://hosted.weblate.org/projects/linux-containers/"
@@ -286,11 +286,16 @@ msgstr "ARCH"
msgid "ARCHITECTURE"
msgstr "ARCHITECTURE"
-#: lxc/remote.go:67
+#: lxc/remote.go:456
+#, fuzzy
+msgid "AUTH TYPE"
+msgstr "TYPE"
+
+#: lxc/remote.go:68
msgid "Accept certificate"
msgstr "Accepter le certificat"
-#: lxc/remote.go:289
+#: lxc/remote.go:320
#, c-format
msgid "Admin password for %s: "
msgstr "Mot de passe administrateur pour %s : "
@@ -304,6 +309,11 @@ msgstr "Alias :"
msgid "Architecture: %s"
msgstr "Architecture : %s"
+#: lxc/remote.go:302
+#, c-format
+msgid "Authentication type '%s' not supported by server"
+msgstr ""
+
#: lxc/image.go:601
#, c-format
msgid "Auto update: %s"
@@ -364,12 +374,12 @@ msgstr ""
msgid "Cannot provide container name to list"
msgstr "Impossible de fournir le nom du conteneur à lister"
-#: lxc/remote.go:236
+#: lxc/remote.go:247
#, fuzzy, c-format
msgid "Certificate fingerprint: %s"
msgstr "Empreinte du certificat : %x"
-#: lxc/remote.go:324
+#: lxc/remote.go:359
msgid "Client certificate stored at server: "
msgstr "Certificat client enregistré sur le serveur : "
@@ -427,12 +437,12 @@ msgstr "Forcer le conteneur à s'arrêter"
msgid "Copying the image: %s"
msgstr "Copie de l'image : %s"
-#: lxc/remote.go:78
+#: lxc/remote.go:80
#, fuzzy
msgid "Could not create config dir"
msgstr "Impossible de créer le dossier de stockage des certificats serveurs"
-#: lxc/remote.go:251
+#: lxc/remote.go:262
msgid "Could not create server cert dir"
msgstr "Impossible de créer le dossier de stockage des certificats serveurs"
@@ -619,7 +629,7 @@ msgstr "Forcer l'utilisation de la socket unix locale"
msgid "Format (csv|json|table|yaml)"
msgstr ""
-#: lxc/remote.go:89
+#: lxc/remote.go:91
msgid "Generating a client certificate. This may take a minute..."
msgstr "Génération d'un certificat client. Ceci peut prendre une minute…"
@@ -635,7 +645,7 @@ msgstr "IPv6"
msgid "ISSUE DATE"
msgstr "DATE D'ÉMISSION"
-#: lxc/main.go:163
+#: lxc/main.go:165
#, fuzzy
msgid "If this is your first time using LXD, you should also run: lxd init"
msgstr ""
@@ -677,7 +687,7 @@ msgstr "Image copiée avec succès !"
msgid "Instance type"
msgstr ""
-#: lxc/remote.go:159
+#: lxc/remote.go:170
#, c-format
msgid "Invalid URL scheme \"%s\" in \"%s\""
msgstr "Schème d'URL invalide \"%s\" in \"%s\""
@@ -695,6 +705,11 @@ msgstr "Clé de configuration invalide"
msgid "Invalid path %s"
msgstr "Cible invalide %s"
+#: lxc/remote.go:159
+#, fuzzy, c-format
+msgid "Invalid protocol: %s"
+msgstr "Cible invalide %s"
+
#: lxc/file.go:457
#, c-format
msgid "Invalid source %s"
@@ -785,12 +800,12 @@ msgstr ""
msgid "Must supply container name for: "
msgstr "Vous devez fournir le nom d'un conteneur pour : "
-#: lxc/list.go:465 lxc/network.go:504 lxc/profile.go:555 lxc/remote.go:414
+#: lxc/list.go:465 lxc/network.go:504 lxc/profile.go:555 lxc/remote.go:453
#: lxc/storage.go:653 lxc/storage.go:748
msgid "NAME"
msgstr "NOM"
-#: lxc/network.go:490 lxc/remote.go:388 lxc/remote.go:393
+#: lxc/network.go:490 lxc/remote.go:424 lxc/remote.go:429
msgid "NO"
msgstr "NON"
@@ -843,7 +858,7 @@ msgstr "Aucune empreinte n'a été indiquée."
msgid "Only \"custom\" volumes can be attached to containers."
msgstr "Seul les volumes \"personnalisés\" peuvent être attaché aux conteneurs"
-#: lxc/remote.go:144
+#: lxc/remote.go:153
msgid "Only https URLs are supported for simplestreams"
msgstr "Seules les URLs https sont supportées par simplestreams"
@@ -855,7 +870,7 @@ msgstr "Seul https:// est supporté par l'import d'images distantes."
msgid "Only managed networks can be modified."
msgstr "Seuls les réseaux gérés par LXD peuvent être modifiés."
-#: lxc/help.go:71 lxc/main.go:130 lxc/main.go:187
+#: lxc/help.go:71 lxc/main.go:132 lxc/main.go:189
msgid "Options:"
msgstr "Options :"
@@ -875,11 +890,11 @@ msgstr "PID"
msgid "PROFILES"
msgstr "PROFILS"
-#: lxc/remote.go:416
+#: lxc/remote.go:455
msgid "PROTOCOL"
msgstr "PROTOCOLE"
-#: lxc/image.go:230 lxc/remote.go:417
+#: lxc/image.go:230 lxc/remote.go:457
msgid "PUBLIC"
msgstr "PUBLIC"
@@ -899,7 +914,7 @@ msgstr "Chemin vers un dossier de configuration client alternatif"
msgid "Path to an alternate server directory"
msgstr "Chemin vers un dossier de configuration serveur alternatif"
-#: lxc/main.go:226
+#: lxc/main.go:228
#, fuzzy
msgid "Pause containers."
msgstr "Création du conteneur"
@@ -977,7 +992,7 @@ msgstr "Profils : %s"
msgid "Properties:"
msgstr "Propriétés :"
-#: lxc/remote.go:70
+#: lxc/remote.go:72
msgid "Public image server"
msgstr "Serveur d'images public"
@@ -995,7 +1010,7 @@ msgstr "Pousser ou récupérer des fichiers récursivement"
msgid "Refreshing the image: %s"
msgstr "Récupération de l'image : %s"
-#: lxc/remote.go:68
+#: lxc/remote.go:69
msgid "Remote admin password"
msgstr "Mot de passe de l'administrateur distant"
@@ -1022,7 +1037,7 @@ msgstr "Requérir une confirmation de l'utilisateur"
msgid "Resources:"
msgstr "Ressources :"
-#: lxc/main.go:234
+#: lxc/main.go:236
#, fuzzy
msgid "Restart containers."
msgstr "Création du conteneur"
@@ -1048,7 +1063,7 @@ msgstr "SOURCE"
msgid "STATE"
msgstr "ÉTAT"
-#: lxc/remote.go:418
+#: lxc/remote.go:458
msgid "STATIC"
msgstr "STATIQUE"
@@ -1056,16 +1071,21 @@ msgstr "STATIQUE"
msgid "STORAGE POOL"
msgstr "ENSEMBLE DE STOCKAGE"
-#: lxc/remote.go:244
+#: lxc/remote.go:71
+msgid "Server authentication type (tls or macaroons)"
+msgstr ""
+
+#: lxc/remote.go:255
msgid "Server certificate NACKed by user"
msgstr "Certificat serveur rejeté par l'utilisateur"
-#: lxc/remote.go:321
-msgid "Server doesn't trust us after adding our cert"
+#: lxc/remote.go:355
+#, fuzzy
+msgid "Server doesn't trust us after authentication"
msgstr ""
"Le serveur ne nous fait pas confiance après l'ajout de notre certificat"
-#: lxc/remote.go:69
+#: lxc/remote.go:70
msgid "Server protocol (lxd or simplestreams)"
msgstr "Protocole du serveur (lxd ou simplestreams)"
@@ -1115,7 +1135,7 @@ msgstr "L'arrêt du conteneur a échoué !"
msgid "Source:"
msgstr "Source :"
-#: lxc/main.go:244
+#: lxc/main.go:246
#, fuzzy
msgid "Start containers."
msgstr "Création du conteneur"
@@ -1130,7 +1150,7 @@ msgstr "Démarrage de %s"
msgid "Status: %s"
msgstr "État : %s"
-#: lxc/main.go:250
+#: lxc/main.go:252
#, fuzzy
msgid "Stop containers."
msgstr "L'arrêt du conteneur a échoué !"
@@ -1267,7 +1287,7 @@ msgstr "Pour attacher un réseau à un conteneur, utiliser : lxc network attach"
msgid "To create a new network, use: lxc network create"
msgstr "Pour créer un réseau, utiliser : lxc network create"
-#: lxc/main.go:164
+#: lxc/main.go:166
msgid "To start your first container, try: lxc launch ubuntu:16.04"
msgstr ""
"Pour démarrer votre premier conteneur, essayer : lxc launch ubuntu:16.04"
@@ -1303,7 +1323,7 @@ msgstr "Type : persistant"
msgid "UPLOAD DATE"
msgstr "DATE DE PUBLICATION"
-#: lxc/remote.go:415
+#: lxc/remote.go:454
msgid "URL"
msgstr "URL"
@@ -1315,7 +1335,7 @@ msgstr "UTILISÉ PAR"
msgid "Unable to find help2man."
msgstr "Impossible de trouver help2man"
-#: lxc/remote.go:119
+#: lxc/remote.go:121
msgid "Unable to read remote TLS certificate"
msgstr "Impossible de lire le certificat TLS distant"
@@ -2344,7 +2364,7 @@ msgstr ""
"lxc publish [<remote>:]<container>[/<snapshot>] [<remote>:] [--"
"alias=ALIAS...] [prop-key=prop-value...]"
-#: lxc/remote.go:39
+#: lxc/remote.go:40
#, fuzzy
msgid ""
"Usage: lxc remote <subcommand> [options]\n"
@@ -2352,7 +2372,7 @@ msgid ""
"Manage the list of remote LXD servers.\n"
"\n"
"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL]\n"
+"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
" Add the remote <remote> at <url>.\n"
"\n"
"lxc remote remove <remote>\n"
@@ -2578,7 +2598,7 @@ msgstr ""
msgid "Whether or not to snapshot the container's running state"
msgstr "Réaliser ou pas l'instantané de l'état de fonctionnement du conteneur"
-#: lxc/network.go:492 lxc/remote.go:390 lxc/remote.go:395
+#: lxc/network.go:492 lxc/remote.go:426 lxc/remote.go:431
msgid "YES"
msgstr "OUI"
@@ -2602,7 +2622,7 @@ msgstr ""
"La commande `lxc config profile` est dépréciée, merci d'utiliser `lxc "
"profile`"
-#: lxc/remote.go:378
+#: lxc/remote.go:414
msgid "can't remove the default remote"
msgstr "impossible de supprimer le serveur distant par défaut"
@@ -2610,7 +2630,7 @@ msgstr "impossible de supprimer le serveur distant par défaut"
msgid "can't supply uid/gid/mode in recursive mode"
msgstr "impossible de spécifier uid/gid/mode en mode récursif"
-#: lxc/remote.go:404
+#: lxc/remote.go:443
msgid "default"
msgstr "par défaut"
@@ -2626,12 +2646,12 @@ msgstr "désactivé"
msgid "enabled"
msgstr "activé"
-#: lxc/action.go:134 lxc/main.go:29 lxc/main.go:183
+#: lxc/action.go:134 lxc/main.go:29 lxc/main.go:185
#, c-format
msgid "error: %v"
msgstr "erreur : %v"
-#: lxc/help.go:37 lxc/main.go:124
+#: lxc/help.go:37 lxc/main.go:126
#, c-format
msgid "error: unknown command: %s"
msgstr "erreur : commande inconnue: %s"
@@ -2640,11 +2660,11 @@ msgstr "erreur : commande inconnue: %s"
msgid "no"
msgstr "non"
-#: lxc/remote.go:237
+#: lxc/remote.go:248
msgid "ok (y/n)?"
msgstr "ok (y/n) ?"
-#: lxc/main.go:355 lxc/main.go:359
+#: lxc/main.go:357 lxc/main.go:361
#, c-format
msgid "processing aliases failed %s\n"
msgstr "l'analyse des alias a échoué %s\n"
@@ -2653,22 +2673,22 @@ msgstr "l'analyse des alias a échoué %s\n"
msgid "recursive edit doesn't make sense :("
msgstr "l'édition récursive ne fait aucun sens :("
-#: lxc/remote.go:440
+#: lxc/remote.go:480
#, c-format
msgid "remote %s already exists"
msgstr "le serveur distant %s existe déjà"
-#: lxc/remote.go:370 lxc/remote.go:432 lxc/remote.go:467 lxc/remote.go:483
+#: lxc/remote.go:406 lxc/remote.go:472 lxc/remote.go:507 lxc/remote.go:523
#, c-format
msgid "remote %s doesn't exist"
msgstr "le serveur distant %s n'existe pas"
-#: lxc/remote.go:353
+#: lxc/remote.go:389
#, c-format
msgid "remote %s exists as <%s>"
msgstr "le serveur distant %s existe en tant que <%s>"
-#: lxc/remote.go:374 lxc/remote.go:436 lxc/remote.go:471
+#: lxc/remote.go:410 lxc/remote.go:476 lxc/remote.go:511
#, c-format
msgid "remote %s is static and cannot be modified"
msgstr "le serveur distant %s est statique et ne peut être modifié"
@@ -2686,7 +2706,7 @@ msgstr "sans suivi d'état"
msgid "taken at %s"
msgstr "pris à %s"
-#: lxc/main.go:286
+#: lxc/main.go:288
msgid "wrong number of subcommand arguments"
msgstr "nombre d'arguments incorrect pour la sous-comande"
diff --git a/po/it.po b/po/it.po
index a88fb88a3..46e5726b2 100644
--- a/po/it.po
+++ b/po/it.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: lxd\n"
"Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-"POT-Creation-Date: 2017-07-27 18:42-0400\n"
+"POT-Creation-Date: 2017-07-28 18:33+0200\n"
"PO-Revision-Date: 2017-07-13 19:23+0000\n"
"Last-Translator: Alberto Donato <alberto.donato at gmail.com>\n"
"Language-Team: Italian <https://hosted.weblate.org/projects/linux-containers/"
@@ -211,11 +211,15 @@ msgstr "ARCH"
msgid "ARCHITECTURE"
msgstr "ARCHITETTURA"
-#: lxc/remote.go:67
+#: lxc/remote.go:456
+msgid "AUTH TYPE"
+msgstr ""
+
+#: lxc/remote.go:68
msgid "Accept certificate"
msgstr "Accetta certificato"
-#: lxc/remote.go:289
+#: lxc/remote.go:320
#, c-format
msgid "Admin password for %s: "
msgstr "Password amministratore per %s: "
@@ -229,6 +233,11 @@ msgstr "Alias:"
msgid "Architecture: %s"
msgstr "Architettura: %s"
+#: lxc/remote.go:302
+#, c-format
+msgid "Authentication type '%s' not supported by server"
+msgstr ""
+
#: lxc/image.go:601
#, c-format
msgid "Auto update: %s"
@@ -286,12 +295,12 @@ msgstr ""
msgid "Cannot provide container name to list"
msgstr ""
-#: lxc/remote.go:236
+#: lxc/remote.go:247
#, c-format
msgid "Certificate fingerprint: %s"
msgstr ""
-#: lxc/remote.go:324
+#: lxc/remote.go:359
msgid "Client certificate stored at server: "
msgstr "Certificato del client salvato dal server: "
@@ -348,11 +357,11 @@ msgstr ""
msgid "Copying the image: %s"
msgstr ""
-#: lxc/remote.go:78
+#: lxc/remote.go:80
msgid "Could not create config dir"
msgstr ""
-#: lxc/remote.go:251
+#: lxc/remote.go:262
msgid "Could not create server cert dir"
msgstr ""
@@ -535,7 +544,7 @@ msgstr ""
msgid "Format (csv|json|table|yaml)"
msgstr ""
-#: lxc/remote.go:89
+#: lxc/remote.go:91
msgid "Generating a client certificate. This may take a minute..."
msgstr ""
@@ -551,7 +560,7 @@ msgstr ""
msgid "ISSUE DATE"
msgstr ""
-#: lxc/main.go:163
+#: lxc/main.go:165
msgid "If this is your first time using LXD, you should also run: lxd init"
msgstr ""
@@ -588,7 +597,7 @@ msgstr ""
msgid "Instance type"
msgstr ""
-#: lxc/remote.go:159
+#: lxc/remote.go:170
#, c-format
msgid "Invalid URL scheme \"%s\" in \"%s\""
msgstr ""
@@ -606,6 +615,11 @@ msgstr ""
msgid "Invalid path %s"
msgstr ""
+#: lxc/remote.go:159
+#, fuzzy, c-format
+msgid "Invalid protocol: %s"
+msgstr "Proprietà errata: %s"
+
#: lxc/file.go:457
#, c-format
msgid "Invalid source %s"
@@ -693,12 +707,12 @@ msgstr ""
msgid "Must supply container name for: "
msgstr ""
-#: lxc/list.go:465 lxc/network.go:504 lxc/profile.go:555 lxc/remote.go:414
+#: lxc/list.go:465 lxc/network.go:504 lxc/profile.go:555 lxc/remote.go:453
#: lxc/storage.go:653 lxc/storage.go:748
msgid "NAME"
msgstr ""
-#: lxc/network.go:490 lxc/remote.go:388 lxc/remote.go:393
+#: lxc/network.go:490 lxc/remote.go:424 lxc/remote.go:429
msgid "NO"
msgstr ""
@@ -749,7 +763,7 @@ msgstr ""
msgid "Only \"custom\" volumes can be attached to containers."
msgstr ""
-#: lxc/remote.go:144
+#: lxc/remote.go:153
msgid "Only https URLs are supported for simplestreams"
msgstr ""
@@ -761,7 +775,7 @@ msgstr ""
msgid "Only managed networks can be modified."
msgstr ""
-#: lxc/help.go:71 lxc/main.go:130 lxc/main.go:187
+#: lxc/help.go:71 lxc/main.go:132 lxc/main.go:189
msgid "Options:"
msgstr ""
@@ -781,11 +795,11 @@ msgstr ""
msgid "PROFILES"
msgstr ""
-#: lxc/remote.go:416
+#: lxc/remote.go:455
msgid "PROTOCOL"
msgstr ""
-#: lxc/image.go:230 lxc/remote.go:417
+#: lxc/image.go:230 lxc/remote.go:457
msgid "PUBLIC"
msgstr ""
@@ -805,7 +819,7 @@ msgstr ""
msgid "Path to an alternate server directory"
msgstr ""
-#: lxc/main.go:226
+#: lxc/main.go:228
msgid "Pause containers."
msgstr ""
@@ -882,7 +896,7 @@ msgstr ""
msgid "Properties:"
msgstr ""
-#: lxc/remote.go:70
+#: lxc/remote.go:72
msgid "Public image server"
msgstr ""
@@ -900,7 +914,7 @@ msgstr ""
msgid "Refreshing the image: %s"
msgstr ""
-#: lxc/remote.go:68
+#: lxc/remote.go:69
msgid "Remote admin password"
msgstr ""
@@ -926,7 +940,7 @@ msgstr ""
msgid "Resources:"
msgstr ""
-#: lxc/main.go:234
+#: lxc/main.go:236
msgid "Restart containers."
msgstr ""
@@ -951,7 +965,7 @@ msgstr ""
msgid "STATE"
msgstr ""
-#: lxc/remote.go:418
+#: lxc/remote.go:458
msgid "STATIC"
msgstr ""
@@ -959,15 +973,19 @@ msgstr ""
msgid "STORAGE POOL"
msgstr ""
-#: lxc/remote.go:244
+#: lxc/remote.go:71
+msgid "Server authentication type (tls or macaroons)"
+msgstr ""
+
+#: lxc/remote.go:255
msgid "Server certificate NACKed by user"
msgstr ""
-#: lxc/remote.go:321
-msgid "Server doesn't trust us after adding our cert"
+#: lxc/remote.go:355
+msgid "Server doesn't trust us after authentication"
msgstr ""
-#: lxc/remote.go:69
+#: lxc/remote.go:70
msgid "Server protocol (lxd or simplestreams)"
msgstr ""
@@ -1017,7 +1035,7 @@ msgstr ""
msgid "Source:"
msgstr ""
-#: lxc/main.go:244
+#: lxc/main.go:246
msgid "Start containers."
msgstr ""
@@ -1031,7 +1049,7 @@ msgstr ""
msgid "Status: %s"
msgstr ""
-#: lxc/main.go:250
+#: lxc/main.go:252
msgid "Stop containers."
msgstr ""
@@ -1156,7 +1174,7 @@ msgstr ""
msgid "To create a new network, use: lxc network create"
msgstr ""
-#: lxc/main.go:164
+#: lxc/main.go:166
msgid "To start your first container, try: lxc launch ubuntu:16.04"
msgstr ""
@@ -1191,7 +1209,7 @@ msgstr ""
msgid "UPLOAD DATE"
msgstr ""
-#: lxc/remote.go:415
+#: lxc/remote.go:454
msgid "URL"
msgstr ""
@@ -1203,7 +1221,7 @@ msgstr ""
msgid "Unable to find help2man."
msgstr ""
-#: lxc/remote.go:119
+#: lxc/remote.go:121
msgid "Unable to read remote TLS certificate"
msgstr ""
@@ -1833,14 +1851,14 @@ msgid ""
"Publish containers as images."
msgstr ""
-#: lxc/remote.go:39
+#: lxc/remote.go:40
msgid ""
"Usage: lxc remote <subcommand> [options]\n"
"\n"
"Manage the list of remote LXD servers.\n"
"\n"
"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL]\n"
+"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
" Add the remote <remote> at <url>.\n"
"\n"
"lxc remote remove <remote>\n"
@@ -2012,7 +2030,7 @@ msgstr ""
msgid "Whether or not to snapshot the container's running state"
msgstr ""
-#: lxc/network.go:492 lxc/remote.go:390 lxc/remote.go:395
+#: lxc/network.go:492 lxc/remote.go:426 lxc/remote.go:431
msgid "YES"
msgstr ""
@@ -2032,7 +2050,7 @@ msgstr "Occorre specificare un nome di container come origine"
msgid "`lxc config profile` is deprecated, please use `lxc profile`"
msgstr ""
-#: lxc/remote.go:378
+#: lxc/remote.go:414
msgid "can't remove the default remote"
msgstr ""
@@ -2040,7 +2058,7 @@ msgstr ""
msgid "can't supply uid/gid/mode in recursive mode"
msgstr ""
-#: lxc/remote.go:404
+#: lxc/remote.go:443
msgid "default"
msgstr ""
@@ -2056,12 +2074,12 @@ msgstr ""
msgid "enabled"
msgstr ""
-#: lxc/action.go:134 lxc/main.go:29 lxc/main.go:183
+#: lxc/action.go:134 lxc/main.go:29 lxc/main.go:185
#, c-format
msgid "error: %v"
msgstr ""
-#: lxc/help.go:37 lxc/main.go:124
+#: lxc/help.go:37 lxc/main.go:126
#, c-format
msgid "error: unknown command: %s"
msgstr ""
@@ -2070,11 +2088,11 @@ msgstr ""
msgid "no"
msgstr "no"
-#: lxc/remote.go:237
+#: lxc/remote.go:248
msgid "ok (y/n)?"
msgstr "ok (y/n)?"
-#: lxc/main.go:355 lxc/main.go:359
+#: lxc/main.go:357 lxc/main.go:361
#, c-format
msgid "processing aliases failed %s\n"
msgstr "errore di processamento degli alias %s\n"
@@ -2083,22 +2101,22 @@ msgstr "errore di processamento degli alias %s\n"
msgid "recursive edit doesn't make sense :("
msgstr ""
-#: lxc/remote.go:440
+#: lxc/remote.go:480
#, c-format
msgid "remote %s already exists"
msgstr "il remote %s esiste già"
-#: lxc/remote.go:370 lxc/remote.go:432 lxc/remote.go:467 lxc/remote.go:483
+#: lxc/remote.go:406 lxc/remote.go:472 lxc/remote.go:507 lxc/remote.go:523
#, c-format
msgid "remote %s doesn't exist"
msgstr "il remote %s non esiste"
-#: lxc/remote.go:353
+#: lxc/remote.go:389
#, c-format
msgid "remote %s exists as <%s>"
msgstr "il remote %s esiste come %s"
-#: lxc/remote.go:374 lxc/remote.go:436 lxc/remote.go:471
+#: lxc/remote.go:410 lxc/remote.go:476 lxc/remote.go:511
#, c-format
msgid "remote %s is static and cannot be modified"
msgstr "il remote %s è statico e non può essere modificato"
@@ -2116,7 +2134,7 @@ msgstr "senza stato"
msgid "taken at %s"
msgstr "salvato alle %s"
-#: lxc/main.go:286
+#: lxc/main.go:288
msgid "wrong number of subcommand arguments"
msgstr "numero errato di argomenti del sottocomando"
diff --git a/po/ja.po b/po/ja.po
index 2905ac208..4b9067051 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: LXD\n"
"Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-"POT-Creation-Date: 2017-07-27 18:42-0400\n"
+"POT-Creation-Date: 2017-07-28 18:33+0200\n"
"PO-Revision-Date: 2017-07-20 00:30+0000\n"
"Last-Translator: KATOH Yasufumi <karma at jazz.email.ne.jp>\n"
"Language-Team: Japanese <https://hosted.weblate.org/projects/linux-"
@@ -191,11 +191,15 @@ msgstr ""
msgid "ARCHITECTURE"
msgstr ""
-#: lxc/remote.go:67
+#: lxc/remote.go:456
+msgid "AUTH TYPE"
+msgstr ""
+
+#: lxc/remote.go:68
msgid "Accept certificate"
msgstr "証明書を受け入れます"
-#: lxc/remote.go:289
+#: lxc/remote.go:320
#, c-format
msgid "Admin password for %s: "
msgstr "%s の管理者パスワード: "
@@ -209,6 +213,11 @@ msgstr "エイリアス:"
msgid "Architecture: %s"
msgstr "アーキテクチャ: %s"
+#: lxc/remote.go:302
+#, c-format
+msgid "Authentication type '%s' not supported by server"
+msgstr ""
+
#: lxc/image.go:601
#, c-format
msgid "Auto update: %s"
@@ -268,12 +277,12 @@ msgstr "キー '%s' が指定されていないので削除できません。"
msgid "Cannot provide container name to list"
msgstr "コンテナ名を取得できません"
-#: lxc/remote.go:236
+#: lxc/remote.go:247
#, c-format
msgid "Certificate fingerprint: %s"
msgstr "証明書のフィンガープリント: %s"
-#: lxc/remote.go:324
+#: lxc/remote.go:359
msgid "Client certificate stored at server: "
msgstr "クライアント証明書がサーバに格納されました: "
@@ -330,12 +339,12 @@ msgstr "コンテナをコピーします (スナップショットはコピー
msgid "Copying the image: %s"
msgstr "イメージのコピー中: %s"
-#: lxc/remote.go:78
+#: lxc/remote.go:80
#, fuzzy
msgid "Could not create config dir"
msgstr "サーバ証明書格納用のディレクトリを作成できません"
-#: lxc/remote.go:251
+#: lxc/remote.go:262
msgid "Could not create server cert dir"
msgstr "サーバ証明書格納用のディレクトリを作成できません"
@@ -519,7 +528,7 @@ msgstr "強制的にローカルのUNIXソケットを使います"
msgid "Format (csv|json|table|yaml)"
msgstr "フォーマット (csv|json|table|yaml)"
-#: lxc/remote.go:89
+#: lxc/remote.go:91
msgid "Generating a client certificate. This may take a minute..."
msgstr "クライアント証明書を生成します。1分ぐらいかかります..."
@@ -535,7 +544,7 @@ msgstr "IPV6"
msgid "ISSUE DATE"
msgstr ""
-#: lxc/main.go:163
+#: lxc/main.go:165
msgid "If this is your first time using LXD, you should also run: lxd init"
msgstr "初めて LXD を使う場合、lxd init と実行する必要があります"
@@ -572,7 +581,7 @@ msgstr "イメージの更新が成功しました!"
msgid "Instance type"
msgstr ""
-#: lxc/remote.go:159
+#: lxc/remote.go:170
#, c-format
msgid "Invalid URL scheme \"%s\" in \"%s\""
msgstr "不正な URL スキーム \"%s\" (\"%s\" 内)"
@@ -590,6 +599,11 @@ msgstr "正しくない設定項目 (key) です"
msgid "Invalid path %s"
msgstr "不正なパス %s"
+#: lxc/remote.go:159
+#, fuzzy, c-format
+msgid "Invalid protocol: %s"
+msgstr "不正なパス %s"
+
#: lxc/file.go:457
#, c-format
msgid "Invalid source %s"
@@ -679,12 +693,12 @@ msgstr "ディレクトリからのインポートは root で実行する必要
msgid "Must supply container name for: "
msgstr "コンテナ名を指定する必要があります: "
-#: lxc/list.go:465 lxc/network.go:504 lxc/profile.go:555 lxc/remote.go:414
+#: lxc/list.go:465 lxc/network.go:504 lxc/profile.go:555 lxc/remote.go:453
#: lxc/storage.go:653 lxc/storage.go:748
msgid "NAME"
msgstr ""
-#: lxc/network.go:490 lxc/remote.go:388 lxc/remote.go:393
+#: lxc/network.go:490 lxc/remote.go:424 lxc/remote.go:429
msgid "NO"
msgstr ""
@@ -735,7 +749,7 @@ msgstr "フィンガープリントが指定されていません。"
msgid "Only \"custom\" volumes can be attached to containers."
msgstr "\"カスタム\" のボリュームのみがコンテナにアタッチできます。"
-#: lxc/remote.go:144
+#: lxc/remote.go:153
msgid "Only https URLs are supported for simplestreams"
msgstr "simplestreams は https の URL のみサポートします"
@@ -747,7 +761,7 @@ msgstr "リモートイメージのインポートは https:// のみをサポ
msgid "Only managed networks can be modified."
msgstr "管理対象のネットワークのみ変更できます。"
-#: lxc/help.go:71 lxc/main.go:130 lxc/main.go:187
+#: lxc/help.go:71 lxc/main.go:132 lxc/main.go:189
msgid "Options:"
msgstr "オプション:"
@@ -767,11 +781,11 @@ msgstr "PID"
msgid "PROFILES"
msgstr ""
-#: lxc/remote.go:416
+#: lxc/remote.go:455
msgid "PROTOCOL"
msgstr ""
-#: lxc/image.go:230 lxc/remote.go:417
+#: lxc/image.go:230 lxc/remote.go:457
msgid "PUBLIC"
msgstr ""
@@ -791,7 +805,7 @@ msgstr "別のクライアント用設定ディレクトリ"
msgid "Path to an alternate server directory"
msgstr "別のサーバ用設定ディレクトリ"
-#: lxc/main.go:226
+#: lxc/main.go:228
msgid "Pause containers."
msgstr "コンテナを一時停止します。"
@@ -868,7 +882,7 @@ msgstr "プロファイル: %s"
msgid "Properties:"
msgstr "プロパティ:"
-#: lxc/remote.go:70
+#: lxc/remote.go:72
msgid "Public image server"
msgstr "Public なイメージサーバとして設定します"
@@ -886,7 +900,7 @@ msgstr "再帰的にファイルをpush/pullします"
msgid "Refreshing the image: %s"
msgstr "イメージの更新中: %s"
-#: lxc/remote.go:68
+#: lxc/remote.go:69
msgid "Remote admin password"
msgstr "リモートの管理者パスワード"
@@ -912,7 +926,7 @@ msgstr "ユーザの確認を要求する"
msgid "Resources:"
msgstr "リソース:"
-#: lxc/main.go:234
+#: lxc/main.go:236
msgid "Restart containers."
msgstr "コンテナを再起動します。"
@@ -937,7 +951,7 @@ msgstr ""
msgid "STATE"
msgstr ""
-#: lxc/remote.go:418
+#: lxc/remote.go:458
msgid "STATIC"
msgstr ""
@@ -945,15 +959,20 @@ msgstr ""
msgid "STORAGE POOL"
msgstr ""
-#: lxc/remote.go:244
+#: lxc/remote.go:71
+msgid "Server authentication type (tls or macaroons)"
+msgstr ""
+
+#: lxc/remote.go:255
msgid "Server certificate NACKed by user"
msgstr "ユーザによりサーバ証明書が拒否されました"
-#: lxc/remote.go:321
-msgid "Server doesn't trust us after adding our cert"
+#: lxc/remote.go:355
+#, fuzzy
+msgid "Server doesn't trust us after authentication"
msgstr "サーバが我々の証明書を追加した後我々を信頼していません"
-#: lxc/remote.go:69
+#: lxc/remote.go:70
msgid "Server protocol (lxd or simplestreams)"
msgstr "サーバのプロトコル (lxd or simplestreams)"
@@ -1003,7 +1022,7 @@ msgstr "一部のコンテナで %s が失敗しました"
msgid "Source:"
msgstr "取得元:"
-#: lxc/main.go:244
+#: lxc/main.go:246
msgid "Start containers."
msgstr "コンテナを起動します。"
@@ -1017,7 +1036,7 @@ msgstr "%s を起動中"
msgid "Status: %s"
msgstr "状態: %s"
-#: lxc/main.go:250
+#: lxc/main.go:252
msgid "Stop containers."
msgstr "コンテナを停止します。"
@@ -1153,7 +1172,7 @@ msgid "To create a new network, use: lxc network create"
msgstr ""
"新しいネットワークを作成するには、lxc network create を使用してください"
-#: lxc/main.go:164
+#: lxc/main.go:166
msgid "To start your first container, try: lxc launch ubuntu:16.04"
msgstr ""
"初めてコンテナを起動するには、\"lxc launch ubuntu:16.04\" と実行してみてくだ"
@@ -1190,7 +1209,7 @@ msgstr "タイプ: persistent"
msgid "UPLOAD DATE"
msgstr ""
-#: lxc/remote.go:415
+#: lxc/remote.go:454
msgid "URL"
msgstr ""
@@ -1202,7 +1221,7 @@ msgstr ""
msgid "Unable to find help2man."
msgstr "help2man が見つかりません。"
-#: lxc/remote.go:119
+#: lxc/remote.go:121
msgid "Unable to read remote TLS certificate"
msgstr "リモートの TLS 証明書を読めません"
@@ -2339,14 +2358,15 @@ msgstr ""
"\n"
"イメージとしてコンテナを publish します。"
-#: lxc/remote.go:39
+#: lxc/remote.go:40
+#, fuzzy
msgid ""
"Usage: lxc remote <subcommand> [options]\n"
"\n"
"Manage the list of remote LXD servers.\n"
"\n"
"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL]\n"
+"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
" Add the remote <remote> at <url>.\n"
"\n"
"lxc remote remove <remote>\n"
@@ -2660,7 +2680,7 @@ msgstr ""
msgid "Whether or not to snapshot the container's running state"
msgstr "コンテナの稼動状態のスナップショットを取得するかどうか"
-#: lxc/network.go:492 lxc/remote.go:390 lxc/remote.go:395
+#: lxc/network.go:492 lxc/remote.go:426 lxc/remote.go:431
msgid "YES"
msgstr ""
@@ -2681,7 +2701,7 @@ msgstr "コピー元のコンテナ名を指定してください"
msgid "`lxc config profile` is deprecated, please use `lxc profile`"
msgstr "`lxc config profile` は廃止されました。`lxc profile` を使ってください"
-#: lxc/remote.go:378
+#: lxc/remote.go:414
msgid "can't remove the default remote"
msgstr "デフォルトのリモートは削除できません"
@@ -2689,7 +2709,7 @@ msgstr "デフォルトのリモートは削除できません"
msgid "can't supply uid/gid/mode in recursive mode"
msgstr "再帰 (recursive) モードでは uid/gid/mode を指定できません"
-#: lxc/remote.go:404
+#: lxc/remote.go:443
msgid "default"
msgstr ""
@@ -2707,12 +2727,12 @@ msgstr "無効"
msgid "enabled"
msgstr "有効"
-#: lxc/action.go:134 lxc/main.go:29 lxc/main.go:183
+#: lxc/action.go:134 lxc/main.go:29 lxc/main.go:185
#, c-format
msgid "error: %v"
msgstr "エラー: %v"
-#: lxc/help.go:37 lxc/main.go:124
+#: lxc/help.go:37 lxc/main.go:126
#, c-format
msgid "error: unknown command: %s"
msgstr "エラー: 未知のコマンド: %s"
@@ -2721,11 +2741,11 @@ msgstr "エラー: 未知のコマンド: %s"
msgid "no"
msgstr ""
-#: lxc/remote.go:237
+#: lxc/remote.go:248
msgid "ok (y/n)?"
msgstr "ok (y/n)?"
-#: lxc/main.go:355 lxc/main.go:359
+#: lxc/main.go:357 lxc/main.go:361
#, c-format
msgid "processing aliases failed %s\n"
msgstr "エイリアスの処理が失敗しました %s\n"
@@ -2734,22 +2754,22 @@ msgstr "エイリアスの処理が失敗しました %s\n"
msgid "recursive edit doesn't make sense :("
msgstr "再帰的な edit は意味がありません :("
-#: lxc/remote.go:440
+#: lxc/remote.go:480
#, c-format
msgid "remote %s already exists"
msgstr "リモート %s は既に存在します"
-#: lxc/remote.go:370 lxc/remote.go:432 lxc/remote.go:467 lxc/remote.go:483
+#: lxc/remote.go:406 lxc/remote.go:472 lxc/remote.go:507 lxc/remote.go:523
#, c-format
msgid "remote %s doesn't exist"
msgstr "リモート %s は存在しません"
-#: lxc/remote.go:353
+#: lxc/remote.go:389
#, c-format
msgid "remote %s exists as <%s>"
msgstr "リモート %s は <%s> として存在します"
-#: lxc/remote.go:374 lxc/remote.go:436 lxc/remote.go:471
+#: lxc/remote.go:410 lxc/remote.go:476 lxc/remote.go:511
#, c-format
msgid "remote %s is static and cannot be modified"
msgstr "リモート %s は static ですので変更できません"
@@ -2767,7 +2787,7 @@ msgstr ""
msgid "taken at %s"
msgstr "%s に取得しました"
-#: lxc/main.go:286
+#: lxc/main.go:288
msgid "wrong number of subcommand arguments"
msgstr "サブコマンドの引数の数が正しくありません"
diff --git a/po/lxd.pot b/po/lxd.pot
index d8b60a0c0..a368ce4ca 100644
--- a/po/lxd.pot
+++ b/po/lxd.pot
@@ -7,7 +7,7 @@
msgid ""
msgstr "Project-Id-Version: lxd\n"
"Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
- "POT-Creation-Date: 2017-07-27 18:42-0400\n"
+ "POT-Creation-Date: 2017-07-28 18:33+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
"Language-Team: LANGUAGE <LL at li.org>\n"
@@ -180,11 +180,15 @@ msgstr ""
msgid "ARCHITECTURE"
msgstr ""
-#: lxc/remote.go:67
+#: lxc/remote.go:456
+msgid "AUTH TYPE"
+msgstr ""
+
+#: lxc/remote.go:68
msgid "Accept certificate"
msgstr ""
-#: lxc/remote.go:289
+#: lxc/remote.go:320
#, c-format
msgid "Admin password for %s: "
msgstr ""
@@ -198,6 +202,11 @@ msgstr ""
msgid "Architecture: %s"
msgstr ""
+#: lxc/remote.go:302
+#, c-format
+msgid "Authentication type '%s' not supported by server"
+msgstr ""
+
#: lxc/image.go:601
#, c-format
msgid "Auto update: %s"
@@ -255,12 +264,12 @@ msgstr ""
msgid "Cannot provide container name to list"
msgstr ""
-#: lxc/remote.go:236
+#: lxc/remote.go:247
#, c-format
msgid "Certificate fingerprint: %s"
msgstr ""
-#: lxc/remote.go:324
+#: lxc/remote.go:359
msgid "Client certificate stored at server: "
msgstr ""
@@ -316,11 +325,11 @@ msgstr ""
msgid "Copying the image: %s"
msgstr ""
-#: lxc/remote.go:78
+#: lxc/remote.go:80
msgid "Could not create config dir"
msgstr ""
-#: lxc/remote.go:251
+#: lxc/remote.go:262
msgid "Could not create server cert dir"
msgstr ""
@@ -502,7 +511,7 @@ msgstr ""
msgid "Format (csv|json|table|yaml)"
msgstr ""
-#: lxc/remote.go:89
+#: lxc/remote.go:91
msgid "Generating a client certificate. This may take a minute..."
msgstr ""
@@ -518,7 +527,7 @@ msgstr ""
msgid "ISSUE DATE"
msgstr ""
-#: lxc/main.go:163
+#: lxc/main.go:165
msgid "If this is your first time using LXD, you should also run: lxd init"
msgstr ""
@@ -555,7 +564,7 @@ msgstr ""
msgid "Instance type"
msgstr ""
-#: lxc/remote.go:159
+#: lxc/remote.go:170
#, c-format
msgid "Invalid URL scheme \"%s\" in \"%s\""
msgstr ""
@@ -573,6 +582,11 @@ msgstr ""
msgid "Invalid path %s"
msgstr ""
+#: lxc/remote.go:159
+#, c-format
+msgid "Invalid protocol: %s"
+msgstr ""
+
#: lxc/file.go:457
#, c-format
msgid "Invalid source %s"
@@ -660,11 +674,11 @@ msgstr ""
msgid "Must supply container name for: "
msgstr ""
-#: lxc/list.go:465 lxc/network.go:504 lxc/profile.go:555 lxc/remote.go:414 lxc/storage.go:653 lxc/storage.go:748
+#: lxc/list.go:465 lxc/network.go:504 lxc/profile.go:555 lxc/remote.go:453 lxc/storage.go:653 lxc/storage.go:748
msgid "NAME"
msgstr ""
-#: lxc/network.go:490 lxc/remote.go:388 lxc/remote.go:393
+#: lxc/network.go:490 lxc/remote.go:424 lxc/remote.go:429
msgid "NO"
msgstr ""
@@ -715,7 +729,7 @@ msgstr ""
msgid "Only \"custom\" volumes can be attached to containers."
msgstr ""
-#: lxc/remote.go:144
+#: lxc/remote.go:153
msgid "Only https URLs are supported for simplestreams"
msgstr ""
@@ -727,7 +741,7 @@ msgstr ""
msgid "Only managed networks can be modified."
msgstr ""
-#: lxc/help.go:71 lxc/main.go:130 lxc/main.go:187
+#: lxc/help.go:71 lxc/main.go:132 lxc/main.go:189
msgid "Options:"
msgstr ""
@@ -747,11 +761,11 @@ msgstr ""
msgid "PROFILES"
msgstr ""
-#: lxc/remote.go:416
+#: lxc/remote.go:455
msgid "PROTOCOL"
msgstr ""
-#: lxc/image.go:230 lxc/remote.go:417
+#: lxc/image.go:230 lxc/remote.go:457
msgid "PUBLIC"
msgstr ""
@@ -771,7 +785,7 @@ msgstr ""
msgid "Path to an alternate server directory"
msgstr ""
-#: lxc/main.go:226
+#: lxc/main.go:228
msgid "Pause containers."
msgstr ""
@@ -847,7 +861,7 @@ msgstr ""
msgid "Properties:"
msgstr ""
-#: lxc/remote.go:70
+#: lxc/remote.go:72
msgid "Public image server"
msgstr ""
@@ -865,7 +879,7 @@ msgstr ""
msgid "Refreshing the image: %s"
msgstr ""
-#: lxc/remote.go:68
+#: lxc/remote.go:69
msgid "Remote admin password"
msgstr ""
@@ -891,7 +905,7 @@ msgstr ""
msgid "Resources:"
msgstr ""
-#: lxc/main.go:234
+#: lxc/main.go:236
msgid "Restart containers."
msgstr ""
@@ -916,7 +930,7 @@ msgstr ""
msgid "STATE"
msgstr ""
-#: lxc/remote.go:418
+#: lxc/remote.go:458
msgid "STATIC"
msgstr ""
@@ -924,15 +938,19 @@ msgstr ""
msgid "STORAGE POOL"
msgstr ""
-#: lxc/remote.go:244
+#: lxc/remote.go:71
+msgid "Server authentication type (tls or macaroons)"
+msgstr ""
+
+#: lxc/remote.go:255
msgid "Server certificate NACKed by user"
msgstr ""
-#: lxc/remote.go:321
-msgid "Server doesn't trust us after adding our cert"
+#: lxc/remote.go:355
+msgid "Server doesn't trust us after authentication"
msgstr ""
-#: lxc/remote.go:69
+#: lxc/remote.go:70
msgid "Server protocol (lxd or simplestreams)"
msgstr ""
@@ -982,7 +1000,7 @@ msgstr ""
msgid "Source:"
msgstr ""
-#: lxc/main.go:244
+#: lxc/main.go:246
msgid "Start containers."
msgstr ""
@@ -996,7 +1014,7 @@ msgstr ""
msgid "Status: %s"
msgstr ""
-#: lxc/main.go:250
+#: lxc/main.go:252
msgid "Stop containers."
msgstr ""
@@ -1117,7 +1135,7 @@ msgstr ""
msgid "To create a new network, use: lxc network create"
msgstr ""
-#: lxc/main.go:164
+#: lxc/main.go:166
msgid "To start your first container, try: lxc launch ubuntu:16.04"
msgstr ""
@@ -1152,7 +1170,7 @@ msgstr ""
msgid "UPLOAD DATE"
msgstr ""
-#: lxc/remote.go:415
+#: lxc/remote.go:454
msgid "URL"
msgstr ""
@@ -1164,7 +1182,7 @@ msgstr ""
msgid "Unable to find help2man."
msgstr ""
-#: lxc/remote.go:119
+#: lxc/remote.go:121
msgid "Unable to read remote TLS certificate"
msgstr ""
@@ -1729,12 +1747,12 @@ msgid "Usage: lxc publish [<remote>:]<container>[/<snapshot>] [<remote>:] [--a
"Publish containers as images."
msgstr ""
-#: lxc/remote.go:39
+#: lxc/remote.go:40
msgid "Usage: lxc remote <subcommand> [options]\n"
"\n"
"Manage the list of remote LXD servers.\n"
"\n"
- "lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--password=PASSWORD] [--public] [--protocol=PROTOCOL]\n"
+ "lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
" Add the remote <remote> at <url>.\n"
"\n"
"lxc remote remove <remote>\n"
@@ -1889,7 +1907,7 @@ msgstr ""
msgid "Whether or not to snapshot the container's running state"
msgstr ""
-#: lxc/network.go:492 lxc/remote.go:390 lxc/remote.go:395
+#: lxc/network.go:492 lxc/remote.go:426 lxc/remote.go:431
msgid "YES"
msgstr ""
@@ -1909,7 +1927,7 @@ msgstr ""
msgid "`lxc config profile` is deprecated, please use `lxc profile`"
msgstr ""
-#: lxc/remote.go:378
+#: lxc/remote.go:414
msgid "can't remove the default remote"
msgstr ""
@@ -1917,7 +1935,7 @@ msgstr ""
msgid "can't supply uid/gid/mode in recursive mode"
msgstr ""
-#: lxc/remote.go:404
+#: lxc/remote.go:443
msgid "default"
msgstr ""
@@ -1933,12 +1951,12 @@ msgstr ""
msgid "enabled"
msgstr ""
-#: lxc/action.go:134 lxc/main.go:29 lxc/main.go:183
+#: lxc/action.go:134 lxc/main.go:29 lxc/main.go:185
#, c-format
msgid "error: %v"
msgstr ""
-#: lxc/help.go:37 lxc/main.go:124
+#: lxc/help.go:37 lxc/main.go:126
#, c-format
msgid "error: unknown command: %s"
msgstr ""
@@ -1947,11 +1965,11 @@ msgstr ""
msgid "no"
msgstr ""
-#: lxc/remote.go:237
+#: lxc/remote.go:248
msgid "ok (y/n)?"
msgstr ""
-#: lxc/main.go:355 lxc/main.go:359
+#: lxc/main.go:357 lxc/main.go:361
#, c-format
msgid "processing aliases failed %s\n"
msgstr ""
@@ -1960,22 +1978,22 @@ msgstr ""
msgid "recursive edit doesn't make sense :("
msgstr ""
-#: lxc/remote.go:440
+#: lxc/remote.go:480
#, c-format
msgid "remote %s already exists"
msgstr ""
-#: lxc/remote.go:370 lxc/remote.go:432 lxc/remote.go:467 lxc/remote.go:483
+#: lxc/remote.go:406 lxc/remote.go:472 lxc/remote.go:507 lxc/remote.go:523
#, c-format
msgid "remote %s doesn't exist"
msgstr ""
-#: lxc/remote.go:353
+#: lxc/remote.go:389
#, c-format
msgid "remote %s exists as <%s>"
msgstr ""
-#: lxc/remote.go:374 lxc/remote.go:436 lxc/remote.go:471
+#: lxc/remote.go:410 lxc/remote.go:476 lxc/remote.go:511
#, c-format
msgid "remote %s is static and cannot be modified"
msgstr ""
@@ -1993,7 +2011,7 @@ msgstr ""
msgid "taken at %s"
msgstr ""
-#: lxc/main.go:286
+#: lxc/main.go:288
msgid "wrong number of subcommand arguments"
msgstr ""
diff --git a/po/nl.po b/po/nl.po
index 71a720753..23bf92a70 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: lxd\n"
"Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-"POT-Creation-Date: 2017-07-27 18:42-0400\n"
+"POT-Creation-Date: 2017-07-28 18:33+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@@ -187,11 +187,15 @@ msgstr ""
msgid "ARCHITECTURE"
msgstr ""
-#: lxc/remote.go:67
+#: lxc/remote.go:456
+msgid "AUTH TYPE"
+msgstr ""
+
+#: lxc/remote.go:68
msgid "Accept certificate"
msgstr ""
-#: lxc/remote.go:289
+#: lxc/remote.go:320
#, c-format
msgid "Admin password for %s: "
msgstr ""
@@ -205,6 +209,11 @@ msgstr ""
msgid "Architecture: %s"
msgstr ""
+#: lxc/remote.go:302
+#, c-format
+msgid "Authentication type '%s' not supported by server"
+msgstr ""
+
#: lxc/image.go:601
#, c-format
msgid "Auto update: %s"
@@ -262,12 +271,12 @@ msgstr ""
msgid "Cannot provide container name to list"
msgstr ""
-#: lxc/remote.go:236
+#: lxc/remote.go:247
#, c-format
msgid "Certificate fingerprint: %s"
msgstr ""
-#: lxc/remote.go:324
+#: lxc/remote.go:359
msgid "Client certificate stored at server: "
msgstr ""
@@ -324,11 +333,11 @@ msgstr ""
msgid "Copying the image: %s"
msgstr ""
-#: lxc/remote.go:78
+#: lxc/remote.go:80
msgid "Could not create config dir"
msgstr ""
-#: lxc/remote.go:251
+#: lxc/remote.go:262
msgid "Could not create server cert dir"
msgstr ""
@@ -511,7 +520,7 @@ msgstr ""
msgid "Format (csv|json|table|yaml)"
msgstr ""
-#: lxc/remote.go:89
+#: lxc/remote.go:91
msgid "Generating a client certificate. This may take a minute..."
msgstr ""
@@ -527,7 +536,7 @@ msgstr ""
msgid "ISSUE DATE"
msgstr ""
-#: lxc/main.go:163
+#: lxc/main.go:165
msgid "If this is your first time using LXD, you should also run: lxd init"
msgstr ""
@@ -564,7 +573,7 @@ msgstr ""
msgid "Instance type"
msgstr ""
-#: lxc/remote.go:159
+#: lxc/remote.go:170
#, c-format
msgid "Invalid URL scheme \"%s\" in \"%s\""
msgstr ""
@@ -582,6 +591,11 @@ msgstr ""
msgid "Invalid path %s"
msgstr ""
+#: lxc/remote.go:159
+#, c-format
+msgid "Invalid protocol: %s"
+msgstr ""
+
#: lxc/file.go:457
#, c-format
msgid "Invalid source %s"
@@ -669,12 +683,12 @@ msgstr ""
msgid "Must supply container name for: "
msgstr ""
-#: lxc/list.go:465 lxc/network.go:504 lxc/profile.go:555 lxc/remote.go:414
+#: lxc/list.go:465 lxc/network.go:504 lxc/profile.go:555 lxc/remote.go:453
#: lxc/storage.go:653 lxc/storage.go:748
msgid "NAME"
msgstr ""
-#: lxc/network.go:490 lxc/remote.go:388 lxc/remote.go:393
+#: lxc/network.go:490 lxc/remote.go:424 lxc/remote.go:429
msgid "NO"
msgstr ""
@@ -725,7 +739,7 @@ msgstr ""
msgid "Only \"custom\" volumes can be attached to containers."
msgstr ""
-#: lxc/remote.go:144
+#: lxc/remote.go:153
msgid "Only https URLs are supported for simplestreams"
msgstr ""
@@ -737,7 +751,7 @@ msgstr ""
msgid "Only managed networks can be modified."
msgstr ""
-#: lxc/help.go:71 lxc/main.go:130 lxc/main.go:187
+#: lxc/help.go:71 lxc/main.go:132 lxc/main.go:189
msgid "Options:"
msgstr ""
@@ -757,11 +771,11 @@ msgstr ""
msgid "PROFILES"
msgstr ""
-#: lxc/remote.go:416
+#: lxc/remote.go:455
msgid "PROTOCOL"
msgstr ""
-#: lxc/image.go:230 lxc/remote.go:417
+#: lxc/image.go:230 lxc/remote.go:457
msgid "PUBLIC"
msgstr ""
@@ -781,7 +795,7 @@ msgstr ""
msgid "Path to an alternate server directory"
msgstr ""
-#: lxc/main.go:226
+#: lxc/main.go:228
msgid "Pause containers."
msgstr ""
@@ -858,7 +872,7 @@ msgstr ""
msgid "Properties:"
msgstr ""
-#: lxc/remote.go:70
+#: lxc/remote.go:72
msgid "Public image server"
msgstr ""
@@ -876,7 +890,7 @@ msgstr ""
msgid "Refreshing the image: %s"
msgstr ""
-#: lxc/remote.go:68
+#: lxc/remote.go:69
msgid "Remote admin password"
msgstr ""
@@ -902,7 +916,7 @@ msgstr ""
msgid "Resources:"
msgstr ""
-#: lxc/main.go:234
+#: lxc/main.go:236
msgid "Restart containers."
msgstr ""
@@ -927,7 +941,7 @@ msgstr ""
msgid "STATE"
msgstr ""
-#: lxc/remote.go:418
+#: lxc/remote.go:458
msgid "STATIC"
msgstr ""
@@ -935,15 +949,19 @@ msgstr ""
msgid "STORAGE POOL"
msgstr ""
-#: lxc/remote.go:244
+#: lxc/remote.go:71
+msgid "Server authentication type (tls or macaroons)"
+msgstr ""
+
+#: lxc/remote.go:255
msgid "Server certificate NACKed by user"
msgstr ""
-#: lxc/remote.go:321
-msgid "Server doesn't trust us after adding our cert"
+#: lxc/remote.go:355
+msgid "Server doesn't trust us after authentication"
msgstr ""
-#: lxc/remote.go:69
+#: lxc/remote.go:70
msgid "Server protocol (lxd or simplestreams)"
msgstr ""
@@ -993,7 +1011,7 @@ msgstr ""
msgid "Source:"
msgstr ""
-#: lxc/main.go:244
+#: lxc/main.go:246
msgid "Start containers."
msgstr ""
@@ -1007,7 +1025,7 @@ msgstr ""
msgid "Status: %s"
msgstr ""
-#: lxc/main.go:250
+#: lxc/main.go:252
msgid "Stop containers."
msgstr ""
@@ -1132,7 +1150,7 @@ msgstr ""
msgid "To create a new network, use: lxc network create"
msgstr ""
-#: lxc/main.go:164
+#: lxc/main.go:166
msgid "To start your first container, try: lxc launch ubuntu:16.04"
msgstr ""
@@ -1167,7 +1185,7 @@ msgstr ""
msgid "UPLOAD DATE"
msgstr ""
-#: lxc/remote.go:415
+#: lxc/remote.go:454
msgid "URL"
msgstr ""
@@ -1179,7 +1197,7 @@ msgstr ""
msgid "Unable to find help2man."
msgstr ""
-#: lxc/remote.go:119
+#: lxc/remote.go:121
msgid "Unable to read remote TLS certificate"
msgstr ""
@@ -1809,14 +1827,14 @@ msgid ""
"Publish containers as images."
msgstr ""
-#: lxc/remote.go:39
+#: lxc/remote.go:40
msgid ""
"Usage: lxc remote <subcommand> [options]\n"
"\n"
"Manage the list of remote LXD servers.\n"
"\n"
"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL]\n"
+"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
" Add the remote <remote> at <url>.\n"
"\n"
"lxc remote remove <remote>\n"
@@ -1988,7 +2006,7 @@ msgstr ""
msgid "Whether or not to snapshot the container's running state"
msgstr ""
-#: lxc/network.go:492 lxc/remote.go:390 lxc/remote.go:395
+#: lxc/network.go:492 lxc/remote.go:426 lxc/remote.go:431
msgid "YES"
msgstr ""
@@ -2008,7 +2026,7 @@ msgstr ""
msgid "`lxc config profile` is deprecated, please use `lxc profile`"
msgstr ""
-#: lxc/remote.go:378
+#: lxc/remote.go:414
msgid "can't remove the default remote"
msgstr ""
@@ -2016,7 +2034,7 @@ msgstr ""
msgid "can't supply uid/gid/mode in recursive mode"
msgstr ""
-#: lxc/remote.go:404
+#: lxc/remote.go:443
msgid "default"
msgstr ""
@@ -2032,12 +2050,12 @@ msgstr ""
msgid "enabled"
msgstr ""
-#: lxc/action.go:134 lxc/main.go:29 lxc/main.go:183
+#: lxc/action.go:134 lxc/main.go:29 lxc/main.go:185
#, c-format
msgid "error: %v"
msgstr ""
-#: lxc/help.go:37 lxc/main.go:124
+#: lxc/help.go:37 lxc/main.go:126
#, c-format
msgid "error: unknown command: %s"
msgstr ""
@@ -2046,11 +2064,11 @@ msgstr ""
msgid "no"
msgstr ""
-#: lxc/remote.go:237
+#: lxc/remote.go:248
msgid "ok (y/n)?"
msgstr ""
-#: lxc/main.go:355 lxc/main.go:359
+#: lxc/main.go:357 lxc/main.go:361
#, c-format
msgid "processing aliases failed %s\n"
msgstr ""
@@ -2059,22 +2077,22 @@ msgstr ""
msgid "recursive edit doesn't make sense :("
msgstr ""
-#: lxc/remote.go:440
+#: lxc/remote.go:480
#, c-format
msgid "remote %s already exists"
msgstr ""
-#: lxc/remote.go:370 lxc/remote.go:432 lxc/remote.go:467 lxc/remote.go:483
+#: lxc/remote.go:406 lxc/remote.go:472 lxc/remote.go:507 lxc/remote.go:523
#, c-format
msgid "remote %s doesn't exist"
msgstr ""
-#: lxc/remote.go:353
+#: lxc/remote.go:389
#, c-format
msgid "remote %s exists as <%s>"
msgstr ""
-#: lxc/remote.go:374 lxc/remote.go:436 lxc/remote.go:471
+#: lxc/remote.go:410 lxc/remote.go:476 lxc/remote.go:511
#, c-format
msgid "remote %s is static and cannot be modified"
msgstr ""
@@ -2092,7 +2110,7 @@ msgstr ""
msgid "taken at %s"
msgstr ""
-#: lxc/main.go:286
+#: lxc/main.go:288
msgid "wrong number of subcommand arguments"
msgstr ""
diff --git a/po/ru.po b/po/ru.po
index c28bd749b..e40ac1344 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: lxd\n"
"Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-"POT-Creation-Date: 2017-07-27 18:42-0400\n"
+"POT-Creation-Date: 2017-07-28 18:33+0200\n"
"PO-Revision-Date: 2017-06-06 13:55+0000\n"
"Last-Translator: Александр Киль <shorrey at gmail.com>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/linux-containers/"
@@ -277,11 +277,15 @@ msgstr "ARCH"
msgid "ARCHITECTURE"
msgstr "АРХИТЕКТУРА"
-#: lxc/remote.go:67
+#: lxc/remote.go:456
+msgid "AUTH TYPE"
+msgstr ""
+
+#: lxc/remote.go:68
msgid "Accept certificate"
msgstr "Принять сертификат"
-#: lxc/remote.go:289
+#: lxc/remote.go:320
#, c-format
msgid "Admin password for %s: "
msgstr "Пароль администратора для %s: "
@@ -295,6 +299,11 @@ msgstr "Псевдонимы:"
msgid "Architecture: %s"
msgstr "Архитектура: %s"
+#: lxc/remote.go:302
+#, c-format
+msgid "Authentication type '%s' not supported by server"
+msgstr ""
+
#: lxc/image.go:601
#, c-format
msgid "Auto update: %s"
@@ -353,12 +362,12 @@ msgstr ""
msgid "Cannot provide container name to list"
msgstr "Невозможно добавить имя контейнера в список"
-#: lxc/remote.go:236
+#: lxc/remote.go:247
#, c-format
msgid "Certificate fingerprint: %s"
msgstr ""
-#: lxc/remote.go:324
+#: lxc/remote.go:359
msgid "Client certificate stored at server: "
msgstr "Сертификат клиента хранится на сервере: "
@@ -415,12 +424,12 @@ msgstr ""
msgid "Copying the image: %s"
msgstr "Копирование образа: %s"
-#: lxc/remote.go:78
+#: lxc/remote.go:80
#, fuzzy
msgid "Could not create config dir"
msgstr "Не удалось создать каталог сертификата сервера"
-#: lxc/remote.go:251
+#: lxc/remote.go:262
msgid "Could not create server cert dir"
msgstr "Не удалось создать каталог сертификата сервера"
@@ -604,7 +613,7 @@ msgstr ""
msgid "Format (csv|json|table|yaml)"
msgstr ""
-#: lxc/remote.go:89
+#: lxc/remote.go:91
msgid "Generating a client certificate. This may take a minute..."
msgstr ""
@@ -620,7 +629,7 @@ msgstr ""
msgid "ISSUE DATE"
msgstr ""
-#: lxc/main.go:163
+#: lxc/main.go:165
msgid "If this is your first time using LXD, you should also run: lxd init"
msgstr ""
@@ -657,7 +666,7 @@ msgstr ""
msgid "Instance type"
msgstr ""
-#: lxc/remote.go:159
+#: lxc/remote.go:170
#, c-format
msgid "Invalid URL scheme \"%s\" in \"%s\""
msgstr ""
@@ -675,6 +684,11 @@ msgstr ""
msgid "Invalid path %s"
msgstr ""
+#: lxc/remote.go:159
+#, c-format
+msgid "Invalid protocol: %s"
+msgstr ""
+
#: lxc/file.go:457
#, c-format
msgid "Invalid source %s"
@@ -763,12 +777,12 @@ msgstr ""
msgid "Must supply container name for: "
msgstr ""
-#: lxc/list.go:465 lxc/network.go:504 lxc/profile.go:555 lxc/remote.go:414
+#: lxc/list.go:465 lxc/network.go:504 lxc/profile.go:555 lxc/remote.go:453
#: lxc/storage.go:653 lxc/storage.go:748
msgid "NAME"
msgstr ""
-#: lxc/network.go:490 lxc/remote.go:388 lxc/remote.go:393
+#: lxc/network.go:490 lxc/remote.go:424 lxc/remote.go:429
msgid "NO"
msgstr ""
@@ -820,7 +834,7 @@ msgstr ""
msgid "Only \"custom\" volumes can be attached to containers."
msgstr ""
-#: lxc/remote.go:144
+#: lxc/remote.go:153
msgid "Only https URLs are supported for simplestreams"
msgstr ""
@@ -832,7 +846,7 @@ msgstr ""
msgid "Only managed networks can be modified."
msgstr ""
-#: lxc/help.go:71 lxc/main.go:130 lxc/main.go:187
+#: lxc/help.go:71 lxc/main.go:132 lxc/main.go:189
msgid "Options:"
msgstr ""
@@ -852,11 +866,11 @@ msgstr ""
msgid "PROFILES"
msgstr ""
-#: lxc/remote.go:416
+#: lxc/remote.go:455
msgid "PROTOCOL"
msgstr ""
-#: lxc/image.go:230 lxc/remote.go:417
+#: lxc/image.go:230 lxc/remote.go:457
msgid "PUBLIC"
msgstr ""
@@ -876,7 +890,7 @@ msgstr ""
msgid "Path to an alternate server directory"
msgstr ""
-#: lxc/main.go:226
+#: lxc/main.go:228
msgid "Pause containers."
msgstr ""
@@ -953,7 +967,7 @@ msgstr ""
msgid "Properties:"
msgstr ""
-#: lxc/remote.go:70
+#: lxc/remote.go:72
msgid "Public image server"
msgstr ""
@@ -971,7 +985,7 @@ msgstr ""
msgid "Refreshing the image: %s"
msgstr "Копирование образа: %s"
-#: lxc/remote.go:68
+#: lxc/remote.go:69
msgid "Remote admin password"
msgstr ""
@@ -997,7 +1011,7 @@ msgstr ""
msgid "Resources:"
msgstr ""
-#: lxc/main.go:234
+#: lxc/main.go:236
msgid "Restart containers."
msgstr ""
@@ -1022,7 +1036,7 @@ msgstr ""
msgid "STATE"
msgstr ""
-#: lxc/remote.go:418
+#: lxc/remote.go:458
msgid "STATIC"
msgstr ""
@@ -1030,15 +1044,19 @@ msgstr ""
msgid "STORAGE POOL"
msgstr ""
-#: lxc/remote.go:244
+#: lxc/remote.go:71
+msgid "Server authentication type (tls or macaroons)"
+msgstr ""
+
+#: lxc/remote.go:255
msgid "Server certificate NACKed by user"
msgstr ""
-#: lxc/remote.go:321
-msgid "Server doesn't trust us after adding our cert"
+#: lxc/remote.go:355
+msgid "Server doesn't trust us after authentication"
msgstr ""
-#: lxc/remote.go:69
+#: lxc/remote.go:70
msgid "Server protocol (lxd or simplestreams)"
msgstr ""
@@ -1088,7 +1106,7 @@ msgstr "Невозможно добавить имя контейнера в с
msgid "Source:"
msgstr ""
-#: lxc/main.go:244
+#: lxc/main.go:246
msgid "Start containers."
msgstr ""
@@ -1102,7 +1120,7 @@ msgstr ""
msgid "Status: %s"
msgstr ""
-#: lxc/main.go:250
+#: lxc/main.go:252
msgid "Stop containers."
msgstr ""
@@ -1227,7 +1245,7 @@ msgstr ""
msgid "To create a new network, use: lxc network create"
msgstr ""
-#: lxc/main.go:164
+#: lxc/main.go:166
msgid "To start your first container, try: lxc launch ubuntu:16.04"
msgstr ""
@@ -1262,7 +1280,7 @@ msgstr ""
msgid "UPLOAD DATE"
msgstr ""
-#: lxc/remote.go:415
+#: lxc/remote.go:454
msgid "URL"
msgstr ""
@@ -1274,7 +1292,7 @@ msgstr ""
msgid "Unable to find help2man."
msgstr ""
-#: lxc/remote.go:119
+#: lxc/remote.go:121
msgid "Unable to read remote TLS certificate"
msgstr ""
@@ -1912,14 +1930,14 @@ msgid ""
"Publish containers as images."
msgstr ""
-#: lxc/remote.go:39
+#: lxc/remote.go:40
msgid ""
"Usage: lxc remote <subcommand> [options]\n"
"\n"
"Manage the list of remote LXD servers.\n"
"\n"
"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL]\n"
+"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
" Add the remote <remote> at <url>.\n"
"\n"
"lxc remote remove <remote>\n"
@@ -2091,7 +2109,7 @@ msgstr ""
msgid "Whether or not to snapshot the container's running state"
msgstr ""
-#: lxc/network.go:492 lxc/remote.go:390 lxc/remote.go:395
+#: lxc/network.go:492 lxc/remote.go:426 lxc/remote.go:431
msgid "YES"
msgstr ""
@@ -2111,7 +2129,7 @@ msgstr ""
msgid "`lxc config profile` is deprecated, please use `lxc profile`"
msgstr ""
-#: lxc/remote.go:378
+#: lxc/remote.go:414
msgid "can't remove the default remote"
msgstr ""
@@ -2119,7 +2137,7 @@ msgstr ""
msgid "can't supply uid/gid/mode in recursive mode"
msgstr ""
-#: lxc/remote.go:404
+#: lxc/remote.go:443
msgid "default"
msgstr ""
@@ -2135,12 +2153,12 @@ msgstr ""
msgid "enabled"
msgstr ""
-#: lxc/action.go:134 lxc/main.go:29 lxc/main.go:183
+#: lxc/action.go:134 lxc/main.go:29 lxc/main.go:185
#, c-format
msgid "error: %v"
msgstr ""
-#: lxc/help.go:37 lxc/main.go:124
+#: lxc/help.go:37 lxc/main.go:126
#, c-format
msgid "error: unknown command: %s"
msgstr ""
@@ -2149,11 +2167,11 @@ msgstr ""
msgid "no"
msgstr ""
-#: lxc/remote.go:237
+#: lxc/remote.go:248
msgid "ok (y/n)?"
msgstr ""
-#: lxc/main.go:355 lxc/main.go:359
+#: lxc/main.go:357 lxc/main.go:361
#, c-format
msgid "processing aliases failed %s\n"
msgstr ""
@@ -2162,22 +2180,22 @@ msgstr ""
msgid "recursive edit doesn't make sense :("
msgstr ""
-#: lxc/remote.go:440
+#: lxc/remote.go:480
#, c-format
msgid "remote %s already exists"
msgstr ""
-#: lxc/remote.go:370 lxc/remote.go:432 lxc/remote.go:467 lxc/remote.go:483
+#: lxc/remote.go:406 lxc/remote.go:472 lxc/remote.go:507 lxc/remote.go:523
#, c-format
msgid "remote %s doesn't exist"
msgstr ""
-#: lxc/remote.go:353
+#: lxc/remote.go:389
#, c-format
msgid "remote %s exists as <%s>"
msgstr ""
-#: lxc/remote.go:374 lxc/remote.go:436 lxc/remote.go:471
+#: lxc/remote.go:410 lxc/remote.go:476 lxc/remote.go:511
#, c-format
msgid "remote %s is static and cannot be modified"
msgstr ""
@@ -2195,7 +2213,7 @@ msgstr ""
msgid "taken at %s"
msgstr ""
-#: lxc/main.go:286
+#: lxc/main.go:288
msgid "wrong number of subcommand arguments"
msgstr ""
diff --git a/po/sr.po b/po/sr.po
index 332a2042f..5f47c851c 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: lxd\n"
"Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-"POT-Creation-Date: 2017-07-27 18:42-0400\n"
+"POT-Creation-Date: 2017-07-28 18:33+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@@ -187,11 +187,15 @@ msgstr ""
msgid "ARCHITECTURE"
msgstr ""
-#: lxc/remote.go:67
+#: lxc/remote.go:456
+msgid "AUTH TYPE"
+msgstr ""
+
+#: lxc/remote.go:68
msgid "Accept certificate"
msgstr ""
-#: lxc/remote.go:289
+#: lxc/remote.go:320
#, c-format
msgid "Admin password for %s: "
msgstr ""
@@ -205,6 +209,11 @@ msgstr ""
msgid "Architecture: %s"
msgstr ""
+#: lxc/remote.go:302
+#, c-format
+msgid "Authentication type '%s' not supported by server"
+msgstr ""
+
#: lxc/image.go:601
#, c-format
msgid "Auto update: %s"
@@ -262,12 +271,12 @@ msgstr ""
msgid "Cannot provide container name to list"
msgstr ""
-#: lxc/remote.go:236
+#: lxc/remote.go:247
#, c-format
msgid "Certificate fingerprint: %s"
msgstr ""
-#: lxc/remote.go:324
+#: lxc/remote.go:359
msgid "Client certificate stored at server: "
msgstr ""
@@ -324,11 +333,11 @@ msgstr ""
msgid "Copying the image: %s"
msgstr ""
-#: lxc/remote.go:78
+#: lxc/remote.go:80
msgid "Could not create config dir"
msgstr ""
-#: lxc/remote.go:251
+#: lxc/remote.go:262
msgid "Could not create server cert dir"
msgstr ""
@@ -511,7 +520,7 @@ msgstr ""
msgid "Format (csv|json|table|yaml)"
msgstr ""
-#: lxc/remote.go:89
+#: lxc/remote.go:91
msgid "Generating a client certificate. This may take a minute..."
msgstr ""
@@ -527,7 +536,7 @@ msgstr ""
msgid "ISSUE DATE"
msgstr ""
-#: lxc/main.go:163
+#: lxc/main.go:165
msgid "If this is your first time using LXD, you should also run: lxd init"
msgstr ""
@@ -564,7 +573,7 @@ msgstr ""
msgid "Instance type"
msgstr ""
-#: lxc/remote.go:159
+#: lxc/remote.go:170
#, c-format
msgid "Invalid URL scheme \"%s\" in \"%s\""
msgstr ""
@@ -582,6 +591,11 @@ msgstr ""
msgid "Invalid path %s"
msgstr ""
+#: lxc/remote.go:159
+#, c-format
+msgid "Invalid protocol: %s"
+msgstr ""
+
#: lxc/file.go:457
#, c-format
msgid "Invalid source %s"
@@ -669,12 +683,12 @@ msgstr ""
msgid "Must supply container name for: "
msgstr ""
-#: lxc/list.go:465 lxc/network.go:504 lxc/profile.go:555 lxc/remote.go:414
+#: lxc/list.go:465 lxc/network.go:504 lxc/profile.go:555 lxc/remote.go:453
#: lxc/storage.go:653 lxc/storage.go:748
msgid "NAME"
msgstr ""
-#: lxc/network.go:490 lxc/remote.go:388 lxc/remote.go:393
+#: lxc/network.go:490 lxc/remote.go:424 lxc/remote.go:429
msgid "NO"
msgstr ""
@@ -725,7 +739,7 @@ msgstr ""
msgid "Only \"custom\" volumes can be attached to containers."
msgstr ""
-#: lxc/remote.go:144
+#: lxc/remote.go:153
msgid "Only https URLs are supported for simplestreams"
msgstr ""
@@ -737,7 +751,7 @@ msgstr ""
msgid "Only managed networks can be modified."
msgstr ""
-#: lxc/help.go:71 lxc/main.go:130 lxc/main.go:187
+#: lxc/help.go:71 lxc/main.go:132 lxc/main.go:189
msgid "Options:"
msgstr ""
@@ -757,11 +771,11 @@ msgstr ""
msgid "PROFILES"
msgstr ""
-#: lxc/remote.go:416
+#: lxc/remote.go:455
msgid "PROTOCOL"
msgstr ""
-#: lxc/image.go:230 lxc/remote.go:417
+#: lxc/image.go:230 lxc/remote.go:457
msgid "PUBLIC"
msgstr ""
@@ -781,7 +795,7 @@ msgstr ""
msgid "Path to an alternate server directory"
msgstr ""
-#: lxc/main.go:226
+#: lxc/main.go:228
msgid "Pause containers."
msgstr ""
@@ -858,7 +872,7 @@ msgstr ""
msgid "Properties:"
msgstr ""
-#: lxc/remote.go:70
+#: lxc/remote.go:72
msgid "Public image server"
msgstr ""
@@ -876,7 +890,7 @@ msgstr ""
msgid "Refreshing the image: %s"
msgstr ""
-#: lxc/remote.go:68
+#: lxc/remote.go:69
msgid "Remote admin password"
msgstr ""
@@ -902,7 +916,7 @@ msgstr ""
msgid "Resources:"
msgstr ""
-#: lxc/main.go:234
+#: lxc/main.go:236
msgid "Restart containers."
msgstr ""
@@ -927,7 +941,7 @@ msgstr ""
msgid "STATE"
msgstr ""
-#: lxc/remote.go:418
+#: lxc/remote.go:458
msgid "STATIC"
msgstr ""
@@ -935,15 +949,19 @@ msgstr ""
msgid "STORAGE POOL"
msgstr ""
-#: lxc/remote.go:244
+#: lxc/remote.go:71
+msgid "Server authentication type (tls or macaroons)"
+msgstr ""
+
+#: lxc/remote.go:255
msgid "Server certificate NACKed by user"
msgstr ""
-#: lxc/remote.go:321
-msgid "Server doesn't trust us after adding our cert"
+#: lxc/remote.go:355
+msgid "Server doesn't trust us after authentication"
msgstr ""
-#: lxc/remote.go:69
+#: lxc/remote.go:70
msgid "Server protocol (lxd or simplestreams)"
msgstr ""
@@ -993,7 +1011,7 @@ msgstr ""
msgid "Source:"
msgstr ""
-#: lxc/main.go:244
+#: lxc/main.go:246
msgid "Start containers."
msgstr ""
@@ -1007,7 +1025,7 @@ msgstr ""
msgid "Status: %s"
msgstr ""
-#: lxc/main.go:250
+#: lxc/main.go:252
msgid "Stop containers."
msgstr ""
@@ -1132,7 +1150,7 @@ msgstr ""
msgid "To create a new network, use: lxc network create"
msgstr ""
-#: lxc/main.go:164
+#: lxc/main.go:166
msgid "To start your first container, try: lxc launch ubuntu:16.04"
msgstr ""
@@ -1167,7 +1185,7 @@ msgstr ""
msgid "UPLOAD DATE"
msgstr ""
-#: lxc/remote.go:415
+#: lxc/remote.go:454
msgid "URL"
msgstr ""
@@ -1179,7 +1197,7 @@ msgstr ""
msgid "Unable to find help2man."
msgstr ""
-#: lxc/remote.go:119
+#: lxc/remote.go:121
msgid "Unable to read remote TLS certificate"
msgstr ""
@@ -1809,14 +1827,14 @@ msgid ""
"Publish containers as images."
msgstr ""
-#: lxc/remote.go:39
+#: lxc/remote.go:40
msgid ""
"Usage: lxc remote <subcommand> [options]\n"
"\n"
"Manage the list of remote LXD servers.\n"
"\n"
"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL]\n"
+"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
" Add the remote <remote> at <url>.\n"
"\n"
"lxc remote remove <remote>\n"
@@ -1988,7 +2006,7 @@ msgstr ""
msgid "Whether or not to snapshot the container's running state"
msgstr ""
-#: lxc/network.go:492 lxc/remote.go:390 lxc/remote.go:395
+#: lxc/network.go:492 lxc/remote.go:426 lxc/remote.go:431
msgid "YES"
msgstr ""
@@ -2008,7 +2026,7 @@ msgstr ""
msgid "`lxc config profile` is deprecated, please use `lxc profile`"
msgstr ""
-#: lxc/remote.go:378
+#: lxc/remote.go:414
msgid "can't remove the default remote"
msgstr ""
@@ -2016,7 +2034,7 @@ msgstr ""
msgid "can't supply uid/gid/mode in recursive mode"
msgstr ""
-#: lxc/remote.go:404
+#: lxc/remote.go:443
msgid "default"
msgstr ""
@@ -2032,12 +2050,12 @@ msgstr ""
msgid "enabled"
msgstr ""
-#: lxc/action.go:134 lxc/main.go:29 lxc/main.go:183
+#: lxc/action.go:134 lxc/main.go:29 lxc/main.go:185
#, c-format
msgid "error: %v"
msgstr ""
-#: lxc/help.go:37 lxc/main.go:124
+#: lxc/help.go:37 lxc/main.go:126
#, c-format
msgid "error: unknown command: %s"
msgstr ""
@@ -2046,11 +2064,11 @@ msgstr ""
msgid "no"
msgstr ""
-#: lxc/remote.go:237
+#: lxc/remote.go:248
msgid "ok (y/n)?"
msgstr ""
-#: lxc/main.go:355 lxc/main.go:359
+#: lxc/main.go:357 lxc/main.go:361
#, c-format
msgid "processing aliases failed %s\n"
msgstr ""
@@ -2059,22 +2077,22 @@ msgstr ""
msgid "recursive edit doesn't make sense :("
msgstr ""
-#: lxc/remote.go:440
+#: lxc/remote.go:480
#, c-format
msgid "remote %s already exists"
msgstr ""
-#: lxc/remote.go:370 lxc/remote.go:432 lxc/remote.go:467 lxc/remote.go:483
+#: lxc/remote.go:406 lxc/remote.go:472 lxc/remote.go:507 lxc/remote.go:523
#, c-format
msgid "remote %s doesn't exist"
msgstr ""
-#: lxc/remote.go:353
+#: lxc/remote.go:389
#, c-format
msgid "remote %s exists as <%s>"
msgstr ""
-#: lxc/remote.go:374 lxc/remote.go:436 lxc/remote.go:471
+#: lxc/remote.go:410 lxc/remote.go:476 lxc/remote.go:511
#, c-format
msgid "remote %s is static and cannot be modified"
msgstr ""
@@ -2092,7 +2110,7 @@ msgstr ""
msgid "taken at %s"
msgstr ""
-#: lxc/main.go:286
+#: lxc/main.go:288
msgid "wrong number of subcommand arguments"
msgstr ""
diff --git a/po/sv.po b/po/sv.po
index 8db0134f7..b06cc776e 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: lxd\n"
"Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-"POT-Creation-Date: 2017-07-27 18:42-0400\n"
+"POT-Creation-Date: 2017-07-28 18:33+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@@ -187,11 +187,15 @@ msgstr ""
msgid "ARCHITECTURE"
msgstr ""
-#: lxc/remote.go:67
+#: lxc/remote.go:456
+msgid "AUTH TYPE"
+msgstr ""
+
+#: lxc/remote.go:68
msgid "Accept certificate"
msgstr ""
-#: lxc/remote.go:289
+#: lxc/remote.go:320
#, c-format
msgid "Admin password for %s: "
msgstr ""
@@ -205,6 +209,11 @@ msgstr ""
msgid "Architecture: %s"
msgstr ""
+#: lxc/remote.go:302
+#, c-format
+msgid "Authentication type '%s' not supported by server"
+msgstr ""
+
#: lxc/image.go:601
#, c-format
msgid "Auto update: %s"
@@ -262,12 +271,12 @@ msgstr ""
msgid "Cannot provide container name to list"
msgstr ""
-#: lxc/remote.go:236
+#: lxc/remote.go:247
#, c-format
msgid "Certificate fingerprint: %s"
msgstr ""
-#: lxc/remote.go:324
+#: lxc/remote.go:359
msgid "Client certificate stored at server: "
msgstr ""
@@ -324,11 +333,11 @@ msgstr ""
msgid "Copying the image: %s"
msgstr ""
-#: lxc/remote.go:78
+#: lxc/remote.go:80
msgid "Could not create config dir"
msgstr ""
-#: lxc/remote.go:251
+#: lxc/remote.go:262
msgid "Could not create server cert dir"
msgstr ""
@@ -511,7 +520,7 @@ msgstr ""
msgid "Format (csv|json|table|yaml)"
msgstr ""
-#: lxc/remote.go:89
+#: lxc/remote.go:91
msgid "Generating a client certificate. This may take a minute..."
msgstr ""
@@ -527,7 +536,7 @@ msgstr ""
msgid "ISSUE DATE"
msgstr ""
-#: lxc/main.go:163
+#: lxc/main.go:165
msgid "If this is your first time using LXD, you should also run: lxd init"
msgstr ""
@@ -564,7 +573,7 @@ msgstr ""
msgid "Instance type"
msgstr ""
-#: lxc/remote.go:159
+#: lxc/remote.go:170
#, c-format
msgid "Invalid URL scheme \"%s\" in \"%s\""
msgstr ""
@@ -582,6 +591,11 @@ msgstr ""
msgid "Invalid path %s"
msgstr ""
+#: lxc/remote.go:159
+#, c-format
+msgid "Invalid protocol: %s"
+msgstr ""
+
#: lxc/file.go:457
#, c-format
msgid "Invalid source %s"
@@ -669,12 +683,12 @@ msgstr ""
msgid "Must supply container name for: "
msgstr ""
-#: lxc/list.go:465 lxc/network.go:504 lxc/profile.go:555 lxc/remote.go:414
+#: lxc/list.go:465 lxc/network.go:504 lxc/profile.go:555 lxc/remote.go:453
#: lxc/storage.go:653 lxc/storage.go:748
msgid "NAME"
msgstr ""
-#: lxc/network.go:490 lxc/remote.go:388 lxc/remote.go:393
+#: lxc/network.go:490 lxc/remote.go:424 lxc/remote.go:429
msgid "NO"
msgstr ""
@@ -725,7 +739,7 @@ msgstr ""
msgid "Only \"custom\" volumes can be attached to containers."
msgstr ""
-#: lxc/remote.go:144
+#: lxc/remote.go:153
msgid "Only https URLs are supported for simplestreams"
msgstr ""
@@ -737,7 +751,7 @@ msgstr ""
msgid "Only managed networks can be modified."
msgstr ""
-#: lxc/help.go:71 lxc/main.go:130 lxc/main.go:187
+#: lxc/help.go:71 lxc/main.go:132 lxc/main.go:189
msgid "Options:"
msgstr ""
@@ -757,11 +771,11 @@ msgstr ""
msgid "PROFILES"
msgstr ""
-#: lxc/remote.go:416
+#: lxc/remote.go:455
msgid "PROTOCOL"
msgstr ""
-#: lxc/image.go:230 lxc/remote.go:417
+#: lxc/image.go:230 lxc/remote.go:457
msgid "PUBLIC"
msgstr ""
@@ -781,7 +795,7 @@ msgstr ""
msgid "Path to an alternate server directory"
msgstr ""
-#: lxc/main.go:226
+#: lxc/main.go:228
msgid "Pause containers."
msgstr ""
@@ -858,7 +872,7 @@ msgstr ""
msgid "Properties:"
msgstr ""
-#: lxc/remote.go:70
+#: lxc/remote.go:72
msgid "Public image server"
msgstr ""
@@ -876,7 +890,7 @@ msgstr ""
msgid "Refreshing the image: %s"
msgstr ""
-#: lxc/remote.go:68
+#: lxc/remote.go:69
msgid "Remote admin password"
msgstr ""
@@ -902,7 +916,7 @@ msgstr ""
msgid "Resources:"
msgstr ""
-#: lxc/main.go:234
+#: lxc/main.go:236
msgid "Restart containers."
msgstr ""
@@ -927,7 +941,7 @@ msgstr ""
msgid "STATE"
msgstr ""
-#: lxc/remote.go:418
+#: lxc/remote.go:458
msgid "STATIC"
msgstr ""
@@ -935,15 +949,19 @@ msgstr ""
msgid "STORAGE POOL"
msgstr ""
-#: lxc/remote.go:244
+#: lxc/remote.go:71
+msgid "Server authentication type (tls or macaroons)"
+msgstr ""
+
+#: lxc/remote.go:255
msgid "Server certificate NACKed by user"
msgstr ""
-#: lxc/remote.go:321
-msgid "Server doesn't trust us after adding our cert"
+#: lxc/remote.go:355
+msgid "Server doesn't trust us after authentication"
msgstr ""
-#: lxc/remote.go:69
+#: lxc/remote.go:70
msgid "Server protocol (lxd or simplestreams)"
msgstr ""
@@ -993,7 +1011,7 @@ msgstr ""
msgid "Source:"
msgstr ""
-#: lxc/main.go:244
+#: lxc/main.go:246
msgid "Start containers."
msgstr ""
@@ -1007,7 +1025,7 @@ msgstr ""
msgid "Status: %s"
msgstr ""
-#: lxc/main.go:250
+#: lxc/main.go:252
msgid "Stop containers."
msgstr ""
@@ -1132,7 +1150,7 @@ msgstr ""
msgid "To create a new network, use: lxc network create"
msgstr ""
-#: lxc/main.go:164
+#: lxc/main.go:166
msgid "To start your first container, try: lxc launch ubuntu:16.04"
msgstr ""
@@ -1167,7 +1185,7 @@ msgstr ""
msgid "UPLOAD DATE"
msgstr ""
-#: lxc/remote.go:415
+#: lxc/remote.go:454
msgid "URL"
msgstr ""
@@ -1179,7 +1197,7 @@ msgstr ""
msgid "Unable to find help2man."
msgstr ""
-#: lxc/remote.go:119
+#: lxc/remote.go:121
msgid "Unable to read remote TLS certificate"
msgstr ""
@@ -1809,14 +1827,14 @@ msgid ""
"Publish containers as images."
msgstr ""
-#: lxc/remote.go:39
+#: lxc/remote.go:40
msgid ""
"Usage: lxc remote <subcommand> [options]\n"
"\n"
"Manage the list of remote LXD servers.\n"
"\n"
"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL]\n"
+"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
" Add the remote <remote> at <url>.\n"
"\n"
"lxc remote remove <remote>\n"
@@ -1988,7 +2006,7 @@ msgstr ""
msgid "Whether or not to snapshot the container's running state"
msgstr ""
-#: lxc/network.go:492 lxc/remote.go:390 lxc/remote.go:395
+#: lxc/network.go:492 lxc/remote.go:426 lxc/remote.go:431
msgid "YES"
msgstr ""
@@ -2008,7 +2026,7 @@ msgstr ""
msgid "`lxc config profile` is deprecated, please use `lxc profile`"
msgstr ""
-#: lxc/remote.go:378
+#: lxc/remote.go:414
msgid "can't remove the default remote"
msgstr ""
@@ -2016,7 +2034,7 @@ msgstr ""
msgid "can't supply uid/gid/mode in recursive mode"
msgstr ""
-#: lxc/remote.go:404
+#: lxc/remote.go:443
msgid "default"
msgstr ""
@@ -2032,12 +2050,12 @@ msgstr ""
msgid "enabled"
msgstr ""
-#: lxc/action.go:134 lxc/main.go:29 lxc/main.go:183
+#: lxc/action.go:134 lxc/main.go:29 lxc/main.go:185
#, c-format
msgid "error: %v"
msgstr ""
-#: lxc/help.go:37 lxc/main.go:124
+#: lxc/help.go:37 lxc/main.go:126
#, c-format
msgid "error: unknown command: %s"
msgstr ""
@@ -2046,11 +2064,11 @@ msgstr ""
msgid "no"
msgstr ""
-#: lxc/remote.go:237
+#: lxc/remote.go:248
msgid "ok (y/n)?"
msgstr ""
-#: lxc/main.go:355 lxc/main.go:359
+#: lxc/main.go:357 lxc/main.go:361
#, c-format
msgid "processing aliases failed %s\n"
msgstr ""
@@ -2059,22 +2077,22 @@ msgstr ""
msgid "recursive edit doesn't make sense :("
msgstr ""
-#: lxc/remote.go:440
+#: lxc/remote.go:480
#, c-format
msgid "remote %s already exists"
msgstr ""
-#: lxc/remote.go:370 lxc/remote.go:432 lxc/remote.go:467 lxc/remote.go:483
+#: lxc/remote.go:406 lxc/remote.go:472 lxc/remote.go:507 lxc/remote.go:523
#, c-format
msgid "remote %s doesn't exist"
msgstr ""
-#: lxc/remote.go:353
+#: lxc/remote.go:389
#, c-format
msgid "remote %s exists as <%s>"
msgstr ""
-#: lxc/remote.go:374 lxc/remote.go:436 lxc/remote.go:471
+#: lxc/remote.go:410 lxc/remote.go:476 lxc/remote.go:511
#, c-format
msgid "remote %s is static and cannot be modified"
msgstr ""
@@ -2092,7 +2110,7 @@ msgstr ""
msgid "taken at %s"
msgstr ""
-#: lxc/main.go:286
+#: lxc/main.go:288
msgid "wrong number of subcommand arguments"
msgstr ""
diff --git a/po/tr.po b/po/tr.po
index bf77769d9..785c91c22 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: lxd\n"
"Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-"POT-Creation-Date: 2017-07-27 18:42-0400\n"
+"POT-Creation-Date: 2017-07-28 18:33+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@@ -187,11 +187,15 @@ msgstr ""
msgid "ARCHITECTURE"
msgstr ""
-#: lxc/remote.go:67
+#: lxc/remote.go:456
+msgid "AUTH TYPE"
+msgstr ""
+
+#: lxc/remote.go:68
msgid "Accept certificate"
msgstr ""
-#: lxc/remote.go:289
+#: lxc/remote.go:320
#, c-format
msgid "Admin password for %s: "
msgstr ""
@@ -205,6 +209,11 @@ msgstr ""
msgid "Architecture: %s"
msgstr ""
+#: lxc/remote.go:302
+#, c-format
+msgid "Authentication type '%s' not supported by server"
+msgstr ""
+
#: lxc/image.go:601
#, c-format
msgid "Auto update: %s"
@@ -262,12 +271,12 @@ msgstr ""
msgid "Cannot provide container name to list"
msgstr ""
-#: lxc/remote.go:236
+#: lxc/remote.go:247
#, c-format
msgid "Certificate fingerprint: %s"
msgstr ""
-#: lxc/remote.go:324
+#: lxc/remote.go:359
msgid "Client certificate stored at server: "
msgstr ""
@@ -324,11 +333,11 @@ msgstr ""
msgid "Copying the image: %s"
msgstr ""
-#: lxc/remote.go:78
+#: lxc/remote.go:80
msgid "Could not create config dir"
msgstr ""
-#: lxc/remote.go:251
+#: lxc/remote.go:262
msgid "Could not create server cert dir"
msgstr ""
@@ -511,7 +520,7 @@ msgstr ""
msgid "Format (csv|json|table|yaml)"
msgstr ""
-#: lxc/remote.go:89
+#: lxc/remote.go:91
msgid "Generating a client certificate. This may take a minute..."
msgstr ""
@@ -527,7 +536,7 @@ msgstr ""
msgid "ISSUE DATE"
msgstr ""
-#: lxc/main.go:163
+#: lxc/main.go:165
msgid "If this is your first time using LXD, you should also run: lxd init"
msgstr ""
@@ -564,7 +573,7 @@ msgstr ""
msgid "Instance type"
msgstr ""
-#: lxc/remote.go:159
+#: lxc/remote.go:170
#, c-format
msgid "Invalid URL scheme \"%s\" in \"%s\""
msgstr ""
@@ -582,6 +591,11 @@ msgstr ""
msgid "Invalid path %s"
msgstr ""
+#: lxc/remote.go:159
+#, c-format
+msgid "Invalid protocol: %s"
+msgstr ""
+
#: lxc/file.go:457
#, c-format
msgid "Invalid source %s"
@@ -669,12 +683,12 @@ msgstr ""
msgid "Must supply container name for: "
msgstr ""
-#: lxc/list.go:465 lxc/network.go:504 lxc/profile.go:555 lxc/remote.go:414
+#: lxc/list.go:465 lxc/network.go:504 lxc/profile.go:555 lxc/remote.go:453
#: lxc/storage.go:653 lxc/storage.go:748
msgid "NAME"
msgstr ""
-#: lxc/network.go:490 lxc/remote.go:388 lxc/remote.go:393
+#: lxc/network.go:490 lxc/remote.go:424 lxc/remote.go:429
msgid "NO"
msgstr ""
@@ -725,7 +739,7 @@ msgstr ""
msgid "Only \"custom\" volumes can be attached to containers."
msgstr ""
-#: lxc/remote.go:144
+#: lxc/remote.go:153
msgid "Only https URLs are supported for simplestreams"
msgstr ""
@@ -737,7 +751,7 @@ msgstr ""
msgid "Only managed networks can be modified."
msgstr ""
-#: lxc/help.go:71 lxc/main.go:130 lxc/main.go:187
+#: lxc/help.go:71 lxc/main.go:132 lxc/main.go:189
msgid "Options:"
msgstr ""
@@ -757,11 +771,11 @@ msgstr ""
msgid "PROFILES"
msgstr ""
-#: lxc/remote.go:416
+#: lxc/remote.go:455
msgid "PROTOCOL"
msgstr ""
-#: lxc/image.go:230 lxc/remote.go:417
+#: lxc/image.go:230 lxc/remote.go:457
msgid "PUBLIC"
msgstr ""
@@ -781,7 +795,7 @@ msgstr ""
msgid "Path to an alternate server directory"
msgstr ""
-#: lxc/main.go:226
+#: lxc/main.go:228
msgid "Pause containers."
msgstr ""
@@ -858,7 +872,7 @@ msgstr ""
msgid "Properties:"
msgstr ""
-#: lxc/remote.go:70
+#: lxc/remote.go:72
msgid "Public image server"
msgstr ""
@@ -876,7 +890,7 @@ msgstr ""
msgid "Refreshing the image: %s"
msgstr ""
-#: lxc/remote.go:68
+#: lxc/remote.go:69
msgid "Remote admin password"
msgstr ""
@@ -902,7 +916,7 @@ msgstr ""
msgid "Resources:"
msgstr ""
-#: lxc/main.go:234
+#: lxc/main.go:236
msgid "Restart containers."
msgstr ""
@@ -927,7 +941,7 @@ msgstr ""
msgid "STATE"
msgstr ""
-#: lxc/remote.go:418
+#: lxc/remote.go:458
msgid "STATIC"
msgstr ""
@@ -935,15 +949,19 @@ msgstr ""
msgid "STORAGE POOL"
msgstr ""
-#: lxc/remote.go:244
+#: lxc/remote.go:71
+msgid "Server authentication type (tls or macaroons)"
+msgstr ""
+
+#: lxc/remote.go:255
msgid "Server certificate NACKed by user"
msgstr ""
-#: lxc/remote.go:321
-msgid "Server doesn't trust us after adding our cert"
+#: lxc/remote.go:355
+msgid "Server doesn't trust us after authentication"
msgstr ""
-#: lxc/remote.go:69
+#: lxc/remote.go:70
msgid "Server protocol (lxd or simplestreams)"
msgstr ""
@@ -993,7 +1011,7 @@ msgstr ""
msgid "Source:"
msgstr ""
-#: lxc/main.go:244
+#: lxc/main.go:246
msgid "Start containers."
msgstr ""
@@ -1007,7 +1025,7 @@ msgstr ""
msgid "Status: %s"
msgstr ""
-#: lxc/main.go:250
+#: lxc/main.go:252
msgid "Stop containers."
msgstr ""
@@ -1132,7 +1150,7 @@ msgstr ""
msgid "To create a new network, use: lxc network create"
msgstr ""
-#: lxc/main.go:164
+#: lxc/main.go:166
msgid "To start your first container, try: lxc launch ubuntu:16.04"
msgstr ""
@@ -1167,7 +1185,7 @@ msgstr ""
msgid "UPLOAD DATE"
msgstr ""
-#: lxc/remote.go:415
+#: lxc/remote.go:454
msgid "URL"
msgstr ""
@@ -1179,7 +1197,7 @@ msgstr ""
msgid "Unable to find help2man."
msgstr ""
-#: lxc/remote.go:119
+#: lxc/remote.go:121
msgid "Unable to read remote TLS certificate"
msgstr ""
@@ -1809,14 +1827,14 @@ msgid ""
"Publish containers as images."
msgstr ""
-#: lxc/remote.go:39
+#: lxc/remote.go:40
msgid ""
"Usage: lxc remote <subcommand> [options]\n"
"\n"
"Manage the list of remote LXD servers.\n"
"\n"
"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL]\n"
+"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
" Add the remote <remote> at <url>.\n"
"\n"
"lxc remote remove <remote>\n"
@@ -1988,7 +2006,7 @@ msgstr ""
msgid "Whether or not to snapshot the container's running state"
msgstr ""
-#: lxc/network.go:492 lxc/remote.go:390 lxc/remote.go:395
+#: lxc/network.go:492 lxc/remote.go:426 lxc/remote.go:431
msgid "YES"
msgstr ""
@@ -2008,7 +2026,7 @@ msgstr ""
msgid "`lxc config profile` is deprecated, please use `lxc profile`"
msgstr ""
-#: lxc/remote.go:378
+#: lxc/remote.go:414
msgid "can't remove the default remote"
msgstr ""
@@ -2016,7 +2034,7 @@ msgstr ""
msgid "can't supply uid/gid/mode in recursive mode"
msgstr ""
-#: lxc/remote.go:404
+#: lxc/remote.go:443
msgid "default"
msgstr ""
@@ -2032,12 +2050,12 @@ msgstr ""
msgid "enabled"
msgstr ""
-#: lxc/action.go:134 lxc/main.go:29 lxc/main.go:183
+#: lxc/action.go:134 lxc/main.go:29 lxc/main.go:185
#, c-format
msgid "error: %v"
msgstr ""
-#: lxc/help.go:37 lxc/main.go:124
+#: lxc/help.go:37 lxc/main.go:126
#, c-format
msgid "error: unknown command: %s"
msgstr ""
@@ -2046,11 +2064,11 @@ msgstr ""
msgid "no"
msgstr ""
-#: lxc/remote.go:237
+#: lxc/remote.go:248
msgid "ok (y/n)?"
msgstr ""
-#: lxc/main.go:355 lxc/main.go:359
+#: lxc/main.go:357 lxc/main.go:361
#, c-format
msgid "processing aliases failed %s\n"
msgstr ""
@@ -2059,22 +2077,22 @@ msgstr ""
msgid "recursive edit doesn't make sense :("
msgstr ""
-#: lxc/remote.go:440
+#: lxc/remote.go:480
#, c-format
msgid "remote %s already exists"
msgstr ""
-#: lxc/remote.go:370 lxc/remote.go:432 lxc/remote.go:467 lxc/remote.go:483
+#: lxc/remote.go:406 lxc/remote.go:472 lxc/remote.go:507 lxc/remote.go:523
#, c-format
msgid "remote %s doesn't exist"
msgstr ""
-#: lxc/remote.go:353
+#: lxc/remote.go:389
#, c-format
msgid "remote %s exists as <%s>"
msgstr ""
-#: lxc/remote.go:374 lxc/remote.go:436 lxc/remote.go:471
+#: lxc/remote.go:410 lxc/remote.go:476 lxc/remote.go:511
#, c-format
msgid "remote %s is static and cannot be modified"
msgstr ""
@@ -2092,7 +2110,7 @@ msgstr ""
msgid "taken at %s"
msgstr ""
-#: lxc/main.go:286
+#: lxc/main.go:288
msgid "wrong number of subcommand arguments"
msgstr ""
diff --git a/po/zh.po b/po/zh.po
index 7f3239585..b258674ce 100644
--- a/po/zh.po
+++ b/po/zh.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: lxd\n"
"Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-"POT-Creation-Date: 2017-07-27 18:42-0400\n"
+"POT-Creation-Date: 2017-07-28 18:33+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@@ -187,11 +187,15 @@ msgstr ""
msgid "ARCHITECTURE"
msgstr ""
-#: lxc/remote.go:67
+#: lxc/remote.go:456
+msgid "AUTH TYPE"
+msgstr ""
+
+#: lxc/remote.go:68
msgid "Accept certificate"
msgstr ""
-#: lxc/remote.go:289
+#: lxc/remote.go:320
#, c-format
msgid "Admin password for %s: "
msgstr ""
@@ -205,6 +209,11 @@ msgstr ""
msgid "Architecture: %s"
msgstr ""
+#: lxc/remote.go:302
+#, c-format
+msgid "Authentication type '%s' not supported by server"
+msgstr ""
+
#: lxc/image.go:601
#, c-format
msgid "Auto update: %s"
@@ -262,12 +271,12 @@ msgstr ""
msgid "Cannot provide container name to list"
msgstr ""
-#: lxc/remote.go:236
+#: lxc/remote.go:247
#, c-format
msgid "Certificate fingerprint: %s"
msgstr ""
-#: lxc/remote.go:324
+#: lxc/remote.go:359
msgid "Client certificate stored at server: "
msgstr ""
@@ -324,11 +333,11 @@ msgstr ""
msgid "Copying the image: %s"
msgstr ""
-#: lxc/remote.go:78
+#: lxc/remote.go:80
msgid "Could not create config dir"
msgstr ""
-#: lxc/remote.go:251
+#: lxc/remote.go:262
msgid "Could not create server cert dir"
msgstr ""
@@ -511,7 +520,7 @@ msgstr ""
msgid "Format (csv|json|table|yaml)"
msgstr ""
-#: lxc/remote.go:89
+#: lxc/remote.go:91
msgid "Generating a client certificate. This may take a minute..."
msgstr ""
@@ -527,7 +536,7 @@ msgstr ""
msgid "ISSUE DATE"
msgstr ""
-#: lxc/main.go:163
+#: lxc/main.go:165
msgid "If this is your first time using LXD, you should also run: lxd init"
msgstr ""
@@ -564,7 +573,7 @@ msgstr ""
msgid "Instance type"
msgstr ""
-#: lxc/remote.go:159
+#: lxc/remote.go:170
#, c-format
msgid "Invalid URL scheme \"%s\" in \"%s\""
msgstr ""
@@ -582,6 +591,11 @@ msgstr ""
msgid "Invalid path %s"
msgstr ""
+#: lxc/remote.go:159
+#, c-format
+msgid "Invalid protocol: %s"
+msgstr ""
+
#: lxc/file.go:457
#, c-format
msgid "Invalid source %s"
@@ -669,12 +683,12 @@ msgstr ""
msgid "Must supply container name for: "
msgstr ""
-#: lxc/list.go:465 lxc/network.go:504 lxc/profile.go:555 lxc/remote.go:414
+#: lxc/list.go:465 lxc/network.go:504 lxc/profile.go:555 lxc/remote.go:453
#: lxc/storage.go:653 lxc/storage.go:748
msgid "NAME"
msgstr ""
-#: lxc/network.go:490 lxc/remote.go:388 lxc/remote.go:393
+#: lxc/network.go:490 lxc/remote.go:424 lxc/remote.go:429
msgid "NO"
msgstr ""
@@ -725,7 +739,7 @@ msgstr ""
msgid "Only \"custom\" volumes can be attached to containers."
msgstr ""
-#: lxc/remote.go:144
+#: lxc/remote.go:153
msgid "Only https URLs are supported for simplestreams"
msgstr ""
@@ -737,7 +751,7 @@ msgstr ""
msgid "Only managed networks can be modified."
msgstr ""
-#: lxc/help.go:71 lxc/main.go:130 lxc/main.go:187
+#: lxc/help.go:71 lxc/main.go:132 lxc/main.go:189
msgid "Options:"
msgstr ""
@@ -757,11 +771,11 @@ msgstr ""
msgid "PROFILES"
msgstr ""
-#: lxc/remote.go:416
+#: lxc/remote.go:455
msgid "PROTOCOL"
msgstr ""
-#: lxc/image.go:230 lxc/remote.go:417
+#: lxc/image.go:230 lxc/remote.go:457
msgid "PUBLIC"
msgstr ""
@@ -781,7 +795,7 @@ msgstr ""
msgid "Path to an alternate server directory"
msgstr ""
-#: lxc/main.go:226
+#: lxc/main.go:228
msgid "Pause containers."
msgstr ""
@@ -858,7 +872,7 @@ msgstr ""
msgid "Properties:"
msgstr ""
-#: lxc/remote.go:70
+#: lxc/remote.go:72
msgid "Public image server"
msgstr ""
@@ -876,7 +890,7 @@ msgstr ""
msgid "Refreshing the image: %s"
msgstr ""
-#: lxc/remote.go:68
+#: lxc/remote.go:69
msgid "Remote admin password"
msgstr ""
@@ -902,7 +916,7 @@ msgstr ""
msgid "Resources:"
msgstr ""
-#: lxc/main.go:234
+#: lxc/main.go:236
msgid "Restart containers."
msgstr ""
@@ -927,7 +941,7 @@ msgstr ""
msgid "STATE"
msgstr ""
-#: lxc/remote.go:418
+#: lxc/remote.go:458
msgid "STATIC"
msgstr ""
@@ -935,15 +949,19 @@ msgstr ""
msgid "STORAGE POOL"
msgstr ""
-#: lxc/remote.go:244
+#: lxc/remote.go:71
+msgid "Server authentication type (tls or macaroons)"
+msgstr ""
+
+#: lxc/remote.go:255
msgid "Server certificate NACKed by user"
msgstr ""
-#: lxc/remote.go:321
-msgid "Server doesn't trust us after adding our cert"
+#: lxc/remote.go:355
+msgid "Server doesn't trust us after authentication"
msgstr ""
-#: lxc/remote.go:69
+#: lxc/remote.go:70
msgid "Server protocol (lxd or simplestreams)"
msgstr ""
@@ -993,7 +1011,7 @@ msgstr ""
msgid "Source:"
msgstr ""
-#: lxc/main.go:244
+#: lxc/main.go:246
msgid "Start containers."
msgstr ""
@@ -1007,7 +1025,7 @@ msgstr ""
msgid "Status: %s"
msgstr ""
-#: lxc/main.go:250
+#: lxc/main.go:252
msgid "Stop containers."
msgstr ""
@@ -1132,7 +1150,7 @@ msgstr ""
msgid "To create a new network, use: lxc network create"
msgstr ""
-#: lxc/main.go:164
+#: lxc/main.go:166
msgid "To start your first container, try: lxc launch ubuntu:16.04"
msgstr ""
@@ -1167,7 +1185,7 @@ msgstr ""
msgid "UPLOAD DATE"
msgstr ""
-#: lxc/remote.go:415
+#: lxc/remote.go:454
msgid "URL"
msgstr ""
@@ -1179,7 +1197,7 @@ msgstr ""
msgid "Unable to find help2man."
msgstr ""
-#: lxc/remote.go:119
+#: lxc/remote.go:121
msgid "Unable to read remote TLS certificate"
msgstr ""
@@ -1809,14 +1827,14 @@ msgid ""
"Publish containers as images."
msgstr ""
-#: lxc/remote.go:39
+#: lxc/remote.go:40
msgid ""
"Usage: lxc remote <subcommand> [options]\n"
"\n"
"Manage the list of remote LXD servers.\n"
"\n"
"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL]\n"
+"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
" Add the remote <remote> at <url>.\n"
"\n"
"lxc remote remove <remote>\n"
@@ -1988,7 +2006,7 @@ msgstr ""
msgid "Whether or not to snapshot the container's running state"
msgstr ""
-#: lxc/network.go:492 lxc/remote.go:390 lxc/remote.go:395
+#: lxc/network.go:492 lxc/remote.go:426 lxc/remote.go:431
msgid "YES"
msgstr ""
@@ -2008,7 +2026,7 @@ msgstr ""
msgid "`lxc config profile` is deprecated, please use `lxc profile`"
msgstr ""
-#: lxc/remote.go:378
+#: lxc/remote.go:414
msgid "can't remove the default remote"
msgstr ""
@@ -2016,7 +2034,7 @@ msgstr ""
msgid "can't supply uid/gid/mode in recursive mode"
msgstr ""
-#: lxc/remote.go:404
+#: lxc/remote.go:443
msgid "default"
msgstr ""
@@ -2032,12 +2050,12 @@ msgstr ""
msgid "enabled"
msgstr ""
-#: lxc/action.go:134 lxc/main.go:29 lxc/main.go:183
+#: lxc/action.go:134 lxc/main.go:29 lxc/main.go:185
#, c-format
msgid "error: %v"
msgstr ""
-#: lxc/help.go:37 lxc/main.go:124
+#: lxc/help.go:37 lxc/main.go:126
#, c-format
msgid "error: unknown command: %s"
msgstr ""
@@ -2046,11 +2064,11 @@ msgstr ""
msgid "no"
msgstr ""
-#: lxc/remote.go:237
+#: lxc/remote.go:248
msgid "ok (y/n)?"
msgstr ""
-#: lxc/main.go:355 lxc/main.go:359
+#: lxc/main.go:357 lxc/main.go:361
#, c-format
msgid "processing aliases failed %s\n"
msgstr ""
@@ -2059,22 +2077,22 @@ msgstr ""
msgid "recursive edit doesn't make sense :("
msgstr ""
-#: lxc/remote.go:440
+#: lxc/remote.go:480
#, c-format
msgid "remote %s already exists"
msgstr ""
-#: lxc/remote.go:370 lxc/remote.go:432 lxc/remote.go:467 lxc/remote.go:483
+#: lxc/remote.go:406 lxc/remote.go:472 lxc/remote.go:507 lxc/remote.go:523
#, c-format
msgid "remote %s doesn't exist"
msgstr ""
-#: lxc/remote.go:353
+#: lxc/remote.go:389
#, c-format
msgid "remote %s exists as <%s>"
msgstr ""
-#: lxc/remote.go:374 lxc/remote.go:436 lxc/remote.go:471
+#: lxc/remote.go:410 lxc/remote.go:476 lxc/remote.go:511
#, c-format
msgid "remote %s is static and cannot be modified"
msgstr ""
@@ -2092,7 +2110,7 @@ msgstr ""
msgid "taken at %s"
msgstr ""
-#: lxc/main.go:286
+#: lxc/main.go:288
msgid "wrong number of subcommand arguments"
msgstr ""
diff --git a/po/zh_Hans.po b/po/zh_Hans.po
index 8d64fd0ab..9128432b5 100644
--- a/po/zh_Hans.po
+++ b/po/zh_Hans.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: lxd\n"
"Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-"POT-Creation-Date: 2017-07-27 18:42-0400\n"
+"POT-Creation-Date: 2017-07-28 18:33+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@@ -187,11 +187,15 @@ msgstr ""
msgid "ARCHITECTURE"
msgstr ""
-#: lxc/remote.go:67
+#: lxc/remote.go:456
+msgid "AUTH TYPE"
+msgstr ""
+
+#: lxc/remote.go:68
msgid "Accept certificate"
msgstr ""
-#: lxc/remote.go:289
+#: lxc/remote.go:320
#, c-format
msgid "Admin password for %s: "
msgstr ""
@@ -205,6 +209,11 @@ msgstr ""
msgid "Architecture: %s"
msgstr ""
+#: lxc/remote.go:302
+#, c-format
+msgid "Authentication type '%s' not supported by server"
+msgstr ""
+
#: lxc/image.go:601
#, c-format
msgid "Auto update: %s"
@@ -262,12 +271,12 @@ msgstr ""
msgid "Cannot provide container name to list"
msgstr ""
-#: lxc/remote.go:236
+#: lxc/remote.go:247
#, c-format
msgid "Certificate fingerprint: %s"
msgstr ""
-#: lxc/remote.go:324
+#: lxc/remote.go:359
msgid "Client certificate stored at server: "
msgstr ""
@@ -324,11 +333,11 @@ msgstr ""
msgid "Copying the image: %s"
msgstr ""
-#: lxc/remote.go:78
+#: lxc/remote.go:80
msgid "Could not create config dir"
msgstr ""
-#: lxc/remote.go:251
+#: lxc/remote.go:262
msgid "Could not create server cert dir"
msgstr ""
@@ -511,7 +520,7 @@ msgstr ""
msgid "Format (csv|json|table|yaml)"
msgstr ""
-#: lxc/remote.go:89
+#: lxc/remote.go:91
msgid "Generating a client certificate. This may take a minute..."
msgstr ""
@@ -527,7 +536,7 @@ msgstr ""
msgid "ISSUE DATE"
msgstr ""
-#: lxc/main.go:163
+#: lxc/main.go:165
msgid "If this is your first time using LXD, you should also run: lxd init"
msgstr ""
@@ -564,7 +573,7 @@ msgstr ""
msgid "Instance type"
msgstr ""
-#: lxc/remote.go:159
+#: lxc/remote.go:170
#, c-format
msgid "Invalid URL scheme \"%s\" in \"%s\""
msgstr ""
@@ -582,6 +591,11 @@ msgstr ""
msgid "Invalid path %s"
msgstr ""
+#: lxc/remote.go:159
+#, c-format
+msgid "Invalid protocol: %s"
+msgstr ""
+
#: lxc/file.go:457
#, c-format
msgid "Invalid source %s"
@@ -669,12 +683,12 @@ msgstr ""
msgid "Must supply container name for: "
msgstr ""
-#: lxc/list.go:465 lxc/network.go:504 lxc/profile.go:555 lxc/remote.go:414
+#: lxc/list.go:465 lxc/network.go:504 lxc/profile.go:555 lxc/remote.go:453
#: lxc/storage.go:653 lxc/storage.go:748
msgid "NAME"
msgstr ""
-#: lxc/network.go:490 lxc/remote.go:388 lxc/remote.go:393
+#: lxc/network.go:490 lxc/remote.go:424 lxc/remote.go:429
msgid "NO"
msgstr ""
@@ -725,7 +739,7 @@ msgstr ""
msgid "Only \"custom\" volumes can be attached to containers."
msgstr ""
-#: lxc/remote.go:144
+#: lxc/remote.go:153
msgid "Only https URLs are supported for simplestreams"
msgstr ""
@@ -737,7 +751,7 @@ msgstr ""
msgid "Only managed networks can be modified."
msgstr ""
-#: lxc/help.go:71 lxc/main.go:130 lxc/main.go:187
+#: lxc/help.go:71 lxc/main.go:132 lxc/main.go:189
msgid "Options:"
msgstr ""
@@ -757,11 +771,11 @@ msgstr ""
msgid "PROFILES"
msgstr ""
-#: lxc/remote.go:416
+#: lxc/remote.go:455
msgid "PROTOCOL"
msgstr ""
-#: lxc/image.go:230 lxc/remote.go:417
+#: lxc/image.go:230 lxc/remote.go:457
msgid "PUBLIC"
msgstr ""
@@ -781,7 +795,7 @@ msgstr ""
msgid "Path to an alternate server directory"
msgstr ""
-#: lxc/main.go:226
+#: lxc/main.go:228
msgid "Pause containers."
msgstr ""
@@ -858,7 +872,7 @@ msgstr ""
msgid "Properties:"
msgstr ""
-#: lxc/remote.go:70
+#: lxc/remote.go:72
msgid "Public image server"
msgstr ""
@@ -876,7 +890,7 @@ msgstr ""
msgid "Refreshing the image: %s"
msgstr ""
-#: lxc/remote.go:68
+#: lxc/remote.go:69
msgid "Remote admin password"
msgstr ""
@@ -902,7 +916,7 @@ msgstr ""
msgid "Resources:"
msgstr ""
-#: lxc/main.go:234
+#: lxc/main.go:236
msgid "Restart containers."
msgstr ""
@@ -927,7 +941,7 @@ msgstr ""
msgid "STATE"
msgstr ""
-#: lxc/remote.go:418
+#: lxc/remote.go:458
msgid "STATIC"
msgstr ""
@@ -935,15 +949,19 @@ msgstr ""
msgid "STORAGE POOL"
msgstr ""
-#: lxc/remote.go:244
+#: lxc/remote.go:71
+msgid "Server authentication type (tls or macaroons)"
+msgstr ""
+
+#: lxc/remote.go:255
msgid "Server certificate NACKed by user"
msgstr ""
-#: lxc/remote.go:321
-msgid "Server doesn't trust us after adding our cert"
+#: lxc/remote.go:355
+msgid "Server doesn't trust us after authentication"
msgstr ""
-#: lxc/remote.go:69
+#: lxc/remote.go:70
msgid "Server protocol (lxd or simplestreams)"
msgstr ""
@@ -993,7 +1011,7 @@ msgstr ""
msgid "Source:"
msgstr ""
-#: lxc/main.go:244
+#: lxc/main.go:246
msgid "Start containers."
msgstr ""
@@ -1007,7 +1025,7 @@ msgstr ""
msgid "Status: %s"
msgstr ""
-#: lxc/main.go:250
+#: lxc/main.go:252
msgid "Stop containers."
msgstr ""
@@ -1132,7 +1150,7 @@ msgstr ""
msgid "To create a new network, use: lxc network create"
msgstr ""
-#: lxc/main.go:164
+#: lxc/main.go:166
msgid "To start your first container, try: lxc launch ubuntu:16.04"
msgstr ""
@@ -1167,7 +1185,7 @@ msgstr ""
msgid "UPLOAD DATE"
msgstr ""
-#: lxc/remote.go:415
+#: lxc/remote.go:454
msgid "URL"
msgstr ""
@@ -1179,7 +1197,7 @@ msgstr ""
msgid "Unable to find help2man."
msgstr ""
-#: lxc/remote.go:119
+#: lxc/remote.go:121
msgid "Unable to read remote TLS certificate"
msgstr ""
@@ -1809,14 +1827,14 @@ msgid ""
"Publish containers as images."
msgstr ""
-#: lxc/remote.go:39
+#: lxc/remote.go:40
msgid ""
"Usage: lxc remote <subcommand> [options]\n"
"\n"
"Manage the list of remote LXD servers.\n"
"\n"
"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL]\n"
+"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
" Add the remote <remote> at <url>.\n"
"\n"
"lxc remote remove <remote>\n"
@@ -1988,7 +2006,7 @@ msgstr ""
msgid "Whether or not to snapshot the container's running state"
msgstr ""
-#: lxc/network.go:492 lxc/remote.go:390 lxc/remote.go:395
+#: lxc/network.go:492 lxc/remote.go:426 lxc/remote.go:431
msgid "YES"
msgstr ""
@@ -2008,7 +2026,7 @@ msgstr ""
msgid "`lxc config profile` is deprecated, please use `lxc profile`"
msgstr ""
-#: lxc/remote.go:378
+#: lxc/remote.go:414
msgid "can't remove the default remote"
msgstr ""
@@ -2016,7 +2034,7 @@ msgstr ""
msgid "can't supply uid/gid/mode in recursive mode"
msgstr ""
-#: lxc/remote.go:404
+#: lxc/remote.go:443
msgid "default"
msgstr ""
@@ -2032,12 +2050,12 @@ msgstr ""
msgid "enabled"
msgstr ""
-#: lxc/action.go:134 lxc/main.go:29 lxc/main.go:183
+#: lxc/action.go:134 lxc/main.go:29 lxc/main.go:185
#, c-format
msgid "error: %v"
msgstr ""
-#: lxc/help.go:37 lxc/main.go:124
+#: lxc/help.go:37 lxc/main.go:126
#, c-format
msgid "error: unknown command: %s"
msgstr ""
@@ -2046,11 +2064,11 @@ msgstr ""
msgid "no"
msgstr ""
-#: lxc/remote.go:237
+#: lxc/remote.go:248
msgid "ok (y/n)?"
msgstr ""
-#: lxc/main.go:355 lxc/main.go:359
+#: lxc/main.go:357 lxc/main.go:361
#, c-format
msgid "processing aliases failed %s\n"
msgstr ""
@@ -2059,22 +2077,22 @@ msgstr ""
msgid "recursive edit doesn't make sense :("
msgstr ""
-#: lxc/remote.go:440
+#: lxc/remote.go:480
#, c-format
msgid "remote %s already exists"
msgstr ""
-#: lxc/remote.go:370 lxc/remote.go:432 lxc/remote.go:467 lxc/remote.go:483
+#: lxc/remote.go:406 lxc/remote.go:472 lxc/remote.go:507 lxc/remote.go:523
#, c-format
msgid "remote %s doesn't exist"
msgstr ""
-#: lxc/remote.go:353
+#: lxc/remote.go:389
#, c-format
msgid "remote %s exists as <%s>"
msgstr ""
-#: lxc/remote.go:374 lxc/remote.go:436 lxc/remote.go:471
+#: lxc/remote.go:410 lxc/remote.go:476 lxc/remote.go:511
#, c-format
msgid "remote %s is static and cannot be modified"
msgstr ""
@@ -2092,7 +2110,7 @@ msgstr ""
msgid "taken at %s"
msgstr ""
-#: lxc/main.go:286
+#: lxc/main.go:288
msgid "wrong number of subcommand arguments"
msgstr ""
diff --git a/test/lxd-benchmark/main.go b/test/lxd-benchmark/main.go
index 9c8eb3c11..858b623dc 100644
--- a/test/lxd-benchmark/main.go
+++ b/test/lxd-benchmark/main.go
@@ -137,7 +137,7 @@ func spawnContainers(c lxd.ContainerServer, count int, image string, privileged
if strings.Contains(image, ":") {
var remote string
- defaultConfig := config.DefaultConfig
+ defaultConfig := config.NewConfig("", true)
defaultConfig.UserAgent = version.UserAgent
remote, fingerprint, err = defaultConfig.ParseRemote(image)
diff --git a/test/suites/remote.sh b/test/suites/remote.sh
index 79a168a52..8cb59e986 100644
--- a/test/suites/remote.sh
+++ b/test/suites/remote.sh
@@ -15,6 +15,9 @@ test_remote_url() {
urls="images.linuxcontainers.org https://images.linuxcontainers.org ${urls}"
fi
+ # an invalid protocol returns an error
+ ! lxc_remote remote add test "${url}" --accept-certificate --password foo --protocol foo
+
for url in ${urls}; do
lxc_remote remote add test "${url}"
lxc_remote remote remove test
More information about the lxc-devel
mailing list