Skip to content

Commit 5d5d237

Browse files
Merge pull request softlayer#643 from sudorandom/issue-642
Improve summary information
2 parents 563b237 + eee5d1e commit 5d5d237

4 files changed

Lines changed: 49 additions & 57 deletions

File tree

SoftLayer/CLI/summary.py

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,11 @@
1313
help='Column to sort by',
1414
default='datacenter',
1515
type=click.Choice(['datacenter',
16+
'hardware',
17+
'virtual_servers',
1618
'vlans',
1719
'subnets',
18-
'ips',
19-
'networking',
20-
'hardware',
21-
'vs']))
20+
'public_ips']))
2221
@environment.pass_env
2322
def cli(env, sortby):
2423
"""Account summary."""
@@ -27,19 +26,23 @@ def cli(env, sortby):
2726
datacenters = mgr.summary_by_datacenter()
2827

2928
table = formatting.Table([
30-
'datacenter', 'vlans', 'subnets', 'ips', 'networking', 'hardware', 'vs'
29+
'datacenter',
30+
'hardware',
31+
'virtual_servers',
32+
'vlans',
33+
'subnets',
34+
'public_ips',
3135
])
3236
table.sortby = sortby
3337

3438
for name, datacenter in datacenters.items():
3539
table.add_row([
3640
name,
37-
datacenter['vlanCount'],
38-
datacenter['subnetCount'],
39-
datacenter['primaryIpCount'],
40-
datacenter['networkingCount'],
41-
datacenter['hardwareCount'],
42-
datacenter['virtualGuestCount'],
41+
datacenter['hardware_count'],
42+
datacenter['virtual_guest_count'],
43+
datacenter['vlan_count'],
44+
datacenter['subnet_count'],
45+
datacenter['public_ip_count'],
4346
])
4447

4548
env.fout(table)

SoftLayer/managers/network.py

Lines changed: 28 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
66
:license: MIT, see LICENSE for more details.
77
"""
8+
import collections
89

910
from SoftLayer import exceptions
1011
from SoftLayer import utils
@@ -13,14 +14,14 @@
1314
'datacenter',
1415
'ipAddressCount',
1516
'virtualGuests'])
16-
DEFAULT_VLAN_MASK = ','.join(['firewallInterfaces',
17-
'hardware',
18-
'networkComponents',
19-
'primaryRouter' # Lack of comma intential
20-
'[id, fullyQualifiedDomainName, datacenter]',
21-
'subnets',
22-
'totalPrimaryIpAddressCount',
23-
'virtualGuests'])
17+
DEFAULT_VLAN_MASK = ','.join([
18+
'firewallInterfaces',
19+
'hardware',
20+
'primaryRouter[id, fullyQualifiedDomainName, datacenter]',
21+
'subnets',
22+
'totalPrimaryIpAddressCount',
23+
'virtualGuests',
24+
])
2425

2526

2627
class NetworkManager(object):
@@ -333,45 +334,35 @@ def summary_by_datacenter(self):
333334
other objects residing within that data center.
334335
335336
"""
336-
datacenters = {}
337-
unique_vms = []
338-
unique_servers = []
339-
unique_network = []
337+
datacenters = collections.defaultdict(lambda: {
338+
'hardware_count': 0,
339+
'public_ip_count': 0,
340+
'subnet_count': 0,
341+
'virtual_guest_count': 0,
342+
'vlan_count': 0,
343+
})
344+
unique_vms = set()
345+
unique_servers = set()
340346

341347
for vlan in self.list_vlans():
342348
name = utils.lookup(vlan, 'primaryRouter', 'datacenter', 'name')
343-
if name not in datacenters:
344-
datacenters[name] = {
345-
'hardwareCount': 0,
346-
'networkingCount': 0,
347-
'primaryIpCount': 0,
348-
'subnetCount': 0,
349-
'virtualGuestCount': 0,
350-
'vlanCount': 0,
351-
}
352-
353-
datacenters[name]['vlanCount'] += 1
349+
350+
datacenters[name]['vlan_count'] += 1
351+
datacenters[name]['public_ip_count'] += (
352+
vlan['totalPrimaryIpAddressCount'])
353+
datacenters[name]['vlan_count'] += len(vlan['subnets'])
354354

355355
for hardware in vlan['hardware']:
356356
if hardware['id'] not in unique_servers:
357-
datacenters[name]['hardwareCount'] += 1
358-
unique_servers.append(hardware['id'])
359-
360-
for net in vlan['networkComponents']:
361-
if net['id'] not in unique_network:
362-
datacenters[name]['networkingCount'] += 1
363-
unique_network.append(net['id'])
357+
datacenters[name]['hardware_count'] += 1
358+
unique_servers.add(hardware['id'])
364359

365360
for virtual_guest in vlan['virtualGuests']:
366361
if virtual_guest['id'] not in unique_vms:
367-
datacenters[name]['virtualGuestCount'] += 1
368-
unique_vms.append(virtual_guest['id'])
369-
370-
datacenters[name]['primaryIpCount'] += (
371-
vlan['totalPrimaryIpAddressCount'])
372-
datacenters[name]['subnetCount'] += len(vlan['subnets'])
362+
datacenters[name]['virtual_guest_count'] += 1
363+
unique_vms.add(virtual_guest['id'])
373364

374-
return datacenters
365+
return dict(datacenters)
375366

376367
def unassign_global_ip(self, global_ip_id):
377368
"""Unassigns a global IP address from a target.

tests/CLI/modules/summary_tests.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,10 @@ def test_summary(self):
1717
expected = [
1818
{
1919
'datacenter': 'dal00',
20-
'networking': 1,
2120
'subnets': 0,
2221
'hardware': 1,
23-
'ips': 6,
24-
'vs': 1,
22+
'public_ips': 6,
23+
'virtual_servers': 1,
2524
'vlans': 3
2625
}
2726
]

tests/managers/network_tests.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -241,12 +241,11 @@ def test_list_vlans_with_filters(self):
241241
def test_summary_by_datacenter(self):
242242
result = self.network.summary_by_datacenter()
243243

244-
expected = {'dal00': {'hardwareCount': 1,
245-
'networkingCount': 1,
246-
'virtualGuestCount': 1,
247-
'subnetCount': 0,
248-
'primaryIpCount': 6,
249-
'vlanCount': 3}}
244+
expected = {'dal00': {'hardware_count': 1,
245+
'virtual_guest_count': 1,
246+
'subnet_count': 0,
247+
'public_ip_count': 6,
248+
'vlan_count': 3}}
250249
self.assertEqual(expected, result)
251250

252251
def test_resolve_global_ip_ids(self):

0 commit comments

Comments
 (0)