*** Settings ***
Documentation	  Create Cloud Config

Resource    ../json_templater.robot
Resource    ../so_interface.robot
Library    OperatingSystem
Library    Collections


*** Variables ***
${CLOUD_CONFIG_PATH}    /cloudSite

${SYSTEM USER}    robot-ete
${SO_ADD_CLOUD_CONFIG}=   robot/assets/templates/so/create_cloud_config.template
${SO_ADD_CLOUD_CONFIG_V3}=   robot/assets/templates/so/cloud_config_v3.template

*** Keywords ***
Create Cloud Configuration
    [Documentation]    Creates a cloud configuration in SO, so it knows how to talk to an openstack cloud
    [Arguments]    ${site_name}    ${region_id}   ${clli}   ${identity_id}   ${identity_url}   ${mso_id}    ${mso_pass}    ${admin_tenant}    ${member_role}    ${identity_server_type}    ${authentication_type}    
    ${arguments}=    Create Dictionary     site_name=${site_name}  region_id=${region_id}  clli=${clli}    identity_id=${identity_id}    identity_url=${identity_url}    mso_id=${mso_id}    mso_pass=${mso_pass}    admin_tenant=${admin_tenant}   member_role=${member_role}     identity_server_type=${identity_server_type}     authentication_type=${authentication_type}
    ${data}=	Fill JSON Template File    ${SO_ADD_CLOUD_CONFIG}     ${arguments}
    ${get_resp}=    Run SO Catalog Post request    ${CLOUD_CONFIG_PATH}/${site_name}     ${data}
    
    ${get_resp}=    Run Keyword If    '${get_resp.status_code}'=='404'    Update Cloud Configuration    ${site_name}    ${region_id}   ${clli}   ${identity_id}   ${identity_url}   ${mso_id}    ${mso_pass}    ${admin_tenant}    ${member_role}    ${identity_server_type}    ${authentication_type}
    Should Be Equal As Strings  ${get_resp.status_code}     200


Create Cloud Configuration v3
    [Documentation]    Creates a cloud configuration in SO, so it knows how to talk to an openstack cloud
    [Arguments]    ${site_name}    ${region_id}   ${clli}   ${identity_id}   ${identity_url}   ${mso_id}    ${mso_pass}    ${admin_tenant}    ${member_role}    ${identity_server_type}    ${authentication_type}    ${project_domain_name}    ${user_domain_Name}
    ${arguments}=    Create Dictionary     site_name=${site_name}  region_id=${region_id}  clli=${clli}    identity_id=${identity_id}    identity_url=${identity_url}    mso_id=${mso_id}    mso_pass=${mso_pass}    admin_tenant=${admin_tenant}   member_role=${member_role}     identity_server_type=${identity_server_type}     authentication_type=${authentication_type}    project_domain_name=${project_domain_name}    user_domain_name=${user_domain_name}
    Log    ${arguments}
    ${data}=	Fill JSON Template File    ${SO_ADD_CLOUD_CONFIG_V3}     ${arguments}
    ${get_resp}=    Run SO Catalog Post request     ${CLOUD_CONFIG_PATH}     ${data}
    ${status_string}=    Convert To String    ${get_resp.status_code}
    Should Match Regexp    ${status_string} 	^(201|200)$

Update Cloud Configuration
    [Documentation]    Updates a cloud configuration in SO
    [Arguments]    ${site_name}    ${region_id}   ${clli}   ${identity_id}   ${identity_url}   ${mso_id}    ${mso_pass}    ${admin_tenant}    ${member_role}    ${identity_server_type}    ${authentication_type}
    ${arguments}=    Create Dictionary     site_name=${site_name}  region_id=${region_id}  clli=${clli}    identity_id=${identity_id}    identity_url=${identity_url}    mso_id=${mso_id}    mso_pass=${mso_pass}    admin_tenant=${admin_tenant}   member_role=${member_role}     identity_server_type=${identity_server_type}     authentication_type=${authentication_type}
    ${data}=    Fill JSON Template File    ${SO_ADD_CLOUD_CONFIG}     ${arguments}
    ${get_resp}=    Run SO Catalog Put request    ${CLOUD_CONFIG_PATH}/${site_name}     ${data}
    Should Be Equal As Strings  ${get_resp.status_code}     200
    [Return]   ${get_resp}

Get Cloud Configuration
    [Documentation]    Gets cloud configuration in SO
    [Arguments]    ${site_name}    
    ${get_resp}=    Run MSO Catalog Get request    ${CLOUD_CONFIG_PATH}/${site_name}
    Should Be Equal As Strings  ${get_resp.status_code}     200