From 9e2ff3e4d5160f40a3192b4446da85ae4118b2bd Mon Sep 17 00:00:00 2001 From: Gaurav Rastogi Date: Sun, 24 Dec 2017 00:15:23 -0800 Subject: [PATCH] Updated Avi Modules with new features and documentation update. (#34206) * Updated Avi Modules with following 1. Support to perform patch operation using the modules. The data update method is selected using avi_api_update_method=patch and patch operation is determined by avi_api_patch_op. The patch data is the normal params that are provided in the modules 2. Support for avi_credentials as single authentication dictionary for all API calls. This is preferred way as opposed to previously all credentials details would pollute the individual Ansible tasks. It also allows the module development to be enhanced without breaking compatibility for new authentication schemes like SAML etc. 3. Support for sharing api_context between the module invocations. This is a workaround to not do multiple logins to Avi Controller and be able to re-use single login across multiple REST API calls. 4. Documentation update for new parameters and existing ones with Units data. * Fixed the pylint and pep8 errors caused due to pycharm editor auto formatting --- lib/ansible/module_utils/network/avi/avi.py | 30 +-- .../network/avi/avi_actiongroupconfig.py | 17 +- .../modules/network/avi/avi_alertconfig.py | 76 +++++--- .../network/avi/avi_alertemailconfig.py | 17 +- .../network/avi/avi_alertscriptconfig.py | 29 ++- .../network/avi/avi_alertsyslogconfig.py | 29 ++- .../network/avi/avi_analyticsprofile.py | 49 ++++- .../modules/network/avi/avi_api_session.py | 35 ++-- .../avi/avi_applicationpersistenceprofile.py | 29 ++- .../network/avi/avi_applicationprofile.py | 29 ++- .../modules/network/avi/avi_authprofile.py | 37 +++- lib/ansible/modules/network/avi/avi_backup.py | 17 +- .../network/avi/avi_backupconfiguration.py | 17 +- .../avi/avi_certificatemanagementprofile.py | 17 +- lib/ansible/modules/network/avi/avi_cloud.py | 62 +++++- .../network/avi/avi_cloudconnectoruser.py | 39 +++- .../network/avi/avi_cloudproperties.py | 19 +- .../modules/network/avi/avi_cluster.py | 17 +- .../network/avi/avi_controllerproperties.py | 78 +++++++- .../modules/network/avi/avi_dnspolicy.py | 17 +- lib/ansible/modules/network/avi/avi_gslb.py | 37 +++- .../network/avi/avi_gslbgeodbprofile.py | 17 +- .../modules/network/avi/avi_gslbservice.py | 49 ++++- .../avi/avi_hardwaresecuritymodulegroup.py | 17 +- .../modules/network/avi/avi_healthmonitor.py | 27 ++- .../modules/network/avi/avi_httppolicyset.py | 23 ++- .../modules/network/avi/avi_ipaddrgroup.py | 29 ++- .../network/avi/avi_ipamdnsproviderprofile.py | 45 ++++- .../network/avi/avi_microservicegroup.py | 29 ++- .../modules/network/avi/avi_network.py | 17 +- .../modules/network/avi/avi_networkprofile.py | 29 ++- .../network/avi/avi_networksecuritypolicy.py | 29 ++- .../modules/network/avi/avi_pkiprofile.py | 17 +- lib/ansible/modules/network/avi/avi_pool.py | 60 +++++- .../modules/network/avi/avi_poolgroup.py | 24 ++- .../avi/avi_poolgroupdeploymentpolicy.py | 19 +- .../modules/network/avi/avi_prioritylabels.py | 17 +- lib/ansible/modules/network/avi/avi_role.py | 17 +- .../modules/network/avi/avi_scheduler.py | 17 +- .../modules/network/avi/avi_seproperties.py | 17 +- .../network/avi/avi_serverautoscalepolicy.py | 19 +- .../modules/network/avi/avi_serviceengine.py | 19 +- .../network/avi/avi_serviceenginegroup.py | 184 +++++++++++++++++- .../network/avi/avi_snmptrapprofile.py | 17 +- .../network/avi/avi_sslkeyandcertificate.py | 23 ++- .../modules/network/avi/avi_sslprofile.py | 30 ++- .../modules/network/avi/avi_stringgroup.py | 29 ++- .../network/avi/avi_systemconfiguration.py | 25 ++- lib/ansible/modules/network/avi/avi_tenant.py | 29 ++- .../network/avi/avi_trafficcloneprofile.py | 17 +- .../network/avi/avi_useraccountprofile.py | 19 +- .../modules/network/avi/avi_virtualservice.py | 68 ++++++- .../modules/network/avi/avi_vrfcontext.py | 17 +- .../network/avi/avi_vsdatascriptset.py | 23 ++- lib/ansible/modules/network/avi/avi_vsvip.py | 17 +- .../modules/network/avi/avi_webhook.py | 17 +- .../utils/module_docs_fragments/avi.py | 9 + 57 files changed, 1521 insertions(+), 237 deletions(-) diff --git a/lib/ansible/module_utils/network/avi/avi.py b/lib/ansible/module_utils/network/avi/avi.py index 6c7196f3a9b..a6c3c723e77 100644 --- a/lib/ansible/module_utils/network/avi/avi.py +++ b/lib/ansible/module_utils/network/avi/avi.py @@ -39,7 +39,7 @@ HAS_AVI = True try: import avi.sdk sdk_version = getattr(avi.sdk, '__version__', None) - if ((sdk_version is None) or (sdk_version and (LooseVersion(sdk_version) < LooseVersion('17.1')))): + if ((sdk_version is None) or (sdk_version and (LooseVersion(sdk_version) < LooseVersion('17.2.4')))): # 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 @@ -58,25 +58,33 @@ def avi_common_argument_spec(): password=dict(default=os.environ.get('AVI_PASSWORD', ''), no_log=True), tenant=dict(default='admin'), tenant_uuid=dict(default=''), - api_version=dict(default='16.4')) + api_version=dict(default='16.4.4'), + avi_credentials=dict(default=None, no_log=True, type='dict'), + api_context=dict(type='dict')) -def ansible_return(module, rsp, changed, req=None, existing_obj=None): +def ansible_return(module, rsp, changed, req=None, existing_obj=None, + api_context=None): """ Helper function to return the right ansible return based on the error code and changed status. :param module: AnsibleModule - :param rsp: ApiResponse object returned from ApiSession. - :param changed: Whether something changed in this module. - :param req: Dict data for Avi API call. - :param existing_obj: Dict representing current HTTP resource in Avi Controller. + :param rsp: ApiResponse from avi_api + :param changed: boolean + :param req: Actual req dictionary used in Avi API + :param existing_obj: Existing Avi resource. Used for allowing caller to do + diff if desired. + :param api_context: Avi API context information like CSRF token, session_id + used. This can be passed to the next API call to avoid re-login. Returns: specific ansible module exit function """ if rsp.status_code > 299: - return module.fail_json(msg='Error %d Msg %s req: %s' % ( - rsp.status_code, rsp.text, req)) + return module.fail_json(msg='Error %d Msg %s req: %s api_context:%s ' % ( + rsp.status_code, rsp.text, req, api_context)) if changed and existing_obj: return module.exit_json( - changed=changed, obj=rsp.json(), old_obj=existing_obj) - return module.exit_json(changed=changed, obj=rsp.json()) + changed=changed, obj=rsp.json(), old_obj=existing_obj, + api_context=api_context) + return module.exit_json(changed=changed, obj=rsp.json(), + api_context=api_context) diff --git a/lib/ansible/modules/network/avi/avi_actiongroupconfig.py b/lib/ansible/modules/network/avi/avi_actiongroupconfig.py index 995baa0f032..0b05a9b95ac 100644 --- a/lib/ansible/modules/network/avi/avi_actiongroupconfig.py +++ b/lib/ansible/modules/network/avi/avi_actiongroupconfig.py @@ -42,7 +42,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] action_script_config_ref: description: - Reference of the action script configuration to be used. @@ -123,6 +135,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), action_script_config_ref=dict(type='str',), autoscale_trigger_notification=dict(type='bool',), description=dict(type='str',), diff --git a/lib/ansible/modules/network/avi/avi_alertconfig.py b/lib/ansible/modules/network/avi/avi_alertconfig.py index 64311a9141a..2443dbf0a55 100644 --- a/lib/ansible/modules/network/avi/avi_alertconfig.py +++ b/lib/ansible/modules/network/avi/avi_alertconfig.py @@ -42,7 +42,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] action_group_ref: description: - The alert config will trigger the selected alert action, which can send notifications and execute a controlscript. @@ -74,6 +86,7 @@ options: - The original event triggering the alert remains in the event's log. - Allowed values are 1-31536000. - Default value when not specified in API or module is interpreted by Avi Controller as 86400. + - Units(SEC). name: description: - Name of the alert configuration. @@ -89,33 +102,35 @@ options: - SSLPROFILE, SSLKEYANDCERTIFICATE, NETWORKSECURITYPOLICY, APPLICATIONPERSISTENCEPROFILE, ANALYTICSPROFILE, VSDATASCRIPTSET, TENANT, PKIPROFILE, - AUTHPROFILE, CLOUD, SERVERAUTOSCALEPOLICY, AUTOSCALELAUNCHCONFIG, MICROSERVICEGROUP, IPAMPROFILE, HARDWARESECURITYMODULEGROUP, POOLGROUP, - PRIORITYLABELS, POOLGROUPDEPLOYMENTPOLICY, GSLBSERVICE, GSLBSERVICERUNTIME, SCHEDULER, GSLBGEODBPROFILE, GSLBAPPLICATIONPERSISTENCEPROFILE, - - TRAFFICCLONEPROFILE, VSVIP, SERVICEENGINE, DEBUGSERVICEENGINE, DEBUGCONTROLLER, DEBUGVIRTUALSERVICE, SERVICEENGINEGROUP, SEPROPERTIES, NETWORK, - - CONTROLLERNODE, CONTROLLERPROPERTIES, SYSTEMCONFIGURATION, VRFCONTEXT, USER, ALERTCONFIG, ALERTSYSLOGCONFIG, ALERTEMAILCONFIG, ALERTTYPECONFIG, - - APPLICATION, ROLE, CLOUDPROPERTIES, SNMPTRAPPROFILE, ACTIONGROUPPROFILE, MICROSERVICE, ALERTPARAMS, ACTIONGROUPCONFIG, CLOUDCONNECTORUSER, GSLB, - - GSLBDNSUPDATE, GSLBSITEOPS, GLBMGRWARMSTART, IPAMDNSRECORD, GSLBDNSGSSTATUS, GSLBDNSGEOFILEOPS, GSLBDNSGEOUPDATE, GSLBDNSGEOCLUSTEROPS, - - GSLBDNSCLEANUP, TCPSTATRUNTIME, UDPSTATRUNTIME, IPSTATRUNTIME, ARPSTATRUNTIME, MBSTATRUNTIME, IPSTKQSTATSRUNTIME, MALLOCSTATRUNTIME, - - SHMALLOCSTATRUNTIME, CPUUSAGERUNTIME, L7GLOBALSTATSRUNTIME, L7VIRTUALSERVICESTATSRUNTIME, SEAGENTVNICDBRUNTIME, SEAGENTGRAPHDBRUNTIME, - - SEAGENTSTATERUNTIME, INTERFACERUNTIME, ARPTABLERUNTIME, DISPATCHERSTATRUNTIME, DISPATCHERSTATCLEARRUNTIME, DISPATCHERTABLEDUMPRUNTIME, - - DISPATCHERREMOTETIMERLISTDUMPRUNTIME, METRICSAGENTMESSAGE, HEALTHMONITORSTATRUNTIME, METRICSENTITYRUNTIME, PERSISTENCEINTERNAL, - - HTTPPOLICYSETINTERNAL, DNSPOLICYINTERNAL, CONNECTIONDUMPRUNTIME, SHAREDDBSTATS, SHAREDDBSTATSCLEAR, ICMPSTATRUNTIME, ROUTETABLERUNTIME, - - VIRTUALMACHINE, POOLSERVER, SEVSLIST, MEMINFORUNTIME, RTERINGSTATRUNTIME, ALGOSTATRUNTIME, HEALTHMONITORRUNTIME, CPUSTATRUNTIME, SEVM, HOST, - - PORTGROUP, CLUSTER, DATACENTER, VCENTER, HTTPPOLICYSETSTATS, DNSPOLICYSTATS, METRICSSESTATS, RATELIMITERSTATRUNTIME, NETWORKSECURITYPOLICYSTATS, - - TCPCONNRUNTIME, POOLSTATS, CONNPOOLINTERNAL, CONNPOOLSTATS, VSHASHSHOWRUNTIME, SELOGSTATSRUNTIME, NETWORKSECURITYPOLICYDETAIL, LICENSERUNTIME, - - SERVERRUNTIME, METRICSRUNTIMESUMMARY, METRICSRUNTIMEDETAIL, DISPATCHERSEHMPROBETEMPDISABLERUNTIME, POOLDEBUG, VSLOGMGRMAP, SERUMINSERTIONSTATS, - - HTTPCACHE, HTTPCACHESTATS, SEDOSSTATRUNTIME, VSDOSSTATRUNTIME, SERVERUPDATEREQ, VSSCALEOUTLIST, SEMEMDISTRUNTIME, TCPCONNRUNTIMEDETAIL, - - SEUPGRADESTATUS, SEUPGRADEPREVIEW, SEFAULTINJECTEXHAUSTM, SEFAULTINJECTEXHAUSTMCL, SEFAULTINJECTEXHAUSTMCLSMALL, SEFAULTINJECTEXHAUSTCONN, - - SEHEADLESSONLINEREQ, SEUPGRADE, SEUPGRADESTATUSDETAIL, SERESERVEDVS, SERESERVEDVSCLEAR, VSCANDIDATESEHOSTLIST, SEGROUPUPGRADE, REBALANCE, - - SEGROUPREBALANCE, SEAUTHSTATSRUNTIME, AUTOSCALESTATE, VIRTUALSERVICEAUTHSTATS, NETWORKSECURITYPOLICYDOS, KEYVALINTERNAL, KEYVALSUMMARYINTERNAL, - - SERVERSTATEUPDATEINFO, CLTRACKINTERNAL, CLTRACKSUMMARYINTERNAL, MICROSERVICERUNTIME, SEMICROSERVICE, VIRTUALSERVICEANALYSIS, CLIENTINTERNAL, - - CLIENTSUMMARYINTERNAL, MICROSERVICEGROUPRUNTIME, BGPRUNTIME, REQUESTQUEUERUNTIME, MIGRATEALL, MIGRATEALLSTATUSSUMMARY, MIGRATEALLSTATUSDETAIL, - - INTERFACESUMMARYRUNTIME, INTERFACELACPRUNTIME, DNSTABLE, GSLBSERVICEDETAIL, GSLBSERVICEINTERNAL, GSLBSERVICEHMONSTAT, SETROLESREQUEST, - - TRAFFICCLONERUNTIME, GEOLOCATIONINFO, SEVSHBSTATRUNTIME, GEODBINTERNAL, GSLBSITEINTERNAL, SERESOURCEPROTO, SECONSUMERPROTO, SECREATEPENDINGPROTO, - - PLACEMENTSTATS, SEVIPPROTO, RMVRFPROTO, VCENTERMAP, VIMGRVCENTERRUNTIME, INTERESTEDVMS, INTERESTEDHOSTS, VCENTERSUPPORTEDCOUNTERS, ENTITYCOUNTERS, - - TRANSACTIONSTATS, SEVMCREATEPROGRESS, PLACEMENTSTATUS, VISUBFOLDERS, VIDATASTORE, VIHOSTRESOURCES, CLOUDCONNECTOR, VINETWORKSUBNETVMS, - - VIDATASTORECONTENTS, VIMGRVCENTERCLOUDRUNTIME, VIVCENTERPORTGROUPS, VIVCENTERDATACENTERS, VIMGRHOSTRUNTIME, PLACEMENTGLOBALS, APICCONFIGURATION, - - CIFTABLE, APICTRANSACTION, VIRTUALSERVICESTATEDBCACHESUMMARY, POOLSTATEDBCACHESUMMARY, SERVERSTATEDBCACHESUMMARY, APICAGENTINTERNAL, - - APICTRANSACTIONFLAP, APICGRAPHINSTANCES, APICEPGS, APICEPGEPS, APICDEVICEPKGVER, APICTENANTS, APICVMMDOMAINS, NSXCONFIGURATION, NSXSGTABLE, - - NSXAGENTINTERNAL, NSXSGINFO, NSXSGIPS, NSXAGENTINTERNALCLI, MAXOBJECTS. + - TRAFFICCLONEPROFILE, VSVIP, WAFPOLICY, WAFPROFILE, ERRORPAGEPROFILE, ERRORPAGEBODY, SERVICEENGINE, DEBUGSERVICEENGINE, DEBUGCONTROLLER, + - DEBUGVIRTUALSERVICE, SERVICEENGINEGROUP, SEPROPERTIES, NETWORK, CONTROLLERNODE, CONTROLLERPROPERTIES, SYSTEMCONFIGURATION, VRFCONTEXT, USER, + - ALERTCONFIG, ALERTSYSLOGCONFIG, ALERTEMAILCONFIG, ALERTTYPECONFIG, APPLICATION, ROLE, CLOUDPROPERTIES, SNMPTRAPPROFILE, ACTIONGROUPPROFILE, + - MICROSERVICE, ALERTPARAMS, ACTIONGROUPCONFIG, CLOUDCONNECTORUSER, GSLB, GSLBDNSUPDATE, GSLBSITEOPS, GLBMGRWARMSTART, IPAMDNSRECORD, + - GSLBDNSGSSTATUS, GSLBDNSGEOFILEOPS, GSLBDNSGEOUPDATE, GSLBDNSGEOCLUSTEROPS, GSLBDNSCLEANUP, GSLBSITEOPSRESYNC, TCPSTATRUNTIME, UDPSTATRUNTIME, + - IPSTATRUNTIME, ARPSTATRUNTIME, MBSTATRUNTIME, IPSTKQSTATSRUNTIME, MALLOCSTATRUNTIME, SHMALLOCSTATRUNTIME, CPUUSAGERUNTIME, L7GLOBALSTATSRUNTIME, + - L7VIRTUALSERVICESTATSRUNTIME, SEAGENTVNICDBRUNTIME, SEAGENTGRAPHDBRUNTIME, SEAGENTSTATERUNTIME, INTERFACERUNTIME, ARPTABLERUNTIME, + - DISPATCHERSTATRUNTIME, DISPATCHERSTATCLEARRUNTIME, DISPATCHERTABLEDUMPRUNTIME, DISPATCHERREMOTETIMERLISTDUMPRUNTIME, METRICSAGENTMESSAGE, + - HEALTHMONITORSTATRUNTIME, METRICSENTITYRUNTIME, PERSISTENCEINTERNAL, HTTPPOLICYSETINTERNAL, DNSPOLICYINTERNAL, CONNECTIONDUMPRUNTIME, + - SHAREDDBSTATS, SHAREDDBSTATSCLEAR, ICMPSTATRUNTIME, ROUTETABLERUNTIME, VIRTUALMACHINE, POOLSERVER, SEVSLIST, MEMINFORUNTIME, RTERINGSTATRUNTIME, + - ALGOSTATRUNTIME, HEALTHMONITORRUNTIME, CPUSTATRUNTIME, SEVM, HOST, PORTGROUP, CLUSTER, DATACENTER, VCENTER, HTTPPOLICYSETSTATS, DNSPOLICYSTATS, + - METRICSSESTATS, RATELIMITERSTATRUNTIME, NETWORKSECURITYPOLICYSTATS, TCPCONNRUNTIME, POOLSTATS, CONNPOOLINTERNAL, CONNPOOLSTATS, VSHASHSHOWRUNTIME, + - SELOGSTATSRUNTIME, NETWORKSECURITYPOLICYDETAIL, LICENSERUNTIME, SERVERRUNTIME, METRICSRUNTIMESUMMARY, METRICSRUNTIMEDETAIL, + - DISPATCHERSEHMPROBETEMPDISABLERUNTIME, POOLDEBUG, VSLOGMGRMAP, SERUMINSERTIONSTATS, HTTPCACHE, HTTPCACHESTATS, SEDOSSTATRUNTIME, VSDOSSTATRUNTIME, + - SERVERUPDATEREQ, VSSCALEOUTLIST, SEMEMDISTRUNTIME, TCPCONNRUNTIMEDETAIL, SEUPGRADESTATUS, SEUPGRADEPREVIEW, SEFAULTINJECTEXHAUSTM, + - SEFAULTINJECTEXHAUSTMCL, SEFAULTINJECTEXHAUSTMCLSMALL, SEFAULTINJECTEXHAUSTCONN, SEHEADLESSONLINEREQ, SEUPGRADE, SEUPGRADESTATUSDETAIL, + - SERESERVEDVS, SERESERVEDVSCLEAR, VSCANDIDATESEHOSTLIST, SEGROUPUPGRADE, REBALANCE, SEGROUPREBALANCE, SEAUTHSTATSRUNTIME, AUTOSCALESTATE, + - VIRTUALSERVICEAUTHSTATS, NETWORKSECURITYPOLICYDOS, KEYVALINTERNAL, KEYVALSUMMARYINTERNAL, SERVERSTATEUPDATEINFO, CLTRACKINTERNAL, + - CLTRACKSUMMARYINTERNAL, MICROSERVICERUNTIME, SEMICROSERVICE, VIRTUALSERVICEANALYSIS, CLIENTINTERNAL, CLIENTSUMMARYINTERNAL, + - MICROSERVICEGROUPRUNTIME, BGPRUNTIME, REQUESTQUEUERUNTIME, MIGRATEALL, MIGRATEALLSTATUSSUMMARY, MIGRATEALLSTATUSDETAIL, INTERFACESUMMARYRUNTIME, + - INTERFACELACPRUNTIME, DNSTABLE, GSLBSERVICEDETAIL, GSLBSERVICEINTERNAL, GSLBSERVICEHMONSTAT, SETROLESREQUEST, TRAFFICCLONERUNTIME, + - GEOLOCATIONINFO, SEVSHBSTATRUNTIME, GEODBINTERNAL, GSLBSITEINTERNAL, WAFSTATS, USERDEFINEDDATASCRIPTCOUNTERS, LLDPRUNTIME, VSESSHARINGPOOL, + - SEVSSPLACEMENT, SERESOURCEPROTO, SECONSUMERPROTO, SECREATEPENDINGPROTO, PLACEMENTSTATS, SEVIPPROTO, RMVRFPROTO, VCENTERMAP, VIMGRVCENTERRUNTIME, + - INTERESTEDVMS, INTERESTEDHOSTS, VCENTERSUPPORTEDCOUNTERS, ENTITYCOUNTERS, TRANSACTIONSTATS, SEVMCREATEPROGRESS, PLACEMENTSTATUS, VISUBFOLDERS, + - VIDATASTORE, VIHOSTRESOURCES, CLOUDCONNECTOR, VINETWORKSUBNETVMS, VIDATASTORECONTENTS, VIMGRVCENTERCLOUDRUNTIME, VIVCENTERPORTGROUPS, + - VIVCENTERDATACENTERS, VIMGRHOSTRUNTIME, PLACEMENTGLOBALS, APICCONFIGURATION, CIFTABLE, APICTRANSACTION, VIRTUALSERVICESTATEDBCACHESUMMARY, + - POOLSTATEDBCACHESUMMARY, SERVERSTATEDBCACHESUMMARY, APICAGENTINTERNAL, APICTRANSACTIONFLAP, APICGRAPHINSTANCES, APICEPGS, APICEPGEPS, + - APICDEVICEPKGVER, APICTENANTS, APICVMMDOMAINS, NSXCONFIGURATION, NSXSGTABLE, NSXAGENTINTERNAL, NSXSGINFO, NSXSGIPS, NSXAGENTINTERNALCLI, + - MAXOBJECTS. recommendation: description: - Recommendation of alertconfig. @@ -124,6 +139,7 @@ options: - Only if the number of events is reached or exceeded within the time window will an alert be generated. - Allowed values are 1-31536000. - Default value when not specified in API or module is interpreted by Avi Controller as 300. + - Units(SEC). source: description: - Signifies system events or the type of client logsused in this alert configuration. @@ -145,6 +161,7 @@ options: - Alerts are suppressed (throttled) for this duration of time since the last alert was raised for this alert config. - Allowed values are 0-31536000. - Default value when not specified in API or module is interpreted by Avi Controller as 600. + - Units(SEC). url: description: - Avi controller URL of the object. @@ -184,6 +201,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), action_group_ref=dict(type='str',), alert_rule=dict(type='dict', required=True), autoscale_alert=dict(type='bool',), diff --git a/lib/ansible/modules/network/avi/avi_alertemailconfig.py b/lib/ansible/modules/network/avi/avi_alertemailconfig.py index a5b59dae773..03abe6757ad 100644 --- a/lib/ansible/modules/network/avi/avi_alertemailconfig.py +++ b/lib/ansible/modules/network/avi/avi_alertemailconfig.py @@ -42,7 +42,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] cc_emails: description: - Alerts are copied to the comma separated list of email recipients. @@ -99,6 +111,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), cc_emails=dict(type='str',), description=dict(type='str',), name=dict(type='str', required=True), diff --git a/lib/ansible/modules/network/avi/avi_alertscriptconfig.py b/lib/ansible/modules/network/avi/avi_alertscriptconfig.py index 1a1dc389379..5eff1af2ca5 100644 --- a/lib/ansible/modules/network/avi/avi_alertscriptconfig.py +++ b/lib/ansible/modules/network/avi/avi_alertscriptconfig.py @@ -42,7 +42,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] action_script: description: - User defined alert action script. @@ -64,17 +76,17 @@ extends_documentation_fragment: - avi ''' - -EXAMPLES = ''' +EXAMPLES = """ - name: Create Alert Script to perform AWS server autoscaling avi_alertscriptconfig: - username: '' - controller: '' - password: '' + username: '{{ username }}' + controller: '{{ controller }}' + password: '{{ password }}' action_script: "echo Hello" name: AWS-Launch-Script tenant_ref: Demo -''' +""" + RETURN = ''' obj: description: AlertScriptConfig (api/alertscriptconfig) object @@ -94,6 +106,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), action_script=dict(type='str',), name=dict(type='str', required=True), tenant_ref=dict(type='str',), diff --git a/lib/ansible/modules/network/avi/avi_alertsyslogconfig.py b/lib/ansible/modules/network/avi/avi_alertsyslogconfig.py index 8f2195ad69e..4e5c9021e0d 100644 --- a/lib/ansible/modules/network/avi/avi_alertsyslogconfig.py +++ b/lib/ansible/modules/network/avi/avi_alertsyslogconfig.py @@ -42,7 +42,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] description: description: - User defined description for alert syslog config. @@ -66,20 +78,20 @@ extends_documentation_fragment: - avi ''' - -EXAMPLES = ''' +EXAMPLES = """ - name: Create Alert Syslog object to forward all events to external syslog server avi_alertsyslogconfig: - controller: '' + controller: '{{ controller }}' name: Roberts-syslog - password: '' + password: '{{ password }}' syslog_servers: - syslog_server: 10.10.0.100 syslog_server_port: 514 udp: true tenant_ref: admin - username: '' -''' + username: '{{ username }}' +""" + RETURN = ''' obj: description: AlertSyslogConfig (api/alertsyslogconfig) object @@ -99,6 +111,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), description=dict(type='str',), name=dict(type='str', required=True), syslog_servers=dict(type='list',), diff --git a/lib/ansible/modules/network/avi/avi_analyticsprofile.py b/lib/ansible/modules/network/avi/avi_analyticsprofile.py index f62f45e36eb..c74eeef3533 100644 --- a/lib/ansible/modules/network/avi/avi_analyticsprofile.py +++ b/lib/ansible/modules/network/avi/avi_analyticsprofile.py @@ -43,7 +43,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] apdex_response_threshold: description: - If a client receives an http response in less than the satisfactory latency threshold, the request is considered satisfied. @@ -51,6 +63,7 @@ options: - Greater than this number and the client's request is considered frustrated. - Allowed values are 1-30000. - Default value when not specified in API or module is interpreted by Avi Controller as 500. + - Units(MILLISECONDS). apdex_response_tolerated_factor: description: - Client tolerated response latency factor. @@ -62,6 +75,7 @@ options: - Satisfactory client to avi round trip time(rtt). - Allowed values are 1-2000. - Default value when not specified in API or module is interpreted by Avi Controller as 250. + - Units(MILLISECONDS). apdex_rtt_tolerated_factor: description: - Tolerated client to avi round trip time(rtt) factor. @@ -76,6 +90,7 @@ options: - A pageload includes the time for dns lookup, download of all http objects, and page render time. - Allowed values are 1-30000. - Default value when not specified in API or module is interpreted by Avi Controller as 5000. + - Units(MILLISECONDS). apdex_rum_tolerated_factor: description: - Virtual service threshold factor for tolerated page load time (plt) as multiple of apdex_rum_threshold. @@ -88,6 +103,7 @@ options: - Greater than this number and the server response is considered frustrated. - Allowed values are 1-30000. - Default value when not specified in API or module is interpreted by Avi Controller as 400. + - Units(MILLISECONDS). apdex_server_response_tolerated_factor: description: - Server tolerated response latency factor. @@ -99,6 +115,7 @@ options: - Satisfactory client to avi round trip time(rtt). - Allowed values are 1-2000. - Default value when not specified in API or module is interpreted by Avi Controller as 125. + - Units(MILLISECONDS). apdex_server_rtt_tolerated_factor: description: - Tolerated client to avi round trip time(rtt) factor. @@ -118,41 +135,49 @@ options: - A connection between client and avi is considered lossy when more than this percentage of out of order packets are received. - Allowed values are 1-100. - Default value when not specified in API or module is interpreted by Avi Controller as 50. + - Units(PERCENT). conn_lossy_timeo_rexmt_threshold: description: - A connection between client and avi is considered lossy when more than this percentage of packets are retransmitted due to timeout. - Allowed values are 1-100. - Default value when not specified in API or module is interpreted by Avi Controller as 20. + - Units(PERCENT). conn_lossy_total_rexmt_threshold: description: - A connection between client and avi is considered lossy when more than this percentage of packets are retransmitted. - Allowed values are 1-100. - Default value when not specified in API or module is interpreted by Avi Controller as 50. + - Units(PERCENT). conn_lossy_zero_win_size_event_threshold: description: - A client connection is considered lossy when percentage of times a packet could not be trasmitted due to tcp zero window is above this threshold. - Allowed values are 0-100. - Default value when not specified in API or module is interpreted by Avi Controller as 2. + - Units(PERCENT). conn_server_lossy_ooo_threshold: description: - A connection between avi and server is considered lossy when more than this percentage of out of order packets are received. - Allowed values are 1-100. - Default value when not specified in API or module is interpreted by Avi Controller as 50. + - Units(PERCENT). conn_server_lossy_timeo_rexmt_threshold: description: - A connection between avi and server is considered lossy when more than this percentage of packets are retransmitted due to timeout. - Allowed values are 1-100. - Default value when not specified in API or module is interpreted by Avi Controller as 20. + - Units(PERCENT). conn_server_lossy_total_rexmt_threshold: description: - A connection between avi and server is considered lossy when more than this percentage of packets are retransmitted. - Allowed values are 1-100. - Default value when not specified in API or module is interpreted by Avi Controller as 50. + - Units(PERCENT). conn_server_lossy_zero_win_size_event_threshold: description: - A server connection is considered lossy when percentage of times a packet could not be trasmitted due to tcp zero window is above this threshold. - Allowed values are 0-100. - Default value when not specified in API or module is interpreted by Avi Controller as 2. + - Units(PERCENT). description: description: - User defined description for the object. @@ -169,6 +194,12 @@ options: description: - Exclude client closed connection before an http request could be completed from being classified as an error. - Default value when not specified in API or module is interpreted by Avi Controller as False. + exclude_dns_policy_drop_as_significant: + description: + - Exclude dns policy drops from the list of errors. + - Field introduced in 17.2.2. + - Default value when not specified in API or module is interpreted by Avi Controller as False. + version_added: "2.5" exclude_gs_down_as_error: description: - Exclude queries to gslb services that are operationally down from the list of errors. @@ -369,13 +400,12 @@ extends_documentation_fragment: - avi ''' - -EXAMPLES = ''' +EXAMPLES = """ - name: Create a custom Analytics profile object avi_analyticsprofile: - controller: '' - username: '' - password: '' + controller: '{{ controller }}' + username: '{{ username }}' + password: '{{ password }}' apdex_response_threshold: 500 apdex_response_tolerated_factor: 4.0 apdex_rtt_threshold: 250 @@ -429,7 +459,8 @@ EXAMPLES = ''' hs_security_weak_signature_algo_penalty: 1.0 name: jason-analytics-profile tenant_ref: Demo -''' +""" + RETURN = ''' obj: description: AnalyticsProfile (api/analyticsprofile) object @@ -449,6 +480,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), apdex_response_threshold=dict(type='int',), apdex_response_tolerated_factor=dict(type='float',), apdex_rtt_threshold=dict(type='int',), @@ -473,6 +507,7 @@ def main(): disable_se_analytics=dict(type='bool',), disable_server_analytics=dict(type='bool',), exclude_client_close_before_request_as_error=dict(type='bool',), + exclude_dns_policy_drop_as_significant=dict(type='bool',), exclude_gs_down_as_error=dict(type='bool',), exclude_http_error_codes=dict(type='list',), exclude_invalid_dns_domain_as_error=dict(type='bool',), diff --git a/lib/ansible/modules/network/avi/avi_api_session.py b/lib/ansible/modules/network/avi/avi_api_session.py index d2f0e95a525..af05696e8cc 100644 --- a/lib/ansible/modules/network/avi/avi_api_session.py +++ b/lib/ansible/modules/network/avi/avi_api_session.py @@ -126,9 +126,10 @@ from copy import deepcopy try: from ansible.module_utils.network.avi.avi import ( - avi_common_argument_spec, ansible_return, HAS_AVI) + avi_common_argument_spec, ansible_return, AviCredentials, HAS_AVI) from avi.sdk.avi_api import ApiSession from avi.sdk.utils.ansible_utils import avi_obj_cmp, cleanup_absent_fields + except ImportError: HAS_AVI = False @@ -150,20 +151,24 @@ def main(): return module.fail_json(msg=( 'Avi python API SDK (avisdk) is not installed. ' 'For more details visit https://github.com/avinetworks/sdk.')) - tenant_uuid = module.params.get('tenant_uuid', None) + + api_creds = AviCredentials() + api_creds.update_from_ansible_module(module) api = ApiSession.get_session( - module.params['controller'], module.params['username'], - module.params['password'], tenant=module.params['tenant'], - tenant_uuid=tenant_uuid) + api_creds.controller, api_creds.username, password=api_creds.password, + timeout=api_creds.timeout, tenant=api_creds.tenant, + tenant_uuid=api_creds.tenant_uuid, token=api_creds.token, + port=api_creds.port) - tenant = module.params.get('tenant', '') + tenant_uuid = api_creds.tenant_uuid + tenant = api_creds.tenant timeout = int(module.params.get('timeout')) # path is a required argument path = module.params.get('path', '') params = module.params.get('params', None) data = module.params.get('data', None) # Get the api_version from module. - api_version = module.params.get('api_version', '16.4') + api_version = api_creds.api_version if data is not None: data = json.loads(data) method = module.params['http_method'] @@ -176,11 +181,16 @@ def main(): if method == 'post': # need to check if object already exists. In that case # change the method to be put - gparams['name'] = data['name'] - rsp = api.get(path, tenant=tenant, tenant_uuid=tenant_uuid, - params=gparams, api_version=api_version) try: - existing_obj = rsp.json()['results'][0] + using_collection = False + if not path.startswith('cluster'): + gparams['name'] = data['name'] + using_collection = True + rsp = api.get(path, tenant=tenant, tenant_uuid=tenant_uuid, + params=gparams, api_version=api_version) + existing_obj = rsp.json() + if using_collection: + existing_obj = existing_obj['results'][0] except IndexError: # object is not found pass @@ -193,7 +203,8 @@ def main(): # put can happen with when full path is specified or it is put + post if existing_obj is None: using_collection = False - if (len(path.split('/')) == 1) and ('name' in data): + if ((len(path.split('/')) == 1) and ('name' in data) and + (not path.startswith('cluster'))): gparams['name'] = data['name'] using_collection = True rsp = api.get(path, tenant=tenant, tenant_uuid=tenant_uuid, diff --git a/lib/ansible/modules/network/avi/avi_applicationpersistenceprofile.py b/lib/ansible/modules/network/avi/avi_applicationpersistenceprofile.py index 07723b0fd83..b692292071e 100644 --- a/lib/ansible/modules/network/avi/avi_applicationpersistenceprofile.py +++ b/lib/ansible/modules/network/avi/avi_applicationpersistenceprofile.py @@ -43,7 +43,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] app_cookie_persistence_profile: description: - Specifies the application cookie persistence profile parameters. @@ -96,13 +108,12 @@ extends_documentation_fragment: - avi ''' - -EXAMPLES = ''' +EXAMPLES = """ - name: Create an Application Persistence setting using http cookie. avi_applicationpersistenceprofile: - controller: '' - username: '' - password: '' + controller: '{{ controller }}' + username: '{{ username }}' + password: '{{ password }}' http_cookie_persistence_profile: always_send_cookie: false cookie_name: My-HTTP @@ -118,7 +129,8 @@ EXAMPLES = ''' 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 @@ -138,6 +150,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), app_cookie_persistence_profile=dict(type='dict',), description=dict(type='str',), hdr_persistence_profile=dict(type='dict',), diff --git a/lib/ansible/modules/network/avi/avi_applicationprofile.py b/lib/ansible/modules/network/avi/avi_applicationprofile.py index fd8486b0b9c..7bf2be69b8c 100644 --- a/lib/ansible/modules/network/avi/avi_applicationprofile.py +++ b/lib/ansible/modules/network/avi/avi_applicationprofile.py @@ -43,7 +43,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] description: description: - User defined description for the object. @@ -87,13 +99,12 @@ extends_documentation_fragment: - avi ''' - -EXAMPLES = ''' +EXAMPLES = """ - name: Create an Application Profile for HTTP application enabled for SSL traffic avi_applicationprofile: - controller: '' - username: '' - password: '' + controller: '{{ controller }}' + username: '{{ username }}' + password: '{{ password }}' http_profile: cache_config: age_header: true @@ -148,7 +159,8 @@ EXAMPLES = ''' name: System-HTTP tenant_ref: admin type: APPLICATION_PROFILE_TYPE_HTTP -''' +""" + RETURN = ''' obj: description: ApplicationProfile (api/applicationprofile) object @@ -168,6 +180,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), description=dict(type='str',), dns_service_profile=dict(type='dict',), dos_rl_profile=dict(type='dict',), diff --git a/lib/ansible/modules/network/avi/avi_authprofile.py b/lib/ansible/modules/network/avi/avi_authprofile.py index 6ec7430127f..dae9734e911 100644 --- a/lib/ansible/modules/network/avi/avi_authprofile.py +++ b/lib/ansible/modules/network/avi/avi_authprofile.py @@ -43,7 +43,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] description: description: - User defined description for the object. @@ -57,6 +69,11 @@ options: description: - Name of the auth profile. required: true + saml: + description: + - Saml settings. + - Field introduced in 17.2.3. + version_added: "2.5" tacacs_plus: description: - Tacacs+ settings. @@ -66,7 +83,7 @@ options: type: description: - Type of the auth profile. - - Enum options - AUTH_PROFILE_LDAP, AUTH_PROFILE_TACACS_PLUS. + - Enum options - AUTH_PROFILE_LDAP, AUTH_PROFILE_TACACS_PLUS, AUTH_PROFILE_SAML. required: true url: description: @@ -78,13 +95,12 @@ extends_documentation_fragment: - avi ''' - -EXAMPLES = ''' +EXAMPLES = """ - name: Create user authorization profile based on the LDAP avi_authprofile: - controller: '' - password: '' - username: '' + controller: '{{ controller }}' + password: '{{ password }}' + username: '{{ username }}' http: cache_expiration_time: 5 group_member_is_full_dn: false @@ -110,7 +126,8 @@ EXAMPLES = ''' name: ProdAuth tenant_ref: admin type: AUTH_PROFILE_LDAP -''' +""" + RETURN = ''' obj: description: AuthProfile (api/authprofile) object @@ -130,10 +147,14 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), description=dict(type='str',), http=dict(type='dict',), ldap=dict(type='dict',), name=dict(type='str', required=True), + saml=dict(type='dict',), tacacs_plus=dict(type='dict',), tenant_ref=dict(type='str',), type=dict(type='str', required=True), diff --git a/lib/ansible/modules/network/avi/avi_backup.py b/lib/ansible/modules/network/avi/avi_backup.py index b769c870f44..bdd353e8c90 100644 --- a/lib/ansible/modules/network/avi/avi_backup.py +++ b/lib/ansible/modules/network/avi/avi_backup.py @@ -43,7 +43,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] backup_config_ref: description: - Backupconfiguration information. @@ -107,6 +119,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), backup_config_ref=dict(type='str',), file_name=dict(type='str', required=True), local_file_url=dict(type='str',), diff --git a/lib/ansible/modules/network/avi/avi_backupconfiguration.py b/lib/ansible/modules/network/avi/avi_backupconfiguration.py index 5b57b5811b2..7c81b083bcf 100644 --- a/lib/ansible/modules/network/avi/avi_backupconfiguration.py +++ b/lib/ansible/modules/network/avi/avi_backupconfiguration.py @@ -42,7 +42,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] backup_file_prefix: description: - Prefix of the exported configuration file. @@ -117,6 +129,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), backup_file_prefix=dict(type='str',), backup_passphrase=dict(type='str', no_log=True,), maximum_backups_stored=dict(type='int',), diff --git a/lib/ansible/modules/network/avi/avi_certificatemanagementprofile.py b/lib/ansible/modules/network/avi/avi_certificatemanagementprofile.py index 944f7003aae..847c046c8f9 100644 --- a/lib/ansible/modules/network/avi/avi_certificatemanagementprofile.py +++ b/lib/ansible/modules/network/avi/avi_certificatemanagementprofile.py @@ -43,7 +43,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] name: description: - Name of the pki profile. @@ -97,6 +109,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), name=dict(type='str', required=True), script_params=dict(type='list',), script_path=dict(type='str', required=True), diff --git a/lib/ansible/modules/network/avi/avi_cloud.py b/lib/ansible/modules/network/avi/avi_cloud.py index b82637fe825..6b54a21f166 100644 --- a/lib/ansible/modules/network/avi/avi_cloud.py +++ b/lib/ansible/modules/network/avi/avi_cloud.py @@ -43,7 +43,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] apic_configuration: description: - Apicconfiguration settings for cloud. @@ -54,9 +66,18 @@ options: aws_configuration: description: - Awsconfiguration settings for cloud. + azure_configuration: + description: + - Field introduced in 17.2.1. + version_added: "2.5" cloudstack_configuration: description: - Cloudstackconfiguration settings for cloud. + custom_tags: + description: + - Custom tags for all avi created resources in the cloud infrastructure. + - Field introduced in 17.1.5. + version_added: "2.5" dhcp_enabled: description: - Select the ip address management scheme. @@ -87,11 +108,18 @@ options: description: - Ipam profile for the cloud. - It is a reference to an object of type ipamdnsproviderprofile. + license_tier: + description: + - Specifies the default license tier which would be used by new se groups. + - This field by default inherits the value from system configuration. + - Enum options - ENTERPRISE_16, ENTERPRISE_18. + - Field introduced in 17.2.5. + version_added: "2.5" license_type: description: - If no license type is specified then default license enforcement for the cloud type is chosen. - The default mappings are container cloud is max ses, openstack and vmware is cores and linux it is sockets. - - Enum options - LIC_BACKEND_SERVERS, LIC_SOCKETS, LIC_CORES, LIC_HOSTS. + - Enum options - LIC_BACKEND_SERVERS, LIC_SOCKETS, LIC_CORES, LIC_HOSTS, LIC_SE_BANDWIDTH. linuxserver_configuration: description: - Linuxserverconfiguration settings for cloud. @@ -102,6 +130,7 @@ options: description: - Mtu setting for the cloud. - Default value when not specified in API or module is interpreted by Avi Controller as 1500. + - Units(BYTES). name: description: - Name of the object. @@ -130,6 +159,12 @@ options: rancher_configuration: description: - Rancherconfiguration settings for cloud. + state_based_dns_registration: + description: + - Dns records for vips are added/deleted based on the operational state of the vips. + - Field introduced in 17.1.12. + - Default value when not specified in API or module is interpreted by Avi Controller as True. + version_added: "2.5" tenant_ref: description: - It is a reference to an object of type tenant. @@ -149,20 +184,19 @@ options: description: - Cloud type. - Enum options - CLOUD_NONE, CLOUD_VCENTER, CLOUD_OPENSTACK, CLOUD_AWS, CLOUD_VCA, CLOUD_APIC, CLOUD_MESOS, CLOUD_LINUXSERVER, CLOUD_DOCKER_UCP, - - CLOUD_RANCHER, CLOUD_OSHIFT_K8S. + - CLOUD_RANCHER, CLOUD_OSHIFT_K8S, CLOUD_AZURE. - Default value when not specified in API or module is interpreted by Avi Controller as CLOUD_NONE. required: true extends_documentation_fragment: - avi ''' - -EXAMPLES = ''' - - name: Create a VMware cloud with write access mode +EXAMPLES = """ + - name: Create a VMWare cloud with write access mode avi_cloud: - username: '' - controller: '' - password: '' + username: '{{ username }}' + controller: '{{ controller }}' + password: '{{ password }}' apic_mode: false dhcp_enabled: true enable_vip_static_routes: false @@ -179,7 +213,8 @@ EXAMPLES = ''' username: user vcenter_url: 10.10.20.100 vtype: CLOUD_VCENTER -''' +""" + RETURN = ''' obj: description: Cloud (api/cloud) object @@ -199,10 +234,15 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), apic_configuration=dict(type='dict',), apic_mode=dict(type='bool',), aws_configuration=dict(type='dict',), + azure_configuration=dict(type='dict',), cloudstack_configuration=dict(type='dict',), + custom_tags=dict(type='list',), dhcp_enabled=dict(type='bool',), dns_provider_ref=dict(type='str',), docker_configuration=dict(type='dict',), @@ -210,6 +250,7 @@ def main(): east_west_ipam_provider_ref=dict(type='str',), enable_vip_static_routes=dict(type='bool',), ipam_provider_ref=dict(type='str',), + license_tier=dict(type='str',), license_type=dict(type='str',), linuxserver_configuration=dict(type='dict',), mesos_configuration=dict(type='dict',), @@ -222,6 +263,7 @@ def main(): prefer_static_routes=dict(type='bool',), proxy_configuration=dict(type='dict',), rancher_configuration=dict(type='dict',), + state_based_dns_registration=dict(type='bool',), tenant_ref=dict(type='str',), url=dict(type='str',), uuid=dict(type='str',), diff --git a/lib/ansible/modules/network/avi/avi_cloudconnectoruser.py b/lib/ansible/modules/network/avi/avi_cloudconnectoruser.py index a0a69ee9a8e..e5170add99e 100644 --- a/lib/ansible/modules/network/avi/avi_cloudconnectoruser.py +++ b/lib/ansible/modules/network/avi/avi_cloudconnectoruser.py @@ -43,7 +43,27 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] + azure_serviceprincipal: + description: + - Field introduced in 17.2.1. + version_added: "2.5" + azure_userpass: + description: + - Field introduced in 17.2.1. + version_added: "2.5" name: description: - Name of the object. @@ -67,20 +87,20 @@ extends_documentation_fragment: - avi ''' - -EXAMPLES = ''' +EXAMPLES = """ - name: Create a Cloud connector user that is used for integration into cloud platforms avi_cloudconnectoruser: - controller: '' + controller: '{{ controller }}' name: root - password: '' + password: '{{ password }}' private_key: | -----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY-----' public_key: 'ssh-rsa ...' tenant_ref: admin - username: '' -''' + username: '{{ username }}' +""" + RETURN = ''' obj: description: CloudConnectorUser (api/cloudconnectoruser) object @@ -100,6 +120,11 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), + azure_serviceprincipal=dict(type='dict',), + azure_userpass=dict(type='dict',), name=dict(type='str', required=True), private_key=dict(type='str', no_log=True,), public_key=dict(type='str',), diff --git a/lib/ansible/modules/network/avi/avi_cloudproperties.py b/lib/ansible/modules/network/avi/avi_cloudproperties.py index d27efbd015e..253abc37f7a 100644 --- a/lib/ansible/modules/network/avi/avi_cloudproperties.py +++ b/lib/ansible/modules/network/avi/avi_cloudproperties.py @@ -43,7 +43,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] cc_props: description: - Cloudconnector properties. @@ -51,7 +63,7 @@ options: description: - Cloud types supported by cloudconnector. - Enum options - CLOUD_NONE, CLOUD_VCENTER, CLOUD_OPENSTACK, CLOUD_AWS, CLOUD_VCA, CLOUD_APIC, CLOUD_MESOS, CLOUD_LINUXSERVER, CLOUD_DOCKER_UCP, - - CLOUD_RANCHER, CLOUD_OSHIFT_K8S. + - CLOUD_RANCHER, CLOUD_OSHIFT_K8S, CLOUD_AZURE. hyp_props: description: - Hypervisor properties. @@ -97,6 +109,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), cc_props=dict(type='dict',), cc_vtypes=dict(type='list',), hyp_props=dict(type='list',), diff --git a/lib/ansible/modules/network/avi/avi_cluster.py b/lib/ansible/modules/network/avi/avi_cluster.py index 98c2bb141e3..df62c50feff 100644 --- a/lib/ansible/modules/network/avi/avi_cluster.py +++ b/lib/ansible/modules/network/avi/avi_cluster.py @@ -42,7 +42,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] name: description: - Name of the object. @@ -100,6 +112,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), name=dict(type='str', required=True), nodes=dict(type='list',), rejoin_nodes_automatically=dict(type='bool',), diff --git a/lib/ansible/modules/network/avi/avi_controllerproperties.py b/lib/ansible/modules/network/avi/avi_controllerproperties.py index ec708a2c22b..dc365b5e19b 100644 --- a/lib/ansible/modules/network/avi/avi_controllerproperties.py +++ b/lib/ansible/modules/network/avi/avi_controllerproperties.py @@ -43,7 +43,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] allow_ip_forwarding: description: - Field introduced in 17.1.1. @@ -60,6 +72,7 @@ options: description: - Allowed values are 0-1440. - Default value when not specified in API or module is interpreted by Avi Controller as 15. + - Units(MIN). appviewx_compat_mode: description: - Export configuration in appviewx compatibility mode. @@ -69,26 +82,37 @@ options: description: - Number of attach_ip_retry_interval. - Default value when not specified in API or module is interpreted by Avi Controller as 360. + - Units(SEC). attach_ip_retry_limit: description: - Number of attach_ip_retry_limit. - Default value when not specified in API or module is interpreted by Avi Controller as 4. + bm_use_ansible: + description: + - Use ansible for se creation in baremetal. + - Field introduced in 17.2.2. + - Default value when not specified in API or module is interpreted by Avi Controller as True. + version_added: "2.5" cluster_ip_gratuitous_arp_period: description: - Number of cluster_ip_gratuitous_arp_period. - Default value when not specified in API or module is interpreted by Avi Controller as 60. + - Units(MIN). crashed_se_reboot: description: - Number of crashed_se_reboot. - Default value when not specified in API or module is interpreted by Avi Controller as 900. + - Units(SEC). dead_se_detection_timer: description: - Number of dead_se_detection_timer. - Default value when not specified in API or module is interpreted by Avi Controller as 360. + - Units(SEC). dns_refresh_period: description: - Number of dns_refresh_period. - Default value when not specified in API or module is interpreted by Avi Controller as 60. + - Units(MIN). dummy: description: - Number of dummy. @@ -96,6 +120,7 @@ options: description: - Number of fatal_error_lease_time. - Default value when not specified in API or module is interpreted by Avi Controller as 120. + - Units(SEC). max_dead_se_in_grp: description: - Number of max_dead_se_in_grp. @@ -104,6 +129,12 @@ options: description: - Maximum number of pcap files stored per tenant. - Default value when not specified in API or module is interpreted by Avi Controller as 4. + max_seq_attach_ip_failures: + description: + - Maximum number of consecutive attach ip failures that halts vs placement. + - Field introduced in 17.2.2. + - Default value when not specified in API or module is interpreted by Avi Controller as 3. + version_added: "2.5" max_seq_vnic_failures: description: - Number of max_seq_vnic_failures. @@ -113,6 +144,7 @@ options: - Allowed values are 1-1051200. - Special values are 0 - 'disabled'. - Default value when not specified in API or module is interpreted by Avi Controller as 60. + - Units(MIN). portal_token: description: - Token used for uploading tech-support to portal. @@ -122,34 +154,47 @@ options: description: - Number of query_host_fail. - Default value when not specified in API or module is interpreted by Avi Controller as 180. + - Units(SEC). + safenet_hsm_version: + description: + - Version of the safenet package installed on the controller. + - Field introduced in 16.5.2,17.2.3. + version_added: "2.5" se_create_timeout: description: - Number of se_create_timeout. - Default value when not specified in API or module is interpreted by Avi Controller as 900. + - Units(SEC). se_failover_attempt_interval: description: - Interval between attempting failovers to an se. - Default value when not specified in API or module is interpreted by Avi Controller as 300. + - Units(SEC). se_offline_del: description: - Number of se_offline_del. - Default value when not specified in API or module is interpreted by Avi Controller as 172000. + - Units(SEC). se_vnic_cooldown: description: - Number of se_vnic_cooldown. - Default value when not specified in API or module is interpreted by Avi Controller as 120. + - Units(SEC). secure_channel_cleanup_timeout: description: - Number of secure_channel_cleanup_timeout. - Default value when not specified in API or module is interpreted by Avi Controller as 60. + - Units(MIN). secure_channel_controller_token_timeout: description: - Number of secure_channel_controller_token_timeout. - Default value when not specified in API or module is interpreted by Avi Controller as 60. + - Units(MIN). secure_channel_se_token_timeout: description: - Number of secure_channel_se_token_timeout. - Default value when not specified in API or module is interpreted by Avi Controller as 60. + - Units(MIN). seupgrade_fabric_pool_size: description: - Pool size used for all fabric commands during se upgrade. @@ -158,23 +203,28 @@ options: description: - Time to wait before marking segroup upgrade as stuck. - Default value when not specified in API or module is interpreted by Avi Controller as 360. + - Units(SEC). ssl_certificate_expiry_warning_days: description: - Number of days for ssl certificate expiry warning. + - Units(DAYS). unresponsive_se_reboot: description: - Number of unresponsive_se_reboot. - Default value when not specified in API or module is interpreted by Avi Controller as 300. + - Units(SEC). upgrade_dns_ttl: description: - Time to account for dns ttl during upgrade. - This is in addition to vs_scalein_timeout_for_upgrade in se_group. - Field introduced in 17.1.1. - Default value when not specified in API or module is interpreted by Avi Controller as 5. + - Units(SEC). upgrade_lease_time: description: - Number of upgrade_lease_time. - Default value when not specified in API or module is interpreted by Avi Controller as 360. + - Units(SEC). url: description: - Avi controller URL of the object. @@ -185,43 +235,60 @@ options: description: - Number of vnic_op_fail_time. - Default value when not specified in API or module is interpreted by Avi Controller as 180. + - Units(SEC). vs_apic_scaleout_timeout: description: - Time to wait for the scaled out se to become ready before marking the scaleout done, applies to apic configuration only. - Default value when not specified in API or module is interpreted by Avi Controller as 360. + - Units(SEC). vs_awaiting_se_timeout: description: - Number of vs_awaiting_se_timeout. - Default value when not specified in API or module is interpreted by Avi Controller as 60. + - Units(SEC). vs_key_rotate_period: description: - Allowed values are 1-1051200. - Special values are 0 - 'disabled'. - Default value when not specified in API or module is interpreted by Avi Controller as 60. + - Units(MIN). + vs_se_attach_ip_fail: + description: + - Time to wait before marking attach ip operation on an se as failed. + - Field introduced in 17.2.2. + - Default value when not specified in API or module is interpreted by Avi Controller as 3600. + - Units(SEC). + version_added: "2.5" vs_se_bootup_fail: description: - Number of vs_se_bootup_fail. - - Default value when not specified in API or module is interpreted by Avi Controller as 300. + - Default value when not specified in API or module is interpreted by Avi Controller as 480. + - Units(SEC). vs_se_create_fail: description: - Number of vs_se_create_fail. - Default value when not specified in API or module is interpreted by Avi Controller as 1500. + - Units(SEC). vs_se_ping_fail: description: - Number of vs_se_ping_fail. - Default value when not specified in API or module is interpreted by Avi Controller as 60. + - Units(SEC). vs_se_vnic_fail: description: - Number of vs_se_vnic_fail. - Default value when not specified in API or module is interpreted by Avi Controller as 300. + - Units(SEC). vs_se_vnic_ip_fail: description: - Number of vs_se_vnic_ip_fail. - Default value when not specified in API or module is interpreted by Avi Controller as 120. + - Units(SEC). warmstart_se_reconnect_wait_time: description: - Number of warmstart_se_reconnect_wait_time. - Default value when not specified in API or module is interpreted by Avi Controller as 300. + - Units(SEC). extends_documentation_fragment: - avi ''' @@ -255,6 +322,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), allow_ip_forwarding=dict(type='bool',), allow_unauthenticated_apis=dict(type='bool',), allow_unauthenticated_nodes=dict(type='bool',), @@ -262,6 +332,7 @@ def main(): appviewx_compat_mode=dict(type='bool',), attach_ip_retry_interval=dict(type='int',), attach_ip_retry_limit=dict(type='int',), + bm_use_ansible=dict(type='bool',), cluster_ip_gratuitous_arp_period=dict(type='int',), crashed_se_reboot=dict(type='int',), dead_se_detection_timer=dict(type='int',), @@ -270,10 +341,12 @@ def main(): fatal_error_lease_time=dict(type='int',), max_dead_se_in_grp=dict(type='int',), max_pcap_per_tenant=dict(type='int',), + max_seq_attach_ip_failures=dict(type='int',), max_seq_vnic_failures=dict(type='int',), persistence_key_rotate_period=dict(type='int',), portal_token=dict(type='str', no_log=True,), query_host_fail=dict(type='int',), + safenet_hsm_version=dict(type='str',), se_create_timeout=dict(type='int',), se_failover_attempt_interval=dict(type='int',), se_offline_del=dict(type='int',), @@ -293,6 +366,7 @@ def main(): vs_apic_scaleout_timeout=dict(type='int',), vs_awaiting_se_timeout=dict(type='int',), vs_key_rotate_period=dict(type='int',), + vs_se_attach_ip_fail=dict(type='int',), vs_se_bootup_fail=dict(type='int',), vs_se_create_fail=dict(type='int',), vs_se_ping_fail=dict(type='int',), diff --git a/lib/ansible/modules/network/avi/avi_dnspolicy.py b/lib/ansible/modules/network/avi/avi_dnspolicy.py index f9d6193634c..af59c0a50b4 100644 --- a/lib/ansible/modules/network/avi/avi_dnspolicy.py +++ b/lib/ansible/modules/network/avi/avi_dnspolicy.py @@ -43,7 +43,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] created_by: description: - Creator name. @@ -103,6 +115,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), created_by=dict(type='str',), description=dict(type='str',), name=dict(type='str',), diff --git a/lib/ansible/modules/network/avi/avi_gslb.py b/lib/ansible/modules/network/avi/avi_gslb.py index 39118ec22b5..a6a7465d032 100644 --- a/lib/ansible/modules/network/avi/avi_gslb.py +++ b/lib/ansible/modules/network/avi/avi_gslb.py @@ -43,11 +43,23 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] clear_on_max_retries: description: - - Max retries after which the remote site is treatedas a fresh start. - - In fresh start all the configsare downloaded. + - Max retries after which the remote site is treated as a fresh start. + - In fresh start all the configs are downloaded. - Allowed values are 1-1024. - Default value when not specified in API or module is interpreted by Avi Controller as 20. client_ip_addr_group: @@ -72,6 +84,16 @@ options: description: - Mark this site as leader of gslb configuration. - This site is the one among the avi sites. + maintenance_mode: + description: + - This field disables the configuration operations on the leader for all federated objects. + - Cud operations on gslb, gslbservice, gslbgeodbprofile and other federated objects will be rejected. + - The rest-api disabling helps in upgrade scenarios where we don't want configuration sync operations to the gslb member when the member is being + - upgraded. + - This configuration programmatically blocks the leader from accepting new gslb configuration when member sites are undergoing upgrade. + - Field introduced in 17.2.1. + - Default value when not specified in API or module is interpreted by Avi Controller as False. + version_added: "2.5" name: description: - Name for the gslb object. @@ -81,6 +103,7 @@ options: - Frequency with which group members communicate. - Allowed values are 1-3600. - Default value when not specified in API or module is interpreted by Avi Controller as 15. + - Units(SEC). sites: description: - Select avi site member belonging to this gslb. @@ -99,8 +122,8 @@ options: - Uuid of the gslb object. view_id: description: - - The view-id is used in maintenance mode to differentiate partitioned groups while they havethe same gslb namespace. - - Each partitioned groupwill be able to operate independently by using theview-id. + - The view-id is used in change-leader mode to differentiate partitioned groups while they have the same gslb namespace. + - Each partitioned group will be able to operate independently by using the view-id. - Default value when not specified in API or module is interpreted by Avi Controller as 0. extends_documentation_fragment: - avi @@ -135,12 +158,16 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), clear_on_max_retries=dict(type='int',), client_ip_addr_group=dict(type='dict',), description=dict(type='str',), dns_configs=dict(type='list',), is_federated=dict(type='bool',), leader_cluster_uuid=dict(type='str',), + maintenance_mode=dict(type='bool',), name=dict(type='str', required=True), send_interval=dict(type='int',), sites=dict(type='list',), diff --git a/lib/ansible/modules/network/avi/avi_gslbgeodbprofile.py b/lib/ansible/modules/network/avi/avi_gslbgeodbprofile.py index 067f65c79a3..46c1b1bb8f3 100644 --- a/lib/ansible/modules/network/avi/avi_gslbgeodbprofile.py +++ b/lib/ansible/modules/network/avi/avi_gslbgeodbprofile.py @@ -43,7 +43,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] description: description: - Field introduced in 17.1.1. @@ -106,6 +118,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), description=dict(type='str',), entries=dict(type='list',), is_federated=dict(type='bool',), diff --git a/lib/ansible/modules/network/avi/avi_gslbservice.py b/lib/ansible/modules/network/avi/avi_gslbservice.py index 238a4a87ecd..4237495dbe1 100644 --- a/lib/ansible/modules/network/avi/avi_gslbservice.py +++ b/lib/ansible/modules/network/avi/avi_gslbservice.py @@ -43,7 +43,25 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] + application_persistence_profile_ref: + description: + - The federated application persistence associated with gslbservice site persistence functionality. + - It is a reference to an object of type applicationpersistenceprofile. + - Field introduced in 17.2.1. + version_added: "2.5" controller_health_status_enabled: description: - Gs member's overall health status is derived based on a combination of controller and datapath health-status inputs. @@ -89,6 +107,14 @@ options: - This field indicates that this object is replicated across gslb federation. - Field introduced in 17.1.3. - Default value when not specified in API or module is interpreted by Avi Controller as True. + min_members: + description: + - The minimum number of members to distribute traffic to. + - Allowed values are 1-65535. + - Special values are 0 - 'disable'. + - Field introduced in 17.2.4. + - Default value when not specified in API or module is interpreted by Avi Controller as 0. + version_added: "2.5" name: description: - Name for the gslb service. @@ -99,6 +125,19 @@ options: - Enter 0 to return all ip addresses. - Allowed values are 1-20. - Special values are 0- 'return all ip addresses'. + pool_algorithm: + description: + - The load balancing algorithm will pick a gslb pool within the gslb service list of available pools. + - Enum options - GSLB_SERVICE_ALGORITHM_PRIORITY, GSLB_SERVICE_ALGORITHM_GEO. + - Field introduced in 17.2.3. + - Default value when not specified in API or module is interpreted by Avi Controller as GSLB_SERVICE_ALGORITHM_PRIORITY. + version_added: "2.5" + site_persistence_enabled: + description: + - Enable site-persistence for the gslbservice. + - Field introduced in 17.2.1. + - Default value when not specified in API or module is interpreted by Avi Controller as False. + version_added: "2.5" tenant_ref: description: - It is a reference to an object of type tenant. @@ -106,6 +145,7 @@ options: description: - Ttl value (in seconds) for records served for this gslb service by the dns service. - Allowed values are 1-86400. + - Units(SEC). url: description: - Avi controller URL of the object. @@ -158,6 +198,10 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), + application_persistence_profile_ref=dict(type='str',), controller_health_status_enabled=dict(type='bool',), created_by=dict(type='str',), description=dict(type='str',), @@ -168,8 +212,11 @@ def main(): health_monitor_refs=dict(type='list',), health_monitor_scope=dict(type='str',), is_federated=dict(type='bool',), + min_members=dict(type='int',), name=dict(type='str', required=True), num_dns_ip=dict(type='int',), + pool_algorithm=dict(type='str',), + site_persistence_enabled=dict(type='bool',), tenant_ref=dict(type='str',), ttl=dict(type='int',), url=dict(type='str',), diff --git a/lib/ansible/modules/network/avi/avi_hardwaresecuritymodulegroup.py b/lib/ansible/modules/network/avi/avi_hardwaresecuritymodulegroup.py index 36c224e709f..5e5359ae8d3 100644 --- a/lib/ansible/modules/network/avi/avi_hardwaresecuritymodulegroup.py +++ b/lib/ansible/modules/network/avi/avi_hardwaresecuritymodulegroup.py @@ -42,7 +42,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] hsm: description: - Hardware security module configuration. @@ -93,6 +105,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), hsm=dict(type='dict', required=True), name=dict(type='str', required=True), tenant_ref=dict(type='str',), diff --git a/lib/ansible/modules/network/avi/avi_healthmonitor.py b/lib/ansible/modules/network/avi/avi_healthmonitor.py index f71c4a2e126..99e79e0be6d 100644 --- a/lib/ansible/modules/network/avi/avi_healthmonitor.py +++ b/lib/ansible/modules/network/avi/avi_healthmonitor.py @@ -43,7 +43,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] description: description: - User defined description for the object. @@ -87,13 +99,15 @@ options: - A valid response from the server is expected within the receive timeout window. - This timeout must be less than the send interval. - If server status is regularly flapping up and down, consider increasing this value. - - Allowed values are 1-300. + - Allowed values are 1-2400. - Default value when not specified in API or module is interpreted by Avi Controller as 4. + - Units(SEC). send_interval: description: - Frequency, in seconds, that monitors are sent to a server. - Allowed values are 1-3600. - Default value when not specified in API or module is interpreted by Avi Controller as 10. + - Units(SEC). successful_checks: description: - Number of continuous successful health checks before server is marked up. @@ -124,8 +138,7 @@ extends_documentation_fragment: - avi ''' - -EXAMPLES = ''' +EXAMPLES = """ - name: Create a HTTPS health monitor avi_healthmonitor: controller: 10.10.27.90 @@ -142,7 +155,8 @@ EXAMPLES = ''' successful_checks: 3 type: HEALTH_MONITOR_HTTPS name: MyWebsite-HTTPS -''' +""" + RETURN = ''' obj: description: HealthMonitor (api/healthmonitor) object @@ -162,6 +176,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), description=dict(type='str',), dns_monitor=dict(type='dict',), external_monitor=dict(type='dict',), diff --git a/lib/ansible/modules/network/avi/avi_httppolicyset.py b/lib/ansible/modules/network/avi/avi_httppolicyset.py index 6b88373a445..0a532ad64c1 100644 --- a/lib/ansible/modules/network/avi/avi_httppolicyset.py +++ b/lib/ansible/modules/network/avi/avi_httppolicyset.py @@ -43,7 +43,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] cloud_config_cksum: description: - Checksum of cloud configuration for pool. @@ -84,8 +96,7 @@ extends_documentation_fragment: - avi ''' - -EXAMPLES = ''' +EXAMPLES = """ - name: Create a HTTP Policy set two switch between testpool1 and testpool2 avi_httppolicyset: controller: 10.10.27.90 @@ -122,7 +133,8 @@ EXAMPLES = ''' status_code: HTTP_LOCAL_RESPONSE_STATUS_CODE_200 pool_ref: "/api/pool?name=testpool2" is_internal_policy: false -''' +""" + RETURN = ''' obj: description: HTTPPolicySet (api/httppolicyset) object @@ -142,6 +154,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), cloud_config_cksum=dict(type='str',), created_by=dict(type='str',), description=dict(type='str',), diff --git a/lib/ansible/modules/network/avi/avi_ipaddrgroup.py b/lib/ansible/modules/network/avi/avi_ipaddrgroup.py index 0a0ec23eb8b..ff9ed5016d5 100644 --- a/lib/ansible/modules/network/avi/avi_ipaddrgroup.py +++ b/lib/ansible/modules/network/avi/avi_ipaddrgroup.py @@ -43,7 +43,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] addrs: description: - Configure ip address(es). @@ -90,13 +102,12 @@ extends_documentation_fragment: - avi ''' - -EXAMPLES = ''' +EXAMPLES = """ - name: Create an IP Address Group configuration avi_ipaddrgroup: - controller: '' - username: '' - password: '' + controller: '{{ controller }}' + username: '{{ username }}' + password: '{{ password }}' name: Client-Source-Block prefixes: - ip_addr: @@ -111,7 +122,8 @@ EXAMPLES = ''' addr: 192.168.0.0 type: V4 mask: 16 -''' +""" + RETURN = ''' obj: description: IpAddrGroup (api/ipaddrgroup) object @@ -131,6 +143,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), addrs=dict(type='list',), apic_epg_name=dict(type='str',), country_codes=dict(type='list',), diff --git a/lib/ansible/modules/network/avi/avi_ipamdnsproviderprofile.py b/lib/ansible/modules/network/avi/avi_ipamdnsproviderprofile.py index 5ad0e249213..28e0787be5b 100644 --- a/lib/ansible/modules/network/avi/avi_ipamdnsproviderprofile.py +++ b/lib/ansible/modules/network/avi/avi_ipamdnsproviderprofile.py @@ -42,10 +42,34 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] + allocate_ip_in_vrf: + description: + - If this flag is set, only allocate ip from networks in the virtual service vrf. + - Applicable for avi vantage ipam only. + - Field introduced in 17.2.4. + - Default value when not specified in API or module is interpreted by Avi Controller as False. + version_added: "2.5" aws_profile: description: - Provider details if type is aws. + azure_profile: + description: + - Provider details if type is microsoft azure. + - Field introduced in 17.2.1. + version_added: "2.5" custom_profile: description: - Provider details if type is custom. @@ -76,7 +100,7 @@ options: description: - Provider type for the ipam/dns provider profile. - Enum options - IPAMDNS_TYPE_INFOBLOX, IPAMDNS_TYPE_AWS, IPAMDNS_TYPE_OPENSTACK, IPAMDNS_TYPE_GCP, IPAMDNS_TYPE_INFOBLOX_DNS, IPAMDNS_TYPE_CUSTOM, - - IPAMDNS_TYPE_CUSTOM_DNS, IPAMDNS_TYPE_INTERNAL, IPAMDNS_TYPE_INTERNAL_DNS, IPAMDNS_TYPE_AWS_DNS. + - IPAMDNS_TYPE_CUSTOM_DNS, IPAMDNS_TYPE_AZURE, IPAMDNS_TYPE_INTERNAL, IPAMDNS_TYPE_INTERNAL_DNS, IPAMDNS_TYPE_AWS_DNS, IPAMDNS_TYPE_AZURE_DNS. required: true url: description: @@ -88,13 +112,12 @@ extends_documentation_fragment: - avi ''' - -EXAMPLES = ''' +EXAMPLES = """ - name: Create IPAM DNS provider setting avi_ipamdnsproviderprofile: - controller: '' - username: '' - password: '' + controller: '{{ controller }}' + username: '{{ username }}' + password: '{{ password }}' internal_profile: dns_service_domain: - domain_name: ashish.local @@ -109,7 +132,8 @@ EXAMPLES = ''' name: Ashish-DNS tenant_ref: Demo type: IPAMDNS_TYPE_INTERNAL -''' +""" + RETURN = ''' obj: description: IpamDnsProviderProfile (api/ipamdnsproviderprofile) object @@ -129,7 +153,12 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), + allocate_ip_in_vrf=dict(type='bool',), aws_profile=dict(type='dict',), + azure_profile=dict(type='dict',), custom_profile=dict(type='dict',), gcp_profile=dict(type='dict',), infoblox_profile=dict(type='dict',), diff --git a/lib/ansible/modules/network/avi/avi_microservicegroup.py b/lib/ansible/modules/network/avi/avi_microservicegroup.py index 3b17e0c8387..5af925e7f36 100644 --- a/lib/ansible/modules/network/avi/avi_microservicegroup.py +++ b/lib/ansible/modules/network/avi/avi_microservicegroup.py @@ -42,7 +42,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] created_by: description: - Creator name. @@ -70,17 +82,17 @@ extends_documentation_fragment: - avi ''' - -EXAMPLES = ''' +EXAMPLES = """ - name: Create a Microservice Group that can be used for setting up Network security policy avi_microservicegroup: - controller: '' - username: '' - password: '' + controller: '{{ controller }}' + username: '{{ username }}' + password: '{{ password }}' description: Group created by my Secure My App UI. name: vs-msg-marketing tenant_ref: admin -''' +""" + RETURN = ''' obj: description: MicroServiceGroup (api/microservicegroup) object @@ -100,6 +112,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), created_by=dict(type='str',), description=dict(type='str',), name=dict(type='str', required=True), diff --git a/lib/ansible/modules/network/avi/avi_network.py b/lib/ansible/modules/network/avi/avi_network.py index 73abc06abd1..fab18d0bdc7 100644 --- a/lib/ansible/modules/network/avi/avi_network.py +++ b/lib/ansible/modules/network/avi/avi_network.py @@ -43,7 +43,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] cloud_ref: description: - It is a reference to an object of type cloud. @@ -118,6 +130,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), cloud_ref=dict(type='str',), configured_subnets=dict(type='list',), dhcp_enabled=dict(type='bool',), diff --git a/lib/ansible/modules/network/avi/avi_networkprofile.py b/lib/ansible/modules/network/avi/avi_networkprofile.py index 4da66e2b5c9..c6cf0ba6b78 100644 --- a/lib/ansible/modules/network/avi/avi_networkprofile.py +++ b/lib/ansible/modules/network/avi/avi_networkprofile.py @@ -43,7 +43,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] description: description: - User defined description for the object. @@ -68,13 +80,12 @@ extends_documentation_fragment: - avi ''' - -EXAMPLES = ''' +EXAMPLES = """ - name: Create a network profile for an UDP application avi_networkprofile: - controller: '' - username: '' - password: '' + controller: '{{ controller }}' + username: '{{ username }}' + password: '{{ password }}' name: System-UDP-Fast-Path profile: type: PROTOCOL_TYPE_UDP_FAST_PATH @@ -83,7 +94,8 @@ EXAMPLES = ''' session_idle_timeout: 10 snat: true tenant_ref: admin -''' +""" + RETURN = ''' obj: description: NetworkProfile (api/networkprofile) object @@ -103,6 +115,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), description=dict(type='str',), name=dict(type='str', required=True), profile=dict(type='dict', required=True), diff --git a/lib/ansible/modules/network/avi/avi_networksecuritypolicy.py b/lib/ansible/modules/network/avi/avi_networksecuritypolicy.py index a82e0d07180..a4cc012ebfd 100644 --- a/lib/ansible/modules/network/avi/avi_networksecuritypolicy.py +++ b/lib/ansible/modules/network/avi/avi_networksecuritypolicy.py @@ -43,7 +43,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] cloud_config_cksum: description: - Checksum of cloud configuration for network sec policy. @@ -73,13 +85,12 @@ extends_documentation_fragment: - avi ''' - -EXAMPLES = ''' +EXAMPLES = """ - name: Create a network security policy to block clients represented by ip group known_attackers avi_networksecuritypolicy: - controller: '' - username: '' - password: '' + controller: '{{ controller }}' + username: '{{ username }}' + password: '{{ password }}' name: vs-gurutest-ns rules: - action: NETWORK_SECURITY_POLICY_ACTION_TYPE_DENY @@ -94,7 +105,8 @@ EXAMPLES = ''' match_criteria: IS_IN name: Rule 1 tenant_ref: Demo -''' +""" + RETURN = ''' obj: description: NetworkSecurityPolicy (api/networksecuritypolicy) object @@ -114,6 +126,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), cloud_config_cksum=dict(type='str',), created_by=dict(type='str',), description=dict(type='str',), diff --git a/lib/ansible/modules/network/avi/avi_pkiprofile.py b/lib/ansible/modules/network/avi/avi_pkiprofile.py index d0be9d788f7..4918800a71d 100644 --- a/lib/ansible/modules/network/avi/avi_pkiprofile.py +++ b/lib/ansible/modules/network/avi/avi_pkiprofile.py @@ -43,7 +43,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] ca_certs: description: - List of certificate authorities (root and intermediate) trusted that is used for certificate validation. @@ -121,6 +133,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), ca_certs=dict(type='list',), created_by=dict(type='str',), crl_check=dict(type='bool',), diff --git a/lib/ansible/modules/network/avi/avi_pool.py b/lib/ansible/modules/network/avi/avi_pool.py index b88a178c79d..654066bf9b5 100644 --- a/lib/ansible/modules/network/avi/avi_pool.py +++ b/lib/ansible/modules/network/avi/avi_pool.py @@ -43,7 +43,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] a_pool: description: - Name of container cloud application that constitutes a pool in a a-b pool configuration, if different from vs app. @@ -83,6 +95,7 @@ options: - Allowed values are 1-5000. - Special values are 0 - 'automatic'. - Default value when not specified in API or module is interpreted by Avi Controller as 0. + - Units(MILLISECONDS). cloud_config_cksum: description: - Checksum of cloud configuration for pool. @@ -97,6 +110,7 @@ options: - Allowed values are 1-300. - Special values are 0 - 'immediate'. - Default value when not specified in API or module is interpreted by Avi Controller as 10. + - Units(MIN). created_by: description: - Creator name. @@ -124,7 +138,7 @@ options: external_autoscale_groups: description: - Names of external auto-scale groups for pool servers. - - Currently available only for aws. + - Currently available only for aws and azure. - Field introduced in 17.1.2. fail_action: description: @@ -135,13 +149,20 @@ options: - Periodicity of feedback for fewest tasks server selection algorithm. - Allowed values are 1-300. - Default value when not specified in API or module is interpreted by Avi Controller as 10. + - Units(SEC). graceful_disable_timeout: description: - Used to gracefully disable a server. - Virtual service waits for the specified time before terminating the existing connections to the servers that are disabled. - - Allowed values are 1-60. + - Allowed values are 1-7200. - Special values are 0 - 'immediate', -1 - 'infinite'. - Default value when not specified in API or module is interpreted by Avi Controller as 1. + - Units(MIN). + gslb_sp_enabled: + description: + - Indicates if the pool is a site-persistence pool. + - Field introduced in 17.2.1. + version_added: "2.5" health_monitor_refs: description: - Verify server health by applying one or more health monitors. @@ -184,8 +205,14 @@ options: description: - Criteria used as a key for determining the hash between the client and server. - Enum options - LB_ALGORITHM_CONSISTENT_HASH_SOURCE_IP_ADDRESS, LB_ALGORITHM_CONSISTENT_HASH_SOURCE_IP_ADDRESS_AND_PORT, - - LB_ALGORITHM_CONSISTENT_HASH_URI, LB_ALGORITHM_CONSISTENT_HASH_CUSTOM_HEADER. + - LB_ALGORITHM_CONSISTENT_HASH_URI, LB_ALGORITHM_CONSISTENT_HASH_CUSTOM_HEADER, LB_ALGORITHM_CONSISTENT_HASH_CUSTOM_STRING. - Default value when not specified in API or module is interpreted by Avi Controller as LB_ALGORITHM_CONSISTENT_HASH_SOURCE_IP_ADDRESS. + lookup_server_by_name: + description: + - Allow server lookup by name. + - Field introduced in 17.1.11,17.2.4. + - Default value when not specified in API or module is interpreted by Avi Controller as False. + version_added: "2.5" max_concurrent_connections_per_server: description: - The maximum number of concurrent connections allowed to each server within the pool. @@ -295,8 +322,7 @@ extends_documentation_fragment: - avi ''' - -EXAMPLES = ''' +EXAMPLES = """ - name: Create a Pool with two servers and HTTP monitor avi_pool: controller: 10.10.1.20 @@ -314,7 +340,22 @@ EXAMPLES = ''' - ip: addr: 10.10.2.21 type: V4 -''' + +- name: Patch pool with a single server using patch op and avi_credentials + avi_pool: + avi_api_update_method: patch + avi_api_patch_op: delete + avi_credentials: "{{avi_credentials}}" + name: test-pool + servers: + - ip: + addr: 10.90.64.13 + type: 'V4' + register: pool + when: + - state | default("present") == "present" +""" + RETURN = ''' obj: description: Pool (api/pool) object @@ -334,6 +375,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), a_pool=dict(type='str',), ab_pool=dict(type='dict',), ab_priority=dict(type='int',), @@ -357,6 +401,7 @@ def main(): fail_action=dict(type='dict',), fewest_tasks_feedback_delay=dict(type='int',), graceful_disable_timeout=dict(type='int',), + gslb_sp_enabled=dict(type='bool',), health_monitor_refs=dict(type='list',), host_check_enabled=dict(type='bool',), inline_health_monitor=dict(type='bool',), @@ -365,6 +410,7 @@ def main(): lb_algorithm_consistent_hash_hdr=dict(type='str',), lb_algorithm_core_nonaffinity=dict(type='int',), lb_algorithm_hash=dict(type='str',), + lookup_server_by_name=dict(type='bool',), max_concurrent_connections_per_server=dict(type='int',), max_conn_rate_per_server=dict(type='dict',), name=dict(type='str', required=True), diff --git a/lib/ansible/modules/network/avi/avi_poolgroup.py b/lib/ansible/modules/network/avi/avi_poolgroup.py index 2a7af330c09..1c5041a9c0d 100644 --- a/lib/ansible/modules/network/avi/avi_poolgroup.py +++ b/lib/ansible/modules/network/avi/avi_poolgroup.py @@ -43,7 +43,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] cloud_config_cksum: description: - Checksum of cloud configuration for poolgroup. @@ -65,6 +77,12 @@ options: description: - Enable an action - close connection, http redirect, or local http response - when a pool group failure happens. - By default, a connection will be closed, in case the pool group experiences a failure. + implicit_priority_labels: + description: + - Whether an implicit set of priority labels is generated. + - Field introduced in 17.1.9,17.2.3. + - Default value when not specified in API or module is interpreted by Avi Controller as False. + version_added: "2.5" members: description: - List of pool group members object of type poolgroupmember. @@ -125,12 +143,16 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), cloud_config_cksum=dict(type='str',), cloud_ref=dict(type='str',), created_by=dict(type='str',), deployment_policy_ref=dict(type='str',), description=dict(type='str',), fail_action=dict(type='dict',), + implicit_priority_labels=dict(type='bool',), members=dict(type='list',), min_servers=dict(type='int',), name=dict(type='str', required=True), diff --git a/lib/ansible/modules/network/avi/avi_poolgroupdeploymentpolicy.py b/lib/ansible/modules/network/avi/avi_poolgroupdeploymentpolicy.py index 5c07eac57a4..e6b15036796 100644 --- a/lib/ansible/modules/network/avi/avi_poolgroupdeploymentpolicy.py +++ b/lib/ansible/modules/network/avi/avi_poolgroupdeploymentpolicy.py @@ -42,7 +42,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] auto_disable_old_prod_pools: description: - It will automatically disable old production pools once there is a new production candidate. @@ -58,6 +70,7 @@ options: - Duration of evaluation period for automatic deployment. - Allowed values are 60-86400. - Default value when not specified in API or module is interpreted by Avi Controller as 300. + - Units(SEC). name: description: - The name of the pool group deployment policy. @@ -75,6 +88,7 @@ options: - Target traffic ratio before pool is made production. - Allowed values are 1-100. - Default value when not specified in API or module is interpreted by Avi Controller as 100. + - Units(RATIO). tenant_ref: description: - It is a reference to an object of type tenant. @@ -129,6 +143,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), auto_disable_old_prod_pools=dict(type='bool',), cloud_ref=dict(type='str',), description=dict(type='str',), diff --git a/lib/ansible/modules/network/avi/avi_prioritylabels.py b/lib/ansible/modules/network/avi/avi_prioritylabels.py index 8a1cd771a35..bb7aa684041 100644 --- a/lib/ansible/modules/network/avi/avi_prioritylabels.py +++ b/lib/ansible/modules/network/avi/avi_prioritylabels.py @@ -42,7 +42,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] cloud_ref: description: - It is a reference to an object of type cloud. @@ -98,6 +110,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), cloud_ref=dict(type='str',), description=dict(type='str',), equivalent_labels=dict(type='list',), diff --git a/lib/ansible/modules/network/avi/avi_role.py b/lib/ansible/modules/network/avi/avi_role.py index 29bac33b11c..02df64cfa10 100644 --- a/lib/ansible/modules/network/avi/avi_role.py +++ b/lib/ansible/modules/network/avi/avi_role.py @@ -43,7 +43,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] name: description: - Name of the object. @@ -93,6 +105,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), name=dict(type='str', required=True), privileges=dict(type='list',), tenant_ref=dict(type='str',), diff --git a/lib/ansible/modules/network/avi/avi_scheduler.py b/lib/ansible/modules/network/avi/avi_scheduler.py index 0bde8a71b1e..0d920e9a7ba 100644 --- a/lib/ansible/modules/network/avi/avi_scheduler.py +++ b/lib/ansible/modules/network/avi/avi_scheduler.py @@ -42,7 +42,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] backup_config_ref: description: - Backup configuration to be executed by this scheduler. @@ -125,6 +137,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), backup_config_ref=dict(type='str',), enabled=dict(type='bool',), end_date_time=dict(type='str',), diff --git a/lib/ansible/modules/network/avi/avi_seproperties.py b/lib/ansible/modules/network/avi/avi_seproperties.py index 9cff4f08b79..08b8e4ff084 100644 --- a/lib/ansible/modules/network/avi/avi_seproperties.py +++ b/lib/ansible/modules/network/avi/avi_seproperties.py @@ -43,7 +43,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] se_agent_properties: description: - Seagentproperties settings for seproperties. @@ -93,6 +105,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), se_agent_properties=dict(type='dict',), se_bootup_properties=dict(type='dict',), se_runtime_properties=dict(type='dict',), diff --git a/lib/ansible/modules/network/avi/avi_serverautoscalepolicy.py b/lib/ansible/modules/network/avi/avi_serverautoscalepolicy.py index cfe51db1eb5..5d9f8899e3e 100644 --- a/lib/ansible/modules/network/avi/avi_serverautoscalepolicy.py +++ b/lib/ansible/modules/network/avi/avi_serverautoscalepolicy.py @@ -42,7 +42,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] description: description: - User defined description for the object. @@ -92,6 +104,7 @@ options: description: - Cooldown period during which no new scalein is triggered to allow previous scalein to successfully complete. - Default value when not specified in API or module is interpreted by Avi Controller as 300. + - Units(SEC). scaleout_alertconfig_refs: description: - Trigger scaleout when alerts due to any of these alert configurations are raised. @@ -100,6 +113,7 @@ options: description: - Cooldown period during which no new scaleout is triggered to allow previous scaleout to successfully complete. - Default value when not specified in API or module is interpreted by Avi Controller as 300. + - Units(SEC). tenant_ref: description: - It is a reference to an object of type tenant. @@ -146,6 +160,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), description=dict(type='str',), intelligent_autoscale=dict(type='bool',), intelligent_scalein_margin=dict(type='int',), diff --git a/lib/ansible/modules/network/avi/avi_serviceengine.py b/lib/ansible/modules/network/avi/avi_serviceengine.py index 8ac4b9323c3..7d3a05db052 100644 --- a/lib/ansible/modules/network/avi/avi_serviceengine.py +++ b/lib/ansible/modules/network/avi/avi_serviceengine.py @@ -42,7 +42,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] availability_zone: description: - Availability_zone of serviceengine. @@ -70,7 +82,7 @@ options: enable_state: description: - Inorder to disable se set this field appropriately. - - Enum options - SE_STATE_ENABLED, SE_STATE_DISABLED_FOR_PLACEMENT, SE_STATE_DISABLED. + - Enum options - SE_STATE_ENABLED, SE_STATE_DISABLED_FOR_PLACEMENT, SE_STATE_DISABLED, SE_STATE_DISABLED_FORCE. - Default value when not specified in API or module is interpreted by Avi Controller as SE_STATE_ENABLED. flavor: description: @@ -136,6 +148,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), availability_zone=dict(type='str',), cloud_ref=dict(type='str',), container_mode=dict(type='bool',), diff --git a/lib/ansible/modules/network/avi/avi_serviceenginegroup.py b/lib/ansible/modules/network/avi/avi_serviceenginegroup.py index 01499e6ef42..f1f7adc63ef 100644 --- a/lib/ansible/modules/network/avi/avi_serviceenginegroup.py +++ b/lib/ansible/modules/network/avi/avi_serviceenginegroup.py @@ -43,7 +43,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] active_standby: description: - Service engines in active/standby mode for ha failover. @@ -61,11 +73,17 @@ options: - In compact placement, virtual services are placed on existing ses until max_vs_per_se limit is reached. - Enum options - PLACEMENT_ALGO_PACKED, PLACEMENT_ALGO_DISTRIBUTED. - Default value when not specified in API or module is interpreted by Avi Controller as PLACEMENT_ALGO_PACKED. + allow_burst: + description: + - Allow ses to be created using burst license. + - Field introduced in 17.2.5. + version_added: "2.5" archive_shm_limit: description: - Amount of se memory in gb until which shared memory is collected in core archive. - Field introduced in 17.1.3. - Default value when not specified in API or module is interpreted by Avi Controller as 8. + - Units(GB). async_ssl: description: - Ssl handshakes will be handled by dedicated ssl threads. @@ -82,10 +100,22 @@ options: - If set, virtual services will be automatically migrated when load on an se is less than minimum or more than maximum thresholds. - Only alerts are generated when the auto_rebalance is not set. - Default value when not specified in API or module is interpreted by Avi Controller as False. + auto_rebalance_capacity_per_se: + description: + - Capacities of se for auto rebalance for each criteria. + - Field introduced in 17.2.4. + version_added: "2.5" + auto_rebalance_criteria: + description: + - Set of criteria for se auto rebalance. + - Enum options - SE_AUTO_REBALANCE_CPU, SE_AUTO_REBALANCE_PPS, SE_AUTO_REBALANCE_MBPS, SE_AUTO_REBALANCE_OPEN_CONNS. + - Field introduced in 17.2.3. + version_added: "2.5" auto_rebalance_interval: description: - Frequency of rebalance, if 'auto rebalance' is enabled. - Default value when not specified in API or module is interpreted by Avi Controller as 300. + - Units(SEC). auto_redistribute_active_standby_load: description: - Redistribution of virtual services from the takeover se to the replacement se can cause momentary traffic loss. @@ -104,6 +134,7 @@ options: - This will come at the expense of memory used for http in-memory cache. - Allowed values are 10-90. - Default value when not specified in API or module is interpreted by Avi Controller as 50. + - Units(PERCENT). cpu_reserve: description: - Boolean flag to set cpu_reserve. @@ -133,10 +164,31 @@ options: description: description: - User defined description for the object. + disable_csum_offloads: + description: + - Stop using tcp/udp and ip checksum offload features of nics. + - Field introduced in 17.1.14, 17.2.5. + - Default value when not specified in API or module is interpreted by Avi Controller as False. + version_added: "2.5" + disable_gro: + description: + - Disable generic receive offload (gro) in dpdk poll-mode driver packet receive path. + - Gro is on by default on nics that do not support lro (large receive offload) or do not gain performance boost from lro. + - Field introduced in 17.2.5. + - Default value when not specified in API or module is interpreted by Avi Controller as False. + version_added: "2.5" + disable_tso: + description: + - Disable tcp segmentation offload (tso) in dpdk poll-mode driver packet transmit path. + - Tso is on by default on nics that support it. + - Field introduced in 17.2.5. + - Default value when not specified in API or module is interpreted by Avi Controller as False. + version_added: "2.5" disk_per_se: description: - Amount of disk space for each of the service engine virtual machines. - Default value when not specified in API or module is interpreted by Avi Controller as 10. + - Units(GB). distribute_load_active_standby: description: - Use both the active and standby service engines for virtual service placement in the legacy active standby ha mode. @@ -163,6 +215,7 @@ options: - Extra config memory to support large geo db configuration. - Field introduced in 17.1.1. - Default value when not specified in API or module is interpreted by Avi Controller as 0. + - Units(MB). floating_intf_ip: description: - If serviceenginegroup is configured for legacy 1+1 active standby ha mode, floating ip's will be advertised only by the active se in the pair. @@ -173,6 +226,12 @@ options: - If serviceenginegroup is configured for legacy 1+1 active standby ha mode, floating ip's will be advertised only by the active se in the pair. - Virtual services in this group must be disabled/enabled for any changes to the floating ip's to take effect. - Only active se hosting vs tagged with active standby se 2 tag will advertise this floating ip when manual load distribution is enabled. + flow_table_new_syn_max_entries: + description: + - Maximum number of flow table entries that have not completed tcp three-way handshake yet. + - Field introduced in 17.2.5. + - Default value when not specified in API or module is interpreted by Avi Controller as 0. + version_added: "2.5" ha_mode: description: - High availability mode for all the virtual services using this service engine group. @@ -199,10 +258,38 @@ options: description: - Value of a (key, value) pair identifying a label for a set of nodes usually in container clouds. - Needs to be specified together with host_attribute_key. + host_gateway_monitor: + description: + - Enable the host gateway monitor when service engine is deployed as docker container. + - Disabled by default. + - Field introduced in 17.2.4. + - Default value when not specified in API or module is interpreted by Avi Controller as False. + version_added: "2.5" hypervisor: description: - Override default hypervisor. - Enum options - DEFAULT, VMWARE_ESX, KVM, VMWARE_VSAN, XEN. + ignore_rtt_threshold: + description: + - Ignore rtt samples if it is above threshold. + - Field introduced in 17.1.6,17.2.2. + - Default value when not specified in API or module is interpreted by Avi Controller as 5000. + - Units(MILLISECONDS). + version_added: "2.5" + ingress_access_data: + description: + - Program se security group ingress rules to allow vip data access from remote cidr type. + - Enum options - SG_INGRESS_ACCESS_NONE, SG_INGRESS_ACCESS_ALL, SG_INGRESS_ACCESS_VPC. + - Field introduced in 17.1.5. + - Default value when not specified in API or module is interpreted by Avi Controller as SG_INGRESS_ACCESS_ALL. + version_added: "2.5" + ingress_access_mgmt: + description: + - Program se security group ingress rules to allow ssh/icmp management access from remote cidr type. + - Enum options - SG_INGRESS_ACCESS_NONE, SG_INGRESS_ACCESS_ALL, SG_INGRESS_ACCESS_VPC. + - Field introduced in 17.1.5. + - Default value when not specified in API or module is interpreted by Avi Controller as SG_INGRESS_ACCESS_ALL. + version_added: "2.5" instance_flavor: description: - Instance/flavor type for se instance. @@ -213,17 +300,32 @@ options: description: - Select core with least load for new flow. - Default value when not specified in API or module is interpreted by Avi Controller as True. + license_tier: + description: + - Specifies the license tier which would be used. + - This field by default inherits the value from cloud. + - Enum options - ENTERPRISE_16, ENTERPRISE_18. + - Field introduced in 17.2.5. + version_added: "2.5" + license_type: + description: + - If no license type is specified then default license enforcement for the cloud type is chosen. + - Enum options - LIC_BACKEND_SERVERS, LIC_SOCKETS, LIC_CORES, LIC_HOSTS, LIC_SE_BANDWIDTH. + - Field introduced in 17.2.5. + version_added: "2.5" log_disksz: description: - Maximum disk capacity (in mb) to be allocated to an se. - This is exclusively used for debug and log data. - Default value when not specified in API or module is interpreted by Avi Controller as 10000. + - Units(MB). max_cpu_usage: description: - When cpu usage on an se exceeds this threshold, virtual services hosted on this se may be rebalanced to other ses to reduce load. - A new se may be created as part of this process. - Allowed values are 40-90. - Default value when not specified in API or module is interpreted by Avi Controller as 80. + - Units(PERCENT). max_scaleout_per_vs: description: - Maximum number of active service engines for the virtual service. @@ -261,6 +363,7 @@ options: - After consolidation, unused service engines may then be eligible for deletion. - Allowed values are 20-60. - Default value when not specified in API or module is interpreted by Avi Controller as 30. + - Units(PERCENT). min_scaleout_per_vs: description: - Minimum number of active service engines for the virtual service. @@ -277,6 +380,7 @@ options: - Set it to zero (0) to disable throttling. - Field introduced in 17.1.3. - Default value when not specified in API or module is interpreted by Avi Controller as 100. + - Units(PER_SECOND). num_flow_cores_sum_changes_to_ignore: description: - Number of changes in num flow cores sum to ignore. @@ -311,6 +415,12 @@ options: realtime_se_metrics: description: - Enable or disable real time se metrics. + se_bandwidth_type: + description: + - Select the se bandwidth for the bandwidth license. + - Enum options - SE_BANDWIDTH_UNLIMITED, SE_BANDWIDTH_25M, SE_BANDWIDTH_200M, SE_BANDWIDTH_1000M, SE_BANDWIDTH_10000M. + - Field introduced in 17.2.5. + version_added: "2.5" se_deprovision_delay: description: - Duration to preserve unused service engine virtual machines before deleting them. @@ -318,6 +428,7 @@ options: - If this value is set to 0, controller will never delete any ses and administrator has to manually cleanup unused ses. - Allowed values are 0-525600. - Default value when not specified in API or module is interpreted by Avi Controller as 120. + - Units(MIN). se_dos_profile: description: - Dosthresholdprofile settings for serviceenginegroup. @@ -331,12 +442,31 @@ options: description: - Prefix to use for virtual machine name of service engines. - Default value when not specified in API or module is interpreted by Avi Controller as Avi. + se_probe_port: + description: + - Tcp port on se where echo service will be run. + - Field introduced in 17.2.2. + - Default value when not specified in API or module is interpreted by Avi Controller as 7. + version_added: "2.5" se_remote_punt_udp_port: description: - Udp port for punted packets in docker bridge mode. - Field introduced in 17.1.2. - Default value when not specified in API or module is interpreted by Avi Controller as 1501. version_added: "2.4" + se_sb_dedicated_core: + description: + - Sideband traffic will be handled by a dedicated core. + - Field introduced in 16.5.2, 17.1.9, 17.2.3. + - Default value when not specified in API or module is interpreted by Avi Controller as False. + version_added: "2.5" + se_sb_threads: + description: + - Number of sideband threads per se. + - Allowed values are 1-128. + - Field introduced in 16.5.2, 17.1.9, 17.2.3. + - Default value when not specified in API or module is interpreted by Avi Controller as 1. + version_added: "2.5" se_thread_multiplier: description: - Multiplier for se threads based on vcpu. @@ -344,8 +474,7 @@ options: - Default value when not specified in API or module is interpreted by Avi Controller as 1. se_tunnel_mode: description: - - Determines if dsr from secondary se is active or not. - - 0 automatically determine based on hypervisor type. + - Determines if dsr from secondary se is active or not 0 automatically determine based on hypervisor type. - 1 disable dsr unconditionally. - ~[0,1] enable dsr unconditionally. - Field introduced in 17.1.1. @@ -357,8 +486,7 @@ options: - Default value when not specified in API or module is interpreted by Avi Controller as 1550. se_udp_encap_ipc: description: - - Determines if se-se ipc messages are encapsulated in an udp header. - - 0 automatically determine based on hypervisor type. + - Determines if se-se ipc messages are encapsulated in an udp header 0 automatically determine based on hypervisor type. - 1 use udp encap unconditionally. - ~[0,1] don't use udp encap. - Field introduced in 17.1.2. @@ -388,6 +516,7 @@ options: - Set it to zero (0) to disable throttling. - Field introduced in 17.1.3. - Default value when not specified in API or module is interpreted by Avi Controller as 100. + - Units(PER_SECOND). tenant_ref: description: - It is a reference to an object of type tenant. @@ -399,6 +528,7 @@ options: - Set it to zero (0) to disable throttling. - Field introduced in 17.1.3. - Default value when not specified in API or module is interpreted by Avi Controller as 100. + - Units(PER_SECOND). url: description: - Avi controller URL of the object. @@ -438,14 +568,35 @@ options: description: - Time to wait for the scaled in se to drain existing flows before marking the scalein done. - Default value when not specified in API or module is interpreted by Avi Controller as 30. + - Units(SEC). vs_scalein_timeout_for_upgrade: description: - During se upgrade, time to wait for the scaled-in se to drain existing flows before marking the scalein done. - Default value when not specified in API or module is interpreted by Avi Controller as 30. + - Units(SEC). vs_scaleout_timeout: description: - Time to wait for the scaled out se to become ready before marking the scaleout done. - Default value when not specified in API or module is interpreted by Avi Controller as 30. + - Units(SEC). + vss_placement: + description: + - If set, virtual services will be placed on only a subset of the cores of an se. + - Field introduced in 17.2.5. + version_added: "2.5" + waf_mempool: + description: + - Enable memory pool for waf. + - Field introduced in 17.2.3. + - Default value when not specified in API or module is interpreted by Avi Controller as True. + version_added: "2.5" + waf_mempool_size: + description: + - Memory pool size used for waf. + - Field introduced in 17.2.3. + - Default value when not specified in API or module is interpreted by Avi Controller as 64. + - Units(KB). + version_added: "2.5" extends_documentation_fragment: - avi ''' @@ -479,14 +630,20 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), active_standby=dict(type='bool',), advertise_backend_networks=dict(type='bool',), aggressive_failure_detection=dict(type='bool',), algo=dict(type='str',), + allow_burst=dict(type='bool',), archive_shm_limit=dict(type='int',), async_ssl=dict(type='bool',), async_ssl_threads=dict(type='int',), auto_rebalance=dict(type='bool',), + auto_rebalance_capacity_per_se=dict(type='list',), + auto_rebalance_criteria=dict(type='list',), auto_rebalance_interval=dict(type='int',), auto_redistribute_active_standby_load=dict(type='bool',), buffer_se=dict(type='int',), @@ -499,6 +656,9 @@ def main(): custom_tag=dict(type='list',), dedicated_dispatcher_core=dict(type='bool',), description=dict(type='str',), + disable_csum_offloads=dict(type='bool',), + disable_gro=dict(type='bool',), + disable_tso=dict(type='bool',), disk_per_se=dict(type='int',), distribute_load_active_standby=dict(type='bool',), enable_routing=dict(type='bool',), @@ -508,15 +668,22 @@ def main(): extra_shared_config_memory=dict(type='int',), floating_intf_ip=dict(type='list',), floating_intf_ip_se_2=dict(type='list',), + flow_table_new_syn_max_entries=dict(type='int',), ha_mode=dict(type='str',), hardwaresecuritymodulegroup_ref=dict(type='str',), hm_on_standby=dict(type='bool',), host_attribute_key=dict(type='str',), host_attribute_value=dict(type='str',), + host_gateway_monitor=dict(type='bool',), hypervisor=dict(type='str',), + ignore_rtt_threshold=dict(type='int',), + ingress_access_data=dict(type='str',), + ingress_access_mgmt=dict(type='str',), instance_flavor=dict(type='str',), iptables=dict(type='list',), least_load_core_selection=dict(type='bool',), + license_tier=dict(type='str',), + license_type=dict(type='str',), log_disksz=dict(type='int',), max_cpu_usage=dict(type='int',), max_scaleout_per_vs=dict(type='int',), @@ -539,11 +706,15 @@ def main(): per_app=dict(type='bool',), placement_mode=dict(type='str',), realtime_se_metrics=dict(type='dict',), + se_bandwidth_type=dict(type='str',), se_deprovision_delay=dict(type='int',), se_dos_profile=dict(type='dict',), se_ipc_udp_port=dict(type='int',), se_name_prefix=dict(type='str',), + se_probe_port=dict(type='int',), se_remote_punt_udp_port=dict(type='int',), + se_sb_dedicated_core=dict(type='bool',), + se_sb_threads=dict(type='int',), se_thread_multiplier=dict(type='int',), se_tunnel_mode=dict(type='int',), se_tunnel_udp_port=dict(type='int',), @@ -567,6 +738,9 @@ def main(): vs_scalein_timeout=dict(type='int',), vs_scalein_timeout_for_upgrade=dict(type='int',), vs_scaleout_timeout=dict(type='int',), + vss_placement=dict(type='dict',), + waf_mempool=dict(type='bool',), + waf_mempool_size=dict(type='int',), ) argument_specs.update(avi_common_argument_spec()) module = AnsibleModule( diff --git a/lib/ansible/modules/network/avi/avi_snmptrapprofile.py b/lib/ansible/modules/network/avi/avi_snmptrapprofile.py index 7f79411fc0a..600f4b1499a 100644 --- a/lib/ansible/modules/network/avi/avi_snmptrapprofile.py +++ b/lib/ansible/modules/network/avi/avi_snmptrapprofile.py @@ -42,7 +42,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] name: description: - A user-friendly name of the snmp trap configuration. @@ -92,6 +104,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), name=dict(type='str', required=True), tenant_ref=dict(type='str',), trap_servers=dict(type='list',), diff --git a/lib/ansible/modules/network/avi/avi_sslkeyandcertificate.py b/lib/ansible/modules/network/avi/avi_sslkeyandcertificate.py index 681417d9764..02611a2e6ce 100644 --- a/lib/ansible/modules/network/avi/avi_sslkeyandcertificate.py +++ b/lib/ansible/modules/network/avi/avi_sslkeyandcertificate.py @@ -43,7 +43,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] ca_certs: description: - Ca certificates in certificate chain. @@ -102,8 +114,7 @@ extends_documentation_fragment: - avi ''' - -EXAMPLES = ''' +EXAMPLES = """ - name: Create a SSL Key and Certificate avi_sslkeyandcertificate: controller: 10.10.27.90 @@ -121,7 +132,8 @@ EXAMPLES = ''' -----END CERTIFICATE----- type: SSL_CERTIFICATE_TYPE_VIRTUALSERVICE name: MyTestCert -''' +""" + RETURN = ''' obj: description: SSLKeyAndCertificate (api/sslkeyandcertificate) object @@ -141,6 +153,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), ca_certs=dict(type='list',), certificate=dict(type='dict', required=True), certificate_management_profile_ref=dict(type='str',), diff --git a/lib/ansible/modules/network/avi/avi_sslprofile.py b/lib/ansible/modules/network/avi/avi_sslprofile.py index d0d7fabd4ca..2b85bc8b147 100644 --- a/lib/ansible/modules/network/avi/avi_sslprofile.py +++ b/lib/ansible/modules/network/avi/avi_sslprofile.py @@ -43,7 +43,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] accepted_ciphers: description: - Ciphers suites represented as defined by U(http://www.openssl.org/docs/apps/ciphers.html). @@ -89,6 +101,7 @@ options: description: - The amount of time before an ssl session expires. - Default value when not specified in API or module is interpreted by Avi Controller as 86400. + - Units(SEC). tags: description: - List of tag. @@ -105,13 +118,12 @@ extends_documentation_fragment: - avi ''' - -EXAMPLES = ''' +EXAMPLES = """ - name: Create SSL profile with list of allowed ciphers avi_sslprofile: - controller: '' - username: '' - password: '' + controller: '{{ controller }}' + username: '{{ username }}' + password: '{{ password }}' accepted_ciphers: > ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA: ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA384: @@ -149,7 +161,8 @@ EXAMPLES = ''' performance_rating: SSL_SCORE_EXCELLENT security_score: '100.0' tenant_ref: Demo -''' +""" + RETURN = ''' obj: description: SSLProfile (api/sslprofile) object @@ -169,6 +182,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), accepted_ciphers=dict(type='str',), accepted_versions=dict(type='list',), cipher_enums=dict(type='list',), diff --git a/lib/ansible/modules/network/avi/avi_stringgroup.py b/lib/ansible/modules/network/avi/avi_stringgroup.py index b57a3d311f7..b9125b8c3e0 100644 --- a/lib/ansible/modules/network/avi/avi_stringgroup.py +++ b/lib/ansible/modules/network/avi/avi_stringgroup.py @@ -43,7 +43,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] description: description: - User defined description for the object. @@ -73,13 +85,12 @@ extends_documentation_fragment: - avi ''' - -EXAMPLES = ''' +EXAMPLES = """ - name: Create a string group configuration avi_stringgroup: - controller: '' - password: '' - username: '' + controller: '{{ controller }}' + password: '{{ password }}' + username: '{{ username }}' kv: - key: text/html - key: text/xml @@ -93,7 +104,8 @@ EXAMPLES = ''' name: System-Compressible-Content-Types tenant_ref: admin type: SG_TYPE_STRING -''' +""" + RETURN = ''' obj: description: StringGroup (api/stringgroup) object @@ -113,6 +125,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), description=dict(type='str',), kv=dict(type='list',), name=dict(type='str', required=True), diff --git a/lib/ansible/modules/network/avi/avi_systemconfiguration.py b/lib/ansible/modules/network/avi/avi_systemconfiguration.py index fd56048a87f..c94be214119 100644 --- a/lib/ansible/modules/network/avi/avi_systemconfiguration.py +++ b/lib/ansible/modules/network/avi/avi_systemconfiguration.py @@ -43,10 +43,29 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] admin_auth_configuration: description: - Adminauthconfiguration settings for systemconfiguration. + default_license_tier: + description: + - Specifies the default license tier which would be used by new clouds. + - Enum options - ENTERPRISE_16, ENTERPRISE_18. + - Field introduced in 17.2.5. + - Default value when not specified in API or module is interpreted by Avi Controller as ENTERPRISE_18. + version_added: "2.5" dns_configuration: description: - Dnsconfiguration settings for systemconfiguration. @@ -133,7 +152,11 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), admin_auth_configuration=dict(type='dict',), + default_license_tier=dict(type='str',), dns_configuration=dict(type='dict',), dns_virtualservice_refs=dict(type='list',), docker_mode=dict(type='bool',), diff --git a/lib/ansible/modules/network/avi/avi_tenant.py b/lib/ansible/modules/network/avi/avi_tenant.py index 49a1ecbf376..54e9a84cb89 100644 --- a/lib/ansible/modules/network/avi/avi_tenant.py +++ b/lib/ansible/modules/network/avi/avi_tenant.py @@ -43,7 +43,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] config_settings: description: - Tenantconfiguration settings for tenant. @@ -71,13 +83,12 @@ extends_documentation_fragment: - avi ''' - -EXAMPLES = ''' +EXAMPLES = """ - name: Create Tenant using Service Engines in provider mode avi_tenant: - controller: '' - password: '' - username: '' + controller: '{{ controller }}' + password: '{{ password }}' + username: '{{ username }}' config_settings: se_in_provider_context: false tenant_access_to_provider_se: true @@ -85,7 +96,8 @@ EXAMPLES = ''' description: VCenter, Open Stack, AWS Virtual services local: true name: Demo -''' +""" + RETURN = ''' obj: description: Tenant (api/tenant) object @@ -105,6 +117,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), config_settings=dict(type='dict',), created_by=dict(type='str',), description=dict(type='str',), diff --git a/lib/ansible/modules/network/avi/avi_trafficcloneprofile.py b/lib/ansible/modules/network/avi/avi_trafficcloneprofile.py index afd67e987a1..5d4edc3fb82 100644 --- a/lib/ansible/modules/network/avi/avi_trafficcloneprofile.py +++ b/lib/ansible/modules/network/avi/avi_trafficcloneprofile.py @@ -42,7 +42,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] clone_servers: description: - Field introduced in 17.1.1. @@ -104,6 +116,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), clone_servers=dict(type='list',), cloud_ref=dict(type='str',), name=dict(type='str', required=True), diff --git a/lib/ansible/modules/network/avi/avi_useraccountprofile.py b/lib/ansible/modules/network/avi/avi_useraccountprofile.py index 8c81751601d..6cf64bcaf4e 100644 --- a/lib/ansible/modules/network/avi/avi_useraccountprofile.py +++ b/lib/ansible/modules/network/avi/avi_useraccountprofile.py @@ -43,17 +43,31 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] account_lock_timeout: description: - Lock timeout period (in minutes). - Default is 30 minutes. - Default value when not specified in API or module is interpreted by Avi Controller as 30. + - Units(MIN). credentials_timeout_threshold: description: - The time period after which credentials expire. - Default is 180 days. - Default value when not specified in API or module is interpreted by Avi Controller as 180. + - Units(DAYS). max_concurrent_sessions: description: - Maximum number of concurrent sessions allowed. @@ -112,6 +126,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), account_lock_timeout=dict(type='int',), credentials_timeout_threshold=dict(type='int',), max_concurrent_sessions=dict(type='int',), diff --git a/lib/ansible/modules/network/avi/avi_virtualservice.py b/lib/ansible/modules/network/avi/avi_virtualservice.py index 331d48a93c8..80f8de9e6fb 100644 --- a/lib/ansible/modules/network/avi/avi_virtualservice.py +++ b/lib/ansible/modules/network/avi/avi_virtualservice.py @@ -43,7 +43,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] active_standby_se_tag: description: - This configuration only applies if the virtualservice is in legacy active standby ha mode and load distribution among active standby is enabled. @@ -92,6 +104,12 @@ options: client_auth: description: - Http authentication configuration for protected resources. + close_client_conn_on_config_update: + description: + - Close client connection on vs config update. + - Field introduced in 17.2.4. + - Default value when not specified in API or module is interpreted by Avi Controller as False. + version_added: "2.5" cloud_config_cksum: description: - Checksum of cloud configuration for vs. @@ -102,7 +120,7 @@ options: cloud_type: description: - Enum options - cloud_none, cloud_vcenter, cloud_openstack, cloud_aws, cloud_vca, cloud_apic, cloud_mesos, cloud_linuxserver, cloud_docker_ucp, - - cloud_rancher, cloud_oshift_k8s. + - cloud_rancher, cloud_oshift_k8s, cloud_azure. - Default value when not specified in API or module is interpreted by Avi Controller as CLOUD_NONE. connections_rate_limit: description: @@ -164,6 +182,12 @@ options: description: - Enable or disable the virtual service. - Default value when not specified in API or module is interpreted by Avi Controller as True. + error_page_profile_ref: + description: + - Error page profile to be used for this virtualservice.this profile is used to send the custom error page to the client generated by the proxy. + - It is a reference to an object of type errorpageprofile. + - Field introduced in 17.2.4. + version_added: "2.5" floating_ip: description: - Floating ip to associate with this virtual service. @@ -182,7 +206,7 @@ options: flow_label_type: description: - Criteria for flow labelling. - - Enum options - NO_LABEL, SERVICE_LABEL. + - Enum options - NO_LABEL, APPLICATION_LABEL, SERVICE_LABEL. - Default value when not specified in API or module is interpreted by Avi Controller as NO_LABEL. fqdn: description: @@ -206,6 +230,7 @@ options: ipam_network_subnet: description: - Subnet and/or network for allocating virtualservice ip by ipam provider module. + - Field deprecated in 17.1.1. limit_doser: description: - Limit potential dos attackers who exceed max_cps_per_client significantly to a fraction of max_cps_per_client for a while. @@ -298,6 +323,14 @@ options: snat_ip: description: - Nat'ted floating source ip address(es) for upstream connection to servers. + sp_pool_refs: + description: + - Gslb pools used to manage site-persistence functionality. + - Each site-persistence pool contains the virtualservices in all the other sites, that is auto-generated by the gslb manager. + - This is a read-only field for the user. + - It is a reference to an object of type pool. + - Field introduced in 17.2.2. + version_added: "2.5" ssl_key_and_certificate_refs: description: - Select or create one or two certificates, ec and/or rsa, that will be presented to ssl/tls terminated connections. @@ -345,6 +378,14 @@ options: description: - Use bridge ip as vip on each host in mesos deployments. - Default value when not specified in API or module is interpreted by Avi Controller as False. + use_vip_as_snat: + description: + - Use the virtual ip as the snat ip for health monitoring and sending traffic to the backend servers instead of the service engine interface ip. + - The caveat of enabling this option is that the virtualservice cannot be configued in an active-active ha mode. + - Dns based multi vip solution has to be used for ha & non-disruptive upgrade purposes. + - Field introduced in 17.1.9,17.2.3. + - Default value when not specified in API or module is interpreted by Avi Controller as False. + version_added: "2.5" uuid: description: - Uuid of the virtualservice. @@ -375,17 +416,23 @@ options: - It is a reference to an object of type vsvip. - Field introduced in 17.1.1. version_added: "2.4" + waf_policy_ref: + description: + - Waf policy for the virtual service. + - It is a reference to an object of type wafpolicy. + - Field introduced in 17.2.1. + version_added: "2.5" weight: description: - The quality of service weight to assign to traffic transmitted from this virtual service. - A higher weight will prioritize traffic versus other virtual services sharing the same service engines. + - Allowed values are 1-128. - Default value when not specified in API or module is interpreted by Avi Controller as 1. extends_documentation_fragment: - avi ''' - -EXAMPLES = ''' +EXAMPLES = """ - name: Create SSL Virtual Service using Pool testpool2 avi_virtualservice: controller: 10.10.27.90 @@ -407,7 +454,8 @@ EXAMPLES = ''' addr: 10.90.131.103 type: V4 pool_ref: '/api/pool?name=testpool2' -''' +""" + RETURN = ''' obj: description: VirtualService (api/virtualservice) object @@ -427,6 +475,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), active_standby_se_tag=dict(type='str',), analytics_policy=dict(type='dict',), analytics_profile_ref=dict(type='str',), @@ -437,6 +488,7 @@ def main(): avi_allocated_fip=dict(type='bool',), avi_allocated_vip=dict(type='bool',), client_auth=dict(type='dict',), + close_client_conn_on_config_update=dict(type='bool',), cloud_config_cksum=dict(type='str',), cloud_ref=dict(type='str',), cloud_type=dict(type='str',), @@ -455,6 +507,7 @@ def main(): enable_rhi=dict(type='bool',), enable_rhi_snat=dict(type='bool',), enabled=dict(type='bool',), + error_page_profile_ref=dict(type='str',), floating_ip=dict(type='dict',), floating_subnet_uuid=dict(type='str',), flow_dist=dict(type='str',), @@ -487,6 +540,7 @@ def main(): services=dict(type='list',), sideband_profile=dict(type='dict',), snat_ip=dict(type='list',), + sp_pool_refs=dict(type='list',), ssl_key_and_certificate_refs=dict(type='list',), ssl_profile_ref=dict(type='str',), ssl_sess_cache_avg_size=dict(type='int',), @@ -498,6 +552,7 @@ def main(): type=dict(type='str',), url=dict(type='str',), use_bridge_ip_as_vip=dict(type='bool',), + use_vip_as_snat=dict(type='bool',), uuid=dict(type='str',), vh_domain_name=dict(type='list',), vh_parent_vs_uuid=dict(type='str',), @@ -505,6 +560,7 @@ def main(): vrf_context_ref=dict(type='str',), vs_datascripts=dict(type='list',), vsvip_ref=dict(type='str',), + waf_policy_ref=dict(type='str',), weight=dict(type='int',), ) argument_specs.update(avi_common_argument_spec()) diff --git a/lib/ansible/modules/network/avi/avi_vrfcontext.py b/lib/ansible/modules/network/avi/avi_vrfcontext.py index f7fcfe30fb5..f4b0061950a 100644 --- a/lib/ansible/modules/network/avi/avi_vrfcontext.py +++ b/lib/ansible/modules/network/avi/avi_vrfcontext.py @@ -43,7 +43,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] bgp_profile: description: - Bgp local and peer info. @@ -117,6 +129,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), bgp_profile=dict(type='dict',), cloud_ref=dict(type='str',), debugvrfcontext=dict(type='dict',), diff --git a/lib/ansible/modules/network/avi/avi_vsdatascriptset.py b/lib/ansible/modules/network/avi/avi_vsdatascriptset.py index f6cfbb8bd0e..c8e4ea791f9 100644 --- a/lib/ansible/modules/network/avi/avi_vsdatascriptset.py +++ b/lib/ansible/modules/network/avi/avi_vsdatascriptset.py @@ -43,7 +43,24 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] + created_by: + description: + - Creator name. + - Field introduced in 17.1.11,17.2.4. + version_added: "2.5" datascript: description: - Datascripts to execute. @@ -112,6 +129,10 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), + created_by=dict(type='str',), datascript=dict(type='list',), description=dict(type='str',), ipgroup_refs=dict(type='list',), diff --git a/lib/ansible/modules/network/avi/avi_vsvip.py b/lib/ansible/modules/network/avi/avi_vsvip.py index 3519d51cfa7..5619165fd67 100644 --- a/lib/ansible/modules/network/avi/avi_vsvip.py +++ b/lib/ansible/modules/network/avi/avi_vsvip.py @@ -43,7 +43,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] cloud_ref: description: - It is a reference to an object of type cloud. @@ -116,6 +128,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), cloud_ref=dict(type='str',), dns_info=dict(type='list',), east_west_placement=dict(type='bool',), diff --git a/lib/ansible/modules/network/avi/avi_webhook.py b/lib/ansible/modules/network/avi/avi_webhook.py index 81f7c1deb6a..c7aa57ff01c 100644 --- a/lib/ansible/modules/network/avi/avi_webhook.py +++ b/lib/ansible/modules/network/avi/avi_webhook.py @@ -42,7 +42,19 @@ options: description: - The state that should be applied on the entity. default: present - choices: ["absent","present"] + choices: ["absent", "present"] + avi_api_update_method: + description: + - Default method for object update is HTTP PUT. + - Setting to patch will override that behavior to use HTTP PATCH. + version_added: "2.5" + default: put + choices: ["put", "patch"] + avi_api_patch_op: + description: + - Patch operation to use when using avi_api_update_method as patch. + version_added: "2.5" + choices: ["add", "replace", "delete"] callback_url: description: - Callback url for the webhook. @@ -103,6 +115,9 @@ def main(): argument_specs = dict( state=dict(default='present', choices=['absent', 'present']), + avi_api_update_method=dict(default='put', + choices=['put', 'patch']), + avi_api_patch_op=dict(choices=['add', 'replace', 'delete']), callback_url=dict(type='str',), description=dict(type='str',), name=dict(type='str', required=True), diff --git a/lib/ansible/utils/module_docs_fragments/avi.py b/lib/ansible/utils/module_docs_fragments/avi.py index 6e20e1a85f1..fc397445520 100644 --- a/lib/ansible/utils/module_docs_fragments/avi.py +++ b/lib/ansible/utils/module_docs_fragments/avi.py @@ -45,6 +45,15 @@ options: api_version: description: - Avi API version of to use for Avi API and objects. + avi_credentials: + description: + - Avi Credentials dictionary which can be used in lieu of enumerating Avi Controller login details. + version_added: "2.5" + api_context: + description: + - Avi API context that includes current session ID and CSRF Token. + - This allows user to perform single login and re-use the session. + version_added: "2.5" notes: - For more information on using Ansible to manage Avi Network devices see U(https://www.ansible.com/ansible-avi-networks). """