Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
110 lines (79 sloc) 4.77 KB

Which Categories Best Fit Your Submission and Why?

Portability Enhancement. The majority of our changes to the NetflixOSS codebase involve tweaks to enable the projects to run seamlessly against both AWS and Eucalyptus. Since Eucalyptus is designed to be highly compatible with the AWS API, these changes generally involve abstraction of hardcoded AWS-isms.

Describe your Submission

Eucalyptus is an open source software project that allows users to build private clouds that are compatible with the Amazon Web Services API.

Because Eucalyptus faithfully implements the AWS APIs upon which NetflixOSS depends, it should be noted that most NetflixOSS projects can be expected to run on Eucalyptus clouds with no changes at all.

There are, however, a handful NetflixOSS projects that must be modified in order to work with the latest version of Eucalyptus (3.3.1 as of submission time). Our submission focuses on providing portability for these NetflixOSS projects, as noted below.

Netflix OSS Projects now supported under Eucalyptus with these patches

  • aminator: Full support.
  • eureka: Full support.
  • Priam: Full support.
  • servo: Full support.
  • Turbine: Full support.
  • archaius: Partial support. No DynamoDB support in Eucalyptus at present. Other configurations work.
  • asgard: Partial support. No SimpleDB, SWF, RDS or SQS support in Eucalyptus at present.
  • edda: Partial support. No ElasticCache, RDS, Route53, or SQS support in Eucalyptus at present.
  • SimianArmy: Partial support. No SimpleDB support in Eucalyptus at present.

Not supported at all under Eucalyptus

  • denominator: Not supported. No Route53 support in Eucalyptus at present.
  • ice: Not supported. No Programmatic Billing Access, SES, or SimpleDB in Eucalyptus at present.

Detailed review of changes

aminator

The Eucalyptus Cloud Plugin for Aminator allows you to provision an EMI in a Eucalyptus cloud.

For details, see: http://testingclouds.wordpress.com/2013/09/12/using-aminator-with-eucalyptus/

eureka

Adds support for Eucalyptus endpoints:

  • Uses EurekaClientConfig to obtain EC2 and AutoScaling endpoints.
  • Introduces EucalyptusEurekaClientConfig for construcing euca URLs.
  • Modifies AwsAsgUtil and EIPManager accordingly.

Priam

Adds support for Eucalyptus endpoints:

  • Adds facade for constructing AWS service clients w/ configured endpoints.
  • Constructs clients using facade in AWSMembership, PriamConfiguration, and S3FileSystem.
  • No support for SimpleDB currently -- SimpleDBConfigSource needs alternative credentials.

servo

Adds support for Eucalyptus endpoints:

  • Add facade for constructing AWS service clients w/ configured endpoints.
  • Add properties for setting AutoScaling and CloudWatch endpoints.
  • com.netflix.servo.aws.endpoint.cloudwatch
  • com.netflix.servo.aws.endpoint.autoscaling
  • Constructs clients using facade in CloudWatchMetricObserver and AwsInjectableTag.

Turbine

Adds support for Eucalyptus endpoints:

  • Allows for turbine.region to be a Eucalyptus host address or name.
  • Tests for region-ness using DNS and checking for existence of ec2.${region}.amazonaws.com
  • Configures client endpoints appropriately in AwsUtil.java

asgard

Branch with Asgard working against Eucalyptus:

  • Support for configuring both AWS and Eucalyptus accounts.
  • EC2, AutoScaling, ELB, and CloudWatch functionality work unmolested against Eucalytpus.
  • Allows for configuring services not supported by Eucalyptus to use either AWS or the Mock backends.
  • Currently requires a change in Region.groovy to configure the names of Eucalyptus regions.
  • Adds EndpointService for configuring AWS client endpoints based on Region

edda

Adds support for Eucalyptus endpoints:

  • Interprets edda.region or edda.$account.region as a hostname when it is not an AWS region name.
  • Uses EC2 region's DNS name existing as test for AWS region existence.
  • AwsClient.setEndpoint constructs Eucalyptus URLs if not an AWS region.
  • Supported: AutoScaling, CloudWatch, EC2, ELB, IAM, S3
  • Unsupported: ElastiCache, RDS, Route53, SQS

SimianArmy

Adds configuration options for Eucalyptus client properties. Example client.properties:

  • simianarmy.client.aws.accountKey = 1CSDM1FT4G8ZKDZ1AZR2
  • simianarmy.client.aws.secretKey = XXXXXXXXXXXX
  • simianarmy.client.aws.region = us-east-1
  • simianarmy.client.context.class=com.netflix.simianarmy.client.eucalyptus.EucalyptusChaosMonkeyContext
  • simianarmy.client.eucalyptus.hostName = 10.111.1.119
  • simianarmy.client.eucalyptus.accountKey = YRLWV7NSQK2FSXKCOTKET
  • simianarmy.client.eucalyptus.secretKey = XXXXXXXXXXXX
  • simianarmy.client.eucalyptus.region = us-east-1

Provide Links to Github Repos for your Submission

All of the repos corresponding to these submissions have been forked into the following organization:

https://github.com/eucaflix/