Change Management Schedule Optimization

Adding scripts and robot test suites for cmso as per CSIT procedure
Fixing the start up scripts to use docker
Removing .pyc files
Fix copyright headers for the shell scripts

Change-Id: I61492abd5d5060b5a773dec74320f2ecfc0fcbf5
Issue-ID: OPTFRA-382
Signed-off-by: sv764t <sv764t@att.com>
Signed-off-by: vrvarma <vv8305@att.com>
diff --git a/tests/optf-cmso/cmso/resources/files.robot b/tests/optf-cmso/cmso/resources/files.robot
new file mode 100644
index 0000000..fcfffbb
--- /dev/null
+++ b/tests/optf-cmso/cmso/resources/files.robot
@@ -0,0 +1,50 @@
+*** Settings ***
+Documentation     Some handy Keywords for accessing log files over SSH.  Assumptions are that logs will belong to users other than the currently logged in user and that sudo will be required
+Library           OperatingSystem
+Library 	      SSHLibrary
+Library           HttpLibrary.HTTP
+Library           String
+Library           Collections
+
+*** Variables ***
+
+*** Keywords ***
+Open Connection And Log In
+   [Documentation]    Open a connection using the passed user and SSH key. Connection alias will be the host name by default.
+   [Arguments]    ${HOST}    ${user}    ${pvt}    ${password}=    ${alias}=${HOST}    ${timeout}=120s
+   Open Connection    ${HOST}    alias=${alias}    timeout=${timeout}
+   Login With Public Key    ${user}    ${pvt}    password=${password}    delay=0.5 seconds
+
+Grep Local File
+    [Documentation]     Grep the passed file name and return all of the lines that match the passed pattern using the current connection
+    [Arguments]    ${pattern}     ${fullpath}
+    ${output}=    Execute Command    grep ${pattern} ${fullpath}
+    [Return]     ${output}
+
+ Grep File on Host
+    [Documentation]     Grep the passed file name and return all of the lines that match the passed pattern using passed connection alias/host
+    [Arguments]     ${host}    ${pattern}     ${fullpath}
+    Switch Connection    ${host}
+    ${output}=    Grep Local File    ${pattern}    ${fullpath}
+    @{lines}=    Split To Lines    ${output}
+    [Return]     @{lines}
+
+Grep File on Hosts
+    [Documentation]     Grep the passed file name and return all of the lines that match the passed pattern using passed list of connections
+    [Arguments]    ${HOSTS}    ${pattern}    ${fullpath}
+    &{map}=    Create Dictionary
+    :FOR    ${HOST}    IN    @{HOSTS}
+    \    Log    ${HOST}
+    \    @{lines}=    Grep File on Host    ${HOST}   ${pattern}    ${fullpath}
+    \    &{map}=    Create Dictionary    ${HOST}=@{lines}    &{map}
+    [Return]    &{map}
+
+Tail File on Host Until
+    [Documentation]     Tail log file into grep which returns file lines containing the grep pattern. Will timeout after timeout= if expected pattern not received.
+    [Arguments]    ${host}    ${pattern}    ${fullpath}    ${expected}    ${timeout}=60    ${options}=-c -0
+    Switch Connection    ${host}
+    ${tailcommand}=    Catenate    tail ${options} -f ${fullpath} | grep --color=never ${pattern}
+    Write    ${tailcommand}
+    ${stdout}=	Read Until Regexp    ${expected}
+    @{lines}=    Split To Lines    ${stdout}
+    [Return]    @{lines}