Revision 65a8b1da

b/kamaki/clients/compute/rest_api.py
171 171
        path = path4url('servers')
172 172
        return self.post(path, data=json_data, success=success, **kwargs)
173 173

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

  
177 180
        :param json_data: a json-formated dict that will be send as data
......
182 185

  
183 186
        :returns: request response
184 187
        """
188
        self.set_param('server', server_name, iff=server_name)
189

  
185 190
        if json_data:
186 191
            json_data = json.dumps(json_data)
187 192
            self.set_header('Content-Type', 'application/json')
......
203 208
        path = path4url('servers', server_id)
204 209
        return self.delete(path, success=success, **kwargs)
205 210

  
211
    def servers_metadata_get(self, server_id, key=None, success=200, **kwargs):
212
        """GET base_url/servers/<server_id>/metadata[/key]
213

  
214
        :returns: request response
215
        """
216
        path = path4url('servers', server_id, 'metadata', key or '')
217
        return self.get(path, success=success, **kwargs)
218

  
219
    def servers_metadata_post(
220
            self, server_id, json_data=None, success=202, **kwargs):
221
        """POST base_url/servers/<server_id>/metadata
222

  
223
        :returns: request response
224
        """
225
        if json_data:
226
            json_data = json.dumps(json_data)
227
            self.set_header('Content-Type', 'application/json')
228
            self.set_header('Content-Length', len(json_data))
229
        path = path4url('servers', server_id, 'metadata')
230
        return self.post(path, data=json_data, success=success, **kwargs)
231

  
232
    def servers_metadata_put(
233
            self, server_id, key=None, json_data=None, success=204, **kwargs):
234
        """PUT base_url/servers/<server_id>/metadata[/key]
235

  
236
        :returns: request response
237
        """
238
        if json_data:
239
            json_data = json.dumps(json_data)
240
            self.set_header('Content-Type', 'application/json')
241
            self.set_header('Content-Length', len(json_data))
242
        path = path4url('servers', server_id, 'metadata', key or '')
243
        return self.put(path, data=json_data, success=success, **kwargs)
244

  
245
    def servers_metadata_delete(self, server_id, key, success=204, **kwargs):
246
        """DEL ETE base_url/servers/<server_id>/metadata[/key]
247

  
248
        :returns: request response
249
        """
250
        path = path4url('servers', server_id, 'metadata', key)
251
        return self.delete(path, success=success, **kwargs)
252

  
206 253
    """
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 254
    def servers_actions_post
216 255
    def servers_ips_get
217 256
    """
......
231 270
        :returns: request response
232 271
        ""
233 272
        path = path4url('servers', server_id, command)
234
        return self.get(path, success=success, **kwargs)
235
    """
273
    ""
236 274

  
237 275
    def servers_delete(self, server_id='', command='', success=204, **kwargs):
238
        """DEL ETE base_url/servers[/server_id][/command] request
276
        ""DEL ETE base_url/servers[/server_id][/command] request
239 277

  
240 278
        :param server_id: integer (as int or str)
241 279

  
......
246 284
            raises
247 285

  
248 286
        :returns: request response
249
        """
287
        ""
250 288
        path = path4url('servers', server_id, command)
251 289
        return self.delete(path, success=success, **kwargs)
252 290

  
253
    """
254 291
    def servers_post(
255 292
            self,
256 293
            server_id='',
b/kamaki/clients/cyclades/__init__.py
61 61

  
62 62
        :raises ClientError: wraps request errors
63 63
        """
64
        req = {'server': {'name': name,
65
                          'flavorRef': flavor_id,
66
                          'imageRef': image_id}}
67

  
68 64
        image = self.get_image_details(image_id)
69 65
        metadata = metadata or dict()
70 66
        for key in ('os', 'users'):
......
72 68
                metadata[key] = image['metadata'][key]
73 69
            except KeyError:
74 70
                pass
75
        if metadata:
76
            req['server']['metadata'] = metadata
77

  
78
        if personality:
79
            req['server']['personality'] = personality
80 71

  
81
        try:
82
            r = self.servers_post(json_data=req)
83
        except ClientError as err:
84
            try:
85
                if isinstance(err.details, list):
86
                    tmp_err = err.details
87
                else:
88
                    errd = '%s' % err.details
89
                    tmp_err = errd.split(',')
90
                tmp_err = tmp_err[0].split(':')
91
                tmp_err = tmp_err[2].split('"')
92
                err.message = tmp_err[1]
93
            finally:
94
                raise err
95
        return r.json['server']
72
        return super(CycladesClient, self).create_server(
73
            name, flavor_id, image_id,
74
            metadata=metadata, personality=personality)
96 75

  
97 76
    def start_server(self, server_id):
98 77
        """Submit a startup request
......
163 142

  
164 143
        :returns: list of server ids and names
165 144
        """
166
        detail = 'detail' if detail else ''
167
        r = self.servers_get(command=detail, changes_since=changes_since)
145
        r = self.servers_get(detail=bool(detail), changes_since=changes_since)
168 146
        return r.json['servers']
169 147

  
170 148
    def list_server_nics(self, server_id):

Also available in: Unified diff