# -*- coding: utf-8 -*-

"""
Test the lxc module
"""

from __future__ import absolute_import, print_function, unicode_literals

import pytest
from salt.ext import six
from tests.support.case import ModuleCase
from tests.support.helpers import skip_if_binaries_missing, skip_if_not_root
from tests.support.unit import skipIf


@skipIf(
    True,
    "Needs rewrite to be more distro agnostic. Also, the tearDown "
    "function destroys ALL containers on the box, which is BAD.",
)
@skip_if_not_root
@skip_if_binaries_missing(
    "lxc-start", message="LXC is not installed or minimal version not met"
)
@pytest.mark.windows_whitelisted
class LXCModuleTest(ModuleCase):
    """
    Test the lxc module
    """

    prefix = "_salttesting"

    def setUp(self):
        os = self.run_function("grains.item", ["os", "oscodename", "osarch"])

        p = {
            "download": {
                "dist": os["os"].lower(),
                "arch": os["osarch"].lower(),
                "template": "download",
                "release": os["oscodename"].lower(),
            },
            "sshd": {"template": "sshd"},
        }
        self.run_function("grains.setval", ["lxc.profile", p])

    def tearDown(self):
        """
        Clean up any LXCs created.
        """
        r = self.run_function("lxc.list")
        for k, v in six.iteritems(r):
            for x in v:
                if x.startswith(self.prefix):
                    self.run_function("lxc.destroy", [x])

    def test_create_destroy(self):
        """
        Test basic create/destroy of an LXC.
        """

        r = self.run_function("lxc.create", [self.prefix], template="sshd")
        self.assertEqual(r, {"state": {"new": "stopped", "old": None}, "result": True})
        self.assertTrue(self.run_function("lxc.exists", [self.prefix]))
        r = self.run_function("lxc.destroy", [self.prefix])
        self.assertEqual(r, {"state": None, "change": True})
        self.assertFalse(self.run_function("lxc.exists", [self.prefix]))

    def test_init(self):
        """
        Test basic init functionality.
        """

        r = self.run_function("lxc.init", [self.prefix], profile="sshd", seed=False)
        self.assertTrue(r.get("created", False))
        self.assertTrue(self.run_function("lxc.exists", [self.prefix]))

    def test_macvlan(self):
        """
        Regression test for macvlan nic profile.
        """

        p = {
            "macvlan": {
                "eth0": {"macvlan.mode": "bridge", "link": "eth0", "type": "macvlan"}
            }
        }

        self.run_function("grains.setval", ["lxc.nic", p])

        self.run_function(
            "lxc.init",
            [self.prefix],
            profile="sshd",
            nic="macvlan",
            seed=False,
            start=False,
        )

        f = "/var/lib/lxc/{0}/config".format(self.prefix)
        conf = self.run_function("lxc.read_conf", [f])

        # Due to a segfault in lxc-destroy caused by invalid configs,
        # truncate the config.
        self.run_function("cmd.run", ["truncate -s 0 {0}".format(f)])

        self.assertEqual(conf.get("lxc.network.type"), "macvlan")

@@ -1,29 +1,4 @@
-# -*- coding: utf-8 -*-%0A%0A
 %22%22%22%0A
@@ -26,120 +26,21 @@
 %22%22%0A%0A
-from __future__ import absolute_import, print_function, unicode_literals%0A%0Aimport pytest%0Afrom salt.ext import six
+import pytest
 %0Afro
@@ -1209,23 +1209,16 @@
  in 
-six.iter
+r.
 items(
-r
 ):%0A 
@@ -2709,17 +2709,16 @@
 ib/lxc/%7B
-0
 %7D/config
@@ -2950,17 +2950,16 @@
 e -s 0 %7B
-0
 %7D%22.forma

Drop Py2 and six on tests/integration/modules/test_lxc.py