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

How to list all apps in cloudfoundry using python

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

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

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

response=requests.get('https://login.run.pivotal.io',auth=('username','pwd'))

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

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

但仍然出现未授权错误。如何在 headers 中提供 access token,因为登录名 url 不同,所以我无法访问它。

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')