fuel-ccp/fuel_ccp/common/utils.py
Andrey a069ddb9ac Migrationg to pykube from python-k8sclient
Config changes:
* new `insecure` flag in `kubernetes` group
* `ca-certs` -> `ca-cert`

Change-Id: I4dd91828e7276dc781baea4c6df2c01b2f1312e0
2016-09-16 09:53:16 +00:00

101 lines
3.2 KiB
Python

import itertools
import logging
import os
import pkg_resources
import yaml
import fuel_ccp
from fuel_ccp.common import jinja_utils
from fuel_ccp import config
from fuel_ccp import kubernetes
CONF = config.CONF
LOG = logging.getLogger(__name__)
def k8s_name(*args):
return "-".join(tuple(args)).replace("_", "-")
def get_resource_path(path):
return pkg_resources.resource_filename(fuel_ccp.version_info.package, path)
def get_global_parameters(*config_groups):
cfg = {}
components = list(CONF.repositories.names)
paths = []
# Order does matter. At first we add global defaults.
for conf_path in ("resources/defaults.yaml", "resources/globals.yaml"):
paths.append(get_resource_path(conf_path))
# After we add component defaults.
for component in components:
paths.append(os.path.join(CONF.repositories.path, component,
"service/files/defaults.yaml"))
# And finaly we add cluster-wide globals conf, if provided.
if CONF.deploy_config:
paths.append(CONF.deploy_config)
for path in paths:
if os.path.isfile(path):
LOG.debug("Adding parameters from \"%s\"", path)
with open(path, "r") as f:
data = yaml.load(f)
for group in config_groups:
cfg.setdefault(group, {})
cfg[group].update(data.get(group, {}))
else:
LOG.debug("\"%s\" not found, skipping", path)
for group in config_groups:
cfg.setdefault(group, {})
try:
config_group = CONF[group]
except KeyError:
continue
else:
cfg[group].update(config_group._items())
return cfg
def get_deploy_components_info(rendering_context=None):
if rendering_context is None:
rendering_context = get_global_parameters("configs")["configs"]
components_map = {}
for component in CONF.repositories.names:
service_dir = os.path.join(CONF.repositories.path,
component,
'service')
if not os.path.isdir(service_dir):
continue
for service_file in os.listdir(service_dir):
if service_file.endswith('.yaml'):
LOG.debug("Rendering service definition: %s", service_file)
content = jinja_utils.jinja_render(
os.path.join(service_dir, service_file), rendering_context
)
LOG.debug("Parse service definition: %s", service_file)
service_definition = yaml.load(content)
service_name = service_definition['service']['name']
components_map[service_name] = {
'service_dir': service_dir,
'service_content': service_definition
}
return components_map
def get_deployed_components():
"""Returns set of deployed components."""
deployed_daemonsets = kubernetes.list_cluster_daemonsets()
deployed_deployments = kubernetes.list_cluster_deployments()
deployed_components = set(kubernetes.get_object_names(
itertools.chain(deployed_daemonsets, deployed_deployments)))
return deployed_components