Statistics
| Branch: | Tag: | Revision:

root / kamaki / clients / cyclades_rest_api.py @ 1f978111

History | View | Annotate | Download (5.5 kB)

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

51 a382ea56 Stavros Sachtouris
        :param server_id: integer (as int or str)
52 a382ea56 Stavros Sachtouris

53 a382ea56 Stavros Sachtouris
        :param command: 'ips', 'stats', or ''
54 a382ea56 Stavros Sachtouris

55 a382ea56 Stavros Sachtouris
        :param success: success code or list or tupple of accepted success
56 a382ea56 Stavros Sachtouris
            codes. if server response code is not in this list, a ClientError
57 a382ea56 Stavros Sachtouris
            raises
58 a382ea56 Stavros Sachtouris

59 a382ea56 Stavros Sachtouris
        :param changes_since: (date)
60 a382ea56 Stavros Sachtouris

61 a382ea56 Stavros Sachtouris
        :returns: request response
62 a382ea56 Stavros Sachtouris
        """
63 a382ea56 Stavros Sachtouris
        path = path4url('servers', server_id, command)
64 a382ea56 Stavros Sachtouris
        self.set_param('changes-since', changes_since, changes_since)
65 a382ea56 Stavros Sachtouris
        return self.get(path, success=success, **kwargs)
66 a382ea56 Stavros Sachtouris
67 2208858d Stavros Sachtouris
    def networks_get(
68 24ff0a35 Stavros Sachtouris
            self,
69 24ff0a35 Stavros Sachtouris
            network_id='',
70 24ff0a35 Stavros Sachtouris
            command='',
71 24ff0a35 Stavros Sachtouris
            success=(200, 203),
72 24ff0a35 Stavros Sachtouris
            **kwargs):
73 29685b9b Stavros Sachtouris
        """GET base_url/networks[/network_id][/command] request
74 29685b9b Stavros Sachtouris

75 29685b9b Stavros Sachtouris
        :param network_id: integer (str or int)
76 29685b9b Stavros Sachtouris

77 29685b9b Stavros Sachtouris
        :param command: (str) 'detail' or ''
78 29685b9b Stavros Sachtouris

79 29685b9b Stavros Sachtouris
        :param success: success code or list or tuple of accepted success
80 29685b9b Stavros Sachtouris
            codes. if server response code is not in this list, a ClientError
81 29685b9b Stavros Sachtouris
            raises
82 29685b9b Stavros Sachtouris

83 29685b9b Stavros Sachtouris
        :returns: request response
84 29685b9b Stavros Sachtouris
        """
85 29685b9b Stavros Sachtouris
        path = path4url('networks', network_id, command)
86 29685b9b Stavros Sachtouris
        return self.get(path, success=success, **kwargs)
87 29685b9b Stavros Sachtouris
88 2208858d Stavros Sachtouris
    def networks_delete(
89 24ff0a35 Stavros Sachtouris
            self,
90 24ff0a35 Stavros Sachtouris
            network_id='',
91 24ff0a35 Stavros Sachtouris
            command='',
92 24ff0a35 Stavros Sachtouris
            success=204,
93 24ff0a35 Stavros Sachtouris
            **kwargs):
94 29685b9b Stavros Sachtouris
        """DEL ETE base_url/networks[/network_id][/command] request
95 29685b9b Stavros Sachtouris

96 29685b9b Stavros Sachtouris
        :param network_id: integer (str or int)
97 29685b9b Stavros Sachtouris

98 29685b9b Stavros Sachtouris
        :param command: (str) 'detail' or ''
99 29685b9b Stavros Sachtouris

100 29685b9b Stavros Sachtouris
        :param success: success code or list or tuple of accepted success
101 29685b9b Stavros Sachtouris
            codes. if server response code is not in this list, a ClientError
102 29685b9b Stavros Sachtouris
            raises
103 29685b9b Stavros Sachtouris

104 29685b9b Stavros Sachtouris
        :returns: request response
105 29685b9b Stavros Sachtouris
        """
106 29685b9b Stavros Sachtouris
        path = path4url('networks', network_id, command)
107 29685b9b Stavros Sachtouris
        return self.delete(path, success=success, **kwargs)
108 29685b9b Stavros Sachtouris
109 2208858d Stavros Sachtouris
    def networks_post(
110 24ff0a35 Stavros Sachtouris
            self,
111 24ff0a35 Stavros Sachtouris
            network_id='',
112 24ff0a35 Stavros Sachtouris
            command='',
113 24ff0a35 Stavros Sachtouris
            json_data=None,
114 24ff0a35 Stavros Sachtouris
            success=202,
115 24ff0a35 Stavros Sachtouris
            **kwargs):
116 29685b9b Stavros Sachtouris
        """POST base_url/servers[/server_id]/[command] request
117 29685b9b Stavros Sachtouris

118 29685b9b Stavros Sachtouris
        :param network_id: integer (str or int)
119 29685b9b Stavros Sachtouris

120 29685b9b Stavros Sachtouris
        :param command: (str) 'detail' or ''
121 29685b9b Stavros Sachtouris

122 29685b9b Stavros Sachtouris
        :param json_data: (dict) will be send as data
123 29685b9b Stavros Sachtouris

124 29685b9b Stavros Sachtouris
        :param success: success code or list or tuple of accepted success
125 29685b9b Stavros Sachtouris
            codes. if server response code is not in this list, a ClientError
126 29685b9b Stavros Sachtouris
            raises
127 29685b9b Stavros Sachtouris

128 29685b9b Stavros Sachtouris
        :returns: request response
129 29685b9b Stavros Sachtouris
        """
130 29685b9b Stavros Sachtouris
        data = json_data
131 29685b9b Stavros Sachtouris
        if json_data is not None:
132 29685b9b Stavros Sachtouris
            data = json.dumps(json_data)
133 29685b9b Stavros Sachtouris
            self.set_header('Content-Type', 'application/json')
134 29685b9b Stavros Sachtouris
            self.set_header('Content-Length', len(data))
135 29685b9b Stavros Sachtouris
136 29685b9b Stavros Sachtouris
        path = path4url('networks', network_id, command)
137 29685b9b Stavros Sachtouris
        return self.post(path, data=data, success=success, **kwargs)
138 29685b9b Stavros Sachtouris
139 2208858d Stavros Sachtouris
    def networks_put(
140 24ff0a35 Stavros Sachtouris
            self,
141 24ff0a35 Stavros Sachtouris
            network_id='',
142 24ff0a35 Stavros Sachtouris
            command='',
143 24ff0a35 Stavros Sachtouris
            json_data=None,
144 24ff0a35 Stavros Sachtouris
            success=204,
145 24ff0a35 Stavros Sachtouris
            **kwargs):
146 29685b9b Stavros Sachtouris
        """PUT base_url/servers[/server_id]/[command] request
147 29685b9b Stavros Sachtouris

148 29685b9b Stavros Sachtouris
        :param network_id: integer (str or int)
149 29685b9b Stavros Sachtouris

150 29685b9b Stavros Sachtouris
        :param command: (str) 'detail' or ''
151 29685b9b Stavros Sachtouris

152 29685b9b Stavros Sachtouris
        :param json_data: (dict) will be send as data
153 29685b9b Stavros Sachtouris

154 29685b9b Stavros Sachtouris
        :param success: success code or list or tuple of accepted success
155 29685b9b Stavros Sachtouris
            codes. if server response code is not in this list, a ClientError
156 29685b9b Stavros Sachtouris
            raises
157 29685b9b Stavros Sachtouris

158 29685b9b Stavros Sachtouris
        :returns: request response
159 29685b9b Stavros Sachtouris
        """
160 29685b9b Stavros Sachtouris
        data = json_data
161 29685b9b Stavros Sachtouris
        if json_data is not None:
162 29685b9b Stavros Sachtouris
            data = json.dumps(json_data)
163 29685b9b Stavros Sachtouris
            self.set_header('Content-Type', 'application/json')
164 29685b9b Stavros Sachtouris
            self.set_header('Content-Length', len(data))
165 29685b9b Stavros Sachtouris
166 29685b9b Stavros Sachtouris
        path = path4url('networks', network_id, command)
167 29685b9b Stavros Sachtouris
        return self.put(path, data=data, success=success, **kwargs)