2021-04-08 15:32:31 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# Copyright Project Harbor Authors
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# Licensed under the Apache License, Version 2.0 (the "License");
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# you may not use this file except in compliance with the License.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# You may obtain a copy of the License at
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#	http://www.apache.org/licenses/LICENSE-2.0
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# Unless required by applicable law or agreed to in writing, software
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# distributed under the License is distributed on an "AS IS" BASIS,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# See the License for the specific language governing permissions and
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# limitations under the License
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								*** Settings ***
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Documentation  This resource provides helper functions for docker operations
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Library  OperatingSystem
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Library  Process
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								*** Keywords ***
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Run Docker Info
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [Arguments]  ${docker-params}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Wait Unitl Command Success  docker ${docker-params} info
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Pull image
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [Arguments]  ${ip}  ${user}  ${pwd}  ${project}  ${image}  ${tag}=${null}  ${is_robot}=${false}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Log To Console  \nRunning docker pull ${image}...
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ${image_with_tag}=  Set Variable If  '${tag}'=='${null}'  ${image}  ${image}:${tag}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Run Keyword If  ${is_robot}==${false}  Wait Unitl Command Success  docker login -u ${user} -p ${pwd} ${ip}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ...  ELSE  Wait Unitl Command Success  docker login -u robot\\\$${project}+${user} -p ${pwd} ${ip}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ${output}=  Docker Pull  ${ip}/${project}/${image_with_tag}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Log  ${output}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Log To Console  ${output}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Should Contain  ${output}  Digest:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Should Contain  ${output}  Status:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Should Not Contain  ${output}  No such image:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Push image
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    # If no tag provided in $(image_with_or_without_tag}, latest will be the tag pulled from docker-hub or read from local
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [Arguments]  ${ip}  ${user}  ${pwd}  ${project}  ${image_with_or_without_tag}  ${need_pull_first}=${true}  ${sha256}=${null}  ${is_robot}=${false}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ${d}=    Get Current Date    result_format=%m%s
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ${image_in_use}=  Set Variable If  '${sha256}'=='${null}'  ${image_with_or_without_tag}  ${image_with_or_without_tag}@sha256:${sha256}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ${image_in_use_with_tag}=  Set Variable If  '${sha256}'=='${null}'  ${image_with_or_without_tag}  ${image_with_or_without_tag}:${sha256}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Sleep  3
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Log To Console  \nRunning docker push ${image_with_or_without_tag}...
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ${image_in_use}=   Set Variable If  ${need_pull_first}==${true}  ${image_in_use}  ${image_with_or_without_tag}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Run Keyword If  ${need_pull_first}==${true}   Docker Pull  ${LOCAL_REGISTRY}/${LOCAL_REGISTRY_NAMESPACE}/${image_in_use}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Run Keyword If  ${is_robot}==${false}  Wait Unitl Command Success  docker login -u ${user} -p ${pwd} ${ip}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ...  ELSE  Wait Unitl Command Success  docker login -u robot\\\$${project}+${user} -p ${pwd} ${ip}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Run Keyword If  ${need_pull_first}==${true}  Wait Unitl Command Success  docker tag ${LOCAL_REGISTRY}/${LOCAL_REGISTRY_NAMESPACE}/${image_in_use} ${ip}/${project}/${image_in_use_with_tag}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ...  ELSE  Wait Unitl Command Success  docker tag ${image_in_use} ${ip}/${project}/${image_in_use_with_tag}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Wait Unitl Command Success  docker push ${ip}/${project}/${image_in_use_with_tag}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Wait Unitl Command Success  docker logout ${ip}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Sleep  1
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Push Image With Tag
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#tag1 is tag of image on docker hub,default latest,use a existed version if you do not want to use latest
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [Arguments]  ${ip}  ${user}  ${pwd}  ${project}  ${image}  ${tag}  ${tag1}=latest
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Log To Console  \nRunning docker push ${image}...
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Docker Pull  ${LOCAL_REGISTRY}/${LOCAL_REGISTRY_NAMESPACE}/${image}:${tag1}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Wait Unitl Command Success  docker login -u ${user} -p ${pwd} ${ip}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Wait Unitl Command Success  docker tag ${LOCAL_REGISTRY}/${LOCAL_REGISTRY_NAMESPACE}/${image}:${tag1} ${ip}/${project}/${image}:${tag}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Wait Unitl Command Success  docker push ${ip}/${project}/${image}:${tag}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Wait Unitl Command Success  docker logout ${ip}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Cannot Docker Login Harbor
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [Arguments]  ${ip}  ${user}  ${pwd}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Command Should be Failed  docker login -u ${user} -p ${pwd} ${ip}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Cannot Pull Image
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [Arguments]  ${ip}  ${user}  ${pwd}  ${project}  ${image}  ${tag}=${null}  ${err_msg}=${null}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ${image_with_tag}=  Set Variable If  '${tag}'=='${null}'  ${image}  ${image}:${tag}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Wait Unitl Command Success  docker login -u ${user} -p ${pwd} ${ip}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    FOR  ${idx}  IN RANGE  0  30
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        ${out}  Run Keyword And Ignore Error  Command Should be Failed  docker pull ${ip}/${project}/${image_with_tag}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Exit For Loop If  '${out[0]}'=='PASS'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Sleep  3
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    END
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Log To Console  Cannot Pull Image - Pull Log: ${out[1]}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Should Be Equal As Strings  '${out[0]}'  'PASS'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Run Keyword If  '${err_msg}' != '${null}'  Should Contain  ${out[1]}  ${err_msg}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Cannot Push image
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [Arguments]  ${ip}  ${user}  ${pwd}  ${project}  ${image}  ${err_msg}=${null}  ${err_msg_2}=${null}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Log To Console  \nRunning docker push ${image}...
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Docker Pull  ${LOCAL_REGISTRY}/${LOCAL_REGISTRY_NAMESPACE}/${image}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Wait Unitl Command Success  docker login -u ${user} -p ${pwd} ${ip}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Wait Unitl Command Success  docker tag ${LOCAL_REGISTRY}/${LOCAL_REGISTRY_NAMESPACE}/${image} ${ip}/${project}/${image}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ${output}=  Command Should be Failed  docker push ${ip}/${project}/${image}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Log To Console  ${output}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Run Keyword If  '${err_msg}' != '${null}'  Should Contain  ${output}  ${err_msg}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Run Keyword If  '${err_msg_2}' != '${null}'  Should Contain  ${output}  ${err_msg_2}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Wait Unitl Command Success  docker logout ${ip}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Wait Until Container Stops
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [Arguments]  ${container}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    FOR  ${idx}  IN RANGE  0  60
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        ${out}=  Run  docker %{VCH-PARAMS} inspect ${container} | grep Status
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        ${status}=  Run Keyword And Return Status  Should Contain  ${out}  exited
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Return From Keyword If  ${status}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Sleep  1
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    END
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Fail  Container did not stop within 60 seconds
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Hit Nginx Endpoint
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [Arguments]  ${vch-ip}  ${port}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Wait Unitl Command Success  wget ${vch-ip}:${port}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Get Container IP
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [Arguments]  ${docker-params}  ${id}  ${network}=default  ${dockercmd}=docker
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ${ip}=  Wait Unitl Command Success  ${dockercmd} ${docker-params} network inspect ${network} | jq '.[0].Containers."${id}".IPv4Address' | cut -d \\" -f 2 | cut -d \\/ -f 1
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [Return]  ${ip}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# The local dind version is embedded in Dockerfile
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# docker:1.13-dind
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# If you are running this keyword in a container, make sure it is run with --privileged turned on
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Start Docker Daemon Locally
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ${pid}=  Run  pidof dockerd
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    #${rc}  ${output}=  Run And Return Rc And Output  ./tests/robot-cases/Group0-Util/docker_config.sh
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    #Log  ${output}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    #Should Be Equal As Integers  ${rc}  0
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Return From Keyword If  '${pid}' != '${EMPTY}'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    OperatingSystem.File Should Exist  /usr/local/bin/dockerd-entrypoint.sh
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ${handle}=  Start Process  /usr/local/bin/dockerd-entrypoint.sh dockerd>./daemon-local.log 2>&1  shell=True
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Process Should Be Running  ${handle}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    FOR  ${IDX}  IN RANGE  5
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        ${pid}=  Run  pidof dockerd
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Exit For Loop If  '${pid}' != '${EMPTY}'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Sleep  2s
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    END
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Sleep  2s
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [Return]  ${handle}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Start Containerd Daemon Locally
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ${handle}=  Start Process  /usr/local/bin/containerd > ./daemon-local.log 2>&1 &  shell=True
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    FOR  ${IDX}  IN RANGE  5
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        ${pid}=  Run  pidof /usr/local/bin/containerd
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Log To Console  pid: ${pid}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Exit For Loop If  '${pid}' != '${EMPTY}'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Sleep  2s
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    END
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Sleep  2s
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [Return]  ${handle}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Restart Process Locally
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [Arguments]  ${process}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ${full_process}=  Set Variable If
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ...  '${process}'=='containerd'  /usr/local/bin/containerd  dockerd
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ${start_process_cmd}=  Set Variable If
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ...  '${process}'=='dockerd'  /usr/local/bin/dockerd-entrypoint.sh dockerd>./daemon-local.log 2>&1
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ...  '${process}'=='containerd'  ${full_process} > ./daemon-local.log 2>&1 &
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Should Be True  '${start_process_cmd}' != '${EMPTY}'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Run Keyword If  '${process}'=='dockerd'  OperatingSystem.File Should Exist  /usr/local/bin/dockerd-entrypoint.sh
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    FOR  ${IDX}  IN RANGE  5
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        ${pid}=  Run  pidof ${full_process}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Exit For Loop If  '${pid}' == '${EMPTY}'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        ${result}=  Run  kill ${pid}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Log To Console  Kill docker process: ${result}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Sleep  2s
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    END
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ${pid}=  Run  pidof ${full_process}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Should Be Equal As Strings  '${pid}'  '${EMPTY}'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ${result}=  Run  rm -rf /var/lib/${process}/*
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Log All  Clear /var/lib/${process}: ${result}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ${handle}=  Start Process  ${start_process_cmd}  shell=True
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Log All  handle : ${handle}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    FOR  ${IDX}  IN RANGE  5
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        ${pid}=  Run  pidof ${full_process}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Log All  pid : ${pid}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Exit For Loop If  '${pid}' != '${EMPTY}'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Sleep  2s
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    END
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Sleep  2s
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    #Process Should Be Running  ${handle}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ${result}=  Run  ps aux |grep ${full_process}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Log All  result : ${result}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [Return]  ${handle}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Prepare Docker Cert In Ubuntu
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [Arguments]  ${ip}  ${cert}
							 
						 
					
						
							
								
									
										
										
										
											2021-03-17 22:33:02 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    Wait Unitl Command Success  rm -rf ~/.docker/
							 
						 
					
						
							
								
									
										
										
										
											2021-04-08 15:32:31 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    Wait Unitl Command Success  mkdir -p /etc/docker/certs.d/${ip}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Wait Unitl Command Success  cp ${cert} /etc/docker/certs.d/${ip}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Wait Unitl Command Success  cp ${cert} /usr/local/share/ca-certificates/
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    #Add pivotal ecs cert for docker manifest push test.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Wait Unitl Command Success  cp /ecs_ca/vmwarecert.crt /usr/local/share/ca-certificates/
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Wait Unitl Command Success  update-ca-certificates
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Prepare Docker Cert In Photon
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [Arguments]  ${ip}  ${cert}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Log All  Prepare Docker Cert In Photon ${cert}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ${rc}  ${output}=  Run And Return Rc and Output  cat ${cert}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Log All  CA output: ${output}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Wait Unitl Command Success  cat ${cert} >> /etc/pki/tls/certs/ca-bundle.crt
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Wait Unitl Command Success  mkdir -p /etc/docker/certs.d/${ip}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Wait Unitl Command Success  cp ${cert} /etc/docker/certs.d/${ip}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Kill Local Docker Daemon
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [Arguments]  ${handle}  ${dockerd-pid}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Terminate Process  ${handle}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Process Should Be Stopped  ${handle}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Wait Unitl Command Success  kill -9 ${dockerd-pid}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-06-08 14:44:00 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								Clean All Local Images
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ${rc}  ${out}=  Run Keyword And Ignore Error  Run  docker rmi -f $(docker images -a -q)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Log All  ${out}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ${rc}  ${out}=  Run Keyword And Ignore Error  Run  docker system prune -a -f
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Log All  ${out}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-04-08 15:32:31 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								Docker Login Fail
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [Arguments]  ${ip}  ${user}  ${pwd}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Log To Console  \nRunning docker login ${ip} ...
							 
						 
					
						
							
								
									
										
										
										
											2022-09-06 14:15:45 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    ${prev_lvl}  Set Log Level  NONE
							 
						 
					
						
							
								
									
										
										
										
											2021-04-08 15:32:31 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    ${output}=  Command Should be Failed  docker login -u ${user} -p ${pwd} ${ip}
							 
						 
					
						
							
								
									
										
										
										
											2022-09-06 14:15:45 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    ${prev_lvl}  Set Log Level  ${prev_lvl}
							 
						 
					
						
							
								
									
										
										
										
											2021-04-08 15:32:31 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    Should Contain  ${output}  unauthorized
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Should Not Contain  ${output}  500 Internal Server Error
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Docker Login
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [Arguments]  ${server}  ${username}  ${password}
							 
						 
					
						
							
								
									
										
										
										
											2022-09-06 14:15:45 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    ${prev_lvl}  Set Log Level  NONE
							 
						 
					
						
							
								
									
										
										
										
											2021-04-08 15:32:31 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    Wait Unitl Command Success  docker login -u ${username} -p ${password} ${server}
							 
						 
					
						
							
								
									
										
										
										
											2022-09-06 14:15:45 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    ${prev_lvl}  Set Log Level  ${prev_lvl}
							 
						 
					
						
							
								
									
										
										
										
											2021-04-08 15:32:31 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-20 17:26:05 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								Docker Logout
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [Arguments]  ${server}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Wait Unitl Command Success  docker logout ${server}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-04-08 15:32:31 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								Docker Pull
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [Arguments]  ${image}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ${output}=  Retry Keyword N Times When Error  6  Wait Unitl Command Success  docker pull ${image}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Log All  Docker Pull: ${output}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [Return]  ${output}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Docker Tag
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [Arguments]  ${src_image}   ${dst_image}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Wait Unitl Command Success  docker tag ${src_image} ${dst_image}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Docker Push
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [Arguments]  ${image}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Wait Unitl Command Success  docker push ${image}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Docker Push Index
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [Arguments]  ${ip}  ${user}  ${pwd}  ${index}  ${image1}  ${image2}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ${rc}  ${output}=  Run And Return Rc And Output  ./tests/robot-cases/Group0-Util/docker_push_manifest_list.sh ${ip} ${user} ${pwd} ${index} ${image1} ${image2}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Log  ${output}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Should Be Equal As Integers  ${rc}  0
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Docker Image Can Not Be Pulled
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [Arguments]  ${image}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    FOR  ${idx}  IN RANGE  0  30
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        ${out}=  Run Keyword And Ignore Error  Docker Login  ""  ${DOCKER_USER}  ${DOCKER_PWD}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Log To Console  Return value is ${out}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        ${out}=  Run Keyword And Ignore Error  Command Should be Failed  docker pull ${image}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Exit For Loop If  '${out[0]}'=='PASS'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Log To Console  Docker pull return value is ${out}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Sleep  3
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    END
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Log To Console  Cannot Pull Image From Docker - Pull Log: ${out[1]}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Should Be Equal As Strings  '${out[0]}'  'PASS'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-10-30 20:07:01 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								Docker Image Can Not Be Pulled With Credential
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [Arguments]  ${server}  ${username}  ${password}  ${image}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    FOR  ${idx}  IN RANGE  0  30
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        ${out}=  Run Keyword And Ignore Error  Docker Login  ${server}  ${username}  ${password}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Log To Console  Return value is ${out}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        ${out}=  Run Keyword And Ignore Error  Command Should be Failed  docker pull ${image}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Exit For Loop If  '${out[0]}'=='PASS'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Log To Console  Docker pull return value is ${out}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Sleep  3
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    END
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Log To Console  Cannot Pull Image From Docker - Pull Log: ${out[1]}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Should Be Equal As Strings  '${out[0]}'  'PASS'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-04-08 15:32:31 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								Docker Image Can Be Pulled
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [Arguments]  ${image}  ${period}=60  ${times}=2
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    FOR  ${n}  IN RANGE  1  ${times}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Sleep  ${period}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        ${out}=  Run Keyword And Ignore Error  Docker Login  ""  ${DOCKER_USER}  ${DOCKER_PWD}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Log To Console  Return value is ${out}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        ${out}=  Run Keyword And Ignore Error  Docker Pull  ${image}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Log To Console  Return value is ${out[0]}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Exit For Loop If  '${out[0]}'=='PASS'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Sleep  5
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    END
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Run Keyword If  '${out[0]}'=='FAIL'  Capture Page Screenshot
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Should Be Equal As Strings  '${out[0]}'  'PASS'
							 
						 
					
						
							
								
									
										
										
										
											2024-10-30 20:07:01 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Docker Image Can Be Pulled With Credential
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [Arguments]  ${server}  ${username}  ${password}  ${image}  ${period}=60  ${times}=2
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    FOR  ${n}  IN RANGE  1  ${times}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Sleep  ${period}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        ${out}=  Run Keyword And Ignore Error  Docker Login  ${server}  ${username}  ${password}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Log To Console  Return value is ${out}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        ${out}=  Run Keyword And Ignore Error  Docker Pull  ${image}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Log To Console  Return value is ${out[0]}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Exit For Loop If  '${out[0]}'=='PASS'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Sleep  5
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    END
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Run Keyword If  '${out[0]}'=='FAIL'  Capture Page Screenshot
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    Should Be Equal As Strings  '${out[0]}'  'PASS'