This is an automated email from the ASF dual-hosted git repository. tloubrieu pushed a commit to branch SDAP-267 in repository https://gitbox.apache.org/repos/asf/incubator-sdap-ingester.git
commit 628f18172f7e99d3725e284ec44b4026d870d156 Author: thomas loubrieu <[email protected]> AuthorDate: Tue Aug 4 13:17:47 2020 -0700 add a on.update kopf event for crd updates --- config_operator/README.md | 10 ++++++- .../config_source/RemoteGitConfig.py | 4 +-- config_operator/config_operator/main.py | 35 +++++++++++++++++----- .../containers/k8s/config-operator-crd.yml | 2 +- .../containers/k8s/deployment-git-src.yml | 23 -------------- config_operator/containers/k8s/git-repo-test.yml | 4 +-- 6 files changed, 41 insertions(+), 37 deletions(-) diff --git a/config_operator/README.md b/config_operator/README.md index ba4c6fc..5f02804 100644 --- a/config_operator/README.md +++ b/config_operator/README.md @@ -28,7 +28,11 @@ To publish the docker image on dockerhub do (step necessary for kubernetes deplo docker push nexusjpl/config-operator:latest ## Kubernetes - + +Delete pre-existing operator definitions: + + kubectl delete deployment.apps/git-repo-config-operator -n sdap + Deploy the gitbasedconfig operator: kubectl apply -f containers/k8s/config-operator-crd.yml -n sdap @@ -45,6 +49,10 @@ Check that the configMap has been generated: kubectl get configmaps -n sdap +Test an update of the config operator configuration: + + kubectl set image gitbasedconfig/nginx-deployment nginx=nginx:1.16.1 --record + \ No newline at end of file diff --git a/config_operator/config_operator/config_source/RemoteGitConfig.py b/config_operator/config_operator/config_source/RemoteGitConfig.py index 38cbe2d..350fcfc 100644 --- a/config_operator/config_operator/config_source/RemoteGitConfig.py +++ b/config_operator/config_operator/config_source/RemoteGitConfig.py @@ -39,8 +39,8 @@ class RemoteGitConfig(LocalDirConfig): self._git_token = git_token if local_dir is None: local_dir = DEFAULT_LOCAL_REPO_DIR - self._update_every_seconds = update_every_seconds - super().__init__(local_dir, update_every_seconds=self._update_every_seconds) + super().__init__(local_dir, update_every_seconds=update_every_seconds) + if repo: self._repo = repo diff --git a/config_operator/config_operator/main.py b/config_operator/config_operator/main.py index fac6741..9980bc1 100644 --- a/config_operator/config_operator/main.py +++ b/config_operator/config_operator/main.py @@ -8,11 +8,7 @@ logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) [email protected]('sdap.apache.org', 'v1', 'gitbasedconfigs') -def create_fn(body, spec, **kwargs): - # Get info from Git Repo Config object - namespace = body['metadata']['namespace'] - +def create_config_synchronizer(spec, namespace): if 'git-url' not in spec.keys(): raise kopf.HandlerFatalError(f"git-url must be set.") if 'config-map' not in spec.keys(): @@ -23,22 +19,45 @@ def create_fn(body, spec, **kwargs): config_map = spec['config-map'] logger.info(f'config-map = {config_map}') - _kargs = {} + _kwargs = {} for k in {'git-branch', 'git-username', 'git-token', 'update-every-seconds'}: if k in spec: logger.info(f'{k} = {spec[k]}') - _kargs[k.replace('-', '_')] = spec[k] + _kwargs[k.replace('-', '_')] = spec[k] - config = RemoteGitConfig(git_url, **_kargs) + config = RemoteGitConfig(git_url, **_kwargs) config_map = K8sConfigMap(config_map, namespace, config) asyncio.run(config.when_updated(config_map.publish)) msg = f"configmap {config_map} created from git repo {git_url}" + + return msg + + [email protected]('sdap.apache.org', 'v1', 'gitbasedconfigs') +def create_fn(body, spec, **kwargs): + # Get info from Git Repo Config object + namespace = body['metadata']['namespace'] + + msg = create_config_synchronizer(spec, namespace) + + return {'message': msg} + + [email protected]('sdap.apache.org', 'v1', 'gitbasedconfigs') +def update_fn(spec, status, namespace, **kwargs): + logger.info(f'sdap config operator update') + + msg = create_config_synchronizer(spec, namespace) + + logger.info(f'sdap config operator update {msg}') + return {'message': msg} + @kopf.on.login() def login_fn(**kwargs): return kopf.login_via_client(**kwargs) diff --git a/config_operator/containers/k8s/config-operator-crd.yml b/config_operator/containers/k8s/config-operator-crd.yml index 9f6d2ad..2159c00 100644 --- a/config_operator/containers/k8s/config-operator-crd.yml +++ b/config_operator/containers/k8s/config-operator-crd.yml @@ -12,7 +12,7 @@ spec: names: plural: gitbasedconfigs singular: gitbasedconfig - kind: gitBasedConfig + kind: GitBasedConfig shortNames: - gitcfg validation: diff --git a/config_operator/containers/k8s/deployment-git-src.yml b/config_operator/containers/k8s/deployment-git-src.yml deleted file mode 100644 index 99b268d..0000000 --- a/config_operator/containers/k8s/deployment-git-src.yml +++ /dev/null @@ -1,23 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: config-operator - labels: - app: sdap-config-operator -spec: - replicas: 1 - selector: - matchLabels: - app: sdap-config-operator - template: - metadata: - labels: - app: sdap-config-operator - spec: - containers: - - name: sdap-config-operator - 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'] - - diff --git a/config_operator/containers/k8s/git-repo-test.yml b/config_operator/containers/k8s/git-repo-test.yml index 6a98454..79ad518 100644 --- a/config_operator/containers/k8s/git-repo-test.yml +++ b/config_operator/containers/k8s/git-repo-test.yml @@ -1,9 +1,9 @@ apiVersion: sdap.apache.org/v1 -kind: gitBasedConfig +kind: GitBasedConfig metadata: name: collections-config-gitcfg spec: git-url: https://github.com/tloubrieu-jpl/sdap-ingester-config.git - git-branch: master + git-branch: bigdata git-token: whatever config-map: my-configmap \ No newline at end of file
