-\r
-class OcloudWather(BaseWatcher):\r
- def __init__(self, ocloud_client: BaseClient,\r
- repo: OcloudRepository) -> None:\r
- super().__init__(ocloud_client)\r
- self._repo = repo\r
-\r
- def _targetname(self):\r
- return "ocloud"\r
-\r
- def _probe(self):\r
- ocloudmodel = self._client.get(None)\r
- if ocloudmodel:\r
- self._compare_and_update(ocloudmodel)\r
-\r
- def _compare_and_update(self, ocloudmodel: StxGenericModel) -> bool:\r
- # localmodel = self._repo.get(ocloudmodel.id)\r
- oclouds = self._repo.list()\r
- if len(oclouds) > 1:\r
- raise InvalidOcloudState("More than 1 ocloud is found")\r
- if len(oclouds) == 0:\r
- self._repo.add(ocloudmodel)\r
- else:\r
- localmodel = oclouds.pop()\r
- if localmodel.is_outdated(ocloudmodel):\r
- localmodel.update_by(ocloudmodel)\r
- self._repo.update(localmodel)\r
-\r
-\r
-class DmsWatcher(BaseWatcher):\r
- def __init__(self, client: BaseClient) -> None:\r
- super().__init__(client)\r
-\r
- def _targetname(self):\r
- return "dms"\r
-\r
-\r
-class ResourcePoolWatcher(BaseWatcher):\r
- def __init__(self) -> None:\r
+ def _compare_and_update(self, newmodel: StxGenericModel) -> bool:\r
+ with self._uow:\r
+ # localmodel = self._uow.stxobjects.get(ocloudmodel.id)\r
+ localmodel = self._uow.stxobjects.get(str(newmodel.id))\r
+ if not localmodel:\r
+ logger.info("add entry:" + newmodel.name)\r
+ self._uow.stxobjects.add(newmodel)\r
+ elif localmodel.is_outdated(newmodel):\r
+ logger.info("update entry:" + newmodel.name)\r
+ localmodel.update_by(newmodel)\r
+ self._uow.stxobjects.update(localmodel)\r
+ self._uow.commit()\r
+\r
+\r
+# node to organize watchers in tree hierachy\r
+class WatcherTree(object):\r
+ def __init__(self, watcher: BaseWatcher) -> None:\r