test/yao/resources/test_loadbalancer_pool.rb in yao-0.15.0 vs test/yao/resources/test_loadbalancer_pool.rb in yao-0.16.0
- old
+ new
@@ -11,11 +11,18 @@
"session_persistence" => {
"cookie_name" => nil,
"type" => "SOURCE_IP"
},
"operating_status" => "ONLINE",
- "name" => "round_robin_pool"
+ "name" => "round_robin_pool",
+ "members" => [
+ {"id" => "957a1ace-1bd2-449b-8455-820b6e4b63f3"},
+ ],
+ "listeners" => [
+ {"id" => "023f2e34-7806-443b-bfae-16c324569a3d"}
+ ],
+ "healthmonitor_id" => "8ed3c5ac-6efa-420c-bedb-99ba14e58db5",
}
pool = Yao::Resources::LoadBalancerPool.new(params)
assert_equal("ROUND_ROBIN", pool.lb_algorithm)
assert_equal("HTTP", pool.protocol)
@@ -28,7 +35,145 @@
"cookie_name" => nil,
"type" => "SOURCE_IP"
}, pool.session_persistence)
assert_equal("ONLINE", pool.operating_status)
assert_equal("round_robin_pool", pool.name)
+
+ # https://docs.openstack.org/api-ref/load-balancer/v2/?expanded=show-member-details-detail#show-member-details
+ stub = stub_request(:get, "http://endpoint.example.com:9876/v2.0/lbaas/pools//members/957a1ace-1bd2-449b-8455-820b6e4b63f3")
+ .to_return(
+ status: 200,
+ body: <<-JSON,
+ {
+ "member": {
+ "monitor_port": 8080,
+ "project_id": "e3cd678b11784734bc366148aa37580e",
+ "name": "web-server-1",
+ "weight": 20,
+ "backup": false,
+ "admin_state_up": true,
+ "subnet_id": "bbb35f84-35cc-4b2f-84c2-a6a29bba68aa",
+ "created_at": "2017-05-11T17:21:34",
+ "provisioning_status": "ACTIVE",
+ "monitor_address": null,
+ "updated_at": "2017-05-11T17:21:37",
+ "address": "192.0.2.16",
+ "protocol_port": 80,
+ "id": "957a1ace-1bd2-449b-8455-820b6e4b63f3",
+ "operating_status": "NO_MONITOR",
+ "tags": ["test_tag"]
+ }
+ }
+ JSON
+ headers: {'Content-Type' => 'application/json'}
+ )
+
+ assert_instance_of(Yao::LoadBalancerPoolMember, pool.members.first)
+ assert_equal("957a1ace-1bd2-449b-8455-820b6e4b63f3", pool.members.first.id)
+ assert_equal("web-server-1", pool.members.first.name)
+ assert_requested(stub)
+
+ # https://docs.openstack.org/api-ref/load-balancer/v2/?expanded=show-member-details-detail,show-listener-details-detail,show-pool-details-detail#show-listener-details
+ stub = stub_request(:get, "http://endpoint.example.com:9876/v2.0/lbaas/listeners/023f2e34-7806-443b-bfae-16c324569a3d")
+ .to_return(
+ status: 200,
+ body: <<-JSON,
+ {
+ "listener": {
+ "description": "A great TLS listener",
+ "admin_state_up": true,
+ "project_id": "e3cd678b11784734bc366148aa37580e",
+ "protocol": "TERMINATED_HTTPS",
+ "protocol_port": 443,
+ "provisioning_status": "ACTIVE",
+ "default_tls_container_ref": "http://198.51.100.10:9311/v1/containers/a570068c-d295-4780-91d4-3046a325db51",
+ "loadbalancers": [
+ {
+ "id": "607226db-27ef-4d41-ae89-f2a800e9c2db"
+ }
+ ],
+ "insert_headers": {
+ "X-Forwarded-Port": "true",
+ "X-Forwarded-For": "true"
+ },
+ "created_at": "2017-02-28T00:42:44",
+ "updated_at": "2017-02-28T00:44:30",
+ "id": "023f2e34-7806-443b-bfae-16c324569a3d",
+ "operating_status": "ONLINE",
+ "default_pool_id": "ddb2b28f-89e9-45d3-a329-a359c3e39e4a",
+ "sni_container_refs": [
+ "http://198.51.100.10:9311/v1/containers/a570068c-d295-4780-91d4-3046a325db51",
+ "http://198.51.100.10:9311/v1/containers/aaebb31e-7761-4826-8cb4-2b829caca3ee"
+ ],
+ "l7policies": [
+ {
+ "id": "5e618272-339d-4a80-8d14-dbc093091bb1"
+ }
+ ],
+ "name": "great_tls_listener",
+ "timeout_client_data": 50000,
+ "timeout_member_connect": 5000,
+ "timeout_member_data": 50000,
+ "timeout_tcp_inspect": 0,
+ "tags": ["test_tag"],
+ "client_ca_tls_container_ref": "http://198.51.100.10:9311/v1/containers/35649991-49f3-4625-81ce-2465fe8932e5",
+ "client_authentication": "MANDATORY",
+ "client_crl_container_ref": "http://198.51.100.10:9311/v1/containers/e222b065-b93b-4e2a-9a02-804b7a118c3c",
+ "allowed_cidrs": [
+ "192.0.2.0/24",
+ "198.51.100.0/24"
+ ],
+ "tls_ciphers": "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256",
+ "tls_versions": ["TLSv1.2", "TLSv1.3"],
+ "alpn_protocols": ["http/1.1", "http/1.0"]
+ }
+ }
+ JSON
+ headers: {'Content-Type' => 'application/json'}
+ )
+ assert_instance_of(Yao::LoadBalancerListener, pool.listeners.first)
+ assert_equal("023f2e34-7806-443b-bfae-16c324569a3d", pool.listeners.first.id)
+ assert_equal("great_tls_listener", pool.listeners.first.name)
+ assert_requested(stub)
+
+ # https://docs.openstack.org/api-ref/load-balancer/v2/?expanded=show-member-details-detail,show-listener-details-detail,show-pool-details-detail,show-health-monitor-details-detail#show-health-monitor-details
+ stub = stub_request(:get, "http://endpoint.example.com:9876/v2.0/lbaas/healthmonitors/8ed3c5ac-6efa-420c-bedb-99ba14e58db5")
+ .to_return(
+ status: 200,
+ body: <<-JSON,
+ {
+ "healthmonitor": {
+ "project_id": "e3cd678b11784734bc366148aa37580e",
+ "name": "super-pool-health-monitor",
+ "admin_state_up": true,
+ "pools": [
+ {
+ "id": "4029d267-3983-4224-a3d0-afb3fe16a2cd"
+ }
+ ],
+ "created_at": "2017-05-11T23:53:47",
+ "provisioning_status": "ACTIVE",
+ "updated_at": "2017-05-11T23:53:47",
+ "delay": 10,
+ "expected_codes": "200",
+ "max_retries": 1,
+ "http_method": "GET",
+ "timeout": 5,
+ "max_retries_down": 3,
+ "url_path": "/",
+ "type": "HTTP",
+ "id": "8ed3c5ac-6efa-420c-bedb-99ba14e58db5",
+ "operating_status": "ONLINE",
+ "tags": ["test_tag"],
+ "http_version": 1.0,
+ "domain_name": null
+ }
+ }
+ JSON
+ headers: {'Content-Type' => 'application/json'}
+ )
+ assert_instance_of(Yao::LoadBalancerHealthMonitor, pool.healthmonitor)
+ assert_equal("8ed3c5ac-6efa-420c-bedb-99ba14e58db5", pool.healthmonitor.id)
+ assert_equal("super-pool-health-monitor", pool.healthmonitor.name)
+ assert_requested(stub)
end
end