我正试图通过C#openstacknetsdk库v1.3.0.0编写一个简单的概念验证来操作我的Rackspace Cloud帐户中的云服务器。
我遇到的问题是虽然我似乎能够使用我的Rackspace用户名和API密钥成功进行身份验证,但API表现得好像我没有任何服务器。我的代码:
using net.openstack.Providers.Rackspace;
using net.openstack.Core.Providers;
using net.openstack.Core.Exceptions.Response;
using net.openstack.Providers.Rackspace.Objects;
using net.openstack.Core.Domain;
...
const string USERNAME = "[my rackspace username]";
const string API_KEY = "[my rackspace API key]";
static void Main(string[] args)
{
CloudIdentity cloudIdentity = new CloudIdentity() { APIKey = API_KEY, Username = USERNAME };
CloudServersProvider provider = new CloudServersProvider(cloudIdentity);
IEnumerable<SimpleServer> servers = provider.ListServers();
foreach (SimpleServer server in servers)
{
Console.Out.WriteLine(server.Id);
}
}
当我在调试器中逐步执行此代码时,我可以看到servers
最终的大小为0,并且最终没有任何内容被写出来。
这是意料之外的,因为我确实创建了一个服务器,我可以在Rackspace云控制面板网站上看到。服务器处于活动状态。
如果我尝试使用云端服务器中的服务器ID&gt;获取有关我的特定服务器的信息。 Rackspace云控制面板站点上的“服务器详细信息”页面:
Server server = provider.GetDetails("[my cloud server ID]");
Console.Out.WriteLine(server.Image.Name);
我收到net.openstack.Core.Exceptions.Response.ItemNotFoundException。
身份验证似乎有效,因为如果我故意将API_KEY
值更改为不正确的值(例如"test"
),我会收到UserNotAuthorizedException。
我在这里缺少什么?为什么openstacknetsdk表现得像我没有任何服务器?
答案 0 :(得分:2)
您在默认区域中创建的服务器是什么?
为安全起见,请尝试在.ListServers()方法调用中指定区域。
也;你可以通过NuGet下载样本数据;搜索&#34; openstack示例&#34;。