Ejemplo n.º 1
0
 def test_status_error(self, mock_serverproxy):
     """Test a error status request to Satellite server."""
     client = mock_serverproxy.return_value
     client.auth.login.side_effect = mock_xml_fault
     with requests_mock.Mocker() as mocker:
         status_url = 'https://{sat_host}:{port}/api/status'
         url = construct_url(status_url, '1.2.3.4')
         jsonresult = {'api_version': 2}
         mocker.get(url, status_code=401, json=jsonresult)
         with self.assertRaises(SatelliteAuthException):
             status(self.scan_task)
             mock_serverproxy.auth.login.assert_called_once_with(ANY, ANY)
Ejemplo n.º 2
0
 def test_status_sat6(self, mock_status5):
     """Test a patched status request to Satellite 6 server."""
     status_code, api_version, satellite_version = status(self.scan_task)
     self.assertEqual(status_code, 200)
     self.assertEqual(api_version, SATELLITE_VERSION_6)
     self.assertEqual(satellite_version, SATELLITE_VERSION_6)
     mock_status5.assert_called_once_with(ANY)
Ejemplo n.º 3
0
    def test_status_sat5(self, mock_status5):
        """Test a patched status request to Satellite 5 server."""
        satellite_version = SourceOptions.SATELLITE_VERSION_5
        status_code, api_version = status(self.scan_task, satellite_version)

        self.assertEqual(status_code, 200)
        self.assertEqual(api_version, SourceOptions.SATELLITE_VERSION_5)
        mock_status5.assert_called_once_with(ANY)
Ejemplo n.º 4
0
    def test_status_error(self):
        """Test a error status request to Satellite server."""
        with requests_mock.Mocker() as mocker:
            status_url = 'https://{sat_host}:{port}/api/status'
            url = construct_url(status_url, '1.2.3.4')
            jsonresult = {'api_version': 2}
            mocker.get(url, status_code=401, json=jsonresult)
            satellite_version = SourceOptions.SATELLITE_VERSION_62
            status_code, api_version = status(self.scan_task,
                                              satellite_version)

            self.assertEqual(status_code, 401)
            self.assertEqual(api_version, None)
Ejemplo n.º 5
0
 def test_status(self, mock_serverproxy):
     """Test a successful status request to Satellite server."""
     client = mock_serverproxy.return_value
     client.auth.login.side_effect = mock_xml_fault
     with requests_mock.Mocker() as mocker:
         status_url = 'https://{sat_host}:{port}/api/status'
         url = construct_url(status_url, '1.2.3.4')
         jsonresult = {'api_version': 2}
         mocker.get(url, status_code=200, json=jsonresult)
         status_code, api_version, satellite_version = \
             status(self.scan_task)
         self.assertEqual(status_code, 200)
         self.assertEqual(api_version, 2)
         self.assertEqual(satellite_version, SATELLITE_VERSION_6)
Ejemplo n.º 6
0
    def run(self):
        """Scan network range ang attempt connections."""
        satellite_version = None
        options = self.source.options
        if options:
            satellite_version = options.satellite_version

        if satellite_version is None:
            error_message = 'Satellite version is unknown. '
            error_message += 'Connect scan failed for %s.' % self.scan_task
            return error_message, ScanTask.FAILED

        try:
            status_code, api_version = utils.status(self.scan_task,
                                                    satellite_version)
            if status_code == 200:
                api = create(satellite_version, api_version, self.scan_task,
                             self.conn_result)
                if not api:
                    error_message = 'Satellite version %s with '\
                        'api version %s is not supported.\n' %\
                        (satellite_version, api_version)
                    error_message += 'Connect scan failed for %s.' % \
                        self.scan_task
                    return error_message, ScanTask.FAILED
                api.host_count()
                api.hosts()
            else:
                error_message = 'Connect scan failed for %s.' % self.scan_task
                return error_message, ScanTask.FAILED
        except SatelliteException as sat_error:
            error_message = 'Satellite error encountered: %s\n' % sat_error
            error_message += 'Connect scan failed for %s.' % self.scan_task
            return error_message, ScanTask.FAILED
        except exceptions.ConnectionError as conn_error:
            error_message = 'Satellite error encountered: %s\n' % conn_error
            error_message += 'Connect scan failed for %s.' % self.scan_task
            return error_message, ScanTask.FAILED
        except TimeoutError as timeout_error:
            error_message = 'Satellite error encountered: %s\n' % timeout_error
            error_message += 'Connect scan failed for %s.' % self.scan_task
            return error_message, ScanTask.FAILED
        except Exception as unknown_error:  # pylint: disable=broad-except
            error_message = 'Satellite error encountered: %s\n' % unknown_error
            error_message += 'Inspect scan failed for %s.' % self.scan_task
            return error_message, ScanTask.FAILED

        return None, ScanTask.COMPLETED
Ejemplo n.º 7
0
    def run(self):
        """Scan Satellite for system connection data."""
        try:
            status_code, api_version, satellite_version = \
                utils.status(self.scan_task)
            if status_code == 200:
                api = create(satellite_version, api_version, self.scan_job,
                             self.scan_task)
                if not api:
                    error_message = 'Satellite version %s with '\
                        'api version %s is not supported.\n' %\
                        (satellite_version, api_version)
                    error_message += 'Connect scan failed for %s. ' % \
                        self.source.name
                    return error_message, ScanTask.FAILED
                api.host_count()
                api.hosts()
            else:
                error_message = 'Connect scan failed for source %s.' \
                    % self.source.name
                return error_message, ScanTask.FAILED
        except SatelliteAuthException as auth_error:
            error_message = 'Satellite error encountered: %s. ' % auth_error
            error_message += 'Connect scan failed for source %s.' \
                % self.source.name
            return error_message, ScanTask.FAILED
        except SatelliteException as sat_error:
            error_message = 'Satellite error encountered: %s. ' % sat_error
            error_message += 'Connect scan failed for source %s.' \
                % self.source.name
            return error_message, ScanTask.FAILED
        except exceptions.ConnectionError as conn_error:
            error_message = 'Satellite error encountered: %s. ' % conn_error
            error_message += 'Connect scan failed for source %s.' \
                % self.source.name
            return error_message, ScanTask.FAILED
        except TimeoutError as timeout_error:
            error_message = 'Satellite error encountered: %s. ' % timeout_error
            error_message += 'Connect scan failed for source %s.' \
                % self.source.name
            return error_message, ScanTask.FAILED
        except socket.gaierror as socket_error:
            error_message = 'Satellite error encountered: %s. ' % socket_error
            error_message += 'Connect scan failed for source %s.' \
                             % self.source.name
            return error_message, ScanTask.FAILED

        return None, ScanTask.COMPLETED
Ejemplo n.º 8
0
    def run(self):
        """Scan satellite manager and obtain host facts."""
        self.connect_scan_task = self.scan_task.prerequisites.first()
        if self.connect_scan_task.status != ScanTask.COMPLETED:
            error_message = 'Prerequisites scan task with id %d failed.' %\
                (self.connect_scan_task.id)
            return error_message, ScanTask.FAILED

        try:
            status_code, api_version, satellite_version = \
                utils.status(self.scan_task)
            if status_code == 200:
                api = create(satellite_version, api_version, self.scan_job,
                             self.scan_task)
                if not api:
                    error_message = 'Satellite version %s with '\
                        'api version %s is not supported. ' %\
                        (satellite_version, api_version)
                    error_message += 'Inspect scan failed for source %s.' % \
                        (self.source.name)
                    return error_message, ScanTask.FAILED
                api.hosts_facts()
            else:
                error_message = 'Inspect scan failed for source %s.' \
                    % self.source.name
                return error_message, ScanTask.FAILED
        except SatelliteAuthException as auth_error:
            error_message = 'Satellite error encountered: %s. ' % auth_error
            error_message += 'Inspect scan failed for source %s.' \
                % self.source.name
            return error_message, ScanTask.FAILED
        except SatelliteException as sat_error:
            error_message = 'Satellite error encountered: %s. ' % sat_error
            error_message += 'Inspect scan failed for source %s.' \
                % self.source.name
            return error_message, ScanTask.FAILED
        except exceptions.ConnectionError as conn_error:
            error_message = 'Satellite error encountered: %s. ' % conn_error
            error_message += 'Inspect scan failed for %s.' % self.source.name
            return error_message, ScanTask.FAILED
        except TimeoutError as timeout_error:
            error_message = 'Satellite error encountered: %s. ' % timeout_error
            error_message += 'Inspect scan failed for %s.' % self.source.name
            return error_message, ScanTask.FAILED

        return None, ScanTask.COMPLETED
Ejemplo n.º 9
0
    def run(self, manager_interrupt):
        """Scan satellite manager and obtain host facts."""
        # Make sure job is not cancelled or paused
        if manager_interrupt.value == ScanJob.JOB_TERMINATE_CANCEL:
            manager_interrupt.value = ScanJob.JOB_TERMINATE_ACK
            error_message = 'Scan canceled for %s.' % self.source.name
            manager_interrupt.value = ScanJob.JOB_TERMINATE_ACK
            return error_message, ScanTask.CANCELED

        if manager_interrupt.value == ScanJob.JOB_TERMINATE_PAUSE:
            manager_interrupt.value = ScanJob.JOB_TERMINATE_ACK
            error_message = 'Scan paused for %s.' % self.source.name
            manager_interrupt.value = ScanJob.JOB_TERMINATE_ACK
            return error_message, ScanTask.PAUSED

        self.connect_scan_task = self.scan_task.prerequisites.first()
        if self.connect_scan_task.status != ScanTask.COMPLETED:
            error_message = 'Prerequisites scan task with id %d failed.' %\
                (self.connect_scan_task.id)
            return error_message, ScanTask.FAILED

        try:
            status_code, api_version, satellite_version = \
                utils.status(self.scan_task)
            if status_code == 200:
                api = create(satellite_version, api_version, self.scan_job,
                             self.scan_task)
                if not api:
                    error_message = 'Satellite version %s with '\
                        'api version %s is not supported. ' %\
                        (satellite_version, api_version)
                    error_message += 'Inspect scan failed for source %s.' % \
                        (self.source.name)
                    return error_message, ScanTask.FAILED
                api.hosts_facts(manager_interrupt)
            else:
                error_message = 'Inspect scan failed for source %s.' \
                    % self.source.name
                return error_message, ScanTask.FAILED
        except SatelliteAuthException as auth_error:
            error_message = 'Satellite auth error encountered: %s. ' % \
                auth_error
            error_message += 'Inspect scan failed for source %s.' \
                % self.source.name
            return error_message, ScanTask.FAILED
        except SatelliteException as sat_error:
            error_message = 'Satellite unknown error encountered: %s. ' % \
                sat_error
            error_message += 'Inspect scan failed for source %s.' \
                % self.source.name
            return error_message, ScanTask.FAILED
        except SatelliteCancelException:
            error_message = 'Inspect scan cancel for %s.' % self.source.name
            manager_interrupt.value = ScanJob.JOB_TERMINATE_ACK
            return error_message, ScanTask.CANCELED
        except SatellitePauseException:
            error_message = 'Inspect scan pause for %s.' % self.source.name
            manager_interrupt.value = ScanJob.JOB_TERMINATE_ACK
            return error_message, ScanTask.PAUSED
        except exceptions.ConnectionError as conn_error:
            error_message = 'Satellite connection error encountered: %s. ' % \
                conn_error
            error_message += 'Inspect scan failed for %s.' % self.source.name
            return error_message, ScanTask.FAILED
        except TimeoutError as timeout_error:
            error_message = 'Satellite timeout error encountered: %s. ' % \
                timeout_error
            error_message += 'Inspect scan failed for %s.' % self.source.name
            return error_message, ScanTask.FAILED

        return None, ScanTask.COMPLETED
Ejemplo n.º 10
0
    def run(self):
        """Scan satellite manager and obtain host facts."""
        self.connect_scan_task = self.scan_task.prerequisites.first()
        if self.connect_scan_task.status != ScanTask.COMPLETED:
            error_message = 'Prerequisites scan task with id %d failed.' %\
                (self.connect_scan_task.id)
            return error_message, ScanTask.FAILED

        satellite_version = None
        options = self.source.options
        if options:
            satellite_version = options.satellite_version

        if satellite_version is None:
            error_message = 'Satellite version is unknown. '
            error_message += 'Connect scan failed for %s.' % self.scan_task
            return error_message, ScanTask.FAILED

        try:
            status_code, api_version = utils.status(self.scan_task,
                                                    satellite_version)
            if status_code == 200:
                self.conn_result = self.scan_job.connection_results.results.\
                    filter(scan_task=self.connect_scan_task.id).first()
                inspect_result = None
                if self.scan_job.inspection_results is not None:
                    inspect_result = self.scan_job.inspection_results.results.\
                        filter(source__id=self.source.id).first()

                if inspect_result is None:
                    inspect_result = TaskInspectionResult(
                        source=self.scan_task.source, scan_task=self.scan_task)
                    inspect_result.save()
                    self.scan_job.inspection_results.results.add(
                        inspect_result)
                    self.scan_job.inspection_results.save()
                self.inspect_result = inspect_result

                api = create(satellite_version, api_version, self.scan_task,
                             self.conn_result, self.inspect_result)
                if not api:
                    error_message = 'Satellite version %s with '\
                        'api version %s is not supported.\n' %\
                        (satellite_version, api_version)
                    error_message += 'Inspect scan failed for %s.' % \
                        (self.scan_task)
                    return error_message, ScanTask.FAILED
                api.hosts_facts()
            else:
                error_message = 'Inspect scan failed for %s.' % self.scan_task
                return error_message, ScanTask.FAILED
        except SatelliteException as sat_error:
            error_message = 'Satellite error encountered: %s\n' % sat_error
            error_message += 'Inspect scan failed for %s.' % self.scan_task
            return error_message, ScanTask.FAILED
        except exceptions.ConnectionError as conn_error:
            error_message = 'Satellite error encountered: %s\n' % conn_error
            error_message += 'Inspect scan failed for %s.' % self.scan_task
            return error_message, ScanTask.FAILED
        except TimeoutError as timeout_error:
            error_message = 'Satellite error encountered: %s\n' % timeout_error
            error_message += 'Connect scan failed for %s.' % self.scan_task
            return error_message, ScanTask.FAILED
        except Exception as unknown_error:  # pylint: disable=broad-except
            error_message = 'Satellite error encountered: %s\n' % unknown_error
            error_message += 'Inspect scan failed for %s.' % self.scan_task
            return error_message, ScanTask.FAILED

        return None, ScanTask.COMPLETED
Ejemplo n.º 11
0
    def run(self, manager_interrupt):
        """Scan Satellite for system connection data."""
        # Make sure job is not cancelled or paused
        if manager_interrupt.value == ScanJob.JOB_TERMINATE_CANCEL:
            manager_interrupt.value = ScanJob.JOB_TERMINATE_ACK
            error_message = 'Scan canceled for %s.' % self.source.name
            manager_interrupt.value = ScanJob.JOB_TERMINATE_ACK
            return error_message, ScanTask.CANCELED

        if manager_interrupt.value == ScanJob.JOB_TERMINATE_PAUSE:
            manager_interrupt.value = ScanJob.JOB_TERMINATE_ACK
            error_message = 'Scan paused for %s.' % self.source.name
            manager_interrupt.value = ScanJob.JOB_TERMINATE_ACK
            return error_message, ScanTask.PAUSED
        try:
            status_code, api_version, satellite_version = \
                utils.status(self.scan_task)
            if status_code is None:
                error_message = 'Unknown satellite version is not ' \
                                'supported. '
                error_message += 'Connect scan failed for source %s.' % \
                                 (self.source.name)
                return error_message, ScanTask.FAILED
            if status_code == 200:
                api = create(satellite_version, api_version, self.scan_job,
                             self.scan_task)
                if not api:
                    error_message = 'Satellite version %s with '\
                        'api version %s is not supported.\n' %\
                        (satellite_version, api_version)
                    error_message += 'Connect scan failed for %s. ' % \
                        self.source.name
                    return error_message, ScanTask.FAILED
                api.host_count()
                api.hosts()
            else:
                error_message = 'Connect scan failed for source %s.' \
                    % self.source.name
                return error_message, ScanTask.FAILED
        except SatelliteAuthException as auth_error:
            error_message = 'Satellite auth error encountered: %s. ' \
                % auth_error
            error_message += 'Connect scan failed for source %s.' \
                % self.source.name
            return error_message, ScanTask.FAILED
        except SatelliteException as sat_error:
            error_message = 'Satellite unknown error encountered: %s. ' \
                % sat_error
            error_message += 'Connect scan failed for source %s.' \
                % self.source.name
            return error_message, ScanTask.FAILED
        except exceptions.ConnectionError as conn_error:
            error_message = 'Satellite connect error encountered: %s. '\
                % conn_error
            error_message += 'Connect scan failed for source %s.' \
                % self.source.name
            return error_message, ScanTask.FAILED
        except TimeoutError as timeout_error:
            error_message = 'Satellite timeout error encountered: %s. ' \
                % timeout_error
            error_message += 'Connect scan failed for source %s.' \
                % self.source.name
            return error_message, ScanTask.FAILED
        except socket.gaierror as socket_error:
            error_message = 'Satellite gaierror error encountered: %s. ' \
                % socket_error
            error_message += 'Connect scan failed for source %s.' \
                             % self.source.name
            return error_message, ScanTask.FAILED

        return None, ScanTask.COMPLETED
Ejemplo n.º 12
0
    def run(self, manager_interrupt):
        """Scan Satellite for system connection data."""
        super_message, super_status = super().run(manager_interrupt)
        if super_status != ScanTask.COMPLETED:
            return super_message, super_status

        try:
            status_code, api_version, satellite_version = \
                utils.status(self.scan_task)
            if status_code is None:
                error_message = 'Unknown satellite version is not ' \
                                'supported. '
                error_message += 'Connect scan failed for source %s.' % \
                                 (self.source.name)
                return error_message, ScanTask.FAILED
            if status_code == 200:
                api = create(satellite_version, api_version, self.scan_job,
                             self.scan_task)
                if not api:
                    error_message = 'Satellite version %s with '\
                        'api version %s is not supported.\n' %\
                        (satellite_version, api_version)
                    error_message += 'Connect scan failed for %s. ' % \
                        self.source.name
                    return error_message, ScanTask.FAILED
                api.host_count()
                api.hosts()
            else:
                error_message = 'Connect scan failed for source %s.' \
                    % self.source.name
                return error_message, ScanTask.FAILED
        except SatelliteAuthException as auth_error:
            error_message = 'Satellite auth error encountered: %s. ' \
                % auth_error
            error_message += 'Connect scan failed for source %s.' \
                % self.source.name
            return error_message, ScanTask.FAILED
        except SatelliteException as sat_error:
            error_message = 'Satellite unknown error encountered: %s. ' \
                % sat_error
            error_message += 'Connect scan failed for source %s.' \
                % self.source.name
            return error_message, ScanTask.FAILED
        except exceptions.ConnectionError as conn_error:
            error_message = 'Satellite connect error encountered: %s. '\
                % conn_error
            error_message += 'Connect scan failed for source %s.' \
                % self.source.name
            return error_message, ScanTask.FAILED
        except TimeoutError as timeout_error:
            error_message = 'Satellite timeout error encountered: %s. ' \
                % timeout_error
            error_message += 'Connect scan failed for source %s.' \
                % self.source.name
            return error_message, ScanTask.FAILED
        except socket.gaierror as socket_error:
            error_message = 'Satellite gaierror error encountered: %s. ' \
                % socket_error
            error_message += 'Connect scan failed for source %s.' \
                             % self.source.name
            return error_message, ScanTask.FAILED

        return None, ScanTask.COMPLETED