cifs: Externalize common code to base_publish_over.

The various Publish Over... plugins offer a similar configuration
structure.

Externalizing that knowledge will allow reuse between modules.

Change-Id: I8dd7f62713da013354c656e9437522210e2c39f9
Reviewed-on: https://review.openstack.org/23862
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Reviewed-by: Khai Do <zaro0508@gmail.com>
Approved: James E. Blair <corvus@inaugust.com>
Reviewed-by: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
ftp: Refactor using base_publish_over.

The subtlety is that Publish Over FTP offers additional options compared
to the CIFS variant. This is done by customizing the XML tree created by
base_publish_over.

Change-Id: I5ff3614781cb52a47bf9816c2326d3fe9a96a47f
Reviewed-on: https://review.openstack.org/23863
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Reviewed-by: Khai Do <zaro0508@gmail.com>
Approved: James E. Blair <corvus@inaugust.com>
Reviewed-by: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
ftp, cifs: Make optional prefixes really optionals.

Excludes and remove were marker optional, but weren't in practice.
Provides defaults values so that they are really optional.

Change-Id: I6bd6f5183d888b0716bdf5690fc19bcd91bfc856
Reviewed-on: https://review.openstack.org/23864
Reviewed-by: Monty Taylor <mordred@inaugust.com>
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Approved: James E. Blair <corvus@inaugust.com>
Reviewed-by: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
Document current-params option for trigger-build

There was some documentation missing, so I had to find this option when I was
trying to add it myself, in the source code. Nasty!

Added documentation so nobody else has to do that.

Change-Id: I9b6a0227479b600fed213d926f5cd22981db612e
Reviewed-on: https://review.openstack.org/23963
Reviewed-by: Monty Taylor <mordred@inaugust.com>
Reviewed-by: Khai Do <zaro0508@gmail.com>
Reviewed-by: Antoine Musso <hashar@free.fr>
Approved: James E. Blair <corvus@inaugust.com>
Reviewed-by: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
Fix checkstyle documentation

This is following the style of the artifact-resolver builder, which
has other nested dictionaries also.

Change-Id: I26b909e18239df03c123e07791fa7a3549be7701
Reviewed-on: https://review.openstack.org/23977
Reviewed-by: Monty Taylor <mordred@inaugust.com>
Reviewed-by: Khai Do <zaro0508@gmail.com>
Reviewed-by: Antoine Musso <hashar@free.fr>
Approved: James E. Blair <corvus@inaugust.com>
Reviewed-by: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
Add multi-SCM capabilities

Jenkins has a multiple-SCM option. We can just support that by using it when
more than one SCM module is defined. Simple enough.

Change-Id: Iacfba5c547ff111304644a4777a12a70b0b22e62
Reviewed-on: https://review.openstack.org/23961
Reviewed-by: Monty Taylor <mordred@inaugust.com>
Reviewed-by: Antoine Musso <hashar@free.fr>
Reviewed-by: James E. Blair <corvus@inaugust.com>
Reviewed-by: Khai Do <zaro0508@gmail.com>
Approved: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
`update` can now takes several job names

Just like `delete` can accept several jobs names as argument, this patch
let us do the same with `update`.

* builder.update_jobs now filter the jobs against a list
* renamed 'update' argument 'name' to 'names' to make it clear it
  accepts several job names.

Change-Id: I4bcebd98073ec89e172afbec59b93d14de6620ff
Reviewed-on: https://review.openstack.org/24160
Reviewed-by: Anita Kuno <akuno@lavabit.com>
Reviewed-by: James E. Blair <corvus@inaugust.com>
Approved: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
doc/configuration: Fix incorrect name "defaults"

See YamlParser#applyDefaults in builder.py.

Change-Id: I763d23608b79f7b1c560ae41cf5ca0d2dcc19d60
Reviewed-on: https://review.openstack.org/24407
Reviewed-by: Anita Kuno <akuno@lavabit.com>
Reviewed-by: Arnaud Fabre <fabre.arnaud@gmail.com>
Reviewed-by: Elizabeth Krumbach <lyz@princessleia.com>
Approved: James E. Blair <corvus@inaugust.com>
Reviewed-by: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
'names' argument to update no longer required

Before the change to allow 'update' to take multiple jobs the
'names' argument was not required and passing just the yaml file
would create all the jobs inside it.  The 'update' change made
names required when it shouldn't be.  This is a one line change
to cmd.py to change nargs from '+' back to '?'

Change-Id: I65372d78ec678b9c29caad2ea573772287a7642f
Reviewed-on: https://review.openstack.org/24673
Approved: James E. Blair <corvus@inaugust.com>
Reviewed-by: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
Merge remote-tracking branch 'upstream/master'