示例#1
0
文件: base.py 项目: nbashev/noc
    def send_message(cls, data: Dict[str, Any],
                     change_id: bson.ObjectId) -> None:
        """
        Send MX message

        :param data:
        :param change_id:
        :return:
        """
        data["$changeid"] = str(change_id)
        # Build headers
        headers = {
            MX_CHANGE_ID: smart_bytes(change_id),
        }
        additional_headers = cls.get_msg_headers(data)
        if additional_headers:
            headers.update(additional_headers)
        # Schedule to send
        send_message(
            data,
            message_type=cls.name,
            headers=headers,
            sharding_key=hash_int(data["id"]) & 0xFFFFFFFF,
        )
        # Cleanup
        del data["$changeid"]
示例#2
0
文件: suppress.py 项目: nbashev/noc
 def event_hash(event: ActiveEvent) -> int:
     e_vars = {
         v.name: event.vars.get(v.name, "") or ""
         for v in event.event_class.vars if v.match_suppress
     }
     var_hash = dict_hash_int(event.vars) if e_vars else 0
     return hash_int(
         f"{event.managed_object.id}:{event.event_class.id}:{var_hash}")
示例#3
0
文件: uptime.py 项目: nbashev/noc
 def send_reboot_message(self, ts: datetime.datetime) -> None:
     mo = self.object
     data = {
         "ts": ts.isoformat(),
         "managed_object": {
             "id": str(mo.id),
             "name": mo.name,
             "bi_id": str(mo.bi_id),
             "address": mo.address,
             "pool": mo.pool.name,
             "profile": mo.profile.name,
             "object_profile": {
                 "id": str(mo.object_profile.id),
                 "name": mo.object_profile.name,
             },
             "administrative_domain": {
                 "id": str(mo.administrative_domain.id),
                 "name": str(mo.administrative_domain.name),
             },
             "segment": {
                 "id": str(mo.segment.id),
                 "name": str(mo.segment.name),
             },
             "x": mo.x,
             "y": mo.y,
         },
     }
     if mo.vendor:
         data["managed_object"]["vendor"] = mo.vendor.name
     if mo.platform:
         data["managed_object"]["platform"] = mo.platform.name
     if mo.version:
         data["managed_object"]["version"] = mo.version.version
     if mo.container:
         data["managed_object"]["container"] = {
             "id": str(mo.container.id),
             "name": mo.container.name,
         }
     if mo.remote_system and mo.remote_id:
         data["managed_object"]["remote_system"] = {
             "id": str(mo.remote_system.id),
             "name": mo.remote_system.name,
         }
         data["managed_object"]["remote_id"] = str(mo.remote_id)
     send_message(
         data,
         message_type="reboot",
         headers={
             MX_PROFILE_ID: smart_bytes(mo.object_profile.id),
         },
         sharding_key=hash_int(mo.id) & 0xFFFFFFFF,
     )
示例#4
0
文件: dedup.py 项目: nbashev/noc
 def event_hash(event: ActiveEvent) -> int:
     var_hash = dict_hash_int(event.vars) if event.vars else 0
     return hash_int(
         f"{event.managed_object.id}:{event.event_class.id}:{var_hash}")
示例#5
0
文件: test_hash.py 项目: nbashev/noc
def test_hash_int(value, expected):
    assert hash_int(value) == expected