/* See virCommandSetDryRun for description for this variable */
static virBufferPtr dryRunBuffer;
+static bool dryRunBufferArgLinebreaks;
+static bool dryRunBufferCommandStripPath;
static virCommandDryRunCallback dryRunCallback;
static void *dryRunOpaque;
#ifndef WIN32
goto cleanup;
}
- str = virCommandToString(cmd, false);
if (dryRunBuffer || dryRunCallback) {
+ g_autofree char *cmdstr = NULL;
dryRunStatus = 0;
- if (!str) {
- /* error already reported by virCommandToString */
+
+ if (!(cmdstr = virCommandToStringFull(cmd, dryRunBufferArgLinebreaks,
+ dryRunBufferCommandStripPath)))
goto cleanup;
- }
if (dryRunBuffer) {
VIR_DEBUG("Dry run requested, appending stringified "
"command to dryRunBuffer=%p", dryRunBuffer);
- virBufferAdd(dryRunBuffer, str, -1);
+ virBufferAdd(dryRunBuffer, cmdstr, -1);
virBufferAddChar(dryRunBuffer, '\n');
}
if (dryRunCallback) {
goto cleanup;
}
+ str = virCommandToString(cmd, false);
VIR_DEBUG("About to run %s", str ? str : cmd->args[0]);
ret = virExec(cmd);
VIR_DEBUG("Command result %d, with PID %d",
virCommandDryRunTokenFree(virCommandDryRunToken *tok)
{
dryRunBuffer = NULL;
+ dryRunBufferArgLinebreaks = false;
+ dryRunBufferCommandStripPath = false;
dryRunCallback = NULL;
dryRunOpaque = NULL;
g_free(tok);
* virCommandSetDryRun:
* @tok: a virCommandDryRunToken obtained from virCommandDryRunTokenNew
* @buf: buffer to store stringified commands
+ * @bufArgLinebreaks: add linebreaks after command and every argument or argument pair
+ * @bufCommandStripPath: strip leading paths of command
* @callback: callback to process input/output/args
*
* Sometimes it's desired to not actually run given command, but
void
virCommandSetDryRun(virCommandDryRunToken *tok,
virBufferPtr buf,
+ bool bufArgLinebreaks,
+ bool bufCommandStripPath,
virCommandDryRunCallback cb,
void *opaque)
{
abort();
dryRunBuffer = buf;
+ dryRunBufferArgLinebreaks = bufArgLinebreaks;
+ dryRunBufferCommandStripPath = bufCommandStripPath;
dryRunCallback = cb;
dryRunOpaque = opaque;
}
void virCommandSetDryRun(virCommandDryRunToken *tok,
virBufferPtr buf,
+ bool bufArgLinebreaks,
+ bool bufCommandStripPath,
virCommandDryRunCallback cb,
void *opaque);
char *actual;
g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew();
- virCommandSetDryRun(dryRunToken, &buf, testCommandDryRun, NULL);
+ virCommandSetDryRun(dryRunToken, &buf, false, false, testCommandDryRun, NULL);
if (!(def = virNetworkDefParseFile(xml, NULL)))
goto cleanup;
if (!cmd)
goto cleanup;
- virCommandSetDryRun(dryRunToken, &buf, testCommandDryRunCallback, &stdinbuf);
+ virCommandSetDryRun(dryRunToken, &buf, false, false, testCommandDryRunCallback, &stdinbuf);
if (virCommandRun(cmd, NULL) < 0)
goto cleanup;
if (!cmd)
goto cleanup;
- virCommandSetDryRun(dryRunToken, &buf, NULL, NULL);
+ virCommandSetDryRun(dryRunToken, &buf, false, false, NULL, NULL);
if (virCommandRun(cmd, NULL) < 0)
goto cleanup;
if (!cmd)
goto cleanup;
- virCommandSetDryRun(dryRunToken, &buf, NULL, NULL);
+ virCommandSetDryRun(dryRunToken, &buf, false, false, NULL, NULL);
if (virCommandRun(cmd, NULL) < 0)
goto cleanup;
int ret = -1;
g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew();
- virCommandSetDryRun(dryRunToken, &buf, NULL, NULL);
+ virCommandSetDryRun(dryRunToken, &buf, false, false, NULL, NULL);
if (ebiptables_driver.allTeardown("vnet0") < 0)
goto cleanup;
int ret = -1;
g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew();
- virCommandSetDryRun(dryRunToken, &buf, NULL, NULL);
+ virCommandSetDryRun(dryRunToken, &buf, false, false, NULL, NULL);
if (ebiptables_driver.tearOldRules("vnet0") < 0)
goto cleanup;
int ret = -1;
g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew();
- virCommandSetDryRun(dryRunToken, &buf, NULL, NULL);
+ virCommandSetDryRun(dryRunToken, &buf, false, false, NULL, NULL);
if (ebiptables_driver.removeBasicRules("vnet0") < 0)
goto cleanup;
int ret = -1;
g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew();
- virCommandSetDryRun(dryRunToken, &buf, NULL, NULL);
+ virCommandSetDryRun(dryRunToken, &buf, false, false, NULL, NULL);
if (ebiptables_driver.tearNewRules("vnet0") < 0)
goto cleanup;
virMacAddr mac = { .addr = { 0x10, 0x20, 0x30, 0x40, 0x50, 0x60 } };
g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew();
- virCommandSetDryRun(dryRunToken, &buf, NULL, NULL);
+ virCommandSetDryRun(dryRunToken, &buf, false, false, NULL, NULL);
if (ebiptables_driver.applyBasicRules("vnet0", &mac) < 0)
goto cleanup;
};
g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew();
- virCommandSetDryRun(dryRunToken, &buf, NULL, NULL);
+ virCommandSetDryRun(dryRunToken, &buf, false, false, NULL, NULL);
if (ebiptables_driver.applyDHCPOnlyRules("vnet0", &mac, &val, false) < 0)
goto cleanup;
int ret = -1;
g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew();
- virCommandSetDryRun(dryRunToken, &buf, NULL, NULL);
+ virCommandSetDryRun(dryRunToken, &buf, false, false, NULL, NULL);
if (ebiptables_driver.applyDropAllRules("vnet0") < 0)
goto cleanup;
memset(&inst, 0, sizeof(inst));
- virCommandSetDryRun(dryRunToken, &buf, NULL, NULL);
+ virCommandSetDryRun(dryRunToken, &buf, false, false, NULL, NULL);
if (!vars)
goto cleanup;
cpuinfo = g_strdup_printf("%s/sysinfodata/%scpuinfo.data", abs_srcdir, testdata->name);
expected = g_strdup_printf("%s/sysinfodata/%ssysinfo.expect", abs_srcdir, testdata->name);
- virCommandSetDryRun(dryRunToken, NULL, testDMIDecodeDryRun, sysinfo);
+ virCommandSetDryRun(dryRunToken, NULL, false, false, testDMIDecodeDryRun, sysinfo);
virSysinfoSetup(sysinfo, cpuinfo);
if (data->expectBackend == VIR_FIREWALL_BACKEND_DIRECT ||
data->expectBackend == VIR_FIREWALL_BACKEND_FIREWALLD)
- virCommandSetDryRun(dryRunToken, &cmdbuf, NULL, NULL);
+ virCommandSetDryRun(dryRunToken, &cmdbuf, false, false, NULL, NULL);
else
fwBuf = &cmdbuf;
if (data->expectBackend == VIR_FIREWALL_BACKEND_DIRECT ||
data->expectBackend == VIR_FIREWALL_BACKEND_FIREWALLD)
- virCommandSetDryRun(dryRunToken, &cmdbuf, NULL, NULL);
+ virCommandSetDryRun(dryRunToken, &cmdbuf, false, false, NULL, NULL);
else
fwBuf = &cmdbuf;
if (data->expectBackend == VIR_FIREWALL_BACKEND_DIRECT ||
data->expectBackend == VIR_FIREWALL_BACKEND_FIREWALLD)
- virCommandSetDryRun(dryRunToken, &cmdbuf, NULL, NULL);
+ virCommandSetDryRun(dryRunToken, &cmdbuf, false, false, NULL, NULL);
else
fwBuf = &cmdbuf;
if (data->expectBackend == VIR_FIREWALL_BACKEND_DIRECT ||
data->expectBackend == VIR_FIREWALL_BACKEND_FIREWALLD) {
- virCommandSetDryRun(dryRunToken, &cmdbuf, testFirewallRollbackHook, NULL);
+ virCommandSetDryRun(dryRunToken, &cmdbuf, false, false, testFirewallRollbackHook, NULL);
} else {
fwBuf = &cmdbuf;
fwError = true;
if (data->expectBackend == VIR_FIREWALL_BACKEND_DIRECT ||
data->expectBackend == VIR_FIREWALL_BACKEND_FIREWALLD) {
- virCommandSetDryRun(dryRunToken, &cmdbuf, testFirewallRollbackHook, NULL);
+ virCommandSetDryRun(dryRunToken, &cmdbuf, false, false, testFirewallRollbackHook, NULL);
} else {
fwBuf = &cmdbuf;
fwError = true;
if (data->expectBackend == VIR_FIREWALL_BACKEND_DIRECT ||
data->expectBackend == VIR_FIREWALL_BACKEND_FIREWALLD) {
- virCommandSetDryRun(dryRunToken, &cmdbuf, testFirewallRollbackHook, NULL);
+ virCommandSetDryRun(dryRunToken, &cmdbuf, false, false, testFirewallRollbackHook, NULL);
} else {
fwBuf = &cmdbuf;
fwError = true;
if (data->expectBackend == VIR_FIREWALL_BACKEND_DIRECT ||
data->expectBackend == VIR_FIREWALL_BACKEND_FIREWALLD) {
- virCommandSetDryRun(dryRunToken, &cmdbuf, testFirewallRollbackHook, NULL);
+ virCommandSetDryRun(dryRunToken, &cmdbuf, false, false, testFirewallRollbackHook, NULL);
} else {
fwError = true;
fwBuf = &cmdbuf;
if (data->expectBackend == VIR_FIREWALL_BACKEND_DIRECT ||
data->expectBackend == VIR_FIREWALL_BACKEND_FIREWALLD) {
- virCommandSetDryRun(dryRunToken, &cmdbuf, testFirewallRollbackHook, NULL);
+ virCommandSetDryRun(dryRunToken, &cmdbuf, false, false, testFirewallRollbackHook, NULL);
} else {
fwBuf = &cmdbuf;
fwError = true;
if (data->expectBackend == VIR_FIREWALL_BACKEND_DIRECT ||
data->expectBackend == VIR_FIREWALL_BACKEND_FIREWALLD) {
- virCommandSetDryRun(dryRunToken, &cmdbuf, testFirewallRollbackHook, NULL);
+ virCommandSetDryRun(dryRunToken, &cmdbuf, false, false, testFirewallRollbackHook, NULL);
} else {
fwBuf = &cmdbuf;
fwError = true;
if (data->expectBackend == VIR_FIREWALL_BACKEND_DIRECT ||
data->expectBackend == VIR_FIREWALL_BACKEND_FIREWALLD) {
- virCommandSetDryRun(dryRunToken, &cmdbuf, testFirewallQueryHook, NULL);
+ virCommandSetDryRun(dryRunToken, &cmdbuf, false, false, testFirewallQueryHook, NULL);
} else {
fwBuf = &cmdbuf;
fwError = true;
cbData.output_version = info->output_version;
- virCommandSetDryRun(dryRunToken, NULL, testIscsiadmCb, &cbData);
+ virCommandSetDryRun(dryRunToken, NULL, false, false, testIscsiadmCb, &cbData);
actual_session = virISCSIGetSession(info->device_path, true);
size_t i;
g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew();
- virCommandSetDryRun(dryRunToken, NULL, testIscsiadmCb, NULL);
+ virCommandSetDryRun(dryRunToken, NULL, false, false, testIscsiadmCb, NULL);
if (virISCSIScanTargets(info->portal, NULL,
false, &ntargets, &targets) < 0)
int ret = -1;
g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew();
- virCommandSetDryRun(dryRunToken, NULL, testIscsiadmCb, &cbData);
+ virCommandSetDryRun(dryRunToken, NULL, false, false, testIscsiadmCb, &cbData);
if (virISCSIConnectionLogin(info->portal, info->initiatoriqn, info->target) < 0)
goto cleanup;
g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew();
- virCommandSetDryRun(dryRunToken, &buf, NULL, NULL);
+ virCommandSetDryRun(dryRunToken, &buf, false, false, NULL, NULL);
errbuf = virKModLoad(MODNAME);
if (errbuf) {
g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew();
- virCommandSetDryRun(dryRunToken, &buf, NULL, NULL);
+ virCommandSetDryRun(dryRunToken, &buf, false, false, NULL, NULL);
errbuf = virKModUnload(MODNAME);
if (errbuf) {
if (!iface)
iface = "eth0";
- virCommandSetDryRun(dryRunToken, &buf, NULL, NULL);
+ virCommandSetDryRun(dryRunToken, &buf, false, false, NULL, NULL);
if (virNetDevBandwidthSet(iface, band, info->hierarchical_class, true) < 0)
goto cleanup;