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)
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)
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)
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)
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)
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
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
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
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
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
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
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