[ 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/