Append 3 more punt path protection TCs
[integration/test.git] / csit / libraries / NexusKeywords.robot
index 2441000568d95d4a3f6f60a6ffe3d65e54dc5e8c..09f2a4fb6279a9096c3e911ff7b8cb2a9241b7e0 100644 (file)
@@ -18,11 +18,14 @@ Library           Collections
 Library           OperatingSystem
 Library           SSHLibrary
 Library           String
+Library           XML
+Library           Collections
+Library           RequestsLibrary
 Resource          ${CURDIR}/SSHKeywords.robot
 Resource          ${CURDIR}/Utils.robot
 
 *** Variables ***
-&{COMPONENT_MAPPING}    netconf=netconf-impl    bgpcep=pcep-impl    yangtools=yang-data-impl    carpeople=clustering-it-model
+&{COMPONENT_MAPPING}    netconf=netconf-impl    bgpcep=pcep-impl    carpeople=clustering-it-model    yangtools=yang-data-impl    bindingv1=mdsal-binding-generator-impl
 ${JDKVERSION}     None
 ${JAVA_7_HOME_CENTOS}    /usr/lib/jvm/java-1.7.0
 ${JAVA_7_HOME_UBUNTU}    /usr/lib/jvm/java-7-openjdk-amd64
@@ -36,6 +39,8 @@ ${MAVEN_REPOSITORY_PATH}    /tmp/r
 ${MAVEN_SETTINGS_URL}    https://raw.githubusercontent.com/opendaylight/odlparent/master/settings.xml
 ${MAVEN_VERSION}    3.3.9
 ${NEXUS_FALLBACK_URL}    ${NEXUSURL_PREFIX}/content/repositories/opendaylight.snapshot
+${NEXUS_RELEASE_BASE_URL}    https://nexus.opendaylight.org/content/repositories/opendaylight.release
+${NEXUS_RELEASES_URL}    ${NEXUS_RELEASE_BASE_URL}/org/opendaylight/integration/distribution-karaf
 
 *** Keywords ***
 Initialize_Artifact_Deployment_And_Usage
@@ -259,3 +264,68 @@ Run_Maven
     SSHKeywords.Execute_Command_At_Cwd_Should_Pass    mkdir -p '${MAVEN_REPOSITORY_PATH}'
     ${maven_repository_options} =    BuiltIn.Set_Variable    -Dmaven.repo.local=${MAVEN_REPOSITORY_PATH} -Dorg.ops4j.pax.url.mvn.localRepository=${MAVEN_REPOSITORY_PATH}
     SSHKeywords.Execute_Command_At_Cwd_Should_Pass    ${maven_bash_command} clean install dependency:tree -V -B -DoutputFile=dependency_tree.log -s './settings.xml' -f '${pom_file}' ${MAVEN_OPTIONS} ${maven_repository_options} > '${log_file}'
+
+Get_ODL_Versions_From_Nexus
+    [Documentation]    Returns name of last release found on nexus and list of all versions.
+    RequestsLibrary.Create_Session    nexus    ${NEXUS_RELEASES_URL}    verify=${TRUE}
+    ${uri}=    BuiltIn.Set_Variable    maven-metadata.xml
+    ${response}=    RequestsLibrary.Get_Request    nexus    ${uri}
+    BuiltIn.Log    ${response.text}
+    ${root}=    XML.Parse_XML    ${response.text}
+    ${element}=    XML.Get_Element    ${root}    versioning/latest
+    ${latest}=    BuiltIn.Set_Variable    ${element.text}
+    BuiltIn.Log    ${latest}
+    @{elements}=    XML.Get_Elements    ${root}    .//version
+    ${versions}=    BuiltIn.Create_List
+    : FOR    ${element}    IN    @{elements}
+    \    Collections.Append_To_List    ${versions}    ${element.text}
+    Collections.Sort_List    ${versions}
+    BuiltIn.Log_Many    @{versions}
+    [Return]    ${latest}    @{versions}
+
+Get_Latest_ODL_Release_From_Nexus
+    [Documentation]    Returns name of last release found on nexus
+    ${latest}    @{versions}=    Get_ODL_Versions_From_Nexus
+    [Return]    ${latest}
+
+Get_Latest_ODL_Stream_Release
+    [Arguments]    ${stream}=latest
+    [Documentation]    Returns name for last release for specified stream.
+    ${latest}    @{versions}=    Get_ODL_Versions_From_Nexus
+    BuiltIn.Return_From_Keyword_If    '${stream}'=='latest'    ${latest}
+    ${latest_version}=    BuiltIn.Set_Variable    xxx
+    : FOR    ${version}    IN    @{versions}
+    \    ${latest_version}=    BuiltIn.Set_Variable_If    '${stream}'.title() in '${version}'    ${version}    ${latest_version}
+    BuiltIn.Run_Keyword_If    '${latest_version}'=='xxx'    BuiltIn.Fail    Could not find latest release for stream ${stream}
+    BuiltIn.Log    ${latest_version}
+    [Return]    ${latest_version}
+
+Get_Latest_ODL_Stream_Release_URL
+    [Arguments]    ${stream}=latest    ${format}=.zip
+    [Documentation]    Returns URL for last release for specified stream. Default format is .zip.
+    ${latest_version}=    Get_Latest_ODL_Stream_Release    ${stream}
+    ${url}=    BuiltIn.Set_Variable    ${NEXUS_RELEASES_URL}/${latest_version}/distribution-karaf-${latest_version}${format}
+    BuiltIn.Log    ${url}
+    [Return]    ${url}
+
+Get_Latest_ODL_Previous_Stream_Release
+    [Arguments]    ${stream}=${ODL_STREAM}
+    [Documentation]    Returns name for last release for previous stream of specified stream.
+    ...    Note: If specified stream is not found on nexus, then it is taken as new one (not released yet).
+    ...    So in this case, latest release version is return.
+    ${latest}    @{versions}=    Get_ODL_Versions_From_Nexus
+    ${latest_version}=    BuiltIn.Set_Variable    xxx
+    : FOR    ${version}    IN    @{versions}
+    \    BuiltIn.Exit_For_Loop_If    '${stream}'.title() in '${version}'
+    \    ${latest_version}=    BuiltIn.Set_Variable    ${version}
+    BuiltIn.Run_Keyword_If    '${latest_version}'=='xxx'    BuiltIn.Fail    Could not find latest previous release for stream ${stream}
+    BuiltIn.Log    ${latest_version}
+    [Return]    ${latest_version}
+
+Get_Latest_ODL_Previous_Stream_Release_URL
+    [Arguments]    ${stream}=${ODL_STREAM}    ${format}=.zip
+    [Documentation]    Returns URL for last release for previous stream of specified stream. Default format is .zip.
+    ${latest_version}=    Get_Latest_ODL_Previous_Stream_Release    ${stream}
+    ${url}=    BuiltIn.Set_Variable    ${NEXUS_RELEASES_URL}/${latest_version}/distribution-karaf-${latest_version}${format}
+    BuiltIn.Log    ${url}
+    [Return]    ${url}