From: Tony Mack Date: Mon, 11 Mar 2013 22:21:55 +0000 (-0400) Subject: Fix bugs X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=6621e21bbaa44df8591778b4559c9cee74b89309;p=plcapi.git Fix bugs --- diff --git a/PLC/Methods/AddSliceToNodes.py b/PLC/Methods/AddSliceToNodes.py index 1db307c5..ff6ec5c5 100644 --- a/PLC/Methods/AddSliceToNodes.py +++ b/PLC/Methods/AddSliceToNodes.py @@ -57,7 +57,6 @@ class AddSliceToNodes(Method): # allow users at site to add node to slice, ignoring whitelist node.check_whitelist(slice, self.caller) if slice['slice_id'] not in node['slice_ids']: - tags = sliver_tags.get(node['node_id']) slice.add_node(node, commit = False) slice.sync() diff --git a/PLC/Slices.py b/PLC/Slices.py index cf1dc86e..6c60b4da 100644 --- a/PLC/Slices.py +++ b/PLC/Slices.py @@ -119,11 +119,7 @@ class Slice(AlchemyObj): '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: @@ -150,26 +146,50 @@ class Slice(AlchemyObj): 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']) diff --git a/config/default_config b/config/default_config index 84a20c48..0ba356ac 100644 --- a/config/default_config +++ b/config/default_config @@ -18,6 +18,7 @@ admin_tenant=admin url=http://localhost:5000/v2.0/ default_image=None default_flavor=m1.small +default_security_group=default [db] user=plcuser