developerworks/Cloud

DeltaCloud 설치 및 설정 인수인계 버전

수상한 김토끼 2013. 5. 22. 13:42

Delta Cloud

이 기종 IaaS간의 API를 통합하여 관리 할 수 있도록 해 주는 오픈소스 입니다.

DeltaCloud : http://deltacloud.apache.org

 

Deltacloud API

 

deltacloud.apache.org

DeltaCloud 위키 : http://deltacloud.apache.org/install-deltacloud.html

 

Install Deltacloud

Installation dependencies First of all, you have to install several dependecies. The Deltacloud server relies on a number of external rubygems and other libraries. The following packages are neccessary for running the Deltacloud server. The installation of

deltacloud.apache.org

 

이 문서 작성시 델타클라우드의 인증과 관련 된 일부 기능은 제대로 동작하지 않고 있습니다.

해당 부문의 API사용법대로 사용 시 정상적으로 동작하지 않는 부분이 존재합니다.

 

설치 방법

Delta Cloud 설치를 위해서는 루비1.8.7이상의 버전이 필요합니다.

우선 루비를 설치합니다.

sudo apt-get install ruby1.9.1-full

설치 후 심볼릭 링크를 생성하고 루비 버전을 확인 해 봅니다.

ln -s /usr/bin/ruby1.9.1 /usr/bin/ruby
ln -s /usr/bin/gem1.9.1 /usr/bin/ge
ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux]

 

g++, libxml2, libxml2-dev, libxslt, libxslt-dev, sqlite, sqlite-devel를 설치합니다.

위의 라이브러리들은 c 확장명을 가진 젬을 빌드하는 데 필요합니다.

sudo apt-get install g++
sudo apt-get install libxml++2.6-dev libxml2-dev
sudo apt-get install libxslt1.1 libxslt-dev
sudo apt-get install sqlite libsqlite3-dev

gem 의존성에 따라 아래의 gem들을 설치해 줍니다.

gem install thin sinatra rack-accept rest-client sinatra-content-for nokogiri

 

실행을 위핸 심볼릭 링크를 생성합니다.

ln -s /var/lib/gems/1.9.1/gems/deltacloud-core-1.1.3/bin/deltacloudd /usr/bin/deltacloudd

 

의존성을 위한 설치가 완료 된 후 델타클라우드 코어를 설치합니다.

sudo gem install deltacloud-core

 

델타클라우드 실행

델타클라우드 실행을 위해서는 deltacloudd -i dirver_id 명령을 사용합니다.

driver_id는 클라우드 provider에서 제공하는 드라이버명 입니다.

 

사용가능한 driver_id를 확인하기 위해서는

deltacloudd -l 명령을 사용합니다.

deltacloudd -l
Available drivers:
* condor
* vsphere
* opennebula
* eucalyptus
* rhevm
* sbc
* azure
* gogrid
* mock
* rackspace
* rimuhosting
* terremark
* ec2

오픈스택 드라이버를 사용하기 위해서는

Deltacloudd –i openstack

명령어를 사용해 서버를 실행 합니다.

 

델타클라우드 API

서버를 시작하면 Deltacloud API를 사용할 준비가 된 것입니다.

웹 브라우저의 주소 http://127.0.0.1:3001/api의 주소를 통해 접근이 가능합니다.

HTTP 호출을 통해 Deltacloud 서버와 통신할 수 있습니다. Deltacloud REST API를 사용하기 위하여

cURL을 사용합니다.

 

간단한 cURL 사용법 입니다.

이미지 목록 조회

백 엔드 클라우드에서 사용할 수 있는 모든 이미지의 목록을 가져옵니다.

Curl --user "pGbAJ1TsVg5PKs3BK27O:dPs47ralgBlldqYNbLg3scthsg4g8v0L9d6Mb5DK"

http://127.0.0.1:3001/api/images?format=xml

 

:밸류로 구성된 몇 가지 메타 데이터 키를 가지고 해당 콘텐츠 형식을 지정하고

버킷 'mybucket'에서 'my_new_blob'라는 스토리지를 생성합니다.

curl -H 'content-type: text/html' -H 'X-Deltacloud-Blobmeta-Name:mariosblob'
-H 'X-Deltacloud-Blobmeta-Version:2.1' --upload-file
"/home/marios/Desktop/somefile.html"
--user "pGbAJ1TsVg5PKs3BK27O:dPs47ralgBlldqYNbLg3scthsg4g8v0L9d6Mb5DK"
http://127.0.0.1:3001/api/buckets/mybucket/my_new_blob?format=xml

 

Delta Cloud REST API

Deltacloud REST 기반 (HATEOAS) 클라우드 추상화 API입니다.

하나의 API를 사용하여 다른 IaaS의 클라우드의 자원을 관리 할 수 ​​있습니다.

 

Realms

데이터 센터에 대한 백엔드 클라우드 내에서 서로 다른 조직 단위를 나타냅니다.

 

Instances

지정된 백엔드 클라우드에서 실행한 가상 서버. 인스턴스는 서버 이미지에서 인스턴스화됩니다.

 

Images

인스턴스가 생성되는 템플릿 각각의 이미지는 인스턴스 운영 시스템의 루트 파티션과 초기 스토리지를 정의합니다.

 

Instance states

인스턴스 상태는 인스턴스 라이프 사이클을 나타냅니다.

인스턴스는 다음 상태 중 하나입니다: 중지, 실행, 보류, 시작, 종료

 

Keys

키는 실행중인 인스턴스에 액세스하는 데 사용되는 자격 증명을 나타냅니다.

 

Storage volume

인스턴스에 연결하고 OS로 장착 할 수있는 가상 저장 장치입니다.

 

Storage snapshot

스토리지 스냅 샷은 지정된 시간에 스토리지 볼륨의 복사본 스냅 샷입니다.

 

Bucket

스토리지에 대한 컨테이너입니다.

 

Blob

지정된 버킷 내에 존재하는 일반 이진 데이터 항목입니다.

 

Address

주소는 IP 주소를 나타냅니다.

 

Load Balancer

로드 밸런서는 인스턴스의 지정된 IP 주소로 수신 된 네트워크 트래픽 분산항목 입니다.

 

Firewalls

인터넷을 통해 실행중인 인스턴스의 접근을 제어하는 ​​규칙을 설정합니다.

 

Metrics

메트릭은 클라우드 자원에 대한 유용한 정보를 제공합니다.

CPU 사용률 또는 네트워크 처리량등의 항목입니다.

 

서버응답

서버는 다양한 형식의 클라이언트 요청에 응답 할 수 있습니다.

기본 형식은 XML입니다. 클라이언트가 명시적인 형식 요청 매개 변수

http://127.0.0.1:3001/api?format=xml
http://127.0.0.1:3001/api?format=json

과 같은 식으로 특정 응답 형식을 요청할 수 있습니다.

 

Api의 전체 목록을 받아 보는 request :

GET /api?format=xml HTTP/1.1
Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
Host: 127.0.0.1:3001
Accept: */*

 

호출 시 아래의 응답을 받을 수 있습니다.

HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 1439
<api driver='ec2' version='0.3.0'>
  <link href='http:// 127.0.0.1:3001/api/instance_states' rel='instance_states'>
  </link>
  <link href='http:// 127.0.0.1:3001/api/drivers' rel='drivers'>
  </link>
  <link href='http:// 127.0.0.1:3001/api/addresses' rel='addresses'>
  </link>
  <link href='http:// 127.0.0.1:3001/api/hardware_profiles' rel='hardware_profiles'>
  </link>
  <link href='http:// 127.0.0.1:3001/api/firewalls' rel='firewalls'>
  </link>
  <link href='http:// 127.0.0.1:3001/api/storage_volumes' rel='storage_volumes'>
  </link>
  <link href='http:// 127.0.0.1:3001/api/images' rel='images'>
    <feature name='owner_id'>
    </feature>
  </link>
  <link href='http:// 127.0.0.1:3001/api/realms' rel='realms'>
  </link>
  <link href='http:// 127.0.0.1:3001/api/buckets' rel='buckets'>
    <feature name='bucket_location'>
    </feature>
  </link>
  <link href='http:// 127.0.0.1:3001/api/instances' rel='instances'>
    <feature name='user_data'>
    </feature>
    <feature name='authentication_key'>
    </feature>
    <feature name='firewalls'>
    </feature>
    <feature name='instance_count'>
    </feature>
    <feature name='attach_snapshot'>
    </feature>
  </link>
  <link href='http:// 127.0.0.1:3001/api/storage_snapshots' rel='storage_snapshots'>
  </link>
  <link href='http:// 127.0.0.1:3001/api/keys' rel='keys'>
  </link>
  <link href='http:// 127.0.0.1:3001/api/load_balancers' rel='load_balancers'>
  </link>
</api>

 

전체 렐름 리스트를 받아 보는 request :

GET /api/realms?format=xml HTTP/1.1
Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
Host: 127.0.0.1:3001
Accept: */*

 

호출 시 아래의 응답을 받을 수 있습니다.

HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 639
<?xml version='1.0' encoding='utf-8' ?>
<realms>
  <realm href='http://127.0.0.1:3001/api/realms/us-east-1a' id='us-east-1a'>
    <name>us-east-1a</name>
    <state>available</state>
  </realm>
  <realm href='http://127.0.0.1:3001/api/realms/us-east-1b' id='us-east-1b'>
    <name>us-east-1b</name>
    <state>available</state>
  </realm>
  <realm href='http://127.0.0.1:3001/api/realms/us-east-1c' id='us-east-1c'>
    <name>us-east-1c</name>
    <state>available</state>
  </realm>
  <realm href='http://127.0.0.1:3001/api/realms/us-east-1d' id='us-east-1d'>
    <name>us-east-1d</name>
    <state>available</state>
  </realm>
</realms>

 

특정 렐름의 상세정보를 받아 보는 request :

GET /api/realms/us?format=xml HTTP/1.1
Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
Host: 127.0.0.1:3002
Accept: */*

 

호출 시 아래와 같은 응답을 받을 수 있습니다.

HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 182
<?xml version='1.0' encoding='utf-8' ?>
<realm href='http://127.0.0.1:3001/api/realms/us' id='us'>
    <name>United States</name>
    <state>AVAILABLE</state>
    <limit></limit>
</realm>

 

모든 하드웨어 프로파일을 받아 보는 request :

GET /api/hardware_profiles?format=xml HTTP/1.1
Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
Host: 127.0.0.1:3001
Accept: */*

 

호출 시 아래와 같은 응답을 얻을 수 있습니다.

HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 3896
<?xml version='1.0' encoding='utf-8' ?>
<hardware_profiles>
  <hardware_profile href='http://127.0.0.1:3001/api/hardware_profiles/t1.micro' id='t1.micro'>
    <name>t1.micro</name>
    <property kind='fixed' name='cpu' unit='count' value='1' />
    <property kind='fixed' name='memory' unit='MB' value='645.12' />
    <property kind='fixed' name='architecture' unit='label' value='i386' />
    <property kind='fixed' name='storage' unit='GB' value='160' />
  </hardware_profile>
  <hardware_profile href='http://127.0.0.1:3001/api/hardware_profiles/m1.small' id='m1.small'>
    <name>m1.small</name>
    <property kind='fixed' name='cpu' unit='count' value='1' />
    <property kind='fixed' name='memory' unit='MB' value='1740.8' />
    <property kind='fixed' name='architecture' unit='label' value='i386' />
    <property kind='fixed' name='storage' unit='GB' value='160' />
  </hardware_profile>
  <hardware_profile href='http://127.0.0.1:3001/api/hardware_profiles/m1.large' id='m1.large'>
    <name>m1.large</name>
    <property kind='fixed' name='cpu' unit='count' value='4' />
    <property kind='fixed' name='memory' unit='MB' value='7680.0' />
    <property kind='fixed' name='architecture' unit='label' value='x86_64' />
    <property kind='fixed' name='storage' unit='GB' value='850' />
  </hardware_profile>
  <hardware_profile href='http://127.0.0.1:3001/api/hardware_profiles/m1.xlarge' id='m1.xlarge'>
    <name>m1.xlarge</name>
    <property kind='fixed' name='cpu' unit='count' value='8' />
    <property kind='fixed' name='memory' unit='MB' value='15360' />
    <property kind='fixed' name='architecture' unit='label' value='x86_64' />
    <property kind='fixed' name='storage' unit='GB' value='1690' />
  </hardware_profile>
  <hardware_profile href='http://127.0.0.1:3001/api/hardware_profiles/c1.medium' id='c1.medium'>
    <name>c1.medium</name>
    <property kind='fixed' name='cpu' unit='count' value='5' />
    <property kind='fixed' name='memory' unit='MB' value='1740.8' />
    <property kind='fixed' name='architecture' unit='label' value='i386' />
    <property kind='fixed' name='storage' unit='GB' value='350' />
  </hardware_profile>
  <hardware_profile href='http://127.0.0.1:3001/api/hardware_profiles/c1.xlarge' id='c1.xlarge'>
    <name>c1.xlarge</name>
    <property kind='fixed' name='cpu' unit='count' value='20' />
    <property kind='fixed' name='memory' unit='MB' value='7168' />
    <property kind='fixed' name='architecture' unit='label' value='x86_64' />
    <property kind='fixed' name='storage' unit='GB' value='1690' />
  </hardware_profile>
  <hardware_profile href='http://127.0.0.1:3001/api/hardware_profiles/m2.xlarge' id='m2.xlarge'>
    <name>m2.xlarge</name>
    <property kind='fixed' name='cpu' unit='count' value='6.5' />
    <property kind='fixed' name='memory' unit='MB' value='17510.4' />
    <property kind='fixed' name='architecture' unit='label' value='x86_64' />
    <property kind='fixed' name='storage' unit='GB' value='420' />
  </hardware_profile>
  <hardware_profile href='http://127.0.0.1:3001/api/hardware_profiles/m2.2xlarge' id='m2.2xlarge'>
    <name>m2.2xlarge</name>
    <property kind='fixed' name='cpu' unit='count' value='13' />
    <property kind='fixed' name='memory' unit='MB' value='35020.8' />
    <property kind='fixed' name='architecture' unit='label' value='x86_64' />
    <property kind='fixed' name='storage' unit='GB' value='850' />
  </hardware_profile>
  <hardware_profile href='http://127.0.0.1:3001/api/hardware_profiles/m2.4xlarge' id='m2.4xlarge'>
    <name>m2.4xlarge</name>
    <property kind='fixed' name='cpu' unit='count' value='26' />
    <property kind='fixed' name='memory' unit='MB' value='70041.6' />
    <property kind='fixed' name='architecture' unit='label' value='x86_64' />
    <property kind='fixed' name='storage' unit='GB' value='1690' />
  </hardware_profile>
</hardware_profiles>

 

특정 하드웨어 상세 프로파일을 받아 보는 request :

GET /api/hardware_profiles/m1-large?format=xml HTTP/1.1
Authorization: Basic bW9ja3VzZXI6bW9ja3Bhc3N3b3Jk
User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
Host: 127.0.0.1:3003
Accept: */*

 

호출 시 아래의 응답을 받을 수 있습니다.

HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 808
<?xml version='1.0' encoding='utf-8' ?>
<hardware_profile href='http://127.0.0.1:3003/api/hardware_profiles/m1-large' id='m1-large'>
  <name>m1-large</name>
  <property kind='fixed' name='cpu' unit='count' value='2' />
  <property kind='range' name='memory' unit='MB' value='10240'>
    <param href='http://127.0.0.1:3003/api/instances' method='post' name='hwp_memory' operation='create' />
    <range first='7680.0' last='15360' />
  </property>
  <property kind='enum' name='storage' unit='GB' value='850'>
    <param href='http://127.0.0.1:3003/api/instances' method='post' name='hwp_storage' operation='create' />
    <enum>
      <entry value='850' />
      <entry value='1024' />
    </enum>
  </property>
  <property kind='fixed' name='architecture' unit='label' value='x86_64' />
</hardware_profile>

 

전체 이미지 리스트를 받아 보는 request :

GET /api/images?owner_id=023801271342&architecture=x86_64&format=xml HTTP/1.1
Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
Host: 127.0.0.1:3001
Accept: */*

 

호출 시 아래의 응답을 받을 수 있습니다.

HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 1971
<?xml version='1.0' encoding='utf-8' ?>
<images>
  <image href='http://127.0.0.1:3001/api/images/ami-eea35787' id='ami-eea35787'>
    <name>sles-10-sp3-v1.00.x86_64</name>
    <owner_id>013907871322</owner_id>
    <description>SUSE Linux Enterprise Server 10 Service Pack 3 for x86_64 (v1.00)</description>
    <architecture>x86_64</architecture>
    <state></state>
    <actions>
      <link href='http://127.0.0.1:3001/api/instances;image_id=ami-eea35787' method='post' rel='create_instance' />
    </actions>
  </image>
  <image href='http://127.0.0.1:3001/api/images/ami-6e649707' id='ami-6e649707'>
    <name>sles-11-sp1-hvm-v1.00.x86_64</name>
    <owner_id>013907871322</owner_id>
    <description>SUSE Linux Enterprise Server 11 Service Pack 1 for HVM x86_64 (v1.00)</description>
    <architecture>x86_64</architecture>
    <state></state>
    <actions>
      <link href='http://127.0.0.1:3001/api/instances;image_id=ami-6e649707' method='post' rel='create_instance' />
    </actions>
  </image>
  <image href='http://127.0.0.1:3001/api/images/ami-e4a7558d' id='ami-e4a7558d'>
    <name>sles-11-sp1-hvm-v1.01.x86_64</name>
    <owner_id>013907871322</owner_id>
    <description>SUSE Linux Enterprise Server 11 Service Pack 1 for HVM x86_64 (v1.01)</description>
    <architecture>x86_64</architecture>
    <state></state>
    <actions>
      <link href='http://127.0.0.1:3001/api/instances;image_id=ami-e4a7558d' method='post' rel='create_instance' />
    </actions>
  </image>
  <image href='http://127.0.0.1:3001/api/images/ami-e4a3578d' id='ami-e4a3578d'>
    <name>sles-11-sp1-v1.00.x86_64</name>
    <owner_id>013907871322</owner_id>
    <description>SUSE Linux Enterprise Server 11 Service Pack 1 for x86_64 (v1.00)</description>
    <architecture>x86_64</architecture>
    <state></state>
    <actions>
      <link href='http://127.0.0.1:3001/api/instances;image_id=ami-e4a3578d' method='post' rel='create_instance' />
    </actions>
  </image>
</images>

 

이미지 상태정보를 받아 보는 request :

GET /api/instance_states?format=xml HTTP/1.1
Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
Host: 127.0.0.1:3002
Accept: */*

 

호출 시 아래의 응답을 받을 수 있습니다.

HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 583
<states>
  <state name='start'>
    <transition action='create' to='pending'></transition>
  </state>
  <state name='pending'>
    <transition auto='true' to='running'></transition>
  </state>
  <state name='running'>
    <transition action='reboot' to='running'></transition>
    <transition action='stop' to='shutting_down'></transition>
  </state>
  <state name='shutting_down'>
    <transition auto='true' to='stopped'></transition>
  </state>
  <state name='stopped'>
    <transition auto='true' to='finish'></transition>
  </state>
  <state name='finish'>
  </state>
</states>

 

현재 존재하는 모든 인스턴스의 리스트를 받아 보는 request :

GET /api/instances?format=xml HTTP/1.1
Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
Host: 127.0.0.1:3001
Accept: */*

 

호출 시 아래의 응답을 받을 수 있습니다.

HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 2790
<?xml version='1.0' encoding='utf-8' ?>
<instances>
  <instance href='http://127.0.0.1:3001/api/instances/i-1fbc627e' id='i-1fbc627e'>
    <name>ami-f51aff9c</name>
    <owner_id>393485797142</owner_id>
    <image href='http://127.0.0.1:3001/api/images/ami-f51aff9c' id='ami-f51aff9c'></image>
    <realm href='http://127.0.0.1:3001/api/realms/us-east-1c' id='us-east-1c'></realm>
    <state>RUNNING</state>
    <hardware_profile href='http://127.0.0.1:3001/api/hardware_profiles/c1.medium' id='c1.medium'>
    </hardware_profile>
    <actions>
      <link href='http://127.0.0.1:3001/api/instances/i-1fbc627e/reboot' method='post' rel='reboot' />
      <link href='http://127.0.0.1:3001/api/instances/i-1fbc627e/stop' method='post' rel='stop' />
      <link href='http://127.0.0.1:3001/api/instances/i-1fbc627e/run;id=i-1fbc627e' method='post' rel='run' />
    </actions>
    <launch_time>2011-07-22T11:29:48.000Z</launch_time>
    <public_addresses><address>ec2-50-16-183-107.compute-1.amazonaws.com</address></public_addresses>
    <private_addresses><address>domU-12-31-39-0F-79-D4.compute-1.internal</address></private_addresses>
    <firewalls>
      <firewall href='http://127.0.0.1:3001/api/firewalls/default' id='default'></firewall>
    </firewalls>
    <authentication type='key'>
      <login>
        <keyname>eftah</keyname>
      </login>
    </authentication>
  </instance>
  <instance href='http://127.0.0.1:3001/api/instances/i-f3ba6492' id='i-f3ba6492'>
    <name>ami-2b5fba42</name>
    <owner_id>393485797142</owner_id>
    <image href='http://127.0.0.1:3001/api/images/ami-2b5fba42' id='ami-2b5fba42'></image>
    <realm href='http://127.0.0.1:3001/api/realms/us-east-1d' id='us-east-1d'></realm>
    <state>RUNNING</state>
    <hardware_profile href='http://127.0.0.1:3001/api/hardware_profiles/m1.small' id='m1.small'>
    </hardware_profile>
    <actions>
      <link href='http://127.0.0.1:3001/api/instances/i-f3ba6492/reboot' method='post' rel='reboot' />
      <link href='http://127.0.0.1:3001/api/instances/i-f3ba6492/stop' method='post' rel='stop' />
      <link href='http://127.0.0.1:3001/api/instances/i-f3ba6492/run;id=i-f3ba6492' method='post' rel='run' />
    </actions>
    <launch_time>2011-07-22T11:32:25.000Z</launch_time>
    <public_addresses><address>ec2-184-73-78-87.compute-1.amazonaws.com</address></public_addresses>
    <private_addresses><address>ip-10-196-89-221.ec2.internal</address></private_addresses>
    <firewalls>
      <firewall href='http://127.0.0.1:3001/api/firewalls/default' id='default'></firewall>
      <firewall href='http://127.0.0.1:3001/api/firewalls/test' id='test'></firewall>
    </firewalls>
    <authentication type='key'>
      <login>
        <keyname>eftah</keyname>
      </login>
    </authentication>
  </instance>
</instances>

 

모든 키의 리스트를 받아 보는 request :

GET /api/keys?format=xml HTTP/1.1
Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
Host: 127.0.0.1:3001
Accept: */*

 

호출 시 아래의 응답을 받을 수 있습니다.

HTTP/1.1 200 OK
Content-Type: application/xml
Date: Tue, 26 Jul 2011 08:09:26 GMT
Content-Length: 733
<?xml version='1.0' encoding='utf-8' ?>
<keys>
  <key href='http://127.0.0.1:3001/api/keys/deltacloud_jsmith' id='deltacloud_jsmith' type='key'>
    <actions>
      <link href='http://127.0.0.1:3001/api/keys/deltacloud_jsmith' method='delete' rel='destroy' />
    </actions>
    <fingerprint>38:93:81:11:83:c2:c7:27:e8:79:17:e2:08:c9:13:99:73:90:8e:cc</fingerprint>
    <state>AVAILABLE</state>
  </key>
  <key href='http://127.0.0.1:3001/api/keys/the_key' id='the_key' type='key'>
    <actions>
      <link href='http://127.0.0.1:3001/api/keys/the_key' method='delete' rel='destroy' />
    </actions>
    <fingerprint>39:d3:9b:bb:93:92:97:27:e9:7d:b7:e2:09:9d:b3:dd:73:d0:9e:99</fingerprint>
    <state>AVAILABLE</state>
  </key>
</keys>

 

모든 방화벽 리스트를 받아 보는 request :

GET /api/firewalls?format=xml HTTP/1.1
Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
Host: 127.0.0.1:3001
Accept: */*

 

호출 시 아래의 응답을 받을 수 있습니다.

HTTP/1.1 200 OK
Content-Type: application/xml
Date: Tue, 26 Jul 2011 15:56:04 GMT
Content-Length: 1640
<?xml version='1.0' encoding='utf-8' ?>
<firewalls>
  <firewall href='http://127.0.0.1:3001/api/firewalls/default' id='default'>
    <name><![CDATA[default]]></name>
    <description><![CDATA[default group]]></description>
    <owner_id>393485797142</owner_id>
    <rules>
      <rule id='393485797142~tcp~22~22~@address,ipv4,87.228.192.251,32'>
        <allow_protocol>tcp</allow_protocol>
        <port_from>22</port_from>
        <port_to>22</port_to>
        <direction>ingress</direction>
        <sources>
          <source address='87.228.192.251' family='ipv4' prefix='32' type='address'></source>
        </sources>
      </rule>
    </rules>
  </firewall>
  <firewall href='http://127.0.0.1:3001/api/firewalls/test' id='test'>
    <name><![CDATA[test]]></name>
    <description><![CDATA[this is just a test]]></description>
    <owner_id>393485797142</owner_id>
    <rules>
      <rule id='393485797142~tcp~22~22~@group,393485797142,default,@address,ipv4,10.1.2.3,24'>
        <allow_protocol>tcp</allow_protocol>
        <port_from>22</port_from>
        <port_to>22</port_to>
        <direction>ingress</direction>
        <sources>
          <source name='default' owner='393485797142' type='group'></source>
          <source address='10.1.2.3' family='ipv4' prefix='24' type='address'></source>
        </sources>
      </rule>
    </rules>
  </firewall>
  <firewall href='http://127.0.0.1:3001/api/firewalls/new_firewall' id='new_firewall'>
    <name><![CDATA[new_firewall]]></name>
    <description><![CDATA[new_one]]></description>
    <owner_id>393485797142</owner_id>
    <rules>
    </rules>
  </firewall>
</firewalls>

 

할당 된 모든 인터넷 주소의 리스트를 받아 보는 request :

GET /api/addresses?format=xml HTTP/1.1
Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
Host: 127.0.0.1:3001
Accept: */*

 

호출 시 아래의 응답을 받을 수 있습니다.

HTTP/1.1 200 OK
Content-Type: application/xml
Date: Wed, 27 Jul 2011 12:55:16 GMT
Content-Length: 817
<?xml version='1.0' encoding='utf-8' ?>
<addresses>
  <address href='http://127.0.0.1:3001/api/addresses/107.20.232.251' id='107.20.232.251'>
    <ip>107.20.232.251</ip>
    <actions>
      <link href='http://127.0.0.1:3001/api/addresses/107.20.232.251' method='delete' rel='destroy' />
      <link href='http://127.0.0.1:3001/api/addresses/107.20.232.251/associate' method='post' rel='associate' />
    </actions>
  </address>
  <address href='http://127.0.0.1:3001/api/addresses/107.20.234.161' id='107.20.234.161'>
    <ip>107.20.234.161</ip>
    <actions>
      <link href='http://127.0.0.1:3001/api/addresses/107.20.234.161' method='delete' rel='destroy' />
      <link href='http://127.0.0.1:3001/api/addresses/107.20.234.161/associate' method='post' rel='associate' />
    </actions>
  </address>
</addresses>

 

모든 로드 발란서의 리스트를 받아 보는 request :

GET /api/load_balancers?format=xml HTTP/1.1
Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
Host: 127.0.0.1:3001
Accept: */*

 

호출 시 아래의 응답을 받을 수 있습니다.

HTTP/1.1 200 OK
Content-Type: application/xml
Date: Thu, 28 Jul 2011 13:37:19 GMT
Content-Length: 1844
<?xml version='1.0' encoding='utf-8' ?>
<load_balancers>
  <load_balancer href='http://127.0.0.1:3001/api/load_balancers/webtraffic-balancer' id='webtraffic-balancer'>
    <actions>
      <link href='http://127.0.0.1:3001/api/load_balancers/webtraffic-balancer' method='delete' rel='destroy' />
      <link href='http://127.0.0.1:3001/api/load_balancers/webtraffic-balancer/register' method='post' rel='register' />
    </actions>
    <public_addresses>
      <address>webtraffic-balancer-1306196965.us-east-1.elb.amazonaws.com</address>
    </public_addresses>
    <created_at>Thu Jul 28 13:29:52 UTC 2011</created_at>
    <realm href='http://127.0.0.1:3001/api/realms/us-east-1a' id='us-east-1a'></realm>
    <listeners>
      <listener protocol='HTTP'>
        <load_balancer_port>80</load_balancer_port>
        <instance_port>3001</instance_port>
      </listener>
    </listeners>
    <instances>
    </instances>
  </load_balancer>
  <load_balancer href='http://127.0.0.1:3001/api/load_balancers/secure-site-balancer' id='secure-site-balancer'>
    <actions>
      <link href='http://127.0.0.1:3001/api/load_balancers/secure-site-balancer' method='delete' rel='destroy' />
      <link href='http://127.0.0.1:3001/api/load_balancers/secure-site-balancer/register' method='post' rel='register' />
    </actions>
    <public_addresses>
      <address>secure-site-balancer-1347100846.us-east-1.elb.amazonaws.com</address>
    </public_addresses>
    <created_at>Thu Jul 28 13:36:29 UTC 2011</created_at>
    <realm href='http://127.0.0.1:3001/api/realms/us-east-1a' id='us-east-1a'></realm>
    <listeners>
      <listener protocol='HTTP'>
        <load_balancer_port>443</load_balancer_port>
        <instance_port>443</instance_port>
      </listener>
    </listeners>
    <instances>
    </instances>
  </load_balancer>
</load_balancers>

 

현재 openstack deltacloud연동 시 기본적인 조회 등은 가능함을 확인 하였으나

Openstack deltacloud사이의 인증서버에 문제가 있어 인증이 필요없는 간단한 조회를 제외한 부분의 기능은

동작하지 않고 있습니다.