+ ${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}
+ END
+ 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
+ [Documentation] Returns name for last release for specified stream.
+ [Arguments] ${stream}=latest
+ ${latest} @{versions} = Get_ODL_Versions_From_Nexus
+ IF '${stream}'=='latest' RETURN ${latest}
+ ${latest_version} = BuiltIn.Set_Variable xxx
+ FOR ${version} IN @{versions}
+ ${latest_version} = BuiltIn.Set_Variable_If
+ ... '${stream}'.title() in '${version}'
+ ... ${version}
+ ... ${latest_version}
+ END
+ IF '${latest_version}'=='xxx'
+ BuiltIn.Fail Could not find latest release for stream ${stream}
+ END
+ BuiltIn.Log ${latest_version}
+ RETURN ${latest_version}
+
+Get_Latest_ODL_Stream_Release_URL
+ [Documentation] Returns URL for last release for specified stream. Default format is .zip.
+ [Arguments] ${stream}=latest ${format}=.zip
+ ${latest_version} = Get_Latest_ODL_Stream_Release ${stream}
+ ${url} = BuiltIn.Set_Variable ${NEXUS_RELEASES_URL}/${latest_version}/karaf-${latest_version}${format}
+ BuiltIn.Log ${url}
+ RETURN ${url}
+
+Get_Latest_ODL_Previous_Stream_Release
+ [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.
+ ...
+ ... NOTE: the below logic is stripping the initial 0. values from the 0.x.x version string that is
+ ... the current (and future) version numbering scheme. There is always a leading 0. to the version
+ ... strings and stripping it makes is easier to do int comparison to find the largest version in the
+ ... list. Comparing as strings does not work. There are some python libs like distutils.version
+ ... or packaging that can do a better job comparing versions, but since ODL version numbering is simple
+ ... at this point, this convention will suffice. The leading 0. will be added back after the the latest
+ ... version is found from the list. The CompareStream.robot library keeps a mapping of major version
+ ... 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.
+ [Arguments] ${stream}=${ODL_STREAM}
+ ${latest} @{versions} = Get_ODL_Versions_From_Nexus
+ ${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}
+ ${latest_version} = Set Variable If
+ ... ${version} > ${latest_version} and ${version} < ${current_version}
+ ... ${version}
+ ... ${latest_version}
+ END
+ ${latest_version} = Set Variable 0.${latest_version}
+ IF '${latest_version}'=='0.0.0'
+ BuiltIn.Fail Could not find latest previous release for stream ${stream}
+ END
+ BuiltIn.Log ${latest_version}
+ RETURN ${latest_version}
+
+Get_Latest_ODL_Previous_Stream_Release_URL
+ [Documentation] Returns URL for last release for previous stream of specified stream. Default format is .zip.
+ [Arguments] ${stream}=${ODL_STREAM} ${format}=.zip
+ ${latest_version} = Get_Latest_ODL_Previous_Stream_Release ${stream}
+ ${url} = BuiltIn.Set_Variable ${NEXUS_RELEASES_URL}/${latest_version}/karaf-${latest_version}${format}
+ BuiltIn.Log ${url}
+ RETURN ${url}