You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sdap.apache.org by ea...@apache.org on 2020/06/10 20:39:07 UTC
[incubator-sdap-ingester] 06/08: integrates with kubernetes
This is an automated email from the ASF dual-hosted git repository.
eamonford pushed a commit to branch config_map
in repository https://gitbox.apache.org/repos/asf/incubator-sdap-ingester.git
commit 3268385e005ebfcc52ba7645b151ce72c6f9dfa8
Author: thomas loubrieu <th...@jpl.nasa.gov>
AuthorDate: Sun Jun 7 10:57:57 2020 -0700
integrates with kubernetes
---
config_operator/README.md | 2 +-
config_operator/config_operator/config_operator.py | 5 +++--
config_operator/config_operator/config_source/LocalDirConfig.py | 8 ++++++--
config_operator/config_operator/config_source/RemoteGitConfig.py | 8 +++++---
config_operator/config_operator/k8s/K8sConfigMap.py | 6 +++++-
.../containers/k8s/{deployment.yml => deployment-git-src.yml} | 2 ++
6 files changed, 22 insertions(+), 9 deletions(-)
diff --git a/config_operator/README.md b/config_operator/README.md
index 61889c4..371a604 100644
--- a/config_operator/README.md
+++ b/config_operator/README.md
@@ -35,4 +35,4 @@ To publish the docker image on dockerhub do (step necessary for kubernetes deplo
## Kubernetes
- kubectl apply -f containers/k8s/deployment.yml -n sdap
\ No newline at end of file
+ kubectl apply -f containers/k8s/deployment-git-src.yml -n sdap
\ No newline at end of file
diff --git a/config_operator/config_operator/config_operator.py b/config_operator/config_operator/config_operator.py
index b032384..6b512db 100644
--- a/config_operator/config_operator/config_operator.py
+++ b/config_operator/config_operator/config_operator.py
@@ -12,10 +12,11 @@ def main():
help="git repository from which the configuration files are pulled/saved")
parser.add_argument("-gb", "--git-branch", help="git branch from which the configuration files are pulled/saved",
default="master")
+ parser.add_argument("-gl", "--git-local", help="local git repository", required=False)
parser.add_argument("-gt", "--git-token", help="git personal access token used to access the repository")
-
parser.add_argument("-n", "--namespace", help="kubernetes namespace where the configuration will be deployed", required=True)
parser.add_argument("-cm", "--config-map", help="configmap name in kubernetes", required=True)
+
parser.add_argument("-u", "--updated-continuously", nargs='?', const=True, default=False,
help="k8 configMap is updated as soon as a syntactically correct configuration file is updated")
@@ -24,7 +25,7 @@ def main():
if options.local_dir:
config = LocalDirConfig(options.local_dir)
else:
- config = RemoteGitConfig(options.git_url, branch=options.git_branch, token=options.git_token)
+ config = RemoteGitConfig(options.git_url, branch=options.git_branch, token=options.git_token, local_dir=options.git_local)
config_map = K8sConfigMap(options.config_map, options.namespace, config)
config_map.publish()
diff --git a/config_operator/config_operator/config_source/LocalDirConfig.py b/config_operator/config_operator/config_source/LocalDirConfig.py
index 89c0e5a..f37e41b 100644
--- a/config_operator/config_operator/config_source/LocalDirConfig.py
+++ b/config_operator/config_operator/config_source/LocalDirConfig.py
@@ -49,13 +49,17 @@ class LocalDirConfig:
def _get_latest_update(self):
- return time.ctime(max(os.path.getmtime(root) for root,_,_ in os.walk(self._local_dir)))
+ m_times = [os.path.getmtime(root) for root, _, _ in os.walk(self._local_dir)]
+ if m_times:
+ return time.ctime(max(m_times))
+ else:
+ return None
def when_updated(self, callback):
while True:
time.sleep(LISTEN_FOR_UPDATE_INTERVAL_SECONDS)
latest_update = self._get_latest_update()
- if latest_update > self._latest_update:
+ if latest_update is None or (latest_update > self._latest_update):
logger.info("local config dir has been updated")
callback()
self._latest_update = latest_update
diff --git a/config_operator/config_operator/config_source/RemoteGitConfig.py b/config_operator/config_operator/config_source/RemoteGitConfig.py
index 24e614a..15c0f01 100644
--- a/config_operator/config_operator/config_source/RemoteGitConfig.py
+++ b/config_operator/config_operator/config_source/RemoteGitConfig.py
@@ -9,12 +9,13 @@ logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
LISTEN_FOR_UPDATE_INTERVAL_SECONDS = 5
-
+DEFAULT_LOCAL_REPO_DIR = os.path.join(sys.prefix, 'sdap', 'conf')
class RemoteGitConfig(LocalDirConfig):
def __init__(self, git_url,
branch='master',
- token=None
+ token=None,
+ local_dir=DEFAULT_LOCAL_REPO_DIR
):
"""
@@ -25,7 +26,8 @@ class RemoteGitConfig(LocalDirConfig):
self._git_url = git_url if git_url.endswith(".git") else git_url + '.git'
self._git_branch = branch
self._git_token = token
- local_dir = os.path.join(sys.prefix, 'sdap', 'conf')
+ if local_dir is None:
+ local_dir = DEFAULT_LOCAL_REPO_DIR
super().__init__(local_dir)
self._repo = None
self._init_local_config_repo()
diff --git a/config_operator/config_operator/k8s/K8sConfigMap.py b/config_operator/config_operator/k8s/K8sConfigMap.py
index b16b58c..f7784cb 100644
--- a/config_operator/config_operator/k8s/K8sConfigMap.py
+++ b/config_operator/config_operator/k8s/K8sConfigMap.py
@@ -1,3 +1,4 @@
+import os
import logging
from kubernetes import client, config
from kubernetes.client.rest import ApiException
@@ -14,7 +15,10 @@ class K8sConfigMap:
self._namespace = namespace
self._configmap_name = configmap_name
- config.load_kube_config()
+ if os.getenv('KUBERNETES_SERVICE_HOST'):
+ config.load_incluster_config()
+ else:
+ config.load_kube_config()
configuration = client.Configuration()
self._api_instance = client.ApiClient(configuration)
self._api_core_v1_instance = client.CoreV1Api(self._api_instance)
diff --git a/config_operator/containers/k8s/deployment.yml b/config_operator/containers/k8s/deployment-git-src.yml
similarity index 99%
rename from config_operator/containers/k8s/deployment.yml
rename to config_operator/containers/k8s/deployment-git-src.yml
index 1501a75..99b268d 100644
--- a/config_operator/containers/k8s/deployment.yml
+++ b/config_operator/containers/k8s/deployment-git-src.yml
@@ -19,3 +19,5 @@ spec:
image: tloubrieu/config-operator:latest
imagePullPolicy: IfNotPresent
command: ['config-operator', '--git-url', 'https://github.com/tloubrieu-jpl/sdap-ingester-config' , '--namespace', 'sdap', '--config-map', 'collection-ingester-conf', '-u']
+
+