如何解决Rundeck API使用python pycurl上传作业失败
我正在尝试在python中使用pycurl实现rundeck作业导入功能,但找不到该文件。卷曲版本也可以。
def importRundeckJOB(jobConfigFilePath):
responSEObject = BytesIO()
rd = pycurl.Curl()
rd.setopt(rd.URL,RUNDECK_API_END_POINT)
rd.setopt(rd.HTTPHEADER,['X-Rundeck-Auth-Token: '+RUNDECK_TOKEN,"Accept: application/json"])
rd.setopt(rd.HTTPPOST,[("dupeOption","update"),("fileformat","yaml"),("xmlBatch",jobConfigFilePath )])
rd.setopt(rd.WRITEFUNCTION,responSEObject.write)
rd.perform()
responseCode = rd.getinfo(rd.HTTP_CODE)
rd.close()
错误::
{'error': True,'apiversion': 17,'errorCode': 'api.error.jobs.import.missing-file','message': 'No file was uploaded'}
工作卷曲
curl --header X-Rundeck-Auth-Token:<TOKEN> -F xmlBatch=@"<FILE_PATH>" -F dupeOption=update -F fileformat=yaml <RUNDECK_API_END_POINT>/import
{
"succeeded": [
{
"index": 1,"id": "deploy-job","name": "deploy-job","group": "DEV","project": "SOF","permalink": "<RUNDECK_URL>/job/show/deploy-job"
}
],"Failed": [],"skipped": []
}
解决方法
我找到了一个解决方案,我需要一个附加参数来处理文件。
http://pycurl.io/docs/latest/quickstart.html#file-upload-multipart-post
c.FORM_FILE
工作解决方案
def importRundeckJOB(jobConfigFilePath):
responseObject = BytesIO()
rd = pycurl.Curl()
rd.setopt(rd.URL,RUNDECK_API_END_POINT)
rd.setopt(rd.HTTPHEADER,['X-Rundeck-Auth-Token: '+RUNDECK_TOKEN,"Accept: application/json"])
rd.setopt(rd.HTTPPOST,[("dupeOption","update"),("fileformat","yaml"),("xmlBatch",(rd.FORM_FILE,jobConfigFile))])
rd.setopt(rd.WRITEFUNCTION,responseObject.write)
rd.perform()
responseCode = rd.getinfo(rd.HTTP_CODE)
rd.close()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。