mirror of https://github.com/ansible/ansible.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.6 KiB
Python
77 lines
2.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Copyright: (c) 2017, Ansible Project
|
|
# Simplified BSD License (see licenses/simplified_bsd.txt or https://opensource.org/licenses/BSD-2-Clause)
|
|
|
|
from __future__ import absolute_import, division, print_function
|
|
__metaclass__ = type
|
|
|
|
try:
|
|
import requests.exceptions
|
|
HAS_REQUESTS = True
|
|
except ImportError:
|
|
HAS_REQUESTS = False
|
|
|
|
try:
|
|
from influxdb import InfluxDBClient
|
|
from influxdb import __version__ as influxdb_version
|
|
from influxdb import exceptions
|
|
HAS_INFLUXDB = True
|
|
except ImportError:
|
|
HAS_INFLUXDB = False
|
|
|
|
|
|
class InfluxDb():
|
|
def __init__(self, module):
|
|
self.module = module
|
|
self.params = self.module.params
|
|
self.check_lib()
|
|
self.hostname = self.params['hostname']
|
|
self.port = self.params['port']
|
|
self.username = self.params['username']
|
|
self.password = self.params['password']
|
|
self.database_name = self.params.get('database_name')
|
|
|
|
def check_lib(self):
|
|
if not HAS_REQUESTS:
|
|
self.module.fail_json(msg='This module requires "requests" module.')
|
|
|
|
if not HAS_INFLUXDB:
|
|
self.module.fail_json(msg='This module requires influxdb python package.')
|
|
|
|
@staticmethod
|
|
def influxdb_argument_spec():
|
|
return dict(
|
|
hostname=dict(default='localhost', type='str'),
|
|
port=dict(default=8086, type='int'),
|
|
username=dict(default='root', type='str', aliases=['login_username']),
|
|
password=dict(default='root', type='str', no_log=True, aliases=['login_password']),
|
|
ssl=dict(default=False, type='bool'),
|
|
validate_certs=dict(default=True, type='bool'),
|
|
timeout=dict(type='int'),
|
|
retries=dict(default=3, type='int'),
|
|
proxies=dict(default={}, type='dict'),
|
|
use_udp=dict(default=False, type='bool'),
|
|
udp_port=dict(type=int)
|
|
)
|
|
|
|
def connect_to_influxdb(self):
|
|
args = dict(
|
|
host=self.hostname,
|
|
port=self.port,
|
|
username=self.username,
|
|
password=self.password,
|
|
database=self.database_name,
|
|
ssl=self.params['ssl'],
|
|
verify_ssl=self.params['validate_certs'],
|
|
timeout=self.params['timeout'],
|
|
use_udp=self.params['use_udp'],
|
|
udp_port=self.params['udp_port'],
|
|
proxies=self.params['proxies'],
|
|
)
|
|
influxdb_api_version = tuple(influxdb_version.split("."))
|
|
if influxdb_api_version >= ('4', '1', '0'):
|
|
# retries option is added in version 4.1.0
|
|
args.update(retries=self.params['retries'])
|
|
|
|
return InfluxDBClient(**args)
|