Change By: Jesse Glick (14/Sep/12 5:45 PM)
Description: Many jobs or other model objects require certain plugins. This should be represented in the actual {{config.xml}}, e.g.

{code:xml}
<builders>
  <org.jenkinsci.plugins.hello.HelloWorldBuilder plugin="hello 1.5">
    <idiosyncraticConfig/>
  </org.jenkinsci.plugins.hello.HelloWorldBuilder>
</builders>
{code}

(XML namespaces would in some ways be natural for this, but XStream probably is more comfortable with a simple attribute on the outermost element “owned” by a plugin.)

Need to make {{XmlFile.write}} insert these attributes as it serializes configuration, perhaps by making it take some interface implemented by {{PluginManager}} mapping {{Class}} to {{String shortName}} × {{String version}}. {{JRubyXStreamConverter}} might be used for inspiration.

{{onLoad}} can either ignore these attributes, or use them as hints—for example, silently ignoring deserialization failures from a section owned by a plugin which is not currently loaded.

Web methods like {{doCreateItem}} and {{doConfigDotXml}}, and their corresponding Java methods like {{createProjectFromXML}} and {{updateByXml}}, can be left alone, but a caller needs some way of first checking whether all required plugins are present, and attempting to install them if not. So there needs to be a web method on {{Jenkins}} and a corresponding Java method which can be given an arbitrary XML file and will return:

# OK, if all plugins mentioned therein are present. (Perhaps also check versions.)
# A security error, if caller is missing {{ADMINISTER}} permission.
# Or a list of jobs given as {{UpdateCenterJob.id}} (introduced in {{a3e57da}}) indicating ongoing progress of installing (or updating?) plugins, and perhaps even restarting Jenkins (trackable as of {{
a3e57da 4bd0696 }}) for those plugins which require it.

May also want some higher-level convenience interface, e.g. in CLI, to validate XML and wait for all update center jobs to complete
 (including restart as of {{9ae0ba0}}) .
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to