bluethundr
bluethundr

Reputation: 1325

Cloud Foundry bosh Error 140003: unknown resource pool

I'm attempting to setup a service broker to add postgres to our Cloud Foundry installation. We're running our system on vmWare. I'm using this release in order to do that:

cf-contrib-release

I added the release in bosh:

 #bosh releases
Acting as user 'director' on 'microbosh-ba846726bed7032f1fd4'

+-----------------------+----------------------+-------------+
| Name                  | Versions             | Commit Hash |
+-----------------------+----------------------+-------------+
| cf                    | 208.12*              | a0de569a+   |
| cf-autoscaling        | 13*                  | 927bc7ed+   |
| cf-metrics            | 34*                  | 22f7e1e1    |
| cf-mysql              | 20*                  | caa23b3d+   |
|                       | 22*                  | af278086+   |
| cf-rabbitmq           | 161*                 | 4d298aec    |
| cf-riak-cs            | 10*                  | 5e7e46c9+   |
| cf-services-contrib   | 6*                   | 57fd2098+   |
| docker                | 23*                  | 82346881+   |
| newrelic_broker       | 1.3*                 | 1ce3471d+   |
| notifications-with-ui | 18*                  | 490b6446+   |
| postgresql-docker     | 4*                   | a53c9333+   |
| push-console-release  | console-du-jour-203* | d2d31585+   |
| spring-cloud-broker   | 1.0.0*               | efd69612    |
+-----------------------+----------------------+-------------+
(*) Currently deployed
(+) Uncommitted changes

Releases total: 13

I setup my resource pools and jobs in my yaml file according to this doumentation: http://bosh.io/docs/vsphere-cpi.html#resource-pools

This is how our cluster looks:

vmware cluster

And here is what I put in the yaml file:

resource_pools:
- name: default
  network: default
  stemcell:
    name: bosh-vsphere-esxi-ubuntu-trusty-go_agent
    version: '2865.1'
  cloud_properties:
    cpu: 2
    ram: 4096
    disk: 10240
    datacenters:
    - name: 'Universal City'
      clusters:
      - USH_UCS_CLOUD_FOUNDRY_NONPROD_01: {resource_pool: 'USH_UCS_CLOUD_FOUNDRY_NONPROD_01_RP'}


jobs:
  - name: gateways
    release: cf-services-contrib
    templates:
    - name: postgresql_gateway_ng
    instances: 1
    resource_pool: 'USH_UCS_CLOUD_FOUNDRY_NONPROD_01_RP'
    networks:
      - name: default
        default: [dns, gateway]
    properties:
      # Service credentials
      uaa_client_id: "cf"
      uaa_endpoint: http://uaa.devcloudwest.example.com
      uaa_client_auth_credentials:
        username: admin
        password: secret

And I'm getting an error when I run 'bosh deploy' that says:

Error 140003: Job `gateways' references an unknown resource pool `USH_UCS_CLOUD_FOUNDRY_NONPROD_01_RP'

Here's my yaml file in it's entirety:

name: cf-22b9f4d62bb6f0563b71 
director_uuid: fd713790-b1bc-401a-8ea1-b8209f1cc90c 

releases:
  - name: cf-services-contrib
    version: 6 

compilation:
  workers: 3
  network: default
  reuse_compilation_vms: true
  cloud_properties:
    ram: 5120 
    disk: 10240 
    cpu: 2

update:
  canaries: 1
  canary_watch_time: 30000-60000
  update_watch_time: 30000-60000
  max_in_flight: 4

networks:
- name: default
  type: manual 
  subnets:
  - range: exam 10.114..130.0/24
    gateway: exam 10.114..130.1
    cloud_properties:
      name: 'USH_UCS_CLOUD_FOUNDRY'


#resource_pools:
#  - name: common
#    network: default
#    size: 8
#    stemcell:
#      name: bosh-vsphere-esxi-ubuntu-trusty-go_agent
#      version: '2865.1'


resource_pools:
- name: default
  network: default
  stemcell:
    name: bosh-vsphere-esxi-ubuntu-trusty-go_agent
    version: '2865.1' 
  cloud_properties:
    cpu: 2
    ram: 4096 
    disk: 10240
    datacenters:
    - name: 'Universal City' 
      clusters:
      - USH_UCS_CLOUD_FOUNDRY_NONPROD_01: {resource_pool: 'USH_UCS_CLOUD_FOUNDRY_NONPROD_01_RP'}

jobs:
  - name: gateways
    release: cf-services-contrib
    templates:
    - name: postgresql_gateway_ng
    instances: 1
    resource_pool: 'USH_UCS_CLOUD_FOUNDRY_NONPROD_01_RP' 
    networks:
      - name: default
        default: [dns, gateway]
    properties:
      # Service credentials
      uaa_client_id: "cf"
      uaa_endpoint: http://uaa.devcloudwest.example.com
      uaa_client_auth_credentials:
        username: admin
        password: secret 


  - name: postgresql_service_node
    release: cf-services-contrib
    template: postgresql_node_ng
    instances: 1
    resource_pool: common
    persistent_disk: 10000
    properties:
      postgresql_node:
        plan: default
    networks:
      - name: default
        default: [dns, gateway]

properties:
  networks:
    apps: default
    management: default

  cc:
    srv_api_uri: http://api.devcloudwest.example.com

  nats:
    address: exam 10.114..130.11 
    port: 25555 
    user: nats #CHANGE
    password: secret 
    authorization_timeout: 5

  service_plans:
    postgresql:
      default:
        description: "Developer, 250MB storage, 10 connections"
        free: true
        job_management:
          high_water: 230
          low_water: 20
        configuration:
          capacity: 125
          max_clients: 10
          quota_files: 4
          quota_data_size: 240
          enable_journaling: true
          backup:
            enable: false
          lifecycle:
            enable: false
            serialization: enable
            snapshot:
              quota: 1

  postgresql_gateway:
    token: f75df200-4daf-45b5-b92a-cb7fa1a25660
    default_plan: default
    supported_versions: ["9.3"]
    version_aliases:
      current: "9.3"
    cc_api_version: v2
  postgresql_node:
    supported_versions: ["9.3"]
    default_version: "9.3"
    max_tmp: 900
    password: secret 

And here's gist with the debug output from that error:

postgres_2423_debug.txt

Upvotes: 0

Views: 245

Answers (1)

Amit Kumar Gupta
Amit Kumar Gupta

Reputation: 18567

The docs for the jobs blocks say:

  • resource_pool [String, required]: A valid resource pool name from the Resource Pools block. BOSH runs instances of this job in a VM from the named resource pool.

This needs to match the name of one of your resource_pools, namely default, not the name of the resource pool in vSphere.

The only sections that have direct references to the IaaS are things that say cloud_properties. Specific names of resources (like networks, clusters, or datacenters in your vSphere, or subnets, AZs, and instance types in AWS) only show up in places that say cloud_properties.

You use that data to define "networks" and "resource pools" at a higher level of abstraction that is IaaS-agnostic, e.g. except for cloud properties, the specifications you give for resource pools is the same whether you're deploying to vSphere, AWS, OpenStack, etc.

Then your jobs reference these networks, resource pools, etc. by the logical name you've given to the abstractions. In particular, jobs don't require any IaaS-specific configuration whatsoever, just references to a logical network(s) and a resource pool that you've defined elsewhere in your manifest.

Upvotes: 1

Related Questions