github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/acceptance/openstack/elb/v3/helpers.go (about) 1 package v3 2 3 import ( 4 "testing" 5 6 golangsdk "github.com/opentelekomcloud/gophertelekomcloud" 7 "github.com/opentelekomcloud/gophertelekomcloud/acceptance/clients" 8 "github.com/opentelekomcloud/gophertelekomcloud/acceptance/tools" 9 "github.com/opentelekomcloud/gophertelekomcloud/openstack/common/pointerto" 10 "github.com/opentelekomcloud/gophertelekomcloud/openstack/common/tags" 11 "github.com/opentelekomcloud/gophertelekomcloud/openstack/elb/v3/certificates" 12 "github.com/opentelekomcloud/gophertelekomcloud/openstack/elb/v3/listeners" 13 "github.com/opentelekomcloud/gophertelekomcloud/openstack/elb/v3/loadbalancers" 14 "github.com/opentelekomcloud/gophertelekomcloud/openstack/elb/v3/pools" 15 th "github.com/opentelekomcloud/gophertelekomcloud/testhelper" 16 ) 17 18 func createLoadBalancer(t *testing.T, client *golangsdk.ServiceClient) string { 19 t.Logf("Attempting to create ELBv3 LoadBalancer") 20 lbName := tools.RandomString("create-lb-", 3) 21 adminStateUp := true 22 23 vpcID := clients.EnvOS.GetEnv("VPC_ID") 24 networkID := clients.EnvOS.GetEnv("NETWORK_ID") 25 subnetID := clients.EnvOS.GetEnv("SUBNET_ID") 26 if networkID == "" || vpcID == "" || subnetID == "" { 27 t.Skip("OS_NETWORK_ID/OS_VPC_ID/OS_SUBNET_ID env vars are missing but LBv3 test requires") 28 } 29 30 az := clients.EnvOS.GetEnv("AVAILABILITY_ZONE") 31 if az == "" { 32 az = "eu-nl-01" 33 } 34 ipTargetEnable := true 35 36 createOpts := loadbalancers.CreateOpts{ 37 Name: lbName, 38 Description: "some interesting loadbalancer", 39 VipSubnetCidrID: subnetID, 40 VpcID: vpcID, 41 AvailabilityZoneList: []string{az}, 42 Tags: []tags.ResourceTag{ 43 { 44 Key: "gophertelekomcloud", 45 Value: "loadbalancer", 46 }, 47 }, 48 AdminStateUp: &adminStateUp, 49 ElbSubnetIDs: []string{networkID}, 50 IpTargetEnable: &ipTargetEnable, 51 } 52 53 loadbalancer, err := loadbalancers.Create(client, createOpts).Extract() 54 th.AssertNoErr(t, err) 55 th.AssertEquals(t, createOpts.Name, loadbalancer.Name) 56 th.AssertEquals(t, createOpts.Description, loadbalancer.Description) 57 t.Logf("Created ELBv3 LoadBalancer: %s", loadbalancer.ID) 58 59 return loadbalancer.ID 60 } 61 62 func deleteLoadbalancer(t *testing.T, client *golangsdk.ServiceClient, loadbalancerID string) { 63 t.Logf("Attempting to delete ELBv3 LoadBalancer: %s", loadbalancerID) 64 err := loadbalancers.Delete(client, loadbalancerID).ExtractErr() 65 th.AssertNoErr(t, err) 66 t.Logf("Deleted ELBv3 LoadBalancer: %s", loadbalancerID) 67 } 68 69 func createCertificate(t *testing.T, client *golangsdk.ServiceClient) string { 70 t.Logf("Attempting to create ELBv3 certificate") 71 certName := tools.RandomString("create-cert-", 3) 72 73 privateKey := `-----BEGIN RSA PRIVATE KEY----- 74 MIIEowIBAAKCAQEAwZ5UJULAjWr7p6FVwGRQRjFN2s8tZ/6LC3X82fajpVsYqF1x 75 qEuUDndDXVD09E4u83MS6HO6a3bIVQDp6/klnYldiE6Vp8HH5BSKaCWKVg8lGWg1 76 UM9wZFnlryi14KgmpIFmcu9nA8yV/6MZAe6RSDmb3iyNBmiZ8aZhGw2pI1YwR+15 77 MVqFFGB+7ExkziROi7L8CFCyCezK2/oOOvQsH1dzQ8z1JXWdg8/9Zx7Ktvgwu5PQ 78 M3cJtSHX6iBPOkMU8Z8TugLlTqQXKZOEgwajwvQ5mf2DPkVgM08XAgaLJcLigwD5 79 13koAdtJd5v+9irw+5LAuO3JclqwTvwy7u/YwwIDAQABAoIBACU9S5fjD9/jTMXA 80 DRs08A+gGgZUxLn0xk+NAPX3LyB1tfdkCaFB8BccLzO6h3KZuwQOBPv6jkdvEDbx 81 Nwyw3eA/9GJsIvKiHc0rejdvyPymaw9I8MA7NbXHaJrY7KpqDQyk6sx+aUTcy5jg 82 iMXLWdwXYHhJ/1HVOo603oZyiS6HZeYU089NDUcX+1SJi3e5Ke0gPVXEqCq1O11/ 83 rh24bMxnwZo4PKBWdcMBN5Zf/4ij9vrZE+fFzW7vGBO48A5lvZxWU2U5t/OZQRtN 84 1uLOHmMFa0FIF2aWbTVfwdUWAFsvAOkHj9VV8BXOUwKOUuEktdkfAlvrxmsFrO/H 85 yDeYYPkCgYEA/S55CBbR0sMXpSZ56uRn8JHApZJhgkgvYr+FqDlJq/e92nAzf01P 86 RoEBUajwrnf1ycevN/SDfbtWzq2XJGqhWdJmtpO16b7KBsC6BdRcH6dnOYh31jgA 87 vABMIP3wzI4zSVTyxRE8LDuboytF1mSCeV5tHYPQTZNwrplDnLQhywcCgYEAw8Yc 88 Uk/eiFr3hfH/ZohMfV5p82Qp7DNIGRzw8YtVG/3+vNXrAXW1VhugNhQY6L+zLtJC 89 aKn84ooup0m3YCg0hvINqJuvzfsuzQgtjTXyaE0cEwsjUusOmiuj09vVx/3U7siK 90 Hdjd2ICPCvQ6Q8tdi8jV320gMs05AtaBkZdsiWUCgYEAtLw4Kk4f+xTKDFsrLUNf 91 75wcqhWVBiwBp7yQ7UX4EYsJPKZcHMRTk0EEcAbpyaJZE3I44vjp5ReXIHNLMfPs 92 uvI34J4Rfot0LN3n7cFrAi2+wpNo+MOBwrNzpRmijGP2uKKrq4JiMjFbKV/6utGF 93 Up7VxfwS904JYpqGaZctiIECgYA1A6nZtF0riY6ry/uAdXpZHL8ONNqRZtWoT0kD 94 79otSVu5ISiRbaGcXsDExC52oKrSDAgFtbqQUiEOFg09UcXfoR6HwRkba2CiDwve 95 yHQLQI5Qrdxz8Mk0gIrNrSM4FAmcW9vi9z4kCbQyoC5C+4gqeUlJRpDIkQBWP2Y4 96 2ct/bQKBgHv8qCsQTZphOxc31BJPa2xVhuv18cEU3XLUrVfUZ/1f43JhLp7gynS2 97 ep++LKUi9D0VGXY8bqvfJjbECoCeu85vl8NpCXwe/LoVoIn+7KaVIZMwqoGMfgNl 98 nEqm7HWkNxHhf8A6En/IjleuddS1sf9e/x+TJN1Xhnt9W6pe7Fk1 99 -----END RSA PRIVATE KEY-----` 100 cert := `-----BEGIN CERTIFICATE----- 101 MIIDpTCCAo2gAwIBAgIJAKdmmOBYnFvoMA0GCSqGSIb3DQEBCwUAMGkxCzAJBgNV 102 BAYTAnh4MQswCQYDVQQIDAJ4eDELMAkGA1UEBwwCeHgxCzAJBgNVBAoMAnh4MQsw 103 CQYDVQQLDAJ4eDELMAkGA1UEAwwCeHgxGTAXBgkqhkiG9w0BCQEWCnh4QDE2My5j 104 b20wHhcNMTcxMjA0MDM0MjQ5WhcNMjAxMjAzMDM0MjQ5WjBpMQswCQYDVQQGEwJ4 105 eDELMAkGA1UECAwCeHgxCzAJBgNVBAcMAnh4MQswCQYDVQQKDAJ4eDELMAkGA1UE 106 CwwCeHgxCzAJBgNVBAMMAnh4MRkwFwYJKoZIhvcNAQkBFgp4eEAxNjMuY29tMIIB 107 IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwZ5UJULAjWr7p6FVwGRQRjFN 108 2s8tZ/6LC3X82fajpVsYqF1xqEuUDndDXVD09E4u83MS6HO6a3bIVQDp6/klnYld 109 iE6Vp8HH5BSKaCWKVg8lGWg1UM9wZFnlryi14KgmpIFmcu9nA8yV/6MZAe6RSDmb 110 3iyNBmiZ8aZhGw2pI1YwR+15MVqFFGB+7ExkziROi7L8CFCyCezK2/oOOvQsH1dz 111 Q8z1JXWdg8/9Zx7Ktvgwu5PQM3cJtSHX6iBPOkMU8Z8TugLlTqQXKZOEgwajwvQ5 112 mf2DPkVgM08XAgaLJcLigwD513koAdtJd5v+9irw+5LAuO3JclqwTvwy7u/YwwID 113 AQABo1AwTjAdBgNVHQ4EFgQUo5A2tIu+bcUfvGTD7wmEkhXKFjcwHwYDVR0jBBgw 114 FoAUo5A2tIu+bcUfvGTD7wmEkhXKFjcwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0B 115 AQsFAAOCAQEAWJ2rS6Mvlqk3GfEpboezx2J3X7l1z8Sxoqg6ntwB+rezvK3mc9H0 116 83qcVeUcoH+0A0lSHyFN4FvRQL6X1hEheHarYwJK4agb231vb5erasuGO463eYEG 117 r4SfTuOm7SyiV2xxbaBKrXJtpBp4WLL/s+LF+nklKjaOxkmxUX0sM4CTA7uFJypY 118 c8Tdr8lDDNqoUtMD8BrUCJi+7lmMXRcC3Qi3oZJW76ja+kZA5mKVFPd1ATih8TbA 119 i34R7EQDtFeiSvBdeKRsPp8c0KT8H1B4lXNkkCQs2WX5p4lm99+ZtLD4glw8x6Ic 120 i1YhgnQbn5E0hz55OLu5jvOkKQjPCW+8Kg== 121 -----END CERTIFICATE-----` 122 123 createOpts := certificates.CreateOpts{ 124 Name: certName, 125 Description: "some interesting certificate", 126 Type: "server", 127 PrivateKey: privateKey, 128 Certificate: cert, 129 } 130 131 certificate, err := certificates.Create(client, createOpts).Extract() 132 th.AssertNoErr(t, err) 133 th.AssertEquals(t, createOpts.Name, certificate.Name) 134 th.AssertEquals(t, createOpts.Description, certificate.Description) 135 t.Logf("Created ELBv3 certificate: %s", certificate.ID) 136 137 return certificate.ID 138 } 139 140 func deleteCertificate(t *testing.T, client *golangsdk.ServiceClient, certificateID string) { 141 t.Logf("Attempting to delete ELBv3 certificate: %s", certificateID) 142 err := certificates.Delete(client, certificateID).ExtractErr() 143 th.AssertNoErr(t, err) 144 t.Logf("Deleted ELBv3 certificate: %s", certificateID) 145 } 146 147 func createPool(t *testing.T, client *golangsdk.ServiceClient, loadbalancerID string) string { 148 t.Logf("Attempting to create ELBv3 Pool") 149 vpcID := clients.EnvOS.GetEnv("VPC_ID") 150 poolName := tools.RandomString("create-pool-", 3) 151 createOpts := pools.CreateOpts{ 152 LBMethod: "LEAST_CONNECTIONS", 153 Protocol: "HTTP", 154 LoadbalancerID: loadbalancerID, 155 Name: poolName, 156 Description: "some interesting description", 157 VpcId: vpcID, 158 Type: "instance", 159 DeletionProtectionEnable: pointerto.Bool(true), 160 } 161 162 pool, err := pools.Create(client, createOpts).Extract() 163 th.AssertNoErr(t, err) 164 th.AssertEquals(t, createOpts.Name, pool.Name) 165 th.AssertEquals(t, createOpts.Description, pool.Description) 166 th.AssertEquals(t, createOpts.LBMethod, pool.LBMethod) 167 th.AssertEquals(t, true, pool.DeletionProtectionEnable) 168 th.AssertEquals(t, createOpts.Type, pool.Type) 169 th.AssertEquals(t, createOpts.VpcId, pool.VpcId) 170 t.Logf("Created ELBv3 Pool: %s", pool.ID) 171 172 return pool.ID 173 } 174 175 func deletePool(t *testing.T, client *golangsdk.ServiceClient, poolID string) { 176 t.Logf("Attempting to delete ELBv3 Pool: %s", poolID) 177 err := pools.Delete(client, poolID).ExtractErr() 178 th.AssertNoErr(t, err) 179 t.Logf("Deleted ELBv3 Pool: %s", poolID) 180 } 181 182 func createListener(t *testing.T, client *golangsdk.ServiceClient, loadbalancerID string) string { 183 listener, err := listeners.Create(client, listeners.CreateOpts{ 184 LoadbalancerID: loadbalancerID, 185 Protocol: listeners.ProtocolHTTP, 186 ProtocolPort: 80, 187 }).Extract() 188 th.AssertNoErr(t, err) 189 return listener.ID 190 } 191 192 func deleteListener(t *testing.T, client *golangsdk.ServiceClient, listenerID string) { 193 th.AssertNoErr(t, listeners.Delete(client, listenerID).ExtractErr()) 194 }