Revision fda88be1

b/kamaki/clients/compute/rest_api.py
38 38

  
39 39
class ComputeRestClient(Client):
40 40

  
41
    # NON-cyclades
42
    def limits_get(self, success=200, **kwargs):
43
        """GET base_url/limits
44

  
45
        :param success: success code or list or tupple of accepted success
46
            codes. if server response code is not in this list, a ClientError
47
            raises
48

  
49
        :returns: request response
50
        """
51
        path = path4url('limits')
52
        return self.get(path, success=success, **kwargs)
53

  
54
    def servers_get(
55
            self,
56
            server_id='', detail=False,
57
            changes_since=None,
58
            image=None,
59
            flavor=None,
60
            name=None,
61
            marker=None,
62
            limit=None,
63
            status=None,
64
            host=None,
65
            success=200,
66
            **kwargs):
67
        """GET base_url/servers/['detail'|<server_id>]
68

  
69
        :param server_id: (int or int str) ignored if detail
70

  
71
        :param detail: (boolean)
72

  
73
        --- Parameters ---
74

  
75
        :param changes-since: A time/date stamp for when the server last
76
            changed status
77

  
78
        :param image: Name of the image in URL format
79

  
80
        :param flavor: Name of the flavor in URL format
81

  
82
        :param name: Name of the server as a string
83

  
84
        :param marker: UUID of the server at which you want to set a marker
85

  
86
        :param limit: (int) limit of values to return
87

  
88
        :param status: Status of the server (e.g. filter on "ACTIVE")
89

  
90
        :param host: Name of the host as a string
91

  
92
        :returns: request response
93
        """
94
        if not server_id:
95
            self.set_param('changes-since', changes_since, iff=changes_since)
96
            self.set_param('image', image, iff=image)
97
            self.set_param('flavor', flavor, iff=flavor)
98
            self.set_param('name', name, iff=name)
99
            self.set_param('marker', marker, iff=marker)
100
            self.set_param('limit', limit, iff=limit)
101
            self.set_param('status', status, iff=status)
102
            self.set_param('host', host, iff=host)
103

  
104
        path = path4url('servers', 'detail' if detail else server_id)
105
        return self.get(path, success=success, **kwargs)
106

  
107
    def servers_post(
108
            self,
109
            security_group=None,
110
            user_data=None,
111
            availability_zone=None,
112
            server=None,
113
            imageRef=None,
114
            flavorRef=None,
115
            name=None,
116
            metadata=None,
117
            personality=None,
118
            json_data=None,
119
            success=202,
120
            **kwargs):
121
        """POST base_url/servers
122

  
123
        :param json_data: a json-formated dict that will be send as data
124

  
125
        --- Parameters
126

  
127
        :param security_group: (str)
128

  
129
        :param user_data: Use to pass configuration information or scripts upon
130
            launch. Must be Base64 encoded.
131

  
132
        :param availability_zone: (str)
133

  
134
        :param server: Server
135

  
136
        :param imageRef: ID or full URL.
137

  
138
        :param flavorRef: ID or full URL.
139

  
140
        :param name: (str) The name of the new server
141

  
142
        :param metadata: (dict) Metadata key: value pairs. max size of the key
143
            and value is 255 bytes each.
144

  
145
        :param personality: (str) File path and contents (text only) to inject
146
            into the server at launch. The maximum size of the file path data
147
            is 255 bytes. The maximum limit refers to the number of bytes in
148
            the decoded data and not the number of characters in the encoded
149
            data.
150

  
151
        :returns: request response
152
        """
153

  
154
        self.set_param(security_group, security_group, iff=security_group)
155
        self.set_param(user_data, user_data, iff=user_data)
156
        self.set_param(
157
            availability_zone, availability_zone, iff=availability_zone)
158
        self.set_param(server, server, iff=server)
159
        self.set_param(imageRef, imageRef, iff=imageRef)
160
        self.set_param(flavorRef, flavorRef, iff=flavorRef)
161
        self.set_param(name, name, iff=name)
162
        if metadata:  # don't json.dump None
163
            self.set_param(metadata, json.dumps(metadata))
164
        self.set_param(personality, personality, iff=personality)
165

  
166
        if json_data:
167
            json_data = json.dumps(json_data)
168
            self.set_header('Content-Type', 'application/json')
169
            self.set_header('Content-Length', len(json_data))
170

  
171
        path = path4url('servers')
172
        return self.post(path, data=json_data, success=success, **kwargs)
173

  
174
    def servers_put(self, server_id, json_data=None, success=204, **kwargs):
175
        """PUT base_url/servers/<server_id>
176

  
177
        :param json_data: a json-formated dict that will be send as data
178

  
179
        :param success: success code (iterable of) codes
180

  
181
        :raises ClientError: if returned code not in success list
182

  
183
        :returns: request response
184
        """
185
        if json_data:
186
            json_data = json.dumps(json_data)
187
            self.set_header('Content-Type', 'application/json')
188
            self.set_header('Content-Length', len(json_data))
189
        path = path4url('servers', server_id)
190
        return self.put(path, data=json_data, success=success, **kwargs)
191

  
192
    def servers_delete(self, server_id, success=204, **kwargs):
193
        """DEL ETE base_url/servers/<server_id>
194

  
195
        :param json_data: a json-formated dict that will be send as data
196

  
197
        :param success: success code (iterable of) codes
198

  
199
        :raises ClientError: if returned code not in success list
200

  
201
        :returns: request response
202
        """
203
        path = path4url('servers', server_id)
204
        return self.delete(path, success=success, **kwargs)
205

  
206
    """
207
    def servers_get
208
    def servers_post
209
    def servers_put
210
    def servers_delete
211
    def servers_metadata_get
212
    def servers_metadata_post
213
    def servers_metadata_put
214
    def servers_metadata_delete
215
    def servers_actions_post
216
    def servers_ips_get
217
    """
218

  
219
    """
41 220
    def servers_get(self, server_id='', command='', success=200, **kwargs):
42
        """GET base_url/servers[/server_id][/command] request
221
        ""GET base_url/servers[/server_id][/command] request
43 222

  
44 223
        :param server_id: integer (as int or str)
45 224

  
......
50 229
            raises
51 230

  
52 231
        :returns: request response
53
        """
232
        ""
54 233
        path = path4url('servers', server_id, command)
55 234
        return self.get(path, success=success, **kwargs)
235
    """
56 236

  
57 237
    def servers_delete(self, server_id='', command='', success=204, **kwargs):
58 238
        """DEL ETE base_url/servers[/server_id][/command] request
......
70 250
        path = path4url('servers', server_id, command)
71 251
        return self.delete(path, success=success, **kwargs)
72 252

  
253
    """
73 254
    def servers_post(
74 255
            self,
75 256
            server_id='',
......
77 258
            json_data=None,
78 259
            success=202,
79 260
            **kwargs):
80
        """POST base_url/servers[/server_id]/[command] request
261
        ""POST base_url/servers[/server_id]/[command] request
81 262

  
82 263
        :param server_id: integer (as int or str)
83 264

  
......
90 271
            raises
91 272

  
92 273
        :returns: request response
93
        """
274
        ""
94 275
        data = json_data
95 276
        if json_data:
96 277
            data = json.dumps(json_data)
......
107 288
            json_data=None,
108 289
            success=204,
109 290
            **kwargs):
110
        """PUT base_url/servers[/server_id]/[command] request
291
        ""PUT base_url/servers[/server_id]/[command] request
111 292

  
112 293
        :param server_id: integer (as int or str)
113 294

  
......
120 301
            raises
121 302

  
122 303
        :returns: request response
123
        """
304
        ""
124 305
        data = json_data
125 306
        if json_data is not None:
126 307
            data = json.dumps(json_data)
......
129 310

  
130 311
        path = path4url('servers', server_id, command)
131 312
        return self.put(path, data=data, success=success, **kwargs)
313
    """
132 314

  
133 315
    def flavors_get(self, flavor_id='', command='', success=200, **kwargs):
134 316
        """GET base_url[/flavor_id][/command]

Also available in: Unified diff