diff --git a/vars/pulp.groovy b/vars/pulp.groovy index 01a1c0c..7ead2e8 100644 --- a/vars/pulp.groovy +++ b/vars/pulp.groovy @@ -6,7 +6,7 @@ def getResourceHREF( String resourceName, String pulpHost = '192.168.30.3' ) { - def response = httpRequest authentication: credentials, url: "https://${pulpHost}/pulp/api/v3/${resourceEndpoint}", httpMode: 'GET', ignoreSslErrors: true + 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) { @@ -22,17 +22,18 @@ def waitForTaskCompletion( ) { def status = '' def created_resources = [] - while (status == 'running') { - def response = httpRequest authentication: credentials, url: "https://${pulpHost}${taskHREF}", httpMode: 'GET', ignoreSslErrors: true + 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 == 'failed') { - throw new Exception("Task failed:" + jsonResponse.error.description) - } + } else if (!(status in ['running','waiting'])) { + break + } sleep(10) } + throw new Exception("Task failed:" + jsonResponse.error.description) } def exportPackages( @@ -42,7 +43,7 @@ def exportPackages( ) { 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}" + 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'] } @@ -56,7 +57,7 @@ def createRepository( ) { 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: "100:399" + def response = httpRequest authentication: credentials, url: "https://${pulpHost}/pulp/api/v3/repositories/deb/apt/", httpMode: 'POST', requestBody: postBody, contentType: 'APPLICATION_JSON', ignoreSslErrors: true, validResponseCodes: "202" def jsonResponse = readJSON text: response.content return jsonResponse.pulp_href @@ -81,7 +82,7 @@ def addToRepository( ) { 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: "100:399" + 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) } @@ -100,7 +101,7 @@ def publishRepository( } } 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 + 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) } @@ -131,7 +132,7 @@ def distributePublication( } } def postBody = JsonOutput.toJson(bodyContent) - response = httpRequest authentication: credentials, url: "https://${pulpHost}${url}", httpMode: httpMode, requestBody: postBody, contentType: 'APPLICATION_JSON', ignoreSslErrors: true, validResponseCodes: "100:399" + 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) @@ -146,7 +147,7 @@ def getDistributionURL( String resourceHREF, String pulpHost = '192.168.30.3' ) { - def response = httpRequest authentication: credentials, url: "https://${pulpHost}${resourceHREF}", httpMode: 'GET', ignoreSslErrors: true + 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