Autogen Global Forwarding Rule, fix Load Balancer related-resources (#229)

Signed-off-by: Modular Magician <magic-modules@google.com>
This commit is contained in:
The Magician 2019-04-25 12:35:44 -07:00 committed by Alex Stephen
parent 2eb8bf83f2
commit aa9c427de1
2 changed files with 46 additions and 155 deletions

View file

@ -81,8 +81,8 @@ options:
ip_protocol: ip_protocol:
description: description:
- The IP protocol to which this rule applies. Valid options are TCP, UDP, ESP, - The IP protocol to which this rule applies. Valid options are TCP, UDP, ESP,
AH, SCTP or ICMP. AH, SCTP or ICMP. When the load balancing scheme is INTERNAL_SELF_MANAGED, only
- When the load balancing scheme is INTERNAL, only TCP and UDP are valid. TCP is valid.
required: false required: false
choices: choices:
- TCP - TCP
@ -91,35 +91,24 @@ options:
- AH - AH
- SCTP - SCTP
- ICMP - ICMP
backend_service:
description:
- A reference to a BackendService to receive the matched traffic.
- This is used for internal load balancing.
- "(not used for external load balancing) ."
- 'This field represents a link to a BackendService resource in GCP. It can be
specified in two ways. First, you can place a dictionary with key ''selfLink''
and value of your resource''s selfLink Alternatively, you can add `register:
name-of-resource` to a gcp_compute_backend_service task and then set this backend_service
field to "{{ name-of-resource }}"'
required: false
ip_version: ip_version:
description: description:
- The IP Version that will be used by this forwarding rule. Valid options are - The IP Version that will be used by this global forwarding rule.
IPV4 or IPV6. This can only be specified for a global forwarding rule. - Valid options are IPV4 or IPV6.
required: false required: false
choices: choices:
- IPV4 - IPV4
- IPV6 - IPV6
load_balancing_scheme: load_balancing_scheme:
description: description:
- 'This signifies what the ForwardingRule will be used for and can only take the - This signifies what the GlobalForwardingRule will be used for.
following values: INTERNAL, EXTERNAL The value of INTERNAL means that this will - 'The value of INTERNAL_SELF_MANAGED means that this will be used for Internal
be used for Internal Network Load Balancing (TCP, UDP). The value of EXTERNAL Global HTTP(S) LB. The value of EXTERNAL means that this will be used for External
means that this will be used for External Load Balancing (HTTP(S) LB, External Global Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy) NOTE: Currently
TCP/UDP LB, SSL Proxy) .' global forwarding rules cannot be used for INTERNAL load balancing.'
required: false required: false
choices: choices:
- INTERNAL - INTERNAL_SELF_MANAGED
- EXTERNAL - EXTERNAL
name: name:
description: description:
@ -132,10 +121,10 @@ options:
required: true required: true
network: network:
description: description:
- For internal load balancing, this field identifies the network that the load
balanced IP should belong to for this Forwarding Rule. If this field is not
specified, the default network will be used.
- This field is not used for external load balancing. - This field is not used for external load balancing.
- For INTERNAL_SELF_MANAGED load balancing, this field identifies the network
that the load balanced IP should belong to for this global forwarding rule.
If this field is not specified, the default network will be used.
- 'This field represents a link to a Network resource in GCP. It can be specified - 'This field represents a link to a Network resource in GCP. It can be specified
in two ways. First, you can place a dictionary with key ''selfLink'' and value in two ways. First, you can place a dictionary with key ''selfLink'' and value
of your resource''s selfLink Alternatively, you can add `register: name-of-resource` of your resource''s selfLink Alternatively, you can add `register: name-of-resource`
@ -156,34 +145,11 @@ options:
43, 110, 143, 195, 443, 465, 587, 700, 993, 995, 1883, 5222 * TargetVpnGateway: 43, 110, 143, 195, 443, 465, 587, 700, 993, 995, 1883, 5222 * TargetVpnGateway:
500, 4500 .' 500, 4500 .'
required: false required: false
ports:
description:
- This field is used along with the backend_service field for internal load balancing.
- When the load balancing scheme is INTERNAL, a single port or a comma separated
list of ports can be configured. Only packets addressed to these ports will
be forwarded to the backends configured with this forwarding rule.
- You may specify a maximum of up to 5 ports.
required: false
subnetwork:
description:
- A reference to a subnetwork.
- For internal load balancing, this field identifies the subnetwork that the load
balanced IP should belong to for this Forwarding Rule.
- If the network specified is in auto subnet mode, this field is optional. However,
if the network is in custom subnet mode, a subnetwork must be specified.
- This field is not used for external load balancing.
- 'This field represents a link to a Subnetwork resource in GCP. It can be specified
in two ways. First, you can place a dictionary with key ''selfLink'' and value
of your resource''s selfLink Alternatively, you can add `register: name-of-resource`
to a gcp_compute_subnetwork task and then set this subnetwork field to "{{ name-of-resource
}}"'
required: false
target: target:
description: description:
- This target must be a global load balancing resource. The forwarded traffic - The URL of the target resource to receive the matched traffic.
must be of a type appropriate to the target object. - The forwarded traffic must be of a type appropriate to the target object.
- 'Valid types: HTTP_PROXY, HTTPS_PROXY, SSL_PROXY, TCP_PROXY .' required: true
required: false
extends_documentation_fragment: gcp extends_documentation_fragment: gcp
''' '''
@ -310,30 +276,23 @@ IPAddress:
IPProtocol: IPProtocol:
description: description:
- The IP protocol to which this rule applies. Valid options are TCP, UDP, ESP, AH, - The IP protocol to which this rule applies. Valid options are TCP, UDP, ESP, AH,
SCTP or ICMP. SCTP or ICMP. When the load balancing scheme is INTERNAL_SELF_MANAGED, only TCP
- When the load balancing scheme is INTERNAL, only TCP and UDP are valid. is valid.
returned: success returned: success
type: str type: str
backendService:
description:
- A reference to a BackendService to receive the matched traffic.
- This is used for internal load balancing.
- "(not used for external load balancing) ."
returned: success
type: dict
ipVersion: ipVersion:
description: description:
- The IP Version that will be used by this forwarding rule. Valid options are IPV4 - The IP Version that will be used by this global forwarding rule.
or IPV6. This can only be specified for a global forwarding rule. - Valid options are IPV4 or IPV6.
returned: success returned: success
type: str type: str
loadBalancingScheme: loadBalancingScheme:
description: description:
- 'This signifies what the ForwardingRule will be used for and can only take the - This signifies what the GlobalForwardingRule will be used for.
following values: INTERNAL, EXTERNAL The value of INTERNAL means that this will - 'The value of INTERNAL_SELF_MANAGED means that this will be used for Internal
be used for Internal Network Load Balancing (TCP, UDP). The value of EXTERNAL Global HTTP(S) LB. The value of EXTERNAL means that this will be used for External
means that this will be used for External Load Balancing (HTTP(S) LB, External Global Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy) NOTE: Currently
TCP/UDP LB, SSL Proxy) .' global forwarding rules cannot be used for INTERNAL load balancing.'
returned: success returned: success
type: str type: str
name: name:
@ -348,10 +307,10 @@ name:
type: str type: str
network: network:
description: description:
- For internal load balancing, this field identifies the network that the load balanced
IP should belong to for this Forwarding Rule. If this field is not specified,
the default network will be used.
- This field is not used for external load balancing. - This field is not used for external load balancing.
- For INTERNAL_SELF_MANAGED load balancing, this field identifies the network that
the load balanced IP should belong to for this global forwarding rule. If this
field is not specified, the default network will be used.
returned: success returned: success
type: dict type: dict
portRange: portRange:
@ -368,36 +327,10 @@ portRange:
465, 587, 700, 993, 995, 1883, 5222 * TargetVpnGateway: 500, 4500 .' 465, 587, 700, 993, 995, 1883, 5222 * TargetVpnGateway: 500, 4500 .'
returned: success returned: success
type: str type: str
ports:
description:
- This field is used along with the backend_service field for internal load balancing.
- When the load balancing scheme is INTERNAL, a single port or a comma separated
list of ports can be configured. Only packets addressed to these ports will be
forwarded to the backends configured with this forwarding rule.
- You may specify a maximum of up to 5 ports.
returned: success
type: list
subnetwork:
description:
- A reference to a subnetwork.
- For internal load balancing, this field identifies the subnetwork that the load
balanced IP should belong to for this Forwarding Rule.
- If the network specified is in auto subnet mode, this field is optional. However,
if the network is in custom subnet mode, a subnetwork must be specified.
- This field is not used for external load balancing.
returned: success
type: dict
region:
description:
- A reference to the region where the regional forwarding rule resides.
- This field is not applicable to global forwarding rules.
returned: success
type: str
target: target:
description: description:
- This target must be a global load balancing resource. The forwarded traffic must - The URL of the target resource to receive the matched traffic.
be of a type appropriate to the target object. - The forwarded traffic must be of a type appropriate to the target object.
- 'Valid types: HTTP_PROXY, HTTPS_PROXY, SSL_PROXY, TCP_PROXY .'
returned: success returned: success
type: str type: str
''' '''
@ -424,15 +357,12 @@ def main():
description=dict(type='str'), description=dict(type='str'),
ip_address=dict(type='str'), ip_address=dict(type='str'),
ip_protocol=dict(type='str', choices=['TCP', 'UDP', 'ESP', 'AH', 'SCTP', 'ICMP']), ip_protocol=dict(type='str', choices=['TCP', 'UDP', 'ESP', 'AH', 'SCTP', 'ICMP']),
backend_service=dict(type='dict'),
ip_version=dict(type='str', choices=['IPV4', 'IPV6']), ip_version=dict(type='str', choices=['IPV4', 'IPV6']),
load_balancing_scheme=dict(type='str', choices=['INTERNAL_SELF_MANAGED', 'EXTERNAL']), load_balancing_scheme=dict(type='str', choices=['INTERNAL_SELF_MANAGED', 'EXTERNAL']),
name=dict(required=True, type='str'), name=dict(required=True, type='str'),
network=dict(type='dict'), network=dict(type='dict'),
port_range=dict(type='str'), port_range=dict(type='str'),
ports=dict(type='list', elements='str'), target=dict(required=True, type='str'),
subnetwork=dict(type='dict'),
target=dict(type='str'),
) )
) )
@ -448,7 +378,7 @@ def main():
if fetch: if fetch:
if state == 'present': if state == 'present':
if is_different(module, fetch): if is_different(module, fetch):
update(module, self_link(module), kind) update(module, self_link(module), kind, fetch)
fetch = fetch_resource(module, self_link(module), kind) fetch = fetch_resource(module, self_link(module), kind)
changed = True changed = True
else: else:
@ -506,8 +436,6 @@ def resource_to_request(module):
u'name': module.params.get('name'), u'name': module.params.get('name'),
u'network': replace_resource_dict(module.params.get(u'network', {}), 'selfLink'), u'network': replace_resource_dict(module.params.get(u'network', {}), 'selfLink'),
u'portRange': module.params.get('port_range'), u'portRange': module.params.get('port_range'),
u'ports': module.params.get('ports'),
u'subnetwork': replace_resource_dict(module.params.get(u'subnetwork', {}), 'selfLink'),
u'target': module.params.get('target'), u'target': module.params.get('target'),
} }
return_vals = {} return_vals = {}
@ -584,9 +512,6 @@ def response_to_hash(module, response):
u'name': response.get(u'name'), u'name': response.get(u'name'),
u'network': response.get(u'network'), u'network': response.get(u'network'),
u'portRange': response.get(u'portRange'), u'portRange': response.get(u'portRange'),
u'ports': response.get(u'ports'),
u'subnetwork': response.get(u'subnetwork'),
u'region': response.get(u'region'),
u'target': response.get(u'target'), u'target': response.get(u'target'),
} }

View file

@ -107,30 +107,23 @@ items:
IPProtocol: IPProtocol:
description: description:
- The IP protocol to which this rule applies. Valid options are TCP, UDP, ESP, - The IP protocol to which this rule applies. Valid options are TCP, UDP, ESP,
AH, SCTP or ICMP. AH, SCTP or ICMP. When the load balancing scheme is INTERNAL_SELF_MANAGED,
- When the load balancing scheme is INTERNAL, only TCP and UDP are valid. only TCP is valid.
returned: success returned: success
type: str type: str
backendService:
description:
- A reference to a BackendService to receive the matched traffic.
- This is used for internal load balancing.
- "(not used for external load balancing) ."
returned: success
type: dict
ipVersion: ipVersion:
description: description:
- The IP Version that will be used by this forwarding rule. Valid options are - The IP Version that will be used by this global forwarding rule.
IPV4 or IPV6. This can only be specified for a global forwarding rule. - Valid options are IPV4 or IPV6.
returned: success returned: success
type: str type: str
loadBalancingScheme: loadBalancingScheme:
description: description:
- 'This signifies what the ForwardingRule will be used for and can only take - This signifies what the GlobalForwardingRule will be used for.
the following values: INTERNAL, EXTERNAL The value of INTERNAL means that - 'The value of INTERNAL_SELF_MANAGED means that this will be used for Internal
this will be used for Internal Network Load Balancing (TCP, UDP). The value Global HTTP(S) LB. The value of EXTERNAL means that this will be used for
of EXTERNAL means that this will be used for External Load Balancing (HTTP(S) External Global Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)
LB, External TCP/UDP LB, SSL Proxy) .' NOTE: Currently global forwarding rules cannot be used for INTERNAL load balancing.'
returned: success returned: success
type: str type: str
name: name:
@ -145,10 +138,10 @@ items:
type: str type: str
network: network:
description: description:
- For internal load balancing, this field identifies the network that the load
balanced IP should belong to for this Forwarding Rule. If this field is not
specified, the default network will be used.
- This field is not used for external load balancing. - This field is not used for external load balancing.
- For INTERNAL_SELF_MANAGED load balancing, this field identifies the network
that the load balanced IP should belong to for this global forwarding rule.
If this field is not specified, the default network will be used.
returned: success returned: success
type: dict type: dict
portRange: portRange:
@ -166,37 +159,10 @@ items:
500, 4500 .' 500, 4500 .'
returned: success returned: success
type: str type: str
ports:
description:
- This field is used along with the backend_service field for internal load
balancing.
- When the load balancing scheme is INTERNAL, a single port or a comma separated
list of ports can be configured. Only packets addressed to these ports will
be forwarded to the backends configured with this forwarding rule.
- You may specify a maximum of up to 5 ports.
returned: success
type: list
subnetwork:
description:
- A reference to a subnetwork.
- For internal load balancing, this field identifies the subnetwork that the
load balanced IP should belong to for this Forwarding Rule.
- If the network specified is in auto subnet mode, this field is optional. However,
if the network is in custom subnet mode, a subnetwork must be specified.
- This field is not used for external load balancing.
returned: success
type: dict
region:
description:
- A reference to the region where the regional forwarding rule resides.
- This field is not applicable to global forwarding rules.
returned: success
type: str
target: target:
description: description:
- This target must be a global load balancing resource. The forwarded traffic - The URL of the target resource to receive the matched traffic.
must be of a type appropriate to the target object. - The forwarded traffic must be of a type appropriate to the target object.
- 'Valid types: HTTP_PROXY, HTTPS_PROXY, SSL_PROXY, TCP_PROXY .'
returned: success returned: success
type: str type: str
''' '''