
    Vh                        d Z ddlmZ ddlZddlmZ ddlmZ ddlm	Z	 ddl
mZmZ d	d
lmZmZmZ  G d de      Z G d de      Zy)z'OpenShift plugin for integration tests.    )annotationsN   )read_text_file)display)IntegrationConfig)run_support_containerwait_for_file   )CloudEnvironmentCloudEnvironmentConfigCloudProviderc                  H     e Zd ZdZd fdZd fdZddZddZd	dZ xZ	S )
OpenShiftCloudProviderzKOpenShift cloud provider plugin. Sets up cloud resources before delegation.c                R    t         |   |d       d| _        d| _        d| _        y )Nz.kubeconfig)config_extensionz'quay.io/ansible/openshift-origin:v3.9.0T)super__init__imageuses_dockeruses_config)selfargs	__class__s     k/home/dcms/DCMS/lib/python3.12/site-packages/ansible_test/_internal/commands/integration/cloud/openshift.pyr   zOpenShiftCloudProvider.__init__!   s.    > ?
    c                    t         |           | j                         r| j                          y| j	                          y)zKSetup the cloud resource before delegation and register a cleanup callback.N)r   setup_use_static_config_setup_static_setup_dynamic)r   r   s    r   r   zOpenShiftCloudProvider.setup*   s0    ""$ !r   c                    t        | j                        }t        j                  d|t        j                        }|st        j                  d       yy)z<Configure OpenShift tests for use with static configuration.z^ *server: (?P<server>.*)$flagsz0Could not find OpenShift endpoint in kubeconfig.N)r   config_static_pathresearch	MULTILINEr   warning)r   configmatchs      r   r   z$OpenShiftCloudProvider._setup_static3   s>     7 78		7r||TOONO r   c                2   d}|g}dddd|z  g}t        | j                  | j                  | j                  d||      }|sy| j                  j                  rd	}n-| j                  |j                  d
|j                  d|d      }| j                  |       y)z*Create a OpenShift container using docker.i   startmasterz--listenzhttps://0.0.0.0:%dzopenshift-origin)cmdNz	# Unknownzhttps://:/)r   r   platformr   explain_get_configname_write_config)r   portportsr.   
descriptorr)   s         r   r    z%OpenShiftCloudProvider._setup_dynamic<   s     
 *.BT.IJ*IIMMJJ

 99 F%%joo:??\`7abF6"r   c                    t        | j                  |ddd      }|}t        j                  dd|t        j                        }t        j                  dd	|z  |t        j                        }|S )
z$Get OpenShift config from container.z>/var/lib/origin/openshift.local.config/master/admin.kubeconfig
      )sleeptriesz$^( *)certificate-authority-data: .*$z \1insecure-skip-tls-verify: truer"   z^( *)server: .*$z\1server: %s)r	   r   r%   subr'   )r   container_nameserverstdoutr)   s        r   r3   z"OpenShiftCloudProvider._get_configY   sz    tyy.:z  CE  MO  P?Adfltv  uA  uA  B+_v-EvUWUaUabr   )r   r   returnNone)rB   rC   )r?   strr@   rD   rB   rD   )
__name__
__module____qualname____doc__r   r   r   r    r3   __classcell__)r   s   @r   r   r      s     U "P#:r   r   c                      e Zd ZdZddZy)OpenShiftCloudEnvironmentzZOpenShift cloud environment plugin. Updates integration test environment after delegation.c                F    t        | j                        }t        |      S )zRReturn environment configuration for use in the test environment after delegation.)K8S_AUTH_KUBECONFIG)env_vars)dictconfig_pathr   )r   rN   s     r   get_environment_configz0OpenShiftCloudEnvironment.get_environment_configg   s'     $ 0 0
 &
 	
r   N)rB   r   )rE   rF   rG   rH   rQ    r   r   rK   rK   d   s
    d
r   rK   )rH   
__future__r   r%   ior   utilr   r)   r   
containersr   r	    r   r   r   r   rK   rR   r   r   <module>rX      sH    - " 	
 C] CL
 0 
r   