提交 ff5f75f5 编写于 作者: P Peter Krempa

virsh: secret: Add --plain switch for secret-set-value

Allow using the contents of --file without base64 decoding.
Signed-off-by: NPeter Krempa <pkrempa@redhat.com>
Reviewed-by: NDaniel P. Berrangé <berrange@redhat.com>
上级 3c5c90ca
...@@ -6563,11 +6563,12 @@ secret-set-value ...@@ -6563,11 +6563,12 @@ secret-set-value
.. code-block:: .. code-block::
secret-set-value secret (--file filename | base64) secret-set-value secret (--file filename [--plain] | base64)
Set the value associated with *secret* (specified by its UUID) to the value Set the value associated with *secret* (specified by its UUID) to the value
Base64-encoded value *base64* or Base-64-encoded contents of file named Base64-encoded value *base64* or Base-64-encoded contents of file named
*filename*. *filename*. Using the *--plain* flag is together with *--file* allows to use
the file contents directly as the secret value.
Note that *--file* and *base64* options are mutually exclusive. Note that *--file* and *base64* options are mutually exclusive.
......
...@@ -182,6 +182,10 @@ static const vshCmdOptDef opts_secret_set_value[] = { ...@@ -182,6 +182,10 @@ static const vshCmdOptDef opts_secret_set_value[] = {
.flags = VSH_OFLAG_REQ_OPT, .flags = VSH_OFLAG_REQ_OPT,
.help = N_("read secret from file"), .help = N_("read secret from file"),
}, },
{.name = "plain",
.type = VSH_OT_BOOL,
.help = N_("read the secret from file without converting from base64")
},
{.name = "base64", {.name = "base64",
.type = VSH_OT_STRING, .type = VSH_OT_STRING,
.help = N_("base64-encoded secret value") .help = N_("base64-encoded secret value")
...@@ -199,9 +203,11 @@ cmdSecretSetValue(vshControl *ctl, const vshCmd *cmd) ...@@ -199,9 +203,11 @@ cmdSecretSetValue(vshControl *ctl, const vshCmd *cmd)
size_t file_len = 0; size_t file_len = 0;
unsigned char *value; unsigned char *value;
size_t value_size; size_t value_size;
bool plain = vshCommandOptBool(cmd, "plain");
int res; int res;
VSH_EXCLUSIVE_OPTIONS("file", "base64"); VSH_EXCLUSIVE_OPTIONS("file", "base64");
VSH_EXCLUSIVE_OPTIONS("plain", "base64");
if (!(secret = virshCommandOptSecret(ctl, cmd, NULL))) if (!(secret = virshCommandOptSecret(ctl, cmd, NULL)))
return false; return false;
...@@ -232,7 +238,13 @@ cmdSecretSetValue(vshControl *ctl, const vshCmd *cmd) ...@@ -232,7 +238,13 @@ cmdSecretSetValue(vshControl *ctl, const vshCmd *cmd)
base64 = file_buf; base64 = file_buf;
} }
if (plain) {
value = g_steal_pointer(&file_buf);
value_size = file_len;
file_len = 0;
} else {
value = g_base64_decode(base64, &value_size); value = g_base64_decode(base64, &value_size);
}
res = virSecretSetValue(secret, value, value_size, 0); res = virSecretSetValue(secret, value, value_size, 0);
VIR_DISPOSE_N(value, value_size); VIR_DISPOSE_N(value, value_size);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册