§
    AxÅjÙ&  ã            
       óT  — d Z ddlZddlZddlZddlZddlmZ ddlmZm	Z	 ddl
mZ  ej        dd¬	¦  «        d
„ ¦   «         Ze                     d¦  «        d„ ¦   «         Ze                     d¦  «         ej        dd¬¦  «         ej        ddd¬¦  «         ej        ddd¬¦  «         ej        ddd¬¦  «         ej        ddd¬¦  «        d„ ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         Ze                     d¦  «         ej        d¦  «        d„ ¦   «         ¦   «         Ze                     d ¦  «         ej        d!¦  «         ej        d"¦  «         ej        d#d$¬%¦  «         ej        d&d$¬%¦  «        d'„ ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ZdS )(z
Runpod | CLI | Pod | Commands
é    N)ÚPrettyTable)Ú
create_podÚget_podsé   )Ússh_cmdÚpodzManage and interact with pods.)Úhelpc                  ó   — dS )z&A collection of CLI functions for Pod.N© r   ó    úOC:\Projects\Historical\venv\Lib\site-packages\runpod/cli/groups/pod/commands.pyÚpod_clir      s   € € € r   Úlistc                  óÔ   — t          g d¢¦  «        } t          ¦   «         D ]3}|                      |d         |d         |d         |d         f¦  «         Œ4t          j        | ¦  «         dS )z.
    Lists the pods for the current user.
    )ÚIDÚNameÚStatusÚImageÚidÚnameÚdesiredStatusÚ	imageNameN)r   r   Úadd_rowÚclickÚecho)Útabler   s     r   Ú	list_podsr      ss   € õ
 Ð9Ð9Ð9Ñ:Ô:€EÝ‰zŒzð Xð XˆØ�Š�s˜4”y # f¤+¨s°?Ô/CÀSÈÔEUÐVÑWÔWÐWÐWå	„JˆuÑÔÐÐÐr   Úcreater   F)Úrequiredz--imagezThe image to use for the pod.)Údefaultr	   z
--gpu-typez The GPU type to use for the pod.z--gpu-counté   z&The number of GPUs to use for the pod.z--support-public-ipTz&Whether or not to support a public IP.c                 ó  — ||dœ}| st          j        dd¬¦  «        } t          j        dd¬¦  «        }|rd}d	}d
|d<   t          j        d¦  «         t	          | ||fi |¤Ž}t          j        d|d         › d�¦  «         dS )z
    Creates a pod.
    )Ú	gpu_countÚsupport_public_ipzEnter pod namezRunPod-CLI-Pod©r    z%Would you like to launch default pod?T)Úabortzrunpod/base:0.0.0zNVIDIA GeForce RTX 3090z22/tcpÚportszLaunching default pod...zPod r   z has been created.N)r   ÚpromptÚconfirmr   r   )r   ÚimageÚgpu_typer#   r$   ÚkwargsÚquick_launchÚnew_pods           r   Úcreate_new_podr/   !   s¸   € ð Ø.ðð €Fð
 ð HÝŒ|Ð,Ð6FÐGÑGÔGˆå”=Ð!HÐPTÐUÑUÔU€LØð /Ø#ˆØ,ˆØ"ˆˆw‰åŒ
Ð-Ñ.Ô.Ð.å˜˜u hÐ9Ð9°&Ð9Ð9€Gå	„JÐ7�g˜d”mÐ7Ð7Ð7Ñ8Ô8Ð8Ð8Ð8r   ÚconnectÚpod_idc                 ó†   — t          j        d| › d�¦  «         t          j        | ¦  «        }|                     ¦   «          dS )z
    Connects to a pod.
    zConnecting to pod ú...N)r   r   r   ÚSSHConnectionÚlaunch_terminal)r1   Ússhs     r   Úconnect_to_podr7   D   sH   € õ 
„JÐ/ FÐ/Ð/Ð/Ñ0Ô0Ð0Ý
Ô
 Ñ
'Ô
'€CØ×ÒÑÔÐÐÐr   ÚsyncÚsource_pod_idÚdest_pod_idÚsource_workspacez
/workspacer%   Údest_workspacec           
      óÊ  — 	 ddl m}  |¦   «         }|sŽt          j        d¦  «         t          j        d¦  «         t          j        d¦  «         t          j        d¦  «         t          j        d¦  «         t          j        d¦  «         t          j        d¦  «         d	S t          j        d
t	          |¦  «        › d�¦  «         nO# t
          $ rB}t          j        dt          |¦  «        › �¦  «         t          j        d¦  «         Y d	}~nd	}~ww xY wt          j        d| › d|› d|› d|› �¦  «         t          t          j        ¦   «         ¦  «        d	d…         }d|› d�}d|› �}		 t          j        d| › d�¦  «         t          j
        | ¦  «        5 }
t          j        d|› d�¦  «         |
j                             d|› d�¦  «        \  }}}|                     ¦   «                              ¦   «                              ¦   «         }t          j        d|› d�¦  «         |
j                             d|› d�¦  «        \  }}}|                     ¦   «                              ¦   «                              ¦   «         }|dk    r`t          j        d|› d| › �¦  «         	 d	d	d	¦  «         	 d t!          ¦   «         v rt#          j        |¦  «         d	S d	S # t&          $ r Y d	S w xY wt          j        d!|› d�¦  «         d"|› �}d#t"          j                             |¦  «        › d$|› d%t"          j                             |¦  «        › �}|
                     |g¦  «         |
j                             d&|› d'�¦  «        \  }}}|                     ¦   «                              ¦   «                              ¦   «         }|d(k    rZt          j        d)¦  «         	 d	d	d	¦  «         	 d t!          ¦   «         v rt#          j        |¦  «         d	S d	S # t&          $ r Y d	S w xY w|
j                             d*|› d+�¦  «        \  }}}|                     ¦   «                              ¦   «                              ¦   «         }t          j        d,|› d-�¦  «         t          j        d.¦  «         t1          j        d/d¬0¦  «        5 }|j        }|
                     ||¦  «         d	d	d	¦  «         n# 1 swxY w Y   |
                     d1|› �g¦  «         d	d	d	¦  «         n# 1 swxY w Y   t          j        d2|› d�¦  «         t          j
        |¦  «        5 }t          j        d3|› d�¦  «         |                     d4|› �g¦  «         t          j        d5¦  «         d"|› �}|                     ||¦  «         t          j        d6|› d7|	› d�¦  «         d#|› d8|	› d9|	› d:|› d;�	}|                     |g¦  «         |j                             d|› d7|	› d�¦  «        \  }}}|                     ¦   «                              ¦   «                              ¦   «         }t          j        d<|› d=�¦  «         |                     d1|› �g¦  «         t          j        d¦  «         t          j        d>¦  «         t          j        d?|› �¦  «         t          j        d@|› d|› d7|	› �¦  «         t          j        d¦  «         t          j        dA¦  «         t          j        dB|› �¦  «         t          j        dC|› d7|	› �¦  «         d	d	d	¦  «         n# 1 swxY w Y   n³# t
          $ r¦}t          j        dDt          |¦  «        › �¦  «         t          j        d¦  «         t          j        dE¦  «         t          j        dF¦  «         t          j        dG¦  «         t          j        dH¦  «         t          j        dI¦  «         Y d	}~nd	}~ww xY w	 d t!          ¦   «         v rt#          j        |¦  «         d	S d	S # t&          $ r Y d	S w xY w# 	 d t!          ¦   «         v rt#          j        |¦  «         w w # t&          $ r Y w w xY wxY w)JuD  
    Sync data between two pods via SSH.
    
    Transfers files from source_pod_id:source_workspace to dest_pod_id:dest_workspace.
    The workspace will be zipped and transferred to avoid file name conflicts.
    
    ðŸ“‹ PREREQUISITES:
    
    1. SSH Key Setup:
       â€¢ You must have an SSH key configured in your Runpod account
       â€¢ If you don't have one, create it with: runpod ssh add-key
       â€¢ List your keys with: runpod ssh list-keys
    
    2. Pod Configuration:
       â€¢ Both pods must have SSH access enabled
       â€¢ For running pods using official Runpod templates, you may need to add
         your public key to the PUBLIC_KEY environment variable and restart the pod
    
    âš ï¸�  IMPORTANT NOTES:
    
    â€¢ If a pod was started before adding your SSH key, you'll need to:
      1. Stop the pod
      2. Add PUBLIC_KEY environment variable with your public key
      3. Restart the pod
    
    â€¢ The sync creates a unique folder (sync_XXXXXXXX) in the destination to avoid
      file conflicts
    
    ðŸ“– EXAMPLES:
    
    Basic sync (uses /workspace as default):
        runpod pod sync pod1 pod2
    
    Custom paths:
        runpod pod sync pod1 pod2 /workspace/data /workspace/backup
    
    Different directories:
        runpod pod sync pod1 pod2 /home/user/files /workspace/imported
    r   )Úget_user_pub_keysu-   â�Œ No SSH keys found in your Runpod account!Ú u   ðŸ”‘ To create an SSH key, run:z   runpod ssh add-keyu   ðŸ“– For more help, see:z   runpod ssh add-key --helpNu
   âœ… Found z SSH key(s) in your accountu,   âš ï¸�  Warning: Could not verify SSH keys: zContinuing with sync attempt...u   ðŸ”„ Syncing from ú:z to é   Úsync_z.tar.gzu   ðŸ“¡ Connecting to source pod r3   u   ðŸ“Š Counting files in zfind z -type f | wc -lu   ðŸ“� Found z files in source workspaceztest -d z% && echo 'exists' || echo 'not_found'Úexistsu   â�Œ Error: Source workspace z does not exist on pod Úlocal_temp_pathu   ðŸ“¦ Creating archive of z/tmp/zcd z && tar -czf ú ztest -f z# && echo 'created' || echo 'failed'Úcreatedu1   â�Œ Error: Failed to create archive on source podzdu -h z
 | cut -f1u"   âœ… Archive created successfully (ú)u/   â¬‡ï¸�  Downloading archive to local machine...F)ÚdeleteÚsuffixzrm -f u#   ðŸ“¡ Connecting to destination pod u%   ðŸ“‚ Preparing destination workspace z	mkdir -p u/   â¬†ï¸�  Uploading archive to destination pod...u   ðŸ“¦ Extracting archive to ú/z && mkdir -p z && cd z && tar -xzf z --strip-components=1u   ðŸ“� Extracted z files to destinationu!   ðŸŽ‰ Sync completed successfully!u   ðŸ“Š Files transferred: u   ðŸ“� Destination location: u    ðŸ’¡ To access the synced files:z   runpod ssh z   cd u   â�Œ Error during sync: u   ðŸ”§ Troubleshooting tips:u,   â€¢ Ensure both pods have SSH access enableduQ   â€¢ Check that your SSH key is added to your Runpod account: runpod ssh list-keysuH   â€¢ For running pods, you may need to add PUBLIC_KEY env var and restartu1   â€¢ Verify the source and destination paths exist)Úgroups.ssh.functionsr>   r   r   ÚlenÚ	ExceptionÚstrÚuuidÚuuid4r   r4   r6   Úexec_commandÚreadÚdecodeÚstripÚlocalsÚosÚunlinkÚOSErrorÚpathÚdirnameÚbasenameÚrun_commandsÚtempfileÚNamedTemporaryFiler   Úget_fileÚput_file)r9   r:   r;   r<   r>   Ú	user_keysÚeÚtransfer_idÚtemp_zip_nameÚdest_folderÚ
source_sshÚ_ÚstdoutÚ
file_countÚstderrÚresultrD   Úarchive_pathÚtar_commandÚarchive_resultÚarchive_sizeÚ	temp_fileÚdest_sshÚdest_archive_pathÚextract_commandÚdest_file_counts                             r   Ú	sync_podsru   O   s‘
  € ð^6Ø=Ð=Ð=Ð=Ð=Ð=Ø%Ð%Ñ'Ô'ˆ	Øð 
	QÝŒJÐFÑGÔGÐGÝŒJ�r‰NŒNˆNÝŒJÐ8Ñ9Ô9Ð9ÝŒJÐ.Ñ/Ô/Ð/ÝŒJ�r‰NŒNˆNÝŒJÐ1Ñ2Ô2Ð2ÝŒJÐ5Ñ6Ô6Ð6ØˆFåŒJÐO¥C¨	¡N¤NÐOÐOÐOÑPÔPÐPÐPøÝð 6ð 6ð 6ÝŒ
ÐJÅ#ÀaÁ&Ä&ÐJÐJÑKÔKÐKÝŒ
Ð4Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5øøøøð6øøøõ 
„JÐh MÐhÐhÐ4DÐhÐhÈ+ÐhÐhÐXfÐhÐhÑiÔiÐiõ •d”j‘l”lÑ#Ô# B Q BÔ'€KØ0˜KÐ0Ð0Ð0€MØ'˜+Ð'Ð'€Kð`åŒ
ÐF°MÐFÐFÐFÑGÔGÐGÝÔ" =Ñ1Ô1ð (	?°Zõ ŒJÐFÐ1AÐFÐFÐFÑGÔGÐGØ%œ>×6Ò6Ð7aÐ?OÐ7aÐ7aÐ7aÑbÔb‰LˆAˆv�qØŸš™œ×-Ò-Ñ/Ô/×5Ò5Ñ7Ô7ˆJÝŒJÐK ZÐKÐKÐKÑLÔLÐLð !+¤× ;Ò ;Ð<~ÐGWÐ<~Ð<~Ð<~Ñ Ô ÑˆAˆv�vØ—[’[‘]”]×)Ò)Ñ+Ô+×1Ò1Ñ3Ô3ˆFØ˜Ò!Ð!Ý”
ÐrÐ:JÐrÐrÐcpÐrÐrÑsÔsÐsØð(	?ð (	?ð (	?ñ (	?ô (	?ð (	?ðp	Ø ¥F¡H¤HÐ,Ð,Ý”	˜/Ñ*Ô*Ð*Ð*Ð*ð -Ð,øåð 	ð 	ð 	àˆDˆDð	øøøõW ŒJÐHÐ3CÐHÐHÐHÑIÔIÐIØ2 =Ð2Ð2ˆLð D¥¤§¢Ð0@Ñ AÔ Að  Dð  DÐP\ð  Dð  DÕ_aÔ_f×_oÒ_oð  qAñ  `Bô  `Bð  Dð  DˆKØ×#Ò# [ MÑ2Ô2Ð2ð &œ>×6Ò6Ð7sÀ,Ð7sÐ7sÐ7sÑtÔt‰LˆAˆv�qØ#Ÿ[š[™]œ]×1Ò1Ñ3Ô3×9Ò9Ñ;Ô;ˆNØ Ò*Ð*Ý”
ÐNÑOÔOÐOØð5(	?ð (	?ð (	?ñ (	?ô (	?ð (	?ðp	Ø ¥F¡H¤HÐ,Ð,Ý”	˜/Ñ*Ô*Ð*Ð*Ð*ð -Ð,øåð 	ð 	ð 	àˆDˆDð	øøøð} &œ>×6Ò6Ð7XÀÐ7XÐ7XÐ7XÑYÔY‰LˆAˆv�qØ!Ÿ;š;™=œ=×/Ò/Ñ1Ô1×7Ò7Ñ9Ô9ˆLÝŒJÐK¸LÐKÐKÐKÑLÔLÐLõ ŒJÐHÑIÔIÐIÝÔ,°EÀ)ÐLÑLÔLð CÐPYØ"+¤.�Ø×#Ò# L°/ÑBÔBÐBðCð Cð Cñ Cô Cð Cð Cð Cð Cð Cð Cøøøð Cð Cð Cð Cð
 ×#Ò#Ð%<¨lÐ%<Ð%<Ð$=Ñ>Ô>Ð>ðQ(	?ð (	?ð (	?ñ (	?ô (	?ð (	?ð (	?ð (	?ð (	?ð (	?ð (	?øøøð (	?ð (	?ð (	?ð (	?õV 	Œ
ÐI¸ÐIÐIÐIÑJÔJÐJÝÔ" ;Ñ/Ô/ð  	@°8õ ŒJÐR¸~ÐRÐRÐRÑSÔSÐSØ×!Ò!Ð#?¨~Ð#?Ð#?Ð"@ÑAÔAÐAõ ŒJÐHÑIÔIÐIØ 7¨Ð 7Ð 7ÐØ×Ò˜oÐ/@ÑAÔAÐAõ ŒJÐV°^ÐVÐVÀkÐVÐVÐVÑWÔWÐWð X Nð  Xð  XÀð  Xð  XÐU`ð  Xð  Xð  pAð  Xð  Xð  XˆOØ×!Ò! ?Ð"3Ñ4Ô4Ð4ð $œ<×4Ò4Ð5k¸^Ð5kÐ5kÈkÐ5kÐ5kÐ5kÑlÔl‰LˆAˆv�qØ$Ÿkšk™mœm×2Ò2Ñ4Ô4×:Ò:Ñ<Ô<ˆOÝŒJÐO¨ÐOÐOÐOÑPÔPÐPð ×!Ò!Ð#?Ð,=Ð#?Ð#?Ð"@ÑAÔAÐAõ ŒJ�r‰NŒNˆNÝŒJÐ:Ñ;Ô;Ð;ÝŒJÐ>°*Ð>Ð>Ñ?Ô?Ð?ÝŒJÐa°[ÐaÐaÀ>ÐaÐaÐT_ÐaÐaÑbÔbÐbÝŒJ�r‰NŒNˆNÝŒJÐ9Ñ:Ô:Ð:ÝŒJÐ5¨Ð5Ð5Ñ6Ô6Ð6ÝŒJÐ> Ð>Ð>°Ð>Ð>Ñ?Ô?Ð?ðA 	@ð  	@ð  	@ñ  	@ô  	@ð  	@ð  	@ð  	@ð  	@ð  	@ð  	@øøøð  	@ð  	@ð  	@ð  	@øøõD ð Hð Hð HÝŒ
Ð5­S°©V¬VÐ5Ð5Ñ6Ô6Ð6ÝŒ
�2‰ŒˆÝŒ
Ð/Ñ0Ô0Ð0ÝŒ
ÐAÑBÔBÐBÝŒ
ÐfÑgÔgÐgÝŒ
Ð]Ñ^Ô^Ð^ÝŒ
ÐFÑGÔGÐGÐGÐGÐGÐGÐGøøøøðHøøøð	Ø ¥F¡H¤HÐ,Ð,Ý”	˜/Ñ*Ô*Ð*Ð*Ð*ð -Ð,øåð 	ð 	ð 	àˆDˆDð	øøøøð	Ø ¥F¡H¤HÐ,Ð,Ý”	˜/Ñ*Ô*Ð*Ð*ð -øåð 	ð 	ð 	àˆDð	øøøøøøs1  ‚BC Â"%C Ã
DÃ8DÄDÅ+,\= ÆDT
Ê\= Ê)$K Ë
KËKË"C-T
Ï\= Ï$P Ð
PÐPÐBT
Ò0SÓT
ÓS	ÓT
Ó!S	Ó"T
Ó>\= Ô
TÔ\= ÔTÔ/\= ÕG$\1Ü%\= Ü1\5Ü5\= Ü8\5Ü9\= Ü<`* Ü=
_-ÝB_(ß#`* ß(_-ß-`* ß1$` à
`'à&`'à*a"à,$aáa"á
aáa"áaáa")Ú__doc__rV   r]   rO   r   Úprettytabler   Úrunpodr   r   Úutilsr   Úgroupr   Úcommandr   ÚargumentÚoptionr/   r7   ru   r   r   r   ú<module>r~      sq  ððð ð 
€	€	€	Ø €€€Ø €€€Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #à 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'à Ð Ð Ð Ð Ð ð €„ˆUÐ9Ð:Ñ:Ô:ð1ð 1ñ ;Ô:ð1ð 	‡‚�ÑÔðð ñ Ôðð 	‡‚�ÑÔØ€„� Ð'Ñ'Ô'Ø€„ˆi Ð,KÐLÑLÔLØ€„ˆl DÐ/QÐRÑRÔRØ€„ˆm QÐ-UÐVÑVÔVØ€„Ø 4Ð.Vðñ ô ð9ð 9ñô ñ WÔVñ SÔRñ MÔLñ (Ô'ñ Ôð9ð6 	‡‚�ÑÔØ€„�ÑÔðð ñ Ôñ Ôðð 	‡‚�ÑÔØ€„�Ñ Ô Ø€„�ÑÔØ€„Ð"¨LÐ9Ñ9Ô9Ø€„Ð ¨,Ð7Ñ7Ô7ðcð cñ 8Ô7ñ :Ô9ñ Ôñ !Ô ñ Ôð
cð cð cr   