From e69f96b20e24f65cc98ab1568fd96cd21fa7527c Mon Sep 17 00:00:00 2001 From: Katarina Zailac Date: Thu, 22 Aug 2024 15:38:49 +0200 Subject: [PATCH 01/20] Set single subscription for all checks --- modules/generator.py | 34 +-- tests/test_generator.py | 663 +++++++--------------------------------- 2 files changed, 110 insertions(+), 587 deletions(-) diff --git a/modules/generator.py b/modules/generator.py index b854a3f..132582c 100644 --- a/modules/generator.py +++ b/modules/generator.py @@ -11,7 +11,7 @@ "TRUSTSTORE": "/etc/sensu/certs/truststore.ts" } -INTERNAL_METRICS_SUBSCRIPTION = "internals" +SUBSCRIPTIONS = ["internals"] HARD_STATE_PIPELINE = { "name": "hard_state", @@ -60,11 +60,10 @@ class ConfigurationGenerator: def __init__( self, metrics, metric_profiles, topology, profiles, attributes, secrets_file, default_ports, tenant, - skipped_metrics=None, subscription="hostname" + skipped_metrics=None ): self.logger = logging.getLogger("argo-scg.generator") self.tenant = tenant - self.subscription = subscription self.metric_profiles = [ p for p in metric_profiles if p["name"] in profiles ] @@ -89,7 +88,7 @@ def __init__( self.servicesite_name_var = "$_SERVICESITE_NAME$" self.servicevo_fqan_var = "$_SERVICEVO_FQAN$" - self.internal_metrics_subscription = INTERNAL_METRICS_SUBSCRIPTION + self.internal_metrics_subscription = SUBSCRIPTIONS metrics_list = list() internal_metrics = list() @@ -394,10 +393,7 @@ def _get_metrics4servicetypes(self): return metrics def _get_hostname(self, item): - if self.subscription == "hostname_with_id": - return item["hostname"] - - elif "hostname" in item["tags"]: + if "hostname" in item["tags"]: return item["tags"]["hostname"] else: @@ -691,18 +687,6 @@ def _create_servicevo_fqan_value(self, value): def _is_passive(configuration): return "PASSIVE" in configuration["flags"] - def _generate_metric_subscriptions(self, name): - if self.subscription == "servicetype": - subscriptions = self._get_servicetypes4metrics()[name] - - elif self.subscription == "entity": - subscriptions = self._get_entities4metrics()[name] - - else: - subscriptions = self._get_hostnames4metrics()[name] - - return sorted(subscriptions) - def _generate_active_check( self, name, configuration, publish, namespace="default" ): @@ -796,7 +780,7 @@ def _generate_active_check( check = { "command": command.strip(), - "subscriptions": self._generate_metric_subscriptions(name), + "subscriptions": SUBSCRIPTIONS, "handlers": [], "interval": int(configuration["config"]["interval"]) * 60, "timeout": 900, @@ -854,11 +838,6 @@ def _generate_active_check( } }) - if "NOPUBLISH" in configuration["flags"]: - subscriptions = check["subscriptions"] - subscriptions.append(self.internal_metrics_subscription) - check.update({"subscriptions": subscriptions}) - return check except KeyError as e: @@ -885,8 +864,7 @@ def generate_checks(self, publish, namespace="default"): ] check = { "command": "PASSIVE", - "subscriptions": - self._generate_metric_subscriptions(name), + "subscriptions": SUBSCRIPTIONS, "handlers": [], "pipelines": [HARD_STATE_PIPELINE], "cron": "CRON_TZ=Europe/Zagreb 0 0 31 2 *", diff --git a/tests/test_generator.py b/tests/test_generator.py index 712c730..8981c16 100644 --- a/tests/test_generator.py +++ b/tests/test_generator.py @@ -4268,110 +4268,7 @@ def test_generate_checks_configuration(self): "NGI?accept=csv " "--ssl --onredirect follow", "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" - ], - "handlers": [], - "pipelines": [ - { - "name": "hard_state", - "type": "Pipeline", - "api_version": "core/v2" - } - ], - "proxy_requests": { - "entity_attributes": [ - "entity.entity_class == 'proxy'", - "entity.labels.generic_http_ar_argoui_ni4os == " - "'generic.http.ar-argoui-ni4os'" - ] - }, - "interval": 300, - "timeout": 900, - "publish": True, - "metadata": { - "name": "generic.http.ar-argoui-ni4os", - "namespace": "mockspace", - "annotations": { - "attempts": "3" - }, - "labels": { - "tenants": "MOCK_TENANT" - } - }, - "round_robin": False - }, - { - "command": "/usr/lib64/nagios/plugins/check_tcp " - "-H {{ .labels.hostname }} -t 120 -p 443", - "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" - ], - "handlers": [], - "pipelines": [ - { - "name": "hard_state", - "type": "Pipeline", - "api_version": "core/v2" - } - ], - "proxy_requests": { - "entity_attributes": [ - "entity.entity_class == 'proxy'", - "entity.labels.generic_tcp_connect == " - "'generic.tcp.connect'" - ] - }, - "interval": 300, - "timeout": 900, - "publish": True, - "metadata": { - "name": "generic.tcp.connect", - "namespace": "mockspace", - "annotations": { - "attempts": "3" - }, - "labels": { - "tenants": "MOCK_TENANT" - } - }, - "round_robin": False - } - ] - ) - self.assertEqual(log.output, DUMMY_LOG) - - def test_generate_checks_configuration_with_servicetype_subscriptions(self): - generator = ConfigurationGenerator( - metrics=mock_metrics, - profiles=["ARGO_TEST1"], - metric_profiles=mock_metric_profiles, - topology=mock_topology, - attributes=mock_attributes, - secrets_file="", - default_ports=mock_default_ports, - tenant="MOCK_TENANT", - subscription="servicetype" - ) - with self.assertLogs(LOGNAME) as log: - _log_dummy() - checks = generator.generate_checks( - publish=True, namespace="mockspace" - ) - self.assertEqual( - sorted(checks, key=lambda k: k["metadata"]["name"]), - [ - { - "command": "/usr/lib64/nagios/plugins/check_http " - "-H {{ .labels.hostname }} -t 30 " - "-r argo.eu " - "-u /ni4os/report-ar/Critical/" - "NGI?accept=csv " - "--ssl --onredirect follow", - "subscriptions": [ - "argo.test", - "argo.webui" + "internals" ], "handlers": [], "pipelines": [ @@ -4407,7 +4304,7 @@ def test_generate_checks_configuration_with_servicetype_subscriptions(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "argo.webui" + "internals" ], "handlers": [], "pipelines": [ @@ -4465,8 +4362,7 @@ def test_generate_checks_configuration_with_faulty_metrics(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" + "internals" ], "handlers": [], "pipelines": [ @@ -4534,8 +4430,7 @@ def test_generate_checks_configuration_for_default_tenant(self): "NGI?accept=csv " "--ssl --onredirect follow", "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" + "internals" ], "handlers": [], "interval": 300, @@ -4564,8 +4459,7 @@ def test_generate_checks_configuration_for_default_tenant(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" + "internals" ], "handlers": [], "interval": 300, @@ -4621,8 +4515,7 @@ def test_generate_checks_configuration_without_publish(self): "NGI?accept=csv " "--ssl --onredirect follow", "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" + "internals" ], "handlers": [], "proxy_requests": { @@ -4658,8 +4551,7 @@ def test_generate_checks_configuration_without_publish(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" + "internals" ], "handlers": [], "proxy_requests": { @@ -4722,8 +4614,7 @@ def test_generate_check_configuration_with_hardcoded_attributes(self): "-C /etc/sensu/certs/hostcert.pem " "-K /etc/sensu/certs/hostkey.pem -p 2119", "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" + "internals" ], "handlers": [], "proxy_requests": { @@ -4765,8 +4656,7 @@ def test_generate_check_configuration_with_hardcoded_attributes(self): "-C /etc/sensu/certs/hostcert.pem " "-K /etc/sensu/certs/hostkey.pem", "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" + "internals" ], "handlers": [], "proxy_requests": { @@ -4802,7 +4692,7 @@ def test_generate_check_configuration_with_hardcoded_attributes(self): "command": "/usr/lib64/nagios/plugins/check_ftp " "-H {{ .labels.hostname }} -t 60 -p 2811", "subscriptions": [ - "argo.ni4os.eu" + "internals" ], "handlers": [], "proxy_requests": { @@ -4839,8 +4729,6 @@ def test_generate_check_configuration_with_hardcoded_attributes(self): "CertLifetime-probe -t 60 " "-f /etc/sensu/certs/hostcert.pem", "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu", "internals" ], "handlers": [], @@ -4897,8 +4785,7 @@ def test_generate_check_configuration_with_robot_cert_key(self): "-C /etc/nagios/robot/robot.pem " "-K /etc/nagios/robot/robot.key -p 2119", "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" + "internals" ], "handlers": [], "proxy_requests": { @@ -4940,8 +4827,7 @@ def test_generate_check_configuration_with_robot_cert_key(self): "-C /etc/nagios/robot/robot.pem " "-K /etc/nagios/robot/robot.key", "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" + "internals" ], "handlers": [], "proxy_requests": { @@ -4978,8 +4864,6 @@ def test_generate_check_configuration_with_robot_cert_key(self): "CertLifetime-probe -t 60 " "-f /etc/nagios/certs/hostcert.pem", "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu", "internals" ], "handlers": [], @@ -5038,8 +4922,7 @@ def test_generate_check_configuration_with_SSL(self): "{{ .labels.generic_http_connect_path | " "default \" \" }}", "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" + "internals" ], "handlers": [], "proxy_requests": { @@ -5101,8 +4984,7 @@ def test_generate_check_configuration_with_various_URLs(self): "-u {{ .labels.webdav_url }} " "-E /etc/sensu/certs/userproxy.pem", "subscriptions": [ - "eosatlas.cern.ch", - "hostname.cern.ch" + "internals" ], "handlers": [], "pipelines": [ @@ -5141,7 +5023,7 @@ def test_generate_check_configuration_with_various_URLs(self): "-u {{ .labels.endpoint_url }} " "-E /etc/sensu/certs/userproxy.pem", "subscriptions": [ - "dynafed.hostname.ca" + "internals" ], "handlers": [], "pipelines": [ @@ -5179,7 +5061,7 @@ def test_generate_check_configuration_with_various_URLs(self): "--url {{ .labels.info_url }} " "--token /etc/sensu/certs/oidc", "subscriptions": [ - "grycap.upv.es" + "internals" ], "handlers": [], "pipelines": [ @@ -5240,11 +5122,7 @@ def test_generate_check_configuration_with_BDII(self): "-w 20:1 -b {{ .labels.bdii_dn }} " "-p 2170", "subscriptions": [ - "bdii1.test.com", - "grid-giis1.desy.de", - "kser.arnes.si", - "sbdii.test.com", - "sitebdii.iihe.ac.be" + "internals" ], "handlers": [], "pipelines": [ @@ -5283,10 +5161,7 @@ def test_generate_check_configuration_with_BDII(self): "-f {{ .labels.org_nagios_glue2_check_f }} " "-b {{ .labels.glue2_bdii_dn }} -p 2170", "subscriptions": [ - "grid-giis1.desy.de", - "kser.arnes.si", - "sbdii.test.com", - "sitebdii.iihe.ac.be" + "internals" ], "handlers": [], "pipelines": [ @@ -5348,9 +5223,7 @@ def test_generate_check_configuration_with_mandatory_extensions(self): "-H {{ .labels.hostname }} -t 120 " "--endpoint-name {{ .labels.endpoint_name }}", "subscriptions": [ - "dns1.cloud.test.eu", - "dns2.cloud.test.eu", - "dns3.cloud.test.eu" + "internals" ], "handlers": [], "pipelines": [ @@ -5419,8 +5292,7 @@ def test_generate_check_configuration_with_optional_extensions(self): "{{ .labels.memory_limit__arc_ce_memory_limit " "| default \"\" }}", "subscriptions": [ - "alien.spacescience.ro", - "gridarcce01.mesocentre.uca.fr" + "internals" ], "handlers": [], "pipelines": [ @@ -5467,8 +5339,7 @@ def test_generate_check_configuration_with_optional_extensions(self): "{{ .labels.memory_limit__arc_ce_memory_limit " "| default \"\" }}", "subscriptions": [ - "alien.spacescience.ro", - "gridarcce01.mesocentre.uca.fr" + "internals" ], "handlers": [], "pipelines": [ @@ -5528,8 +5399,7 @@ def test_generate_check_configuration_with_different_parameter_exts(self): "-H {{ .labels.hostname }} -t 30 -f \"follow\" " "{{ .labels.u__rm_path | default \"\" }}", "subscriptions": [ - "185.229.108.85", - "hnodc-dm.ath.hcmr.gr" + "internals" ], "handlers": [], "pipelines": [ @@ -5569,8 +5439,7 @@ def test_generate_check_configuration_with_different_parameter_exts(self): "-H {{ .labels.hostname }} -t 30 " "{{ .labels.r__rm_path | default \"\" }}", "subscriptions": [ - "185.229.108.85", - "hnodc-dm.ath.hcmr.gr" + "internals" ], "handlers": [], "pipelines": [ @@ -5634,8 +5503,7 @@ def test_generate_openstack_check_configuration(self): "cloudinfo.py -t 300 " "--endpoint {{ .labels.os_keystone_url }}", "subscriptions": [ - "cloud-api-pub.cr.cnaf.infn.it", - "egi-cloud.pd.infn.it" + "internals" ], "handlers": [], "pipelines": [ @@ -5673,7 +5541,7 @@ def test_generate_openstack_check_configuration(self): "--endpoint {{ .labels.os_keystone_url }} " "--access-token /etc/sensu/certs/oidc", "subscriptions": [ - "identity.cloud.muni.cz" + "internals" ], "handlers": [], "pipelines": [ @@ -5714,8 +5582,7 @@ def test_generate_openstack_check_configuration(self): "--cert /etc/sensu/certs/userproxy.pem " "{{ .labels.region__os_region | default \"\" }}", "subscriptions": [ - "cloud-api-pub.cr.cnaf.infn.it", - "egi-cloud.pd.infn.it" + "internals" ], "handlers": [], "pipelines": [ @@ -5753,8 +5620,7 @@ def test_generate_openstack_check_configuration(self): "default \"443\" }} " "-H {{ .labels.os_keystone_host }}", "subscriptions": [ - "cloud-api-pub.cr.cnaf.infn.it", - "egi-cloud.pd.infn.it" + "internals" ], "handlers": [], "pipelines": [ @@ -5817,8 +5683,7 @@ def test_generate_pakiti_check_configuration(self): "--key /etc/sensu/certs/hostkey.pem " "--site {{ .labels.site }}", "subscriptions": [ - "alien.spacescience.ro", - "gridarcce01.mesocentre.uca.fr" + "internals" ], "handlers": [], "pipelines": [ @@ -5883,9 +5748,7 @@ def test_generate_check_configuration_with_SITE_BDII(self): "default \"\" }} " "{{ .labels.endpoint__surl | default \"\" }}", "subscriptions": [ - "dcache-se-cms.desy.de", - "dcache.arnes.si", - "dcache6-shadow.iihe.ac.be" + "internals" ], "handlers": [], "pipelines": [ @@ -5961,9 +5824,7 @@ def test_generate_check_configuration_with_servicevo_without_voname(self): "default \"\" }} " "{{ .labels.endpoint__surl | default \"\" }}", "subscriptions": [ - "dcache-se-cms.desy.de", - "dcache.arnes.si", - "dcache6-shadow.iihe.ac.be" + "internals" ], "handlers": [], "pipelines": [ @@ -6033,8 +5894,7 @@ def test_generate_check_configuration_with_ARC_GOOD_SES(self): "{{ .labels.memory_limit__arc_ce_memory_limit " "| default \"\" }}", "subscriptions": [ - "alien.spacescience.ro", - "gridarcce01.mesocentre.uca.fr" + "internals" ], "handlers": [], "pipelines": [ @@ -6096,7 +5956,7 @@ def test_generate_check_configuration_with_HOSTDN(self): "-n {{ .labels.info_hostdn }} " "-x /etc/sensu/certs/userproxy.pem", "subscriptions": [ - "qcg-broker.man.poznan.pl" + "internals" ], "handlers": [], "pipelines": [ @@ -6160,7 +6020,7 @@ def test_generate_check_configuration_with_local_topology(self): "-C /etc/sensu/certs/hostcert.pem " "-K /etc/sensu/certs/hostkey.pem", "subscriptions": [ - "argo-mon2.ni4os.eu" + "internals" ], "handlers": [], "pipelines": [ @@ -6222,7 +6082,7 @@ def test_generate_check_configuration_with_secrets(self): "checkhealth -H {{ .labels.hostname }} -v -i " "-u $AGORA_USERNAME -p $AGORA_PASSWORD", "subscriptions": [ - "eosc.agora.grnet.gr" + "internals" ], "handlers": [], "pipelines": [ @@ -6286,7 +6146,7 @@ def test_generate_check_configuration_with_secrets_with_dots(self): "Cloud Critical-Fedcloud Fedcloud NGIHRTest " "--day 1 --token $ARGO_API_TOKEN", "subscriptions": [ - "api.argo.grnet.gr" + "internals" ], "handlers": [], "pipelines": [ @@ -6345,7 +6205,7 @@ def test_generate_check_configuration_if_NOPUBLISH(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "argo.ni4os.eu" + "internals" ], "handlers": [], "pipelines": [ @@ -6385,7 +6245,6 @@ def test_generate_check_configuration_if_NOPUBLISH(self): "--how-invoked nagios --user-proxy " "/etc/sensu/certs/userproxy.pem", "subscriptions": [ - "argo.ni4os.eu", "internals" ], "handlers": [], @@ -6470,7 +6329,7 @@ def test_generate_check_configuration_with_metric_parameter_override(self): "--ok-search {{ .labels.argo_apel_pub_ok_search " "| default \"OK\" }} --case-sensitive", "subscriptions": [ - "argo.ni4os.eu" + "internals" ], "handlers": [], "pipelines": [ @@ -6507,7 +6366,7 @@ def test_generate_check_configuration_with_metric_parameter_override(self): "{{ .labels.generic_ssh_test_port | " "default \" \" }}", "subscriptions": [ - "argo.ni4os.eu" + "internals" ], "handlers": [], "pipelines": [ @@ -6545,8 +6404,7 @@ def test_generate_check_configuration_with_metric_parameter_override(self): "-p {{ .labels.generic_tcp_connect_p | " "default \"443\" }}", "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" + "internals" ], "handlers": [], "pipelines": [ @@ -6634,8 +6492,7 @@ def test_generate_check_configuration_with_host_attribute_override(self): "--password " "{{ .labels.nagios_freshness_password }}", "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" + "internals" ], "handlers": [], "pipelines": [ @@ -6672,7 +6529,7 @@ def test_generate_check_configuration_with_host_attribute_override(self): "check_handle_resolution.pl -t 10 " "--prefix {{ .labels.b2handle_prefix }}", "subscriptions": [ - "b2handle3.test.com" + "internals" ], "handlers": [], "pipelines": [ @@ -6709,7 +6566,7 @@ def test_generate_check_configuration_with_host_attribute_override(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "argo.ni4os.eu" + "internals" ], "handlers": [], "pipelines": [ @@ -6800,8 +6657,7 @@ def test_generate_check_configuration_with_host_attribute_override_global( "--password " "{{ .labels.nagios_freshness_password }}", "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" + "internals" ], "handlers": [], "pipelines": [ @@ -6839,7 +6695,7 @@ def test_generate_check_configuration_with_host_attribute_override_global( "--prefix {{ .labels.b2handle_prefix | " "default \"234.234\" }}", "subscriptions": [ - "b2handle3.test.com" + "internals" ], "handlers": [], "pipelines": [ @@ -6876,7 +6732,7 @@ def test_generate_check_configuration_with_host_attribute_override_global( "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "argo.ni4os.eu" + "internals" ], "handlers": [], "pipelines": [ @@ -6958,7 +6814,7 @@ def test_generate_check_configuration_with_overridden_secrets_with_dots( "Cloud Critical-Fedcloud Fedcloud NGIHRTest " "--day 1 --token {{ .labels.argo_api_token }}", "subscriptions": [ - "api.argo.grnet.gr" + "internals" ], "handlers": [], "pipelines": [ @@ -7021,7 +6877,6 @@ def test_generate_check_configuration_if_internal_metric(self): "'w:alarms+g:published180' -c 1 -q " "'w:metricsdevel+g:published180' -c 4000", "subscriptions": [ - "argo.ni4os.eu", "internals" ], "handlers": [], @@ -7051,7 +6906,7 @@ def test_generate_check_configuration_if_internal_metric(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "argo.ni4os.eu" + "internals" ], "handlers": [], "pipelines": [ @@ -7139,7 +6994,7 @@ def test_generate_check_if_attribute_ending_in_url_not_servicetype_url( "-u $EDUGAIN_USER -a $EDUGAIN_PASSWORD -s " "https://snf-666522.vm.okeanos.grnet.gr/ni4os-rp/auth.php", "subscriptions": [ - "aai.argo.eu" + "internals" ], "handlers": [], "interval": 900, @@ -7229,8 +7084,7 @@ def test_generate_check_if_attribute_ending_in_url_in_extension(self): "-u {{ .labels.webdav_url }} " "-E /etc/sensu/certs/userproxy.pem", "subscriptions": [ - "hostname.cern.ch", - "hostname2.cern.ch" + "internals" ], "handlers": [], "interval": 3600, @@ -7289,9 +7143,7 @@ def test_generate_check_if_hostname_in_tags(self): "{{ .labels.generic_http_connect_port | default \" \" }} " "{{ .labels.generic_http_connect_path | default \" \" }}", "subscriptions": [ - "hostname1.argo.com", - "hostname2.argo.eu", - "hostname3.argo.eu" + "internals" ], "handlers": [], "interval": 300, @@ -7348,8 +7200,7 @@ def test_warning_if_metric_is_missing(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" + "internals" ], "handlers": [], "pipelines": [ @@ -7434,9 +7285,7 @@ def test_generate_check_configuration_with_override_default_param(self): "{{ .labels.eosc_test_api_l }} " "-u {{ .labels.endpoint_url }}", "subscriptions": [ - "test.argo.grnet.gr", - "test2.argo.grnet.gr", - "test3.argo.grnet.gr" + "internals" ], "handlers": [], "pipelines": [ @@ -7496,7 +7345,7 @@ def test_generate_check_configuration_with_hostalias(self): "-f {{ .labels.eudat_b2handle_handle_api_crud_f " "}} --prefix 234.234", "subscriptions": [ - "b2handle.test.example.com" + "internals" ], "handlers": [], "pipelines": [ @@ -7572,7 +7421,7 @@ def test_generate_check_configuration_with_hostalias_overridden_param(self): "-f {{ .labels.eudat_b2handle_handle_api_crud_f " "}} --prefix 234.234", "subscriptions": [ - "b2handle.test.example.com" + "internals" ], "handlers": [], "pipelines": [ @@ -7648,8 +7497,7 @@ def test_generate_check_configuration_host_attr_override_default_some( " --prefix {{ .labels.b2handle_prefix | " "default \"234.234\" }}", "subscriptions": [ - "b2handle.test.com", - "b2handle3.test.com" + "internals" ], "handlers": [], "pipelines": [ @@ -7709,8 +7557,7 @@ def test_generate_check_configuration_with_url_no_url(self): "check_gitlab_liveness.sh -t 10 " "--url {{ .labels.endpoint_url }}", "subscriptions": [ - "gitlab.test.com", - "gitlab2.test.com" + "internals" ], "handlers": [], "pipelines": [ @@ -7746,8 +7593,7 @@ def test_generate_check_configuration_with_url_no_url(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "gitlab.test.com", - "gitlab2.test.com" + "internals" ], "handlers": [], "pipelines": [ @@ -7828,8 +7674,7 @@ def test_generate_check_configuration_with_url_url_param_overrides_all( "check_gitlab_liveness.sh -t 10 " "{{ .labels.eudat_gitlab_liveness_url }}", "subscriptions": [ - "gitlab.test.com", - "gitlab2.test.com" + "internals" ], "handlers": [], "pipelines": [ @@ -7865,8 +7710,7 @@ def test_generate_check_configuration_with_url_url_param_overrides_all( "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "gitlab.test.com", - "gitlab2.test.com" + "internals" ], "handlers": [], "pipelines": [ @@ -7941,8 +7785,7 @@ def test_generate_check_configuration_with_url_url_param_overrides_some( "check_gitlab_liveness.sh -t 10 " "{{ .labels.eudat_gitlab_liveness_url }}", "subscriptions": [ - "gitlab.test.com", - "gitlab2.test.com" + "internals" ], "handlers": [], "pipelines": [ @@ -7978,8 +7821,7 @@ def test_generate_check_configuration_with_url_url_param_overrides_some( "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "gitlab.test.com", - "gitlab2.test.com" + "internals" ], "handlers": [], "pipelines": [ @@ -8056,8 +7898,7 @@ def test_generate_check_configuration_with_url_url_attr_overrides_all( "check_gitlab_liveness.sh -t 10 " "--url {{ .labels.endpoint_url }}", "subscriptions": [ - "gitlab.test.com", - "gitlab2.test.com" + "internals" ], "handlers": [], "pipelines": [ @@ -8093,8 +7934,7 @@ def test_generate_check_configuration_with_url_url_attr_overrides_all( "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "gitlab.test.com", - "gitlab2.test.com" + "internals" ], "handlers": [], "pipelines": [ @@ -8167,8 +8007,7 @@ def test_generate_check_configuration_with_url_url_attr_overrides_some( "check_gitlab_liveness.sh -t 10 " "--url {{ .labels.endpoint_url }}", "subscriptions": [ - "gitlab.test.com", - "gitlab2.test.com" + "internals" ], "handlers": [], "pipelines": [ @@ -8204,8 +8043,7 @@ def test_generate_check_configuration_with_url_url_attr_overrides_some( "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "gitlab.test.com", - "gitlab2.test.com" + "internals" ], "handlers": [], "pipelines": [ @@ -8266,8 +8104,7 @@ def test_generate_check_configuration_default_port_override_by_ext_some( "-H {{ .labels.hostname }} -t 60 " "-p {{ .labels.ssh_port | default \"22\" }}", "subscriptions": [ - "hpc.resource.ni4os.eu", - "teran.srce.hr" + "internals" ], "handlers": [], "pipelines": [ @@ -8327,8 +8164,7 @@ def test_generate_check_configuration_default_port_override_by_ext_none( "command": "/usr/lib64/nagios/plugins/check_ssh " "-H {{ .labels.hostname }} -t 60 -p 22", "subscriptions": [ - "hpc.resource.ni4os.eu", - "teran.srce.hr" + "internals" ], "handlers": [], "pipelines": [ @@ -8398,8 +8234,7 @@ def test_generate_check_configuration_default_port_override_by_global_attr( "command": "/usr/lib64/nagios/plugins/check_ssh " "-H {{ .labels.hostname }} -t 60 -p 1022", "subscriptions": [ - "hpc.resource.ni4os.eu", - "teran.srce.hr" + "internals" ], "handlers": [], "pipelines": [ @@ -8471,8 +8306,7 @@ def test_generate_check_configuration_default_port_override_by_host_attr( "-H {{ .labels.hostname }} -t 60 " "-p {{ .labels.ssh_port | default \"22\" }}", "subscriptions": [ - "hpc.resource.ni4os.eu", - "teran.srce.hr" + "internals" ], "handlers": [], "pipelines": [ @@ -8567,7 +8401,6 @@ def test_generate_check_configuration_with_attributes_not_defined_anywhere( "--robot-key /etc/nagios/robot/robot.key " "-x /etc/sensu/certs/userproxy.pem", "subscriptions": [ - "some.host.name", "internals" ], "handlers": [], @@ -8598,7 +8431,6 @@ def test_generate_check_configuration_with_attributes_not_defined_anywhere( "GridProxy-probe -t 30 --vo test " "-x /etc/sensu/certs/userproxy.pem", "subscriptions": [ - "some.host.name", "internals" ], "handlers": [], @@ -8654,8 +8486,7 @@ def test_generate_check_configuration_with_servicesite_name(self): "--warning-search WARN --critical-search ERROR " "--ok-search OK --case-sensitive", "subscriptions": [ - "apel.grid1.example.com", - "apel.grid2.example.com" + "internals" ], "handlers": [], "pipelines": [ @@ -8694,8 +8525,7 @@ def test_generate_check_configuration_with_servicesite_name(self): "--warning-search WARN --critical-search ERROR " "--ok-search OK --case-sensitive", "subscriptions": [ - "apel.grid1.example.com", - "apel.grid2.example.com" + "internals" ], "handlers": [], "pipelines": [ @@ -8772,8 +8602,7 @@ def test_generate_check_configuration_with_servicesite_name_with_override( "--warning-search WARN --critical-search ERROR " "--ok-search OK --case-sensitive", "subscriptions": [ - "apel.grid1.example.com", - "apel.grid2.example.com" + "internals" ], "handlers": [], "pipelines": [ @@ -8812,8 +8641,7 @@ def test_generate_check_configuration_with_servicesite_name_with_override( "--warning-search WARN --critical-search ERROR " "--ok-search OK --case-sensitive", "subscriptions": [ - "apel.grid1.example.com", - "apel.grid2.example.com" + "internals" ], "handlers": [], "pipelines": [ @@ -8876,10 +8704,7 @@ def test_generate_http_check_configuration_if_no_URL(self): "-C /etc/sensu/certs/hostcert.pem " "-K /etc/sensu/certs/hostkey.pem", "subscriptions": [ - "appdb.egi.eu", - "bioinformatics.cing.ac.cy", - "eewrc-las.cyi.ac.cy", - "sampaeos.if.usp.br" + "internals" ], "handlers": [], "pipelines": [ @@ -8922,10 +8747,7 @@ def test_generate_http_check_configuration_if_no_URL(self): "{{ .labels.generic_http_connect_path | " "default \" \" }}", "subscriptions": [ - "appdb.egi.eu", - "bioinformatics.cing.ac.cy", - "eewrc-las.cyi.ac.cy", - "sampaeos.if.usp.br" + "internals" ], "handlers": [], "pipelines": [ @@ -8989,8 +8811,7 @@ def test_generate_check_configuration_if_attribute_with_dashes(self): "{{ .labels.cvmfs_stratum_1_port | " "default \"8000\" }}", "subscriptions": [ - "cclssts1.in2p3.fr", - "cvmfs-stratum-one.cc.kek.jp" + "internals" ], "handlers": [], "pipelines": [ @@ -9054,9 +8875,7 @@ def test_generate_passive_check_configuration(self): "default \"\" }} " "{{ .labels.endpoint__surl | default \"\" }}", "subscriptions": [ - "dcache-se-cms.desy.de", - "dcache.arnes.si", - "dcache6-shadow.iihe.ac.be" + "internals" ], "handlers": [], "pipelines": [ @@ -9091,9 +8910,7 @@ def test_generate_passive_check_configuration(self): { "command": "PASSIVE", "subscriptions": [ - "dcache-se-cms.desy.de", - "dcache.arnes.si", - "dcache6-shadow.iihe.ac.be" + "internals" ], "handlers": [], "pipelines": [ @@ -9121,9 +8938,7 @@ def test_generate_passive_check_configuration(self): { "command": "PASSIVE", "subscriptions": [ - "dcache-se-cms.desy.de", - "dcache.arnes.si", - "dcache6-shadow.iihe.ac.be" + "internals" ], "handlers": [], "pipelines": [ @@ -9177,8 +8992,7 @@ def test_generate_passive_check_configuration_if_parent_missing(self): "--warning-search WARN --critical-search ERROR " "--ok-search OK --case-sensitive", "subscriptions": [ - "apel.grid1.example.com", - "apel.grid2.example.com" + "internals" ], "handlers": [], "pipelines": [ @@ -9217,8 +9031,7 @@ def test_generate_passive_check_configuration_if_parent_missing(self): "--warning-search WARN --critical-search ERROR " "--ok-search OK --case-sensitive", "subscriptions": [ - "apel.grid1.example.com", - "apel.grid2.example.com" + "internals" ], "handlers": [], "pipelines": [ @@ -9284,9 +9097,7 @@ def test_generate_check_configuration_if_info_bdii_tag(self): "-K /etc/sensu/certs/hostkey.pem " "-p {{ .labels.srm2_port | default \"8443\" }}", "subscriptions": [ - "dcache-se-cms.desy.de", - "dcache.arnes.si", - "dcache6-shadow.iihe.ac.be" + "internals" ], "handlers": [], "pipelines": [ @@ -9352,9 +9163,7 @@ def test_generate_check_configuration_if_info_bdii_and_info_ext_tag(self): "-K /etc/sensu/certs/hostkey.pem " "-p {{ .labels.srm2_port | default \"8443\" }}", "subscriptions": [ - "dcache-se-cms.desy.de", - "dcache.arnes.si", - "dcache6-shadow.iihe.ac.be" + "internals" ], "handlers": [], "pipelines": [ @@ -9418,9 +9227,7 @@ def test_generate_check_with_integer_attributes(self): "{{ .labels.skip_ls_dir__argo_xrootd_skip_ls_dir | " "default \"\" }}", "subscriptions": [ - "atlas.dcache.example.eu", - "castorpublic.cern.ch", - "xrootd.example.eu" + "internals" ], "handlers": [], "pipelines": [ @@ -9483,8 +9290,7 @@ def test_generate_check_with_xrootd_webdav_extension(self): "{{ .labels.skip_dir_test__argo_webdav_skip_dir_test " "| default \"\" }}", "subscriptions": [ - "eosatlas.cern.ch", - "hostname.cern.ch" + "internals" ], "handlers": [], "pipelines": [ @@ -9526,9 +9332,7 @@ def test_generate_check_with_xrootd_webdav_extension(self): "{{ .labels.skip_ls_dir__argo_xrootd_skip_ls_dir | " "default \"\" }}", "subscriptions": [ - "atlas.dcache.example.eu", - "castorpublic.cern.ch", - "xrootd.example.eu" + "internals" ], "handlers": [], "pipelines": [ @@ -9607,8 +9411,7 @@ def test_generate_check_with_xrootd_webdav_extension_with_override(self): "{{ .labels.skip_dir_test__argo_webdav_skip_dir_test " "| default \"\" }}", "subscriptions": [ - "eosatlas.cern.ch", - "hostname.cern.ch" + "internals" ], "handlers": [], "pipelines": [ @@ -9650,9 +9453,7 @@ def test_generate_check_with_xrootd_webdav_extension_with_override(self): "{{ .labels.skip_ls_dir__argo_xrootd_skip_ls_dir | " "default \"\" }}", "subscriptions": [ - "atlas.dcache.example.eu", - "castorpublic.cern.ch", - "xrootd.example.eu" + "internals" ], "handlers": [], "pipelines": [ @@ -9715,9 +9516,7 @@ def test_generate_check_with_duplicates_in_topology(self): "{{ .labels.skip_dir_test__argo_webdav_skip_dir_test " "| default \"\" }}", "subscriptions": [ - "eosatlas.cern.ch", - "webdav.test.de", - "xrootd.example.de" + "internals" ], "handlers": [], "pipelines": [ @@ -9753,258 +9552,6 @@ def test_generate_check_with_duplicates_in_topology(self): ) self.assertEqual(log.output, DUMMY_LOG) - def test_generate_check_with_hostname_with_id_subscription(self): - generator = ConfigurationGenerator( - metrics=mock_metrics, - profiles=["ARGO_TEST30"], - metric_profiles=mock_metric_profiles, - topology=mock_topology_with_hostname_in_tag, - attributes=mock_attributes, - secrets_file="", - default_ports=mock_default_ports, - tenant="MOCK_TENANT", - subscription="hostname_with_id" - ) - with self.assertLogs(LOGNAME) as log: - _log_dummy() - checks = generator.generate_checks( - publish=True, namespace="mockspace" - ) - self.assertEqual( - checks, [{ - "command": - "/usr/lib64/nagios/plugins/check_http " - "-H {{ .labels.hostname }} -t 60 --link " - "--onredirect follow {{ .labels.ssl | default \" \" }} " - "{{ .labels.generic_http_connect_port | default \" \" }} " - "{{ .labels.generic_http_connect_path | default \" \" }}", - "subscriptions": [ - "hostname1.argo.com_hostname1_id", - "hostname2.argo.eu_second.id", - "hostname3.argo.eu_test.id" - ], - "handlers": [], - "interval": 300, - "timeout": 900, - "publish": True, - "metadata": { - "name": "generic.http.connect", - "namespace": "mockspace", - "annotations": { - "attempts": "3" - }, - "labels": { - "tenants": "MOCK_TENANT" - } - }, - "round_robin": False, - "pipelines": [ - { - "name": "hard_state", - "type": "Pipeline", - "api_version": "core/v2" - } - ], - "proxy_requests": { - "entity_attributes": [ - "entity.entity_class == 'proxy'", - "entity.labels.generic_http_connect == " - "'generic.http.connect'" - ] - }, - }] - ) - self.assertEqual(log.output, DUMMY_LOG) - - def test_generate_check_with_servicetype_subscription(self): - generator = ConfigurationGenerator( - metrics=mock_metrics, - profiles=["ARGO_TEST1"], - metric_profiles=mock_metric_profiles, - topology=mock_topology, - attributes=mock_attributes, - secrets_file="", - default_ports=mock_default_ports, - tenant="MOCK_TENANT", - subscription="servicetype" - ) - with self.assertLogs(LOGNAME) as log: - _log_dummy() - checks = generator.generate_checks( - publish=True, namespace="mockspace" - ) - self.assertEqual( - sorted(checks, key=lambda k: k["metadata"]["name"]), [{ - "command": - "/usr/lib64/nagios/plugins/check_http " - "-H {{ .labels.hostname }} -t 30 -r argo.eu " - "-u /ni4os/report-ar/Critical/NGI?accept=csv --ssl " - "--onredirect follow", - "subscriptions": ["argo.test", "argo.webui"], - "handlers": [], - "interval": 300, - "timeout": 900, - "publish": True, - "metadata": { - "name": "generic.http.ar-argoui-ni4os", - "namespace": "mockspace", - "annotations": { - "attempts": "3" - }, - "labels": { - "tenants": "MOCK_TENANT" - } - }, - "round_robin": False, - "pipelines": [ - { - "name": "hard_state", - "type": "Pipeline", - "api_version": "core/v2" - } - ], - "proxy_requests": { - "entity_attributes": [ - "entity.entity_class == 'proxy'", - "entity.labels.generic_http_ar_argoui_ni4os == " - "'generic.http.ar-argoui-ni4os'" - ] - } - }, { - "command": "/usr/lib64/nagios/plugins/check_tcp " - "-H {{ .labels.hostname }} -t 120 -p 443", - "subscriptions": ["argo.webui"], - "handlers": [], - "interval": 300, - "timeout": 900, - "publish": True, - "metadata": { - "name": "generic.tcp.connect", - "namespace": "mockspace", - "annotations": { - "attempts": "3" - }, - "labels": { - "tenants": "MOCK_TENANT" - } - }, - "round_robin": False, - "pipelines": [ - { - "name": "hard_state", - "type": "Pipeline", - "api_version": "core/v2" - } - ], - "proxy_requests": { - "entity_attributes": [ - "entity.entity_class == 'proxy'", - "entity.labels.generic_tcp_connect == " - "'generic.tcp.connect'" - ] - } - }] - ) - self.assertEqual(log.output, DUMMY_LOG) - - def test_generate_check_with_entity_subscription(self): - generator = ConfigurationGenerator( - metrics=mock_metrics, - profiles=["ARGO_TEST1"], - metric_profiles=mock_metric_profiles, - topology=mock_topology, - attributes=mock_attributes, - secrets_file="", - default_ports=mock_default_ports, - tenant="MOCK_TENANT", - subscription="entity" - ) - with self.assertLogs(LOGNAME) as log: - _log_dummy() - checks = generator.generate_checks( - publish=True, namespace="mockspace" - ) - self.assertEqual( - sorted(checks, key=lambda k: k["metadata"]["name"]), [{ - "command": - "/usr/lib64/nagios/plugins/check_http " - "-H {{ .labels.hostname }} -t 30 -r argo.eu " - "-u /ni4os/report-ar/Critical/NGI?accept=csv --ssl " - "--onredirect follow", - "subscriptions": [ - "argo.test__argo.ni4os.eu", - "argo.webui__argo-devel.ni4os.eu", - "argo.webui__argo.ni4os.eu" - ], - "handlers": [], - "interval": 300, - "timeout": 900, - "publish": True, - "metadata": { - "name": "generic.http.ar-argoui-ni4os", - "namespace": "mockspace", - "annotations": { - "attempts": "3" - }, - "labels": { - "tenants": "MOCK_TENANT" - } - }, - "round_robin": False, - "pipelines": [ - { - "name": "hard_state", - "type": "Pipeline", - "api_version": "core/v2" - } - ], - "proxy_requests": { - "entity_attributes": [ - "entity.entity_class == 'proxy'", - "entity.labels.generic_http_ar_argoui_ni4os == " - "'generic.http.ar-argoui-ni4os'" - ] - } - }, { - "command": "/usr/lib64/nagios/plugins/check_tcp " - "-H {{ .labels.hostname }} -t 120 -p 443", - "subscriptions": [ - "argo.webui__argo-devel.ni4os.eu", - "argo.webui__argo.ni4os.eu" - ], - "handlers": [], - "interval": 300, - "timeout": 900, - "publish": True, - "metadata": { - "name": "generic.tcp.connect", - "namespace": "mockspace", - "annotations": { - "attempts": "3" - }, - "labels": { - "tenants": "MOCK_TENANT" - } - }, - "round_robin": False, - "pipelines": [ - { - "name": "hard_state", - "type": "Pipeline", - "api_version": "core/v2" - } - ], - "proxy_requests": { - "entity_attributes": [ - "entity.entity_class == 'proxy'", - "entity.labels.generic_tcp_connect == " - "'generic.tcp.connect'" - ] - } - }] - ) - self.assertEqual(log.output, DUMMY_LOG) - def test_generate_check_with_non_fallback_attribute_in_every_endpoint(self): generator = ConfigurationGenerator( metrics=mock_metrics, @@ -10031,7 +9578,9 @@ def test_generate_check_with_non_fallback_attribute_in_every_endpoint(self): "-X /etc/sensu/certs/userproxy.pem " "{{ .labels.skip_ls_dir__argo_xrootd_skip_ls_dir | " "default \"\" }}", - "subscriptions": ["xrootd01.readonly.eu"], + "subscriptions": [ + "internals" + ], "handlers": [], "interval": 3600, "timeout": 900, @@ -10110,7 +9659,9 @@ def test_generate_ARC_CE_check_with_set_VO_FQAN(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", - "subscriptions": ["argo.ni4os.eu"], + "subscriptions": [ + "internals" + ], "handlers": [], "interval": 300, "timeout": 900, @@ -10153,8 +9704,7 @@ def test_generate_ARC_CE_check_with_set_VO_FQAN(self): "{{ .labels.memory_limit__arc_ce_memory_limit " "| default \"\" }}", "subscriptions": [ - "alien.spacescience.ro", - "gridarcce01.mesocentre.uca.fr" + "internals" ], "handlers": [], "interval": 3600, @@ -10221,7 +9771,9 @@ def test_generate_ARC_CE_check_without_VONAME(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", - "subscriptions": ["argo.ni4os.eu"], + "subscriptions": [ + "internals" + ], "handlers": [], "interval": 300, "timeout": 900, @@ -10285,8 +9837,7 @@ def test_generate_check_configuration_if_skipped_metrics(self): "cloudinfo.py -t 300 " "--endpoint {{ .labels.os_keystone_url }}", "subscriptions": [ - "cloud-api-pub.cr.cnaf.infn.it", - "egi-cloud.pd.infn.it" + "internals" ], "handlers": [], "pipelines": [ @@ -10327,8 +9878,7 @@ def test_generate_check_configuration_if_skipped_metrics(self): "--cert /etc/sensu/certs/userproxy.pem " "{{ .labels.region__os_region | default \"\" }}", "subscriptions": [ - "cloud-api-pub.cr.cnaf.infn.it", - "egi-cloud.pd.infn.it" + "internals" ], "handlers": [], "pipelines": [ @@ -10389,8 +9939,7 @@ def test_generate_check_configuration_if_skipped_metric_missing(self): "cloudinfo.py -t 300 " "--endpoint {{ .labels.os_keystone_url }}", "subscriptions": [ - "cloud-api-pub.cr.cnaf.infn.it", - "egi-cloud.pd.infn.it" + "internals" ], "handlers": [], "pipelines": [ @@ -10428,7 +9977,7 @@ def test_generate_check_configuration_if_skipped_metric_missing(self): "--endpoint {{ .labels.os_keystone_url }} " "--access-token /etc/sensu/certs/oidc", "subscriptions": [ - "identity.cloud.muni.cz" + "internals" ], "handlers": [], "pipelines": [ @@ -10469,8 +10018,7 @@ def test_generate_check_configuration_if_skipped_metric_missing(self): "--cert /etc/sensu/certs/userproxy.pem " "{{ .labels.region__os_region | default \"\" }}", "subscriptions": [ - "cloud-api-pub.cr.cnaf.infn.it", - "egi-cloud.pd.infn.it" + "internals" ], "handlers": [], "pipelines": [ @@ -10533,7 +10081,6 @@ def test_generate_check_configuration_if_SILENCED_flag(self): "'w:alarms+g:published180' -c 1 -q " "'w:metricsdevel+g:published180' -c 4000", "subscriptions": [ - "argo-mon2.ni4os.eu", "internals" ], "handlers": [], @@ -10566,7 +10113,6 @@ def test_generate_check_configuration_if_SILENCED_flag(self): "--how-invoked nagios --voms test " "--user-proxy /etc/sensu/certs/userproxy.pem", "subscriptions": [ - "argo-mon2.ni4os.eu", "internals" ], "handlers": [], @@ -10594,7 +10140,6 @@ def test_generate_check_configuration_if_SILENCED_flag(self): "--how-invoked nagios --voms test " "--user-proxy /etc/sensu/certs/userproxy.pem", "subscriptions": [ - "argo-mon2.ni4os.eu", "internals" ], "handlers": [], From 9fd2a3e193b5c27ce4d4eb1b10409e04b27d4569 Mon Sep 17 00:00:00 2001 From: Katarina Zailac Date: Thu, 22 Aug 2024 15:51:49 +0200 Subject: [PATCH 02/20] Remove subscriptions entry from proxy entities since they are not using them --- modules/generator.py | 83 +-- tests/test_generator.py | 1231 ++++++--------------------------------- 2 files changed, 184 insertions(+), 1130 deletions(-) diff --git a/modules/generator.py b/modules/generator.py index 132582c..ac0e8b2 100644 --- a/modules/generator.py +++ b/modules/generator.py @@ -1369,26 +1369,13 @@ def generate_entities(self, namespace="default"): existing_entity["metadata"]["labels"] = new_labels else: - if self.subscription == "servicetype": - subscriptions = types - - elif self.subscription == "hostname_with_id": - subscriptions = [item["hostname"]] - - elif self.subscription == "entity": - subscriptions = [entity_name] - - else: - subscriptions = [hostname] - entities.append({ "entity_class": "proxy", "metadata": { "name": entity_name, "namespace": namespace, "labels": labels - }, - "subscriptions": subscriptions + } }) if len(skipped_entities) > 0: @@ -1408,74 +1395,6 @@ def generate_entities(self, namespace="default"): f"{self.tenant}: Error generating entities: faulty topology" ) - def _generate_hostname_subscriptions(self, servicetypes): - subscriptions = list() - - for servicetype in servicetypes: - if servicetype != self.internal_metrics_subscription: - try: - if self.subscription == "entity": - subscriptions.extend( - self._get_entities4servicetypes()[servicetype] - ) - - else: - subscriptions.extend( - self._get_hostnames4servicetypes()[servicetype] - ) - - except KeyError: - continue - - return sorted(list(set(subscriptions))) - - def generate_subscriptions(self, custom_subs=None): - if custom_subs is None: - custom_subs = dict() - - subscriptions = dict() - remaining_servicetypes = self.servicetypes - remaining_hostnames = set( - self._generate_hostname_subscriptions(list(remaining_servicetypes)) - ) - - used_hostnames = set() - for key, values in custom_subs.items(): - remaining_servicetypes = remaining_servicetypes.difference( - set(values) - ) - - if self.subscription == "servicetype": - subs_values = set(values) - - else: - subs_values = self._generate_hostname_subscriptions(values) - subs_values = set(subs_values).difference(used_hostnames) - used_hostnames.update(subs_values) - - subs_values.add(self.internal_metrics_subscription) - subscriptions.update({key: sorted(list(subs_values))}) - - if self.subscription == "servicetype": - remaining_servicetypes.add(self.internal_metrics_subscription) - subscriptions.update({ - "default": sorted(list(remaining_servicetypes)) - }) - - else: - subs = remaining_hostnames.difference(used_hostnames) - subs.add(self.internal_metrics_subscription) - subscriptions.update({"default": sorted(list(subs))}) - - return subscriptions - - def generate_internal_services(self): - services = list() - for metric in self.internal_metrics: - services.extend(self.servicetypes4metrics[metric]) - - return ",".join(sorted(list(set(services)))) - class ConfigurationMerger: def __init__( diff --git a/tests/test_generator.py b/tests/test_generator.py index 8981c16..b576f89 100644 --- a/tests/test_generator.py +++ b/tests/test_generator.py @@ -10165,81 +10165,6 @@ def test_generate_check_configuration_if_SILENCED_flag(self): class EntityConfigurationTests(unittest.TestCase): - def test_generate_entity_configuration_with_servicetype_subscriptions(self): - generator = ConfigurationGenerator( - metrics=mock_metrics, - profiles=["ARGO_TEST1"], - metric_profiles=mock_metric_profiles, - topology=mock_topology, - attributes=mock_attributes, - secrets_file="", - default_ports=mock_default_ports, - tenant="MOCK_TENANT", - subscription="servicetype" - ) - with self.assertLogs(LOGNAME) as log: - _log_dummy() - entities = generator.generate_entities() - self.assertEqual( - sorted(entities, key=lambda k: k["metadata"]["name"]), - [ - { - "entity_class": "proxy", - "metadata": { - "name": "argo.test__argo.ni4os.eu", - "namespace": "default", - "labels": { - "generic_http_ar_argoui_ni4os": - "generic.http.ar-argoui-ni4os", - "hostname": "argo.ni4os.eu", - "info_url": "https://argo.ni4os.eu", - "service": "argo.test", - "site": "GRNET", - "tenants": "MOCK_TENANT" - } - }, - "subscriptions": ["argo.test"] - }, - { - "entity_class": "proxy", - "metadata": { - "name": "argo.webui__argo-devel.ni4os.eu", - "namespace": "default", - "labels": { - "generic_http_ar_argoui_ni4os": - "generic.http.ar-argoui-ni4os", - "generic_tcp_connect": "generic.tcp.connect", - "hostname": "argo-devel.ni4os.eu", - "info_url": "http://argo-devel.ni4os.eu", - "service": "argo.webui", - "site": "GRNET", - "tenants": "MOCK_TENANT" - } - }, - "subscriptions": ["argo.webui"] - }, - { - "entity_class": "proxy", - "metadata": { - "name": "argo.webui__argo.ni4os.eu", - "namespace": "default", - "labels": { - "generic_http_ar_argoui_ni4os": - "generic.http.ar-argoui-ni4os", - "generic_tcp_connect": "generic.tcp.connect", - "hostname": "argo.ni4os.eu", - "info_url": "https://argo.ni4os.eu", - "service": "argo.webui", - "site": "GRNET", - "tenants": "MOCK_TENANT" - } - }, - "subscriptions": ["argo.webui"] - } - ] - ) - self.assertEqual(log.output, DUMMY_LOG) - def test_generate_entity_configuration(self): generator = ConfigurationGenerator( metrics=mock_metrics, @@ -10274,8 +10199,7 @@ def test_generate_entity_configuration(self): "site": "GRNET", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["argo-devel.ni4os.eu"] + } }, { "entity_class": "proxy", @@ -10294,8 +10218,7 @@ def test_generate_entity_configuration(self): "site": "GRNET", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["argo.ni4os.eu"] + } } ] ) @@ -10332,8 +10255,7 @@ def test_generate_entities_with_port_and_path(self): "site": "IPB", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["hpc.resource.ni4os.eu"] + } }, { "entity_class": "proxy", @@ -10347,8 +10269,7 @@ def test_generate_entities_with_port_and_path(self): "site": "SRCE", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["teran.srce.hr"] + } }, { "entity_class": "proxy", @@ -10366,8 +10287,7 @@ def test_generate_entities_with_port_and_path(self): "site": "CING", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["bioinformatics.cing.ac.cy"] + } }, { "entity_class": "proxy", @@ -10384,8 +10304,7 @@ def test_generate_entities_with_port_and_path(self): "site": "CYI", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["eewrc-las.cyi.ac.cy"] + } }, { "entity_class": "proxy", @@ -10406,8 +10325,7 @@ def test_generate_entities_with_port_and_path(self): "site": "SAMPA", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["sampaeos.if.usp.br"] + } }, ] ) @@ -10443,8 +10361,7 @@ def test_generate_entities_with_SSL(self): "site": "GRNET", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["argo-devel.ni4os.eu"] + } }, { "entity_class": "proxy", @@ -10460,8 +10377,7 @@ def test_generate_entities_with_SSL(self): "site": "GRNET", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["argo.ni4os.eu"] + } } ] ) @@ -10501,8 +10417,7 @@ def test_generate_entities_with_URLs(self): "tenants": "MOCK_TENANT", "info_hostdn": "/C=CA/O=Grid/CN=dynafed.hostname.ca" } - }, - "subscriptions": ["dynafed.hostname.ca"] + } }, { "entity_class": "proxy", @@ -10517,8 +10432,7 @@ def test_generate_entities_with_URLs(self): "site": "UPV-GRyCAP", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["grycap.upv.es"] + } }, { "entity_class": "proxy", @@ -10539,8 +10453,7 @@ def test_generate_entities_with_URLs(self): "site": "CERN-PROD", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["eosatlas.cern.ch"] + } }, { "entity_class": "proxy", @@ -10558,8 +10471,7 @@ def test_generate_entities_with_URLs(self): "site": "CERN-PROD", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["hostname.cern.ch"] + } } ] ) @@ -10600,8 +10512,7 @@ def test_generate_entities_with_multiple_endpoint_URLs(self): "info_hostdn": "/CN=host/dpm.bla.meh.com", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["dpm.bla.meh.com"] + } } ] ) @@ -10646,8 +10557,7 @@ def test_generate_entities_with_BDII(self): "mds-vo-name=DESY-HH,o=grid", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["grid-giis1.desy.de"] + } }, { "entity_class": "proxy", @@ -10671,8 +10581,7 @@ def test_generate_entities_with_BDII(self): "CN=kser.arnes.si", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["kser.arnes.si"] + } }, { "entity_class": "proxy", @@ -10694,8 +10603,7 @@ def test_generate_entities_with_BDII(self): "site": "SBDII", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["sbdii.test.com"] + } }, { "entity_class": "proxy", @@ -10718,8 +10626,7 @@ def test_generate_entities_with_BDII(self): "site": "BEgrid-ULB-VUB", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["sitebdii.iihe.ac.be"] + } }, { "entity_class": "proxy", @@ -10736,8 +10643,7 @@ def test_generate_entities_with_BDII(self): "site": "BDII", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["bdii1.test.com"] + } } ] ) @@ -10775,8 +10681,7 @@ def test_generate_entities_with_different_PORTs(self): "site": "IPB", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["catalogue.ni4os.eu"] + } }, { "entity_class": "proxy", @@ -10792,8 +10697,7 @@ def test_generate_entities_with_different_PORTs(self): "site": "IPB", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["hpc.resource.ni4os.eu"] + } }, { "entity_class": "proxy", @@ -10807,8 +10711,7 @@ def test_generate_entities_with_different_PORTs(self): "site": "SRCE", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["teran.srce.hr"] + } } ] ) @@ -10846,8 +10749,7 @@ def test_generate_entities_with_mandatory_extensions(self): "site": "EGI-DDNS", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["dns1.cloud.test.eu"] + } }, { "entity_class": "proxy", @@ -10863,8 +10765,7 @@ def test_generate_entities_with_mandatory_extensions(self): "site": "EGI-DDNS", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["dns2.cloud.test.eu"] + } }, { "entity_class": "proxy", @@ -10880,8 +10781,7 @@ def test_generate_entities_with_mandatory_extensions(self): "site": "EGI-DDNS", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["dns3.cloud.test.eu"] + } } ] ) @@ -10922,8 +10822,7 @@ def test_generate_entities_with_optional_extensions(self): "site": "GAMMA", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["185.229.108.85"] + } }, { "entity_class": "proxy", @@ -10945,8 +10844,7 @@ def test_generate_entities_with_optional_extensions(self): "site": "HNODC", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["hnodc-dm.ath.hcmr.gr"] + } } ] ) @@ -10994,8 +10892,7 @@ def test_generate_openstack_entities(self): "site": "INFN-CLOUD-CNAF", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["cloud-api-pub.cr.cnaf.infn.it"] + } }, { "entity_class": "proxy", @@ -11019,8 +10916,7 @@ def test_generate_openstack_entities(self): "site": "INFN-PADOVA-STACK", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["egi-cloud.pd.infn.it"] + } }, { "entity_class": "proxy", @@ -11039,8 +10935,7 @@ def test_generate_openstack_entities(self): "site": "CESNET-MCC", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["identity.cloud.muni.cz"] + } } ] ) @@ -11079,8 +10974,7 @@ def test_generate_multiple_same_host_entities(self): "site": "GRIDOPS-CheckIn", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["aai.eosc-portal.eu"] + } }, { "entity_class": "proxy", @@ -11098,8 +10992,7 @@ def test_generate_multiple_same_host_entities(self): "site": "GRIDOPS-CheckIn", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["aai.eosc-portal.eu"] + } } ] ) @@ -11140,8 +11033,7 @@ def test_generate_entities_with_SITE_BDII(self): "site": "DESY-HH", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["dcache-se-cms.desy.de"] + } }, { "entity_class": "proxy", @@ -11159,8 +11051,7 @@ def test_generate_entities_with_SITE_BDII(self): "srm2_port": "8443", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["dcache.arnes.si"] + } }, { "entity_class": "proxy", @@ -11176,8 +11067,7 @@ def test_generate_entities_with_SITE_BDII(self): "site": "BEgrid-ULB-VUB", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["dcache6-shadow.iihe.ac.be"] + } } ] ) @@ -11213,8 +11103,7 @@ def test_generate_entities_with_ARC_CE_MEMORY_LIMIT(self): "site": "AUVERGRID", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["gridarcce01.mesocentre.uca.fr"] + } }, { "entity_class": "proxy", @@ -11231,8 +11120,7 @@ def test_generate_entities_with_ARC_CE_MEMORY_LIMIT(self): "--memory-limit 268435456", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["alien.spacescience.ro"] + } } ] ) @@ -11268,8 +11156,7 @@ def test_generate_entities_with_local_topology(self): "site": "SRCE", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["argo-mon-devel.egi.eu"] + } }, { "entity_class": "proxy", @@ -11284,8 +11171,7 @@ def test_generate_entities_with_local_topology(self): "site": "SRCE", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["argo-mon-devel.ni4os.eu"] + } } ] ) @@ -11367,8 +11253,7 @@ def test_generate_entities_with_metric_parameter_overrides(self): "site": "GRNET", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["argo.ni4os.eu"] + } }, { "entity_class": "proxy", @@ -11384,8 +11269,7 @@ def test_generate_entities_with_metric_parameter_overrides(self): "site": "GRNET", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["argo-devel.ni4os.eu"] + } }, { "entity_class": "proxy", @@ -11401,8 +11285,7 @@ def test_generate_entities_with_metric_parameter_overrides(self): "site": "GRNET", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["argo.ni4os.eu"] + } } ] ) @@ -11460,8 +11343,7 @@ def test_generate_entities_with_metric_parameter_overrides_entity_name( "site": "GRNET", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["argo.ni4os.eu"] + } }, { "entity_class": "proxy", @@ -11477,8 +11359,7 @@ def test_generate_entities_with_metric_parameter_overrides_entity_name( "site": "GRNET", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["argo-devel.ni4os.eu"] + } }, { "entity_class": "proxy", @@ -11494,8 +11375,7 @@ def test_generate_entities_with_metric_parameter_overrides_entity_name( "site": "GRNET", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["argo.ni4os.eu"] + } } ] ) @@ -11554,8 +11434,7 @@ def test_generate_entities_with_host_attribute_overrides(self): "site": "GRNET", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["argo.ni4os.eu"] + } }, { "entity_class": "proxy", @@ -11575,8 +11454,7 @@ def test_generate_entities_with_host_attribute_overrides(self): "site": "GRNET", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["argo-devel.ni4os.eu"] + } }, { "entity_class": "proxy", @@ -11596,8 +11474,7 @@ def test_generate_entities_with_host_attribute_overrides(self): "site": "GRNET", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["argo.ni4os.eu"] + } }, { "entity_class": "proxy", @@ -11613,8 +11490,7 @@ def test_generate_entities_with_host_attribute_overrides(self): "site": "B2HANDLE-TEST", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["b2handle3.test.com"] + } } ] ) @@ -11674,8 +11550,7 @@ def test_generate_entities_with_host_attribute_overrides_if_global(self): "site": "GRNET", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["argo.ni4os.eu"] + } }, { "entity_class": "proxy", @@ -11695,8 +11570,7 @@ def test_generate_entities_with_host_attribute_overrides_if_global(self): "site": "GRNET", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["argo-devel.ni4os.eu"] + } }, { "entity_class": "proxy", @@ -11716,8 +11590,7 @@ def test_generate_entities_with_host_attribute_overrides_if_global(self): "site": "GRNET", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["argo.ni4os.eu"] + } }, { "entity_class": "proxy", @@ -11733,8 +11606,7 @@ def test_generate_entities_with_host_attribute_overrides_if_global(self): "site": "B2HANDLE-TEST", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["b2handle3.test.com"] + } } ] ) @@ -11783,8 +11655,7 @@ def test_generate_entities_with_overridden_secrets_with_dots(self): "site": "ARGO", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["api.argo.grnet.gr"] + } }, { "entity_class": "proxy", @@ -11800,8 +11671,7 @@ def test_generate_entities_with_overridden_secrets_with_dots(self): "site": "ARGO", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["api.devel.argo.grnet.gr"] + } } ] ) @@ -11837,8 +11707,7 @@ def test_generate_entity_configuration_with_internal_metrics(self): "site": "GRNET", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["argo.ni4os.eu"] + } } ] ) @@ -11897,8 +11766,7 @@ def test_generate_entity_with_attribute_ending_in_url_not_servicetype_url( "site": "ARGO", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["aai.argo.eu"] + } } ] ) @@ -11968,8 +11836,7 @@ def test_generate_entity_with_attribute_ending_in_url_in_extensions(self): "site": "CERN-PROD", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["hostname.cern.ch"] + } }, { "entity_class": "proxy", @@ -11986,8 +11853,7 @@ def test_generate_entity_with_attribute_ending_in_url_in_extensions(self): "site": "CERN-PROD", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["hostname2.cern.ch"] + } } ] ) @@ -12027,8 +11893,7 @@ def test_generate_entity_with_hostname_in_tags(self): "site": "test1", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["hostname1.argo.com"] + } }, { "entity_class": "proxy", @@ -12045,8 +11910,7 @@ def test_generate_entity_with_hostname_in_tags(self): "site": "test2.test", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["hostname2.argo.eu"] + } }, { "entity_class": "proxy", @@ -12063,8 +11927,7 @@ def test_generate_entity_with_hostname_in_tags(self): "site": "group3", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["hostname3.argo.eu"] + } } ] ) @@ -12101,8 +11964,7 @@ def test_generate_entity_for_check_with_path_attribute(self): "site": "ARGO", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["test-json.argo.grnet.gr"] + } }, ] ) @@ -12160,8 +12022,7 @@ def test_generate_entity_for_check_with_overridden_default_param(self): "site": "ARGO", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["test.argo.grnet.gr"] + } }, { "entity_class": "proxy", @@ -12180,8 +12041,7 @@ def test_generate_entity_for_check_with_overridden_default_param(self): "site": "ARGO", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["test2.argo.grnet.gr"] + } }, { "entity_class": "proxy", @@ -12200,8 +12060,7 @@ def test_generate_entity_for_check_with_overridden_default_param(self): "site": "ARGO", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["test3.argo.grnet.gr"] + } }, ] ) @@ -12261,8 +12120,7 @@ def test_generate_entity_for_check_with_overridden_deflt_param_entity_name( "site": "ARGO", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["test.argo.grnet.gr"] + } }, { "entity_class": "proxy", @@ -12281,8 +12139,7 @@ def test_generate_entity_for_check_with_overridden_deflt_param_entity_name( "site": "ARGO", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["test2.argo.grnet.gr"] + } }, { "entity_class": "proxy", @@ -12301,8 +12158,7 @@ def test_generate_entity_for_check_with_overridden_deflt_param_entity_name( "site": "ARGO", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["test3.argo.grnet.gr"] + } }, ] ) @@ -12342,8 +12198,7 @@ def test_generate_entity_with_hostalias(self): "site": "B2HANDLE", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["b2handle.test.example.com"] + } } ] ) @@ -12398,8 +12253,7 @@ def test_generate_entity_with_hostalias_with_override(self): "site": "B2HANDLE", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["b2handle.test.example.com"] + } } ] ) @@ -12438,8 +12292,7 @@ def test_generate_entity_with_duplicate_sites(self): "site": "ARCHIVE-B2HANDLE,B2HANDLE TEST", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["b2handle3.test.com"] + } } ] ) @@ -12490,8 +12343,7 @@ def test_generate_entity_host_override_with_default_for_some(self): "site": "B2HANDLE-TEST", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["b2handle.test.com"] + } }, { "entity_class": "proxy", @@ -12510,8 +12362,7 @@ def test_generate_entity_host_override_with_default_for_some(self): "site": "ARCHIVE-B2HANDLE", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["b2handle3.test.com"] + } } ] ) @@ -12570,8 +12421,7 @@ def test_generate_entity_host_override_with_hostalias_param_override( "site": "B2HANDLE-TEST", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["b2handle.test.com"] + } }, { "entity_class": "proxy", @@ -12590,8 +12440,7 @@ def test_generate_entity_host_override_with_hostalias_param_override( "site": "ARCHIVE-B2HANDLE", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["b2handle3.test.com"] + } } ] ) @@ -12644,8 +12493,7 @@ def test_generate_entity_host_attr_override_if_value_with_dots( "site": "B2HANDLE-TEST", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["b2handle.test.com"] + } }, { "entity_class": "proxy", @@ -12664,8 +12512,7 @@ def test_generate_entity_host_attr_override_if_value_with_dots( "site": "ARCHIVE-B2HANDLE", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["b2handle3.test.com"] + } } ] ) @@ -12699,8 +12546,7 @@ def test_generate_entity_if_no_url(self): "site": "GITLAB-TEST", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["gitlab.test.com"] + } }, { "entity_class": "proxy", @@ -12717,8 +12563,7 @@ def test_generate_entity_if_no_url(self): "site": "GITLAB-TEST", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["gitlab2.test.com"] + } } ] ) @@ -12778,8 +12623,7 @@ def test_generate_entity_if_no_url_param_override_all(self): "site": "GITLAB-TEST2", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["gitlab.test.com"] + } }, { "entity_class": "proxy", @@ -12796,8 +12640,7 @@ def test_generate_entity_if_no_url_param_override_all(self): "site": "GITLAB-TEST2", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["gitlab2.test.com"] + } } ] ) @@ -12847,8 +12690,7 @@ def test_generate_entity_if_no_url_param_override_some(self): "site": "GITLAB-TEST2", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["gitlab.test.com"] + } }, { "entity_class": "proxy", @@ -12863,8 +12705,7 @@ def test_generate_entity_if_no_url_param_override_some(self): "site": "GITLAB-TEST2", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["gitlab2.test.com"] + } } ] ) @@ -12919,8 +12760,7 @@ def test_generate_entity_if_no_url_attr_override_all(self): "site": "GITLAB-TEST2", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["gitlab.test.com"] + } }, { "entity_class": "proxy", @@ -12936,8 +12776,7 @@ def test_generate_entity_if_no_url_attr_override_all(self): "site": "GITLAB-TEST2", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["gitlab2.test.com"] + } } ] ) @@ -12984,8 +12823,7 @@ def test_generate_entity_if_no_url_attr_override_some(self): "site": "GITLAB-TEST2", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["gitlab.test.com"] + } }, { "entity_class": "proxy", @@ -12999,8 +12837,7 @@ def test_generate_entity_if_no_url_attr_override_some(self): "site": "GITLAB-TEST2", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["gitlab2.test.com"] + } } ] ) @@ -13040,8 +12877,7 @@ def test_generate_entity_default_port_override_by_extension_some(self): "site": "IPB", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["hpc.resource.ni4os.eu"] + } }, { "entity_class": "proxy", @@ -13055,8 +12891,7 @@ def test_generate_entity_default_port_override_by_extension_some(self): "site": "SRCE", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["teran.srce.hr"] + } } ] ) @@ -13092,8 +12927,7 @@ def test_generate_entity_default_port_override_by_extension_none(self): "site": "IPB", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["hpc.resource.ni4os.eu"] + } }, { "entity_class": "proxy", @@ -13107,8 +12941,7 @@ def test_generate_entity_default_port_override_by_extension_none(self): "site": "SRCE", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["teran.srce.hr"] + } } ] ) @@ -13154,8 +12987,7 @@ def test_generate_entity_default_port_override_by_global_attribute(self): "site": "IPB", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["hpc.resource.ni4os.eu"] + } }, { "entity_class": "proxy", @@ -13169,8 +13001,7 @@ def test_generate_entity_default_port_override_by_global_attribute(self): "site": "SRCE", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["teran.srce.hr"] + } } ] ) @@ -13218,8 +13049,7 @@ def test_generate_entity_default_port_override_by_host_attribute(self): "site": "IPB", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["hpc.resource.ni4os.eu"] + } }, { "entity_class": "proxy", @@ -13233,8 +13063,7 @@ def test_generate_entity_default_port_override_by_host_attribute(self): "site": "SRCE", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["teran.srce.hr"] + } } ] ) @@ -13272,8 +13101,7 @@ def test_generate_entity_with_servicesite_name(self): "site": "APEL-Site1", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["apel.grid1.example.com"] + } }, { "entity_class": "proxy", @@ -13290,8 +13118,7 @@ def test_generate_entity_with_servicesite_name(self): "site": "APEL-Site2", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["apel.grid2.example.com"] + } } ] ) @@ -13343,8 +13170,7 @@ def test_generate_entity_with_servicesite_name_with_override(self): "site": "APEL-Site1", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["apel.grid1.example.com"] + } }, { "entity_class": "proxy", @@ -13361,8 +13187,7 @@ def test_generate_entity_with_servicesite_name_with_override(self): "site": "APEL-Site2", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["apel.grid2.example.com"] + } } ] ) @@ -13399,8 +13224,7 @@ def test_generate_entity_for_http_check_if_no_URL(self): "site": "APPDB", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["appdb.egi.eu"] + } }, { "entity_class": "proxy", @@ -13420,8 +13244,7 @@ def test_generate_entity_for_http_check_if_no_URL(self): "site": "CING", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["bioinformatics.cing.ac.cy"] + } }, { "entity_class": "proxy", @@ -13440,8 +13263,7 @@ def test_generate_entity_for_http_check_if_no_URL(self): "site": "CYI", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["eewrc-las.cyi.ac.cy"] + } }, { "entity_class": "proxy", @@ -13464,8 +13286,7 @@ def test_generate_entity_for_http_check_if_no_URL(self): "site": "SAMPA", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["sampaeos.if.usp.br"] + } } ] ) @@ -13502,8 +13323,7 @@ def test_generate_entity_if_attribute_with_dash(self): "site": "IN2P3-CC", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["cclssts1.in2p3.fr"] + } }, { "entity_class": "proxy", @@ -13520,8 +13340,7 @@ def test_generate_entity_if_attribute_with_dash(self): "site": "JP-KEK-CRC-02", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["cvmfs-stratum-one.cc.kek.jp"] + } } ] ) @@ -13558,8 +13377,7 @@ def test_generate_entity_if_info_bdii_tag(self): "site": "DESY-HH", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["dcache-se-cms.desy.de"] + } }, { "entity_class": "proxy", @@ -13577,8 +13395,7 @@ def test_generate_entity_if_info_bdii_tag(self): "/C=SI/O=SiGNET/O=Arnes/CN=dcache.arnes.si", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["dcache.arnes.si"] + } }, { "entity_class": "proxy", @@ -13593,8 +13410,7 @@ def test_generate_entity_if_info_bdii_tag(self): "site": "BEgrid-ULB-VUB", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["dcache6-shadow.iihe.ac.be"] + } } ] ) @@ -13638,8 +13454,7 @@ def test_generate_entity_if_ampersand_in_URL(self): "site": "lida.lida_survey_data", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["lida.dataverse.lt"] + } } ] ) @@ -13678,8 +13493,7 @@ def test_generate_entity_with_integer_attributes(self): "site": "XROOTD-SITE1", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["atlas.dcache.example.eu"] + } }, { "entity_class": "proxy", @@ -13694,8 +13508,7 @@ def test_generate_entity_with_integer_attributes(self): "site": "CERN-PROD", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["castorpublic.cern.ch"] + } }, { "entity_class": "proxy", @@ -13715,8 +13528,7 @@ def test_generate_entity_with_integer_attributes(self): "site": "XROOTD-SITE2", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["xrootd.example.eu"] + } } ] ) @@ -13755,8 +13567,7 @@ def test_generate_entity_with_xrootd_webdav_extension(self): "site": "XROOTD-SITE1", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["atlas.dcache.example.eu"] + } }, { "entity_class": "proxy", @@ -13771,8 +13582,7 @@ def test_generate_entity_with_xrootd_webdav_extension(self): "site": "CERN-PROD", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["castorpublic.cern.ch"] + } }, { "entity_class": "proxy", @@ -13792,8 +13602,7 @@ def test_generate_entity_with_xrootd_webdav_extension(self): "site": "XROOTD-SITE2", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["xrootd.example.eu"] + } }, { "entity_class": "proxy", @@ -13814,8 +13623,7 @@ def test_generate_entity_with_xrootd_webdav_extension(self): "site": "CERN-PROD", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["eosatlas.cern.ch"] + } }, { "entity_class": "proxy", @@ -13832,8 +13640,7 @@ def test_generate_entity_with_xrootd_webdav_extension(self): "site": "CERN-PROD", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["hostname.cern.ch"] + } } ] ) @@ -13888,8 +13695,7 @@ def test_generate_entity_with_xrootd_webdav_extension_with_override(self): "site": "XROOTD-SITE1", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["atlas.dcache.example.eu"] + } }, { "entity_class": "proxy", @@ -13905,8 +13711,7 @@ def test_generate_entity_with_xrootd_webdav_extension_with_override(self): "site": "CERN-PROD", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["castorpublic.cern.ch"] + } }, { "entity_class": "proxy", @@ -13926,8 +13731,7 @@ def test_generate_entity_with_xrootd_webdav_extension_with_override(self): "site": "XROOTD-SITE2", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["xrootd.example.eu"] + } }, { "entity_class": "proxy", @@ -13948,8 +13752,7 @@ def test_generate_entity_with_xrootd_webdav_extension_with_override(self): "site": "CERN-PROD", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["eosatlas.cern.ch"] + } }, { "entity_class": "proxy", @@ -13966,8 +13769,7 @@ def test_generate_entity_with_xrootd_webdav_extension_with_override(self): "site": "CERN-PROD", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["hostname.cern.ch"] + } } ] ) @@ -14009,8 +13811,7 @@ def test_generate_entity_with_duplicates_in_topology(self): "site": "CERN-PROD", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["eosatlas.cern.ch"] + } }, { "entity_class": "proxy", @@ -14027,8 +13828,7 @@ def test_generate_entity_with_duplicates_in_topology(self): "site": "UNI-TEST", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["webdav.test.de"] + } }, { "entity_class": "proxy", @@ -14048,102 +13848,69 @@ def test_generate_entity_with_duplicates_in_topology(self): "site": "UNI-EXAMPLE", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["xrootd.example.de"] + } } ] ) self.assertEqual(log.output, DUMMY_LOG) - def test_generate_entity_with_hostname_with_id_subscription(self): + def test_generate_entity_if_non_fallback_attribute_in_every_endpoint(self): generator = ConfigurationGenerator( metrics=mock_metrics, - profiles=["ARGO_TEST30"], + profiles=["ARGO_TEST53"], metric_profiles=mock_metric_profiles, - topology=mock_topology_with_hostname_in_tag, + topology=mock_topology, attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT", - subscription="hostname_with_id" + tenant="MOCK_TENANT" ) with self.assertLogs(LOGNAME) as log: _log_dummy() entities = generator.generate_entities() self.assertEqual( - sorted(entities, key=lambda k: k["metadata"]["name"]), + entities, [ { "entity_class": "proxy", "metadata": { - "name": "eu.eosc.portal.services.url__" - "hostname1.argo.com_hostname1_id", - "namespace": "default", - "labels": { - "generic_http_connect": "generic.http.connect", - "generic_http_connect_path": "-u /path", - "ssl": "-S --sni", - "info_url": - "https://hostname1.argo.com/path", - "hostname": "hostname1.argo.com", - "service": "eu.eosc.portal.services.url", - "site": "test1", - "tenants": "MOCK_TENANT" - } - }, - "subscriptions": ["hostname1.argo.com_hostname1_id"] - }, - { - "entity_class": "proxy", - "metadata": { - "name": "eu.eosc.portal.services.url__" - "hostname2.argo.eu_second.id", - "namespace": "default", - "labels": { - "generic_http_connect": "generic.http.connect", - "info_url": "https://hostname2.argo.eu", - "hostname": "hostname2.argo.eu", - "ssl": "-S --sni", - "service": "eu.eosc.portal.services.url", - "site": "test2.test", - "tenants": "MOCK_TENANT" - } - }, - "subscriptions": ["hostname2.argo.eu_second.id"] - }, - { - "entity_class": "proxy", - "metadata": { - "name": "eu.eosc.portal.services.url__" - "hostname3.argo.eu_test.id", + "name": "eu.egi.readonly.xrootd__xrootd01.readonly.eu", "namespace": "default", "labels": { - "generic_http_connect": "generic.http.connect", - "info_url": "http://hostname3.argo.eu/", - "generic_http_connect_path": "-u /", - "hostname": "hostname3.argo.eu", - "service": "eu.eosc.portal.services.url", - "site": "group3", + "egi_xrootd_readonly": "egi.xrootd.readonly", + "argo_xrootd_ops_url": + "root://xrootd01.readonly.eu:1094/ops/" + "xrootd_tests", + "e__argo_xrootd_ops_url": + "-E root://xrootd01.readonly.eu:1094/ops/" + "xrootd_tests", + "endpoint_url": + "root://xrootd01.readonly.eu:1094/ops/" + "xrootd_tests", + "hostname": "xrootd01.readonly.eu", + "service": "eu.egi.readonly.xrootd", + "site": "XROOTD-READONLY", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["hostname3.argo.eu_test.id"] + } } ] ) self.assertEqual(log.output, DUMMY_LOG) - def test_generate_entity_with_servicetype_subscription(self): + def test_generate_entities_with_skipped_metrics(self): generator = ConfigurationGenerator( metrics=mock_metrics, - profiles=["ARGO_TEST1"], + profiles=["ARGO_TEST13"], metric_profiles=mock_metric_profiles, topology=mock_topology, attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT", - subscription="servicetype" + skipped_metrics=[ + "org.nagios.Keystone-TCP", "eu.egi.cloud.OpenStack-Swift" + ], + tenant="MOCK_TENANT" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -14154,686 +13921,54 @@ def test_generate_entity_with_servicetype_subscription(self): { "entity_class": "proxy", "metadata": { - "name": "argo.test__argo.ni4os.eu", - "namespace": "default", - "labels": { - "generic_http_ar_argoui_ni4os": - "generic.http.ar-argoui-ni4os", - "info_url": "https://argo.ni4os.eu", - "hostname": "argo.ni4os.eu", - "service": "argo.test", - "site": "GRNET", - "tenants": "MOCK_TENANT" - } - }, - "subscriptions": ["argo.test"] - }, - { - "entity_class": "proxy", - "metadata": { - "name": "argo.webui__argo-devel.ni4os.eu", + "name": "org.openstack.nova__" + "cloud-api-pub.cr.cnaf.infn.it", "namespace": "default", "labels": { - "generic_http_ar_argoui_ni4os": - "generic.http.ar-argoui-ni4os", - "generic_tcp_connect": "generic.tcp.connect", - "info_url": "http://argo-devel.ni4os.eu", - "hostname": "argo-devel.ni4os.eu", - "service": "argo.webui", - "site": "GRNET", + "eu_egi_cloud_infoprovider": + "eu.egi.cloud.InfoProvider", + "eu_egi_cloud_openstack_vm": + "eu.egi.cloud.OpenStack-VM", + "info_url": + "https://cloud-api-pub.cr.cnaf.infn.it:5000/v3", + "os_keystone_url": + "https://cloud-api-pub.cr.cnaf.infn.it:5000/v3", + "os_keystone_port": "5000", + "os_keystone_host": "cloud-api-pub.cr.cnaf.infn.it", + "hostname": "cloud-api-pub.cr.cnaf.infn.it", + "region__os_region": "--region sdds", + "service": "org.openstack.nova", + "site": "INFN-CLOUD-CNAF", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["argo.webui"] + } }, { "entity_class": "proxy", "metadata": { - "name": "argo.webui__argo.ni4os.eu", + "name": "org.openstack.nova__egi-cloud.pd.infn.it", "namespace": "default", "labels": { - "generic_http_ar_argoui_ni4os": - "generic.http.ar-argoui-ni4os", - "generic_tcp_connect": "generic.tcp.connect", - "info_url": "https://argo.ni4os.eu", - "hostname": "argo.ni4os.eu", - "service": "argo.webui", - "site": "GRNET", + "eu_egi_cloud_infoprovider": + "eu.egi.cloud.InfoProvider", + "eu_egi_cloud_openstack_vm": + "eu.egi.cloud.OpenStack-VM", + "info_url": "https://egi-cloud.pd.infn.it:443/v3", + "os_keystone_url": + "https://egi-cloud.pd.infn.it:443/v3", + "os_keystone_port": "443", + "os_keystone_host": "egi-cloud.pd.infn.it", + "hostname": "egi-cloud.pd.infn.it", + "service": "org.openstack.nova", + "site": "INFN-PADOVA-STACK", "tenants": "MOCK_TENANT" } - }, - "subscriptions": ["argo.webui"] + } } ] ) self.assertEqual(log.output, DUMMY_LOG) - def test_generate_entity_with_entity_subscription(self): - generator = ConfigurationGenerator( - metrics=mock_metrics, - profiles=["ARGO_TEST1"], - metric_profiles=mock_metric_profiles, - topology=mock_topology, - attributes=mock_attributes, - secrets_file="", - default_ports=mock_default_ports, - tenant="MOCK_TENANT", - subscription="entity" - ) - with self.assertLogs(LOGNAME) as log: - _log_dummy() - entities = generator.generate_entities() - self.assertEqual( - sorted(entities, key=lambda k: k["metadata"]["name"]), - [ - { - "entity_class": "proxy", - "metadata": { - "name": "argo.test__argo.ni4os.eu", - "namespace": "default", - "labels": { - "generic_http_ar_argoui_ni4os": - "generic.http.ar-argoui-ni4os", - "info_url": "https://argo.ni4os.eu", - "hostname": "argo.ni4os.eu", - "service": "argo.test", - "site": "GRNET", - "tenants": "MOCK_TENANT" - } - }, - "subscriptions": ["argo.test__argo.ni4os.eu"] - }, - { - "entity_class": "proxy", - "metadata": { - "name": "argo.webui__argo-devel.ni4os.eu", - "namespace": "default", - "labels": { - "generic_http_ar_argoui_ni4os": - "generic.http.ar-argoui-ni4os", - "generic_tcp_connect": "generic.tcp.connect", - "info_url": "http://argo-devel.ni4os.eu", - "hostname": "argo-devel.ni4os.eu", - "service": "argo.webui", - "site": "GRNET", - "tenants": "MOCK_TENANT" - } - }, - "subscriptions": ["argo.webui__argo-devel.ni4os.eu"] - }, - { - "entity_class": "proxy", - "metadata": { - "name": "argo.webui__argo.ni4os.eu", - "namespace": "default", - "labels": { - "generic_http_ar_argoui_ni4os": - "generic.http.ar-argoui-ni4os", - "generic_tcp_connect": "generic.tcp.connect", - "info_url": "https://argo.ni4os.eu", - "hostname": "argo.ni4os.eu", - "service": "argo.webui", - "site": "GRNET", - "tenants": "MOCK_TENANT" - } - }, - "subscriptions": ["argo.webui__argo.ni4os.eu"] - } - ] - ) - self.assertEqual(log.output, DUMMY_LOG) - - def test_generate_entity_if_non_fallback_attribute_in_every_endpoint(self): - generator = ConfigurationGenerator( - metrics=mock_metrics, - profiles=["ARGO_TEST53"], - metric_profiles=mock_metric_profiles, - topology=mock_topology, - attributes=mock_attributes, - secrets_file="", - default_ports=mock_default_ports, - tenant="MOCK_TENANT" - ) - with self.assertLogs(LOGNAME) as log: - _log_dummy() - entities = generator.generate_entities() - self.assertEqual( - entities, - [ - { - "entity_class": "proxy", - "metadata": { - "name": "eu.egi.readonly.xrootd__xrootd01.readonly.eu", - "namespace": "default", - "labels": { - "egi_xrootd_readonly": "egi.xrootd.readonly", - "argo_xrootd_ops_url": - "root://xrootd01.readonly.eu:1094/ops/" - "xrootd_tests", - "e__argo_xrootd_ops_url": - "-E root://xrootd01.readonly.eu:1094/ops/" - "xrootd_tests", - "endpoint_url": - "root://xrootd01.readonly.eu:1094/ops/" - "xrootd_tests", - "hostname": "xrootd01.readonly.eu", - "service": "eu.egi.readonly.xrootd", - "site": "XROOTD-READONLY", - "tenants": "MOCK_TENANT" - } - }, - "subscriptions": ["xrootd01.readonly.eu"] - } - ] - ) - self.assertEqual(log.output, DUMMY_LOG) - - def test_generate_entities_with_skipped_metrics(self): - generator = ConfigurationGenerator( - metrics=mock_metrics, - profiles=["ARGO_TEST13"], - metric_profiles=mock_metric_profiles, - topology=mock_topology, - attributes=mock_attributes, - secrets_file="", - default_ports=mock_default_ports, - skipped_metrics=[ - "org.nagios.Keystone-TCP", "eu.egi.cloud.OpenStack-Swift" - ], - tenant="MOCK_TENANT" - ) - with self.assertLogs(LOGNAME) as log: - _log_dummy() - entities = generator.generate_entities() - self.assertEqual( - sorted(entities, key=lambda k: k["metadata"]["name"]), - [ - { - "entity_class": "proxy", - "metadata": { - "name": "org.openstack.nova__" - "cloud-api-pub.cr.cnaf.infn.it", - "namespace": "default", - "labels": { - "eu_egi_cloud_infoprovider": - "eu.egi.cloud.InfoProvider", - "eu_egi_cloud_openstack_vm": - "eu.egi.cloud.OpenStack-VM", - "info_url": - "https://cloud-api-pub.cr.cnaf.infn.it:5000/v3", - "os_keystone_url": - "https://cloud-api-pub.cr.cnaf.infn.it:5000/v3", - "os_keystone_port": "5000", - "os_keystone_host": "cloud-api-pub.cr.cnaf.infn.it", - "hostname": "cloud-api-pub.cr.cnaf.infn.it", - "region__os_region": "--region sdds", - "service": "org.openstack.nova", - "site": "INFN-CLOUD-CNAF", - "tenants": "MOCK_TENANT" - } - }, - "subscriptions": ["cloud-api-pub.cr.cnaf.infn.it"] - }, - { - "entity_class": "proxy", - "metadata": { - "name": "org.openstack.nova__egi-cloud.pd.infn.it", - "namespace": "default", - "labels": { - "eu_egi_cloud_infoprovider": - "eu.egi.cloud.InfoProvider", - "eu_egi_cloud_openstack_vm": - "eu.egi.cloud.OpenStack-VM", - "info_url": "https://egi-cloud.pd.infn.it:443/v3", - "os_keystone_url": - "https://egi-cloud.pd.infn.it:443/v3", - "os_keystone_port": "443", - "os_keystone_host": "egi-cloud.pd.infn.it", - "hostname": "egi-cloud.pd.infn.it", - "service": "org.openstack.nova", - "site": "INFN-PADOVA-STACK", - "tenants": "MOCK_TENANT" - } - }, - "subscriptions": ["egi-cloud.pd.infn.it"] - } - ] - ) - self.assertEqual(log.output, DUMMY_LOG) - - def test_generate_subscriptions(self): - generator = ConfigurationGenerator( - metrics=mock_metrics, - profiles=["ARGO_TEST1"], - metric_profiles=mock_metric_profiles, - topology=mock_topology, - attributes=mock_attributes, - secrets_file="", - default_ports=mock_default_ports, - tenant="MOCK_TENANT" - ) - with self.assertLogs(LOGNAME) as log: - _log_dummy() - subscriptions = generator.generate_subscriptions() - self.assertEqual( - subscriptions, { - "default": ["argo-devel.ni4os.eu", "argo.ni4os.eu", "internals"] - } - ) - self.assertEqual(log.output, DUMMY_LOG) - - def test_generate_subscriptions_for_custom_agents_subs(self): - generator = ConfigurationGenerator( - metrics=mock_metrics, - profiles=["ARGO_TEST51"], - metric_profiles=mock_metric_profiles, - topology=mock_topology, - attributes=mock_attributes, - secrets_file="", - default_ports=mock_default_ports, - tenant="MOCK_TENANT" - ) - with self.assertLogs(LOGNAME) as log: - _log_dummy() - subscriptions = generator.generate_subscriptions( - custom_subs={ - "sensu-agent1": ["argo.test"], - "sensu-agent2": ["argo.webui"] - } - ) - self.assertEqual( - subscriptions, { - "default": [ - "dcache-se-cms.desy.de", "dcache.arnes.si", - "dcache6-shadow.iihe.ac.be", "internals" - ], - "sensu-agent1": ["argo.ni4os.eu", "internals"], - "sensu-agent2": ["argo-devel.ni4os.eu", "internals"] - } - ) - self.assertEqual(log.output, DUMMY_LOG) - - def test_generate_subscriptions_for_custom_agents_subs_if_missing_service( - self - ): - generator = ConfigurationGenerator( - metrics=mock_metrics, - profiles=["ARGO_TEST51"], - metric_profiles=mock_metric_profiles, - topology=mock_topology, - attributes=mock_attributes, - secrets_file="", - default_ports=mock_default_ports, - tenant="MOCK_TENANT" - ) - with self.assertLogs(LOGNAME) as log: - _log_dummy() - subscriptions = generator.generate_subscriptions( - custom_subs={ - "sensu-agent1": ["web.check"], - } - ) - self.assertEqual( - subscriptions, { - "default": [ - "argo-devel.ni4os.eu", "argo.ni4os.eu", - "dcache-se-cms.desy.de", "dcache.arnes.si", - "dcache6-shadow.iihe.ac.be", "internals" - ], - "sensu-agent1": ["internals"] - } - ) - self.assertEqual(log.output, DUMMY_LOG) - - def test_generate_subscriptions_for_hostnames_without_id(self): - generator = ConfigurationGenerator( - metrics=mock_metrics, - profiles=["ARGO_TEST30"], - metric_profiles=mock_metric_profiles, - topology=mock_topology_with_hostname_in_tag, - attributes=mock_attributes, - secrets_file="", - default_ports=mock_default_ports, - tenant="MOCK_TENANT" - ) - with self.assertLogs(LOGNAME) as log: - _log_dummy() - subscriptions = generator.generate_subscriptions() - self.assertEqual( - subscriptions, { - "default": [ - "hostname1.argo.com", "hostname2.argo.eu", - "hostname3.argo.eu", "internals" - ] - } - ) - self.assertEqual(log.output, DUMMY_LOG) - - def test_generate_subscriptions_for_hostnames_without_id_custom_agent(self): - generator = ConfigurationGenerator( - metrics=mock_metrics, - profiles=["ARGO_TEST52"], - metric_profiles=mock_metric_profiles, - topology=mock_topology_with_hostname_in_tag, - attributes=mock_attributes, - secrets_file="", - default_ports=mock_default_ports, - tenant="MOCK_TENANT" - ) - with self.assertLogs(LOGNAME) as log: - _log_dummy() - subscriptions = generator.generate_subscriptions( - custom_subs={"sensu-agent1": ["eu.eosc.generic.oai-pmh"]} - ) - self.assertEqual( - subscriptions, { - "default": [ - "hostname1.argo.com", "hostname2.argo.eu", - "hostname3.argo.eu", "internals" - ], - "sensu-agent1": ["dabar.srce.hr", "hrcak.srce.hr", "internals"] - } - ) - self.assertEqual(log.output, DUMMY_LOG) - - def test_generate_subs_for_hostnames_without_id_custom_agnt_missing_serv( - self - ): - generator = ConfigurationGenerator( - metrics=mock_metrics, - profiles=["ARGO_TEST52"], - metric_profiles=mock_metric_profiles, - topology=mock_topology_with_hostname_in_tag, - attributes=mock_attributes, - secrets_file="", - default_ports=mock_default_ports, - tenant="MOCK_TENANT" - ) - with self.assertLogs(LOGNAME) as log: - _log_dummy() - subscriptions = generator.generate_subscriptions( - custom_subs={"sensu-agent1": ["argo.test"]} - ) - self.assertEqual( - subscriptions, { - "default": [ - "dabar.srce.hr", "hostname1.argo.com", "hostname2.argo.eu", - "hostname3.argo.eu", "hrcak.srce.hr", "internals" - ], - "sensu-agent1": ["internals"] - } - ) - self.assertEqual(log.output, DUMMY_LOG) - - def test_generate_subscriptions_for_hostnames_with_id(self): - generator = ConfigurationGenerator( - metrics=mock_metrics, - profiles=["ARGO_TEST30"], - metric_profiles=mock_metric_profiles, - topology=mock_topology_with_hostname_in_tag, - attributes=mock_attributes, - secrets_file="", - default_ports=mock_default_ports, - tenant="MOCK_TENANT", - subscription="hostname_with_id" - ) - with self.assertLogs(LOGNAME) as log: - _log_dummy() - subscriptions = generator.generate_subscriptions() - self.assertEqual( - subscriptions, { - "default": [ - "hostname1.argo.com_hostname1_id", - "hostname2.argo.eu_second.id", - "hostname3.argo.eu_test.id", - "internals" - ] - } - ) - self.assertEqual(log.output, DUMMY_LOG) - - def test_generate_subscriptions_for_hostnames_with_id_custom_agent(self): - generator = ConfigurationGenerator( - metrics=mock_metrics, - profiles=["ARGO_TEST52"], - metric_profiles=mock_metric_profiles, - topology=mock_topology_with_hostname_in_tag, - attributes=mock_attributes, - secrets_file="", - default_ports=mock_default_ports, - tenant="MOCK_TENANT", - subscription="hostname_with_id" - ) - with self.assertLogs(LOGNAME) as log: - _log_dummy() - subscriptions = generator.generate_subscriptions( - custom_subs={"sensu-agent1": ["eu.eosc.generic.oai-pmh"]} - ) - self.assertEqual( - subscriptions, { - "default": [ - "hostname1.argo.com_hostname1_id", - "hostname2.argo.eu_second.id", - "hostname3.argo.eu_test.id", - "internals" - ], - "sensu-agent1": [ - "dabar.srce.hr_dabar_id", "hrcak.srce.hr_hrcak.id", - "internals" - ] - } - ) - self.assertEqual(log.output, DUMMY_LOG) - - def test_generate_subs_for_hostnames_with_id_custom_agent_missing_service( - self - ): - generator = ConfigurationGenerator( - metrics=mock_metrics, - profiles=["ARGO_TEST52"], - metric_profiles=mock_metric_profiles, - topology=mock_topology_with_hostname_in_tag, - attributes=mock_attributes, - secrets_file="", - default_ports=mock_default_ports, - tenant="MOCK_TENANT", - subscription="hostname_with_id" - ) - with self.assertLogs(LOGNAME) as log: - _log_dummy() - subscriptions = generator.generate_subscriptions( - custom_subs={"sensu-agent1": ["argo.test"]} - ) - self.assertEqual( - subscriptions, { - "default": [ - "dabar.srce.hr_dabar_id", - "hostname1.argo.com_hostname1_id", - "hostname2.argo.eu_second.id", - "hostname3.argo.eu_test.id", - "hrcak.srce.hr_hrcak.id", - "internals" - ], - "sensu-agent1": ["internals"] - } - ) - self.assertEqual(log.output, DUMMY_LOG) - - def test_generate_subscriptions_for_servicetypes(self): - generator = ConfigurationGenerator( - metrics=mock_metrics, - profiles=["ARGO_TEST30"], - metric_profiles=mock_metric_profiles, - topology=mock_topology_with_hostname_in_tag, - attributes=mock_attributes, - secrets_file="", - default_ports=mock_default_ports, - tenant="MOCK_TENANT", - subscription="servicetype" - ) - with self.assertLogs(LOGNAME) as log: - _log_dummy() - subscriptions = generator.generate_subscriptions() - self.assertEqual( - subscriptions, { - "default": ["eu.eosc.portal.services.url", "internals"] - } - ) - self.assertEqual(log.output, DUMMY_LOG) - - def test_generate_subscriptions_for_servicetypes_custom_agent(self): - generator = ConfigurationGenerator( - metrics=mock_metrics, - profiles=["ARGO_TEST30"], - metric_profiles=mock_metric_profiles, - topology=mock_topology_with_hostname_in_tag, - attributes=mock_attributes, - secrets_file="", - default_ports=mock_default_ports, - tenant="MOCK_TENANT", - subscription="servicetype" - ) - with self.assertLogs(LOGNAME) as log: - _log_dummy() - subscriptions = generator.generate_subscriptions( - custom_subs={"sensu-agent1": ["eu.eosc.generic.oai-pmh"]} - ) - self.assertEqual( - subscriptions, { - "default": ["eu.eosc.portal.services.url", "internals"], - "sensu-agent1": ["eu.eosc.generic.oai-pmh", "internals"] - } - ) - self.assertEqual(log.output, DUMMY_LOG) - - def test_generate_subs_for_servicetypes_custom_agent_missing_service(self): - generator = ConfigurationGenerator( - metrics=mock_metrics, - profiles=["ARGO_TEST30"], - metric_profiles=mock_metric_profiles, - topology=mock_topology_with_hostname_in_tag, - attributes=mock_attributes, - secrets_file="", - default_ports=mock_default_ports, - tenant="MOCK_TENANT", - subscription="servicetype" - ) - with self.assertLogs(LOGNAME) as log: - _log_dummy() - subscriptions = generator.generate_subscriptions( - custom_subs={"sensu-agent1": ["argo.test"]} - ) - self.assertEqual( - subscriptions, { - "default": ["eu.eosc.portal.services.url", "internals"], - "sensu-agent1": ["argo.test", "internals"] - } - ) - self.assertEqual(log.output, DUMMY_LOG) - - def test_generate_subscriptions_for_entity_sub(self): - generator = ConfigurationGenerator( - metrics=mock_metrics, - profiles=["ARGO_TEST1"], - metric_profiles=mock_metric_profiles, - topology=mock_topology, - attributes=mock_attributes, - secrets_file="", - default_ports=mock_default_ports, - tenant="MOCK_TENANT", - subscription="entity" - ) - with self.assertLogs(LOGNAME) as log: - _log_dummy() - subscriptions = generator.generate_subscriptions() - self.assertEqual( - subscriptions, { - "default": [ - "argo.test__argo.ni4os.eu", - "argo.webui__argo-devel.ni4os.eu", - "argo.webui__argo.ni4os.eu", - "internals" - ] - } - ) - self.assertEqual(log.output, DUMMY_LOG) - - def test_generate_subscriptions_for_entity_subs_custom_agent(self): - generator = ConfigurationGenerator( - metrics=mock_metrics, - profiles=["ARGO_TEST1"], - metric_profiles=mock_metric_profiles, - topology=mock_topology, - attributes=mock_attributes, - secrets_file="", - default_ports=mock_default_ports, - tenant="MOCK_TENANT", - subscription="entity" - ) - with self.assertLogs(LOGNAME) as log: - _log_dummy() - subscriptions = generator.generate_subscriptions( - custom_subs={"sensu-agent1": ["argo.test"]} - ) - self.assertEqual( - subscriptions, { - "default": [ - "argo.webui__argo-devel.ni4os.eu", - "argo.webui__argo.ni4os.eu", - "internals" - ], - "sensu-agent1": ["argo.test__argo.ni4os.eu", "internals"] - } - ) - self.assertEqual(log.output, DUMMY_LOG) - - def test_generate_subs_for_entity_subs_custom_agent_missing_service(self): - generator = ConfigurationGenerator( - metrics=mock_metrics, - profiles=["ARGO_TEST1"], - metric_profiles=mock_metric_profiles, - topology=mock_topology, - attributes=mock_attributes, - secrets_file="", - default_ports=mock_default_ports, - tenant="MOCK_TENANT", - subscription="entity" - ) - with self.assertLogs(LOGNAME) as log: - _log_dummy() - subscriptions = generator.generate_subscriptions( - custom_subs={"sensu-agent1": ["eu.eosc.portal.services.url"]} - ) - self.assertEqual( - subscriptions, { - "default": [ - "argo.test__argo.ni4os.eu", - "argo.webui__argo-devel.ni4os.eu", - "argo.webui__argo.ni4os.eu", - "internals" - ], - "sensu-agent1": ["internals"] - } - ) - self.assertEqual(log.output, DUMMY_LOG) - - def test_generate_internal_services(self): - generator = ConfigurationGenerator( - metrics=mock_metrics, - profiles=["ARGO_TEST1", "ARGO_TEST2", "ARGO_TEST27"], - metric_profiles=mock_metric_profiles, - topology=mock_topology, - attributes=mock_attributes, - secrets_file="", - default_ports=mock_default_ports, - tenant="MOCK_TENANT" - ) - with self.assertLogs(LOGNAME) as log: - _log_dummy() - services = generator.generate_internal_services() - self.assertEqual(services, "argo.test,argo.webui") - self.assertEqual(log.output, DUMMY_LOG) - class OverridesTests(unittest.TestCase): def test_get_metric_parameter_overrides(self): From 242563457ae84fbd524c5c7ca0ed2f2f12f4a2ea Mon Sep 17 00:00:00 2001 From: Katarina Zailac Date: Thu, 22 Aug 2024 16:05:15 +0200 Subject: [PATCH 03/20] Refactor ConfigurationMerger to leave out subscriptions --- modules/generator.py | 33 +-- tests/test_generator.py | 459 ++-------------------------------------- 2 files changed, 23 insertions(+), 469 deletions(-) diff --git a/modules/generator.py b/modules/generator.py index ac0e8b2..832de6b 100644 --- a/modules/generator.py +++ b/modules/generator.py @@ -1401,15 +1401,11 @@ def __init__( self, checks, entities, - internal_services, - subscriptions, metricoverrides4agents=None, attributeoverrides4agents=None ): self.checks = checks self.entities = entities - self.internal_services = internal_services - self.subscriptions = subscriptions self.metric_overrides = metricoverrides4agents self.attribute_overrides = attributeoverrides4agents self.logger = logging.getLogger("argo-scg.generator") @@ -1429,7 +1425,6 @@ def merge_checks(self): d["metadata"]["name"] == check["metadata"]["name"]), None ) - subs = merged_checks[check_index]["subscriptions"] tenants = [ item.strip() for item in merged_checks[check_index][ @@ -1439,11 +1434,7 @@ def merge_checks(self): tenants.append(check["metadata"]["labels"]["tenants"]) - subs.extend(check["subscriptions"]) - - merged_checks[check_index]["subscriptions"] = sorted( - list(set(subs)) - ) + merged_checks[check_index]["subscriptions"] = SUBSCRIPTIONS merged_checks[check_index]["metadata"]["labels"][ "tenants" @@ -1598,25 +1589,3 @@ def merge_attribute_overrides(self): merged_attributes.append(override) return merged_attributes - - def merge_subscriptions(self): - subs = dict() - for tenant, subs_dict in self.subscriptions.items(): - for host, subscriptions in subs_dict.items(): - if host not in subs: - subs.update({host: subscriptions}) - - else: - host_subs = subs[host] - host_subs.extend(subscriptions) - subs[host] = sorted(list(set(host_subs))) - - return subs - - def merge_internal_services(self): - internals = list() - for tenant, services_str in self.internal_services.items(): - services = [item.strip() for item in services_str.split(",")] - internals.extend(services) - - return ",".join(sorted(list(set(internals)))) diff --git a/tests/test_generator.py b/tests/test_generator.py index b576f89..b5cf12c 100644 --- a/tests/test_generator.py +++ b/tests/test_generator.py @@ -14079,14 +14079,14 @@ def test_generate_adhoc_check(self): "/usr/lib64/nagios/plugins/check_tcp -H argo.ni4os.eu -t 120 -p 443" check = generate_adhoc_check( - command=command, subscriptions=["argo-test"], namespace="TENANT1" + command=command, subscriptions=["internals"], namespace="TENANT1" ) self.assertEqual( check, { "command": "/usr/lib64/nagios/plugins/check_tcp -H " "argo.ni4os.eu -t 120 -p 443", - "subscriptions": ["argo-test"], + "subscriptions": ["internals"], "handlers": [], "interval": 86400, "timeout": 900, @@ -14112,8 +14112,7 @@ def setUp(self): "{{ .labels.generic_http_connect_path | " "default " " }}", "subscriptions": [ - "hostname1.example.com", - "hostname2.example.com" + "internals" ], "handlers": [], "pipelines": [ @@ -14155,8 +14154,7 @@ def setUp(self): "-C /etc/sensu/certs/hostcert.pem " "-K /etc/sensu/certs/hostkey.pem", "subscriptions": [ - "hostname1.example.com", - "hostname2.example.com" + "internals" ], "handlers": [], "pipelines": [ @@ -14226,8 +14224,7 @@ def setUp(self): "-t 30 -u {{ .labels.endpoint_url}} " "-x /aris/partition/state_up --ok up", "subscriptions": [ - "hostname3.example.com", - "hostname4.example.com" + "internals" ], "handlers": [], "pipelines": [ @@ -14306,8 +14303,7 @@ def setUp(self): "site": "GRNET", "tenants": "TENANT1" } - }, - "subscriptions": ["argo.test"] + } }, { "entity_class": "proxy", @@ -14324,8 +14320,7 @@ def setUp(self): "site": "GRNET", "tenants": "TENANT1" } - }, - "subscriptions": ["argo.webui"] + } }, { "entity_class": "proxy", @@ -14342,8 +14337,7 @@ def setUp(self): "site": "GRNET", "tenants": "TENANT1" } - }, - "subscriptions": ["argo.webui"] + } } ] self.entities2 = [ @@ -14360,8 +14354,7 @@ def setUp(self): "site": "SRCE", "tenants": "TENANT2" } - }, - "subscriptions": ["argo-mon-devel.egi.eu"] + } }, { "entity_class": "proxy", @@ -14376,8 +14369,7 @@ def setUp(self): "site": "SRCE", "tenants": "TENANT2" } - }, - "subscriptions": ["argo-mon-devel.ni4os.eu"] + } } ] self.metric_overrides1 = [{ @@ -14427,19 +14419,6 @@ def test_merge_checks(self): entities={ "TENANT1": self.entities1, "TENANT2": self.entities2 - }, - internal_services={ - "TENANT1": "service1,service2,service3", - "TENANT2": "service2,service3,service4" - }, - subscriptions={ - "TENANT1": { - "default": ["sub1", "sub2", "sub3"], - "agent1": ["sub1", "sub4"] - }, - "TENANT2": { - "default": ["sub1", "sub2", "sub6"] - } } ) checks = merger.merge_checks() @@ -14486,8 +14465,7 @@ def test_merge_checks(self): "-C /etc/sensu/certs/hostcert.pem " "-K /etc/sensu/certs/hostkey.pem", "subscriptions": [ - "hostname1.example.com", - "hostname2.example.com" + "internals" ], "handlers": [], "pipelines": [ @@ -14528,8 +14506,7 @@ def test_merge_checks(self): "{{ .labels.generic_http_connect_path | " "default " " }}", "subscriptions": [ - "hostname1.example.com", - "hostname2.example.com" + "internals" ], "handlers": [], "pipelines": [ @@ -14565,242 +14542,10 @@ def test_merge_checks(self): "command": "/usr/libexec/argo/probes/xml/check_xml " "-t 30 -u {{ .labels.endpoint_url}} " "-x /aris/partition/state_up --ok up", - "subscriptions": [ - "hostname3.example.com", - "hostname4.example.com" - ], - "handlers": [], - "pipelines": [ - { - "name": "hard_state", - "type": "Pipeline", - "api_version": "core/v2" - } - ], - "proxy_requests": { - "entity_attributes": [ - "entity.entity_class == 'proxy'", - "entity.labels.generic_xml_check == " - "'generic.xml.check'" - ] - }, - "interval": 1800, - "timeout": 900, - "publish": True, - "metadata": { - "name": "generic.xml.check", - "namespace": "test", - "annotations": { - "attempts": "3" - }, - "labels": { - "tenants": "TENANT2" - } - }, - "round_robin": False - } - ] - ) - - def test_merge_checks_if_duplicate_with_different_subscriptions(self): - checks2 = self.checks2.copy() - checks2.append( - { - "command": "/usr/lib64/nagios/plugins/check_http " - "-H {{ .labels.hostname }} -t 60 --link " - "--onredirect follow {{ .labels.ssl | " - "default " " }} {{ .labels." - "generic_http_connect_port | default " " }} " - "{{ .labels.generic_http_connect_path | " - "default " " }}", - "subscriptions": [ - "hostname3.example.com", - "hostname5.example.com" - ], - "handlers": [], - "pipelines": [ - { - "name": "hard_state", - "type": "Pipeline", - "api_version": "core/v2" - } - ], - "proxy_requests": { - "entity_attributes": [ - "entity.entity_class == 'proxy'", - "entity.labels.generic_http_connect == " - "'generic.http.connect'" - ] - }, - "interval": 300, - "timeout": 900, - "publish": True, - "metadata": { - "name": "generic.http.connect", - "namespace": "test", - "annotations": { - "attempts": "3" - }, - "labels": { - "tenants": "TENANT2" - } - }, - "round_robin": False - } - ) - merger = ConfigurationMerger( - checks={ - "TENANT1": self.checks1, - "TENANT2": checks2 - }, - entities={ - "TENANT1": self.entities1, - "TENANT2": self.entities2 - }, - internal_services={ - "TENANT1": "service1,service2,service3", - "TENANT2": "service2,service3,service4" - }, - subscriptions={ - "TENANT1": { - "default": ["sub1", "sub2", "sub3"], - "agent1": ["sub1", "sub4"] - }, - "TENANT2": { - "default": ["sub1", "sub2", "sub6"] - } - } - ) - checks = merger.merge_checks() - self.assertEqual( - sorted(checks, key=lambda c: c["metadata"]["name"]), [ - { - "command": "/usr/libexec/argo/probes/argo_tools/" - "check_log -t 120 --file /var/log/" - "argo-poem-tools/argo-poem-tools.log " - "--age 2 --app argo-poem-packages", "subscriptions": [ "internals" ], "handlers": [], - "pipelines": [ - { - "name": "reduce_alerts", - "type": "Pipeline", - "api_version": "core/v2" - } - ], - "interval": 7200, - "timeout": 900, - "publish": True, - "metadata": { - "name": "argo.poem-tools.check", - "namespace": "test", - "annotations": { - "attempts": "4" - }, - "labels": { - "tenants": "TENANT1,TENANT2" - } - }, - "round_robin": False - }, - { - "command": "/usr/lib64/nagios/plugins/check_ssl_cert " - "-H {{ .labels.hostname }} -t 60 -w 14 -c 0 " - "-N --altnames --rootcert-dir " - "/etc/grid-security/certificates " - "--rootcert-file /etc/pki/tls/certs/" - "ca-bundle.crt " - "-C /etc/sensu/certs/hostcert.pem " - "-K /etc/sensu/certs/hostkey.pem", - "subscriptions": [ - "hostname1.example.com", - "hostname2.example.com" - ], - "handlers": [], - "pipelines": [ - { - "name": "hard_state", - "type": "Pipeline", - "api_version": "core/v2" - } - ], - "proxy_requests": { - "entity_attributes": [ - "entity.entity_class == 'proxy'", - "entity.labels.generic_certificate_validity == " - "'generic.certificate.validity'" - ] - }, - "interval": 14400, - "timeout": 900, - "publish": True, - "metadata": { - "name": "generic.certificate.validity", - "namespace": "test", - "annotations": { - "attempts": "2" - }, - "labels": { - "tenants": "TENANT1" - } - }, - "round_robin": False - }, - { - "command": "/usr/lib64/nagios/plugins/check_http " - "-H {{ .labels.hostname }} -t 60 --link " - "--onredirect follow {{ .labels.ssl | " - "default " " }} {{ .labels." - "generic_http_connect_port | default " " }} " - "{{ .labels.generic_http_connect_path | " - "default " " }}", - "subscriptions": [ - "hostname1.example.com", - "hostname2.example.com", - "hostname3.example.com", - "hostname5.example.com" - ], - "handlers": [], - "pipelines": [ - { - "name": "hard_state", - "type": "Pipeline", - "api_version": "core/v2" - } - ], - "proxy_requests": { - "entity_attributes": [ - "entity.entity_class == 'proxy'", - "entity.labels.generic_http_connect == " - "'generic.http.connect'" - ] - }, - "interval": 300, - "timeout": 900, - "publish": True, - "metadata": { - "name": "generic.http.connect", - "namespace": "test", - "annotations": { - "attempts": "3" - }, - "labels": { - "tenants": "TENANT1,TENANT2" - } - }, - "round_robin": False - }, - { - "command": "/usr/libexec/argo/probes/xml/check_xml " - "-t 30 -u {{ .labels.endpoint_url}} " - "-x /aris/partition/state_up --ok up", - "subscriptions": [ - "hostname3.example.com", - "hostname4.example.com" - ], - "handlers": [], "pipelines": [ { "name": "hard_state", @@ -14842,19 +14587,6 @@ def test_merge_entities(self): entities={ "TENANT1": self.entities1, "TENANT2": self.entities2 - }, - internal_services={ - "TENANT1": "service1,service2,service3", - "TENANT2": "service2,service3,service4" - }, - subscriptions={ - "TENANT1": { - "default": ["sub1", "sub2", "sub3"], - "agent1": ["sub1", "sub4"] - }, - "TENANT2": { - "default": ["sub1", "sub2", "sub6"] - } } ) entities = merger.merge_entities() @@ -14873,8 +14605,7 @@ def test_merge_entities(self): "site": "SRCE", "tenants": "TENANT2" } - }, - "subscriptions": ["argo-mon-devel.egi.eu"] + } }, { "entity_class": "proxy", @@ -14889,8 +14620,7 @@ def test_merge_entities(self): "site": "SRCE", "tenants": "TENANT2" } - }, - "subscriptions": ["argo-mon-devel.ni4os.eu"] + } }, { "entity_class": "proxy", @@ -14906,8 +14636,7 @@ def test_merge_entities(self): "site": "GRNET", "tenants": "TENANT1" } - }, - "subscriptions": ["argo.test"] + } }, { "entity_class": "proxy", @@ -14924,8 +14653,7 @@ def test_merge_entities(self): "site": "GRNET", "tenants": "TENANT1" } - }, - "subscriptions": ["argo.webui"] + } }, { "entity_class": "proxy", @@ -14942,8 +14670,7 @@ def test_merge_entities(self): "site": "GRNET", "tenants": "TENANT1" } - }, - "subscriptions": ["argo.webui"] + } } ] ) @@ -14970,8 +14697,7 @@ def test_merge_entities_if_duplicates(self): "site": "GRNET", "tenants": "TENANT1" } - }, - "subscriptions": ["argo.test"] + } }, { "entity_class": "proxy", @@ -14985,24 +14711,10 @@ def test_merge_entities_if_duplicates(self): "site": "GRNET", "tenants": "TENANT1" } - }, - "subscriptions": ["argo-mon-devel.ni4os.eu"] + } } ], "TENANT2": self.entities2 - }, - internal_services={ - "TENANT1": "service1,service2,service3", - "TENANT2": "service2,service3,service4" - }, - subscriptions={ - "TENANT1": { - "default": ["sub1", "sub2", "sub3"], - "agent1": ["sub1", "sub4"] - }, - "TENANT2": { - "default": ["sub1", "sub2", "sub6"] - } } ) entities = merger.merge_entities() @@ -15021,8 +14733,7 @@ def test_merge_entities_if_duplicates(self): "site": "SRCE", "tenants": "TENANT2" } - }, - "subscriptions": ["argo-mon-devel.egi.eu"] + } }, { "entity_class": "proxy", @@ -15038,8 +14749,7 @@ def test_merge_entities_if_duplicates(self): "site": "GRNET,SRCE", "tenants": "TENANT1,TENANT2" } - }, - "subscriptions": ["argo-mon-devel.ni4os.eu"] + } }, { "entity_class": "proxy", @@ -15055,8 +14765,7 @@ def test_merge_entities_if_duplicates(self): "site": "GRNET", "tenants": "TENANT1" } - }, - "subscriptions": ["argo.test"] + } } ] ) @@ -15071,19 +14780,6 @@ def test_merge_metric_parameter_overrides(self): "TENANT1": self.entities1, "TENANT2": self.entities2 }, - internal_services={ - "TENANT1": "service1,service2,service3", - "TENANT2": "service2,service3,service4" - }, - subscriptions={ - "TENANT1": { - "default": ["sub1", "sub2", "sub3"], - "agent1": ["sub1", "sub4"] - }, - "TENANT2": { - "default": ["sub1", "sub2", "sub6"] - } - }, metricoverrides4agents={ "TENANT1": self.metric_overrides1, "TENANT2": self.metric_overrides2 @@ -15102,19 +14798,6 @@ def test_merge_metric_parameter_overrides_if_diff(self): "TENANT1": self.entities1, "TENANT2": self.entities2 }, - internal_services={ - "TENANT1": "service1,service2,service3", - "TENANT2": "service2,service3,service4" - }, - subscriptions={ - "TENANT1": { - "default": ["sub1", "sub2", "sub3"], - "agent1": ["sub1", "sub4"] - }, - "TENANT2": { - "default": ["sub1", "sub2", "sub6"] - } - }, metricoverrides4agents={ "TENANT1": [{ "metric": "argo.poem-tools.check", @@ -15159,19 +14842,6 @@ def test_merge_metric_parameter_overrides_if_same_metric_different_param( "TENANT1": self.entities1, "TENANT2": self.entities2 }, - internal_services={ - "TENANT1": "service1,service2,service3", - "TENANT2": "service2,service3,service4" - }, - subscriptions={ - "TENANT1": { - "default": ["sub1", "sub2", "sub3"], - "agent1": ["sub1", "sub4"] - }, - "TENANT2": { - "default": ["sub1", "sub2", "sub6"] - } - }, metricoverrides4agents={ "TENANT1": [{ "metric": "argo.poem-tools.check", @@ -15212,19 +14882,6 @@ def test_merge_attribute_overrides(self): "TENANT1": self.entities1, "TENANT2": self.entities2 }, - internal_services={ - "TENANT1": "service1,service2,service3", - "TENANT2": "service2,service3,service4" - }, - subscriptions={ - "TENANT1": { - "default": ["sub1", "sub2", "sub3"], - "agent1": ["sub1", "sub4"] - }, - "TENANT2": { - "default": ["sub1", "sub2", "sub6"] - } - }, attributeoverrides4agents={ "TENANT1": self.attribute_overrides1, "TENANT2": self.attribute_overrides2 @@ -15260,19 +14917,6 @@ def test_merge_attribute_overrides_if_diff(self): "TENANT1": self.entities1, "TENANT2": self.entities2 }, - internal_services={ - "TENANT1": "service1,service2,service3", - "TENANT2": "service2,service3,service4" - }, - subscriptions={ - "TENANT1": { - "default": ["sub1", "sub2", "sub3"], - "agent1": ["sub1", "sub4"] - }, - "TENANT2": { - "default": ["sub1", "sub2", "sub6"] - } - }, attributeoverrides4agents={ "TENANT1": [{ "hostname": "agent1", @@ -15307,62 +14951,3 @@ def test_merge_attribute_overrides_if_diff(self): f"agent1/ROBOT_CERT host attribute override" ] ) - - def test_merge_subscriptions(self): - merger = ConfigurationMerger( - checks={ - "TENANT1": self.checks1, - "TENANT2": self.checks2 - }, - entities={ - "TENANT1": self.entities1, - "TENANT2": self.entities2 - }, - internal_services={ - "TENANT1": "service1,service2,service3", - "TENANT2": "service2,service3,service4" - }, - subscriptions={ - "TENANT1": { - "default": ["sub1", "sub2", "sub3"], - "agent1": ["sub1", "sub4"] - }, - "TENANT2": { - "default": ["sub1", "sub2", "sub6"] - } - } - ) - subs = merger.merge_subscriptions() - self.assertEqual( - subs, { - "default": ["sub1", "sub2", "sub3", "sub6"], - "agent1": ["sub1", "sub4"] - } - ) - - def test_merge_internal_services(self): - merger = ConfigurationMerger( - checks={ - "TENANT1": self.checks1, - "TENANT2": self.checks2 - }, - entities={ - "TENANT1": self.entities1, - "TENANT2": self.entities2 - }, - subscriptions={ - "TENANT1": { - "default": ["sub1", "sub2", "sub3"], - "agent1": ["sub1", "sub4"] - }, - "TENANT2": { - "default": ["sub1", "sub2", "sub6"] - } - }, - internal_services={ - "TENANT1": "service1,service2,service3", - "TENANT2": "service2,service3,service4" - } - ) - internals = merger.merge_internal_services() - self.assertEqual(internals, "service1,service2,service3,service4") From 946e6810d6f5e459c10246bfc16435c933a7a42b Mon Sep 17 00:00:00 2001 From: Katarina Zailac Date: Fri, 23 Aug 2024 11:12:48 +0200 Subject: [PATCH 04/20] Change name of variable used --- modules/sensu.py | 6 ++---- tests/test_sensu.py | 45 +++++++++++++++++---------------------------- 2 files changed, 19 insertions(+), 32 deletions(-) diff --git a/modules/sensu.py b/modules/sensu.py index 7d2b87a..a12e92f 100644 --- a/modules/sensu.py +++ b/modules/sensu.py @@ -6,7 +6,7 @@ import requests from argo_scg.exceptions import SensuException, SCGException, SCGWarnException from argo_scg.generator import create_attribute_env, create_label, \ - is_attribute_secret, INTERNAL_METRICS_SUBSCRIPTION + is_attribute_secret, SUBSCRIPTIONS class Sensu: @@ -1188,9 +1188,7 @@ def _add_asset_check(self, name, namespace): "runtime_assets": [ assets[name] ], - "subscriptions": [ - INTERNAL_METRICS_SUBSCRIPTION - ], + "subscriptions": SUBSCRIPTIONS, "timeout": 900, "round_robin": False, "metadata": { diff --git a/tests/test_sensu.py b/tests/test_sensu.py index 773457f..552e294 100644 --- a/tests/test_sensu.py +++ b/tests/test_sensu.py @@ -229,8 +229,7 @@ "publish": True, "runtime_assets": None, "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" + "internals" ], "proxy_entity_name": "", "check_hooks": None, @@ -277,8 +276,7 @@ "publish": True, "runtime_assets": None, "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" + "internals" ], "proxy_entity_name": "", "check_hooks": None, @@ -323,8 +321,7 @@ "publish": True, "runtime_assets": None, "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" + "internals" ], "proxy_entity_name": "", "check_hooks": None, @@ -4106,8 +4103,7 @@ def setUp(self): "NGI?accept=csv " "--ssl --onredirect follow", "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" + "internals" ], "handlers": ["publisher-handler"], "proxy_requests": { @@ -4135,8 +4131,7 @@ def setUp(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" + "internals" ], "handlers": [], "proxy_requests": { @@ -4172,8 +4167,7 @@ def setUp(self): "-K {{ .labels.ROBOT_KEY | " "default /etc/sensu/certs/hostkey.pem }}", "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" + "internals" ], "handlers": ["publisher-handler"], "proxy_requests": { @@ -4718,8 +4712,7 @@ def test_handle_check_with_hardcoded_attributes( "-T {{ .labels.TRUSTSTORE | default " "/etc/sensu/certs/truststore.ts }}", "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" + "internals" ], "handlers": ["publisher-handler"], "proxy_requests": { @@ -4746,8 +4739,7 @@ def test_handle_check_with_hardcoded_attributes( "-p {{ .labels.BDII_PORT | default 2170 }} " "-H {{ .labels.BDII_HOST }}", "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" + "internals" ], "handlers": ["publisher-handler"], "proxy_requests": { @@ -4851,8 +4843,7 @@ def test_handle_check_with_file_defined_attributes( "--url https://b2access.fz-juelich.de:8443 " "--username username --password pa55w0rD", "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" + "internals" ], "handlers": ["publisher-handler"], "proxy_requests": { @@ -4878,8 +4869,7 @@ def test_handle_check_with_file_defined_attributes( "-p {{ .labels.QCG-COMPUTING_PORT | " "default 19000 }} -x", "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" + "internals" ], "handlers": ["publisher-handler"], "proxy_requests": { @@ -4989,8 +4979,7 @@ def test_handle_check_with_removing_proxy_requests( "publish": True, "runtime_assets": None, "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" + "internals" ], "proxy_entity_name": "", "check_hooks": None, @@ -5200,7 +5189,7 @@ def test_handle_passive_check_if_new( passive_check = { "command": "PASSIVE", "subscriptions": [ - "dcache.arnes.si" + "internals" ], "handlers": [], "pipelines": [], @@ -5257,7 +5246,7 @@ def test_handle_passive_check_if_existing( passive_check = { "command": "PASSIVE", "subscriptions": [ - "dcache.arnes.si" + "internals" ], "handlers": [], "pipelines": [], @@ -5279,7 +5268,7 @@ def test_handle_passive_check_if_existing( "publish": False, "runtime_assets": None, "subscriptions": [ - "dcache.arnes.si" + "internals" ], "proxy_entity_name": "", "check_hooks": None, @@ -5467,7 +5456,7 @@ def test_put_check(self, mock_put): "command": "/usr/lib64/nagios/plugins/check_tcp -H argo.ni4os.eu " "-t 120 -p 443", "subscriptions": [ - "argo.ni4os.eu" + "internals" ], "handlers": [], "interval": 86400, @@ -5500,7 +5489,7 @@ def test_put_check_with_error_with_message(self, mock_put): "command": "/usr/lib64/nagios/plugins/check_tcp -H argo.ni4os.eu " "-t 120 -p 443", "subscriptions": [ - "argo.ni4os.eu" + "internals" ], "handlers": [], "interval": 86400, @@ -5539,7 +5528,7 @@ def test_put_check_with_error_without_message(self, mock_put): "command": "/usr/lib64/nagios/plugins/check_tcp -H argo.ni4os.eu " "-t 120 -p 443", "subscriptions": [ - "argo.ni4os.eu" + "internals" ], "handlers": [], "interval": 86400, From 3e9b7b268c0c66a44510f48d330ea9453a002509 Mon Sep 17 00:00:00 2001 From: Katarina Zailac Date: Fri, 23 Aug 2024 11:19:45 +0200 Subject: [PATCH 05/20] Handle situation when there is no subscription defined for entity --- modules/sensu.py | 6 ++++++ tests/test_sensu.py | 27 +++++---------------------- 2 files changed, 11 insertions(+), 22 deletions(-) diff --git a/modules/sensu.py b/modules/sensu.py index a12e92f..20ab08c 100644 --- a/modules/sensu.py +++ b/modules/sensu.py @@ -504,6 +504,12 @@ def _compare_entities(entity1, entity2): except KeyError: pass + if "subscriptions" not in entity1: + entity1.update({"subscriptions": None}) + + if "subscriptions" not in entity2: + entity2.update({"subscriptions": None}) + if entity1["metadata"]["name"] == entity2["metadata"]["name"] and \ entity1["metadata"]["namespace"] == \ entity2["metadata"]["namespace"] and \ diff --git a/tests/test_sensu.py b/tests/test_sensu.py index 552e294..353c1f2 100644 --- a/tests/test_sensu.py +++ b/tests/test_sensu.py @@ -51,9 +51,7 @@ "cloud_provider": "", "processes": None }, - "subscriptions": [ - "argo.ni4os.eu" - ], + "subscriptions": None, "last_seen": 0, "deregister": False, "deregistration": {}, @@ -81,9 +79,7 @@ "cloud_provider": "", "processes": None }, - "subscriptions": [ - "gocdb.ni4os.eu" - ], + "subscriptions": None, "last_seen": 0, "deregister": False, "deregistration": {}, @@ -129,8 +125,6 @@ }, "subscriptions": [ "entity:sensu-agent1", - "argo.ni4os.eu", - "gocdb.ni4os.eu", "internals" ], "last_seen": 1645005291, @@ -187,9 +181,7 @@ "processes": None }, "subscriptions": [ - "argo.ni4os.eu", "entity:sensu-agent2", - "gocdb.ni4os.eu", "internals" ], "last_seen": 1645005284, @@ -6083,10 +6075,7 @@ def setUp(self): "hostname": "argo-devel.ni4os.eu", "tenants": "TENANT1" }, - }, - "subscriptions": [ - "argo-devel.ni4os.eu" - ] + } }, { "entity_class": "proxy", @@ -6098,10 +6087,7 @@ def setUp(self): "hostname": "argo.ni4os.eu", "tenants": "TENANT1" } - }, - "subscriptions": [ - "argo.ni4os.eu" - ] + } }, { "entity_class": "proxy", @@ -6113,10 +6099,7 @@ def setUp(self): "hostname": "argo-mon.ni4os.eu", "tenants": "TENANT1" } - }, - "subscriptions": [ - "argo-mon.ni4os.eu" - ] + } } ] From 6d86c210f81f4ea90ec84350759aa12a4dabba66 Mon Sep 17 00:00:00 2001 From: Katarina Zailac Date: Fri, 23 Aug 2024 11:29:18 +0200 Subject: [PATCH 06/20] Change tests a bit --- tests/test_sensu.py | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/tests/test_sensu.py b/tests/test_sensu.py index 353c1f2..585751a 100644 --- a/tests/test_sensu.py +++ b/tests/test_sensu.py @@ -9772,8 +9772,7 @@ def setUp(self) -> None: "{{ .labels.ssl }} " "-p {{ .labels.port }} ", "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" + "internals" ], "handlers": [], "proxy_requests": { @@ -9815,10 +9814,7 @@ def setUp(self) -> None: "publish": True, "runtime_assets": None, "subscriptions": [ - "argo-devel.ni4os.eu", - "argo-mon-devel.ni4os.eu", - "argo-mon.ni4os.eu", - "argo2.ni4os.eu" + "internals" ], "proxy_entity_name": "", "check_hooks": None, @@ -9863,8 +9859,7 @@ def setUp(self) -> None: "publish": True, "runtime_assets": None, "subscriptions": [ - "argo-mon-devel.ni4os.eu", - "argo-mon.ni4os.eu" + "internals" ], "proxy_entity_name": "", "check_hooks": None, @@ -9909,7 +9904,7 @@ def setUp(self) -> None: "cloud_provider": "", "processes": None }, - "subscriptions": ["argo.ni4os.eu"], + "subscriptions": None, "last_seen": 0, "deregister": False, "deregistration": {}, @@ -9939,7 +9934,7 @@ def setUp(self) -> None: "cloud_provider": "", "processes": None }, - "subscriptions": ["argo2.ni4os.eu"], + "subscriptions": None, "last_seen": 0, "deregister": False, "deregistration": {}, @@ -9986,11 +9981,8 @@ def setUp(self) -> None: "processes": None }, "subscriptions": [ - "argo-devel.ni4os.eu", - "argo-mon-devel.ni4os.eu", - "argo-mon.ni4os.eu", - "argo2.ni4os.eu", - "entity:sensu-agent1" + "entity:sensu-agent1", + "internals" ], "last_seen": 1645005291, "deregister": False, @@ -10173,14 +10165,11 @@ def test_get_check_subscriptions(self, return_checks): return_checks.return_value = self.checks self.assertEqual( self.sensu.get_check_subscriptions(check="generic.http.connect"), - ["argo-devel.ni4os.eu", "argo.ni4os.eu"] + ["internals"] ) self.assertEqual( self.sensu.get_check_subscriptions(check="generic.tcp.connect"), [ - "argo-devel.ni4os.eu", - "argo-mon-devel.ni4os.eu", - "argo-mon.ni4os.eu", - "argo2.ni4os.eu" + "internals" ] ) @@ -10595,7 +10584,7 @@ def test_delete_silenced_entry_with_multiple_errors_without_message( class SensuCtlTests(unittest.TestCase): - def setUp(self) -> None: + def setUp(self): self.sensuctl = SensuCtl(tenant="ni4os", namespace="default") @patch("argo_scg.sensu.subprocess.check_output") From 37e3fd49987444354d367c5d5a6b244f74fa3f0f Mon Sep 17 00:00:00 2001 From: Katarina Zailac Date: Fri, 23 Aug 2024 12:46:21 +0200 Subject: [PATCH 07/20] Change default check subscription to tenant name --- modules/generator.py | 6 +- tests/test_generator.py | 214 ++++++++++++++++++++-------------------- 2 files changed, 110 insertions(+), 110 deletions(-) diff --git a/modules/generator.py b/modules/generator.py index 832de6b..8848337 100644 --- a/modules/generator.py +++ b/modules/generator.py @@ -88,7 +88,7 @@ def __init__( self.servicesite_name_var = "$_SERVICESITE_NAME$" self.servicevo_fqan_var = "$_SERVICEVO_FQAN$" - self.internal_metrics_subscription = SUBSCRIPTIONS + self.subscriptions = [self.tenant.lower()] metrics_list = list() internal_metrics = list() @@ -780,7 +780,7 @@ def _generate_active_check( check = { "command": command.strip(), - "subscriptions": SUBSCRIPTIONS, + "subscriptions": self.subscriptions, "handlers": [], "interval": int(configuration["config"]["interval"]) * 60, "timeout": 900, @@ -864,7 +864,7 @@ def generate_checks(self, publish, namespace="default"): ] check = { "command": "PASSIVE", - "subscriptions": SUBSCRIPTIONS, + "subscriptions": self.subscriptions, "handlers": [], "pipelines": [HARD_STATE_PIPELINE], "cron": "CRON_TZ=Europe/Zagreb 0 0 31 2 *", diff --git a/tests/test_generator.py b/tests/test_generator.py index b5cf12c..64b1158 100644 --- a/tests/test_generator.py +++ b/tests/test_generator.py @@ -4268,7 +4268,7 @@ def test_generate_checks_configuration(self): "NGI?accept=csv " "--ssl --onredirect follow", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -4304,7 +4304,7 @@ def test_generate_checks_configuration(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -4362,7 +4362,7 @@ def test_generate_checks_configuration_with_faulty_metrics(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -4430,7 +4430,7 @@ def test_generate_checks_configuration_for_default_tenant(self): "NGI?accept=csv " "--ssl --onredirect follow", "subscriptions": [ - "internals" + "default" ], "handlers": [], "interval": 300, @@ -4459,7 +4459,7 @@ def test_generate_checks_configuration_for_default_tenant(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "internals" + "default" ], "handlers": [], "interval": 300, @@ -4515,7 +4515,7 @@ def test_generate_checks_configuration_without_publish(self): "NGI?accept=csv " "--ssl --onredirect follow", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "proxy_requests": { @@ -4551,7 +4551,7 @@ def test_generate_checks_configuration_without_publish(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "proxy_requests": { @@ -4614,7 +4614,7 @@ def test_generate_check_configuration_with_hardcoded_attributes(self): "-C /etc/sensu/certs/hostcert.pem " "-K /etc/sensu/certs/hostkey.pem -p 2119", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "proxy_requests": { @@ -4656,7 +4656,7 @@ def test_generate_check_configuration_with_hardcoded_attributes(self): "-C /etc/sensu/certs/hostcert.pem " "-K /etc/sensu/certs/hostkey.pem", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "proxy_requests": { @@ -4692,7 +4692,7 @@ def test_generate_check_configuration_with_hardcoded_attributes(self): "command": "/usr/lib64/nagios/plugins/check_ftp " "-H {{ .labels.hostname }} -t 60 -p 2811", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "proxy_requests": { @@ -4729,7 +4729,7 @@ def test_generate_check_configuration_with_hardcoded_attributes(self): "CertLifetime-probe -t 60 " "-f /etc/sensu/certs/hostcert.pem", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "interval": 14400, @@ -4785,7 +4785,7 @@ def test_generate_check_configuration_with_robot_cert_key(self): "-C /etc/nagios/robot/robot.pem " "-K /etc/nagios/robot/robot.key -p 2119", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "proxy_requests": { @@ -4827,7 +4827,7 @@ def test_generate_check_configuration_with_robot_cert_key(self): "-C /etc/nagios/robot/robot.pem " "-K /etc/nagios/robot/robot.key", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "proxy_requests": { @@ -4864,7 +4864,7 @@ def test_generate_check_configuration_with_robot_cert_key(self): "CertLifetime-probe -t 60 " "-f /etc/nagios/certs/hostcert.pem", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "interval": 14400, @@ -4922,7 +4922,7 @@ def test_generate_check_configuration_with_SSL(self): "{{ .labels.generic_http_connect_path | " "default \" \" }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "proxy_requests": { @@ -4984,7 +4984,7 @@ def test_generate_check_configuration_with_various_URLs(self): "-u {{ .labels.webdav_url }} " "-E /etc/sensu/certs/userproxy.pem", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -5023,7 +5023,7 @@ def test_generate_check_configuration_with_various_URLs(self): "-u {{ .labels.endpoint_url }} " "-E /etc/sensu/certs/userproxy.pem", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -5061,7 +5061,7 @@ def test_generate_check_configuration_with_various_URLs(self): "--url {{ .labels.info_url }} " "--token /etc/sensu/certs/oidc", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -5122,7 +5122,7 @@ def test_generate_check_configuration_with_BDII(self): "-w 20:1 -b {{ .labels.bdii_dn }} " "-p 2170", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -5161,7 +5161,7 @@ def test_generate_check_configuration_with_BDII(self): "-f {{ .labels.org_nagios_glue2_check_f }} " "-b {{ .labels.glue2_bdii_dn }} -p 2170", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -5223,7 +5223,7 @@ def test_generate_check_configuration_with_mandatory_extensions(self): "-H {{ .labels.hostname }} -t 120 " "--endpoint-name {{ .labels.endpoint_name }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -5292,7 +5292,7 @@ def test_generate_check_configuration_with_optional_extensions(self): "{{ .labels.memory_limit__arc_ce_memory_limit " "| default \"\" }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -5339,7 +5339,7 @@ def test_generate_check_configuration_with_optional_extensions(self): "{{ .labels.memory_limit__arc_ce_memory_limit " "| default \"\" }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -5399,7 +5399,7 @@ def test_generate_check_configuration_with_different_parameter_exts(self): "-H {{ .labels.hostname }} -t 30 -f \"follow\" " "{{ .labels.u__rm_path | default \"\" }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -5439,7 +5439,7 @@ def test_generate_check_configuration_with_different_parameter_exts(self): "-H {{ .labels.hostname }} -t 30 " "{{ .labels.r__rm_path | default \"\" }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -5503,7 +5503,7 @@ def test_generate_openstack_check_configuration(self): "cloudinfo.py -t 300 " "--endpoint {{ .labels.os_keystone_url }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -5541,7 +5541,7 @@ def test_generate_openstack_check_configuration(self): "--endpoint {{ .labels.os_keystone_url }} " "--access-token /etc/sensu/certs/oidc", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -5582,7 +5582,7 @@ def test_generate_openstack_check_configuration(self): "--cert /etc/sensu/certs/userproxy.pem " "{{ .labels.region__os_region | default \"\" }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -5620,7 +5620,7 @@ def test_generate_openstack_check_configuration(self): "default \"443\" }} " "-H {{ .labels.os_keystone_host }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -5683,7 +5683,7 @@ def test_generate_pakiti_check_configuration(self): "--key /etc/sensu/certs/hostkey.pem " "--site {{ .labels.site }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -5748,7 +5748,7 @@ def test_generate_check_configuration_with_SITE_BDII(self): "default \"\" }} " "{{ .labels.endpoint__surl | default \"\" }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -5824,7 +5824,7 @@ def test_generate_check_configuration_with_servicevo_without_voname(self): "default \"\" }} " "{{ .labels.endpoint__surl | default \"\" }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -5894,7 +5894,7 @@ def test_generate_check_configuration_with_ARC_GOOD_SES(self): "{{ .labels.memory_limit__arc_ce_memory_limit " "| default \"\" }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -5956,7 +5956,7 @@ def test_generate_check_configuration_with_HOSTDN(self): "-n {{ .labels.info_hostdn }} " "-x /etc/sensu/certs/userproxy.pem", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -6020,7 +6020,7 @@ def test_generate_check_configuration_with_local_topology(self): "-C /etc/sensu/certs/hostcert.pem " "-K /etc/sensu/certs/hostkey.pem", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -6082,7 +6082,7 @@ def test_generate_check_configuration_with_secrets(self): "checkhealth -H {{ .labels.hostname }} -v -i " "-u $AGORA_USERNAME -p $AGORA_PASSWORD", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -6146,7 +6146,7 @@ def test_generate_check_configuration_with_secrets_with_dots(self): "Cloud Critical-Fedcloud Fedcloud NGIHRTest " "--day 1 --token $ARGO_API_TOKEN", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -6205,7 +6205,7 @@ def test_generate_check_configuration_if_NOPUBLISH(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -6245,7 +6245,7 @@ def test_generate_check_configuration_if_NOPUBLISH(self): "--how-invoked nagios --user-proxy " "/etc/sensu/certs/userproxy.pem", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "proxy_requests": { @@ -6329,7 +6329,7 @@ def test_generate_check_configuration_with_metric_parameter_override(self): "--ok-search {{ .labels.argo_apel_pub_ok_search " "| default \"OK\" }} --case-sensitive", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -6366,7 +6366,7 @@ def test_generate_check_configuration_with_metric_parameter_override(self): "{{ .labels.generic_ssh_test_port | " "default \" \" }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -6404,7 +6404,7 @@ def test_generate_check_configuration_with_metric_parameter_override(self): "-p {{ .labels.generic_tcp_connect_p | " "default \"443\" }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -6492,7 +6492,7 @@ def test_generate_check_configuration_with_host_attribute_override(self): "--password " "{{ .labels.nagios_freshness_password }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -6529,7 +6529,7 @@ def test_generate_check_configuration_with_host_attribute_override(self): "check_handle_resolution.pl -t 10 " "--prefix {{ .labels.b2handle_prefix }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -6566,7 +6566,7 @@ def test_generate_check_configuration_with_host_attribute_override(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -6657,7 +6657,7 @@ def test_generate_check_configuration_with_host_attribute_override_global( "--password " "{{ .labels.nagios_freshness_password }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -6695,7 +6695,7 @@ def test_generate_check_configuration_with_host_attribute_override_global( "--prefix {{ .labels.b2handle_prefix | " "default \"234.234\" }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -6732,7 +6732,7 @@ def test_generate_check_configuration_with_host_attribute_override_global( "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -6814,7 +6814,7 @@ def test_generate_check_configuration_with_overridden_secrets_with_dots( "Cloud Critical-Fedcloud Fedcloud NGIHRTest " "--day 1 --token {{ .labels.argo_api_token }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -6877,7 +6877,7 @@ def test_generate_check_configuration_if_internal_metric(self): "'w:alarms+g:published180' -c 1 -q " "'w:metricsdevel+g:published180' -c 4000", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "interval": 10800, @@ -6906,7 +6906,7 @@ def test_generate_check_configuration_if_internal_metric(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -6994,7 +6994,7 @@ def test_generate_check_if_attribute_ending_in_url_not_servicetype_url( "-u $EDUGAIN_USER -a $EDUGAIN_PASSWORD -s " "https://snf-666522.vm.okeanos.grnet.gr/ni4os-rp/auth.php", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "interval": 900, @@ -7084,7 +7084,7 @@ def test_generate_check_if_attribute_ending_in_url_in_extension(self): "-u {{ .labels.webdav_url }} " "-E /etc/sensu/certs/userproxy.pem", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "interval": 3600, @@ -7143,7 +7143,7 @@ def test_generate_check_if_hostname_in_tags(self): "{{ .labels.generic_http_connect_port | default \" \" }} " "{{ .labels.generic_http_connect_path | default \" \" }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "interval": 300, @@ -7200,7 +7200,7 @@ def test_warning_if_metric_is_missing(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -7285,7 +7285,7 @@ def test_generate_check_configuration_with_override_default_param(self): "{{ .labels.eosc_test_api_l }} " "-u {{ .labels.endpoint_url }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -7345,7 +7345,7 @@ def test_generate_check_configuration_with_hostalias(self): "-f {{ .labels.eudat_b2handle_handle_api_crud_f " "}} --prefix 234.234", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -7421,7 +7421,7 @@ def test_generate_check_configuration_with_hostalias_overridden_param(self): "-f {{ .labels.eudat_b2handle_handle_api_crud_f " "}} --prefix 234.234", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -7497,7 +7497,7 @@ def test_generate_check_configuration_host_attr_override_default_some( " --prefix {{ .labels.b2handle_prefix | " "default \"234.234\" }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -7557,7 +7557,7 @@ def test_generate_check_configuration_with_url_no_url(self): "check_gitlab_liveness.sh -t 10 " "--url {{ .labels.endpoint_url }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -7593,7 +7593,7 @@ def test_generate_check_configuration_with_url_no_url(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -7674,7 +7674,7 @@ def test_generate_check_configuration_with_url_url_param_overrides_all( "check_gitlab_liveness.sh -t 10 " "{{ .labels.eudat_gitlab_liveness_url }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -7710,7 +7710,7 @@ def test_generate_check_configuration_with_url_url_param_overrides_all( "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -7785,7 +7785,7 @@ def test_generate_check_configuration_with_url_url_param_overrides_some( "check_gitlab_liveness.sh -t 10 " "{{ .labels.eudat_gitlab_liveness_url }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -7821,7 +7821,7 @@ def test_generate_check_configuration_with_url_url_param_overrides_some( "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -7898,7 +7898,7 @@ def test_generate_check_configuration_with_url_url_attr_overrides_all( "check_gitlab_liveness.sh -t 10 " "--url {{ .labels.endpoint_url }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -7934,7 +7934,7 @@ def test_generate_check_configuration_with_url_url_attr_overrides_all( "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -8007,7 +8007,7 @@ def test_generate_check_configuration_with_url_url_attr_overrides_some( "check_gitlab_liveness.sh -t 10 " "--url {{ .labels.endpoint_url }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -8043,7 +8043,7 @@ def test_generate_check_configuration_with_url_url_attr_overrides_some( "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -8104,7 +8104,7 @@ def test_generate_check_configuration_default_port_override_by_ext_some( "-H {{ .labels.hostname }} -t 60 " "-p {{ .labels.ssh_port | default \"22\" }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -8164,7 +8164,7 @@ def test_generate_check_configuration_default_port_override_by_ext_none( "command": "/usr/lib64/nagios/plugins/check_ssh " "-H {{ .labels.hostname }} -t 60 -p 22", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -8234,7 +8234,7 @@ def test_generate_check_configuration_default_port_override_by_global_attr( "command": "/usr/lib64/nagios/plugins/check_ssh " "-H {{ .labels.hostname }} -t 60 -p 1022", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -8306,7 +8306,7 @@ def test_generate_check_configuration_default_port_override_by_host_attr( "-H {{ .labels.hostname }} -t 60 " "-p {{ .labels.ssh_port | default \"22\" }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -8401,7 +8401,7 @@ def test_generate_check_configuration_with_attributes_not_defined_anywhere( "--robot-key /etc/nagios/robot/robot.key " "-x /etc/sensu/certs/userproxy.pem", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -8431,7 +8431,7 @@ def test_generate_check_configuration_with_attributes_not_defined_anywhere( "GridProxy-probe -t 30 --vo test " "-x /etc/sensu/certs/userproxy.pem", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -8486,7 +8486,7 @@ def test_generate_check_configuration_with_servicesite_name(self): "--warning-search WARN --critical-search ERROR " "--ok-search OK --case-sensitive", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -8525,7 +8525,7 @@ def test_generate_check_configuration_with_servicesite_name(self): "--warning-search WARN --critical-search ERROR " "--ok-search OK --case-sensitive", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -8602,7 +8602,7 @@ def test_generate_check_configuration_with_servicesite_name_with_override( "--warning-search WARN --critical-search ERROR " "--ok-search OK --case-sensitive", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -8641,7 +8641,7 @@ def test_generate_check_configuration_with_servicesite_name_with_override( "--warning-search WARN --critical-search ERROR " "--ok-search OK --case-sensitive", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -8704,7 +8704,7 @@ def test_generate_http_check_configuration_if_no_URL(self): "-C /etc/sensu/certs/hostcert.pem " "-K /etc/sensu/certs/hostkey.pem", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -8747,7 +8747,7 @@ def test_generate_http_check_configuration_if_no_URL(self): "{{ .labels.generic_http_connect_path | " "default \" \" }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -8811,7 +8811,7 @@ def test_generate_check_configuration_if_attribute_with_dashes(self): "{{ .labels.cvmfs_stratum_1_port | " "default \"8000\" }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -8875,7 +8875,7 @@ def test_generate_passive_check_configuration(self): "default \"\" }} " "{{ .labels.endpoint__surl | default \"\" }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -8910,7 +8910,7 @@ def test_generate_passive_check_configuration(self): { "command": "PASSIVE", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -8938,7 +8938,7 @@ def test_generate_passive_check_configuration(self): { "command": "PASSIVE", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -8992,7 +8992,7 @@ def test_generate_passive_check_configuration_if_parent_missing(self): "--warning-search WARN --critical-search ERROR " "--ok-search OK --case-sensitive", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -9031,7 +9031,7 @@ def test_generate_passive_check_configuration_if_parent_missing(self): "--warning-search WARN --critical-search ERROR " "--ok-search OK --case-sensitive", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -9097,7 +9097,7 @@ def test_generate_check_configuration_if_info_bdii_tag(self): "-K /etc/sensu/certs/hostkey.pem " "-p {{ .labels.srm2_port | default \"8443\" }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -9163,7 +9163,7 @@ def test_generate_check_configuration_if_info_bdii_and_info_ext_tag(self): "-K /etc/sensu/certs/hostkey.pem " "-p {{ .labels.srm2_port | default \"8443\" }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -9227,7 +9227,7 @@ def test_generate_check_with_integer_attributes(self): "{{ .labels.skip_ls_dir__argo_xrootd_skip_ls_dir | " "default \"\" }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -9290,7 +9290,7 @@ def test_generate_check_with_xrootd_webdav_extension(self): "{{ .labels.skip_dir_test__argo_webdav_skip_dir_test " "| default \"\" }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -9332,7 +9332,7 @@ def test_generate_check_with_xrootd_webdav_extension(self): "{{ .labels.skip_ls_dir__argo_xrootd_skip_ls_dir | " "default \"\" }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -9411,7 +9411,7 @@ def test_generate_check_with_xrootd_webdav_extension_with_override(self): "{{ .labels.skip_dir_test__argo_webdav_skip_dir_test " "| default \"\" }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -9453,7 +9453,7 @@ def test_generate_check_with_xrootd_webdav_extension_with_override(self): "{{ .labels.skip_ls_dir__argo_xrootd_skip_ls_dir | " "default \"\" }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -9516,7 +9516,7 @@ def test_generate_check_with_duplicates_in_topology(self): "{{ .labels.skip_dir_test__argo_webdav_skip_dir_test " "| default \"\" }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -9579,7 +9579,7 @@ def test_generate_check_with_non_fallback_attribute_in_every_endpoint(self): "{{ .labels.skip_ls_dir__argo_xrootd_skip_ls_dir | " "default \"\" }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "interval": 3600, @@ -9660,7 +9660,7 @@ def test_generate_ARC_CE_check_with_set_VO_FQAN(self): "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "interval": 300, @@ -9704,7 +9704,7 @@ def test_generate_ARC_CE_check_with_set_VO_FQAN(self): "{{ .labels.memory_limit__arc_ce_memory_limit " "| default \"\" }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "interval": 3600, @@ -9772,7 +9772,7 @@ def test_generate_ARC_CE_check_without_VONAME(self): "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "interval": 300, @@ -9837,7 +9837,7 @@ def test_generate_check_configuration_if_skipped_metrics(self): "cloudinfo.py -t 300 " "--endpoint {{ .labels.os_keystone_url }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -9878,7 +9878,7 @@ def test_generate_check_configuration_if_skipped_metrics(self): "--cert /etc/sensu/certs/userproxy.pem " "{{ .labels.region__os_region | default \"\" }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -9939,7 +9939,7 @@ def test_generate_check_configuration_if_skipped_metric_missing(self): "cloudinfo.py -t 300 " "--endpoint {{ .labels.os_keystone_url }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -9977,7 +9977,7 @@ def test_generate_check_configuration_if_skipped_metric_missing(self): "--endpoint {{ .labels.os_keystone_url }} " "--access-token /etc/sensu/certs/oidc", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -10018,7 +10018,7 @@ def test_generate_check_configuration_if_skipped_metric_missing(self): "--cert /etc/sensu/certs/userproxy.pem " "{{ .labels.region__os_region | default \"\" }}", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "pipelines": [ @@ -10081,7 +10081,7 @@ def test_generate_check_configuration_if_SILENCED_flag(self): "'w:alarms+g:published180' -c 1 -q " "'w:metricsdevel+g:published180' -c 4000", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "interval": 10800, @@ -10113,7 +10113,7 @@ def test_generate_check_configuration_if_SILENCED_flag(self): "--how-invoked nagios --voms test " "--user-proxy /etc/sensu/certs/userproxy.pem", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "interval": 1200, @@ -10140,7 +10140,7 @@ def test_generate_check_configuration_if_SILENCED_flag(self): "--how-invoked nagios --voms test " "--user-proxy /etc/sensu/certs/userproxy.pem", "subscriptions": [ - "internals" + "mock_tenant" ], "handlers": [], "interval": 1200, From 7715fb1356ede039bd530005e26a17c50e91f2ef Mon Sep 17 00:00:00 2001 From: Katarina Zailac Date: Fri, 23 Aug 2024 13:05:53 +0200 Subject: [PATCH 08/20] Handle subscriptions for merged checks --- modules/generator.py | 15 +++++++++++++-- tests/test_generator.py | 31 +++++++++++++++++++++++-------- 2 files changed, 36 insertions(+), 10 deletions(-) diff --git a/modules/generator.py b/modules/generator.py index 8848337..bc5deac 100644 --- a/modules/generator.py +++ b/modules/generator.py @@ -11,7 +11,7 @@ "TRUSTSTORE": "/etc/sensu/certs/truststore.ts" } -SUBSCRIPTIONS = ["internals"] +DEFAULT_SUBSCRIPTION = "internals" HARD_STATE_PIPELINE = { "name": "hard_state", @@ -1434,7 +1434,13 @@ def merge_checks(self): tenants.append(check["metadata"]["labels"]["tenants"]) - merged_checks[check_index]["subscriptions"] = SUBSCRIPTIONS + if len(tenants) > 1: + subs = [DEFAULT_SUBSCRIPTION] + + else: + subs = [tenants[0].lower()] + + merged_checks[check_index]["subscriptions"] = subs merged_checks[check_index]["metadata"]["labels"][ "tenants" @@ -1589,3 +1595,8 @@ def merge_attribute_overrides(self): merged_attributes.append(override) return merged_attributes + + def get_subscriptions(self): + return sorted( + [t.lower() for t in self.checks.keys()] + [DEFAULT_SUBSCRIPTION] + ) diff --git a/tests/test_generator.py b/tests/test_generator.py index 64b1158..f0ee647 100644 --- a/tests/test_generator.py +++ b/tests/test_generator.py @@ -14112,7 +14112,7 @@ def setUp(self): "{{ .labels.generic_http_connect_path | " "default " " }}", "subscriptions": [ - "internals" + "tenant1" ], "handlers": [], "pipelines": [ @@ -14154,7 +14154,7 @@ def setUp(self): "-C /etc/sensu/certs/hostcert.pem " "-K /etc/sensu/certs/hostkey.pem", "subscriptions": [ - "internals" + "tenant1" ], "handlers": [], "pipelines": [ @@ -14192,7 +14192,7 @@ def setUp(self): "argo-poem-tools/argo-poem-tools.log " "--age 2 --app argo-poem-packages", "subscriptions": [ - "internals" + "tenant1" ], "handlers": [], "pipelines": [ @@ -14224,7 +14224,7 @@ def setUp(self): "-t 30 -u {{ .labels.endpoint_url}} " "-x /aris/partition/state_up --ok up", "subscriptions": [ - "internals" + "tenant2" ], "handlers": [], "pipelines": [ @@ -14262,7 +14262,7 @@ def setUp(self): "argo-poem-tools/argo-poem-tools.log " "--age 2 --app argo-poem-packages", "subscriptions": [ - "internals" + "tenant2" ], "handlers": [], "pipelines": [ @@ -14465,7 +14465,7 @@ def test_merge_checks(self): "-C /etc/sensu/certs/hostcert.pem " "-K /etc/sensu/certs/hostkey.pem", "subscriptions": [ - "internals" + "tenant1" ], "handlers": [], "pipelines": [ @@ -14506,7 +14506,7 @@ def test_merge_checks(self): "{{ .labels.generic_http_connect_path | " "default " " }}", "subscriptions": [ - "internals" + "tenant1" ], "handlers": [], "pipelines": [ @@ -14543,7 +14543,7 @@ def test_merge_checks(self): "-t 30 -u {{ .labels.endpoint_url}} " "-x /aris/partition/state_up --ok up", "subscriptions": [ - "internals" + "tenant2" ], "handlers": [], "pipelines": [ @@ -14951,3 +14951,18 @@ def test_merge_attribute_overrides_if_diff(self): f"agent1/ROBOT_CERT host attribute override" ] ) + + def test_get_subscriptions(self): + merger = ConfigurationMerger( + checks={ + "TENANT1": self.checks1, + "TENANT2": self.checks2 + }, + entities={ + "TENANT1": self.entities1, + "TENANT2": self.entities2 + } + ) + self.assertEqual( + merger.get_subscriptions(), ["internals", "tenant1", "tenant2"] + ) From 62692dfc7f90323cb6a0b328667d7cd13eb1e090 Mon Sep 17 00:00:00 2001 From: Katarina Zailac Date: Fri, 23 Aug 2024 13:54:32 +0200 Subject: [PATCH 09/20] Handle subscriptions of cpu and memory checks --- modules/sensu.py | 12 +++- tests/test_sensu.py | 164 ++++++++++++++++++-------------------------- 2 files changed, 77 insertions(+), 99 deletions(-) diff --git a/modules/sensu.py b/modules/sensu.py index 20ab08c..e722549 100644 --- a/modules/sensu.py +++ b/modules/sensu.py @@ -6,7 +6,7 @@ import requests from argo_scg.exceptions import SensuException, SCGException, SCGWarnException from argo_scg.generator import create_attribute_env, create_label, \ - is_attribute_secret, SUBSCRIPTIONS + is_attribute_secret, DEFAULT_SUBSCRIPTION class Sensu: @@ -1182,6 +1182,14 @@ def _add_asset_check(self, name, namespace): checks = self._get_checks(namespace=namespace) checks_names = [check["metadata"]["name"] for check in checks] + tenants = self.namespaces[namespace] + + if len(tenants) > 1: + subs = DEFAULT_SUBSCRIPTION + + else: + subs = tenants[0].lower() + assets = { "sensu.cpu.usage": "check-cpu-usage", "sensu.memory.usage": "check-memory-usage" @@ -1194,7 +1202,7 @@ def _add_asset_check(self, name, namespace): "runtime_assets": [ assets[name] ], - "subscriptions": SUBSCRIPTIONS, + "subscriptions": [subs], "timeout": 900, "round_robin": False, "metadata": { diff --git a/tests/test_sensu.py b/tests/test_sensu.py index 585751a..362b65e 100644 --- a/tests/test_sensu.py +++ b/tests/test_sensu.py @@ -221,7 +221,7 @@ "publish": True, "runtime_assets": None, "subscriptions": [ - "internals" + "tenant1" ], "proxy_entity_name": "", "check_hooks": None, @@ -268,7 +268,7 @@ "publish": True, "runtime_assets": None, "subscriptions": [ - "internals" + "tenant1" ], "proxy_entity_name": "", "check_hooks": None, @@ -313,7 +313,7 @@ "publish": True, "runtime_assets": None, "subscriptions": [ - "internals" + "tenant1" ], "proxy_entity_name": "", "check_hooks": None, @@ -358,7 +358,7 @@ "check-cpu-usage" ], "subscriptions": [ - "internals" + "tenant1" ], "proxy_entity_name": "", "check_hooks": None, @@ -398,7 +398,7 @@ "check-memory-usage" ], "subscriptions": [ - "internals" + "tenant1" ], "proxy_entity_name": "", "check_hooks": None, @@ -1325,8 +1325,7 @@ "publish": True, "runtime_assets": None, "subscriptions": [ - "argo-mon-devel.ni4os.eu", - "argo-mon.ni4os.eu" + "ni4os" ], "proxy_entity_name": "argo.mon__argo-mon-devel.ni4os.eu", "check_hooks": None, @@ -1437,9 +1436,7 @@ "cloud_provider": "", "processes": None }, - "subscriptions": [ - "argo-mon-devel.ni4os.eu" - ], + "subscriptions": None, "last_seen": 0, "deregister": False, "deregistration": {}, @@ -1489,8 +1486,7 @@ "publish": True, "runtime_assets": None, "subscriptions": [ - "argo-mon-devel.ni4os.eu", - "argo-mon.ni4os.eu" + "ni4os" ], "proxy_entity_name": "argo.mon__argo-mon-devel.ni4os.eu", "check_hooks": None, @@ -1643,9 +1639,7 @@ "cloud_provider": "", "processes": None }, - "subscriptions": [ - "argo-mon-devel.ni4os.eu" - ], + "subscriptions": None, "last_seen": 0, "deregister": False, "deregistration": {}, @@ -1694,7 +1688,7 @@ "publish": True, "runtime_assets": None, "subscriptions": [ - "agora.ni4os.eu" + "ni4os" ], "proxy_entity_name": "eu.eudat.itsm.spmt__agora.ni4os.eu", "check_hooks": None, @@ -1789,9 +1783,7 @@ "cloud_provider": "", "processes": None }, - "subscriptions": [ - "agora.ni4os.eu" - ], + "subscriptions": None, "last_seen": 0, "deregister": False, "deregistration": {}, @@ -1839,8 +1831,7 @@ "publish": True, "runtime_assets": None, "subscriptions": [ - "cherry.chem.bg.ac.rs", - "videolectures.net" + "ni4os" ], "proxy_entity_name": "eu.ni4os.repo.publication__cherry.chem.bg.ac.rs", @@ -1955,9 +1946,7 @@ "cloud_provider": "", "processes": None }, - "subscriptions": [ - "cherry.chem.bg.ac.rs" - ], + "subscriptions": None, "last_seen": 0, "deregister": False, "deregistration": {}, @@ -2010,10 +1999,7 @@ "publish": True, "runtime_assets": None, "subscriptions": [ - "argo-mon-devel.ni4os.eu", - "argo-mon.ni4os.eu", - "cherry.chem.bg.ac.rs", - "videolectures.net" + "ni4os" ], "proxy_entity_name": "eu.ni4os.repo.publication__videolectures.net", "check_hooks": None, @@ -2119,9 +2105,7 @@ "cloud_provider": "", "processes": None }, - "subscriptions": [ - "videolectures.net" - ], + "subscriptions": None, "last_seen": 0, "deregister": False, "deregistration": {}, @@ -2170,9 +2154,7 @@ "publish": True, "runtime_assets": None, "subscriptions": [ - "argo-mon-devel.ni4os.eu", - "argo-mon.ni4os.eu", - "internals" + "ni4os" ], "proxy_entity_name": "", "check_hooks": None, @@ -2271,12 +2253,7 @@ }, "subscriptions": [ "entity:sensu-agent-ni4os-devel.cro-ngi", - "agora.ni4os.eu", - "argo-mon-devel.ni4os.eu", - "argo-mon.ni4os.eu", - "cherry.chem.bg.ac.rs", - "internals", - "videolectures.net" + "ni4os", ], "last_seen": 1682322924, "deregister": False, @@ -2318,9 +2295,7 @@ "publish": True, "runtime_assets": None, "subscriptions": [ - "argo-mon-devel.ni4os.eu", - "argo-mon.ni4os.eu", - "internals" + "ni4os" ], "proxy_entity_name": "", "check_hooks": None, @@ -2413,12 +2388,7 @@ }, "subscriptions": [ "entity:sensu-agent-ni4os-devel.cro-ngi", - "agora.ni4os.eu", - "argo-mon-devel.ni4os.eu", - "argo-mon.ni4os.eu", - "cherry.chem.bg.ac.rs", - "internals", - "videolectures.net" + "ni4os" ], "last_seen": 1682319670, "deregister": False, @@ -2464,7 +2434,7 @@ 'publish': True, 'runtime_assets': None, 'subscriptions': [ - 'ce503.cern.ch', 'ce504.cern.ch', 'ce505.cern.ch' + "ni4os" ], 'proxy_entity_name': 'org.opensciencegrid.htcondorce__ce503.cern.ch', @@ -2523,7 +2493,7 @@ }, 'entity': { 'entity_class': 'proxy', - 'subscriptions': ['ce503.cern.ch'], + 'subscriptions': None, 'last_seen': 0, 'deregister': False, 'deregistration': {}, @@ -2574,7 +2544,7 @@ 'publish': True, 'runtime_assets': None, 'subscriptions': [ - 'ce503.cern.ch', 'ce504.cern.ch', 'ce505.cern.ch' + "ni4os" ], 'proxy_entity_name': 'org.opensciencegrid.htcondorce__ce503.cern.ch', @@ -2632,7 +2602,7 @@ }, 'entity': { 'entity_class': 'proxy', - 'subscriptions': ['ce503.cern.ch'], + 'subscriptions': None, 'last_seen': 0, 'deregister': False, 'deregistration': {}, @@ -2716,7 +2686,7 @@ }, 'entity': { 'entity_class': 'proxy', - 'subscriptions': ['ce503.cern.ch'], + 'subscriptions': None, 'last_seen': 0, 'deregister': False, 'deregistration': {}, @@ -2764,7 +2734,7 @@ 'publish': True, 'runtime_assets': None, 'subscriptions': [ - "sub1", "sub2", "sub3" + "ni4os" ], 'proxy_entity_name': 'ARC-CE__hostname1.example.com', 'check_hooks': None, @@ -2818,7 +2788,7 @@ }]}, 'entity': { 'entity_class': 'proxy', - 'subscriptions': ['ARC-CE__hostname1.example.com'], + 'subscriptions': None, 'last_seen': 0, 'deregister': False, 'deregistration': {}, @@ -2875,7 +2845,7 @@ 'publish': True, 'runtime_assets': None, 'subscriptions': [ - "sub1", "sub2", "sub3" + "ni4os" ], 'proxy_entity_name': 'ARC-CE__hostname1.example.com', 'check_hooks': None, @@ -2932,7 +2902,7 @@ }, 'entity': { 'entity_class': 'proxy', - 'subscriptions': ['ARC-CE__hostname1.example.com'], + 'subscriptions': None, 'last_seen': 0, 'deregister': False, 'deregistration': {}, @@ -3030,7 +3000,7 @@ }, 'entity': { 'entity_class': 'proxy', - 'subscriptions': ["sub1"], + 'subscriptions': None, 'last_seen': 0, 'deregister': False, 'deregistration': {}, @@ -3124,7 +3094,7 @@ }, 'entity': { 'entity_class': 'proxy', - 'subscriptions': ['ARC-CE__hostname2.example.com'], + 'subscriptions': None, 'last_seen': 0, 'deregister': False, 'deregistration': {}, @@ -3215,7 +3185,7 @@ }, 'entity': { 'entity_class': 'proxy', - 'subscriptions': ['ARC-CE__hostname3.example.com'], + 'subscriptions': None, 'last_seen': 0, 'deregister': False, 'deregistration': {}, @@ -3273,9 +3243,7 @@ "publish": True, "runtime_assets": None, "subscriptions": [ - "lists.submerse.eu", - "submerse.eu", - "www.grnet.gr" + "tenant2" ], "proxy_entity_name": "WebService__hostname.test.eu_id_3", "check_hooks": None, @@ -3348,9 +3316,7 @@ }, "entity": { "entity_class": "proxy", - "subscriptions": [ - "lists.submerse.eu" - ], + "subscriptions": None, "last_seen": 0, "deregister": False, "deregistration": {}, @@ -4095,7 +4061,7 @@ def setUp(self): "NGI?accept=csv " "--ssl --onredirect follow", "subscriptions": [ - "internals" + "tenant1" ], "handlers": ["publisher-handler"], "proxy_requests": { @@ -4123,7 +4089,7 @@ def setUp(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "internals" + "tenant1" ], "handlers": [], "proxy_requests": { @@ -4159,7 +4125,7 @@ def setUp(self): "-K {{ .labels.ROBOT_KEY | " "default /etc/sensu/certs/hostkey.pem }}", "subscriptions": [ - "internals" + "tenant1" ], "handlers": ["publisher-handler"], "proxy_requests": { @@ -4704,7 +4670,7 @@ def test_handle_check_with_hardcoded_attributes( "-T {{ .labels.TRUSTSTORE | default " "/etc/sensu/certs/truststore.ts }}", "subscriptions": [ - "internals" + "tenant1" ], "handlers": ["publisher-handler"], "proxy_requests": { @@ -4731,7 +4697,7 @@ def test_handle_check_with_hardcoded_attributes( "-p {{ .labels.BDII_PORT | default 2170 }} " "-H {{ .labels.BDII_HOST }}", "subscriptions": [ - "internals" + "tenant1" ], "handlers": ["publisher-handler"], "proxy_requests": { @@ -4835,7 +4801,7 @@ def test_handle_check_with_file_defined_attributes( "--url https://b2access.fz-juelich.de:8443 " "--username username --password pa55w0rD", "subscriptions": [ - "internals" + "tenant1" ], "handlers": ["publisher-handler"], "proxy_requests": { @@ -4861,7 +4827,7 @@ def test_handle_check_with_file_defined_attributes( "-p {{ .labels.QCG-COMPUTING_PORT | " "default 19000 }} -x", "subscriptions": [ - "internals" + "tenant1" ], "handlers": ["publisher-handler"], "proxy_requests": { @@ -4971,7 +4937,7 @@ def test_handle_check_with_removing_proxy_requests( "publish": True, "runtime_assets": None, "subscriptions": [ - "internals" + "tenant1" ], "proxy_entity_name": "", "check_hooks": None, @@ -5181,7 +5147,7 @@ def test_handle_passive_check_if_new( passive_check = { "command": "PASSIVE", "subscriptions": [ - "internals" + "tenant1" ], "handlers": [], "pipelines": [], @@ -5238,7 +5204,7 @@ def test_handle_passive_check_if_existing( passive_check = { "command": "PASSIVE", "subscriptions": [ - "internals" + "tenant1" ], "handlers": [], "pipelines": [], @@ -5260,7 +5226,7 @@ def test_handle_passive_check_if_existing( "publish": False, "runtime_assets": None, "subscriptions": [ - "internals" + "tenant1" ], "proxy_entity_name": "", "check_hooks": None, @@ -5448,7 +5414,7 @@ def test_put_check(self, mock_put): "command": "/usr/lib64/nagios/plugins/check_tcp -H argo.ni4os.eu " "-t 120 -p 443", "subscriptions": [ - "internals" + "tenant1" ], "handlers": [], "interval": 86400, @@ -5481,7 +5447,7 @@ def test_put_check_with_error_with_message(self, mock_put): "command": "/usr/lib64/nagios/plugins/check_tcp -H argo.ni4os.eu " "-t 120 -p 443", "subscriptions": [ - "internals" + "tenant1" ], "handlers": [], "interval": 86400, @@ -5520,7 +5486,7 @@ def test_put_check_with_error_without_message(self, mock_put): "command": "/usr/lib64/nagios/plugins/check_tcp -H argo.ni4os.eu " "-t 120 -p 443", "subscriptions": [ - "internals" + "tenant1" ], "handlers": [], "interval": 86400, @@ -8513,7 +8479,7 @@ def setUp(self): "check-cpu-usage" ], "subscriptions": [ - "internals" + "tenant1" ], "timeout": 900, "round_robin": False, @@ -8540,7 +8506,7 @@ def setUp(self): "check-memory-usage" ], "subscriptions": [ - "internals" + "tenant1" ], "timeout": 900, "round_robin": False, @@ -8677,7 +8643,7 @@ def test_add_cpu_check_if_exists_and_different( "check-cpu-usage" ], "subscriptions": [ - "internals" + "tenant1" ], "proxy_entity_name": "", "check_hooks": None, @@ -8742,7 +8708,7 @@ def test_update_cpu_check_error_with_message( "check-cpu-usage" ], "subscriptions": [ - "internals" + "tenant1" ], "proxy_entity_name": "", "check_hooks": None, @@ -8814,7 +8780,7 @@ def test_update_cpu_check_error_without_message( "check-cpu-usage" ], "subscriptions": [ - "internals" + "tenant1" ], "proxy_entity_name": "", "check_hooks": None, @@ -8987,7 +8953,7 @@ def test_add_memory_check_if_exists_and_different( "check-memory-usage" ], "subscriptions": [ - "internals" + "tenant1" ], "proxy_entity_name": "", "check_hooks": None, @@ -9052,7 +9018,7 @@ def test_update_memory_check_error_with_message( "check-memory-usage" ], "subscriptions": [ - "internals" + "tenant1" ], "proxy_entity_name": "", "check_hooks": None, @@ -9124,7 +9090,7 @@ def test_update_memory_check_error_without_message( "check-memory-usage" ], "subscriptions": [ - "internals" + "tenant1" ], "proxy_entity_name": "", "check_hooks": None, @@ -9193,7 +9159,9 @@ def setUp(self) -> None: "low_flap_threshold": 0, "publish": True, "runtime_assets": None, - "subscriptions": ["hostname.example.eu_site-name"], + "subscriptions": [ + "tenant" + ], "proxy_entity_name": "eu.eosc.portal.services.url__hostname." "example.eu_site-name", "check_hooks": None, @@ -9260,7 +9228,9 @@ def setUp(self) -> None: "cloud_provider": "", "processes": None }, - "subscriptions": ["hostname.example.eu_site-name"], + "subscriptions": [ + "tenant" + ], "last_seen": 0, "deregister": False, "deregistration": {}, @@ -9772,7 +9742,7 @@ def setUp(self) -> None: "{{ .labels.ssl }} " "-p {{ .labels.port }} ", "subscriptions": [ - "internals" + "default" ], "handlers": [], "proxy_requests": { @@ -9814,7 +9784,7 @@ def setUp(self) -> None: "publish": True, "runtime_assets": None, "subscriptions": [ - "internals" + "default" ], "proxy_entity_name": "", "check_hooks": None, @@ -9859,7 +9829,7 @@ def setUp(self) -> None: "publish": True, "runtime_assets": None, "subscriptions": [ - "internals" + "default" ], "proxy_entity_name": "", "check_hooks": None, @@ -9982,7 +9952,7 @@ def setUp(self) -> None: }, "subscriptions": [ "entity:sensu-agent1", - "internals" + "default" ], "last_seen": 1645005291, "deregister": False, @@ -10165,11 +10135,11 @@ def test_get_check_subscriptions(self, return_checks): return_checks.return_value = self.checks self.assertEqual( self.sensu.get_check_subscriptions(check="generic.http.connect"), - ["internals"] + ["default"] ) self.assertEqual( self.sensu.get_check_subscriptions(check="generic.tcp.connect"), [ - "internals" + "default" ] ) From b482a0f6f08828a98ce59a004cf8d15810fd8126 Mon Sep 17 00:00:00 2001 From: Katarina Zailac Date: Mon, 26 Aug 2024 08:18:30 +0200 Subject: [PATCH 10/20] Use entity name as subscription --- modules/generator.py | 4 +- tests/test_generator.py | 571 ++++++++++++++++++++++++---------------- 2 files changed, 347 insertions(+), 228 deletions(-) diff --git a/modules/generator.py b/modules/generator.py index bc5deac..b52f487 100644 --- a/modules/generator.py +++ b/modules/generator.py @@ -59,7 +59,7 @@ def generate_adhoc_check(command, subscriptions, namespace="default"): class ConfigurationGenerator: def __init__( self, metrics, metric_profiles, topology, profiles, - attributes, secrets_file, default_ports, tenant, + attributes, secrets_file, default_ports, tenant, default_agent, skipped_metrics=None ): self.logger = logging.getLogger("argo-scg.generator") @@ -88,7 +88,7 @@ def __init__( self.servicesite_name_var = "$_SERVICESITE_NAME$" self.servicevo_fqan_var = "$_SERVICEVO_FQAN$" - self.subscriptions = [self.tenant.lower()] + self.subscriptions = [f"entity:{default_agent}"] metrics_list = list() internal_metrics = list() diff --git a/tests/test_generator.py b/tests/test_generator.py index f0ee647..44bcfc5 100644 --- a/tests/test_generator.py +++ b/tests/test_generator.py @@ -4250,7 +4250,8 @@ def test_generate_checks_configuration(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -4268,7 +4269,7 @@ def test_generate_checks_configuration(self): "NGI?accept=csv " "--ssl --onredirect follow", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -4304,7 +4305,7 @@ def test_generate_checks_configuration(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -4349,7 +4350,8 @@ def test_generate_checks_configuration_with_faulty_metrics(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: checks = generator.generate_checks( @@ -4362,7 +4364,7 @@ def test_generate_checks_configuration_with_faulty_metrics(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -4412,7 +4414,8 @@ def test_generate_checks_configuration_for_default_tenant(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="default" + tenant="default", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -4430,7 +4433,7 @@ def test_generate_checks_configuration_for_default_tenant(self): "NGI?accept=csv " "--ssl --onredirect follow", "subscriptions": [ - "default" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "interval": 300, @@ -4459,7 +4462,7 @@ def test_generate_checks_configuration_for_default_tenant(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "default" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "interval": 300, @@ -4497,7 +4500,8 @@ def test_generate_checks_configuration_without_publish(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -4515,7 +4519,7 @@ def test_generate_checks_configuration_without_publish(self): "NGI?accept=csv " "--ssl --onredirect follow", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "proxy_requests": { @@ -4551,7 +4555,7 @@ def test_generate_checks_configuration_without_publish(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "proxy_requests": { @@ -4596,7 +4600,8 @@ def test_generate_check_configuration_with_hardcoded_attributes(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -4614,7 +4619,7 @@ def test_generate_check_configuration_with_hardcoded_attributes(self): "-C /etc/sensu/certs/hostcert.pem " "-K /etc/sensu/certs/hostkey.pem -p 2119", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "proxy_requests": { @@ -4656,7 +4661,7 @@ def test_generate_check_configuration_with_hardcoded_attributes(self): "-C /etc/sensu/certs/hostcert.pem " "-K /etc/sensu/certs/hostkey.pem", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "proxy_requests": { @@ -4692,7 +4697,7 @@ def test_generate_check_configuration_with_hardcoded_attributes(self): "command": "/usr/lib64/nagios/plugins/check_ftp " "-H {{ .labels.hostname }} -t 60 -p 2811", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "proxy_requests": { @@ -4729,7 +4734,7 @@ def test_generate_check_configuration_with_hardcoded_attributes(self): "CertLifetime-probe -t 60 " "-f /etc/sensu/certs/hostcert.pem", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "interval": 14400, @@ -4767,7 +4772,8 @@ def test_generate_check_configuration_with_robot_cert_key(self): attributes=mock_attributes_with_robot, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -4785,7 +4791,7 @@ def test_generate_check_configuration_with_robot_cert_key(self): "-C /etc/nagios/robot/robot.pem " "-K /etc/nagios/robot/robot.key -p 2119", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "proxy_requests": { @@ -4827,7 +4833,7 @@ def test_generate_check_configuration_with_robot_cert_key(self): "-C /etc/nagios/robot/robot.pem " "-K /etc/nagios/robot/robot.key", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "proxy_requests": { @@ -4864,7 +4870,7 @@ def test_generate_check_configuration_with_robot_cert_key(self): "CertLifetime-probe -t 60 " "-f /etc/nagios/certs/hostcert.pem", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "interval": 14400, @@ -4902,7 +4908,8 @@ def test_generate_check_configuration_with_SSL(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -4922,7 +4929,7 @@ def test_generate_check_configuration_with_SSL(self): "{{ .labels.generic_http_connect_path | " "default \" \" }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "proxy_requests": { @@ -4967,7 +4974,8 @@ def test_generate_check_configuration_with_various_URLs(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -4984,7 +4992,7 @@ def test_generate_check_configuration_with_various_URLs(self): "-u {{ .labels.webdav_url }} " "-E /etc/sensu/certs/userproxy.pem", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -5023,7 +5031,7 @@ def test_generate_check_configuration_with_various_URLs(self): "-u {{ .labels.endpoint_url }} " "-E /etc/sensu/certs/userproxy.pem", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -5061,7 +5069,7 @@ def test_generate_check_configuration_with_various_URLs(self): "--url {{ .labels.info_url }} " "--token /etc/sensu/certs/oidc", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -5106,7 +5114,8 @@ def test_generate_check_configuration_with_BDII(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -5122,7 +5131,7 @@ def test_generate_check_configuration_with_BDII(self): "-w 20:1 -b {{ .labels.bdii_dn }} " "-p 2170", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -5161,7 +5170,7 @@ def test_generate_check_configuration_with_BDII(self): "-f {{ .labels.org_nagios_glue2_check_f }} " "-b {{ .labels.glue2_bdii_dn }} -p 2170", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -5206,7 +5215,8 @@ def test_generate_check_configuration_with_mandatory_extensions(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -5223,7 +5233,7 @@ def test_generate_check_configuration_with_mandatory_extensions(self): "-H {{ .labels.hostname }} -t 120 " "--endpoint-name {{ .labels.endpoint_name }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -5268,7 +5278,8 @@ def test_generate_check_configuration_with_optional_extensions(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -5292,7 +5303,7 @@ def test_generate_check_configuration_with_optional_extensions(self): "{{ .labels.memory_limit__arc_ce_memory_limit " "| default \"\" }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -5339,7 +5350,7 @@ def test_generate_check_configuration_with_optional_extensions(self): "{{ .labels.memory_limit__arc_ce_memory_limit " "| default \"\" }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -5384,7 +5395,8 @@ def test_generate_check_configuration_with_different_parameter_exts(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -5399,7 +5411,7 @@ def test_generate_check_configuration_with_different_parameter_exts(self): "-H {{ .labels.hostname }} -t 30 -f \"follow\" " "{{ .labels.u__rm_path | default \"\" }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -5439,7 +5451,7 @@ def test_generate_check_configuration_with_different_parameter_exts(self): "-H {{ .labels.hostname }} -t 30 " "{{ .labels.r__rm_path | default \"\" }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -5488,7 +5500,8 @@ def test_generate_openstack_check_configuration(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -5503,7 +5516,7 @@ def test_generate_openstack_check_configuration(self): "cloudinfo.py -t 300 " "--endpoint {{ .labels.os_keystone_url }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -5541,7 +5554,7 @@ def test_generate_openstack_check_configuration(self): "--endpoint {{ .labels.os_keystone_url }} " "--access-token /etc/sensu/certs/oidc", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -5582,7 +5595,7 @@ def test_generate_openstack_check_configuration(self): "--cert /etc/sensu/certs/userproxy.pem " "{{ .labels.region__os_region | default \"\" }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -5620,7 +5633,7 @@ def test_generate_openstack_check_configuration(self): "default \"443\" }} " "-H {{ .labels.os_keystone_host }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -5665,7 +5678,8 @@ def test_generate_pakiti_check_configuration(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -5683,7 +5697,7 @@ def test_generate_pakiti_check_configuration(self): "--key /etc/sensu/certs/hostkey.pem " "--site {{ .labels.site }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -5728,7 +5742,8 @@ def test_generate_check_configuration_with_SITE_BDII(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -5748,7 +5763,7 @@ def test_generate_check_configuration_with_SITE_BDII(self): "default \"\" }} " "{{ .labels.endpoint__surl | default \"\" }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -5805,7 +5820,8 @@ def test_generate_check_configuration_with_servicevo_without_voname(self): attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -5824,7 +5840,7 @@ def test_generate_check_configuration_with_servicevo_without_voname(self): "default \"\" }} " "{{ .labels.endpoint__surl | default \"\" }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -5869,7 +5885,8 @@ def test_generate_check_configuration_with_ARC_GOOD_SES(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -5894,7 +5911,7 @@ def test_generate_check_configuration_with_ARC_GOOD_SES(self): "{{ .labels.memory_limit__arc_ce_memory_limit " "| default \"\" }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -5939,7 +5956,8 @@ def test_generate_check_configuration_with_HOSTDN(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -5956,7 +5974,7 @@ def test_generate_check_configuration_with_HOSTDN(self): "-n {{ .labels.info_hostdn }} " "-x /etc/sensu/certs/userproxy.pem", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -6001,7 +6019,8 @@ def test_generate_check_configuration_with_local_topology(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -6020,7 +6039,7 @@ def test_generate_check_configuration_with_local_topology(self): "-C /etc/sensu/certs/hostcert.pem " "-K /etc/sensu/certs/hostkey.pem", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -6065,7 +6084,8 @@ def test_generate_check_configuration_with_secrets(self): attributes=mock_attributes, secrets_file="/path/to/secrets", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -6082,7 +6102,7 @@ def test_generate_check_configuration_with_secrets(self): "checkhealth -H {{ .labels.hostname }} -v -i " "-u $AGORA_USERNAME -p $AGORA_PASSWORD", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -6127,7 +6147,8 @@ def test_generate_check_configuration_with_secrets_with_dots(self): attributes=mock_attributes, secrets_file="/path/to/secrets", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -6146,7 +6167,7 @@ def test_generate_check_configuration_with_secrets_with_dots(self): "Cloud Critical-Fedcloud Fedcloud NGIHRTest " "--day 1 --token $ARGO_API_TOKEN", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -6191,7 +6212,8 @@ def test_generate_check_configuration_if_NOPUBLISH(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -6205,7 +6227,7 @@ def test_generate_check_configuration_if_NOPUBLISH(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -6245,7 +6267,7 @@ def test_generate_check_configuration_if_NOPUBLISH(self): "--how-invoked nagios --user-proxy " "/etc/sensu/certs/userproxy.pem", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "proxy_requests": { @@ -6310,7 +6332,8 @@ def test_generate_check_configuration_with_metric_parameter_override(self): attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -6329,7 +6352,7 @@ def test_generate_check_configuration_with_metric_parameter_override(self): "--ok-search {{ .labels.argo_apel_pub_ok_search " "| default \"OK\" }} --case-sensitive", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -6366,7 +6389,7 @@ def test_generate_check_configuration_with_metric_parameter_override(self): "{{ .labels.generic_ssh_test_port | " "default \" \" }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -6404,7 +6427,7 @@ def test_generate_check_configuration_with_metric_parameter_override(self): "-p {{ .labels.generic_tcp_connect_p | " "default \"443\" }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -6472,7 +6495,8 @@ def test_generate_check_configuration_with_host_attribute_override(self): attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -6492,7 +6516,7 @@ def test_generate_check_configuration_with_host_attribute_override(self): "--password " "{{ .labels.nagios_freshness_password }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -6529,7 +6553,7 @@ def test_generate_check_configuration_with_host_attribute_override(self): "check_handle_resolution.pl -t 10 " "--prefix {{ .labels.b2handle_prefix }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -6566,7 +6590,7 @@ def test_generate_check_configuration_with_host_attribute_override(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -6637,7 +6661,8 @@ def test_generate_check_configuration_with_host_attribute_override_global( attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -6657,7 +6682,7 @@ def test_generate_check_configuration_with_host_attribute_override_global( "--password " "{{ .labels.nagios_freshness_password }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -6695,7 +6720,7 @@ def test_generate_check_configuration_with_host_attribute_override_global( "--prefix {{ .labels.b2handle_prefix | " "default \"234.234\" }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -6732,7 +6757,7 @@ def test_generate_check_configuration_with_host_attribute_override_global( "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -6795,7 +6820,8 @@ def test_generate_check_configuration_with_overridden_secrets_with_dots( attributes=attributes, secrets_file="/path/to/secrets", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -6814,7 +6840,7 @@ def test_generate_check_configuration_with_overridden_secrets_with_dots( "Cloud Critical-Fedcloud Fedcloud NGIHRTest " "--day 1 --token {{ .labels.argo_api_token }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -6859,7 +6885,8 @@ def test_generate_check_configuration_if_internal_metric(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -6877,7 +6904,7 @@ def test_generate_check_configuration_if_internal_metric(self): "'w:alarms+g:published180' -c 1 -q " "'w:metricsdevel+g:published180' -c 4000", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "interval": 10800, @@ -6906,7 +6933,7 @@ def test_generate_check_configuration_if_internal_metric(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -6975,7 +7002,8 @@ def test_generate_check_if_attribute_ending_in_url_not_servicetype_url( attributes=attributes, secrets_file="/path/to/secrets", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -6994,7 +7022,7 @@ def test_generate_check_if_attribute_ending_in_url_not_servicetype_url( "-u $EDUGAIN_USER -a $EDUGAIN_PASSWORD -s " "https://snf-666522.vm.okeanos.grnet.gr/ni4os-rp/auth.php", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "interval": 900, @@ -7069,7 +7097,8 @@ def test_generate_check_if_attribute_ending_in_url_in_extension(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -7084,7 +7113,7 @@ def test_generate_check_if_attribute_ending_in_url_in_extension(self): "-u {{ .labels.webdav_url }} " "-E /etc/sensu/certs/userproxy.pem", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "interval": 3600, @@ -7127,7 +7156,8 @@ def test_generate_check_if_hostname_in_tags(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -7143,7 +7173,7 @@ def test_generate_check_if_hostname_in_tags(self): "{{ .labels.generic_http_connect_port | default \" \" }} " "{{ .labels.generic_http_connect_path | default \" \" }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "interval": 300, @@ -7187,7 +7217,8 @@ def test_warning_if_metric_is_missing(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: checks = generator.generate_checks( @@ -7200,7 +7231,7 @@ def test_warning_if_metric_is_missing(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -7269,7 +7300,8 @@ def test_generate_check_configuration_with_override_default_param(self): attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -7285,7 +7317,7 @@ def test_generate_check_configuration_with_override_default_param(self): "{{ .labels.eosc_test_api_l }} " "-u {{ .labels.endpoint_url }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -7329,7 +7361,8 @@ def test_generate_check_configuration_with_hostalias(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -7345,7 +7378,7 @@ def test_generate_check_configuration_with_hostalias(self): "-f {{ .labels.eudat_b2handle_handle_api_crud_f " "}} --prefix 234.234", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -7405,7 +7438,8 @@ def test_generate_check_configuration_with_hostalias_overridden_param(self): attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -7421,7 +7455,7 @@ def test_generate_check_configuration_with_hostalias_overridden_param(self): "-f {{ .labels.eudat_b2handle_handle_api_crud_f " "}} --prefix 234.234", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -7480,7 +7514,8 @@ def test_generate_check_configuration_host_attr_override_default_some( attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -7497,7 +7532,7 @@ def test_generate_check_configuration_host_attr_override_default_some( " --prefix {{ .labels.b2handle_prefix | " "default \"234.234\" }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -7542,7 +7577,8 @@ def test_generate_check_configuration_with_url_no_url(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -7557,7 +7593,7 @@ def test_generate_check_configuration_with_url_no_url(self): "check_gitlab_liveness.sh -t 10 " "--url {{ .labels.endpoint_url }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -7593,7 +7629,7 @@ def test_generate_check_configuration_with_url_no_url(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -7659,7 +7695,8 @@ def test_generate_check_configuration_with_url_url_param_overrides_all( attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -7674,7 +7711,7 @@ def test_generate_check_configuration_with_url_url_param_overrides_all( "check_gitlab_liveness.sh -t 10 " "{{ .labels.eudat_gitlab_liveness_url }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -7710,7 +7747,7 @@ def test_generate_check_configuration_with_url_url_param_overrides_all( "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -7770,7 +7807,8 @@ def test_generate_check_configuration_with_url_url_param_overrides_some( attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -7785,7 +7823,7 @@ def test_generate_check_configuration_with_url_url_param_overrides_some( "check_gitlab_liveness.sh -t 10 " "{{ .labels.eudat_gitlab_liveness_url }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -7821,7 +7859,7 @@ def test_generate_check_configuration_with_url_url_param_overrides_some( "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -7883,7 +7921,8 @@ def test_generate_check_configuration_with_url_url_attr_overrides_all( attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -7898,7 +7937,7 @@ def test_generate_check_configuration_with_url_url_attr_overrides_all( "check_gitlab_liveness.sh -t 10 " "--url {{ .labels.endpoint_url }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -7934,7 +7973,7 @@ def test_generate_check_configuration_with_url_url_attr_overrides_all( "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -7992,7 +8031,8 @@ def test_generate_check_configuration_with_url_url_attr_overrides_some( attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -8007,7 +8047,7 @@ def test_generate_check_configuration_with_url_url_attr_overrides_some( "check_gitlab_liveness.sh -t 10 " "--url {{ .labels.endpoint_url }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -8043,7 +8083,7 @@ def test_generate_check_configuration_with_url_url_attr_overrides_some( "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -8090,7 +8130,8 @@ def test_generate_check_configuration_default_port_override_by_ext_some( attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -8104,7 +8145,7 @@ def test_generate_check_configuration_default_port_override_by_ext_some( "-H {{ .labels.hostname }} -t 60 " "-p {{ .labels.ssh_port | default \"22\" }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -8151,7 +8192,8 @@ def test_generate_check_configuration_default_port_override_by_ext_none( attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -8164,7 +8206,7 @@ def test_generate_check_configuration_default_port_override_by_ext_none( "command": "/usr/lib64/nagios/plugins/check_ssh " "-H {{ .labels.hostname }} -t 60 -p 22", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -8221,7 +8263,8 @@ def test_generate_check_configuration_default_port_override_by_global_attr( attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -8234,7 +8277,7 @@ def test_generate_check_configuration_default_port_override_by_global_attr( "command": "/usr/lib64/nagios/plugins/check_ssh " "-H {{ .labels.hostname }} -t 60 -p 1022", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -8292,7 +8335,8 @@ def test_generate_check_configuration_default_port_override_by_host_attr( attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -8306,7 +8350,7 @@ def test_generate_check_configuration_default_port_override_by_host_attr( "-H {{ .labels.hostname }} -t 60 " "-p {{ .labels.ssh_port | default \"22\" }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -8385,7 +8429,8 @@ def test_generate_check_configuration_with_attributes_not_defined_anywhere( attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -8401,7 +8446,7 @@ def test_generate_check_configuration_with_attributes_not_defined_anywhere( "--robot-key /etc/nagios/robot/robot.key " "-x /etc/sensu/certs/userproxy.pem", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -8431,7 +8476,7 @@ def test_generate_check_configuration_with_attributes_not_defined_anywhere( "GridProxy-probe -t 30 --vo test " "-x /etc/sensu/certs/userproxy.pem", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -8469,7 +8514,8 @@ def test_generate_check_configuration_with_servicesite_name(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -8486,7 +8532,7 @@ def test_generate_check_configuration_with_servicesite_name(self): "--warning-search WARN --critical-search ERROR " "--ok-search OK --case-sensitive", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -8525,7 +8571,7 @@ def test_generate_check_configuration_with_servicesite_name(self): "--warning-search WARN --critical-search ERROR " "--ok-search OK --case-sensitive", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -8585,7 +8631,8 @@ def test_generate_check_configuration_with_servicesite_name_with_override( attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -8602,7 +8649,7 @@ def test_generate_check_configuration_with_servicesite_name_with_override( "--warning-search WARN --critical-search ERROR " "--ok-search OK --case-sensitive", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -8641,7 +8688,7 @@ def test_generate_check_configuration_with_servicesite_name_with_override( "--warning-search WARN --critical-search ERROR " "--ok-search OK --case-sensitive", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -8685,7 +8732,8 @@ def test_generate_http_check_configuration_if_no_URL(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -8704,7 +8752,7 @@ def test_generate_http_check_configuration_if_no_URL(self): "-C /etc/sensu/certs/hostcert.pem " "-K /etc/sensu/certs/hostkey.pem", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -8747,7 +8795,7 @@ def test_generate_http_check_configuration_if_no_URL(self): "{{ .labels.generic_http_connect_path | " "default \" \" }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -8792,7 +8840,8 @@ def test_generate_check_configuration_if_attribute_with_dashes(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -8811,7 +8860,7 @@ def test_generate_check_configuration_if_attribute_with_dashes(self): "{{ .labels.cvmfs_stratum_1_port | " "default \"8000\" }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -8856,7 +8905,8 @@ def test_generate_passive_check_configuration(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -8875,7 +8925,7 @@ def test_generate_passive_check_configuration(self): "default \"\" }} " "{{ .labels.endpoint__surl | default \"\" }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -8910,7 +8960,7 @@ def test_generate_passive_check_configuration(self): { "command": "PASSIVE", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -8938,7 +8988,7 @@ def test_generate_passive_check_configuration(self): { "command": "PASSIVE", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -8976,7 +9026,8 @@ def test_generate_passive_check_configuration_if_parent_missing(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: checks = generator.generate_checks( @@ -8992,7 +9043,7 @@ def test_generate_passive_check_configuration_if_parent_missing(self): "--warning-search WARN --critical-search ERROR " "--ok-search OK --case-sensitive", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -9031,7 +9082,7 @@ def test_generate_passive_check_configuration_if_parent_missing(self): "--warning-search WARN --critical-search ERROR " "--ok-search OK --case-sensitive", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -9078,7 +9129,8 @@ def test_generate_check_configuration_if_info_bdii_tag(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -9097,7 +9149,7 @@ def test_generate_check_configuration_if_info_bdii_tag(self): "-K /etc/sensu/certs/hostkey.pem " "-p {{ .labels.srm2_port | default \"8443\" }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -9144,7 +9196,8 @@ def test_generate_check_configuration_if_info_bdii_and_info_ext_tag(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -9163,7 +9216,7 @@ def test_generate_check_configuration_if_info_bdii_and_info_ext_tag(self): "-K /etc/sensu/certs/hostkey.pem " "-p {{ .labels.srm2_port | default \"8443\" }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -9208,7 +9261,8 @@ def test_generate_check_with_integer_attributes(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -9227,7 +9281,7 @@ def test_generate_check_with_integer_attributes(self): "{{ .labels.skip_ls_dir__argo_xrootd_skip_ls_dir | " "default \"\" }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -9272,7 +9326,8 @@ def test_generate_check_with_xrootd_webdav_extension(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -9290,7 +9345,7 @@ def test_generate_check_with_xrootd_webdav_extension(self): "{{ .labels.skip_dir_test__argo_webdav_skip_dir_test " "| default \"\" }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -9332,7 +9387,7 @@ def test_generate_check_with_xrootd_webdav_extension(self): "{{ .labels.skip_ls_dir__argo_xrootd_skip_ls_dir | " "default \"\" }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -9393,7 +9448,8 @@ def test_generate_check_with_xrootd_webdav_extension_with_override(self): attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -9411,7 +9467,7 @@ def test_generate_check_with_xrootd_webdav_extension_with_override(self): "{{ .labels.skip_dir_test__argo_webdav_skip_dir_test " "| default \"\" }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -9453,7 +9509,7 @@ def test_generate_check_with_xrootd_webdav_extension_with_override(self): "{{ .labels.skip_ls_dir__argo_xrootd_skip_ls_dir | " "default \"\" }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -9498,7 +9554,8 @@ def test_generate_check_with_duplicates_in_topology(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -9516,7 +9573,7 @@ def test_generate_check_with_duplicates_in_topology(self): "{{ .labels.skip_dir_test__argo_webdav_skip_dir_test " "| default \"\" }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -9561,7 +9618,8 @@ def test_generate_check_with_non_fallback_attribute_in_every_endpoint(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -9579,7 +9637,7 @@ def test_generate_check_with_non_fallback_attribute_in_every_endpoint(self): "{{ .labels.skip_ls_dir__argo_xrootd_skip_ls_dir | " "default \"\" }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "interval": 3600, @@ -9647,7 +9705,8 @@ def test_generate_ARC_CE_check_with_set_VO_FQAN(self): attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -9660,7 +9719,7 @@ def test_generate_ARC_CE_check_with_set_VO_FQAN(self): "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "interval": 300, @@ -9704,7 +9763,7 @@ def test_generate_ARC_CE_check_with_set_VO_FQAN(self): "{{ .labels.memory_limit__arc_ce_memory_limit " "| default \"\" }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "interval": 3600, @@ -9760,7 +9819,8 @@ def test_generate_ARC_CE_check_without_VONAME(self): attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: checks = generator.generate_checks( @@ -9772,7 +9832,7 @@ def test_generate_ARC_CE_check_without_VONAME(self): "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "interval": 300, @@ -9822,7 +9882,8 @@ def test_generate_check_configuration_if_skipped_metrics(self): skipped_metrics=[ "org.nagios.Keystone-TCP", "eu.egi.cloud.OpenStack-Swift" ], - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -9837,7 +9898,7 @@ def test_generate_check_configuration_if_skipped_metrics(self): "cloudinfo.py -t 300 " "--endpoint {{ .labels.os_keystone_url }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -9878,7 +9939,7 @@ def test_generate_check_configuration_if_skipped_metrics(self): "--cert /etc/sensu/certs/userproxy.pem " "{{ .labels.region__os_region | default \"\" }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -9924,7 +9985,8 @@ def test_generate_check_configuration_if_skipped_metric_missing(self): secrets_file="", default_ports=mock_default_ports, skipped_metrics=["org.nagios.Keystone-TCP", "argo.mock.metric"], - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -9939,7 +10001,7 @@ def test_generate_check_configuration_if_skipped_metric_missing(self): "cloudinfo.py -t 300 " "--endpoint {{ .labels.os_keystone_url }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -9977,7 +10039,7 @@ def test_generate_check_configuration_if_skipped_metric_missing(self): "--endpoint {{ .labels.os_keystone_url }} " "--access-token /etc/sensu/certs/oidc", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -10018,7 +10080,7 @@ def test_generate_check_configuration_if_skipped_metric_missing(self): "--cert /etc/sensu/certs/userproxy.pem " "{{ .labels.region__os_region | default \"\" }}", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -10063,7 +10125,8 @@ def test_generate_check_configuration_if_SILENCED_flag(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -10081,7 +10144,7 @@ def test_generate_check_configuration_if_SILENCED_flag(self): "'w:alarms+g:published180' -c 1 -q " "'w:metricsdevel+g:published180' -c 4000", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "interval": 10800, @@ -10113,7 +10176,7 @@ def test_generate_check_configuration_if_SILENCED_flag(self): "--how-invoked nagios --voms test " "--user-proxy /etc/sensu/certs/userproxy.pem", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "interval": 1200, @@ -10140,7 +10203,7 @@ def test_generate_check_configuration_if_SILENCED_flag(self): "--how-invoked nagios --voms test " "--user-proxy /etc/sensu/certs/userproxy.pem", "subscriptions": [ - "mock_tenant" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "interval": 1200, @@ -10174,7 +10237,8 @@ def test_generate_entity_configuration(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -10233,7 +10297,8 @@ def test_generate_entities_with_port_and_path(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -10340,7 +10405,8 @@ def test_generate_entities_with_SSL(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -10392,7 +10458,8 @@ def test_generate_entities_with_URLs(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -10486,7 +10553,8 @@ def test_generate_entities_with_multiple_endpoint_URLs(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -10527,7 +10595,8 @@ def test_generate_entities_with_BDII(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -10658,7 +10727,8 @@ def test_generate_entities_with_different_PORTs(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -10726,7 +10796,8 @@ def test_generate_entities_with_mandatory_extensions(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -10796,7 +10867,8 @@ def test_generate_entities_with_optional_extensions(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -10859,7 +10931,8 @@ def test_generate_openstack_entities(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -10950,7 +11023,8 @@ def test_generate_multiple_same_host_entities(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -11007,7 +11081,8 @@ def test_generate_entities_with_SITE_BDII(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -11082,7 +11157,8 @@ def test_generate_entities_with_ARC_CE_MEMORY_LIMIT(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -11135,7 +11211,8 @@ def test_generate_entities_with_local_topology(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -11186,7 +11263,8 @@ def test_generate_entities_with_faulty_topology(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertRaises(GeneratorException) as context: with self.assertLogs(LOGNAME) as log: @@ -11230,7 +11308,8 @@ def test_generate_entities_with_metric_parameter_overrides(self): attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -11320,7 +11399,8 @@ def test_generate_entities_with_metric_parameter_overrides_entity_name( attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -11413,7 +11493,8 @@ def test_generate_entities_with_host_attribute_overrides(self): attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -11529,7 +11610,8 @@ def test_generate_entities_with_host_attribute_overrides_if_global(self): attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -11633,7 +11715,8 @@ def test_generate_entities_with_overridden_secrets_with_dots(self): attributes=attributes, secrets_file="/path/to/secrets", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -11686,7 +11769,8 @@ def test_generate_entity_configuration_with_internal_metrics(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -11746,7 +11830,8 @@ def test_generate_entity_with_attribute_ending_in_url_not_servicetype_url( attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -11812,7 +11897,8 @@ def test_generate_entity_with_attribute_ending_in_url_in_extensions(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -11868,7 +11954,8 @@ def test_generate_entity_with_hostname_in_tags(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -11942,7 +12029,8 @@ def test_generate_entity_for_check_with_path_attribute(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -11997,7 +12085,8 @@ def test_generate_entity_for_check_with_overridden_default_param(self): attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -12095,7 +12184,8 @@ def test_generate_entity_for_check_with_overridden_deflt_param_entity_name( attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -12173,7 +12263,8 @@ def test_generate_entity_with_hostalias(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -12228,7 +12319,8 @@ def test_generate_entity_with_hostalias_with_override(self): attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -12268,7 +12360,8 @@ def test_generate_entity_with_duplicate_sites(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -12319,7 +12412,8 @@ def test_generate_entity_host_override_with_default_for_some(self): attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -12397,7 +12491,8 @@ def test_generate_entity_host_override_with_hostalias_param_override( attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -12469,7 +12564,8 @@ def test_generate_entity_host_attr_override_if_value_with_dots( attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -12527,7 +12623,8 @@ def test_generate_entity_if_no_url(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: entities = generator.generate_entities() @@ -12600,7 +12697,8 @@ def test_generate_entity_if_no_url_param_override_all(self): attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -12668,7 +12766,8 @@ def test_generate_entity_if_no_url_param_override_some(self): attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: entities = generator.generate_entities() @@ -12738,7 +12837,8 @@ def test_generate_entity_if_no_url_attr_override_all(self): attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -12802,7 +12902,8 @@ def test_generate_entity_if_no_url_attr_override_some(self): attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: entities = generator.generate_entities() @@ -12855,7 +12956,8 @@ def test_generate_entity_default_port_override_by_extension_some(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -12906,7 +13008,8 @@ def test_generate_entity_default_port_override_by_extension_none(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -12966,7 +13069,8 @@ def test_generate_entity_default_port_override_by_global_attribute(self): attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -13027,7 +13131,8 @@ def test_generate_entity_default_port_override_by_host_attribute(self): attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -13078,7 +13183,8 @@ def test_generate_entity_with_servicesite_name(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -13147,7 +13253,8 @@ def test_generate_entity_with_servicesite_name_with_override(self): attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -13202,7 +13309,8 @@ def test_generate_entity_for_http_check_if_no_URL(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -13301,7 +13409,8 @@ def test_generate_entity_if_attribute_with_dash(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -13355,7 +13464,8 @@ def test_generate_entity_if_info_bdii_tag(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -13425,7 +13535,8 @@ def test_generate_entity_if_ampersand_in_URL(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -13469,7 +13580,8 @@ def test_generate_entity_with_integer_attributes(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -13543,7 +13655,8 @@ def test_generate_entity_with_xrootd_webdav_extension(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -13671,7 +13784,8 @@ def test_generate_entity_with_xrootd_webdav_extension_with_override(self): attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -13784,7 +13898,8 @@ def test_generate_entity_with_duplicates_in_topology(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -13863,7 +13978,8 @@ def test_generate_entity_if_non_fallback_attribute_in_every_endpoint(self): attributes=mock_attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -13910,7 +14026,8 @@ def test_generate_entities_with_skipped_metrics(self): skipped_metrics=[ "org.nagios.Keystone-TCP", "eu.egi.cloud.OpenStack-Swift" ], - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -13997,7 +14114,8 @@ def test_get_metric_parameter_overrides(self): attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -14045,7 +14163,8 @@ def test_get_host_attribute_overrides(self): attributes=attributes, secrets_file="", default_ports=mock_default_ports, - tenant="MOCK_TENANT" + tenant="MOCK_TENANT", + default_agent="sensu-agent-mock_tenant.example.com" ) with self.assertLogs(LOGNAME) as log: _log_dummy() From 2d98a485f3c6bb225869b6bf22a6152d75546f21 Mon Sep 17 00:00:00 2001 From: Katarina Zailac Date: Mon, 26 Aug 2024 10:11:10 +0200 Subject: [PATCH 11/20] Align the tests with the changes in check subscriptions --- modules/sensu.py | 16 ++--- tests/test_sensu.py | 171 ++++++++++++++++++++++++++------------------ 2 files changed, 106 insertions(+), 81 deletions(-) diff --git a/modules/sensu.py b/modules/sensu.py index e722549..555ab34 100644 --- a/modules/sensu.py +++ b/modules/sensu.py @@ -6,7 +6,7 @@ import requests from argo_scg.exceptions import SensuException, SCGException, SCGWarnException from argo_scg.generator import create_attribute_env, create_label, \ - is_attribute_secret, DEFAULT_SUBSCRIPTION + is_attribute_secret class Sensu: @@ -1181,14 +1181,10 @@ def add_hard_state_pipeline(self, namespace="default"): def _add_asset_check(self, name, namespace): checks = self._get_checks(namespace=namespace) checks_names = [check["metadata"]["name"] for check in checks] - - tenants = self.namespaces[namespace] - - if len(tenants) > 1: - subs = DEFAULT_SUBSCRIPTION - - else: - subs = tenants[0].lower() + agents = [ + f"entity:{item['metadata']['name']}" for item in + self.get_agents(namespace=namespace) + ] assets = { "sensu.cpu.usage": "check-cpu-usage", @@ -1202,7 +1198,7 @@ def _add_asset_check(self, name, namespace): "runtime_assets": [ assets[name] ], - "subscriptions": [subs], + "subscriptions": agents, "timeout": 900, "round_robin": False, "metadata": { diff --git a/tests/test_sensu.py b/tests/test_sensu.py index 362b65e..e9167b3 100644 --- a/tests/test_sensu.py +++ b/tests/test_sensu.py @@ -221,7 +221,7 @@ "publish": True, "runtime_assets": None, "subscriptions": [ - "tenant1" + "entity:sensu-agent1" ], "proxy_entity_name": "", "check_hooks": None, @@ -268,7 +268,7 @@ "publish": True, "runtime_assets": None, "subscriptions": [ - "tenant1" + "entity:sensu-agent1" ], "proxy_entity_name": "", "check_hooks": None, @@ -313,7 +313,7 @@ "publish": True, "runtime_assets": None, "subscriptions": [ - "tenant1" + "entity:sensu-agent1" ], "proxy_entity_name": "", "check_hooks": None, @@ -358,7 +358,8 @@ "check-cpu-usage" ], "subscriptions": [ - "tenant1" + "entity:sensu-agent1", + "entity:sensu-agent2" ], "proxy_entity_name": "", "check_hooks": None, @@ -398,7 +399,7 @@ "check-memory-usage" ], "subscriptions": [ - "tenant1" + "entity:sensu-agent1" ], "proxy_entity_name": "", "check_hooks": None, @@ -447,9 +448,7 @@ "cloud_provider": "", "processes": None }, - "subscriptions": [ - "argo.ni4os.eu" - ], + "subscriptions": None, "last_seen": 0, "deregister": False, "deregistration": {}, @@ -463,7 +462,8 @@ "tenants": "TENANT1" } }, - "sensu_agent_version": ""}, + "sensu_agent_version": "" + }, "check": { "command": "/usr/lib64/nagios/plugins/check_http " "-H argo.ni4os.eu -t 30 -r argo.eu " @@ -476,8 +476,7 @@ "publish": True, "runtime_assets": None, "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" + "entity:sensu-agent1" ], "proxy_entity_name": "argo.ni4os.eu", "check_hooks": None, @@ -561,7 +560,7 @@ "processes": None }, "subscriptions": [ - "gocdb.ni4os.eu" + "entity:sensu-agent1" ], "last_seen": 0, "deregister": False, @@ -587,7 +586,7 @@ "publish": True, "runtime_assets": None, "subscriptions": [ - "gocdb.ni4os.eu" + "entity:sensu-agent1" ], "proxy_entity_name": "gocdb.ni4os.eu", "check_hooks": None, @@ -657,7 +656,7 @@ "processes": None }, "subscriptions": [ - "argo.ni4os.eu" + "entity:sensu-agent1" ], "last_seen": 0, "deregister": False, @@ -688,8 +687,7 @@ "publish": True, "runtime_assets": None, "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" + "entity:sensu-agent1" ], "proxy_entity_name": "argo.ni4os.eu", "check_hooks": None, @@ -1325,7 +1323,7 @@ "publish": True, "runtime_assets": None, "subscriptions": [ - "ni4os" + "entity:sensu-agent1" ], "proxy_entity_name": "argo.mon__argo-mon-devel.ni4os.eu", "check_hooks": None, @@ -1486,7 +1484,7 @@ "publish": True, "runtime_assets": None, "subscriptions": [ - "ni4os" + "entity:sensu-agent1" ], "proxy_entity_name": "argo.mon__argo-mon-devel.ni4os.eu", "check_hooks": None, @@ -1688,7 +1686,7 @@ "publish": True, "runtime_assets": None, "subscriptions": [ - "ni4os" + "entity:sensu-agent1" ], "proxy_entity_name": "eu.eudat.itsm.spmt__agora.ni4os.eu", "check_hooks": None, @@ -1831,7 +1829,7 @@ "publish": True, "runtime_assets": None, "subscriptions": [ - "ni4os" + "entity:sensu-agent1" ], "proxy_entity_name": "eu.ni4os.repo.publication__cherry.chem.bg.ac.rs", @@ -1999,7 +1997,7 @@ "publish": True, "runtime_assets": None, "subscriptions": [ - "ni4os" + "entity:sensu-agent1" ], "proxy_entity_name": "eu.ni4os.repo.publication__videolectures.net", "check_hooks": None, @@ -2154,7 +2152,7 @@ "publish": True, "runtime_assets": None, "subscriptions": [ - "ni4os" + "entity:sensu-agent1" ], "proxy_entity_name": "", "check_hooks": None, @@ -2295,7 +2293,7 @@ "publish": True, "runtime_assets": None, "subscriptions": [ - "ni4os" + "entity:sensu-agent1" ], "proxy_entity_name": "", "check_hooks": None, @@ -2434,7 +2432,7 @@ 'publish': True, 'runtime_assets': None, 'subscriptions': [ - "ni4os" + "entity:sensu-agent1" ], 'proxy_entity_name': 'org.opensciencegrid.htcondorce__ce503.cern.ch', @@ -2544,7 +2542,7 @@ 'publish': True, 'runtime_assets': None, 'subscriptions': [ - "ni4os" + "entity:sensu-agent1" ], 'proxy_entity_name': 'org.opensciencegrid.htcondorce__ce503.cern.ch', @@ -2734,7 +2732,7 @@ 'publish': True, 'runtime_assets': None, 'subscriptions': [ - "ni4os" + "entity:sensu-agent1" ], 'proxy_entity_name': 'ARC-CE__hostname1.example.com', 'check_hooks': None, @@ -2845,7 +2843,7 @@ 'publish': True, 'runtime_assets': None, 'subscriptions': [ - "ni4os" + "entity:sensu-agent1" ], 'proxy_entity_name': 'ARC-CE__hostname1.example.com', 'check_hooks': None, @@ -3243,7 +3241,7 @@ "publish": True, "runtime_assets": None, "subscriptions": [ - "tenant2" + "entity:sensu-agent1" ], "proxy_entity_name": "WebService__hostname.test.eu_id_3", "check_hooks": None, @@ -4061,7 +4059,7 @@ def setUp(self): "NGI?accept=csv " "--ssl --onredirect follow", "subscriptions": [ - "tenant1" + "entity:sensu-agent1" ], "handlers": ["publisher-handler"], "proxy_requests": { @@ -4089,7 +4087,7 @@ def setUp(self): "command": "/usr/lib64/nagios/plugins/check_tcp " "-H {{ .labels.hostname }} -t 120 -p 443", "subscriptions": [ - "tenant1" + "entity:sensu-agent1" ], "handlers": [], "proxy_requests": { @@ -4125,7 +4123,7 @@ def setUp(self): "-K {{ .labels.ROBOT_KEY | " "default /etc/sensu/certs/hostkey.pem }}", "subscriptions": [ - "tenant1" + "entity:sensu-agent1" ], "handlers": ["publisher-handler"], "proxy_requests": { @@ -4670,7 +4668,7 @@ def test_handle_check_with_hardcoded_attributes( "-T {{ .labels.TRUSTSTORE | default " "/etc/sensu/certs/truststore.ts }}", "subscriptions": [ - "tenant1" + "entity:sensu-agent1" ], "handlers": ["publisher-handler"], "proxy_requests": { @@ -4697,7 +4695,7 @@ def test_handle_check_with_hardcoded_attributes( "-p {{ .labels.BDII_PORT | default 2170 }} " "-H {{ .labels.BDII_HOST }}", "subscriptions": [ - "tenant1" + "entity:sensu-agent1" ], "handlers": ["publisher-handler"], "proxy_requests": { @@ -4801,7 +4799,7 @@ def test_handle_check_with_file_defined_attributes( "--url https://b2access.fz-juelich.de:8443 " "--username username --password pa55w0rD", "subscriptions": [ - "tenant1" + "entity:sensu-agent1" ], "handlers": ["publisher-handler"], "proxy_requests": { @@ -4827,7 +4825,7 @@ def test_handle_check_with_file_defined_attributes( "-p {{ .labels.QCG-COMPUTING_PORT | " "default 19000 }} -x", "subscriptions": [ - "tenant1" + "entity:sensu-agent1" ], "handlers": ["publisher-handler"], "proxy_requests": { @@ -4937,7 +4935,7 @@ def test_handle_check_with_removing_proxy_requests( "publish": True, "runtime_assets": None, "subscriptions": [ - "tenant1" + "entity:sensu-agent1" ], "proxy_entity_name": "", "check_hooks": None, @@ -5147,7 +5145,7 @@ def test_handle_passive_check_if_new( passive_check = { "command": "PASSIVE", "subscriptions": [ - "tenant1" + "entity:sensu-agent1" ], "handlers": [], "pipelines": [], @@ -5204,7 +5202,7 @@ def test_handle_passive_check_if_existing( passive_check = { "command": "PASSIVE", "subscriptions": [ - "tenant1" + "entity:sensu-agent1" ], "handlers": [], "pipelines": [], @@ -5226,7 +5224,7 @@ def test_handle_passive_check_if_existing( "publish": False, "runtime_assets": None, "subscriptions": [ - "tenant1" + "entity:sensu-agent1" ], "proxy_entity_name": "", "check_hooks": None, @@ -5414,7 +5412,7 @@ def test_put_check(self, mock_put): "command": "/usr/lib64/nagios/plugins/check_tcp -H argo.ni4os.eu " "-t 120 -p 443", "subscriptions": [ - "tenant1" + "entity:sensu-agent1" ], "handlers": [], "interval": 86400, @@ -5447,7 +5445,7 @@ def test_put_check_with_error_with_message(self, mock_put): "command": "/usr/lib64/nagios/plugins/check_tcp -H argo.ni4os.eu " "-t 120 -p 443", "subscriptions": [ - "tenant1" + "entity:sensu-agent1" ], "handlers": [], "interval": 86400, @@ -5486,7 +5484,7 @@ def test_put_check_with_error_without_message(self, mock_put): "command": "/usr/lib64/nagios/plugins/check_tcp -H argo.ni4os.eu " "-t 120 -p 443", "subscriptions": [ - "tenant1" + "entity:sensu-agent1" ], "handlers": [], "interval": 86400, @@ -8479,7 +8477,8 @@ def setUp(self): "check-cpu-usage" ], "subscriptions": [ - "tenant1" + "entity:sensu-agent1", + "entity:sensu-agent2" ], "timeout": 900, "round_robin": False, @@ -8506,7 +8505,7 @@ def setUp(self): "check-memory-usage" ], "subscriptions": [ - "tenant1" + "entity:sensu-agent1" ], "timeout": 900, "round_robin": False, @@ -8526,12 +8525,14 @@ def setUp(self): ] } + @patch("argo_scg.sensu.Sensu.get_agents") @patch("argo_scg.sensu.requests.post") @patch("argo_scg.sensu.Sensu._get_checks") - def test_add_cpu_check(self, mock_get, mock_post): + def test_add_cpu_check(self, mock_get, mock_post, mock_agents): copy_mock_checks = mock_checks.copy()[0:3] mock_get.return_value = copy_mock_checks mock_post.side_effect = mock_post_response + mock_agents.return_value = [mock_entities[3], mock_entities[4]] with self.assertLogs(LOGNAME) as log: self.sensu.add_cpu_check(namespace="tenant1") mock_get.assert_called_once_with(namespace="tenant1") @@ -8548,12 +8549,16 @@ def test_add_cpu_check(self, mock_get, mock_post): [f"INFO:{LOGNAME}:tenant1: Check sensu.cpu.usage created"] ) + @patch("argo_scg.sensu.Sensu.get_agents") @patch("argo_scg.sensu.requests.post") @patch("argo_scg.sensu.Sensu._get_checks") - def test_add_cpu_check_with_error_with_message(self, mock_get, mock_post): + def test_add_cpu_check_with_error_with_message( + self, mock_get, mock_post, mock_agents + ): copy_mock_checks = mock_checks.copy()[0:3] mock_get.return_value = copy_mock_checks mock_post.side_effect = mock_post_response_not_ok_with_msg + mock_agents.return_value = [mock_entities[3], mock_entities[4]] with self.assertRaises(SensuException) as context: with self.assertLogs(LOGNAME) as log: self.sensu.add_cpu_check(namespace="tenant1") @@ -8578,14 +8583,16 @@ def test_add_cpu_check_with_error_with_message(self, mock_get, mock_post): ] ) + @patch("argo_scg.sensu.Sensu.get_agents") @patch("argo_scg.sensu.requests.post") @patch("argo_scg.sensu.Sensu._get_checks") def test_add_cpu_check_with_error_without_message( - self, mock_get, mock_post + self, mock_get, mock_post, mock_agents ): copy_mock_checks = mock_checks.copy()[0:3] mock_get.return_value = copy_mock_checks mock_post.side_effect = mock_post_response_not_ok_without_msg + mock_agents.return_value = [mock_entities[3], mock_entities[4]] with self.assertRaises(SensuException) as context: with self.assertLogs(LOGNAME) as log: self.sensu.add_cpu_check(namespace="tenant1") @@ -8610,13 +8617,15 @@ def test_add_cpu_check_with_error_without_message( ] ) + @patch("argo_scg.sensu.Sensu.get_agents") @patch("argo_scg.sensu.requests.put") @patch("argo_scg.sensu.requests.post") @patch("argo_scg.sensu.Sensu._get_checks") def test_add_cpu_check_if_exists_and_same( - self, mock_get, mock_post, mock_put + self, mock_get, mock_post, mock_put, mock_agents ): mock_get.return_value = mock_checks + mock_agents.return_value = [mock_entities[3], mock_entities[4]] with self.assertLogs(LOGNAME) as log: _log_dummy() self.sensu.add_cpu_check(namespace="tenant1") @@ -8625,11 +8634,12 @@ def test_add_cpu_check_if_exists_and_same( self.assertFalse(mock_put.called) self.assertEqual(log.output, DUMMY_LOG) + @patch("argo_scg.sensu.Sensu.get_agents") @patch("argo_scg.sensu.requests.put") @patch("argo_scg.sensu.requests.post") @patch("argo_scg.sensu.Sensu._get_checks") def test_add_cpu_check_if_exists_and_different( - self, mock_get, mock_post, mock_put + self, mock_get, mock_post, mock_put, mock_agents ): mock_checks_copy = mock_checks.copy() mock_checks_copy[3] = { @@ -8643,7 +8653,7 @@ def test_add_cpu_check_if_exists_and_different( "check-cpu-usage" ], "subscriptions": [ - "tenant1" + "entity:sensu-agent1" ], "proxy_entity_name": "", "check_hooks": None, @@ -8671,6 +8681,7 @@ def test_add_cpu_check_if_exists_and_different( } mock_get.return_value = mock_checks_copy mock_put.side_effect = mock_post_response + mock_agents.return_value = [mock_entities[3], mock_entities[4]] with self.assertLogs(LOGNAME) as log: self.sensu.add_cpu_check(namespace="tenant1") mock_get.assert_called_once_with(namespace="tenant1") @@ -8690,11 +8701,12 @@ def test_add_cpu_check_if_exists_and_different( ] ) + @patch("argo_scg.sensu.Sensu.get_agents") @patch("argo_scg.sensu.requests.put") @patch("argo_scg.sensu.requests.post") @patch("argo_scg.sensu.Sensu._get_checks") def test_update_cpu_check_error_with_message( - self, mock_get, mock_post, mock_put + self, mock_get, mock_post, mock_put, mock_agents ): mock_checks_copy = mock_checks.copy() mock_checks_copy[3] = { @@ -8708,7 +8720,7 @@ def test_update_cpu_check_error_with_message( "check-cpu-usage" ], "subscriptions": [ - "tenant1" + "entity:sensu-agent1" ], "proxy_entity_name": "", "check_hooks": None, @@ -8736,6 +8748,7 @@ def test_update_cpu_check_error_with_message( } mock_get.return_value = mock_checks_copy mock_put.side_effect = mock_post_response_not_ok_with_msg + mock_agents.return_value = [mock_entities[3], mock_entities[4]] with self.assertRaises(SensuException) as context: with self.assertLogs(LOGNAME) as log: self.sensu.add_cpu_check(namespace="tenant1") @@ -8762,11 +8775,12 @@ def test_update_cpu_check_error_with_message( ] ) + @patch("argo_scg.sensu.Sensu.get_agents") @patch("argo_scg.sensu.requests.put") @patch("argo_scg.sensu.requests.post") @patch("argo_scg.sensu.Sensu._get_checks") def test_update_cpu_check_error_without_message( - self, mock_get, mock_post, mock_put + self, mock_get, mock_post, mock_put, mock_agents ): mock_checks_copy = mock_checks.copy() mock_checks_copy[3] = { @@ -8780,7 +8794,7 @@ def test_update_cpu_check_error_without_message( "check-cpu-usage" ], "subscriptions": [ - "tenant1" + "entity:sensu-agent1" ], "proxy_entity_name": "", "check_hooks": None, @@ -8808,6 +8822,7 @@ def test_update_cpu_check_error_without_message( } mock_get.return_value = mock_checks_copy mock_put.side_effect = mock_post_response_not_ok_without_msg + mock_agents.return_value = [mock_entities[3], mock_entities[4]] with self.assertRaises(SensuException) as context: with self.assertLogs(LOGNAME) as log: self.sensu.add_cpu_check(namespace="tenant1") @@ -8834,12 +8849,14 @@ def test_update_cpu_check_error_without_message( ] ) + @patch("argo_scg.sensu.Sensu.get_agents") @patch("argo_scg.sensu.requests.post") @patch("argo_scg.sensu.Sensu._get_checks") - def test_add_memory_check(self, mock_get, mock_post): + def test_add_memory_check(self, mock_get, mock_post, mock_agents): mock_checks_copy = mock_checks.copy() mock_get.return_value = mock_checks_copy[0:3] mock_post.side_effect = mock_post_response + mock_agents.return_value = [mock_entities[3]] with self.assertLogs(LOGNAME) as log: self.sensu.add_memory_check(namespace="tenant1") mock_get.assert_called_once_with(namespace="tenant1") @@ -8856,14 +8873,16 @@ def test_add_memory_check(self, mock_get, mock_post): [f"INFO:{LOGNAME}:tenant1: Check sensu.memory.usage created"] ) + @patch("argo_scg.sensu.Sensu.get_agents") @patch("argo_scg.sensu.requests.post") @patch("argo_scg.sensu.Sensu._get_checks") def test_add_memory_check_with_error_with_message( - self, mock_get, mock_post + self, mock_get, mock_post, mock_agents ): mock_checks_copy = mock_checks.copy() mock_get.return_value = mock_checks_copy[0:3] mock_post.side_effect = mock_post_response_not_ok_with_msg + mock_agents.return_value = [mock_entities[3]] with self.assertRaises(SensuException) as context: with self.assertLogs(LOGNAME) as log: self.sensu.add_memory_check(namespace="tenant1") @@ -8888,14 +8907,16 @@ def test_add_memory_check_with_error_with_message( ] ) + @patch("argo_scg.sensu.Sensu.get_agents") @patch("argo_scg.sensu.requests.post") @patch("argo_scg.sensu.Sensu._get_checks") def test_add_memory_check_with_error_without_message( - self, mock_get, mock_post + self, mock_get, mock_post, mock_agents ): mock_checks_copy = mock_checks.copy() mock_get.return_value = mock_checks_copy[0:3] mock_post.side_effect = mock_post_response_not_ok_without_msg + mock_agents.return_value = [mock_entities[3]] with self.assertRaises(SensuException) as context: with self.assertLogs(LOGNAME) as log: self.sensu.add_memory_check(namespace="tenant1") @@ -8920,13 +8941,15 @@ def test_add_memory_check_with_error_without_message( ] ) + @patch("argo_scg.sensu.Sensu.get_agents") @patch("argo_scg.sensu.requests.put") @patch("argo_scg.sensu.requests.post") @patch("argo_scg.sensu.Sensu._get_checks") def test_add_memory_check_if_exists_and_same( - self, mock_get, mock_post, mock_put + self, mock_get, mock_post, mock_put, mock_agents ): mock_get.return_value = mock_checks + mock_agents.return_value = [mock_entities[3]] with self.assertLogs(LOGNAME) as log: _log_dummy() self.sensu.add_memory_check(namespace="tenant1") @@ -8935,11 +8958,12 @@ def test_add_memory_check_if_exists_and_same( self.assertFalse(mock_put.called) self.assertEqual(log.output, DUMMY_LOG) + @patch("argo_scg.sensu.Sensu.get_agents") @patch("argo_scg.sensu.requests.put") @patch("argo_scg.sensu.requests.post") @patch("argo_scg.sensu.Sensu._get_checks") def test_add_memory_check_if_exists_and_different( - self, mock_get, mock_post, mock_put + self, mock_get, mock_post, mock_put, mock_agents ): mock_checks_copy = mock_checks.copy() mock_checks_copy[4] = { @@ -8953,7 +8977,7 @@ def test_add_memory_check_if_exists_and_different( "check-memory-usage" ], "subscriptions": [ - "tenant1" + "entity:sensu-agent1" ], "proxy_entity_name": "", "check_hooks": None, @@ -8981,6 +9005,7 @@ def test_add_memory_check_if_exists_and_different( } mock_get.return_value = mock_checks_copy mock_put.side_effect = mock_post_response + mock_agents.return_value = [mock_entities[3]] with self.assertLogs(LOGNAME) as log: self.sensu.add_memory_check(namespace="tenant1") mock_get.assert_called_once_with(namespace="tenant1") @@ -9000,11 +9025,12 @@ def test_add_memory_check_if_exists_and_different( ] ) + @patch("argo_scg.sensu.Sensu.get_agents") @patch("argo_scg.sensu.requests.put") @patch("argo_scg.sensu.requests.post") @patch("argo_scg.sensu.Sensu._get_checks") def test_update_memory_check_error_with_message( - self, mock_get, mock_post, mock_put + self, mock_get, mock_post, mock_put, mock_agents ): mock_checks_copy = mock_checks.copy() mock_checks_copy[4] = { @@ -9018,7 +9044,7 @@ def test_update_memory_check_error_with_message( "check-memory-usage" ], "subscriptions": [ - "tenant1" + "entity:sensu-agent1" ], "proxy_entity_name": "", "check_hooks": None, @@ -9046,6 +9072,7 @@ def test_update_memory_check_error_with_message( } mock_get.return_value = mock_checks_copy mock_put.side_effect = mock_post_response_not_ok_with_msg + mock_agents.return_value = [mock_entities[3]] with self.assertRaises(SensuException) as context: with self.assertLogs(LOGNAME) as log: self.sensu.add_memory_check(namespace="tenant1") @@ -9072,11 +9099,12 @@ def test_update_memory_check_error_with_message( ] ) + @patch("argo_scg.sensu.Sensu.get_agents") @patch("argo_scg.sensu.requests.put") @patch("argo_scg.sensu.requests.post") @patch("argo_scg.sensu.Sensu._get_checks") def test_update_memory_check_error_without_message( - self, mock_get, mock_post, mock_put + self, mock_get, mock_post, mock_put, mock_agents ): mock_checks_copy = mock_checks.copy() mock_checks_copy[4] = { @@ -9090,7 +9118,7 @@ def test_update_memory_check_error_without_message( "check-memory-usage" ], "subscriptions": [ - "tenant1" + "entity:sensu-agent1" ], "proxy_entity_name": "", "check_hooks": None, @@ -9118,6 +9146,7 @@ def test_update_memory_check_error_without_message( } mock_get.return_value = mock_checks_copy mock_put.side_effect = mock_post_response_not_ok_without_msg + mock_agents.return_value = [mock_entities[3]] with self.assertRaises(SensuException) as context: with self.assertLogs(LOGNAME) as log: self.sensu.add_memory_check(namespace="tenant1") @@ -9160,7 +9189,7 @@ def setUp(self) -> None: "publish": True, "runtime_assets": None, "subscriptions": [ - "tenant" + "entity:sensu-agent1" ], "proxy_entity_name": "eu.eosc.portal.services.url__hostname." "example.eu_site-name", @@ -9229,7 +9258,7 @@ def setUp(self) -> None: "processes": None }, "subscriptions": [ - "tenant" + "entity:sensu-agent1" ], "last_seen": 0, "deregister": False, @@ -9742,7 +9771,7 @@ def setUp(self) -> None: "{{ .labels.ssl }} " "-p {{ .labels.port }} ", "subscriptions": [ - "default" + "entity:sensu-agent1" ], "handlers": [], "proxy_requests": { @@ -9784,7 +9813,7 @@ def setUp(self) -> None: "publish": True, "runtime_assets": None, "subscriptions": [ - "default" + "entity:sensu-agent1" ], "proxy_entity_name": "", "check_hooks": None, @@ -9829,7 +9858,7 @@ def setUp(self) -> None: "publish": True, "runtime_assets": None, "subscriptions": [ - "default" + "entity:sensu-agent1" ], "proxy_entity_name": "", "check_hooks": None, @@ -10135,11 +10164,11 @@ def test_get_check_subscriptions(self, return_checks): return_checks.return_value = self.checks self.assertEqual( self.sensu.get_check_subscriptions(check="generic.http.connect"), - ["default"] + ["entity:sensu-agent1"] ) self.assertEqual( self.sensu.get_check_subscriptions(check="generic.tcp.connect"), [ - "default" + "entity:sensu-agent1" ] ) From 82ef1db5e5e5928b572267680b8b702572cbbf35 Mon Sep 17 00:00:00 2001 From: Katarina Zailac Date: Mon, 26 Aug 2024 10:29:08 +0200 Subject: [PATCH 12/20] Remove subscriptions entry from the configuration file --- config/scg.conf | 1 - modules/config.py | 21 ------- tests/test_config.py | 136 ------------------------------------------- 3 files changed, 158 deletions(-) diff --git a/config/scg.conf b/config/scg.conf index 59e385a..1f6953e 100644 --- a/config/scg.conf +++ b/config/scg.conf @@ -20,7 +20,6 @@ metricprofiles = ARGO_MON_TENANT1 topology = /etc/argo-scg/topology_tenant1.json secrets = /etc/sensu/secrets2 publish = false -subscription = hostname_with_id [tenant2] poem_url = https://tenant2.poem.devel.argo.grnet.gr diff --git a/modules/config.py b/modules/config.py index ad884ae..b416090 100644 --- a/modules/config.py +++ b/modules/config.py @@ -223,27 +223,6 @@ def get_publisher_queue(self): return queue - def get_subscriptions(self): - subscriptions = dict() - for tenant in self.tenants: - try: - value = self.conf.get(tenant, "subscription") - - if value not in [ - "entity", "hostname", "hostname_with_id", "servicetype" - ]: - raise ConfigException( - f"Unacceptable value '{value}' for option: " - f"'subscription' in section: '{tenant}'" - ) - - except configparser.NoOptionError: - value = "hostname" - - subscriptions.update({tenant: value}) - - return subscriptions - def get_agents_configurations(self): configurations = dict() diff --git a/tests/test_config.py b/tests/test_config.py index 6c5d4a5..b9f11fc 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -30,69 +30,9 @@ attributes = /path/to/attributes2 metricprofiles = PROFILE4 publish = false -subscription = hostname_with_id skipped_metrics = eudat.b2safe.irods-crud, argo.connectors.check """ -config_file_ok_hostname_service_sub = """[GENERAL] -sensu_url = http://sensu.mock.url/ -sensu_token = s3ns8t0k3n -webapi_url = https://web-api.mock.url/ - -[TENANT1] -poem_url = https://tenant1.poem.mock.url/ -poem_token = p03mtok3n -webapi_token = w3b4p1t0k3n -topology_groups_filter = type=NGI&tags=certification:Certified -topology_endpoints_filter = tags=monitored:1 -attributes = /path/to/attributes1 -metricprofiles = PROFILE1, PROFILE2,PROFILE3 -topology = /path/to/topology1 -secrets = /path/to/secrets -publish = true -publisher_queue = /var/spool/argo-nagios-ams-publisher/tenant1_metrics -agents_configuration = /path/to/config-file -subscription = servicetype - -[TENANT2] -poem_url = https://tenant2.poem.mock.url/ -poem_token = p03mtok3n22 -webapi_token = w3b4p1t0k3n2 -attributes = /path/to/attributes2 -metricprofiles = PROFILE4 -publish = false -subscription = hostname -""" - -config_file_ok_entity_sub = """[GENERAL] -sensu_url = http://sensu.mock.url/ -sensu_token = s3ns8t0k3n -webapi_url = https://web-api.mock.url/ - -[TENANT1] -poem_url = https://tenant1.poem.mock.url/ -poem_token = p03mtok3n -webapi_token = w3b4p1t0k3n -topology_groups_filter = type=NGI&tags=certification:Certified -topology_endpoints_filter = tags=monitored:1 -attributes = /path/to/attributes1 -metricprofiles = PROFILE1, PROFILE2,PROFILE3 -topology = /path/to/topology1 -secrets = /path/to/secrets -publish = true -publisher_queue = /var/spool/argo-nagios-ams-publisher/tenant1_metrics -agents_configuration = /path/to/config-file - -[TENANT2] -poem_url = https://tenant2.poem.mock.url/ -poem_token = p03mtok3n22 -webapi_token = w3b4p1t0k3n2 -attributes = /path/to/attributes2 -metricprofiles = PROFILE4 -publish = false -subscription = entity -""" - config_file_ok_custom_namespace = """[GENERAL] sensu_url = http://sensu.mock.url/ sensu_token = s3ns8t0k3n @@ -119,7 +59,6 @@ attributes = /path/to/attributes2 metricprofiles = PROFILE4 publish = false -subscription = hostname_with_id """ config_file_ok_custom_namespace_multiple_tenants = """[GENERAL] @@ -148,7 +87,6 @@ attributes = /path/to/attributes2 metricprofiles = PROFILE4 publish = false -subscription = hostname_with_id [TENANT3] poem_url = https://tenant3.poem.mock.url/ @@ -220,34 +158,6 @@ publish = false """ -config_file_wrong_subscription_entry = """[GENERAL] -sensu_url = http://sensu.mock.url/ -sensu_token = s3ns8t0k3n -webapi_url = https://web-api.mock.url/ - -[TENANT1] -poem_url = https://tenant1.poem.mock.url/ -poem_token = p03mtok3n -webapi_token = w3b4p1t0k3n -topology_groups_filter = type=NGI&tags=certification:Certified -topology_endpoints_filter = tags=monitored:1 -attributes = /path/to/attributes1 -metricprofiles = PROFILE1, PROFILE2,PROFILE3 -topology = /path/to/topology1 -secrets = /path/to/secrets -publish = true -publisher_queue = /var/spool/argo-nagios-ams-publisher/tenant1_metrics - -[TENANT2] -poem_url = https://tenant2.poem.mock.url/ -poem_token = p03mtok3n22 -webapi_token = w3b4p1t0k3n2 -attributes = /path/to/attributes2 -metricprofiles = PROFILE4 -publish = false -subscription = nonexisting -""" - agents_config_ok = """[AGENTS] sensu-agent1.argo.eu = webdav, xrootd sensu-agent2.argo.eu = ARC-CE @@ -606,52 +516,6 @@ def test_get_publisher_queue(self): } ) - def test_get_subscriptions(self): - self.assertEqual( - self.config.get_subscriptions(), { - "TENANT1": "hostname", "TENANT2": "hostname_with_id" - } - ) - - def test_get_subscriptions_hostname_servicetype(self): - with open(config_file_name, "w") as f: - f.write(config_file_ok_hostname_service_sub) - - config = Config(config_file=config_file_name) - - self.assertEqual( - config.get_subscriptions(), { - "TENANT1": "servicetype", "TENANT2": "hostname" - } - ) - - def test_get_subscriptions_entity(self): - with open(config_file_name, "w") as f: - f.write(config_file_ok_entity_sub) - - config = Config(config_file=config_file_name) - - self.assertEqual( - config.get_subscriptions(), { - "TENANT1": "hostname", "TENANT2": "entity" - } - ) - - def test_get_subscriptions_with_wrong_entry(self): - with open(config_file_name, "w") as f: - f.write(config_file_wrong_subscription_entry) - - config = Config(config_file=config_file_name) - - with self.assertRaises(ConfigException) as context: - config.get_subscriptions() - - self.assertEqual( - context.exception.__str__(), - "Configuration file error: Unacceptable value 'nonexisting' for " - "option: 'subscription' in section: 'TENANT2'" - ) - def test_get_agents_configurations(self): self.assertEqual( self.config.get_agents_configurations(), { From bf7b5c03915ac3887c8e5865ceb88403fae4a89f Mon Sep 17 00:00:00 2001 From: Katarina Zailac Date: Mon, 26 Aug 2024 11:54:38 +0200 Subject: [PATCH 13/20] Write warning message if there are multiple agents available for tenant's namespace --- exec/scg-reload.py | 26 +-- modules/generator.py | 10 +- tests/test_generator.py | 346 ++++++++++++++++++++++++++-------------- 3 files changed, 242 insertions(+), 140 deletions(-) diff --git a/exec/scg-reload.py b/exec/scg-reload.py index d8f111d..24d0dbf 100755 --- a/exec/scg-reload.py +++ b/exec/scg-reload.py @@ -47,7 +47,6 @@ def main(): local_topology = config.get_topology() secrets = config.get_secrets() publish_bool = config.publish() - subscriptions = config.get_subscriptions() skipped_metrics = config.get_skipped_metrics() agents_configurations = config.get_agents_configurations() @@ -126,15 +125,18 @@ def main(): generator = ConfigurationGenerator( metrics=poem.get_metrics_configurations(), - profiles=metricprofiles[tenant], metric_profiles=webapi.get_metric_profiles(), topology=topology, + profiles=metricprofiles[tenant], attributes=poem.get_metric_overrides(), secrets_file=secrets[tenant], default_ports=poem.get_default_ports(), tenant=tenant, - skipped_metrics=skipped_metrics[tenant], - subscription=subscriptions[tenant] + default_agent=[ + item["metadata"]["name"] for item in + sensu.get_agents(namespace=namespace) + ], + skipped_metrics=skipped_metrics[tenant] ) tenants_checks.update({ @@ -148,16 +150,6 @@ def main(): tenant: generator.generate_entities(namespace=namespace) }) - tenants_internal_services.update({ - tenant: generator.generate_internal_services() - }) - - tenants_subscriptions.update({ - tenant: generator.generate_subscriptions( - custom_subs=custom_subs - ) - }) - tenants_metric_overrides.update({ tenant: generator.get_metric_parameter_overrides() }) @@ -170,8 +162,6 @@ def main(): merger = ConfigurationMerger( checks=tenants_checks, entities=tenants_entities, - internal_services=tenants_internal_services, - subscriptions=tenants_subscriptions, metricoverrides4agents=tenants_metric_overrides, attributeoverrides4agents=tenants_attribute_overrides ) @@ -182,8 +172,6 @@ def main(): merger.merge_metric_parameter_overrides() host_attribute_overrides = \ merger.merge_attribute_overrides() - internal_services = merger.merge_internal_services() - subs = merger.merge_subscriptions() else: checks = tenants_checks[tenants[0]] @@ -194,8 +182,6 @@ def main(): host_attribute_overrides = tenants_attribute_overrides[ tenants[0] ] - internal_services = tenants_internal_services[tenants[0]] - subs = tenants_subscriptions[tenants[0]] sensu.add_daily_filter(namespace=namespace) sensu.handle_slack_handler( diff --git a/modules/generator.py b/modules/generator.py index b52f487..9ba4a13 100644 --- a/modules/generator.py +++ b/modules/generator.py @@ -88,7 +88,15 @@ def __init__( self.servicesite_name_var = "$_SERVICESITE_NAME$" self.servicevo_fqan_var = "$_SERVICEVO_FQAN$" - self.subscriptions = [f"entity:{default_agent}"] + sorted_agents = sorted(default_agent) + + if len(default_agent) > 1: + self.logger.warning( + f"{tenant}: Multiple agents defined for tenant - using " + f"{sorted_agents[0]} for checks' configuration" + ) + + self.subscriptions = [f"entity:{default_agent[0]}"] metrics_list = list() internal_metrics = list() diff --git a/tests/test_generator.py b/tests/test_generator.py index 44bcfc5..125b628 100644 --- a/tests/test_generator.py +++ b/tests/test_generator.py @@ -4251,7 +4251,7 @@ def test_generate_checks_configuration(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent=["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -4341,6 +4341,114 @@ def test_generate_checks_configuration(self): ) self.assertEqual(log.output, DUMMY_LOG) + def test_generate_checks_configuration_if_multiple_agents(self): + with self.assertLogs(LOGNAME) as log: + generator = ConfigurationGenerator( + metrics=mock_metrics, + profiles=["ARGO_TEST1"], + metric_profiles=mock_metric_profiles, + topology=mock_topology, + attributes=mock_attributes, + secrets_file="", + default_ports=mock_default_ports, + tenant="MOCK_TENANT", + default_agent=[ + "sensu-agent-mock_tenant.example.com", + "sensu-agent-mock_tenant2.example.com" + ] + ) + checks = generator.generate_checks( + publish=True, namespace="mockspace" + ) + self.assertEqual( + sorted(checks, key=lambda k: k["metadata"]["name"]), + [ + { + "command": "/usr/lib64/nagios/plugins/check_http " + "-H {{ .labels.hostname }} -t 30 " + "-r argo.eu " + "-u /ni4os/report-ar/Critical/" + "NGI?accept=csv " + "--ssl --onredirect follow", + "subscriptions": [ + "entity:sensu-agent-mock_tenant.example.com" + ], + "handlers": [], + "pipelines": [ + { + "name": "hard_state", + "type": "Pipeline", + "api_version": "core/v2" + } + ], + "proxy_requests": { + "entity_attributes": [ + "entity.entity_class == 'proxy'", + "entity.labels.generic_http_ar_argoui_ni4os == " + "'generic.http.ar-argoui-ni4os'" + ] + }, + "interval": 300, + "timeout": 900, + "publish": True, + "metadata": { + "name": "generic.http.ar-argoui-ni4os", + "namespace": "mockspace", + "annotations": { + "attempts": "3" + }, + "labels": { + "tenants": "MOCK_TENANT" + } + }, + "round_robin": False + }, + { + "command": "/usr/lib64/nagios/plugins/check_tcp " + "-H {{ .labels.hostname }} -t 120 -p 443", + "subscriptions": [ + "entity:sensu-agent-mock_tenant.example.com" + ], + "handlers": [], + "pipelines": [ + { + "name": "hard_state", + "type": "Pipeline", + "api_version": "core/v2" + } + ], + "proxy_requests": { + "entity_attributes": [ + "entity.entity_class == 'proxy'", + "entity.labels.generic_tcp_connect == " + "'generic.tcp.connect'" + ] + }, + "interval": 300, + "timeout": 900, + "publish": True, + "metadata": { + "name": "generic.tcp.connect", + "namespace": "mockspace", + "annotations": { + "attempts": "3" + }, + "labels": { + "tenants": "MOCK_TENANT" + } + }, + "round_robin": False + } + ] + ) + self.assertEqual( + log.output, [ + f"WARNING:{LOGNAME}:MOCK_TENANT: Multiple agents defined for " + f"tenant - using sensu-agent-mock_tenant.example.com for " + f"checks' configuration" + ] + ) + def test_generate_checks_configuration_with_faulty_metrics(self): generator = ConfigurationGenerator( metrics=faulty_metrics, @@ -4351,7 +4459,7 @@ def test_generate_checks_configuration_with_faulty_metrics(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent=["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: checks = generator.generate_checks( @@ -4415,7 +4523,7 @@ def test_generate_checks_configuration_for_default_tenant(self): secrets_file="", default_ports=mock_default_ports, tenant="default", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent=["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -4501,7 +4609,7 @@ def test_generate_checks_configuration_without_publish(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -4601,7 +4709,7 @@ def test_generate_check_configuration_with_hardcoded_attributes(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -4773,7 +4881,7 @@ def test_generate_check_configuration_with_robot_cert_key(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -4909,7 +5017,7 @@ def test_generate_check_configuration_with_SSL(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -4975,7 +5083,7 @@ def test_generate_check_configuration_with_various_URLs(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -5115,7 +5223,7 @@ def test_generate_check_configuration_with_BDII(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -5216,7 +5324,7 @@ def test_generate_check_configuration_with_mandatory_extensions(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -5279,7 +5387,7 @@ def test_generate_check_configuration_with_optional_extensions(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -5396,7 +5504,7 @@ def test_generate_check_configuration_with_different_parameter_exts(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -5501,7 +5609,7 @@ def test_generate_openstack_check_configuration(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -5679,7 +5787,7 @@ def test_generate_pakiti_check_configuration(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -5743,7 +5851,7 @@ def test_generate_check_configuration_with_SITE_BDII(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -5821,7 +5929,7 @@ def test_generate_check_configuration_with_servicevo_without_voname(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -5886,7 +5994,7 @@ def test_generate_check_configuration_with_ARC_GOOD_SES(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -5957,7 +6065,7 @@ def test_generate_check_configuration_with_HOSTDN(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -6020,7 +6128,7 @@ def test_generate_check_configuration_with_local_topology(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -6085,7 +6193,7 @@ def test_generate_check_configuration_with_secrets(self): secrets_file="/path/to/secrets", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -6148,7 +6256,7 @@ def test_generate_check_configuration_with_secrets_with_dots(self): secrets_file="/path/to/secrets", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -6213,7 +6321,7 @@ def test_generate_check_configuration_if_NOPUBLISH(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -6333,7 +6441,7 @@ def test_generate_check_configuration_with_metric_parameter_override(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -6496,7 +6604,7 @@ def test_generate_check_configuration_with_host_attribute_override(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -6662,7 +6770,7 @@ def test_generate_check_configuration_with_host_attribute_override_global( secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -6821,7 +6929,7 @@ def test_generate_check_configuration_with_overridden_secrets_with_dots( secrets_file="/path/to/secrets", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -6886,7 +6994,7 @@ def test_generate_check_configuration_if_internal_metric(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -7003,7 +7111,7 @@ def test_generate_check_if_attribute_ending_in_url_not_servicetype_url( secrets_file="/path/to/secrets", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -7098,7 +7206,7 @@ def test_generate_check_if_attribute_ending_in_url_in_extension(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -7157,7 +7265,7 @@ def test_generate_check_if_hostname_in_tags(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -7218,7 +7326,7 @@ def test_warning_if_metric_is_missing(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: checks = generator.generate_checks( @@ -7301,7 +7409,7 @@ def test_generate_check_configuration_with_override_default_param(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -7362,7 +7470,7 @@ def test_generate_check_configuration_with_hostalias(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -7439,7 +7547,7 @@ def test_generate_check_configuration_with_hostalias_overridden_param(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -7515,7 +7623,7 @@ def test_generate_check_configuration_host_attr_override_default_some( secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -7578,7 +7686,7 @@ def test_generate_check_configuration_with_url_no_url(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -7696,7 +7804,7 @@ def test_generate_check_configuration_with_url_url_param_overrides_all( secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -7808,7 +7916,7 @@ def test_generate_check_configuration_with_url_url_param_overrides_some( secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -7922,7 +8030,7 @@ def test_generate_check_configuration_with_url_url_attr_overrides_all( secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -8032,7 +8140,7 @@ def test_generate_check_configuration_with_url_url_attr_overrides_some( secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -8131,7 +8239,7 @@ def test_generate_check_configuration_default_port_override_by_ext_some( secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -8193,7 +8301,7 @@ def test_generate_check_configuration_default_port_override_by_ext_none( secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -8264,7 +8372,7 @@ def test_generate_check_configuration_default_port_override_by_global_attr( secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -8336,7 +8444,7 @@ def test_generate_check_configuration_default_port_override_by_host_attr( secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -8430,7 +8538,7 @@ def test_generate_check_configuration_with_attributes_not_defined_anywhere( secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -8515,7 +8623,7 @@ def test_generate_check_configuration_with_servicesite_name(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -8632,7 +8740,7 @@ def test_generate_check_configuration_with_servicesite_name_with_override( secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -8733,7 +8841,7 @@ def test_generate_http_check_configuration_if_no_URL(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -8841,7 +8949,7 @@ def test_generate_check_configuration_if_attribute_with_dashes(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -8906,7 +9014,7 @@ def test_generate_passive_check_configuration(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -9027,7 +9135,7 @@ def test_generate_passive_check_configuration_if_parent_missing(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: checks = generator.generate_checks( @@ -9130,7 +9238,7 @@ def test_generate_check_configuration_if_info_bdii_tag(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -9197,7 +9305,7 @@ def test_generate_check_configuration_if_info_bdii_and_info_ext_tag(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -9262,7 +9370,7 @@ def test_generate_check_with_integer_attributes(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -9327,7 +9435,7 @@ def test_generate_check_with_xrootd_webdav_extension(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -9449,7 +9557,7 @@ def test_generate_check_with_xrootd_webdav_extension_with_override(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -9555,7 +9663,7 @@ def test_generate_check_with_duplicates_in_topology(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -9619,7 +9727,7 @@ def test_generate_check_with_non_fallback_attribute_in_every_endpoint(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -9706,7 +9814,7 @@ def test_generate_ARC_CE_check_with_set_VO_FQAN(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -9820,7 +9928,7 @@ def test_generate_ARC_CE_check_without_VONAME(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: checks = generator.generate_checks( @@ -9883,7 +9991,7 @@ def test_generate_check_configuration_if_skipped_metrics(self): "org.nagios.Keystone-TCP", "eu.egi.cloud.OpenStack-Swift" ], tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -9986,7 +10094,7 @@ def test_generate_check_configuration_if_skipped_metric_missing(self): default_ports=mock_default_ports, skipped_metrics=["org.nagios.Keystone-TCP", "argo.mock.metric"], tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -10126,7 +10234,7 @@ def test_generate_check_configuration_if_SILENCED_flag(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -10238,7 +10346,7 @@ def test_generate_entity_configuration(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -10298,7 +10406,7 @@ def test_generate_entities_with_port_and_path(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -10406,7 +10514,7 @@ def test_generate_entities_with_SSL(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -10459,7 +10567,7 @@ def test_generate_entities_with_URLs(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -10554,7 +10662,7 @@ def test_generate_entities_with_multiple_endpoint_URLs(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -10596,7 +10704,7 @@ def test_generate_entities_with_BDII(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -10728,7 +10836,7 @@ def test_generate_entities_with_different_PORTs(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -10797,7 +10905,7 @@ def test_generate_entities_with_mandatory_extensions(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -10868,7 +10976,7 @@ def test_generate_entities_with_optional_extensions(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -10932,7 +11040,7 @@ def test_generate_openstack_entities(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -11024,7 +11132,7 @@ def test_generate_multiple_same_host_entities(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -11082,7 +11190,7 @@ def test_generate_entities_with_SITE_BDII(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -11158,7 +11266,7 @@ def test_generate_entities_with_ARC_CE_MEMORY_LIMIT(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -11212,7 +11320,7 @@ def test_generate_entities_with_local_topology(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -11264,7 +11372,7 @@ def test_generate_entities_with_faulty_topology(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertRaises(GeneratorException) as context: with self.assertLogs(LOGNAME) as log: @@ -11309,7 +11417,7 @@ def test_generate_entities_with_metric_parameter_overrides(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -11400,7 +11508,7 @@ def test_generate_entities_with_metric_parameter_overrides_entity_name( secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -11494,7 +11602,7 @@ def test_generate_entities_with_host_attribute_overrides(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -11611,7 +11719,7 @@ def test_generate_entities_with_host_attribute_overrides_if_global(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -11716,7 +11824,7 @@ def test_generate_entities_with_overridden_secrets_with_dots(self): secrets_file="/path/to/secrets", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -11770,7 +11878,7 @@ def test_generate_entity_configuration_with_internal_metrics(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -11831,7 +11939,7 @@ def test_generate_entity_with_attribute_ending_in_url_not_servicetype_url( secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -11898,7 +12006,7 @@ def test_generate_entity_with_attribute_ending_in_url_in_extensions(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -11955,7 +12063,7 @@ def test_generate_entity_with_hostname_in_tags(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -12030,7 +12138,7 @@ def test_generate_entity_for_check_with_path_attribute(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -12086,7 +12194,7 @@ def test_generate_entity_for_check_with_overridden_default_param(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -12185,7 +12293,7 @@ def test_generate_entity_for_check_with_overridden_deflt_param_entity_name( secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -12264,7 +12372,7 @@ def test_generate_entity_with_hostalias(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -12320,7 +12428,7 @@ def test_generate_entity_with_hostalias_with_override(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -12361,7 +12469,7 @@ def test_generate_entity_with_duplicate_sites(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -12413,7 +12521,7 @@ def test_generate_entity_host_override_with_default_for_some(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -12492,7 +12600,7 @@ def test_generate_entity_host_override_with_hostalias_param_override( secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -12565,7 +12673,7 @@ def test_generate_entity_host_attr_override_if_value_with_dots( secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -12624,7 +12732,7 @@ def test_generate_entity_if_no_url(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: entities = generator.generate_entities() @@ -12698,7 +12806,7 @@ def test_generate_entity_if_no_url_param_override_all(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -12767,7 +12875,7 @@ def test_generate_entity_if_no_url_param_override_some(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: entities = generator.generate_entities() @@ -12838,7 +12946,7 @@ def test_generate_entity_if_no_url_attr_override_all(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -12903,7 +13011,7 @@ def test_generate_entity_if_no_url_attr_override_some(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: entities = generator.generate_entities() @@ -12957,7 +13065,7 @@ def test_generate_entity_default_port_override_by_extension_some(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -13009,7 +13117,7 @@ def test_generate_entity_default_port_override_by_extension_none(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -13070,7 +13178,7 @@ def test_generate_entity_default_port_override_by_global_attribute(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -13132,7 +13240,7 @@ def test_generate_entity_default_port_override_by_host_attribute(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -13184,7 +13292,7 @@ def test_generate_entity_with_servicesite_name(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -13254,7 +13362,7 @@ def test_generate_entity_with_servicesite_name_with_override(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -13310,7 +13418,7 @@ def test_generate_entity_for_http_check_if_no_URL(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -13410,7 +13518,7 @@ def test_generate_entity_if_attribute_with_dash(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -13465,7 +13573,7 @@ def test_generate_entity_if_info_bdii_tag(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -13536,7 +13644,7 @@ def test_generate_entity_if_ampersand_in_URL(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -13581,7 +13689,7 @@ def test_generate_entity_with_integer_attributes(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -13656,7 +13764,7 @@ def test_generate_entity_with_xrootd_webdav_extension(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -13785,7 +13893,7 @@ def test_generate_entity_with_xrootd_webdav_extension_with_override(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -13899,7 +14007,7 @@ def test_generate_entity_with_duplicates_in_topology(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -13979,7 +14087,7 @@ def test_generate_entity_if_non_fallback_attribute_in_every_endpoint(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -14027,7 +14135,7 @@ def test_generate_entities_with_skipped_metrics(self): "org.nagios.Keystone-TCP", "eu.egi.cloud.OpenStack-Swift" ], tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent=["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -14115,7 +14223,7 @@ def test_get_metric_parameter_overrides(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() @@ -14164,7 +14272,7 @@ def test_get_host_attribute_overrides(self): secrets_file="", default_ports=mock_default_ports, tenant="MOCK_TENANT", - default_agent="sensu-agent-mock_tenant.example.com" + default_agent = ["sensu-agent-mock_tenant.example.com"] ) with self.assertLogs(LOGNAME) as log: _log_dummy() From b8e6c81d05335603130000f522c9fccaad0ff917 Mon Sep 17 00:00:00 2001 From: Katarina Zailac Date: Mon, 26 Aug 2024 13:06:56 +0200 Subject: [PATCH 14/20] Method for internal service generation --- modules/generator.py | 7 +++++++ tests/test_generator.py | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/modules/generator.py b/modules/generator.py index 9ba4a13..7fc15c5 100644 --- a/modules/generator.py +++ b/modules/generator.py @@ -1403,6 +1403,13 @@ def generate_entities(self, namespace="default"): f"{self.tenant}: Error generating entities: faulty topology" ) + def generate_internal_services(self): + services = list() + for metric in self.internal_metrics: + services.extend(self.servicetypes4metrics[metric]) + + return ",".join(sorted(list(set(services)))) + class ConfigurationMerger: def __init__( diff --git a/tests/test_generator.py b/tests/test_generator.py index 125b628..9e75565 100644 --- a/tests/test_generator.py +++ b/tests/test_generator.py @@ -14194,6 +14194,24 @@ def test_generate_entities_with_skipped_metrics(self): ) self.assertEqual(log.output, DUMMY_LOG) + def test_generate_internal_services(self): + generator = ConfigurationGenerator( + metrics=mock_metrics, + profiles=["ARGO_TEST1", "ARGO_TEST2", "ARGO_TEST27"], + metric_profiles=mock_metric_profiles, + topology=mock_topology, + attributes=mock_attributes, + secrets_file="", + default_ports=mock_default_ports, + tenant="MOCK_TENANT", + default_agent=["sensu-agent-mock_tenant.example.com"] + ) + with self.assertLogs(LOGNAME) as log: + _log_dummy() + services = generator.generate_internal_services() + self.assertEqual(services, "argo.test,argo.webui") + self.assertEqual(log.output, DUMMY_LOG) + class OverridesTests(unittest.TestCase): def test_get_metric_parameter_overrides(self): From d5eeb9cbc5ceab833a632cc6396ff26065c10e4a Mon Sep 17 00:00:00 2001 From: Katarina Zailac Date: Mon, 26 Aug 2024 13:10:18 +0200 Subject: [PATCH 15/20] Leave out subscriptions from agent handling --- modules/sensu.py | 18 +-- tests/test_sensu.py | 310 +------------------------------------------- 2 files changed, 5 insertions(+), 323 deletions(-) diff --git a/modules/sensu.py b/modules/sensu.py index 555ab34..3b6f8a2 100644 --- a/modules/sensu.py +++ b/modules/sensu.py @@ -685,7 +685,6 @@ def handle_proxy_entities(self, entities, namespace="default"): def handle_agents( self, - subscriptions, metric_parameters_overrides=None, host_attributes_overrides=None, services="internals", @@ -724,21 +723,10 @@ def _get_labels(hostname): for agent in agents: send_data = dict() - if agent["metadata"]["name"] in subscriptions.keys(): - subs = subscriptions[agent["metadata"]["name"]] + subs = [f"entity:{agent['metadata']['name']}"] - else: - subs = subscriptions["default"] - - new_subscriptions = subs + [ - item for item in agent["subscriptions"] if - agent["metadata"]["name"] in item - ] - - if not set(new_subscriptions) == set(agent["subscriptions"]): - send_data.update({ - "subscriptions": sorted(new_subscriptions) - }) + if not set(subs) == set(agent["subscriptions"]): + send_data.update({"subscriptions": subs}) labels = _get_labels(agent["metadata"]["name"]) if ( diff --git a/tests/test_sensu.py b/tests/test_sensu.py index e9167b3..3d641c9 100644 --- a/tests/test_sensu.py +++ b/tests/test_sensu.py @@ -6697,285 +6697,6 @@ def test_get_agents_with_error_without_message(self, mock_get): ] ) - @patch("requests.patch") - @patch("argo_scg.sensu.Sensu._get_agents") - def test_handle_agents_with_only_subscriptions(self, mock_get, mock_patch): - mock_get.return_value = [mock_entities[3], mock_entities[4]] - mock_patch.side_effect = mock_post_response - - with self.assertLogs(LOGNAME) as log: - self.sensu.handle_agents( - subscriptions={"default": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu", - "internals" - ]}, - namespace="tenant1" - ) - - self.assertEqual(mock_patch.call_count, 2) - mock_patch.assert_has_calls([ - call( - "https://sensu.mock.com:8080/api/core/v2/namespaces/tenant1/" - "entities/sensu-agent1", - data=json.dumps({ - "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu", - "entity:sensu-agent1", - "internals" - ] - }), - headers={ - "Authorization": "Key t0k3n", - "Content-Type": "application/merge-patch+json" - } - ), - call( - "https://sensu.mock.com:8080/api/core/v2/namespaces/tenant1/" - "entities/sensu-agent2", - data=json.dumps({ - "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu", - "entity:sensu-agent2", - "internals" - ], - "metadata": { - "labels": { - "hostname": "sensu-agent2", - "services": "internals" - } - } - }), - headers={ - "Authorization": "Key t0k3n", - "Content-Type": "application/merge-patch+json" - } - ) - ], any_order=True) - - self.assertEqual( - set(log.output), { - f"INFO:{LOGNAME}:tenant1: sensu-agent1 subscriptions updated", - f"INFO:{LOGNAME}:tenant1: sensu-agent2 subscriptions updated", - f"INFO:{LOGNAME}:tenant1: sensu-agent2 labels updated" - } - ) - - @patch("requests.patch") - @patch("argo_scg.sensu.Sensu._get_agents") - def test_handle_agents_with_agent_subscriptions(self, mock_get, mock_patch): - mock_get.return_value = [mock_entities[3], mock_entities[4]] - mock_patch.side_effect = mock_post_response - - with self.assertLogs(LOGNAME) as log: - self.sensu.handle_agents( - subscriptions={ - "default": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu", - "internals" - ], - "sensu-agent2": [ - "gocdb.ni4os.eu", - "internals" - ] - }, - namespace="tenant1" - ) - - self.assertEqual(mock_patch.call_count, 2) - mock_patch.assert_has_calls([ - call( - "https://sensu.mock.com:8080/api/core/v2/namespaces/tenant1/" - "entities/sensu-agent1", - data=json.dumps({ - "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu", - "entity:sensu-agent1", - "internals" - ] - }), - headers={ - "Authorization": "Key t0k3n", - "Content-Type": "application/merge-patch+json" - } - ), - call( - "https://sensu.mock.com:8080/api/core/v2/namespaces/tenant1/" - "entities/sensu-agent2", - data=json.dumps({ - "subscriptions": [ - "entity:sensu-agent2", - "gocdb.ni4os.eu", - "internals" - ], - "metadata": { - "labels": { - "hostname": "sensu-agent2", - "services": "internals" - } - } - }), - headers={ - "Authorization": "Key t0k3n", - "Content-Type": "application/merge-patch+json" - } - ) - ], any_order=True) - - self.assertEqual( - set(log.output), { - f"INFO:{LOGNAME}:tenant1: sensu-agent1 subscriptions updated", - f"INFO:{LOGNAME}:tenant1: sensu-agent2 subscriptions updated", - f"INFO:{LOGNAME}:tenant1: sensu-agent2 labels updated" - } - ) - - @patch("requests.patch") - @patch("argo_scg.sensu.Sensu._get_agents") - def test_add_subscriptions_to_agents_with_error_in_patch_with_msg( - self, mock_get, mock_patch - ): - mock_get.return_value = [mock_entities[3], mock_entities[4]] - mock_patch.side_effect = [ - MockResponse(None, status_code=200), - MockResponse({"message": "Something went wrong."}, status_code=400) - ] - - with self.assertLogs(LOGNAME) as log: - self.sensu.handle_agents( - subscriptions={"default": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu", - "internals" - ]}, - namespace="tenant1" - ) - - self.assertEqual(mock_patch.call_count, 2) - mock_patch.assert_has_calls([ - call( - "https://sensu.mock.com:8080/api/core/v2/namespaces/tenant1/" - "entities/sensu-agent1", - data=json.dumps({ - "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu", - "entity:sensu-agent1", - "internals" - ] - }), - headers={ - "Authorization": "Key t0k3n", - "Content-Type": "application/merge-patch+json" - } - ), - call( - "https://sensu.mock.com:8080/api/core/v2/namespaces/tenant1/" - "entities/sensu-agent2", - data=json.dumps({ - "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu", - "entity:sensu-agent2", - "internals" - ], - "metadata": { - "labels": { - "hostname": "sensu-agent2", - "services": "internals" - } - } - }), - headers={ - "Authorization": "Key t0k3n", - "Content-Type": "application/merge-patch+json" - } - ) - ], any_order=True) - - self.assertEqual( - set(log.output), { - f"INFO:{LOGNAME}:tenant1: sensu-agent1 subscriptions updated", - f"ERROR:{LOGNAME}:tenant1: sensu-agent2 not updated: " - f"400 BAD REQUEST: Something went wrong." - } - ) - - @patch("requests.patch") - @patch("argo_scg.sensu.Sensu._get_agents") - def test_add_subscriptions_to_agents_with_error_in_patch_without_msg( - self, mock_get, mock_patch - ): - mock_get.return_value = [mock_entities[3], mock_entities[4]] - mock_patch.side_effect = [ - MockResponse(None, status_code=200), - MockResponse(None, status_code=400) - ] - - with self.assertLogs(LOGNAME) as log: - self.sensu.handle_agents( - subscriptions={"default": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu", - "internals" - ]}, - namespace="tenant1" - ) - - self.assertEqual(mock_patch.call_count, 2) - mock_patch.assert_has_calls([ - call( - "https://sensu.mock.com:8080/api/core/v2/namespaces/tenant1/" - "entities/sensu-agent1", - data=json.dumps({ - "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu", - "entity:sensu-agent1", - "internals" - ] - }), - headers={ - "Authorization": "Key t0k3n", - "Content-Type": "application/merge-patch+json" - } - ), - call( - "https://sensu.mock.com:8080/api/core/v2/namespaces/tenant1/" - "entities/sensu-agent2", - data=json.dumps({ - "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu", - "entity:sensu-agent2", - "internals" - ], - "metadata": { - "labels": { - "hostname": "sensu-agent2", - "services": "internals" - } - } - }), - headers={ - "Authorization": "Key t0k3n", - "Content-Type": "application/merge-patch+json" - } - ) - ], any_order=True) - - self.assertEqual( - set(log.output), { - f"INFO:{LOGNAME}:tenant1: sensu-agent1 subscriptions updated", - f"ERROR:{LOGNAME}:tenant1: sensu-agent2 not updated: " - f"400 BAD REQUEST" - } - ) - @patch("requests.patch") @patch("argo_scg.sensu.Sensu._get_agents") def test_handle_agents_with_metric_parameter_overrides( @@ -6994,11 +6715,6 @@ def test_handle_agents_with_metric_parameter_overrides( "value": "80" } ], - subscriptions={"default": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu", - "internals" - ]}, namespace="tenant1" ) @@ -7009,10 +6725,7 @@ def test_handle_agents_with_metric_parameter_overrides( "entities/sensu-agent1", data=json.dumps({ "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu", - "entity:sensu-agent1", - "internals" + "entity:sensu-agent1" ], "metadata": { "labels": { @@ -7032,10 +6745,7 @@ def test_handle_agents_with_metric_parameter_overrides( "entities/sensu-agent2", data=json.dumps({ "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu", - "entity:sensu-agent2", - "internals" + "entity:sensu-agent2" ], "metadata": { "labels": { @@ -7077,10 +6787,6 @@ def test_handle_agents_with_host_attributes(self, mock_get, mock_patch): "attribute": "NAGIOS_FRESHNESS_PASSWORD", "value": "NI4OS_NAGIOS_FRESHNESS_PASSWORD" }], - subscriptions={"default": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" - ]}, namespace="tenant1" ) @@ -7092,8 +6798,6 @@ def test_handle_agents_with_host_attributes(self, mock_get, mock_patch): "entities/sensu-agent1", data=json.dumps({ "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu", "entity:sensu-agent1" ], "metadata": { @@ -7117,8 +6821,6 @@ def test_handle_agents_with_host_attributes(self, mock_get, mock_patch): "entities/sensu-agent2", data=json.dumps({ "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu", "entity:sensu-agent2" ], "metadata": { @@ -7152,10 +6854,6 @@ def test_handle_agents_with_services(self, mock_get, mock_patch): with self.assertLogs(LOGNAME) as log: self.sensu.handle_agents( - subscriptions={"default": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu" - ]}, services="argo.mon,argo.test", namespace="tenant1" ) @@ -7168,8 +6866,6 @@ def test_handle_agents_with_services(self, mock_get, mock_patch): "entities/sensu-agent1", data=json.dumps({ "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu", "entity:sensu-agent1" ], "metadata": { @@ -7189,8 +6885,6 @@ def test_handle_agents_with_services(self, mock_get, mock_patch): "entities/sensu-agent2", data=json.dumps({ "subscriptions": [ - "argo-devel.ni4os.eu", - "argo.ni4os.eu", "entity:sensu-agent2" ], "metadata": { From 9bcb419103ca5c8d57a5e6f0627a6baff4854cc0 Mon Sep 17 00:00:00 2001 From: Katarina Zailac Date: Mon, 26 Aug 2024 13:15:16 +0200 Subject: [PATCH 16/20] Method that merges service types for internal metrics --- modules/generator.py | 10 ++++++++ tests/test_generator.py | 54 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) diff --git a/modules/generator.py b/modules/generator.py index 7fc15c5..591b4ef 100644 --- a/modules/generator.py +++ b/modules/generator.py @@ -1416,11 +1416,13 @@ def __init__( self, checks, entities, + internal_services, metricoverrides4agents=None, attributeoverrides4agents=None ): self.checks = checks self.entities = entities + self.internal_services = internal_services self.metric_overrides = metricoverrides4agents self.attribute_overrides = attributeoverrides4agents self.logger = logging.getLogger("argo-scg.generator") @@ -1615,3 +1617,11 @@ def get_subscriptions(self): return sorted( [t.lower() for t in self.checks.keys()] + [DEFAULT_SUBSCRIPTION] ) + + def merge_internal_services(self): + internals = list() + for tenant, services_str in self.internal_services.items(): + services = [item.strip() for item in services_str.split(",")] + internals.extend(services) + + return ",".join(sorted(list(set(internals)))) diff --git a/tests/test_generator.py b/tests/test_generator.py index 9e75565..fc784c5 100644 --- a/tests/test_generator.py +++ b/tests/test_generator.py @@ -14664,6 +14664,10 @@ def test_merge_checks(self): entities={ "TENANT1": self.entities1, "TENANT2": self.entities2 + }, + internal_services={ + "TENANT1": "service1,service2,service3", + "TENANT2": "service2,service3,service4" } ) checks = merger.merge_checks() @@ -14832,6 +14836,10 @@ def test_merge_entities(self): entities={ "TENANT1": self.entities1, "TENANT2": self.entities2 + }, + internal_services={ + "TENANT1": "service1,service2,service3", + "TENANT2": "service2,service3,service4" } ) entities = merger.merge_entities() @@ -14960,6 +14968,10 @@ def test_merge_entities_if_duplicates(self): } ], "TENANT2": self.entities2 + }, + internal_services={ + "TENANT1": "service1,service2,service3", + "TENANT2": "service2,service3,service4" } ) entities = merger.merge_entities() @@ -15025,6 +15037,10 @@ def test_merge_metric_parameter_overrides(self): "TENANT1": self.entities1, "TENANT2": self.entities2 }, + internal_services={ + "TENANT1": "service1,service2,service3", + "TENANT2": "service2,service3,service4" + }, metricoverrides4agents={ "TENANT1": self.metric_overrides1, "TENANT2": self.metric_overrides2 @@ -15043,6 +15059,10 @@ def test_merge_metric_parameter_overrides_if_diff(self): "TENANT1": self.entities1, "TENANT2": self.entities2 }, + internal_services={ + "TENANT1": "service1,service2,service3", + "TENANT2": "service2,service3,service4" + }, metricoverrides4agents={ "TENANT1": [{ "metric": "argo.poem-tools.check", @@ -15087,6 +15107,10 @@ def test_merge_metric_parameter_overrides_if_same_metric_different_param( "TENANT1": self.entities1, "TENANT2": self.entities2 }, + internal_services={ + "TENANT1": "service1,service2,service3", + "TENANT2": "service2,service3,service4" + }, metricoverrides4agents={ "TENANT1": [{ "metric": "argo.poem-tools.check", @@ -15127,6 +15151,10 @@ def test_merge_attribute_overrides(self): "TENANT1": self.entities1, "TENANT2": self.entities2 }, + internal_services={ + "TENANT1": "service1,service2,service3", + "TENANT2": "service2,service3,service4" + }, attributeoverrides4agents={ "TENANT1": self.attribute_overrides1, "TENANT2": self.attribute_overrides2 @@ -15162,6 +15190,10 @@ def test_merge_attribute_overrides_if_diff(self): "TENANT1": self.entities1, "TENANT2": self.entities2 }, + internal_services={ + "TENANT1": "service1,service2,service3", + "TENANT2": "service2,service3,service4" + }, attributeoverrides4agents={ "TENANT1": [{ "hostname": "agent1", @@ -15206,8 +15238,30 @@ def test_get_subscriptions(self): entities={ "TENANT1": self.entities1, "TENANT2": self.entities2 + }, + internal_services={ + "TENANT1": "service1,service2,service3", + "TENANT2": "service2,service3,service4" } ) self.assertEqual( merger.get_subscriptions(), ["internals", "tenant1", "tenant2"] ) + + def test_merge_internal_services(self): + merger = ConfigurationMerger( + checks={ + "TENANT1": self.checks1, + "TENANT2": self.checks2 + }, + entities={ + "TENANT1": self.entities1, + "TENANT2": self.entities2 + }, + internal_services={ + "TENANT1": "service1,service2,service3", + "TENANT2": "service2,service3,service4" + } + ) + internals = merger.merge_internal_services() + self.assertEqual(internals, "service1,service2,service3,service4") From a11b9a97997ad742850627b217279f8c537401f4 Mon Sep 17 00:00:00 2001 From: Katarina Zailac Date: Mon, 26 Aug 2024 13:25:54 +0200 Subject: [PATCH 17/20] Update argo-scg.py script to be in-line with the changes --- exec/scg-reload.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/exec/scg-reload.py b/exec/scg-reload.py index 24d0dbf..7663436 100755 --- a/exec/scg-reload.py +++ b/exec/scg-reload.py @@ -74,7 +74,6 @@ def main(): tenants_checks = dict() tenants_entities = dict() tenants_internal_services = dict() - tenants_subscriptions = dict() tenants_metric_overrides = dict() tenants_attribute_overrides = dict() for tenant in tenants: @@ -150,6 +149,10 @@ def main(): tenant: generator.generate_entities(namespace=namespace) }) + tenants_internal_services.update({ + tenant: generator.generate_internal_services() + }) + tenants_metric_overrides.update({ tenant: generator.get_metric_parameter_overrides() }) @@ -162,6 +165,7 @@ def main(): merger = ConfigurationMerger( checks=tenants_checks, entities=tenants_entities, + internal_services=tenants_internal_services, metricoverrides4agents=tenants_metric_overrides, attributeoverrides4agents=tenants_attribute_overrides ) @@ -172,6 +176,7 @@ def main(): merger.merge_metric_parameter_overrides() host_attribute_overrides = \ merger.merge_attribute_overrides() + internal_services = merger.merge_internal_services() else: checks = tenants_checks[tenants[0]] @@ -182,6 +187,7 @@ def main(): host_attribute_overrides = tenants_attribute_overrides[ tenants[0] ] + internal_services = tenants_internal_services[tenants[0]] sensu.add_daily_filter(namespace=namespace) sensu.handle_slack_handler( @@ -207,7 +213,6 @@ def main(): metric_parameters_overrides=metric_parameter_overrides, host_attributes_overrides=host_attribute_overrides, services=internal_services, - subscriptions=subs, namespace=namespace ) From 453b7a4dc74e4798cd401859a5f12fdf840e91e5 Mon Sep 17 00:00:00 2001 From: Katarina Zailac Date: Mon, 26 Aug 2024 13:48:52 +0200 Subject: [PATCH 18/20] Use custom agent configuration at generator level --- exec/scg-reload.py | 7 +-- modules/generator.py | 28 +++++++--- tests/test_generator.py | 110 +++++++++++++++++++++++++++++++++++++++- 3 files changed, 134 insertions(+), 11 deletions(-) diff --git a/exec/scg-reload.py b/exec/scg-reload.py index 7663436..c7cab64 100755 --- a/exec/scg-reload.py +++ b/exec/scg-reload.py @@ -117,10 +117,10 @@ def main(): agent_config = AgentConfig( file=agents_configurations[tenant] ) - custom_subs = agent_config.get_custom_subs() + custom_agent_config = agent_config.get_custom_subs() else: - custom_subs = None + custom_agent_config = None generator = ConfigurationGenerator( metrics=poem.get_metrics_configurations(), @@ -135,7 +135,8 @@ def main(): item["metadata"]["name"] for item in sensu.get_agents(namespace=namespace) ], - skipped_metrics=skipped_metrics[tenant] + skipped_metrics=skipped_metrics[tenant], + agents_config=custom_agent_config ) tenants_checks.update({ diff --git a/modules/generator.py b/modules/generator.py index 591b4ef..9427bb2 100644 --- a/modules/generator.py +++ b/modules/generator.py @@ -58,9 +58,9 @@ def generate_adhoc_check(command, subscriptions, namespace="default"): class ConfigurationGenerator: def __init__( - self, metrics, metric_profiles, topology, profiles, - attributes, secrets_file, default_ports, tenant, default_agent, - skipped_metrics=None + self, metrics, metric_profiles, topology, profiles, attributes, + secrets_file, default_ports, tenant, default_agent, + skipped_metrics=None, agents_config=None ): self.logger = logging.getLogger("argo-scg.generator") self.tenant = tenant @@ -88,15 +88,17 @@ def __init__( self.servicesite_name_var = "$_SERVICESITE_NAME$" self.servicevo_fqan_var = "$_SERVICEVO_FQAN$" + + self.agents_config = agents_config sorted_agents = sorted(default_agent) - if len(default_agent) > 1: + if len(default_agent) > 1 and not agents_config: self.logger.warning( f"{tenant}: Multiple agents defined for tenant - using " f"{sorted_agents[0]} for checks' configuration" ) - self.subscriptions = [f"entity:{default_agent[0]}"] + self.subscriptions = [f"entity:{sorted_agents[0]}"] metrics_list = list() internal_metrics = list() @@ -788,7 +790,7 @@ def _generate_active_check( check = { "command": command.strip(), - "subscriptions": self.subscriptions, + "subscriptions": self._get_subscription(name), "handlers": [], "interval": int(configuration["config"]["interval"]) * 60, "timeout": 900, @@ -856,6 +858,18 @@ def _generate_active_check( return None + def _get_subscription(self, metric): + subscription = self.subscriptions + if self.agents_config: + for agent, servicetypes in self.agents_config.items(): + if set(self.servicetypes4metrics[metric]).intersection( + set(servicetypes) + ): + subscription = [f"entity:{agent}"] + break + + return subscription + def generate_checks(self, publish, namespace="default"): checks = list() @@ -872,7 +886,7 @@ def generate_checks(self, publish, namespace="default"): ] check = { "command": "PASSIVE", - "subscriptions": self.subscriptions, + "subscriptions": self._get_subscription(metric), "handlers": [], "pipelines": [HARD_STATE_PIPELINE], "cron": "CRON_TZ=Europe/Zagreb 0 0 31 2 *", diff --git a/tests/test_generator.py b/tests/test_generator.py index fc784c5..55156ec 100644 --- a/tests/test_generator.py +++ b/tests/test_generator.py @@ -4341,7 +4341,9 @@ def test_generate_checks_configuration(self): ) self.assertEqual(log.output, DUMMY_LOG) - def test_generate_checks_configuration_if_multiple_agents(self): + def test_generate_checks_configuration_if_multiple_agents_with_warning( + self + ): with self.assertLogs(LOGNAME) as log: generator = ConfigurationGenerator( metrics=mock_metrics, @@ -4449,6 +4451,112 @@ def test_generate_checks_configuration_if_multiple_agents(self): ] ) + def test_generate_checks_configuration_if_agents_configuration(self): + generator = ConfigurationGenerator( + metrics=mock_metrics, + profiles=["ARGO_TEST1"], + metric_profiles=mock_metric_profiles, + topology=mock_topology, + attributes=mock_attributes, + secrets_file="", + default_ports=mock_default_ports, + tenant="MOCK_TENANT", + default_agent=[ + "sensu-agent-mock_tenant.example.com", + "sensu-agent-mock_tenant2.example.com" + ], + agents_config={ + "sensu-agent-mock_tenant2.example.com": ["argo.test"] + } + ) + with self.assertLogs(LOGNAME) as log: + _log_dummy() + checks = generator.generate_checks( + publish=True, namespace="mockspace" + ) + self.assertEqual( + sorted(checks, key=lambda k: k["metadata"]["name"]), + [ + { + "command": "/usr/lib64/nagios/plugins/check_http " + "-H {{ .labels.hostname }} -t 30 " + "-r argo.eu " + "-u /ni4os/report-ar/Critical/" + "NGI?accept=csv " + "--ssl --onredirect follow", + "subscriptions": [ + "entity:sensu-agent-mock_tenant2.example.com" + ], + "handlers": [], + "pipelines": [ + { + "name": "hard_state", + "type": "Pipeline", + "api_version": "core/v2" + } + ], + "proxy_requests": { + "entity_attributes": [ + "entity.entity_class == 'proxy'", + "entity.labels.generic_http_ar_argoui_ni4os == " + "'generic.http.ar-argoui-ni4os'" + ] + }, + "interval": 300, + "timeout": 900, + "publish": True, + "metadata": { + "name": "generic.http.ar-argoui-ni4os", + "namespace": "mockspace", + "annotations": { + "attempts": "3" + }, + "labels": { + "tenants": "MOCK_TENANT" + } + }, + "round_robin": False + }, + { + "command": "/usr/lib64/nagios/plugins/check_tcp " + "-H {{ .labels.hostname }} -t 120 -p 443", + "subscriptions": [ + "entity:sensu-agent-mock_tenant.example.com" + ], + "handlers": [], + "pipelines": [ + { + "name": "hard_state", + "type": "Pipeline", + "api_version": "core/v2" + } + ], + "proxy_requests": { + "entity_attributes": [ + "entity.entity_class == 'proxy'", + "entity.labels.generic_tcp_connect == " + "'generic.tcp.connect'" + ] + }, + "interval": 300, + "timeout": 900, + "publish": True, + "metadata": { + "name": "generic.tcp.connect", + "namespace": "mockspace", + "annotations": { + "attempts": "3" + }, + "labels": { + "tenants": "MOCK_TENANT" + } + }, + "round_robin": False + } + ] + ) + self.assertEqual(log.output, DUMMY_LOG) + def test_generate_checks_configuration_with_faulty_metrics(self): generator = ConfigurationGenerator( metrics=faulty_metrics, From a3f6d20dacb71176233d6a5b5d7ba6ef8c5c95e7 Mon Sep 17 00:00:00 2001 From: Katarina Zailac Date: Mon, 26 Aug 2024 14:01:11 +0200 Subject: [PATCH 19/20] Simplify check subscriptions when merging checks --- modules/generator.py | 15 --------------- tests/test_generator.py | 37 +++++++++---------------------------- 2 files changed, 9 insertions(+), 43 deletions(-) diff --git a/modules/generator.py b/modules/generator.py index 9427bb2..f675b71 100644 --- a/modules/generator.py +++ b/modules/generator.py @@ -11,8 +11,6 @@ "TRUSTSTORE": "/etc/sensu/certs/truststore.ts" } -DEFAULT_SUBSCRIPTION = "internals" - HARD_STATE_PIPELINE = { "name": "hard_state", "type": "Pipeline", @@ -1465,14 +1463,6 @@ def merge_checks(self): tenants.append(check["metadata"]["labels"]["tenants"]) - if len(tenants) > 1: - subs = [DEFAULT_SUBSCRIPTION] - - else: - subs = [tenants[0].lower()] - - merged_checks[check_index]["subscriptions"] = subs - merged_checks[check_index]["metadata"]["labels"][ "tenants" ] = ",".join(sorted(tenants)) @@ -1627,11 +1617,6 @@ def merge_attribute_overrides(self): return merged_attributes - def get_subscriptions(self): - return sorted( - [t.lower() for t in self.checks.keys()] + [DEFAULT_SUBSCRIPTION] - ) - def merge_internal_services(self): internals = list() for tenant, services_str in self.internal_services.items(): diff --git a/tests/test_generator.py b/tests/test_generator.py index 55156ec..47a780f 100644 --- a/tests/test_generator.py +++ b/tests/test_generator.py @@ -14465,7 +14465,7 @@ def setUp(self): "{{ .labels.generic_http_connect_path | " "default " " }}", "subscriptions": [ - "tenant1" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -14507,7 +14507,7 @@ def setUp(self): "-C /etc/sensu/certs/hostcert.pem " "-K /etc/sensu/certs/hostkey.pem", "subscriptions": [ - "tenant1" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -14545,7 +14545,7 @@ def setUp(self): "argo-poem-tools/argo-poem-tools.log " "--age 2 --app argo-poem-packages", "subscriptions": [ - "tenant1" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -14577,7 +14577,7 @@ def setUp(self): "-t 30 -u {{ .labels.endpoint_url}} " "-x /aris/partition/state_up --ok up", "subscriptions": [ - "tenant2" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -14615,7 +14615,7 @@ def setUp(self): "argo-poem-tools/argo-poem-tools.log " "--age 2 --app argo-poem-packages", "subscriptions": [ - "tenant2" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -14787,7 +14787,7 @@ def test_merge_checks(self): "argo-poem-tools/argo-poem-tools.log " "--age 2 --app argo-poem-packages", "subscriptions": [ - "internals" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -14822,7 +14822,7 @@ def test_merge_checks(self): "-C /etc/sensu/certs/hostcert.pem " "-K /etc/sensu/certs/hostkey.pem", "subscriptions": [ - "tenant1" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -14863,7 +14863,7 @@ def test_merge_checks(self): "{{ .labels.generic_http_connect_path | " "default " " }}", "subscriptions": [ - "tenant1" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -14900,7 +14900,7 @@ def test_merge_checks(self): "-t 30 -u {{ .labels.endpoint_url}} " "-x /aris/partition/state_up --ok up", "subscriptions": [ - "tenant2" + "entity:sensu-agent-mock_tenant.example.com" ], "handlers": [], "pipelines": [ @@ -15337,25 +15337,6 @@ def test_merge_attribute_overrides_if_diff(self): ] ) - def test_get_subscriptions(self): - merger = ConfigurationMerger( - checks={ - "TENANT1": self.checks1, - "TENANT2": self.checks2 - }, - entities={ - "TENANT1": self.entities1, - "TENANT2": self.entities2 - }, - internal_services={ - "TENANT1": "service1,service2,service3", - "TENANT2": "service2,service3,service4" - } - ) - self.assertEqual( - merger.get_subscriptions(), ["internals", "tenant1", "tenant2"] - ) - def test_merge_internal_services(self): merger = ConfigurationMerger( checks={ From 80452acf57a913d06c631e3045e222b754e005c8 Mon Sep 17 00:00:00 2001 From: Katarina Zailac Date: Tue, 27 Aug 2024 10:24:49 +0200 Subject: [PATCH 20/20] Update README.md to reflect the changes in the tool --- README.md | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 5851a9b..4ccab35 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,6 @@ topology_groups_filter = type=NGI&tags=certification:Certified topology_endpoints_filter = tags=monitored:1 attributes = /etc/argo-scg/attributes/attributes-tenant2.conf secrets = /path/to/secrets -subscription = servicetype agents_configuration = /path/to/config-file skipped_metrics = eudat.b2safe.irods-crud, argo.connectors.check namespace = tenant2_namespace @@ -61,18 +60,13 @@ namespace = tenant2_namespace * `topology_endpoints_filter ` - query parameter(s) used when fetching topology endpoints from Web-API (optional); * `attributes` - path to the file containing the attributes for the given tenant (optional); * `secrets` - path to file containing sensitive attributes (e.g. passwords, tokens) (optional); -* `subscription` - type of subscription to use (optional; if not set, it uses the default value). There are three possible values: - * `entity` - entity name is used as subscription, - * `hostname` - hostname is used as a subscription (this is a default value), - * `hostname_with_id` - hostname with id is used as subscription, - * `servicetype` - service types are used as subscription, * `agents_configuration` - path to configuration file for custom agents' subscriptions (optional); * `skipped_metrics` - list of metrics that should not be run on Sensu agent (optional). These metrics would then be skipped when doing the configuration for the Sensu agent, even if they do exist in the metric profile; * `namespace` - Sensu namespace to which the tenant is going to be associated (optional). If not set, tenant is associated to the namespace with the same name as tenant. #### Agents configuration -If `agents_configuration` setting exists, `scg-reload.py` tool will use only subscription set in the configuration file for the agents listed in the file. The configuration file must have the following form: +If `agents_configuration` setting exists, `scg-reload.py` tool will configure checks with given service types to be run on the agents listed in the file. The configuration file must have the following form: ``` [AGENTS] @@ -247,7 +241,7 @@ All the arguments used for filtering can also be combined. ### Namespaces -Multi-tenancy in Sensu is achieved by using namespaces - each tenant has its own namespace with isolated definitions of checks (metrics), entities (endpoints), events, handlers, filters, and pipelines. For each tenant defined in the configuration file, the `scg-reload.py` tool creates a namespace (with the same name as tenant) if it does not exist. Also, if a namespace exists for which there is no tenant definition in the configuration file, that namespace is deleted. +Multi-tenancy in Sensu is achieved by using namespaces - each tenant has its own namespace with isolated definitions of checks (metrics), entities (endpoints), events, handlers, filters, and pipelines. For each tenant defined in the configuration file, the `scg-reload.py` tool creates a namespace (with the same name as tenant, unless specified explicitly in the configuration file) if it does not exist. Also, if a namespace exists for which there is no tenant definition in the configuration file, that namespace is deleted. ### Entities @@ -257,7 +251,7 @@ Proxy entities, on the other hand, allow Sensu to monitor external resources on #### Agent entity -For each tenant, we create a single agent entity which runs the checks for the given tenant. Sensu is scheduling checks based on subscriptions: the subscriptions specified in the Sensu agent definition control which checks the agent will execute. In our system, such subscriptions are actually hostnames of proxy entities configured (and one additional, `internal`, for the internal checks which are executed directly on the agent). The list of subscriptions for agent are handled by `scg-reload.py` tool. +For each tenant, we create a single agent entity which runs the checks for the given tenant. Sensu is scheduling checks based on subscriptions: the subscriptions specified in the Sensu agent definition control which checks the agent will execute. The list of subscriptions for agent are handled by `scg-reload.py` tool. #### Proxy entity @@ -306,7 +300,7 @@ If we take [generic.tcp.connect](https://poem.argo.grnet.gr/ui/public_metrictemp Checks can fetch information from entities' labels buckets, and they are generated accordingly (case of attributes, special values from topology and/or overrides). The parameters are simply mapped to command if there are no overrides. -Tool also creates a list of hostnames which are going to run the check, and adds them to subscriptions list. It calculates the check interval (in POEM it is defined in minutes, in check definition it needs to be defined in seconds). A fixed timeout of 900 s (15 min) is created for each check - this is in case the probe is left hanging, so that it does not clutter the system. +Tool calculates the check interval (in POEM it is defined in minutes, in check definition it needs to be defined in seconds). A fixed timeout of 900 s (15 min) is created for each check - this is in case the probe is left hanging, so that it does not clutter the system. In metadata bucket the tool stores the metric name, namespace in which it is defined, and in annotations we define attempts, which is the number defined as `maxCheckAttempts` in POEM. This number is used by `hard-state` filter. @@ -326,6 +320,7 @@ This metrics are considered internal, so the alerts are only raised to ARGO Slac * `NOHOSTNAME` - `{{ .labels.hostname }}` is left out from the check command. * `NOTIMEOUT` - `-t ` parameter is left out from the check command. * `NOPUBLISH` - pipeline defined for this check is `reduce_alerts`. Its results are sent to Slack channel instead of AMS Publisher. +* `SILENCED` - metrics with this flag are configured not to raise alerts. Used only with specific internal metrics, which are in turn handled differently. * `PASSIVE` - marks passive metric. These are handled slightly differently. They are not actively running, but generated by results written to fifo file by their active parents. When a metric has this flag, the generated check looks as follows: ```json