summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGaurav Rastogi <grastogi@avinetworks.com>2017-03-01 05:15:57 -0800
committerJohn R Barker <john@johnrbarker.com>2017-03-01 13:15:57 +0000
commit4b9bb88f63f297de91c39714055dbe4e70963475 (patch)
treec0446d777a9ff38d914a35e55ece119904ad670b
parente03b9c8c37caef89a93310d89afe5020181e2b63 (diff)
downloadansible-4b9bb88f63f297de91c39714055dbe4e70963475.tar.gz
Added new Avi module to setup Application Persistence profile. (#21940)
-rw-r--r--lib/ansible/modules/network/avi/avi_applicationpersistenceprofile.py161
1 files changed, 161 insertions, 0 deletions
diff --git a/lib/ansible/modules/network/avi/avi_applicationpersistenceprofile.py b/lib/ansible/modules/network/avi/avi_applicationpersistenceprofile.py
new file mode 100644
index 0000000000..e892c45107
--- /dev/null
+++ b/lib/ansible/modules/network/avi/avi_applicationpersistenceprofile.py
@@ -0,0 +1,161 @@
+#!/usr/bin/python
+#
+# Created on Aug 25, 2016
+# @author: Gaurav Rastogi (grastogi@avinetworks.com)
+# Eric Anderson (eanderson@avinetworks.com)
+# module_check: supported
+# Avi Version: 16.3.8
+#
+#
+# This file is part of Ansible
+#
+# Ansible is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Ansible is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
+#
+
+ANSIBLE_METADATA = {'status': ['preview'], 'supported_by': 'community', 'version': '1.0'}
+
+DOCUMENTATION = '''
+---
+module: avi_applicationpersistenceprofile
+author: Gaurav Rastogi (grastogi@avinetworks.com)
+
+short_description: Module for setup of ApplicationPersistenceProfile Avi RESTful Object
+description:
+ - This module is used to configure ApplicationPersistenceProfile object
+ - more examples at U(https://github.com/avinetworks/devops)
+requirements: [ avisdk ]
+version_added: "2.3"
+options:
+ state:
+ description:
+ - The state that should be applied on the entity.
+ default: present
+ choices: ["absent","present"]
+ app_cookie_persistence_profile:
+ description:
+ - Specifies the application cookie persistence profile parameters.
+ description:
+ description:
+ - User defined description for the object.
+ hdr_persistence_profile:
+ description:
+ - Specifies the custom http header persistence profile parameters.
+ http_cookie_persistence_profile:
+ description:
+ - Specifies the http cookie persistence profile parameters.
+ ip_persistence_profile:
+ description:
+ - Specifies the client ip persistence profile parameters.
+ name:
+ description:
+ - A user-friendly name for the persistence profile.
+ required: true
+ persistence_type:
+ description:
+ - Method used to persist clients to the same server for a duration of time or a session.
+ - Default value when not specified in API or module is interpreted by Avi Controller as PERSISTENCE_TYPE_CLIENT_IP_ADDRESS.
+ required: true
+ server_hm_down_recovery:
+ description:
+ - Specifies behavior when a persistent server has been marked down by a health monitor.
+ - Default value when not specified in API or module is interpreted by Avi Controller as HM_DOWN_PICK_NEW_SERVER.
+ tenant_ref:
+ description:
+ - It is a reference to an object of type tenant.
+ url:
+ description:
+ - Avi controller URL of the object.
+ uuid:
+ description:
+ - Uuid of the persistence profile.
+extends_documentation_fragment:
+ - avi
+'''
+
+
+EXAMPLES = '''
+ - name: Create an Application Persistence setting using http cookie.
+ avi_applicationpersistenceprofile:
+ controller: ''
+ username: ''
+ password: ''
+ http_cookie_persistence_profile:
+ always_send_cookie: false
+ cookie_name: My-HTTP
+ key:
+ - aes_key: ShYGZdMks8j6Bpvm2sCvaXWzvXms2Z9ob+TTjRy46lQ=
+ name: c1276819-550c-4adf-912d-59efa5fd7269
+ - aes_key: OGsyVk84VCtyMENFOW0rMnRXVnNrb0RzdG5mT29oamJRb0dlbHZVSjR1az0=
+ name: a080de57-77c3-4580-a3ea-e7a6493c14fd
+ - aes_key: UVN0cU9HWmFUM2xOUzBVcmVXaHFXbnBLVUUxMU1VSktSVU5HWjJOWmVFMTBUMUV4UmxsNk4xQmFZejA9
+ name: 60478846-33c6-484d-868d-bbc324fce4a5
+ timeout: 15
+ name: My-HTTP-Cookie
+ persistence_type: PERSISTENCE_TYPE_HTTP_COOKIE
+ server_hm_down_recovery: HM_DOWN_PICK_NEW_SERVER
+ tenant_ref: Demo
+'''
+RETURN = '''
+obj:
+ description: ApplicationPersistenceProfile (api/applicationpersistenceprofile) object
+ returned: success, changed
+ type: dict
+'''
+
+from pkg_resources import parse_version
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils.avi import avi_common_argument_spec
+
+HAS_AVI = True
+try:
+ import avi.sdk
+ sdk_version = getattr(avi.sdk, '__version__', None)
+ if ((sdk_version is None) or (sdk_version and
+ (parse_version(sdk_version) < parse_version('16.3.5.post1')))):
+ # It allows the __version__ to be '' as that value is used in development builds
+ raise ImportError
+ from avi.sdk.utils.ansible_utils import avi_ansible_api
+except ImportError:
+ HAS_AVI = False
+
+
+def main():
+ argument_specs = dict(
+ state=dict(default='present',
+ choices=['absent', 'present']),
+ app_cookie_persistence_profile=dict(type='dict',),
+ description=dict(type='str',),
+ hdr_persistence_profile=dict(type='dict',),
+ http_cookie_persistence_profile=dict(type='dict',),
+ ip_persistence_profile=dict(type='dict',),
+ name=dict(type='str', required=True),
+ persistence_type=dict(type='str', required=True),
+ server_hm_down_recovery=dict(type='str',),
+ tenant_ref=dict(type='str',),
+ url=dict(type='str',),
+ uuid=dict(type='str',),
+ )
+ argument_specs.update(avi_common_argument_spec())
+ module = AnsibleModule(
+ argument_spec=argument_specs, supports_check_mode=True)
+ if not HAS_AVI:
+ return module.fail_json(msg=(
+ 'Avi python API SDK (avisdk>=16.3.5.post1) is not installed. '
+ 'For more details visit https://github.com/avinetworks/sdk.'))
+ return avi_ansible_api(module, 'applicationpersistenceprofile',
+ set([]))
+
+
+if __name__ == '__main__':
+ main()