Debian 12 bookworm
Sponsored Link

OpenStack Zed : CloudKitty 利用方法2023/06/30

 
OpenStack Rating Service (CloudKitty) の利用方法です。
当例では以下のような環境を例に CloudKitty をインストールしています。
------------+--------------------------+--------------------------+------------
            |                          |                          |
        eth0|10.0.0.30             eth0|10.0.0.50             eth0|10.0.0.51
+-----------+-----------+  +-----------+-----------+  +-----------+-----------+
|   [ dlp.srv.world ]   |  | [ network.srv.world ] |  |  [ node01.srv.world ] |
|     (Control Node)    |  |     (Network Node)    |  |     (Compute Node)    |
|                       |  |                       |  |                       |
|  MariaDB    RabbitMQ  |  |  Neutron L2/L3 Agent  |  |        Libvirt        |
|  Memcached  Nginx     |  |   Neutron Metadata    |  |      Nova Compute     |
|  Keystone   httpd     |  |     Open vSwitch      |  |    Neutron L2 Agent   |
|  Glance     Nova API  |  |     iSCSI Target      |  |      Open vSwitch     |
|  Neutron Server       |  |     Cinder Volume     |  |   Ceilometer Compute  |
|  Neutron Metadata     |  |     httpd  Gnocchi    |  |                       |
|  Cinder API           |  |   Ceilometer Central  |  |                       |
|                       |  |     CloudKitty API    |  |                       |
+-----------------------+  +-----------------------+  +-----------------------+

[1] レートを設定したい各々のプロジェクトで、[cloudkitty] ユーザーを [rating] ロールに追加しておきます。
root@dlp ~(keystone)#
openstack project list

+----------------------------------+-----------+
| ID                               | Name      |
+----------------------------------+-----------+
| 1c2f5dc8c4f9494fbaaa4217c8e3585a | hiroshima |
| 757625ae78404e38a8cfdd7c6d262860 | admin     |
| d8b09d86ed7743039f92b2e542ea26c1 | service   |
+----------------------------------+-----------+

root@dlp ~(keystone)#
openstack role add --user cloudkitty --project hiroshima rating

[2] [Hashmap] モジュールを有効にします。
root@dlp ~(keystone)#
openstack rating module list

+-----------+---------+----------+
| Module    | Enabled | Priority |
+-----------+---------+----------+
| hashmap   | False   |        1 |
| noop      | True    |        1 |
| pyscripts | False   |        1 |
+-----------+---------+----------+

root@dlp ~(keystone)#
openstack rating module enable hashmap

+---------+---------+----------+
| Module  | Enabled | Priority |
+---------+---------+----------+
| hashmap | True    |        1 |
+---------+---------+----------+

root@dlp ~(keystone)#
openstack rating module list

+-----------+---------+----------+
| Module    | Enabled | Priority |
+-----------+---------+----------+
| hashmap   | True    |        1 |
| noop      | True    |        1 |
| pyscripts | False   |        1 |
+-----------+---------+----------+
[3] Instance Uptime にレートを設定します。
[1] で設定したプロジェクト所属ユーザーが、設定した [flavor_id] でインスタンスを起動した場合、[cloudkitty.conf] で設定した [period] の間隔毎に、設定したレートで課金されます。
# サービス マッチング ルールを追加

root@dlp ~(keystone)#
openstack rating hashmap service create instance

+----------+--------------------------------------+
| Name     | Service ID                           |
+----------+--------------------------------------+
| instance | cd8247c2-e518-46d1-9eed-a3cd278dcba9 |
+----------+--------------------------------------+

# フィールド マッチング ルールを追加

root@dlp ~(keystone)#
openstack rating hashmap field create cd8247c2-e518-46d1-9eed-a3cd278dcba9 flavor_id

+-----------+--------------------------------------+--------------------------------------+
| Name      | Field ID                             | Service ID                           |
+-----------+--------------------------------------+--------------------------------------+
| flavor_id | 44483eb6-f758-4816-9e72-abc13bc48da0 | cd8247c2-e518-46d1-9eed-a3cd278dcba9 |
+-----------+--------------------------------------+--------------------------------------+

root@dlp ~(keystone)#
openstack flavor list

+----+-----------+------+------+-----------+-------+-----------+
| ID | Name      |  RAM | Disk | Ephemeral | VCPUs | Is Public |
+----+-----------+------+------+-----------+-------+-----------+
| 1  | m1.small  | 2048 |   10 |         0 |     1 | True      |
| 2  | m1.medium | 4096 |   10 |         0 |     2 | True      |
| 3  | m1.large  | 8192 |   10 |         0 |     4 | True      |
| 4  | m2.large  | 8192 |   10 |        10 |     4 | True      |
| 5  | m3.large  | 8192 |   20 |         0 |     4 | True      |
+----+-----------+------+------+-----------+-------+-----------+

# マッピングを作成
# [flavor_id] が [2] のインスタンスに [0.5] ドルのコストを設定
root@dlp ~(keystone)# openstack rating hashmap mapping create 0.5 \
--field-id 44483eb6-f758-4816-9e72-abc13bc48da0 \
--value 2 -t flat 
+--------------------------------------+-------+--------------------------------+------+--------------------------------------+------------+----------+------------+
| Mapping ID                           | Value | Cost                           | Type | Field ID                             | Service ID | Group ID | Project ID |
+--------------------------------------+-------+--------------------------------+------+--------------------------------------+------------+----------+------------+
| ddf302c3-3171-4c86-a763-538ca5292f33 | 2     | 0.5000000000000000000000000000 | flat | 44483eb6-f758-4816-9e72-abc13bc48da0 | None       | None     | None       |
+--------------------------------------+-------+--------------------------------+------+--------------------------------------+------------+----------+------------+
[4] [1] で CloudKitty と関連付けたプロジェクトに所属する任意の Openstack ユーザーで、インスタンスを操作して、動作確認します。
debian@dlp ~(keystone)$
openstack server list

+--------------------------------------+-----------+---------+------------------------------------+----------+-----------+
| ID                                   | Name      | Status  | Networks                           | Image    | Flavor    |
+--------------------------------------+-----------+---------+------------------------------------+----------+-----------+
| c3a4a792-a7ac-41bd-8c93-7fd162016f22 | Debian-12 | SHUTOFF | private=10.0.0.241, 192.168.100.66 | Debian12 | m1.medium |
+--------------------------------------+-----------+---------+------------------------------------+----------+-----------+
debian@dlp ~(keystone)$
openstack server start Debian-12
# 一定時間経過後 レートが加算される

debian@dlp ~(keystone)$
openstack rating summary get

+----------------------------------+---------------+------+---------------------+---------------------+
| Tenant ID                        | Resource Type | Rate | Begin Time          | End Time            |
+----------------------------------+---------------+------+---------------------+---------------------+
| 1c2f5dc8c4f9494fbaaa4217c8e3585a | ALL           | 0.5  | 2023-06-01T00:00:00 | 2023-07-01T00:00:00 |
+----------------------------------+---------------+------+---------------------+---------------------+

# インスタンス稼働中は [period] の間隔毎に 設定したレートがさらに課金される

debian@dlp ~(keystone)$
openstack rating summary get

+----------------------------------+---------------+------+---------------------+---------------------+
| Tenant ID                        | Resource Type | Rate | Begin Time          | End Time            |
+----------------------------------+---------------+------+---------------------+---------------------+
| 1c2f5dc8c4f9494fbaaa4217c8e3585a | ALL           | 1.0  | 2023-06-01T00:00:00 | 2023-07-01T00:00:00 |
+----------------------------------+---------------+------+---------------------+---------------------+

# データフレーム表示

debian@dlp ~(keystone)$
openstack rating dataframes get

+---------------------+---------------------+----------------------------------
| Begin               | End                 | Project ID                       
+---------------------+---------------------+----------------------------------
| 2023-06-30T02:20:00 | 2023-06-30T02:30:00 | 1c2f5dc8c4f9494fbaaa4217c8e3585a 
| 2023-06-30T02:50:00 | 2023-06-30T03:00:00 | 1c2f5dc8c4f9494fbaaa4217c8e3585a 
| 2023-06-30T03:40:00 | 2023-06-30T03:50:00 | 1c2f5dc8c4f9494fbaaa4217c8e3585a 
| 2023-06-30T03:50:00 | 2023-06-30T04:00:00 | 1c2f5dc8c4f9494fbaaa4217c8e3585a 
+---------------------+---------------------+----------------------------------
+--------------------------------------------------------------------------------------------------------------
| Resources                                                                                                    
+--------------------------------------------------------------------------------------------------------------
| [{'rating': '0.0', 'service': 'instance', 'desc': {'flavor_name': 'm1.medium', 'flavor_id': '2', 'vcpus': '',
| [{'rating': '0.0', 'service': 'volume.size', 'desc': {'volume_type': 'add8758b-74e4-4f07-b737-e72e9017f517', 
| [{'rating': '0.5', 'service': 'instance', 'desc': {'flavor_name': 'm1.medium', 'flavor_id': '2', 'vcpus': '',
| [{'rating': '0.5', 'service': 'instance', 'desc': {'flavor_name': 'm1.medium', 'flavor_id': '2', 'vcpus': '',
+--------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
                                                                                                
------------------------------------------------------------------------------------------------
 'id': 'c3a4a792-a7ac-41bd-8c93-7fd162016f22', 'project_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a',
'id': 'f7b74e86-2484-42f1-b657-ecf7fa8b61f8', 'project_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a', 
 'id': 'c3a4a792-a7ac-41bd-8c93-7fd162016f22', 'project_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a',
 'id': 'c3a4a792-a7ac-41bd-8c93-7fd162016f22', 'project_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a',
------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
                                                                                                 
-------------------------------------------------------------------------------------------------
 'user_id': 'de51d5f0ee2c485885877d21f5b424e0', 'tenant_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a'},
'user_id': 'de51d5f0ee2c485885877d21f5b424e0', 'tenant_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a'}, 
 'user_id': 'de51d5f0ee2c485885877d21f5b424e0', 'tenant_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a'},
 'user_id': 'de51d5f0ee2c485885877d21f5b424e0', 'tenant_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a'},
-------------------------------------------------------------------------------------------------
-------------------------------------------+
                                           |
-------------------------------------------+
 'volume': '1', 'rate_value': '0.0000'}]   |
'volume': '1E+1', 'rate_value': '0.0000'}] |
 'volume': '1', 'rate_value': '0.5000'}]   |
 'volume': '1', 'rate_value': '0.5000'}]   |
-------------------------------------------+
[5] Volume Size にレートを設定します。
[1] で設定したプロジェクト所属ユーザーが、Cinder ボリュームを作成した場合、1 GB 毎に、設定したレートで課金されます。
# サービス マッチング ルールを追加

root@dlp ~(keystone)#
openstack rating hashmap service create volume.size

+-------------+--------------------------------------+
| Name        | Service ID                           |
+-------------+--------------------------------------+
| volume.size | 33174b3c-bcfe-4c8e-9664-21a2940a738e |
+-------------+--------------------------------------+

# マッピングを作成
# 1 GB 毎に [1.5] ドルのコストを設定
root@dlp ~(keystone)# openstack rating hashmap mapping create 1.5 \
-s 33174b3c-bcfe-4c8e-9664-21a2940a738e \
-t flat 
+--------------------------------------+-------+--------------------------------+------+----------+--------------------------------------+----------+------------+
| Mapping ID                           | Value | Cost                           | Type | Field ID | Service ID                           | Group ID | Project ID |
+--------------------------------------+-------+--------------------------------+------+----------+--------------------------------------+----------+------------+
| 1c589124-56e4-40ef-8bfd-d261b62769fe | None  | 1.5000000000000000000000000000 | flat | None     | 33174b3c-bcfe-4c8e-9664-21a2940a738e | None     | None       |
+--------------------------------------+-------+--------------------------------+------+----------+--------------------------------------+----------+------------+

# 30 GB 以上のボリュームに対して [1.5] ドルのコスト設定から
# 10 % 引きのディスカウントを設定
root@dlp ~(keystone)# openstack rating hashmap threshold create 30 0.90 \
-s 33174b3c-bcfe-4c8e-9664-21a2940a738e \
-t rate 
+--------------------------------------+-------------+--------------------------------+------+----------+--------------------------------------+----------+------------+
| Threshold ID                         | Level       | Cost                           | Type | Field ID | Service ID                           | Group ID | Project ID |
+--------------------------------------+-------------+--------------------------------+------+----------+--------------------------------------+----------+------------+
| 9a1ba030-a51c-40fa-a979-12be7c62d1f1 | 30.00000000 | 0.9000000000000000222044604925 | rate | None     | 33174b3c-bcfe-4c8e-9664-21a2940a738e | None     | None       |
+--------------------------------------+-------------+--------------------------------+------+----------+--------------------------------------+----------+------------+
[6] [1] で CloudKitty と関連付けたプロジェクトに所属する任意の Openstack ユーザーで、ボリュームを作成して、動作確認します。
debian@dlp ~(keystone)$
openstack rating summary get

+----------------------------------+---------------+------+---------------------+---------------------+
| Tenant ID                        | Resource Type | Rate | Begin Time          | End Time            |
+----------------------------------+---------------+------+---------------------+---------------------+
| 1c2f5dc8c4f9494fbaaa4217c8e3585a | ALL           | 1.5  | 2023-06-01T00:00:00 | 2023-07-01T00:00:00 |
+----------------------------------+---------------+------+---------------------+---------------------+

debian@dlp ~(keystone)$ openstack volume create --size 10 disk01 

debian@dlp ~(keystone)$
openstack volume list

+--------------------------------------+--------+-----------+------+-------------+
| ID                                   | Name   | Status    | Size | Attached to |
+--------------------------------------+--------+-----------+------+-------------+
| c6ab8750-7c89-4c4b-af98-77edf24b8b36 | disk01 | available |   10 |             |
+--------------------------------------+--------+-----------+------+-------------+

# 一定時間経過後 レートが加算される

debian@dlp ~(keystone)$
openstack rating summary get

+----------------------------------+---------------+------+---------------------+---------------------+
| Tenant ID                        | Resource Type | Rate | Begin Time          | End Time            |
+----------------------------------+---------------+------+---------------------+---------------------+
| 1c2f5dc8c4f9494fbaaa4217c8e3585a | ALL           | 16.5 | 2023-06-01T00:00:00 | 2023-07-01T00:00:00 |
+----------------------------------+---------------+------+---------------------+---------------------+

debian@dlp ~(keystone)$
openstack rating dataframes get

+---------------------+---------------------+----------------------------------
| Begin               | End                 | Project ID                       
+---------------------+---------------------+----------------------------------
| 2023-06-30T02:20:00 | 2023-06-30T02:30:00 | 1c2f5dc8c4f9494fbaaa4217c8e3585a 
| 2023-06-30T02:50:00 | 2023-06-30T03:00:00 | 1c2f5dc8c4f9494fbaaa4217c8e3585a 
| 2023-06-30T03:40:00 | 2023-06-30T03:50:00 | 1c2f5dc8c4f9494fbaaa4217c8e3585a 
| 2023-06-30T03:50:00 | 2023-06-30T04:00:00 | 1c2f5dc8c4f9494fbaaa4217c8e3585a 
| 2023-06-30T04:00:00 | 2023-06-30T04:10:00 | 1c2f5dc8c4f9494fbaaa4217c8e3585a 
| 2023-06-30T04:10:00 | 2023-06-30T04:20:00 | 1c2f5dc8c4f9494fbaaa4217c8e3585a 
+---------------------+---------------------+----------------------------------
+--------------------------------------------------------------------------------------------------------------
| Resources                                                                                                    
+--------------------------------------------------------------------------------------------------------------
| [{'rating': '0.0', 'service': 'instance', 'desc': {'flavor_name': 'm1.medium', 'flavor_id': '2', 'vcpus': '',
| [{'rating': '0.0', 'service': 'volume.size', 'desc': {'volume_type': 'add8758b-74e4-4f07-b737-e72e9017f517', 
| [{'rating': '0.5', 'service': 'instance', 'desc': {'flavor_name': 'm1.medium', 'flavor_id': '2', 'vcpus': '',
| [{'rating': '0.5', 'service': 'instance', 'desc': {'flavor_name': 'm1.medium', 'flavor_id': '2', 'vcpus': '',
| [{'rating': '0.5', 'service': 'instance', 'desc': {'flavor_name': 'm1.medium', 'flavor_id': '2', 'vcpus': '',
| [{'rating': '15.0', 'service': 'volume.size', 'desc': {'volume_type': 'add8758b-74e4-4f07-b737-e72e9017f517',
+--------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
                                                                                                           
-----------------------------------------------------------------------------------------------------------
 'id': 'c3a4a792-a7ac-41bd-8c93-7fd162016f22', 'project_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a', 'user_id':
'id': 'f7b74e86-2484-42f1-b657-ecf7fa8b61f8', 'project_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a', 'user_id': 
 'id': 'c3a4a792-a7ac-41bd-8c93-7fd162016f22', 'project_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a', 'user_id':
 'id': 'c3a4a792-a7ac-41bd-8c93-7fd162016f22', 'project_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a', 'user_id':
 'id': 'c3a4a792-a7ac-41bd-8c93-7fd162016f22', 'project_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a', 'user_id':
 'id': 'c6ab8750-7c89-4c4b-af98-77edf24b8b36', 'project_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a', 'user_id':
-----------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------+
                                                                                                                                  |
----------------------------------------------------------------------------------------------------------------------------------+
 'de51d5f0ee2c485885877d21f5b424e0', 'tenant_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a'}, 'volume': '1', 'rate_value': '0.0000'}]    |
'de51d5f0ee2c485885877d21f5b424e0', 'tenant_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a'}, 'volume': '1E+1', 'rate_value': '0.0000'}]  |
 'de51d5f0ee2c485885877d21f5b424e0', 'tenant_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a'}, 'volume': '1', 'rate_value': '0.5000'}]    |
 'de51d5f0ee2c485885877d21f5b424e0', 'tenant_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a'}, 'volume': '1', 'rate_value': '0.5000'}]    |
 'de51d5f0ee2c485885877d21f5b424e0', 'tenant_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a'}, 'volume': '1', 'rate_value': '0.5000'}]    |
 'de51d5f0ee2c485885877d21f5b424e0', 'tenant_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a'}, 'volume': '1E+1', 'rate_value': '1.5000'}] |
----------------------------------------------------------------------------------------------------------------------------------+

debian@dlp ~(keystone)$
openstack volume create --size 30 disk02

debian@dlp ~(keystone)$
openstack volume list

+--------------------------------------+--------+-----------+------+-------------+
| ID                                   | Name   | Status    | Size | Attached to |
+--------------------------------------+--------+-----------+------+-------------+
| 55f9d7be-067a-45f8-91c2-c59bf79ba4ab | disk02 | available |   30 |             |
| c6ab8750-7c89-4c4b-af98-77edf24b8b36 | disk01 | available |   10 |             |
+--------------------------------------+--------+-----------+------+-------------+

# 一定時間経過後 レートが加算される
# 1.5 x 30 x 0.9 = 40.5

debian@dlp ~(keystone)$
openstack rating summary get

+----------------------------------+---------------+------+---------------------+---------------------+
| Tenant ID                        | Resource Type | Rate | Begin Time          | End Time            |
+----------------------------------+---------------+------+---------------------+---------------------+
| 1c2f5dc8c4f9494fbaaa4217c8e3585a | ALL           | 57.0 | 2023-06-01T00:00:00 | 2023-07-01T00:00:00 |
+----------------------------------+---------------+------+---------------------+---------------------+

debian@dlp ~(keystone)$
openstack rating dataframes get

+---------------------+---------------------+----------------------------------
| Begin               | End                 | Project ID                       
+---------------------+---------------------+----------------------------------
| 2023-06-30T02:20:00 | 2023-06-30T02:30:00 | 1c2f5dc8c4f9494fbaaa4217c8e3585a 
| 2023-06-30T02:50:00 | 2023-06-30T03:00:00 | 1c2f5dc8c4f9494fbaaa4217c8e3585a 
| 2023-06-30T03:40:00 | 2023-06-30T03:50:00 | 1c2f5dc8c4f9494fbaaa4217c8e3585a 
| 2023-06-30T03:50:00 | 2023-06-30T04:00:00 | 1c2f5dc8c4f9494fbaaa4217c8e3585a 
| 2023-06-30T04:00:00 | 2023-06-30T04:10:00 | 1c2f5dc8c4f9494fbaaa4217c8e3585a 
| 2023-06-30T04:10:00 | 2023-06-30T04:20:00 | 1c2f5dc8c4f9494fbaaa4217c8e3585a 
| 2023-06-30T04:30:00 | 2023-06-30T04:40:00 | 1c2f5dc8c4f9494fbaaa4217c8e3585a 
+---------------------+---------------------+----------------------------------
+--------------------------------------------------------------------------------------------------------------
| Resources                                                                                                    
+--------------------------------------------------------------------------------------------------------------
| [{'rating': '0.0', 'service': 'instance', 'desc': {'flavor_name': 'm1.medium', 'flavor_id': '2', 'vcpus': '',
| [{'rating': '0.0', 'service': 'volume.size', 'desc': {'volume_type': 'add8758b-74e4-4f07-b737-e72e9017f517', 
| [{'rating': '0.5', 'service': 'instance', 'desc': {'flavor_name': 'm1.medium', 'flavor_id': '2', 'vcpus': '',
| [{'rating': '0.5', 'service': 'instance', 'desc': {'flavor_name': 'm1.medium', 'flavor_id': '2', 'vcpus': '',
| [{'rating': '0.5', 'service': 'instance', 'desc': {'flavor_name': 'm1.medium', 'flavor_id': '2', 'vcpus': '',
| [{'rating': '15.0', 'service': 'volume.size', 'desc': {'volume_type': 'add8758b-74e4-4f07-b737-e72e9017f517',
| [{'rating': '40.5', 'service': 'volume.size', 'desc': {'volume_type': 'add8758b-74e4-4f07-b737-e72e9017f517',
+--------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
                                                                                                           
-----------------------------------------------------------------------------------------------------------
 'id': 'c3a4a792-a7ac-41bd-8c93-7fd162016f22', 'project_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a', 'user_id':
'id': 'f7b74e86-2484-42f1-b657-ecf7fa8b61f8', 'project_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a', 'user_id': 
 'id': 'c3a4a792-a7ac-41bd-8c93-7fd162016f22', 'project_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a', 'user_id':
 'id': 'c3a4a792-a7ac-41bd-8c93-7fd162016f22', 'project_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a', 'user_id':
 'id': 'c3a4a792-a7ac-41bd-8c93-7fd162016f22', 'project_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a', 'user_id':
 'id': 'c6ab8750-7c89-4c4b-af98-77edf24b8b36', 'project_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a', 'user_id':
 'id': '55f9d7be-067a-45f8-91c2-c59bf79ba4ab', 'project_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a', 'user_id':
-----------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------+
                                                                                                                                  |
----------------------------------------------------------------------------------------------------------------------------------+
 'de51d5f0ee2c485885877d21f5b424e0', 'tenant_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a'}, 'volume': '1', 'rate_value': '0.0000'}]    |
'de51d5f0ee2c485885877d21f5b424e0', 'tenant_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a'}, 'volume': '1E+1', 'rate_value': '0.0000'}]  |
 'de51d5f0ee2c485885877d21f5b424e0', 'tenant_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a'}, 'volume': '1', 'rate_value': '0.5000'}]    |
 'de51d5f0ee2c485885877d21f5b424e0', 'tenant_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a'}, 'volume': '1', 'rate_value': '0.5000'}]    |
 'de51d5f0ee2c485885877d21f5b424e0', 'tenant_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a'}, 'volume': '1', 'rate_value': '0.5000'}]    |
 'de51d5f0ee2c485885877d21f5b424e0', 'tenant_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a'}, 'volume': '1E+1', 'rate_value': '1.5000'}] |
 'de51d5f0ee2c485885877d21f5b424e0', 'tenant_id': '1c2f5dc8c4f9494fbaaa4217c8e3585a'}, 'volume': '3E+1', 'rate_value': '1.3500'}] |
----------------------------------------------------------------------------------------------------------------------------------+
関連コンテンツ