/* this function is the layer that manipulates the ssh channel itself
* and executes the commands on the remote machine */
+static char *phypExec(LIBSSH2_SESSION *, const char *, int *, virConnectPtr)
+ ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3)
+ ATTRIBUTE_NONNULL(4);
static char *
phypExec(LIBSSH2_SESSION *session, const char *cmd, int *exit_status,
virConnectPtr conn)
return NULL;
}
+/* Convenience wrapper function */
+static char *phypExecBuffer(LIBSSH2_SESSION *, virBufferPtr buf, int *,
+ virConnectPtr, bool) ATTRIBUTE_NONNULL(1)
+ ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(4);
+static char *
+phypExecBuffer(LIBSSH2_SESSION *session, virBufferPtr buf, int *exit_status,
+ virConnectPtr conn, bool strip_newline)
+{
+ char *cmd;
+ char *ret;
+
+ if (virBufferError(buf)) {
+ virBufferFreeAndReset(buf);
+ virReportOOMError();
+ return NULL;
+ }
+ cmd = virBufferContentAndReset(buf);
+ ret = phypExec(session, cmd, exit_status, conn);
+ VIR_FREE(cmd);
+ if (ret && *exit_status == 0 && strip_newline) {
+ char *nl = strchr(ret, '\n');
+ if (nl)
+ *nl = '\0';
+ }
+ return ret;
+}
+
static int
phypGetSystemType(virConnectPtr conn)
{
phyp_driverPtr phyp_driver = conn->privateData;
LIBSSH2_SESSION *session = connection_data->session;
int system_type = phyp_driver->system_type;
- char *cmd = NULL;
char *ret = NULL;
int exit_status = 0;
int id = -1;
virBufferVSprintf(&buf, " -m %s", managed_system);
virBufferAddLit(&buf, " -r lpar -F lpar_id,lpar_env"
"|sed -n '/vioserver/ {\n s/,.*$//\n p\n}'");
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return -1;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0 || ret == NULL)
goto cleanup;
goto cleanup;
cleanup:
- VIR_FREE(cmd);
VIR_FREE(ret);
return id;
int exit_status = 0;
int ndom = -1;
char *char_ptr;
- char *cmd = NULL;
char *ret = NULL;
char *managed_system = phyp_driver->managed_system;
const char *state;
virBufferVSprintf(&buf, " -m %s", managed_system);
virBufferVSprintf(&buf, " -F lpar_id,state %s |grep -c '^[0-9]*'",
state);
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return -1;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0 || ret == NULL)
goto cleanup;
goto cleanup;
cleanup:
- VIR_FREE(cmd);
VIR_FREE(ret);
return ndom;
char *managed_system = phyp_driver->managed_system;
int exit_status = 0;
int got = -1;
- char *cmd = NULL;
char *ret = NULL;
char *line, *next_line;
const char *state;
virBufferVSprintf(&buf, " -m %s", managed_system);
virBufferVSprintf(&buf, " -F lpar_id,state %s | sed -e 's/,.*$//'",
state);
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return -1;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0 || ret == NULL)
goto cleanup;
}
cleanup:
- VIR_FREE(cmd);
VIR_FREE(ret);
-
return got;
}
int exit_status = 0;
int lpar_id = -1;
char *char_ptr;
- char *cmd = NULL;
char *ret = NULL;
virBuffer buf = VIR_BUFFER_INITIALIZER;
if (system_type == HMC)
virBufferVSprintf(&buf, " -m %s", managed_system);
virBufferVSprintf(&buf, " --filter lpar_names=%s -F lpar_id", name);
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return -1;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0 || ret == NULL)
goto cleanup;
goto cleanup;
cleanup:
- VIR_FREE(cmd);
VIR_FREE(ret);
return lpar_id;
{
phyp_driverPtr phyp_driver = conn->privateData;
int system_type = phyp_driver->system_type;
- char *cmd = NULL;
char *ret = NULL;
int exit_status = 0;
virBuffer buf = VIR_BUFFER_INITIALIZER;
- char *char_ptr;
virBufferAddLit(&buf, "lssyscfg -r lpar");
if (system_type == HMC)
virBufferVSprintf(&buf, " -m %s", managed_system);
virBufferVSprintf(&buf, " --filter lpar_ids=%d -F name", lpar_id);
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return NULL;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, true);
- if (exit_status < 0 || ret == NULL) {
+ if (exit_status < 0)
VIR_FREE(ret);
- goto cleanup;
- }
-
- char_ptr = strchr(ret, '\n');
-
- if (char_ptr)
- *char_ptr = '\0';
-
-cleanup:
- VIR_FREE(cmd);
-
return ret;
}
LIBSSH2_SESSION *session = connection_data->session;
phyp_driverPtr phyp_driver = conn->privateData;
int system_type = phyp_driver->system_type;
- char *cmd = NULL;
char *ret = NULL;
char *char_ptr;
int memory = 0;
virBufferVSprintf(&buf,
" -r mem --level lpar -F %s --filter lpar_ids=%d",
type ? "curr_mem" : "curr_max_mem", lpar_id);
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return 0;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0 || ret == NULL)
goto cleanup;
- char_ptr = strchr(ret, '\n');
-
- if (char_ptr)
- *char_ptr = '\0';
-
if (virStrToLong_i(ret, &char_ptr, 10, &memory) == -1)
goto cleanup;
cleanup:
- VIR_FREE(cmd);
VIR_FREE(ret);
return memory;
LIBSSH2_SESSION *session = connection_data->session;
phyp_driverPtr phyp_driver = conn->privateData;
int system_type = phyp_driver->system_type;
- char *cmd = NULL;
char *ret = NULL;
char *char_ptr;
int exit_status = 0;
virBufferVSprintf(&buf,
" -r proc --level lpar -F %s --filter lpar_ids=%d",
type ? "curr_max_procs" : "curr_procs", lpar_id);
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return 0;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0 || ret == NULL)
goto cleanup;
- char_ptr = strchr(ret, '\n');
-
- if (char_ptr)
- *char_ptr = '\0';
-
if (virStrToLong_i(ret, &char_ptr, 10, &vcpus) == -1)
goto cleanup;
cleanup:
- VIR_FREE(cmd);
VIR_FREE(ret);
return vcpus;
LIBSSH2_SESSION *session = connection_data->session;
phyp_driverPtr phyp_driver = conn->privateData;
int system_type = phyp_driver->system_type;
- char *cmd = NULL;
char *ret = NULL;
char *char_ptr;
int remote_slot = -1;
virBufferVSprintf(&buf, " -m %s", managed_system);
virBufferVSprintf(&buf, " -r virtualio --rsubtype scsi -F "
"remote_slot_num --filter lpar_names=%s", lpar_name);
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return -1;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0 || ret == NULL)
goto cleanup;
- char_ptr = strchr(ret, '\n');
-
- if (char_ptr)
- *char_ptr = '\0';
-
if (virStrToLong_i(ret, &char_ptr, 10, &remote_slot) == -1)
goto cleanup;
cleanup:
- VIR_FREE(cmd);
VIR_FREE(ret);
return remote_slot;
LIBSSH2_SESSION *session = connection_data->session;
phyp_driverPtr phyp_driver = conn->privateData;
int system_type = phyp_driver->system_type;
- char *cmd = NULL;
char *ret = NULL;
int remote_slot = 0;
int exit_status = 0;
virBufferVSprintf(&buf, " -m %s", managed_system);
virBufferVSprintf(&buf, " -r virtualio --rsubtype scsi -F "
"backing_devices --filter slots=%d", remote_slot);
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return NULL;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0 || ret == NULL)
goto cleanup;
*char_ptr = '\0';
cleanup:
- VIR_FREE(cmd);
VIR_FREE(ret);
return backing_device;
char *managed_system = phyp_driver->managed_system;
int system_type = phyp_driver->system_type;
int exit_status = 0;
- char *cmd = NULL;
char *ret = NULL;
virBuffer buf = VIR_BUFFER_INITIALIZER;
- char *char_ptr;
virBufferAddLit(&buf, "lssyscfg");
if (system_type == HMC)
virBufferVSprintf(&buf,
" -r prof --filter lpar_ids=%d -F name|head -n 1",
lpar_id);
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return NULL;
- }
- cmd = virBufferContentAndReset(&buf);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, true);
- ret = phypExec(session, cmd, &exit_status, conn);
-
- if (exit_status < 0 || ret == NULL) {
+ if (exit_status < 0)
VIR_FREE(ret);
- goto cleanup;
- }
-
- char_ptr = strchr(ret, '\n');
-
- if (char_ptr)
- *char_ptr = '\0';
-
-cleanup:
- VIR_FREE(cmd);
-
return ret;
}
int vios_id = phyp_driver->vios_id;
int exit_status = 0;
char *char_ptr;
- char *cmd = NULL;
char *ret = NULL;
char *profile = NULL;
int slot = -1;
"virtual_serial_adapters|sed -e 's/\"//g' -e "
"'s/,/\\n/g'|sed -e 's/\\(^[0-9][0-9]\\*\\).*$/\\1/'"
"|sort|tail -n 1", profile);
-
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- goto cleanup;
- }
-
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0 || ret == NULL)
goto cleanup;
cleanup:
VIR_FREE(profile);
- VIR_FREE(cmd);
VIR_FREE(ret);
return slot;
int system_type = phyp_driver->system_type;
int vios_id = phyp_driver->vios_id;
int exit_status = 0;
- char *cmd = NULL;
char *ret = NULL;
char *profile = NULL;
int slot = 0;
virBufferVSprintf(&buf, " -r prof --filter lpar_ids=%d,profile_names=%s"
" -F virtual_scsi_adapters|sed -e s/\\\"//g",
vios_id, profile);
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- goto cleanup;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0 || ret == NULL)
goto cleanup;
virBufferVSprintf(&buf, " -r prof -i 'name=%s,lpar_id=%d,"
"\"virtual_scsi_adapters=%s,%d/server/any/any/1\"'",
vios_name, vios_id, ret, slot);
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- goto cleanup;
- }
-
- VIR_FREE(cmd);
VIR_FREE(ret);
-
- cmd = virBufferContentAndReset(&buf);
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0 || ret == NULL)
goto cleanup;
virBufferVSprintf(&buf,
" -p %s -o a -s %d -d 0 -a \"adapter_type=server\"",
vios_name, slot);
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- goto cleanup;
- }
-
- VIR_FREE(cmd);
VIR_FREE(ret);
-
- cmd = virBufferContentAndReset(&buf);
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0 || ret == NULL)
goto cleanup;
cleanup:
VIR_FREE(profile);
VIR_FREE(vios_name);
- VIR_FREE(cmd);
VIR_FREE(ret);
return result;
int system_type = phyp_driver->system_type;
int vios_id = phyp_driver->vios_id;
int exit_status = 0;
- char *cmd = NULL;
char *ret = NULL;
virBuffer buf = VIR_BUFFER_INITIALIZER;
- char *char_ptr;
if (system_type == HMC)
virBufferVSprintf(&buf, "viosvrcmd -m %s --id %d -c '",
virBufferAddChar(&buf, '\'');
virBufferVSprintf(&buf, "|sed '/,[^.*]/d; s/,//g; q'");
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, true);
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return NULL;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
-
- if (exit_status < 0 || ret == NULL) {
+ if (exit_status < 0)
VIR_FREE(ret);
- goto cleanup;
- }
-
- char_ptr = strchr(ret, '\n');
-
- if (char_ptr)
- *char_ptr = '\0';
-
-cleanup:
- VIR_FREE(cmd);
-
return ret;
}
int vios_id = phyp_driver->vios_id;
int exit_status = 0;
char *char_ptr = NULL;
- char *cmd = NULL;
char *ret = NULL;
char *scsi_adapter = NULL;
int slot = 0;
if (system_type == HMC)
virBufferAddChar(&buf, '\'');
-
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- goto cleanup;
- }
-
- VIR_FREE(cmd);
- VIR_FREE(ret);
-
- cmd = virBufferContentAndReset(&buf);
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0 || ret == NULL)
goto cleanup;
virBufferVSprintf(&buf,
" slot_num,backing_device|grep %s|cut -d, -f1",
dev->data.disk->src);
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- goto cleanup;
- }
-
- VIR_FREE(cmd);
VIR_FREE(ret);
-
- cmd = virBufferContentAndReset(&buf);
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0 || ret == NULL)
goto cleanup;
" -r prof --filter lpar_ids=%d,profile_names=%s"
" -F virtual_scsi_adapters|sed -e 's/\"//g'",
vios_id, profile);
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- goto cleanup;
- }
-
- VIR_FREE(cmd);
VIR_FREE(ret);
-
- cmd = virBufferContentAndReset(&buf);
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0 || ret == NULL)
goto cleanup;
"\"virtual_scsi_adapters=%s,%d/client/%d/%s/0\"'",
domain_name, domain->id, ret, slot,
vios_id, vios_name);
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- goto cleanup;
- }
-
- VIR_FREE(cmd);
VIR_FREE(ret);
-
- cmd = virBufferContentAndReset(&buf);
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (virStrToLong_i(ret, &char_ptr, 10, &slot) == -1)
goto cleanup;
virBufferVSprintf(&buf,
" -p %s -o a -s %d -d 0 -a \"adapter_type=server\"",
domain_name, slot);
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- goto cleanup;
- }
-
- VIR_FREE(cmd);
VIR_FREE(ret);
-
- cmd = virBufferContentAndReset(&buf);
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0 || ret == NULL) {
VIR_ERROR0(_
result = 0;
cleanup:
- VIR_FREE(cmd);
VIR_FREE(ret);
virDomainDeviceDefFree(dev);
virDomainDefFree(def);
int system_type = phyp_driver->system_type;
int vios_id = phyp_driver->vios_id;
int exit_status = 0;
- char *cmd = NULL;
char *ret = NULL;
virBuffer buf = VIR_BUFFER_INITIALIZER;
- char *char_ptr;
if (system_type == HMC)
virBufferVSprintf(&buf, "viosvrcmd -m %s --id %d -c '",
virBufferAddChar(&buf, '\'');
virBufferVSprintf(&buf, "|sed -e 's/^LV IDENTIFIER://' -e 's/ //g'");
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, true);
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return NULL;
- }
-
- cmd = virBufferContentAndReset(&buf);
- ret = phypExec(session, cmd, &exit_status, conn);
-
- if (exit_status < 0 || ret == NULL) {
+ if (exit_status < 0)
VIR_FREE(ret);
- goto cleanup;
- }
-
- char_ptr = strchr(ret, '\n');
-
- if (char_ptr)
- *char_ptr = '\0';
-
-cleanup:
- VIR_FREE(cmd);
-
return ret;
}
int system_type = phyp_driver->system_type;
int vios_id = phyp_driver->vios_id;
int exit_status = 0;
- char *cmd = NULL;
char *ret = NULL;
virBuffer buf = VIR_BUFFER_INITIALIZER;
- char *char_ptr;
if (system_type == HMC)
virBufferVSprintf(&buf, "viosvrcmd -m %s --id %d -c '",
virBufferAddChar(&buf, '\'');
virBufferVSprintf(&buf, "|sed '1d; s/ //g'");
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, true);
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return NULL;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
-
- if (exit_status < 0 || ret == NULL) {
+ if (exit_status < 0)
VIR_FREE(ret);
- goto cleanup;
- }
-
- char_ptr = strchr(ret, '\n');
-
- if (char_ptr)
- *char_ptr = '\0';
-
-cleanup:
- VIR_FREE(cmd);
-
return ret;
}
int system_type = phyp_driver->system_type;
int exit_status = 0;
int vios_id = phyp_driver->vios_id;
- char *cmd = NULL;
char *ret = NULL;
int sp_size = -1;
char *char_ptr;
virBufferAddChar(&buf, '\'');
virBufferVSprintf(&buf, "|sed '1d; s/ //g'");
-
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return -1;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0 || ret == NULL)
goto cleanup;
goto cleanup;
cleanup:
- VIR_FREE(cmd);
VIR_FREE(ret);
return sp_size;
int vios_id = phyp_driver->vios_id;
int system_type = phyp_driver->system_type;
char *managed_system = phyp_driver->managed_system;
- char *cmd = NULL;
char *ret = NULL;
int exit_status = 0;
virBuffer buf = VIR_BUFFER_INITIALIZER;
if (system_type == HMC)
virBufferAddChar(&buf, '\'');
-
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return NULL;
- }
-
- cmd = virBufferContentAndReset(&buf);
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0) {
VIR_ERROR(_("Unable to create Volume: %s"), NULLSTR(ret));
key = phypVolumeGetKey(conn, lvname);
- if (key == NULL)
- goto cleanup;
-
cleanup:
- VIR_FREE(cmd);
VIR_FREE(ret);
return key;
int system_type = phyp_driver->system_type;
int vios_id = phyp_driver->vios_id;
int exit_status = 0;
- char *cmd = NULL;
char *ret = NULL;
virBuffer buf = VIR_BUFFER_INITIALIZER;
- char *char_ptr;
if (system_type == HMC)
virBufferVSprintf(&buf, "viosvrcmd -m %s --id %d -c '",
virBufferAddChar(&buf, '\'');
virBufferVSprintf(&buf, "|sed 1d");
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, true);
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return NULL;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
-
- if (exit_status < 0 || ret == NULL) {
+ if (exit_status < 0)
VIR_FREE(ret);
- goto cleanup;
- }
-
- char_ptr = strchr(ret, '\n');
-
- if (char_ptr)
- *char_ptr = '\0';
-
-cleanup:
- VIR_FREE(cmd);
-
return ret;
}
int system_type = phyp_driver->system_type;
int vios_id = phyp_driver->vios_id;
int exit_status = 0;
- char *cmd = NULL;
char *ret = NULL;
- char *char_ptr;
char *key = NULL;
virBuffer buf = VIR_BUFFER_INITIALIZER;
virStorageVolPtr vol = NULL;
virBufferAddChar(&buf, '\'');
virBufferVSprintf(&buf, "|sed -e 's/^VOLUME GROUP://g' -e 's/ //g'");
-
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return NULL;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, true);
if (exit_status < 0 || ret == NULL)
goto cleanup;
- char_ptr = strchr(ret, '\n');
-
- if (char_ptr)
- *char_ptr = '\0';
-
key = phypVolumeGetKey(conn, volname);
if (key == NULL)
vol = virGetStorageVol(conn, ret, volname, key);
cleanup:
- VIR_FREE(cmd);
VIR_FREE(ret);
VIR_FREE(key);
int system_type = phyp_driver->system_type;
int vios_id = phyp_driver->vios_id;
int exit_status = 0;
- char *cmd = NULL;
char *ret = NULL;
virBuffer buf = VIR_BUFFER_INITIALIZER;
virBufferAddChar(&buf, '\'');
virBufferVSprintf(&buf, "|sed '1,2d'");
-
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return -1;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0 || ret == NULL)
goto cleanup;
result = 0;
cleanup:
- VIR_FREE(cmd);
VIR_FREE(ret);
return result;
int system_type = phyp_driver->system_type;
int vios_id = phyp_driver->vios_id;
int exit_status = 0;
- char *cmd = NULL;
char *ret = NULL;
char *path = NULL;
virBuffer buf = VIR_BUFFER_INITIALIZER;
- char *char_ptr;
char *pv;
if (system_type == HMC)
virBufferVSprintf(&buf,
"|sed -e 's/^VOLUME GROUP://g' -e 's/ //g'");
-
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return NULL;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, true);
if (exit_status < 0 || ret == NULL)
goto cleanup;
- char_ptr = strchr(ret, '\n');
-
- if (char_ptr)
- *char_ptr = '\0';
-
pv = phypVolumeGetPhysicalVolumeByStoragePool(vol, ret);
if (!pv)
}
cleanup:
- VIR_FREE(cmd);
VIR_FREE(ret);
VIR_FREE(path);
int exit_status = 0;
int got = 0;
int i;
- char *cmd = NULL;
char *ret = NULL;
char *volumes_list = NULL;
char *char_ptr2 = NULL;
virBufferAddChar(&buf, '\'');
virBufferVSprintf(&buf, "|sed '1,2d'");
-
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return -1;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
/* I need to parse the textual return in order to get the volumes */
if (exit_status < 0 || ret == NULL)
got = -1;
}
-
- VIR_FREE(cmd);
VIR_FREE(ret);
-
return got;
}
int system_type = phyp_driver->system_type;
int exit_status = 0;
int nvolumes = -1;
- char *cmd = NULL;
char *ret = NULL;
char *managed_system = phyp_driver->managed_system;
int vios_id = phyp_driver->vios_id;
if (system_type == HMC)
virBufferAddChar(&buf, '\'');
virBufferVSprintf(&buf, "|grep -c '^.*$'");
-
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return -1;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0 || ret == NULL)
goto cleanup;
nvolumes -= 2;
cleanup:
- VIR_FREE(cmd);
VIR_FREE(ret);
return nvolumes;
int vios_id = phyp_driver->vios_id;
char *managed_system = phyp_driver->managed_system;
int system_type = phyp_driver->system_type;
- char *cmd = NULL;
char *ret = NULL;
int exit_status = 0;
virBuffer buf = VIR_BUFFER_INITIALIZER;
if (system_type == HMC)
virBufferAddChar(&buf, '\'');
-
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return -1;
- }
- cmd = virBufferContentAndReset(&buf);
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0) {
VIR_ERROR(_("Unable to destroy Storage Pool: %s"), NULLSTR(ret));
result = 0;
cleanup:
- VIR_FREE(cmd);
VIR_FREE(ret);
return result;
int vios_id = phyp_driver->vios_id;
int system_type = phyp_driver->system_type;
char *managed_system = phyp_driver->managed_system;
- char *cmd = NULL;
char *ret = NULL;
int exit_status = 0;
virBuffer buf = VIR_BUFFER_INITIALIZER;
if (system_type == HMC)
virBufferAddChar(&buf, '\'');
-
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return -1;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0) {
VIR_ERROR(_("Unable to create Storage Pool: %s"), NULLSTR(ret));
result = 0;
cleanup:
- VIR_FREE(cmd);
VIR_FREE(ret);
return result;
int system_type = phyp_driver->system_type;
int exit_status = 0;
int nsp = -1;
- char *cmd = NULL;
char *ret = NULL;
char *managed_system = phyp_driver->managed_system;
int vios_id = phyp_driver->vios_id;
virBufferAddChar(&buf, '\'');
virBufferVSprintf(&buf, "|grep -c '^.*$'");
-
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return -1;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0 || ret == NULL)
goto cleanup;
goto cleanup;
cleanup:
- VIR_FREE(cmd);
VIR_FREE(ret);
return nsp;
int exit_status = 0;
int got = 0;
int i;
- char *cmd = NULL;
char *ret = NULL;
char *storage_pools = NULL;
char *char_ptr2 = NULL;
if (system_type == HMC)
virBufferAddChar(&buf, '\'');
-
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return -1;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
/* I need to parse the textual return in order to get the storage pools */
if (exit_status < 0 || ret == NULL)
got = -1;
}
-
- VIR_FREE(cmd);
VIR_FREE(ret);
-
return got;
}
int slot_num = 0;
int lpar_id = 0;
char *char_ptr;
- char *cmd = NULL;
char *ret = NULL;
int rv = -1;
" -r virtualio --rsubtype eth --level lpar "
" -F mac_addr,slot_num|"
" sed -n '/%s/ s/^.*,//p'", iface->mac);
-
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- goto cleanup;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, iface->conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, iface->conn, false);
if (exit_status < 0 || ret == NULL)
goto cleanup;
goto cleanup;
/* Getting the remote slot number */
- VIR_FREE(cmd);
- VIR_FREE(ret);
-
virBufferAddLit(&buf, "lshwres ");
if (system_type == HMC)
virBufferVSprintf(&buf, "-m %s ", managed_system);
" -r virtualio --rsubtype eth --level lpar "
" -F mac_addr,lpar_id|"
" sed -n '/%s/ s/^.*,//p'", iface->mac);
-
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- goto cleanup;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, iface->conn);
+ VIR_FREE(ret);
+ ret = phypExecBuffer(session, &buf, &exit_status, iface->conn, false);
if (exit_status < 0 || ret == NULL)
goto cleanup;
goto cleanup;
/* excluding interface */
- VIR_FREE(cmd);
- VIR_FREE(ret);
-
virBufferAddLit(&buf, "chhwres ");
if (system_type == HMC)
virBufferVSprintf(&buf, "-m %s ", managed_system);
virBufferVSprintf(&buf,
" -r virtualio --rsubtype eth"
" --id %d -o r -s %d", lpar_id, slot_num);
-
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- goto cleanup;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, iface->conn);
+ VIR_FREE(ret);
+ ret = phypExecBuffer(session, &buf, &exit_status, iface->conn, false);
if (exit_status < 0 || ret != NULL)
goto cleanup;
rv = 0;
cleanup:
- VIR_FREE(cmd);
VIR_FREE(ret);
return rv;
}
int system_type = phyp_driver->system_type;
int exit_status = 0;
char *char_ptr;
- char *cmd = NULL;
int slot = 0;
char *ret = NULL;
char name[PHYP_IFACENAME_SIZE];
" -r virtualio --rsubtype slot --level slot"
" -Fslot_num --filter lpar_names=%s"
" |sort|tail -n 1", def->name);
-
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- goto cleanup;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0 || ret == NULL)
goto cleanup;
slot++;
/* Now adding the new network interface */
- VIR_FREE(cmd);
- VIR_FREE(ret);
-
virBufferAddLit(&buf, "chhwres ");
if (system_type == HMC)
virBufferVSprintf(&buf, "-m %s ", managed_system);
" -r virtualio --rsubtype eth"
" -p %s -o a -s %d -a port_vlan_id=1,"
"ieee_virtual_eth=0", def->name, slot);
-
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- goto cleanup;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ VIR_FREE(ret);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0 || ret != NULL)
goto cleanup;
sleep(1);
/* Getting the new interface name */
- VIR_FREE(cmd);
- VIR_FREE(ret);
-
virBufferAddLit(&buf, "lshwres ");
if (system_type == HMC)
virBufferVSprintf(&buf, "-m %s ", managed_system);
" -r virtualio --rsubtype slot --level slot"
" |sed '/lpar_name=%s/!d; /slot_num=%d/!d; "
"s/^.*drc_name=//'", def->name, slot);
-
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- goto cleanup;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ VIR_FREE(ret);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0 || ret == NULL) {
/* roll back and excluding interface if error*/
- VIR_FREE(cmd);
- VIR_FREE(ret);
-
virBufferAddLit(&buf, "chhwres ");
if (system_type == HMC)
virBufferVSprintf(&buf, "-m %s ", managed_system);
virBufferVSprintf(&buf,
" -r virtualio --rsubtype eth"
" -p %s -o r -s %d", def->name, slot);
-
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- goto cleanup;
- }
-
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ VIR_FREE(ret);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
goto cleanup;
}
memcpy(name, ret, PHYP_IFACENAME_SIZE-1);
/* Getting the new interface mac addr */
- VIR_FREE(cmd);
- VIR_FREE(ret);
-
virBufferAddLit(&buf, "lshwres ");
if (system_type == HMC)
virBufferVSprintf(&buf, "-m %s ", managed_system);
"-r virtualio --rsubtype eth --level lpar "
" |sed '/lpar_name=%s/!d; /slot_num=%d/!d; "
"s/^.*mac_addr=//'", def->name, slot);
-
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- goto cleanup;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ VIR_FREE(ret);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0 || ret == NULL)
goto cleanup;
result = virGetInterface(conn, name, mac);
cleanup:
- VIR_FREE(cmd);
VIR_FREE(ret);
virInterfaceDefFree(def);
return result;
int system_type = phyp_driver->system_type;
int exit_status = 0;
char *char_ptr;
- char *cmd = NULL;
char *ret = NULL;
int slot = 0;
int lpar_id = 0;
" -r virtualio --rsubtype slot --level slot "
" -F drc_name,slot_num |"
" sed -n '/%s/ s/^.*,//p'", name);
-
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- goto cleanup;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0 || ret == NULL)
goto cleanup;
goto cleanup;
/*Getting the lpar_id for the interface */
- VIR_FREE(cmd);
- VIR_FREE(ret);
-
virBufferAddLit(&buf, "lshwres ");
if (system_type == HMC)
virBufferVSprintf(&buf, "-m %s ", managed_system);
" -r virtualio --rsubtype slot --level slot "
" -F drc_name,lpar_id |"
" sed -n '/%s/ s/^.*,//p'", name);
-
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return NULL;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ VIR_FREE(ret);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0 || ret == NULL)
goto cleanup;
" -r virtualio --rsubtype eth --level lpar "
" -F lpar_id,slot_num,mac_addr|"
" sed -n '/%d,%d/ s/^.*,//p'", lpar_id, slot);
-
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- goto cleanup;
- }
- cmd = virBufferContentAndReset(&buf);
-
VIR_FREE(ret);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0 || ret == NULL)
goto cleanup;
result = virGetInterface(conn, name, ret);
cleanup:
- VIR_FREE(cmd);
VIR_FREE(ret);
return result;
}
int exit_status = 0;
int state = -1;
char *char_ptr;
- char *cmd = NULL;
char *ret = NULL;
virBufferAddLit(&buf, "lshwres ");
" -r virtualio --rsubtype eth --level lpar "
" -F mac_addr,state |"
" sed -n '/%s/ s/^.*,//p'", iface->mac);
-
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- goto cleanup;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, iface->conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, iface->conn, false);
if (exit_status < 0 || ret == NULL)
goto cleanup;
goto cleanup;
cleanup:
- VIR_FREE(cmd);
VIR_FREE(ret);
return state;
}
int exit_status = 0;
int got = 0;
int i;
- char *cmd = NULL;
char *ret = NULL;
char *networks = NULL;
char *char_ptr2 = NULL;
virBufferVSprintf(&buf, " -r virtualio --rsubtype slot --level slot|"
" sed '/eth/!d; /lpar_id=%d/d; s/^.*drc_name=//g'",
vios_id);
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- goto cleanup;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
/* I need to parse the textual return in order to get the network
* interfaces */
for (i = 0; i < got; i++)
VIR_FREE(names[i]);
}
- VIR_FREE(cmd);
VIR_FREE(ret);
return got;
}
int exit_status = 0;
int nnets = -1;
char *char_ptr;
- char *cmd = NULL;
char *ret = NULL;
virBuffer buf = VIR_BUFFER_INITIALIZER;
virBufferVSprintf(&buf,
"-r virtualio --rsubtype eth --level lpar|"
"grep -v lpar_id=%d|grep -c lpar_name", vios_id);
-
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- goto cleanup;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0 || ret == NULL)
goto cleanup;
goto cleanup;
cleanup:
- VIR_FREE(cmd);
VIR_FREE(ret);
return nnets;
}
phyp_driverPtr phyp_driver = conn->privateData;
LIBSSH2_SESSION *session = connection_data->session;
int system_type = phyp_driver->system_type;
- char *cmd = NULL;
char *ret = NULL;
int exit_status = 0;
- char *char_ptr = NULL;
char *managed_system = phyp_driver->managed_system;
int state = VIR_DOMAIN_NOSTATE;
virBuffer buf = VIR_BUFFER_INITIALIZER;
if (system_type == HMC)
virBufferVSprintf(&buf, " -m %s", managed_system);
virBufferVSprintf(&buf, " -F state --filter lpar_ids=%d", lpar_id);
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return state;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, true);
if (exit_status < 0 || ret == NULL)
goto cleanup;
- char_ptr = strchr(ret, '\n');
-
- if (char_ptr)
- *char_ptr = '\0';
-
if (STREQ(ret, "Running"))
state = VIR_DOMAIN_RUNNING;
else if (STREQ(ret, "Not Activated"))
state = VIR_DOMAIN_SHUTDOWN;
cleanup:
- VIR_FREE(cmd);
VIR_FREE(ret);
return state;
}
ConnectionData *connection_data = conn->networkPrivateData;
LIBSSH2_SESSION *session = connection_data->session;
int system_type = phyp_driver->system_type;
- char *cmd = NULL;
char *ret = NULL;
int exit_status = 0;
- char *char_ptr;
char *managed_system = phyp_driver->managed_system;
int vios_id = phyp_driver->vios_id;
int disk_type = -1;
virBufferVSprintf(&buf, " -p %d -c \"lssp -field name type "
"-fmt , -all|sed -n '/%s/ {\n s/^.*,//\n p\n}'\"",
vios_id, backing_device);
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return disk_type;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, true);
if (exit_status < 0 || ret == NULL)
goto cleanup;
- char_ptr = strchr(ret, '\n');
-
- if (char_ptr)
- *char_ptr = '\0';
-
if (STREQ(ret, "LVPOOL"))
disk_type = VIR_DOMAIN_DISK_TYPE_BLOCK;
else if (STREQ(ret, "FBPOOL"))
disk_type = VIR_DOMAIN_DISK_TYPE_FILE;
cleanup:
- VIR_FREE(cmd);
VIR_FREE(ret);
return disk_type;
}
int exit_status = 0;
int got = 0;
int i;
- char *cmd = NULL;
char *ret = NULL;
char *domains = NULL;
char *char_ptr2 = NULL;
virBufferVSprintf(&buf, " -m %s", managed_system);
virBufferVSprintf(&buf, " -F name,state"
"|sed -n '/Not Activated/ {\n s/,.*$//\n p\n}'");
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return -1;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
/* I need to parse the textual return in order to get the domains */
if (exit_status < 0 || ret == NULL)
got = -1;
}
-
- VIR_FREE(cmd);
VIR_FREE(ret);
-
return got;
}
int system_type = phyp_driver->system_type;
char *managed_system = phyp_driver->managed_system;
int exit_status = 0;
- char *cmd = NULL;
char *ret = NULL;
virBuffer buf = VIR_BUFFER_INITIALIZER;
virBufferVSprintf(&buf, " -m %s", managed_system);
virBufferVSprintf(&buf, " -r lpar -o on --id %d -f %s",
dom->id, dom->name);
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return -1;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, dom->conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, dom->conn, false);
if (exit_status < 0)
goto cleanup;
result = 0;
cleanup:
- VIR_FREE(cmd);
VIR_FREE(ret);
return result;
int system_type = phyp_driver->system_type;
char *managed_system = phyp_driver->managed_system;
int exit_status = 0;
- char *cmd = NULL;
char *ret = NULL;
virBuffer buf = VIR_BUFFER_INITIALIZER;
if (system_type == HMC)
virBufferVSprintf(&buf, " -m %s", managed_system);
virBufferVSprintf(&buf, " -r lpar -o shutdown --id %d", dom->id);
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return -1;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, dom->conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, dom->conn, false);
if (exit_status < 0)
goto cleanup;
result = 0;
cleanup:
- VIR_FREE(cmd);
VIR_FREE(ret);
return result;
int system_type = phyp_driver->system_type;
char *managed_system = phyp_driver->managed_system;
int exit_status = 0;
- char *cmd = NULL;
char *ret = NULL;
virBuffer buf = VIR_BUFFER_INITIALIZER;
if (system_type == HMC)
virBufferVSprintf(&buf, " -m %s", managed_system);
virBufferVSprintf(&buf, " -r lpar --id %d", dom->id);
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return -1;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, dom->conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, dom->conn, false);
if (exit_status < 0)
goto cleanup;
result = 0;
cleanup:
- VIR_FREE(cmd);
VIR_FREE(ret);
return result;
LIBSSH2_SESSION *session = connection_data->session;
int system_type = phyp_driver->system_type;
char *managed_system = phyp_driver->managed_system;
- char *cmd = NULL;
char *ret = NULL;
int exit_status = 0;
virBuffer buf = VIR_BUFFER_INITIALIZER;
def->name, (int) def->mem.cur_balloon,
(int) def->mem.cur_balloon, (int) def->mem.max_balloon,
(int) def->vcpus, def->disks[0]->src);
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return -1;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0) {
VIR_ERROR(_("Unable to create LPAR. Reason: '%s'"), NULLSTR(ret));
result = 0;
cleanup:
- VIR_FREE(cmd);
VIR_FREE(ret);
return result;
int system_type = phyp_driver->system_type;
char *managed_system = phyp_driver->managed_system;
int exit_status = 0;
- char *cmd = NULL;
char *ret = NULL;
char operation;
unsigned long ncpus = 0;
virBufferVSprintf(&buf, " --id %d -o %c --procunits %d 2>&1 |sed "
"-e 's/^.*\\([0-9][0-9]*.[0-9][0-9]*\\).*$/\\1/'",
dom->id, operation, amount);
- if (virBufferError(&buf)) {
- virBufferFreeAndReset(&buf);
- virReportOOMError();
- return 0;
- }
- cmd = virBufferContentAndReset(&buf);
-
- ret = phypExec(session, cmd, &exit_status, dom->conn);
+ ret = phypExecBuffer(session, &buf, &exit_status, dom->conn, false);
if (exit_status < 0) {
VIR_ERROR0(_
" Contact your support to enable this feature."));
}
- VIR_FREE(cmd);
VIR_FREE(ret);
return 0;