2014-09-16 3 views
1

Я смог установить и запустить OpenStack Swift. Моя установка строго Swift, не включает Keystone или другие компоненты OpenStack.Подключение к OpenStack Swift ТОЛЬКО с использованием Rackspace OpenStack.net

Когда я использую команду curl, я могу создать пользователей и выполнить мои тесты Swift, чтобы убедиться, что все работает нормально. Там, где я столкнулся с проблемами, я использую API OpenStack.NET, поддерживаемый Rackspace по адресу github.

Используя следующие команды, я смог создать быстрого пользователя.

$ 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 я загрузил API OpenStack.NET из Rackspace GitHub и создал приложение, в котором запущен следующий код;

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, не может быть найден».

Что я здесь делаю неправильно?

ответ

0

Я столкнулся с одной и той же проблемой, и после некоторой отладки я пришел к выводу, что Openstack .NET SDK проверяет версию в URL-адресе и «v1.0» недопустим.

Я никоим образом не специалист по этому вопросу, поэтому старайтесь дважды проверить мои выводы, прежде чем полагаться на них.

Редактировать: После дальнейшего чтения я считаю, что URL-адрес v1.0 предназначен для аутентификации TempAuth и выглядит так, как будто SDK пытается аутентифицировать Keystone. Я не могу найти способ использовать SDK с аутентификацией TempAuth.

0

Я очень благодарен за ответы людей на мои вопросы!

Мне не удалось подключиться с помощью API Rackspace, и вы подозреваете, что можете быть правы. Это немного грустно, потому что, несмотря на то, что в рамках полностью реализованной экосистемы OpenStack существует много документации (Swift, Glance, Keystone, Newton и т. Д.), Документации для тех, кто пытается сделать непростые первые шаги в OpenStack, недостаточно. , причем Свифт стал первым шагом людей.

Для тех, кто начал, я был, Swift - это механизм хранения объектов. Это замечательно для хранения большого количества загруженных файлов, которые вы, возможно, традиционно хранят на самом веб-сервере, FTP или в общем сетевом файле. В основном вы бросаете «объект» (например, изображение, документ Word, pdf, документ excel) в «контейнер» (например, в папку), а Swift хранит его на сервере и дает GUID для ссылки на файл. Как добраться до этого файла через HTTP. Например;

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

и альт! Ваш файл подан вам!

Есть много библиотек, которые там утверждают, что вы получите доступ к OpenStack Swift и все другие лакомства OpenStack (Ньютон, Glance и т.д.), но они обычно предположим, что вы работаете полный многопользовательских экосистемы OpenStack в , с установленным и настроенным его домашним программным обеспечением для управления арендатором (aka keystone), который, если вы похожи на меня, вы этого не делаете.

Если вы хотите получить быстрый доступ через C#, используйте классы HttpWebRequest и HttpResponse, ссылаясь на OpenStack Swift API (click here). Вам нужно будет дойти до подробных сведений о добавлении и чтении заголовков HTTP. Как только вы получите это, все будет легко.

Есть много примеров в Интернете людей, использующих класс HttpWebRequest, вам просто нужно использовать свой «Google» -Foo и искать его. Не тратьте время на поиски, как подключиться к OpenStack Swift с использованием классов C# и HttpWebRequest. Вы пытаетесь наводнения плохими примерами и формы с неотвеченными вопросами. Начните с поиска простого примера использования класса HttpWebRequest, который ищет что-то вроде «загружаемого файла с помощью httpwebrequest class C#», а затем, как только вы увидите, как используется класс, а затем, используя его для вызова Swift, ссылаясь на связанный выше API, следует будет довольно легко. Не делайте этого, я потратил часы на поиск кода, который вы можете просто скопировать и вставить в ваше приложение. К сожалению, вам придется читать ... что отстойно, я знаю.