|
Packit Service |
751c4a |
# This file is part of cloud-init. See LICENSE file for license information.
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
""" test_apk_configure
|
|
Packit Service |
751c4a |
Test creation of repositories file
|
|
Packit Service |
751c4a |
"""
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
import logging
|
|
Packit Service |
751c4a |
import os
|
|
Packit Service |
751c4a |
import textwrap
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
from cloudinit import (cloud, helpers, util)
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
from cloudinit.config import cc_apk_configure
|
|
Packit Service |
751c4a |
from cloudinit.tests.helpers import (FilesystemMockingTestCase, mock)
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
REPO_FILE = "/etc/apk/repositories"
|
|
Packit Service |
751c4a |
DEFAULT_MIRROR_URL = "https://alpine.global.ssl.fastly.net/alpine"
|
|
Packit Service |
751c4a |
CC_APK = 'cloudinit.config.cc_apk_configure'
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
class TestNoConfig(FilesystemMockingTestCase):
|
|
Packit Service |
751c4a |
def setUp(self):
|
|
Packit Service |
751c4a |
super(TestNoConfig, self).setUp()
|
|
Packit Service |
751c4a |
self.add_patch(CC_APK + '._write_repositories_file', 'm_write_repos')
|
|
Packit Service |
751c4a |
self.name = "apk-configure"
|
|
Packit Service |
751c4a |
self.cloud_init = None
|
|
Packit Service |
751c4a |
self.log = logging.getLogger("TestNoConfig")
|
|
Packit Service |
751c4a |
self.args = []
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
def test_no_config(self):
|
|
Packit Service |
751c4a |
"""
|
|
Packit Service |
751c4a |
Test that nothing is done if no apk-configure
|
|
Packit Service |
751c4a |
configuration is provided.
|
|
Packit Service |
751c4a |
"""
|
|
Packit Service |
751c4a |
config = util.get_builtin_cfg()
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
cc_apk_configure.handle(self.name, config, self.cloud_init,
|
|
Packit Service |
751c4a |
self.log, self.args)
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
self.assertEqual(0, self.m_write_repos.call_count)
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
class TestConfig(FilesystemMockingTestCase):
|
|
Packit Service |
751c4a |
def setUp(self):
|
|
Packit Service |
751c4a |
super(TestConfig, self).setUp()
|
|
Packit Service |
751c4a |
self.new_root = self.tmp_dir()
|
|
Packit Service |
751c4a |
self.new_root = self.reRoot(root=self.new_root)
|
|
Packit Service |
751c4a |
for dirname in ['tmp', 'etc/apk']:
|
|
Packit Service |
751c4a |
util.ensure_dir(os.path.join(self.new_root, dirname))
|
|
Packit Service |
751c4a |
self.paths = helpers.Paths({'templates_dir': self.new_root})
|
|
Packit Service |
751c4a |
self.name = "apk-configure"
|
|
Packit Service |
751c4a |
self.cloud = cloud.Cloud(None, self.paths, None, None, None)
|
|
Packit Service |
751c4a |
self.log = logging.getLogger("TestNoConfig")
|
|
Packit Service |
751c4a |
self.args = []
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
@mock.patch(CC_APK + '._write_repositories_file')
|
|
Packit Service |
751c4a |
def test_no_repo_settings(self, m_write_repos):
|
|
Packit Service |
751c4a |
"""
|
|
Packit Service |
751c4a |
Test that nothing is written if the 'alpine-repo' key
|
|
Packit Service |
751c4a |
is not present.
|
|
Packit Service |
751c4a |
"""
|
|
Packit Service |
751c4a |
config = {"apk_repos": {}}
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
cc_apk_configure.handle(self.name, config, self.cloud, self.log,
|
|
Packit Service |
751c4a |
self.args)
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
self.assertEqual(0, m_write_repos.call_count)
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
@mock.patch(CC_APK + '._write_repositories_file')
|
|
Packit Service |
751c4a |
def test_empty_repo_settings(self, m_write_repos):
|
|
Packit Service |
751c4a |
"""
|
|
Packit Service |
751c4a |
Test that nothing is written if 'alpine_repo' list is empty.
|
|
Packit Service |
751c4a |
"""
|
|
Packit Service |
751c4a |
config = {"apk_repos": {"alpine_repo": []}}
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
cc_apk_configure.handle(self.name, config, self.cloud, self.log,
|
|
Packit Service |
751c4a |
self.args)
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
self.assertEqual(0, m_write_repos.call_count)
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
def test_only_main_repo(self):
|
|
Packit Service |
751c4a |
"""
|
|
Packit Service |
751c4a |
Test when only details of main repo is written to file.
|
|
Packit Service |
751c4a |
"""
|
|
Packit Service |
751c4a |
alpine_version = 'v3.12'
|
|
Packit Service |
751c4a |
config = {
|
|
Packit Service |
751c4a |
"apk_repos": {
|
|
Packit Service |
751c4a |
"alpine_repo": {
|
|
Packit Service |
751c4a |
"version": alpine_version
|
|
Packit Service |
751c4a |
}
|
|
Packit Service |
751c4a |
}
|
|
Packit Service |
751c4a |
}
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
cc_apk_configure.handle(self.name, config, self.cloud, self.log,
|
|
Packit Service |
751c4a |
self.args)
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
expected_content = textwrap.dedent("""\
|
|
Packit Service |
751c4a |
#
|
|
Packit Service |
751c4a |
# Created by cloud-init
|
|
Packit Service |
751c4a |
#
|
|
Packit Service |
751c4a |
# This file is written on first boot of an instance
|
|
Packit Service |
751c4a |
#
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
{0}/{1}/main
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
""".format(DEFAULT_MIRROR_URL, alpine_version))
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
self.assertEqual(expected_content, util.load_file(REPO_FILE))
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
def test_main_and_community_repos(self):
|
|
Packit Service |
751c4a |
"""
|
|
Packit Service |
751c4a |
Test when only details of main and community repos are
|
|
Packit Service |
751c4a |
written to file.
|
|
Packit Service |
751c4a |
"""
|
|
Packit Service |
751c4a |
alpine_version = 'edge'
|
|
Packit Service |
751c4a |
config = {
|
|
Packit Service |
751c4a |
"apk_repos": {
|
|
Packit Service |
751c4a |
"alpine_repo": {
|
|
Packit Service |
751c4a |
"version": alpine_version,
|
|
Packit Service |
751c4a |
"community_enabled": True
|
|
Packit Service |
751c4a |
}
|
|
Packit Service |
751c4a |
}
|
|
Packit Service |
751c4a |
}
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
cc_apk_configure.handle(self.name, config, self.cloud, self.log,
|
|
Packit Service |
751c4a |
self.args)
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
expected_content = textwrap.dedent("""\
|
|
Packit Service |
751c4a |
#
|
|
Packit Service |
751c4a |
# Created by cloud-init
|
|
Packit Service |
751c4a |
#
|
|
Packit Service |
751c4a |
# This file is written on first boot of an instance
|
|
Packit Service |
751c4a |
#
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
{0}/{1}/main
|
|
Packit Service |
751c4a |
{0}/{1}/community
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
""".format(DEFAULT_MIRROR_URL, alpine_version))
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
self.assertEqual(expected_content, util.load_file(REPO_FILE))
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
def test_main_community_testing_repos(self):
|
|
Packit Service |
751c4a |
"""
|
|
Packit Service |
751c4a |
Test when details of main, community and testing repos
|
|
Packit Service |
751c4a |
are written to file.
|
|
Packit Service |
751c4a |
"""
|
|
Packit Service |
751c4a |
alpine_version = 'v3.12'
|
|
Packit Service |
751c4a |
config = {
|
|
Packit Service |
751c4a |
"apk_repos": {
|
|
Packit Service |
751c4a |
"alpine_repo": {
|
|
Packit Service |
751c4a |
"version": alpine_version,
|
|
Packit Service |
751c4a |
"community_enabled": True,
|
|
Packit Service |
751c4a |
"testing_enabled": True
|
|
Packit Service |
751c4a |
}
|
|
Packit Service |
751c4a |
}
|
|
Packit Service |
751c4a |
}
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
cc_apk_configure.handle(self.name, config, self.cloud, self.log,
|
|
Packit Service |
751c4a |
self.args)
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
expected_content = textwrap.dedent("""\
|
|
Packit Service |
751c4a |
#
|
|
Packit Service |
751c4a |
# Created by cloud-init
|
|
Packit Service |
751c4a |
#
|
|
Packit Service |
751c4a |
# This file is written on first boot of an instance
|
|
Packit Service |
751c4a |
#
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
{0}/{1}/main
|
|
Packit Service |
751c4a |
{0}/{1}/community
|
|
Packit Service |
751c4a |
#
|
|
Packit Service |
751c4a |
# Testing - using with non-Edge installation may cause problems!
|
|
Packit Service |
751c4a |
#
|
|
Packit Service |
751c4a |
{0}/edge/testing
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
""".format(DEFAULT_MIRROR_URL, alpine_version))
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
self.assertEqual(expected_content, util.load_file(REPO_FILE))
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
def test_edge_main_community_testing_repos(self):
|
|
Packit Service |
751c4a |
"""
|
|
Packit Service |
751c4a |
Test when details of main, community and testing repos
|
|
Packit Service |
751c4a |
for Edge version of Alpine are written to file.
|
|
Packit Service |
751c4a |
"""
|
|
Packit Service |
751c4a |
alpine_version = 'edge'
|
|
Packit Service |
751c4a |
config = {
|
|
Packit Service |
751c4a |
"apk_repos": {
|
|
Packit Service |
751c4a |
"alpine_repo": {
|
|
Packit Service |
751c4a |
"version": alpine_version,
|
|
Packit Service |
751c4a |
"community_enabled": True,
|
|
Packit Service |
751c4a |
"testing_enabled": True
|
|
Packit Service |
751c4a |
}
|
|
Packit Service |
751c4a |
}
|
|
Packit Service |
751c4a |
}
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
cc_apk_configure.handle(self.name, config, self.cloud, self.log,
|
|
Packit Service |
751c4a |
self.args)
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
expected_content = textwrap.dedent("""\
|
|
Packit Service |
751c4a |
#
|
|
Packit Service |
751c4a |
# Created by cloud-init
|
|
Packit Service |
751c4a |
#
|
|
Packit Service |
751c4a |
# This file is written on first boot of an instance
|
|
Packit Service |
751c4a |
#
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
{0}/{1}/main
|
|
Packit Service |
751c4a |
{0}/{1}/community
|
|
Packit Service |
751c4a |
{0}/{1}/testing
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
""".format(DEFAULT_MIRROR_URL, alpine_version))
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
self.assertEqual(expected_content, util.load_file(REPO_FILE))
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
def test_main_community_testing_local_repos(self):
|
|
Packit Service |
751c4a |
"""
|
|
Packit Service |
751c4a |
Test when details of main, community, testing and
|
|
Packit Service |
751c4a |
local repos are written to file.
|
|
Packit Service |
751c4a |
"""
|
|
Packit Service |
751c4a |
alpine_version = 'v3.12'
|
|
Packit Service |
751c4a |
local_repo_url = 'http://some.mirror/whereever'
|
|
Packit Service |
751c4a |
config = {
|
|
Packit Service |
751c4a |
"apk_repos": {
|
|
Packit Service |
751c4a |
"alpine_repo": {
|
|
Packit Service |
751c4a |
"version": alpine_version,
|
|
Packit Service |
751c4a |
"community_enabled": True,
|
|
Packit Service |
751c4a |
"testing_enabled": True
|
|
Packit Service |
751c4a |
},
|
|
Packit Service |
751c4a |
"local_repo_base_url": local_repo_url
|
|
Packit Service |
751c4a |
}
|
|
Packit Service |
751c4a |
}
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
cc_apk_configure.handle(self.name, config, self.cloud, self.log,
|
|
Packit Service |
751c4a |
self.args)
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
expected_content = textwrap.dedent("""\
|
|
Packit Service |
751c4a |
#
|
|
Packit Service |
751c4a |
# Created by cloud-init
|
|
Packit Service |
751c4a |
#
|
|
Packit Service |
751c4a |
# This file is written on first boot of an instance
|
|
Packit Service |
751c4a |
#
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
{0}/{1}/main
|
|
Packit Service |
751c4a |
{0}/{1}/community
|
|
Packit Service |
751c4a |
#
|
|
Packit Service |
751c4a |
# Testing - using with non-Edge installation may cause problems!
|
|
Packit Service |
751c4a |
#
|
|
Packit Service |
751c4a |
{0}/edge/testing
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
#
|
|
Packit Service |
751c4a |
# Local repo
|
|
Packit Service |
751c4a |
#
|
|
Packit Service |
751c4a |
{2}/{1}
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
""".format(DEFAULT_MIRROR_URL, alpine_version, local_repo_url))
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
self.assertEqual(expected_content, util.load_file(REPO_FILE))
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
def test_edge_main_community_testing_local_repos(self):
|
|
Packit Service |
751c4a |
"""
|
|
Packit Service |
751c4a |
Test when details of main, community, testing and local repos
|
|
Packit Service |
751c4a |
for Edge version of Alpine are written to file.
|
|
Packit Service |
751c4a |
"""
|
|
Packit Service |
751c4a |
alpine_version = 'edge'
|
|
Packit Service |
751c4a |
local_repo_url = 'http://some.mirror/whereever'
|
|
Packit Service |
751c4a |
config = {
|
|
Packit Service |
751c4a |
"apk_repos": {
|
|
Packit Service |
751c4a |
"alpine_repo": {
|
|
Packit Service |
751c4a |
"version": alpine_version,
|
|
Packit Service |
751c4a |
"community_enabled": True,
|
|
Packit Service |
751c4a |
"testing_enabled": True
|
|
Packit Service |
751c4a |
},
|
|
Packit Service |
751c4a |
"local_repo_base_url": local_repo_url
|
|
Packit Service |
751c4a |
}
|
|
Packit Service |
751c4a |
}
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
cc_apk_configure.handle(self.name, config, self.cloud, self.log,
|
|
Packit Service |
751c4a |
self.args)
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
expected_content = textwrap.dedent("""\
|
|
Packit Service |
751c4a |
#
|
|
Packit Service |
751c4a |
# Created by cloud-init
|
|
Packit Service |
751c4a |
#
|
|
Packit Service |
751c4a |
# This file is written on first boot of an instance
|
|
Packit Service |
751c4a |
#
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
{0}/{1}/main
|
|
Packit Service |
751c4a |
{0}/{1}/community
|
|
Packit Service |
751c4a |
{0}/edge/testing
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
#
|
|
Packit Service |
751c4a |
# Local repo
|
|
Packit Service |
751c4a |
#
|
|
Packit Service |
751c4a |
{2}/{1}
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
""".format(DEFAULT_MIRROR_URL, alpine_version, local_repo_url))
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
self.assertEqual(expected_content, util.load_file(REPO_FILE))
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
|
|
Packit Service |
751c4a |
# vi: ts=4 expandtab
|