# See the License for the specific language governing permissions and\r
# limitations under the License.\r
\r
-from o2ims.domain.resource_type import ResourceTypeEnum\r
-from o2ims.service.client.base_client import BaseClient\r
+# from o2ims.domain.resource_type import ResourceTypeEnum\r
+from o2common.service.client.base_client import BaseClient\r
from o2ims.domain.stx_object import StxGenericModel\r
-from o2ims.service.unit_of_work import AbstractUnitOfWork\r
-from o2ims.service.watcher.base import BaseWatcher\r
+# from o2common.service.unit_of_work import AbstractUnitOfWork\r
+from o2common.service.watcher.base import BaseWatcher\r
+from o2ims.domain import commands\r
+from o2common.service.messagebus import MessageBus\r
\r
-import logging\r
-logger = logging.getLogger(__name__)\r
-\r
-\r
-class InvalidOcloudState(Exception):\r
- pass\r
+from o2common.helper import o2logging\r
+logger = o2logging.get_logger(__name__)\r
\r
\r
class OcloudWatcher(BaseWatcher):\r
def __init__(self, ocloud_client: BaseClient,\r
- uow: AbstractUnitOfWork) -> None:\r
- super().__init__(ocloud_client, uow)\r
+ bus: MessageBus) -> None:\r
+ super().__init__(ocloud_client, bus)\r
\r
def _targetname(self):\r
return "ocloud"\r
\r
def _probe(self, parent: object = None):\r
- ocloudmodel = self._client.get(None)\r
- if ocloudmodel:\r
- self._compare_and_update(ocloudmodel)\r
- return [ocloudmodel]\r
+ newmodel = self._client.get(None)\r
+ if newmodel:\r
+ logger.debug("found ocloud: " + newmodel.name)\r
+ else:\r
+ logger.warning("Failed to find out any ocloud")\r
+ # self._compare_and_update(ocloudmodel)\r
+ return [commands.UpdateOCloud(newmodel)] if newmodel else []\r
\r
- def _compare_and_update(self, ocloudmodel: StxGenericModel) -> bool:\r
- with self._uow:\r
- # localmodel = self._uow.stxobjects.get(str(ocloudmodel.id))\r
- oclouds = self._uow.stxobjects.list(ResourceTypeEnum.OCLOUD)\r
- if len(oclouds) > 1:\r
- raise InvalidOcloudState("More than 1 ocloud is found")\r
- if len(oclouds) == 0:\r
- logger.info("add ocloud:" + ocloudmodel.name\r
- + " update_at: " + str(ocloudmodel.updatetime)\r
- + " id: " + str(ocloudmodel.id)\r
- + " hash: " + str(ocloudmodel.hash))\r
- self._uow.stxobjects.add(ocloudmodel)\r
- else:\r
- localmodel = oclouds.pop()\r
- if localmodel.is_outdated(ocloudmodel):\r
- logger.info("update ocloud:" + ocloudmodel.name\r
- + " update_at: " + str(ocloudmodel.updatetime)\r
- + " id: " + str(ocloudmodel.id)\r
- + " hash: " + str(ocloudmodel.hash))\r
- localmodel.update_by(ocloudmodel)\r
- self._uow.stxobjects.update(localmodel)\r
- self._uow.commit()\r
+# def _compare_and_update(self, ocloudmodel: StxGenericModel) -> bool:\r
+# with self._uow:\r
+# # localmodel = self._uow.stxobjects.get(str(ocloudmodel.id))\r
+# oclouds = self._uow.stxobjects.list(ResourceTypeEnum.OCLOUD)\r
+# if len(oclouds) > 1:\r
+# raise InvalidOcloudState("More than 1 ocloud is found")\r
+# if len(oclouds) == 0:\r
+# logger.info("add ocloud:" + ocloudmodel.name\r
+# + " update_at: " + str(ocloudmodel.updatetime)\r
+# + " id: " + str(ocloudmodel.id)\r
+# + " hash: " + str(ocloudmodel.hash))\r
+# self._uow.stxobjects.add(ocloudmodel)\r
+# else:\r
+# localmodel = oclouds.pop()\r
+# if localmodel.is_outdated(ocloudmodel):\r
+# logger.info("update ocloud:" + ocloudmodel.name\r
+# + " update_at: " + str(ocloudmodel.updatetime)\r
+# + " id: " + str(ocloudmodel.id)\r
+# + " hash: " + str(ocloudmodel.hash))\r
+# localmodel.update_by(ocloudmodel)\r
+# self._uow.stxobjects.update(localmodel)\r
+# self._uow.commit()\r
\r
\r
class DmsWatcher(BaseWatcher):\r
def __init__(self, client: BaseClient,\r
- uow: AbstractUnitOfWork) -> None:\r
- super().__init__(client, uow)\r
+ bus: MessageBus) -> None:\r
+ super().__init__(client, bus)\r
\r
def _targetname(self):\r
return "dms"\r
\r
- def _probe(self, parent: object = None):\r
- ocloudid = parent.id if parent else None\r
+ def _probe(self, parent: StxGenericModel):\r
+ ocloudid = parent.id\r
newmodels = self._client.list(ocloudid=ocloudid)\r
- for newmodel in newmodels:\r
- super()._compare_and_update(newmodel)\r
- return newmodels\r
+ # for newmodel in newmodels:\r
+ # super()._compare_and_update(newmodel)\r
+ # return newmodels\r
+ return [commands.UpdateDms(data=m, parentid=ocloudid)\r
+ for m in newmodels]\r