1. 程式人生 > >Openstack-Restful Api 介面測試

Openstack-Restful Api 介面測試

       目前 OpenStack中訊息傳遞有兩種機制,一種是訊息佇列,另一種就是Restful API。其中Openstack專案的介面遵循REST原則,即使用Restful Api實現OpenStack各Server與Client互動通訊。下面測試一下直接使用OpenStack中Restful API去實現相應的功能。Postman是一款前端呼叫工具,本文采用該工具來測試後端的介面。

1. keytone get-token

token是環境可操作的前提,OpenStack登陸時填寫的使用者名稱+密碼,登陸之後的操作都是使用token。下面使用postman工具測試keystone服務的介面,嘗試向keystone服務的endpoint地址傳送攜帶使用者名稱及使用者名稱密碼的POST請求,具體要求如下:

若傳送POST後傳入的使用者名稱密碼引數驗證通過,則返回狀態資訊200,併成功獲取token資料。

從上述截圖返回的body資訊來看,除了獲取到認證的token外,並且獲取到了Openstack全部服務的請求地址,詳見下面"serviceCatalog"欄位,後續將可以拿著該token去訪問Openstack其他服務,如:nova、glance。

    "serviceCatalog": [
      {
        "endpoints": [
          {
            "adminURL": "http://10.154.4.65:8774/v2/fc6c592284bb4d6d87f2dada93a0d144",
            "region": "RegionOne",
            "internalURL": "http://10.154.4.65:8774/v2/fc6c592284bb4d6d87f2dada93a0d144",
            "id": "786c8981ea6c4a50ab1e9b6889fd54ae",
            "publicURL": "http://10.154.4.65:8774/v2/fc6c592284bb4d6d87f2dada93a0d144"
          }
        ],
        "endpoints_links": [],
        "type": "compute",
        "name": "nova"
      },
      {
        "endpoints": [
          {
            "adminURL": "http://10.154.4.65:9696",
            "region": "RegionOne",
            "internalURL": "http://10.154.4.65:9696",
            "id": "858213266aac4d7794be98faf2cbd820",
            "publicURL": "http://10.154.4.65:9696"
          }
        ],
        "endpoints_links": [],
        "type": "network",
        "name": "neutron"
      },
      {
        "endpoints": [
          {
            "adminURL": "http://10.154.4.65:8776/v2/fc6c592284bb4d6d87f2dada93a0d144",
            "region": "RegionOne",
            "internalURL": "http://10.154.4.65:8776/v2/fc6c592284bb4d6d87f2dada93a0d144",
            "id": "268616abc7944cb4a8fa1f3f6dded4d4",
            "publicURL": "http://10.154.4.65:8776/v2/fc6c592284bb4d6d87f2dada93a0d144"
          }
        ],
        "endpoints_links": [],
        "type": "volumev2",
        "name": "cinderv2"
      },
      {
        "endpoints": [
          {
            "adminURL": "http://10.154.4.65:9292",
            "region": "RegionOne",
            "internalURL": "http://10.154.4.65:9292",
            "id": "71cbec44c42746048bcd77f9fe9487b0",
            "publicURL": "http://10.154.4.65:9292"
          }
        ],
        "endpoints_links": [],
        "type": "image",
        "name": "glance"
      },
      {
        "endpoints": [
          {
            "adminURL": "http://10.154.4.65:8777",
            "region": "RegionOne",
            "internalURL": "http://10.154.4.65:8777",
            "id": "0533e2fc65594f308c689a4b26df450b",
            "publicURL": "http://10.154.4.65:8777"
          }
        ],
        "endpoints_links": [],
        "type": "metering",
        "name": "ceilometer"
      },
      {
        "endpoints": [
          {
            "adminURL": "http://10.154.4.65:8776/v1/fc6c592284bb4d6d87f2dada93a0d144",
            "region": "RegionOne",
            "internalURL": "http://10.154.4.65:8776/v1/fc6c592284bb4d6d87f2dada93a0d144",
            "id": "1d81e66df8524baa8c7dc483a7257efd",
            "publicURL": "http://10.154.4.65:8776/v1/fc6c592284bb4d6d87f2dada93a0d144"
          }
        ],
        "endpoints_links": [],
        "type": "volume",
        "name": "cinder"
      },
      {
        "endpoints": [
          {
            "adminURL": "http://10.154.4.65:8773/services/Admin",
            "region": "RegionOne",
            "internalURL": "http://10.154.4.65:8773/services/Cloud",
            "id": "2c7fb3475aac4eec928316ee8818a765",
            "publicURL": "http://10.154.4.65:8773/services/Cloud"
          }
        ],
        "endpoints_links": [],
        "type": "ec2",
        "name": "nova_ec2"
      },
      {
        "endpoints": [
          {
            "adminURL": "http://10.154.4.65:8080",
            "region": "RegionOne",
            "internalURL": "http://10.154.4.65:8080/v1/AUTH_fc6c592284bb4d6d87f2dada93a0d144",
            "id": "589c8c52ddb84882811403b77e260673",
            "publicURL": "http://10.154.4.65:8080/v1/AUTH_fc6c592284bb4d6d87f2dada93a0d144"
          }
        ],
        "endpoints_links": [],
        "type": "object-store",
        "name": "swift"
      },
      {
        "endpoints": [
          {
            "adminURL": "http://10.154.4.65:35357/v2.0",
            "region": "RegionOne",
            "internalURL": "http://10.154.4.65:5000/v2.0",
            "id": "7b5cd0dfbb6e41a69841aa6a69760df6",
            "publicURL": "http://10.154.4.65:5000/v2.0"
          }
        ],
        "endpoints_links": [],
        "type": "identity",
        "name": "keystone"
      }
    ],

2. nova   get server-list

下面用上述拿到的token和nova服務的endpoint資訊來查詢admin租戶下的全部虛機。

填寫Postman,填寫的內容有4個點,分別是: 1.請求型別:GET。 2.請求的URL地址:/servers。 3.設定訪問的header,這裡是設定token的key。第一步已經獲取了token的值,剩餘的訪問都是使用token處理。 4.設定token的值。

可知上圖返回的body資訊中查詢到一臺“wy”虛機。更多有關nova的操作,可參看官方文件中nova服務的API的描述,從API使用手冊中進入Compute API(https://developer.openstack.org/api-ref/compute/

)。下面給出一些nova server的操作請求地址:

3.glance  get image-list

同nova操作,我們使用postman工具檢視Openstack的glance服務中存在的映象。glance服務的訪問地址參看官方glance服務的API文件(https://developer.openstack.org/api-ref/image/v2/

查詢image-list需要在Postman填寫的內容如下: 1.請求型別:GET。 2.請求的URL地址:/v2/images。 3.設定訪問的header,這裡是設定token的key。第一步已經獲取了token的值,剩餘的訪問都是使用token處理。 4.設定token的值。

可知上圖返回的body資訊中查詢到windows2012的映象以及它的各種屬性。

4.總結

       使用介面測試工具Postman簡單測試一下發現,使用Restful API客戶端能夠呼叫keytone、nova、glance服務。下篇將以建立虛擬機器為例,講述使用Restful API客戶端能夠呼叫Openstack各種服務,並各服務之間的相互配合也是通過其完成。