from __future__ import (absolute_import, division, print_function)
from loguru import logger
__metaclass__ = type
DOCUMENTATION = r'''
name: oracle_inventory
plugin_type: inventory
short_description: Returns Ansible inventory from Oracle databases
description: Returns Ansible inventory from Oracle databases which are registered in Oracle Enterprise Manager (OEM)
options:
plugin:
description: Name of the plugin
required: true
choices: ['oracle_inventory']
oem_db_server:
description: The OEM repository database server
required: true
oem_db_port:
description: The Port of the OEM repository database
required: true
oem_db_sid:
description: The ORACLE_SID of the OEM repository database
required: true
oem_schema_owner:
description: The owner of the OEM repository schema
required: true
oem_owner_password:
description: The password of the OEM repository schema owner
required: true
oem_target_read_user:
description: The user which is allowed to query the host, agent, and database OEM targets and its properties
required: true
oem_target_read_password:
description: The password of the OEM target read user
required: true
'''
from ansible.plugins.inventory import BaseInventoryPlugin
from ansible.errors import AnsibleError, AnsibleParserError
class InventoryModule(BaseInventoryPlugin):
NAME = 'oracle_inventory'
def __init__(self):
super(InventoryModule, self).__init__()
def verify_file(self, path):
'''Return true/false if this is possibly a valid file for this plugin to consume
'''
valid = False
if super(InventoryModule, self).verify_file(path):
logger.info(path)
if path.endswith(('oracle_inventory.yaml',
'oracle_inventory.yml')):
valid = True
return valid
def parse(self, inventory, loader, path, cache):
'''Return dynamic inventory from source '''
super(InventoryModule, self).parse(inventory, loader, path, cache)
try:
pass
# self.oem_db_server = self.get_option("oem_db_server")
# self.oem_db_sid = self.get_option("oem_db_port")
# self.oem_db_port = self.get_option("oem_db_port")
# self.oem_schema_owner = self.get_option("oem_schema_owner")
# self.oem_schema_password = self.get_option("oem_owner_password")
# self.oem_target_reader_user = self.get_option("oem_target_read_user")
# self.oem_target_reader_password = self.get_option("oem_target_read_password")
except Exception as e:
raise AnsibleError(f"Options required: {e}")
self._populate()
def _populate(self):
'''Return the hosts and groups'''
self.inventory.add_group("MY_DEPARTMENT")
self.inventory.add_host(host = "myserver.domain", group="MY_DEPARTMENT")
self.inventory.set_variable("myserver.domain", 'ansible_host', "myserver.domain")