2014-04-10 3 views
1

Rackspace Cloud 계정에서 클라우드 서버를 조작하기위한 간단한 개념 증명을 C# openstacknetsdk 라이브러리 v1.3.0.0을 통해 작성하려고합니다.openstacknetsdk를 통해 내 Rackspace 클라우드 서버를 찾을 수 없음

내가 가지고있는 문제는 내 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를 사용하여 내 특정 서버에 대한 정보를 얻으려고하면

는 :

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에서 서버가없는 것처럼 보이는 이유는 무엇입니까?

답변

2

기본 영역에서 생성 한 서버가 있습니까?

.ListServers() 메서드 호출에서 영역을 지정해보십시오.

또한; NuGet을 통해 샘플 데이터를 다운로드 할 수 있습니다. "openstack sample"을 검색하십시오.

+0

예, 그게 전부입니다! 내 서버가 Rackspace의 "DFW"지역에 있으므로 ListServers를 다음과 같이 호출하면 IEnumerable servers = provider.ListServers (region : "DFW"); –

+0

[CloudServersProvider'의 생성자] (http://openstacknetsdk.org/docs/html/M_net_openstack_Providers_Rackspace_CloudServersProvider__ctor_6.htm)에서 영역을 지정하는 것이 좋습니다. SDK의 새로운 서비스 (예 : CloudQueuesProvider' 및'CloudDnsProvider', * only *)를 사용하면이 방법으로 영역을 지정할 수 있으므로 API의 전체 사용이 간단 해집니다. [이슈 # 243] (https://github.com/openstacknetsdk/openstack.net/issues/243)이 닫히면 클라우드 서버에서도 마찬가지입니다. –