[ 
https://ovirt-jira.atlassian.net/browse/OVIRT-2254?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Barak Korren updated OVIRT-2254:
--------------------------------
    Description: "Create a set of jobs and groovy functions that will enable 
one Jenkins master to borrow slaves from another Jenkins master.\r\n\r\nh3. 
Acceptance criteria\r\n# We define a borrower and a borrowing Jenkins 
instances. Ans support the use case where both are the same instance\r\n# 
Borrowing is done by setting up a JNLP connection from the slave of the 
borrower instance to to borrowing instance.\r\n# On the borrower 
instance:\r\n## We have a \"borrow\" job that:\r\n##* Takes slave requirement 
details, allocates a matching slaves and make it connect via JNLP to the 
borrowing instance\r\n##* If all matching slaves are already borrowed by other 
instances, try to call the garbage collector jobs (see below) on borrowing 
instances to free the slaves.\r\n## We have a \"return\" job that is called by 
a borrowing instance to return a slave\r\n# On the borrowing instance\r\n## 
STDCI tries to borrow slaves from a predefined instance if not matching slaves 
are available locally\r\n## Once borrowed - slaves stay attached to the 
borrowing instance so they can be reused by other STDCI jobs.\r\n## We have a 
\"garbage collector\" job that is triggered periodically or by the borrower 
instance. It looks at borrowed slaves, and frees ones that were not used 
recently.\r\n\r\n"  (was: Create a set of jobs and groovy functions that will 
enable one Jenkins master to borrow slaves from another Jenkins master.

h3. Acceptance criteria
# Create a job that allows another Jenkins instance to borrow a slave from the 
instance the job runs on. The job will:
#* Take the following parameters:
#** The IP and JNLP port of the Jenkins that is borrowing the slave
#** The JNLP secret to register to the Jenkins that is borrowing the slave
#** A YAML/JSON structure with node requirements that includes:
#*** A *kind* field set to "{{stdci_node_req}}"
#*** An *apiVersion* field set to "{{1}}".
#*** The project *name*.
#*** The project *clone_ur*, *branch* and *refspec*.
#*** The STDCI thread *stage*, *substage*, *distro* and *arch*.
#*** The STDCI *runtime_requirements*.
#* Attempt to find a slave meeting the specified requirements
#* If slave found:
#** Set it to be used only with matching label expressions
#** Label it with "borrowed"
#** Start the JNLP client on the slave to make it connect to the borrowing 
Jenkins
#** Archive an artifact containing the name on the slave.
#** Finish successfully
#* If slave not found - finish with an error.
# Create a groovy function to be used from STDCI to borrow a slave. The 
function will:
#* Allocate a JNLP node record for the new slave witha  random temporary name 
starting with "borrowed_" to get a JNLP secret.
#* Set a random label to the node record
#* Launch the borrow slave job on a remote Jenkins instance that can be 
configured in JJB YAML by using the "Parametrized Remote Trigger" plugin
#* If the job is successful:
#** Rename the node record to the name of the slave we get from the artifact 
created by the borrow slave job with the 'borrowed_' prefix added.
#** Return the random label allocated to it
# Create a job that makes a jenkins instance release slaves it borrowed )

> Create slave borrowing flow
> ---------------------------
>
>                 Key: OVIRT-2254
>                 URL: https://ovirt-jira.atlassian.net/browse/OVIRT-2254
>             Project: oVirt - virtualization made easy
>          Issue Type: New Feature
>          Components: Jenkins Master, Jenkins Slaves
>            Reporter: Barak Korren
>            Assignee: infra
>
> Create a set of jobs and groovy functions that will enable one Jenkins master 
> to borrow slaves from another Jenkins master.
> h3. Acceptance criteria
> # We define a borrower and a borrowing Jenkins instances. Ans support the use 
> case where both are the same instance
> # Borrowing is done by setting up a JNLP connection from the slave of the 
> borrower instance to to borrowing instance.
> # On the borrower instance:
> ## We have a "borrow" job that:
> ##* Takes slave requirement details, allocates a matching slaves and make it 
> connect via JNLP to the borrowing instance
> ##* If all matching slaves are already borrowed by other instances, try to 
> call the garbage collector jobs (see below) on borrowing instances to free 
> the slaves.
> ## We have a "return" job that is called by a borrowing instance to return a 
> slave
> # On the borrowing instance
> ## STDCI tries to borrow slaves from a predefined instance if not matching 
> slaves are available locally
> ## Once borrowed - slaves stay attached to the borrowing instance so they can 
> be reused by other STDCI jobs.
> ## We have a "garbage collector" job that is triggered periodically or by the 
> borrower instance. It looks at borrowed slaves, and frees ones that were not 
> used recently.



--
This message was sent by Atlassian Jira
(v1001.0.0-SNAPSHOT#100087)
_______________________________________________
Infra mailing list -- infra@ovirt.org
To unsubscribe send an email to infra-le...@ovirt.org
Privacy Statement: https://www.ovirt.org/site/privacy-policy/
oVirt Code of Conduct: 
https://www.ovirt.org/community/about/community-guidelines/
List Archives: 
https://lists.ovirt.org/archives/list/infra@ovirt.org/message/4JA2CTJZ3DRLN7IY2PRRZ6E66HXOTLXB/

Reply via email to