diff --git a/test/csit/tests/multicloud-vmware/nova/jsoninput/multicloud_create_server.json b/test/csit/tests/multicloud-vmware/nova/jsoninput/multicloud_create_server.json
new file mode 100644
index 0000000..ecaaa12
--- /dev/null
+++ b/test/csit/tests/multicloud-vmware/nova/jsoninput/multicloud_create_server.json
@@ -0,0 +1,16 @@
+{
+    "server":
+        {
+            "name": "server-csit-1", 
+            "boot":
+                {
+                    "type":2, 
+                    "imageId": "08edf57c-e65d-4778-957a-1524ff795c4b"
+                },
+            "flavorId": "1", 
+            "nicArray": 
+                [{
+                    "portId": "71847500-8edf-42f9-be69-78432ccadc6e"
+                }]
+        }
+}
\ No newline at end of file
diff --git a/test/csit/tests/multicloud-vmware/nova/sanity-flavor.robot b/test/csit/tests/multicloud-vmware/nova/sanity-flavor.robot
new file mode 100644
index 0000000..5adafb5
--- /dev/null
+++ b/test/csit/tests/multicloud-vmware/nova/sanity-flavor.robot
@@ -0,0 +1,62 @@
+*** settings ***
+Resource    ../../common.robot
+Library     Collections
+Library     RequestsLibrary
+Library     OperatingSystem
+Library     json
+Library     HttpLibrary.HTTP
+
+
+*** Variables ***
+@{return_ok_list}=   200  201  202
+${get_token_url}    /api/multicloud-vio/v0/vmware_fake/identity/v3/auth/tokens
+
+#json files
+${auth_info_json}       ${SCRIPTS}/../tests/multicloud-vmware/provision/jsoninput/auth_info.json
+
+#global vars
+${TOKEN}
+${TENANTID}
+${flavor1Id} 
+
+*** Test Cases ***
+
+GetAuthToken
+    [Documentation]    Sanity test -  Get Auth Token
+    ${json_value}=      json_from_file      ${auth_info_json}
+    ${json_string}=     string_from_json   ${json_value}
+    ${headers}    Create Dictionary    Content-Type=application/json    Accept=application/json
+    Create Session    web_session    http://${VIO_IP}:9004     headers=${headers}
+    ${resp}=  POST Request    web_session    ${get_token_url}  ${json_string}
+    ${responese_code}=     Convert To String      ${resp.status_code}
+    List Should Contain Value    ${return_ok_list}   ${responese_code}
+    ${response_json}    json.loads    ${resp.content}
+    ${TOKEN}=    Convert To String      ${response_json['token']['value']}
+    ${TENANTID}=    Convert To String   ${response_json['token']['project']['id']}
+    Set Global Variable   ${TOKEN}
+    Set Global Variable   ${TENANTID}
+
+
+ListFlavorsFuncTest
+    [Documentation]    get a list of flavors info rest test
+    ${headers}    Create Dictionary    Content-Type=application/json    Accept=application/json     X-Auth-Token=${TOKEN}
+    Create Session    web_session    http://${VIO_IP}:9004    headers=${headers}
+    ${resp}=    GET Request    web_session     api/multicloud-vio/v0/vmware_fake/nova/${TENANTID}/flavors
+    ${response_code}=     Convert To String      ${resp.status_code}
+    List Should Contain Value    ${return_ok_list}   ${response_code}
+    ${response_json}    json.loads    ${resp.content}
+    #Log To Console        ${response_json}
+    ${flavor1Id}=    Convert To String      ${response_json['flavors'][0]['id']}
+    Set Global Variable   ${flavor1Id}
+    #Log To Console        ${flavor1Id}
+
+GetFlavorFuncTest
+    [Documentation]    get the specific flavor info rest test
+    ${headers}    Create Dictionary    Content-Type=application/json    Accept=application/json     X-Auth-Token=${TOKEN}
+    Create Session    web_session    http://${VIO_IP}:9004    headers=${headers}
+    ${resp}=    GET Request    web_session     api/multicloud-vio/v0/vmware_fake/nova/${TENANTID}/flavors/${flavor1Id}
+    ${response_code}=     Convert To String      ${resp.status_code}
+    List Should Contain Value    ${return_ok_list}   ${response_code}
+    ${response_json}    json.loads    ${resp.content}
+    #Log To Console        ${response_json}
+
diff --git a/test/csit/tests/multicloud-vmware/nova/sanity-host.robot b/test/csit/tests/multicloud-vmware/nova/sanity-host.robot
new file mode 100644
index 0000000..444c68e
--- /dev/null
+++ b/test/csit/tests/multicloud-vmware/nova/sanity-host.robot
@@ -0,0 +1,83 @@
+*** settings ***
+Resource    ../../common.robot
+Library     Collections
+Library     RequestsLibrary
+Library     OperatingSystem
+Library     json
+Library     HttpLibrary.HTTP
+
+
+*** Variables ***
+@{return_ok_list}=   200  201  202
+${get_token_url}    /api/multicloud-vio/v0/vmware_fake/identity/v3/auth/tokens
+
+#json files
+${auth_info_json}       ${SCRIPTS}/../tests/multicloud-vmware/provision/jsoninput/auth_info.json
+
+#global vars
+${TOKEN}
+${TENANTID}
+${host1Id} 
+
+*** Test Cases ***
+
+GetAuthToken
+    [Documentation]    Sanity test -  Get Auth Token
+    ${json_value}=      json_from_file      ${auth_info_json}
+    ${json_string}=     string_from_json   ${json_value}
+    ${headers}    Create Dictionary    Content-Type=application/json    Accept=application/json
+    Create Session    web_session    http://${VIO_IP}:9004     headers=${headers}
+    ${resp}=  POST Request    web_session    ${get_token_url}  ${json_string}
+    ${responese_code}=     Convert To String      ${resp.status_code}
+    List Should Contain Value    ${return_ok_list}   ${responese_code}
+    ${response_json}    json.loads    ${resp.content}
+    ${TOKEN}=    Convert To String      ${response_json['token']['value']}
+    ${TENANTID}=    Convert To String   ${response_json['token']['project']['id']}
+    Set Global Variable   ${TOKEN}
+    Set Global Variable   ${TENANTID}
+
+TestListHosts
+    [Documentation]    Sanity Test - List Hosts
+    ${headers}    Create Dictionary    Content-Type=application/json    Accept=application/json  X-Auth-Token=${TOKEN}
+    Create Session    web_session    http://${VIO_IP}:9004    headers=${headers}
+    ${resp}=  Get Request    web_session    api/multicloud-vio/v0/vmware_fake/nova/${TENANTID}/os-hypervisors/detail
+    ${response_code}=     Convert To String      ${resp.status_code}
+    List Should Contain Value    ${return_ok_list}   ${response_code}
+    ${response_json}    json.loads    ${resp.content}
+    #Log To Console        ${response_json}
+    ${host1Id}=    Convert To String      ${response_json['hypervisors'][0]['service']['id']}
+    Set Global Variable   ${host1Id}
+
+TestGetHost
+    [Documentation]    Sanity Test - Get Host
+    ${headers}    Create Dictionary    Content-Type=application/json    Accept=application/json  X-Auth-Token=${TOKEN}
+    Create Session    web_session    http://${VIO_IP}:9004    headers=${headers}
+    ${resp}=  Get Request    web_session    api/multicloud-vio/v0/vmware_fake/nova/${TENANTID}/os-hypervisors/${host1Id}
+    ${response_code}=     Convert To String      ${resp.status_code}
+    List Should Contain Value    ${return_ok_list}   ${response_code}
+    ${response_json}    json.loads    ${resp.content}
+    #Log To Console        ${response_json}
+
+TestHostUptime
+    [Documentation]    Sanity Test - Host Uptime
+    ${headers}    Create Dictionary    Content-Type=application/json    Accept=application/json  X-Auth-Token=${TOKEN}
+    Create Session    web_session    http://${VIO_IP}:9004    headers=${headers}
+    ${resp}=  Get Request    web_session    api/multicloud-vio/v0/vmware_fake/nova/${TENANTID}/os-hypervisors/uptime
+    ${response_code}=     Convert To String      ${resp.status_code}
+    List Should Contain Value    ${return_ok_list}   ${response_code}
+    ${response_json}    json.loads    ${resp.content}
+    #Log To Console        ${response_json}
+
+
+TestHostAggregates
+    [Documentation]    Sanity Test - Host Aggregates
+    ${headers}    Create Dictionary    Content-Type=application/json    Accept=application/json  X-Auth-Token=${TOKEN}
+    Create Session    web_session    http://${VIO_IP}:9004    headers=${headers}
+    ${resp}=  Get Request    web_session    api/multicloud-vio/v0/vmware_fake/nova/${TENANTID}/os-aggregates
+    ${response_code}=     Convert To String      ${resp.status_code}
+    List Should Contain Value    ${return_ok_list}   ${response_code}
+    ${response_json}    json.loads    ${resp.content}
+    #Log To Console        ${response_json}
+
+
+
diff --git a/test/csit/tests/multicloud-vmware/nova/sanity-server.robot b/test/csit/tests/multicloud-vmware/nova/sanity-server.robot
new file mode 100755
index 0000000..7a092e6
--- /dev/null
+++ b/test/csit/tests/multicloud-vmware/nova/sanity-server.robot
@@ -0,0 +1,105 @@
+*** settings ***
+Resource    ../../common.robot
+Library     Collections
+Library     RequestsLibrary
+Library     OperatingSystem
+Library     json
+Library     HttpLibrary.HTTP
+
+
+*** Variables ***
+@{return_ok_list}=   200  201  202
+@{delete_ok_list}=   200  204
+${get_token_url}    /api/multicloud-vio/v0/vmware_fake/identity/v3/auth/tokens
+
+#json files
+${auth_info_json}       ${SCRIPTS}/../tests/multicloud-vmware/provision/jsoninput/auth_info.json
+${multicloud_create_server_json}    ${SCRIPTS}/../tests/multicloud-vmware/nova/jsoninput/multicloud_create_server.json
+
+#global vars
+${TOKEN}
+${TENANTID}
+${server1Id} 
+
+*** Test Cases ***
+
+GetAuthToken
+    [Documentation]    Sanity test -  Get Auth Token
+    ${json_value}=      json_from_file      ${auth_info_json}
+    ${json_string}=     string_from_json   ${json_value}
+    ${headers}    Create Dictionary    Content-Type=application/json    Accept=application/json
+    Create Session    web_session    http://${VIO_IP}:9004     headers=${headers}
+    ${resp}=  POST Request    web_session    ${get_token_url}  ${json_string}
+    ${responese_code}=     Convert To String      ${resp.status_code}
+    List Should Contain Value    ${return_ok_list}   ${responese_code}
+    ${response_json}    json.loads    ${resp.content}
+    ${TOKEN}=    Convert To String      ${response_json['token']['value']}
+    ${TENANTID}=    Convert To String   ${response_json['token']['project']['id']}
+    Set Global Variable   ${TOKEN}
+    Set Global Variable   ${TENANTID}
+
+CreateServerFuncTest
+    [Documentation]    Sanity Test - Create Server
+    ${json_value}=     json_from_file      ${multicloud_create_server_json}
+    ${json_string}=     string_from_json   ${json_value}
+    ${headers}    Create Dictionary    Content-Type=application/json    Accept=application/json  X-Auth-Token=${TOKEN}
+    Create Session    web_session    http://${VIO_IP}:9004    headers=${headers}
+    Set Request Body    ${json_string}
+    #Log To Console     ${json_string}
+    ${resp}=  Post Request    web_session    api/multicloud-vio/v0/vmware_fake/nova/${TENANTID}/servers    ${json_string}
+    ${response_code}=     Convert To String      ${resp.status_code}
+    List Should Contain Value    ${return_ok_list}   ${response_code}
+    ${response_json}    json.loads    ${resp.content}
+    #Log To Console        ${response_json}
+    ${server1Id}=    Convert To String      ${response_json['server']['id']}
+    Set Global Variable   ${server1Id}
+
+
+GetServersFuncTest
+    [Documentation]    Sanity Test - Get Servers
+    ${headers}    Create Dictionary    Content-Type=application/json    Accept=application/json  X-Auth-Token=${TOKEN}
+    Create Session    web_session    http://${VIO_IP}:9004    headers=${headers}
+    ${resp}=  Get Request    web_session    api/multicloud-vio/v0/vmware_fake/nova/${TENANTID}/servers
+    ${response_code}=     Convert To String      ${resp.status_code}
+    List Should Contain Value    ${return_ok_list}   ${response_code}
+    ${response_json}    json.loads    ${resp.content}
+    #Log To Console        ${response_json}
+    #Log To Console        ${server1Id}
+
+GetServerDetailFuncTest
+    [Documentation]    Sanity Test - Get Server Detail
+    ${headers}    Create Dictionary    Content-Type=application/json    Accept=application/json  X-Auth-Token=${TOKEN}
+    Create Session    web_session    http://${VIO_IP}:9004    headers=${headers}
+    ${resp}=  Get Request    web_session    api/multicloud-vio/v0/vmware_fake/nova/${TENANTID}/servers/detail
+    ${response_code}=     Convert To String      ${resp.status_code}
+    List Should Contain Value    ${return_ok_list}   ${response_code}
+    ${response_json}    json.loads    ${resp.content}
+    #Log To Console        ${response_json}
+
+GetServerFuncTest
+    [Documentation]    Sanity Test - Get Server
+    ${headers}    Create Dictionary    Content-Type=application/json    Accept=application/json  X-Auth-Token=${TOKEN}
+    Create Session    web_session    http://${VIO_IP}:9004    headers=${headers}
+    ${resp}=  Get Request    web_session    api/multicloud-vio/v0/vmware_fake/nova/${TENANTID}/servers/${server1Id}
+    ${response_code}=     Convert To String      ${resp.status_code}
+    List Should Contain Value    ${return_ok_list}   ${response_code}
+    ${response_json}    json.loads    ${resp.content}
+    #Log To Console        ${response_json}
+
+ServerActionFuncTest
+    [Documentation]    Sanity Test - Server Action
+    ${headers}    Create Dictionary    Content-Type=application/json    Accept=application/json  X-Auth-Token=${TOKEN}
+    Create Session    web_session    http://${VIO_IP}:9004    headers=${headers}
+    ${resp}=  Get Request    web_session    api/multicloud-vio/v0/vmware_fake/nova/${TENANTID}/servers/${server1Id}/action
+    ${response_code}=     Convert To String      ${resp.status_code}
+    List Should Contain Value    ${return_ok_list}   ${response_code}
+    ${response_json}    json.loads    ${resp.content}
+    #Log To Console        ${response_json}
+
+DeleteServerFuncTest
+    [Documentation]    Sanity Test - Delete Server
+    ${headers}    Create Dictionary    Content-Type=application/json    Accept=application/json  X-Auth-Token=${TOKEN}
+    Create Session    web_session    http://${VIO_IP}:9004    headers=${headers}
+    ${resp}=  Delete Request    web_session    api/multicloud-vio/v0/vmware_fake/nova/${TENANTID}/servers/${server1Id}
+    ${response_code}=     Convert To String      ${resp.status_code}
+    List Should Contain Value    ${delete_ok_list}   ${response_code}
