README
                    

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.
Installation
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'            => 'your@email.com',
            '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);
API coverage
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% | 
  
TODO
- 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.