コード例 #1
0
ファイル: test_lxc.py プロジェクト: mcclurmc/juju
    def test_container_clone(self):
        self.addCleanup(self.clean_container, DEFAULT_CONTAINER)
        self.addCleanup(self.clean_container, DEFAULT_CONTAINER + "_child")

        master_container = LXCContainer(DEFAULT_CONTAINER,
                                        origin="ppa",
                                        public_key="dsa...")

        # verify that we cannot clone an unconstructed container
        failure = master_container.clone("test_lxc_fail")
        yield self.assertFailure(failure, LXCError)

        yield master_container.create()

        # Clone a child container from the template
        child_name = DEFAULT_CONTAINER + "_child"
        c = yield master_container.clone(child_name)

        self.assertEqual(c.container_name, child_name)

        running = yield c.is_running()
        self.assertFalse(running)
        yield c.run()

        running = yield c.is_running()
        self.assertTrue(running)

        output = _lxc_ls()
        self.assertIn(DEFAULT_CONTAINER, output)

        self.verify_container(c, "dsa...", "ppa")

        # verify that we are in containers
        containers = yield get_containers(None)
        self.assertEqual(containers[child_name], True)

        # tear it down
        yield c.destroy()
        running = yield c.is_running()
        self.assertFalse(running)

        containers = yield get_containers(None)
        self.assertNotIn(child_name, containers)

        # and its gone
        output = _lxc_ls()
        self.assertNotIn(child_name, output)

        yield master_container.destroy()