Revision b14725eb

b/snf-cyclades-app/synnefo/api/management/commands/network-create.py
36 36
from django.core.management.base import BaseCommand, CommandError
37 37

  
38 38
from synnefo.db.models import Network, Backend
39
from synnefo.api.util import network_link_from_type
39
from synnefo.api.util import network_link_from_type, validate_network_size
40 40
from synnefo.logic.backend import create_network
41
from synnefo import settings
41 42

  
42 43
import ipaddr
43 44

  
......
47 48

  
48 49

  
49 50
class Command(BaseCommand):
51
    can_import_settings = True
52

  
50 53
    help = "Create a new network"
51 54

  
52 55
    option_list = BaseCommand.option_list + (
......
154 157
            create_network(network)
155 158

  
156 159

  
157

  
158 160
def validate_network_info(options):
159 161
    subnet = options['subnet']
160 162
    gateway = options['gateway']
......
162 164
    gateway6 = options['gateway6']
163 165

  
164 166
    try:
165
        ipaddr.IPv4Network(subnet)
167
        net = ipaddr.IPv4Network(subnet)
168
        prefix = net.prefixlen
169
        if not validate_network_size(prefix):
170
            raise CommandError("Unsupport network mask %d."
171
                               " Must be in range (%s,29] "
172
                               % (prefix, settings.MAX_CIDR_BLOCK))
166 173
    except ValueError:
167 174
        raise CommandError('Malformed subnet')
168 175
    try:
b/snf-cyclades-app/synnefo/api/networks.py
48 48
                                NetworkInUse, OverLimit)
49 49
from synnefo.db.models import Network, Pool
50 50
from synnefo.logic import backend
51
from synnefo.settings import MAX_CIDR_BLOCK
52 51

  
53 52

  
54 53
log = getLogger('synnefo.api')
......
179 178
        raise OverLimit('Network count limit exceeded for your account.')
180 179

  
181 180
    cidr_block = int(subnet.split('/')[1])
182
    if cidr_block <= MAX_CIDR_BLOCK:
183
        raise OverLimit("Network size is to big. Please specify a network"
184
                        " smaller than /" + str(MAX_CIDR_BLOCK) + '.')
181
    if not util.validate_network_size(cidr_block):
182
        raise OverLimit("Unsupported network size.")
185 183

  
186 184
    try:
187 185
        link = util.network_link_from_type(typ)
b/snf-cyclades-app/synnefo/api/util.py
64 64
from synnefo.lib.astakos import get_user
65 65
from synnefo.plankton.backend import ImageBackend
66 66
from synnefo.logic import ippool
67
from synnefo.settings import MAX_CIDR_BLOCK
67 68

  
68 69

  
69 70
log = getLogger('synnefo.api')
......
209 210
        raise ItemNotFound('Network not found.')
210 211

  
211 212

  
213
def validate_network_size(cidr_block):
214
    """Return True if network size is allowed."""
215
    return cidr_block <= 29 and cidr_block > MAX_CIDR_BLOCK
216

  
217

  
212 218
def backend_public_networks(backend):
213 219
    """Return available public networks of the backend.
214 220

  

Also available in: Unified diff