From 7d61382247abe2b86d2796b7192cf9d5cce84f3f Mon Sep 17 00:00:00 2001 From: vfebvre Date: Fri, 3 Jun 2022 14:24:18 +0200 Subject: [PATCH] ajout variable globale --- vars/pulp.groovy | 303 ++++++++++++++++++++++--------------------- vars/pulp.groovy.bak | 154 ++++++++++++++++++++++ 2 files changed, 308 insertions(+), 149 deletions(-) create mode 100644 vars/pulp.groovy.bak diff --git a/vars/pulp.groovy b/vars/pulp.groovy index 3d2b1ca..c4c8ca0 100644 --- a/vars/pulp.groovy +++ b/vars/pulp.groovy @@ -1,154 +1,159 @@ import groovy.json.JsonOutput -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 -} +def call() { + pipeline { -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 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 getResourceHREF( + String credentials, + String resourceEndpoint, + String resourceName, + String pulpHost + ) { + 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 + } + + 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 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 -} diff --git a/vars/pulp.groovy.bak b/vars/pulp.groovy.bak new file mode 100644 index 0000000..3d2b1ca --- /dev/null +++ b/vars/pulp.groovy.bak @@ -0,0 +1,154 @@ +import groovy.json.JsonOutput + +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 +} + +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 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 +}