본문 바로가기

Cloud Native/Research_OpenStack

OpenStack REST 확인

OpenStack REST 확인?


잘 알고 있는 것 처럼 OpenStack에서도 REST를 지원한다.


그런데 이런 REST를 막상확인하려고 하면 생각보다 잘 안되는 경우가 많다.


대부분의 TEST는 CURL을 사용하여 TEST하게 되는데 막상 내가 확인하고자 하는 것은 REST 동작 여부일 경우 TEST 프로그램을 작성하고 curl을 적용하여 확인하기에는 너무 소모가 많다.


Chrome 또는 Firefox에서 제공하는 RESTClient를 활용하여 확인만 하면 딱 좋겠다는 생각이 드는 것은 당연한 일이다.


본 포스팅은 RESTClient를 사용한 OpenStack REST 확인에 대한 내용이다.



OpenStack REST 그리고 REST Client



우선은 OpenStack은 이미 인스톨되어 정상동작 되고 있다고 가정한다.


또한 RESTClient 역시 설치되어 있다고 가정한다.


본 예에서 사용하는 RESTClient는 Chrome의 'Advanced Rest Client' 이다.


 

1. Horizon을 통한 Virtual Network / Subnet / VM 생성


1-1. OpenStack에서 Virtual Network/Subnet/VM 생성


Dashboard를 통하여 Virtual Network/Subnet/VM을 생성한다.



2. RESTClient를 통한 확인


OpenStack의 REST API는 각 서비스마다 포트를 가지고 있으니 이를 확인하여야 한다.


예를 들어 Keystone의 경우 5000번, Network의 경우 9696번으로 나뉘어 있다.

(OpenStack 설치하면서 keystone endpoint를 생성할 때 이미 적용을 완료하였다.)


2-1. REST Client를 통한 X-Auth-Token 확보

    • REST POST URL : http://<OpenStack Controller IP>:5000/v2.0/tokens
    • Payload
{
    "auth": {
        "tenantName": "admin",
        "passwordCredentials": {
            "username": "admin",
            "password": "<password>"
        }
    }
}
    • Content-Type : application/json


    • Response 메시지 확인
      • id 필드에 있는 값이 token
{
  access: {
    token: {
      issued_at: "2015-10-19T05:40:41.452656"
      expires: "2015-10-19T06:40:41Z"
      id: "ff7348d54c654d4fbf22970e14e71019"
      tenant: {...}
      audit_ids: [...1]
    }

    serviceCatalog: [...11]
    user: {...}
    metadata: {...}
  }
}


2-2. token을 활용한 REST 확인
    • REST GET URL : http://<OpenStack Controller IP>:9696/v2.0/networks
    • Headers
      • X-Auth-Token: ff7348d54c654d4fbf22970e14e71019  ->  token 값
      • Content-Type: application/json
      • Accept: application/json



    • Response 메시지 확인
{
  networks: {
    status: "ACTIVE"
    subnets: [
      "a9ab58c1-c419-405d-8f89-9c16f1efc7f2"
    ]
    name: "net01"
    provider:physical_network: null
    router:external: false
    tenant_id: "ce4ef47dcdb6454e83a05494ed3676d7"
    admin_state_up: true
    mtu: 0
    shared: false
    provider:network_type: "vxlan"
    id: "bb7c8528-0ccb-4390-b0bb-01a572043bb6"
    provider:segmentation_id: 29
  }
}



2-3 OpenStack REST API


http://developer.openstack.org/api-ref-networking-v2.html 확인