连接到OpenStack Swift只能使用Rackspace OpenStack.net进行安装

时间:2014-09-16 05:38:44

标签: openstack-swift openstacknetsdk

我已经能够安装并运行OpenStack Swift。 我的安装严格来说是Swift,不包括Keystone或其他OpenStack组件。

当我使用curl命令时,我能够创建用户并执行我的Swift测试,确保一切正常。我遇到问题的地方是我在github上使用Rackspace维护的OpenStack.NET API。

使用以下命令,我可以创建一个快速用户。

$ curl -v -H 'X-Storage-User: test:tester' -H 'X-Storage-Pass: testing' http://192.168.0.3:8080/auth/v1.0
$ curl -v -H 'X-Auth-Token: <token-from-x-auth-token-above>' <url-from-x-storage-url-above>
$ swift -A http://192.168.0.3:8080/auth/v1.0 -U test:tester -K testing stat

全部按预期工作,并创建用户/帐户。在我的Windows开发机器上,我从Rackspace GitHub下载了OpenStack.NET API并创建了一个运行以下代码的应用程序;

    var authUri = new Uri("http://192.168.0.3:8080/auth/v1.0");
    var userName = "test";
    var password = "tester";
    var tenantId = "testing";


    var credential = new OpenStackCredential(authUri, userName, password, tenantId);

    var client = OpenStackClientFactory.CreateClient(credential);
    client.Connect();

    var storageServiceClient = client.CreateServiceClient<IStorageServiceClient>();
    var storageAccount = storageServiceClient.GetStorageAccount();

运行时,我收到以下错误。

  

“无法找到支持给定OpenStack实例所请求服务的客户端。”

我在这里做错了什么?

2 个答案:

答案 0 :(得分:0)

我遇到了完全相同的问题,在做了一些调试之后我得出结论,Openstack .NET SDK会检查网址中的版本和&#34; v1.0&#34;不是有效的。

我绝不是这方面的专家,所以在依赖它们之前,请仔细检查我的发现。

编辑:进一步阅读后,我认为v1.0 url用于TempAuth身份验证,看起来SDK尝试使用Keystone身份验证。我无法通过TempAuth身份验证找到使用SDK的方法。

答案 1 :(得分:0)

我非常感谢人们对我的问题的回答!

我无法使用Rackspace API进行连接,并怀疑您可能是对的。这有点令人伤心,因为虽然有很多关于在完全实现的OpenStack生态系统(Swift,Glance,Keystone,Newton等)中连接的文档,但对于那些试图将令人生畏的第一步进入OpenStack的人来说,实际上没有足够的文档。斯威夫特是大多数人可能的第一步。

对于那些刚开始的人,Swift是对象存储引擎。它非常适合存储您传统上存储在Web服务器本身,FTP或网络文件共享上的大量上传文件。基本上,您将“对象”(例如图像,word文档,pdf,excel文档)放入“容器”(例如文件夹)中,Swift将其存储在服务器上,并为您提供引用该文件的GUID。通过HTTP获取该文件。例如;

http://YOUR.swift.SERVER.ipaddress/THEcontainerNAME/THEguidRETURNED

和中提琴!您的文件将提供给您!

有很多库声称可以让你访问OpenStack Swift和所有其他OpenStack好东西(Newton,Glance等),但他们一般假设你正在运行OpenStack的全部多租户生态系统,安装和配置了本土租户管理软件(又名keystone),如果你像我一样,你就不会。

如果您想通过C#快速访问,请在引用OpenStack Swift API(click here)时使用HttpWebRequest和HttpResponse类。您将不得不深入了解添加和读取HTTP标头的细节。一旦掌握了它,这很容易。

在使用HttpWebRequest类的人们的网络上有很多例子,你只需要使用你的“Google”-Foo并搜索它。不要浪费时间查看如何使用C#和HttpWebRequest类连接到OpenStack Swift。你正试图被肮脏的例子淹没,并且表格中有未回答的问题。首先搜索一个使用HttpWebRequest类的简单示例,搜索类似“使用httpwebrequest类c#下载文件”之类的内容,然后一旦看到如何使用该类,然后采用它来调用Swift,同时引用上面链接的API应该很容易不要那样做,花几个小时寻找你可以复制并粘贴到你的应用程序中的代码。不幸的是,你将不得不阅读...这很糟糕 - 我知道。