summaryrefslogtreecommitdiffstats
path: root/components/pm-subscription-handler/pmsh_service/mod/api/db_models.py
diff options
context:
space:
mode:
Diffstat (limited to 'components/pm-subscription-handler/pmsh_service/mod/api/db_models.py')
-rwxr-xr-xcomponents/pm-subscription-handler/pmsh_service/mod/api/db_models.py136
1 files changed, 128 insertions, 8 deletions
diff --git a/components/pm-subscription-handler/pmsh_service/mod/api/db_models.py b/components/pm-subscription-handler/pmsh_service/mod/api/db_models.py
index a9dd6efe..5c87fa55 100755
--- a/components/pm-subscription-handler/pmsh_service/mod/api/db_models.py
+++ b/components/pm-subscription-handler/pmsh_service/mod/api/db_models.py
@@ -1,5 +1,5 @@
# ============LICENSE_START===================================================
-# Copyright (C) 2019-2020 Nordix Foundation.
+# Copyright (C) 2020-2021 Nordix Foundation.
# ============================================================================
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -16,7 +16,7 @@
# SPDX-License-Identifier: Apache-2.0
# ============LICENSE_END=====================================================
-from sqlalchemy import Column, Integer, String, ForeignKey
+from sqlalchemy import Column, Integer, String, ForeignKey, JSON
from sqlalchemy.orm import relationship
from mod import db
@@ -25,7 +25,7 @@ from mod import db
class SubscriptionModel(db.Model):
__tablename__ = 'subscriptions'
id = Column(Integer, primary_key=True, autoincrement=True)
- subscription_name = Column(String(100), unique=True)
+ subscription_name = Column(String(100), unique=True, nullable=False)
status = Column(String(20))
nfs = relationship(
@@ -33,6 +33,16 @@ class SubscriptionModel(db.Model):
cascade='all, delete-orphan',
backref='subscription')
+ network_filter = relationship(
+ 'NetworkFunctionFilterModel',
+ cascade='all, delete-orphan',
+ backref='subscription')
+
+ measurement_groups = relationship(
+ 'MeasurementGroupModel',
+ cascade='all, delete-orphan',
+ backref='subscription')
+
def __init__(self, subscription_name, status):
self.subscription_name = subscription_name
self.status = status
@@ -57,7 +67,8 @@ class NetworkFunctionModel(db.Model):
__tablename__ = 'network_functions'
id = Column(Integer, primary_key=True, autoincrement=True)
nf_name = Column(String(100), unique=True)
- ip_address = Column(String(50))
+ ipv4_address = Column(String(50))
+ ipv6_address = Column(String(50))
model_invariant_id = Column(String(100))
model_version_id = Column(String(100))
model_name = Column(String(100))
@@ -70,11 +81,12 @@ class NetworkFunctionModel(db.Model):
cascade='all, delete-orphan',
backref='nf')
- def __init__(self, nf_name, ip_address, model_invariant_id,
+ def __init__(self, nf_name, ipv4_address, ipv6_address, model_invariant_id,
model_version_id, model_name, sdnc_model_name,
sdnc_model_version, retry_count=0):
self.nf_name = nf_name
- self.ip_address = ip_address
+ self.ipv4_address = ipv4_address
+ self.ipv6_address = ipv6_address
self.model_invariant_id = model_invariant_id
self.model_version_id = model_version_id
self.model_name = model_name
@@ -90,7 +102,8 @@ class NetworkFunctionModel(db.Model):
return NetworkFunction(sdnc_model_name=self.sdnc_model_name,
sdnc_model_version=self.sdnc_model_version,
**{'nf_name': self.nf_name,
- 'ip_address': self.ip_address,
+ 'ipv4_address': self.ipv4_address,
+ 'ipv6_address': self.ipv6_address,
'model_invariant_id': self.model_invariant_id,
'model_version_id': self.model_version_id})
@@ -129,10 +142,117 @@ class NfSubRelationalModel(db.Model):
NetworkFunctionModel.nf_name == self.nf_name).one_or_none()
db.session.remove()
return {'nf_name': self.nf_name,
- 'ip_address': nf.ip_address,
+ 'ipv4_address': nf.ipv4_address,
+ 'ipv6_address': nf.ipv6_address,
'nf_sub_status': self.nf_sub_status,
'model_invariant_id': nf.model_invariant_id,
'model_version_id': nf.model_version_id,
'model_name': nf.model_name,
'sdnc_model_name': nf.sdnc_model_name,
'sdnc_model_version': nf.sdnc_model_version}
+
+
+class NetworkFunctionFilterModel(db.Model):
+ __tablename__ = 'nf_filter'
+ id = Column(Integer, primary_key=True, autoincrement=True)
+ subscription_name = Column(
+ String,
+ ForeignKey(SubscriptionModel.subscription_name, ondelete='cascade', onupdate='cascade'),
+ unique=True
+ )
+ nf_names = Column(String(100))
+ model_invariant_ids = Column(String(100))
+ model_version_ids = Column(String(100))
+ model_names = Column(String(100))
+
+ def __init__(self, subscription_name, nf_names, model_invariant_ids, model_version_ids,
+ model_names):
+ self.subscription_name = subscription_name
+ self.nf_names = nf_names
+ self.model_invariant_ids = model_invariant_ids
+ self.model_version_ids = model_version_ids
+ self.model_names = model_names
+
+ def __repr__(self):
+ return f'subscription_name: {self.subscription_name}, ' \
+ f'nf_names: {self.nf_names}, model_invariant_ids: {self.model_invariant_ids}' \
+ f'model_version_ids: {self.model_version_ids}, model_names: {self.model_names}'
+
+ def serialize(self):
+ return {'subscription_name': self.subscription_name, 'nf_names': self.nf_names,
+ 'model_invariant_ids': self.model_invariant_ids,
+ 'model_version_ids': self.model_version_ids, 'model_names': self.model_names}
+
+
+class MeasurementGroupModel(db.Model):
+ __tablename__ = 'measurement_group'
+ id = Column(Integer, primary_key=True, autoincrement=True)
+ subscription_name = Column(
+ String,
+ ForeignKey(SubscriptionModel.subscription_name, ondelete='cascade', onupdate='cascade')
+ )
+ measurement_group_name = Column(String(100), unique=True)
+ administrative_state = Column(String(20))
+ file_based_gp = Column(Integer)
+ file_location = Column(String(100))
+ measurement_type = Column(JSON)
+ managed_object_dns_basic = Column(JSON)
+
+ def __init__(self, subscription_name, measurement_group_name,
+ administrative_state, file_based_gp, file_location,
+ measurement_type, managed_object_dns_basic):
+ self.subscription_name = subscription_name
+ self.measurement_group_name = measurement_group_name
+ self.administrative_state = administrative_state
+ self.file_based_gp = file_based_gp
+ self.file_location = file_location
+ self.measurement_type = measurement_type
+ self.managed_object_dns_basic = managed_object_dns_basic
+
+ def __repr__(self):
+ return f'subscription_name: {self.subscription_name}, ' \
+ f'measurement_group_name: {self.measurement_group_name},' \
+ f'administrative_state: {self.administrative_state},' \
+ f'file_based_gp: {self.file_based_gp},' \
+ f'file_location: {self.file_location},' \
+ f'measurement_type: {self.measurement_type}' \
+ f'managed_object_dns_basic: {self.managed_object_dns_basic}'
+
+ def serialize(self):
+ return {'subscription_name': self.subscription_name,
+ 'measurement_group_name': self.measurement_group_name,
+ 'administrative_state': self.administrative_state,
+ 'file_based_gp': self.file_based_gp,
+ 'file_location': self.file_location,
+ 'measurement_type': self.measurement_type,
+ 'managed_object_dns_basic': self.managed_object_dns_basic}
+
+
+class NfMeasureGroupRelationalModel(db.Model):
+ __tablename__ = 'nf_to_measure_grp_rel'
+ __mapper_args__ = {
+ 'confirm_deleted_rows': False
+ }
+ id = Column(Integer, primary_key=True, autoincrement=True)
+ measurement_grp_name = Column(
+ String,
+ ForeignKey(MeasurementGroupModel.measurement_group_name, ondelete='cascade',
+ onupdate='cascade')
+ )
+ nf_name = Column(
+ String,
+ ForeignKey(NetworkFunctionModel.nf_name, ondelete='cascade', onupdate='cascade')
+ )
+ nf_measure_grp_status = Column(String(20))
+ retry_count = Column(Integer)
+
+ def __init__(self, measurement_grp_name, nf_name, nf_measure_grp_status=None,
+ retry_count=0):
+ self.measurement_grp_name = measurement_grp_name
+ self.nf_name = nf_name
+ self.nf_measure_grp_status = nf_measure_grp_status
+ self.retry_count = retry_count
+
+ def __repr__(self):
+ return f'measurement_grp_name: {self.measurement_grp_name}, ' \
+ f'nf_name: {self.nf_name}, nf_measure_grp_status: {self.nf_measure_grp_status}'