File: autoscale.py

package info (click to toggle)
python-softlayer 6.1.4-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 5,100 kB
  • sloc: python: 53,771; makefile: 289; sh: 57
file content (139 lines) | stat: -rw-r--r-- 5,854 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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
"""
    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)

    def create(self, template):
        """Calls `SoftLayer_Scale_Group::createObject()`_

               :param template: `SoftLayer_Scale_Group`_

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

    def delete(self, identifier):
        """Calls `SoftLayer_Scale_Group::forceDeleteObject()`_

        :param identifier: SoftLayer_Scale_Group id

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