Skip to main content
Glama
test_vm_management.cpython-313-pytest-8.3.5.pyc24.3 kB
� �%hP���SSKrSSKJs Jr SSKrSSKrSSKJ r J r SSK J r J r JrJrJr \R"S5r\R"S5r\R(R*\ "S5S55r\R(R*\ "S5S55r\R(R*\ "S5S 55r\R(R*\ "S5S 55r\R(R*\ "S5S 55r\R(R*\ "S5S 55r\R(R*\ "S5S 55r\R(R*\ "S5S55r\R(R*\ "S5S55r\R(R*\ "S5S55r\R(R*\ "S5S55r \R(R*\ "S5S55r!\R(R*\ "S5\ "S5S555r"\R(R*\ "S5\ "S5S555r#g)�N)�Mock�patch)�list_vms�start_vm�stop_vm� reboot_vm� get_vnc_portsc���[5nSURlSURl[R S4UR lSURlSURlU$)N�test-vm�ri �) r�name� return_value�ID�libvirt�VIR_DOMAIN_RUNNING�state� maxMemory�maxVcpus)�domains �8/home/steve/projects/kvm-mcp/tests/test_vm_management.py� mock_domainrsW�� �V�F�(�F�K�K���F�I�I��!(�!;�!;�Q� ?�F�L�L��$/�F���!�#$�F�O�O� � �M�c�^�[5nU/URlXRlU$)N)r�listAllDomainsr� lookupByName)r�conns r� mock_connrs*�� �6�D�(3�}�D���$�%0���"� �Krz libvirt.openc���# �Xl[S05IShv�N n[U5nSoCU:HoU(Gd [R"SU4SX445S[ R "5;d[R"[5(a[R"[5OSS[ R "5;d[R"U5(a[R"U5OS[R"U5[R"U5S.-nS S U0-n[[R"U55eS=n=pTUS nUS n S o�U :Ho3(do[R"SU4SX�45[R"U 5[R"U 5S.-n SSU 0-n[[R"U55eS=n =p:USn So�U :Ho3(do[R"SU4SX�45[R"U 5[R"U 5S.-n SSU 0-n[[R"U55eS=n =p:USn So�U :Ho3(do[R"SU4SX�45[R"U 5[R"U 5S.-n SSU 0-n[[R"U55eS=n =p:USn So�U :Ho3(do[R"SU4SX�45[R"U 5[R"U 5S.-n SSU 0-n[[R"U55eS=n =p:USn So�U :Ho3(do[R"SU4SX�45[R"U 5[R"U 5S.-n SSU 0-n[[R"U55eS=n =p:gGN�7f)zTest successful listing of VMsrNr ��==�z0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)s�len�result��py0�py1�py3�py6�assert %(py8)s�py8rrr �z%(py1)s == %(py4)s�r'�py4�assert %(py6)sr)�idr�running�memoryi�vcpur � rrr#� @pytest_ar�_call_reprcompare� @py_builtins�locals�_should_repr_global_name� _saferepr�AssertionError�_format_explanation) �mock_libvirt_openrr$� @py_assert2� @py_assert5� @py_assert4� @py_format7� @py_format9�vm� @py_assert0� @py_assert3� @py_format5s r�test_list_vms_successrGs:���&/�"��J��+� +�F� �v�;��!��!� �����;�������3�����3�������v�����v����;����!�������� ���B� �f�:�"��"�� "�"�"�"�"�:�"�"�"�:�"�"�"��"�"�"�"�"�"�"� �d�8��q��q�=�����8����8����q�������� �g�;�#�)�#�)� #�#�#�#�#�;�#�#�#�;�#�#�#�)�#�#�#�#�#�#�#� �h�<��4��4� �����<����<����4�������� �f�:�����?�����:����:������������,�s�O)�O&�OO)c��# �SUl[S05IShv�N n[U5nSo2U:HoD(Gd [R"SU4SX#45S[ R "5;d[R"[5(a[R"[5OSS[ R "5;d[R"U5(a[R"U5OS[R"U5[R"U5S.-nS S U0-n[[R"U55eS=n=pCS oqS o�U;o"(do[R"S U4SXx45[R"U5[R"U5S.-n SSU 0-n[[R"U55eS=n=p(SoqS S o�U;o"(do[R"S U4SXx45[R"U5[R"U5S.-n SSU 0-n[[R"U55eS=n=p(gGN;7f)z%Test VM listing with connection errorNrr r r"r#r$r%r*r+�errorr��in�z%(py1)s in %(py4)sr-r/r)�#Failed to connect to libvirt daemonr4� r=r$r>r?r@rArBrDrErFs r�test_list_vms_connection_errorrO'sT���&*��"��J��+� +�F� �v�;��!��!� �����;�������3�����3�������v�����v����;����!�������� ��Q�i��i� �����7����7����i�������� 0�F�1�I�g�4F�F�4F� F�F�F�F�F� 0�F�F�F� 0�F�F�F�4F�F�F�F�F�F�F�F� ,�s�I�I�H;Ic���# �[R"S5Ul[S05IShv�N n[ U5nSo2U:HoD(Gd [ R "SU4SX#45S[R"5;d[ R"[5(a[ R"[5OSS[R"5;d[ R"U5(a[ R"U5OS[ R"U5[ R"U5S .-nS S U0-n[[ R"U55eS=n=pCS oqS o�U;o"(do[ R "SU4SXx45[ R"U5[ R"U5S.-n SSU 0-n[[ R"U55eS=n=p(SoqS S o�U;o"(do[ R "SU4SXx45[ R"U5[ R"U5S.-n SSU 0-n[[ R"U55eS=n=p(gGN;7f)z"Test VM listing with libvirt errorz Test errorrNr r r"r#r$r%r*r+rIrrJrLr-r/r)) r� libvirtError� side_effectrr#r5r6r7r8r9r:r;r<rNs r�test_list_vms_libvirt_errorrS3s]���%,�$8�$8��$F��!��J��+� +�F� �v�;��!��!� �����;�������3�����3�������v�����v����;����!�������� ��Q�i��i� �����7����7����i�������� �-�!�9�W�-�-�-� -�-�-�-�-�<�-�-�-�<�-�-�-�-�-�-�-�-�-�-�-� ,�s�+I+�I(�H;I+c��# �XlSURl[SSS05IShv�N nUSnSoTU:Hof(do[R"SU4S XE45[R "U5[R "U5S .-nS S U0-n[ [R"U55eS=n=peS oCSoTU;of(do[R"SU4SXE45[R "U5[R "U5S .-nS S U0-n[ [R"U55eS=n=peURR5 gGN)7f)zTest successful VM startrrrr N�status�successr r,r-r/r)zstarted successfully�messagerJrL) r�createrr5r6r:r;r<�assert_called_once� r=rrr$rDrEr>rFrAs r�test_start_vm_successr[?s����&/�"�&'�K���#��J���(;�<� <�F� �(� �(�y�(�y� (�(�(�(�(� �(�(�(� �(�(�(�y�(�(�(�(�(�(�(� !�6�I�%6�6�%6� 6�6�6�6�6� !�6�6�6� !�6�6�6�%6�6�6�6�6�6�6�6����)�)�+� =���)E�E�D)Ec��l# �[S05IShv�N nUSnSo2U:HoD(do[R"SU4SX#45[R"U5[R"U5S.-nSS U0-n[ [R "U55eS=n=pCS o!S o2U;oD(do[R"S U4S X#45[R"U5[R"U5S.-nSS U0-n[ [R "U55eS=n=pCUR 5 gGN7f)zTest VM start with missing namerNrUrIr r,r-r/r)�VM name not providedrWrJrL)rr5r6r:r;r<�assert_not_called�r=r$rDrEr>rFrAs r�test_start_vm_missing_nameraLs�����J��+� +�F� �(� �&�w�&�w� &�&�&�&�&� �&�&�&� �&�&�&�w�&�&�&�&�&�&�&� !�6�I�%6�6�%6� 6�6�6�6�6� !�6�6�6� !�6�6�6�%6�6�6�6�6�6�6�6��'�'�)� ,���D4�D1�DD4c��^# �SUl[SSS05IShv�N nUSnSo2U:HoD(do[R"SU4SX#45[R"U5[R"U5S .-nS S U0-n[ [R "U55eS=n=pCS o!S o2U;oD(do[R"SU4SX#45[R"U5[R"U5S .-nS S U0-n[ [R "U55eS=n=pCgGN7f)z#Test VM start with connection errorNrrr rUrIr r,r-r/r)rMrWrJrL)rrr5r6r:r;r<r`s r�test_start_vm_connection_errorrdVs����&*��"��J���(;�<� <�F� �(� �&�w�&�w� &�&�&�&�&� �&�&�&� �&�&�&�w�&�&�&�&�&�&�&� 0�E�9�4E�E�4E� E�E�E�E�E� 0�E�E�E� 0�E�E�E�4E�E�E�E�E�E�E�E�=���D-�D*�DD-c��# �XlSURl[SSS05IShv�N nUSnSoTU:Hof(do[R"SU4S XE45[R "U5[R "U5S .-nS S U0-n[ [R"U55eS=n=peS oCSoTU;of(do[R"SU4SXE45[R "U5[R "U5S .-nS S U0-n[ [R"U55eS=n=peURR5 gGN)7f)zTest successful VM stoprrrr NrUrVr r,r-r/r)zstopped successfullyrWrJrL) r�shutdownrr5r6r:r;r<rYrZs r�test_stop_vm_successrhas����&/�"�()�K���%��9�v�y�&9�:� :�F� �(� �(�y�(�y� (�(�(�(�(� �(�(�(� �(�(�(�y�(�(�(�(�(�(�(� !�6�I�%6�6�%6� 6�6�6�6�6� !�6�6�6� !�6�6�6�%6�6�6�6�6�6�6�6����+�+�-� ;�r\c��l# �[S05IShv�N nUSnSo2U:HoD(do[R"SU4SX#45[R"U5[R"U5S.-nSS U0-n[ [R "U55eS=n=pCS o!S o2U;oD(do[R"S U4S X#45[R"U5[R"U5S.-nSS U0-n[ [R "U55eS=n=pCUR 5 gGN7f)zTest VM stop with missing namerNrUrIr r,r-r/r)r^rWrJrL)rr5r6r:r;r<r_r`s r�test_stop_vm_missing_namerjns�����9�b�)� )�F� �(� �&�w�&�w� &�&�&�&�&� �&�&�&� �&�&�&�w�&�&�&�&�&�&�&� !�6�I�%6�6�%6� 6�6�6�6�6� !�6�6�6� !�6�6�6�%6�6�6�6�6�6�6�6��'�'�)� *�rbc��^# �SUl[SSS05IShv�N nUSnSo2U:HoD(do[R"SU4SX#45[R"U5[R"U5S .-nS S U0-n[ [R "U55eS=n=pCS o!S o2U;oD(do[R"SU4SX#45[R"U5[R"U5S .-nS S U0-n[ [R "U55eS=n=pCgGN7f)z"Test VM stop with connection errorNrrr rUrIr r,r-r/r)rMrWrJrL)rrr5r6r:r;r<r`s r�test_stop_vm_connection_errorrlxs����&*��"��9�v�y�&9�:� :�F� �(� �&�w�&�w� &�&�&�&�&� �&�&�&� �&�&�&�w�&�&�&�&�&�&�&� 0�E�9�4E�E�4E� E�E�E�E�E� 0�E�E�E� 0�E�E�E�4E�E�E�E�E�E�E�E�;�rec��# �XlSURl[SSS05IShv�N nUSnSoTU:Hof(do[R"SU4S XE45[R "U5[R "U5S .-nS S U0-n[ [R"U55eS=n=peS oCSoTU;of(do[R"SU4SXE45[R "U5[R "U5S .-nS S U0-n[ [R"U55eS=n=peURR5 gGN)7f)zTest successful VM rebootrrrr NrUrVr r,r-r/r)zrebooted successfullyrWrJrL) r�rebootrr5r6r:r;r<rYrZs r�test_reboot_vm_successro�s����&/�"�&'�K���#��[�6�9�*=�>� >�F� �(� �(�y�(�y� (�(�(�(�(� �(�(�(� �(�(�(�y�(�(�(�(�(�(�(� "�7�Y�&7�7�&7� 7�7�7�7�7� "�7�7�7� "�7�7�7�&7�7�7�7�7�7�7�7����)�)�+� ?�r\c��l# �[S05IShv�N nUSnSo2U:HoD(do[R"SU4SX#45[R"U5[R"U5S.-nSS U0-n[ [R "U55eS=n=pCS o!S o2U;oD(do[R"S U4S X#45[R"U5[R"U5S.-nSS U0-n[ [R "U55eS=n=pCUR 5 gGN7f)z Test VM reboot with missing namerNrUrIr r,r-r/r)r^rWrJrL)rr5r6r:r;r<r_r`s r�test_reboot_vm_missing_namerq�s�����[�"�-� -�F� �(� �&�w�&�w� &�&�&�&�&� �&�&�&� �&�&�&�w�&�&�&�&�&�&�&� !�6�I�%6�6�%6� 6�6�6�6�6� !�6�6�6� !�6�6�6�%6�6�6�6�6�6�6�6��'�'�)� .�rbc��^# �SUl[SSS05IShv�N nUSnSo2U:HoD(do[R"SU4SX#45[R"U5[R"U5S .-nS S U0-n[ [R "U55eS=n=pCS o!S o2U;oD(do[R"SU4SX#45[R"U5[R"U5S .-nS S U0-n[ [R "U55eS=n=pCgGN7f)z$Test VM reboot with connection errorNrrr rUrIr r,r-r/r)rMrWrJrL)rrr5r6r:r;r<r`s r�test_reboot_vm_connection_errorrs�s����&*��"��[�6�9�*=�>� >�F� �(� �&�w�&�w� &�&�&�&�&� �&�&�&� �&�&�&�w�&�&�&�&�&�&�&� 0�E�9�4E�E�4E� E�E�E�E�E� 0�E�E�E� 0�E�E�E�4E�E�E�E�E�E�E�E�?�rezsubprocess.check_outputc���# �X lSUl[S05IShv�N nUSnSoeU:How(do[R"SU4SXV45[R"U5[R"U5S.-nS S U0-n [ [R "U 55eS=n=pvS oUU;ow(d�[R"S U4S XT45[R"U5S[R"5;d[R"U5(a[R"U5OSS.-n SSU 0-n [ [R "U 55eS=pWUS n [U [5o�(d�SS[R"5;d[R"[5(a[R"[5OS[R"U 5S[R"5;d[R"[5(a[R"[5OS[R"U 5S.-n [ [R "U 55eS=p�gGNR7f)z"Test successful VNC port retrievalsbId Name State ---------------------------------- 1 test-vm running r NrUrVr r,r-r/r)� vnc_portsrJ�z%(py1)s in %(py3)sr$�r'r(�assert %(py5)s�py5z5assert %(py5)s {%(py5)s = %(py0)s(%(py2)s, %(py3)s) }� isinstance�dict)r&�py2r(ry) rr r5r6r:r;r<r7r8r9rzr{)r=�mock_check_outputrrr$rDrEr>rFrA� @py_format4� @py_format6� @py_assert1r@s r�test_get_vnc_ports_successr��sa��� &/�"�&N��"� ��"�5� 5�F� �(� �(�y�(�y� (�(�(�(�(� �(�(�(� �(�(�(�y�(�(�(�(�(�(�(� � �&� � � � � �;� � � �;� � � � � � �&� � � � �&� � � � � � � ��[�)�0�:�)�4� 0�0� 0�0�0�0�0�0�0�:�0�0�0�0�:�0�0�0�)�0�0�0�0�0�0�4�0�0�0�0�4�0�0�0� 0�0�0�0�0�0�0� 6�s�I4�I1�II4c���# �X lSUl[S05IShv�N nUSnSoTU:Hof(do[R"SU4SXE45[R"U5[R"U5S.-nS S U0-n[ [R "U55eS=n=peS oDU;of(d�[R"S U4S XC45[R"U5S[R"5;d[R"U5(a[R"U5OSS.-n SSU 0-n [ [R "U 55eS=pFUS n0oTU:Hof(do[R"SU4SXE45[R"U5[R"U5S.-nS S U0-n[ [R "U55eS=n=pegGN�7f)z+Test VNC port retrieval with no running VMssAId Name State ---------------------------------- r NrUrVr r,r-r/r)rurJrvr$rwrxry) rr r5r6r:r;r<r7r8r9) r=r}rr$rDrEr>rFrAr~rs r�test_get_vnc_ports_no_vmsr��s%��� &/�"�%k��"� ��"�5� 5�F� �(� �(�y�(�y� (�(�(�(�(� �(�(�(� �(�(�(�y�(�(�(�(�(�(�(� � �&� � � � � �;� � � �;� � � � � � �&� � � � �&� � � � � � � � �+� �$�"�$�"� $�$�$�$�$� �$�$�$� �$�$�$�"�$�$�$�$�$�$�$� 6�s�G&�G#�GG&)$�builtinsr7�_pytest.assertion.rewrite� assertion�rewriter5�pytestr� unittest.mockrr�kvm_mcp_serverrrrrr �fixturerr�mark�asynciorGrOrSr[rardrhrjrlrorqrsr�r��rr�<module>r�s����� ��%�P�P������������� ������~�� ��� �������~��G���G�������~��.���.�������~�� ,��� ,�������~��*���*�������~��F���F�������~�� .��� .�������~��*���*�������~��F���F�������~�� ,��� ,�������~��*���*�������~��F���F������� �!��~�� 1��"�� 1������� �!��~�� %��"�� %r

Latest Blog Posts

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/steveydevey/kvm-mcp'

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