Skip to content

Comments

Shared instance ports preparation#3

Closed
ZiedZinelabidine wants to merge 3 commits intoshared-instance-portsfrom
shared-instance-ports-preparation
Closed

Shared instance ports preparation#3
ZiedZinelabidine wants to merge 3 commits intoshared-instance-portsfrom
shared-instance-ports-preparation

Conversation

@ZiedZinelabidine
Copy link

@ZiedZinelabidine ZiedZinelabidine commented Nov 21, 2016

As documented in vmware-archive#36, this PR adds control to the choice of the port in the precise range.


Details over the end-to-end tests performed:

Scenario: shared instance uses a port in the preferred range

  • given a redis deployment with
    • redis.broker.shared_min_port=40000 redis.broker.shared_max_port=40000
  • when
    • cf bind-service redis-instance app
  • then
    • returned port within VCAP_SERVICES is 40000

Scenario: shared instances rejects service binding when not available port in the preferred range, providing clear error message to service operators and possibly end-users

  • given a redis deployment with
    • redis.broker.shared_min_port=40000 redis.broker.shared_max_port=40000
  • when
    • cf bind-service redis-instance1 app
    • cf bind-service redis-instance2 app
  • then
    • cf bind-service redis-instance2 app fails with error message
    • redis operator logs contains log entry:

Scenario: operator misconfigurations of preferred port range, fail deployment with clear error message.

  • given a redis deployment descriptor with
    • redis.broker.shared_min_port=40000 redis.broker.shared_max_port=30000
  • when
    • the bosh deploy is requested
  • Then
    • the redis-dedicated-job fails to start
    • and the redis-dedicated-job log entry indicates ""

@gberche-orange
Copy link
Member

gberche-orange commented Nov 21, 2016

Please remove update of src/cf-redis-broker from this PR, so that we can instead have the pivotal team commit themselves the dependency bump at the right time for them.

@ArthurHlt ArthurHlt closed this Dec 6, 2016
@gberche-orange gberche-orange reopened this Dec 7, 2016
@gberche-orange
Copy link
Member

Manually Merged by @ArthurHlt into shared-instance-ports branch
See vmware-archive/cf-redis-release@v426...orange-cloudfoundry:shared-instance-ports

@ArthurHlt
Copy link

ArthurHlt commented Dec 7, 2016


Scenario: shared instance uses a port in the preferred range

  • given a redis deployment with
    • redis.broker.shared_min_port=60000 redis.broker.shared_max_port=60000
  • when
    • cf bind-service redis-instance app
  • then
    • returned port within VCAP_SERVICES is 60000

Test:

$ cf cs redis shared-vm myredis
$ cf create-service-key myredis mykey
Creating service key mykey for service instance myredis as ahalet...
OK

$ cf service-key myredis mykey
Getting key mykey for service instance myredis as ahalet...

{
 "host": "10.234.250.160",
 "password": "9babfc50-630e-4f26-bbee-97f1b16ff2a3",
 "port": 60000
}

Result: OK


Scenario: shared instances rejects service binding when not available port in the preferred range, providing clear error message to service operators and possibly end-users

  • given a redis deployment with
    • redis.broker.shared_min_port=40000 redis.broker.shared_max_port=40000
  • when
    • cf bind-service redis-instance1 app
    • cf bind-service redis-instance2 app
  • then
    • cf bind-service redis-instance2 app fails with error message
    • redis operator logs contains log entry:

Test:

$ cf cs redis shared-vm myredis
Creating service instance myredis in org dfy / space etherpad as ahalet...
OK

$ cf cs redis shared-vm myredis2
Creating service instance myredis2 in org dfy / space etherpad as ahalet...
FAILED
Server error, status code: 502, error code: 10001, message: Service broker error: No port is available in the range. Please ask help to your Operator

Result: OK


Scenario: operator misconfigurations of preferred port range, fail deployment with clear error message.

  • given a redis deployment descriptor with
    • redis.broker.shared_min_port=60000 redis.broker.shared_max_port=30000
  • when
    • the bosh deploy is requested
  • Then
    • the redis-dedicated-job fails to start
    • and the redis-dedicated-job log entry indicates ""

Test:

Deploying
---------
bosh-master$ bosh deploy
[...]
  Started updating instance cf-redis-broker > cf-redis-broker/e54249ca-63a8-467a-869c-9c0c992ee26e (0) (canary). Failed: 'cf-redis-broker/0 (e54249ca-63a8-467a-869c-9c0c992ee26e)' is not running after update. Review logs for failed jobs: process-watcher, cf-redis-broker, broker-nginx, route_registrar, syslog-configurator (00:01:58)

Error 400007: 'cf-redis-broker/0 (e54249ca-63a8-467a-869c-9c0c992ee26e)' is not running after update. Review logs for failed jobs: process-watcher, cf-redis-broker, broker-nginx, route_registrar, syslog-configurator

bosh-master$ bosh ssh cf-redis-broker/0

redis-broker$ cat /var/vcap/sys/log/cf-redis-broker/cf-redis-configmigrator.stderr.log
[...]
panic: Not valid range port: minimum port is higher than maximum port

Result: OK


Scenario: User ask multiple redis

  • given a redis deployment with
    • redis.broker.shared_min_port=1024 redis.broker.shared_max_port=65535
  • when
    • cf bind-service redis-instance1 app
    • cf bind-service redis-instance2 app
  • then
    • we should have port 1024 and 1025 taken

Test:

$ cf cs redis shared-vm myredis
Creating service instance myredis in org dfy / space etherpad as ahalet...
OK

$ cf cs redis shared-vm myredis2
Creating service instance myredis2 in org dfy / space etherpad as ahalet...
OK

$ cf create-service-key myredis mykey
Creating service key mykey for service instance myredis as ahalet...
OK

$ cf create-service-key myredis2 mykey
Creating service key mykey for service instance myredis2 as ahalet...
OK

$ cf service-key myredis mykey
Getting key mykey for service instance myredis as ahalet...

{
 "host": "10.234.250.160",
 "password": "e062facf-f591-49c0-b75b-d7b474fc70c6",
 "port": 1024
}

$ cf service-key myredis2 mykey
Getting key mykey for service instance myredis2 as ahalet...

{
 "host": "10.234.250.160",
 "password": "c712a7ce-0fcd-477f-afc2-568bb0b2ea3e",
 "port": 1025
}

Result: OK

@gberche-orange
Copy link
Member

Closing now that pivotal-cf/cf-redis-broker#3 was submitted

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants