added db_edge_rule 2 test cases

Issue ID:AAI-155
Change-Id: Icc96ef8be4122d4aac6410669425ecb8389a1c1b
Signed-off-by: Singhsumalee, Pete (ps2418) <petes@att.com>
diff --git a/test/csit/plans/aai/resources/testplan.txt b/test/csit/plans/aai/resources/testplan.txt
index 79fc6d3..1e8902a 100644
--- a/test/csit/plans/aai/resources/testplan.txt
+++ b/test/csit/plans/aai/resources/testplan.txt
@@ -3,3 +3,4 @@
 aai/resources/api_suite
 aai/resources/relationship_suite
 aai/resources/error_handling_suite
+aai/resources/db_edge_rule
\ No newline at end of file
diff --git a/test/csit/tests/aai/resources/db_edge_rule/__init__.robot b/test/csit/tests/aai/resources/db_edge_rule/__init__.robot
new file mode 100644
index 0000000..538def8
--- /dev/null
+++ b/test/csit/tests/aai/resources/db_edge_rule/__init__.robot
@@ -0,0 +1,2 @@
+*** Settings ***
+Documentation    Resources - Pserver Suite
diff --git a/test/csit/tests/aai/resources/db_edge_rule/aai.crt b/test/csit/tests/aai/resources/db_edge_rule/aai.crt
new file mode 100644
index 0000000..6a28bbb
--- /dev/null
+++ b/test/csit/tests/aai/resources/db_edge_rule/aai.crt
@@ -0,0 +1,70 @@
+Bag Attributes
+    friendlyName: aaiopenecomp
+    localKeyID: 54 69 6D 65 20 31 35 30 34 38 33 32 34 34 33 32 39 32 
+subject=/C=US/ST=NJ/L=Bedminster/O=OpenECOMP/OU=SimpleDemo/CN=aai.api.simpledemo.openecomp.org/emailAddress=aai-host@api.simpledemo.openecomp.org
+issuer=/C=US/ST=NJ/L=Bedminster/O=OpenECOMP/OU=simpledemo/CN=OpenECOMP simpledemo Server CA X1/emailAddress=simpledemo@openecomp.org
+-----BEGIN CERTIFICATE-----
+MIIEiTCCA3GgAwIBAgIJAIPKfDLcn3MpMA0GCSqGSIb3DQEBCwUAMIGtMQswCQYD
+VQQGEwJVUzELMAkGA1UECAwCTkoxEzARBgNVBAcMCkJlZG1pbnN0ZXIxEjAQBgNV
+BAoMCU9wZW5FQ09NUDETMBEGA1UECwwKc2ltcGxlZGVtbzEqMCgGA1UEAwwhT3Bl
+bkVDT01QIHNpbXBsZWRlbW8gU2VydmVyIENBIFgxMScwJQYJKoZIhvcNAQkBFhhz
+aW1wbGVkZW1vQG9wZW5lY29tcC5vcmcwHhcNMTYxMTMwMTUzODM5WhcNMTcxMTMw
+MTUzODM5WjCBuTELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAk5KMRMwEQYDVQQHDApC
+ZWRtaW5zdGVyMRIwEAYDVQQKDAlPcGVuRUNPTVAxEzARBgNVBAsMClNpbXBsZURl
+bW8xKTAnBgNVBAMMIGFhaS5hcGkuc2ltcGxlZGVtby5vcGVuZWNvbXAub3JnMTQw
+MgYJKoZIhvcNAQkBFiVhYWktaG9zdEBhcGkuc2ltcGxlZGVtby5vcGVuZWNvbXAu
+b3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwQrQl8A0rT0Jjlos
+Mr/7LEhT5UOif4GGPOk+3NCIxT3lOqAbUf+d9ZXyT2jWFRiKWua03vQ+Dxc8c2h2
+RRuH8LwEiOiWqPjWRxNqsARzZMI3ryHFCFBZh0FcpjH9kEeKVlLDYuV68k+ZucKd
+NiqUNn61lD7kbmEGwvzKwf91FrJ09+CBMx1OnWKm3gCNKDqAEFMZCOdn2MgesJYB
+/03lzPBS1jDfBXImXRcTBzpgA+wdCLn0cIQ1eLWUwS5tUqUJNh36nHdVyJ0P2Yjd
+JLuxhFcmBKOz1ShyyO+BBtKBO8EGbU6qKflOiwOw0Fsn8LjKcrHQ58NPui5y04BU
+Rypf3QIDAQABo4GdMIGaMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgO4MB0G
+A1UdDgQWBBQyMUOsE2J+CKzK0qd8KFBD2gaWyjBbBgNVHSAEVDBSMFAGBFUdIAAw
+SDBGBggrBgEFBQcCAjA6GjhLZWVwIGF3YXkgZnJvbSBjaGlsZHJlbi4gIFRoaXMg
+Y2VydGlmaWNhdGUgaXMgbm90IGEgdG95LjANBgkqhkiG9w0BAQsFAAOCAQEAnkoy
+2tWJOyyyIQwtVojUxv1GWQPnw3WCUcKpuX4CJhHXLxNErW1fBg7bmo08BNmBPPpq
+WrJsy5lbBgUo9kgpViux5Stfy1rRIRsRLfl/icgCvJmUAxkmRCZL7yUvwG4K7s+8
+DwT+nW/XuWNP6Hd/qHccexB6COJ8KwvTdVoxAkCdX8qw4MCb/f7Kb1yle/vwBM5Q
+UUONCJ4bEns1vnb9DGlNDUJNwCfwORAaVJpVS38Mv4UnSTmb2KMePtCWcx/dNsYR
+2XrSGqLDnTvHwOpyhbfFTmackysGoSuDytORXy8YbwEiF13BwEK8i3rgNN0Z2ojf
+cpmE2xxmaa+A2uuN6g==
+-----END CERTIFICATE-----
+Bag Attributes
+    friendlyName: root
+    2.16.840.1.113894.746875.1.1: <Unsupported tag 6>
+subject=/C=US/ST=NJ/L=Bedminster/O=OpenECOMP/OU=simpledemo/CN=OpenECOMP simpledemo Server CA X1/emailAddress=simpledemo@openecomp.org
+issuer=/C=US/ST=NJ/L=Bedminster/O=OpenECOMP/OU=simpledemo/CN=OpenECOMP simpledemo Root Certification Authority/emailAddress=simpledemo@openecomp.org
+-----BEGIN CERTIFICATE-----
+MIIFpTCCA42gAwIBAgIJAJqx8dKnCZZoMA0GCSqGSIb3DQEBCwUAMIG9MQswCQYD
+VQQGEwJVUzELMAkGA1UECAwCTkoxEzARBgNVBAcMCkJlZG1pbnN0ZXIxEjAQBgNV
+BAoMCU9wZW5FQ09NUDETMBEGA1UECwwKc2ltcGxlZGVtbzE6MDgGA1UEAwwxT3Bl
+bkVDT01QIHNpbXBsZWRlbW8gUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEn
+MCUGCSqGSIb3DQEJARYYc2ltcGxlZGVtb0BvcGVuZWNvbXAub3JnMB4XDTE2MTEy
+ODIxMTQyNloXDTIxMTEyNzIxMTQyNlowga0xCzAJBgNVBAYTAlVTMQswCQYDVQQI
+DAJOSjETMBEGA1UEBwwKQmVkbWluc3RlcjESMBAGA1UECgwJT3BlbkVDT01QMRMw
+EQYDVQQLDApzaW1wbGVkZW1vMSowKAYDVQQDDCFPcGVuRUNPTVAgc2ltcGxlZGVt
+byBTZXJ2ZXIgQ0EgWDExJzAlBgkqhkiG9w0BCQEWGHNpbXBsZWRlbW9Ab3BlbmVj
+b21wLm9yZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALr4rivKQuRk
+YNf5Ig40e1nqj6s6LB1vgMOYbKfRziOFpPcUpsHPOhusHowiUsrU1vdFSzPz6Ej7
+PjlmNSg2Qka8YCn9kd6QgM7U0KcPJvIucBp+qjifH3EvP0jgDPhDeVRYxzV454dv
+5kQ9uCpswJP7YAnX51dkWeH8nwPUoagt31bOl9LXENSrgxEThxdLYMJnQJWk2CmV
+otXM4tT1dxyJxFUrZ6uJCEAYw5VtlplqihHf8lHy+sWQavtsLz/4dc+sGeXSTfoI
+voKvoh3uZ5gEhGV8yfJxk1veX5y5/AxP80vQ+smWYjTnQL5QQ57y4bciez4XVBmQ
+SWimWtOi4e8CAwEAAaOBtTCBsjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE
+AwIBhjAdBgNVHQ4EFgQUTqdsYgGNGubdJHq9tsaJhM9HE5wwcAYDVR0gBGkwZzBl
+BgRVHSAAMF0wWwYIKwYBBQUHAgIwTxpNSWYgeW91IHRydXN0IHRoaXMgY2VydCB0
+aGVuIHdlIGhhdmUgYSBicmlkZ2UgdGhhdCB5b3UgbWlnaHQgYmUgaW50ZXJlc3Rl
+ZCBpbi4wDQYJKoZIhvcNAQELBQADggIBAKNNlRqFuE/JgV1BHyYK0xoSXH4aZP/7
+IoHtDVcSaZAOOuFOUrwVMUbzRBebbb6RpFwt/X+NLFUGysd+XNLF7W7lzxKtmFNX
+n4OpNkBe0y5O7yurus8rERHzu3jiOSgVo+WzDlGpYSRnG3hI2qPWqD+Puzx/WwI8
+XUTuzEQQ3gUSyVFfXHpay3VpYmLZiLJ9WKY5SDw7Ie6Sxrju4Qm1HwnFY8wHZGcs
+2KMQzorJ1ZNQf523yUTghbT0rKaSFaD8zugPtI2ONfFG/QgrkQXo78opzPsHnHwa
+SxGSiAgeLbwAUCvPNl27zr6k6+7TcNjV0VUivAs0OG3VEAdgi7UWYB+30KfWwHwE
+zGmvd4IAGqIqlqLcSVArN5z8JK1B5nfjQn5UrclU1vK+dnuiKE2X4rKuBTRYRFR/
+km+mj4koYFPKFHndmJl1uv2OCJK9l5CSIuKWeI1qv8BASKqgNdoT/SKBXqxgYlCb
+o+j4IDjxrxChRO+e5vl9lA7INfRrbljCkUjfLRa+v2q9tWQ3+EQUwwnSrSfihh2T
+j0Tksr6b8dDsvMlCdOKG1B+JPcEXORSFKNXVTEfjqpJG8s16kFAocWt3S6xO0k1t
+qbQp+3tWQgW2TGnX0rMZzB6NGRNfWhlYmq2zHgXkiCIZ26Ztgt/LNbwEvN3+VlLo
+z/Rd+SKtlrfb
+-----END CERTIFICATE-----
diff --git a/test/csit/tests/aai/resources/db_edge_rule/aai.key b/test/csit/tests/aai/resources/db_edge_rule/aai.key
new file mode 100644
index 0000000..02724df
--- /dev/null
+++ b/test/csit/tests/aai/resources/db_edge_rule/aai.key
@@ -0,0 +1,32 @@
+Bag Attributes
+    friendlyName: aaiopenecomp
+    localKeyID: 54 69 6D 65 20 31 35 30 34 38 33 32 34 34 33 32 39 32 
+Key Attributes: <No Attributes>
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDBCtCXwDStPQmO
+Wiwyv/ssSFPlQ6J/gYY86T7c0IjFPeU6oBtR/531lfJPaNYVGIpa5rTe9D4PFzxz
+aHZFG4fwvASI6Jao+NZHE2qwBHNkwjevIcUIUFmHQVymMf2QR4pWUsNi5XryT5m5
+wp02KpQ2frWUPuRuYQbC/MrB/3UWsnT34IEzHU6dYqbeAI0oOoAQUxkI52fYyB6w
+lgH/TeXM8FLWMN8FciZdFxMHOmAD7B0IufRwhDV4tZTBLm1SpQk2Hfqcd1XInQ/Z
+iN0ku7GEVyYEo7PVKHLI74EG0oE7wQZtTqop+U6LA7DQWyfwuMpysdDnw0+6LnLT
+gFRHKl/dAgMBAAECggEBAJko2HkeIW01mUhdWOXnFgR7WjzzXZEmlffr41lVBr7f
+rejGsQZs9cms73R7rCdOsi8PDoA6bqaQfADg571K659fvYVWbHqh+3im+iWvUlKm
+GYIVG/vNrEq43CZsUU7Qw/xba/QiOFraNxCATTV1sORPwgddouXEi5XW9ZPX9/FJ
+wORx4L/K0DfHX1rr+rtOoHCJdZYhn3Ij87kmR8Mwg0fNeWhHqtxUEyM/itRjCvOe
+mgt2V8DORhmq12L4+5QJctBrkBVRp9Rh6YSZZBGnKbTSgf4q648BdkJDLSK4cguT
+D6BAw3gxj5V4wt5W0wn2JpjadFwnixrTzvMP/yAqfK0CgYEA93nBAoUPw8nzQkwk
+8iWBjfJ999Rw92hnnvk3xbcQcGfgUYuB4dxwe6FQTmFIVylt81er1YUvMb3ao7fo
+5ZcGnI5p1idjsd27kbZJLxb5Oh919hKu5IfkfYsVgnC0UdKCTgH5CaH0U4ATuXwt
+RL6qm0XcLALs5y2OO6z3s+mYhisCgYEAx7EQ8MA45bkXnRQiHBhGcIIcr2sRDfVJ
+OhHmGxx3EcYgtsIYKTqtQOyIt/nQxo6iyNL9bzfzBTybFJLuj63ZG1Ef4LosJedl
+eAU2NsKv5MlKYDSdNbLAJ0Op9I2Xu/pXQecPwY/3MkIQArdQCLevMLEGywCsuJTn
+BjkJNDkb9hcCgYAhoFiaiAwJVYKJSqFmibQd3opBR4uGApi54DE021gPff3b9rHS
+R8q88cFgtRVISqfW/d2qaKtt/dcckdvCfo/2a99zqux/+ZoIBZXSITQCMs4rfoRn
+JxPj/ycQD1JhH9J22QvGxEvXoLqNZJMeGS5DZO2yyT75dpYyA6Gwv5fq+wKBgQC5
+AhV917lfLELyZurLOLpaFlHZO8rLMcusH1UfHRo7v2IjsGOOHyzRD9QDD1IcA55R
+jRj8Z8uhuGq9fvvC5gBVTK3KGPI6E85wifOWfH1V7CAaTeSxEXDxb8EQL/a6U89v
+4VE5tdYCHC6VNZzS1staw0hV38QmJt57Z3Bdj+OV9QKBgE/b9fxpo+SVQ37BzNNY
+SEKTTijaddz8fdomApg6a2eFJL93Ej/op7N7gnHtPWMivPnRRza9ZjfnG+aZ7n2J
+sWyBiZK9xliS2TsF3l3q9Z0Vaq3i1nOlV7Bd20ZS8KjQjDtKnIRfLkQDkvmXbU5L
+emwkdsQZbpPFJch3mCGtI7JW
+-----END PRIVATE KEY-----
diff --git a/test/csit/tests/aai/resources/db_edge_rule/delete_other_v.robot b/test/csit/tests/aai/resources/db_edge_rule/delete_other_v.robot
new file mode 100644
index 0000000..d7da7ab
--- /dev/null
+++ b/test/csit/tests/aai/resources/db_edge_rule/delete_other_v.robot
@@ -0,0 +1,95 @@
+*** Settings ***
+Library       OperatingSystem
+Library       RequestsLibrary
+Library       requests
+Library       Collections
+
+*** Variables ***
+${CUSTOMERKEYVALUE}        customer-integration-test3
+${LOGICALLINKKEYVALUE}     logical-link-integration-test3
+${CUSTOMERURL}             https://${HOST_IP}:8443/aai/v11/business/customers/customer/${CUSTOMERKEYVALUE}
+${LOGICALLINKURL}          https://${HOST_IP}:8443/aai/v11/network/logical-links/logical-link/${LOGICALLINKKEYVALUE}
+${CUSTOMERDATA}  {"global-customer-id":"${CUSTOMERKEYVALUE}","subscriber-name":"subscriber-name-integration-test","subscriber-type":"subscriber-type-integration-test","service-subscriptions":{"service-subscription":{"service-type":"service-type-987654321-04","service-instances":{"service-instance":{"service-instance-id":"service-instance-id-integration-test","relationship-list":{"relationship":[{"related-to":"logical-link","relationship-data":[{"relationship-key":"logical-link.link-name","relationship-value":"${LOGICALLINKKEYVALUE}"}]}]}}}}}}
+${LOGICALLINKDATA}  {"link-name":"${LOGICALLINKKEYVALUE}","link-type":"example-link-type-value-val-126","speed-value":"example-speed-value-val-126","speed-units":"example-speed-units-val-126","ip-version":"example-ip-version-val-126","routing-protocol":"example-routing-protocol-val-126","resource-model-uuid":"example-resource-model-uuid-val-5465"}
+
+*** Test Cases ***
+Run AAI Put logical-link
+    [Documentation]             Create an logical-link object
+    ${resp}=                    PutWithCert              ${LOGICALLINKURL}              ${LOGICALLINKDATA}
+    log                         ${LOGICALLINKURL}
+    log                         ${resp.text}
+    Should Be Equal As Strings  ${resp.status_code}      201
+
+Run AAI Get logical-link
+    [Documentation]             Get the logical-link object just created
+    ${resp}                     GetWithCert              ${LOGICALLINKURL}
+    log                         ${resp}
+    log                         ${resp.json()}
+    Should Be Equal As Strings  ${resp.status_code}      200
+	
+Run AAI Put customer rel with logical-link
+    [Documentation]             Create customer rel with logical-link
+    ${resp}=                    PutWithCert              ${CUSTOMERURL}              ${CUSTOMERDATA}
+    log                         ${CUSTOMERURL}
+    log                         ${resp.text}
+    Should Be Equal As Strings  ${resp.status_code}      201
+
+Run AAI Get customer to delete
+    [Documentation]             Get the customer
+    ${resp}                     GetWithCert              ${CUSTOMERURL}
+    log                         ${resp}
+    log                         ${resp.json()}
+    Should Be Equal As Strings  ${resp.status_code}      200
+    ${resource_version}=        Evaluate                 $resp.json().get('resource-version')
+    Set Global Variable			${resource_version}
+
+Run AAI Delete customer
+    [Documentation]             Delete the customer
+    ${resp}=                    DeleteWithCert           ${CUSTOMERURL}?resource-version=${resource_version}
+    log                         ${resp.text}
+    Should Be Equal As Strings  ${resp.status_code}      204
+	
+Run AAI Get logical-link should not found error 404
+    [Documentation]             Get logical-link should not found error 404
+    ${resp}                     GetWithCert              ${LOGICALLINKURL}
+    log                         ${resp}
+    log                         ${resp.json()}
+    Should Be Equal As Strings  ${resp.status_code}      404
+
+*** Keywords ***
+PutWithCert
+    [Arguments]      ${url}      ${data}
+    ${headers}=      Create Dictionary     Accept=application/json    Content-Type=application/json    X-TransactionId=integration-aai    X-FromAppId=integration-aai   Authorization=Basic QUFJOkFBSQ==
+    ${certinfo}=     Evaluate    ('${CURDIR}/aai.crt', '${CURDIR}/aai.key')
+    ${resp}=         Evaluate    requests.put('${url}', data='${data}', headers=${headers}, cert=${certinfo}, verify=False)    requests
+    [return]         ${resp}
+	
+PatchWithCert
+    [Arguments]      ${url}      ${data}
+    ${headers}=      Create Dictionary     Accept=application/json    Content-Type=application/merge-patch+json    X-TransactionId=integration-aai    X-FromAppId=integration-aai   Authorization=Basic QUFJOkFBSQ==
+    ${certinfo}=     Evaluate    ('${CURDIR}/aai.crt', '${CURDIR}/aai.key')
+    ${resp}=         Evaluate    requests.patch('${url}', data='${data}', headers=${headers}, cert=${certinfo}, verify=False)    requests
+    [return]         ${resp}	
+
+PostWithCert
+    [Arguments]      ${url}      ${data}
+    ${auth}=         Create List  AAI AAI
+    ${headers}=      Create Dictionary     Accept=application/json    Content-Type=application/json    X-TransactionId=integration-aai    X-FromAppId=integration-aai   Authorization=Basic QUFJOkFBSQ==
+    ${certinfo}=     Evaluate    ('${CURDIR}/aai.crt', '${CURDIR}/aai.key')
+    ${resp}=         Evaluate    requests.post('${url}', data='${data}', headers=${headers}, cert=${certinfo}, verify=False)    requests
+    [return]         ${resp}
+
+GetWithCert
+    [Arguments]      ${url}
+    ${headers}=      Create Dictionary     Accept=application/json    Content-Type=application/json    X-TransactionId=integration-aai    X-FromAppId=integration-aai   Authorization=Basic QUFJOkFBSQ==
+    ${certinfo}=     Evaluate    ('${CURDIR}/aai.crt', '${CURDIR}/aai.key')
+    ${resp}=         Evaluate    requests.get('${url}', headers=${headers}, cert=${certinfo}, verify=False)    requests
+    [return]         ${resp}
+
+DeleteWithCert
+    [Arguments]      ${url}
+    ${auth}=         Create List  AAI AAI
+    ${headers}=      Create Dictionary     Accept=application/json    Content-Type=application/json    X-TransactionId=integration-aai    X-FromAppId=integration-aai   Authorization=Basic QUFJOkFBSQ==
+    ${certinfo}=     Evaluate    ('${CURDIR}/aai.crt', '${CURDIR}/aai.key')
+    ${resp}=         Evaluate    requests.delete('${url}', headers=${headers}, cert=${certinfo}, verify=False)    requests
+    [return]         ${resp}
\ No newline at end of file
diff --git a/test/csit/tests/aai/resources/db_edge_rule/edge_multiplicity_one_2_one.robot b/test/csit/tests/aai/resources/db_edge_rule/edge_multiplicity_one_2_one.robot
new file mode 100644
index 0000000..bb0a2a4
--- /dev/null
+++ b/test/csit/tests/aai/resources/db_edge_rule/edge_multiplicity_one_2_one.robot
@@ -0,0 +1,224 @@
+*** Settings ***
+Library       OperatingSystem
+Library       RequestsLibrary
+Library       requests
+Library       Collections
+
+*** Variables ***
+${CRKEYVALUE1}         cr-integration-test1
+${CRKEYVALUE2}         cr-integration-test2
+${TENANTKEYVALUE}     tenant-integration-test1
+${VSERVERKEYVALUE1}   vserver-integration-test1
+${VSERVERKEYVALUE2}   vserver-integration-test2
+${SNAPSHOTKEYVALUE1}  snapshot-integration-test1
+${SNAPSHOTKEYVALUE2}  snapshot-integration-test2
+
+${CRURL}                  https://${HOST_IP}:8443/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/${CRKEYVALUE1}/${CRKEYVALUE2}
+${TENANTURL}              https://${HOST_IP}:8443/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/${CRKEYVALUE1}/${CRKEYVALUE2}/tenants/tenant/${TENANTKEYVALUE}
+${VSERVERURL1}            https://${HOST_IP}:8443/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/${CRKEYVALUE1}/${CRKEYVALUE2}/tenants/tenant/${TENANTKEYVALUE}/vservers/vserver/${VSERVERKEYVALUE1}
+${VSERVERURL2}            https://${HOST_IP}:8443/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/${CRKEYVALUE1}/${CRKEYVALUE2}/tenants/tenant/${TENANTKEYVALUE}/vservers/vserver/${VSERVERKEYVALUE2}
+${SNAPSHOTURL1}           https://${HOST_IP}:8443/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/${CRKEYVALUE1}/${CRKEYVALUE2}/snapshots/snapshot/${SNAPSHOTKEYVALUE1}
+${SNAPSHOTURL2}           https://${HOST_IP}:8443/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/${CRKEYVALUE1}/${CRKEYVALUE2}/snapshots/snapshot/${SNAPSHOTKEYVALUE2}
+${RELATIONSHIPURL1}       https://${HOST_IP}:8443/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/${CRKEYVALUE1}/${CRKEYVALUE2}/tenants/tenant/${TENANTKEYVALUE}/vservers/vserver/${VSERVERKEYVALUE1}/relationship-list/relationship
+${RELATIONSHIPURL2}       https://${HOST_IP}:8443/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/${CRKEYVALUE1}/${CRKEYVALUE2}/snapshots/snapshot/${SNAPSHOTKEYVALUE1}/relationship-list/relationship
+${CRDATA}  {"cloud-owner":"${CRKEYVALUE1}","cloud-region-id":"${CRKEYVALUE2}","owner-defined-type":"example-owner-defined-type-987654321-09","cloud-region-version":"example-cloud-region-version-987654321-09","identity-url":"example-identity-url-987654321-09","cloud-zone":"example-cloud-zone-987654321-09","complex-name":"example-complex-name-987654321-09"}
+${TENANTDATA}  {"tenant-id":"${TENANTKEYVALUE}","tenant-name":"tenant-name-0999"}
+${VSERVERDATA1}  {"vserver-id":"${VSERVERKEYVALUE1}","vserver-name":"example-vserver-name-val-7367","vserver-name2":"example-vserver-name2-val-7367","prov-status":"example-prov-status-val-7367","vserver-selflink":"example-vserver-selflink-val-7367"}
+${VSERVERDATA2}  {"vserver-id":"${VSERVERKEYVALUE2}","vserver-name":"example-vserver-name-val-73678","vserver-name2":"example-vserver-name2-val-73867","prov-status":"example-prov-status-val-73867","vserver-selflink":"example-vserver-selflink-val-73687"}
+${SNAPSHOTDATA1}  {"snapshot-id":"${SNAPSHOTKEYVALUE1}"}
+${SNAPSHOTDATA2}  {"snapshot-id":"${SNAPSHOTKEYVALUE2}"}
+${RELATIONSHIPDATA1}  {"related-to":"snapshot","relationship-data":[{"relationship-key":"snapshot.snapshot-id","relationship-value":"${SNAPSHOTKEYVALUE1}"},{"relationship-key":"cloud-region.cloud-owner","relationship-value":"${CRKEYVALUE1}"},{"relationship-key":"cloud-region.cloud-region-id","relationship-value":"${CRKEYVALUE2}"}]}
+${RELATIONSHIPDATA2}  {"related-to":"snapshot","relationship-data":[{"relationship-key":"snapshot.snapshot-id","relationship-value":"${SNAPSHOTKEYVALUE2}"},{"relationship-key":"cloud-region.cloud-owner","relationship-value":"${CRKEYVALUE1}"},{"relationship-key":"cloud-region.cloud-region-id","relationship-value":"${CRKEYVALUE2}"}]}
+${RELATIONSHIPDATA3}  {"related-to":"vserver","relationship-data":[{"relationship-key":"vserver.vserver-id","relationship-value":"${VSERVERKEYVALUE2}"},{"relationship-key":"tenant.tenant-id","relationship-value":"${TENANTKEYVALUE}"},{"relationship-key":"cloud-region.cloud-owner","relationship-value":"${CRKEYVALUE1}"},{"relationship-key":"cloud-region.cloud-region-id","relationship-value":"${CRKEYVALUE2}"}]}
+
+*** Test Cases ***
+Run AAI Put cloud-region
+    [Documentation]             Create an cloud-region object
+    ${resp}=                    PutWithCert              ${CRURL}              ${CRDATA}
+    log                         ${CRURL}
+    log                         ${resp.text}
+    Should Be Equal As Strings  ${resp.status_code}      201
+	
+Run AAI Put tenant
+    [Documentation]             Create an tenant object
+    ${resp}=                    PutWithCert              ${TENANTURL}              ${TENANTDATA}
+    log                         ${TENANTURL}
+    log                         ${resp.text}
+    Should Be Equal As Strings  ${resp.status_code}      201
+
+Run AAI Put vserver1
+    [Documentation]             Create an vserver1 object
+    ${resp}=                    PutWithCert              ${VSERVERURL1}              ${VSERVERDATA1}
+    log                         ${VSERVERURL1}
+    log                         ${resp.text}
+    Should Be Equal As Strings  ${resp.status_code}      201
+
+Run AAI Put vserver2
+    [Documentation]             Create an vserver2 object
+    ${resp}=                    PutWithCert              ${VSERVERURL2}              ${VSERVERDATA2}
+    log                         ${VSERVERURL2}
+    log                         ${resp.text}
+    Should Be Equal As Strings  ${resp.status_code}      201
+
+Run AAI Put snapshot1
+    [Documentation]             Create an snapshot1 object
+    ${resp}=                    PutWithCert              ${SNAPSHOTURL1}              ${SNAPSHOTDATA1}
+    log                         ${SNAPSHOTURL1}
+    log                         ${resp.text}
+    Should Be Equal As Strings  ${resp.status_code}      201
+
+Run AAI Put snapshot2
+    [Documentation]             Create an snapshot2 object
+    ${resp}=                    PutWithCert              ${SNAPSHOTURL2}              ${SNAPSHOTDATA2}
+    log                         ${SNAPSHOTURL2}
+    log                         ${resp.text}
+    Should Be Equal As Strings  ${resp.status_code}      201	
+	
+Run AAI Put relationship vserver1 and snapshot1
+    [Documentation]             Create relationship vserver1 and snapshot1
+    ${resp}=                    PutWithCert              ${RELATIONSHIPURL1}              ${RELATIONSHIPDATA1}
+    log                         ${RELATIONSHIPURL1}
+    log                         ${resp.text}
+    Should Be Equal As Strings  ${resp.status_code}      200	
+	
+Run AAI Put relationship vserver1 and snapshot2 (NOT ALLOW)
+    [Documentation]             Create relationship vserver1 and snapshot2 (NOT ALLOW)
+    ${resp}=                    PutWithCert              ${RELATIONSHIPURL1}              ${RELATIONSHIPDATA2}
+    log                         ${RELATIONSHIPURL1}
+    log                         ${resp.text}
+    Should Be Equal As Strings  ${resp.status_code}      400	
+	
+Run AAI Put relationship snapshot1 and vserver2 (NOT ALLOW)
+    [Documentation]             Create relationship snapshot1 and vserver2 (NOT ALLOW)
+    ${resp}=                    PutWithCert              ${RELATIONSHIPURL2}              ${RELATIONSHIPDATA3}
+    log                         ${RELATIONSHIPURL2}
+    log                         ${resp.text}
+    Should Be Equal As Strings  ${resp.status_code}      400
+	
+Run AAI Get vserver1 to delete
+    [Documentation]             Get vserver1 object to delete
+    ${resp}                     GetWithCert              ${VSERVERURL1}
+    log                         ${resp}
+    log                         ${resp.json()}
+    Should Be Equal As Strings  ${resp.status_code}      200
+    ${resource_version}=        Evaluate                 $resp.json().get('resource-version')
+    Set Global Variable			${resource_version}
+
+Run AAI Delete vserver1
+    [Documentation]             Delete the vserver1
+    ${resp}=                    DeleteWithCert           ${VSERVERURL1}?resource-version=${resource_version}
+    log                         ${resp.text}
+    Should Be Equal As Strings  ${resp.status_code}      204
+	
+Run AAI Get vserver2 to delete
+    [Documentation]             Get vserver2 object to delete
+    ${resp}                     GetWithCert              ${VSERVERURL2}
+    log                         ${resp}
+    log                         ${resp.json()}
+    Should Be Equal As Strings  ${resp.status_code}      200
+    ${resource_version}=        Evaluate                 $resp.json().get('resource-version')
+    Set Global Variable			${resource_version}
+
+Run AAI Delete vserver2
+    [Documentation]             Delete the vserver2
+    ${resp}=                    DeleteWithCert           ${VSERVERURL2}?resource-version=${resource_version}
+    log                         ${resp.text}
+    Should Be Equal As Strings  ${resp.status_code}      204
+
+Run AAI Get snapshot1 to delete
+    [Documentation]             Get snapshot1 object to delete
+    ${resp}                     GetWithCert              ${SNAPSHOTURL1}
+    log                         ${resp}
+    log                         ${resp.json()}
+    Should Be Equal As Strings  ${resp.status_code}      200
+    ${resource_version}=        Evaluate                 $resp.json().get('resource-version')
+    Set Global Variable			${resource_version}
+
+Run AAI Delete snapshot1
+    [Documentation]             Delete the snapshot1
+    ${resp}=                    DeleteWithCert           ${SNAPSHOTURL1}?resource-version=${resource_version}
+    log                         ${resp.text}
+    Should Be Equal As Strings  ${resp.status_code}      204	
+	
+Run AAI Get snapshot2 to delete
+    [Documentation]             Get snapshot2 object to delete
+    ${resp}                     GetWithCert              ${SNAPSHOTURL2}
+    log                         ${resp}
+    log                         ${resp.json()}
+    Should Be Equal As Strings  ${resp.status_code}      200
+    ${resource_version}=        Evaluate                 $resp.json().get('resource-version')
+    Set Global Variable			${resource_version}
+
+Run AAI Delete snapshot2
+    [Documentation]             Delete the snapshot2
+    ${resp}=                    DeleteWithCert           ${SNAPSHOTURL2}?resource-version=${resource_version}
+    log                         ${resp.text}
+    Should Be Equal As Strings  ${resp.status_code}      204	
+	
+Run AAI Get tenant to delete
+    [Documentation]             Get tenant object to delete
+    ${resp}                     GetWithCert              ${TENANTURL}
+    log                         ${resp}
+    log                         ${resp.json()}
+    Should Be Equal As Strings  ${resp.status_code}      200
+    ${resource_version}=        Evaluate                 $resp.json().get('resource-version')
+    Set Global Variable			${resource_version}
+
+Run AAI Delete tenant
+    [Documentation]             Delete the tenant
+    ${resp}=                    DeleteWithCert           ${TENANTURL}?resource-version=${resource_version}
+    log                         ${resp.text}
+    Should Be Equal As Strings  ${resp.status_code}      204	
+	
+Run AAI Get cr to delete
+    [Documentation]             Get cr object to delete
+    ${resp}                     GetWithCert              ${CRURL}
+    log                         ${resp}
+    log                         ${resp.json()}
+    Should Be Equal As Strings  ${resp.status_code}      200
+    ${resource_version}=        Evaluate                 $resp.json().get('resource-version')
+    Set Global Variable			${resource_version}
+
+Run AAI Delete cr
+    [Documentation]             Delete the cr
+    ${resp}=                    DeleteWithCert           ${CRURL}?resource-version=${resource_version}
+    log                         ${resp.text}
+    Should Be Equal As Strings  ${resp.status_code}      204	
+	
+*** Keywords ***
+PutWithCert
+    [Arguments]      ${url}      ${data}
+    ${headers}=      Create Dictionary     Accept=application/json    Content-Type=application/json    X-TransactionId=integration-aai    X-FromAppId=integration-aai   Authorization=Basic QUFJOkFBSQ==
+    ${certinfo}=     Evaluate    ('${CURDIR}/aai.crt', '${CURDIR}/aai.key')
+    ${resp}=         Evaluate    requests.put('${url}', data='${data}', headers=${headers}, cert=${certinfo}, verify=False)    requests
+    [return]         ${resp}
+	
+PatchWithCert
+    [Arguments]      ${url}      ${data}
+    ${headers}=      Create Dictionary     Accept=application/json    Content-Type=application/merge-patch+json    X-TransactionId=integration-aai    X-FromAppId=integration-aai   Authorization=Basic QUFJOkFBSQ==
+    ${certinfo}=     Evaluate    ('${CURDIR}/aai.crt', '${CURDIR}/aai.key')
+    ${resp}=         Evaluate    requests.patch('${url}', data='${data}', headers=${headers}, cert=${certinfo}, verify=False)    requests
+    [return]         ${resp}	
+
+PostWithCert
+    [Arguments]      ${url}      ${data}
+    ${auth}=         Create List  AAI AAI
+    ${headers}=      Create Dictionary     Accept=application/json    Content-Type=application/json    X-TransactionId=integration-aai    X-FromAppId=integration-aai   Authorization=Basic QUFJOkFBSQ==
+    ${certinfo}=     Evaluate    ('${CURDIR}/aai.crt', '${CURDIR}/aai.key')
+    ${resp}=         Evaluate    requests.post('${url}', data='${data}', headers=${headers}, cert=${certinfo}, verify=False)    requests
+    [return]         ${resp}
+
+GetWithCert
+    [Arguments]      ${url}
+    ${headers}=      Create Dictionary     Accept=application/json    Content-Type=application/json    X-TransactionId=integration-aai    X-FromAppId=integration-aai   Authorization=Basic QUFJOkFBSQ==
+    ${certinfo}=     Evaluate    ('${CURDIR}/aai.crt', '${CURDIR}/aai.key')
+    ${resp}=         Evaluate    requests.get('${url}', headers=${headers}, cert=${certinfo}, verify=False)    requests
+    [return]         ${resp}
+
+DeleteWithCert
+    [Arguments]      ${url}
+    ${auth}=         Create List  AAI AAI
+    ${headers}=      Create Dictionary     Accept=application/json    Content-Type=application/json    X-TransactionId=integration-aai    X-FromAppId=integration-aai   Authorization=Basic QUFJOkFBSQ==
+    ${certinfo}=     Evaluate    ('${CURDIR}/aai.crt', '${CURDIR}/aai.key')
+    ${resp}=         Evaluate    requests.delete('${url}', headers=${headers}, cert=${certinfo}, verify=False)    requests
+    [return]         ${resp}
\ No newline at end of file