X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fopenstack%2Fmanager.py;h=c1647e8e37e61c8a8f9d9338435832543232816f;hb=e42cedcb2caf20b1118db570a9650348958d7590;hp=2fb4ff86000afdd2eeeed34d382031053ce984ca;hpb=1ac5ddb47ff734a2f29e831b5aa6601c2daeb808;p=plstackapi.git diff --git a/planetstack/openstack/manager.py b/planetstack/openstack/manager.py index 2fb4ff8..c1647e8 100644 --- a/planetstack/openstack/manager.py +++ b/planetstack/openstack/manager.py @@ -315,9 +315,22 @@ class OpenStackManager: @require_enabled def save_sliver(self, sliver): + metadata_update = {} + if ("numberCores" in sliver.changed_fields): + metadata_update["cpu_cores"] = str(sliver.numberCores) + + for tag in sliver.slice.tags.all(): + if tag.name.startswith("sysctl-"): + metadata_update[tag.name] = tag.value + if not sliver.instance_id: nics = self.get_requested_networks(sliver.slice) - file("/tmp/scott-manager","a").write("slice: %s\nreq: %s\n" % (str(sliver.slice.name), str(nics))) + for nic in nics: + # If a network hasn't been instantiated yet, then we'll fail + # during slice creation. Defer saving the sliver for now. + if not nic.get("net-id", None): + sliver.save() # in case it hasn't been saved yet + return slice_memberships = SliceMembership.objects.filter(slice=sliver.slice) pubkeys = [sm.user.public_key for sm in slice_memberships if sm.user.public_key] pubkeys.append(sliver.creator.public_key) @@ -326,12 +339,13 @@ class OpenStackManager: image_id = sliver.image.image_id, hostname = sliver.node.name, pubkeys = pubkeys, - nics = nics ) + nics = nics, + metadata = metadata_update ) sliver.instance_id = instance.id sliver.instance_name = getattr(instance, 'OS-EXT-SRV-ATTR:instance_name') - - if sliver.instance_id and ("numberCores" in sliver.changed_fields): - self.driver.update_instance_metadata(sliver.instance_id, {"cpu_cores": str(sliver.numberCores)}) + else: + if metadata_update: + self.driver.update_instance_metadata(sliver.instance_id, metadata_update) sliver.save() sliver.enacted = datetime.now() @@ -409,8 +423,8 @@ class OpenStackManager: @require_enabled def save_network(self, network): if not network.network_id: - if network.template.sharedNetworkName: - network.network_id = network.template.sharedNetworkId + if network.template.shared_network_name: + network.network_id = network.template.shared_network_id (network.subnet_id, network.subnet) = self.driver.get_network_subnet(network.network_id) else: network_name = network.name @@ -457,10 +471,10 @@ class OpenStackManager: self.driver.delete_network(network.network_id) def save_network_template(self, template): - if (template.sharedNetworkName) and (not template.sharedNetworkId): - os_networks = self.driver.shell.quantum.list_networks(name=template.sharedNetworkName)['networks'] + if (template.shared_network_name) and (not template.shared_network_id): + os_networks = self.driver.shell.quantum.list_networks(name=template.shared_network_name)['networks'] if os_networks: - template.sharedNetworkId = os_networks[0]["id"] + template.shared_network_id = os_networks[0]["id"] template.save() template.enacted = datetime.now() @@ -491,8 +505,8 @@ class OpenStackManager: def refresh_network_templates(self): for template in NetworkTemplate.objects.all(): - if (template.sharedNetworkName) and (not template.sharedNetworkId): - # this will cause us to try to fill in the sharedNetworkId + if (template.shared_network_name) and (not template.shared_network_id): + # this will cause us to try to fill in the shared_network_id self.save_network_template(template) def refresh_networks(self):