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/misc.robot b/tests/optf-cmso/cmso/resources/misc.robot
new file mode 100644
index 0000000..e20640c
--- /dev/null
+++ b/tests/optf-cmso/cmso/resources/misc.robot
@@ -0,0 +1,43 @@
+*** Settings ***
+Library     Collections
+Library     String
+#Library     UUID
+Library		../attlibs/UID.py
+Library     Process
+Library     HttpLibrary.HTTP
+Documentation     Miscellaneous keywords
+
+Resource    json_templater.robot
+Resource    create_schedule.robot
+
+
+*** Variables ***
+
+*** Keywords ***
+
+Validate Status
+    [Documentation]    Fail unless the Request response is in the passed list of valid HTTP status codes.
+    [Arguments]    ${resp}    ${valid_status_list}
+    ${status_code}   Convert To String   ${resp.status_code}
+    Return From Keyword If   '${resp.status_code}' in ${valid_status_list}
+    Fail   ${resp.status_code}
+    
+Validate JSON Error
+    [Documentation]     Fails if messageIds do not match. expected_errors should be a list but a string would likely work as well
+    [Arguments]    ${resp_json}    ${expected_errors}
+    ${result}=   Get From Dictionary   ${resp_json['requestError']}   messageId   
+    Should Contain    ${expected_errors}    ${result}    #checks expected_errors list for the actual error received from schedule
+    
+Check ATTIDs Template
+   [Documentation]    This just checks a list of uuids 
+   [Arguments]    ${expected_status_code}    ${template_folder}
+   ${request_file}=    Convert to String    OneVnfImmediateATTID.json.template
+   ${attid_file}=    OperatingSystem.Get File    robot/assets/AOTS_CM_IDs.txt
+   @{attids}=    Split to lines    ${attid_file}
+   :for    ${attid}    in    @{attids}
+   \   ${uuid}=    Generate UUID
+   \   ${resp}=   Run Keyword and Continue on Failure    Create Schedule   ${uuid}   ${request_file}   ${template_folder}    attid=${attid}
+   \   Run Keyword and Continue on Failure   Should Be Equal as Strings    ${resp.status_code}    ${expected_status_code}
+   \   ${reps}=   Delete Change Management   auth   schedules/${uuid}
+    
+