github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/acceptance/openstack/networking/v2/extensions/lbaas_v2/helpers.go (about)

     1  package lbaas_v2
     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/networking/v2/extensions/lbaas_v2/certificates"
    10  	"github.com/opentelekomcloud/gophertelekomcloud/openstack/networking/v2/extensions/lbaas_v2/loadbalancers"
    11  	"github.com/opentelekomcloud/gophertelekomcloud/openstack/networking/v2/extensions/lbaas_v2/pools"
    12  	th "github.com/opentelekomcloud/gophertelekomcloud/testhelper"
    13  )
    14  
    15  func createLbaasCertificate(t *testing.T, client *golangsdk.ServiceClient) (*certificates.Certificate, error) {
    16  	certificateName := tools.RandomString("create-cert-", 8)
    17  	privateKey := `-----BEGIN RSA PRIVATE KEY-----
    18  MIIEowIBAAKCAQEAwZ5UJULAjWr7p6FVwGRQRjFN2s8tZ/6LC3X82fajpVsYqF1x
    19  qEuUDndDXVD09E4u83MS6HO6a3bIVQDp6/klnYldiE6Vp8HH5BSKaCWKVg8lGWg1
    20  UM9wZFnlryi14KgmpIFmcu9nA8yV/6MZAe6RSDmb3iyNBmiZ8aZhGw2pI1YwR+15
    21  MVqFFGB+7ExkziROi7L8CFCyCezK2/oOOvQsH1dzQ8z1JXWdg8/9Zx7Ktvgwu5PQ
    22  M3cJtSHX6iBPOkMU8Z8TugLlTqQXKZOEgwajwvQ5mf2DPkVgM08XAgaLJcLigwD5
    23  13koAdtJd5v+9irw+5LAuO3JclqwTvwy7u/YwwIDAQABAoIBACU9S5fjD9/jTMXA
    24  DRs08A+gGgZUxLn0xk+NAPX3LyB1tfdkCaFB8BccLzO6h3KZuwQOBPv6jkdvEDbx
    25  Nwyw3eA/9GJsIvKiHc0rejdvyPymaw9I8MA7NbXHaJrY7KpqDQyk6sx+aUTcy5jg
    26  iMXLWdwXYHhJ/1HVOo603oZyiS6HZeYU089NDUcX+1SJi3e5Ke0gPVXEqCq1O11/
    27  rh24bMxnwZo4PKBWdcMBN5Zf/4ij9vrZE+fFzW7vGBO48A5lvZxWU2U5t/OZQRtN
    28  1uLOHmMFa0FIF2aWbTVfwdUWAFsvAOkHj9VV8BXOUwKOUuEktdkfAlvrxmsFrO/H
    29  yDeYYPkCgYEA/S55CBbR0sMXpSZ56uRn8JHApZJhgkgvYr+FqDlJq/e92nAzf01P
    30  RoEBUajwrnf1ycevN/SDfbtWzq2XJGqhWdJmtpO16b7KBsC6BdRcH6dnOYh31jgA
    31  vABMIP3wzI4zSVTyxRE8LDuboytF1mSCeV5tHYPQTZNwrplDnLQhywcCgYEAw8Yc
    32  Uk/eiFr3hfH/ZohMfV5p82Qp7DNIGRzw8YtVG/3+vNXrAXW1VhugNhQY6L+zLtJC
    33  aKn84ooup0m3YCg0hvINqJuvzfsuzQgtjTXyaE0cEwsjUusOmiuj09vVx/3U7siK
    34  Hdjd2ICPCvQ6Q8tdi8jV320gMs05AtaBkZdsiWUCgYEAtLw4Kk4f+xTKDFsrLUNf
    35  75wcqhWVBiwBp7yQ7UX4EYsJPKZcHMRTk0EEcAbpyaJZE3I44vjp5ReXIHNLMfPs
    36  uvI34J4Rfot0LN3n7cFrAi2+wpNo+MOBwrNzpRmijGP2uKKrq4JiMjFbKV/6utGF
    37  Up7VxfwS904JYpqGaZctiIECgYA1A6nZtF0riY6ry/uAdXpZHL8ONNqRZtWoT0kD
    38  79otSVu5ISiRbaGcXsDExC52oKrSDAgFtbqQUiEOFg09UcXfoR6HwRkba2CiDwve
    39  yHQLQI5Qrdxz8Mk0gIrNrSM4FAmcW9vi9z4kCbQyoC5C+4gqeUlJRpDIkQBWP2Y4
    40  2ct/bQKBgHv8qCsQTZphOxc31BJPa2xVhuv18cEU3XLUrVfUZ/1f43JhLp7gynS2
    41  ep++LKUi9D0VGXY8bqvfJjbECoCeu85vl8NpCXwe/LoVoIn+7KaVIZMwqoGMfgNl
    42  nEqm7HWkNxHhf8A6En/IjleuddS1sf9e/x+TJN1Xhnt9W6pe7Fk1
    43  -----END RSA PRIVATE KEY-----`
    44  	certificate := `-----BEGIN CERTIFICATE-----
    45  MIIDpTCCAo2gAwIBAgIJAKdmmOBYnFvoMA0GCSqGSIb3DQEBCwUAMGkxCzAJBgNV
    46  BAYTAnh4MQswCQYDVQQIDAJ4eDELMAkGA1UEBwwCeHgxCzAJBgNVBAoMAnh4MQsw
    47  CQYDVQQLDAJ4eDELMAkGA1UEAwwCeHgxGTAXBgkqhkiG9w0BCQEWCnh4QDE2My5j
    48  b20wHhcNMTcxMjA0MDM0MjQ5WhcNMjAxMjAzMDM0MjQ5WjBpMQswCQYDVQQGEwJ4
    49  eDELMAkGA1UECAwCeHgxCzAJBgNVBAcMAnh4MQswCQYDVQQKDAJ4eDELMAkGA1UE
    50  CwwCeHgxCzAJBgNVBAMMAnh4MRkwFwYJKoZIhvcNAQkBFgp4eEAxNjMuY29tMIIB
    51  IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwZ5UJULAjWr7p6FVwGRQRjFN
    52  2s8tZ/6LC3X82fajpVsYqF1xqEuUDndDXVD09E4u83MS6HO6a3bIVQDp6/klnYld
    53  iE6Vp8HH5BSKaCWKVg8lGWg1UM9wZFnlryi14KgmpIFmcu9nA8yV/6MZAe6RSDmb
    54  3iyNBmiZ8aZhGw2pI1YwR+15MVqFFGB+7ExkziROi7L8CFCyCezK2/oOOvQsH1dz
    55  Q8z1JXWdg8/9Zx7Ktvgwu5PQM3cJtSHX6iBPOkMU8Z8TugLlTqQXKZOEgwajwvQ5
    56  mf2DPkVgM08XAgaLJcLigwD513koAdtJd5v+9irw+5LAuO3JclqwTvwy7u/YwwID
    57  AQABo1AwTjAdBgNVHQ4EFgQUo5A2tIu+bcUfvGTD7wmEkhXKFjcwHwYDVR0jBBgw
    58  FoAUo5A2tIu+bcUfvGTD7wmEkhXKFjcwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0B
    59  AQsFAAOCAQEAWJ2rS6Mvlqk3GfEpboezx2J3X7l1z8Sxoqg6ntwB+rezvK3mc9H0
    60  83qcVeUcoH+0A0lSHyFN4FvRQL6X1hEheHarYwJK4agb231vb5erasuGO463eYEG
    61  r4SfTuOm7SyiV2xxbaBKrXJtpBp4WLL/s+LF+nklKjaOxkmxUX0sM4CTA7uFJypY
    62  c8Tdr8lDDNqoUtMD8BrUCJi+7lmMXRcC3Qi3oZJW76ja+kZA5mKVFPd1ATih8TbA
    63  i34R7EQDtFeiSvBdeKRsPp8c0KT8H1B4lXNkkCQs2WX5p4lm99+ZtLD4glw8x6Ic
    64  i1YhgnQbn5E0hz55OLu5jvOkKQjPCW+8Kg==
    65  -----END CERTIFICATE-----`
    66  	adminStateUp := true
    67  
    68  	createLbaasCertificateOpts := certificates.CreateOpts{
    69  		AdminStateUp: &adminStateUp,
    70  		Name:         certificateName,
    71  		Description:  "some test description",
    72  		PrivateKey:   privateKey,
    73  		Certificate:  certificate,
    74  	}
    75  	lbaasCertificate, err := certificates.Create(client, createLbaasCertificateOpts).Extract()
    76  	th.AssertNoErr(t, err)
    77  
    78  	t.Logf("Created LbaasV2 certificate: %s", lbaasCertificate.ID)
    79  
    80  	return lbaasCertificate, nil
    81  }
    82  
    83  func deleteLbaasCertificate(t *testing.T, client *golangsdk.ServiceClient, lbaasCertificateId string) {
    84  	t.Logf("Attempting to delete LbaasV2 certificate: %s", lbaasCertificateId)
    85  
    86  	err := certificates.Delete(client, lbaasCertificateId).ExtractErr()
    87  	th.AssertNoErr(t, err)
    88  
    89  	t.Logf("LbaasV2 certificate is deleted: %s", lbaasCertificateId)
    90  }
    91  
    92  func updateLbaasCertificate(t *testing.T, client *golangsdk.ServiceClient, lbaasCertificateId string) error {
    93  	t.Logf("Attempting to update LbaasV2 certificate")
    94  
    95  	certificateNewName := tools.RandomString("update-cert-", 8)
    96  
    97  	updateCertificate := `
    98  -----BEGIN CERTIFICATE-----
    99  MIIDpTCCAo2gAwIBAgIJAKdmmOBYnFvoMA0GCSqGSIb3DQEBCwUAMGkxCzAJBgNV
   100  BAYTAnh4MQswCQYDVQQIDAJ4eDELMAkGA1UEBwwCeHgxCzAJBgNVBAoMAnh4MQsw
   101  CQYDVQQLDAJ4eDELMAkGA1UEAwwCeHgxGTAXBgkqhkiG9w0BCQEWCnh4QDE2My5j
   102  b20wHhcNMTcxMjA0MDM0MjQ5WhcNMjAxMjAzMDM0MjQ5WjBpMQswCQYDVQQGEwJ4
   103  eDELMAkGA1UECAwCeHgxCzAJBgNVBAcMAnh4MQswCQYDVQQKDAJ4eDELMAkGA1UE
   104  CwwCeHgxCzAJBgNVBAMMAnh4MRkwFwYJKoZIhvcNAQkBFgp4eEAxNjMuY29tMIIB
   105  IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwZ5UJULAjWr7p6FVwGRQRjFN
   106  2s8tZ/6LC3X82fajpVsYqF1xqEuUDndDXVD09E4u83MS6HO6a3bIVQDp6/klnYld
   107  iE6Vp8HH5BSKaCWKVg8lGWg1UM9wZFnlryi14KgmpIFmcu9nA8yV/6MZAe6RSDmb
   108  3iyNBmiZ8aZhGw2pI1YwR+15MVqFFGB+7ExkziROi7L8CFCyCezK2/oOOvQsH1dz
   109  Q8z1JXWdg8/9Zx7Ktvgwu5PQM3cJtSHX6iBPOkMU8Z8TugLlTqQXKZOEgwajwvQ5
   110  mf2DPkVgM08XAgaLJcLigwD513koAdtJd5v+9irw+5LAuO3JclqwTvwy7u/YwwID
   111  AQABo1AwTjAdBgNVHQ4EFgQUo5A2tIu+bcUfvGTD7wmEkhXKFjcwHwYDVR0jBBgw
   112  FoAUo5A2tIu+bcUfvGTD7wmEkhXKFjcwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0B
   113  AQsFAAOCAQEAWJ2rS6Mvlqk3GfEpboezx2J3X7l1z8Sxoqg6ntwB+rezvK3mc9H0
   114  83qcVeUcoH+0A0lSHyFN4FvRQL6X1hEheHarYwJK4agb231vb5erasuGO463eYEG
   115  r4SfTuOm7SyiV2xxbaBKrXJtpBp4WLL/s+LF+nklKjaOxkmxUX0sM4CTA7uFJypY
   116  c8Tdr8lDDNqoUtMD8BrUCJi+7lmMXRcC3Qi3oZJW76ja+kZA5mKVFPd1ATih8TbA
   117  i34R7EQDtFeiSvBdeKRsPp8c0KT8H1B4lXNkkCQs2WX5p4lm99+ZtLD4glw8x6Ic
   118  i1YhgnQbn5E0hz55OLu5jvOkKQjPCW+9Aa==
   119  -----END CERTIFICATE-----`
   120  
   121  	updateOpts := certificates.UpdateOpts{
   122  		Name:        certificateNewName,
   123  		Certificate: updateCertificate,
   124  	}
   125  
   126  	_, err := certificates.Update(client, lbaasCertificateId, updateOpts).Extract()
   127  	th.AssertNoErr(t, err)
   128  
   129  	t.Logf("LbaasV2 certificate successfully updated: %s", lbaasCertificateId)
   130  	return nil
   131  }
   132  
   133  func createLbaasPool(t *testing.T, client *golangsdk.ServiceClient, loadBalancerID string) (*pools.Pool, error) {
   134  	poolName := tools.RandomString("create-pool-", 3)
   135  	t.Logf("Attempting to create LbaasV2 pool")
   136  
   137  	createOpts := pools.CreateOpts{
   138  		LBMethod:       "ROUND_ROBIN",
   139  		Protocol:       "TCP",
   140  		LoadbalancerID: loadBalancerID,
   141  		Name:           poolName,
   142  	}
   143  	lbaasMonitor, err := pools.Create(client, createOpts).Extract()
   144  	th.AssertNoErr(t, err)
   145  
   146  	t.Logf("Created LbaasV2 pool: %s", lbaasMonitor.ID)
   147  
   148  	return lbaasMonitor, nil
   149  }
   150  
   151  func deleteLbaasPool(t *testing.T, client *golangsdk.ServiceClient, lbaasPoolID string) {
   152  	t.Logf("Attempting to delete LbaasV2 pool: %s", lbaasPoolID)
   153  
   154  	err := pools.Delete(client, lbaasPoolID).ExtractErr()
   155  	th.AssertNoErr(t, err)
   156  
   157  	t.Logf("LbaasV2 pool is deleted: %s", lbaasPoolID)
   158  }
   159  
   160  func createLbaasLoadBalancer(t *testing.T, client *golangsdk.ServiceClient) (*loadbalancers.LoadBalancer, error) {
   161  	loadBalancerName := tools.RandomString("create-lb-", 3)
   162  	t.Logf("Attempting to create LbaasV2 LoadBalancer")
   163  
   164  	subnetID := clients.EnvOS.GetEnv("SUBNET_ID")
   165  	if subnetID == "" {
   166  		t.Skip("OS_SUBNET_ID env var is missing but LB test requires using existing network")
   167  	}
   168  
   169  	createOpts := loadbalancers.CreateOpts{
   170  		Name:        loadBalancerName,
   171  		VipSubnetID: subnetID,
   172  	}
   173  	lbaasLoadBalancer, err := loadbalancers.Create(client, createOpts).Extract()
   174  	th.AssertNoErr(t, err)
   175  
   176  	t.Logf("Created LbaasV2 LoadBalancer: %s", lbaasLoadBalancer.ID)
   177  
   178  	return lbaasLoadBalancer, nil
   179  }
   180  
   181  func deleteLbaasLoadBalancer(t *testing.T, client *golangsdk.ServiceClient, lbaasLBID string) {
   182  	t.Logf("Attempting to delete LbaasV2 LoadBalancer: %s", lbaasLBID)
   183  
   184  	err := loadbalancers.Delete(client, lbaasLBID).ExtractErr()
   185  	th.AssertNoErr(t, err)
   186  
   187  	t.Logf("LbaasV2 LoadBalancer is deleted: %s", lbaasLBID)
   188  }