X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fopenstack_observer%2Fsteps%2Fsync_network_deployments.py;h=73c8314cd1f7e94dfafb01dfb75b1a2a3966e8ef;hb=f4d13a4ce641c7e6f1ba3f7ec1247f5b092c19ea;hp=367440de8fc1e890a86275de4661c4487b5d5ff1;hpb=36f09c01e343c959ce36c2bd964287212bf2bfa5;p=plstackapi.git diff --git a/planetstack/openstack_observer/steps/sync_network_deployments.py b/planetstack/openstack_observer/steps/sync_network_deployments.py index 367440d..73c8314 100644 --- a/planetstack/openstack_observer/steps/sync_network_deployments.py +++ b/planetstack/openstack_observer/steps/sync_network_deployments.py @@ -20,31 +20,13 @@ class SyncNetworkDeployments(OpenStackSyncStep): if (deleted): return NetworkDeployments.deleted_objects.all() else: - # network deployments are not visible to users. We must ensure - # networks are deployed at all deploymets available to their slices. - slice_deployments = SliceDeployments.objects.all() - slice_deploy_lookup = defaultdict(list) - for slice_deployment in slice_deployments: - slice_deploy_lookup[slice_deployment.slice].append(slice_deployment.deployment) - - network_deployments = NetworkDeployments.objects.all() - network_deploy_lookup = defaultdict(list) - for network_deployment in network_deployments: - network_deploy_lookup[network_deployment.network].append(network_deployment.deployment) - - for network in Network.objects.filter(): - expected_deployments = slice_deploy_lookup[network.owner] - for expected_deployment in expected_deployments: - if network not in network_deploy_lookup or \ - expected_deployment not in network_deploy_lookup[network]: - nd = NetworkDeployments(network=network, deployment=expected_deployment) - nd.save() return NetworkDeployments.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None)) def get_next_subnet(self, deployment=None): # limit ourself to 10.0.x.x for now valid_subnet = lambda net: net.startswith('10.0') - driver = self.driver.admin_driver(deployment=deployment) + + driver = self.driver.admin_driver(deployment=deployment,tenant='admin') subnets = driver.shell.quantum.list_subnets()['subnets'] ints = [int(IPNetwork(subnet['cidr']).ip) for subnet in subnets \ if valid_subnet(subnet['cidr'])] @@ -76,6 +58,8 @@ class SyncNetworkDeployments(OpenStackSyncStep): network_name = network_deployment.network.name # create network + import pdb + pdb.set_trace() os_network = self.driver.create_network(network_name, shared=True) network_deployment.net_id = os_network['id'] @@ -122,15 +106,16 @@ class SyncNetworkDeployments(OpenStackSyncStep): network_deployment.save() def sync_record(self, network_deployment): + if not network_deployment.deployment.admin_user: + logger.info("deployment %r has no admin_user, skipping" % network_deployment.deployment) + return + + self.driver = self.driver.admin_driver(deployment=network_deployment.deployment,tenant='admin') if network_deployment.network.owner and network_deployment.network.owner.creator: try: # update manager context - real_driver = self.driver - self.driver = self.driver.client_driver(caller=network_deployment.network.owner.creator, - tenant=network_deployment.network.owner.name, - deployment=network_deployment.deployment.name) + # Bring back self.save_network_deployment(network_deployment) - self.driver = real_driver logger.info("saved network deployment: %s" % (network_deployment)) except Exception,e: logger.log_exc("save network deployment failed: %s" % network_deployment)