'node_id': node['node_id']})
slice_node.sync()
- def spawn_instances(self, nodes, caller):
+ def spawn_instances(self, nodes):
# use the caller's nova keypair
keypairs = self.api.client_shell.nova.keypairs.list()
if not keypairs:
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'])
+ hints = {'force_hosts': node['hostname']}
+ self.api.client_shell.nova.servers.create(name=self['name'],
+ flavor=flavor_id,
+ image=image_id,
+ key_name = key_name,
+ security_group = security_group,
+ files=files,
+ scheduler_hints=hints)
+
+ def destroy_instances(self, nodes):
+ hostnames = [n['hostname'] for n in nodes]
+ servers = self.api.client_shell.nova.servers.list()
+ for server in servers:
+ name = server.name
+ hostname = server._info['OS-EXT-SRV-ATTR:host']
+ if self['name'] == name and hostname in hostnames:
+ self.api.client_shell.nova.servers.delete(server)
+
+
def remove_node(self, node_filter, commit=True):
from PLC.Nodes import Nodes