8cd80b50efe2107ac351bfd0285050dd183398e7Stéphane Graber * Copyright © 2013 Serge Hallyn <serge.hallyn@ubuntu.com>.
8cd80b50efe2107ac351bfd0285050dd183398e7Stéphane Graber * Copyright © 2013 Canonical Ltd.
f5dd1d532a76a1b57cf341db821eae85ea1118c5Serge Hallyn * This program is free software; you can redistribute it and/or modify
f5dd1d532a76a1b57cf341db821eae85ea1118c5Serge Hallyn * it under the terms of the GNU General Public License version 2, as
f5dd1d532a76a1b57cf341db821eae85ea1118c5Serge Hallyn * published by the Free Software Foundation.
f5dd1d532a76a1b57cf341db821eae85ea1118c5Serge Hallyn * This program is distributed in the hope that it will be useful,
f5dd1d532a76a1b57cf341db821eae85ea1118c5Serge Hallyn * but WITHOUT ANY WARRANTY; without even the implied warranty of
f5dd1d532a76a1b57cf341db821eae85ea1118c5Serge Hallyn * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
f5dd1d532a76a1b57cf341db821eae85ea1118c5Serge Hallyn * GNU General Public License for more details.
f5dd1d532a76a1b57cf341db821eae85ea1118c5Serge Hallyn * You should have received a copy of the GNU General Public License along
f5dd1d532a76a1b57cf341db821eae85ea1118c5Serge Hallyn * with this program; if not, write to the Free Software Foundation, Inc.,
f5dd1d532a76a1b57cf341db821eae85ea1118c5Serge Hallyn * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
f5dd1d532a76a1b57cf341db821eae85ea1118c5Serge Hallyn fprintf(stderr, "%s: %d: failed to load first container\n", __FILE__, __LINE__);
f5dd1d532a76a1b57cf341db821eae85ea1118c5Serge Hallyn fprintf(stderr, "%d: %s thought it was defined\n", __LINE__, MYNAME);
f5dd1d532a76a1b57cf341db821eae85ea1118c5Serge Hallyn if (!c->set_config_item(c, "lxc.network.type", "empty")) {
f5dd1d532a76a1b57cf341db821eae85ea1118c5Serge Hallyn fprintf(stderr, "%s: %d: failed to set network type\n", __FILE__, __LINE__);
f5dd1d532a76a1b57cf341db821eae85ea1118c5Serge Hallyn if (!c->createl(c, template, NULL, NULL, 0, NULL)) {
f5dd1d532a76a1b57cf341db821eae85ea1118c5Serge Hallyn fprintf(stderr, "%s: %d: failed to create %s container\n", __FILE__, __LINE__, template);
de269ee8dec1cf2d882de385f8dd6591e97121e2Serge Hallyn fprintf(stderr, "%s: %d: failed to create snapshot\n", __FILE__, __LINE__);
18aa217bb187b551206fe66075229ba382a1dbe4Serge Hallyn // rootfs should be ${lxcpath}${lxcname}/snaps/snap0/rootfs
18aa217bb187b551206fe66075229ba382a1dbe4Serge Hallyn snprintf(path, 1024, "%s/%s/snaps/snap0/rootfs", lxc_get_global_config_item("lxc.lxcpath"), MYNAME);
f5dd1d532a76a1b57cf341db821eae85ea1118c5Serge Hallyn fprintf(stderr, "%s: %d: snapshot was not actually created\n", __FILE__, __LINE__);
f5dd1d532a76a1b57cf341db821eae85ea1118c5Serge Hallyn if (n < 1) {
f5dd1d532a76a1b57cf341db821eae85ea1118c5Serge Hallyn fprintf(stderr, "%s: %d: failed listing containers\n", __FILE__, __LINE__);
f5dd1d532a76a1b57cf341db821eae85ea1118c5Serge Hallyn fprintf(stderr, "%s: %d: snapshot had bad name\n", __FILE__, __LINE__);
f5dd1d532a76a1b57cf341db821eae85ea1118c5Serge Hallyn for (i=0; i<n; i++) {
f5dd1d532a76a1b57cf341db821eae85ea1118c5Serge Hallyn s[i].free(&s[i]);
f5dd1d532a76a1b57cf341db821eae85ea1118c5Serge Hallyn if (!c->snapshot_restore(c, "snap0", RESTNAME)) {
f5dd1d532a76a1b57cf341db821eae85ea1118c5Serge Hallyn fprintf(stderr, "%s: %d: failed to restore snapshot\n", __FILE__, __LINE__);
58b61f6d3442e984a88c093dbdfd20f1d0a82587S.Çağlar Onur fprintf(stderr, "%s: %d: failed to destroy snapshot\n", __FILE__, __LINE__);
e60e630c4a1e7179a37d3edd7925b59affb45785Serge Hallyn fprintf(stderr, "%s: %d: external snapshot restore failed\n", __FILE__, __LINE__);
de269ee8dec1cf2d882de385f8dd6591e97121e2Serge Hallyn c2 = c->clone(c, MYNAME2, NULL, LXC_CLONE_SNAPSHOT, "overlayfs", NULL, 0, NULL);
de269ee8dec1cf2d882de385f8dd6591e97121e2Serge Hallyn fprintf(stderr, "%d: %s overlayfs clone failed\n", __LINE__, MYNAME2);
de269ee8dec1cf2d882de385f8dd6591e97121e2Serge Hallyn fprintf(stderr, "%s: %d: failed to create snapshot\n", __FILE__, __LINE__);
de269ee8dec1cf2d882de385f8dd6591e97121e2Serge Hallyn if (n < 1) {
de269ee8dec1cf2d882de385f8dd6591e97121e2Serge Hallyn fprintf(stderr, "%s: %d: failed listing containers\n", __FILE__, __LINE__);
de269ee8dec1cf2d882de385f8dd6591e97121e2Serge Hallyn fprintf(stderr, "%s: %d: snapshot had bad name\n", __FILE__, __LINE__);
de269ee8dec1cf2d882de385f8dd6591e97121e2Serge Hallyn for (i=0; i<n; i++) {
de269ee8dec1cf2d882de385f8dd6591e97121e2Serge Hallyn s[i].free(&s[i]);
de269ee8dec1cf2d882de385f8dd6591e97121e2Serge Hallyn if (!c2->snapshot_restore(c2, "snap0", NULL)) {
de269ee8dec1cf2d882de385f8dd6591e97121e2Serge Hallyn fprintf(stderr, "%s: %d: failed to restore overlayfs snapshot\n", __FILE__, __LINE__);
de269ee8dec1cf2d882de385f8dd6591e97121e2Serge Hallyn fprintf(stderr, "%s: %d: failed to destroy overlayfs snapshot\n", __FILE__, __LINE__);