Add ScaleInControl fields to GCE Autoscalers (#4147) (#328)

Signed-off-by: Modular Magician <magic-modules@google.com>
This commit is contained in:
The Magician 2020-11-10 10:10:54 -08:00 committed by GitHub
parent 85401c2cb3
commit fef0dd2df0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 284 additions and 0 deletions

View file

@ -111,6 +111,37 @@ options:
required: false
default: 'ON'
type: str
scale_in_control:
description:
- Defines scale in controls to reduce the risk of response latency and outages
due to abrupt scale-in events .
required: false
type: dict
suboptions:
max_scaled_in_replicas:
description:
- A nested object resource.
required: false
type: dict
suboptions:
fixed:
description:
- Specifies a fixed number of VM instances. This must be a positive
integer.
required: false
type: int
percent:
description:
- Specifies a percentage of instances between 0 to 100%, inclusive.
- For example, specify 80 for 80%.
required: false
type: int
time_window_sec:
description:
- How long back autoscaling should look when computing recommendations
to include directives regarding slower scale down, as described above.
required: false
type: int
cpu_utilization:
description:
- Defines the CPU utilization policy that allows the autoscaler to scale based
@ -393,6 +424,37 @@ autoscalingPolicy:
- Defines operating mode for this policy.
returned: success
type: str
scaleInControl:
description:
- Defines scale in controls to reduce the risk of response latency and outages
due to abrupt scale-in events .
returned: success
type: complex
contains:
maxScaledInReplicas:
description:
- A nested object resource.
returned: success
type: complex
contains:
fixed:
description:
- Specifies a fixed number of VM instances. This must be a positive
integer.
returned: success
type: int
percent:
description:
- Specifies a percentage of instances between 0 to 100%, inclusive.
- For example, specify 80 for 80%.
returned: success
type: int
timeWindowSec:
description:
- How long back autoscaling should look when computing recommendations to
include directives regarding slower scale down, as described above.
returned: success
type: int
cpuUtilization:
description:
- Defines the CPU utilization policy that allows the autoscaler to scale based
@ -503,6 +565,13 @@ def main():
max_num_replicas=dict(required=True, type='int', aliases=['maxReplicas']),
cool_down_period_sec=dict(default=60, type='int', aliases=['cooldownPeriod']),
mode=dict(default='ON', type='str'),
scale_in_control=dict(
type='dict',
options=dict(
max_scaled_in_replicas=dict(type='dict', options=dict(fixed=dict(type='int'), percent=dict(type='int'))),
time_window_sec=dict(type='int'),
),
),
cpu_utilization=dict(type='dict', options=dict(utilization_target=dict(type='str', aliases=['target']))),
custom_metric_utilizations=dict(
type='list',
@ -700,6 +769,7 @@ class AutoscalerAutoscalingpolicy(object):
u'maxNumReplicas': self.request.get('max_num_replicas'),
u'coolDownPeriodSec': self.request.get('cool_down_period_sec'),
u'mode': self.request.get('mode'),
u'scaleInControl': AutoscalerScaleincontrol(self.request.get('scale_in_control', {}), self.module).to_request(),
u'cpuUtilization': AutoscalerCpuutilization(self.request.get('cpu_utilization', {}), self.module).to_request(),
u'customMetricUtilizations': AutoscalerCustommetricutilizationsArray(
self.request.get('custom_metric_utilizations', []), self.module
@ -715,6 +785,7 @@ class AutoscalerAutoscalingpolicy(object):
u'maxNumReplicas': self.request.get(u'maxNumReplicas'),
u'coolDownPeriodSec': self.request.get(u'coolDownPeriodSec'),
u'mode': self.request.get(u'mode'),
u'scaleInControl': AutoscalerScaleincontrol(self.request.get(u'scaleInControl', {}), self.module).from_response(),
u'cpuUtilization': AutoscalerCpuutilization(self.request.get(u'cpuUtilization', {}), self.module).from_response(),
u'customMetricUtilizations': AutoscalerCustommetricutilizationsArray(
self.request.get(u'customMetricUtilizations', []), self.module
@ -724,6 +795,46 @@ class AutoscalerAutoscalingpolicy(object):
)
class AutoscalerScaleincontrol(object):
def __init__(self, request, module):
self.module = module
if request:
self.request = request
else:
self.request = {}
def to_request(self):
return remove_nones_from_dict(
{
u'maxScaledInReplicas': AutoscalerMaxscaledinreplicas(self.request.get('max_scaled_in_replicas', {}), self.module).to_request(),
u'timeWindowSec': self.request.get('time_window_sec'),
}
)
def from_response(self):
return remove_nones_from_dict(
{
u'maxScaledInReplicas': AutoscalerMaxscaledinreplicas(self.request.get(u'maxScaledInReplicas', {}), self.module).from_response(),
u'timeWindowSec': self.request.get(u'timeWindowSec'),
}
)
class AutoscalerMaxscaledinreplicas(object):
def __init__(self, request, module):
self.module = module
if request:
self.request = request
else:
self.request = {}
def to_request(self):
return remove_nones_from_dict({u'fixed': self.request.get('fixed'), u'percent': self.request.get('percent')})
def from_response(self):
return remove_nones_from_dict({u'fixed': self.request.get(u'fixed'), u'percent': self.request.get(u'percent')})
class AutoscalerCpuutilization(object):
def __init__(self, request, module):
self.module = module

View file

@ -183,6 +183,37 @@ resources:
- Defines operating mode for this policy.
returned: success
type: str
scaleInControl:
description:
- Defines scale in controls to reduce the risk of response latency and outages
due to abrupt scale-in events .
returned: success
type: complex
contains:
maxScaledInReplicas:
description:
- A nested object resource.
returned: success
type: complex
contains:
fixed:
description:
- Specifies a fixed number of VM instances. This must be a positive
integer.
returned: success
type: int
percent:
description:
- Specifies a percentage of instances between 0 to 100%, inclusive.
- For example, specify 80 for 80%.
returned: success
type: int
timeWindowSec:
description:
- How long back autoscaling should look when computing recommendations
to include directives regarding slower scale down, as described above.
returned: success
type: int
cpuUtilization:
description:
- Defines the CPU utilization policy that allows the autoscaler to scale

View file

@ -105,6 +105,37 @@ options:
required: false
default: 'ON'
type: str
scale_in_control:
description:
- Defines scale in controls to reduce the risk of response latency and outages
due to abrupt scale-in events .
required: false
type: dict
suboptions:
max_scaled_in_replicas:
description:
- A nested object resource.
required: false
type: dict
suboptions:
fixed:
description:
- Specifies a fixed number of VM instances. This must be a positive
integer.
required: false
type: int
percent:
description:
- Specifies a percentage of instances between 0 to 100%, inclusive.
- For example, specify 80 for 80%.
required: false
type: int
time_window_sec:
description:
- How long back autoscaling should look when computing recommendations
to include directives regarding slower scale down, as described above.
required: false
type: int
cpu_utilization:
description:
- Defines the CPU utilization policy that allows the autoscaler to scale based
@ -370,6 +401,37 @@ autoscalingPolicy:
- Defines operating mode for this policy.
returned: success
type: str
scaleInControl:
description:
- Defines scale in controls to reduce the risk of response latency and outages
due to abrupt scale-in events .
returned: success
type: complex
contains:
maxScaledInReplicas:
description:
- A nested object resource.
returned: success
type: complex
contains:
fixed:
description:
- Specifies a fixed number of VM instances. This must be a positive
integer.
returned: success
type: int
percent:
description:
- Specifies a percentage of instances between 0 to 100%, inclusive.
- For example, specify 80 for 80%.
returned: success
type: int
timeWindowSec:
description:
- How long back autoscaling should look when computing recommendations to
include directives regarding slower scale down, as described above.
returned: success
type: int
cpuUtilization:
description:
- Defines the CPU utilization policy that allows the autoscaler to scale based
@ -480,6 +542,13 @@ def main():
max_num_replicas=dict(required=True, type='int'),
cool_down_period_sec=dict(default=60, type='int'),
mode=dict(default='ON', type='str'),
scale_in_control=dict(
type='dict',
options=dict(
max_scaled_in_replicas=dict(type='dict', options=dict(fixed=dict(type='int'), percent=dict(type='int'))),
time_window_sec=dict(type='int'),
),
),
cpu_utilization=dict(type='dict', options=dict(utilization_target=dict(type='str'))),
custom_metric_utilizations=dict(
type='list',
@ -672,6 +741,7 @@ class RegionAutoscalerAutoscalingpolicy(object):
u'maxNumReplicas': self.request.get('max_num_replicas'),
u'coolDownPeriodSec': self.request.get('cool_down_period_sec'),
u'mode': self.request.get('mode'),
u'scaleInControl': RegionAutoscalerScaleincontrol(self.request.get('scale_in_control', {}), self.module).to_request(),
u'cpuUtilization': RegionAutoscalerCpuutilization(self.request.get('cpu_utilization', {}), self.module).to_request(),
u'customMetricUtilizations': RegionAutoscalerCustommetricutilizationsArray(
self.request.get('custom_metric_utilizations', []), self.module
@ -689,6 +759,7 @@ class RegionAutoscalerAutoscalingpolicy(object):
u'maxNumReplicas': self.request.get(u'maxNumReplicas'),
u'coolDownPeriodSec': self.request.get(u'coolDownPeriodSec'),
u'mode': self.request.get(u'mode'),
u'scaleInControl': RegionAutoscalerScaleincontrol(self.request.get(u'scaleInControl', {}), self.module).from_response(),
u'cpuUtilization': RegionAutoscalerCpuutilization(self.request.get(u'cpuUtilization', {}), self.module).from_response(),
u'customMetricUtilizations': RegionAutoscalerCustommetricutilizationsArray(
self.request.get(u'customMetricUtilizations', []), self.module
@ -700,6 +771,46 @@ class RegionAutoscalerAutoscalingpolicy(object):
)
class RegionAutoscalerScaleincontrol(object):
def __init__(self, request, module):
self.module = module
if request:
self.request = request
else:
self.request = {}
def to_request(self):
return remove_nones_from_dict(
{
u'maxScaledInReplicas': RegionAutoscalerMaxscaledinreplicas(self.request.get('max_scaled_in_replicas', {}), self.module).to_request(),
u'timeWindowSec': self.request.get('time_window_sec'),
}
)
def from_response(self):
return remove_nones_from_dict(
{
u'maxScaledInReplicas': RegionAutoscalerMaxscaledinreplicas(self.request.get(u'maxScaledInReplicas', {}), self.module).from_response(),
u'timeWindowSec': self.request.get(u'timeWindowSec'),
}
)
class RegionAutoscalerMaxscaledinreplicas(object):
def __init__(self, request, module):
self.module = module
if request:
self.request = request
else:
self.request = {}
def to_request(self):
return remove_nones_from_dict({u'fixed': self.request.get('fixed'), u'percent': self.request.get('percent')})
def from_response(self):
return remove_nones_from_dict({u'fixed': self.request.get(u'fixed'), u'percent': self.request.get(u'percent')})
class RegionAutoscalerCpuutilization(object):
def __init__(self, request, module):
self.module = module

View file

@ -183,6 +183,37 @@ resources:
- Defines operating mode for this policy.
returned: success
type: str
scaleInControl:
description:
- Defines scale in controls to reduce the risk of response latency and outages
due to abrupt scale-in events .
returned: success
type: complex
contains:
maxScaledInReplicas:
description:
- A nested object resource.
returned: success
type: complex
contains:
fixed:
description:
- Specifies a fixed number of VM instances. This must be a positive
integer.
returned: success
type: int
percent:
description:
- Specifies a percentage of instances between 0 to 100%, inclusive.
- For example, specify 80 for 80%.
returned: success
type: int
timeWindowSec:
description:
- How long back autoscaling should look when computing recommendations
to include directives regarding slower scale down, as described above.
returned: success
type: int
cpuUtilization:
description:
- Defines the CPU utilization policy that allows the autoscaler to scale