X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FN2VC.git;a=blobdiff_plain;f=tests%2Ftest_lxd.py;fp=tests%2Ftest_lxd.py;h=0000000000000000000000000000000000000000;hp=de77e4f5ada9f29434f5d69823b23a01affc98ae;hb=bb60728e5f59728c2905ccf5dad174ddac5d66b6;hpb=c1cf1b9a33dd1929fb834424626661f9c9dce64d diff --git a/tests/test_lxd.py b/tests/test_lxd.py deleted file mode 100644 index de77e4f..0000000 --- a/tests/test_lxd.py +++ /dev/null @@ -1,110 +0,0 @@ -# Copyright 2019 Canonical Ltd. - -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at - -# http://www.apache.org/licenses/LICENSE-2.0 - -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -""" -This test exercises LXD, to make sure that we can: -1. Create a container profile -2. Launch a container with a profile -3. Stop a container -4. Destroy a container -5. Delete a container profile - -""" -import logging -# import os -import pytest -from . import base -import subprocess -import shlex -import tempfile - - -@pytest.mark.asyncio -async def test_lxd(): - - container = base.create_lxd_container(name="test-lxd") - assert container is not None - - # Get the hostname of the container - hostname = container.name - - # Delete the container - base.destroy_lxd_container(container) - - # Verify the container is deleted - client = base.get_lxd_client() - assert client.containers.exists(hostname) is False - - -@pytest.mark.asyncio -async def test_lxd_ssh(): - - with tempfile.TemporaryDirectory() as tmp: - try: - # Create a temporary keypair - cmd = shlex.split( - "ssh-keygen -t rsa -b 4096 -N '' -f {}/id_lxd_rsa".format( - tmp, - ) - ) - subprocess.check_call(cmd) - except subprocess.CalledProcessError as e: - logging.debug(e) - assert False - - # Slurp the public key - public_key = None - with open("{}/id_lxd_rsa.pub".format(tmp), "r") as f: - public_key = f.read() - - assert public_key is not None - - # Create the container with the keypair injected via profile - container = base.create_lxd_container( - public_key=public_key, - name="test-lxd" - ) - assert container is not None - - # Get the hostname of the container - hostname = container.name - - addresses = container.state().network['eth0']['addresses'] - # The interface may have more than one address, but we only need - # the first one for testing purposes. - ipaddr = addresses[0]['address'] - - # Verify we can SSH into container - try: - cmd = shlex.split( - "ssh -i {}/id_lxd_rsa {} root@{} hostname".format( - tmp, - "-oStrictHostKeyChecking=no", - ipaddr, - ) - ) - subprocess.check_call(cmd) - except subprocess.CalledProcessError as e: - logging.debug(e) - assert False - - # Delete the container - base.destroy_lxd_container(container) - - # Verify the container is deleted - client = base.get_lxd_client() - assert client.containers.exists(hostname) is False - - # Verify the container profile is deleted - assert client.profiles.exists(hostname) is False