Pivotal Knowledge Base

Follow

Pushing App into Isolation Segments fails with "NoCompatibleCell" Error

Environment

 Product  Version
 Pivotal Elastic Runtime  1.10.0
 Pivotal Operations Manager  1.10.0

Symptom

Pushing apps into a new isolation segment fails with the following error:

FAILED
Error restarting application: NoCompatibleCell

Cause

In this case, an Operator created an isolation segment using the open source docs found here with the name "iso_seg1" and bound it to an Organization Space. Then the user installed the isolation segment tile in Operations Manager but gave the isolation segment a different name than what was being used in the API create call. The value of "OpsMan -> Isolation Tile -> Application Containers -> Segment Name" was set to "iso-pcf-seg1."

Operations Manager in this release is only responsible for creating the Diego resources and updating Diego with the segment name. Operations Manager does not update Cloud Controller, and this is why the Operator needs to run the curl API commands to create and bind the isolation segment to an Organization Space.  

When a user pushes an app, the Cloud Controller needs to tag the metadata with the correct isolation segment to inform Diego which segment the app needs to be deployed on. If the Cloud Controller isolation segment name does not match the Operations Manager tile, then the Cloud Controller and Diego are out of sync, and the app can not be deployed in the new isolation segment. 

Example, Operations Manager Setting

iso_pcf_seg1-edit.jpeg

Example, Curl command used to create the isolation segment

curl "https://api.example.org/v3/isolation_segments" \
  -X POST \
  -H "Authorization: bearer [token]" \
  -H "Content-type: application/json" \
  -d '{
    "name": "iso_seg1"
  }'

Resolution

A quick way to get out of this situation is to simply update the curl created isolation segment name with the same value that was being used in the Operations Manager. So change the name from "iso_seg1" to "iso_pcf_seg1."

  • Get your isolation segment GUID by listing the isolation segments:
    curl "https://api.example.org/v3/isolation_segments" \
      -X GET \
      -H "Authorization: `cf oauth-token`"
  • Update your isolation segment name and replace "[guid]" with the GUID value in the previous command:
    curl "https://api.example.org/v3/isolation_segments/[guid]" \
      -X PATCH \
      -H "Authorization: `cf oauth-token`" \
      -H "Content-type: application/json" \
      -d '{
        "name": "iso_pcf_seg1"
      }' 

 

 

Comments

Powered by Zendesk