summaryrefslogtreecommitdiff
path: root/lib/ansible/modules/cloud/ovirt
diff options
context:
space:
mode:
authorChris Keller <ckeller@redhat.com>2019-03-11 10:40:17 -0400
committerJohn R Barker <john@johnrbarker.com>2019-03-11 14:40:17 +0000
commitffa014e68052e06d35f98c04da7179c8530116cf (patch)
tree97c6fbae7d41082df45296a6be290821c9066229 /lib/ansible/modules/cloud/ovirt
parentd784b77cb4e0b06c73ec980765df0d9bc1f101c4 (diff)
downloadansible-ffa014e68052e06d35f98c04da7179c8530116cf.tar.gz
Adding ovirt_event Module (#51760) (#52982)
* Adding ovirt_event Module (#51760) * Update lib/ansible/modules/cloud/ovirt/ovirt_event.py Co-Authored-By: nasx <ckeller@redhat.com> * Update lib/ansible/modules/cloud/ovirt/ovirt_event.py Co-Authored-By: nasx <ckeller@redhat.com> * Update lib/ansible/modules/cloud/ovirt/ovirt_event.py Co-Authored-By: nasx <ckeller@redhat.com> * Update lib/ansible/modules/cloud/ovirt/ovirt_event.py Co-Authored-By: nasx <ckeller@redhat.com> * Update lib/ansible/modules/cloud/ovirt/ovirt_event.py Co-Authored-By: nasx <ckeller@redhat.com> * Update lib/ansible/modules/cloud/ovirt/ovirt_event.py Co-Authored-By: nasx <ckeller@redhat.com> * Cleaning up Copyright, Documentation and Examples section per Akasurde. * Minor formatting change in examples
Diffstat (limited to 'lib/ansible/modules/cloud/ovirt')
-rw-r--r--lib/ansible/modules/cloud/ovirt/ovirt_event.py249
1 files changed, 249 insertions, 0 deletions
diff --git a/lib/ansible/modules/cloud/ovirt/ovirt_event.py b/lib/ansible/modules/cloud/ovirt/ovirt_event.py
new file mode 100644
index 0000000000..ea158e0176
--- /dev/null
+++ b/lib/ansible/modules/cloud/ovirt/ovirt_event.py
@@ -0,0 +1,249 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Copyright: (c) 2019, Ansible Project
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
+ANSIBLE_METADATA = {'metadata_version': '1.1',
+ 'status': ['preview'],
+ 'supported_by': 'community'}
+
+DOCUMENTATION = '''
+---
+module: ovirt_event
+short_description: Create or delete an event in oVirt/RHV
+author: "Chris Keller (@nasx)"
+version_added: "2.8"
+description:
+ - "This module can be used to create or delete an event in oVirt/RHV."
+options:
+ state:
+ description:
+ - "Should the event be present/absent."
+ - "The C(wait) option must be set to false when state is absent."
+ choices: ['present', 'absent']
+ type: str
+ default: present
+
+ description:
+ description:
+ - "Message for the event."
+ - "Required when state is present."
+ type: str
+
+ severity:
+ description:
+ - "Severity of the event."
+ - "Required when state is present."
+ choices: ['error', 'normal', 'warning']
+ default: normal
+ type: str
+
+ origin:
+ description:
+ - "Originator of the event."
+ - "Required when state is present."
+ type: str
+
+ custom_id:
+ description:
+ - "Custom ID for the event. This ID must be unique for each event."
+ - "Required when state is present."
+ type: int
+
+ id:
+ description:
+ - "The event ID in the oVirt/RHV audit_log table. This ID is not the same as custom_id and is only used when state is absent."
+ - "Required when state is absent."
+ type: str
+
+ cluster:
+ description:
+ - "The id of the cluster associated with this event."
+ type: str
+
+ data_center:
+ description:
+ - "The id of the data center associated with this event."
+ type: str
+
+ host:
+ description:
+ - "The id of the host associated with this event."
+ type: str
+
+ storage_domain:
+ description:
+ - "The id of the storage domain associated with this event."
+ type: str
+
+ template:
+ description:
+ - "The id of the template associated with this event."
+ type: str
+
+ user:
+ description:
+ - "The id of the user associated with this event."
+ type: str
+
+ vm:
+ description:
+ - "The id of the VM associated with this event."
+ type: str
+extends_documentation_fragment: ovirt
+'''
+
+EXAMPLES = '''
+# Examples don't contain the auth parameter for simplicity,
+# look at the ovirt_auth module to see how to reuse authentication.
+
+- name: Create an event
+ ovirt_event:
+ state: present
+ description: "The file system /home on host xyz is almost full!"
+ origin: "mymonitor"
+ custom_id: 123456789
+ severity: warning
+
+- name: Create an event and link it to a specific object
+ ovirt_event:
+ state: present
+ description: "The file system /home is almost full!"
+ origin: "mymonitor"
+ custom_id: 123456789
+ severity: warning
+ vm: "c79db183-46ef-44d1-95f9-1a368c516c19"
+
+- name: Remove an event
+ ovirt_event:
+ state: absent
+ id: 123456789
+ wait: false
+'''
+
+RETURN = '''
+id:
+ description: "ID of the event that was created."
+ returned: "On success."
+ type: str
+event:
+ description: "Dictionary of all the Event attributes. All event attributes can be found at the following url:
+ http://ovirt.github.io/ovirt-engine-api-model/master/#types/event"
+ returned: "On success."
+ type: dict
+'''
+
+import traceback
+
+try:
+ import ovirtsdk4.types as otypes
+except ImportError:
+ pass
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils.ovirt import (
+ BaseModule,
+ check_sdk,
+ check_params,
+ create_connection,
+ equal,
+ get_dict_of_struct,
+ ovirt_full_argument_spec,
+)
+
+
+class EventsModule(BaseModule):
+
+ def build_entity(self):
+ return otypes.Event(
+ description=self._module.params['description'],
+ severity=otypes.LogSeverity(self._module.params['severity']),
+ origin=self._module.params['origin'],
+ custom_id=self._module.params['custom_id'],
+ id=self._module.params['id'],
+ cluster=otypes.Cluster(
+ id=self._module.params['cluster']
+ ) if self._module.params['cluster'] is not None else None,
+ data_center=otypes.DataCenter(
+ id=self._module.params['data_center']
+ ) if self._module.params['data_center'] is not None else None,
+ host=otypes.Host(
+ id=self._module.params['host']
+ ) if self._module.params['host'] is not None else None,
+ storage_domain=otypes.StorageDomain(
+ id=self._module.params['storage_domain']
+ ) if self._module.params['storage_domain'] is not None else None,
+ template=otypes.Template(
+ id=self._module.params['template']
+ ) if self._module.params['template'] is not None else None,
+ user=otypes.User(
+ id=self._module.params['user']
+ ) if self._module.params['user'] is not None else None,
+ vm=otypes.Vm(
+ id=self._module.params['vm']
+ ) if self._module.params['vm'] is not None else None,
+ )
+
+
+def main():
+ argument_spec = ovirt_full_argument_spec(
+ state=dict(
+ choices=['present', 'absent'],
+ default='present',
+ ),
+ description=dict(default=None),
+ severity=dict(
+ choices=['error', 'normal', 'warning'],
+ default='normal',
+ ),
+ origin=dict(default=None),
+ custom_id=dict(default=None, type='int'),
+ id=dict(default=None),
+ cluster=dict(default=None),
+ data_center=dict(default=None),
+ host=dict(default=None),
+ storage_domain=dict(default=None),
+ template=dict(default=None),
+ user=dict(default=None),
+ vm=dict(default=None),
+ )
+ module = AnsibleModule(
+ argument_spec=argument_spec,
+ supports_check_mode=True
+ )
+
+ check_sdk(module)
+
+ # Wait must be set to false if state == absent
+
+ if module.params['state'] == 'absent' and module.params['wait'] is not False:
+ module.fail_json(msg='When "state" is absent, "wait" must be set to false.')
+
+ try:
+ auth = module.params.pop('auth')
+ connection = create_connection(auth)
+ events_service = connection.system_service().events_service()
+ events_module = EventsModule(
+ connection=connection,
+ module=module,
+ service=events_service,
+ )
+
+ state = module.params['state']
+ if state == 'present':
+ ret = events_module.create()
+ elif state == 'absent':
+ ret = events_module.remove()
+
+ module.exit_json(**ret)
+ except Exception as e:
+ module.fail_json(msg=str(e), exception=traceback.format_exc())
+ finally:
+ connection.close(logout=auth.get('token') is None)
+
+
+if __name__ == "__main__":
+ main()