Statistics
| Branch: | Tag: | Revision:

root / kamaki / clients / cyclades / rest_api.py @ e51c7d5b

History | View | Annotate | Download (5.9 kB)

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

55 55faa0bc Stavros Sachtouris
        :param network_id: integer (str or int)
56 55faa0bc Stavros Sachtouris

57 55faa0bc Stavros Sachtouris
        :param command: (str) 'detail' or ''
58 55faa0bc Stavros Sachtouris

59 55faa0bc Stavros Sachtouris
        :param success: success code or list or tuple of accepted success
60 55faa0bc Stavros Sachtouris
            codes. if server response code is not in this list, a ClientError
61 55faa0bc Stavros Sachtouris
            raises
62 55faa0bc Stavros Sachtouris

63 55faa0bc Stavros Sachtouris
        :returns: request response
64 55faa0bc Stavros Sachtouris
        """
65 55faa0bc Stavros Sachtouris
        path = path4url('networks', network_id, command)
66 55faa0bc Stavros Sachtouris
        return self.get(path, success=success, **kwargs)
67 55faa0bc Stavros Sachtouris
68 55faa0bc Stavros Sachtouris
    def networks_delete(
69 55faa0bc Stavros Sachtouris
            self,
70 55faa0bc Stavros Sachtouris
            network_id='',
71 55faa0bc Stavros Sachtouris
            command='',
72 55faa0bc Stavros Sachtouris
            success=204,
73 55faa0bc Stavros Sachtouris
            **kwargs):
74 55faa0bc Stavros Sachtouris
        """DEL ETE base_url/networks[/network_id][/command] request
75 55faa0bc Stavros Sachtouris

76 55faa0bc Stavros Sachtouris
        :param network_id: integer (str or int)
77 55faa0bc Stavros Sachtouris

78 55faa0bc Stavros Sachtouris
        :param command: (str) 'detail' or ''
79 55faa0bc Stavros Sachtouris

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

84 55faa0bc Stavros Sachtouris
        :returns: request response
85 55faa0bc Stavros Sachtouris
        """
86 55faa0bc Stavros Sachtouris
        path = path4url('networks', network_id, command)
87 55faa0bc Stavros Sachtouris
        return self.delete(path, success=success, **kwargs)
88 55faa0bc Stavros Sachtouris
89 55faa0bc Stavros Sachtouris
    def networks_post(
90 55faa0bc Stavros Sachtouris
            self,
91 55faa0bc Stavros Sachtouris
            network_id='',
92 55faa0bc Stavros Sachtouris
            command='',
93 55faa0bc Stavros Sachtouris
            json_data=None,
94 55faa0bc Stavros Sachtouris
            success=202,
95 55faa0bc Stavros Sachtouris
            **kwargs):
96 55faa0bc Stavros Sachtouris
        """POST base_url/servers[/server_id]/[command] request
97 55faa0bc Stavros Sachtouris

98 55faa0bc Stavros Sachtouris
        :param network_id: integer (str or int)
99 55faa0bc Stavros Sachtouris

100 55faa0bc Stavros Sachtouris
        :param command: (str) 'detail' or ''
101 55faa0bc Stavros Sachtouris

102 55faa0bc Stavros Sachtouris
        :param json_data: (dict) will be send as data
103 55faa0bc Stavros Sachtouris

104 55faa0bc Stavros Sachtouris
        :param success: success code or list or tuple of accepted success
105 55faa0bc Stavros Sachtouris
            codes. if server response code is not in this list, a ClientError
106 55faa0bc Stavros Sachtouris
            raises
107 55faa0bc Stavros Sachtouris

108 55faa0bc Stavros Sachtouris
        :returns: request response
109 55faa0bc Stavros Sachtouris
        """
110 55faa0bc Stavros Sachtouris
        data = json_data
111 55faa0bc Stavros Sachtouris
        if json_data is not None:
112 55faa0bc Stavros Sachtouris
            data = json.dumps(json_data)
113 55faa0bc Stavros Sachtouris
            self.set_header('Content-Type', 'application/json')
114 55faa0bc Stavros Sachtouris
            self.set_header('Content-Length', len(data))
115 55faa0bc Stavros Sachtouris
116 55faa0bc Stavros Sachtouris
        path = path4url('networks', network_id, command)
117 55faa0bc Stavros Sachtouris
        return self.post(path, data=data, success=success, **kwargs)
118 55faa0bc Stavros Sachtouris
119 55faa0bc Stavros Sachtouris
    def networks_put(
120 55faa0bc Stavros Sachtouris
            self,
121 55faa0bc Stavros Sachtouris
            network_id='',
122 55faa0bc Stavros Sachtouris
            command='',
123 55faa0bc Stavros Sachtouris
            json_data=None,
124 55faa0bc Stavros Sachtouris
            success=204,
125 55faa0bc Stavros Sachtouris
            **kwargs):
126 55faa0bc Stavros Sachtouris
        """PUT base_url/servers[/server_id]/[command] request
127 55faa0bc Stavros Sachtouris

128 55faa0bc Stavros Sachtouris
        :param network_id: integer (str or int)
129 55faa0bc Stavros Sachtouris

130 55faa0bc Stavros Sachtouris
        :param command: (str) 'detail' or ''
131 55faa0bc Stavros Sachtouris

132 55faa0bc Stavros Sachtouris
        :param json_data: (dict) will be send as data
133 55faa0bc Stavros Sachtouris

134 55faa0bc Stavros Sachtouris
        :param success: success code or list or tuple of accepted success
135 55faa0bc Stavros Sachtouris
            codes. if server response code is not in this list, a ClientError
136 55faa0bc Stavros Sachtouris
            raises
137 55faa0bc Stavros Sachtouris

138 55faa0bc Stavros Sachtouris
        :returns: request response
139 55faa0bc Stavros Sachtouris
        """
140 55faa0bc Stavros Sachtouris
        data = json_data
141 55faa0bc Stavros Sachtouris
        if json_data is not None:
142 55faa0bc Stavros Sachtouris
            data = json.dumps(json_data)
143 55faa0bc Stavros Sachtouris
            self.set_header('Content-Type', 'application/json')
144 55faa0bc Stavros Sachtouris
            self.set_header('Content-Length', len(data))
145 55faa0bc Stavros Sachtouris
146 55faa0bc Stavros Sachtouris
        path = path4url('networks', network_id, command)
147 55faa0bc Stavros Sachtouris
        return self.put(path, data=data, success=success, **kwargs)
148 0a62912d Stavros Sachtouris
149 0a62912d Stavros Sachtouris
    def floating_ip_pools_get(self, success=200, **kwargs):
150 0a62912d Stavros Sachtouris
        path = path4url('os-floating-ip-pools')
151 0a62912d Stavros Sachtouris
        return self.get(path, success=success, **kwargs)
152 77d1b504 Stavros Sachtouris
153 03033b54 Stavros Sachtouris
    def floating_ips_get(self, fip_id='', success=200, **kwargs):
154 03033b54 Stavros Sachtouris
        path = path4url('os-floating-ips', fip_id)
155 77d1b504 Stavros Sachtouris
        return self.get(path, success=success, **kwargs)
156 77d1b504 Stavros Sachtouris
157 03033b54 Stavros Sachtouris
    def floating_ips_post(self, json_data, fip_id='', success=201, **kwargs):
158 03033b54 Stavros Sachtouris
        path = path4url('os-floating-ips', fip_id)
159 77d1b504 Stavros Sachtouris
        if json_data is not None:
160 77d1b504 Stavros Sachtouris
            json_data = json.dumps(json_data)
161 77d1b504 Stavros Sachtouris
            self.set_header('Content-Type', 'application/json')
162 77d1b504 Stavros Sachtouris
            self.set_header('Content-Length', len(json_data))
163 77d1b504 Stavros Sachtouris
        return self.post(path, data=json_data, success=success, **kwargs)
164 77d1b504 Stavros Sachtouris
165 03033b54 Stavros Sachtouris
    def floating_ips_delete(self, fip_id, success=200, **kwargs):
166 03033b54 Stavros Sachtouris
        path = path4url('os-floating-ips', fip_id)
167 77d1b504 Stavros Sachtouris
        return self.delete(path, success=success, **kwargs)