diff --git a/reddwarf/dns/manager.py b/reddwarf/dns/manager.py index 356af9826c..1c8c04fcab 100644 --- a/reddwarf/dns/manager.py +++ b/reddwarf/dns/manager.py @@ -71,18 +71,15 @@ class DnsManager(object): if entry: self.driver.delete_entry(entry.name, entry.type) - def update_hostname(self, instance): + def determine_hostname(self, instance_id): """ Create the hostname field based on the instance id. - Use instance by default + Use instance by default. """ - dns_support = config.Config.get('reddwarf_dns_support', 'False') - LOG.debug(_("reddwarf dns support = %s") % dns_support) - if utils.bool_from_string(dns_support): - entry = self.entry_factory.create_entry(instance.id) - instance.hostname = entry.name - instance.save() - LOG.debug("Saved the hostname as %s " % instance.hostname) + entry = self.entry_factory.create_entry(instance_id) + if entry: + return entry.name else: - instance.hostname = instance.name - instance.save() + return None + + diff --git a/reddwarf/instance/models.py b/reddwarf/instance/models.py index 9712053f3c..716727b25a 100644 --- a/reddwarf/instance/models.py +++ b/reddwarf/instance/models.py @@ -24,6 +24,7 @@ import netaddr from novaclient import exceptions as nova_exceptions from reddwarf.common import config from reddwarf.common import exception +from reddwarf.common import utils from reddwarf.common.remote import create_dns_client from reddwarf.common.remote import create_guest_client from reddwarf.common.remote import create_nova_client @@ -366,11 +367,17 @@ class Instance(BuiltInstance): service_status = InstanceServiceStatus.create(instance_id=db_info.id, status=ServiceStatuses.NEW) - dns_client = create_dns_client(context) - dns_client.update_hostname(db_info) + dns_support = config.Config.get("reddwarf_dns_support", 'False') + if utils.bool_from_string(dns_support): + dns_client = create_dns_client(context) + hostname = dns_client.determine_hostname(db_info.id) + db_info.hostname=hostname + db_info.save() + task_api.API(context).create_instance(db_info.id, name, flavor_id, flavor.ram, image_id, databases, users, service_type, volume_size) + return SimpleInstance(context, db_info, service_status) def _validate_can_perform_action(self): diff --git a/reddwarf/instance/views.py b/reddwarf/instance/views.py index eacfd8406c..d8015e560d 100644 --- a/reddwarf/instance/views.py +++ b/reddwarf/instance/views.py @@ -93,7 +93,7 @@ class InstanceDetailView(InstanceView): dns_support = config.Config.get("reddwarf_dns_support", 'False') if utils.bool_from_string(dns_support): - result['hostname'] = self.instance.hostname + result['instance']['hostname'] = self.instance.hostname if self.add_addresses: ip = get_ip_address(self.instance.addresses)