@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)
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()
@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
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()
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):