Aaand now fix create --parent :D

master
Vitaliy Filippov 2021-12-08 22:43:35 +03:00
parent 20d5ed799a
commit 3a83a32cb7
1 changed files with 30 additions and 8 deletions

View File

@ -88,6 +88,31 @@ struct image_creator_t
goto resume_2; goto resume_2;
else if (state == 3) else if (state == 3)
goto resume_3; goto resume_3;
for (auto & ic: parent->cli->st_cli.inode_config)
{
if (ic.second.name == image_name)
{
fprintf(stderr, "Image %s already exists\n", image_name.c_str());
exit(1);
}
if (ic.second.name == new_parent)
{
new_parent_id = ic.second.num;
if (!new_pool_id)
{
new_pool_id = INODE_POOL(ic.second.num);
}
if (!size)
{
size = ic.second.size;
}
}
}
if (new_parent != "" && !new_parent_id)
{
fprintf(stderr, "Parent image not found\n");
exit(1);
}
if (!new_pool_id) if (!new_pool_id)
{ {
fprintf(stderr, "Pool name or ID is missing\n"); fprintf(stderr, "Pool name or ID is missing\n");
@ -98,14 +123,6 @@ struct image_creator_t
fprintf(stderr, "Image size is missing\n"); fprintf(stderr, "Image size is missing\n");
exit(1); exit(1);
} }
for (auto & ic: parent->cli->st_cli.inode_config)
{
if (ic.second.name == image_name)
{
fprintf(stderr, "Image %s already exists\n", image_name.c_str());
exit(1);
}
}
do do
{ {
etcd_txn(json11::Json::object { etcd_txn(json11::Json::object {
@ -151,6 +168,11 @@ resume_3:
exit(1); exit(1);
} }
} }
if (new_parent != "")
{
fprintf(stderr, "--parent can't be used with snapshots\n");
exit(1);
}
do do
{ {
// In addition to next_id, get: size, old_id, old_pool_id, new_parent, cfg_mod_rev, idx_mod_rev // In addition to next_id, get: size, old_id, old_pool_id, new_parent, cfg_mod_rev, idx_mod_rev