def test_implicit_supported_platform(self): plugins = [ { 'id': '1' }, { 'id': '2' }, { 'id': '3', 'supported_platform': wagon_utils.get_platform() }, { 'id': '4' }, { 'id': '5' }, ] plugin = { 'package_name': 'plugin', 'distribution': 'x', 'distribution_release': 'x' } with self._patch(plugins=plugins): self.assertEquals('3', installer.get_managed_plugin(plugin=plugin).id)
def test_create_archive_from_url_with_requirements(self): self.wagon.platform = 'win32' if utils.IS_WIN else utils.get_platform() self.archive_name = self.wagon.set_archive_name( TEST_PACKAGE_NAME, TEST_PACKAGE_VERSION) params = {'-s': TEST_FILE, '-v': None, '-f': None, '-r': None} result = _invoke_click('create', params) self.assertIn('Process complete!', str(result.output)) m = self._test() self.assertEqual(m['package_source'], TEST_FILE)
def _plugin_installable_on_current_platform(plugin): if not get_platform: return True dist, _, release = linux_distribution(full_distribution_name=False) dist, release = dist.lower(), release.lower() return (plugin['supported_platform'] == 'any' or all([ plugin['supported_platform'] == get_platform(), plugin['distribution'] == dist, plugin['distribution_release'] == release ]))
def get_managed_plugin(plugin, logger=None): package_name = plugin.get('package_name') package_version = plugin.get('package_version') distribution = plugin.get('distribution') distribution_version = plugin.get('distribution_version') distribution_release = plugin.get('distribution_release') supported_platform = plugin.get('supported_platform') if not (package_name and package_version): if package_name and logger: logger.warn('package_name {0} is specified but no package_version ' 'found, skipping wagon installation.' .format(package_name)) return None query_parameters = { 'package_name': package_name, 'package_version': package_version } if distribution: query_parameters['distribution'] = distribution if distribution_version: query_parameters['distribution_version'] = distribution_version if distribution_release: query_parameters['distribution_release'] = distribution_release if supported_platform: query_parameters['supported_platform'] = supported_platform client = get_rest_client() plugins = client.plugins.list(**query_parameters) if not supported_platform: current_platform = wagon_utils.get_platform() plugins = [p for p in plugins if p.supported_platform in ['any', current_platform]] if os.name != 'nt': a_dist, _, a_dist_release = platform.linux_distribution( full_distribution_name=False) a_dist, a_dist_release = a_dist.lower(), a_dist_release.lower() if not distribution: plugins = [p for p in plugins if p.supported_platform == 'any' or p.distribution == a_dist] if not distribution_release: plugins = [p for p in plugins if p.supported_platform == 'any' or p.distribution_release == a_dist_release] if not plugins: return None # we return the first one because both package name and version # are required fields. No one pick is better than the other return plugins[0]
def get_managed_plugin(plugin): package_name = plugin.get('package_name') package_version = plugin.get('package_version') distribution = plugin.get('distribution') distribution_version = plugin.get('distribution_version') distribution_release = plugin.get('distribution_release') supported_platform = plugin.get('supported_platform') if not package_name: return None query_parameters = {'package_name': package_name} if package_version: query_parameters['package_version'] = package_version if distribution: query_parameters['distribution'] = distribution if distribution_version: query_parameters['distribution_version'] = distribution_version if distribution_release: query_parameters['distribution_release'] = distribution_release if supported_platform: query_parameters['supported_platform'] = supported_platform client = get_rest_client() plugins = client.plugins.list(**query_parameters) if not supported_platform: current_platform = wagon_utils.get_platform() plugins = [ p for p in plugins if p.supported_platform in ['any', current_platform] ] if os.name != 'nt': a_dist, _, a_dist_release = platform.linux_distribution( full_distribution_name=False) a_dist, a_dist_release = a_dist.lower(), a_dist_release.lower() if not distribution: plugins = [ p for p in plugins if p.supported_platform == 'any' or p.distribution == a_dist ] if not distribution_release: plugins = [ p for p in plugins if p.supported_platform == 'any' or p.distribution_release == a_dist_release ] if not plugins: return None plugin_result = max(plugins, key=lambda plug: LooseVersion(plug.package_version)) return plugin_result
def get_managed_plugin(plugin): package_name = plugin.get('package_name') package_version = plugin.get('package_version') distribution = plugin.get('distribution') distribution_version = plugin.get('distribution_version') distribution_release = plugin.get('distribution_release') supported_platform = plugin.get('supported_platform') if not package_name: return None query_parameters = { 'package_name': package_name } if package_version: query_parameters['package_version'] = package_version if distribution: query_parameters['distribution'] = distribution if distribution_version: query_parameters['distribution_version'] = distribution_version if distribution_release: query_parameters['distribution_release'] = distribution_release if supported_platform: query_parameters['supported_platform'] = supported_platform client = get_rest_client() plugins = client.plugins.list(**query_parameters) if not supported_platform: current_platform = wagon_utils.get_platform() plugins = [p for p in plugins if p.supported_platform in ['any', current_platform]] if os.name != 'nt': a_dist, _, a_dist_release = platform.linux_distribution( full_distribution_name=False) a_dist, a_dist_release = a_dist.lower(), a_dist_release.lower() if not distribution: plugins = [p for p in plugins if p.supported_platform == 'any' or p.distribution == a_dist] if not distribution_release: plugins = [p for p in plugins if p.supported_platform == 'any' or p.distribution_release == a_dist_release] if not plugins: return None plugin_result = max(plugins, key=lambda plug: LooseVersion(plug.package_version)) return plugin_result
def test_implicit_supported_platform(self): plugins = [ {'id': '1'}, {'id': '2'}, {'id': '3', 'supported_platform': wagon_utils.get_platform()}, {'id': '4'}, {'id': '5'}, ] plugin = {'package_name': 'plugin', 'distribution': 'x', 'distribution_release': 'x'} with self._patch(plugins=plugins): self.assertEquals('3', installer.get_managed_plugin(plugin=plugin).id)
def test_create_archive_from_url_with_requirements(self): self.wagon.platform = 'win32' if utils.IS_WIN else utils.get_platform() self.archive_name = self.wagon.set_archive_name( TEST_PACKAGE_NAME, TEST_PACKAGE_VERSION) params = { '-s': TEST_FILE, '-v': None, '-f': None, '-r': None } result = _invoke_click('create', params) self.assertIn('Process complete!', str(result.output)) m = self._test() self.assertEqual(m['package_source'], TEST_FILE)
def _extract_platform_and_distro_info(): current_platform = wagon_utils.get_platform() distribution, _, distribution_release = platform.linux_distribution( full_distribution_name=False) return current_platform, distribution.lower(), distribution_release.lower()
def test_machine_platform(self): self.assertIn('win32' if utils.IS_WIN else 'linux_x86_64', utils.get_platform())
def test_machine_platform(self): self.assertIn( 'win32' if utils.IS_WIN else 'linux_x86_64', utils.get_platform())
def _extract_platform_and_distro_info(): current_platform = wagon_utils.get_platform() distribution, _, distribution_release = platform.linux_distribution( full_distribution_name=False) return current_platform, distribution.lower(), distribution_release.lower()