Creating a provisioning module
Connect service lifecycle actions to a panel or cloud API.
modules/servers/acmecloud/acmecloud.php must define AcmecloudModule.
<?php
class AcmecloudModule {
public function meta(): array { return ['DisplayName'=>'Acme Cloud','APIVersion'=>'1.0']; }
public function testConnection(array $p): array { return ['success'=>true]; }
public function createAccount(array $p): array { return ['success'=>true,'ip'=>'203.0.113.10']; }
public function suspendAccount(array $p): array { return ['success'=>true]; }
public function unsuspendAccount(array $p): array { return ['success'=>true]; }
public function terminateAccount(array $p): array { return ['success'=>true]; }
public function changePassword(array $p): array { return ['success'=>true]; }
public function changePackage(array $p): array { return ['success'=>true]; }
public function getPackages(array $p): array { return ['small','large']; }
}
ModuleRunner::buildParams() supplies service, client, product and server data. Return ['success'=>true] or ['success'=>false,'error'=>'safe message']. Use timeouts and idempotent create/terminate calls.