- # create network
- os_network = self.driver.create_network(network_name, shared=True)
- controller_network.net_id = os_network['id']
-
- # create router
- #router = self.driver.create_router(network_name)
- #controller_network.router_id = router['id']
-
- # create subnet
- next_subnet = self.get_next_subnet(controller=controller_network.controller.name)
- cidr = str(next_subnet.cidr)
- ip_version = next_subnet.version
- start = str(next_subnet[2])
- end = str(next_subnet[-2])
- subnet = self.driver.create_subnet(name=network_name,
- network_id = controller_network.net_id,
- cidr_ip = cidr,
- ip_version = ip_version,
- start = start,
- end = end)
- controller_network.subnet = cidr
- controller_network.subnet_id = subnet['id']
- # add subnet as interface to slice's router
- #self.driver.add_router_interface(router['id'], subnet['id'])
- # add external route
- #self.driver.add_external_route(subnet)
- logger.info("created private subnet (%s) for network: %s" % (cidr, controller_network.network))
-
- # Now, figure out the subnet and subnet_id for the network. This works
- # for both private and shared networks.
-
- if (not controller_network.subnet_id) or (not controller_network.subnet):
- (controller_network.subnet_id, controller_network.subnet) = self.driver.get_network_subnet(controller_network.net_id)
- logger.info("sync'ed subnet (%s) for network: %s" % (controller_network.subnet, controller_network.network))
-
- if (not controller_network.subnet):
- # this will generate a non-null database constraint error
- # ... which in turn leads to transaction errors
- # it's probably caused by networks that no longer exist at the
- # quantum level.
-
- logger.info("null subnet for network %s, skipping save" % controller_network.network)
- return
-
- controller_network.save()