好吧,有一个 SDK 页面列出了许多现有的 OpenStack API 客户端 SDK。
参考:
https://wiki.openstack.org/wiki/SDKs#PHP
目前列出了两个用于 OpenStack 的 PHP SDK:
参考:
https://github.com/rackspace/php-opencloud
https://github.com/zendframework/ZendService_OpenStack
我不会使用 Juju 作为界面。坦率地说,我不确定 OpenStack 是否适合您正在做的事情。但是,如果您想使用 devstack 并获得一个想法,我认为 rackspace 的 php 客户端 SDK 可能是一个好的开始。Devstack 也不是获得这种体验的好方法。
使用 php-opencloud 启动服务器的示例:
$server = $compute->server();
try {
$response = $server->create(array(
'name' => 'My lovely server',
'image' => $ubuntu,
'flavor' => $twoGbFlavor
));
} catch (\Guzzle\Http\Exception\BadResponseException $e) {
// No! Something failed. Let's find out:
$responseBody = (string) $e->getResponse()->getBody();
$statusCode = $e->getResponse()->getStatusCode();
$headers = $e->getResponse()->getHeaderLines();
echo sprintf("Status: %s\nBody: %s\nHeaders: %s", $statusCode, $responseBody, implode(', ', $headers));
}
这将是一个轮询函数:
use OpenCloud\Compute\Constants\ServerState;
$callback = function($server) {
if (!empty($server->error)) {
var_dump($server->error);
exit;
} else {
echo sprintf(
"Waiting on %s/%-12s %4s%%",
$server->name(),
$server->status(),
isset($server->progress) ? $server->progress : 0
);
}
};
$server->waitFor(ServerState::ACTIVE, 600, $callback);