From 2d1397b4686fc875ca299d70e610cc6bae2a613e Mon Sep 17 00:00:00 2001 From: Ben Nemec Date: Tue, 22 Apr 2014 18:22:14 +0000 Subject: [PATCH] Use FHS-compliant default base directory /opt/stack as the default base directory is not very friendly to non-OpenStack users, so this changes the default base directory to reside in /usr/libexec. The /opt/stack path will continue to work for now so any existing users will not be broken by the change. Also changes the directory name from os-config-refresh to os-refresh-config to better align with the os-apply-config naming. Change-Id: I98e93d91685ae25ae74a5470483a1cc8b97da4e5 --- os_refresh_config/os_refresh_config.py | 29 ++++++++++++++- os_refresh_config/tests/__init__.py | 0 .../tests/test_os_refresh_config.py | 37 +++++++++++++++++++ test-requirements.txt | 1 + 4 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 os_refresh_config/tests/__init__.py create mode 100644 os_refresh_config/tests/test_os_refresh_config.py diff --git a/os_refresh_config/os_refresh_config.py b/os_refresh_config/os_refresh_config.py index c29bd60..fda6dd9 100755 --- a/os_refresh_config/os_refresh_config.py +++ b/os_refresh_config/os_refresh_config.py @@ -22,8 +22,33 @@ import subprocess import sys import time -BASE_DIR = os.environ.get('OS_REFRESH_CONFIG_BASE_DIR', - '/opt/stack/os-config-refresh') +OLD_BASE_DIR = '/opt/stack/os-config-refresh' +DEFAULT_BASE_DIR = '/usr/libexec/os-refresh-config' + + +def default_base_dir(): + """Determine the default base directory path + + If the OS_REFRESH_CONFIG_BASE_DIR environment variable is set, + use its value. + Otherwise, prefer the new default path, but still allow the old one for + backwards compatibility. + """ + base_dir = os.environ.get('OS_REFRESH_CONFIG_BASE_DIR') + if base_dir is None: + # NOTE(bnemec): Prefer the new location, but still allow the old one. + if os.path.isdir(OLD_BASE_DIR) and not os.path.isdir(DEFAULT_BASE_DIR): + logging.warning('Base directory %s is deprecated. The recommended ' + 'base directory is %s', + OLD_BASE_DIR, DEFAULT_BASE_DIR) + base_dir = OLD_BASE_DIR + else: + base_dir = DEFAULT_BASE_DIR + return base_dir + + +BASE_DIR = default_base_dir() + PHASES = ['pre-configure', 'configure', 'post-configure', diff --git a/os_refresh_config/tests/__init__.py b/os_refresh_config/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/os_refresh_config/tests/test_os_refresh_config.py b/os_refresh_config/tests/test_os_refresh_config.py new file mode 100644 index 0000000..c8b05c9 --- /dev/null +++ b/os_refresh_config/tests/test_os_refresh_config.py @@ -0,0 +1,37 @@ +# Copyright 2014 Red Hat, Inc. +# +# 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. + +import mock +import testtools + +from os_refresh_config import os_refresh_config + + +class TestRefreshConfig(testtools.TestCase): + def test_default_base_dir(self): + default = '/usr/libexec/os-refresh-config' + with mock.patch('os.path.isdir', lambda x: x == default): + self.assertEqual(default, os_refresh_config.default_base_dir()) + + def test_default_base_dir_deprecated(self): + default = '/opt/stack/os-config-refresh' + with mock.patch('os.path.isdir', lambda x: x == default): + self.assertEqual(default, os_refresh_config.default_base_dir()) + + def test_default_base_dir_both(self): + default = '/usr/libexec/os-refresh-config' + deprecated = '/opt/stack/os-config-refresh' + with mock.patch('os.path.isdir', lambda x: (x == default or + x == deprecated)): + self.assertEqual(default, os_refresh_config.default_base_dir()) diff --git a/test-requirements.txt b/test-requirements.txt index 848662b..68817aa 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -4,6 +4,7 @@ Babel>=1.3 coverage>=3.6 discover fixtures>=0.3.14 +mock>=1.0 python-subunit>=0.0.18 sphinx>=1.1.2,<1.2 testrepository>=0.0.18