def __init__(self, module): self._module = module # {{{ Authentication header self.headers = {"Content-Type": "application/json"} self.headers["Authorization"] = basic_auth_header( module.params['url_username'], module.params['url_password']) # }}} self.grafana_url = base.clean_url(module.params.get("url"))
def __init__(self, module): self._module = module self.grafana_url = base.clean_url(module.params.get("url")) # {{{ Authentication header self.headers = {"Content-Type": "application/json"} if module.params.get('grafana_api_key', None): self.headers["Authorization"] = "Bearer %s" % module.params[ 'grafana_api_key'] else: self.headers["Authorization"] = basic_auth_header( module.params['url_username'], module.params['url_password']) self.switch_organisation(module.params['org_id'])
def __init__(self, module): self._module = module # {{{ Authentication header self.headers = {"Content-Type": "application/json"} if module.params.get('grafana_api_key', None): self.headers["Authorization"] = "Bearer %s" % module.params['grafana_api_key'] else: self.headers["Authorization"] = basic_auth_header(module.params['url_username'], module.params['url_password']) # }}} self.grafana_url = base.clean_url(module.params.get("url")) if module.params.get("skip_version_check") is False: try: grafana_version = self.get_version() except GrafanaError as e: self._module.fail_json(failed=True, msg=to_text(e)) if grafana_version["major"] < 5: self._module.fail_json(failed=True, msg="Folders API is available starting Grafana v5")
def main(): # use the predefined argument spec for url argument_spec = grafana_argument_spec() argument_spec.update( state=dict(choices=['present', 'absent', 'export'], default='present'), org_id=dict(default=1, type='int'), folder=dict(type='str', default='General'), uid=dict(type='str'), slug=dict(type='str'), path=dict(aliases=['dashboard_url'], type='str'), dashboard_id=dict(type='str'), dashboard_revision=dict(type='str', default='1'), overwrite=dict(type='bool', default=False), commit_message=dict(type='str', aliases=['message'], deprecated_aliases=[ dict(name='message', version='2.0.0', collection_name="community.grafana") ]), ) module = AnsibleModule( argument_spec=argument_spec, supports_check_mode=False, required_if=[ ['state', 'export', ['path']], ], required_together=[['url_username', 'url_password', 'org_id']], mutually_exclusive=[['url_username', 'grafana_api_key'], ['uid', 'slug'], ['path', 'dashboard_id']], ) module.params["grafana_url"] = clean_url(module.params["grafana_url"]) if 'message' in module.params: module.fail_json( msg= "'message' is reserved keyword, please change this parameter to 'commit_message'" ) try: if module.params['state'] == 'present': result = grafana_create_dashboard(module, module.params) elif module.params['state'] == 'absent': result = grafana_delete_dashboard(module, module.params) else: result = grafana_export_dashboard(module, module.params) except GrafanaAPIException as e: module.fail_json(failed=True, msg="error : %s" % to_native(e)) return except GrafanaMalformedJson as e: module.fail_json(failed=True, msg="error : %s" % to_native(e)) return except GrafanaDeleteException as e: module.fail_json(failed=True, msg="error : Can't delete dashboard : %s" % to_native(e)) return except GrafanaExportException as e: module.fail_json(failed=True, msg="error : Can't export dashboard : %s" % to_native(e)) return module.exit_json(failed=False, **result) return
def main(): argument_spec = grafana_argument_spec() argument_spec.update( org_id=dict(type='int', default=1), uid=dict(type='str'), name=dict(type='str'), type=dict(type='str', choices=[ 'dingding', 'discord', 'email', 'googlechat', 'hipchat', 'kafka', 'line', 'teams', 'opsgenie', 'pagerduty', 'prometheus', 'pushover', 'sensu', 'slack', 'telegram', 'threema', 'victorops', 'webhook' ]), is_default=dict(type='bool', default=False), include_image=dict(type='bool', default=False), disable_resolve_message=dict(type='bool', default=False), reminder_frequency=dict(type='str'), dingding_url=dict(type='str'), dingding_message_type=dict(type='list', elements='str', choices=['link', 'action_card']), discord_url=dict(type='str'), discord_message_content=dict(type='str'), email_addresses=dict(type='list', elements='str'), email_single=dict(type='bool'), googlechat_url=dict(type='str'), hipchat_url=dict(type='str'), hipchat_api_key=dict(type='str', no_log=True), hipchat_room_id=dict(type='str'), kafka_url=dict(type='str'), kafka_topic=dict(type='str'), line_token=dict(type='str', no_log=True), teams_url=dict(type='str'), opsgenie_url=dict(type='str'), opsgenie_api_key=dict(type='str', no_log=True), opsgenie_auto_close=dict(type='bool'), opsgenie_override_priority=dict(type='bool'), pagerduty_integration_key=dict(type='str', no_log=True), pagerduty_severity=dict( type='list', elements='str', choices=['critical', 'error', 'warning', 'info']), pagerduty_auto_resolve=dict(type='bool'), pagerduty_message_in_details=dict(type='bool'), prometheus_url=dict(type='str'), prometheus_username=dict(type='str'), prometheus_password=dict(type='str', no_log=True), pushover_api_token=dict(type='str', no_log=True), pushover_user_key=dict(type='str', no_log=True), pushover_devices=dict(type='list', elements='str'), pushover_priority=dict( type='list', elements='str', choices=['emergency', 'high', 'normal', 'low', 'lowest']), pushover_retry=dict(type='int'), # TODO: only when priority==emergency pushover_expire=dict( type='int'), # TODO: only when priority==emergency pushover_alert_sound=dict(type='str'), # TODO: add sound choices pushover_ok_sound=dict(type='str'), # TODO: add sound choices sensu_url=dict(type='str'), sensu_source=dict(type='str'), sensu_handler=dict(type='str'), sensu_username=dict(type='str'), sensu_password=dict(type='str', no_log=True), slack_url=dict(type='str', no_log=True), slack_recipient=dict(type='str'), slack_username=dict(type='str'), slack_icon_emoji=dict(type='str'), slack_icon_url=dict(type='str'), slack_mention_users=dict(type='list', elements='str'), slack_mention_groups=dict(type='list', elements='str'), slack_mention_channel=dict(type='list', elements='str', choices=['here', 'channel']), slack_token=dict(type='str', no_log=True), telegram_bot_token=dict(type='str', no_log=True), telegram_chat_id=dict(type='str'), threema_gateway_id=dict(type='str'), threema_recepient_id=dict(type='str'), threema_api_secret=dict(type='str', no_log=True), victorops_url=dict(type='str'), victorops_auto_resolve=dict(type='bool'), webhook_url=dict(type='str'), webhook_username=dict(type='str'), webhook_password=dict(type='str', no_log=True), webhook_http_method=dict(type='list', elements='str', choices=['POST', 'PUT'])) module = AnsibleModule( argument_spec=argument_spec, supports_check_mode=False, required_together=[['url_username', 'url_password', 'org_id'], ['prometheus_username', 'prometheus_password'], ['sensu_username', 'sensu_password']], mutually_exclusive=[['url_username', 'grafana_api_key']], required_if=[ ['state', 'present', ['name', 'type']], ['type', 'dingding', ['dingding_url']], ['type', 'discord', ['discord_url']], ['type', 'email', ['email_addresses']], ['type', 'googlechat', ['googlechat_url']], ['type', 'hipchat', ['hipchat_url']], ['type', 'kafka', ['kafka_url', 'kafka_topic']], ['type', 'line', ['line_token']], ['type', 'teams', ['teams_url']], ['type', 'opsgenie', ['opsgenie_url', 'opsgenie_api_key']], ['type', 'pagerduty', ['pagerduty_integration_key']], ['type', 'prometheus', ['prometheus_url']], ['type', 'pushover', ['pushover_api_token', 'pushover_user_key']], ['type', 'sensu', ['sensu_url']], ['type', 'slack', ['slack_url']], ['type', 'telegram', ['telegram_bot_token', 'telegram_chat_id']], [ 'type', 'threema', [ 'threema_gateway_id', 'threema_recepient_id', 'threema_api_secret' ] ], ['type', 'victorops', ['victorops_url']], ['type', 'webhook', ['webhook_url']] ]) module.params["grafana_url"] = clean_url(module.params["grafana_url"]) if module.params['state'] == 'present': result = grafana_create_or_update_notification_channel( module, module.params) module.exit_json(failed=False, **result) else: result = grafana_delete_notification_channel(module, module.params) module.exit_json(failed=False, **result)