rs_guzzle_client is a PHP Guzzle REST API client library for the RightScale API.
Support is available for v1.0 and v1.5 of the API. Not all API calls are covered, a table of supported calls can be found below.
Add rs_guzzle_client to the src/Guzzle/Rs directory of your Guzzle installation:
cd /path/to/guzzle
git submodule add git://github.com/rgeyer/rs_guzzle_client.git ./src/Guzzle/Rs
You can now build a phar file containing guzzle-aws and the main guzzle framework:
cd /path/to/guzzle/build
phing phar
Now you just need to include guzzle.phar in your script. The phar file will take care of autoloading Guzzle classes:
<?php
require_once 'guzzle.phar';The example script for getting your servers:
<?php
require_once 'guzzle.phar';
$serviceBuilder = \Guzzle\Service\ServiceBuilder::factory(array(
'guzzle-rs-1_0' => array(
'class' => 'RGeyer\Guzzle\Rs\RightScaleClient',
'params' => array(
'acct_num' => '00000', // your rightscale account id
'email' => '[email protected]',
'password' => 'yourPassword',
'version' => '1.0',
'curl.CURLOPT_SSL_VERIFYHOST' => false,
'curl.CURLOPT_SSL_VERIFYPEER' => false,
)
),
));
$client = $serviceBuilder->get('guzzle-rs-1_0');
$params = array();
$command = $client->getCommand('servers', $params);Below you will find the current controllers (and their commands) that are supported by the library. A quick legend for the completeness percentage.
100% - Implemented Commands, Full tests, Mock responses in the library 50% - Implemented Commands, Not tested or minimally tested, Mocks may or may not exist 0% - Not implemented
| Alert Spec Subjects | ||
|---|---|---|
| Command | v1.0 | v1.5 |
| create | 100% | 0% |
| Model | 0% | 0% |
| Alert Spec | ||
|---|---|---|
| Command | v1.0 | v1.5 |
| show | 100% | 100% |
| index | 100% | 100% |
| create | 100% | 100% |
| update | 100% | 100% |
| destroy | 50% | 100% |
| Model | 0% | 0% |
| Audit Entries | ||
|---|---|---|
| Command | v1.0 | v1.5 |
| show | 100% | 0% |
| Model | 0% | 0% |
| Component EC2 EBS Volumes | ||
|---|---|---|
| Command | v1.0 | v1.5 |
| create | 100% | 0% |
| destroy | 100% | 0% |
| Model | 0% | 0% |
| Servers | ||
|---|---|---|
| Command | v1.0 | v1.5 |
| show | 100% | 100% |
| index | 100% | 100% |
| create | 100% | 100% |
| update | 100% | 100% |
| destroy | 100% | 100% |
| launch | N/A | 100% |
| start | 100% | N/A (see launch above) |
| start_ebs | 100% | N/A (see launch above) |
| terminate | N/A | 100% |
| stop | 100% | N/A (see terminate above) |
| stop_ebs | 100% | N/A (see terminate above) |
| reboot | 100% | N/A |
| run_script | 100% | N/A |
| run_executable | 100% | N/A |
| attach_volume | 100% | N/A |
| settings | 100% | N/A |
| get_sketchy_data | 100% | N/A |
| current/show | 100% | N/A |
| current/update | 100% | N/A |
| current/settings | 100% | N/A |
| alert_specs | 100% | N/A |
| monitoring | 100% | N/A |
| monitoring/graph-name | 100% | N/A |
| Model | 100% | 20% (Lacks all reference commands/models) |
| Credentials | ||
|---|---|---|
| Command | v1.0 | v1.5 |
| show | 100% | 0% |
| index | 100% | 0% |
| create | 100% | 0% |
| update | 100% | 0% |
| destroy | 100% | 0% |
| Model | 0% | 0% |
| Deployments | ||
|---|---|---|
| Command | v1.0 | v1.5 |
| show | 100% | 100% |
| index | 100% | 100% |
| create | 100% | 100% |
| update | 100% | 100% |
| destroy | 100% | 100% |
| duplicate | 100% | N/A |
| clone | N/A | 100% |
| start_all | 100% | N/A |
| stop_all | 100% | N/A |
| Model | 100% | 100% |
| EC2 EBS Snapshots | ||
|---|---|---|
| Command | v1.0 | v1.5 |
| show | 100% | 0% |
| index | 100% | 0% |
| create | 100% | 0% |
| update | 100% | 0% |
| destroy | 100% | 0% |
| Model | 0% | 0% |
| EC2 EBS Volumes | ||
|---|---|---|
| Command | v1.0 | v1.5 |
| show | 100% | 0% |
| index | 100% | 0% |
| create | 100% | 0% |
| update | 100% | 0% |
| destroy | 100% | 0% |
| Model | 0% | 0% |
| EC2 Elastic IPs | ||
|---|---|---|
| Command | v1.0 | v1.5 |
| show | 100% | 0% |
| index | 100% | 0% |
| create | 100% | 0% |
| destroy | 100% | 0% |
| Model | 0% | 0% |
| Security Groups | ||
|---|---|---|
| Command | v1.0 | v1.5 |
| show | 100% | 100% |
| index | 100% | 100% |
| create | 100% | 100% |
| update | 100% | N/A |
| destroy | 100% | 100% |
| Model | 100% | 100% |
| Security Group Rules | ||
|---|---|---|
| Command | v1.0 | v1.5 |
| show | N/A | 100% |
| index | N/A | 100% |
| create | N/A | 100% |
| destroy | N/A | 100% |
| Model | N/A | 100% |
| Server Arrays | ||
|---|---|---|
| Command | v1.0 | v1.5 |
| show | 100% | 100% |
| index | 100% | 100% |
| create | 100% | 100% |
| update | 100% | 100% |
| destroy | 100% | 100% |
| terminate_all | 100% | N/A |
| multi_terminate | N/A | 100% |
| launch | 100% | 100% |
| run_script_on_all | 50% | N/A |
| multi_run_executable | N/A | 100% |
| instances | 100% | N/A |
| current_instances | N/A | 100% |
| Model | 50% | 100% |
| EC2/Generic SSH Keys | ||
|---|---|---|
| Command | v1.0 | v1.5 |
| index | N/A | 100% |
| show | 100% | 100% |
| create | 100% | 100% |
| destroy | 100% | 100% |
| Model | 100% | 100% |
| Macros | ||
|---|---|---|
| Command | v1.0 | v1.5 |
| show | 100% | 0% |
| index | 100% | 0% |
| create | 100% | 0% |
| update | 100% | 0% |
| destroy | 100% | 0% |
| Model | 0% | 0% |
| Multi Cloud Images | ||
|---|---|---|
| Command | v1.0 | v1.5 |
| show | 100% | 100% |
| index | 100% | 100% |
| create | N/A | 100% |
| update | N/A | 100% |
| clone | N/A | 100% |
| commit | N/A | 100% |
| destroy | N/A | 100% |
| Model | 100% | 100% |
| MultiCloudImageSettings | ||
|---|---|---|
| Command | v1.0 | v1.5 |
| show | N/A | 100% |
| index | N/A | 100% |
| create | N/A | 100% |
| update | N/A | 100% |
| destroy | N/A | 100% |
| Model | N/A | 100% |
| Right Scripts | ||
|---|---|---|
| Command | v1.0 | v1.5 |
| show | 100% | 0% |
| index | 100% | 0% |
| Model | 0% | 0% |
| S3 Bucket | ||
|---|---|---|
| Command | v1.0 | v1.5 |
| create | 100% | 0% |
| destroy | 100% | 0% |
| Model | 0% | 0% |
| Server Template | ||
|---|---|---|
| Command | v1.0 | v1.5 |
| show | 100% | 100% |
| index | 100% | 100% |
| create | 100% | 100% |
| update | 100% | 100% |
| destroy | 100% | 100% |
| executables | 100% | N/A |
| alert_specs | 100% | N/A |
| clone | N/A | 100% |
| commit | N/A | 100% |
| publish | N/A | 100% |
| Model | 0% | 50% (Lacks all relationship commands/models) |
| SQS Queues | ||
|---|---|---|
| Command | v1.0 | v1.5 |
| show | 50% | 0% |
| index | 50% | 0% |
| create | 50% | 0% |
| destroy | 50% | 0% |
| Model | 0% | 0% |
| Statuses | ||
|---|---|---|
| Command | v1.0 | v1.5 |
| show | 50% | 0% |
| Model | 0% | 0% |
| Tags | ||
|---|---|---|
| Command | v1.0 | v1.5 |
| search | 100% | N/A |
| set | 100% | N/A |
| unset | 100% | N/A |
| taggable_resources | 100% | N/A |
| tags_by_resource | N/A | 100% |
| tags_by_tag | N/A | 100% |
| tags_multi_add | N/A | 100% |
| tags_multi_delete | N/A | 100% |
| Model | 0% | 0% |
| VPC DHCP Option | ||
|---|---|---|
| Command | v1.0 | v1.5 |
| show | 50% | 0% |
| index | 50% | 0% |
| create | 50% | 0% |
| update | 50% | 0% |
| destroy | 50% | 0% |
| Model | 0% | 0% |
| Clouds | ||
|---|---|---|
| Command | v1.0 | v1.5 |
| show | N/A | 100% |
| index | N/A | 100% |
| Model | N/A | 100% |
| Publications | ||
|---|---|---|
| Command | v1.0 | v1.5 |
| show | N/A | 100% |
| index | N/A | 100% |
| import | N/A | 100% |
| Model | N/A | 100% |
| Instances | ||
|---|---|---|
| Command | v1.0 | v1.5 |
| show | N/A | 100% |
| index | N/A | 100% |
| update | N/A | 100% |
| launch | N/A | 100% |
| multi_run_executable | N/A | 100% |
| multi_terminate | N/A | 100% |
| reboot | N/A | 100% |
| run_executable | N/A | 100% |
| set_custom_lodgement | N/A | N/A Deprecated for InstanceCustomLodgments#create |
| terminate | N/A | 100% |
| Model | 0% | 0% |
| InstanceTypes | ||
|---|---|---|
| Command | v1.0 | v1.5 |
| show | N/A | 100% |
| index | N/A | 100% |
| Model | N/A | 100% |
| Datacenters | ||
|---|---|---|
| Command | v1.0 | v1.5 |
| show | N/A | 100% |
| index | N/A | 100% |
| Model | N/A | 100% |
| Inputs | ||
|---|---|---|
| Command | v1.0 | v1.5 |
| index | N/A | 100% |
| multi_update | N/A | 100% |
| Model | N/A | 0% |
| Subnets | ||
|---|---|---|
| Command | v1.0 | v1.5 |
| show | N/A | 100% |
| index | N/A | 100% |
| update | N/A | 100% |
| Model | N/A | 100% |
- Allow the user to specify a logger.
- ModelBase "duplicate" and "clone" should both work on either Ec2 or Mc classes.
- Handle the HTTP 500 seek() null error
- Reduce (or eliminate) the need for the ServiceBuilder and ClientFactory
- ModelBase should assume that the API call for a relationship is the same as the relationship name, unless specified otherwise. I.E. relationship for 'cloud' would call command 'cloud' with an ID
- Refactor tagging functionality into ModelBase or an "IsTaggable" mixin class. See Model\Mc\Server for example of how not to do it
- Test optional/required parameters on concrete models. I.E. deployment[name] is an invalid parameter on create unless defined as required or optional, base is not sufficient.
- Tests should make sure that models which make command requests for relationships correctly overwrite the path for the command.
