From 36ad2cbcbc70c9f7c445b4588a997f731ef0f0b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Wed, 4 Feb 2026 16:24:23 +0100 Subject: [PATCH 1/9] shared/cliconfig: Don't pass scheme to OCI creds helper MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #2876 Signed-off-by: Stéphane Graber --- shared/cliconfig/remote.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared/cliconfig/remote.go b/shared/cliconfig/remote.go index 3ec3c6f8b..245619328 100644 --- a/shared/cliconfig/remote.go +++ b/shared/cliconfig/remote.go @@ -215,7 +215,7 @@ func (c *Config) GetImageServer(name string) (incus.ImageServer, error) { err = subprocess.RunCommandWithFds( context.TODO(), - strings.NewReader(fmt.Sprintf("%s://%s", u.Scheme, u.Host)), + strings.NewReader(u.Host), &stdout, remote.CredHelper, "get") From 06f30e185f805b9efe59e0599191b34e72423caa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Wed, 4 Feb 2026 16:32:38 +0100 Subject: [PATCH 2/9] incusd/cluster: Allow restoring a cluster without its instances MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #2888 Signed-off-by: Stéphane Graber --- cmd/incusd/api_cluster.go | 6 ++- cmd/incusd/api_cluster_evacuation.go | 58 ++++++++++++++-------------- 2 files changed, 35 insertions(+), 29 deletions(-) diff --git a/cmd/incusd/api_cluster.go b/cmd/incusd/api_cluster.go index 70c4cac1f..6ecdf6100 100644 --- a/cmd/incusd/api_cluster.go +++ b/cmd/incusd/api_cluster.go @@ -3031,7 +3031,11 @@ func clusterNodeStatePost(d *Daemon, r *http.Request) response.Response { return operations.OperationResponse(op) } else if req.Action == "restore" { - return restoreClusterMember(d, r) + if req.Mode != "" && req.Mode != "skip" { + return response.BadRequest(fmt.Errorf("Invalid restore mode %q", req.Mode)) + } + + return restoreClusterMember(d, r, req.Mode == "skip") } return response.BadRequest(fmt.Errorf("Unknown action %q", req.Action)) diff --git a/cmd/incusd/api_cluster_evacuation.go b/cmd/incusd/api_cluster_evacuation.go index 6cbcf33c7..5eba0eea8 100644 --- a/cmd/incusd/api_cluster_evacuation.go +++ b/cmd/incusd/api_cluster_evacuation.go @@ -258,7 +258,7 @@ func evacuateInstancesFunc(ctx context.Context, inst instance.Instance, opts eva return nil } -func restoreClusterMember(d *Daemon, r *http.Request) response.Response { +func restoreClusterMember(d *Daemon, r *http.Request, skipInstances bool) response.Response { s := d.State() originName, err := url.PathUnescape(mux.Vars(r)["name"]) @@ -266,41 +266,43 @@ func restoreClusterMember(d *Daemon, r *http.Request) response.Response { return response.SmartError(err) } - // List the instances. - var dbInstances []dbCluster.Instance - err = s.DB.Cluster.Transaction(r.Context(), func(ctx context.Context, tx *db.ClusterTx) error { - dbInstances, err = dbCluster.GetInstances(ctx, tx.Tx()) - if err != nil { - return fmt.Errorf("Failed to get instances: %w", err) - } - - return nil - }) - if err != nil { - return response.SmartError(err) - } - + // Handle instances. instances := make([]instance.Instance, 0) localInstances := make([]instance.Instance, 0) - for _, dbInst := range dbInstances { - inst, err := instance.LoadByProjectAndName(s, dbInst.Project, dbInst.Name) + if !skipInstances { + var dbInstances []dbCluster.Instance + err = s.DB.Cluster.Transaction(r.Context(), func(ctx context.Context, tx *db.ClusterTx) error { + dbInstances, err = dbCluster.GetInstances(ctx, tx.Tx()) + if err != nil { + return fmt.Errorf("Failed to get instances: %w", err) + } + + return nil + }) if err != nil { - return response.SmartError(fmt.Errorf("Failed to load instance: %w", err)) + return response.SmartError(err) } - if dbInst.Node == originName { - localInstances = append(localInstances, inst) - continue - } + for _, dbInst := range dbInstances { + inst, err := instance.LoadByProjectAndName(s, dbInst.Project, dbInst.Name) + if err != nil { + return response.SmartError(fmt.Errorf("Failed to load instance: %w", err)) + } - // Only consider instances where volatile.evacuate.origin is set to the node which needs to be restored. - val, ok := inst.LocalConfig()["volatile.evacuate.origin"] - if !ok || val != originName { - continue - } + if dbInst.Node == originName { + localInstances = append(localInstances, inst) + continue + } - instances = append(instances, inst) + // Only consider instances where volatile.evacuate.origin is set to the node which needs to be restored. + val, ok := inst.LocalConfig()["volatile.evacuate.origin"] + if !ok || val != originName { + continue + } + + instances = append(instances, inst) + } } run := func(op *operations.Operation) error { From 4d5964728fee6da8192724c4ab3e0ca0cd92ec7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Wed, 4 Feb 2026 16:36:34 +0100 Subject: [PATCH 3/9] incus/cluster: Add --action for restore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Graber --- cmd/incus/cluster.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmd/incus/cluster.go b/cmd/incus/cluster.go index 1af9bfda0..d88b1b622 100644 --- a/cmd/incus/cluster.go +++ b/cmd/incus/cluster.go @@ -1626,6 +1626,8 @@ func (c *cmdClusterRestore) Command() *cobra.Command { cmd.Short = i18n.G("Restore cluster member") cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(`Restore cluster member`)) + cmd.Flags().StringVar(&c.action.flagAction, "action", "", i18n.G(`Force a particular restoration action`)+"``") + cmd.ValidArgsFunction = func(_ *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { if len(args) == 0 { return c.global.cmpClusterMembers(toComplete) From ad3246391e4282a67d1a1b6c57dbd111fb142d4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Wed, 4 Feb 2026 16:37:19 +0100 Subject: [PATCH 4/9] i18n: Update translation templates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Graber --- po/de.po | 64 ++++++++++++----------- po/es.po | 64 ++++++++++++----------- po/fr.po | 138 +++++++++++++++++++++++++++----------------------- po/id.po | 64 ++++++++++++----------- po/incus.pot | 64 ++++++++++++----------- po/it.po | 64 ++++++++++++----------- po/ja.po | 65 +++++++++++++----------- po/nb_NO.po | 64 ++++++++++++----------- po/nl.po | 64 ++++++++++++----------- po/pt.po | 69 +++++++++++++------------ po/pt_BR.po | 64 ++++++++++++----------- po/ru.po | 64 ++++++++++++----------- po/sv.po | 65 +++++++++++++----------- po/ta.po | 64 ++++++++++++----------- po/zh_Hans.po | 65 +++++++++++++----------- po/zh_Hant.po | 64 ++++++++++++----------- 16 files changed, 591 insertions(+), 515 deletions(-) diff --git a/po/de.po b/po/de.po index 92f98c063..43a346b4c 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@lists.linuxcontainers.org\n" -"POT-Creation-Date: 2026-01-20 21:57-0500\n" +"POT-Creation-Date: 2026-02-04 16:37+0100\n" "PO-Revision-Date: 2025-12-27 03:16+0000\n" "Last-Translator: Dklfajsjfi49wefklsf32 " "\n" @@ -1075,7 +1075,7 @@ msgstr "entfernte Instanz %s existiert bereits" msgid "Aliases:" msgstr "Aliase:" -#: cmd/incus/cluster.go:1933 +#: cmd/incus/cluster.go:1935 msgid "All existing data is lost when joining a cluster, continue?" msgstr "" "Alle existierenden Dateien sind verloren, wenn sie dem Cluster beitreten, " @@ -1105,11 +1105,11 @@ msgstr "Architektur: %s" msgid "Architecture: %v" msgstr "Architektur: %v" -#: cmd/incus/cluster.go:1831 +#: cmd/incus/cluster.go:1833 msgid "Are you joining an existing cluster?" msgstr "Soll der Server einem bestehenden Cluster beitreten?" -#: cmd/incus/cluster.go:1670 +#: cmd/incus/cluster.go:1672 #, fuzzy, c-format msgid "Are you sure you want to %s cluster member %q? (yes/no) [default=no]: " msgstr "" @@ -1529,7 +1529,7 @@ msgid "" "Certificate fingerprint mismatch between certificate token and server %q" msgstr "" -#: cmd/incus/cluster.go:1883 cmd/incus/cluster.go:2076 +#: cmd/incus/cluster.go:1885 cmd/incus/cluster.go:2078 #, c-format msgid "" "Certificate fingerprint mismatch between join token and cluster member %q" @@ -1549,7 +1549,7 @@ msgstr "" msgid "Checking if the daemon is ready (attempt %d)" msgstr "" -#: cmd/incus/cluster.go:1982 +#: cmd/incus/cluster.go:1984 #, c-format msgid "Choose %s:" msgstr "" @@ -2956,7 +2956,7 @@ msgstr "" msgid "Ephemeral instance" msgstr "Kurzlebiger Container" -#: cmd/incus/cluster.go:1877 cmd/incus/cluster.go:2070 +#: cmd/incus/cluster.go:1879 cmd/incus/cluster.go:2072 #, c-format msgid "Error connecting to existing cluster member %q: %v" msgstr "Fehler beim Verbinden mit bestehendem Clustermitglied %q: %v" @@ -3031,7 +3031,7 @@ msgstr "Fehler: %v\n" msgid "Evacuate cluster member" msgstr "Evakuieren eines Clustermitglieds" -#: cmd/incus/cluster.go:1695 +#: cmd/incus/cluster.go:1697 #, fuzzy, c-format msgid "Evacuating cluster member: %s" msgstr "Evakuieren der Clustermitglieder: %s" @@ -3316,7 +3316,7 @@ msgstr "kann nicht zum selben Container Namen kopieren" msgid "Failed converting token operation to certificate add token: %w" msgstr "" -#: cmd/incus/cluster.go:1183 cmd/incus/cluster.go:1917 +#: cmd/incus/cluster.go:1183 cmd/incus/cluster.go:1919 #, fuzzy, c-format msgid "Failed converting token operation to join token: %w" msgstr "kann nicht zum selben Container Namen kopieren" @@ -3336,7 +3336,7 @@ msgstr "Kein Zertifikat für diese Verbindung" msgid "Failed generating SSH host key: %w" msgstr "Akzeptiere Zertifikat" -#: cmd/incus/cluster.go:2019 +#: cmd/incus/cluster.go:2021 #, fuzzy, c-format msgid "Failed generating trust certificate: %w" msgstr "Akzeptiere Zertifikat" @@ -3400,7 +3400,7 @@ msgstr "Akzeptiere Zertifikat" msgid "Failed to add remote" msgstr "" -#: cmd/incus/cluster.go:2029 +#: cmd/incus/cluster.go:2031 #, fuzzy, c-format msgid "Failed to add server cert to cluster: %w" msgstr "Akzeptiere Zertifikat" @@ -3440,7 +3440,7 @@ msgstr "kann nicht zum selben Container Namen kopieren" msgid "Failed to connect to local daemon: %w" msgstr "kann nicht zum selben Container Namen kopieren" -#: cmd/incus/cluster.go:2014 +#: cmd/incus/cluster.go:2016 #, fuzzy, c-format msgid "Failed to connect to target cluster node %q: %w" msgstr "kann nicht zum selben Container Namen kopieren" @@ -3495,7 +3495,7 @@ msgstr "Akzeptiere Zertifikat" msgid "Failed to find project: %w" msgstr "" -#: cmd/incus/cluster.go:2113 cmd/incus/cluster.go:2118 +#: cmd/incus/cluster.go:2115 cmd/incus/cluster.go:2120 #, fuzzy, c-format msgid "Failed to join cluster: %w" msgstr "kann nicht zum selben Container Namen kopieren" @@ -3525,7 +3525,7 @@ msgstr "Akzeptiere Zertifikat" msgid "Failed to parse dump response: %w" msgstr "Akzeptiere Zertifikat" -#: cmd/incus/cluster.go:1660 +#: cmd/incus/cluster.go:1662 #, fuzzy, c-format msgid "Failed to parse servers: %w" msgstr "Akzeptiere Zertifikat" @@ -3570,7 +3570,7 @@ msgstr "Akzeptiere Zertifikat" msgid "Failed to request dump: %w" msgstr "Akzeptiere Zertifikat" -#: cmd/incus/cluster.go:1978 +#: cmd/incus/cluster.go:1980 #, fuzzy, c-format msgid "Failed to retrieve cluster information: %w" msgstr "Akzeptiere Zertifikat" @@ -3608,12 +3608,12 @@ msgstr "Akzeptiere Zertifikat" msgid "Failed to retrieve list of storage pools: %w" msgstr "Akzeptiere Zertifikat" -#: cmd/incus/cluster.go:1952 +#: cmd/incus/cluster.go:1954 #, fuzzy, c-format msgid "Failed to setup trust relationship with cluster: %w" msgstr "kann nicht zum selben Container Namen kopieren" -#: cmd/incus/cluster.go:1687 +#: cmd/incus/cluster.go:1689 #, fuzzy, c-format msgid "Failed to update cluster member state: %w" msgstr "kann nicht zum selben Container Namen kopieren" @@ -3664,6 +3664,10 @@ msgstr "Fingerabdruck: %s\n" msgid "Force a particular evacuation action" msgstr "" +#: cmd/incus/cluster.go:1629 +msgid "Force a particular restoration action" +msgstr "" + #: cmd/incus/file.go:109 cmd/incus/storage_volume.go:2432 msgid "Force creating files or directories" msgstr "" @@ -3676,7 +3680,7 @@ msgstr "" msgid "Force deleting files, directories, and subdirectories" msgstr "" -#: cmd/incus/cluster.go:1644 +#: cmd/incus/cluster.go:1646 msgid "Force evacuation without user confirmation" msgstr "" @@ -4369,7 +4373,7 @@ msgstr "" msgid "Instance type" msgstr "" -#: cmd/incus/cluster.go:1814 +#: cmd/incus/cluster.go:1816 #, fuzzy msgid "Invalid IP address or DNS name" msgstr "Ungültige Quelle %s" @@ -4411,7 +4415,7 @@ msgstr "Akzeptiere Zertifikat" msgid "Invalid certificate format %q" msgstr "Akzeptiere Zertifikat" -#: cmd/incus/cluster.go:2055 +#: cmd/incus/cluster.go:2057 #, fuzzy, c-format msgid "Invalid cluster join token: %w" msgstr "Profil %s wurde auf %s angewandt\n" @@ -4460,7 +4464,7 @@ msgstr "Ungültige Quelle %s" msgid "Invalid instance path: %q" msgstr "Ungültige Quelle %s" -#: cmd/incus/cluster.go:1854 +#: cmd/incus/cluster.go:1856 #, fuzzy, c-format msgid "Invalid join token: %w" msgstr "Profil %s wurde auf %s angewandt\n" @@ -4558,7 +4562,7 @@ msgstr "" msgid "Join an existing server to a cluster" msgstr "Soll der Server einem bestehenden Cluster beitreten?" -#: cmd/incus/cluster.go:1845 +#: cmd/incus/cluster.go:1847 msgid "Joining an existing cluster requires root privileges" msgstr "" @@ -5982,7 +5986,7 @@ msgstr "Fingerabdruck des Zertifikats: % x\n" msgid "Missing cluster group name" msgstr "der Name des Ursprung Containers muss angegeben werden" -#: cmd/incus/cluster.go:966 cmd/incus/cluster.go:1666 +#: cmd/incus/cluster.go:966 cmd/incus/cluster.go:1668 #: cmd/incus/cluster_group.go:147 cmd/incus/cluster_group.go:656 #: cmd/incus/cluster_group.go:860 cmd/incus/cluster_role.go:84 #: cmd/incus/cluster_role.go:153 @@ -6824,7 +6828,7 @@ msgstr "Administrator Passwort für %s: " msgid "Password rejected for %q" msgstr "Administrator Passwort für %s: " -#: cmd/incus/cluster.go:2040 +#: cmd/incus/cluster.go:2042 #, fuzzy, c-format msgid "Path %s doesn't exist" msgstr "entfernte Instanz %s existiert nicht" @@ -6856,7 +6860,7 @@ msgstr "" msgid "Please provide an alternate server address (empty to abort):" msgstr "Alternatives config Verzeichnis." -#: cmd/incus/cluster.go:1861 +#: cmd/incus/cluster.go:1863 #, fuzzy msgid "Please provide join token:" msgstr "Profil %s wurde auf %s angewandt\n" @@ -7498,7 +7502,7 @@ msgstr "Herunterfahren des Containers erzwingen." msgid "Restore storage volume snapshots" msgstr "Herunterfahren des Containers erzwingen." -#: cmd/incus/cluster.go:1693 +#: cmd/incus/cluster.go:1695 #, fuzzy, c-format msgid "Restoring cluster member: %s" msgstr "der Name des Ursprung Containers muss angegeben werden" @@ -9101,7 +9105,7 @@ msgstr "" msgid "UUID: %v" msgstr "" -#: cmd/incus/cluster.go:1892 cmd/incus/cluster.go:2085 +#: cmd/incus/cluster.go:1894 cmd/incus/cluster.go:2087 #, fuzzy msgid "Unable to connect to any of the cluster members specified in join token" msgstr "kann nicht zum selben Container Namen kopieren" @@ -9433,7 +9437,7 @@ msgstr "" msgid "User ID to run the command as (default 0)" msgstr "" -#: cmd/incus/cluster.go:1939 +#: cmd/incus/cluster.go:1941 #, fuzzy msgid "User aborted configuration" msgstr "Profil %s erstellt\n" @@ -9566,7 +9570,7 @@ msgstr "" msgid "Web server running at: %s" msgstr "" -#: cmd/incus/cluster.go:1820 +#: cmd/incus/cluster.go:1822 msgid "What IP address or DNS name should be used to reach this server?" msgstr "" @@ -9578,7 +9582,7 @@ msgstr "" msgid "What IPv6 address should be used?" msgstr "" -#: cmd/incus/cluster.go:1790 +#: cmd/incus/cluster.go:1792 msgid "What member name should be used to identify this server in the cluster?" msgstr "" diff --git a/po/es.po b/po/es.po index 627d872d4..19ec338c3 100644 --- a/po/es.po +++ b/po/es.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: lxd\n" "Report-Msgid-Bugs-To: lxc-devel@lists.linuxcontainers.org\n" -"POT-Creation-Date: 2026-01-20 21:57-0500\n" +"POT-Creation-Date: 2026-02-04 16:37+0100\n" "PO-Revision-Date: 2025-12-27 03:15+0000\n" "Last-Translator: Jorge Teixeira \n" "Language-Team: Spanish \n" @@ -1032,7 +1032,7 @@ msgstr "El dispostivo ya existe: %s" msgid "Aliases:" msgstr "Aliases:" -#: cmd/incus/cluster.go:1933 +#: cmd/incus/cluster.go:1935 msgid "All existing data is lost when joining a cluster, continue?" msgstr "" @@ -1060,11 +1060,11 @@ msgstr "Arquitectura: %s" msgid "Architecture: %v" msgstr "Arquitectura: %s" -#: cmd/incus/cluster.go:1831 +#: cmd/incus/cluster.go:1833 msgid "Are you joining an existing cluster?" msgstr "" -#: cmd/incus/cluster.go:1670 +#: cmd/incus/cluster.go:1672 #, c-format msgid "Are you sure you want to %s cluster member %q? (yes/no) [default=no]: " msgstr "" @@ -1458,7 +1458,7 @@ msgid "" "Certificate fingerprint mismatch between certificate token and server %q" msgstr "" -#: cmd/incus/cluster.go:1883 cmd/incus/cluster.go:2076 +#: cmd/incus/cluster.go:1885 cmd/incus/cluster.go:2078 #, c-format msgid "" "Certificate fingerprint mismatch between join token and cluster member %q" @@ -1478,7 +1478,7 @@ msgstr "" msgid "Checking if the daemon is ready (attempt %d)" msgstr "" -#: cmd/incus/cluster.go:1982 +#: cmd/incus/cluster.go:1984 #, c-format msgid "Choose %s:" msgstr "" @@ -2820,7 +2820,7 @@ msgstr "" msgid "Ephemeral instance" msgstr "" -#: cmd/incus/cluster.go:1877 cmd/incus/cluster.go:2070 +#: cmd/incus/cluster.go:1879 cmd/incus/cluster.go:2072 #, fuzzy, c-format msgid "Error connecting to existing cluster member %q: %v" msgstr "Nombre del Miembro del Cluster" @@ -2895,7 +2895,7 @@ msgstr "Error: %v\n" msgid "Evacuate cluster member" msgstr "No se puede proveer el nombre del container a la lista" -#: cmd/incus/cluster.go:1695 +#: cmd/incus/cluster.go:1697 #, fuzzy, c-format msgid "Evacuating cluster member: %s" msgstr "Nombre del Miembro del Cluster" @@ -3123,7 +3123,7 @@ msgstr "Nombre del Miembro del Cluster" msgid "Failed converting token operation to certificate add token: %w" msgstr "" -#: cmd/incus/cluster.go:1183 cmd/incus/cluster.go:1917 +#: cmd/incus/cluster.go:1183 cmd/incus/cluster.go:1919 #, fuzzy, c-format msgid "Failed converting token operation to join token: %w" msgstr "Nombre del Miembro del Cluster" @@ -3143,7 +3143,7 @@ msgstr "" msgid "Failed generating SSH host key: %w" msgstr "Acepta certificado" -#: cmd/incus/cluster.go:2019 +#: cmd/incus/cluster.go:2021 #, fuzzy, c-format msgid "Failed generating trust certificate: %w" msgstr "Acepta certificado" @@ -3207,7 +3207,7 @@ msgstr "Acepta certificado" msgid "Failed to add remote" msgstr "" -#: cmd/incus/cluster.go:2029 +#: cmd/incus/cluster.go:2031 #, fuzzy, c-format msgid "Failed to add server cert to cluster: %w" msgstr "Acepta certificado" @@ -3247,7 +3247,7 @@ msgstr "Nombre del Miembro del Cluster" msgid "Failed to connect to local daemon: %w" msgstr "Nombre del Miembro del Cluster" -#: cmd/incus/cluster.go:2014 +#: cmd/incus/cluster.go:2016 #, fuzzy, c-format msgid "Failed to connect to target cluster node %q: %w" msgstr "Nombre del Miembro del Cluster" @@ -3302,7 +3302,7 @@ msgstr "Acepta certificado" msgid "Failed to find project: %w" msgstr "" -#: cmd/incus/cluster.go:2113 cmd/incus/cluster.go:2118 +#: cmd/incus/cluster.go:2115 cmd/incus/cluster.go:2120 #, fuzzy, c-format msgid "Failed to join cluster: %w" msgstr "Nombre del Miembro del Cluster" @@ -3332,7 +3332,7 @@ msgstr "Acepta certificado" msgid "Failed to parse dump response: %w" msgstr "Acepta certificado" -#: cmd/incus/cluster.go:1660 +#: cmd/incus/cluster.go:1662 #, fuzzy, c-format msgid "Failed to parse servers: %w" msgstr "Acepta certificado" @@ -3377,7 +3377,7 @@ msgstr "Acepta certificado" msgid "Failed to request dump: %w" msgstr "Acepta certificado" -#: cmd/incus/cluster.go:1978 +#: cmd/incus/cluster.go:1980 #, fuzzy, c-format msgid "Failed to retrieve cluster information: %w" msgstr "Acepta certificado" @@ -3415,12 +3415,12 @@ msgstr "Acepta certificado" msgid "Failed to retrieve list of storage pools: %w" msgstr "Acepta certificado" -#: cmd/incus/cluster.go:1952 +#: cmd/incus/cluster.go:1954 #, fuzzy, c-format msgid "Failed to setup trust relationship with cluster: %w" msgstr "Nombre del Miembro del Cluster" -#: cmd/incus/cluster.go:1687 +#: cmd/incus/cluster.go:1689 #, fuzzy, c-format msgid "Failed to update cluster member state: %w" msgstr "Nombre del Miembro del Cluster" @@ -3468,6 +3468,10 @@ msgstr "Huella dactilar: %s" msgid "Force a particular evacuation action" msgstr "" +#: cmd/incus/cluster.go:1629 +msgid "Force a particular restoration action" +msgstr "" + #: cmd/incus/file.go:109 cmd/incus/storage_volume.go:2432 msgid "Force creating files or directories" msgstr "" @@ -3480,7 +3484,7 @@ msgstr "" msgid "Force deleting files, directories, and subdirectories" msgstr "" -#: cmd/incus/cluster.go:1644 +#: cmd/incus/cluster.go:1646 msgid "Force evacuation without user confirmation" msgstr "" @@ -4164,7 +4168,7 @@ msgstr "Nombre del contenedor es: %s" msgid "Instance type" msgstr "" -#: cmd/incus/cluster.go:1814 +#: cmd/incus/cluster.go:1816 #, fuzzy msgid "Invalid IP address or DNS name" msgstr "Nombre del contenedor es: %s" @@ -4205,7 +4209,7 @@ msgstr "" msgid "Invalid certificate format %q" msgstr "Nombre del contenedor es: %s" -#: cmd/incus/cluster.go:2055 +#: cmd/incus/cluster.go:2057 #, fuzzy, c-format msgid "Invalid cluster join token: %w" msgstr "Nombre del contenedor es: %s" @@ -4253,7 +4257,7 @@ msgstr "Nombre del contenedor es: %s" msgid "Invalid instance path: %q" msgstr "Nombre del contenedor es: %s" -#: cmd/incus/cluster.go:1854 +#: cmd/incus/cluster.go:1856 #, fuzzy, c-format msgid "Invalid join token: %w" msgstr "Nombre del contenedor es: %s" @@ -4345,7 +4349,7 @@ msgstr "Cacheado: %s" msgid "Join an existing server to a cluster" msgstr "" -#: cmd/incus/cluster.go:1845 +#: cmd/incus/cluster.go:1847 msgid "Joining an existing cluster requires root privileges" msgstr "" @@ -5739,7 +5743,7 @@ msgstr "Certificado de la huella digital: %s" msgid "Missing cluster group name" msgstr "Nombre del Miembro del Cluster" -#: cmd/incus/cluster.go:966 cmd/incus/cluster.go:1666 +#: cmd/incus/cluster.go:966 cmd/incus/cluster.go:1668 #: cmd/incus/cluster_group.go:147 cmd/incus/cluster_group.go:656 #: cmd/incus/cluster_group.go:860 cmd/incus/cluster_role.go:84 #: cmd/incus/cluster_role.go:153 @@ -6562,7 +6566,7 @@ msgstr "Contraseña admin para %s:" msgid "Password rejected for %q" msgstr "Contraseña admin para %s:" -#: cmd/incus/cluster.go:2040 +#: cmd/incus/cluster.go:2042 #, fuzzy, c-format msgid "Path %s doesn't exist" msgstr "El dispostivo ya existe: %s" @@ -6592,7 +6596,7 @@ msgstr "" msgid "Please provide an alternate server address (empty to abort):" msgstr "" -#: cmd/incus/cluster.go:1861 +#: cmd/incus/cluster.go:1863 #, fuzzy msgid "Please provide join token:" msgstr "Nombre del Miembro del Cluster" @@ -7218,7 +7222,7 @@ msgstr "No se puede proveer el nombre del container a la lista" msgid "Restore storage volume snapshots" msgstr "" -#: cmd/incus/cluster.go:1693 +#: cmd/incus/cluster.go:1695 #, fuzzy, c-format msgid "Restoring cluster member: %s" msgstr "Nombre del Miembro del Cluster" @@ -8770,7 +8774,7 @@ msgstr "" msgid "UUID: %v" msgstr "" -#: cmd/incus/cluster.go:1892 cmd/incus/cluster.go:2085 +#: cmd/incus/cluster.go:1894 cmd/incus/cluster.go:2087 #, fuzzy msgid "Unable to connect to any of the cluster members specified in join token" msgstr "Nombre del Miembro del Cluster" @@ -9091,7 +9095,7 @@ msgstr "" msgid "User ID to run the command as (default 0)" msgstr "" -#: cmd/incus/cluster.go:1939 +#: cmd/incus/cluster.go:1941 #, fuzzy msgid "User aborted configuration" msgstr "Perfil %s creado" @@ -9220,7 +9224,7 @@ msgstr "" msgid "Web server running at: %s" msgstr "" -#: cmd/incus/cluster.go:1820 +#: cmd/incus/cluster.go:1822 msgid "What IP address or DNS name should be used to reach this server?" msgstr "" @@ -9232,7 +9236,7 @@ msgstr "" msgid "What IPv6 address should be used?" msgstr "" -#: cmd/incus/cluster.go:1790 +#: cmd/incus/cluster.go:1792 msgid "What member name should be used to identify this server in the cluster?" msgstr "" diff --git a/po/fr.po b/po/fr.po index 49a15d34f..5f7b728de 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@lists.linuxcontainers.org\n" -"POT-Creation-Date: 2026-01-20 21:57-0500\n" +"POT-Creation-Date: 2026-02-04 16:37+0100\n" "PO-Revision-Date: 2026-01-30 16:56+0000\n" "Last-Translator: Benjamin Somers \n" "Language-Team: French \n" @@ -791,8 +791,8 @@ msgstr "… [:]/" msgid "" "|| [] [:] [key=value...]" msgstr "" -"|| [] [:] [" -"=…]" +"|| [] [:] " +"[=…]" #: cmd/incus/manpage.go:23 msgid "" @@ -994,8 +994,8 @@ msgstr "Ajoutez des règles à une liste de contrôle d'accès (ACL)" msgid "" "Additional storage pool configuration property (KEY=VALUE, empty when done):" msgstr "" -"Propriété de configuration du pool de stockage supplémentaire (" -"=, rien lorsque terminé) :" +"Propriété de configuration du pool de stockage supplémentaire " +"(=, rien lorsque terminé) :" #: cmd/incus/admin_init.go:53 msgid "Address to bind to (default: none)" @@ -1054,7 +1054,7 @@ msgstr "Les alias suivants existent déjà : %s" msgid "Aliases:" msgstr "Alias :" -#: cmd/incus/cluster.go:1933 +#: cmd/incus/cluster.go:1935 msgid "All existing data is lost when joining a cluster, continue?" msgstr "" "Toutes les données seront perdues après avoir rejoint le cluster, voulez-" @@ -1083,11 +1083,11 @@ msgstr "Architecture : %s" msgid "Architecture: %v" msgstr "Architecture : %v" -#: cmd/incus/cluster.go:1831 +#: cmd/incus/cluster.go:1833 msgid "Are you joining an existing cluster?" msgstr "Rejoingez-vous un cluster existant ?" -#: cmd/incus/cluster.go:1670 +#: cmd/incus/cluster.go:1672 #, c-format msgid "Are you sure you want to %s cluster member %q? (yes/no) [default=no]: " msgstr "" @@ -1218,8 +1218,8 @@ msgstr "Sauvegardes :" #, c-format msgid "Bad device override syntax, expecting ,=: %s" msgstr "" -"Impossible de traiter ce remplacement, la syntaxe attendue est " -",= : %s" +"Impossible de traiter ce remplacement, la syntaxe attendue est ," +"= : %s" #: cmd/incus/network.go:432 cmd/incus/network_acl.go:473 #: cmd/incus/network_address_set.go:316 cmd/incus/network_forward.go:399 @@ -1489,7 +1489,7 @@ msgid "" msgstr "" "Incompatibilité d'empreinte de certificat entre le jeton et le serveur %q" -#: cmd/incus/cluster.go:1883 cmd/incus/cluster.go:2076 +#: cmd/incus/cluster.go:1885 cmd/incus/cluster.go:2078 #, c-format msgid "" "Certificate fingerprint mismatch between join token and cluster member %q" @@ -1511,7 +1511,7 @@ msgstr "Châssis" msgid "Checking if the daemon is ready (attempt %d)" msgstr "Test si le démon est prêt (tentative %d)" -#: cmd/incus/cluster.go:1982 +#: cmd/incus/cluster.go:1984 #, c-format msgid "Choose %s:" msgstr "Choisir %s:" @@ -2859,8 +2859,8 @@ msgid "" "Enter a sorting type ('a' for alphabetical, 'c' for CPU, 'm' for memory, 'd' " "for disk):" msgstr "" -"Entrez le type de tri souhaité (« a » pour alphabétique, « c » pour CPU, « m " -"» pour mémoire, ou « d » pour disque) :" +"Entrez le type de tri souhaité (« a » pour alphabétique, « c » pour CPU, " +"« m » pour mémoire, ou « d » pour disque) :" #: cmd/incus/top.go:275 msgid "Enter new delay in seconds:" @@ -2878,7 +2878,7 @@ msgstr "Variable d'environnement (de la forme HOME=/home/foo) à positionner" msgid "Ephemeral instance" msgstr "Instance éphémère" -#: cmd/incus/cluster.go:1877 cmd/incus/cluster.go:2070 +#: cmd/incus/cluster.go:1879 cmd/incus/cluster.go:2072 #, c-format msgid "Error connecting to existing cluster member %q: %v" msgstr "Erreur de connexion à un membre existant du cluster %q : %v" @@ -2952,7 +2952,7 @@ msgstr "Erreur : %v\n" msgid "Evacuate cluster member" msgstr "Évacuer un membre du cluster" -#: cmd/incus/cluster.go:1695 +#: cmd/incus/cluster.go:1697 #, c-format msgid "Evacuating cluster member: %s" msgstr "Évacuation du membre du cluster : %s" @@ -3236,7 +3236,7 @@ msgstr "" "Échec de la conversion de l'opération de jeton en jeton d'ajout de " "certificat : %w" -#: cmd/incus/cluster.go:1183 cmd/incus/cluster.go:1917 +#: cmd/incus/cluster.go:1183 cmd/incus/cluster.go:1919 #, c-format msgid "Failed converting token operation to join token: %w" msgstr "" @@ -3257,7 +3257,7 @@ msgstr "Échec de la suppression du volume source après la copie : %w" msgid "Failed generating SSH host key: %w" msgstr "Échec de la génération de la clef d’hôte SSH : %w" -#: cmd/incus/cluster.go:2019 +#: cmd/incus/cluster.go:2021 #, c-format msgid "Failed generating trust certificate: %w" msgstr "Échec de la génération du certificat de confiance : %w" @@ -3322,7 +3322,7 @@ msgstr "Échec de l'acceptation de la connexion entrante : %w" msgid "Failed to add remote" msgstr "Échec de l'ajout d'un serveur distant" -#: cmd/incus/cluster.go:2029 +#: cmd/incus/cluster.go:2031 #, c-format msgid "Failed to add server cert to cluster: %w" msgstr "Échec de l'ajout d'un certificat de serveur au cluster : %w" @@ -3363,7 +3363,7 @@ msgstr "" msgid "Failed to connect to local daemon: %w" msgstr "Échec de la connexion au démon local : %w" -#: cmd/incus/cluster.go:2014 +#: cmd/incus/cluster.go:2016 #, c-format msgid "Failed to connect to target cluster node %q: %w" msgstr "Échec de la connexion au nœud de cluster cible %q : %w" @@ -3420,7 +3420,7 @@ msgstr "" msgid "Failed to find project: %w" msgstr "Échec de la recherche du projet : %w" -#: cmd/incus/cluster.go:2113 cmd/incus/cluster.go:2118 +#: cmd/incus/cluster.go:2115 cmd/incus/cluster.go:2120 #, c-format msgid "Failed to join cluster: %w" msgstr "Échec de l'adhésion au cluster : %w" @@ -3450,7 +3450,7 @@ msgstr "Échec de la fermeture du fichier de certificat du serveur %q : %w" msgid "Failed to parse dump response: %w" msgstr "Échec de l'analyse de la réponse du dump : %w" -#: cmd/incus/cluster.go:1660 +#: cmd/incus/cluster.go:1662 #, c-format msgid "Failed to parse servers: %w" msgstr "Échec de l'analyse des serveurs : %w" @@ -3495,7 +3495,7 @@ msgstr "Échec du rendu de la configuration : %w" msgid "Failed to request dump: %w" msgstr "Échec de la demande de dump : %w" -#: cmd/incus/cluster.go:1978 +#: cmd/incus/cluster.go:1980 #, c-format msgid "Failed to retrieve cluster information: %w" msgstr "Échec de la récupération des informations sur le cluster : %w" @@ -3535,13 +3535,13 @@ msgstr "Échec de la récupération de la liste des réseaux : %w" msgid "Failed to retrieve list of storage pools: %w" msgstr "Échec de la récupération de la liste des pools de stockage : %w" -#: cmd/incus/cluster.go:1952 +#: cmd/incus/cluster.go:1954 #, c-format msgid "Failed to setup trust relationship with cluster: %w" msgstr "" "Échec de l'établissement d'une relation de confiance avec le cluster : %w" -#: cmd/incus/cluster.go:1687 +#: cmd/incus/cluster.go:1689 #, c-format msgid "Failed to update cluster member state: %w" msgstr "Échec de la mise à jour de l'état du membre du cluster : %w" @@ -3591,6 +3591,11 @@ msgstr "Empreinte : %s" msgid "Force a particular evacuation action" msgstr "Forcer une action d'évacuation particulière" +#: cmd/incus/cluster.go:1629 +#, fuzzy +msgid "Force a particular restoration action" +msgstr "Forcer une action d'évacuation particulière" + #: cmd/incus/file.go:109 cmd/incus/storage_volume.go:2432 msgid "Force creating files or directories" msgstr "Forcer la création de fichiers ou de répertoires" @@ -3604,7 +3609,7 @@ msgstr "Supprimer de force le projet et toutes les données qu’il contient." msgid "Force deleting files, directories, and subdirectories" msgstr "Forcer la création de fichiers ou de répertoires" -#: cmd/incus/cluster.go:1644 +#: cmd/incus/cluster.go:1646 #, fuzzy msgid "Force evacuation without user confirmation" msgstr "Requérir une confirmation de l'utilisateur" @@ -3904,7 +3909,8 @@ msgstr "Obtenir la clé en tant que propriété d'instance" #: cmd/incus/cluster_group.go:899 msgid "Get values for cluster group configuration keys" -msgstr "Récupérer la valeur d’une clef de configuration d’un groupe de serveurs" +msgstr "" +"Récupérer la valeur d’une clef de configuration d’un groupe de serveurs" #: cmd/incus/cluster.go:474 msgid "Get values for cluster member configuration keys" @@ -3972,7 +3978,8 @@ msgstr "Clé de configuration invalide" #: cmd/incus/storage_bucket.go:413 cmd/incus/storage_bucket.go:414 msgid "Get values for storage bucket configuration keys" -msgstr "Récupérer la valeur d’une clef de configuration d’un bucket de stockage" +msgstr "" +"Récupérer la valeur d’une clef de configuration d’un bucket de stockage" #: cmd/incus/storage.go:416 cmd/incus/storage.go:417 msgid "Get values for storage pool configuration keys" @@ -3999,8 +4006,8 @@ msgstr "" "Si le type n’est pas spécifié, Incus considère le type « custom ».\n" "Les types reconnus sont « custom », « container » et « virtual-machine ».\n" "\n" -"Pour un instantané, préciser son nom (le type doit être explicitement défini)" -"." +"Pour un instantané, préciser son nom (le type doit être explicitement " +"défini)." #: cmd/incus/storage_volume.go:460 #, c-format @@ -4342,7 +4349,7 @@ msgstr "Le nom du conteneur est : %s" msgid "Instance type" msgstr "Type d'instance" -#: cmd/incus/cluster.go:1814 +#: cmd/incus/cluster.go:1816 #, fuzzy msgid "Invalid IP address or DNS name" msgstr "Le nom du conteneur est : %s" @@ -4383,7 +4390,7 @@ msgstr "Certificat invalide" msgid "Invalid certificate format %q" msgstr "Format de certificat invalide %q" -#: cmd/incus/cluster.go:2055 +#: cmd/incus/cluster.go:2057 #, c-format msgid "Invalid cluster join token: %w" msgstr "Jeton d’association au cluster invalide : %w" @@ -4433,7 +4440,7 @@ msgstr "Nom d’instance invalide : %s" msgid "Invalid instance path: %q" msgstr "Chemin d’instance invalide : %q" -#: cmd/incus/cluster.go:1854 +#: cmd/incus/cluster.go:1856 #, c-format msgid "Invalid join token: %w" msgstr "Jeton d’association invalide : %w" @@ -4529,7 +4536,7 @@ msgstr "IsSM : %s (%s)" msgid "Join an existing server to a cluster" msgstr "Inclure un serveur existant dans un cluster" -#: cmd/incus/cluster.go:1845 +#: cmd/incus/cluster.go:1847 msgid "Joining an existing cluster requires root privileges" msgstr "Rejoindre un cluster existant nécessite d'être root" @@ -5425,8 +5432,8 @@ msgstr "" "configuration (par exemple, « volatile.eth0.hwaddr=10:66:6a:.* »).\n" "\n" "Exemples :\n" -" – « user.blah=abc » listera toutes les instances dont la propriété libre «" -" blah » est égale à « abc »,\n" +" – « user.blah=abc » listera toutes les instances dont la propriété libre " +"« blah » est égale à « abc »,\n" " – « u.blah=abc » aura le même effet,\n" " – « security.privileged=true » listera toutes les instances privilégiées,\n" " – « s.privileged=true » aura le même effet,\n" @@ -5471,8 +5478,8 @@ msgstr "" "À ces colonnes s’ajoutent des colonnes personnalisées qui peuvent être " "définies avec « [config:|devices:][:][:] » :\n" " – représente le nom de la clef de configuration de l’instance " -"(config) ou des périphériques (devices) à afficher (si « config: » et «" -" devices: » sont omis, « config: » est choisi par défaut),\n" +"(config) ou des périphériques (devices) à afficher (si « config: » et " +"« devices: » sont omis, « config: » est choisi par défaut),\n" " – représente le nom de la colonne à afficher (par défaut, le nom de " "la clef),\n" " – est la largeur maximale de la colonne (les résultats " @@ -6330,8 +6337,8 @@ msgstr "Configuration minimale (non-interactif)" msgid "" "Minimum level for log messages (only available when using pretty format)" msgstr "" -"Verbosité minimale des journaux (uniquement disponible avec le format «" -" pretty »)" +"Verbosité minimale des journaux (uniquement disponible avec le format " +"« pretty »)" #: cmd/incus/admin_init_interactive.go:471 msgid "Minimum size is 1GiB" @@ -6355,7 +6362,7 @@ msgstr "Empreinte du certificat manquante" msgid "Missing cluster group name" msgstr "Nom du groupe du cluster manquant" -#: cmd/incus/cluster.go:966 cmd/incus/cluster.go:1666 +#: cmd/incus/cluster.go:966 cmd/incus/cluster.go:1668 #: cmd/incus/cluster_group.go:147 cmd/incus/cluster_group.go:656 #: cmd/incus/cluster_group.go:860 cmd/incus/cluster_role.go:84 #: cmd/incus/cluster_role.go:153 @@ -7188,7 +7195,7 @@ msgstr "Mot de passe administrateur pour %s : " msgid "Password rejected for %q" msgstr "Mot de passe rejeté pour %q" -#: cmd/incus/cluster.go:2040 +#: cmd/incus/cluster.go:2042 #, c-format msgid "Path %s doesn't exist" msgstr "Le chemin %s n’existe pas" @@ -7219,7 +7226,7 @@ msgstr "" "Veuillez fournir une adresse alternative pour le serveur (ou rien pour " "annuler) :" -#: cmd/incus/cluster.go:1861 +#: cmd/incus/cluster.go:1863 msgid "Please provide join token:" msgstr "Veuillez fournir le jeton d’association :" @@ -7574,7 +7581,8 @@ msgstr "Pousser ou récupérer des fichiers récursivement" #: cmd/incus/storage_volume.go:387 msgid "Refresh and update the existing storage volume copies" -msgstr "Rafraîchir et mettre à jour les copies du volume de stockage existantes" +msgstr "" +"Rafraîchir et mettre à jour les copies du volume de stockage existantes" #: cmd/incus/image.go:1443 cmd/incus/image.go:1444 #, fuzzy @@ -7642,8 +7650,8 @@ msgid "" "Remove %s and everything it contains (instances, images, volumes, " "networks, ...) (yes/no): " msgstr "" -"Supprimer %s et tout ce qu’il contient (instances, images, volumes, réseaux" -"…) (oui/non) : " +"Supprimer %s et tout ce qu’il contient (instances, images, volumes, " +"réseaux…) (oui/non) : " #: cmd/incus/cluster_group.go:619 msgid "Remove a cluster member from a cluster group" @@ -7849,7 +7857,7 @@ msgstr "Forcer le conteneur à s'arrêter" msgid "Restore storage volume snapshots" msgstr "Restaurer un instantané de volume de stockage" -#: cmd/incus/cluster.go:1693 +#: cmd/incus/cluster.go:1695 #, c-format msgid "Restoring cluster member: %s" msgstr "Restauration du membre « %s » du cluster" @@ -8221,7 +8229,8 @@ msgstr "" #: cmd/incus/network_zone.go:1220 cmd/incus/network_zone.go:1221 msgid "Set network zone record configuration keys" -msgstr "Définir des clefs de configuration sur un enregistrement de zone réseau" +msgstr "" +"Définir des clefs de configuration sur un enregistrement de zone réseau" #: cmd/incus/profile.go:1075 #, fuzzy @@ -9012,8 +9021,8 @@ msgstr "Les volumes inconnus suivants ont été trouvés :" #: cmd/incus/delete.go:112 msgid "The instance is currently running, stop it first or pass --force" msgstr "" -"L’instance est en cours d'exécution, veuillez d’abord l’arrêter ou " -"indiquer --force" +"L’instance est en cours d'exécution, veuillez d’abord l’arrêter ou indiquer " +"--force" #: cmd/incus/publish.go:127 msgid "" @@ -9078,7 +9087,8 @@ msgstr "La propriété %q n’existe pas sur l’instance %q : %v" #: cmd/incus/config.go:452 #, c-format msgid "The property %q does not exist on the instance snapshot %s/%s: %v" -msgstr "La propriété %q n’existe pas sur l’instantané d’instance « %s/%s » : %v" +msgstr "" +"La propriété %q n’existe pas sur l’instantané d’instance « %s/%s » : %v" #: cmd/incus/network_load_balancer.go:494 #, c-format @@ -9424,7 +9434,7 @@ msgstr "UUID" msgid "UUID: %v" msgstr "UUID : %v" -#: cmd/incus/cluster.go:1892 cmd/incus/cluster.go:2085 +#: cmd/incus/cluster.go:1894 cmd/incus/cluster.go:2087 msgid "Unable to connect to any of the cluster members specified in join token" msgstr "" "Impossible de se connecter au moindre membre du cluster spécifié dans le " @@ -9741,7 +9751,7 @@ msgstr "Utilisé : %v" msgid "User ID to run the command as (default 0)" msgstr "UID avec lequel lancer la commande (par défaut, 0)" -#: cmd/incus/cluster.go:1939 +#: cmd/incus/cluster.go:1941 msgid "User aborted configuration" msgstr "L’opération a été annulée par l’utilisateur" @@ -9876,7 +9886,7 @@ msgstr "" msgid "Web server running at: %s" msgstr "Le serveur web est disponible sur : %s" -#: cmd/incus/cluster.go:1820 +#: cmd/incus/cluster.go:1822 msgid "What IP address or DNS name should be used to reach this server?" msgstr "" @@ -9888,7 +9898,7 @@ msgstr "Quelle adresse IPv4 utiliser ?" msgid "What IPv6 address should be used?" msgstr "Quelle adresse IPv6 utiliser ?" -#: cmd/incus/cluster.go:1790 +#: cmd/incus/cluster.go:1792 msgid "What member name should be used to identify this server in the cluster?" msgstr "" "Quel nom de membre utiliser pour identifier ce serveur au sein du cluster ?" @@ -10248,7 +10258,8 @@ msgstr "[:] =…" #: cmd/incus/config_device.go:86 msgid "[:] [key=value...]" -msgstr "[:] [=…]" +msgstr "" +"[:] [=…]" #: cmd/incus/config_device.go:409 msgid "[:] [key=value...]" @@ -10664,13 +10675,14 @@ msgstr "[:] [[:]…]" #: cmd/incus/storage_volume.go:1856 msgid "[:]/ [:]/" -msgstr "[:]/ [:]/" +msgstr "" +"[:]/ [:]/" #: cmd/incus/storage_volume.go:376 msgid "[:]/[/] [:]/" msgstr "" -"[:]/[/] [" -":]/" +"[:]/[/] [:]/" #: cmd/incus/config_device.go:331 cmd/incus/config_device.go:767 #: cmd/incus/profile.go:368 cmd/incus/profile.go:515 cmd/incus/profile.go:1163 @@ -10737,8 +10749,8 @@ msgstr "[:] [[:]…]" #: cmd/incus/copy.go:41 msgid "[:][/] [[:]]" msgstr "" -"[:][/] [[" -":]]" +"[:][/] [[:]]" #: cmd/incus/warning.go:270 cmd/incus/warning.go:314 msgid "[:]" @@ -11099,8 +11111,8 @@ msgid "" "incus move / /\n" " Rename a snapshot." msgstr "" -"incus move [:] [" -":][] [--instance-only]\n" +"incus move [:] [:]" +"[] [--instance-only]\n" " Déplacer une instance entre deux hôtes, avec renommage si le nom de " "destination est différent.\n" "\n" diff --git a/po/id.po b/po/id.po index 7153120a6..32605b688 100644 --- a/po/id.po +++ b/po/id.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: incus\n" "Report-Msgid-Bugs-To: lxc-devel@lists.linuxcontainers.org\n" -"POT-Creation-Date: 2026-01-20 21:57-0500\n" +"POT-Creation-Date: 2026-02-04 16:37+0100\n" "PO-Revision-Date: 2025-12-27 03:18+0000\n" "Last-Translator: Andika Triwidada \n" "Language-Team: Indonesian \n" "Language-Team: LANGUAGE \n" @@ -725,7 +725,7 @@ msgstr "" msgid "Aliases:" msgstr "" -#: cmd/incus/cluster.go:1933 +#: cmd/incus/cluster.go:1935 msgid "All existing data is lost when joining a cluster, continue?" msgstr "" @@ -751,11 +751,11 @@ msgstr "" msgid "Architecture: %v" msgstr "" -#: cmd/incus/cluster.go:1831 +#: cmd/incus/cluster.go:1833 msgid "Are you joining an existing cluster?" msgstr "" -#: cmd/incus/cluster.go:1670 +#: cmd/incus/cluster.go:1672 #, c-format msgid "Are you sure you want to %s cluster member %q? (yes/no) [default=no]: " msgstr "" @@ -1125,7 +1125,7 @@ msgstr "" msgid "Certificate fingerprint mismatch between certificate token and server %q" msgstr "" -#: cmd/incus/cluster.go:1883 cmd/incus/cluster.go:2076 +#: cmd/incus/cluster.go:1885 cmd/incus/cluster.go:2078 #, c-format msgid "Certificate fingerprint mismatch between join token and cluster member %q" msgstr "" @@ -1144,7 +1144,7 @@ msgstr "" msgid "Checking if the daemon is ready (attempt %d)" msgstr "" -#: cmd/incus/cluster.go:1982 +#: cmd/incus/cluster.go:1984 #, c-format msgid "Choose %s:" msgstr "" @@ -2153,7 +2153,7 @@ msgstr "" msgid "Ephemeral instance" msgstr "" -#: cmd/incus/cluster.go:1877 cmd/incus/cluster.go:2070 +#: cmd/incus/cluster.go:1879 cmd/incus/cluster.go:2072 #, c-format msgid "Error connecting to existing cluster member %q: %v" msgstr "" @@ -2212,7 +2212,7 @@ msgstr "" msgid "Evacuate cluster member" msgstr "" -#: cmd/incus/cluster.go:1695 +#: cmd/incus/cluster.go:1697 #, c-format msgid "Evacuating cluster member: %s" msgstr "" @@ -2421,7 +2421,7 @@ msgstr "" msgid "Failed converting token operation to certificate add token: %w" msgstr "" -#: cmd/incus/cluster.go:1183 cmd/incus/cluster.go:1917 +#: cmd/incus/cluster.go:1183 cmd/incus/cluster.go:1919 #, c-format msgid "Failed converting token operation to join token: %w" msgstr "" @@ -2441,7 +2441,7 @@ msgstr "" msgid "Failed generating SSH host key: %w" msgstr "" -#: cmd/incus/cluster.go:2019 +#: cmd/incus/cluster.go:2021 #, c-format msgid "Failed generating trust certificate: %w" msgstr "" @@ -2505,7 +2505,7 @@ msgstr "" msgid "Failed to add remote" msgstr "" -#: cmd/incus/cluster.go:2029 +#: cmd/incus/cluster.go:2031 #, c-format msgid "Failed to add server cert to cluster: %w" msgstr "" @@ -2545,7 +2545,7 @@ msgstr "" msgid "Failed to connect to local daemon: %w" msgstr "" -#: cmd/incus/cluster.go:2014 +#: cmd/incus/cluster.go:2016 #, c-format msgid "Failed to connect to target cluster node %q: %w" msgstr "" @@ -2600,7 +2600,7 @@ msgstr "" msgid "Failed to find project: %w" msgstr "" -#: cmd/incus/cluster.go:2113 cmd/incus/cluster.go:2118 +#: cmd/incus/cluster.go:2115 cmd/incus/cluster.go:2120 #, c-format msgid "Failed to join cluster: %w" msgstr "" @@ -2630,7 +2630,7 @@ msgstr "" msgid "Failed to parse dump response: %w" msgstr "" -#: cmd/incus/cluster.go:1660 +#: cmd/incus/cluster.go:1662 #, c-format msgid "Failed to parse servers: %w" msgstr "" @@ -2675,7 +2675,7 @@ msgstr "" msgid "Failed to request dump: %w" msgstr "" -#: cmd/incus/cluster.go:1978 +#: cmd/incus/cluster.go:1980 #, c-format msgid "Failed to retrieve cluster information: %w" msgstr "" @@ -2710,12 +2710,12 @@ msgstr "" msgid "Failed to retrieve list of storage pools: %w" msgstr "" -#: cmd/incus/cluster.go:1952 +#: cmd/incus/cluster.go:1954 #, c-format msgid "Failed to setup trust relationship with cluster: %w" msgstr "" -#: cmd/incus/cluster.go:1687 +#: cmd/incus/cluster.go:1689 #, c-format msgid "Failed to update cluster member state: %w" msgstr "" @@ -2762,6 +2762,10 @@ msgstr "" msgid "Force a particular evacuation action" msgstr "" +#: cmd/incus/cluster.go:1629 +msgid "Force a particular restoration action" +msgstr "" + #: cmd/incus/file.go:109 cmd/incus/storage_volume.go:2432 msgid "Force creating files or directories" msgstr "" @@ -2774,7 +2778,7 @@ msgstr "" msgid "Force deleting files, directories, and subdirectories" msgstr "" -#: cmd/incus/cluster.go:1644 +#: cmd/incus/cluster.go:1646 msgid "Force evacuation without user confirmation" msgstr "" @@ -3384,7 +3388,7 @@ msgstr "" msgid "Instance type" msgstr "" -#: cmd/incus/cluster.go:1814 +#: cmd/incus/cluster.go:1816 msgid "Invalid IP address or DNS name" msgstr "" @@ -3422,7 +3426,7 @@ msgstr "" msgid "Invalid certificate format %q" msgstr "" -#: cmd/incus/cluster.go:2055 +#: cmd/incus/cluster.go:2057 #, c-format msgid "Invalid cluster join token: %w" msgstr "" @@ -3470,7 +3474,7 @@ msgstr "" msgid "Invalid instance path: %q" msgstr "" -#: cmd/incus/cluster.go:1854 +#: cmd/incus/cluster.go:1856 #, c-format msgid "Invalid join token: %w" msgstr "" @@ -3554,7 +3558,7 @@ msgstr "" msgid "Join an existing server to a cluster" msgstr "" -#: cmd/incus/cluster.go:1845 +#: cmd/incus/cluster.go:1847 msgid "Joining an existing cluster requires root privileges" msgstr "" @@ -4850,7 +4854,7 @@ msgstr "" msgid "Missing cluster group name" msgstr "" -#: cmd/incus/cluster.go:966 cmd/incus/cluster.go:1666 cmd/incus/cluster_group.go:147 cmd/incus/cluster_group.go:656 cmd/incus/cluster_group.go:860 cmd/incus/cluster_role.go:84 cmd/incus/cluster_role.go:153 +#: cmd/incus/cluster.go:966 cmd/incus/cluster.go:1668 cmd/incus/cluster_group.go:147 cmd/incus/cluster_group.go:656 cmd/incus/cluster_group.go:860 cmd/incus/cluster_role.go:84 cmd/incus/cluster_role.go:153 msgid "Missing cluster member name" msgstr "" @@ -5529,7 +5533,7 @@ msgstr "" msgid "Password rejected for %q" msgstr "" -#: cmd/incus/cluster.go:2040 +#: cmd/incus/cluster.go:2042 #, c-format msgid "Path %s doesn't exist" msgstr "" @@ -5558,7 +5562,7 @@ msgstr "" msgid "Please provide an alternate server address (empty to abort):" msgstr "" -#: cmd/incus/cluster.go:1861 +#: cmd/incus/cluster.go:1863 msgid "Please provide join token:" msgstr "" @@ -6127,7 +6131,7 @@ msgstr "" msgid "Restore storage volume snapshots" msgstr "" -#: cmd/incus/cluster.go:1693 +#: cmd/incus/cluster.go:1695 #, c-format msgid "Restoring cluster member: %s" msgstr "" @@ -7544,7 +7548,7 @@ msgstr "" msgid "UUID: %v" msgstr "" -#: cmd/incus/cluster.go:1892 cmd/incus/cluster.go:2085 +#: cmd/incus/cluster.go:1894 cmd/incus/cluster.go:2087 msgid "Unable to connect to any of the cluster members specified in join token" msgstr "" @@ -7820,7 +7824,7 @@ msgstr "" msgid "User ID to run the command as (default 0)" msgstr "" -#: cmd/incus/cluster.go:1939 +#: cmd/incus/cluster.go:1941 msgid "User aborted configuration" msgstr "" @@ -7941,7 +7945,7 @@ msgstr "" msgid "Web server running at: %s" msgstr "" -#: cmd/incus/cluster.go:1820 +#: cmd/incus/cluster.go:1822 msgid "What IP address or DNS name should be used to reach this server?" msgstr "" @@ -7953,7 +7957,7 @@ msgstr "" msgid "What IPv6 address should be used?" msgstr "" -#: cmd/incus/cluster.go:1790 +#: cmd/incus/cluster.go:1792 msgid "What member name should be used to identify this server in the cluster?" msgstr "" diff --git a/po/it.po b/po/it.po index b6803b1bf..bb73d4ddf 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@lists.linuxcontainers.org\n" -"POT-Creation-Date: 2026-01-20 21:57-0500\n" +"POT-Creation-Date: 2026-02-04 16:37+0100\n" "PO-Revision-Date: 2025-12-27 03:12+0000\n" "Last-Translator: Alberto Donato \n" "Language-Team: Italian \n" @@ -1032,7 +1032,7 @@ msgstr "il remote %s esiste già" msgid "Aliases:" msgstr "Alias:" -#: cmd/incus/cluster.go:1933 +#: cmd/incus/cluster.go:1935 msgid "All existing data is lost when joining a cluster, continue?" msgstr "" @@ -1060,11 +1060,11 @@ msgstr "Architettura: %s" msgid "Architecture: %v" msgstr "Architettura: %s" -#: cmd/incus/cluster.go:1831 +#: cmd/incus/cluster.go:1833 msgid "Are you joining an existing cluster?" msgstr "" -#: cmd/incus/cluster.go:1670 +#: cmd/incus/cluster.go:1672 #, c-format msgid "Are you sure you want to %s cluster member %q? (yes/no) [default=no]: " msgstr "" @@ -1451,7 +1451,7 @@ msgid "" "Certificate fingerprint mismatch between certificate token and server %q" msgstr "" -#: cmd/incus/cluster.go:1883 cmd/incus/cluster.go:2076 +#: cmd/incus/cluster.go:1885 cmd/incus/cluster.go:2078 #, c-format msgid "" "Certificate fingerprint mismatch between join token and cluster member %q" @@ -1471,7 +1471,7 @@ msgstr "" msgid "Checking if the daemon is ready (attempt %d)" msgstr "" -#: cmd/incus/cluster.go:1982 +#: cmd/incus/cluster.go:1984 #, c-format msgid "Choose %s:" msgstr "" @@ -2812,7 +2812,7 @@ msgstr "" msgid "Ephemeral instance" msgstr "" -#: cmd/incus/cluster.go:1877 cmd/incus/cluster.go:2070 +#: cmd/incus/cluster.go:1879 cmd/incus/cluster.go:2072 #, fuzzy, c-format msgid "Error connecting to existing cluster member %q: %v" msgstr "Il nome del container è: %s" @@ -2887,7 +2887,7 @@ msgstr "" msgid "Evacuate cluster member" msgstr "Creazione del container in corso" -#: cmd/incus/cluster.go:1695 +#: cmd/incus/cluster.go:1697 #, fuzzy, c-format msgid "Evacuating cluster member: %s" msgstr "Il nome del container è: %s" @@ -3114,7 +3114,7 @@ msgstr "Il nome del container è: %s" msgid "Failed converting token operation to certificate add token: %w" msgstr "" -#: cmd/incus/cluster.go:1183 cmd/incus/cluster.go:1917 +#: cmd/incus/cluster.go:1183 cmd/incus/cluster.go:1919 #, fuzzy, c-format msgid "Failed converting token operation to join token: %w" msgstr "Il nome del container è: %s" @@ -3134,7 +3134,7 @@ msgstr "" msgid "Failed generating SSH host key: %w" msgstr "Accetta certificato" -#: cmd/incus/cluster.go:2019 +#: cmd/incus/cluster.go:2021 #, fuzzy, c-format msgid "Failed generating trust certificate: %w" msgstr "Accetta certificato" @@ -3198,7 +3198,7 @@ msgstr "Accetta certificato" msgid "Failed to add remote" msgstr "" -#: cmd/incus/cluster.go:2029 +#: cmd/incus/cluster.go:2031 #, fuzzy, c-format msgid "Failed to add server cert to cluster: %w" msgstr "Accetta certificato" @@ -3238,7 +3238,7 @@ msgstr "Il nome del container è: %s" msgid "Failed to connect to local daemon: %w" msgstr "Il nome del container è: %s" -#: cmd/incus/cluster.go:2014 +#: cmd/incus/cluster.go:2016 #, fuzzy, c-format msgid "Failed to connect to target cluster node %q: %w" msgstr "Il nome del container è: %s" @@ -3293,7 +3293,7 @@ msgstr "Accetta certificato" msgid "Failed to find project: %w" msgstr "" -#: cmd/incus/cluster.go:2113 cmd/incus/cluster.go:2118 +#: cmd/incus/cluster.go:2115 cmd/incus/cluster.go:2120 #, fuzzy, c-format msgid "Failed to join cluster: %w" msgstr "Il nome del container è: %s" @@ -3323,7 +3323,7 @@ msgstr "Accetta certificato" msgid "Failed to parse dump response: %w" msgstr "Accetta certificato" -#: cmd/incus/cluster.go:1660 +#: cmd/incus/cluster.go:1662 #, fuzzy, c-format msgid "Failed to parse servers: %w" msgstr "Accetta certificato" @@ -3368,7 +3368,7 @@ msgstr "Accetta certificato" msgid "Failed to request dump: %w" msgstr "Accetta certificato" -#: cmd/incus/cluster.go:1978 +#: cmd/incus/cluster.go:1980 #, fuzzy, c-format msgid "Failed to retrieve cluster information: %w" msgstr "Accetta certificato" @@ -3406,12 +3406,12 @@ msgstr "Accetta certificato" msgid "Failed to retrieve list of storage pools: %w" msgstr "Accetta certificato" -#: cmd/incus/cluster.go:1952 +#: cmd/incus/cluster.go:1954 #, fuzzy, c-format msgid "Failed to setup trust relationship with cluster: %w" msgstr "Il nome del container è: %s" -#: cmd/incus/cluster.go:1687 +#: cmd/incus/cluster.go:1689 #, fuzzy, c-format msgid "Failed to update cluster member state: %w" msgstr "Il nome del container è: %s" @@ -3460,6 +3460,10 @@ msgstr "" msgid "Force a particular evacuation action" msgstr "" +#: cmd/incus/cluster.go:1629 +msgid "Force a particular restoration action" +msgstr "" + #: cmd/incus/file.go:109 cmd/incus/storage_volume.go:2432 msgid "Force creating files or directories" msgstr "" @@ -3472,7 +3476,7 @@ msgstr "" msgid "Force deleting files, directories, and subdirectories" msgstr "" -#: cmd/incus/cluster.go:1644 +#: cmd/incus/cluster.go:1646 msgid "Force evacuation without user confirmation" msgstr "" @@ -4148,7 +4152,7 @@ msgstr "Il nome del container è: %s" msgid "Instance type" msgstr "" -#: cmd/incus/cluster.go:1814 +#: cmd/incus/cluster.go:1816 #, fuzzy msgid "Invalid IP address or DNS name" msgstr "Il nome del container è: %s" @@ -4189,7 +4193,7 @@ msgstr "" msgid "Invalid certificate format %q" msgstr "Proprietà errata: %s" -#: cmd/incus/cluster.go:2055 +#: cmd/incus/cluster.go:2057 #, fuzzy, c-format msgid "Invalid cluster join token: %w" msgstr "Proprietà errata: %s" @@ -4237,7 +4241,7 @@ msgstr "Il nome del container è: %s" msgid "Invalid instance path: %q" msgstr "Il nome del container è: %s" -#: cmd/incus/cluster.go:1854 +#: cmd/incus/cluster.go:1856 #, fuzzy, c-format msgid "Invalid join token: %w" msgstr "Il nome del container è: %s" @@ -4330,7 +4334,7 @@ msgstr "" msgid "Join an existing server to a cluster" msgstr "" -#: cmd/incus/cluster.go:1845 +#: cmd/incus/cluster.go:1847 msgid "Joining an existing cluster requires root privileges" msgstr "" @@ -5728,7 +5732,7 @@ msgstr "" msgid "Missing cluster group name" msgstr "Il nome del container è: %s" -#: cmd/incus/cluster.go:966 cmd/incus/cluster.go:1666 +#: cmd/incus/cluster.go:966 cmd/incus/cluster.go:1668 #: cmd/incus/cluster_group.go:147 cmd/incus/cluster_group.go:656 #: cmd/incus/cluster_group.go:860 cmd/incus/cluster_role.go:84 #: cmd/incus/cluster_role.go:153 @@ -6548,7 +6552,7 @@ msgstr "Password amministratore per %s: " msgid "Password rejected for %q" msgstr "Password amministratore per %s: " -#: cmd/incus/cluster.go:2040 +#: cmd/incus/cluster.go:2042 #, fuzzy, c-format msgid "Path %s doesn't exist" msgstr "il remote %s non esiste" @@ -6578,7 +6582,7 @@ msgstr "" msgid "Please provide an alternate server address (empty to abort):" msgstr "" -#: cmd/incus/cluster.go:1861 +#: cmd/incus/cluster.go:1863 #, fuzzy msgid "Please provide join token:" msgstr "Il nome del container è: %s" @@ -7200,7 +7204,7 @@ msgstr "Creazione del container in corso" msgid "Restore storage volume snapshots" msgstr "" -#: cmd/incus/cluster.go:1693 +#: cmd/incus/cluster.go:1695 #, fuzzy, c-format msgid "Restoring cluster member: %s" msgstr "Il nome del container è: %s" @@ -8750,7 +8754,7 @@ msgstr "" msgid "UUID: %v" msgstr "" -#: cmd/incus/cluster.go:1892 cmd/incus/cluster.go:2085 +#: cmd/incus/cluster.go:1894 cmd/incus/cluster.go:2087 #, fuzzy msgid "Unable to connect to any of the cluster members specified in join token" msgstr "Il nome del container è: %s" @@ -9068,7 +9072,7 @@ msgstr "" msgid "User ID to run the command as (default 0)" msgstr "" -#: cmd/incus/cluster.go:1939 +#: cmd/incus/cluster.go:1941 #, fuzzy msgid "User aborted configuration" msgstr "Il nome del container è: %s" @@ -9196,7 +9200,7 @@ msgstr "" msgid "Web server running at: %s" msgstr "" -#: cmd/incus/cluster.go:1820 +#: cmd/incus/cluster.go:1822 msgid "What IP address or DNS name should be used to reach this server?" msgstr "" @@ -9208,7 +9212,7 @@ msgstr "" msgid "What IPv6 address should be used?" msgstr "" -#: cmd/incus/cluster.go:1790 +#: cmd/incus/cluster.go:1792 msgid "What member name should be used to identify this server in the cluster?" msgstr "" diff --git a/po/ja.po b/po/ja.po index a2d116661..09478bb9d 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@lists.linuxcontainers.org\n" -"POT-Creation-Date: 2026-01-20 21:57-0500\n" +"POT-Creation-Date: 2026-02-04 16:37+0100\n" "PO-Revision-Date: 2026-01-25 17:06+0000\n" "Last-Translator: KATOH Yasufumi \n" "Language-Team: Japanese \n" @@ -1020,7 +1020,7 @@ msgstr "エイリアスは既に存在します: %s" msgid "Aliases:" msgstr "エイリアス:" -#: cmd/incus/cluster.go:1933 +#: cmd/incus/cluster.go:1935 msgid "All existing data is lost when joining a cluster, continue?" msgstr "クラスターに join すると、すべてのデータが削除されます。続けますか?" @@ -1047,11 +1047,11 @@ msgstr "アーキテクチャ: %s" msgid "Architecture: %v" msgstr "アーキテクチャ: %v" -#: cmd/incus/cluster.go:1831 +#: cmd/incus/cluster.go:1833 msgid "Are you joining an existing cluster?" msgstr "既存のクラスターに join しますか?" -#: cmd/incus/cluster.go:1670 +#: cmd/incus/cluster.go:1672 #, c-format msgid "Are you sure you want to %s cluster member %q? (yes/no) [default=no]: " msgstr "" @@ -1447,7 +1447,7 @@ msgid "" msgstr "" "証明書のフィンガープリントが証明書トークンとサーバの間で一致しません %q" -#: cmd/incus/cluster.go:1883 cmd/incus/cluster.go:2076 +#: cmd/incus/cluster.go:1885 cmd/incus/cluster.go:2078 #, c-format msgid "" "Certificate fingerprint mismatch between join token and cluster member %q" @@ -1469,7 +1469,7 @@ msgstr "Chassis" msgid "Checking if the daemon is ready (attempt %d)" msgstr "デーモンが準備できていることを確認しています (試行 %d)" -#: cmd/incus/cluster.go:1982 +#: cmd/incus/cluster.go:1984 #, c-format msgid "Choose %s:" msgstr "選択してください %s" @@ -2825,7 +2825,7 @@ msgstr "環境変数を設定します (例: HOME=/home/foo)" msgid "Ephemeral instance" msgstr "Ephemeral インスタンス" -#: cmd/incus/cluster.go:1877 cmd/incus/cluster.go:2070 +#: cmd/incus/cluster.go:1879 cmd/incus/cluster.go:2072 #, c-format msgid "Error connecting to existing cluster member %q: %v" msgstr "既存のクラスターメンバー %q への接続でエラーが発生しました: %v" @@ -2899,7 +2899,7 @@ msgstr "エラー: %v\n" msgid "Evacuate cluster member" msgstr "クラスターのメンバーを待避させます" -#: cmd/incus/cluster.go:1695 +#: cmd/incus/cluster.go:1697 #, c-format msgid "Evacuating cluster member: %s" msgstr "クラスターメンバーを待避させています: %s" @@ -3164,7 +3164,7 @@ msgstr "デーモンへの接続に失敗しました(試行回数 %d): %v" msgid "Failed converting token operation to certificate add token: %w" msgstr "証明書追加トークンのトークン変換操作に失敗しました: %w" -#: cmd/incus/cluster.go:1183 cmd/incus/cluster.go:1917 +#: cmd/incus/cluster.go:1183 cmd/incus/cluster.go:1919 #, c-format msgid "Failed converting token operation to join token: %w" msgstr "join トークンのトークン変換操作に失敗しました: %w" @@ -3184,7 +3184,7 @@ msgstr "コピー後のソースボリュームの削除に失敗しました: % msgid "Failed generating SSH host key: %w" msgstr "SSH ホスト鍵の生成に失敗しました: %w" -#: cmd/incus/cluster.go:2019 +#: cmd/incus/cluster.go:2021 #, c-format msgid "Failed generating trust certificate: %w" msgstr "証明書の作成に失敗しました: %w" @@ -3248,7 +3248,7 @@ msgstr "受信接続の受け入れに失敗しました: %w" msgid "Failed to add remote" msgstr "リモートの追加に失敗しました" -#: cmd/incus/cluster.go:2029 +#: cmd/incus/cluster.go:2031 #, c-format msgid "Failed to add server cert to cluster: %w" msgstr "サーバー証明書のクラスターへの追加に失敗しました: %w" @@ -3288,7 +3288,7 @@ msgstr "サーバー情報の取得のための接続に失敗しました: %w" msgid "Failed to connect to local daemon: %w" msgstr "ローカルデーモンへの接続に失敗しました: %w" -#: cmd/incus/cluster.go:2014 +#: cmd/incus/cluster.go:2016 #, c-format msgid "Failed to connect to target cluster node %q: %w" msgstr "ターゲットのクラスターノード %q への接続に失敗しました: %w" @@ -3343,7 +3343,7 @@ msgstr "ストレージボリュームのバックアップファイルの取得 msgid "Failed to find project: %w" msgstr "プロジェクトが見つけられませんでした: %w" -#: cmd/incus/cluster.go:2113 cmd/incus/cluster.go:2118 +#: cmd/incus/cluster.go:2115 cmd/incus/cluster.go:2120 #, c-format msgid "Failed to join cluster: %w" msgstr "クラスターへの join に失敗しました: %w" @@ -3373,7 +3373,7 @@ msgstr "ターゲットファイルのオープンに失敗しました %q: %w" msgid "Failed to parse dump response: %w" msgstr "ダンプレスポンスの読み取りに失敗しました: %w" -#: cmd/incus/cluster.go:1660 +#: cmd/incus/cluster.go:1662 #, c-format msgid "Failed to parse servers: %w" msgstr "サーバーの読み取りに失敗しました: %w" @@ -3418,7 +3418,7 @@ msgstr "設定のレンダリングに失敗しました: %w" msgid "Failed to request dump: %w" msgstr "ダンプのリクエストに失敗しました: %w" -#: cmd/incus/cluster.go:1978 +#: cmd/incus/cluster.go:1980 #, c-format msgid "Failed to retrieve cluster information: %w" msgstr "クラスター情報の取得に失敗しました: %w" @@ -3457,12 +3457,12 @@ msgstr "ネットワークのリストの取得に失敗しました: %w" msgid "Failed to retrieve list of storage pools: %w" msgstr "ストレージプールのリストの取得に失敗しました: %w" -#: cmd/incus/cluster.go:1952 +#: cmd/incus/cluster.go:1954 #, c-format msgid "Failed to setup trust relationship with cluster: %w" msgstr "クラスターとの信頼関係のセットアップに失敗しました: %w" -#: cmd/incus/cluster.go:1687 +#: cmd/incus/cluster.go:1689 #, c-format msgid "Failed to update cluster member state: %w" msgstr "クラスターのメンバー状態の更新に失敗しました: %w" @@ -3510,6 +3510,11 @@ msgstr "証明書のフィンガープリント: %s" msgid "Force a particular evacuation action" msgstr "特定の待避アクションを強制します" +#: cmd/incus/cluster.go:1629 +#, fuzzy +msgid "Force a particular restoration action" +msgstr "特定の待避アクションを強制します" + #: cmd/incus/file.go:109 cmd/incus/storage_volume.go:2432 msgid "Force creating files or directories" msgstr "強制的にファイルまたはディレクトリーを作成します" @@ -3522,7 +3527,7 @@ msgstr "プロジェクトとプロジェクトに含まれるすべてを強制 msgid "Force deleting files, directories, and subdirectories" msgstr "強制的にファイル、ディレクトリー、サブディレクトリーを削除します" -#: cmd/incus/cluster.go:1644 +#: cmd/incus/cluster.go:1646 msgid "Force evacuation without user confirmation" msgstr "ユーザーの確認なしで強制的に待避させます" @@ -4225,7 +4230,7 @@ msgstr "インスタンス名: %s" msgid "Instance type" msgstr "インスタンスタイプ" -#: cmd/incus/cluster.go:1814 +#: cmd/incus/cluster.go:1816 #, fuzzy msgid "Invalid IP address or DNS name" msgstr "不正なスナップショット名" @@ -4266,7 +4271,7 @@ msgstr "不正な証明書です" msgid "Invalid certificate format %q" msgstr "不正な証明書です" -#: cmd/incus/cluster.go:2055 +#: cmd/incus/cluster.go:2057 #, fuzzy, c-format msgid "Invalid cluster join token: %w" msgstr "メンバ %s の join トークン:" @@ -4316,7 +4321,7 @@ msgstr "不正なインスタンス名: %s" msgid "Invalid instance path: %q" msgstr "不正なインスタンスのパス: %q" -#: cmd/incus/cluster.go:1854 +#: cmd/incus/cluster.go:1856 #, fuzzy, c-format msgid "Invalid join token: %w" msgstr "メンバ %s の join トークン:" @@ -4411,7 +4416,7 @@ msgstr "IsSM: %s (%s)" msgid "Join an existing server to a cluster" msgstr "既存のクラスターに join しますか?" -#: cmd/incus/cluster.go:1845 +#: cmd/incus/cluster.go:1847 msgid "Joining an existing cluster requires root privileges" msgstr "既存のクラスターに加わるには root 権限が必要です" @@ -6493,7 +6498,7 @@ msgstr "証明書のフィンガープリントがありません" msgid "Missing cluster group name" msgstr "クラスターグループ名がありません" -#: cmd/incus/cluster.go:966 cmd/incus/cluster.go:1666 +#: cmd/incus/cluster.go:966 cmd/incus/cluster.go:1668 #: cmd/incus/cluster_group.go:147 cmd/incus/cluster_group.go:656 #: cmd/incus/cluster_group.go:860 cmd/incus/cluster_role.go:84 #: cmd/incus/cluster_role.go:153 @@ -7344,7 +7349,7 @@ msgstr "%s のパスワード: " msgid "Password rejected for %q" msgstr "%q のパスワードが拒否されました" -#: cmd/incus/cluster.go:2040 +#: cmd/incus/cluster.go:2042 #, fuzzy, c-format msgid "Path %s doesn't exist" msgstr "エイリアス %s は存在しません" @@ -7374,7 +7379,7 @@ msgstr "不足しているエントリーを作成してから ENTER を押し msgid "Please provide an alternate server address (empty to abort):" msgstr "別のサーバアドレスを指定してください(空の場合は中止):" -#: cmd/incus/cluster.go:1861 +#: cmd/incus/cluster.go:1863 msgid "Please provide join token:" msgstr "join トークンを入力してください:" @@ -8005,7 +8010,7 @@ msgstr "スナップショットからインスタンスをリストアします msgid "Restore storage volume snapshots" msgstr "スナップショットからストレージボリュームをリストアします" -#: cmd/incus/cluster.go:1693 +#: cmd/incus/cluster.go:1695 #, c-format msgid "Restoring cluster member: %s" msgstr "クラスターメンバーをリストアしています: %s" @@ -9706,7 +9711,7 @@ msgstr "UUID" msgid "UUID: %v" msgstr "UUID: %v" -#: cmd/incus/cluster.go:1892 cmd/incus/cluster.go:2085 +#: cmd/incus/cluster.go:1894 cmd/incus/cluster.go:2087 #, fuzzy msgid "Unable to connect to any of the cluster members specified in join token" msgstr "クラスタメンバへの接続に失敗しました" @@ -10030,7 +10035,7 @@ msgstr "使用済: %v" msgid "User ID to run the command as (default 0)" msgstr "コマンドを実行する際のユーザ ID (UID) (デフォルト 0)" -#: cmd/incus/cluster.go:1939 +#: cmd/incus/cluster.go:1941 #, fuzzy msgid "User aborted configuration" msgstr "ユーザが削除操作を中断しました" @@ -10184,7 +10189,7 @@ msgstr "" msgid "Web server running at: %s" msgstr "Web サーバーの実行 URL: %s" -#: cmd/incus/cluster.go:1820 +#: cmd/incus/cluster.go:1822 msgid "What IP address or DNS name should be used to reach this server?" msgstr "" "このサーバーにアクセスするためには、どの IP アドレス、または DNS 名を使用する" @@ -10198,7 +10203,7 @@ msgstr "どの IPv4 アドレスを使いますか?" msgid "What IPv6 address should be used?" msgstr "どの IPv6 アドレスを使いますか?" -#: cmd/incus/cluster.go:1790 +#: cmd/incus/cluster.go:1792 msgid "What member name should be used to identify this server in the cluster?" msgstr "クラスター内のこのサーバーを識別するのに使うメンバー名は何ですか?" diff --git a/po/nb_NO.po b/po/nb_NO.po index 1c4b6fe02..3e5e28658 100644 --- a/po/nb_NO.po +++ b/po/nb_NO.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: incus\n" "Report-Msgid-Bugs-To: lxc-devel@lists.linuxcontainers.org\n" -"POT-Creation-Date: 2026-01-20 21:57-0500\n" +"POT-Creation-Date: 2026-02-04 16:37+0100\n" "PO-Revision-Date: 2025-12-27 03:18+0000\n" "Last-Translator: Daniel Dybing \n" "Language-Team: Norwegian Bokmål \n" @@ -1055,7 +1055,7 @@ msgstr "Aliassen bestaan al: %s" msgid "Aliases:" msgstr "Aliassen:" -#: cmd/incus/cluster.go:1933 +#: cmd/incus/cluster.go:1935 msgid "All existing data is lost when joining a cluster, continue?" msgstr "" "Alle huidige gegevens gaan verloren bij het lid worden (joining) van een " @@ -1084,11 +1084,11 @@ msgstr "Architectuur: %s" msgid "Architecture: %v" msgstr "Architectuur: %v" -#: cmd/incus/cluster.go:1831 +#: cmd/incus/cluster.go:1833 msgid "Are you joining an existing cluster?" msgstr "Wilt u lid worden (joining) van een bestaand cluster?" -#: cmd/incus/cluster.go:1670 +#: cmd/incus/cluster.go:1672 #, c-format msgid "Are you sure you want to %s cluster member %q? (yes/no) [default=no]: " msgstr "Weet je zeker dat je %s wilt clusteren met %q ? (yes/no) " @@ -1479,7 +1479,7 @@ msgid "" "Certificate fingerprint mismatch between certificate token and server %q" msgstr "" -#: cmd/incus/cluster.go:1883 cmd/incus/cluster.go:2076 +#: cmd/incus/cluster.go:1885 cmd/incus/cluster.go:2078 #, c-format msgid "" "Certificate fingerprint mismatch between join token and cluster member %q" @@ -1499,7 +1499,7 @@ msgstr "" msgid "Checking if the daemon is ready (attempt %d)" msgstr "" -#: cmd/incus/cluster.go:1982 +#: cmd/incus/cluster.go:1984 #, c-format msgid "Choose %s:" msgstr "" @@ -2803,7 +2803,7 @@ msgstr "" msgid "Ephemeral instance" msgstr "" -#: cmd/incus/cluster.go:1877 cmd/incus/cluster.go:2070 +#: cmd/incus/cluster.go:1879 cmd/incus/cluster.go:2072 #, c-format msgid "Error connecting to existing cluster member %q: %v" msgstr "" @@ -2877,7 +2877,7 @@ msgstr "" msgid "Evacuate cluster member" msgstr "" -#: cmd/incus/cluster.go:1695 +#: cmd/incus/cluster.go:1697 #, c-format msgid "Evacuating cluster member: %s" msgstr "" @@ -3099,7 +3099,7 @@ msgstr "" msgid "Failed converting token operation to certificate add token: %w" msgstr "" -#: cmd/incus/cluster.go:1183 cmd/incus/cluster.go:1917 +#: cmd/incus/cluster.go:1183 cmd/incus/cluster.go:1919 #, c-format msgid "Failed converting token operation to join token: %w" msgstr "" @@ -3119,7 +3119,7 @@ msgstr "" msgid "Failed generating SSH host key: %w" msgstr "" -#: cmd/incus/cluster.go:2019 +#: cmd/incus/cluster.go:2021 #, c-format msgid "Failed generating trust certificate: %w" msgstr "" @@ -3183,7 +3183,7 @@ msgstr "" msgid "Failed to add remote" msgstr "" -#: cmd/incus/cluster.go:2029 +#: cmd/incus/cluster.go:2031 #, c-format msgid "Failed to add server cert to cluster: %w" msgstr "" @@ -3223,7 +3223,7 @@ msgstr "" msgid "Failed to connect to local daemon: %w" msgstr "" -#: cmd/incus/cluster.go:2014 +#: cmd/incus/cluster.go:2016 #, c-format msgid "Failed to connect to target cluster node %q: %w" msgstr "" @@ -3278,7 +3278,7 @@ msgstr "" msgid "Failed to find project: %w" msgstr "" -#: cmd/incus/cluster.go:2113 cmd/incus/cluster.go:2118 +#: cmd/incus/cluster.go:2115 cmd/incus/cluster.go:2120 #, c-format msgid "Failed to join cluster: %w" msgstr "" @@ -3308,7 +3308,7 @@ msgstr "" msgid "Failed to parse dump response: %w" msgstr "" -#: cmd/incus/cluster.go:1660 +#: cmd/incus/cluster.go:1662 #, c-format msgid "Failed to parse servers: %w" msgstr "" @@ -3353,7 +3353,7 @@ msgstr "" msgid "Failed to request dump: %w" msgstr "" -#: cmd/incus/cluster.go:1978 +#: cmd/incus/cluster.go:1980 #, c-format msgid "Failed to retrieve cluster information: %w" msgstr "" @@ -3391,12 +3391,12 @@ msgstr "" msgid "Failed to retrieve list of storage pools: %w" msgstr "" -#: cmd/incus/cluster.go:1952 +#: cmd/incus/cluster.go:1954 #, c-format msgid "Failed to setup trust relationship with cluster: %w" msgstr "" -#: cmd/incus/cluster.go:1687 +#: cmd/incus/cluster.go:1689 #, c-format msgid "Failed to update cluster member state: %w" msgstr "" @@ -3444,6 +3444,10 @@ msgstr "" msgid "Force a particular evacuation action" msgstr "" +#: cmd/incus/cluster.go:1629 +msgid "Force a particular restoration action" +msgstr "" + #: cmd/incus/file.go:109 cmd/incus/storage_volume.go:2432 msgid "Force creating files or directories" msgstr "" @@ -3456,7 +3460,7 @@ msgstr "" msgid "Force deleting files, directories, and subdirectories" msgstr "" -#: cmd/incus/cluster.go:1644 +#: cmd/incus/cluster.go:1646 msgid "Force evacuation without user confirmation" msgstr "" @@ -4104,7 +4108,7 @@ msgstr "" msgid "Instance type" msgstr "" -#: cmd/incus/cluster.go:1814 +#: cmd/incus/cluster.go:1816 msgid "Invalid IP address or DNS name" msgstr "" @@ -4144,7 +4148,7 @@ msgstr "" msgid "Invalid certificate format %q" msgstr "" -#: cmd/incus/cluster.go:2055 +#: cmd/incus/cluster.go:2057 #, c-format msgid "Invalid cluster join token: %w" msgstr "" @@ -4192,7 +4196,7 @@ msgstr "" msgid "Invalid instance path: %q" msgstr "" -#: cmd/incus/cluster.go:1854 +#: cmd/incus/cluster.go:1856 #, c-format msgid "Invalid join token: %w" msgstr "" @@ -4281,7 +4285,7 @@ msgstr "" msgid "Join an existing server to a cluster" msgstr "Wilt u lid worden (joining) van een bestaand cluster?" -#: cmd/incus/cluster.go:1845 +#: cmd/incus/cluster.go:1847 msgid "Joining an existing cluster requires root privileges" msgstr "" @@ -5637,7 +5641,7 @@ msgstr "" msgid "Missing cluster group name" msgstr "" -#: cmd/incus/cluster.go:966 cmd/incus/cluster.go:1666 +#: cmd/incus/cluster.go:966 cmd/incus/cluster.go:1668 #: cmd/incus/cluster_group.go:147 cmd/incus/cluster_group.go:656 #: cmd/incus/cluster_group.go:860 cmd/incus/cluster_role.go:84 #: cmd/incus/cluster_role.go:153 @@ -6439,7 +6443,7 @@ msgstr "" msgid "Password rejected for %q" msgstr "" -#: cmd/incus/cluster.go:2040 +#: cmd/incus/cluster.go:2042 #, c-format msgid "Path %s doesn't exist" msgstr "" @@ -6468,7 +6472,7 @@ msgstr "" msgid "Please provide an alternate server address (empty to abort):" msgstr "" -#: cmd/incus/cluster.go:1861 +#: cmd/incus/cluster.go:1863 msgid "Please provide join token:" msgstr "" @@ -7069,7 +7073,7 @@ msgstr "" msgid "Restore storage volume snapshots" msgstr "" -#: cmd/incus/cluster.go:1693 +#: cmd/incus/cluster.go:1695 #, c-format msgid "Restoring cluster member: %s" msgstr "" @@ -8578,7 +8582,7 @@ msgstr "" msgid "UUID: %v" msgstr "" -#: cmd/incus/cluster.go:1892 cmd/incus/cluster.go:2085 +#: cmd/incus/cluster.go:1894 cmd/incus/cluster.go:2087 msgid "Unable to connect to any of the cluster members specified in join token" msgstr "" @@ -8877,7 +8881,7 @@ msgstr "" msgid "User ID to run the command as (default 0)" msgstr "" -#: cmd/incus/cluster.go:1939 +#: cmd/incus/cluster.go:1941 msgid "User aborted configuration" msgstr "" @@ -9004,7 +9008,7 @@ msgstr "" msgid "Web server running at: %s" msgstr "" -#: cmd/incus/cluster.go:1820 +#: cmd/incus/cluster.go:1822 msgid "What IP address or DNS name should be used to reach this server?" msgstr "" @@ -9016,7 +9020,7 @@ msgstr "" msgid "What IPv6 address should be used?" msgstr "" -#: cmd/incus/cluster.go:1790 +#: cmd/incus/cluster.go:1792 msgid "What member name should be used to identify this server in the cluster?" msgstr "" diff --git a/po/pt.po b/po/pt.po index d256741cd..07991fb8d 100644 --- a/po/pt.po +++ b/po/pt.po @@ -7,11 +7,11 @@ msgid "" msgstr "" "Project-Id-Version: incus\n" "Report-Msgid-Bugs-To: lxc-devel@lists.linuxcontainers.org\n" -"POT-Creation-Date: 2026-01-20 21:57-0500\n" +"POT-Creation-Date: 2026-02-04 16:37+0100\n" "PO-Revision-Date: 2026-01-29 17:01+0000\n" "Last-Translator: Américo Monteiro \n" -"Language-Team: Portuguese " -"\n" +"Language-Team: Portuguese \n" "Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1045,7 +1045,7 @@ msgstr "Aliases já existem: %s" msgid "Aliases:" msgstr "Nomes alternativos (Aliases):" -#: cmd/incus/cluster.go:1933 +#: cmd/incus/cluster.go:1935 msgid "All existing data is lost when joining a cluster, continue?" msgstr "" "Todos os dados existentes são perdidos quando se junta a um agrupamento, " @@ -1074,11 +1074,11 @@ msgstr "Arquitetura: %s" msgid "Architecture: %v" msgstr "Arquitetura: %v" -#: cmd/incus/cluster.go:1831 +#: cmd/incus/cluster.go:1833 msgid "Are you joining an existing cluster?" msgstr "Está a juntar-se a um agrupamento existente?" -#: cmd/incus/cluster.go:1670 +#: cmd/incus/cluster.go:1672 #, c-format msgid "Are you sure you want to %s cluster member %q? (yes/no) [default=no]: " msgstr "" @@ -1477,7 +1477,7 @@ msgstr "" "Não correspondência da impressão digital do certificado entre testemunho de " "certificado e servidor %q" -#: cmd/incus/cluster.go:1883 cmd/incus/cluster.go:2076 +#: cmd/incus/cluster.go:1885 cmd/incus/cluster.go:2078 #, c-format msgid "" "Certificate fingerprint mismatch between join token and cluster member %q" @@ -1499,7 +1499,7 @@ msgstr "Chassis" msgid "Checking if the daemon is ready (attempt %d)" msgstr "A verificar se o daemon está pronto (tentativa %d)" -#: cmd/incus/cluster.go:1982 +#: cmd/incus/cluster.go:1984 #, c-format msgid "Choose %s:" msgstr "Escolher %s:" @@ -2866,7 +2866,7 @@ msgstr "Variável do ambiente a definir (ex. HOME=/home/foo)" msgid "Ephemeral instance" msgstr "Instância efêmera" -#: cmd/incus/cluster.go:1877 cmd/incus/cluster.go:2070 +#: cmd/incus/cluster.go:1879 cmd/incus/cluster.go:2072 #, c-format msgid "Error connecting to existing cluster member %q: %v" msgstr "Erro ao ligar a membro de agrupamento existente %q: %v" @@ -2940,7 +2940,7 @@ msgstr "Erro: %v\n" msgid "Evacuate cluster member" msgstr "Evacuar membro do agrupamento" -#: cmd/incus/cluster.go:1695 +#: cmd/incus/cluster.go:1697 #, c-format msgid "Evacuating cluster member: %s" msgstr "A evacuar membro do agrupamento: %s" @@ -3221,7 +3221,7 @@ msgstr "" "Falhou ao converter testemunho de operação para testemunho de adicionar " "certificado: %w" -#: cmd/incus/cluster.go:1183 cmd/incus/cluster.go:1917 +#: cmd/incus/cluster.go:1183 cmd/incus/cluster.go:1919 #, c-format msgid "Failed converting token operation to join token: %w" msgstr "" @@ -3242,7 +3242,7 @@ msgstr "Falhou ao apagar volume fonte após cópia: %w" msgid "Failed generating SSH host key: %w" msgstr "Falhou ao gerar chave SSH de máquina: %w" -#: cmd/incus/cluster.go:2019 +#: cmd/incus/cluster.go:2021 #, c-format msgid "Failed generating trust certificate: %w" msgstr "Falhou ao gerar certificado de confiança: %w" @@ -3306,7 +3306,7 @@ msgstr "Falhou ao aceitar ligação a chegar: %w" msgid "Failed to add remote" msgstr "Falhou ao adicionar remoto" -#: cmd/incus/cluster.go:2029 +#: cmd/incus/cluster.go:2031 #, c-format msgid "Failed to add server cert to cluster: %w" msgstr "Falhou a adicionar certificado de servidor ao agrupamento: %w" @@ -3346,7 +3346,7 @@ msgstr "Falhou ao ligar para obter informação do servidor: %w" msgid "Failed to connect to local daemon: %w" msgstr "Falhou ao ligar ao daemon local: %w" -#: cmd/incus/cluster.go:2014 +#: cmd/incus/cluster.go:2016 #, c-format msgid "Failed to connect to target cluster node %q: %w" msgstr "Falhou ao ligar a nó de agrupamento alvo %q: %w" @@ -3402,7 +3402,7 @@ msgstr "" msgid "Failed to find project: %w" msgstr "Falhou ao encontrar projeto: %w" -#: cmd/incus/cluster.go:2113 cmd/incus/cluster.go:2118 +#: cmd/incus/cluster.go:2115 cmd/incus/cluster.go:2120 #, c-format msgid "Failed to join cluster: %w" msgstr "Falhou ao juntar a agrupamento: %w" @@ -3432,7 +3432,7 @@ msgstr "Falhou ao abrir ficheiro alvo %q: %w" msgid "Failed to parse dump response: %w" msgstr "Falhou ao analisar resposta de despejo: %w" -#: cmd/incus/cluster.go:1660 +#: cmd/incus/cluster.go:1662 #, c-format msgid "Failed to parse servers: %w" msgstr "Falhou ao analisar servidores: %w" @@ -3477,7 +3477,7 @@ msgstr "Falhou ao renderizar a configuração: %w" msgid "Failed to request dump: %w" msgstr "Falhou ao pedir despejo: %w" -#: cmd/incus/cluster.go:1978 +#: cmd/incus/cluster.go:1980 #, c-format msgid "Failed to retrieve cluster information: %w" msgstr "Falhou ao obter informação do agrupamento: %w" @@ -3516,12 +3516,12 @@ msgstr "Falhou ao obter lista de redes: %w" msgid "Failed to retrieve list of storage pools: %w" msgstr "Falhou ao obter lista de pools de armazenamento: %w" -#: cmd/incus/cluster.go:1952 +#: cmd/incus/cluster.go:1954 #, c-format msgid "Failed to setup trust relationship with cluster: %w" msgstr "Falhou ao configurar relação de confiança com agrupamento: %w" -#: cmd/incus/cluster.go:1687 +#: cmd/incus/cluster.go:1689 #, c-format msgid "Failed to update cluster member state: %w" msgstr "Falhou ao atualizar estado de membro de agrupamento: %w" @@ -3569,6 +3569,11 @@ msgstr "Impressão digital: %s" msgid "Force a particular evacuation action" msgstr "Força uma ação de evacuação particular" +#: cmd/incus/cluster.go:1629 +#, fuzzy +msgid "Force a particular restoration action" +msgstr "Força uma ação de evacuação particular" + #: cmd/incus/file.go:109 cmd/incus/storage_volume.go:2432 msgid "Force creating files or directories" msgstr "Força a criação de ficheiros ou diretórios" @@ -3581,7 +3586,7 @@ msgstr "Força apagar o projeto e tudo o que contém." msgid "Force deleting files, directories, and subdirectories" msgstr "Força apagar de ficheiros, diretórios e subdiretórios" -#: cmd/incus/cluster.go:1644 +#: cmd/incus/cluster.go:1646 msgid "Force evacuation without user confirmation" msgstr "Força evacuação sem confirmação do utilizador" @@ -4276,7 +4281,7 @@ msgstr "Instantâneos de instância não podem ser reconstruídos: %s" msgid "Instance type" msgstr "Tipo de instância" -#: cmd/incus/cluster.go:1814 +#: cmd/incus/cluster.go:1816 msgid "Invalid IP address or DNS name" msgstr "Endereço IP ou nome DNS inválido" @@ -4316,7 +4321,7 @@ msgstr "Certificado inválido" msgid "Invalid certificate format %q" msgstr "Formato de certificado inválido %q" -#: cmd/incus/cluster.go:2055 +#: cmd/incus/cluster.go:2057 #, c-format msgid "Invalid cluster join token: %w" msgstr "Testemunho de junção a agrupamento inválido: %w" @@ -4365,7 +4370,7 @@ msgstr "Nome de instância inválido: %s" msgid "Invalid instance path: %q" msgstr "Caminho de instância inválido: %q" -#: cmd/incus/cluster.go:1854 +#: cmd/incus/cluster.go:1856 #, c-format msgid "Invalid join token: %w" msgstr "Testemunho de junção inválido: %w" @@ -4456,7 +4461,7 @@ msgstr "IsSM: %s (%s)" msgid "Join an existing server to a cluster" msgstr "Juntar um servidor existente a um agrupamento" -#: cmd/incus/cluster.go:1845 +#: cmd/incus/cluster.go:1847 msgid "Joining an existing cluster requires root privileges" msgstr "A adesão a um agrupamento existente requer privilégios de root" @@ -6498,7 +6503,7 @@ msgstr "Impressão digital de certificado em falta" msgid "Missing cluster group name" msgstr "Nome do grupo de agrupamento em falta" -#: cmd/incus/cluster.go:966 cmd/incus/cluster.go:1666 +#: cmd/incus/cluster.go:966 cmd/incus/cluster.go:1668 #: cmd/incus/cluster_group.go:147 cmd/incus/cluster_group.go:656 #: cmd/incus/cluster_group.go:860 cmd/incus/cluster_role.go:84 #: cmd/incus/cluster_role.go:153 @@ -7321,7 +7326,7 @@ msgstr "Palavra passe para %s : " msgid "Password rejected for %q" msgstr "Palavra passe rejeitada para %q" -#: cmd/incus/cluster.go:2040 +#: cmd/incus/cluster.go:2042 #, c-format msgid "Path %s doesn't exist" msgstr "Caminho %s não existe" @@ -7351,7 +7356,7 @@ msgid "Please provide an alternate server address (empty to abort):" msgstr "" "Por favor forneça um endereço de servidor alternativo (vazio para abortar):" -#: cmd/incus/cluster.go:1861 +#: cmd/incus/cluster.go:1863 msgid "Please provide join token:" msgstr "Por favor forneça testemunho de adesão:" @@ -7967,7 +7972,7 @@ msgstr "Restaura instantâneos de instância" msgid "Restore storage volume snapshots" msgstr "Restaura instantâneos de volume de armazenamento" -#: cmd/incus/cluster.go:1693 +#: cmd/incus/cluster.go:1695 #, c-format msgid "Restoring cluster member: %s" msgstr "A restaurar membro do agrupamento: %s" @@ -9620,7 +9625,7 @@ msgstr "UUID" msgid "UUID: %v" msgstr "UUID: %v" -#: cmd/incus/cluster.go:1892 cmd/incus/cluster.go:2085 +#: cmd/incus/cluster.go:1894 cmd/incus/cluster.go:2087 msgid "Unable to connect to any of the cluster members specified in join token" msgstr "" "Incapaz de se ligar a qualquer um dos membros do agrupamento especificados " @@ -9936,7 +9941,7 @@ msgstr "Usado: %v" msgid "User ID to run the command as (default 0)" msgstr "ID de utilizador para correr o comando como (predefinição 0)" -#: cmd/incus/cluster.go:1939 +#: cmd/incus/cluster.go:1941 msgid "User aborted configuration" msgstr "Configuração abortada pelo utilizador" @@ -10090,7 +10095,7 @@ msgstr "" msgid "Web server running at: %s" msgstr "Servidor Web a correr em: %s" -#: cmd/incus/cluster.go:1820 +#: cmd/incus/cluster.go:1822 msgid "What IP address or DNS name should be used to reach this server?" msgstr "" "Que endereço IP ou nome DNS deve ser usado para alcançar este servidor?" @@ -10103,7 +10108,7 @@ msgstr "Que endereço IPv4 deve ser usado?" msgid "What IPv6 address should be used?" msgstr "Que endereço IPv6 deve ser usado?" -#: cmd/incus/cluster.go:1790 +#: cmd/incus/cluster.go:1792 msgid "What member name should be used to identify this server in the cluster?" msgstr "" "Que nome de membro deve ser usado para identificar este servidor no " diff --git a/po/pt_BR.po b/po/pt_BR.po index f748db600..9fc4b48ca 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: lxd\n" "Report-Msgid-Bugs-To: lxc-devel@lists.linuxcontainers.org\n" -"POT-Creation-Date: 2026-01-20 21:57-0500\n" +"POT-Creation-Date: 2026-02-04 16:37+0100\n" "PO-Revision-Date: 2025-12-27 03:16+0000\n" "Last-Translator: Paulo Coghi \n" "Language-Team: Portuguese (Brazil) \n" "Language-Team: Russian \n" @@ -1059,7 +1059,7 @@ msgstr "" msgid "Aliases:" msgstr "Псевдонимы:" -#: cmd/incus/cluster.go:1933 +#: cmd/incus/cluster.go:1935 msgid "All existing data is lost when joining a cluster, continue?" msgstr "" @@ -1088,11 +1088,11 @@ msgstr "Архитектура: %s" msgid "Architecture: %v" msgstr "Архитектура: %v" -#: cmd/incus/cluster.go:1831 +#: cmd/incus/cluster.go:1833 msgid "Are you joining an existing cluster?" msgstr "" -#: cmd/incus/cluster.go:1670 +#: cmd/incus/cluster.go:1672 #, c-format msgid "Are you sure you want to %s cluster member %q? (yes/no) [default=no]: " msgstr "" @@ -1481,7 +1481,7 @@ msgid "" "Certificate fingerprint mismatch between certificate token and server %q" msgstr "" -#: cmd/incus/cluster.go:1883 cmd/incus/cluster.go:2076 +#: cmd/incus/cluster.go:1885 cmd/incus/cluster.go:2078 #, c-format msgid "" "Certificate fingerprint mismatch between join token and cluster member %q" @@ -1501,7 +1501,7 @@ msgstr "" msgid "Checking if the daemon is ready (attempt %d)" msgstr "" -#: cmd/incus/cluster.go:1982 +#: cmd/incus/cluster.go:1984 #, c-format msgid "Choose %s:" msgstr "" @@ -2851,7 +2851,7 @@ msgstr "" msgid "Ephemeral instance" msgstr "" -#: cmd/incus/cluster.go:1877 cmd/incus/cluster.go:2070 +#: cmd/incus/cluster.go:1879 cmd/incus/cluster.go:2072 #, fuzzy, c-format msgid "Error connecting to existing cluster member %q: %v" msgstr "Копирование образа: %s" @@ -2929,7 +2929,7 @@ msgstr "" "\n" "lxc %s [:] [[:]...]%s" -#: cmd/incus/cluster.go:1695 +#: cmd/incus/cluster.go:1697 #, fuzzy, c-format msgid "Evacuating cluster member: %s" msgstr "Копирование образа: %s" @@ -3158,7 +3158,7 @@ msgstr "Копирование образа: %s" msgid "Failed converting token operation to certificate add token: %w" msgstr "" -#: cmd/incus/cluster.go:1183 cmd/incus/cluster.go:1917 +#: cmd/incus/cluster.go:1183 cmd/incus/cluster.go:1919 #, fuzzy, c-format msgid "Failed converting token operation to join token: %w" msgstr "Копирование образа: %s" @@ -3178,7 +3178,7 @@ msgstr "Копирование образа: %s" msgid "Failed generating SSH host key: %w" msgstr "Принять сертификат" -#: cmd/incus/cluster.go:2019 +#: cmd/incus/cluster.go:2021 #, fuzzy, c-format msgid "Failed generating trust certificate: %w" msgstr "Принять сертификат" @@ -3242,7 +3242,7 @@ msgstr "Принять сертификат" msgid "Failed to add remote" msgstr "" -#: cmd/incus/cluster.go:2029 +#: cmd/incus/cluster.go:2031 #, fuzzy, c-format msgid "Failed to add server cert to cluster: %w" msgstr "Принять сертификат" @@ -3282,7 +3282,7 @@ msgstr "Копирование образа: %s" msgid "Failed to connect to local daemon: %w" msgstr "Копирование образа: %s" -#: cmd/incus/cluster.go:2014 +#: cmd/incus/cluster.go:2016 #, fuzzy, c-format msgid "Failed to connect to target cluster node %q: %w" msgstr "Копирование образа: %s" @@ -3337,7 +3337,7 @@ msgstr "Принять сертификат" msgid "Failed to find project: %w" msgstr "" -#: cmd/incus/cluster.go:2113 cmd/incus/cluster.go:2118 +#: cmd/incus/cluster.go:2115 cmd/incus/cluster.go:2120 #, fuzzy, c-format msgid "Failed to join cluster: %w" msgstr "Копирование образа: %s" @@ -3367,7 +3367,7 @@ msgstr "Принять сертификат" msgid "Failed to parse dump response: %w" msgstr "Принять сертификат" -#: cmd/incus/cluster.go:1660 +#: cmd/incus/cluster.go:1662 #, fuzzy, c-format msgid "Failed to parse servers: %w" msgstr "Принять сертификат" @@ -3412,7 +3412,7 @@ msgstr "Принять сертификат" msgid "Failed to request dump: %w" msgstr "Принять сертификат" -#: cmd/incus/cluster.go:1978 +#: cmd/incus/cluster.go:1980 #, fuzzy, c-format msgid "Failed to retrieve cluster information: %w" msgstr "Принять сертификат" @@ -3450,12 +3450,12 @@ msgstr "Принять сертификат" msgid "Failed to retrieve list of storage pools: %w" msgstr "Принять сертификат" -#: cmd/incus/cluster.go:1952 +#: cmd/incus/cluster.go:1954 #, fuzzy, c-format msgid "Failed to setup trust relationship with cluster: %w" msgstr "Копирование образа: %s" -#: cmd/incus/cluster.go:1687 +#: cmd/incus/cluster.go:1689 #, fuzzy, c-format msgid "Failed to update cluster member state: %w" msgstr "Копирование образа: %s" @@ -3503,6 +3503,10 @@ msgstr "" msgid "Force a particular evacuation action" msgstr "" +#: cmd/incus/cluster.go:1629 +msgid "Force a particular restoration action" +msgstr "" + #: cmd/incus/file.go:109 cmd/incus/storage_volume.go:2432 msgid "Force creating files or directories" msgstr "" @@ -3515,7 +3519,7 @@ msgstr "" msgid "Force deleting files, directories, and subdirectories" msgstr "" -#: cmd/incus/cluster.go:1644 +#: cmd/incus/cluster.go:1646 msgid "Force evacuation without user confirmation" msgstr "" @@ -4199,7 +4203,7 @@ msgstr "Имя контейнера: %s" msgid "Instance type" msgstr "" -#: cmd/incus/cluster.go:1814 +#: cmd/incus/cluster.go:1816 #, fuzzy msgid "Invalid IP address or DNS name" msgstr "Имя контейнера: %s" @@ -4240,7 +4244,7 @@ msgstr "" msgid "Invalid certificate format %q" msgstr "Имя контейнера: %s" -#: cmd/incus/cluster.go:2055 +#: cmd/incus/cluster.go:2057 #, fuzzy, c-format msgid "Invalid cluster join token: %w" msgstr "Имя контейнера: %s" @@ -4288,7 +4292,7 @@ msgstr "Имя контейнера: %s" msgid "Invalid instance path: %q" msgstr "Имя контейнера: %s" -#: cmd/incus/cluster.go:1854 +#: cmd/incus/cluster.go:1856 #, fuzzy, c-format msgid "Invalid join token: %w" msgstr "Имя контейнера: %s" @@ -4380,7 +4384,7 @@ msgstr "" msgid "Join an existing server to a cluster" msgstr "" -#: cmd/incus/cluster.go:1845 +#: cmd/incus/cluster.go:1847 msgid "Joining an existing cluster requires root privileges" msgstr "" @@ -5790,7 +5794,7 @@ msgstr "" msgid "Missing cluster group name" msgstr "Копирование образа: %s" -#: cmd/incus/cluster.go:966 cmd/incus/cluster.go:1666 +#: cmd/incus/cluster.go:966 cmd/incus/cluster.go:1668 #: cmd/incus/cluster_group.go:147 cmd/incus/cluster_group.go:656 #: cmd/incus/cluster_group.go:860 cmd/incus/cluster_role.go:84 #: cmd/incus/cluster_role.go:153 @@ -6621,7 +6625,7 @@ msgstr "Пароль администратора для %s: " msgid "Password rejected for %q" msgstr "Пароль администратора для %s: " -#: cmd/incus/cluster.go:2040 +#: cmd/incus/cluster.go:2042 #, c-format msgid "Path %s doesn't exist" msgstr "" @@ -6650,7 +6654,7 @@ msgstr "" msgid "Please provide an alternate server address (empty to abort):" msgstr "" -#: cmd/incus/cluster.go:1861 +#: cmd/incus/cluster.go:1863 #, fuzzy msgid "Please provide join token:" msgstr "Копирование образа: %s" @@ -7272,7 +7276,7 @@ msgstr "Копирование образа: %s" msgid "Restore storage volume snapshots" msgstr "Копирование образа: %s" -#: cmd/incus/cluster.go:1693 +#: cmd/incus/cluster.go:1695 #, fuzzy, c-format msgid "Restoring cluster member: %s" msgstr "Копирование образа: %s" @@ -8835,7 +8839,7 @@ msgstr "" msgid "UUID: %v" msgstr "" -#: cmd/incus/cluster.go:1892 cmd/incus/cluster.go:2085 +#: cmd/incus/cluster.go:1894 cmd/incus/cluster.go:2087 #, fuzzy msgid "Unable to connect to any of the cluster members specified in join token" msgstr "Копирование образа: %s" @@ -9159,7 +9163,7 @@ msgstr "" msgid "User ID to run the command as (default 0)" msgstr "" -#: cmd/incus/cluster.go:1939 +#: cmd/incus/cluster.go:1941 #, fuzzy msgid "User aborted configuration" msgstr "Копирование образа: %s" @@ -9287,7 +9291,7 @@ msgstr "" msgid "Web server running at: %s" msgstr "" -#: cmd/incus/cluster.go:1820 +#: cmd/incus/cluster.go:1822 msgid "What IP address or DNS name should be used to reach this server?" msgstr "" @@ -9299,7 +9303,7 @@ msgstr "" msgid "What IPv6 address should be used?" msgstr "" -#: cmd/incus/cluster.go:1790 +#: cmd/incus/cluster.go:1792 msgid "What member name should be used to identify this server in the cluster?" msgstr "" diff --git a/po/sv.po b/po/sv.po index 90b583fed..493462f84 100644 --- a/po/sv.po +++ b/po/sv.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: incus\n" "Report-Msgid-Bugs-To: lxc-devel@lists.linuxcontainers.org\n" -"POT-Creation-Date: 2026-01-20 21:57-0500\n" +"POT-Creation-Date: 2026-02-04 16:37+0100\n" "PO-Revision-Date: 2026-01-10 12:01+0000\n" "Last-Translator: Daniel Nylander \n" "Language-Team: Swedish \n" @@ -1023,7 +1023,7 @@ msgstr "Alias finns redan: %s" msgid "Aliases:" msgstr "Alias:" -#: cmd/incus/cluster.go:1933 +#: cmd/incus/cluster.go:1935 msgid "All existing data is lost when joining a cluster, continue?" msgstr "" "Alla befintliga data går förlorade när du ansluter till ett kluster. Vill du " @@ -1052,11 +1052,11 @@ msgstr "Arkitektur: %s" msgid "Architecture: %v" msgstr "Arkitektur: %v" -#: cmd/incus/cluster.go:1831 +#: cmd/incus/cluster.go:1833 msgid "Are you joining an existing cluster?" msgstr "Ska du gå med i ett befintligt kluster?" -#: cmd/incus/cluster.go:1670 +#: cmd/incus/cluster.go:1672 #, c-format msgid "Are you sure you want to %s cluster member %q? (yes/no) [default=no]: " msgstr "" @@ -1449,7 +1449,7 @@ msgstr "" "Certifikatets fingeravtryck stämmer inte överens mellan certifikattoken och " "servern %q" -#: cmd/incus/cluster.go:1883 cmd/incus/cluster.go:2076 +#: cmd/incus/cluster.go:1885 cmd/incus/cluster.go:2078 #, c-format msgid "" "Certificate fingerprint mismatch between join token and cluster member %q" @@ -1471,7 +1471,7 @@ msgstr "Chassi" msgid "Checking if the daemon is ready (attempt %d)" msgstr "Kontrollerar om daemonen är redo (försök %d)" -#: cmd/incus/cluster.go:1982 +#: cmd/incus/cluster.go:1984 #, c-format msgid "Choose %s:" msgstr "Välj %s:" @@ -2832,7 +2832,7 @@ msgstr "Miljövariabel att ställa in (t.ex. HOME=/home/foo)" msgid "Ephemeral instance" msgstr "Tillfällig instans" -#: cmd/incus/cluster.go:1877 cmd/incus/cluster.go:2070 +#: cmd/incus/cluster.go:1879 cmd/incus/cluster.go:2072 #, c-format msgid "Error connecting to existing cluster member %q: %v" msgstr "Fel vid anslutning till befintlig klustermedlem %q: %v" @@ -2906,7 +2906,7 @@ msgstr "Fel: %v\n" msgid "Evacuate cluster member" msgstr "Evakuera klustermedlem" -#: cmd/incus/cluster.go:1695 +#: cmd/incus/cluster.go:1697 #, c-format msgid "Evacuating cluster member: %s" msgstr "Evakuerar klustermedlem: %s" @@ -3178,7 +3178,7 @@ msgstr "Misslyckades med att ansluta till daemon (försök %d): %v" msgid "Failed converting token operation to certificate add token: %w" msgstr "Konvertering av token till certifikat misslyckades: %w" -#: cmd/incus/cluster.go:1183 cmd/incus/cluster.go:1917 +#: cmd/incus/cluster.go:1183 cmd/incus/cluster.go:1919 #, c-format msgid "Failed converting token operation to join token: %w" msgstr "Konvertering av token-operation till join-token misslyckades: %w" @@ -3198,7 +3198,7 @@ msgstr "Misslyckades med att ta bort källvolymen efter kopiering: %w" msgid "Failed generating SSH host key: %w" msgstr "Det gick inte att skapa SSH-värdnyckel: %w" -#: cmd/incus/cluster.go:2019 +#: cmd/incus/cluster.go:2021 #, c-format msgid "Failed generating trust certificate: %w" msgstr "Det gick inte att generera betrott certifikat: %w" @@ -3262,7 +3262,7 @@ msgstr "Det gick inte att acceptera inkommande anslutning: %w" msgid "Failed to add remote" msgstr "Det gick inte att lägga till fjärrkontrollen" -#: cmd/incus/cluster.go:2029 +#: cmd/incus/cluster.go:2031 #, c-format msgid "Failed to add server cert to cluster: %w" msgstr "Det gick inte att lägga till servercertifikatet till klustret: %w" @@ -3302,7 +3302,7 @@ msgstr "Det gick inte att ansluta för att hämta serverinformation: %w" msgid "Failed to connect to local daemon: %w" msgstr "Det gick inte att ansluta till lokal daemon: %w" -#: cmd/incus/cluster.go:2014 +#: cmd/incus/cluster.go:2016 #, c-format msgid "Failed to connect to target cluster node %q: %w" msgstr "Det gick inte att ansluta till målklusterknutpunkten %q: %w" @@ -3358,7 +3358,7 @@ msgstr "Det gick inte att hämta säkerhetskopian av lagringsvolymen: %w" msgid "Failed to find project: %w" msgstr "Projektet kunde inte hittas: %w" -#: cmd/incus/cluster.go:2113 cmd/incus/cluster.go:2118 +#: cmd/incus/cluster.go:2115 cmd/incus/cluster.go:2120 #, c-format msgid "Failed to join cluster: %w" msgstr "Det gick inte att ansluta till klustret: %w" @@ -3388,7 +3388,7 @@ msgstr "Det gick inte att stänga servercertifikatfilen %q: %w" msgid "Failed to parse dump response: %w" msgstr "Det gick inte att analysera dumpningssvaret: %w" -#: cmd/incus/cluster.go:1660 +#: cmd/incus/cluster.go:1662 #, c-format msgid "Failed to parse servers: %w" msgstr "Det gick inte att analysera servrarna: %w" @@ -3433,7 +3433,7 @@ msgstr "Det gick inte att rendera konfigurationen: %w" msgid "Failed to request dump: %w" msgstr "Misslyckades med att begära dump: %w" -#: cmd/incus/cluster.go:1978 +#: cmd/incus/cluster.go:1980 #, c-format msgid "Failed to retrieve cluster information: %w" msgstr "Det gick inte att hämta klusterinformation: %w" @@ -3473,12 +3473,12 @@ msgstr "Det gick inte att hämta listan över nätverk: %w" msgid "Failed to retrieve list of storage pools: %w" msgstr "Det gick inte att hämta listan över lagringspooler: %w" -#: cmd/incus/cluster.go:1952 +#: cmd/incus/cluster.go:1954 #, c-format msgid "Failed to setup trust relationship with cluster: %w" msgstr "Det gick inte att upprätta ett förtroendeförhållande med klustret: %w" -#: cmd/incus/cluster.go:1687 +#: cmd/incus/cluster.go:1689 #, c-format msgid "Failed to update cluster member state: %w" msgstr "Det gick inte att uppdatera klustermedlemmens status: %w" @@ -3526,6 +3526,11 @@ msgstr "Fingeravtryck: %s" msgid "Force a particular evacuation action" msgstr "Tvinga fram en viss evakueringsåtgärd" +#: cmd/incus/cluster.go:1629 +#, fuzzy +msgid "Force a particular restoration action" +msgstr "Tvinga fram en viss evakueringsåtgärd" + #: cmd/incus/file.go:109 cmd/incus/storage_volume.go:2432 msgid "Force creating files or directories" msgstr "Tvinga skapande av filer eller kataloger" @@ -3538,7 +3543,7 @@ msgstr "Tvinga bort projektet och allt det innehåller." msgid "Force deleting files, directories, and subdirectories" msgstr "Tvinga borttagning av filer, kataloger och underkataloger" -#: cmd/incus/cluster.go:1644 +#: cmd/incus/cluster.go:1646 msgid "Force evacuation without user confirmation" msgstr "Tvinga evakuering utan användarens bekräftelse" @@ -4226,7 +4231,7 @@ msgstr "Instanssnapshots kan inte återskapas: %s" msgid "Instance type" msgstr "Instans typ" -#: cmd/incus/cluster.go:1814 +#: cmd/incus/cluster.go:1816 msgid "Invalid IP address or DNS name" msgstr "Ogiltig IP-adress eller DNS-namn" @@ -4266,7 +4271,7 @@ msgstr "Ogiltigt certifikat" msgid "Invalid certificate format %q" msgstr "Ogiltigt certifikatformat %q" -#: cmd/incus/cluster.go:2055 +#: cmd/incus/cluster.go:2057 #, c-format msgid "Invalid cluster join token: %w" msgstr "Ogiltig klusteranslutningstoken: %w" @@ -4314,7 +4319,7 @@ msgstr "Ogiltigt instansnamn: %s" msgid "Invalid instance path: %q" msgstr "Ogiltig instansväg: %q" -#: cmd/incus/cluster.go:1854 +#: cmd/incus/cluster.go:1856 #, c-format msgid "Invalid join token: %w" msgstr "Ogiltigt anslutningstoken: %w" @@ -4406,7 +4411,7 @@ msgstr "IsSM: %s (%s)" msgid "Join an existing server to a cluster" msgstr "Ska du gå med i ett befintligt kluster?" -#: cmd/incus/cluster.go:1845 +#: cmd/incus/cluster.go:1847 msgid "Joining an existing cluster requires root privileges" msgstr "För att ansluta sig till ett befintligt kluster krävs root-behörighet" @@ -6355,7 +6360,7 @@ msgstr "Saknat certifikatfingeravtryck" msgid "Missing cluster group name" msgstr "Saknat klustergruppsnamn" -#: cmd/incus/cluster.go:966 cmd/incus/cluster.go:1666 +#: cmd/incus/cluster.go:966 cmd/incus/cluster.go:1668 #: cmd/incus/cluster_group.go:147 cmd/incus/cluster_group.go:656 #: cmd/incus/cluster_group.go:860 cmd/incus/cluster_role.go:84 #: cmd/incus/cluster_role.go:153 @@ -7174,7 +7179,7 @@ msgstr "Lösenord för %s: " msgid "Password rejected for %q" msgstr "Lösenordet avvisat för %q" -#: cmd/incus/cluster.go:2040 +#: cmd/incus/cluster.go:2042 #, c-format msgid "Path %s doesn't exist" msgstr "Sökvägen %s finns inte" @@ -7203,7 +7208,7 @@ msgstr "Skapa de saknade posterna och tryck sedan på ENTER:" msgid "Please provide an alternate server address (empty to abort):" msgstr "Ange en alternativ serveradress (lämna tomt för att avbryta):" -#: cmd/incus/cluster.go:1861 +#: cmd/incus/cluster.go:1863 msgid "Please provide join token:" msgstr "Ange anslutningstoken:" @@ -7819,7 +7824,7 @@ msgstr "Återställ instanssnapshots" msgid "Restore storage volume snapshots" msgstr "Återställ snapshots av lagringsvolym" -#: cmd/incus/cluster.go:1693 +#: cmd/incus/cluster.go:1695 #, c-format msgid "Restoring cluster member: %s" msgstr "Återställer klustermedlem: %s" @@ -9460,7 +9465,7 @@ msgstr "UUID" msgid "UUID: %v" msgstr "UUID: %v" -#: cmd/incus/cluster.go:1892 cmd/incus/cluster.go:2085 +#: cmd/incus/cluster.go:1894 cmd/incus/cluster.go:2087 msgid "Unable to connect to any of the cluster members specified in join token" msgstr "" "Det går inte att ansluta till någon av klustermedlemmarna som anges i " @@ -9769,7 +9774,7 @@ msgstr "Använd: %v" msgid "User ID to run the command as (default 0)" msgstr "Användar-ID för att köra kommandot som (standard 0)" -#: cmd/incus/cluster.go:1939 +#: cmd/incus/cluster.go:1941 msgid "User aborted configuration" msgstr "Användaren avbröt konfigurationen" @@ -9913,7 +9918,7 @@ msgstr "" msgid "Web server running at: %s" msgstr "Webbserver körs på: %s" -#: cmd/incus/cluster.go:1820 +#: cmd/incus/cluster.go:1822 msgid "What IP address or DNS name should be used to reach this server?" msgstr "Vilken IP-adress eller DNS-namn ska användas för att nå denna server?" @@ -9925,7 +9930,7 @@ msgstr "Vilken IPv4-adress ska användas?" msgid "What IPv6 address should be used?" msgstr "Vilken IPv6-adress ska användas?" -#: cmd/incus/cluster.go:1790 +#: cmd/incus/cluster.go:1792 msgid "What member name should be used to identify this server in the cluster?" msgstr "" "Vilket medlemsnamn ska användas för att identifiera denna server i klustret?" diff --git a/po/ta.po b/po/ta.po index 180ea7d35..e653d4af9 100644 --- a/po/ta.po +++ b/po/ta.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: incus\n" "Report-Msgid-Bugs-To: lxc-devel@lists.linuxcontainers.org\n" -"POT-Creation-Date: 2026-01-20 21:57-0500\n" +"POT-Creation-Date: 2026-02-04 16:37+0100\n" "PO-Revision-Date: 2025-12-27 03:13+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Tamil \n" @@ -762,7 +762,7 @@ msgstr "" msgid "Aliases:" msgstr "" -#: cmd/incus/cluster.go:1933 +#: cmd/incus/cluster.go:1935 msgid "All existing data is lost when joining a cluster, continue?" msgstr "" @@ -789,11 +789,11 @@ msgstr "" msgid "Architecture: %v" msgstr "" -#: cmd/incus/cluster.go:1831 +#: cmd/incus/cluster.go:1833 msgid "Are you joining an existing cluster?" msgstr "" -#: cmd/incus/cluster.go:1670 +#: cmd/incus/cluster.go:1672 #, c-format msgid "Are you sure you want to %s cluster member %q? (yes/no) [default=no]: " msgstr "" @@ -1175,7 +1175,7 @@ msgid "" "Certificate fingerprint mismatch between certificate token and server %q" msgstr "" -#: cmd/incus/cluster.go:1883 cmd/incus/cluster.go:2076 +#: cmd/incus/cluster.go:1885 cmd/incus/cluster.go:2078 #, c-format msgid "" "Certificate fingerprint mismatch between join token and cluster member %q" @@ -1195,7 +1195,7 @@ msgstr "" msgid "Checking if the daemon is ready (attempt %d)" msgstr "" -#: cmd/incus/cluster.go:1982 +#: cmd/incus/cluster.go:1984 #, c-format msgid "Choose %s:" msgstr "" @@ -2481,7 +2481,7 @@ msgstr "" msgid "Ephemeral instance" msgstr "" -#: cmd/incus/cluster.go:1877 cmd/incus/cluster.go:2070 +#: cmd/incus/cluster.go:1879 cmd/incus/cluster.go:2072 #, c-format msgid "Error connecting to existing cluster member %q: %v" msgstr "" @@ -2555,7 +2555,7 @@ msgstr "" msgid "Evacuate cluster member" msgstr "" -#: cmd/incus/cluster.go:1695 +#: cmd/incus/cluster.go:1697 #, c-format msgid "Evacuating cluster member: %s" msgstr "" @@ -2775,7 +2775,7 @@ msgstr "" msgid "Failed converting token operation to certificate add token: %w" msgstr "" -#: cmd/incus/cluster.go:1183 cmd/incus/cluster.go:1917 +#: cmd/incus/cluster.go:1183 cmd/incus/cluster.go:1919 #, c-format msgid "Failed converting token operation to join token: %w" msgstr "" @@ -2795,7 +2795,7 @@ msgstr "" msgid "Failed generating SSH host key: %w" msgstr "" -#: cmd/incus/cluster.go:2019 +#: cmd/incus/cluster.go:2021 #, c-format msgid "Failed generating trust certificate: %w" msgstr "" @@ -2859,7 +2859,7 @@ msgstr "" msgid "Failed to add remote" msgstr "" -#: cmd/incus/cluster.go:2029 +#: cmd/incus/cluster.go:2031 #, c-format msgid "Failed to add server cert to cluster: %w" msgstr "" @@ -2899,7 +2899,7 @@ msgstr "" msgid "Failed to connect to local daemon: %w" msgstr "" -#: cmd/incus/cluster.go:2014 +#: cmd/incus/cluster.go:2016 #, c-format msgid "Failed to connect to target cluster node %q: %w" msgstr "" @@ -2954,7 +2954,7 @@ msgstr "" msgid "Failed to find project: %w" msgstr "" -#: cmd/incus/cluster.go:2113 cmd/incus/cluster.go:2118 +#: cmd/incus/cluster.go:2115 cmd/incus/cluster.go:2120 #, c-format msgid "Failed to join cluster: %w" msgstr "" @@ -2984,7 +2984,7 @@ msgstr "" msgid "Failed to parse dump response: %w" msgstr "" -#: cmd/incus/cluster.go:1660 +#: cmd/incus/cluster.go:1662 #, c-format msgid "Failed to parse servers: %w" msgstr "" @@ -3029,7 +3029,7 @@ msgstr "" msgid "Failed to request dump: %w" msgstr "" -#: cmd/incus/cluster.go:1978 +#: cmd/incus/cluster.go:1980 #, c-format msgid "Failed to retrieve cluster information: %w" msgstr "" @@ -3067,12 +3067,12 @@ msgstr "" msgid "Failed to retrieve list of storage pools: %w" msgstr "" -#: cmd/incus/cluster.go:1952 +#: cmd/incus/cluster.go:1954 #, c-format msgid "Failed to setup trust relationship with cluster: %w" msgstr "" -#: cmd/incus/cluster.go:1687 +#: cmd/incus/cluster.go:1689 #, c-format msgid "Failed to update cluster member state: %w" msgstr "" @@ -3120,6 +3120,10 @@ msgstr "" msgid "Force a particular evacuation action" msgstr "" +#: cmd/incus/cluster.go:1629 +msgid "Force a particular restoration action" +msgstr "" + #: cmd/incus/file.go:109 cmd/incus/storage_volume.go:2432 msgid "Force creating files or directories" msgstr "" @@ -3132,7 +3136,7 @@ msgstr "" msgid "Force deleting files, directories, and subdirectories" msgstr "" -#: cmd/incus/cluster.go:1644 +#: cmd/incus/cluster.go:1646 msgid "Force evacuation without user confirmation" msgstr "" @@ -3779,7 +3783,7 @@ msgstr "" msgid "Instance type" msgstr "" -#: cmd/incus/cluster.go:1814 +#: cmd/incus/cluster.go:1816 msgid "Invalid IP address or DNS name" msgstr "" @@ -3819,7 +3823,7 @@ msgstr "" msgid "Invalid certificate format %q" msgstr "" -#: cmd/incus/cluster.go:2055 +#: cmd/incus/cluster.go:2057 #, c-format msgid "Invalid cluster join token: %w" msgstr "" @@ -3867,7 +3871,7 @@ msgstr "" msgid "Invalid instance path: %q" msgstr "" -#: cmd/incus/cluster.go:1854 +#: cmd/incus/cluster.go:1856 #, c-format msgid "Invalid join token: %w" msgstr "" @@ -3955,7 +3959,7 @@ msgstr "" msgid "Join an existing server to a cluster" msgstr "" -#: cmd/incus/cluster.go:1845 +#: cmd/incus/cluster.go:1847 msgid "Joining an existing cluster requires root privileges" msgstr "" @@ -5307,7 +5311,7 @@ msgstr "" msgid "Missing cluster group name" msgstr "" -#: cmd/incus/cluster.go:966 cmd/incus/cluster.go:1666 +#: cmd/incus/cluster.go:966 cmd/incus/cluster.go:1668 #: cmd/incus/cluster_group.go:147 cmd/incus/cluster_group.go:656 #: cmd/incus/cluster_group.go:860 cmd/incus/cluster_role.go:84 #: cmd/incus/cluster_role.go:153 @@ -6106,7 +6110,7 @@ msgstr "" msgid "Password rejected for %q" msgstr "" -#: cmd/incus/cluster.go:2040 +#: cmd/incus/cluster.go:2042 #, c-format msgid "Path %s doesn't exist" msgstr "" @@ -6135,7 +6139,7 @@ msgstr "" msgid "Please provide an alternate server address (empty to abort):" msgstr "" -#: cmd/incus/cluster.go:1861 +#: cmd/incus/cluster.go:1863 msgid "Please provide join token:" msgstr "" @@ -6731,7 +6735,7 @@ msgstr "" msgid "Restore storage volume snapshots" msgstr "" -#: cmd/incus/cluster.go:1693 +#: cmd/incus/cluster.go:1695 #, c-format msgid "Restoring cluster member: %s" msgstr "" @@ -8231,7 +8235,7 @@ msgstr "" msgid "UUID: %v" msgstr "" -#: cmd/incus/cluster.go:1892 cmd/incus/cluster.go:2085 +#: cmd/incus/cluster.go:1894 cmd/incus/cluster.go:2087 msgid "Unable to connect to any of the cluster members specified in join token" msgstr "" @@ -8527,7 +8531,7 @@ msgstr "" msgid "User ID to run the command as (default 0)" msgstr "" -#: cmd/incus/cluster.go:1939 +#: cmd/incus/cluster.go:1941 msgid "User aborted configuration" msgstr "" @@ -8654,7 +8658,7 @@ msgstr "" msgid "Web server running at: %s" msgstr "" -#: cmd/incus/cluster.go:1820 +#: cmd/incus/cluster.go:1822 msgid "What IP address or DNS name should be used to reach this server?" msgstr "" @@ -8666,7 +8670,7 @@ msgstr "" msgid "What IPv6 address should be used?" msgstr "" -#: cmd/incus/cluster.go:1790 +#: cmd/incus/cluster.go:1792 msgid "What member name should be used to identify this server in the cluster?" msgstr "" diff --git a/po/zh_Hans.po b/po/zh_Hans.po index 47720e9cf..3a99e07c6 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@lists.linuxcontainers.org\n" -"POT-Creation-Date: 2026-01-20 21:57-0500\n" +"POT-Creation-Date: 2026-02-04 16:37+0100\n" "PO-Revision-Date: 2025-12-27 03:20+0000\n" "Last-Translator: meipeter \n" "Language-Team: Chinese (Simplified Han script) \n" "Language-Team: Chinese (Traditional Han script) Date: Wed, 4 Feb 2026 16:39:33 +0100 Subject: [PATCH 5/9] internal/instance; Correct doc for boot.autostart.priority MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Graber --- internal/instance/config.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/instance/config.go b/internal/instance/config.go index 65216df3d..6ed91578f 100644 --- a/internal/instance/config.go +++ b/internal/instance/config.go @@ -56,9 +56,10 @@ var InstanceConfigKeysAny = map[string]func(value string) error{ // gendoc:generate(entity=instance, group=boot, key=boot.autostart.priority) // The instance with the highest value is started first. + // Instances without a priority set will be started (with some parallelism) ahead of + // instances with a priority set. // --- // type: integer - // defaultdesc: 0 // liveupdate: no // shortdesc: What order to start the instances in "boot.autostart.priority": validate.Optional(validate.IsInt64), From 80a5519509214172615c713a9b84df5381299ae4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Wed, 4 Feb 2026 16:42:36 +0100 Subject: [PATCH 6/9] doc: Update config MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Graber --- doc/config_options.txt | 3 ++- internal/server/metadata/configuration.json | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/config_options.txt b/doc/config_options.txt index c025287a6..73e7910ff 100644 --- a/doc/config_options.txt +++ b/doc/config_options.txt @@ -1906,11 +1906,12 @@ The number of seconds to wait after the instance started before starting the nex ``` ```{config:option} boot.autostart.priority instance-boot -:defaultdesc: "0" :liveupdate: "no" :shortdesc: "What order to start the instances in" :type: "integer" The instance with the highest value is started first. +Instances without a priority set will be started (with some parallelism) ahead of +instances with a priority set. ``` ```{config:option} boot.host_shutdown_action instance-boot diff --git a/internal/server/metadata/configuration.json b/internal/server/metadata/configuration.json index 7ceeda26d..234ae13b7 100644 --- a/internal/server/metadata/configuration.json +++ b/internal/server/metadata/configuration.json @@ -2181,9 +2181,8 @@ }, { "boot.autostart.priority": { - "defaultdesc": "0", "liveupdate": "no", - "longdesc": "The instance with the highest value is started first.", + "longdesc": "The instance with the highest value is started first.\nInstances without a priority set will be started (with some parallelism) ahead of\ninstances with a priority set.", "shortdesc": "What order to start the instances in", "type": "integer" } From b2a41e7b9f0883dff992c4d91193648f977c266e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Wed, 4 Feb 2026 16:48:36 +0100 Subject: [PATCH 7/9] incusd/cluster: Restrict join token to database servers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This avoids generating a huge token on very large clusters. Closes #2886 Signed-off-by: Stéphane Graber --- cmd/incusd/api_cluster.go | 55 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/cmd/incusd/api_cluster.go b/cmd/incusd/api_cluster.go index 6ecdf6100..ecd5595c8 100644 --- a/cmd/incusd/api_cluster.go +++ b/cmd/incusd/api_cluster.go @@ -1366,24 +1366,79 @@ func clusterNodesPost(d *Daemon, r *http.Request) response.Response { // retrieving remote operations. onlineNodeAddresses := make([]any, 0) + // Get cluster database state. + leaderAddress, err := s.Cluster.LeaderAddress() + if err != nil { + return response.InternalError(err) + } + + var raftNodes []db.RaftNode + err = s.DB.Node.Transaction(r.Context(), func(ctx context.Context, tx *db.NodeTx) error { + raftNodes, err = tx.GetRaftNodes(ctx) + if err != nil { + return fmt.Errorf("Failed loading RAFT nodes: %w", err) + } + + return nil + }) + if err != nil { + return response.SmartError(err) + } + err = s.DB.Cluster.Transaction(r.Context(), func(ctx context.Context, tx *db.ClusterTx) error { + // Get global cluster state. + failureDomains, err := tx.GetFailureDomainsNames(ctx) + if err != nil { + return fmt.Errorf("Failed loading failure domains names: %w", err) + } + + memberFailureDomains, err := tx.GetNodesFailureDomains(ctx) + if err != nil { + return fmt.Errorf("Failed loading member failure domains: %w", err) + } + + maxVersion, err := tx.GetNodeMaxVersion(ctx) + if err != nil { + return fmt.Errorf("Failed getting max member version: %w", err) + } + // Get the nodes. members, err := tx.GetNodes(ctx) if err != nil { return fmt.Errorf("Failed getting cluster members: %w", err) } + args := db.NodeInfoArgs{ + LeaderAddress: leaderAddress, + FailureDomains: failureDomains, + MemberFailureDomains: memberFailureDomains, + OfflineThreshold: s.GlobalConfig.OfflineThreshold(), + MaxMemberVersion: maxVersion, + RaftNodes: raftNodes, + } + // Filter to online members. for _, member := range members { + memberInfo, err := member.ToAPI(ctx, tx, args) + if err != nil { + return err + } + // Verify if a node with the same name already exists in the cluster. if member.Name == req.ServerName { return fmt.Errorf("The cluster already has a member with name: %s", req.ServerName) } + // Skip servers that are offline. if member.State == db.ClusterMemberStateEvacuated || member.IsOffline(s.GlobalConfig.OfflineThreshold()) { continue } + // Only include servers that have a one of the database roles. + if !slices.Contains(memberInfo.Roles, "database") && !slices.Contains(memberInfo.Roles, "database-standby") { + continue + } + onlineNodeAddresses = append(onlineNodeAddresses, member.Address) } From b234ba988cff3ee1b94347c224a2c37fb2dc1e74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Wed, 4 Feb 2026 16:53:35 +0100 Subject: [PATCH 8/9] incusd/storage/lvm: Prevent use of lvmcluster with loop files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #2875 Signed-off-by: Stéphane Graber --- internal/server/storage/drivers/driver_lvm.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/internal/server/storage/drivers/driver_lvm.go b/internal/server/storage/drivers/driver_lvm.go index a2343012c..1b3030691 100644 --- a/internal/server/storage/drivers/driver_lvm.go +++ b/internal/server/storage/drivers/driver_lvm.go @@ -211,6 +211,10 @@ func (d *lvm) Create() error { } if sourceType == lvmSourceTypeDefault { + if d.clustered { + return errors.New("lvmcluster requires a shared physical device or a pre-existing shared VG to be used as source") + } + usingLoopFile = true defaultSource := loopFilePath(d.name) From bb6e2b09ebbeb61c84354c1515b3de8f92edc295 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Wed, 4 Feb 2026 17:10:33 +0100 Subject: [PATCH 9/9] incusd/operations: Prevent concurrent access to metadata MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #2865 Signed-off-by: Stéphane Graber --- internal/server/operations/operations.go | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/internal/server/operations/operations.go b/internal/server/operations/operations.go index e83ccd1e4..d57c3f6da 100644 --- a/internal/server/operations/operations.go +++ b/internal/server/operations/operations.go @@ -153,6 +153,7 @@ func OperationCreate(s *state.State, projectName string, opClass OperationClass, op.SetEventServer(s.Events) } + // Validate and make a copy of the metadata to avoid concurrent reads/writes. newMetadata, err := parseMetadata(opMetadata) if err != nil { return nil, err @@ -506,7 +507,7 @@ func (op *Operation) Render() (string, *api.Operation, error) { op.lock.Lock() - // Make a copy of the metadata to avoid concurrent reads/writes. + // Make a read-only copy of the metadata to avoid concurrent reads/writes. metadata := map[string]any{} for k, v := range op.metadata { metadata[k] = v @@ -592,6 +593,7 @@ func (op *Operation) UpdateMetadata(opMetadata any) error { return errors.New("Read-only operations can't be updated") } + // Validate and make a copy of the metadata to avoid concurrent reads/writes. newMetadata, err := parseMetadata(opMetadata) if err != nil { return err @@ -635,7 +637,6 @@ func (op *Operation) ExtendMetadata(metadata any) error { // Get current metadata. newMetadata := op.metadata - op.lock.Unlock() // Merge with current one. if op.metadata == nil { @@ -645,7 +646,6 @@ func (op *Operation) ExtendMetadata(metadata any) error { } // Update the operation. - op.lock.Lock() op.updatedAt = time.Now() op.metadata = newMetadata op.lock.Unlock() @@ -665,9 +665,18 @@ func (op *Operation) ID() string { return op.id } -// Metadata returns the operation Metadata. +// Metadata returns a read-only copy of the operation metadata. func (op *Operation) Metadata() map[string]any { - return op.metadata + op.lock.Lock() + defer op.lock.Unlock() + + // Make a read-only copy of the metadata to avoid concurrent reads/writes. + metadata := map[string]any{} + for k, v := range op.metadata { + metadata[k] = v + } + + return metadata } // URL returns the operation URL.