Beispiel #1
0
 def test_wb_collect_system_info_gets_curtin_version(self):
     """_collect_system_info stores curtin version in target_dir."""
     with mock.patch('curtin.version.version_string') as m_version:
         m_version.return_value = '17.999'
         collect_logs._collect_system_info(self.new_root, config={})
     version = self.tmp_path('version', _dir=self.new_root)
     with open(version, 'r') as f:
         self.assertEqual(f.read(), '17.999')
Beispiel #2
0
    def test_wb_collect_system_info_writes_uname(self):
        """_collect_system_info saves uname details in target_dir."""
        def fake_subp(cmd, capture=False, combine_capture=False):
            if cmd == ['uname', '-a'] and capture:
                return ('Linux myhost 4.4.0-104-generic', '')
            return ('', '')

        self.mock_subp.side_effect = fake_subp
        collect_logs._collect_system_info(self.new_root, config={})
        uname = self.tmp_path('uname', _dir=self.new_root)
        with open(uname, 'r') as f:
            self.assertEqual(f.read(), 'Linux myhost 4.4.0-104-generic')
Beispiel #3
0
    def test_wb_collect_system_info_writes_lshw(self):
        """_collect_system_info saves lshw details in target_dir."""
        def fake_subp(cmd, capture=False, combine_capture=False):
            if cmd == ['sudo', 'lshw'] and capture:
                return ('lshw output', '')
            return ('', '')

        self.mock_subp.side_effect = fake_subp
        collect_logs._collect_system_info(self.new_root, config={})
        lshw = self.tmp_path('lshw', _dir=self.new_root)
        with open(lshw, 'r') as f:
            self.assertEqual(f.read(), 'lshw output')
Beispiel #4
0
    def test_wb_collect_system_info_copies_system_files(self):
        """_collect_system_info copies system files into in target_dir.

        Expected files are minimally /etc/os-release, /proc/cmdline and
        /proc/partitions. Since os-release cmdline files are read-only chmod
        copied files 0o644.
        """
        with mock.patch('curtin.commands.collect_logs.os.chmod') as m_chmod:
            with mock.patch('shutil.copy') as m_copy:
                collect_logs._collect_system_info(self.new_root, config={})
        self.assertEqual([
            mock.call('/etc/os-release', self.new_root),
            mock.call('/proc/cmdline', self.new_root),
            mock.call('/proc/partitions', self.new_root)
        ], m_copy.call_args_list)
        for fname in ('os-release', 'cmdline', 'partitions'):
            self.assertIn(
                mock.call(os.path.join(self.new_root, 'os-release'), 0o644),
                m_chmod.call_args_list)
Beispiel #5
0
 def test_wb_collect_system_info_writes_curtin_config(self):
     """_collect_system_info saves curtin config json-formatted."""
     config = {
         "install": {
             "log_file": "/var/log/curtin/install.log"
         },
         "late_commands": {
             "builtin": []
         }
     }
     collect_logs._collect_system_info(self.new_root, config=config)
     curtin_config = self.tmp_path('curtin-config', _dir=self.new_root)
     with open(curtin_config, 'r') as f:
         self.assertEqual(
             f.read(),
             json.dumps(config,
                        indent=1,
                        sort_keys=True,
                        separators=(',', ': ')))
Beispiel #6
0
    def test_wb_collect_system_info_writes_network_info(self):
        """_collect_system_info saves network details in target_dir."""

        ipv4_addr = '1: lo    inet 127.0.0.1/8 scope host lo'
        ipv6_addr = '1: lo    inet6 ::1/128 scope host'
        ipv4_route = 'default via 192.168.2.1 dev wlp3s0'
        ipv6_route = 'fe80::/64 dev lxdbr0  proto kernel'
        expected = dedent("""\
            === ip --oneline address list ===
            {ipv4_addr}
            === ip --oneline -6 address list ===
            {ipv6_addr}
            === ip --oneline route list ===
            {ipv4_route}
            === ip --oneline -6 route list ===
            {ipv6_route}""".format(ipv4_addr=ipv4_addr,
                                   ipv6_addr=ipv6_addr,
                                   ipv4_route=ipv4_route,
                                   ipv6_route=ipv6_route))

        def fake_subp(cmd, capture=False, combine_capture=False):
            if cmd[0] == 'ip':
                assert combine_capture, ('combine_capture not set for cmd %s' %
                                         cmd)
            else:
                assert capture, 'capture not set True for cmd %s' % cmd
            if cmd == ['ip', '--oneline', 'address', 'list']:
                return ipv4_addr, ''
            if cmd == ['ip', '--oneline', '-6', 'address', 'list']:
                return ipv6_addr, ''
            if cmd == ['ip', '--oneline', 'route', 'list']:
                return ipv4_route, ''
            if cmd == ['ip', '--oneline', '-6', 'route', 'list']:
                return ipv6_route, ''
            return ('', '')

        self.mock_subp.side_effect = fake_subp
        collect_logs._collect_system_info(self.new_root, config={})
        network = self.tmp_path('network', _dir=self.new_root)
        with open(network, 'r') as f:
            self.assertEqual(f.read(), expected)