onap on kubernetes source files
[oom.git] / kubernetes / config / docker / init / src / config / robot / robot / resources / openstack / cinder_interface.robot
diff --git a/kubernetes/config/docker/init/src/config/robot/robot/resources/openstack/cinder_interface.robot b/kubernetes/config/docker/init/src/config/robot/robot/resources/openstack/cinder_interface.robot
new file mode 100644 (file)
index 0000000..1b72035
--- /dev/null
@@ -0,0 +1,50 @@
+*** Settings ***
+Documentation     The main interface for interacting with Openstack. It handles low level stuff like managing the authtoken and Openstack required fields
+Library           OpenstackLibrary
+Library              RequestsLibrary
+Library                  UUID
+Library    OperatingSystem
+Resource    ../global_properties.robot
+Resource    ../json_templater.robot
+Resource    openstack_common.robot
+
+
+*** Variables ***
+${OPENSTACK_CINDER_API_VERSION}    /v1
+${OPENSTACK_CINDER_TYPES_PATH}    /types
+${OPENSTACK_CINDER_VOLUMES_PATH}    /volumes
+${OPENSTACK_CINDER_VOLUMES_ADD_BODY_FILE}        robot/assets/templates/cinder_add_volume.template
+${OPENSTACK_CINDER_VOLUMES_TYPE}    SSD
+${OPENSTACK_CINDER_AVAILABILITY_ZONE}    nova
+
+*** Keywords ***
+Get Openstack Volume Types
+    [Documentation]    Returns the openstack volume types information
+    [Arguments]    ${alias}
+    ${resp}=    Internal Get Openstack    ${alias}    ${GLOBAL_OPENSTACK_CINDER_SERVICE_TYPE}   ${OPENSTACK_CINDER_TYPES_PATH}
+    [Return]    ${resp.json()}
+
+Get Openstack Volume
+    [Documentation]    Returns the openstack volume information for the passed in volume id
+    [Arguments]    ${alias}    ${volume_id}
+    ${resp}=    Internal Get Openstack    ${alias}    ${GLOBAL_OPENSTACK_CINDER_SERVICE_TYPE}   ${OPENSTACK_CINDER_VOLUMES_PATH}           /${volume_id}
+    [Return]    ${resp.json()}
+
+Add Openstack Volume
+    [Documentation]    Runs an Openstack Request to add a volume and returns that volume id of the created volume
+    [Arguments]    ${alias}    ${name}     ${size}
+    ${data_template}=    OperatingSystem.Get File    ${OPENSTACK_CINDER_VOLUMES_ADD_BODY_FILE}
+    ${uuid}=    Generate UUID
+    ${arguments}=    Create Dictionary    name=${name}     description=${GLOBAL_APPLICATION_ID}${uuid} size=${size}    type=${OPENSTACK_CINDER_VOLUMES_TYPE}    availability_zone=${OPENSTACK_CINDER_AVAILABILITY_ZONE}
+    ${data}=   Fill JSON Template    ${data_template}    ${arguments}
+    ${resp}=    Internal Post Openstack    ${alias}    ${GLOBAL_OPENSTACK_CINDER_SERVICE_TYPE}   ${OPENSTACK_CINDER_VOLUMES_PATH}    data_path=    data=${data}
+    Should Be Equal As Strings    200  ${resp.status_code}
+    [Return]    ${resp.json()['volume']['id']}
+
+Delete Openstack Volume
+    [Documentation]    Runs an Openstack Request to delete a volume
+    [Arguments]    ${alias}    ${volume_id}
+    ${resp}=    Internal Delete Openstack    ${alias}    ${GLOBAL_OPENSTACK_CINDER_SERVICE_TYPE}   ${OPENSTACK_CINDER_VOLUMES_PATH}      /${volume_id}
+    ${status_string}=    Convert To String    ${resp.status_code}
+    Should Match Regexp    ${status_string}    ^(204|200|404)$
+    [Return]    ${resp.text}
\ No newline at end of file