mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-22 04:40:22 -07:00
Vultr: Introduce the Vultr inventory plugin (#44400)
This commit introduce the Vultr inventory plugin.
This commit is contained in:
parent
07375be490
commit
72d4880b85
2 changed files with 165 additions and 12 deletions
|
@ -14,6 +14,7 @@ from ansible.module_utils.urls import fetch_url
|
|||
|
||||
|
||||
VULTR_API_ENDPOINT = "https://api.vultr.com"
|
||||
VULTR_USER_AGENT = 'Ansible Vultr'
|
||||
|
||||
|
||||
def vultr_argument_spec():
|
||||
|
@ -49,7 +50,7 @@ class Vultr:
|
|||
|
||||
try:
|
||||
config = self.read_env_variables()
|
||||
config.update(self.read_ini_config())
|
||||
config.update(Vultr.read_ini_config(self.module.params.get('api_account')))
|
||||
except KeyError:
|
||||
config = {}
|
||||
|
||||
|
@ -79,7 +80,7 @@ class Vultr:
|
|||
# Headers to be passed to the API
|
||||
self.headers = {
|
||||
'API-Key': "%s" % self.api_config['api_key'],
|
||||
'User-Agent': "Ansible Vultr",
|
||||
'User-Agent': VULTR_USER_AGENT,
|
||||
'Accept': 'application/json',
|
||||
}
|
||||
|
||||
|
@ -93,9 +94,8 @@ class Vultr:
|
|||
|
||||
return env_conf
|
||||
|
||||
def read_ini_config(self):
|
||||
ini_group = self.module.params.get('api_account')
|
||||
|
||||
@staticmethod
|
||||
def read_ini_config(ini_group):
|
||||
paths = (
|
||||
os.path.join(os.path.expanduser('~'), '.vultr.ini'),
|
||||
os.path.join(os.getcwd(), 'vultr.ini'),
|
||||
|
@ -236,12 +236,14 @@ class Vultr:
|
|||
|
||||
self.module.fail_json(msg="Could not find %s with %s: %s" % (resource, key, value))
|
||||
|
||||
def normalize_result(self, resource):
|
||||
fields_to_remove = set(resource.keys()) - set(self.returns.keys())
|
||||
for field in fields_to_remove:
|
||||
resource.pop(field)
|
||||
@staticmethod
|
||||
def normalize_result(resource, schema, remove_missing_keys=True):
|
||||
if remove_missing_keys:
|
||||
fields_to_remove = set(resource.keys()) - set(schema.keys())
|
||||
for field in fields_to_remove:
|
||||
resource.pop(field)
|
||||
|
||||
for search_key, config in self.returns.items():
|
||||
for search_key, config in schema.items():
|
||||
if search_key in resource:
|
||||
if 'convert_to' in config:
|
||||
if config['convert_to'] == 'int':
|
||||
|
@ -263,9 +265,9 @@ class Vultr:
|
|||
def get_result(self, resource):
|
||||
if resource:
|
||||
if isinstance(resource, list):
|
||||
self.result[self.namespace] = [self.normalize_result(item) for item in resource]
|
||||
self.result[self.namespace] = [Vultr.normalize_result(item, self.returns) for item in resource]
|
||||
else:
|
||||
self.result[self.namespace] = self.normalize_result(resource)
|
||||
self.result[self.namespace] = Vultr.normalize_result(resource, self.returns)
|
||||
|
||||
return self.result
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue