[lxc-devel] [lxd/master] Bugfixes and minor improvements
stgraber on Github
lxc-bot at linuxcontainers.org
Sat Jul 1 20:32:58 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/20170701/1848acc2/attachment.bin>
-------------- next part --------------
From 4b2fe61854d6e8a825b0a9c8f02f7d2f48c35b3c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Sat, 1 Jul 2017 15:58:51 -0400
Subject: [PATCH 1/8] tests: Add a test for read-only disks
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
test/suites/config.sh | 2 ++
1 file changed, 2 insertions(+)
diff --git a/test/suites/config.sh b/test/suites/config.sh
index 0f053ba64..e39455d30 100644
--- a/test/suites/config.sh
+++ b/test/suites/config.sh
@@ -160,6 +160,7 @@ test_config_profiles() {
# test live-adding a nic
lxc start foo
+ lxc exec foo -- cat /proc/self/mountinfo | grep -q "/mnt1.*ro,"
! lxc config show foo | grep -q "raw.lxc"
lxc config show foo --expanded | grep -q "raw.lxc"
! lxc config show foo | grep -v "volatile.eth0" | grep -q "eth0"
@@ -174,6 +175,7 @@ test_config_profiles() {
mkdir "${TEST_DIR}/mnt2"
touch "${TEST_DIR}/mnt2/hosts"
lxc config device add foo mnt2 disk source="${TEST_DIR}/mnt2" path=/mnt2 readonly=true
+ lxc exec foo -- cat /proc/self/mountinfo | grep -q "/mnt2.*ro,"
lxc exec foo -- ls /mnt2/hosts
lxc stop foo --force
lxc start foo
From f81dba94cce6cd77c96eeabd06b2713f04c3d216 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Sat, 1 Jul 2017 15:49:53 -0400
Subject: [PATCH 2/8] shared/cancel: Fix return value ordering
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
client/util.go | 2 +-
lxd/daemon_images.go | 2 +-
shared/cancel/canceler.go | 4 ++--
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/client/util.go b/client/util.go
index 1a166787d..de5073628 100644
--- a/client/util.go
+++ b/client/util.go
@@ -97,7 +97,7 @@ func downloadFileSha256(httpClient *http.Client, useragent string, progress func
}
// Perform the request
- r, err, doneCh := cancel.CancelableDownload(canceler, httpClient, req)
+ r, doneCh, err := cancel.CancelableDownload(canceler, httpClient, req)
if err != nil {
return -1, err
}
diff --git a/lxd/daemon_images.go b/lxd/daemon_images.go
index 3931de54a..ee6244dc6 100644
--- a/lxd/daemon_images.go
+++ b/lxd/daemon_images.go
@@ -433,7 +433,7 @@ func (d *Daemon) ImageDownload(op *operation, server string, protocol string, ce
req.Header.Set("User-Agent", version.UserAgent)
// Make the request
- raw, err, doneCh := cancel.CancelableDownload(canceler, httpClient, req)
+ raw, doneCh, err := cancel.CancelableDownload(canceler, httpClient, req)
defer close(doneCh)
if err != nil {
return nil, err
diff --git a/shared/cancel/canceler.go b/shared/cancel/canceler.go
index 79f60dbf9..c978c6936 100644
--- a/shared/cancel/canceler.go
+++ b/shared/cancel/canceler.go
@@ -24,7 +24,7 @@ func (c *Canceler) Cancel() error {
return nil
}
-func CancelableDownload(c *Canceler, client *http.Client, req *http.Request) (*http.Response, error, chan bool) {
+func CancelableDownload(c *Canceler, client *http.Client, req *http.Request) (*http.Response, chan bool, error) {
chDone := make(chan bool)
go func() {
@@ -47,5 +47,5 @@ func CancelableDownload(c *Canceler, client *http.Client, req *http.Request) (*h
}()
resp, err := client.Do(req)
- return resp, err, chDone
+ return resp, chDone, err
}
From 56816d12e38616fe6b5c8dee78ec7614fe675213 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Sat, 1 Jul 2017 15:53:14 -0400
Subject: [PATCH 3/8] client: Allow canceling image download from LXDs
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
client/lxd_images.go | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/client/lxd_images.go b/client/lxd_images.go
index e17b1d29e..0ba289f34 100644
--- a/client/lxd_images.go
+++ b/client/lxd_images.go
@@ -14,6 +14,7 @@ import (
"github.com/lxc/lxd/shared"
"github.com/lxc/lxd/shared/api"
+ "github.com/lxc/lxd/shared/cancel"
"github.com/lxc/lxd/shared/ioprogress"
)
@@ -117,11 +118,12 @@ func (r *ProtocolLXD) GetPrivateImageFile(fingerprint string, secret string, req
}
// Start the request
- response, err := r.http.Do(request)
+ response, doneCh, err := cancel.CancelableDownload(req.Canceler, r.http, request)
if err != nil {
return nil, err
}
defer response.Body.Close()
+ defer close(doneCh)
if response.StatusCode != http.StatusOK {
_, _, err := r.parseResponse(response)
From ea3466464a0d9b3c615f061b8bea86a4d2e74db1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Sat, 1 Jul 2017 16:26:28 -0400
Subject: [PATCH 4/8] shared/cancel: Use request Cancel channel
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
shared/cancel/canceler.go | 21 +++++++--------------
1 file changed, 7 insertions(+), 14 deletions(-)
diff --git a/shared/cancel/canceler.go b/shared/cancel/canceler.go
index c978c6936..83c58992f 100644
--- a/shared/cancel/canceler.go
+++ b/shared/cancel/canceler.go
@@ -7,7 +7,7 @@ import (
// A struct to track canceleation
type Canceler struct {
- chCancel chan bool
+ chCancel chan struct{}
}
func (c *Canceler) Cancelable() bool {
@@ -26,21 +26,14 @@ func (c *Canceler) Cancel() error {
func CancelableDownload(c *Canceler, client *http.Client, req *http.Request) (*http.Response, chan bool, error) {
chDone := make(chan bool)
+ chCancel := make(chan struct{})
+ if c != nil {
+ c.chCancel = chCancel
+ }
+ req.Cancel = chCancel
go func() {
- chCancel := make(chan bool)
- if c != nil {
- c.chCancel = chCancel
- }
-
- select {
- case <-chCancel:
- if transport, ok := client.Transport.(*http.Transport); ok {
- transport.CancelRequest(req)
- }
- case <-chDone:
- }
-
+ <-chDone
if c != nil {
c.chCancel = nil
}
From fea5cffb4cd6ff5adfcb0b23b7314758b68f57e4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Sat, 1 Jul 2017 15:41:52 -0400
Subject: [PATCH 5/8] client: Add CancelTarget to RemoteOperation
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
client/operations.go | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/client/operations.go b/client/operations.go
index 7bf1cbd60..0c0db3808 100644
--- a/client/operations.go
+++ b/client/operations.go
@@ -267,6 +267,15 @@ func (op *RemoteOperation) AddHandler(function func(api.Operation)) (*EventTarge
return target, nil
}
+// CancelTarget attempts to cancel the target operation
+func (op *RemoteOperation) CancelTarget() error {
+ if op.targetOp == nil {
+ return fmt.Errorf("No associated target operation")
+ }
+
+ return op.targetOp.Cancel()
+}
+
// GetTarget returns the target operation
func (op *RemoteOperation) GetTarget() (*api.Operation, error) {
if op.targetOp == nil {
From 8f1568b9fadd6888ea2d5db5a89b6d5cc6fb8873 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Sat, 1 Jul 2017 15:53:50 -0400
Subject: [PATCH 6/8] lxc: Add plumbing for operation cancelation
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
lxc/utils.go | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 60 insertions(+)
diff --git a/lxc/utils.go b/lxc/utils.go
index 4900ca0ac..c7fd4f4a7 100644
--- a/lxc/utils.go
+++ b/lxc/utils.go
@@ -5,8 +5,10 @@ import (
"net"
"net/url"
"os"
+ "os/signal"
"strings"
"syscall"
+ "time"
"github.com/lxc/lxd/client"
"github.com/lxc/lxd/shared/api"
@@ -26,6 +28,7 @@ type ProgressRenderer struct {
Format string
maxLength int
+ wait time.Time
}
func (p *ProgressRenderer) Done(msg string) {
@@ -44,6 +47,11 @@ func (p *ProgressRenderer) Done(msg string) {
}
func (p *ProgressRenderer) Update(status string) {
+ timeout := time.Until(p.wait)
+ if timeout.Seconds() > 0 {
+ time.Sleep(timeout)
+ }
+
msg := "%s"
if p.Format != "" {
msg = p.Format
@@ -60,6 +68,19 @@ func (p *ProgressRenderer) Update(status string) {
fmt.Print(msg)
}
+func (p *ProgressRenderer) Warn(status string, timeout time.Duration) {
+ p.wait = time.Now().Add(timeout)
+ msg := fmt.Sprintf("\r%s", status)
+
+ if len(msg) > p.maxLength {
+ p.maxLength = len(msg)
+ } else {
+ fmt.Printf("\r%s", strings.Repeat(" ", p.maxLength))
+ }
+
+ fmt.Print(msg)
+}
+
func (p *ProgressRenderer) UpdateProgress(progress lxd.ProgressData) {
p.Update(progress.Text)
}
@@ -282,3 +303,42 @@ func profileDeviceAdd(client lxd.ContainerServer, name string, devName string, d
return nil
}
+
+// Wait for an operation and cancel it on SIGINT/SIGTERM
+func cancelableWait(op *lxd.RemoteOperation, progress *ProgressRenderer) error {
+ // Signal handling
+ chSignal := make(chan os.Signal)
+ signal.Notify(chSignal, os.Interrupt)
+
+ // Operation handling
+ chOperation := make(chan error)
+ go func() {
+ chOperation <- op.Wait()
+ close(chOperation)
+ }()
+
+ count := 0
+ for {
+ select {
+ case err := <-chOperation:
+ return err
+ case <-chSignal:
+ err := op.CancelTarget()
+ if err == nil {
+ return fmt.Errorf(i18n.G("Remote operation canceled by user"))
+ } else {
+ count++
+
+ if count == 3 {
+ return fmt.Errorf(i18n.G("User signaled us three times, exiting. The remote operation will keep running."))
+ }
+
+ if progress != nil {
+ progress.Warn(fmt.Sprintf(i18n.G("%v (interrupt two more times to force)"), err), time.Second*5)
+ }
+ }
+ }
+ }
+
+ return nil
+}
From 73ac97bdc1e40e7d411a55dbe309a0068e735a3b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Sat, 1 Jul 2017 15:54:09 -0400
Subject: [PATCH 7/8] lxc: Make it possible to cancel image downloads
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Closes #2294
Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
lxc/image.go | 2 +-
lxc/init.go | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/lxc/image.go b/lxc/image.go
index 8cc78dd3b..8985a4571 100644
--- a/lxc/image.go
+++ b/lxc/image.go
@@ -427,7 +427,7 @@ func (c *imageCmd) run(conf *config.Config, args []string) error {
}
// Wait for operation to finish
- err = op.Wait()
+ err = cancelableWait(op, &progress)
if err != nil {
progress.Done("")
return err
diff --git a/lxc/init.go b/lxc/init.go
index 254da6952..fb483b70b 100644
--- a/lxc/init.go
+++ b/lxc/init.go
@@ -290,7 +290,7 @@ func (c *initCmd) create(conf *config.Config, args []string) (lxd.ContainerServe
return nil, "", err
}
- err = op.Wait()
+ err = cancelableWait(op, &progress)
if err != nil {
progress.Done("")
return nil, "", err
From 90ace9716e6d0d106d1615466540a79c848f3b96 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Sat, 1 Jul 2017 16:32:05 -0400
Subject: [PATCH 8/8] i18n: Update translations
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
po/de.po | 26 +++++++++++++++++++++-----
po/el.po | 25 ++++++++++++++++++++-----
po/fr.po | 26 +++++++++++++++++++++-----
po/it.po | 25 ++++++++++++++++++++-----
po/ja.po | 26 +++++++++++++++++++++-----
po/lxd.pot | 23 ++++++++++++++++++-----
po/nl.po | 25 ++++++++++++++++++++-----
po/ru.po | 25 ++++++++++++++++++++-----
po/sr.po | 25 ++++++++++++++++++++-----
po/sv.po | 25 ++++++++++++++++++++-----
po/tr.po | 25 ++++++++++++++++++++-----
11 files changed, 221 insertions(+), 55 deletions(-)
diff --git a/po/de.po b/po/de.po
index 3eb0f51c1..5e3bd2a00 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-06-30 17:03-0400\n"
+"POT-Creation-Date: 2017-07-01 16:31-0400\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/"
@@ -218,6 +218,11 @@ msgstr ""
msgid "%s is not a directory"
msgstr ""
+#: lxc/utils.go:337
+#, c-format
+msgid "%v (interrupt two more times to force)"
+msgstr ""
+
#: lxc/file.go:129
#, c-format
msgid "'%s' isn't a regular file or directory."
@@ -431,7 +436,7 @@ msgstr "Gerät %s wurde zu %s hinzugefügt\n"
msgid "Device %s removed from %s"
msgstr "Gerät %s wurde von %s entfernt\n"
-#: lxc/utils.go:248 lxc/utils.go:272
+#: lxc/utils.go:269 lxc/utils.go:293
#, fuzzy, c-format
msgid "Device already exists: %s"
msgstr "entfernte Instanz %s existiert bereits"
@@ -626,7 +631,7 @@ msgstr "Ungültiges Ziel %s"
msgid "Invalid source %s"
msgstr "Ungültige Quelle %s"
-#: lxc/file.go:225
+#: lxc/file.go:229
#, c-format
msgid "Invalid target %s"
msgstr "Ungültiges Ziel %s"
@@ -685,7 +690,7 @@ msgstr ""
msgid "Memory usage:"
msgstr ""
-#: lxc/utils.go:199
+#: lxc/utils.go:220
msgid "Missing summary."
msgstr "Fehlende Zusammenfassung."
@@ -927,6 +932,11 @@ msgstr ""
msgid "Remote admin password"
msgstr "Entferntes Administrator Passwort"
+#: lxc/utils.go:328
+#, fuzzy
+msgid "Remote operation canceled by user"
+msgstr "Server Zertifikat vom Benutzer nicht akzeptiert"
+
#: lxc/info.go:101
#, c-format
msgid "Remote: %s"
@@ -2146,6 +2156,12 @@ msgstr ""
msgid "User aborted delete operation."
msgstr ""
+#: lxc/utils.go:333
+msgid ""
+"User signaled us three times, exiting. The remote operation will keep "
+"running."
+msgstr ""
+
#: lxc/restore.go:38
msgid ""
"Whether or not to restore the container's running state from snapshot (if "
@@ -2184,7 +2200,7 @@ msgstr ""
msgid "can't remove the default remote"
msgstr ""
-#: lxc/file.go:273
+#: lxc/file.go:277
msgid "can't supply uid/gid/mode in recursive mode"
msgstr ""
diff --git a/po/el.po b/po/el.po
index fd895d9ac..30af00369 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-06-30 17:03-0400\n"
+"POT-Creation-Date: 2017-07-01 16:31-0400\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/"
@@ -132,6 +132,11 @@ msgstr ""
msgid "%s is not a directory"
msgstr ""
+#: lxc/utils.go:337
+#, c-format
+msgid "%v (interrupt two more times to force)"
+msgstr ""
+
#: lxc/file.go:129
#, c-format
msgid "'%s' isn't a regular file or directory."
@@ -340,7 +345,7 @@ msgstr ""
msgid "Device %s removed from %s"
msgstr ""
-#: lxc/utils.go:248 lxc/utils.go:272
+#: lxc/utils.go:269 lxc/utils.go:293
#, c-format
msgid "Device already exists: %s"
msgstr ""
@@ -528,7 +533,7 @@ msgstr ""
msgid "Invalid source %s"
msgstr ""
-#: lxc/file.go:225
+#: lxc/file.go:229
#, c-format
msgid "Invalid target %s"
msgstr ""
@@ -587,7 +592,7 @@ msgstr ""
msgid "Memory usage:"
msgstr " Χρήση μνήμης:"
-#: lxc/utils.go:199
+#: lxc/utils.go:220
msgid "Missing summary."
msgstr ""
@@ -818,6 +823,10 @@ msgstr ""
msgid "Remote admin password"
msgstr ""
+#: lxc/utils.go:328
+msgid "Remote operation canceled by user"
+msgstr ""
+
#: lxc/info.go:101
#, c-format
msgid "Remote: %s"
@@ -1866,6 +1875,12 @@ msgstr ""
msgid "User aborted delete operation."
msgstr ""
+#: lxc/utils.go:333
+msgid ""
+"User signaled us three times, exiting. The remote operation will keep "
+"running."
+msgstr ""
+
#: lxc/restore.go:38
msgid ""
"Whether or not to restore the container's running state from snapshot (if "
@@ -1900,7 +1915,7 @@ msgstr ""
msgid "can't remove the default remote"
msgstr ""
-#: lxc/file.go:273
+#: lxc/file.go:277
msgid "can't supply uid/gid/mode in recursive mode"
msgstr ""
diff --git a/po/fr.po b/po/fr.po
index 8cfa72c0e..ff103db94 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-06-30 17:03-0400\n"
+"POT-Creation-Date: 2017-07-01 16:31-0400\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/"
@@ -209,6 +209,11 @@ msgstr "%s (%d de plus)"
msgid "%s is not a directory"
msgstr ""
+#: lxc/utils.go:337
+#, c-format
+msgid "%v (interrupt two more times to force)"
+msgstr ""
+
#: lxc/file.go:129
#, c-format
msgid "'%s' isn't a regular file or directory."
@@ -421,7 +426,7 @@ msgstr "Périphérique %s ajouté à %s"
msgid "Device %s removed from %s"
msgstr "Périphérique %s retiré de %s"
-#: lxc/utils.go:248 lxc/utils.go:272
+#: lxc/utils.go:269 lxc/utils.go:293
#, fuzzy, c-format
msgid "Device already exists: %s"
msgstr "le serveur distant %s existe déjà"
@@ -616,7 +621,7 @@ msgstr "Cible invalide %s"
msgid "Invalid source %s"
msgstr "Source invalide %s"
-#: lxc/file.go:225
+#: lxc/file.go:229
#, c-format
msgid "Invalid target %s"
msgstr "Cible invalide %s"
@@ -675,7 +680,7 @@ msgstr "Mémoire (pointe)"
msgid "Memory usage:"
msgstr " Mémoire utilisée :"
-#: lxc/utils.go:199
+#: lxc/utils.go:220
msgid "Missing summary."
msgstr "Résumé manquant."
@@ -910,6 +915,11 @@ msgstr "Récupération de l'image : %s"
msgid "Remote admin password"
msgstr "Mot de passe de l'administrateur distant"
+#: lxc/utils.go:328
+#, fuzzy
+msgid "Remote operation canceled by user"
+msgstr "Certificat serveur rejeté par l'utilisateur"
+
#: lxc/info.go:101
#, c-format
msgid "Remote: %s"
@@ -2426,6 +2436,12 @@ msgstr ""
msgid "User aborted delete operation."
msgstr "L'utilisateur a annulé l'opération de suppression."
+#: lxc/utils.go:333
+msgid ""
+"User signaled us three times, exiting. The remote operation will keep "
+"running."
+msgstr ""
+
#: lxc/restore.go:38
msgid ""
"Whether or not to restore the container's running state from snapshot (if "
@@ -2466,7 +2482,7 @@ msgstr ""
msgid "can't remove the default remote"
msgstr "impossible de supprimer le serveur distant par défaut"
-#: lxc/file.go:273
+#: lxc/file.go:277
msgid "can't supply uid/gid/mode in recursive mode"
msgstr "impossible de spécifier uid/gid/mode en mode récursif"
diff --git a/po/it.po b/po/it.po
index 3e7baaca7..d29d4132c 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-06-30 17:03-0400\n"
+"POT-Creation-Date: 2017-07-01 16:31-0400\n"
"PO-Revision-Date: 2017-06-15 22:46+0000\n"
"Last-Translator: Alberto Donato <alberto.donato at gmail.com>\n"
"Language-Team: Italian <https://hosted.weblate.org/projects/linux-containers/"
@@ -153,6 +153,11 @@ msgstr "%s (altri %d)"
msgid "%s is not a directory"
msgstr ""
+#: lxc/utils.go:337
+#, c-format
+msgid "%v (interrupt two more times to force)"
+msgstr ""
+
#: lxc/file.go:129
#, c-format
msgid "'%s' isn't a regular file or directory."
@@ -360,7 +365,7 @@ msgstr ""
msgid "Device %s removed from %s"
msgstr ""
-#: lxc/utils.go:248 lxc/utils.go:272
+#: lxc/utils.go:269 lxc/utils.go:293
#, fuzzy, c-format
msgid "Device already exists: %s"
msgstr "il remote %s esiste già"
@@ -547,7 +552,7 @@ msgstr ""
msgid "Invalid source %s"
msgstr ""
-#: lxc/file.go:225
+#: lxc/file.go:229
#, c-format
msgid "Invalid target %s"
msgstr ""
@@ -605,7 +610,7 @@ msgstr ""
msgid "Memory usage:"
msgstr ""
-#: lxc/utils.go:199
+#: lxc/utils.go:220
msgid "Missing summary."
msgstr ""
@@ -835,6 +840,10 @@ msgstr ""
msgid "Remote admin password"
msgstr ""
+#: lxc/utils.go:328
+msgid "Remote operation canceled by user"
+msgstr ""
+
#: lxc/info.go:101
#, c-format
msgid "Remote: %s"
@@ -1884,6 +1893,12 @@ msgstr ""
msgid "User aborted delete operation."
msgstr ""
+#: lxc/utils.go:333
+msgid ""
+"User signaled us three times, exiting. The remote operation will keep "
+"running."
+msgstr ""
+
#: lxc/restore.go:38
msgid ""
"Whether or not to restore the container's running state from snapshot (if "
@@ -1919,7 +1934,7 @@ msgstr ""
msgid "can't remove the default remote"
msgstr ""
-#: lxc/file.go:273
+#: lxc/file.go:277
msgid "can't supply uid/gid/mode in recursive mode"
msgstr ""
diff --git a/po/ja.po b/po/ja.po
index a02a4f630..7f1470496 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-06-30 17:03-0400\n"
+"POT-Creation-Date: 2017-07-01 16:31-0400\n"
"PO-Revision-Date: 2017-03-23 12:03+0000\n"
"Last-Translator: KATOH Yasufumi <karma at jazz.email.ne.jp>\n"
"Language-Team: Japanese <https://hosted.weblate.org/projects/linux-"
@@ -132,6 +132,11 @@ msgstr ""
msgid "%s is not a directory"
msgstr ""
+#: lxc/utils.go:337
+#, c-format
+msgid "%v (interrupt two more times to force)"
+msgstr ""
+
#: lxc/file.go:129
#, c-format
msgid "'%s' isn't a regular file or directory."
@@ -342,7 +347,7 @@ msgstr "デバイス %s が %s に追加されました"
msgid "Device %s removed from %s"
msgstr "デバイス %s が %s から削除されました"
-#: lxc/utils.go:248 lxc/utils.go:272
+#: lxc/utils.go:269 lxc/utils.go:293
#, fuzzy, c-format
msgid "Device already exists: %s"
msgstr "リモート %s は既に存在します"
@@ -533,7 +538,7 @@ msgstr "不正なパス %s"
msgid "Invalid source %s"
msgstr "不正なソース %s"
-#: lxc/file.go:225
+#: lxc/file.go:229
#, c-format
msgid "Invalid target %s"
msgstr "不正な送り先 %s"
@@ -591,7 +596,7 @@ msgstr "メモリ (ピーク)"
msgid "Memory usage:"
msgstr "メモリ消費量:"
-#: lxc/utils.go:199
+#: lxc/utils.go:220
msgid "Missing summary."
msgstr "サマリーはありません。"
@@ -824,6 +829,11 @@ msgstr "イメージの取得中: %s"
msgid "Remote admin password"
msgstr "リモートの管理者パスワード"
+#: lxc/utils.go:328
+#, fuzzy
+msgid "Remote operation canceled by user"
+msgstr "ユーザによりサーバ証明書が拒否されました"
+
#: lxc/info.go:101
#, c-format
msgid "Remote: %s"
@@ -2491,6 +2501,12 @@ msgstr ""
msgid "User aborted delete operation."
msgstr "ユーザが削除操作を中断しました。"
+#: lxc/utils.go:333
+msgid ""
+"User signaled us three times, exiting. The remote operation will keep "
+"running."
+msgstr ""
+
#: lxc/restore.go:38
msgid ""
"Whether or not to restore the container's running state from snapshot (if "
@@ -2527,7 +2543,7 @@ msgstr "`lxc config profile` は廃止されました。`lxc profile` を使っ
msgid "can't remove the default remote"
msgstr "デフォルトのリモートは削除できません"
-#: lxc/file.go:273
+#: lxc/file.go:277
msgid "can't supply uid/gid/mode in recursive mode"
msgstr "再帰 (recursive) モードでは uid/gid/mode を指定できません"
diff --git a/po/lxd.pot b/po/lxd.pot
index 0363f2799..b68743b4b 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-06-30 17:03-0400\n"
+ "POT-Creation-Date: 2017-07-01 16:31-0400\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"
@@ -123,6 +123,11 @@ msgstr ""
msgid "%s is not a directory"
msgstr ""
+#: lxc/utils.go:337
+#, c-format
+msgid "%v (interrupt two more times to force)"
+msgstr ""
+
#: lxc/file.go:129
#, c-format
msgid "'%s' isn't a regular file or directory."
@@ -328,7 +333,7 @@ msgstr ""
msgid "Device %s removed from %s"
msgstr ""
-#: lxc/utils.go:248 lxc/utils.go:272
+#: lxc/utils.go:269 lxc/utils.go:293
#, c-format
msgid "Device already exists: %s"
msgstr ""
@@ -515,7 +520,7 @@ msgstr ""
msgid "Invalid source %s"
msgstr ""
-#: lxc/file.go:225
+#: lxc/file.go:229
#, c-format
msgid "Invalid target %s"
msgstr ""
@@ -573,7 +578,7 @@ msgstr ""
msgid "Memory usage:"
msgstr ""
-#: lxc/utils.go:199
+#: lxc/utils.go:220
msgid "Missing summary."
msgstr ""
@@ -802,6 +807,10 @@ msgstr ""
msgid "Remote admin password"
msgstr ""
+#: lxc/utils.go:328
+msgid "Remote operation canceled by user"
+msgstr ""
+
#: lxc/info.go:101
#, c-format
msgid "Remote: %s"
@@ -1770,6 +1779,10 @@ msgstr ""
msgid "User aborted delete operation."
msgstr ""
+#: lxc/utils.go:333
+msgid "User signaled us three times, exiting. The remote operation will keep running."
+msgstr ""
+
#: lxc/restore.go:38
msgid "Whether or not to restore the container's running state from snapshot (if available)"
msgstr ""
@@ -1802,7 +1815,7 @@ msgstr ""
msgid "can't remove the default remote"
msgstr ""
-#: lxc/file.go:273
+#: lxc/file.go:277
msgid "can't supply uid/gid/mode in recursive mode"
msgstr ""
diff --git a/po/nl.po b/po/nl.po
index 035d87772..35477cc5e 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-06-30 17:03-0400\n"
+"POT-Creation-Date: 2017-07-01 16:31-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@@ -129,6 +129,11 @@ msgstr ""
msgid "%s is not a directory"
msgstr ""
+#: lxc/utils.go:337
+#, c-format
+msgid "%v (interrupt two more times to force)"
+msgstr ""
+
#: lxc/file.go:129
#, c-format
msgid "'%s' isn't a regular file or directory."
@@ -336,7 +341,7 @@ msgstr ""
msgid "Device %s removed from %s"
msgstr ""
-#: lxc/utils.go:248 lxc/utils.go:272
+#: lxc/utils.go:269 lxc/utils.go:293
#, c-format
msgid "Device already exists: %s"
msgstr ""
@@ -523,7 +528,7 @@ msgstr ""
msgid "Invalid source %s"
msgstr ""
-#: lxc/file.go:225
+#: lxc/file.go:229
#, c-format
msgid "Invalid target %s"
msgstr ""
@@ -581,7 +586,7 @@ msgstr ""
msgid "Memory usage:"
msgstr ""
-#: lxc/utils.go:199
+#: lxc/utils.go:220
msgid "Missing summary."
msgstr ""
@@ -811,6 +816,10 @@ msgstr ""
msgid "Remote admin password"
msgstr ""
+#: lxc/utils.go:328
+msgid "Remote operation canceled by user"
+msgstr ""
+
#: lxc/info.go:101
#, c-format
msgid "Remote: %s"
@@ -1859,6 +1868,12 @@ msgstr ""
msgid "User aborted delete operation."
msgstr ""
+#: lxc/utils.go:333
+msgid ""
+"User signaled us three times, exiting. The remote operation will keep "
+"running."
+msgstr ""
+
#: lxc/restore.go:38
msgid ""
"Whether or not to restore the container's running state from snapshot (if "
@@ -1893,7 +1908,7 @@ msgstr ""
msgid "can't remove the default remote"
msgstr ""
-#: lxc/file.go:273
+#: lxc/file.go:277
msgid "can't supply uid/gid/mode in recursive mode"
msgstr ""
diff --git a/po/ru.po b/po/ru.po
index 8a13ea3df..3cea0d8a4 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-06-30 17:03-0400\n"
+"POT-Creation-Date: 2017-07-01 16:31-0400\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/"
@@ -200,6 +200,11 @@ msgstr ""
msgid "%s is not a directory"
msgstr ""
+#: lxc/utils.go:337
+#, c-format
+msgid "%v (interrupt two more times to force)"
+msgstr ""
+
#: lxc/file.go:129
#, c-format
msgid "'%s' isn't a regular file or directory."
@@ -409,7 +414,7 @@ msgstr ""
msgid "Device %s removed from %s"
msgstr ""
-#: lxc/utils.go:248 lxc/utils.go:272
+#: lxc/utils.go:269 lxc/utils.go:293
#, c-format
msgid "Device already exists: %s"
msgstr ""
@@ -597,7 +602,7 @@ msgstr ""
msgid "Invalid source %s"
msgstr ""
-#: lxc/file.go:225
+#: lxc/file.go:229
#, c-format
msgid "Invalid target %s"
msgstr ""
@@ -656,7 +661,7 @@ msgstr ""
msgid "Memory usage:"
msgstr " Использование памяти:"
-#: lxc/utils.go:199
+#: lxc/utils.go:220
msgid "Missing summary."
msgstr ""
@@ -887,6 +892,10 @@ msgstr "Копирование образа: %s"
msgid "Remote admin password"
msgstr ""
+#: lxc/utils.go:328
+msgid "Remote operation canceled by user"
+msgstr ""
+
#: lxc/info.go:101
#, c-format
msgid "Remote: %s"
@@ -1943,6 +1952,12 @@ msgstr ""
msgid "User aborted delete operation."
msgstr ""
+#: lxc/utils.go:333
+msgid ""
+"User signaled us three times, exiting. The remote operation will keep "
+"running."
+msgstr ""
+
#: lxc/restore.go:38
msgid ""
"Whether or not to restore the container's running state from snapshot (if "
@@ -1977,7 +1992,7 @@ msgstr ""
msgid "can't remove the default remote"
msgstr ""
-#: lxc/file.go:273
+#: lxc/file.go:277
msgid "can't supply uid/gid/mode in recursive mode"
msgstr ""
diff --git a/po/sr.po b/po/sr.po
index 78e89175e..6c552b1c7 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-06-30 17:03-0400\n"
+"POT-Creation-Date: 2017-07-01 16:31-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@@ -129,6 +129,11 @@ msgstr ""
msgid "%s is not a directory"
msgstr ""
+#: lxc/utils.go:337
+#, c-format
+msgid "%v (interrupt two more times to force)"
+msgstr ""
+
#: lxc/file.go:129
#, c-format
msgid "'%s' isn't a regular file or directory."
@@ -336,7 +341,7 @@ msgstr ""
msgid "Device %s removed from %s"
msgstr ""
-#: lxc/utils.go:248 lxc/utils.go:272
+#: lxc/utils.go:269 lxc/utils.go:293
#, c-format
msgid "Device already exists: %s"
msgstr ""
@@ -523,7 +528,7 @@ msgstr ""
msgid "Invalid source %s"
msgstr ""
-#: lxc/file.go:225
+#: lxc/file.go:229
#, c-format
msgid "Invalid target %s"
msgstr ""
@@ -581,7 +586,7 @@ msgstr ""
msgid "Memory usage:"
msgstr ""
-#: lxc/utils.go:199
+#: lxc/utils.go:220
msgid "Missing summary."
msgstr ""
@@ -811,6 +816,10 @@ msgstr ""
msgid "Remote admin password"
msgstr ""
+#: lxc/utils.go:328
+msgid "Remote operation canceled by user"
+msgstr ""
+
#: lxc/info.go:101
#, c-format
msgid "Remote: %s"
@@ -1859,6 +1868,12 @@ msgstr ""
msgid "User aborted delete operation."
msgstr ""
+#: lxc/utils.go:333
+msgid ""
+"User signaled us three times, exiting. The remote operation will keep "
+"running."
+msgstr ""
+
#: lxc/restore.go:38
msgid ""
"Whether or not to restore the container's running state from snapshot (if "
@@ -1893,7 +1908,7 @@ msgstr ""
msgid "can't remove the default remote"
msgstr ""
-#: lxc/file.go:273
+#: lxc/file.go:277
msgid "can't supply uid/gid/mode in recursive mode"
msgstr ""
diff --git a/po/sv.po b/po/sv.po
index 931812b87..4d04435cf 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-06-30 17:03-0400\n"
+"POT-Creation-Date: 2017-07-01 16:31-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@@ -129,6 +129,11 @@ msgstr ""
msgid "%s is not a directory"
msgstr ""
+#: lxc/utils.go:337
+#, c-format
+msgid "%v (interrupt two more times to force)"
+msgstr ""
+
#: lxc/file.go:129
#, c-format
msgid "'%s' isn't a regular file or directory."
@@ -336,7 +341,7 @@ msgstr ""
msgid "Device %s removed from %s"
msgstr ""
-#: lxc/utils.go:248 lxc/utils.go:272
+#: lxc/utils.go:269 lxc/utils.go:293
#, c-format
msgid "Device already exists: %s"
msgstr ""
@@ -523,7 +528,7 @@ msgstr ""
msgid "Invalid source %s"
msgstr ""
-#: lxc/file.go:225
+#: lxc/file.go:229
#, c-format
msgid "Invalid target %s"
msgstr ""
@@ -581,7 +586,7 @@ msgstr ""
msgid "Memory usage:"
msgstr ""
-#: lxc/utils.go:199
+#: lxc/utils.go:220
msgid "Missing summary."
msgstr ""
@@ -811,6 +816,10 @@ msgstr ""
msgid "Remote admin password"
msgstr ""
+#: lxc/utils.go:328
+msgid "Remote operation canceled by user"
+msgstr ""
+
#: lxc/info.go:101
#, c-format
msgid "Remote: %s"
@@ -1859,6 +1868,12 @@ msgstr ""
msgid "User aborted delete operation."
msgstr ""
+#: lxc/utils.go:333
+msgid ""
+"User signaled us three times, exiting. The remote operation will keep "
+"running."
+msgstr ""
+
#: lxc/restore.go:38
msgid ""
"Whether or not to restore the container's running state from snapshot (if "
@@ -1893,7 +1908,7 @@ msgstr ""
msgid "can't remove the default remote"
msgstr ""
-#: lxc/file.go:273
+#: lxc/file.go:277
msgid "can't supply uid/gid/mode in recursive mode"
msgstr ""
diff --git a/po/tr.po b/po/tr.po
index 543d2cf85..d87b5907f 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-06-30 17:03-0400\n"
+"POT-Creation-Date: 2017-07-01 16:31-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@@ -129,6 +129,11 @@ msgstr ""
msgid "%s is not a directory"
msgstr ""
+#: lxc/utils.go:337
+#, c-format
+msgid "%v (interrupt two more times to force)"
+msgstr ""
+
#: lxc/file.go:129
#, c-format
msgid "'%s' isn't a regular file or directory."
@@ -336,7 +341,7 @@ msgstr ""
msgid "Device %s removed from %s"
msgstr ""
-#: lxc/utils.go:248 lxc/utils.go:272
+#: lxc/utils.go:269 lxc/utils.go:293
#, c-format
msgid "Device already exists: %s"
msgstr ""
@@ -523,7 +528,7 @@ msgstr ""
msgid "Invalid source %s"
msgstr ""
-#: lxc/file.go:225
+#: lxc/file.go:229
#, c-format
msgid "Invalid target %s"
msgstr ""
@@ -581,7 +586,7 @@ msgstr ""
msgid "Memory usage:"
msgstr ""
-#: lxc/utils.go:199
+#: lxc/utils.go:220
msgid "Missing summary."
msgstr ""
@@ -811,6 +816,10 @@ msgstr ""
msgid "Remote admin password"
msgstr ""
+#: lxc/utils.go:328
+msgid "Remote operation canceled by user"
+msgstr ""
+
#: lxc/info.go:101
#, c-format
msgid "Remote: %s"
@@ -1859,6 +1868,12 @@ msgstr ""
msgid "User aborted delete operation."
msgstr ""
+#: lxc/utils.go:333
+msgid ""
+"User signaled us three times, exiting. The remote operation will keep "
+"running."
+msgstr ""
+
#: lxc/restore.go:38
msgid ""
"Whether or not to restore the container's running state from snapshot (if "
@@ -1893,7 +1908,7 @@ msgstr ""
msgid "can't remove the default remote"
msgstr ""
-#: lxc/file.go:273
+#: lxc/file.go:277
msgid "can't supply uid/gid/mode in recursive mode"
msgstr ""
More information about the lxc-devel
mailing list