使用Jenkins Pipeline通过HTTP-request-Builder插件查询Bluecat IPAM

问题描述 投票:1回答:1

提前为问题的长度道歉,但希望预先宣布脚本可以帮助未来的用户和我一样。

我目前在groovy中有一个管道脚本,它可以成功连接到我的bluecat IP地址管理器并获得一个授权令牌,理论上我只需要能够对Bluecat API和GET IP地址进行后续调用或PUT新IP地址到IPAM DB。到目前为止我的脚本是:

import groovy.json.JsonSlurperClassic 

def jsonParse(def json) {
    new groovy.json.JsonSlurperClassic().parseText(json)
}

def getPassword = { username ->
    def creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
    com.cloudbees.plugins.credentials.common.StandardUsernamePasswordCredentials.class,
    jenkins.model.Jenkins.instance
)
def c = creds.findResult { it.username == username ? it : null }
if ( c ) {
    println "found credential ${c.id} for username ${c.username}"
    def systemCredentialsProvider =     jenkins.model.Jenkins.instance.getExtensionList(
        'com.cloudbees.plugins.credentials.SystemCredentialsProvider'
        ).first()
    def password = systemCredentialsProvider.credentials.first().password
    return password
} else {
    println "could not find credential for ${username}"
}
}


// Gather Credentials
def BLUECAT_USER = 'BLUECAT_USER'
def BLUECAT_PASS = getPassword(BLUECAT_USER)

def BLUECAT_URL = 'http://ipam.main.org/Services/REST/v1/'
def LoginUser = 'login?username='
def LoginUserP = '&password='
def GetSysInfo = 'getSystemInfo' 

// ----- Get Session Token
def response = httpRequest httpMode: 'GET', url: BLUECAT_URL + LoginUser + BLUECAT_USER + LoginUserP + BLUECAT_PASS

if (response.status != 200) {
    error("Response recieved is not valid check your credentials.")
} else {
println "Valid response recieved."
}

//println BLUECAT_USER
//println BLUECAT_PASS
//println('Status: '+response.status)
println('Response: '+response.content)

def ResponseText = response.content
def Response = ResponseText.split(' ')
def Token = Response[3];
println "Your Session Token is : " + Token



def GetSYS = httpRequest acceptType: 'APPLICATION_JSON', contentType: 'APPLICATION_JSON', httpMode: 'GET', customHeaders: [name: 'BAMAuthToken', value: Token], url: BLUECAT_URL + GetSysInfo
def content = jsonParse(GetSYS.content)
println "SystemInfo: " + content["status_text"]

凭证存储在Jenkins的凭证存储中,部分脚本潜入商店以检索与请求的用户帐户关联的密码。 (我不会因为直接从Stack Overflow中删除脚本中的那部分而道歉,它可以解决它为什么要乱用它?)

我遇到的问题是到目前为止最后3行代码。阅读HTTP-Request-Builder插件的文档,我无法形成获取IPAM设备系统信息的正确请求。

事件的顺序应如下

使用bluecat凭证集我可以执行get

def response = httpRequest httpMode: 'GET', url: 'http://ipam.main.org/Services/REST/v1/login?username=BLUECAT_USER&password=BLUECAT_PASS'

我收到了一个BAMAuthToken的回复,然后我就可以打电话了

def GetSYS = httpRequest acceptType: 'APPLICATION_JSON', contentType: 'APPLICATION_JSON', httpMode: 'GET', customHeaders: [name: 'BAMAuthToken', value: Token], url: 'http://ipam.main.org/Services/REST/v1/getSystemInfo'

令牌是成功登录后获得的授权令牌。

这最后一行是什么给了我一个错误,似乎指向我没有正确形成我的请求。按照惯例,我花了至少一个星期的谷歌搜索其他人可能做过的事情。

https://github.com/jenkinsci/http-request-plugin

即使在这里,我也看不到如何形成请求,仍然将Auth令牌作为该请求的一部分传递。

我刚刚开始使用groovy和Jenkins,其他人使用Java或PowerShell完成了这个API聊天,我不是一个java Guy和powershell涉及创建一个我可以做的DLL,但在功能方面变得非常笨拙和不完整从其他一些沿着那条路走下去的人那里呼唤出来。

如果有人可以帮助或提供指示,将不胜感激。

rest jenkins groovy
1个回答
1
投票

使用此问题消除了HTTPBuilder路由。我得到的回复稍微好一些

谢谢你花时间看这个问题

© www.soinside.com 2019 - 2024. All rights reserved.