ansible-role-influxdb/library/influxdb_setup.py

70 lines
1.8 KiB
Python
Raw Normal View History

2023-09-07 08:36:42 +00:00
#!/usr/bin/python3
from ansible.module_utils.basic import AnsibleModule
import requests
import json
class InfluxdbSetup:
def __init__(self, api_url):
self.api_url = api_url
def already(self):
url = '{}/api/v2/setup'.format(self.api_url)
r = requests.get(url)
if r.status_code != 200:
raise Exception(
'Influxdb',
'Bad status code {}: {}'.format(r.status_code, r.text)
)
data = json.loads(r.text)
if 'allowed' not in data or data['allowed'] is True:
return False
return True
def run(self, username, org, bucket, token):
url = '{}/api/v2/setup'.format(self.api_url)
r = requests.post(url, json={
'username': username,
'org': org,
'bucket': bucket,
'token': token,
})
if r.status_code != 201:
raise Exception(
'Influxdb',
'Bad status code {}: {}'.format(r.status_code, r.text)
)
def main():
fields = {
'username': {'type': 'str', 'required': True},
'org': {'type': 'str', 'required': True},
'bucket': {'type': 'str', 'required': True},
'token': {'type': 'str', 'required': True},
'api_url': {'type': 'str', 'default': 'http://127.0.0.1:8086'},
}
module = AnsibleModule(argument_spec=fields)
setup = InfluxdbSetup(
module.params['api_url'],
)
if setup.already() is True:
module.exit_json(changed=False)
setup.run(
module.params['username'],
module.params['org'],
module.params['bucket'],
module.params['token'],
)
module.exit_json(changed=True)
if __name__ == '__main__':
main()