'node_id': node['node_id']})
slice_node.sync()
- def spawn_instance(self, nodes, caller):
- # defaults
- default_image = self.api.config.nova_defualt_image
- defualt_flavor = self.api.config.nova_default_flavor
-
+ def spawn_instances(self, nodes, caller):
# use the caller's nova keypair
keypairs = self.api.client_shell.nova.keypairs.list()
if not keypairs:
sliver_tags[node_id][slice_tag['tagname']] = slice_tag
def get_image(node):
- if sliver_tags[node['node_id']].get('image'):
- image = sliver_tags[node['node_id']].get('image')
- else:
- image = default_image
+ image = self.api.config.nova_default_image
+ slice_image = sliver_tags[None].get('image')
+ sliver_image = sliver_tags[node['node_id']].get('image')
+ if sliver_image is not None: # sliver tag
+ image = sliver_image.get('value')
+ elif slice_image is not None: # sliver tag
+ image = slice_image.get('value')
+ return image
def get_flavor(node):
- if sliver_tags[node['node_id']].get('flavor'):
- flavor = sliver_tags[node['node_id']].get('flavor')
- else:
- flavor = default_image
+ flavor = self.api.config.nova_default_flavor
+ slice_flavor = sliver_tags[None].get('flavor')
+ sliver_flavor = sliver_tags[node['node_id']].get('flavor')
+ if sliver_flavor is not None: # sliver tag
+ flavor = sliver_flavor.get('value')
+ elif slice_flavor is not None: # slice tag
+ flavor = slice_flavor.get('value')
+
+ return flavor
- for node in node:
+ def get_security_group(node):
+ security_group = self.api.config.nova_default_security_group
+ slice_security_group = sliver_tags[None].get('security_group')
+ sliver_security_group = sliver_tags[node['node_id']].get('security_group')
+ if sliver_security_group is not None: # sliver tag
+ security_group = slice_security_group.get('value')
+ elif slice_security_group is not None: # slice tag
+ security_group = slice_security_group.get('value')
+ return security_group
+
+ for node in nodes:
if self['slice_id'] not in node['slice_ids']:
image = get_image(node)
flavor = get_flavor(node)
- flavor_id = api.client_shell.nova.flavors.find(name=flavor)
- image_id = api.client_shell.glance.get_image(name=image)
- api.client_shell.nova.servers.create(flavor=flavor_id,
+ security_group = get_security_group(node)
+ flavor_id = self.api.client_shell.nova.flavors.find(name=flavor)
+ images = self.api.client_shell.glance.get_images(name=image)
+ if not images:
+ raise PLCInvalidArgument('Image bot found')
+ image_id = images[0]['id']
+ self.api.client_shell.nova.servers.create(flavor=flavor_id,
image=image_id,
key_name = key_name,
+ security_group = security_group,
files=files,
name=self['name'])