LIST API REST API RESOURCE API

ROLE API

K2HR3 REST APIのロール(ROLE)に関連するAPI群です。

POST(ロール設定)

Scoped User Tokenを指定して、ロール(ROLE)の情報を設定(新規作成、更新)します。

Endpoint(URL)

http(s)://API SERVER:PORT/v1/role

Content-Type: application/json
x-auth-token: U=<Scoped User Token>

Request Body

{
    role:    {
        name:        <role name or yrn full path>
        policies:    [
                         <policy yrn full path>,
                         ...
                     ]
        alias:       [
                         <role yrn full path>,
                         ...
                     ]
    }
}

Response status

201、40x

Response Body(JSON)

{
    result:     <true/false>
    message:    <null or error message string>
}

PUT(ロール(ROLE)設定)

Scoped User Tokenを指定して、ロール(ROLE)の情報を設定(新規作成、更新)します。

Endpoint(URL)

http(s)://API SERVER:PORT/v1/role?urlarg

Header

Content-Type: application/json
x-auth-token: U=<Scoped User Token>

URL Arguments

Response status

201、40x

Response Body(JSON)

{
    result:     <true/false>
    message:    <null or error message string>
}

POST(ホスト(HOST)登録)

ロール(ROLE)メンバーにhostnameもしくはIPアドレスを設定するAPIです。呼び出しのTokenの種類により動作が異なります。
Scoped User Tokenを指定して、ロール(ROLE)メンバーにホスト(HOST)を設定(新規作成、更新)します。
Role Tokenを指定して、ロール(ROLE)メンバーにリクエスト送信元IPアドレスを設定(新規作成、更新)します。

Endpoint(URL)

Scoped User Token

http(s)://API SERVER:PORT/v1/role/role path

Role Token

http(s)://API SERVER:PORT/v1/role/yrn full path to role

Header

Scoped User Token

Content-Type: application/json
x-auth-token: U=<Scoped User Token>

Role Token

Content-Type: application/json
x-auth-token: R=<Role Token>

Request Body

Scoped User Token(1 hostのみ登録)

{
    host:    {
        host:            <hostname / ip address>
        port:            <port number>
        cuk:             <container unique key: reserved>
        extra:           <extra string data>
    }
    clear_hostname:      <true/false>
    clear_ips:           <true/false>
}

Scoped User Token(複数host登録)

{
    host:    [
        {
            host:        <hostname / ip address>
            port:        <port number>
            cuk:         <container unique key: reserved>
            extra:       <extra string data>
        },
        ...
    ]
    clear_hostname:      <true/false>
    clear_ips:           <true/false>
}

Role Token

{
    host:    {
        port:            <port number>
        cuk:             <container unique key: reserved>
        extra:           <extra string data>
    }
}

変数説明

注意

すでに存在しているhostname/IPアドレスと同じホスト(HOST)を異なるポートで指定した場合には、以下の動作に注意してください。

Response status

201、40x

Response Body(JSON)

{
    result:     <true/false>
    message:    <null or error message string>
}

PUT(ホスト(HOST)登録)

ロール(ROLE)メンバーにhostnameもしくはIPアドレスを設定するAPIです。呼び出しのTokenの種類により動作が異なります。
Scoped User Tokenを指定して、ロール(ROLE)メンバーにホスト(HOST)を設定(新規作成、更新)します。
Role Tokenを指定して、ロール(ROLE)メンバーにリクエスト送信元IPアドレスを設定(新規作成、更新)します。

Endpoint(URL)

Scoped User Token

http(s)://API SERVER:PORT/v1/role/role path?urlarg

Role Token

http(s)://API SERVER:PORT/v1/role/yrn full path to role?urlarg

Header

Scoped User Token

Content-Type: application/json
x-auth-token: U=<Scoped User Token>

Role Token

Content-Type: application/json
x-auth-token: R=<Role Token>

URL Arguments

Scoped User Token

Role Token

注意

すでに存在しているhostname/IPアドレスと同じホスト(HOST)を異なるポートで指定した場合には、以下の動作に注意してください。

Response status

201、40x

Response Body(JSON)

{
    result:     <true/false>
    message:    <null or error message string>
}

GET(ロール(ROLE)データ)

Scoped User Tokenを指定して、ロール(ROLE)のデータを取得します。

Endpoint(URL)

http(s)://API SERVER:PORT/v1/role/role path or yrn full role path?urlarg

Header

Content-Type: application/json
x-auth-token: U=<Scoped User Token>

URL Arguments

-expand=true or false
ロール(ROLE)に設定されているエリアスを展開するかどうかを指定します。
省略された場合には展開しません(false)。

Response status

200、40x

Response Body(JSON)

{
    result:     <true/false>
    message:    <null or error message string>
    role:       {
        policies:   array,
        aliases:    array
        hosts: {
            hostnames: [
                "<hostname> <port> <cuk>",
                ...
            ],
            ips: [
                "<ip address> <port> <cuk>",
                ...
            ]
        }
    }
}

GET(Role Token)

Role Tokenを取得するためのAPIです。取得には3つの手段が準備されています。
1つは、Scoped User Tokenを指定して、Role Tokenを取得します。
Role Tokenを指定して、Role Token(更新された新しいRole Token)を取得します。
最後は、Tokenを指定せず、ロール(ROLE)を指定し、そのロール(ROLE)メンバーのホスト(HOST)である確認をした上で、Role Tokenを取得します。

Endpoint(URL)

Scoped User Token指定

http(s)://API SERVER:PORT/v1/role/token/role path or yrn full role path

Role Token指定

http(s)://API SERVER:PORT/v1/role/token/role path or yrn full role path

Token未指定

http(s)://API SERVER:PORT/v1/role/token/yrn full role path

Header

Scoped User Token指定

Content-Type: application/json
x-auth-token: U=<Scoped User Token>

Role Token指定

Content-Type: application/json
x-auth-token: R=<Role Token>

Token未指定

Content-Type: application/json

Response status

200、40x

Response Body(JSON)

{
    result:       <true/false>
    message:      <null or error message string>
    token:        <role token string>
    registerpath: <URI path for userdata API>
}

Endpoint(URL)

Scoped User Token指定

http(s)://API SERVER:PORT/v1/role/role path or yrn full role path

Role Token指定

http(s)://API SERVER:PORT/v1/role/role path or yrn full role path

Token未指定

http(s)://API SERVER:PORT/v1/role/yrn full role path

Header

Scoped User Token指定

Content-Type: application/json
x-auth-token: U=<Scoped User Token>

Role Token指定

Content-Type: application/json
x-auth-token: R=<Role Token>

Token未指定

Content-Type: application/json

Response status

204、40x

Response Body(JSON)

なし

DELETE(ロール(ROLE)削除)

ロール(ROLE)の削除、ロール(ROLE)メンバーのHostnameの削除、ロール(ROLE)メンバーのIPアドレスの削除、Role Tokenの削除(無効化)を行うAPIです。
Scoped User Tokenを指定した場合には、ロール(ROLE)の削除、ロール(ROLE)メンバーのHostnameの削除、ロール(ROLE)メンバーのIPアドレスの削除ができます。
Role Tokenを指定した場合には、URLパスで指定されるロール(ROLE)(YRNフルパスで指定されている)であることを確認し、そのRole Tokenを無効化します。
Tokenが未指定の場合には、リクエスト送信元IPアドレスがURLパスで指定されるロール(ROLE)(YRNフルパスで指定されている)のメンバーであることを確認し、そのIPアドレスの削除をします。
Hostname/IPアドレスの削除するケースにおいてポート番号を指定する場合に、登録されているポート番号が0(any)であり、指定されたポート番号が0以外であってもそのHostname/IPアドレスは削除されます。逆に、登録されているポート番号が0以外であり、そのポート番号と異なるポート番号を指定した場合には、削除されません。
これは、指定されたHostname/IPアドレス(ポート番号含む)が、登録されているHostname/IPアドレス(ポート番号含む)に含まれている場合には、登録されているHostname/IPアドレスが削除されることを意味しています。

Endpoint(URL)

Scoped User Token指定

http(s)://API SERVER:PORT/v1/role/role path or yrn full role path?urlarg

Role Token指定

http(s)://API SERVER:PORT/v1/role/role path or yrn full role path

Token未指定

http(s)://API SERVER:PORT/v1/role/yrn full role path?urlarg

Header

Scoped User Token指定

Content-Type: application/json
x-auth-token: U=<Scoped User Token>

Role Token指定

Content-Type: application/json
x-auth-token: R=<Role Token>

Token未指定

Content-Type: application/json

URL Arguments

Scoped User Token指定(ロール(ROLE)削除)

URL Argumentsとして何も指定しない場合には、ロール(ROLE)の削除となります。

Scoped User Token指定(Hostname/IPアドレス削除)

Role Token指定

なし

Token未指定

Response status

204、40x

Response Body(JSON)

なし

DELETE(Hostname/IPアドレス削除)

IaaS(OpenStack)のインスタンスから自動登録されたIPアドレス(もしくはHostname)を削除するAPIです。
現在、IaaSとしてOpenStackを想定しており、OpenStackにおけるインスタンス起動時のUSER DATA SCRIPTによるIPアドレスの自動登録をサポートしています。
この自動登録されたIPアドレスを、OpenStack インスタンスが削除された時点で自動的に削除するために本APIを利用します。

本APIは、IPアドレスが自動登録されたときに指定される、CUK(Cloud Unique Key)を指定し、同じCUKで登録されたIPアドレスを、ROLEキー以下のホスト(HOST)情報から削除します。
現在、IaaSとしてOpenStackのインスタンスのIPアドレスを対象としており、CUKはOpenStackのInstance IDとなっています。
また、OpenStackからの自動登録を行ったホスト(HOST)は、extra(後述)値がopenstack-auto-v1固定であり、この値である必要があります。

本APIは、K2HR3 WebアプリケーションやCLIからのリクエストを想定したものではなく、K2HR3 OpenStack Notification Listenerからの呼び出しを想定しています。

本APIの呼び出しは、K2HR3 APIのconfigとして以下の設定がなされているテナント(TENANT)やロール(ROLE)に登録されているIPアドレスからのみ許可されます。(default.jsonやlocal.jsonで設定してください)

{
  'k2hr3admin': {
     'tenant':      'admintenant',
     'delhostrole': 'delhostrole'
  }
}

Endpoint(URL)

http(s)://API SERVER:PORT/v1/role?urlarg

Header

Content-Type: application/json

URL Arguments

cuk

OpenStackのUSER DATA SCRIPTにより登録されたときのCUK(Cloud Unique Key = Instance ID)を指定してください。
この値に紐づくIPアドレスを削除の対象として動作します。

host

削除したいIPアドレスを指定するパラメータです。
CUKに紐づくIPアドレスのうち、このパラメータで指定されたIPアドレスのみが削除の対象となります。
IPアドレスを複数指定する場合には、JSONオブジェクトで文字列配列として指定します。
一つのIPアドレスの場合には、文字列を指定します。
このパラメータを指定せず、CUKのみを指定した場合には、CUKに紐づくすべてのIPアドレスが削除の対象となります。
OpenStack起動時に登録するだけの環境では、CUKに紐づくIPアドレスは1つであることが通常であり、hostパラメータを指定しなくてもよいことが多いはずです。

extra

openstack-auto-v1を指定してください。
現在、サポートしているのは、OpenStackのみであり、この値固定です。

Response status

204、40x

Response Body(JSON)

なし

LIST API REST API RESOURCE API