Merge "OpenStack: store ZK records for launch error nodes"

This commit is contained in:
Zuul 2018-11-30 14:29:51 +00:00 committed by Gerrit Code Review
commit d4325cf6ac

View File

@ -18,6 +18,7 @@ import pprint
import random import random
from kazoo import exceptions as kze from kazoo import exceptions as kze
import openstack
from nodepool import exceptions from nodepool import exceptions
from nodepool import nodeutils as utils from nodepool import nodeutils as utils
@ -122,22 +123,29 @@ class OpenStackNodeLauncher(NodeLauncher):
# because that isn't available in ZooKeeper until after the server is # because that isn't available in ZooKeeper until after the server is
# active, which could cause a race in leak detection. # active, which could cause a race in leak detection.
server = self.handler.manager.createServer( try:
hostname, server = self.handler.manager.createServer(
image=image_external, hostname,
min_ram=self.label.min_ram, image=image_external,
flavor_name=self.label.flavor_name, min_ram=self.label.min_ram,
key_name=self.label.key_name, flavor_name=self.label.flavor_name,
az=self.node.az, key_name=self.label.key_name,
config_drive=config_drive, az=self.node.az,
nodepool_node_id=self.node.id, config_drive=config_drive,
nodepool_node_label=self.node.type[0], nodepool_node_id=self.node.id,
nodepool_image_name=image_name, nodepool_node_label=self.node.type[0],
networks=self.pool.networks, nodepool_image_name=image_name,
security_groups=self.pool.security_groups, networks=self.pool.networks,
boot_from_volume=self.label.boot_from_volume, security_groups=self.pool.security_groups,
volume_size=self.label.volume_size, boot_from_volume=self.label.boot_from_volume,
instance_properties=self.label.instance_properties) volume_size=self.label.volume_size,
instance_properties=self.label.instance_properties)
except openstack.cloud.exc.OpenStackCloudCreateException as e:
if e.resource_id:
self.node.external_id = e.resource_id
# The outer exception handler will handle storing the
# node immediately after this.
raise
self.node.external_id = server.id self.node.external_id = server.id
self.node.hostname = hostname self.node.hostname = hostname