import groovy.json.JsonOutput def exportPackages( String credentials, List packages = [], String pulpHost = '192.168.30.3' ) { 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 jsonResponse = readJSON text: response.content exportTasks << jsonResponse['task'] } return exportTasks } def createRepository( String credentials, String name, String pulpHost = '192.168.30.3' ) { 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 jsonResponse = readJSON text: response.content return jsonResponse.pulp_href } def getRepositoryHREF( String credentials, String repository = 'Cadoles4MSE unstable', String pulpHost = '192.168.30.3' ) { def response = httpRequest authentication: credentials, url: "https://${pulpHost}/pulp/api/v3/repositories/deb/apt/", httpMode: 'GET', ignoreSslErrors: true def jsonResponse = readJSON text: response.content def repositories = jsonResponse.results def repositoryHREF = repositories.find { it -> it['name'] == repository } if (repositoryHREF) { return repositoryHREF.pulp_href } else { return createRepository(credentials, repository) } } def addToRepository( String credentials, List packagesHREF, String repositoryHREF, String pulpHost = '192.168.30.3' ) { 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 jsonResponse = readJSON text: response.content return waitForTaskCompletion(credentials, jsonResponse.task) } def publishRepository( String credentials, String repositoryHREF, String pulpHost = '192.168.30.3' ) { def postBody = JsonOutput.toJson(["repository": repositoryHREF, "simple": true]) def response = httpRequest authentication: credentials, url: "https://${pulpHost}/pulp/api/v3/publications/deb/apt/", httpMode: 'POST', requestBody: postBody, contentType: 'APPLICATION_JSON', ignoreSslErrors: true def jsonResponse = readJSON text: response.content return waitForTaskCompletion(credentials, jsonResponse.task) } def distributePublication( String credentials, String publicationHREF, String distributionName, String basePath, String pulpHost = '192.168.30.3', String contentGuard = null ) { def response = httpRequest authentication: credentials, url: "https://${pulpHost}/pulp/api/v3/distributions/deb/apt/", httpMode: 'GET', ignoreSslErrors: true def jsonResponse = readJSON text: response.content def httpMode = '' def url = '' def distribution = jsonResponse.results.find { it -> it.name == distributionName} if (distribution) { httpMode = 'PUT' url = distribution.pulp_href } else { httpMode = 'POST' url = '/pulp/api/v3/distributions/deb/apt/' } def postBody = JsonOutput.toJson(["publication": publicationHREF, "name": distributionName, "base_path": basePath, "content_guard": contentGuard]) response = httpRequest authentication: credentials, url: "https://${pulpHost}${url}", httpMode: httpMode, requestBody: postBody, contentType: 'APPLICATION_JSON', ignoreSslErrors: true, validResponseCodes: "100:399" jsonResponse = readJSON text: response.content if (distribution) { waitForTaskCompletion(credentials, jsonResponse.task) return [url] } else { return waitForTaskCompletion(credentials, jsonResponse.task) } } def waitForTaskCompletion( String credentials, String taskHREF, String pulpHost = '192.168.30.3' ) { def status = '' def created_resources = [] while (status != 'completed') { def response = httpRequest authentication: credentials, url: "https://${pulpHost}${taskHREF}", httpMode: 'GET', ignoreSslErrors: true def jsonResponse = readJSON text: response.content status = jsonResponse.state if (status == 'completed') { created_resources = jsonResponse.created_resources } sleep(10) } return created_resources } def getDistributionURL( String credentials, String resourceHREF, String pulpHost = '192.168.30.3' ) { def response = httpRequest authentication: credentials, url: "https://${pulpHost}${resourceHREF}", httpMode: 'GET', ignoreSslErrors: true def jsonResponse = readJSON text: response.content println(jsonResponse) return jsonResponse.base_url }