如何使用python列出cloudfoundry中的所有应用程序

2024-05-16 08:59:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用python访问我的CloudFoundry应用程序,我正在使用requests模块。
首先我试过

import requests
response=requests.get("https://api.run.pivotal.io")

它显示未经授权的错误。据我所知,首先我们必须从身份验证服务器获取令牌。所以我用过

^{pr2}$

它是成功的,并得到响应代码200。我的疑问是如何获取我的应用程序数据。我正在努力

response=requests.get("https://api.run.pivotal.io/v2/apps",'Authorization':'access_token myToken')

但仍然有未经授权的错误。如何在标题中提供access token,因为登录url不同,所以我无法访问它。在


Tags: 模块runhttpsioimporttokenapi应用程序
2条回答
import requests
oauthTokenResponse = requests.post(
    'https://login.run.pivotal.io/oauth/token?grant_type=password&client_id=cf', 
    data={'username': 'YOUR_USERNAME', 'password': 'YOUR_PASSWORD', 'client_id': 'cf'},
    auth=('cf', '')
)
authorization = oauthTokenResponse.json()['token_type'] + ' ' + oauthTokenResponse.json()['access_token']
appsResponse = requests.get(
    "https://api.run.pivotal.io/v2/apps",
    headers={'Accept': 'application/json', 'Content-Type': 'application/json', 'Authorization': authorization}
)

您也可以尝试其他方法,您将需要此脚本的CLI https://github.com/cloudfoundry/cli

from __future__ import print_function
import subprocess
import os
import re
import getpass

User = raw_input("Please Enter your user name: \n").lower()
if not re.match("^[a-zA-Z, 0-99]*$", User):
    print ("Error! Only letters and numbers are allowed!")
    break
Pass = getpass.getpass(prompt= "Please enter your password: \n")


URL_login = 'cf login  skip-ssl-validation -a https://api.run.pivotal.io -u ' + User.lower() + ' -p ' + Pass
subprocess.call(URL_login)
os.system('cf apps > apps.csv')

相关问题 更多 >