[VOL-3844] Test for ONOS apps minor version upgrade
[VOL-3843] Test for Voltha components minor version upgrade

Change-Id: Iae981056d92c461d67419ef3a1107c86a5aa231b
diff --git a/libraries/k8s.robot b/libraries/k8s.robot
index 63b9efe..a8312e6 100755
--- a/libraries/k8s.robot
+++ b/libraries/k8s.robot
@@ -351,7 +351,7 @@
     [Arguments]    ${namespace}    ${key}    ${value}
     [Documentation]    Uses kubectl to scale a deployment given the app name of the pod
     ${rc}    ${name}    Run And Return Rc And Output
-    ...    kubectl describe rs -n ${namespace} -l ${key}=${value} | grep "Controlled By" | awk -F'/' '{print $2}'
+    ...    kubectl describe rs -n ${namespace} -l ${key}=${value} | grep "Controlled By" | awk -F'/' '{print $2}' | awk 'FNR == 1'
     Should Be Equal as Integers    ${rc}    0
     [Return]    ${name}
 
@@ -461,3 +461,38 @@
     ${rc}    ${count}    Run and Return Rc and Output
     ...    kubectl -n ${namespace} get pods -l ${key}=${value} -o name | wc -l
     [Return]    ${count}
+
+Get Pod Restart Count
+    [Arguments]    ${namespace}    ${name}
+    [Documentation]    Returns the restart count for the given Pod
+    ${rc}    ${count}=    Run and Return Rc and Output
+    ...    kubectl get pods -n ${namespace} | grep ${name} | awk 'NR==1{print $4}'
+    [Return]    ${count}
+
+Verify ONOS Pod Restart
+    [Arguments]    ${restarted}=True
+    [Documentation]    Verifies if any of the given ONOS instances restarted
+    ${num_onos}=    Wait Until Keyword Succeeds    20s    5s    Get Number of Running Pods Number By Label    default
+    ...    app    onos-onos-classic
+    FOR    ${I}    IN RANGE    0    ${num_onos}
+         ${onos_pod}=    Catenate    SEPARATOR=-    onos-onos-classic    ${I}
+         ${count}=    Get Pod Restart Count    default    ${onos_pod}
+         Run Keyword If    ${restarted}
+         ...    Should Not Be Equal As Integers    ${count}    0    ONOS Pod ${onos_pod} Not Restarted
+         ...    ELSE
+         ...    Should Be Equal As Integers    ${count}    0    ONOS Pod ${onos_pod} Restarted
+    END
+
+Deploy Pod New Image
+    [Arguments]    ${namespace}    ${deployment}    ${container}    ${image}
+    [Documentation]   Deploys the Pod given image
+    ${rc}    Run and Return Rc
+    ...    kubectl -n ${namespace} set image deployment/${deployment} ${container}=${image}
+    Should Be Equal as Integers    ${rc}    0
+
+Verify Pod Image
+    [Arguments]    ${namespace}    ${key}    ${value}    ${image}
+    [Documentation]    Verifies the Pod Image
+    ${output}=    Run
+    ...    kubectl -n ${namespace} get pods -l ${key}=${value} -o=jsonpath="{.items[].status.containerStatuses[].image}"
+    Should Be Equal    '${output}'    'docker.io/${image}'