Joshua Harlow 114525e386 System config niceness!
1. Move out the old helpers that provided oop access/reading/writing
   to various standard conf files and place those in parsers instead.
2. Unify the 'update_hostname' which varied very little	between	distros
   and make it generic so that subclasses can only provide a couple of 
   functions to	obtain the hostname updating functionality
3. Implement that new set of functions in rhel/debian    
4. Use the new parsers chop_comment function for similar use 
   cases as well as add a new utils make header	function that
   can be used for configuration files that are	newly generated
   to use (less	duplication here of this same thing being done
   in multiple places.
5. Add in a distro '_apply_hostname' which calls out to	the 'hostname'
   program to set the system hostname (more duplication	elimination).
6. Make the 'constant' filenames being written to for configuration
   by the various distros be instance members instead of string
   constants 'sprinkled' throughout the code
2012-10-10 16:21:22 -07:00

64 lines
2.2 KiB
Python

from mocker import MockerTestCase
from cloudinit.distros.parsers import resolv_conf
import re
BASE_RESOLVE = '''
; generated by /sbin/dhclient-script
search blah.yahoo.com yahoo.com
nameserver 10.15.44.14
nameserver 10.15.30.92
'''
BASE_RESOLVE = BASE_RESOLVE.strip()
class TestResolvHelper(MockerTestCase):
def test_parse_same(self):
rp = resolv_conf.ResolvConf(BASE_RESOLVE)
rp_r = str(rp).strip()
self.assertEquals(BASE_RESOLVE, rp_r)
def test_local_domain(self):
rp = resolv_conf.ResolvConf(BASE_RESOLVE)
self.assertEquals(None, rp.local_domain)
rp.local_domain = "bob"
self.assertEquals('bob', rp.local_domain)
self.assertIn('domain bob', str(rp))
def test_nameservers(self):
rp = resolv_conf.ResolvConf(BASE_RESOLVE)
self.assertIn('10.15.44.14', rp.nameservers)
self.assertIn('10.15.30.92', rp.nameservers)
rp.add_nameserver('10.2')
self.assertIn('10.2', rp.nameservers)
self.assertIn('nameserver 10.2', str(rp))
self.assertNotIn('10.3', rp.nameservers)
self.assertEquals(len(rp.nameservers), 3)
rp.add_nameserver('10.2')
with self.assertRaises(ValueError):
rp.add_nameserver('10.3')
self.assertNotIn('10.3', rp.nameservers)
def test_search_domains(self):
rp = resolv_conf.ResolvConf(BASE_RESOLVE)
self.assertIn('yahoo.com', rp.search_domains)
self.assertIn('blah.yahoo.com', rp.search_domains)
rp.add_search_domain('bbb.y.com')
self.assertIn('bbb.y.com', rp.search_domains)
self.assertTrue(re.search(r'search(.*)bbb.y.com(.*)', str(rp)))
self.assertIn('bbb.y.com', rp.search_domains)
rp.add_search_domain('bbb.y.com')
self.assertEquals(len(rp.search_domains), 3)
rp.add_search_domain('bbb2.y.com')
self.assertEquals(len(rp.search_domains), 4)
rp.add_search_domain('bbb3.y.com')
self.assertEquals(len(rp.search_domains), 5)
rp.add_search_domain('bbb4.y.com')
self.assertEquals(len(rp.search_domains), 6)
with self.assertRaises(ValueError):
rp.add_search_domain('bbb5.y.com')
self.assertEquals(len(rp.search_domains), 6)