def validate_bintray_credentials(image_version, offline_mode): """ Validates if the necessary Bintray credentials exists to start the ConductR cluster. Credentials are necessary prior to ConductR 2.1.0. From onwards 2.1.0, no credentials are needed. :param image_version: the ConductR image version :param offline_mode: the offline mode flag """ if not offline_mode and is_conductr_on_private_bintray(image_version): bintray_resolver.load_bintray_credentials(raise_error=True, disable_instructions=True)
def test_missing_credential_file(self): exists_mock = MagicMock(return_value=False) with patch('os.path.exists', exists_mock): username, password = bintray_resolver.load_bintray_credentials() self.assertIsNone(username) self.assertIsNone(password) exists_mock.assert_called_with('{}/.bintray/.credentials'.format(os.path.expanduser('~')))
def test_missing_credential_file(self): exists_mock = MagicMock(return_value=False) with patch('os.path.exists', exists_mock): username, password = bintray_resolver.load_bintray_credentials() self.assertIsNone(username) self.assertIsNone(password) exists_mock.assert_called_with('{}/.bintray/.credentials'.format(os.path.expanduser('~')))
def test_credential_file_not_having_username_password(self): bintray_credential_file = strip_margin( """|dummy = yes |""") exists_mock = MagicMock(return_value=True) open_mock = MagicMock(return_value=io.StringIO(bintray_credential_file)) with patch('os.path.exists', exists_mock), \ patch('builtins.open', open_mock): username, password = bintray_resolver.load_bintray_credentials() self.assertIsNone(username) self.assertIsNone(password) exists_mock.assert_called_with('{}/.bintray/.credentials'.format(os.path.expanduser('~'))) open_mock.assert_called_with('{}/.bintray/.credentials'.format(os.path.expanduser('~')), 'r')
def test_credential_file_not_having_username_password(self): bintray_credential_file = strip_margin( """|dummy = yes |""") exists_mock = MagicMock(return_value=True) open_mock = MagicMock(return_value=io.StringIO(bintray_credential_file)) with patch('os.path.exists', exists_mock), \ patch('builtins.open', open_mock): username, password = bintray_resolver.load_bintray_credentials() self.assertIsNone(username) self.assertIsNone(password) exists_mock.assert_called_with('{}/.bintray/.credentials'.format(os.path.expanduser('~'))) open_mock.assert_called_with('{}/.bintray/.credentials'.format(os.path.expanduser('~')), 'r')
def test_success(self): bintray_credential_file = strip_margin( """|user = user1 |password = sec=ret |# Some comment |""") exists_mock = MagicMock(return_value=True) open_mock = MagicMock(return_value=io.StringIO(bintray_credential_file)) with patch('os.path.exists', exists_mock), \ patch('builtins.open', open_mock): username, password = bintray_resolver.load_bintray_credentials() self.assertEqual('user1', username) self.assertEqual('sec=ret', password) exists_mock.assert_called_with('{}/.bintray/.credentials'.format(os.path.expanduser('~'))) open_mock.assert_called_with('{}/.bintray/.credentials'.format(os.path.expanduser('~')), 'r')
def test_success(self): bintray_credential_file = strip_margin( """|user = user1 |password = sec=ret |# Some comment |""") exists_mock = MagicMock(return_value=True) open_mock = MagicMock(return_value=io.StringIO(bintray_credential_file)) with patch('os.path.exists', exists_mock), \ patch('builtins.open', open_mock): username, password = bintray_resolver.load_bintray_credentials() self.assertEqual('user1', username) self.assertEqual('sec=ret', password) exists_mock.assert_called_with('{}/.bintray/.credentials'.format(os.path.expanduser('~'))) open_mock.assert_called_with('{}/.bintray/.credentials'.format(os.path.expanduser('~')), 'r')
def download_sandbox_image(image_dir, package_name, artefact_type, image_version): try: bintray_auth = bintray_resolver.load_bintray_credentials() if artefact_type == 'core': file_prefix = 'conductr-{}-{}'.format(image_version, artefact_os_name()) else: file_prefix = 'conductr-agent-{}-{}'.format( image_version, artefact_os_name()) def is_matching_artefact(download_url): artefact_file_name = os.path.basename(download_url) return artefact_file_name.startswith( file_prefix) and artefact_file_name.endswith('64.tgz') artefacts = [ artefact for artefact in bintray_resolver.bintray_artefacts_by_version( bintray_auth, BINTRAY_LIGHTBEND_ORG, BINTRAY_CONDUCTR_REPO, package_name, image_version) if is_matching_artefact(artefact['download_url']) ] if len(artefacts) == 1: is_success, _, download_path = bintray_resolver.bintray_download_artefact( image_dir, artefacts[0], bintray_auth) if is_success: return download_path raise SandboxImageNotFoundError(artefact_type, image_version) except ConnectionError: raise BintrayUnreachableError('Bintray is unreachable.') except HTTPError: raise SandboxImageNotFoundError(artefact_type, image_version)