{"record":{"id":"5b1c396586d262bc","repo":"phacility/phabricator","slug":"no-enabled-blueprints-exist-with-a-blueprint-class","errorCode":null,"errorMessage":"No enabled blueprints exist with a blueprint class that can plausibly allocate resources to satisfy the requested lease.","messagePattern":"No enabled blueprints exist with a blueprint class that can plausibly allocate resources to satisfy the requested lease\\.","errorType":"console","errorClass":"PhutilArgumentUsageException","httpStatus":null,"severity":"error","filePath":"src/applications/drydock/management/DrydockManagementLeaseWorkflow.php","lineNumber":336,"sourceCode":"    $impls = DrydockBlueprintImplementation::getAllForAllocatingLease($lease);\n\n    if (!$impls) {\n      throw new PhutilArgumentUsageException(\n        pht(\n          'No known blueprint class can ever allocate the specified '.\n          'lease. Check that the resource type is spelled correctly.'));\n    }\n\n    $classes = array_keys($impls);\n\n    $blueprints = id(new DrydockBlueprintQuery())\n      ->setViewer($viewer)\n      ->withBlueprintClasses($classes)\n      ->withDisabled(false)\n      ->execute();\n\n    if (!$blueprints) {\n      throw new PhutilArgumentUsageException(\n        pht(\n          'No enabled blueprints exist with a blueprint class that can '.\n          'plausibly allocate resources to satisfy the requested lease.'));\n    }\n\n    $phids = mpull($blueprints, 'getPHID');\n\n    if ($filter_blueprints) {\n      $allowed_map = array_fuse($phids);\n      $filter_map = mpull($filter_blueprints, null, 'getPHID');\n\n      foreach ($filter_map as $filter_phid => $blueprint) {\n        if (!isset($allowed_map[$filter_phid])) {\n          throw new PhutilArgumentUsageException(\n            pht(\n              'Specified blueprint \"%s\" is not capable of satisfying the '.\n              'configured lease.',\n              $blueprint->getBlueprintName()));","sourceCodeStart":318,"sourceCodeEnd":354,"githubUrl":"https://github.com/phacility/phabricator/blob/5720a38cfe95b00ca4be5016dd0d2f3195f4fa04/src/applications/drydock/management/DrydockManagementLeaseWorkflow.php#L318-L354","documentation":"A PhutilArgumentUsageException from `bin/drydock lease`: at least one blueprint implementation class can allocate the lease (the check in error 557 passed), but a DrydockBlueprintQuery for enabled (non-disabled) blueprint instances of those classes returns nothing. In other words, the install has the capability in code but no enabled blueprint configured to provide it.","triggerScenarios":"`bin/drydock lease --type host` on a fresh install where no 'host' blueprint has been created yet, or where every host blueprint is disabled (withDisabled(false) filters them out).","commonSituations":"Fresh Drydock setup that has not created blueprints; all blueprints disabled during maintenance or after an incident; blueprint created but immediately disabled by an admin.","solutions":["Create a blueprint of the required class: Drydock console > Blueprints > New Blueprint, pick the matching implementation type.","If a matching blueprint exists but is disabled, re-enable it from the blueprint page.","Re-run the lease command after the blueprint is enabled."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"$impls = DrydockBlueprintImplementation::getAllForAllocatingLease($probe);\n$blueprints = id(new DrydockBlueprintQuery())\n  ->setViewer($viewer)\n  ->withBlueprintClasses(array_keys($impls))\n  ->withDisabled(false)\n  ->execute();\nif (!$blueprints) {\n  throw new RuntimeException(\n    'No enabled blueprint provides this resource type; '.\n    'create or enable one in the Drydock console.');\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Include blueprint provisioning in environment setup scripts: assert at least one enabled blueprint exists per required resource type.","When disabling blueprints for maintenance, expect lease acquisition for that type to fail and pause consumers."],"tags":["drydock","phabricator","cli","blueprint","disabled","no-provider"],"backgroundTag":"no-enabled-provider","analyzedSha":"5720a38cfe95b00ca4be5016dd0d2f3195f4fa04","analyzedAt":"2026-08-21T05:07:25.672Z","schemaVersion":2},"datasetVersion":"2026-08-21T11:28:35.574Z"}