Commit 771d96b3 by S.Çağlar Onur Committed by Serge Hallyn

introduce snapshot_destroy

parent 93ea85c7
...@@ -2614,6 +2614,38 @@ static bool lxcapi_snapshot_restore(struct lxc_container *c, char *snapname, cha ...@@ -2614,6 +2614,38 @@ static bool lxcapi_snapshot_restore(struct lxc_container *c, char *snapname, cha
return b; return b;
} }
static bool lxcapi_snapshot_destroy(struct lxc_container *c, char *snapname)
{
int ret;
char clonelxcpath[MAXPATHLEN];
struct lxc_container *snap = NULL;
if (!c || !c->name || !c->config_path)
return false;
ret = snprintf(clonelxcpath, MAXPATHLEN, "%ssnaps/%s", c->config_path, c->name);
if (ret < 0 || ret >= MAXPATHLEN)
goto err;
snap = lxc_container_new(snapname, clonelxcpath);
if (!snap || !lxcapi_is_defined(snap)) {
ERROR("Could not find snapshot %s", snapname);
goto err;
}
if (!lxcapi_destroy(snap)) {
ERROR("Could not destroy snapshot %s", snapname);
goto err;
}
lxc_container_put(snap);
return true;
err:
if (snap)
lxc_container_put(snap);
return false;
}
static bool lxcapi_may_control(struct lxc_container *c) static bool lxcapi_may_control(struct lxc_container *c)
{ {
return lxc_try_cmd(c->name, c->config_path) == 0; return lxc_try_cmd(c->name, c->config_path) == 0;
...@@ -2738,6 +2770,7 @@ struct lxc_container *lxc_container_new(const char *name, const char *configpath ...@@ -2738,6 +2770,7 @@ struct lxc_container *lxc_container_new(const char *name, const char *configpath
c->snapshot = lxcapi_snapshot; c->snapshot = lxcapi_snapshot;
c->snapshot_list = lxcapi_snapshot_list; c->snapshot_list = lxcapi_snapshot_list;
c->snapshot_restore = lxcapi_snapshot_restore; c->snapshot_restore = lxcapi_snapshot_restore;
c->snapshot_destroy = lxcapi_snapshot_destroy;
c->may_control = lxcapi_may_control; c->may_control = lxcapi_may_control;
/* we'll allow the caller to update these later */ /* we'll allow the caller to update these later */
......
...@@ -225,6 +225,13 @@ struct lxc_container { ...@@ -225,6 +225,13 @@ struct lxc_container {
bool (*snapshot_restore)(struct lxc_container *c, char *snapname, char *newname); bool (*snapshot_restore)(struct lxc_container *c, char *snapname, char *newname);
/* /*
* snapshot_destroy() will destroy the given snapshot of c
*
* Returns true on success, false on failure.
*/
bool (*snapshot_destroy)(struct lxc_container *c, char *snapname);
/*
* Return false if there is a control socket for the container monitor, * Return false if there is a control socket for the container monitor,
* and the caller may not access it. Return true otherwise. * and the caller may not access it. Return true otherwise.
*/ */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment