Skip to content

Commit ada12f1

Browse files
committed
feat: add logic for search all regions
1 parent ff68862 commit ada12f1

3 files changed

Lines changed: 33 additions & 4 deletions

File tree

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
from spaceone.monitoring.connector.cloudtrail_connector import CloudTrailConnector
2+
from spaceone.monitoring.connector.ec2_connector import EC2Connector
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import logging
2+
from spaceone.core.utils import load_json
3+
from spaceone.monitoring.libs.connector import AWSConnector
4+
5+
_LOGGER = logging.getLogger(__name__)
6+
7+
8+
class EC2Connector(AWSConnector):
9+
service = 'ec2'
10+
11+
def __init__(self, **kwargs):
12+
super().__init__(**kwargs)
13+
14+
def describe_regions(self):
15+
response = self.client.describe_regions()
16+
return response.get('Regions', [])

src/spaceone/monitoring/manager/monitoring_manager.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from spaceone.core.manager import BaseManager
44
from spaceone.monitoring.conf.monitoring_conf import *
55
from spaceone.monitoring.connector.cloudtrail_connector import CloudTrailConnector
6+
from spaceone.monitoring.connector.ec2_connector import EC2Connector
67
from spaceone.monitoring.model.log_model import Log, Event
78

89
_LOGGER = logging.getLogger(__name__)
@@ -20,6 +21,13 @@ def list_logs(self, params):
2021
event_vos = self.set_events(events, keyword, resource_type)
2122
yield Log({'results': event_vos})
2223

24+
def list_regions(self, params):
25+
ec2_connector: EC2Connector = self.locator.get_connector('EC2Connector', **params)
26+
ec2_connector.set_client('us-east-1')
27+
28+
regions_info = ec2_connector.describe_regions()
29+
return [region_info.get('RegionName') for region_info in regions_info if region_info.get('RegionName')]
30+
2331
def lookup_events(self, params):
2432
events = []
2533

@@ -33,6 +41,8 @@ def lookup_events(self, params):
3341
events.extend(_events)
3442

3543
if resource_type == 'AWS::IAM::User':
44+
region_names = self.list_regions(params)
45+
3646
console_login_target_user_name = ''
3747
iam_user_params = copy.deepcopy(params)
3848
iam_user_params['query']['LookupAttributes'] = \
@@ -42,10 +52,12 @@ def lookup_events(self, params):
4252
if _lookup_attr:
4353
console_login_target_user_name = _lookup_attr[0].get('AttributeValue', '')
4454

45-
for iam_user_events in cloudtrail_connector.lookup_events(iam_user_params):
46-
for _user_event in iam_user_events:
47-
if _user_event.get('Username') == console_login_target_user_name:
48-
events.append(_user_event)
55+
for region_name in region_names:
56+
cloudtrail_connector.set_client(region_name)
57+
for iam_user_events in cloudtrail_connector.lookup_events(iam_user_params):
58+
for _user_event in iam_user_events:
59+
if _user_event.get('Username') == console_login_target_user_name:
60+
events.append(_user_event)
4961

5062
events = sorted(events, key=lambda event: event.get('EventTime'))
5163

0 commit comments

Comments
 (0)