application-manager-tools/am-driver
Symfony bundle + framework-agnostic PHP library to connect managed apps to Application Manager: orchestration commands, consumption webhooks, and instance operational state push. Includes OpenAPI 3.1 spec + Swagger UI, plus integration guides.
tenantId remplacé par instanceId partout dans le bundle (DTO, snapshots, état opérationnel, consommation, espace disque local).OrchestrationCommand : tenantId supprimé du corps ; correlationId devient optionnel. Clés requises : operation, appId, instanceId, idempotencyKey, occurredAt.ConsumptionWebhookEvent : champ JSON tenantId → instanceId.ManagedInstanceResourceSnapshot : champ JSON tenantId → instanceId ; getter instanceId().findByTenantId() → findByInstanceId() ; load($instanceId), save($instanceId, …), etc.InstanceOperationalStateValidator : exige instance.instanceId ; garde-fou expected_tenant_id supprimé (utiliser expected_instance_id).--tenant-id → --instance-id (consumption:push, orchestration:simulate).snapshots/{tenantId}.json → snapshots/{instanceId}.json (et équivalents operational-state / receipts).pushResourceConsumption($instanceId, …).Versions antérieures : voir tags Git.
QUOTA_EXCEEDED et interface hôte
QuotaExceededInstanceHandlerInterface (idempotence + callback comme START/STOP).OrchestrationCommandProcessor exige ce handler en 4ᵉ argument constructeur
(après StartInstanceHandlerInterface).ApplicationManagerTools\AmDriver\Core\Contract\QuotaExceededInstanceHandlerInterface:
alias: App\Infrastructure\Am\QuotaExceededInstanceHandler
GET_INFO_INSTANCE / SET_STATEVIEW_INSTANCE ne sont plus gérés en interne (fichier + queryParams) :
le processor délègue à GetInfoInstanceHandlerInterface / SetStateViewInstanceHandlerInterface (comme CREATE / START / STOP).OrchestrationCommandProcessor::process() ne prend plus de $queryParams ; le constructeur exige les deux handlers
(plus d’arguments optionnels reader/writer/resolver).FileActualResourcesConsumptionReader, FileStateViewWriter, FileTenantWorkspace.ApplicationManagerTools\AmDriver\Core\Contract\GetInfoInstanceHandlerInterface:
alias: App\Infrastructure\Am\GetInfoInstanceHandler
ApplicationManagerTools\AmDriver\Core\Contract\SetStateViewInstanceHandlerInterface:
alias: App\Infrastructure\Am\SetStateViewInstanceHandler
CreateInstanceHandlerResult devient un DTO hybride : construit via CreateInstanceHandlerResult::fromArray(array $data)
au lieu de new CreateInstanceHandlerResult(?string $instanceLocation, ?string $startedAt). Les clés startedAt et
integrationInstanceId (toutes deux non vides) restent obligatoires et validées par le bundle ; toute autre clé
(location, ...) est libre et relayée telle quelle jusqu'au callback AM. Les accesseurs instanceLocation()
disparaissent au profit de toArray() (startedAt() et integrationInstanceId() sont conservés, car champs
garantis).OrchestrationCallbackRequest : le constructeur perd ses paramètres nommés ?string $location/?string $startedAt
au profit d'un tableau array $extra = [] (4ᵉ paramètre). Les accesseurs location()/startedAt() disparaissent au
profit de extra(): array. fromArray() ne valide plus location comme une URI stricte.OrchestrationCommandProcessor::assertCreateInstanceStartedAt() est retiré ; la validation de startedAt vit
désormais dans CreateInstanceHandlerResult::fromArray().Avant :
return new CreateInstanceHandlerResult('https://tenant.example/login', $startedAt);
Après :
return CreateInstanceHandlerResult::fromArray([
'startedAt' => $startedAt,
'integrationInstanceId' => $integrationInstanceId,
'location' => 'https://tenant.example/login',
// toute autre clé métier est acceptée sans changement bundle
]);
application_token / env AM_DRIVER_APPLICATION_TOKEN (les 4 clés legacy restent acceptées en alias de migration).X-AM-Application-Token (entrée et sortie vers AM).instanceIntegrationToken dans OrchestrationCommand.ApplicationTokenAuthenticator partagé (contrôleurs Symfony + ReceptacleHttpKernel).OrchestrationCommand : champs enrichis optionnels pour CREATE_INSTANCE uniquement :
name (getter name())credentials.login (getter credentialsLogin())metadata (getter metadata(), défaut [])name, credentials, metadata interdits hors CREATE_INSTANCE ; clé legacy shortname rejetée.How can I help you explore Laravel packages today?