Updated Avi Modules with new features and documentation update. (#34206)

* Updated Avi Modules with following
1. Support to perform patch operation using the modules. The data update method is
selected using avi_api_update_method=patch and patch operation is determined by
avi_api_patch_op. The patch data is the normal params that are provided in the modules

2. Support for avi_credentials as single authentication dictionary for all API calls.
This is preferred way as opposed to previously all credentials details would pollute
the individual Ansible tasks. It also allows the module development to be enhanced
without breaking compatibility for new authentication schemes like SAML etc.

3. Support for sharing api_context between the module invocations. This is a
workaround to not do multiple logins to Avi Controller and be able to
re-use single login across multiple REST API calls.

4. Documentation update for new parameters and existing ones with Units data.

* Fixed the pylint and pep8 errors caused due to pycharm editor auto formatting
This commit is contained in:
Gaurav Rastogi
2017-12-24 00:15:23 -08:00
committed by John R Barker
parent 9b4a1ed475
commit 9e2ff3e4d5
57 changed files with 1522 additions and 238 deletions

View File

@@ -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(