2018-09-19 18:57:15 +02:00
# Copyright Project Harbor Authors
2017-08-07 08:02:38 +02:00
#
# 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 any keywords related to the Harbor private registry appliance
Resource ../../resources/Util.robot
*** Variables ***
*** Keywords ***
2019-08-30 11:12:07 +02:00
Filter Replicatin Rule
[Arguments] ${ruleName}
${rule_name_element}= Set Variable xpath=//clr-dg-cell[contains(.,'${ruleName}')]
Retry Element Click ${filter_rules_btn}
Retry Text Input ${filter_rules_input} ${ruleName}
Retry Wait Until Page Contains Element ${rule_name_element}
Capture Page Screenshot filter_replic_${ruleName}.png
2019-06-03 10:58:24 +02:00
Select Dest Registry
[Arguments] ${endpoint}
Retry Element Click ${dest_registry_dropdown_list}
Retry Element Click ${dest_registry_dropdown_list}//option[contains(.,'${endpoint}')]
Select Source Registry
[Arguments] ${endpoint}
Retry Element Click ${src_registry_dropdown_list}
Retry Element Click ${src_registry_dropdown_list}//option[contains(.,'${endpoint}')]
Select Trigger
[Arguments] ${mode}
Retry Element Click ${rule_trigger_select}
Retry Element Click ${rule_trigger_select}//option[contains(.,'${mode}')]
2019-08-30 11:12:07 +02:00
Select Destination URL
[Arguments] ${type}
2019-10-30 07:08:34 +01:00
Retry Element Click ${destination_url_xpath}
Retry Element Click //div[contains(@class, 'selectBox')]//li[contains(.,'${type}')]
2019-08-30 11:12:07 +02:00
2018-03-20 06:25:03 +01:00
Check New Rule UI Without Endpoint
2019-04-22 03:58:02 +02:00
Retry Element Click ${new_replication-rule_button}
Page Should Contain Please add an endpoint first
Retry Element Click ${link_to_registries}
Retry Wait Until Page Contains Endpoint URL
Retry Wait Element ${new_endpoint_button}
2018-01-03 06:41:31 +01:00
2018-03-20 06:25:03 +01:00
Create A New Endpoint
2019-04-23 09:33:04 +02:00
[Arguments] ${provider} ${name} ${url} ${username} ${pwd} ${save}=Y
2018-03-20 06:25:03 +01:00
#click new button
2019-04-23 09:33:04 +02:00
Retry Element Click xpath=${new_endpoint_button}
2018-03-20 06:25:03 +01:00
#input necessary info
2019-04-23 09:33:04 +02:00
Select From List By Value ${provider_selector} ${provider}
Retry Text Input xpath=${destination_name_xpath} ${name}
2019-08-30 11:12:07 +02:00
Run Keyword If '${provider}' == 'harbor' Run keyword Retry Text Input xpath=${destination_url_xpath} ${url}
Run Keyword If '${provider}' == 'aws-ecr' or '${provider}' == 'google-gcr' Run keyword Select Destination URL ${url}
Run Keyword If '${provider}' != 'google-gcr' Retry Text Input xpath=${destination_username_xpath} ${username}
2019-04-23 09:33:04 +02:00
Retry Text Input xpath=${destination_password_xpath} ${pwd}
2018-03-20 06:25:03 +01:00
#cancel verify cert since we use a selfsigned cert
2019-04-23 09:33:04 +02:00
Retry Element Click ${destination_insecure_xpath}
Run Keyword If '${save}' == 'Y' Run keyword Retry Double Keywords When Error Retry Element Click ${replication_save_xpath} Retry Wait Until Page Not Contains Element ${replication_save_xpath}
2019-04-24 05:20:26 +02:00
Run Keyword If '${save}' == 'Y' Run keyword Retry Wait Until Page Contains ${name}
2018-03-20 06:25:03 +01:00
Run Keyword If '${save}' == 'N' No Operation
2017-09-07 12:29:05 +02:00
2018-03-20 06:25:03 +01:00
Create A Rule With Existing Endpoint
2019-06-03 10:58:24 +02:00
[Arguments] ${name} ${replication_mode} ${project_name} ${resource_type} ${endpoint} ${dest_namespace}
2019-05-09 09:44:48 +02:00
... ${mode}=Manual
2018-03-20 06:25:03 +01:00
#click new
2019-05-09 09:44:48 +02:00
Retry Element Click ${new_name_xpath}
2018-03-20 06:25:03 +01:00
#input name
2019-05-09 09:44:48 +02:00
Retry Text Input ${rule_name} ${name}
2019-06-03 10:58:24 +02:00
Run Keyword If '${replication_mode}' == 'push' Run Keywords Retry Element Click ${replication_mode_radio_push}
... AND Select Dest Registry ${endpoint}
... ELSE Run Keywords Retry Element Click ${replication_mode_radio_pull}
... AND Select Source Registry ${endpoint}
2018-03-20 06:25:03 +01:00
#set filter
2019-05-09 09:44:48 +02:00
Retry Text Input ${source_project} ${project_name}
Run Keyword And Ignore Error Select From List By Value ${rule_resource_selector} ${resource_type}
2019-06-03 10:58:24 +02:00
Retry Text Input ${dest_namespace_xpath} ${dest_namespace}
2019-04-23 09:33:04 +02:00
#set trigger
2019-06-03 10:58:24 +02:00
Select Trigger ${mode}
2019-05-09 09:44:48 +02:00
Run Keyword If '${mode}' == 'Scheduled' Log To Console Scheduled
2018-04-25 10:24:11 +02:00
#click save
2019-05-09 09:44:48 +02:00
Retry Double Keywords When Error Retry Element Click ${rule_save_button} Retry Wait Until Page Not Contains Element ${rule_save_button}
2019-09-12 07:56:56 +02:00
Sleep 2
2018-04-25 10:24:11 +02:00
2018-03-20 06:25:03 +01:00
Endpoint Is Unpingable
2019-04-23 09:33:04 +02:00
Retry Element Click ${ping_test_button}
2018-03-20 06:25:03 +01:00
Wait Until Page Contains Failed
Endpoint Is Pingable
2019-04-23 09:33:04 +02:00
Retry Element Click ${ping_test_button}
2018-03-20 06:25:03 +01:00
Wait Until Page Contains successfully
Disable Certificate Verification
Checkbox Should Be Selected ${destination_insecure_checkbox}
2019-04-23 09:33:04 +02:00
Retry Element Click ${destination_insecure_xpath}
2018-03-20 06:25:03 +01:00
Sleep 1
Enable Certificate Verification
Checkbox Should Not Be Selected ${destination_insecure_checkbox}
2019-04-23 09:33:04 +02:00
Retry Element Click ${destination_insecure_xpath}
2018-03-20 06:25:03 +01:00
Sleep 1
Switch To Registries
2019-04-23 09:33:04 +02:00
Retry Element Click ${nav_to_registries}
2018-03-20 06:25:03 +01:00
Sleep 1
Switch To Replication Manage
2019-04-23 09:33:04 +02:00
Retry Element Click ${nav_to_replications}
2018-03-20 06:25:03 +01:00
Sleep 1
Trigger Replication Manual
[Arguments] ${rule}
2019-04-23 09:33:04 +02:00
Retry Element Click ${rule_filter_search}
2019-05-09 09:44:48 +02:00
Retry Text Input ${rule_filter_input} ${rule}
2019-04-23 09:33:04 +02:00
Retry Element Click //clr-dg-row[contains(.,'${rule}')]//label
Retry Element Click ${action_bar_replicate}
2019-05-09 09:44:48 +02:00
Retry Wait Until Page Contains Element ${dialog_replicate}
#change from click to mouse down and up
2018-06-05 12:51:11 +02:00
Mouse Down ${dialog_replicate}
Mouse Up ${dialog_replicate}
2018-05-24 13:53:23 +02:00
Sleep 2
2019-09-05 09:13:13 +02:00
Retry Wait Until Page Contains Element //*[@id='contentAll']//div[contains(.,'${rule}')]/../div/clr-icon[@shape='success-standard']
2018-05-24 13:53:23 +02:00
Sleep 1
2018-03-20 06:25:03 +01:00
Rename Rule
[Arguments] ${rule} ${newname}
2019-04-23 09:33:04 +02:00
Retry Element Click ${rule_filter_search}
2019-05-09 09:44:48 +02:00
Retry Text Input ${rule_filter_input} ${rule}
2019-04-23 09:33:04 +02:00
Retry Element Click //clr-dg-row[contains(.,'${rule}')]//label
Retry Element Click ${action_bar_edit}
2019-05-09 09:44:48 +02:00
Retry Text Input ${rule_name} ${newname}
2019-04-23 09:33:04 +02:00
Retry Element Click ${rule_save_button}
2018-03-20 06:25:03 +01:00
Delete Rule
2019-05-09 09:44:48 +02:00
[Arguments] ${rule}
2019-04-23 09:33:04 +02:00
Retry Element Click ${rule_filter_search}
2019-05-09 09:44:48 +02:00
Retry Text Input ${rule_filter_input} ${rule}
2019-04-23 09:33:04 +02:00
Retry Element Click //clr-dg-row[contains(.,'${rule}')]//label
Retry Element Click ${action_bar_delete}
2019-05-09 09:44:48 +02:00
Retry Wait Until Page Contains Element ${dialog_delete}
2018-06-05 12:51:11 +02:00
#change from click to mouse down and up
Mouse Down ${dialog_delete}
Mouse Up ${dialog_delete}
2018-05-21 13:04:02 +02:00
Sleep 2
2018-03-20 06:25:03 +01:00
2018-03-20 11:11:39 +01:00
Filter Rule
2019-05-09 09:44:48 +02:00
[Arguments] ${rule}
2019-04-23 09:33:04 +02:00
Retry Element Click ${rule_filter_search}
2019-05-09 09:44:48 +02:00
Retry Text Input ${rule_filter_input} ${rule}
2018-03-20 11:11:39 +01:00
Sleep 1
Select Rule
[Arguments] ${rule}
2019-04-23 09:33:04 +02:00
Retry Element Click //clr-dg-row[contains(.,'${rule}')]//label
2018-03-20 11:11:39 +01:00
2018-03-20 06:25:03 +01:00
Stop Jobs
2019-04-23 09:33:04 +02:00
Retry Element Click ${stop_jobs_button}
2018-03-20 06:25:03 +01:00
View Job Log
[arguments] ${job}
2019-04-23 09:33:04 +02:00
Retry Element Click ${job_filter_search}
2019-05-09 09:44:48 +02:00
Retry Text Input ${job_filter_input} ${job}
Retry Link Click //clr-dg-row[contains(.,'${job}')]//a
2018-03-20 06:25:03 +01:00
2019-06-03 10:58:24 +02:00
Find Item And Click Edit Button
[Arguments] ${name}
Filter Object ${name}
Retry Select Object ${name}
Retry Element Click ${action_bar_edit}
Find Item And Click Delete Button
[Arguments] ${name}
Filter Object ${name}
Retry Select Object ${name}
Retry Element Click ${action_bar_delete}
2020-01-08 09:33:02 +01:00
Switch To Replication Manage Page
2019-06-03 10:58:24 +02:00
[Arguments] ${name}
Switch To Registries
Switch To Replication Manage
2020-01-08 09:33:02 +01:00
Edit Replication Rule By Name
[Arguments] ${name}
Retry Double Keywords When Error Switch To Replication Manage Page "NULL" Find Item And Click Edit Button ${name}
2019-06-03 10:58:24 +02:00
Delete Replication Rule By Name
[Arguments] ${name}
Switch To Registries
Switch To Replication Manage
Find Item And Click Delete Button ${name}
Ensure Delete Replication Rule By Name
[Arguments] ${name}
Delete Replication Rule By Name ${name}
Retry Double Keywords When Error Retry Element Click ${delete_confirm_btn} Retry Wait Until Page Not Contains Element ${delete_confirm_btn}
Retry Wait Element xpath=//clr-dg-placeholder[contains(.,\"We couldn\'t find any replication rules!\")]
2018-03-20 06:25:03 +01:00
Rename Endpoint
[arguments] ${name} ${newname}
2019-06-03 10:58:24 +02:00
Find Item And Click Edit Button ${name}
2019-05-09 09:44:48 +02:00
Retry Wait Until Page Contains Element ${destination_name_xpath}
Retry Text Input ${destination_name_xpath} ${newname}
2019-04-23 09:33:04 +02:00
Retry Element Click ${replication_save_xpath}
2018-03-20 06:25:03 +01:00
Delete Endpoint
[Arguments] ${name}
2019-04-23 09:33:04 +02:00
Retry Element Click ${endpoint_filter_search}
2019-05-09 09:44:48 +02:00
Retry Text Input ${endpoint_filter_input} ${name}
2018-03-20 06:25:03 +01:00
#click checkbox before target endpoint
2019-08-01 09:10:54 +02:00
Retry Double Keywords When Error Retry Element Click //clr-dg-row[contains(.,'${name}')]//clr-checkbox-wrapper Retry Wait Element ${action_bar_delete}
2019-04-23 09:33:04 +02:00
Retry Element Click ${action_bar_delete}
2018-03-20 06:25:03 +01:00
Wait Until Page Contains Element ${dialog_delete}
2019-04-23 09:33:04 +02:00
Retry Element Click ${dialog_delete}
2019-05-09 09:44:48 +02:00
Select Rule And Replicate
[Arguments] ${rule_name}
Retry Element Click //hbr-list-replication-rule//clr-dg-cell[contains(.,'${rule_name}')]
Retry Element Click ${replication_exec_id}
Retry Double Keywords When Error Retry Element Click xpath=${dialog_replicate} Retry Wait Until Page Not Contains Element xpath=${dialog_replicate}
2019-10-29 11:18:05 +01:00
Select Rule And Click Edit Button
[Arguments] ${rule_name}
Retry Element Click //clr-dg-row[contains(.,'${rule_name}')]//clr-radio-wrapper/label
Retry Element Click ${edit_replication_rule_id}
2019-05-09 09:44:48 +02:00
Delete Replication Rule
[Arguments] ${name}
Retry Element Click ${endpoint_filter_search}
Retry Text Input ${endpoint_filter_input} ${name}
#click checkbox before target endpoint
Retry Element Click //clr-dg-row[contains(.,'${name}')]//label
Retry Element Click ${action_bar_delete}
Wait Until Page Contains Element ${dialog_delete}
2019-11-27 03:28:16 +01:00
Retry Element Click ${dialog_delete}
Image Should Be Replicated To Project
[Arguments] ${project} ${image} ${period}=60 ${times}=10
:For ${n} IN RANGE 1 ${times}
\ Sleep ${period}
\ Go Into Project ${project}
\ Switch To Project Repo
\ #In AWS-ECR, under repository a, there're only several images: httpd,alpine,hello-world.
\ ${out} Run Keyword And Ignore Error Retry Wait Until Page Contains ${project}/${image}
\ Log To Console Return value is ${out[0]}
\ Exit For Loop If '${out[0]}'=='PASS'
\ Sleep 5
Run Keyword If '${out[0]}'=='FAIL' Capture Page Screenshot
Should Be Equal As Strings '${out[0]}' 'PASS'