diff options
| author | Ben Howard <ben.howard@canonical.com> | 2013-07-23 12:36:15 -0600 | 
|---|---|---|
| committer | Ben Howard <ben.howard@canonical.com> | 2013-07-23 12:36:15 -0600 | 
| commit | c67cc904bfddc9ed462f54d85d31236b39b6285f (patch) | |
| tree | fd35dbae90ad928d6abb3e8a564429d692774ee5 /cloudinit | |
| parent | 6b7e65e4f57902c25363c78a7e47aa2caa579b7b (diff) | |
| download | vyos-cloud-init-c67cc904bfddc9ed462f54d85d31236b39b6285f.tar.gz vyos-cloud-init-c67cc904bfddc9ed462f54d85d31236b39b6285f.zip | |
Move more functionality into get_serial()
Diffstat (limited to 'cloudinit')
| -rw-r--r-- | cloudinit/sources/DataSourceSmartOS.py | 42 | 
1 files changed, 27 insertions, 15 deletions
| diff --git a/cloudinit/sources/DataSourceSmartOS.py b/cloudinit/sources/DataSourceSmartOS.py index f9b724eb..129020ec 100644 --- a/cloudinit/sources/DataSourceSmartOS.py +++ b/cloudinit/sources/DataSourceSmartOS.py @@ -35,7 +35,8 @@ from cloudinit import sources  from cloudinit import util -TTY_LOC = '/dev/ttyS1' +DEF_TTY_LOC = '/dev/ttyS1' +TTY_LOC = None  LOG = logging.getLogger(__name__) @@ -54,6 +55,7 @@ class DataSourceSmartOS(sources.DataSource):          md = {}          ud = "" +        TTY_LOC = self.sys_cfg.get("serial_device", DEF_TTY_LOC)          if not os.path.exists(TTY_LOC):              LOG.debug("Host does not appear to be on SmartOS")              return False @@ -72,11 +74,17 @@ class DataSourceSmartOS(sources.DataSource):          md['local-hostname'] = hostname          md['instance-id'] = system_uuid          md['public-keys'] = query_data("root_authorized_keys", strip=True) -        ud = query_data("user-script") +        md['user-script'] = query_data("user-script") +        md['user-data'] = query_data("user-script")          md['iptables_disable'] = query_data("disable_iptables_flag",                                              strip=True)          md['motd_sys_info'] = query_data("enable_motd_sys_info", strip=True) +        if md['user-data']: +            ud = md['user-data'] +        else: +            ud = md['user-script'] +          self.metadata = md          self.userdata_raw = ud          return True @@ -87,8 +95,22 @@ class DataSourceSmartOS(sources.DataSource):  def get_serial():      """This is replaced in unit testing, allowing us to replace -        serial.Serial with a mocked class""" -    return serial.Serial() +        serial.Serial with a mocked class + +        The timeout value of 60 seconds should never be hit. The value +        is taken from SmartOS own provisioning tools. Since we are reading +        each line individually up until the single ".", the transfer is +        usually very fast (i.e. microseconds) to get the response. +    """ +    if not TTY_LOC: +        raise AttributeError("TTY_LOC value is not set") + +    _ret = serial.Serial(TTY_LOC, timeout=60) +    if not _ret.isOpen(): +        raise SystemError("Unable to open %s" % TTY_LOC) + +    return _ret +  def query_data(noun, strip=False): @@ -97,22 +119,12 @@ def query_data(noun, strip=False):          In the response, the first line is the status, while subsequent lines          are is the value. A blank line with a "." is used to indicate end of          response. +    """ -        The timeout value of 60 seconds should never be hit. The value -        is taken from SmartOS own provisioning tools. Since we are reading -        each line individually up until the single ".", the transfer is -        usually very fast (i.e. microseconds) to get the response. -     """      if not noun:          return False      ser = get_serial() -    ser.port = '/dev/ttyS1' -    ser.open() -    if not ser.isOpen(): -        LOG.debug("Serial console is not open") -        return False -      ser.write("GET %s\n" % noun.rstrip())      status = str(ser.readline()).rstrip()      response = [] | 
