From ce193cf9336ea9181690e7a01d6f7a453733442e Mon Sep 17 00:00:00 2001 From: jinyoungmoonDEV Date: Thu, 9 Jan 2025 14:58:40 +0900 Subject: [PATCH 1/2] fix: add port_display --- src/spaceone/inventory/connector/aws_elb_connector/connector.py | 1 + .../inventory/connector/aws_elb_connector/schema/data.py | 1 + .../inventory/connector/aws_elb_connector/schema/resource.py | 2 +- .../connector/aws_elb_connector/schema/service_type.py | 2 +- 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/spaceone/inventory/connector/aws_elb_connector/connector.py b/src/spaceone/inventory/connector/aws_elb_connector/connector.py index 7f184791..f85c309f 100644 --- a/src/spaceone/inventory/connector/aws_elb_connector/connector.py +++ b/src/spaceone/inventory/connector/aws_elb_connector/connector.py @@ -92,6 +92,7 @@ def request_target_group_data(self, region_name): match_tags = self.search_tags(all_tags, raw_tg.get("TargetGroupArn")) raw_tg.update( { + "port_display": str(raw_tg.get("Port")), "region_name": region_name, "cloudtrail": self.set_cloudtrail( region_name, diff --git a/src/spaceone/inventory/connector/aws_elb_connector/schema/data.py b/src/spaceone/inventory/connector/aws_elb_connector/schema/data.py index 06c71e9a..5ce08993 100644 --- a/src/spaceone/inventory/connector/aws_elb_connector/schema/data.py +++ b/src/spaceone/inventory/connector/aws_elb_connector/schema/data.py @@ -201,6 +201,7 @@ class TargetGroup(AWSCloudService): choices=("HTTP", "HTTPS", "TCP", "TLS", "UDP", "TCP_UDP"), ) port = IntType(deserialize_from="Port") + port_display = StringType(deserialize_from="port_display") vpc_id = StringType(deserialize_from="VpcId") health_check_protocol = StringType( deserialize_from="HealthCheckProtocol", diff --git a/src/spaceone/inventory/connector/aws_elb_connector/schema/resource.py b/src/spaceone/inventory/connector/aws_elb_connector/schema/resource.py index b1b1b21d..08170233 100644 --- a/src/spaceone/inventory/connector/aws_elb_connector/schema/resource.py +++ b/src/spaceone/inventory/connector/aws_elb_connector/schema/resource.py @@ -208,7 +208,7 @@ "Target Health", "data.targets_health", fields=[ TextDyField.data_source("ID", "target.id"), - TextDyField.data_source("Port", "target.port"), + TextDyField.data_source("Port", "target.port_display"), TextDyField.data_source("AvailabilityZone", "target.availability_zone"), TextDyField.data_source("HealthCheckPort", "health_check_port"), EnumDyField.data_source( diff --git a/src/spaceone/inventory/connector/aws_elb_connector/schema/service_type.py b/src/spaceone/inventory/connector/aws_elb_connector/schema/service_type.py index 205bf2c1..889a4870 100644 --- a/src/spaceone/inventory/connector/aws_elb_connector/schema/service_type.py +++ b/src/spaceone/inventory/connector/aws_elb_connector/schema/service_type.py @@ -242,7 +242,7 @@ cst_tg._metadata = CloudServiceTypeMeta.set_meta( fields=[ - TextDyField.data_source("Port", "data.port"), + TextDyField.data_source("Port", "data.port_display"), TextDyField.data_source("Protocol", "data.protocol"), TextDyField.data_source("Target Type", "instance_type"), ListDyField.data_source( From e2a7bb115fd9b51e1c082017715b57e9df9aa2f4 Mon Sep 17 00:00:00 2001 From: jinyoungmoonDEV Date: Fri, 10 Jan 2025 11:08:18 +0900 Subject: [PATCH 2/2] fix: fix state field & make search limit --- .../connector/aws_cloud_watch_connector/connector.py | 10 +++++++--- .../aws_cloud_watch_connector/schema/service_type.py | 12 +++++++++--- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/spaceone/inventory/connector/aws_cloud_watch_connector/connector.py b/src/spaceone/inventory/connector/aws_cloud_watch_connector/connector.py index 92bf1df6..080a921e 100644 --- a/src/spaceone/inventory/connector/aws_cloud_watch_connector/connector.py +++ b/src/spaceone/inventory/connector/aws_cloud_watch_connector/connector.py @@ -1,6 +1,7 @@ import logging from typing import Generator, List +from dateutil.relativedelta import relativedelta from spaceone.core.utils import * from spaceone.inventory.connector.aws_cloud_watch_connector.schema.data import Alarms @@ -113,8 +114,7 @@ def _set_alarm_conditions(self, raw_alarm: Alarms) -> None: raw_alarm["conditions"] = f"{metric_name} {operator} {threshold} for {evaluation_periods} datapoionts within {period_minutes} minutes" - @staticmethod - def _set_alarm_actions(raw_alarm: Alarms) -> None: + def _set_alarm_actions(self, raw_alarm: Alarms) -> None: raw_alarm["actions"] = [] actions = raw_alarm["actions"] alarm_actions = raw_alarm.get("AlarmActions", []) @@ -129,7 +129,8 @@ def _set_alarm_actions(raw_alarm: Alarms) -> None: if "sns" in action.lower(): action_type = "Notification" - action_description = action.split(":")[-1] + arn = action.split(":")[-1] + action_description = f"When in alarm, send message to topic \"{arn}\"" action_config = "" elif "lambda" in action.lower(): # lambda_client = boto3.client("lambda", region_name=self.region_name, verify=BOTO3_HTTPS_VERIFIED) @@ -146,10 +147,13 @@ def _set_alarm_actions(raw_alarm: Alarms) -> None: def get_alarm_history(self, alarm_name: str) -> Generator[dict, None, None]: paginator = self.client.get_paginator("describe_alarm_history") + + end_date = datetime.datetime.now() - relativedelta(months=1) response_iterator = paginator.paginate( PaginationConfig={ "AlarmName": alarm_name, "MaxItems": 100, + "EndDate": end_date, "ScanBy": "TimestampDescending", } ) diff --git a/src/spaceone/inventory/connector/aws_cloud_watch_connector/schema/service_type.py b/src/spaceone/inventory/connector/aws_cloud_watch_connector/schema/service_type.py index d296bc62..72ed131e 100644 --- a/src/spaceone/inventory/connector/aws_cloud_watch_connector/schema/service_type.py +++ b/src/spaceone/inventory/connector/aws_cloud_watch_connector/schema/service_type.py @@ -21,9 +21,15 @@ cst_alarms._metadata = CloudServiceTypeMeta.set_meta( fields=[ - EnumDyField.data_source("State", "data.state_value", default_badge={ - 'gray.500': ['INSUFFICIENT_DATA'], 'green.500': ['OK'], 'red.500': ['ALARM'] - }), + EnumDyField.data_source( + "State", + "data.state_value", + default_state={ + "safe": ["OK"], + "disable": ["INSUFFICIENT_DATA"], + "alert": ["ALARM"], + }, + ), DateTimeDyField.data_source("Last State Update", "data.state_updated_timestamp"), TextDyField.data_source("Conditions", "data.conditions"), EnumDyField.data_source("Actions", "data.actions_enabled", default_badge={