mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
remove cross-module imports
* duplicated code instead; use module_utils if code-sharing needs increase
This commit is contained in:
parent
0c29463785
commit
3e18bbec34
4 changed files with 103 additions and 3 deletions
|
@ -326,6 +326,7 @@ state:
|
||||||
''' # NOQA
|
''' # NOQA
|
||||||
|
|
||||||
from ansible.module_utils.azure_rm_common import AzureRMModuleBase, format_resource_id
|
from ansible.module_utils.azure_rm_common import AzureRMModuleBase, format_resource_id
|
||||||
|
from ansible.module_utils._text import to_native
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -333,12 +334,12 @@ try:
|
||||||
from msrestazure.azure_exceptions import CloudError
|
from msrestazure.azure_exceptions import CloudError
|
||||||
from azure.mgmt.monitor.models import WebhookNotification, EmailNotification, AutoscaleNotification, RecurrentSchedule, MetricTrigger, \
|
from azure.mgmt.monitor.models import WebhookNotification, EmailNotification, AutoscaleNotification, RecurrentSchedule, MetricTrigger, \
|
||||||
ScaleAction, AutoscaleSettingResource, AutoscaleProfile, ScaleCapacity, TimeWindow, Recurrence, ScaleRule
|
ScaleAction, AutoscaleSettingResource, AutoscaleProfile, ScaleCapacity, TimeWindow, Recurrence, ScaleRule
|
||||||
from ansible.module_utils._text import to_native
|
|
||||||
except ImportError:
|
except ImportError:
|
||||||
# This is handled in azure_rm_common
|
# This is handled in azure_rm_common
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
# duplicated in azure_rm_autoscale_facts
|
||||||
def timedelta_to_minutes(time):
|
def timedelta_to_minutes(time):
|
||||||
if not time:
|
if not time:
|
||||||
return 0
|
return 0
|
||||||
|
|
|
@ -113,16 +113,97 @@ autoscales:
|
||||||
'''
|
'''
|
||||||
|
|
||||||
from ansible.module_utils.azure_rm_common import AzureRMModuleBase
|
from ansible.module_utils.azure_rm_common import AzureRMModuleBase
|
||||||
|
from ansible.module_utils._text import to_native
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from msrestazure.azure_exceptions import CloudError
|
from msrestazure.azure_exceptions import CloudError
|
||||||
from msrest.serialization import Model
|
from msrest.serialization import Model
|
||||||
from ansible.modules.cloud.azure.azure_rm_autoscale import auto_scale_to_dict
|
|
||||||
except ImportError:
|
except ImportError:
|
||||||
# This is handled in azure_rm_common
|
# This is handled in azure_rm_common
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
# duplicated in azure_rm_autoscale
|
||||||
|
def timedelta_to_minutes(time):
|
||||||
|
if not time:
|
||||||
|
return 0
|
||||||
|
return time.days * 1440 + time.seconds / 60.0 + time.microseconds / 60000000.0
|
||||||
|
|
||||||
|
|
||||||
|
def get_enum_value(item):
|
||||||
|
if 'value' in dir(item):
|
||||||
|
return to_native(item.value)
|
||||||
|
return to_native(item)
|
||||||
|
|
||||||
|
|
||||||
|
def auto_scale_to_dict(instance):
|
||||||
|
if not instance:
|
||||||
|
return dict()
|
||||||
|
return dict(
|
||||||
|
id=to_native(instance.id or ''),
|
||||||
|
name=to_native(instance.name),
|
||||||
|
location=to_native(instance.location),
|
||||||
|
profiles=[profile_to_dict(p) for p in instance.profiles or []],
|
||||||
|
notifications=[notification_to_dict(n) for n in instance.notifications or []],
|
||||||
|
enabled=instance.enabled,
|
||||||
|
target=to_native(instance.target_resource_uri),
|
||||||
|
tags=instance.tags
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def rule_to_dict(rule):
|
||||||
|
if not rule:
|
||||||
|
return dict()
|
||||||
|
result = dict(metric_name=to_native(rule.metric_trigger.metric_name),
|
||||||
|
metric_resource_uri=to_native(rule.metric_trigger.metric_resource_uri),
|
||||||
|
time_grain=timedelta_to_minutes(rule.metric_trigger.time_grain),
|
||||||
|
statistic=get_enum_value(rule.metric_trigger.statistic),
|
||||||
|
time_window=timedelta_to_minutes(rule.metric_trigger.time_window),
|
||||||
|
time_aggregation=get_enum_value(rule.metric_trigger.time_aggregation),
|
||||||
|
operator=get_enum_value(rule.metric_trigger.operator),
|
||||||
|
threshold=float(rule.metric_trigger.threshold))
|
||||||
|
if rule.scale_action and to_native(rule.scale_action.direction) != 'None':
|
||||||
|
result['direction'] = get_enum_value(rule.scale_action.direction)
|
||||||
|
result['type'] = get_enum_value(rule.scale_action.type)
|
||||||
|
result['value'] = to_native(rule.scale_action.value)
|
||||||
|
result['cooldown'] = timedelta_to_minutes(rule.scale_action.cooldown)
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def profile_to_dict(profile):
|
||||||
|
if not profile:
|
||||||
|
return dict()
|
||||||
|
result = dict(name=to_native(profile.name),
|
||||||
|
count=to_native(profile.capacity.default),
|
||||||
|
max_count=to_native(profile.capacity.maximum),
|
||||||
|
min_count=to_native(profile.capacity.minimum))
|
||||||
|
|
||||||
|
if profile.rules:
|
||||||
|
result['rules'] = [rule_to_dict(r) for r in profile.rules]
|
||||||
|
if profile.fixed_date:
|
||||||
|
result['fixed_date_timezone'] = profile.fixed_date.time_zone
|
||||||
|
result['fixed_date_start'] = profile.fixed_date.start
|
||||||
|
result['fixed_date_end'] = profile.fixed_date.end
|
||||||
|
if profile.recurrence:
|
||||||
|
if get_enum_value(profile.recurrence.frequency) != 'None':
|
||||||
|
result['recurrence_frequency'] = get_enum_value(profile.recurrence.frequency)
|
||||||
|
if profile.recurrence.schedule:
|
||||||
|
result['recurrence_timezone'] = to_native(str(profile.recurrence.schedule.time_zone))
|
||||||
|
result['recurrence_days'] = [to_native(r) for r in profile.recurrence.schedule.days]
|
||||||
|
result['recurrence_hours'] = [to_native(r) for r in profile.recurrence.schedule.hours]
|
||||||
|
result['recurrence_mins'] = [to_native(r) for r in profile.recurrence.schedule.minutes]
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def notification_to_dict(notification):
|
||||||
|
if not notification:
|
||||||
|
return dict()
|
||||||
|
return dict(send_to_subscription_administrator=notification.email.send_to_subscription_administrator if notification.email else False,
|
||||||
|
send_to_subscription_co_administrators=notification.email.send_to_subscription_co_administrators if notification.email else False,
|
||||||
|
custom_emails=[to_native(e) for e in notification.email.custom_emails or []],
|
||||||
|
webhooks=[to_native(w.service_url) for w in notification.webhooks or []])
|
||||||
|
|
||||||
|
|
||||||
class AzureRMAutoScaleFacts(AzureRMModuleBase):
|
class AzureRMAutoScaleFacts(AzureRMModuleBase):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
# define user inputs into argument
|
# define user inputs into argument
|
||||||
|
|
|
@ -145,6 +145,7 @@ except ImportError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
# duplicated in azure_rm_managed_disk_facts
|
||||||
def managed_disk_to_dict(managed_disk):
|
def managed_disk_to_dict(managed_disk):
|
||||||
create_data = managed_disk.creation_data
|
create_data = managed_disk.creation_data
|
||||||
return dict(
|
return dict(
|
||||||
|
|
|
@ -79,12 +79,29 @@ from ansible.module_utils.azure_rm_common import AzureRMModuleBase
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from msrestazure.azure_exceptions import CloudError
|
from msrestazure.azure_exceptions import CloudError
|
||||||
from ansible.modules.cloud.azure.azure_rm_managed_disk import managed_disk_to_dict
|
|
||||||
except:
|
except:
|
||||||
# handled in azure_rm_common
|
# handled in azure_rm_common
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
# duplicated in azure_rm_managed_disk
|
||||||
|
def managed_disk_to_dict(managed_disk):
|
||||||
|
create_data = managed_disk.creation_data
|
||||||
|
return dict(
|
||||||
|
id=managed_disk.id,
|
||||||
|
name=managed_disk.name,
|
||||||
|
location=managed_disk.location,
|
||||||
|
tags=managed_disk.tags,
|
||||||
|
create_option=create_data.create_option.value.lower(),
|
||||||
|
source_uri=create_data.source_uri,
|
||||||
|
source_resource_uri=create_data.source_resource_id,
|
||||||
|
disk_size_gb=managed_disk.disk_size_gb,
|
||||||
|
os_type=managed_disk.os_type.value if managed_disk.os_type else None,
|
||||||
|
storage_account_type=managed_disk.sku.name.value if managed_disk.sku else None,
|
||||||
|
managed_by=managed_disk.managed_by
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class AzureRMManagedDiskFacts(AzureRMModuleBase):
|
class AzureRMManagedDiskFacts(AzureRMModuleBase):
|
||||||
"""Utility class to get managed disk facts"""
|
"""Utility class to get managed disk facts"""
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue