Remove docker related code from AstuteArchivator
Since the removing docker containers from the host re-initialization of services should be done by applying puppet manifests. The code that responsible for doing this with containers were removed from AstuteArchivator and now this archivator responsible only for restoring the astute.yaml file, this re-initialization will be added as a separate archivator. Change-Id: Ied3b5132e9dce1c37b259f74d76c93f56dbcdf67
This commit is contained in:
parent
c61d6b0beb
commit
9f99b29f8e
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
# from octane.handlers.backup_restore import astute
|
from octane.handlers.backup_restore import astute
|
||||||
# from octane.handlers.backup_restore import cobbler
|
# from octane.handlers.backup_restore import cobbler
|
||||||
from octane.handlers.backup_restore import fuel_keys
|
from octane.handlers.backup_restore import fuel_keys
|
||||||
from octane.handlers.backup_restore import fuel_uuid
|
from octane.handlers.backup_restore import fuel_uuid
|
||||||
|
@ -31,7 +31,7 @@ from octane.handlers.backup_restore import version
|
||||||
# services are run now in OS on the host. This major change requires to
|
# services are run now in OS on the host. This major change requires to
|
||||||
# modify current archivators that use containers.
|
# modify current archivators that use containers.
|
||||||
ARCHIVATORS = [
|
ARCHIVATORS = [
|
||||||
# astute.AstuteArchivator,
|
astute.AstuteArchivator,
|
||||||
# SSH restore must go before Cobbler restore so it updates
|
# SSH restore must go before Cobbler restore so it updates
|
||||||
# /etc/cobbler/authorized_keys file automatically
|
# /etc/cobbler/authorized_keys file automatically
|
||||||
ssh.SshArchivator,
|
ssh.SshArchivator,
|
||||||
|
|
|
@ -15,8 +15,7 @@ import shutil
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
from octane.handlers.backup_restore import base
|
from octane.handlers.backup_restore import base
|
||||||
from octane import magic_consts
|
from octane.util import puppet
|
||||||
from octane.util import docker
|
|
||||||
|
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
@ -72,12 +71,6 @@ class AstuteArchivator(base.PathArchivator):
|
||||||
return yaml.load(current)
|
return yaml.load(current)
|
||||||
|
|
||||||
def pre_restore_check(self):
|
def pre_restore_check(self):
|
||||||
names = docker.get_docker_container_names(status="running")
|
|
||||||
containers = set(magic_consts.RUNNING_REQUIRED_CONTAINERS) - set(names)
|
|
||||||
if containers:
|
|
||||||
raise Exception(
|
|
||||||
"Required running containers: {0}".format(
|
|
||||||
", ".join(containers)))
|
|
||||||
backup_ip = self.get_backup_dict()["ADMIN_NETWORK"]["ipaddress"]
|
backup_ip = self.get_backup_dict()["ADMIN_NETWORK"]["ipaddress"]
|
||||||
current_ip = self.get_current_dict()["ADMIN_NETWORK"]["ipaddress"]
|
current_ip = self.get_current_dict()["ADMIN_NETWORK"]["ipaddress"]
|
||||||
if backup_ip != current_ip:
|
if backup_ip != current_ip:
|
||||||
|
@ -116,17 +109,5 @@ class AstuteArchivator(base.PathArchivator):
|
||||||
self._post_restore_action()
|
self._post_restore_action()
|
||||||
|
|
||||||
def _post_restore_action(self):
|
def _post_restore_action(self):
|
||||||
# restart all running containers
|
for task in ["hiera", "host"]:
|
||||||
for name in magic_consts.RUNNING_REQUIRED_CONTAINERS:
|
puppet.apply_task(task)
|
||||||
docker.stop_container(name)
|
|
||||||
# FIXME: when astute container restart corrent this may be removed
|
|
||||||
if "astute" == name:
|
|
||||||
try:
|
|
||||||
docker.start_container(name)
|
|
||||||
except Exception:
|
|
||||||
LOG.warn(
|
|
||||||
"Failed to start astute container for the first time")
|
|
||||||
docker.stop_container(name)
|
|
||||||
else:
|
|
||||||
continue
|
|
||||||
docker.start_container(name)
|
|
||||||
|
|
|
@ -47,22 +47,6 @@ NAILGUN_URL = "http://127.0.0.1:8000"
|
||||||
KEYSTONE_API_URL = "http://127.0.0.1:5000/v2.0"
|
KEYSTONE_API_URL = "http://127.0.0.1:5000/v2.0"
|
||||||
KEYSTONE_TENANT_NAME = "admin"
|
KEYSTONE_TENANT_NAME = "admin"
|
||||||
|
|
||||||
SYNC_CONTAINERS = []
|
|
||||||
|
|
||||||
RUNNING_REQUIRED_CONTAINERS = [
|
|
||||||
"postgres",
|
|
||||||
"rabbitmq",
|
|
||||||
"keystone",
|
|
||||||
"rsync",
|
|
||||||
"astute",
|
|
||||||
"rsyslog",
|
|
||||||
"nailgun",
|
|
||||||
"ostf",
|
|
||||||
"nginx",
|
|
||||||
"cobbler",
|
|
||||||
"mcollective",
|
|
||||||
]
|
|
||||||
|
|
||||||
OPENSTACK_FIXTURES = "/usr/share/fuel-openstack-metadata/openstack.yaml"
|
OPENSTACK_FIXTURES = "/usr/share/fuel-openstack-metadata/openstack.yaml"
|
||||||
|
|
||||||
OSD_REPOS_UPDATE = [
|
OSD_REPOS_UPDATE = [
|
||||||
|
|
|
@ -450,20 +450,18 @@ def test_astute_restore(mocker, mock_open, keys_in_dump_file, restored):
|
||||||
safe_dump = mocker.patch("yaml.safe_dump")
|
safe_dump = mocker.patch("yaml.safe_dump")
|
||||||
copy_mock = mocker.patch("shutil.copy2")
|
copy_mock = mocker.patch("shutil.copy2")
|
||||||
move_mock = mocker.patch("shutil.move")
|
move_mock = mocker.patch("shutil.move")
|
||||||
|
mock_puppet = mocker.patch("octane.util.puppet.apply_task")
|
||||||
cls = astute.AstuteArchivator
|
cls = astute.AstuteArchivator
|
||||||
archive = TestArchive([member], cls)
|
archive = TestArchive([member], cls)
|
||||||
post_restore_mock = mocker.patch.object(cls, "_post_restore_action")
|
|
||||||
try:
|
try:
|
||||||
cls(archive).restore()
|
cls(archive).restore()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
if restored:
|
if restored:
|
||||||
raise
|
raise
|
||||||
assert str(exc).startswith("Not found values in backup for keys: ")
|
assert str(exc).startswith("Not found values in backup for keys: ")
|
||||||
assert not post_restore_mock.called
|
|
||||||
else:
|
else:
|
||||||
assert restored
|
assert restored
|
||||||
member.assert_extract()
|
member.assert_extract()
|
||||||
post_restore_mock.assert_called_once_with()
|
|
||||||
copy_mock.assert_called_once_with(
|
copy_mock.assert_called_once_with(
|
||||||
"/etc/fuel/astute.yaml", "/etc/fuel/astute.yaml.old")
|
"/etc/fuel/astute.yaml", "/etc/fuel/astute.yaml.old")
|
||||||
move_mock.assert_called_once_with(
|
move_mock.assert_called_once_with(
|
||||||
|
@ -471,24 +469,10 @@ def test_astute_restore(mocker, mock_open, keys_in_dump_file, restored):
|
||||||
safe_dump.assert_called_once_with(dict_to_restore,
|
safe_dump.assert_called_once_with(dict_to_restore,
|
||||||
mock_open.return_value,
|
mock_open.return_value,
|
||||||
default_flow_style=False)
|
default_flow_style=False)
|
||||||
|
assert mock_puppet.mock_calls == [
|
||||||
|
mock.call("hiera"),
|
||||||
def test_post_restore_action_astute(mocker):
|
mock.call("host"),
|
||||||
|
]
|
||||||
stopped = []
|
|
||||||
mocker.patch(
|
|
||||||
"octane.util.docker.get_docker_container_names",
|
|
||||||
return_value=["container_1", "container_2"]
|
|
||||||
)
|
|
||||||
start = mocker.patch("octane.util.docker.start_container",
|
|
||||||
side_effect=stopped.remove)
|
|
||||||
stop = mocker.patch("octane.util.docker.stop_container",
|
|
||||||
side_effect=stopped.append)
|
|
||||||
|
|
||||||
astute.AstuteArchivator(None)._post_restore_action()
|
|
||||||
assert start.called
|
|
||||||
assert stop.called
|
|
||||||
assert not stopped
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(("dump", "calls"), [
|
@pytest.mark.parametrize(("dump", "calls"), [
|
||||||
|
|
|
@ -16,7 +16,6 @@ import pytest
|
||||||
from octane.commands import restore
|
from octane.commands import restore
|
||||||
from octane.handlers import backup_restore
|
from octane.handlers import backup_restore
|
||||||
from octane.handlers.backup_restore import astute
|
from octane.handlers.backup_restore import astute
|
||||||
from octane import magic_consts
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("path,is_file", [
|
@pytest.mark.parametrize("path,is_file", [
|
||||||
|
@ -80,9 +79,6 @@ def test_restore_data(mocker):
|
||||||
])
|
])
|
||||||
def test_astute_checker(
|
def test_astute_checker(
|
||||||
mocker, mock_open, backup_ip, current_ip):
|
mocker, mock_open, backup_ip, current_ip):
|
||||||
mocker.patch(
|
|
||||||
"octane.util.docker.get_docker_container_names",
|
|
||||||
return_value=magic_consts.RUNNING_REQUIRED_CONTAINERS)
|
|
||||||
tar_mock = mocker.Mock()
|
tar_mock = mocker.Mock()
|
||||||
mocker.patch.object(
|
mocker.patch.object(
|
||||||
astute.AstuteArchivator,
|
astute.AstuteArchivator,
|
||||||
|
|
Loading…
Reference in New Issue