Revision 4e1133ab

b/snf-cyclades-app/synnefo/api/networks.py
164 164
        req = util.get_request_dict(request)
165 165
        log.info('create_network %s', req)
166 166

  
167
        user_id = request.user_uniq
167 168
        try:
168 169
            d = req['network']
169 170
            name = d['name']
170
            # TODO: Fix this temp values:
171
            subnet = d.get('cidr', '192.168.1.0/24')
172
            subnet6 = d.get('cidr6', None)
173
            gateway = d.get('gateway', None)
174
            gateway6 = d.get('gateway6', None)
175
            flavor = d.get('type', 'MAC_FILTERED')
176
            public = d.get('public', False)
177
            dhcp = d.get('dhcp', True)
178
        except (KeyError, ValueError):
179
            raise BadRequest('Malformed request.')
180

  
171
        except KeyError:
172
            raise BadRequest("Malformed request")
173

  
174
        # Get and validate flavor. Flavors are still exposed as 'type' in the
175
        # API.
176
        flavor = d.get("type", None)
177
        if flavor is None:
178
            raise BadRequest("Missing request parameter 'type'")
179
        elif flavor not in Network.FLAVORS.keys():
180
            raise BadRequest("Invalid network type '%s'" % flavor)
181
        elif flavor not in settings.API_ENABLED_NETWORK_FLAVORS:
182
            raise Forbidden("Can not create network of type '%s'" % flavor)
183

  
184
        public = d.get("public", False)
181 185
        if public:
182
            raise Forbidden('Can not create a public network.')
186
            raise Forbidden("Can not create a public network.")
183 187

  
184
        if flavor not in Network.FLAVORS.keys():
185
            raise BadRequest("Invalid network flavors %s" % flavor)
186

  
187
        if flavor not in settings.API_ENABLED_NETWORK_FLAVORS:
188
            raise Forbidden("Can not create %s network" % flavor)
188
        dhcp = d.get('dhcp', True)
189 189

  
190
        # Get and validate network parameters
191
        subnet = d.get('cidr', '192.168.1.0/24')
192
        subnet6 = d.get('cidr6', None)
193
        gateway = d.get('gateway', None)
194
        gateway6 = d.get('gateway6', None)
190 195
        # Check that user provided a valid subnet
191 196
        util.validate_network_params(subnet, gateway, subnet6, gateway6)
192 197

  
193
        user_id = request.user_uniq
198
        # Issue commission
194 199
        serial = quotas.issue_network_commission(user_id)
195 200
        serials.append(serial)
196 201
        # Make the commission accepted, since in the end of this
b/snf-cyclades-app/synnefo/api/test/networks.py
72 72

  
73 73
    def test_create_network_1(self, mrapi):
74 74
        request = {
75
            'network': {'name': 'foo'}
76
            }
75
            'network': {'name': 'foo', "type": "MAC_FILTERED"}
76
        }
77 77
        response = self.post('/api/v1.1/networks/', 'user1',
78 78
                             json.dumps(request), 'json')
79 79
        self.assertEqual(response.status_code, 202)
......
96 96
        self.assertEqual(len(Network.objects.filter(userid='user1')), 0)
97 97

  
98 98
    def test_invalid_data_2(self, mrapi):
99
        """Test invalid subnet"""
99
        """Test invalid data/subnet"""
100 100
        request = {
101
            'network': {'name': 'foo', 'cidr': '10.0.0.0/8'}
102
            }
101
            'network': {'name': 'foo',
102
                        'cidr': '10.0.0.0/8', "type":
103
                        "MAC_FILTERED"}
104
        }
103 105
        response = self.post('/api/v1.1/networks/', 'user1',
104 106
                             json.dumps(request), 'json')
105 107
        self.assertFault(response, 413, "overLimit")
......
107 109
    def test_invalid_data_3(self, mrapi):
108 110
        """Test unauthorized to create public network"""
109 111
        request = {
110
                'network': {'name': 'foo', 'public': True}
112
                'network': {'name': 'foo',
113
                            "public": "True",
114
                            "type": "MAC_FILTERED"}
111 115
            }
112 116
        response = self.post('/api/v1.1/networks/', 'user1',
113 117
                             json.dumps(request), 'json')
......
125 129
    def test_invalid_subnet(self, mrapi):
126 130
        """Test invalid subnet"""
127 131
        request = {
128
            'network': {'name': 'foo', 'cidr': '10.0.0.10/27'}
129
            }
132
            'network': {'name': 'foo',
133
                        'cidr': '10.0.0.10/27',
134
                        "type": "MAC_FILTERED"}
135
        }
130 136
        response = self.post('/api/v1.1/networks/', 'user1',
131 137
                             json.dumps(request), 'json')
132 138
        self.assertBadRequest(response)

Also available in: Unified diff