Bump pre-commit black to 22.1.0
[integration/test.git] / csit / libraries / NexusKeywords.robot
index 929a91264ccfd8dfa7b9b3060bd971aa6184634c..120bb6b7c3f7a9103d414ca89491038ba2a5ec68 100644 (file)
@@ -26,8 +26,8 @@ Resource          ${CURDIR}/SSHKeywords.robot
 Resource          ${CURDIR}/Utils.robot
 
 *** Variables ***
-&{COMPONENT_MAPPING}    netconf=netconf-impl    bgpcep=pcep-impl    carpeople=clustering-it-model    yangtools=yang-data-impl    bindingv1=mdsal-binding-generator-impl
-@{RELEASE_INTEGRATED_COMPONENTS}    mdsal    odlparent    yangtools
+&{COMPONENT_MAPPING}    netconf=netconf-impl    bgpcep=pcep-impl    carpeople=clustering-it-model    yangtools=yang-data-impl    bindingv1=mdsal-binding-generator-impl    odl-micro=odlmicro-impl
+@{RELEASE_INTEGRATED_COMPONENTS}    mdsal    odlparent    yangtools    carpeople    netconf    bgpcep
 ${JDKVERSION}     None
 ${JAVA_8_HOME_CENTOS}    /usr/lib/jvm/java-1.8.0
 ${JAVA_8_HOME_UBUNTU}    /usr/lib/jvm/java-8-openjdk-amd64
@@ -41,7 +41,7 @@ ${MAVEN_SETTINGS_URL}    https://raw.githubusercontent.com/opendaylight/odlparen
 ${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/opendaylight
+${NEXUS_RELEASES_URL}    ${NEXUS_RELEASE_BASE_URL}/org/opendaylight/integration/karaf
 
 *** Keywords ***
 Initialize_Artifact_Deployment_And_Usage
@@ -99,7 +99,7 @@ Deploy_From_Url
     [Return]    ${filename}
 
 Deploy_Artifact
-    [Arguments]    ${component}    ${artifact}    ${name_prefix}=${artifact}-    ${name_suffix}=-executable.jar    ${fallback_url}=${NEXUS_FALLBACK_URL}    ${explicit_url}=${EMPTY}
+    [Arguments]    ${component}    ${artifact}    ${name_prefix}=${artifact}-    ${name_suffix}=-executable.jar    ${fallback_url}=${NEXUS_FALLBACK_URL}    ${explicit_url}=${EMPTY}    ${build_version}=${EMPTY}    ${build_location}=${EMPTY}
     [Documentation]    Deploy the specified artifact from Nexus to the cwd of the machine to which the active SSHLibrary connection points.
     ...    ${component} is a name part of an artifact present in system/ of ODl installation with the same version as ${artifact} should have.
     ...    Must have ${BUNDLE_URL} variable set to the URL from which the
@@ -115,8 +115,18 @@ Deploy_Artifact
     # If we are working with a "release integrated" project, we always will want to look for
     # a released version, not in the snapshots
     ${urlbase} =    BuiltIn.Set_Variable_If    '${urlbase}' != '${BUNDLE_URL}'    ${urlbase}    ${fallback_url}
-    ${urlbase} =    BuiltIn.Set_Variable_If    '${component}' in @{RELEASE_INTEGRATED_COMPONENTS}    ${NEXUS_RELEASE_BASE_URL}    ${urlbase}
-    ${version}    ${location} =    NexusKeywords__Detect_Version_To_Pull    ${component}
+    CompareStream.Run_Keyword_If_At_Most_Magnesium    Collections.Remove_Values_From_List    ${RELEASE_INTEGRATED_COMPONENTS}    carpeople
+    CompareStream.Run_Keyword_If_At_Most_Aluminium    Collections.Remove_Values_From_List    ${RELEASE_INTEGRATED_COMPONENTS}    netconf
+    CompareStream.Run_Keyword_If_At_Most_Silicon    Collections.Remove_Values_From_List    ${RELEASE_INTEGRATED_COMPONENTS}    bgpcep
+    ${version}    ${location} =    BuiltIn.Run_Keyword_If    '${build_version}'=='${EMPTY}'    NexusKeywords__Detect_Version_To_Pull    ${component}
+    ...    ELSE    BuiltIn.Set_Variable    ${build_version}    ${build_location}
+    BuiltIn.Run_Keyword_If    'SNAPSHOT' in '${version}'    Collections.Remove_Values_From_List    ${RELEASE_INTEGRATED_COMPONENTS}    netconf    bgpcep
+    # check if the bundle url is pointing to a staging artifact
+    # when we are pointing at a staged artifact we need to use the staging repo instead of release/snapshot artifacts
+    ${is_staged} =    BuiltIn.Set_Variable_If    "opendaylight.release" not in '${urlbase}' and "opendaylight.snapshot" not in '${urlbase}'    "TRUE"    "FALSE"
+    # if we have a staged artifact we need to use the urlbase given to us in the job params
+    ${is_mri_component} =    BuiltIn.Set_Variable_If    '${component}' in ${RELEASE_INTEGRATED_COMPONENTS}    "TRUE"    "FALSE"
+    ${urlbase} =    BuiltIn.Set_Variable_If    ${is_mri_component} == "TRUE" and ${is_staged} == "FALSE"    ${NEXUS_RELEASE_BASE_URL}    ${urlbase}
     # TODO: Use RequestsLibrary and String instead of curl and bash utilities?
     ${url} =    BuiltIn.Set_Variable    ${urlbase}/${location}/${artifact}/${version}
     # TODO: Review SSHKeywords for current best keywords to call.
@@ -129,11 +139,15 @@ Deploy_Artifact
     ${url} =    BuiltIn.Set_Variable    ${url}/${filename}
     ${response}    ${result} =    SSHLibrary.Execute_Command    wget -q -N '${url}' 2>&1    return_rc=True
     BuiltIn.Log    ${response}
-    BuiltIn.Run_Keyword_If    ${result} != 0    BuiltIn.Fail    Artifact "${artifact}" in component "${component}" could not be downloaded from ${url}
+    BuiltIn.Return_From_Keyword_If    ${result} == 0    ${filename}
+    # staged autorelease for non-mri project might not contain the artifact we need so we need to fallback to grabbing it from the release repo
+    ${release_url} =    String.Replace_String_Using_Regexp    ${url}    autorelease-[0-9]{4}    opendaylight.release
+    ${response}    ${result} =    SSHLibrary.Execute_Command    wget -q -N '${release_url}' 2>&1    return_rc=True
+    BuiltIn.Run_Keyword_If    ${result} != 0    BuiltIn.Fail    Artifact "${artifact}" in component "${component}" could not be downloaded from ${release_url} nor ${url}
     [Return]    ${filename}
 
 Deploy_Test_Tool
-    [Arguments]    ${component}    ${artifact}    ${suffix}=executable    ${fallback_url}=${NEXUS_FALLBACK_URL}    ${explicit_url}=${EMPTY}
+    [Arguments]    ${component}    ${artifact}    ${suffix}=executable    ${fallback_url}=${NEXUS_FALLBACK_URL}    ${explicit_url}=${EMPTY}    ${build_version}=${EMPTY}    ${build_location}=${EMPTY}
     [Documentation]    Deploy a test tool.
     ...    The test tools have naming convention of the form
     ...    "<repository_url>/some/dir/somewhere/<tool-name>/<tool-name>-<version-tag>-${suffix}.jar"
@@ -143,9 +157,10 @@ Deploy_Test_Tool
     ...    "Deploy_Artifact" and then calls "Deploy_Artifact" to do the real
     ...    work of deploying the artifact.
     ${name_prefix} =    BuiltIn.Set_Variable    ${artifact}-
-    ${name_suffix} =    BuiltIn.Set_Variable_If    "${suffix}" != ""    -${suffix}.jar    .jar
+    ${extension} =    BuiltIn.Set_Variable_If    '${component}'=='odl-micro'    tar    jar
+    ${name_suffix} =    BuiltIn.Set_Variable_If    "${suffix}" != ""    -${suffix}.${extension}    .${extension}
     ${filename} =    Deploy_Artifact    ${component}    ${artifact}    ${name_prefix}    ${name_suffix}    ${fallback_url}
-    ...    ${explicit_url}
+    ...    ${explicit_url}    ${build_version}    ${build_location}
     [Return]    ${filename}
 
 Install_And_Start_Java_Artifact
@@ -274,7 +289,7 @@ Get_ODL_Versions_From_Nexus
     @{elements}=    XML.Get_Elements    ${root}    .//version
     ${versions}=    BuiltIn.Create_List
     FOR    ${element}    IN    @{elements}
-        Collections.Append_To_List    ${versions}    ${element.text}
+        BuiltIn.Run_Keyword_If    'Carbon' not in $element.text    Collections.Append_To_List    ${versions}    ${element.text}
     END
     Collections.Sort_List    ${versions}
     BuiltIn.Log_Many    @{versions}
@@ -302,7 +317,7 @@ 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}/opendaylight-${latest_version}${format}
+    ${url}=    BuiltIn.Set_Variable    ${NEXUS_RELEASES_URL}/${latest_version}/karaf-${latest_version}${format}
     BuiltIn.Log    ${url}
     [Return]    ${url}
 
@@ -337,6 +352,6 @@ 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}/opendaylight-${latest_version}${format}
+    ${url}=    BuiltIn.Set_Variable    ${NEXUS_RELEASES_URL}/${latest_version}/karaf-${latest_version}${format}
     BuiltIn.Log    ${url}
     [Return]    ${url}