From 63af3c7121ee32f7302d5c42bcbfd56924046de4 Mon Sep 17 00:00:00 2001 From: vfebvre Date: Tue, 7 Jun 2022 11:22:21 +0200 Subject: [PATCH] =?UTF-8?q?retour=20en=20arri=C3=A8re?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vars/pulp.groovy | 309 +++++++++++++++++++++++------------------------ 1 file changed, 148 insertions(+), 161 deletions(-) diff --git a/vars/pulp.groovy b/vars/pulp.groovy index e2bba2b..3d2b1ca 100644 --- a/vars/pulp.groovy +++ b/vars/pulp.groovy @@ -1,167 +1,154 @@ import groovy.json.JsonOutput -def call() { - pipeline { +def getResourceHREF( + String credentials, + String resourceEndpoint, + String resourceName, + String pulpHost = 'pulp.cadoles.com' +) { + def response = httpRequest authentication: credentials, url: "https://${pulpHost}/pulp/api/v3/${resourceEndpoint}", httpMode: 'GET', ignoreSslErrors: true, validResponseCodes: "200" + def jsonResponse = readJSON text: response.content + def resource = jsonResponse.results.find { it -> it.name == resourceName} + if (resource) { + return resource.pulp_href + } + return null +} - parameters { - string( - name: 'pulpHost', - description: 'Nom de domaine pour le serveur Pulp', - defaultValue: '' - ) - } +def waitForTaskCompletion( + String credentials, + String taskHREF, + String pulpHost = 'pulp.cadoles.com' +) { + def status = '' + def created_resources = [] + while (status != 'completed') { + def response = httpRequest authentication: credentials, url: "https://${pulpHost}${taskHREF}", httpMode: 'GET', ignoreSslErrors: true, validResponseCodes: "200" + def jsonResponse = readJSON text: response.content + status = jsonResponse.state + if (status == 'completed') { + return jsonResponse.created_resources + } else if (!(status in ['running','waiting'])) { + break + } + sleep(10) + } + throw new Exception("Task failed:" + jsonResponse.error.description) +} - def getResourceHREF( - String credentials, - String resourceEndpoint, - String resourceName, - // String pulpHost - ) { - def response = httpRequest authentication: credentials, url: "https://${params.pulpHost}/pulp/api/v3/${resourceEndpoint}", httpMode: 'GET', ignoreSslErrors: true, validResponseCodes: "200" - def jsonResponse = readJSON text: response.content - def resource = jsonResponse.results.find { it -> it.name == resourceName} - if (resource) { - return resource.pulp_href - } - return null - } - - def waitForTaskCompletion( - String credentials, - String taskHREF, - String pulpHost - ) { - def status = '' - def created_resources = [] - while (status != 'completed') { - def response = httpRequest authentication: credentials, url: "https://${pulpHost}${taskHREF}", httpMode: 'GET', ignoreSslErrors: true, validResponseCodes: "200" - def jsonResponse = readJSON text: response.content - status = jsonResponse.state - if (status == 'completed') { - return jsonResponse.created_resources - } else if (!(status in ['running','waiting'])) { - break - } - sleep(10) - } - throw new Exception("Task failed:" + jsonResponse.error.description) - } - - def exportPackages( - String credentials, - List packages = [], - String pulpHost - ) { - def exportTasks = [] - packages.each { - def response = httpRequest authentication: credentials, url: "https://${pulpHost}/pulp/api/v3/content/deb/packages/", httpMode: 'POST', ignoreSslErrors: true, multipartName: "file", timeout: 900, uploadFile: "${it}", validResponseCodes: "202" - def jsonResponse = readJSON text: response.content - exportTasks << jsonResponse['task'] - } - return exportTasks - } - - def createRepository( - String credentials, - String name, - String pulpHost - ) { - def repositoryName = ["name": name] - def postBody = JsonOutput.toJson(repositoryName) - def response = httpRequest authentication: credentials, url: "https://${pulpHost}/pulp/api/v3/repositories/deb/apt/", httpMode: 'POST', requestBody: postBody, contentType: 'APPLICATION_JSON', ignoreSslErrors: true, validResponseCodes: "201" - def jsonResponse = readJSON text: response.content - return jsonResponse.pulp_href - - } - def getRepositoryHREF( - String credentials, - String repository = 'Cadoles4MSE unstable' - ) { - def repositoryHREF = getResourceHREF(credentials, 'repositories/deb/apt/', repository) - if (repositoryHREF) { - return repositoryHREF - } else { - return createRepository(credentials, repository) - } - } - - def addToRepository( - String credentials, - List packagesHREF, - String repositoryHREF, - String pulpHost - ) { - def packagesHREFURL = ["add_content_units": packagesHREF.collect { "https://$pulpHost$it" }] - def postBody = JsonOutput.toJson(packagesHREFURL) - def response = httpRequest authentication: credentials, url: "https://${pulpHost}${repositoryHREF}modify/", httpMode: 'POST', requestBody: postBody, contentType: 'APPLICATION_JSON', ignoreSslErrors: true, validResponseCodes: "202" - def jsonResponse = readJSON text: response.content - return waitForTaskCompletion(credentials, jsonResponse.task) - } - - def publishRepository( - String credentials, - String repositoryHREF, - String signing_service = null, - String pulpHost - ) { - def postContent = ["repository": repositoryHREF, "simple": true] - if (signing_service) { - def signingServiceHREF = getResourceHREF(credentials, 'signing-services/', signing_service) - if (signingServiceHREF) { - postContent.put("signing_service", "https://${pulpHost}${signingServiceHREF}") - } - } - def postBody = JsonOutput.toJson(postContent) - def response = httpRequest authentication: credentials, url: "https://${pulpHost}/pulp/api/v3/publications/deb/apt/", httpMode: 'POST', requestBody: postBody, contentType: 'APPLICATION_JSON', ignoreSslErrors: true, validResponseCodes: "202" - def jsonResponse = readJSON text: response.content - return waitForTaskCompletion(credentials, jsonResponse.task) - } - - def distributePublication( - String credentials, - String publicationHREF, - String distributionName, - String basePath, - String contentGuard = null, - String pulpHost - ) { - def httpMode = '' - def url = '' - def distributionHREF = getResourceHREF(credentials, 'distributions/deb/apt/', distributionName) - if (distributionHREF) { - httpMode = 'PUT' - url = distributionHREF - } else { - httpMode = 'POST' - url = '/pulp/api/v3/distributions/deb/apt/' - } - def bodyContent = ["publication": publicationHREF, "name": distributionName, "base_path": basePath] - if (contentGuard) { - def contentGuardHREF = getResourceHREF(credentials, 'contentguards/core/rbac/', contentGuard) - if (contentGuardHREF) { - bodyContent.put('content_guard', "https://${pulpHost}${contentGuardHREF}") - } - } - def postBody = JsonOutput.toJson(bodyContent) - response = httpRequest authentication: credentials, url: "https://${pulpHost}${url}", httpMode: httpMode, requestBody: postBody, contentType: 'APPLICATION_JSON', ignoreSslErrors: true, validResponseCodes: "202" - jsonResponse = readJSON text: response.content - if (distributionHREF) { - waitForTaskCompletion(credentials, jsonResponse.task) - return [url] - } else { - return waitForTaskCompletion(credentials, jsonResponse.task) - } - } - - def getDistributionURL( - String credentials, - String resourceHREF, - String pulpHost - ) { - def response = httpRequest authentication: credentials, url: "https://${pulpHost}${resourceHREF}", httpMode: 'GET', ignoreSslErrors: true, validResponseCodes: "200" - def jsonResponse = readJSON text: response.content - println(jsonResponse) - return jsonResponse.base_url - } +def exportPackages( + String credentials, + List packages = [], + String pulpHost = 'pulp.cadoles.com' +) { + def exportTasks = [] + packages.each { + def response = httpRequest authentication: credentials, url: "https://${pulpHost}/pulp/api/v3/content/deb/packages/", httpMode: 'POST', ignoreSslErrors: true, multipartName: "file", timeout: 900, uploadFile: "${it}", validResponseCodes: "202" + def jsonResponse = readJSON text: response.content + exportTasks << jsonResponse['task'] + } + return exportTasks +} + +def createRepository( + String credentials, + String name, + String pulpHost = 'pulp.cadoles.com' + ) { + def repositoryName = ["name": name] + def postBody = JsonOutput.toJson(repositoryName) + def response = httpRequest authentication: credentials, url: "https://${pulpHost}/pulp/api/v3/repositories/deb/apt/", httpMode: 'POST', requestBody: postBody, contentType: 'APPLICATION_JSON', ignoreSslErrors: true, validResponseCodes: "201" + def jsonResponse = readJSON text: response.content + return jsonResponse.pulp_href + +} +def getRepositoryHREF( + String credentials, + String repository = 'Cadoles4MSE unstable' + ) { + def repositoryHREF = getResourceHREF(credentials, 'repositories/deb/apt/', repository) + if (repositoryHREF) { + return repositoryHREF + } else { + return createRepository(credentials, repository) } } + +def addToRepository( + String credentials, + List packagesHREF, + String repositoryHREF, + String pulpHost = 'pulp.cadoles.com' +) { + def packagesHREFURL = ["add_content_units": packagesHREF.collect { "https://$pulpHost$it" }] + def postBody = JsonOutput.toJson(packagesHREFURL) + def response = httpRequest authentication: credentials, url: "https://${pulpHost}${repositoryHREF}modify/", httpMode: 'POST', requestBody: postBody, contentType: 'APPLICATION_JSON', ignoreSslErrors: true, validResponseCodes: "202" + def jsonResponse = readJSON text: response.content + return waitForTaskCompletion(credentials, jsonResponse.task) +} + +def publishRepository( + String credentials, + String repositoryHREF, + String signing_service = null, + String pulpHost = 'pulp.cadoles.com' +) { + def postContent = ["repository": repositoryHREF, "simple": true] + if (signing_service) { + def signingServiceHREF = getResourceHREF(credentials, 'signing-services/', signing_service) + if (signingServiceHREF) { + postContent.put("signing_service", "https://${pulpHost}${signingServiceHREF}") + } + } + def postBody = JsonOutput.toJson(postContent) + def response = httpRequest authentication: credentials, url: "https://${pulpHost}/pulp/api/v3/publications/deb/apt/", httpMode: 'POST', requestBody: postBody, contentType: 'APPLICATION_JSON', ignoreSslErrors: true, validResponseCodes: "202" + def jsonResponse = readJSON text: response.content + return waitForTaskCompletion(credentials, jsonResponse.task) +} + +def distributePublication( + String credentials, + String publicationHREF, + String distributionName, + String basePath, + String contentGuard = null, + String pulpHost = 'pulp.cadoles.com' +) { + def httpMode = '' + def url = '' + def distributionHREF = getResourceHREF(credentials, 'distributions/deb/apt/', distributionName) + if (distributionHREF) { + httpMode = 'PUT' + url = distributionHREF + } else { + httpMode = 'POST' + url = '/pulp/api/v3/distributions/deb/apt/' + } + def bodyContent = ["publication": publicationHREF, "name": distributionName, "base_path": basePath] + if (contentGuard) { + def contentGuardHREF = getResourceHREF(credentials, 'contentguards/core/rbac/', contentGuard) + if (contentGuardHREF) { + bodyContent.put('content_guard', "https://${pulpHost}${contentGuardHREF}") + } + } + def postBody = JsonOutput.toJson(bodyContent) + response = httpRequest authentication: credentials, url: "https://${pulpHost}${url}", httpMode: httpMode, requestBody: postBody, contentType: 'APPLICATION_JSON', ignoreSslErrors: true, validResponseCodes: "202" + jsonResponse = readJSON text: response.content + if (distributionHREF) { + waitForTaskCompletion(credentials, jsonResponse.task) + return [url] + } else { + return waitForTaskCompletion(credentials, jsonResponse.task) + } +} + +def getDistributionURL( + String credentials, + String resourceHREF, + String pulpHost = 'pulp.cadoles.com' +) { + def response = httpRequest authentication: credentials, url: "https://${pulpHost}${resourceHREF}", httpMode: 'GET', ignoreSslErrors: true, validResponseCodes: "200" + def jsonResponse = readJSON text: response.content + println(jsonResponse) + return jsonResponse.base_url +}