Source code for saltext.zabbix.states.zabbix_usergroup
"""Management of Zabbix user groups.:codeauthor: Jiri Kotlin <jiri.kotlin@ultimum.io>"""
[docs]def__virtual__():""" Only make these states available if Zabbix module is available. """if"zabbix.usergroup_create"in__salt__:returnTruereturn(False,"zabbix module could not be loaded")
[docs]defpresent(name,**kwargs):""" Creates new user group. NOTE: This function accepts all standard user group properties: keyword argument names differ depending on your zabbix version, see: https://www.zabbix.com/documentation/2.0/manual/appendix/api/usergroup/definitions#user-group .. versionadded:: 2016.3.0 :param name: name of the user group :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) .. code-block:: yaml make_new_thai_monks_usergroup: zabbix_usergroup.present: - name: 'Thai monks' - gui_access: 1 - debug_mode: 0 - users_status: 0 """connection_args={}if"_connection_user"inkwargs:connection_args["_connection_user"]=kwargs["_connection_user"]if"_connection_password"inkwargs:connection_args["_connection_password"]=kwargs["_connection_password"]if"_connection_url"inkwargs:connection_args["_connection_url"]=kwargs["_connection_url"]ret={"name":name,"changes":{},"result":False,"comment":""}# Comment and change messagescomment_usergroup_created=f"User group {name} created."comment_usergroup_updated=f"User group {name} updated."comment_usergroup_notcreated=f"Unable to create user group: {name}. "comment_usergroup_exists=f"User group {name} already exists."changes_usergroup_created={name:{"old":f"User group {name} does not exist.","new":f"User group {name} created.",}}usergroup_exists=__salt__["zabbix.usergroup_exists"](name,**connection_args)ifusergroup_exists:usergroup=__salt__["zabbix.usergroup_get"](name,**connection_args)[0]usrgrpid=int(usergroup["usrgrpid"])update_debug_mode=Falseupdate_gui_access=Falseupdate_users_status=Falseupdate_rights=Falseif"debug_mode"inkwargs:ifint(kwargs["debug_mode"])!=int(usergroup["debug_mode"]):update_debug_mode=Trueif"gui_access"inkwargs:ifint(kwargs["gui_access"])!=int(usergroup["gui_access"]):update_gui_access=Trueif"rights"inkwargs:# Older versions of Zabbix do not return the list of rights for the user group, handle this gracefullytry:ifusergroup["rights"]:# Make sure right values are strings so we can compare them with the current user group rightsforrightinkwargs["rights"]:forkeyinright:right[key]=str(right[key])ifsorted(kwargs["rights"])!=sorted(usergroup["rights"]):update_rights=Trueelse:update_rights=TrueexceptKeyError:# As we don't know the current permissions, overwrite them as provided in the state.update_rights=Trueif"users_status"inkwargs:ifint(kwargs["users_status"])!=int(usergroup["users_status"]):update_users_status=True# Dry run, test=true modeif__opts__["test"]:ifusergroup_exists:ifupdate_debug_modeorupdate_gui_accessorupdate_rightsorupdate_users_status:ret["result"]=Noneret["comment"]=comment_usergroup_updatedelse:ret["result"]=Trueret["comment"]=comment_usergroup_existselse:ret["result"]=Noneret["comment"]=comment_usergroup_createdreturnreterror=[]ifusergroup_exists:ifupdate_debug_modeorupdate_gui_accessorupdate_rightsorupdate_users_status:ret["result"]=Trueret["comment"]=comment_usergroup_updatedifupdate_debug_mode:updated_debug=__salt__["zabbix.usergroup_update"](usrgrpid,debug_mode=kwargs["debug_mode"],**connection_args)if"error"inupdated_debug:error.append(updated_debug["error"])else:ret["changes"]["debug_mode"]=kwargs["debug_mode"]ifupdate_gui_access:updated_gui=__salt__["zabbix.usergroup_update"](usrgrpid,gui_access=kwargs["gui_access"],**connection_args)if"error"inupdated_gui:error.append(updated_gui["error"])else:ret["changes"]["gui_access"]=kwargs["gui_access"]ifupdate_rights:updated_rights=__salt__["zabbix.usergroup_update"](usrgrpid,rights=kwargs["rights"],**connection_args)if"error"inupdated_rights:error.append(updated_rights["error"])else:ret["changes"]["rights"]=kwargs["rights"]ifupdate_users_status:updated_status=__salt__["zabbix.usergroup_update"](usrgrpid,users_status=kwargs["users_status"],**connection_args)if"error"inupdated_status:error.append(updated_status["error"])else:ret["changes"]["users_status"]=kwargs["users_status"]else:ret["result"]=Trueret["comment"]=comment_usergroup_existselse:usergroup_create=__salt__["zabbix.usergroup_create"](name,**kwargs)if"error"notinusergroup_create:ret["result"]=Trueret["comment"]=comment_usergroup_createdret["changes"]=changes_usergroup_createdelse:ret["result"]=Falseret["comment"]=comment_usergroup_notcreated+str(usergroup_create["error"])# error detectediferror:ret["changes"]={}ret["result"]=Falseret["comment"]=str(error)returnret
[docs]defabsent(name,**kwargs):""" Ensures that the user group does not exist, eventually delete user group. .. versionadded:: 2016.3.0 :param name: name of the user group :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) .. code-block:: yaml delete_thai_monks_usrgrp: zabbix_usergroup.absent: - name: 'Thai monks' """connection_args={}if"_connection_user"inkwargs:connection_args["_connection_user"]=kwargs["_connection_user"]if"_connection_password"inkwargs:connection_args["_connection_password"]=kwargs["_connection_password"]if"_connection_url"inkwargs:connection_args["_connection_url"]=kwargs["_connection_url"]ret={"name":name,"changes":{},"result":False,"comment":""}# Comment and change messagescomment_usergroup_deleted=f"User group {name} deleted."comment_usergroup_notdeleted=f"Unable to delete user group: {name}. "comment_usergroup_notexists=f"User group {name} does not exist."changes_usergroup_deleted={name:{"old":f"User group {name} exists.","new":f"User group {name} deleted.",}}usergroup_exists=__salt__["zabbix.usergroup_exists"](name,**connection_args)# Dry run, test=true modeif__opts__["test"]:ifnotusergroup_exists:ret["result"]=Trueret["comment"]=comment_usergroup_notexistselse:ret["result"]=Noneret["comment"]=comment_usergroup_deletedreturnretusergroup_get=__salt__["zabbix.usergroup_get"](name,**connection_args)ifnotusergroup_get:ret["result"]=Trueret["comment"]=comment_usergroup_notexistselse:try:usrgrpid=usergroup_get[0]["usrgrpid"]usergroup_delete=__salt__["zabbix.usergroup_delete"](usrgrpid,**connection_args)exceptKeyError:usergroup_delete=Falseifusergroup_deleteand"error"notinusergroup_delete:ret["result"]=Trueret["comment"]=comment_usergroup_deletedret["changes"]=changes_usergroup_deletedelse:ret["result"]=Falseret["comment"]=comment_usergroup_notdeleted+str(usergroup_delete["error"])returnret