Skip to main content
Glama

NetBrain MCP

by NorthLaneMS
network_devices.cpython-313.pyc14.7 kB
� V#h�'���SSKJrJrJrJrJr SSKJr SSKJ r J r SSK r SSK r SSK r SSKJr \ R"\ R S\ R""\ R$S9/S9 \ R&"S 5r"S S \5r"S S \5r"SS\5r"SS\5r"SS5r\ "SS55r"SS5r\"5rg)�)�Dict�List�Optional�Any�Union)�Enum)� dataclass�fieldN)�datetimez4%(asctime)s - %(name)s - %(levelname)s - %(message)s)�stream)�level�format�handlers�network_devicesc�4�\rSrSrSrSrSrSrSrSr Sr S r S r g ) � DeviceType�u网络设备类型枚举�router�switch�firewall� load_balancer�wireless_controller� access_point�other�N) �__name__� __module__� __qualname__�__firstlineno__�__doc__�ROUTER�SWITCH�FIREWALL� LOAD_BALANCER�WIRELESS_CONTROLLER� ACCESS_POINT�OTHER�__static_attributes__r��!F:\NetBrainMCP\network_devices.pyrrs)��"� �F� �F��H�#�M�/��!�L� �Er)rc�8�\rSrSrSrSrSrSrSrSr Sr S r S r S r g ) � DeviceVendor�u网络设备厂商枚举�cisco�huawei�h3c�juniper�arista�fortinet� checkpointrrN)rrrrr �CISCO�HUAWEI�H3C�JUNIPER�ARISTA�FORTINET� CHECKPOINTr'r(rr)r*r,r,s-��"� �E� �F� �C��G� �F��H��J� �Er)r,c�,�\rSrSrSrSrSrSrSrSr Sr g ) � DeviceStatus�(u设备状态枚举�online�offline� unreachable� maintenance�unknownrN) rrrrr �ONLINE�OFFLINE� UNREACHABLE� MAINTENANCE�UNKNOWNr(rr)r*r=r=(s��� �F��G��K��K��Gr)r=c�0�\rSrSrSrSrSrSrSrSr Sr S r g ) �ConnectionProtocol�0u连接协议枚举�ssh�telnet�snmp�http�https�netconfrN) rrrrr �SSH�TELNET�SNMP�HTTP�HTTPS�NETCONFr(rr)r*rJrJ0s#��� �C� �F� �D� �D� �E��Gr)rJc���\rSrSrSrSSSS\R SSS4S\S\S\S\S \S \S \S \4S jjr S\ \\ 44Sjr S\ \\ 44Sjr \S\ \\ 4SS4Sj5rSrg)�DeviceCredential�9u设备凭据类N��id�name�username�password�protocol�port�enable_password� ssh_key_filec ���U=(d [[R"55UlX lX0lX@lXPlU=(d U[R:XaSOSUl Xpl X�l g)N��) �str�uuid�uuid4r\r]r^r_r`rJrRrarbrc) �selfr\r]r^r_r`rarbrcs r*�__init__�DeviceCredential.__init__<sW���)��D�J�J�L�)���� � � � � � � ��N�8�/A�/E�/E�#E�R�2�� �.��(�r)�returnc���URURURURRUR UR (aUR S.$SS.$)�转换为字典表示N)r\r]r^r`rarc)r\r]r^r`�valuerarc�rjs r*�to_dict�DeviceCredential.to_dictNsY���'�'��I�I�� � �� � �+�+��I�I�15�1B�1B�D�-�-�  � � IM�  � r)c ��URURURUR(aSOSURR UR UR(aSOSUR(aURS.$SS.$)uE转换为完整字典表示,包括敏感信息(仅用于调试)z********N�r\r]r^r_r`rarbrc) r\r]r^r_r`rprarbrcrqs r*� to_full_dict�DeviceCredential.to_full_dictZsq���'�'��I�I�� � �&*�m�m� ��� � �+�+��I�I�-1�-A�-A�z�t�15�1B�1B�D�-�-�  � �IM�  � r)�datac ��URSS5nUR5S:Xa[RO[RnU"URS5URSS5URSS5URSS5UURS5URS 5URS 5S 9$) u从字典创建凭据r`rLr\r]r[r^r_rarbrcru)�get�lowerrJrRrS)�clsrx� protocol_strr`s r*� from_dict�DeviceCredential.from_dictgs����x�x� �E�2� �-9�-?�-?�-A�U�-J�%�)�)�Pb�Pi�Pi����x�x��~����&�"�%��X�X�j�"�-��X�X�j�"�-�����&�!� �H�H�%6�7����.�1�  � r))rbr\r]r_rar`rcr^)rrrrr rJrRrg�intrkrrrrrv� classmethodr~r(rr)r*rYrY9s���� ��!#�!#�0B�0F�0F�!�(,�%)�)��)��)��)�� )� .� )� � )�#&�)� #�)�$  ��c�3�h��  �  �d�3��8�n�  �� �T�#�s�(�^� �0B� �� r)rYc���\rSrSr%Sr\"SS9r\\S'Sr \\S'Sr \\S'\ Rr \ \S '\Rr\\S 'Sr\\S 'Sr\\S 'Sr\\S '\R(r\\S'Sr\\S'Sr\\\S'Sr\\S'\"\S9r\\\S'Sr\\\S'\"\R>S9r \\S'\"\R>S9r!\\S'\"\"S9r#\$\\%4\S'S\$\\%44Sjr&Sr'g)� NetworkDevice�xu网络设备模型c�>�[[R"55$)N)rgrhrirr)r*�<lambda>�NetworkDevice.<lambda>{s��C�� � � �,=r))�default_factoryr\r[r]� ip_address� device_type�vendor�platform�model� os_version�status�locationN� credential_id� description�tags� last_seen� created_at� updated_at�custom_attributesrmc�v�0SUR_SUR_SUR_SURR_SUR R_SUR _SUR_SUR_S URR_S UR_S UR_S UR_S UR_SUR(aURR5OS_SUR R5_SUR"R5_SUR$_$)ror\r]r�r�r�r�r�r�r�r�r�r�r�r�Nr�r�r�)r\r]r�r�rpr�r�r�r�r�r�r�r�r�r�� isoformatr�r�r�rqs r*rr�NetworkDevice.to_dict�sU�� � �$�'�'� � �D�I�I� � �$�/�/� � �4�+�+�1�1�  � �d�k�k�'�'�  � �� � �  � �T�Z�Z� � �$�/�/� � �d�k�k�'�'� � �� � � � �T�/�/� � �4�+�+� � �D�I�I� � �t�~�~����1�1�3�4� � �$�/�/�3�3�5� � �$�/�/�3�3�5�! �" ��!7�!7�# � r)r)(rrrrr r r\rg�__annotations__r]r�rr'r�r,r�r�r�r�r=rHr�r�r�rr��listr�rr�r �nowr�r��dictr�rrrrr(rr)r*r�r�xs ����$=�>�B��>��D�#�N��J���(�.�.�K��.�'�-�-�F�L�-��H�c���E�3�O��J���'�/�/�F�L�/��H�c��#'�M�8�C�=�'��K����D�1�D�$�s�)�1�$(�I�x��!�(� ����>�J��>� ����>�J��>�(-�d�(C��t�C��H�~�C� ��c�3�h�� r)r�c � �\rSrSrSrSrS\S\4SjrS\S\ \4Sjr S\S\ \4S jr S\S\ 4S jr SS \ \S \ \S\ \S\ \S\\4 SjjrS\S\4SjrS\S\ \4SjrS\S\ 4SjrS\\4SjrSrg )� DeviceManager�u9设备管理器,负责设备的创建、查询和管理c�J�0Ul0Ul[RS5 g)Nu设备管理器初始化完成)�devices� credentials�logger�inforqs r*rk�DeviceManager.__init__�s��13�� �8:���� � �4�5r)�devicermc��XRUR'[RSURSUR S35 UR$)uO 添加设备 Args: device: 网络设备对象 Returns: 设备ID u设备添加成功: � (�))r�r\r�r�r]r�)rjr�s r*� add_device�DeviceManager.add_device�sE��#)� � �V�Y�Y��� � �*�6�;�;�-�r�&�:K�:K�9L�A�N�O��y�y�r)� device_idc�8�URRU5$)uS 获取设备 Args: device_id: 设备ID Returns: 设备对象或None )r�rz)rjr�s r*� get_device�DeviceManager.get_device�s���|�|��� �*�*r)c �j�URU5nU(d[RSU35 gUR5H#upE[ X45(dM[ X4U5 M% [ R"5Ul[RSURSURS35 U$)u� 更新设备信息 Args: device_id: 设备ID kwargs: 要更新的属性 Returns: 更新后的设备对象或None �设备不存在: Nu设备更新成功: r�r�) r�r��warning�items�hasattr�setattrr r�r�r�r]r�)rjr��kwargsr��keyrps r*� update_device�DeviceManager.update_device�s�������+��� �N�N�.�y�k�:� ;�� �,�,�.�J�C��v�#�#���U�+�)�%�L�L�N���� � �*�6�;�;�-�r�&�:K�:K�9L�A�N�O�� r)c���XR;aMURUnURU [RSURSURS35 g[R SU35 g)uR 删除设备 Args: device_id: 设备ID Returns: 是否删除成功 u设备删除成功: r�r�Tr�F)r�r�r�r]r�r�)rjr�r�s r*� delete_device�DeviceManager.delete_device�sj�� � � � $��\�\�)�,�F�� � �Y�'� �K�K�.�v�{�{�m�2�f�>O�>O�=P�PQ�R� S�����*�9�+�6�7�r)Nr�r�r��tagc���[URR55nU(a#UVs/sHofRU:XdMUPM nnU(a#UVs/sHofRU:XdMUPM nnU(a#UVs/sHofR U:XdMUPM nnU(a#UVs/sHodUR ;dMUPM nnU$s snfs snfs snfs snf)u� 列出设备,支持过滤 Args: vendor: 可选的厂商过滤器 device_type: 可选的设备类型过滤器 status: 可选的状态过滤器 tag: 可选的标签过滤器 Returns: 设备列表 )r�r��valuesr�r�r�r�)rjr�r�r�r��result�ds r*� list_devices�DeviceManager.list_devices�s���"�d�l�l�)�)�+�,�� �!'�>��A�8�8�v�+=�a��F�>� �!'�H��A�=�=�K�+G�a��F�H� �!'�>��A�8�8�v�+=�a��F�>� �!'�9��A�!�&�&�=�a��F�9�� ��?��I��?��:s/�C�C�C�0C�C�C�-C�C� credentialc��XRUR'[RSUR35 UR$)uS 添加凭据 Args: credential: 设备凭据对象 Returns: 凭据ID u凭据添加成功: )r�r\r�r�r])rjr�s r*�add_credential�DeviceManager.add_credentials9��+5������'�� � �*�:�?�?�*;�<�=��}�}�r)r�c�8�URRU5$)uW 获取凭据 Args: credential_id: 凭据ID Returns: 凭据对象或None )r�rz)rjr�s r*�get_credential�DeviceManager.get_credentials�����#�#�M�2�2r)c���XR;a?URUnURU [RSUR35 g[R SU35 g)uV 删除凭据 Args: credential_id: 凭据ID Returns: 是否删除成功 u凭据删除成功: Tu凭据不存在: F)r�r�r�r]r�)rjr�r�s r*�delete_credential�DeviceManager.delete_credential+sa�� �,�,� ,��)�)�-�8�J�� � ��/� �K�K�.�z���.?�@� A�����*�=�/�:�;�r)c�H�[URR55$)u/ 列出所有凭据 Returns: 凭据列表 )r�r�r�rqs r*�list_credentials�DeviceManager.list_credentials>s���D�$�$�+�+�-�.�.r))r�r�)NNNN)rrrrr rkr�rgr�rr�r��boolr�r,rr=rr�rYr�r�r�r�r(rr)r*r�r��s ��C�6� �� �3� � +�C� +�H�]�,C� +��s���-�9P��0�s��t��(6:�8<�59�)-� �$�\�2��!)�*�!5��%�\�2��"�#�� �37�}�2E� �B �)9� �c� � 3�C� 3�H�=M�4N� 3��s��t��&/�$�'7�"8�/r)r�)�typingrrrrr�enumr� dataclassesr r rh�logging�sysr � basicConfig�INFO� StreamHandler�stdout� getLoggerr�rr,r=rJrYr�r��device_managerrr)r*�<module>r�s���3�3��(� �� ����� �,�,� A����S�Z�Z�0��� � � �,� -����� �4� ��4�����= �= �~ �( �( � �( �Tb/�b/�J��r)

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/NorthLaneMS/NetBrain_MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server