Node.js 使用pkgcloud验证OpenStack中的用户名和密码
我试图在OpenStack中调用API进行密码验证。这是我卷曲并获取访问令牌的API: 我想在NodeJS中做同样的事情,我有点困惑。我能这样做吗?因为我在想,也许问题是这样做是不可能的;然而,这是我一直在尝试的代码:Node.js 使用pkgcloud验证OpenStack中的用户名和密码,node.js,openstack,pkgcloud,Node.js,Openstack,Pkgcloud,我试图在OpenStack中调用API进行密码验证。这是我卷曲并获取访问令牌的API: 我想在NodeJS中做同样的事情,我有点困惑。我能这样做吗?因为我在想,也许问题是这样做是不可能的;然而,这是我一直在尝试的代码: var pkgcloud = require('pkgcloud'); var client = pkgcloud.compute.createClient({ provider: 'openstack', username: <username>
var pkgcloud = require('pkgcloud');
var client = pkgcloud.compute.createClient({
provider: 'openstack',
username: <username>,
password: <password>,
authUrl: 'http://<ip>:<port>/',
basePath: 'v3'
});
client.getFlavors(function (err, flavors) {
console.log("Error", err)
console.log("Flavors", flavors)
})
client.getServers(function (err, servers) {
console.log("Error", err)
console.log("Servers", servers)
})
var pkgcloud=require('pkgcloud');
var client=pkgcloud.compute.createClient({
提供程序:“openstack”,
用户名:,
密码:,
authUrl:'http://://',
基本路径:“v3”
});
getFlavors(函数(err,flavors){
日志(“错误”,err)
日志(“口味”,口味)
})
client.getServers(函数(err,server){
日志(“错误”,err)
日志(“服务器”,服务器)
})
getFlavors和getServers函数返回405方法Not Allowed-请求的URL不允许使用该方法
我的代码有什么问题?如果我必须为getFlavors或任何其他函数使用另一个URL,我应该将它放在哪里?首先,而不是指定
basePath:'v3'
,您应该通过keystoneAUthVersion
显式设置Keystone版本。简单地设置basePath
,最终会导致错误的请求
使用v3身份验证时,您需要提供domainId
(或domainName
)作为请求的一部分
最后,您可能需要确保提供了有效的区域
以下内容在我的OpenStack环境中正常工作:
var pkgcloud = require('pkgcloud');
var client = pkgcloud.compute.createClient({
provider: 'openstack',
keystoneAuthVersion: 'v3',
authUrl: '...',
domainId: 'default',
username: 'lars',
password: '...',
region: 'my-region'
})
client.getFlavors(function (err, flavors) {
console.log("Error", err)
console.log("Flavors", flavors)
})
我照Iarsks说的做了,还添加了租户id,效果很好 这是我使用的配置:
var config = {
provider: 'openstack',
keystoneAuthVersion: 'v3',
authUrl: '...',
domainId: 'default',
username: <username>,
password: <password>,
region: <region name which is provided in the cloud.yaml file in OpenStack>,
tenantId: <the same as the Project ID>
}
var配置={
提供程序:“openstack”,
keystoneAuthVersion:'v3',
authUrl:“…”,
domainId:'默认',
用户名:,
密码:,
地区:,
租户:
}
谢谢!但我不断得到一个错误:“无法读取未定义的'id'属性”,我搜索了一下,但没有找到相关的内容。你知道这是干什么用的吗?我不知道。听起来好像有什么东西意外地返回了一个未定义的值,这有时会提示服务器出现错误或意外响应,但我不知道足够的javascript来建议从何处开始调试。以上内容适用于我的pkgcloud
版本2.2.0
。