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). """