Skip to content

Commit e00e4cf

Browse files
autoscale detail and list
1 parent ef284ae commit e00e4cf

File tree

4 files changed

+74
-7
lines changed

4 files changed

+74
-7
lines changed

SoftLayer/CLI/autoscale/detail.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
"""List Autoscale groups."""
2+
# :license: MIT, see LICENSE for more details.
3+
4+
import click
5+
6+
import SoftLayer
7+
from SoftLayer.CLI import columns as column_helper
8+
from SoftLayer.CLI import environment
9+
from SoftLayer.CLI import formatting
10+
from SoftLayer.CLI import helpers
11+
from SoftLayer.managers.autoscale import AutoScaleManager
12+
from SoftLayer import utils
13+
14+
from pprint import pprint as pp
15+
16+
@click.command()
17+
@click.argument('identifier')
18+
@environment.pass_env
19+
def cli(env, identifier):
20+
"""List AutoScale Groups."""
21+
22+
autoscale = AutoScaleManager(env.client)
23+
group = autoscale.details(identifier)
24+
# print(groups)
25+
# pp(group)
26+
table = formatting.KeyValueTable(["Name", "Value"])
27+
28+
table.add_row(['Id', group.get('id')])
29+
# Ideally we would use regionalGroup->preferredDatacenter, but that generates an error.
30+
table.add_row(['Datacenter', group['regionalGroup']['locations'][0]['longName']])
31+
table.add_row(['Termination', utils.lookup(group, 'terminationPolicy', 'name')])
32+
table.add_row(['Minimum Members', group.get('minimumMemberCount')])
33+
table.add_row(['Maximum Members', group.get('maximumMemberCount')])
34+
table.add_row(['Current Members', group.get('virtualGuestMemberCount')])
35+
table.add_row(['Last Action', utils.clean_time(group.get('lastActionDate'))])
36+
37+
for network in group.get('networkVlans'):
38+
network_type = utils.lookup(network, 'networkVlan', 'networkSpace')
39+
router = utils.lookup(network, 'networkVlan', 'primaryRouter', 'hostname')
40+
vlan_number = utils.lookup(network, 'networkVlan', 'vlanNumber')
41+
vlan_name = "{}.{}".format(router, vlan_number)
42+
table.add_row([network_type, vlan_name])
43+
44+
45+
46+
47+
env.fout(table)

SoftLayer/CLI/autoscale/list.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
"""List virtual servers."""
1+
"""List Autoscale groups."""
22
# :license: MIT, see LICENSE for more details.
33

44
import click
@@ -9,7 +9,9 @@
99
from SoftLayer.CLI import formatting
1010
from SoftLayer.CLI import helpers
1111
from SoftLayer.managers.autoscale import AutoScaleManager
12+
from SoftLayer import utils
1213

14+
from pprint import pprint as pp
1315

1416
@click.command()
1517
@environment.pass_env
@@ -18,8 +20,16 @@ def cli(env):
1820

1921
autoscale = AutoScaleManager(env.client)
2022
groups = autoscale.list()
21-
print(groups)
22-
# table = formatting.Table()
23+
# print(groups)
24+
# pp(groups)
25+
table = formatting.Table(["Id", "Name", "Status", "Min/Max", "Running"])
2326

27+
for group in groups:
28+
status = utils.lookup(group, 'status', 'name')
29+
min_max = "{}/{}".format(group.get('minimumMemberCount', '-'), group.get('maximumMemberCount'), '-')
30+
table.add_row([
31+
group.get('id'), group.get('name'), status, min_max, group.get('virtualGuestMemberCount')
32+
])
2433

25-
# env.fout(table)
34+
35+
env.fout(table)

SoftLayer/CLI/routes.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,7 @@
305305

306306
('autoscale', 'SoftLayer.CLI.autoscale'),
307307
('autoscale:list', 'SoftLayer.CLI.autoscale.list:cli'),
308+
('autoscale:detail', 'SoftLayer.CLI.autoscale.detail:cli'),
308309
]
309310

310311
ALL_ALIASES = {

SoftLayer/managers/autoscale.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,15 @@ def __init__(self, client):
1414
self.client = client
1515

1616

17-
def list(self):
18-
print("LISTING....")
19-
return True
17+
def list(self, mask=None):
18+
if not mask:
19+
mask = "mask[status,virtualGuestMemberCount]"
20+
21+
return self.client.call('SoftLayer_Account', 'getScaleGroups', mask=mask, iter=True)
22+
23+
def details(self, identifier, mask=None):
24+
if not mask:
25+
mask = """mask[virtualGuestMembers, terminationPolicy, policies, virtualGuestMemberCount,
26+
networkVlans[networkVlanId,networkVlan[networkSpace,primaryRouter[hostname]]],
27+
loadBalancers, regionalGroup[locations]]"""
28+
return self.client.call('SoftLayer_Scale_Group', 'getObject', id=identifier, mask=mask)

0 commit comments

Comments
 (0)