Pushing App into Isolation Segments Fails with "NoCompatibleCell" Error
search cancel

Pushing App into Isolation Segments Fails with "NoCompatibleCell" Error

book

Article ID: 297638

calendar_today

Updated On:

Products

VMware Tanzu Application Service for VMs

Issue/Introduction

Symptoms:

Pushing apps into a new Isolation Segment fails with the following error:

FAILED
Error restarting application: NoCompatibleCell
 

 

Environment


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 cannot be deployed in the new isolation segment; for example, see the Operations Manager Setting:

 

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"
      }'