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
${JAVA_11_HOME_CENTOS} /usr/lib/jvm/java-11-openjdk
${JAVA_11_HOME_UBUNTU} /usr/lib/jvm/java-11-openjdk-amd64
+${JAVA_17_HOME_CENTOS} /usr/lib/jvm/java-17-openjdk
+${JAVA_17_HOME_UBUNTU} /usr/lib/jvm/java-17-openjdk-amd64
${JAVA_OPTIONS} -Xmx2560m # Note that '-Xmx=3g' is wrong syntax. Also 3GB heap may not fit in 4GB RAM.
${MAVEN_DEFAULT_OUTPUT_FILENAME} default_maven.log
${MAVEN_OPTIONS} -Pq -Djenkins
${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
[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
# 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.
${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"
... "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
# Check whether the user set the override and return it if yes.
BuiltIn.Run_Keyword_And_Return_If """${openjdk}""" == "openjdk8" Compose_Dilemma_Filepath ${JAVA_8_HOME_CENTOS}/bin/java ${JAVA_8_HOME_UBUNTU}/bin/java
BuiltIn.Run_Keyword_And_Return_If """${openjdk}""" == "openjdk11" Compose_Dilemma_Filepath ${JAVA_11_HOME_CENTOS}/bin/java ${JAVA_11_HOME_UBUNTU}/bin/java
+ BuiltIn.Run_Keyword_And_Return_If """${openjdk}""" == "openjdk17" Compose_Dilemma_Filepath ${JAVA_17_HOME_CENTOS}/bin/java ${JAVA_17_HOME_UBUNTU}/bin/java
# Attempt to call plain "java" command directly. If it works, return it.
${out} ${rc} = SSHLibrary.Execute_Command java -version 2>&1 return_rc=True
BuiltIn.Return_From_Keyword_If ${rc} == 0 java
@{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}
[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}
... numbers to the global variable ${ODL_STREAM} so that is used to ensure we get a major version that is
... older than the current running major version.
${latest} @{versions}= Get_ODL_Versions_From_Nexus
- ${current_version}= BuiltIn.Set_Variable &{Stream_dict}[${ODL_STREAM}].0
+ ${current_version}= BuiltIn.Set_Variable ${Stream_dict}[${ODL_STREAM}].0
${latest_version}= BuiltIn.Set_Variable 0.0
FOR ${version} IN @{versions}
${version} = String.Replace String Using Regexp ${version} ^0\. ${EMPTY}
[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}