Statistics
| Branch: | Tag: | Revision:

root / kamaki / clients / compute / rest_api.py @ 6af47576

History | View | Annotate | Download (8 kB)

1 2bfb3db3 Stavros Sachtouris
# Copyright 2012 GRNET S.A. All rights reserved.
2 2bfb3db3 Stavros Sachtouris
#
3 2bfb3db3 Stavros Sachtouris
# Redistribution and use in source and binary forms, with or
4 2bfb3db3 Stavros Sachtouris
# without modification, are permitted provided that the following
5 2bfb3db3 Stavros Sachtouris
# conditions are met:
6 2bfb3db3 Stavros Sachtouris
#
7 2bfb3db3 Stavros Sachtouris
#   1. Redistributions of source code must retain the above
8 2bfb3db3 Stavros Sachtouris
#      copyright notice, this list of conditions and the following
9 2bfb3db3 Stavros Sachtouris
#      disclaimer.
10 2bfb3db3 Stavros Sachtouris
#
11 2bfb3db3 Stavros Sachtouris
#   2. Redistributions in binary form must reproduce the above
12 2bfb3db3 Stavros Sachtouris
#      copyright notice, this list of conditions and the following
13 2bfb3db3 Stavros Sachtouris
#      disclaimer in the documentation and/or other materials
14 2bfb3db3 Stavros Sachtouris
#      provided with the distribution.
15 2bfb3db3 Stavros Sachtouris
#
16 2bfb3db3 Stavros Sachtouris
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 2bfb3db3 Stavros Sachtouris
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 2bfb3db3 Stavros Sachtouris
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 2bfb3db3 Stavros Sachtouris
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 2bfb3db3 Stavros Sachtouris
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 2bfb3db3 Stavros Sachtouris
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 2bfb3db3 Stavros Sachtouris
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 2bfb3db3 Stavros Sachtouris
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 2bfb3db3 Stavros Sachtouris
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 2bfb3db3 Stavros Sachtouris
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 2bfb3db3 Stavros Sachtouris
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 2bfb3db3 Stavros Sachtouris
# POSSIBILITY OF SUCH DAMAGE.
28 2bfb3db3 Stavros Sachtouris
#
29 2bfb3db3 Stavros Sachtouris
# The views and conclusions contained in the software and
30 2bfb3db3 Stavros Sachtouris
# documentation are those of the authors and should not be
31 2bfb3db3 Stavros Sachtouris
# interpreted as representing official policies, either expressed
32 2bfb3db3 Stavros Sachtouris
# or implied, of GRNET S.A.
33 2bfb3db3 Stavros Sachtouris
34 2bfb3db3 Stavros Sachtouris
from kamaki.clients import Client
35 2bfb3db3 Stavros Sachtouris
from kamaki.clients.utils import path4url
36 2bfb3db3 Stavros Sachtouris
import json
37 2bfb3db3 Stavros Sachtouris
38 2bfb3db3 Stavros Sachtouris
39 2bfb3db3 Stavros Sachtouris
class ComputeClientApi(Client):
40 2bfb3db3 Stavros Sachtouris
41 2bfb3db3 Stavros Sachtouris
    def servers_get(self, server_id='', command='', success=200, **kwargs):
42 2bfb3db3 Stavros Sachtouris
        """GET base_url/servers[/server_id][/command] request
43 2bfb3db3 Stavros Sachtouris

44 2bfb3db3 Stavros Sachtouris
        :param server_id: integer (as int or str)
45 2bfb3db3 Stavros Sachtouris

46 2bfb3db3 Stavros Sachtouris
        :param command: 'ips', 'stats', or ''
47 2bfb3db3 Stavros Sachtouris

48 2bfb3db3 Stavros Sachtouris
        :param success: success code or list or tupple of accepted success
49 2bfb3db3 Stavros Sachtouris
            codes. if server response code is not in this list, a ClientError
50 2bfb3db3 Stavros Sachtouris
            raises
51 2bfb3db3 Stavros Sachtouris

52 2bfb3db3 Stavros Sachtouris
        :returns: request response
53 2bfb3db3 Stavros Sachtouris
        """
54 2bfb3db3 Stavros Sachtouris
        path = path4url('servers', server_id, command)
55 2bfb3db3 Stavros Sachtouris
        return self.get(path, success=success, **kwargs)
56 2bfb3db3 Stavros Sachtouris
57 2bfb3db3 Stavros Sachtouris
    def servers_delete(self, server_id='', command='', success=204, **kwargs):
58 2bfb3db3 Stavros Sachtouris
        """DEL ETE base_url/servers[/server_id][/command] request
59 2bfb3db3 Stavros Sachtouris

60 2bfb3db3 Stavros Sachtouris
        :param server_id: integer (as int or str)
61 2bfb3db3 Stavros Sachtouris

62 2bfb3db3 Stavros Sachtouris
        :param command: 'ips', 'stats', or ''
63 2bfb3db3 Stavros Sachtouris

64 2bfb3db3 Stavros Sachtouris
        :param success: success code or list or tupple of accepted success
65 2bfb3db3 Stavros Sachtouris
            codes. if server response code is not in this list, a ClientError
66 2bfb3db3 Stavros Sachtouris
            raises
67 2bfb3db3 Stavros Sachtouris

68 2bfb3db3 Stavros Sachtouris
        :returns: request response
69 2bfb3db3 Stavros Sachtouris
        """
70 2bfb3db3 Stavros Sachtouris
        path = path4url('servers', server_id, command)
71 2bfb3db3 Stavros Sachtouris
        return self.delete(path, success=success, **kwargs)
72 2bfb3db3 Stavros Sachtouris
73 2bfb3db3 Stavros Sachtouris
    def servers_post(
74 2bfb3db3 Stavros Sachtouris
            self,
75 2bfb3db3 Stavros Sachtouris
            server_id='',
76 2bfb3db3 Stavros Sachtouris
            command='',
77 2bfb3db3 Stavros Sachtouris
            json_data=None,
78 2bfb3db3 Stavros Sachtouris
            success=202,
79 2bfb3db3 Stavros Sachtouris
            **kwargs):
80 2bfb3db3 Stavros Sachtouris
        """POST base_url/servers[/server_id]/[command] request
81 2bfb3db3 Stavros Sachtouris

82 2bfb3db3 Stavros Sachtouris
        :param server_id: integer (as int or str)
83 2bfb3db3 Stavros Sachtouris

84 2bfb3db3 Stavros Sachtouris
        :param command: 'ips', 'stats', or ''
85 2bfb3db3 Stavros Sachtouris

86 2bfb3db3 Stavros Sachtouris
        :param json_data: a json-formated dict that will be send as data
87 2bfb3db3 Stavros Sachtouris

88 2bfb3db3 Stavros Sachtouris
        :param success: success code or list or tupple of accepted success
89 2bfb3db3 Stavros Sachtouris
            codes. if server response code is not in this list, a ClientError
90 2bfb3db3 Stavros Sachtouris
            raises
91 2bfb3db3 Stavros Sachtouris

92 2bfb3db3 Stavros Sachtouris
        :returns: request response
93 2bfb3db3 Stavros Sachtouris
        """
94 2bfb3db3 Stavros Sachtouris
        data = json_data
95 2bfb3db3 Stavros Sachtouris
        if json_data:
96 2bfb3db3 Stavros Sachtouris
            data = json.dumps(json_data)
97 2bfb3db3 Stavros Sachtouris
            self.set_header('Content-Type', 'application/json')
98 2bfb3db3 Stavros Sachtouris
            self.set_header('Content-Length', len(data))
99 2bfb3db3 Stavros Sachtouris
100 2bfb3db3 Stavros Sachtouris
        path = path4url('servers', server_id, command)
101 2bfb3db3 Stavros Sachtouris
        return self.post(path, data=data, success=success, **kwargs)
102 2bfb3db3 Stavros Sachtouris
103 2bfb3db3 Stavros Sachtouris
    def servers_put(
104 2bfb3db3 Stavros Sachtouris
            self,
105 2bfb3db3 Stavros Sachtouris
            server_id='',
106 2bfb3db3 Stavros Sachtouris
            command='',
107 2bfb3db3 Stavros Sachtouris
            json_data=None,
108 2bfb3db3 Stavros Sachtouris
            success=204,
109 2bfb3db3 Stavros Sachtouris
            **kwargs):
110 2bfb3db3 Stavros Sachtouris
        """PUT base_url/servers[/server_id]/[command] request
111 2bfb3db3 Stavros Sachtouris

112 2bfb3db3 Stavros Sachtouris
        :param server_id: integer (as int or str)
113 2bfb3db3 Stavros Sachtouris

114 2bfb3db3 Stavros Sachtouris
        :param command: 'ips', 'stats', or ''
115 2bfb3db3 Stavros Sachtouris

116 2bfb3db3 Stavros Sachtouris
        :param json_data: a json-formated dict that will be send as data
117 2bfb3db3 Stavros Sachtouris

118 2bfb3db3 Stavros Sachtouris
        :param success: success code or list or tupple of accepted success
119 2bfb3db3 Stavros Sachtouris
            codes. if server response code is not in this list, a ClientError
120 2bfb3db3 Stavros Sachtouris
            raises
121 2bfb3db3 Stavros Sachtouris

122 2bfb3db3 Stavros Sachtouris
        :returns: request response
123 2bfb3db3 Stavros Sachtouris
        """
124 2bfb3db3 Stavros Sachtouris
        data = json_data
125 2bfb3db3 Stavros Sachtouris
        if json_data is not None:
126 2bfb3db3 Stavros Sachtouris
            data = json.dumps(json_data)
127 2bfb3db3 Stavros Sachtouris
            self.set_header('Content-Type', 'application/json')
128 2bfb3db3 Stavros Sachtouris
            self.set_header('Content-Length', len(data))
129 2bfb3db3 Stavros Sachtouris
130 2bfb3db3 Stavros Sachtouris
        path = path4url('servers', server_id, command)
131 2bfb3db3 Stavros Sachtouris
        return self.put(path, data=data, success=success, **kwargs)
132 2bfb3db3 Stavros Sachtouris
133 2bfb3db3 Stavros Sachtouris
    def flavors_get(self, flavor_id='', command='', success=200, **kwargs):
134 2bfb3db3 Stavros Sachtouris
        """GET base_url[/flavor_id][/command]
135 2bfb3db3 Stavros Sachtouris

136 2bfb3db3 Stavros Sachtouris
        :param flavor_id: integer (str or int)
137 2bfb3db3 Stavros Sachtouris

138 2bfb3db3 Stavros Sachtouris
        :param command: flavor service command
139 2bfb3db3 Stavros Sachtouris

140 2bfb3db3 Stavros Sachtouris
        :param success: success code or list or tupple of accepted success
141 2bfb3db3 Stavros Sachtouris
            codes. if server response code is not in this list, a ClientError
142 2bfb3db3 Stavros Sachtouris
            raises
143 2bfb3db3 Stavros Sachtouris

144 2bfb3db3 Stavros Sachtouris
        :returns: request response
145 2bfb3db3 Stavros Sachtouris
        """
146 2bfb3db3 Stavros Sachtouris
        path = path4url('flavors', flavor_id, command)
147 2bfb3db3 Stavros Sachtouris
        return self.get(path, success=success, **kwargs)
148 2bfb3db3 Stavros Sachtouris
149 2bfb3db3 Stavros Sachtouris
    def images_get(self, image_id='', command='', success=200, **kwargs):
150 2bfb3db3 Stavros Sachtouris
        """GET base_url[/image_id][/command]
151 2bfb3db3 Stavros Sachtouris

152 2bfb3db3 Stavros Sachtouris
        :param image_id: string
153 2bfb3db3 Stavros Sachtouris

154 2bfb3db3 Stavros Sachtouris
        :param command: image server command
155 2bfb3db3 Stavros Sachtouris

156 2bfb3db3 Stavros Sachtouris
        :param success: success code or list or tupple of accepted success
157 2bfb3db3 Stavros Sachtouris
            codes. if server response code is not in this list, a ClientError
158 2bfb3db3 Stavros Sachtouris
            raises
159 2bfb3db3 Stavros Sachtouris

160 2bfb3db3 Stavros Sachtouris
        :returns: request response
161 2bfb3db3 Stavros Sachtouris
        """
162 2bfb3db3 Stavros Sachtouris
        path = path4url('images', image_id, command)
163 2bfb3db3 Stavros Sachtouris
        return self.get(path, success=success, **kwargs)
164 2bfb3db3 Stavros Sachtouris
165 2bfb3db3 Stavros Sachtouris
    def images_delete(self, image_id='', command='', success=204, **kwargs):
166 2bfb3db3 Stavros Sachtouris
        """DELETE base_url[/image_id][/command]
167 2bfb3db3 Stavros Sachtouris

168 2bfb3db3 Stavros Sachtouris
        :param image_id: string
169 2bfb3db3 Stavros Sachtouris

170 2bfb3db3 Stavros Sachtouris
        :param command: image server command
171 2bfb3db3 Stavros Sachtouris

172 2bfb3db3 Stavros Sachtouris
        :param success: success code or list or tuple of accepted success
173 2bfb3db3 Stavros Sachtouris
            codes. if server response code is not in this list, a ClientError
174 2bfb3db3 Stavros Sachtouris
            raises
175 2bfb3db3 Stavros Sachtouris

176 2bfb3db3 Stavros Sachtouris
        :returns: request response
177 2bfb3db3 Stavros Sachtouris
        """
178 2bfb3db3 Stavros Sachtouris
        path = path4url('images', image_id, command)
179 2bfb3db3 Stavros Sachtouris
        return self.delete(path, success=success, **kwargs)
180 2bfb3db3 Stavros Sachtouris
181 2bfb3db3 Stavros Sachtouris
    def images_post(
182 2bfb3db3 Stavros Sachtouris
            self,
183 2bfb3db3 Stavros Sachtouris
            image_id='',
184 2bfb3db3 Stavros Sachtouris
            command='',
185 2bfb3db3 Stavros Sachtouris
            json_data=None,
186 2bfb3db3 Stavros Sachtouris
            success=201,
187 2bfb3db3 Stavros Sachtouris
            **kwargs):
188 2bfb3db3 Stavros Sachtouris
        """POST base_url/images[/image_id]/[command] request
189 2bfb3db3 Stavros Sachtouris

190 2bfb3db3 Stavros Sachtouris
        :param image_id: string
191 2bfb3db3 Stavros Sachtouris

192 2bfb3db3 Stavros Sachtouris
        :param command: image server command
193 2bfb3db3 Stavros Sachtouris

194 2bfb3db3 Stavros Sachtouris
        :param json_data: (dict) will be send as data
195 2bfb3db3 Stavros Sachtouris

196 2bfb3db3 Stavros Sachtouris
        :param success: success code or list or tuple of accepted success
197 2bfb3db3 Stavros Sachtouris
            codes. if server response code is not in this list, a ClientError
198 2bfb3db3 Stavros Sachtouris
            raises
199 2bfb3db3 Stavros Sachtouris

200 2bfb3db3 Stavros Sachtouris
        :returns: request response
201 2bfb3db3 Stavros Sachtouris
        """
202 2bfb3db3 Stavros Sachtouris
        data = json_data
203 2bfb3db3 Stavros Sachtouris
        if json_data is not None:
204 2bfb3db3 Stavros Sachtouris
            data = json.dumps(json_data)
205 2bfb3db3 Stavros Sachtouris
            self.set_header('Content-Type', 'application/json')
206 2bfb3db3 Stavros Sachtouris
            self.set_header('Content-Length', len(data))
207 2bfb3db3 Stavros Sachtouris
208 2bfb3db3 Stavros Sachtouris
        path = path4url('images', image_id, command)
209 2bfb3db3 Stavros Sachtouris
        return self.post(path, data=data, success=success, **kwargs)
210 2bfb3db3 Stavros Sachtouris
211 2bfb3db3 Stavros Sachtouris
    def images_put(
212 2bfb3db3 Stavros Sachtouris
            self,
213 2bfb3db3 Stavros Sachtouris
            image_id='',
214 2bfb3db3 Stavros Sachtouris
            command='',
215 2bfb3db3 Stavros Sachtouris
            json_data=None,
216 2bfb3db3 Stavros Sachtouris
            success=201,
217 2bfb3db3 Stavros Sachtouris
            **kwargs):
218 2bfb3db3 Stavros Sachtouris
        """PUT base_url/images[/image_id]/[command] request
219 2bfb3db3 Stavros Sachtouris

220 2bfb3db3 Stavros Sachtouris
        :param image_id: string
221 2bfb3db3 Stavros Sachtouris

222 2bfb3db3 Stavros Sachtouris
        :param command: image server command
223 2bfb3db3 Stavros Sachtouris

224 2bfb3db3 Stavros Sachtouris
        :param json_data: (dict) will be send as data
225 2bfb3db3 Stavros Sachtouris

226 2bfb3db3 Stavros Sachtouris
        :param success: success code or list or tuple of accepted success
227 2bfb3db3 Stavros Sachtouris
            codes. if server response code is not in this list, a ClientError
228 2bfb3db3 Stavros Sachtouris
            raises
229 2bfb3db3 Stavros Sachtouris

230 2bfb3db3 Stavros Sachtouris
        :returns: request response
231 2bfb3db3 Stavros Sachtouris
        """
232 2bfb3db3 Stavros Sachtouris
        data = json_data
233 2bfb3db3 Stavros Sachtouris
        if json_data is not None:
234 2bfb3db3 Stavros Sachtouris
            data = json.dumps(json_data)
235 2bfb3db3 Stavros Sachtouris
            self.set_header('Content-Type', 'application/json')
236 2bfb3db3 Stavros Sachtouris
            self.set_header('Content-Length', len(data))
237 2bfb3db3 Stavros Sachtouris
238 2bfb3db3 Stavros Sachtouris
        path = path4url('images', image_id, command)
239 2bfb3db3 Stavros Sachtouris
        return self.put(path, data=data, success=success, **kwargs)