diff --git a/src/main/python/ddadevops/application.py b/src/main/python/ddadevops/application.py index 6853720..d39bdd8 100644 --- a/src/main/python/ddadevops/application.py +++ b/src/main/python/ddadevops/application.py @@ -53,19 +53,19 @@ class DockerBuildService(): self.docker_api.test(build.name(), build.build_path()) class C4kBuildService(): - def write_c4k_config(self, build: C4kBuild): - fqdn = self.get('fqdn') - build.c4k_mixin_config.update({'fqdn': fqdn}) - with open(self.build_path() + '/out_c4k_config.yaml', 'w', encoding="utf-8") as output_file: - yaml.dump(self.c4k_mixin_config, output_file) - - def write_c4k_auth(self): - with open(self.build_path() + '/out_c4k_auth.yaml', 'w', encoding="utf-8") as output_file: - yaml.dump(self.c4k_mixin_auth, output_file) - chmod(self.build_path() + '/out_c4k_auth.yaml', 0o600) - - def c4k_apply(self, dry_run=False): - cmd = f'c4k-{self.c4k_module_name}-standalone.jar {self.build_path()}/out_c4k_config.yaml {self.build_path()}/out_c4k_auth.yaml > {self.build_path()}/out_{self.c4k_module_name}.yaml' + def write_c4k_config(self, c4k_build: C4kBuild): + with open(c4k_build.build.build_path() + '/out_c4k_config.yaml', 'w', encoding="utf-8") as output_file: + yaml.dump(c4k_build.c4k_mixin_config(), output_file) + + def write_c4k_auth(self, c4k_build: C4kBuild): + with open(c4k_build.build.build_path() + '/out_c4k_auth.yaml', 'w', encoding="utf-8") as output_file: + yaml.dump(c4k_build.c4k_mixin_auth, output_file) + chmod(c4k_build.build.build_path() + '/out_c4k_auth.yaml', 0o600) + + def c4k_apply(self, c4k_build: C4kBuild, ry_run=False): + module = c4k_build.build.module + build_path = c4k_build.build.build_path() + cmd = f'c4k-{module}-standalone.jar {build_path}/out_c4k_config.yaml {build_path}/out_c4k_auth.yaml > {build_path}/out_{module}.yaml' output = '' if dry_run: print(cmd) diff --git a/src/main/python/ddadevops/c4k_mixin.py b/src/main/python/ddadevops/c4k_mixin.py index 1ffee3e..c6e9471 100644 --- a/src/main/python/ddadevops/c4k_mixin.py +++ b/src/main/python/ddadevops/c4k_mixin.py @@ -1,8 +1,5 @@ -from os import chmod -import yaml from .domain import C4kBuild from .application import C4kBuildService -from .python_util import execute from .devops_build import DevopsBuild from .credential import gopass_field_from_path, gopass_password_from_path @@ -12,7 +9,6 @@ def add_c4k_mixin_config(config, grafana_cloud_user=None, grafana_cloud_password=None, grafana_cloud_url='https://prometheus-prod-01-eu-west-0.grafana.net/api/prom/push'): - # TODO: Thats meissa specific, we've to move this out if not grafana_cloud_user: grafana_cloud_user = gopass_field_from_path( 'server/meissa/grafana-cloud', 'grafana-cloud-user') @@ -33,34 +29,14 @@ def add_c4k_mixin_config(config, class C4kMixin(DevopsBuild): def __init__(self, project, config): - self.build = C4kBuild(project, config) + self.build = C4kBuild(project, config)(project, config) self.c4k_build_service = C4kBuildService() - self.c4k_mixin_config = config['C4kMixin']['Config'] - self.c4k_mixin_auth = config['C4kMixin']['Auth'] - self.c4k_module_name = config['C4kMixin']['Name'] - tmp = self.c4k_mixin_config['mon-cfg'] - tmp.update({'cluster-name': self.c4k_module_name, - 'cluster-stage': self.stage}) - self.c4k_mixin_config.update({'mon-cfg': tmp}) - def write_c4k_config(self): - fqdn = self.get('fqdn') - self.c4k_mixin_config.update({'fqdn': fqdn}) - with open(self.build_path() + '/out_c4k_config.yaml', 'w', encoding="utf-8") as output_file: - yaml.dump(self.c4k_mixin_config, output_file) + self.build_service.write_c4k_config(self.build) def write_c4k_auth(self): - with open(self.build_path() + '/out_c4k_auth.yaml', 'w', encoding="utf-8") as output_file: - yaml.dump(self.c4k_mixin_auth, output_file) - chmod(self.build_path() + '/out_c4k_auth.yaml', 0o600) + self.build_service.write_c4k_auth(self.build) def c4k_apply(self, dry_run=False): - cmd = f'c4k-{self.c4k_module_name}-standalone.jar {self.build_path()}/out_c4k_config.yaml {self.build_path()}/out_c4k_auth.yaml > {self.build_path()}/out_{self.c4k_module_name}.yaml' - output = '' - if dry_run: - print(cmd) - else: - output = execute(cmd, True) - print(output) - return output + self.build_service.c4k_apply(self.build, dry_run) diff --git a/src/main/python/ddadevops/domain.py b/src/main/python/ddadevops/domain.py index 659c89d..684c999 100644 --- a/src/main/python/ddadevops/domain.py +++ b/src/main/python/ddadevops/domain.py @@ -33,6 +33,12 @@ class Build(Validateable): path = [self.project_root_path, self.build_dir_name, self.name(), self.module] return "/".join(filter_none(path)) + # TODO: these functions should be located at TerraformBuild later on. + def update_runtime_config(self, fqdn, ipv4, ipv6): + self.__put__('fqdn', fqdn) + self.__put__('ipv4', ipv4) + self.__put__('ipv6', ipv6) + def __put__(self, key, value): self.stack[key] = value @@ -70,3 +76,12 @@ class C4kBuild(Validateable): tmp = self.c4k_mixin_config["mon-cfg"] tmp.update({"cluster-name": self.build.module, "cluster-stage": self.build.stage}) self.c4k_mixin_config.update({"mon-cfg": tmp}) + + def update_runtime_config(self, fqdn, ipv4, ipv6): + self.build.update_runtime_config(fqdn, ipv4, ipv6) + + def config(self): + fqdn = self.build.__get__('fqdn') + self.c4k_mixin_config.update({'fqdn': fqdn}) + return self.c4k_mixin_config + diff --git a/src/test/python/test_domain.py b/src/test/python/test_domain.py index d2b8bff..371b69c 100644 --- a/src/test/python/test_domain.py +++ b/src/test/python/test_domain.py @@ -63,15 +63,17 @@ def test_c4k_build_should_update_fqdn(tmp_path): grafana_cloud_password="password", ) sut = C4kBuild(project, project_config) + sut.update_runtime_config('test.de', None, None) assert { "issuer": "staging", + 'fqdn': 'test.de', "mon-cfg": { "cluster-name": "module", "cluster-stage": "test", "grafana-cloud-url": "https://prometheus-prod-01-eu-west-0.grafana.net/api/prom/push", }, - } == sut.c4k_mixin_config + } == sut.config() assert {'jicofo-auth-password': 'pw2', 'jicofo-component-secret': 'pw3', 'jvb-auth-password': 'pw1',