Module: check_mk
Branch: master
Commit: 8397453c82efc1928057f4a5019f5e993d99159a
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=8397453c82efc1…
Author: Moritz Kiemer <mo(a)mathias-kettner.de>
Date: Fri Mar 8 13:18:41 2019 +0100
7216 Azure: Select resources by tags
You can now use Azure resource tags to decide which azure resources should
be included in your monitoring using the datasource programs rule "Microsoft
Azure".
CMK-1420
Change-Id: I99e6c1ccefe720ca8dd82166d0b301a31cc450b8
---
.werks/7216 | 11 +++++++++++
checks/agent_azure | 7 +++++++
cmk/gui/plugins/wato/datasource_programs.py | 25 +++++++++++++++++++++++++
3 files changed, 43 insertions(+)
diff --git a/.werks/7216 b/.werks/7216
new file mode 100644
index 0000000..9490583
--- /dev/null
+++ b/.werks/7216
@@ -0,0 +1,11 @@
+Title: Azure: Select resources by tags
+Level: 1
+Component: checks
+Compatible: compat
+Edition: cre
+Version: 1.6.0i1
+Date: 1552049913
+Class: feature
+
+You can now use Azure resource tags to decide which azure resources should
+be included in your monitoring using the datasource programs rule "Microsoft
Azure".
diff --git a/checks/agent_azure b/checks/agent_azure
index 775a670..fbdb560 100644
--- a/checks/agent_azure
+++ b/checks/agent_azure
@@ -55,6 +55,13 @@ def agent_azure_arguments(params, _no_hostname, _no_ipaddress):
if group_resources:
args.append("resources=%s" % ",".join(group_resources))
+ tag_based = config.get('tag_based', [])
+ for tag, requirement in tag_based:
+ if requirement == 'exists':
+ args += ["--require-tag", tag]
+ elif isinstance(requirement, tuple) and requirement[0] == 'value':
+ args += ["--require-tag-value", tag, requirement[1]]
+
return args
diff --git a/cmk/gui/plugins/wato/datasource_programs.py
b/cmk/gui/plugins/wato/datasource_programs.py
index 2aaba8a..5dc5ae0 100644
--- a/cmk/gui/plugins/wato/datasource_programs.py
+++ b/cmk/gui/plugins/wato/datasource_programs.py
@@ -1607,6 +1607,7 @@ class RulespecSpecialAgentsAzure(HostRulespec):
" resource groups and resources.") %
("12000", "200"),
elements=[
('explicit', self._azure_explicit_config()),
+ ('tag_based', self._azure_tag_based_config()),
],
)),
("piggyback_vms",
@@ -1658,6 +1659,30 @@ class RulespecSpecialAgentsAzure(HostRulespec):
add_label=_("Add resource group"),
)
+ def _azure_tag_based_config(self):
+ return ListOf(
+ Tuple(
+ orientation="horizontal",
+ elements=[
+ TextAscii(
+ title=_('The resource tag'),
+ allow_empty=False,
+ ),
+ CascadingDropdown(
+ orientation="horizontal",
+ choices=[
+ ('exists', _("exists")),
+ ('value', _("is"),
TextUnicode(title=_('Tag value'),
+ allow_empty=False)),
+ ],
+ ),
+ ],
+ ),
+ title=_('resources matching tag based criteria'),
+ allow_empty=False,
+ add_label=_("Add resource tag"),
+ )
+
class MultisiteBiDatasource(object):
def get_valuespec(self):