Пример #1
0
 def test_plugin_version_already_installed(self, _poll_plugins):
     _poll_plugins.return_value = self.DATA
     already_installed = Plugin({'shortName': 'subversion',
                                 'version': '1.45'})
     self.assertTrue(
         self.J.plugins.plugin_version_already_installed(already_installed))
     not_installed = Plugin({'shortName': 'subversion', 'version': '1.46'})
     self.assertFalse(
         self.J.plugins.plugin_version_already_installed(not_installed))
     latest = Plugin({'shortName': 'subversion', 'version': 'latest'})
     self.assertFalse(
         self.J.plugins.plugin_version_already_installed(latest))
Пример #2
0
 def install_plugins(self,
                     plugin_list,
                     restart=True,
                     force_restart=False,
                     wait_for_reboot=True,
                     no_reboot_warning=False):
     """
     Install a list of plugins and optionally restart jenkins.
     @param plugin_list: List of plugins (strings, Plugin objects or a mix of
     the two) to be installed
     @param restart: Boolean, restart Jenkins when required by plugin
     @param force_restart: Boolean, force Jenkins to restart, ignoring plugin
     preferences
     """
     plugins = [
         p if isinstance(p, Plugin) else Plugin(p) for p in plugin_list
     ]
     for plugin in plugins:
         self.install_plugin(plugin, restart=False, no_reboot_warning=True)
     if force_restart or (restart and self.plugins.restart_required):
         self.safe_restart(wait_for_reboot=wait_for_reboot)
     elif self.plugins.restart_required and not no_reboot_warning:
         warnings.warn(
             "System reboot is required, but automatic reboot is disabled. "
             "Please reboot manually.")
Пример #3
0
    def test_plugin_get_by_name(self, _poll_plugins):
        _poll_plugins.return_value = self.DATA

        p = Plugin(
            {
                'deleted': False,
                'hasUpdate': True,
                'downgradable': False,
                'dependencies': [{}, {}, {}, {}],
                'longName': 'Jenkins Subversion Plug-in',
                'active': True,
                'shortName': 'subversion',
                'backupVersion': None,
                'url': 'http://wiki.jenkins-ci.org/display/JENKINS/'
                'Subversion+Plugin',
                'enabled': True,
                'pinned': False,
                'version': '1.45',
                'supportsDynamicLoad': 'MAYBE',
                'bundled': True
            }
        )

        plugin = self.J.get_plugins()['subversion']
        self.assertEqual(p, plugin)
Пример #4
0
 def test_plugin_repr(self):
     p = Plugin(
         {
             'shortName': 'subversion',
         }
     )
     self.assertEquals(repr(p), '<jenkinsapi.plugin.Plugin subversion>')
Пример #5
0
def test_downgrade_plugin(jenkins):
    plugin_name = 'amazon-ecs'
    plugin_version = '1.5'  # This is explicitly not the latest version
    plugin = Plugin({'shortName': plugin_name, 'version': plugin_version})

    assert isinstance(plugin, Plugin)

    # Need to restart when not installing the latest version
    jenkins.install_plugins([plugin], restart=True, wait_for_reboot=True)

    installed_plugin = jenkins.plugins[plugin_name]

    assert installed_plugin.version == '1.5'

    older_plugin = Plugin({'shortName': plugin_name, 'version': '1.4'})
    jenkins.install_plugins([older_plugin], restart=True, wait_for_reboot=True)
    installed_older_plugin = jenkins.plugins[plugin_name]

    assert installed_older_plugin.version == '1.4'
Пример #6
0
def test_downgrade_plugin(jenkins):
    plugin_name = 'console-badge'
    plugin_version = 'latest'
    plugin = Plugin({'shortName': plugin_name, 'version': plugin_version})

    assert isinstance(plugin, Plugin)

    # Need to restart when not installing the latest version
    jenkins.install_plugins([plugin])

    installed_plugin = jenkins.plugins[plugin_name]

    assert installed_plugin.version == '1.1'

    older_plugin = Plugin({'shortName': plugin_name, 'version': '1.0'})
    jenkins.install_plugins([older_plugin], restart=True, wait_for_reboot=True)
    installed_older_plugin = jenkins.plugins[plugin_name]

    assert installed_older_plugin.version == '1.0'

    del jenkins.plugins[plugin_name]
Пример #7
0
 def install_plugins(self, plugin_list, restart=False,
                     wait_for_reboot=False):
     """
     Install a list of plugins and optionally restart jenkins.
     @param plugin_list: list of plugins to be installed
     @param restart: Boolean, restart jenkins after plugin installation
     """
     plugins = [p if isinstance(p, Plugin) else Plugin(p)
                for p in plugin_list]
     for plugin in plugins:
         self.install_plugin(plugin)
     if restart and self.plugins.restart_required:
         self.safe_restart(wait_for_reboot=wait_for_reboot)
Пример #8
0
def test_install_delete_single_plugin_object(jenkins):
    plugin_name = 'simple-theme-plugin'
    plugin_version = 'latest'
    plugin = Plugin(('%s@%s') % (plugin_name, plugin_version))

    assert plugin_name not in jenkins.plugins

    jenkins.install_plugin(plugin, restart=True, wait_for_reboot=True)

    assert plugin_name in jenkins.plugins

    # Force restart so plugin is deleted from plugin-list
    jenkins.delete_plugin(plugin, force_restart=True, wait_for_reboot=True)

    assert plugin_name not in jenkins.plugins
Пример #9
0
def test_install_multiple_plugins(jenkins):
    plugin_one_name = 'jenkins-cloudformation-plugin'
    plugin_one_version = 'latest'
    plugin_one = "@".join((plugin_one_name, plugin_one_version))
    plugin_two = Plugin({
        'shortName': 'anything-goes-formatter',
        'version': 'latest'
    })

    assert isinstance(plugin_two, Plugin)

    plugin_list = [plugin_one, plugin_two]

    jenkins.install_plugins(plugin_list)

    assert plugin_one_name in jenkins.plugins
    assert plugin_two.shortName in jenkins.plugins
Пример #10
0
def test_install_uninstall_plugin(jenkins):
    plugin_name = 'suppress-stack-trace'

    plugin_dict = {
        'shortName': plugin_name,
        'version': 'latest',
    }
    jenkins.plugins[plugin_name] = Plugin(plugin_dict)

    assert plugin_name in jenkins.plugins

    plugin = jenkins.get_plugins()[plugin_name]
    assert isinstance(plugin, Plugin)
    assert plugin.shortName == plugin_name

    del jenkins.plugins[plugin_name]
    assert jenkins.plugins[plugin_name].deleted
Пример #11
0
def test_install_uninstall_plugin(jenkins):
    plugins = jenkins.plugins
    plugin_name = 'async-http-client'

    plugin_dict = {
        'shortName': plugin_name,
        'version': 'latest',
    }
    plugins[plugin_name] = Plugin(plugin_dict)

    assert plugin_name in plugins

    plugin = plugins[plugin_name]
    assert isinstance(plugin, Plugin)
    assert plugin.shortName == plugin_name

    del plugins[plugin_name]
    assert plugins[plugin_name].deleted
Пример #12
0
 def _get_plugin_dependencies(self, downloaded_plugin):
     """
     Returns a list of all dependencies for a downloaded plugin
     """
     plugin_dependencies = []
     manifest = read_manifest(downloaded_plugin)
     manifest_dependencies = manifest.main_section.get(
         'Plugin-Dependencies')
     if manifest_dependencies:
         dependencies = manifest_dependencies.split(',')
         for dep in dependencies:
             # split plugin:version;resolution:optional entries
             components = dep.split(';')
             dep_plugin = components[0]
             name = dep_plugin.split(':')[0]
             # install latest dependency, avoids multiple
             # versions of the same dep
             plugin_dependencies.append(
                 Plugin({'shortName': name, 'version': 'latest'}))
     return plugin_dependencies
Пример #13
0
def test_install_multiple_plugins(jenkins):
    plugin_one_name = 'keyboard-shortcuts-plugin'
    plugin_one_version = 'latest'
    plugin_one = "@".join((plugin_one_name, plugin_one_version))
    plugin_two = Plugin({
        'shortName': 'emotional-jenkins-plugin',
        'version': 'latest'
    })

    assert isinstance(plugin_two, Plugin)

    plugin_list = [plugin_one, plugin_two]

    jenkins.install_plugins(plugin_list)

    assert plugin_one_name in jenkins.plugins
    assert plugin_two.shortName in jenkins.plugins

    del jenkins.plugins['keyboard-shortcuts-plugin']
    del jenkins.plugins['emotional-jenkins-plugin']
Пример #14
0
 def install_plugin(self, plugin, restart=True, force_restart=False,
                    wait_for_reboot=True, no_reboot_warning=False):
     """
     Install a plugin and optionally restart jenkins.
     @param plugin: Plugin (string or Plugin object) to be installed
     @param restart: Boolean, restart Jenkins when required by plugin
     @param force_restart: Boolean, force Jenkins to restart, ignoring plugin
     preferences
     @param no_warning: Don't show warning when restart is needed and
     restart parameters are set to False
     """
     if not isinstance(plugin, Plugin):
         plugin = Plugin(plugin)
     self.plugins[plugin.shortName] = plugin
     if force_restart or (restart and self.plugins.restart_required):
         self.safe_restart(wait_for_reboot=wait_for_reboot)
     elif self.plugins.restart_required and not no_reboot_warning:
         warnings.warn(
             "System reboot is required, but automatic reboot is disabled. "
             "Please reboot manually."
             )
Пример #15
0
def test_install_delete_multiple_plugins_mix_string_object(jenkins):
    plugin_one_name = 'simple-theme-plugin'
    plugin_one_version = 'latest'
    plugin_one = ('%s@%s') % (plugin_one_name, plugin_one_version)
    plugin_two_name = 'docker-commons'
    plugin_two_version = 'latest'
    plugin_two = Plugin(('%s@%s') % (plugin_two_name, plugin_two_version))

    assert (plugin_one_name and plugin_two_name) not in jenkins.plugins

    jenkins.install_plugins([plugin_one, plugin_two],
                            restart=True,
                            wait_for_reboot=True)

    assert (plugin_one_name and plugin_two_name) in jenkins.plugins

    # Force restart so plugins are deleted from plugin-list
    jenkins.delete_plugins([plugin_one_name, plugin_two],
                           force_restart=True,
                           wait_for_reboot=True)

    assert (plugin_one_name and plugin_two_name) not in jenkins.plugins
Пример #16
0
 def _get_plugins(self):
     if 'plugins' in self._data:
         for p_dict in self._data["plugins"]:
             yield p_dict["shortName"], Plugin(p_dict)
Пример #17
0
 def install_plugin(self, plugin):
     if not isinstance(plugin, Plugin):
         plugin = Plugin(plugin)
     self.plugins[plugin.shortName] = plugin