Revision b19653d1 api/networks.py

b/api/networks.py
13 13
urlpatterns = patterns('synnefo.api.networks',
14 14
    (r'^(?:/|.json|.xml)?$', 'demux'),
15 15
    (r'^/detail(?:.json|.xml)?$', 'list_networks', {'detail': True}),
16
    (r'^/(\w+)(?:.json|.xml)?$', 'network_demux'),
17
    (r'^/(\w+)/action(?:.json|.xml)?$', 'network_action'),
16
    (r'^/(\d+)(?:.json|.xml)?$', 'network_demux'),
17
    (r'^/(\d+)/action(?:.json|.xml)?$', 'network_action'),
18 18
)
19 19

  
20 20

  
......
26 26
    else:
27 27
        return method_not_allowed(request)
28 28

  
29
def network_demux(request, network):
29
def network_demux(request, network_id):
30 30
    if request.method == 'GET':
31
        return get_network_details(request, network)
31
        return get_network_details(request, network_id)
32 32
    elif request.method == 'PUT':
33
        return update_network_name(request, network)
33
        return update_network_name(request, network_id)
34 34
    elif request.method == 'DELETE':
35
        return delete_network(request, network)
35
        return delete_network(request, network_id)
36 36
    else:
37 37
        return method_not_allowed(request)
38 38

  
39 39

  
40 40
def network_to_dict(network, detail=True):
41
    d = {'name': network.name}
41
    d = {'id': network.id, 'name': network.name}
42 42
    if detail:
43 43
        d['servers'] = {'values': [vm.id for vm in network.machines.all()]}
44 44
    return d
......
96 96
    except (KeyError, ValueError):
97 97
        raise BadRequest('Malformed request.')
98 98
    
99
    network, created = Network.objects.get_or_create(name=name, owner=request.user)
100
    if not created:
101
        raise BadRequest('Network already exists.')
99
    network = Network.objects.create(name=name, owner=request.user)
102 100
    networkdict = network_to_dict(network)
103 101
    return render_network(request, networkdict, status=202)
104 102

  
105 103
@api_method('GET')
106
def get_network_details(request, network):
104
def get_network_details(request, network_id):
107 105
    # Normal Response Codes: 200, 203
108 106
    # Error Response Codes: computeFault (400, 500),
109 107
    #                       serviceUnavailable (503),
......
112 110
    #                       itemNotFound (404),
113 111
    #                       overLimit (413)
114 112
    
115
    net = get_network(network, request.user)
113
    net = get_network(network_id, request.user)
116 114
    netdict = network_to_dict(net)
117 115
    return render_network(request, netdict)
118 116

  
119 117
@api_method('PUT')
120
def update_network_name(request, network):
118
def update_network_name(request, network_id):
121 119
    # Normal Response Code: 204
122 120
    # Error Response Codes: computeFault (400, 500),
123 121
    #                       serviceUnavailable (503),
......
134 132
    except (TypeError, KeyError):
135 133
        raise BadRequest('Malformed request.')
136 134

  
137
    net = get_network(network, request.user)
135
    net = get_network(network_id, request.user)
138 136
    net.name = name
139 137
    net.save()
140 138
    return HttpResponse(status=204)
141 139

  
142 140
@api_method('DELETE')
143
def delete_network(request, network):
141
def delete_network(request, network_id):
144 142
    # Normal Response Code: 204
145 143
    # Error Response Codes: computeFault (400, 500),
146 144
    #                       serviceUnavailable (503),
......
149 147
    #                       unauthorized (401),
150 148
    #                       overLimit (413)
151 149
    
152
    net = get_network(network, request.user)
150
    net = get_network(network_id, request.user)
153 151
    net.delete()
154 152
    return HttpResponse(status=204)
155 153

  
156 154
@api_method('POST')
157
def network_action(request, network):
158
    net = get_network(network, request.user)
155
def network_action(request, network_id):
156
    net = get_network(network_id, request.user)
159 157
    req = get_request_dict(request)
160 158
    if len(req) != 1:
161 159
        raise BadRequest('Malformed request.')

Also available in: Unified diff