# See the License for the specific language governing permissions and\r
# limitations under the License.\r
\r
+# from logging import exception\r
+# from cgtsclient import exc\r
from o2ims.service.client.base_client import BaseClient\r
-from o2ims.domain.stx_object import StxGenericModel\r
-from o2ims.service.unit_of_work import AbstractUnitOfWork\r
-\r
+# from o2ims.domain.stx_object import StxGenericModel\r
+# from o2ims.service.unit_of_work import AbstractUnitOfWork\r
+from o2ims.domain import commands\r
+from o2ims.service.messagebus import MessageBus\r
from o2common.helper import o2logging\r
logger = o2logging.get_logger(__name__)\r
\r
\r
class BaseWatcher(object):\r
def __init__(self, client: BaseClient,\r
- uow: AbstractUnitOfWork) -> None:\r
+ bus: MessageBus) -> None:\r
super().__init__()\r
self._client = client\r
- self._uow = uow\r
+ self._bus = bus\r
+ # self._uow = bus.uow\r
\r
def targetname(self) -> str:\r
return self._targetname()\r
\r
- def probe(self, parent: object = None):\r
- return self._probe(parent)\r
+ def probe(self, parent: commands.UpdateStxObject = None):\r
+ try:\r
+ cmds = self._probe(parent.data if parent else None)\r
+ for cmd in cmds:\r
+ self._bus.handle(cmd)\r
+\r
+ # return self._probe(parent)\r
+ return cmds\r
+ except Exception as ex:\r
+ logger.warning("Failed to probe resource due to: " + str(ex))\r
+ return []\r
\r
- def _probe(self, parent: object = None):\r
+ def _probe(self, parent: object = None) -> commands.UpdateStxObject:\r
raise NotImplementedError\r
\r
def _targetname(self):\r
raise NotImplementedError\r
\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
+ # 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
+ self.watcher.targetname())\r
childdepth = depth - 1 if depth > 0 else 0\r
resources = self.watcher.probe(parentresource)\r
- logger.debug("probe returns " + str(len(resources)) + "resources")\r
+ logger.debug("probe returns " + str(len(resources)) + " resources")\r
\r
if depth == 1:\r
# stop recursive\r