'Define the argument spec for the ansible module
:return: argument spec dictionary'

@staticmethod
def _define_module_argument_spec():

    argument_spec = dict(name=dict(), template=dict(), group=dict(default='Default    Group'), network_id=dict(), location=dict(default=None), cpu=dict(default=1), memory=dict(default=1), alias=dict(default=None), password=dict(default=None, no_log=True), ip_address=dict(default=None), storage_type=dict(default='standard', choices=['standard', 'hyperscale']), type=dict(default='standard', choices=['standard', 'hyperscale', 'bareMetal']), primary_dns=dict(default=None), secondary_dns=dict(default=None), additional_disks=dict(type='list', default=[]), custom_fields=dict(type='list', default=[]), ttl=dict(default=None), managed_os=dict(type='bool', default=False), description=dict(default=None), source_server_password=dict(default=None), cpu_autoscale_policy_id=dict(default=None), anti_affinity_policy_id=dict(default=None), anti_affinity_policy_name=dict(default=None), alert_policy_id=dict(default=None), alert_policy_name=dict(default=None), packages=dict(type='list', default=[]), state=dict(default='present', choices=['present', 'absent', 'started', 'stopped']), count=dict(type='int', default=1), exact_count=dict(type='int', default=None), count_group=dict(), server_ids=dict(type='list', default=[]), add_public_ip=dict(type='bool', default=False), public_ip_protocol=dict(default='TCP', choices=['TCP', 'UDP', 'ICMP']), public_ip_ports=dict(type='list', default=[]), configuration_id=dict(default=None), os_type=dict(default=None, choices=['redHat6_64Bit', 'centOS6_64Bit', 'windows2012R2Standard_64Bit', 'ubuntu14_64Bit']), wait=dict(type='bool', default=True))
    mutually_exclusive = [['exact_count', 'count'], ['exact_count', 'state'], ['anti_affinity_policy_id', 'anti_affinity_policy_name'], ['alert_policy_id', 'alert_policy_name']]
    return {'argument_spec': argument_spec, 'mutually_exclusive': mutually_exclusive}
