Skip to content

Commit 0e0b5ab

Browse files
Merge pull request #1713 from edsonarios/issue1711
Updated command - slcli vlan list
2 parents cdd1d44 + 662b060 commit 0e0b5ab

File tree

2 files changed

+50
-15
lines changed

2 files changed

+50
-15
lines changed

SoftLayer/CLI/vlan/list.py

Lines changed: 38 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,19 @@
99
from SoftLayer.CLI.vlan.detail import get_gateway_firewall
1010
from SoftLayer import utils
1111

12-
COLUMNS = ['id',
13-
'number',
14-
'name',
12+
COLUMNS = ['Id',
13+
'Number',
14+
'Fully qualified name',
15+
'Name',
16+
'Network',
17+
'Data center',
18+
'Pod',
1519
'Gateway/Firewall',
16-
'datacenter',
17-
'hardware',
18-
'virtual_servers',
19-
'public_ips',
20-
'premium',
21-
'tag']
20+
'Hardware',
21+
'Virtual servers',
22+
'Public ips',
23+
'Premium',
24+
'Tags']
2225

2326

2427
@click.command(cls=SoftLayer.CLI.command.SLCommand, )
@@ -35,7 +38,10 @@
3538
show_default=True)
3639
@environment.pass_env
3740
def cli(env, sortby, datacenter, number, name, limit):
38-
"""List VLANs."""
41+
"""List VLANs.
42+
43+
Note: A * Indicates a POD is closing soon. Ex:[red] Pod01* [/red]
44+
"""
3945

4046
mgr = SoftLayer.NetworkManager(env.client)
4147

@@ -46,15 +52,23 @@ def cli(env, sortby, datacenter, number, name, limit):
4652
vlan_number=number,
4753
name=name,
4854
limit=limit)
55+
56+
mask = """mask[name, datacenterLongName, frontendRouterId, capabilities, datacenterId, backendRouterId,
57+
backendRouterName, frontendRouterName]"""
58+
pods = mgr.get_pods(mask=mask)
59+
4960
for vlan in vlans:
5061
billing = 'Yes' if vlan.get('billingItem') else 'No'
5162

5263
table.add_row([
5364
vlan.get('id'),
5465
vlan.get('vlanNumber'),
66+
vlan.get('fullyQualifiedName'),
5567
vlan.get('name') or formatting.blank(),
56-
get_gateway_firewall(vlan),
68+
vlan.get('networkSpace').capitalize(),
5769
utils.lookup(vlan, 'primaryRouter', 'datacenter', 'name'),
70+
get_pod_with_closed_announcement(vlan, pods),
71+
get_gateway_firewall(vlan),
5872
vlan.get('hardwareCount'),
5973
vlan.get('virtualGuestCount'),
6074
vlan.get('totalPrimaryIpAddressCount'),
@@ -63,3 +77,16 @@ def cli(env, sortby, datacenter, number, name, limit):
6377
])
6478

6579
env.fout(table)
80+
81+
82+
def get_pod_with_closed_announcement(vlan, pods):
83+
"""Gets pods with announcement to close"""
84+
for pod in pods:
85+
if utils.lookup(pod, 'backendRouterId') == utils.lookup(vlan, 'primaryRouter', 'id') \
86+
or utils.lookup(pod, 'frontendRouterId') == utils.lookup(vlan, 'primaryRouter', 'id'):
87+
if 'CLOSURE_ANNOUNCED' in utils.lookup(pod, 'capabilities'):
88+
name_pod = utils.lookup(pod, 'name').split('.')[1] + '*'
89+
return "[red]" + name_pod.capitalize() + "[/red]"
90+
else:
91+
return utils.lookup(pod, 'name').split('.')[1].capitalize()
92+
return ''

SoftLayer/managers/network.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -786,17 +786,25 @@ def cancel_item(self, identifier, cancel_immediately,
786786
customer_note,
787787
id=identifier)
788788

789-
def get_pods(self, datacenter=None):
789+
def get_pods(self, datacenter=None, mask=None):
790790
"""Calls SoftLayer_Network_Pod::getAllObjects()
791791
792792
returns list of all network pods and their routers.
793793
"""
794-
_filter = None
795-
794+
_filter = {
795+
'name': {
796+
'operation': 'orderBy',
797+
'options': [{'name': 'sort', 'value': ['DESC']}]
798+
}
799+
}
796800
if datacenter:
797801
_filter = {"datacenterName": {"operation": datacenter}}
798802

799-
return self.client.call('SoftLayer_Network_Pod', 'getAllObjects', filter=_filter)
803+
_mask = None
804+
if mask:
805+
_mask = mask
806+
807+
return self.client.call('SoftLayer_Network_Pod', 'getAllObjects', mask=_mask, filter=_filter)
800808

801809
def get_list_datacenter(self):
802810
"""Calls SoftLayer_Location::getDatacenters()

0 commit comments

Comments
 (0)