Tracked in Github Issues as https://github.com/canonical/cloud-
init/issues/3755

** Bug watch added: github.com/canonical/cloud-init/issues #3755
   https://github.com/canonical/cloud-init/issues/3755

** Changed in: cloud-init
       Status: Triaged => Expired

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to cloud-init.
https://bugs.launchpad.net/bugs/1885880

Title:
  nocloud-datasource with numeric hostname

Status in cloud-init:
  Expired

Bug description:
  When I use nocloud datasource with numeric hostname like 1234,
  it shows errors as follow,
  2020-07-01 06:37:49,018 - util.py[DEBUG]: Getting data from <class 
'cloudinit.sources.DataSourceNoCloud.DataSourceNoCloud'> failed
  Traceback (most recent call last):
    File "/usr/lib/python2.7/site-packages/cloudinit/sources/__init__.py", line 
733, in find_source
      if s.update_metadata([EventType.BOOT_NEW_INSTANCE]):
    File "/usr/lib/python2.7/site-packages/cloudinit/sources/__init__.py", line 
622, in update_metadata
      result = self.get_data()
    File "/usr/lib/python2.7/site-packages/cloudinit/sources/__init__.py", line 
259, in get_data
      self.persist_instance_data()
    File "/usr/lib/python2.7/site-packages/cloudinit/sources/__init__.py", line 
289, in persist_instance_data
      self._get_standardized_metadata())
    File "/usr/lib/python2.7/site-packages/cloudinit/sources/__init__.py", line 
209, in _get_standardized_metadata
      local_hostname = self.get_hostname()
    File "/usr/lib/python2.7/site-packages/cloudinit/sources/__init__.py", line 
566, in get_hostname
      if util.is_ipv4(lhost):
    File "/usr/lib/python2.7/site-packages/cloudinit/util.py", line 544, in 
is_ipv4
      toks = instr.split('.')
  AttributeError: 'int' object has no attribute 'split'

  In get_hostname function in cloudinit/sources/__init__.py,

  601         else:                                                             
                                                                                
                                                     
  602             # if there is an ipv4 address in 'local-hostname', then       
                                                                                
                                                     
  603             # make up a hostname (LP: #475354) in format ip-xx.xx.xx.xx   
                                                                                
                                                     
  604             lhost = self.metadata['local-hostname']                       
                                                                                
                                                     
  605             if net.is_ipv4_address(lhost):                                
                                                                                
                                                     
  606                 toks = []                                                 
                                                                                
                                                     
  607                 if resolve_ip:                                            
                                                                                
                                                     
  608                     toks = util.gethostbyaddr(lhost)                      
                                                                                
                                                     
  609                                                                           
                                                                                
                                                     
  610                 if toks:                                                  
                                                                                
                                                     
  611                     toks = str(toks).split('.')                           
                                                                                
                                                     
  612                 else:                                                     
                                                                                
                                                     
  613                     toks = ["ip-%s" % lhost.replace(".", "-")]            
                                                                                
                                                     
  614             else:                                                         
                                                                                
                                                     
  615                 toks = lhost.split(".")           

  before utilize lhost, it needs to convert to string type like
   -> net.is_ipv4_address(str(lhost))
   -> str(lhost).split(".")
  because when hostname is numeric only, lhost type would be integer by default 
in python.

To manage notifications about this bug go to:
https://bugs.launchpad.net/cloud-init/+bug/1885880/+subscriptions


-- 
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to     : yahoo-eng-team@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to