logger.warning("Zabbix login with 'user' failed, retrying with 'username'...")
self.auth_token=self._request("user.login",{
"username":self.user,
"password":self.password
})
else:
raisee
logger.info("Zabbix login successful")
exceptExceptionase:
logger.error(f"Zabbix login failed: {e}")
raise
defget_hostgroups(self):
"""
Get all host groups
Return: {group_name: group_id}
"""
self.login()
groups=self._request("hostgroup.get",{
"output":["groupid","name"],
})
group_map={}
ifisinstance(groups,list):
forgroupingroups:
group_map[group['name']]=group['groupid']
returngroup_map
defget_template_id_by_name(self,template_name):
"""
Query template ID by name
"""
self.login()
templates=self._request("template.get",{
"output":["templateid","name"],
"filter":{
"host":[template_name]# In Zabbix API, template name is also queried via 'host' field or 'name' depending on version/context, usually 'host' works for technical name
}
})
iftemplatesandisinstance(templates,list):
returntemplates[0].get("templateid")
returnNone
defdisable_host(self,host_name):
"""
Disable host by technical name (host field in Zabbix)