Rest 使用Jenkins管道通过HTTP-RequestBuilder插件查询Bluecat IPAM

Rest 使用Jenkins管道通过HTTP-RequestBuilder插件查询Bluecat IPAM,rest,jenkins,groovy,Rest,Jenkins,Groovy,对于问题的长度提前表示歉意,但希望事先声明脚本可以帮助未来的用户与我同舟共济 我目前在groovy中有一个管道脚本,它可以成功连接到我的bluecat IP地址管理器,并给我一个授权令牌,从理论上讲,这是我能够对bluecat API进行后续调用并获得IP地址或将新IP地址放入IPAM DB所需的全部。 到目前为止,我的剧本是: import groovy.json.JsonSlurperClassic def jsonParse(def json) { new groovy.jso

对于问题的长度提前表示歉意,但希望事先声明脚本可以帮助未来的用户与我同舟共济

我目前在groovy中有一个管道脚本,它可以成功连接到我的bluecat IP地址管理器,并给我一个授权令牌,从理论上讲,这是我能够对bluecat API进行后续调用并获得IP地址或将新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的凭证存储库中,脚本的一部分潜入该存储库以检索与请求的用户帐户关联的密码。(我不为将脚本的这一部分直接从堆栈溢出中剥离而道歉,它可以正常工作,为什么要弄乱它?)

到目前为止,我遇到的问题是最后3行代码。 阅读HTTP请求生成器插件的文档时,我无法生成正确的请求以获取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'
其中,令牌是成功登录后获得的授权令牌

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

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

我只是从groovy和Jenkins开始,其他人用Java或powershell做了这个API聊天,我不是Java爱好者,powershell涉及创建一个DLL,我可以这样做,但是从其他一些走上这条路线的人所调用的功能集来看,它变得非常笨拙和不完整

如果有人能提供帮助或建议,我们将不胜感激
。我得到了稍微好一点的有效回答

谢谢你花时间看这个问题