def handle_create(self): """Allocate a floating IP for the current tenant.""" ips = None if self.properties[self.DOMAIN] and clients.neutronclient: from heat.engine.resources.internet_gateway import InternetGateway ext_net = InternetGateway.get_external_network_id(self.neutron()) props = {"floating_network_id": ext_net} ips = self.neutron().create_floatingip({"floatingip": props})["floatingip"] self.ipaddress = ips["floating_ip_address"] self.resource_id_set(ips["id"]) LOG.info(_("ElasticIp create %s") % str(ips)) else: if self.properties[self.DOMAIN]: raise exception.Error( _("Domain property can not be set on " "resource %s without Neutron available") % self.name ) try: ips = self.nova().floating_ips.create() except clients.novaclient.exceptions.NotFound: with excutils.save_and_reraise_exception(): msg = _("No default floating IP pool configured. " "Set 'default_floating_pool' in nova.conf.") LOG.error(msg) if ips: self.ipaddress = ips.ip self.resource_id_set(ips.id) LOG.info(_("ElasticIp create %s") % str(ips)) instance_id = self.properties[self.INSTANCE_ID] if instance_id: server = self.nova().servers.get(instance_id) server.add_floating_ip(self._ipaddress())
def handle_create(self): """Allocate a floating IP for the current tenant.""" ips = None if self.properties[self.DOMAIN] and clients.neutronclient: from heat.engine.resources.internet_gateway import InternetGateway ext_net = InternetGateway.get_external_network_id(self.neutron()) props = {'floating_network_id': ext_net} ips = self.neutron().create_floatingip({'floatingip': props})['floatingip'] self.ipaddress = ips['floating_ip_address'] self.resource_id_set(ips['id']) logger.info(_('ElasticIp create %s') % str(ips)) else: if self.properties[self.DOMAIN]: raise exception.Error( _('Domain property can not be set on ' 'resource %s without Neutron available') % self.name) try: ips = self.nova().floating_ips.create() except clients.novaclient.exceptions.NotFound: with excutils.save_and_reraise_exception(): msg = _("No default floating IP pool configured. " "Set 'default_floating_pool' in nova.conf.") logger.error(msg) if ips: self.ipaddress = ips.ip self.resource_id_set(ips.id) logger.info(_('ElasticIp create %s') % str(ips)) instance_id = self.properties[self.INSTANCE_ID] if instance_id: server = self.nova().servers.get(instance_id) server.add_floating_ip(self._ipaddress())
def handle_create(self): """Allocate a floating IP for the current tenant.""" ips = None if self.properties['Domain'] and clients.neutronclient: from heat.engine.resources.internet_gateway import InternetGateway ext_net = InternetGateway.get_external_network_id(self.neutron()) props = {'floating_network_id': ext_net} ips = self.neutron().create_floatingip({ 'floatingip': props})['floatingip'] self.ipaddress = ips['floating_ip_address'] self.resource_id_set(ips['id']) logger.info('ElasticIp create %s' % str(ips)) else: if self.properties['Domain']: raise exception.Error('Domain property can not be set on ' 'resource %s without Neutron available' % self.name) try: ips = self.nova().floating_ips.create() except clients.novaclient.exceptions.NotFound: with excutils.save_and_reraise_exception(): msg = ("No default floating IP pool configured." "Set 'default_floating_pool' in nova.conf.") logger.error(msg) if ips: self.ipaddress = ips.ip self.resource_id_set(ips.id) logger.info('ElasticIp create %s' % str(ips)) if self.properties['InstanceId']: server = self.nova().servers.get(self.properties['InstanceId']) res = server.add_floating_ip(self._ipaddress())
def handle_create(self): """Allocate a floating IP for the current tenant.""" ips = None if self.properties[self.DOMAIN]: from heat.engine.resources.internet_gateway import InternetGateway ext_net = InternetGateway.get_external_network_id(self.neutron()) props = {'floating_network_id': ext_net} ips = self.neutron().create_floatingip({ 'floatingip': props})['floatingip'] self.ipaddress = ips['floating_ip_address'] self.resource_id_set(ips['id']) LOG.info(_('ElasticIp create %s') % str(ips)) else: try: ips = self.nova().floating_ips.create() except Exception as e: with excutils.save_and_reraise_exception(): if self.client_plugin('nova').is_not_found(e): msg = _("No default floating IP pool configured. " "Set 'default_floating_pool' in nova.conf.") LOG.error(msg) if ips: self.ipaddress = ips.ip self.resource_id_set(ips.id) LOG.info(_('ElasticIp create %s') % str(ips)) instance_id = self.properties[self.INSTANCE_ID] if instance_id: server = self.nova().servers.get(instance_id) server.add_floating_ip(self._ipaddress())
def handle_create(self): """Allocate a floating IP for the current tenant.""" ips = None if self.properties[self.DOMAIN]: from heat.engine.resources.internet_gateway import InternetGateway ext_net = InternetGateway.get_external_network_id(self.neutron()) props = {'floating_network_id': ext_net} ips = self.neutron().create_floatingip({'floatingip': props})['floatingip'] self.ipaddress = ips['floating_ip_address'] self.resource_id_set(ips['id']) LOG.info(_('ElasticIp create %s') % str(ips)) else: try: ips = self.nova().floating_ips.create() except Exception as e: with excutils.save_and_reraise_exception(): if self.client_plugin('nova').is_not_found(e): msg = _("No default floating IP pool configured. " "Set 'default_floating_pool' in nova.conf.") LOG.error(msg) if ips: self.ipaddress = ips.ip self.resource_id_set(ips.id) LOG.info(_('ElasticIp create %s') % str(ips)) instance_id = self.properties[self.INSTANCE_ID] if instance_id: server = self.nova().servers.get(instance_id) server.add_floating_ip(self._ipaddress())