Revision 6ef51e9f snf-app/synnefo/api/networks.py
b/snf-app/synnefo/api/networks.py | ||
---|---|---|
1 |
# Copyright 2011 GRNET S.A. All rights reserved. |
|
1 |
# Copyright 2011-2012 GRNET S.A. All rights reserved.
|
|
2 | 2 |
# |
3 | 3 |
# Redistribution and use in source and binary forms, with or |
4 | 4 |
# without modification, are permitted provided that the following |
... | ... | |
65 | 65 |
else: |
66 | 66 |
return method_not_allowed(request) |
67 | 67 |
|
68 |
|
|
68 | 69 |
def network_demux(request, network_id): |
69 | 70 |
if request.method == 'GET': |
70 | 71 |
return get_network_details(request, network_id) |
... | ... | |
76 | 77 |
return method_not_allowed(request) |
77 | 78 |
|
78 | 79 |
|
79 |
def network_to_dict(network, user, detail=True): |
|
80 |
def network_to_dict(network, user_id, detail=True):
|
|
80 | 81 |
network_id = str(network.id) if not network.public else 'public' |
81 | 82 |
d = {'id': network_id, 'name': network.name} |
82 | 83 |
if detail: |
83 | 84 |
d['updated'] = util.isoformat(network.updated) |
84 | 85 |
d['created'] = util.isoformat(network.created) |
85 | 86 |
d['status'] = network.state |
86 |
servers = [vm.id for vm in network.machines.filter(owner=user)]
|
|
87 |
servers = [vm.id for vm in network.machines.filter(userid=user_id)]
|
|
87 | 88 |
d['servers'] = {'values': servers} |
88 | 89 |
return d |
89 | 90 |
|
91 |
|
|
90 | 92 |
def render_network(request, networkdict, status=200): |
91 | 93 |
if request.serialization == 'xml': |
92 | 94 |
data = render_to_string('network.xml', {'network': networkdict}) |
... | ... | |
105 | 107 |
# overLimit (413) |
106 | 108 |
|
107 | 109 |
log.debug('list_networks detail=%s', detail) |
108 |
owner = request.user |
|
109 | 110 |
since = util.isoparse(request.GET.get('changes-since')) |
110 |
user_networks = Network.objects.filter(Q(owner=owner) | Q(public=True)) |
|
111 |
user_networks = Network.objects.filter( |
|
112 |
Q(userid=request.user) | Q(public=True)) |
|
111 | 113 |
|
112 | 114 |
if since: |
113 | 115 |
user_networks = user_networks.filter(updated__gte=since) |
... | ... | |
116 | 118 |
else: |
117 | 119 |
user_networks = user_networks.filter(state='ACTIVE') |
118 | 120 |
|
119 |
networks = [network_to_dict(network, owner, detail)
|
|
121 |
networks = [network_to_dict(network, request.user, detail)
|
|
120 | 122 |
for network in user_networks] |
121 | 123 |
|
122 | 124 |
if request.serialization == 'xml': |
... | ... | |
128 | 130 |
|
129 | 131 |
return HttpResponse(data, status=200) |
130 | 132 |
|
133 |
|
|
131 | 134 |
@util.api_method('POST') |
132 | 135 |
def create_network(request): |
133 | 136 |
# Normal Response Code: 202 |
... | ... | |
154 | 157 |
networkdict = network_to_dict(network, request.user) |
155 | 158 |
return render_network(request, networkdict, status=202) |
156 | 159 |
|
160 |
|
|
157 | 161 |
@util.api_method('GET') |
158 | 162 |
def get_network_details(request, network_id): |
159 | 163 |
# Normal Response Codes: 200, 203 |
... | ... | |
169 | 173 |
netdict = network_to_dict(net, request.user) |
170 | 174 |
return render_network(request, netdict) |
171 | 175 |
|
176 |
|
|
172 | 177 |
@util.api_method('PUT') |
173 | 178 |
def update_network_name(request, network_id): |
174 | 179 |
# Normal Response Code: 204 |
... | ... | |
195 | 200 |
net.save() |
196 | 201 |
return HttpResponse(status=204) |
197 | 202 |
|
203 |
|
|
198 | 204 |
@util.api_method('DELETE') |
199 | 205 |
def delete_network(request, network_id): |
200 | 206 |
# Normal Response Code: 204 |
... | ... | |
212 | 218 |
backend.delete_network(net) |
213 | 219 |
return HttpResponse(status=204) |
214 | 220 |
|
221 |
|
|
215 | 222 |
@util.api_method('POST') |
216 | 223 |
def network_action(request, network_id): |
217 | 224 |
req = util.get_request_dict(request) |
Also available in: Unified diff