From 45a5067c9886bdd024c9e18838a86ec51f17c5f3 Mon Sep 17 00:00:00 2001 From: The Magician Date: Thu, 7 Nov 2019 11:35:33 -0800 Subject: [PATCH] Bug fixes for GCP modules (#64486) --- .../gcp_compute_region_backend_service.py | 497 ++++++++++++------ ...gcp_compute_region_backend_service_info.py | 220 +++++--- 2 files changed, 502 insertions(+), 215 deletions(-) diff --git a/lib/ansible/modules/cloud/google/gcp_compute_region_backend_service.py b/lib/ansible/modules/cloud/google/gcp_compute_region_backend_service.py index 3d513259e5c..7b1946f8d51 100644 --- a/lib/ansible/modules/cloud/google/gcp_compute_region_backend_service.py +++ b/lib/ansible/modules/cloud/google/gcp_compute_region_backend_service.py @@ -33,8 +33,6 @@ module: gcp_compute_region_backend_service description: - A Region Backend Service defines a regionally-scoped group of virtual machines that will serve traffic for load balancing. -- Region backend services can only be used when using internal load balancing. -- For external load balancing, use a global backend service instead. short_description: Creates a GCP RegionBackendService version_added: '2.10' author: Google Inc. (@googlecloudplatform) @@ -51,28 +49,27 @@ options: - absent default: present type: str - name: - description: - - Name of the resource. Provided by the client when the resource is created. The - name must be 1-63 characters long, and comply with RFC1035. Specifically, the - name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` - which means the first character must be a lowercase letter, and all following - characters must be a dash, lowercase letter, or digit, except the last character, - which cannot be a dash. - required: true - type: str - health_checks: - description: - - The list of HealthChecks for checking the health of the backend service. - - Currently at most one health check can be specified, and a health check is required. - required: true - type: list backends: description: - - The list of backends that serve this RegionBackendService. + - The set of backends that serve this RegionBackendService. required: false type: list suboptions: + balancing_mode: + description: + - Specifies the balancing mode for this backend. Defaults to CONNECTION. + - 'Some valid choices include: "UTILIZATION", "RATE", "CONNECTION"' + required: false + default: CONNECTION + type: str + capacity_scaler: + description: + - A multiplier applied to the group's maximum servicing capacity (based on + UTILIZATION, RATE or CONNECTION). + - A setting of 0 means the group is completely drained, offering 0% of its + available Capacity. Valid range is [0.0,1.0]. + required: false + type: str description: description: - An optional description of this resource. @@ -81,46 +78,76 @@ options: type: str group: description: - - The fully-qualified URL of an Instance Group. This defines the list of instances - that serve traffic. Member virtual machine instances from each instance - group must live in the same zone as the instance group itself. No two backends - in a backend service are allowed to use same Instance Group resource. - - Note that you must specify an Instance Group resource using the fully-qualified - URL, rather than a partial URL. - - The instance group must be within the same region as the BackendService. + - The fully-qualified URL of an Instance Group or Network Endpoint Group resource. + In case of instance group this defines the list of instances that serve + traffic. Member virtual machine instances from each instance group must + live in the same zone as the instance group itself. No two backends in a + backend service are allowed to use same Instance Group resource. + - For Network Endpoint Groups this defines list of endpoints. All endpoints + of Network Endpoint Group must be hosted on instances located in the same + zone as the Network Endpoint Group. + - Backend services cannot mix Instance Group and Network Endpoint Group backends. + - When the `load_balancing_scheme` is INTERNAL, only instance groups are supported. + - Note that you must specify an Instance Group or Network Endpoint Group resource + using the fully-qualified URL, rather than a partial URL. + required: true + type: str + max_connections: + description: + - The max number of simultaneous connections for the group. Can be used with + either CONNECTION or UTILIZATION balancing modes. + - For CONNECTION mode, either maxConnections or one of maxConnectionsPerInstance + or maxConnectionsPerEndpoint, as appropriate for group type, must be set. + required: false + type: int + max_connections_per_instance: + description: + - The max number of simultaneous connections that a single backend instance + can handle. This is used to calculate the capacity of the group. Can be + used in either CONNECTION or UTILIZATION balancing modes. + - For CONNECTION mode, either maxConnections or maxConnectionsPerInstance + must be set. + required: false + type: int + max_connections_per_endpoint: + description: + - The max number of simultaneous connections that a single backend network + endpoint can handle. This is used to calculate the capacity of the group. + Can be used in either CONNECTION or UTILIZATION balancing modes. + - For CONNECTION mode, either maxConnections or maxConnectionsPerEndpoint + must be set. + required: false + type: int + max_rate: + description: + - The max requests per second (RPS) of the group. + - Can be used with either RATE or UTILIZATION balancing modes, but required + if RATE mode. Either maxRate or one of maxRatePerInstance or maxRatePerEndpoint, + as appropriate for group type, must be set. + required: false + type: int + max_rate_per_instance: + description: + - The max requests per second (RPS) that a single backend instance can handle. + This is used to calculate the capacity of the group. Can be used in either + balancing mode. For RATE mode, either maxRate or maxRatePerInstance must + be set. + required: false + type: str + max_rate_per_endpoint: + description: + - The max requests per second (RPS) that a single backend network endpoint + can handle. This is used to calculate the capacity of the group. Can be + used in either balancing mode. For RATE mode, either maxRate or maxRatePerEndpoint + must be set. + required: false + type: str + max_utilization: + description: + - Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization + target for the group. Valid range is [0.0, 1.0]. required: false type: str - description: - description: - - An optional description of this resource. - required: false - type: str - protocol: - description: - - The protocol this BackendService uses to communicate with backends. - - The possible values are TCP and UDP, and the default is TCP. - - 'Some valid choices include: "HTTP", "HTTPS", "HTTP2", "SSL", "TCP", "UDP"' - required: false - type: str - session_affinity: - description: - - Type of session affinity to use. The default is NONE. - - Can be NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO. - - When the protocol is UDP, this field is not used. - - 'Some valid choices include: "NONE", "CLIENT_IP", "CLIENT_IP_PROTO", "CLIENT_IP_PORT_PROTO"' - required: false - type: str - region: - description: - - The region where the regional backend service resides. - required: false - type: str - timeout_sec: - description: - - How many seconds to wait for the backend before considering it a failed request. - Default is 30 seconds. Valid range is [1, 86400]. - required: false - type: int connection_draining: description: - Settings for connection draining . @@ -132,15 +159,67 @@ options: - Time for which instance will be drained (not accept new connections, but still work to finish started). required: false + default: '300' type: int + description: + description: + - An optional description of this resource. + required: false + type: str + health_checks: + description: + - The set of URLs to HealthCheck resources for health checking this RegionBackendService. + Currently at most one health check can be specified, and a health check is required. + required: true + type: list load_balancing_scheme: description: - - This signifies what the ForwardingRule will be used for and can only be INTERNAL - for RegionBackendServices . - - 'Some valid choices include: "INTERNAL"' + - Indicates what kind of load balancing this regional backend service will be + used for. A backend service created for one type of load balancing cannot be + used with the other(s). Must be `INTERNAL` or `INTERNAL_MANAGED`. Defaults to + `INTERNAL`. + - 'Some valid choices include: "INTERNAL", "INTERNAL_MANAGED"' required: false default: INTERNAL type: str + name: + description: + - Name of the resource. Provided by the client when the resource is created. The + name must be 1-63 characters long, and comply with RFC1035. Specifically, the + name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` + which means the first character must be a lowercase letter, and all following + characters must be a dash, lowercase letter, or digit, except the last character, + which cannot be a dash. + required: true + type: str + protocol: + description: + - The protocol this RegionBackendService uses to communicate with backends. + - 'Possible values are HTTP, HTTPS, HTTP2, SSL, TCP, and UDP. The default is HTTP. + **NOTE**: HTTP2 is only valid for beta HTTP/2 load balancer types and may result + in errors if used with the GA API.' + - 'Some valid choices include: "HTTP", "HTTPS", "HTTP2", "SSL", "TCP", "UDP"' + required: false + type: str + session_affinity: + description: + - Type of session affinity to use. The default is NONE. Session affinity is not + applicable if the protocol is UDP. + - 'Some valid choices include: "NONE", "CLIENT_IP", "CLIENT_IP_PORT_PROTO", "CLIENT_IP_PROTO", + "GENERATED_COOKIE", "HEADER_FIELD", "HTTP_COOKIE"' + required: false + type: str + timeout_sec: + description: + - How many seconds to wait for the backend before considering it a failed request. + Default is 30 seconds. Valid range is [1, 86400]. + required: false + type: int + region: + description: + - A reference to the region where the regional backend service resides. + required: true + type: str project: description: - The Google Cloud Platform project to use. @@ -224,28 +303,25 @@ EXAMPLES = ''' ''' RETURN = ''' -name: - description: - - Name of the resource. Provided by the client when the resource is created. The - name must be 1-63 characters long, and comply with RFC1035. Specifically, the - name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` - which means the first character must be a lowercase letter, and all following - characters must be a dash, lowercase letter, or digit, except the last character, - which cannot be a dash. - returned: success - type: str -healthChecks: - description: - - The list of HealthChecks for checking the health of the backend service. - - Currently at most one health check can be specified, and a health check is required. - returned: success - type: list backends: description: - - The list of backends that serve this RegionBackendService. + - The set of backends that serve this RegionBackendService. returned: success type: complex contains: + balancingMode: + description: + - Specifies the balancing mode for this backend. Defaults to CONNECTION. + returned: success + type: str + capacityScaler: + description: + - A multiplier applied to the group's maximum servicing capacity (based on UTILIZATION, + RATE or CONNECTION). + - A setting of 0 means the group is completely drained, offering 0% of its available + Capacity. Valid range is [0.0,1.0]. + returned: success + type: str description: description: - An optional description of this resource. @@ -254,50 +330,76 @@ backends: type: str group: description: - - The fully-qualified URL of an Instance Group. This defines the list of instances - that serve traffic. Member virtual machine instances from each instance group - must live in the same zone as the instance group itself. No two backends in - a backend service are allowed to use same Instance Group resource. - - Note that you must specify an Instance Group resource using the fully-qualified - URL, rather than a partial URL. - - The instance group must be within the same region as the BackendService. + - The fully-qualified URL of an Instance Group or Network Endpoint Group resource. + In case of instance group this defines the list of instances that serve traffic. + Member virtual machine instances from each instance group must live in the + same zone as the instance group itself. No two backends in a backend service + are allowed to use same Instance Group resource. + - For Network Endpoint Groups this defines list of endpoints. All endpoints + of Network Endpoint Group must be hosted on instances located in the same + zone as the Network Endpoint Group. + - Backend services cannot mix Instance Group and Network Endpoint Group backends. + - When the `load_balancing_scheme` is INTERNAL, only instance groups are supported. + - Note that you must specify an Instance Group or Network Endpoint Group resource + using the fully-qualified URL, rather than a partial URL. + returned: success + type: str + maxConnections: + description: + - The max number of simultaneous connections for the group. Can be used with + either CONNECTION or UTILIZATION balancing modes. + - For CONNECTION mode, either maxConnections or one of maxConnectionsPerInstance + or maxConnectionsPerEndpoint, as appropriate for group type, must be set. + returned: success + type: int + maxConnectionsPerInstance: + description: + - The max number of simultaneous connections that a single backend instance + can handle. This is used to calculate the capacity of the group. Can be used + in either CONNECTION or UTILIZATION balancing modes. + - For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must + be set. + returned: success + type: int + maxConnectionsPerEndpoint: + description: + - The max number of simultaneous connections that a single backend network endpoint + can handle. This is used to calculate the capacity of the group. Can be used + in either CONNECTION or UTILIZATION balancing modes. + - For CONNECTION mode, either maxConnections or maxConnectionsPerEndpoint must + be set. + returned: success + type: int + maxRate: + description: + - The max requests per second (RPS) of the group. + - Can be used with either RATE or UTILIZATION balancing modes, but required + if RATE mode. Either maxRate or one of maxRatePerInstance or maxRatePerEndpoint, + as appropriate for group type, must be set. + returned: success + type: int + maxRatePerInstance: + description: + - The max requests per second (RPS) that a single backend instance can handle. + This is used to calculate the capacity of the group. Can be used in either + balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be + set. + returned: success + type: str + maxRatePerEndpoint: + description: + - The max requests per second (RPS) that a single backend network endpoint can + handle. This is used to calculate the capacity of the group. Can be used in + either balancing mode. For RATE mode, either maxRate or maxRatePerEndpoint + must be set. + returned: success + type: str + maxUtilization: + description: + - Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization + target for the group. Valid range is [0.0, 1.0]. returned: success type: str -description: - description: - - An optional description of this resource. - returned: success - type: str -fingerprint: - description: - - Fingerprint of this resource. A hash of the contents stored in this object. This - field is used in optimistic locking. - returned: success - type: str -protocol: - description: - - The protocol this BackendService uses to communicate with backends. - - The possible values are TCP and UDP, and the default is TCP. - returned: success - type: str -sessionAffinity: - description: - - Type of session affinity to use. The default is NONE. - - Can be NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO. - - When the protocol is UDP, this field is not used. - returned: success - type: str -region: - description: - - The region where the regional backend service resides. - returned: success - type: str -timeoutSec: - description: - - How many seconds to wait for the backend before considering it a failed request. - Default is 30 seconds. Valid range is [1, 86400]. - returned: success - type: int connectionDraining: description: - Settings for connection draining . @@ -310,10 +412,73 @@ connectionDraining: work to finish started). returned: success type: int +creationTimestamp: + description: + - Creation timestamp in RFC3339 text format. + returned: success + type: str +description: + description: + - An optional description of this resource. + returned: success + type: str +fingerprint: + description: + - Fingerprint of this resource. A hash of the contents stored in this object. This + field is used in optimistic locking. + returned: success + type: str +healthChecks: + description: + - The set of URLs to HealthCheck resources for health checking this RegionBackendService. + Currently at most one health check can be specified, and a health check is required. + returned: success + type: list +id: + description: + - The unique identifier for the resource. + returned: success + type: int loadBalancingScheme: description: - - This signifies what the ForwardingRule will be used for and can only be INTERNAL - for RegionBackendServices . + - Indicates what kind of load balancing this regional backend service will be used + for. A backend service created for one type of load balancing cannot be used with + the other(s). Must be `INTERNAL` or `INTERNAL_MANAGED`. Defaults to `INTERNAL`. + returned: success + type: str +name: + description: + - Name of the resource. Provided by the client when the resource is created. The + name must be 1-63 characters long, and comply with RFC1035. Specifically, the + name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` + which means the first character must be a lowercase letter, and all following + characters must be a dash, lowercase letter, or digit, except the last character, + which cannot be a dash. + returned: success + type: str +protocol: + description: + - The protocol this RegionBackendService uses to communicate with backends. + - 'Possible values are HTTP, HTTPS, HTTP2, SSL, TCP, and UDP. The default is HTTP. + **NOTE**: HTTP2 is only valid for beta HTTP/2 load balancer types and may result + in errors if used with the GA API.' + returned: success + type: str +sessionAffinity: + description: + - Type of session affinity to use. The default is NONE. Session affinity is not + applicable if the protocol is UDP. + returned: success + type: str +timeoutSec: + description: + - How many seconds to wait for the backend before considering it a failed request. + Default is 30 seconds. Valid range is [1, 86400]. + returned: success + type: int +region: + description: + - A reference to the region where the regional backend service resides. returned: success type: str ''' @@ -324,7 +489,6 @@ loadBalancingScheme: from ansible.module_utils.gcp_utils import navigate_hash, GcpSession, GcpModule, GcpRequest, remove_nones_from_dict, replace_resource_dict import json -import re import time ################################################################################ @@ -338,16 +502,32 @@ def main(): module = GcpModule( argument_spec=dict( state=dict(default='present', choices=['present', 'absent'], type='str'), - name=dict(required=True, type='str'), - health_checks=dict(required=True, type='list', elements='str'), - backends=dict(type='list', elements='dict', options=dict(description=dict(type='str'), group=dict(type='str'))), + backends=dict( + type='list', + elements='dict', + options=dict( + balancing_mode=dict(default='CONNECTION', type='str'), + capacity_scaler=dict(type='str'), + description=dict(type='str'), + group=dict(required=True, type='str'), + max_connections=dict(type='int'), + max_connections_per_instance=dict(type='int'), + max_connections_per_endpoint=dict(type='int'), + max_rate=dict(type='int'), + max_rate_per_instance=dict(type='str'), + max_rate_per_endpoint=dict(type='str'), + max_utilization=dict(type='str'), + ), + ), + connection_draining=dict(type='dict', options=dict(draining_timeout_sec=dict(default=300, type='int'))), description=dict(type='str'), + health_checks=dict(required=True, type='list', elements='str'), + load_balancing_scheme=dict(default='INTERNAL', type='str'), + name=dict(required=True, type='str'), protocol=dict(type='str'), session_affinity=dict(type='str'), - region=dict(type='str'), timeout_sec=dict(type='int'), - connection_draining=dict(type='dict', options=dict(draining_timeout_sec=dict(type='int'))), - load_balancing_scheme=dict(default='INTERNAL', type='str'), + region=dict(required=True, type='str'), ) ) @@ -400,16 +580,15 @@ def delete(module, link, kind): def resource_to_request(module): request = { u'kind': 'compute#backendService', - u'name': module.params.get('name'), - u'healthChecks': module.params.get('health_checks'), u'backends': RegionBackendServiceBackendsArray(module.params.get('backends', []), module).to_request(), + u'connectionDraining': RegionBackendServiceConnectiondraining(module.params.get('connection_draining', {}), module).to_request(), u'description': module.params.get('description'), + u'healthChecks': module.params.get('health_checks'), + u'loadBalancingScheme': module.params.get('load_balancing_scheme'), + u'name': module.params.get('name'), u'protocol': module.params.get('protocol'), u'sessionAffinity': module.params.get('session_affinity'), - u'region': region_selflink(module.params.get('region'), module.params), u'timeoutSec': module.params.get('timeout_sec'), - u'connectionDraining': RegionBackendServiceConnectiondraining(module.params.get('connection_draining', {}), module).to_request(), - u'loadBalancingScheme': module.params.get('load_balancing_scheme'), } return_vals = {} for k, v in request.items(): @@ -475,29 +654,21 @@ def is_different(module, response): # This is for doing comparisons with Ansible's current parameters. def response_to_hash(module, response): return { - u'name': module.params.get('name'), - u'healthChecks': response.get(u'healthChecks'), u'backends': RegionBackendServiceBackendsArray(response.get(u'backends', []), module).from_response(), + u'connectionDraining': RegionBackendServiceConnectiondraining(response.get(u'connectionDraining', {}), module).from_response(), + u'creationTimestamp': response.get(u'creationTimestamp'), u'description': response.get(u'description'), u'fingerprint': response.get(u'fingerprint'), + u'healthChecks': response.get(u'healthChecks'), + u'id': response.get(u'id'), + u'loadBalancingScheme': module.params.get('load_balancing_scheme'), + u'name': module.params.get('name'), u'protocol': response.get(u'protocol'), u'sessionAffinity': response.get(u'sessionAffinity'), - u'region': region_selflink(module.params.get('region'), module.params), u'timeoutSec': response.get(u'timeoutSec'), - u'connectionDraining': RegionBackendServiceConnectiondraining(response.get(u'connectionDraining', {}), module).from_response(), - u'loadBalancingScheme': response.get(u'loadBalancingScheme'), } -def region_selflink(name, params): - if name is None: - return - url = r"https://www.googleapis.com/compute/v1/projects/.*/regions/.*" - if not re.match(url, name): - name = "https://www.googleapis.com/compute/v1/projects/{project}/regions/%s".format(**params) % name - return name - - def async_op_url(module, extra_data=None): if extra_data is None: extra_data = {} @@ -554,10 +725,38 @@ class RegionBackendServiceBackendsArray(object): return items def _request_for_item(self, item): - return remove_nones_from_dict({u'description': item.get('description'), u'group': item.get('group')}) + return remove_nones_from_dict( + { + u'balancingMode': item.get('balancing_mode'), + u'capacityScaler': item.get('capacity_scaler'), + u'description': item.get('description'), + u'group': item.get('group'), + u'maxConnections': item.get('max_connections'), + u'maxConnectionsPerInstance': item.get('max_connections_per_instance'), + u'maxConnectionsPerEndpoint': item.get('max_connections_per_endpoint'), + u'maxRate': item.get('max_rate'), + u'maxRatePerInstance': item.get('max_rate_per_instance'), + u'maxRatePerEndpoint': item.get('max_rate_per_endpoint'), + u'maxUtilization': item.get('max_utilization'), + } + ) def _response_from_item(self, item): - return remove_nones_from_dict({u'description': item.get(u'description'), u'group': item.get(u'group')}) + return remove_nones_from_dict( + { + u'balancingMode': item.get(u'balancingMode'), + u'capacityScaler': item.get(u'capacityScaler'), + u'description': item.get(u'description'), + u'group': item.get(u'group'), + u'maxConnections': item.get(u'maxConnections'), + u'maxConnectionsPerInstance': item.get(u'maxConnectionsPerInstance'), + u'maxConnectionsPerEndpoint': item.get(u'maxConnectionsPerEndpoint'), + u'maxRate': item.get(u'maxRate'), + u'maxRatePerInstance': item.get(u'maxRatePerInstance'), + u'maxRatePerEndpoint': item.get(u'maxRatePerEndpoint'), + u'maxUtilization': item.get(u'maxUtilization'), + } + ) class RegionBackendServiceConnectiondraining(object): diff --git a/lib/ansible/modules/cloud/google/gcp_compute_region_backend_service_info.py b/lib/ansible/modules/cloud/google/gcp_compute_region_backend_service_info.py index e71f64c76bc..94db1cc5abb 100644 --- a/lib/ansible/modules/cloud/google/gcp_compute_region_backend_service_info.py +++ b/lib/ansible/modules/cloud/google/gcp_compute_region_backend_service_info.py @@ -48,8 +48,8 @@ options: type: list region: description: - - The region where the regional backend service resides. - required: false + - A reference to the region where the regional backend service resides. + required: true type: str project: description: @@ -118,29 +118,25 @@ resources: returned: always type: complex contains: - name: - description: - - Name of the resource. Provided by the client when the resource is created. - The name must be 1-63 characters long, and comply with RFC1035. Specifically, - the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` - which means the first character must be a lowercase letter, and all following - characters must be a dash, lowercase letter, or digit, except the last character, - which cannot be a dash. - returned: success - type: str - healthChecks: - description: - - The list of HealthChecks for checking the health of the backend service. - - Currently at most one health check can be specified, and a health check is - required. - returned: success - type: list backends: description: - - The list of backends that serve this RegionBackendService. + - The set of backends that serve this RegionBackendService. returned: success type: complex contains: + balancingMode: + description: + - Specifies the balancing mode for this backend. Defaults to CONNECTION. + returned: success + type: str + capacityScaler: + description: + - A multiplier applied to the group's maximum servicing capacity (based + on UTILIZATION, RATE or CONNECTION). + - A setting of 0 means the group is completely drained, offering 0% of its + available Capacity. Valid range is [0.0,1.0]. + returned: success + type: str description: description: - An optional description of this resource. @@ -149,51 +145,78 @@ resources: type: str group: description: - - The fully-qualified URL of an Instance Group. This defines the list of - instances that serve traffic. Member virtual machine instances from each - instance group must live in the same zone as the instance group itself. - No two backends in a backend service are allowed to use same Instance - Group resource. - - Note that you must specify an Instance Group resource using the fully-qualified - URL, rather than a partial URL. - - The instance group must be within the same region as the BackendService. + - The fully-qualified URL of an Instance Group or Network Endpoint Group + resource. In case of instance group this defines the list of instances + that serve traffic. Member virtual machine instances from each instance + group must live in the same zone as the instance group itself. No two + backends in a backend service are allowed to use same Instance Group resource. + - For Network Endpoint Groups this defines list of endpoints. All endpoints + of Network Endpoint Group must be hosted on instances located in the same + zone as the Network Endpoint Group. + - Backend services cannot mix Instance Group and Network Endpoint Group + backends. + - When the `load_balancing_scheme` is INTERNAL, only instance groups are + supported. + - Note that you must specify an Instance Group or Network Endpoint Group + resource using the fully-qualified URL, rather than a partial URL. + returned: success + type: str + maxConnections: + description: + - The max number of simultaneous connections for the group. Can be used + with either CONNECTION or UTILIZATION balancing modes. + - For CONNECTION mode, either maxConnections or one of maxConnectionsPerInstance + or maxConnectionsPerEndpoint, as appropriate for group type, must be set. + returned: success + type: int + maxConnectionsPerInstance: + description: + - The max number of simultaneous connections that a single backend instance + can handle. This is used to calculate the capacity of the group. Can be + used in either CONNECTION or UTILIZATION balancing modes. + - For CONNECTION mode, either maxConnections or maxConnectionsPerInstance + must be set. + returned: success + type: int + maxConnectionsPerEndpoint: + description: + - The max number of simultaneous connections that a single backend network + endpoint can handle. This is used to calculate the capacity of the group. + Can be used in either CONNECTION or UTILIZATION balancing modes. + - For CONNECTION mode, either maxConnections or maxConnectionsPerEndpoint + must be set. + returned: success + type: int + maxRate: + description: + - The max requests per second (RPS) of the group. + - Can be used with either RATE or UTILIZATION balancing modes, but required + if RATE mode. Either maxRate or one of maxRatePerInstance or maxRatePerEndpoint, + as appropriate for group type, must be set. + returned: success + type: int + maxRatePerInstance: + description: + - The max requests per second (RPS) that a single backend instance can handle. + This is used to calculate the capacity of the group. Can be used in either + balancing mode. For RATE mode, either maxRate or maxRatePerInstance must + be set. + returned: success + type: str + maxRatePerEndpoint: + description: + - The max requests per second (RPS) that a single backend network endpoint + can handle. This is used to calculate the capacity of the group. Can be + used in either balancing mode. For RATE mode, either maxRate or maxRatePerEndpoint + must be set. + returned: success + type: str + maxUtilization: + description: + - Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization + target for the group. Valid range is [0.0, 1.0]. returned: success type: str - description: - description: - - An optional description of this resource. - returned: success - type: str - fingerprint: - description: - - Fingerprint of this resource. A hash of the contents stored in this object. - This field is used in optimistic locking. - returned: success - type: str - protocol: - description: - - The protocol this BackendService uses to communicate with backends. - - The possible values are TCP and UDP, and the default is TCP. - returned: success - type: str - sessionAffinity: - description: - - Type of session affinity to use. The default is NONE. - - Can be NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO. - - When the protocol is UDP, this field is not used. - returned: success - type: str - region: - description: - - The region where the regional backend service resides. - returned: success - type: str - timeoutSec: - description: - - How many seconds to wait for the backend before considering it a failed request. - Default is 30 seconds. Valid range is [1, 86400]. - returned: success - type: int connectionDraining: description: - Settings for connection draining . @@ -206,10 +229,75 @@ resources: still work to finish started). returned: success type: int + creationTimestamp: + description: + - Creation timestamp in RFC3339 text format. + returned: success + type: str + description: + description: + - An optional description of this resource. + returned: success + type: str + fingerprint: + description: + - Fingerprint of this resource. A hash of the contents stored in this object. + This field is used in optimistic locking. + returned: success + type: str + healthChecks: + description: + - The set of URLs to HealthCheck resources for health checking this RegionBackendService. + Currently at most one health check can be specified, and a health check is + required. + returned: success + type: list + id: + description: + - The unique identifier for the resource. + returned: success + type: int loadBalancingScheme: description: - - This signifies what the ForwardingRule will be used for and can only be INTERNAL - for RegionBackendServices . + - Indicates what kind of load balancing this regional backend service will be + used for. A backend service created for one type of load balancing cannot + be used with the other(s). Must be `INTERNAL` or `INTERNAL_MANAGED`. Defaults + to `INTERNAL`. + returned: success + type: str + name: + description: + - Name of the resource. Provided by the client when the resource is created. + The name must be 1-63 characters long, and comply with RFC1035. Specifically, + the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` + which means the first character must be a lowercase letter, and all following + characters must be a dash, lowercase letter, or digit, except the last character, + which cannot be a dash. + returned: success + type: str + protocol: + description: + - The protocol this RegionBackendService uses to communicate with backends. + - 'Possible values are HTTP, HTTPS, HTTP2, SSL, TCP, and UDP. The default is + HTTP. **NOTE**: HTTP2 is only valid for beta HTTP/2 load balancer types and + may result in errors if used with the GA API.' + returned: success + type: str + sessionAffinity: + description: + - Type of session affinity to use. The default is NONE. Session affinity is + not applicable if the protocol is UDP. + returned: success + type: str + timeoutSec: + description: + - How many seconds to wait for the backend before considering it a failed request. + Default is 30 seconds. Valid range is [1, 86400]. + returned: success + type: int + region: + description: + - A reference to the region where the regional backend service resides. returned: success type: str ''' @@ -226,7 +314,7 @@ import json def main(): - module = GcpModule(argument_spec=dict(filters=dict(type='list', elements='str'), region=dict(type='str'))) + module = GcpModule(argument_spec=dict(filters=dict(type='list', elements='str'), region=dict(required=True, type='str'))) if not module.params['scopes']: module.params['scopes'] = ['https://www.googleapis.com/auth/compute']