static int secretSetValue(virSecretPtr secret, const unsigned char *value, size_t value_size, unsigned int flags) { int ret = -1; virSecretObjPtr obj; virSecretDefPtr def; virObjectEventPtr event = NULL; virCheckFlags(0, -1); if (!(obj = secretObjFromSecret(secret))) goto cleanup; def = virSecretObjGetDef(obj); if (virSecretSetValueEnsureACL(secret->conn, def) < 0) goto cleanup; if (virSecretObjSetValue(obj, value, value_size) < 0) goto cleanup; event = virSecretEventValueChangedNew(def->uuid, def->usage_type, def->usage_id); ret = 0; cleanup: virSecretObjEndAPI(&obj); if (event) virObjectEventStateQueue(driver->secretEventState, event); return ret; }
static int secretUndefine(virSecretPtr obj) { int ret = -1; virSecretObjPtr secret; virSecretDefPtr def; if (!(secret = secretObjFromSecret(obj))) goto cleanup; def = virSecretObjGetDef(secret); if (virSecretUndefineEnsureACL(obj->conn, def) < 0) goto cleanup; if (virSecretObjDeleteConfig(secret) < 0) goto cleanup; virSecretObjDeleteData(secret); virSecretObjListRemove(driver->secrets, secret); ret = 0; cleanup: virSecretObjEndAPI(&secret); return ret; }
static int secretSetValue(virSecretPtr obj, const unsigned char *value, size_t value_size, unsigned int flags) { int ret = -1; virSecretObjPtr secret; virSecretDefPtr def; virCheckFlags(0, -1); if (!(secret = secretObjFromSecret(obj))) goto cleanup; def = virSecretObjGetDef(secret); if (virSecretSetValueEnsureACL(obj->conn, def) < 0) goto cleanup; if (secretEnsureDirectory() < 0) goto cleanup; if (virSecretObjSetValue(secret, value, value_size) < 0) goto cleanup; ret = 0; cleanup: virSecretObjEndAPI(&secret); return ret; }
static int secretUndefine(virSecretPtr secret) { int ret = -1; virSecretObjPtr obj; virSecretDefPtr def; virObjectEventPtr event = NULL; if (!(obj = secretObjFromSecret(secret))) goto cleanup; def = virSecretObjGetDef(obj); if (virSecretUndefineEnsureACL(secret->conn, def) < 0) goto cleanup; if (virSecretObjDeleteConfig(obj) < 0) goto cleanup; event = virSecretEventLifecycleNew(def->uuid, def->usage_type, def->usage_id, VIR_SECRET_EVENT_UNDEFINED, 0); virSecretObjDeleteData(obj); virSecretObjListRemove(driver->secrets, obj); virObjectUnref(obj); obj = NULL; ret = 0; cleanup: virSecretObjEndAPI(&obj); if (event) virObjectEventStateQueue(driver->secretEventState, event); return ret; }
static unsigned char * secretGetValue(virSecretPtr secret, size_t *value_size, unsigned int flags, unsigned int internalFlags) { unsigned char *ret = NULL; virSecretObjPtr obj; virSecretDefPtr def; virCheckFlags(0, NULL); if (!(obj = secretObjFromSecret(secret))) goto cleanup; def = virSecretObjGetDef(obj); if (virSecretGetValueEnsureACL(secret->conn, def) < 0) goto cleanup; if ((internalFlags & VIR_SECRET_GET_VALUE_INTERNAL_CALL) == 0 && def->isprivate) { virReportError(VIR_ERR_INVALID_SECRET, "%s", _("secret is private")); goto cleanup; } if (!(ret = virSecretObjGetValue(obj))) goto cleanup; *value_size = virSecretObjGetValueSize(obj); cleanup: virSecretObjEndAPI(&obj); return ret; }
static char * secretGetXMLDesc(virSecretPtr secret, unsigned int flags) { char *ret = NULL; virSecretObjPtr obj; virSecretDefPtr def; virCheckFlags(0, NULL); if (!(obj = secretObjFromSecret(secret))) goto cleanup; def = virSecretObjGetDef(obj); if (virSecretGetXMLDescEnsureACL(secret->conn, def) < 0) goto cleanup; ret = virSecretDefFormat(def); cleanup: virSecretObjEndAPI(&obj); return ret; }