Skip to content

Commit c822afc

Browse files
Merge pull request #1099 from erick-sapp/finishfish
Security groups request ids
2 parents 0b83362 + 62e66b7 commit c822afc

File tree

18 files changed

+1528
-32
lines changed

18 files changed

+1528
-32
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
"""Event Logs."""

SoftLayer/CLI/event_log/get.py

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
"""Get Event Logs."""
2+
# :license: MIT, see LICENSE for more details.
3+
4+
import json
5+
6+
import click
7+
8+
import SoftLayer
9+
from SoftLayer.CLI import environment
10+
from SoftLayer.CLI import formatting
11+
12+
COLUMNS = ['event', 'object', 'type', 'date', 'username']
13+
14+
15+
@click.command()
16+
@click.option('--date-min', '-d',
17+
help='The earliest date we want to search for event logs in mm/dd/yyyy format.')
18+
@click.option('--date-max', '-D',
19+
help='The latest date we want to search for event logs in mm/dd/yyyy format.')
20+
@click.option('--obj-event', '-e',
21+
help="The event we want to get event logs for")
22+
@click.option('--obj-id', '-i',
23+
help="The id of the object we want to get event logs for")
24+
@click.option('--obj-type', '-t',
25+
help="The type of the object we want to get event logs for")
26+
@click.option('--utc-offset', '-z',
27+
help="UTC Offset for searching with dates. The default is -0000")
28+
@click.option('--metadata/--no-metadata', default=False,
29+
help="Display metadata if present")
30+
@environment.pass_env
31+
def cli(env, date_min, date_max, obj_event, obj_id, obj_type, utc_offset, metadata):
32+
"""Get Event Logs"""
33+
mgr = SoftLayer.EventLogManager(env.client)
34+
usrmgr = SoftLayer.UserManager(env.client)
35+
request_filter = mgr.build_filter(date_min, date_max, obj_event, obj_id, obj_type, utc_offset)
36+
logs = mgr.get_event_logs(request_filter)
37+
38+
if logs is None:
39+
env.fout('None available.')
40+
return
41+
42+
if metadata and 'metadata' not in COLUMNS:
43+
COLUMNS.append('metadata')
44+
45+
table = formatting.Table(COLUMNS)
46+
if metadata:
47+
table.align['metadata'] = "l"
48+
49+
for log in logs:
50+
user = log['userType']
51+
if user == "CUSTOMER":
52+
user = usrmgr.get_user(log['userId'], "mask[username]")['username']
53+
if metadata:
54+
try:
55+
metadata_data = json.dumps(json.loads(log['metaData']), indent=4, sort_keys=True)
56+
if env.format == "table":
57+
metadata_data = metadata_data.strip("{}\n\t")
58+
except ValueError:
59+
metadata_data = log['metaData']
60+
61+
table.add_row([log['eventName'], log['label'], log['objectName'],
62+
log['eventCreateDate'], user, metadata_data])
63+
else:
64+
table.add_row([log['eventName'], log['label'], log['objectName'],
65+
log['eventCreateDate'], user])
66+
env.fout(table)

SoftLayer/CLI/event_log/types.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
"""Get Event Log Types."""
2+
# :license: MIT, see LICENSE for more details.
3+
4+
import click
5+
6+
import SoftLayer
7+
from SoftLayer.CLI import environment
8+
from SoftLayer.CLI import formatting
9+
10+
COLUMNS = ['types']
11+
12+
13+
@click.command()
14+
@environment.pass_env
15+
def cli(env):
16+
"""Get Event Log Types"""
17+
mgr = SoftLayer.EventLogManager(env.client)
18+
19+
event_log_types = mgr.get_event_log_types()
20+
21+
table = formatting.Table(COLUMNS)
22+
23+
for event_log_type in event_log_types:
24+
table.add_row([event_log_type])
25+
26+
env.fout(table)

SoftLayer/CLI/routes.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,10 @@
9797
('block:volume-order', 'SoftLayer.CLI.block.order:cli'),
9898
('block:volume-set-lun-id', 'SoftLayer.CLI.block.lun:cli'),
9999

100+
('event-log', 'SoftLayer.CLI.event_log'),
101+
('event-log:get', 'SoftLayer.CLI.event_log.get:cli'),
102+
('event-log:types', 'SoftLayer.CLI.event_log.types:cli'),
103+
100104
('file', 'SoftLayer.CLI.file'),
101105
('file:access-authorize', 'SoftLayer.CLI.file.access.authorize:cli'),
102106
('file:access-list', 'SoftLayer.CLI.file.access.list:cli'),
@@ -256,6 +260,7 @@
256260
'SoftLayer.CLI.securitygroup.interface:add'),
257261
('securitygroup:interface-remove',
258262
'SoftLayer.CLI.securitygroup.interface:remove'),
263+
('securitygroup:event-log', 'SoftLayer.CLI.securitygroup.event_log:get_by_request_id'),
259264

260265
('sshkey', 'SoftLayer.CLI.sshkey'),
261266
('sshkey:add', 'SoftLayer.CLI.sshkey.add:cli'),
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
"""Get event logs relating to security groups"""
2+
# :license: MIT, see LICENSE for more details.
3+
4+
import json
5+
6+
import click
7+
8+
import SoftLayer
9+
from SoftLayer.CLI import environment
10+
from SoftLayer.CLI import formatting
11+
12+
COLUMNS = ['event', 'label', 'date', 'metadata']
13+
14+
15+
@click.command()
16+
@click.argument('request_id')
17+
@environment.pass_env
18+
def get_by_request_id(env, request_id):
19+
"""Search for event logs by request id"""
20+
mgr = SoftLayer.NetworkManager(env.client)
21+
22+
logs = mgr.get_event_logs_by_request_id(request_id)
23+
24+
table = formatting.Table(COLUMNS)
25+
table.align['metadata'] = "l"
26+
27+
for log in logs:
28+
metadata = json.dumps(json.loads(log['metaData']), indent=4, sort_keys=True)
29+
30+
table.add_row([log['eventName'], log['label'], log['eventCreateDate'], metadata])
31+
32+
env.fout(table)

SoftLayer/CLI/securitygroup/interface.py

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
'interface',
1515
'ipAddress', ]
1616

17+
REQUEST_COLUMNS = ['requestId']
18+
1719

1820
@click.command()
1921
@click.argument('securitygroup_id')
@@ -90,11 +92,16 @@ def add(env, securitygroup_id, network_component, server, interface):
9092
mgr = SoftLayer.NetworkManager(env.client)
9193
component_id = _get_component_id(env, network_component, server, interface)
9294

93-
success = mgr.attach_securitygroup_component(securitygroup_id,
94-
component_id)
95-
if not success:
95+
ret = mgr.attach_securitygroup_component(securitygroup_id,
96+
component_id)
97+
if not ret:
9698
raise exceptions.CLIAbort("Could not attach network component")
9799

100+
table = formatting.Table(REQUEST_COLUMNS)
101+
table.add_row([ret['requestId']])
102+
103+
env.fout(table)
104+
98105

99106
@click.command()
100107
@click.argument('securitygroup_id')
@@ -113,11 +120,16 @@ def remove(env, securitygroup_id, network_component, server, interface):
113120
mgr = SoftLayer.NetworkManager(env.client)
114121
component_id = _get_component_id(env, network_component, server, interface)
115122

116-
success = mgr.detach_securitygroup_component(securitygroup_id,
117-
component_id)
118-
if not success:
123+
ret = mgr.detach_securitygroup_component(securitygroup_id,
124+
component_id)
125+
if not ret:
119126
raise exceptions.CLIAbort("Could not detach network component")
120127

128+
table = formatting.Table(REQUEST_COLUMNS)
129+
table.add_row([ret['requestId']])
130+
131+
env.fout(table)
132+
121133

122134
def _validate_args(network_component, server, interface):
123135
use_server = bool(server and interface and not network_component)

SoftLayer/CLI/securitygroup/rule.py

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919
'createDate',
2020
'modifyDate']
2121

22+
REQUEST_BOOL_COLUMNS = ['requestId', 'response']
23+
REQUEST_RULES_COLUMNS = ['requestId', 'rules']
24+
2225

2326
@click.command()
2427
@click.argument('securitygroup_id')
@@ -109,6 +112,11 @@ def add(env, securitygroup_id, remote_ip, remote_group,
109112
if not ret:
110113
raise exceptions.CLIAbort("Failed to add security group rule")
111114

115+
table = formatting.Table(REQUEST_RULES_COLUMNS)
116+
table.add_row([ret['requestId'], str(ret['rules'])])
117+
118+
env.fout(table)
119+
112120

113121
@click.command()
114122
@click.argument('securitygroup_id')
@@ -149,9 +157,16 @@ def edit(env, securitygroup_id, rule_id, remote_ip, remote_group,
149157
if protocol:
150158
data['protocol'] = protocol
151159

152-
if not mgr.edit_securitygroup_rule(securitygroup_id, rule_id, **data):
160+
ret = mgr.edit_securitygroup_rule(securitygroup_id, rule_id, **data)
161+
162+
if not ret:
153163
raise exceptions.CLIAbort("Failed to edit security group rule")
154164

165+
table = formatting.Table(REQUEST_BOOL_COLUMNS)
166+
table.add_row([ret['requestId']])
167+
168+
env.fout(table)
169+
155170

156171
@click.command()
157172
@click.argument('securitygroup_id')
@@ -160,5 +175,13 @@ def edit(env, securitygroup_id, rule_id, remote_ip, remote_group,
160175
def remove(env, securitygroup_id, rule_id):
161176
"""Remove a rule from a security group."""
162177
mgr = SoftLayer.NetworkManager(env.client)
163-
if not mgr.remove_securitygroup_rule(securitygroup_id, rule_id):
178+
179+
ret = mgr.remove_securitygroup_rule(securitygroup_id, rule_id)
180+
181+
if not ret:
164182
raise exceptions.CLIAbort("Failed to remove security group rule")
183+
184+
table = formatting.Table(REQUEST_BOOL_COLUMNS)
185+
table.add_row([ret['requestId']])
186+
187+
env.fout(table)

SoftLayer/CLI/user/detail.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
@click.option('--logins', '-l', is_flag=True, default=False,
2424
help="Show login history of this user for the last 30 days")
2525
@click.option('--events', '-e', is_flag=True, default=False,
26-
help="Show audit log for this user.")
26+
help="Show event log for this user.")
2727
@environment.pass_env
2828
def cli(env, identifier, keys, permissions, hardware, virtual, logins, events):
2929
"""User details."""

0 commit comments

Comments
 (0)