Skip to content

Commit fbc535f

Browse files
committed
new columns for demon usage record
1 parent 3a29e7c commit fbc535f

File tree

4 files changed

+104
-5
lines changed

4 files changed

+104
-5
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
"""usage table update
2+
3+
Revision ID: 66d97ed3bdc5
4+
Revises: 9ecbd29ee907
5+
Create Date: 2019-08-20 16:00:09.306326
6+
7+
"""
8+
from alembic import op
9+
import sqlalchemy as sa
10+
11+
# revision identifiers, used by Alembic.
12+
revision = '66d97ed3bdc5'
13+
down_revision = '9ecbd29ee907'
14+
branch_labels = None
15+
depends_on = None
16+
17+
18+
def upgrade():
19+
# ### commands auto generated by Alembic - please adjust! ###
20+
op.add_column('usage_table', sa.Column('channel_id', sa.VARCHAR(length=225), nullable=True))
21+
op.add_column('usage_table', sa.Column('client_type', sa.VARCHAR(length=225), nullable=True))
22+
op.add_column('usage_table', sa.Column('error_message', sa.VARCHAR(length=225), nullable=True))
23+
op.add_column('usage_table', sa.Column('ethereum_json_rpc_endpoint', sa.VARCHAR(length=225), nullable=True))
24+
op.add_column('usage_table', sa.Column('group_id', sa.VARCHAR(length=225), nullable=True))
25+
op.add_column('usage_table', sa.Column('operation', sa.VARCHAR(length=225), nullable=True))
26+
op.add_column('usage_table', sa.Column('org_id', sa.VARCHAR(length=225), nullable=True))
27+
op.add_column('usage_table', sa.Column('registry_address_key', sa.VARCHAR(length=225), nullable=True))
28+
op.add_column('usage_table', sa.Column('request_id', sa.VARCHAR(length=225), nullable=True))
29+
op.add_column('usage_table', sa.Column('resource', sa.VARCHAR(length=225), nullable=True))
30+
op.add_column('usage_table', sa.Column('response_code', sa.VARCHAR(length=225), nullable=True))
31+
op.add_column('usage_table', sa.Column('response_time', sa.FLOAT(), nullable=True))
32+
op.add_column('usage_table', sa.Column('user_address', sa.VARCHAR(length=225), nullable=True))
33+
op.add_column('usage_table', sa.Column('user_details', sa.VARCHAR(length=225), nullable=True))
34+
op.add_column('usage_table', sa.Column('username', sa.VARCHAR(length=225), nullable=True))
35+
op.add_column('usage_table', sa.Column('version', sa.VARCHAR(length=225), nullable=True))
36+
# ### end Alembic commands ###
37+
38+
39+
def downgrade():
40+
# ### commands auto generated by Alembic - please adjust! ###
41+
op.drop_column('usage_table', 'version')
42+
op.drop_column('usage_table', 'username')
43+
op.drop_column('usage_table', 'user_details')
44+
op.drop_column('usage_table', 'user_address')
45+
op.drop_column('usage_table', 'response_time')
46+
op.drop_column('usage_table', 'response_code')
47+
op.drop_column('usage_table', 'resource')
48+
op.drop_column('usage_table', 'request_id')
49+
op.drop_column('usage_table', 'registry_address_key')
50+
op.drop_column('usage_table', 'org_id')
51+
op.drop_column('usage_table', 'operation')
52+
op.drop_column('usage_table', 'group_id')
53+
op.drop_column('usage_table', 'ethereum_json_rpc_endpoint')
54+
op.drop_column('usage_table', 'error_message')
55+
op.drop_column('usage_table', 'client_type')
56+
op.drop_column('usage_table', 'channel_id')
57+
# ### end Alembic commands ###

metering/models.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from sqlalchemy import Column, Integer, VARCHAR, ForeignKey, TIMESTAMP, func
1+
from sqlalchemy import Column, Integer, VARCHAR, ForeignKey, TIMESTAMP, func, FLOAT, String
22

33
from sqlalchemy.ext.declarative import declarative_base
44
from sqlalchemy.orm import relationship
@@ -41,3 +41,21 @@ class UsageModel(Base):
4141
end_time = Column('end_time', TIMESTAMP(timezone=True))
4242
created_at = Column('created_at', TIMESTAMP(
4343
timezone=True), nullable=False, server_default=func.current_timestamp())
44+
45+
group_id = Column('group_id', VARCHAR(225))
46+
registry_address_key = Column('registry_address_key', VARCHAR(225))
47+
ethereum_json_rpc_endpoint = Column('ethereum_json_rpc_endpoint', VARCHAR(225))
48+
response_time = Column('response_time', FLOAT)
49+
response_code = Column('response_code', VARCHAR(225))
50+
error_message = Column('error_message', VARCHAR(225))
51+
version = Column('version', VARCHAR(225))
52+
client_type = Column('client_type', VARCHAR(225))
53+
user_details = Column('user_details', VARCHAR(225))
54+
channel_id = Column('channel_id', VARCHAR(225))
55+
operation = Column('operation', VARCHAR(225))
56+
user_address = Column('user_address', VARCHAR(225))
57+
user_name = Column('username', VARCHAR(225))
58+
org_id = Column('org_id', VARCHAR(225))
59+
service_id = Column('org_id', VARCHAR(225))
60+
resource = Column('resource', VARCHAR(225))
61+
request_id = Column('request_id', VARCHAR(225))

metering/storage.py

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,29 @@ def add_usage_data(self, usage_details):
4949
user_org_group_repo_data = self.get_user_org_group(usage_details)
5050
user_org_group_id = user_org_group_repo_data.id
5151
usage_record = UsageModel(
52+
client_type=usage_details['client_type'],
53+
ethereum_json_rpc_endpoint=usage_details['ethereum_json_rpc_endpoint'],
54+
registry_address_key=usage_details['registry_address_key'],
5255
user_org_group_id=user_org_group_id,
5356
status=usage_details['status'],
57+
start_time=usage_details['start_time'],
58+
end_time=usage_details['end_time'],
59+
response_time=usage_details['response_time'],
60+
response_code=usage_details['response_code'],
61+
error_message=usage_details['error_message'],
62+
version=usage_details['version'],
63+
channel_id=usage_details['channel_id'],
64+
operation=usage_details['operation'],
65+
group_id=usage_details["group_id"],
66+
org_id=usage_details["organization_id"],
5467
usage_type=usage_details['usage_type'],
5568
usage_value=usage_details['usage_value'],
56-
start_time=usage_details['start_time'],
57-
end_time=usage_details['end_time']
69+
user_details=usage_details['user_details'],
70+
user_name=usage_details["username"],
71+
service_id=usage_details["service_id"],
72+
resource=usage_details["service_method"],
73+
request_id=usage_details["request_id"],
74+
5875
)
5976
self.usage_repo.create_item(usage_record)
6077

metering/tests/test_total_calls.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,12 @@ def test_success_usage_record(self):
5757
"end_time": "2019-08-08 14:07:15.883501805",
5858
"usage_value": 1,
5959
"time_zone": "IST",
60-
60+
"client_type": None,
61+
"channel_id": None,
62+
"user_details": None,
63+
"user_agent": None
6164
})
65+
6266
self.storage_service.add_usage_data({
6367
"type": "response",
6468
"registry_address_key": "0x5156fde2ca71da4398f8c76763c41bc9633875e4",
@@ -82,7 +86,10 @@ def test_success_usage_record(self):
8286
"end_time": "2019-08-08 14:07:15.883501805",
8387
"usage_value": 1,
8488
"time_zone": "IST",
85-
89+
"client_type": None,
90+
"channel_id": None,
91+
"user_details": None,
92+
"user_agent": None
8693
})
8794
self.assertEqual((1, 100), self.storage_service.get_usage_details(
8895
user_name='user@snet', org_id='snet', service_id='example-service'))

0 commit comments

Comments
 (0)