a488ca210a
This patch removes unused code in kolla_kubernetes/commands/cmd_resource.py kolla_kubernetes/commands/cmd_service.py kolla_kubernetes/pathfinder.py kolla_kubernetes/service_resources.py Change-Id: I60e163628bda205299b787889defd1fdba508539
129 lines
4.5 KiB
Python
129 lines
4.5 KiB
Python
# 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 os
|
|
import sys
|
|
|
|
from kolla_kubernetes import exception
|
|
|
|
|
|
class PathFinder(object):
|
|
|
|
_find_cache = {}
|
|
|
|
@staticmethod
|
|
def find_installed_root():
|
|
# Full installs use this root path to locate ./share/kolla
|
|
# For system, resolves to /usr/local
|
|
# For virtualenv, resolves to /path/to/venv
|
|
return os.path.abspath(os.path.join(os.path.dirname(
|
|
os.path.realpath(sys.argv[0])), '../'))
|
|
|
|
@staticmethod
|
|
def find_development_root():
|
|
# Editable installs (aka. Development: pip install --editable .)
|
|
# use this root path to locate ../kolla
|
|
# For editable, resolves to /path/to/git/repo/kolla-kubernetes
|
|
return os.path.dirname(
|
|
os.path.dirname(os.path.abspath(__file__)))
|
|
|
|
@staticmethod
|
|
def find_kolla_dir():
|
|
return PathFinder._find(KOLLA_SEARCH_PATHS, None)
|
|
|
|
@staticmethod
|
|
def find_kolla_kubernetes_dir():
|
|
return PathFinder._find(KOLLA_KUBERNETES_SEARCH_PATHS, None)
|
|
|
|
@staticmethod
|
|
def find_config_file(filename):
|
|
search_paths = CONFIG_SEARCH_PATHS
|
|
for d in search_paths:
|
|
f = os.path.join(d, filename)
|
|
if os.path.isfile(f):
|
|
return f
|
|
raise exception.KollaFileNotFoundException(
|
|
"Unable to locate file=[{}] in search_paths=[{}]".format(
|
|
filename, ", ".join(search_paths))
|
|
)
|
|
|
|
@staticmethod
|
|
def find_config_files(service_name):
|
|
path = PathFinder.find_config_dir(service_name)
|
|
return PathFinder._list_dir_files(path)
|
|
|
|
@staticmethod
|
|
def find_config_dir(service_name):
|
|
return PathFinder._find(CONFIG_SEARCH_PATHS, service_name)
|
|
|
|
@staticmethod
|
|
def _find(search_paths, dir_or_file):
|
|
# check the cache first
|
|
cache_key = ("-".join(search_paths) + ":" +
|
|
(dir_or_file if dir_or_file is not None else ""))
|
|
if cache_key in PathFinder._find_cache:
|
|
return PathFinder._find_cache[cache_key]
|
|
|
|
# returns the first directory that exists
|
|
for path in search_paths:
|
|
p = path
|
|
if dir_or_file is not None:
|
|
p = os.path.join(path, dir_or_file)
|
|
if os.path.exists(p):
|
|
PathFinder._find_cache[cache_key] = p
|
|
return p
|
|
raise exception.KollaDirNotFoundException(
|
|
"Unable to locate {} directory in search_paths=[{}]".format(
|
|
dir_or_file, ", ".join(search_paths))
|
|
)
|
|
|
|
@staticmethod
|
|
def _list_dir_files(path):
|
|
paths = [os.path.join(path, fn) for fn in next(os.walk(path))[2]]
|
|
return paths
|
|
|
|
|
|
# prioritize directories to search for /etc files
|
|
CONFIG_SEARCH_PATHS = [
|
|
# Search installation paths first
|
|
'/etc/kolla',
|
|
'/etc/kolla-kubernetes',
|
|
# Then development paths
|
|
os.path.abspath(os.path.join(PathFinder.find_development_root(),
|
|
'../kolla/etc/kolla')),
|
|
os.path.abspath(os.path.join(PathFinder.find_development_root(),
|
|
'./etc/kolla-kubernetes')),
|
|
]
|
|
|
|
# prioritize directories to search for kolla sources
|
|
KOLLA_SEARCH_PATHS = [
|
|
# Search installation paths first
|
|
os.path.abspath(os.path.join(PathFinder.find_installed_root(),
|
|
'./share/kolla')),
|
|
'/usr/share/kolla',
|
|
# Then search development paths
|
|
os.path.abspath(os.path.join(PathFinder.find_development_root(),
|
|
'../kolla')),
|
|
os.path.abspath(os.path.join(PathFinder.find_development_root(),
|
|
'kolla')),
|
|
]
|
|
|
|
# prioritize directories to search for kolla-kubernetes sources
|
|
KOLLA_KUBERNETES_SEARCH_PATHS = [
|
|
# Search installation paths first
|
|
os.path.abspath(os.path.join(PathFinder.find_installed_root(),
|
|
'./share/kolla-kubernetes')),
|
|
'/usr/share/kolla-kubernetes',
|
|
# Then search development paths
|
|
os.path.abspath(os.path.join(PathFinder.find_development_root())),
|
|
]
|