diff --git a/lib/cloudregister/smt.py b/lib/cloudregister/smt.py index d36d013..8d06492 100644 --- a/lib/cloudregister/smt.py +++ b/lib/cloudregister/smt.py @@ -39,8 +39,11 @@ def __init__(self, smtXMLNode, https_only=False): self._region = smtXMLNode.attrib['region'] except KeyError: self._region = 'unknown' + try: + self._registry_fqdn = smtXMLNode.attrib['SMTregistryName'] + except KeyError: + self._registry_fqdn = '' self._fqdn = smtXMLNode.attrib['SMTserverName'] - self._registry_fqdn = smtXMLNode.attrib['SMTregistryName'] self._fingerprint = smtXMLNode.attrib['fingerprint'] self._cert = None self._cert_names = ('smt.crt', 'rmt.crt') diff --git a/tests/test_registerutils.py b/tests/test_registerutils.py index 829be95..9f04a5d 100644 --- a/tests/test_registerutils.py +++ b/tests/test_registerutils.py @@ -649,6 +649,40 @@ def test_add_hosts_entry(mock_has_rmt_ipv6_access): ] +@patch('cloudregister.registerutils.has_rmt_ipv6_access') +def test_add_hosts_entry_no_registry(mock_has_rmt_ipv6_access): + """Test hosts entry has a new entry added by us.""" + smt_data_ipv46 = dedent('''\ + ''') + + smt_server = SMT(etree.fromstring(smt_data_ipv46)) + mock_has_rmt_ipv6_access.return_value = True + with patch('builtins.open', create=True) as mock_open: + mock_open.return_value = MagicMock(spec=io.IOBase) + file_handle = mock_open.return_value.__enter__.return_value + utils.add_hosts_entry(smt_server) + mock_open.assert_called_once_with('/etc/hosts', 'a') + file_content_comment = ( + '\n# Added by SMT registration do not remove, ' + 'retain comment as well\n' + ) + file_content_entry = ( + '{ip}\t{fqdn}\t{name}\n'.format( + ip=smt_server.get_ipv6(), + fqdn=smt_server.get_FQDN(), + name=smt_server.get_name(), + ) + ) + assert file_handle.write.mock_calls == [ + call(file_content_comment), + call(file_content_entry) + ] + + @patch('cloudregister.registerutils.has_rmt_ipv6_access') def test_add_hosts_entry_registry_optional_empty(mock_has_ipv6_access): """Test hosts entry has a new entry added by us."""