File: autoscale.py

package info (click to toggle)
python-softlayer 5.8.5-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 3,888 kB
  • sloc: python: 41,631; makefile: 289; sh: 43
file content (118 lines) | stat: -rw-r--r-- 4,915 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
"""
    SoftLayer.autoscale
    ~~~~~~~~~~~~~~~~~~~
    Autoscale manager

    :license: MIT, see LICENSE for more details.
"""


class AutoScaleManager(object):
    """Manager for interacting with Autoscale instances."""

    def __init__(self, client):
        self.client = client

    def list(self, mask=None):
        """Calls `SoftLayer_Account::getScaleGroups()`_

        :param mask: optional SoftLayer_Scale_Group objectMask

        .. _SoftLayer_Account::getScaleGroups():
            https://sldn.softlayer.com/reference/services/SoftLayer_Account/getScaleGroups/
        """
        if not mask:
            mask = "mask[status,virtualGuestMemberCount]"

        return self.client.call('SoftLayer_Account', 'getScaleGroups', mask=mask, iter=True)

    def details(self, identifier, mask=None):
        """Calls `SoftLayer_Scale_Group::getObject()`_

        :param identifier: SoftLayer_Scale_Group id
        :param mask: optional SoftLayer_Scale_Group objectMask

        .. _SoftLayer_Scale_Group::getObject():
            https://sldn.softlayer.com/reference/services/SoftLayer_Scale_Group/getObject/
        """
        if not mask:
            mask = """mask[virtualGuestMembers[id,virtualGuest[id,hostname,domain,provisionDate]], terminationPolicy,
                   virtualGuestMemberCount, virtualGuestMemberTemplate[sshKeys],
                   policies[id,name,createDate,cooldown,actions,triggers,scaleActions],
                   networkVlans[networkVlanId,networkVlan[networkSpace,primaryRouter[hostname]]],
                   loadBalancers, regionalGroup[locations]]"""
        return self.client.call('SoftLayer_Scale_Group', 'getObject', id=identifier, mask=mask)

    def get_policy(self, identifier, mask=None):
        """Calls `SoftLayer_Scale_Policy::getObject()`_

        :param identifier: SoftLayer_Scale_Policy id
        :param mask: optional SoftLayer_Scale_Policy objectMask

        .. _SoftLayer_Scale_Policy::getObject():
            https://sldn.softlayer.com/reference/services/SoftLayer_Scale_Policy/getObject/
        """
        if not mask:
            mask = """mask[cooldown, createDate, id, name, actions, triggers[type]

            ]"""

        return self.client.call('SoftLayer_Scale_Policy', 'getObject', id=identifier, mask=mask)

    def scale(self, identifier, amount):
        """Calls `SoftLayer_Scale_Group::scale()`_

        :param identifier: SoftLayer_Scale_Group Id
        :param amount: positive or negative number to scale the group by

        .. _SoftLayer_Scale_Group::scale():
            https://sldn.softlayer.com/reference/services/SoftLayer_Scale_Group/scale/
        """
        return self.client.call('SoftLayer_Scale_Group', 'scale', amount, id=identifier)

    def scale_to(self, identifier, amount):
        """Calls `SoftLayer_Scale_Group::scaleTo()`_

        :param identifier: SoftLayer_Scale_Group Id
        :param amount: number to scale the group to.

        .. _SoftLayer_Scale_Group::scaleTo():
            https://sldn.softlayer.com/reference/services/SoftLayer_Scale_Group/scaleTo/
        """
        return self.client.call('SoftLayer_Scale_Group', 'scaleTo', amount, id=identifier)

    def get_logs(self, identifier, mask=None, object_filter=None):
        """Calls `SoftLayer_Scale_Group::getLogs()`_

        :param identifier: SoftLayer_Scale_Group Id
        :param mask: optional SoftLayer_Scale_Group_Log objectMask
        :param object_filter: optional SoftLayer_Scale_Group_Log objectFilter

        .. _SoftLayer_Scale_Group::getLogs():
            https://sldn.softlayer.com/reference/services/SoftLayer_Scale_Group/getLogs/
        """
        return self.client.call('SoftLayer_Scale_Group', 'getLogs', id=identifier, mask=mask, filter=object_filter,
                                iter=True)

    def get_virtual_guests(self, identifier, mask=None):
        """Calls `SoftLayer_Scale_Group::getVirtualGuestMembers()`_

        :param identifier: SoftLayer_Scale_Group Id
        :param mask: optional SoftLayer_Scale_Member objectMask

        .. _SoftLayer_Scale_Group::getVirtualGuestMembers():
            https://sldn.softlayer.com/reference/services/SoftLayer_Scale_Group/getVirtualGuestMembers/
        """
        return self.client.call('SoftLayer_Scale_Group', 'getVirtualGuestMembers', id=identifier, mask=mask, iter=True)

    def edit(self, identifier, template):
        """Calls `SoftLayer_Scale_Group::editObject()`_

        :param identifier: SoftLayer_Scale_Group id
        :param template: `SoftLayer_Scale_Group`_

        .. _SoftLayer_Scale_Group::editObject():
            https://sldn.softlayer.com/reference/services/SoftLayer_Scale_Group/editObject/
        .. _SoftLayer_Scale_Group: https://sldn.softlayer.com/reference/datatypes/SoftLayer_Scale_Group/
        """
        return self.client.call('SoftLayer_Scale_Group', 'editObject', template, id=identifier)