'Returns None if there are no errors, otherwise returns a list
of things to correct prior to running application \'for real\'.
(The CLI usage is "cobbler check" before "cobbler sync")'

def run(self):

    status = []
    self.checked_family = utils.get_family()
    self.check_name(status)
    self.check_selinux(status)
    if self.settings.manage_dhcp:
        mode = self.collection_mgr.api.get_sync().dhcp.what()
        if (mode == 'isc'):
            self.check_dhcpd_bin(status)
            self.check_dhcpd_conf(status)
            self.check_service(status, 'dhcpd')
        elif (mode == 'dnsmasq'):
            self.check_dnsmasq_bin(status)
            self.check_service(status, 'dnsmasq')
    if self.settings.manage_dns:
        mode = self.collection_mgr.api.get_sync().dns.what()
        if (mode == 'bind'):
            self.check_bind_bin(status)
            self.check_service(status, 'named')
        elif ((mode == 'dnsmasq') and (not self.settings.manage_dhcp)):
            self.check_dnsmasq_bin(status)
            self.check_service(status, 'dnsmasq')
    mode = self.collection_mgr.api.get_sync().tftpd.what()
    if (mode == 'in_tftpd'):
        self.check_tftpd_bin(status)
        self.check_tftpd_dir(status)
        self.check_tftpd_conf(status)
    elif (mode == 'tftpd_py'):
        self.check_ctftpd_bin(status)
        self.check_ctftpd_dir(status)
        self.check_ctftpd_conf(status)
    self.check_service(status, 'cobblerd')
    self.check_bootloaders(status)
    self.check_for_wget_curl(status)
    self.check_rsync_conf(status)
    self.check_httpd(status)
    self.check_iptables(status)
    self.check_yum(status)
    self.check_debmirror(status)
    self.check_for_ksvalidator(status)
    self.check_for_default_password(status)
    self.check_for_unreferenced_repos(status)
    self.check_for_unsynced_repos(status)
    self.check_for_cman(status)
    return status
