Пример #1
0
 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)
Пример #2
0
 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
    ]))
Пример #4
0
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]
Пример #5
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
Пример #6
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
Пример #7
0
 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)
Пример #8
0
 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)
Пример #9
0
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()
Пример #10
0
 def test_machine_platform(self):
     self.assertIn('win32' if utils.IS_WIN else 'linux_x86_64',
                   utils.get_platform())
Пример #11
0
 def test_machine_platform(self):
     self.assertIn(
         'win32' if utils.IS_WIN else 'linux_x86_64', utils.get_platform())
Пример #12
0
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()