Revision 882b662f snf-cyclades-app/synnefo/neutron/subnet_views.py

b/snf-cyclades-app/synnefo/neutron/subnet_views.py
44 44

  
45 45
import ipaddr
46 46

  
47
log = getLogger('synnefo.neutron')
47
log = getLogger(__name__)
48 48

  
49 49

  
50 50
def demux(request):
51 51
    if request.method == 'GET':
52 52
        return list_subnets(request)
53 53
    elif request.method == 'POST':
54
        #return create_network(request)
55
        return HttpResponse("in subnet POST")
54
        return create_subnet(request)
56 55
    else:
57 56
        return api.api_method_not_allowed(request)
58 57

  
......
61 60
    if request.method == 'GET':
62 61
        return get_subnet(request, offset)
63 62
    elif request.method == 'DELETE':
64
        return delete_network(request, offset)
63
        return delete_subnet(request, offset)
65 64
    elif request.method == 'PUT':
66
        #return update_network(request,offset)
67
        return HttpResponse("in subnet det put")
65
        return update_subnet(request, offset)
68 66
    else:
69 67
        return api.api_method_not_allowed(request)
70 68

  
......
85 83
@api.api_method(http_method='POST', user_required=True, logger=log)
86 84
def create_subnet(request):
87 85
    '''Create a subnet'''
86

  
87
    dic = utils.get_request_dict(request)
88
    log.info('create subnet %s', dic)
88 89
    user_id = request.user_uniq
89 90

  
90 91
    try:
91
        dic = utils.get_request_dict(request)
92 92
        subnet = dic['subnet']
93 93
        network_id = subnet['network_id']
94 94
        cidr = subnet['cidr']
......
97 97

  
98 98
    ipversion = subnet.get('ip_version', 4)
99 99
    if ipversion not in [4, 6]:
100
        raise api.faults.BadRequests("Malformed IP version type")
100
        raise api.faults.BadRequest("Malformed IP version type")
101 101

  
102 102
    dhcp = subnet.get('enable_dhcp', True)
103
    if dhcp not in [True, False]:
104
        raise api.faults.BadRequest("Malformed request, enable_dhcp must be"
105
                                    " True or False")
103 106
    name = subnet.get('name', None)
107
    if len(str(name)) > Subnet.SUBNET_NAME_LENGTH:
108
        raise api.faults.BadRequest("Subnet name too long")
104 109

  
105 110
    # FIX ME, SNF:gateway6 vs gateway6
106 111
    gateway6 = subnet.get('SNF:gateway6', None)
107 112
    subnet6 = subnet.get('SNF:subnet6', None)
108 113

  
109
    # Returns the first available ip in the subnet
114
    # Returns the first available IP in the subnet
110 115
    potential_gateway = ipaddr.IPv4Network(cidr).network + 1
111 116
    gateway = subnet.get('gateway_ip', potential_gateway)
112 117

  
113
    networks.validate_network_params(subnet, gateway, subnet6, gateway6)
118
    networks.validate_network_params(cidr, gateway, subnet6, gateway6)
114 119

  
120
    # FIX ME
115 121
    try:
116 122
        sub = Subnet.objects.create(name=name, network_id=network_id,
117 123
                                    cidr=cidr, ipversion=ipversion,
118 124
                                    gateway=gateway, gateway6=gateway6,
119 125
                                    subnet6=subnet6)
120
    # FIX ME
121 126
    except:
122 127
        print "Error"
123 128

  
......
140 145
@api.api_method(http_method='DELETE', user_required=True, logger=log)
141 146
def delete_subnet(request, offset):
142 147
    '''Delete a subnet'''
143
    try:
144
        subnet = Subnet.objects.get(subnet_id=offset)
145
    except Subnet.DoesNotExist:
146
        raise api.faults.ItemNotFound("Subnet not found")
148
    # Commented until we have a design document
149
    #log.info('delete_subnet %s', offset)
150
    #try:
151
    #    subnet = Subnet.objects.get(subnet_id=offset)
152
    #except Subnet.DoesNotExist:
153
    #    raise api.faults.ItemNotFound("Subnet not found")
147 154
        # Add support for 409 error, subnet in use
148 155

  
149
    subnet.delete()
150
    return HttpResponse(status=204)
156
    #subnets.delete()
157
    #return HttpResponse(status=204)
158
    raise api.faults.BadRequest("Deletion of a subnet is not supported")
151 159

  
152 160

  
153 161
def subnet_to_dict(subnet):

Also available in: Unified diff