# See the License for the specific language governing permissions and
# limitations under the License.
-import abc
-from typing import List, Set
+from typing import List
# from o2ims.adapter import orm
from o2ims.domain import ocloud
+from o2ims.domain.ocloud_repo import OcloudRepository, ResourceTypeRepository,\
+ ResourcePoolRepository, ResourceRepository, DeploymentManagerRepository,\
+ SubscriptionRepository
-class OcloudRepository(abc.ABC):
- def __init__(self):
- self.seen = set() # type: Set[ocloud.Ocloud]
+class OcloudSqlAlchemyRepository(OcloudRepository):
+ def __init__(self, session):
+ super().__init__()
+ self.session = session
- def add(self, ocloud: ocloud.Ocloud):
- self._add(ocloud)
- self.seen.add(ocloud)
+ def _add(self, ocloud: ocloud.Ocloud):
+ self.session.add(ocloud)
+ # self.session.add_all(ocloud.deploymentManagers)
- def get(self, ocloudid) -> ocloud.Ocloud:
- ocloud = self._get(ocloudid)
- if ocloud:
- self.seen.add(ocloud)
- return ocloud
+ def _get(self, ocloud_id) -> ocloud.Ocloud:
+ return self.session.query(ocloud.Ocloud).filter_by(
+ oCloudId=ocloud_id).first()
- def list(self) -> List[ocloud.Ocloud]:
- return self._list()
+ def _list(self) -> List[ocloud.Ocloud]:
+ return self.session.query(ocloud.Ocloud).order_by(
+ ocloud.Ocloud.name).all()
- def update(self, ocloud: ocloud.Ocloud):
- self._update(ocloud)
+ def _update(self, ocloud: ocloud.Ocloud):
+ self.session.add(ocloud)
- # def update_fields(self, ocloudid: str, updatefields: dict):
- # self._update(ocloudid, updatefields)
- @abc.abstractmethod
- def _add(self, ocloud: ocloud.Ocloud):
- raise NotImplementedError
+class ResouceTypeSqlAlchemyRepository(ResourceTypeRepository):
+ def __init__(self, session):
+ super().__init__()
+ self.session = session
- @abc.abstractmethod
- def _get(self, ocloudid) -> ocloud.Ocloud:
- raise NotImplementedError
+ def _add(self, resourceType: ocloud.ResourceType):
+ self.session.add(resourceType)
- @abc.abstractmethod
- def _update(self, ocloud: ocloud.Ocloud):
- raise NotImplementedError
+ def _get(self, resource_type_id) -> ocloud.ResourceType:
+ return self.session.query(ocloud.ResourceType).filter_by(
+ resourceTypeId=resource_type_id).first()
+
+ def _list(self) -> List[ocloud.ResourceType]:
+ return self.session.query()
+ def _update(self, resourceType: ocloud.ResourceType):
+ self.session.add(resourceType)
-class OcloudSqlAlchemyRepository(OcloudRepository):
+
+class ResourcePoolSqlAlchemyRepository(ResourcePoolRepository):
def __init__(self, session):
super().__init__()
self.session = session
- def _add(self, ocloud: ocloud.Ocloud):
- self.session.add(ocloud)
- # self.session.add_all(ocloud.deploymentManagers)
+ def _add(self, resourcePool: ocloud.ResourcePool):
+ self.session.add(resourcePool)
- def _get(self, ocloudid) -> ocloud.Ocloud:
- return self.session.query(ocloud.Ocloud).filter_by(
- oCloudId=ocloudid).first()
+ def _get(self, resource_pool_id) -> ocloud.ResourcePool:
+ return self.session.query(ocloud.ResourcePool).filter_by(
+ resourcePoolId=resource_pool_id).first()
- def _list(self) -> List[ocloud.Ocloud]:
+ def _list(self) -> List[ocloud.ResourcePool]:
return self.session.query()
- def _update(self, ocloud: ocloud.Ocloud):
- self.session.add(ocloud)
+ def _update(self, resourcePool: ocloud.ResourcePool):
+ self.session.add(resourcePool)
+
+
+class ResourceSqlAlchemyRepository(ResourceRepository):
+ def __init__(self, session):
+ super().__init__()
+ self.session = session
+
+ def _add(self, resource: ocloud.Resource):
+ self.session.add(resource)
+
+ def _get(self, resource_id) -> ocloud.Resource:
+ return self.session.query(ocloud.Resource).filter_by(
+ resourceId=resource_id).first()
+
+ def _list(self) -> List[ocloud.Resource]:
+ return self.session.query()
+
+ def _update(self, resource: ocloud.Resource):
+ self.session.add(resource)
+
+
+class DeploymentManagerSqlAlchemyRepository(DeploymentManagerRepository):
+ def __init__(self, session):
+ super().__init__()
+ self.session = session
+
+ def _add(self, deployment_manager: ocloud.DeploymentManager):
+ self.session.add(deployment_manager)
+
+ def _get(self, deployment_manager_id) -> ocloud.DeploymentManager:
+ return self.session.query(ocloud.DeploymentManager).filter_by(
+ deploymentManagerId=deployment_manager_id).first()
+
+ def _list(self) -> List[ocloud.DeploymentManager]:
+ return self.session.query()
+
+ def _update(self, deployment_manager: ocloud.DeploymentManager):
+ self.session.add(deployment_manager)
+
+
+class SubscriptionSqlAlchemyRepository(SubscriptionRepository):
+ def __init__(self, session):
+ super().__init__()
+ self.session = session
+
+ def _add(self, subscription: ocloud.Subscription):
+ self.session.add(subscription)
+
+ def _get(self, subscription_id) -> ocloud.Subscription:
+ return self.session.query(ocloud.Subscription).filter_by(
+ subscriptionId=subscription_id).first()
+
+ def _list(self) -> List[ocloud.Subscription]:
+ return self.session.query()
+
+ def _update(self, subscription: ocloud.Subscription):
+ self.session.add(subscription)