Skip to content

rgeyer/rs_guzzle_client

Repository files navigation

Guzzle Rightscale API client for PHP

Build Status

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'            => '[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);

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.

About

A guzzle based REST client for the RightScale 1.0 API for PHP

Resources

License

Stars

Watchers

Forks

Packages

No packages published