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  }