Skip to content

Commit 6f60c7c

Browse files
Merge branch 'autoscale' of github.com:allmightyspiff/softlayer-python into autoscale
2 parents 65baab0 + e00e4cf commit 6f60c7c

File tree

5 files changed

+114
-0
lines changed

5 files changed

+114
-0
lines changed

SoftLayer/CLI/autoscale/__init__.py

Whitespace-only changes.

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: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
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+
@environment.pass_env
18+
def cli(env):
19+
"""List AutoScale Groups."""
20+
21+
autoscale = AutoScaleManager(env.client)
22+
groups = autoscale.list()
23+
# print(groups)
24+
# pp(groups)
25+
table = formatting.Table(["Id", "Name", "Status", "Min/Max", "Running"])
26+
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+
])
33+
34+
35+
env.fout(table)

SoftLayer/CLI/routes.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,10 @@
302302

303303
('report', 'SoftLayer.CLI.report'),
304304
('report:bandwidth', 'SoftLayer.CLI.report.bandwidth:cli'),
305+
306+
('autoscale', 'SoftLayer.CLI.autoscale'),
307+
('autoscale:list', 'SoftLayer.CLI.autoscale.list:cli'),
308+
('autoscale:detail', 'SoftLayer.CLI.autoscale.detail:cli'),
305309
]
306310

307311
ALL_ALIASES = {

SoftLayer/managers/autoscale.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
"""
2+
SoftLayer.autoscale
3+
~~~~~~~~~~~~
4+
Autoscale manager
5+
6+
:license: MIT, see LICENSE for more details.
7+
"""
8+
9+
10+
11+
class AutoScaleManager(object):
12+
13+
def __init__(self, client):
14+
self.client = client
15+
16+
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)