From ce75cef46a23a7f158e32e5a15e2c75c0579b4e8 Mon Sep 17 00:00:00 2001 From: Wesley Beary Date: Wed, 12 Aug 2009 22:33:35 -0700 Subject: [PATCH] setting up basics of first ec2 models --- lib/fog/aws/models/ec2/address.rb | 35 +++++++++++++++++++++++++++ lib/fog/aws/models/ec2/addresses.rb | 36 ++++++++++++++++++++++++++++ lib/fog/aws/models/ec2/key_pair.rb | 37 +++++++++++++++++++++++++++++ lib/fog/aws/models/ec2/key_pairs.rb | 36 ++++++++++++++++++++++++++++ 4 files changed, 144 insertions(+) create mode 100644 lib/fog/aws/models/ec2/address.rb create mode 100644 lib/fog/aws/models/ec2/addresses.rb create mode 100644 lib/fog/aws/models/ec2/key_pair.rb create mode 100644 lib/fog/aws/models/ec2/key_pairs.rb diff --git a/lib/fog/aws/models/ec2/address.rb b/lib/fog/aws/models/ec2/address.rb new file mode 100644 index 000000000..2ea81edef --- /dev/null +++ b/lib/fog/aws/models/ec2/address.rb @@ -0,0 +1,35 @@ +module Fog + module AWS + class EC2 + + class Address < Fog::Model + + attr_accessor :instance_id, :public_ip + + def initialize(attributes = {}) + remap_attributes(attributes, { + 'instanceId' => :instance_id, + 'publicIp' => :public_ip + }) + super + end + + def delete + return false if new_record? + connection.release_address(@public_ip) + @new_record = true + true + end + + def save + data = connection.allocate_address + @public_ip = data.body['publicIp'] + @new_record = false + true + end + + end + + end + end +end diff --git a/lib/fog/aws/models/ec2/addresses.rb b/lib/fog/aws/models/ec2/addresses.rb new file mode 100644 index 000000000..c5be5d136 --- /dev/null +++ b/lib/fog/aws/models/ec2/addresses.rb @@ -0,0 +1,36 @@ +module Fog + module AWS + class EC2 + + def addresses + Fog::AWS::EC2::Addresses.new(:connection => self) + end + + class Addresses < Fog::Collection + + def all + data = connection.get_addresses.body + addresses = [] + body['addressesSet'].each do |address| + addresses << Fog::AWS::EC2::Address.new({ + :connection => connection + }.merge!(address)) + end + addresses + end + + def create + address = new + address.save + address + end + + def new + Fog::AWS::S3::Address.new(:connection => connection) + end + + end + + end + end +end diff --git a/lib/fog/aws/models/ec2/key_pair.rb b/lib/fog/aws/models/ec2/key_pair.rb new file mode 100644 index 000000000..6cbec8faa --- /dev/null +++ b/lib/fog/aws/models/ec2/key_pair.rb @@ -0,0 +1,37 @@ +module Fog + module AWS + class EC2 + + class KeyPair < Fog::Model + + attr_accessor :fingerprint, :material, :name + + def initialize(attributes = {}) + remap_attributes(attributes, { + 'keyFingerprint' => :fingerprint, + 'keyMaterial' => :material, + 'keyName' => :name + }) + super + end + + def delete + return false if new_record? + connection.delete_key_pair(@name) + @new_record = true + true + end + + def save + data = connection.create_key_pair(@name) + new_attributes = data['Body'].reject {|key,value| !['keyFingerprint', 'keyMaterial', 'keyName'].include?(key)} + update_attributes(new_attributes) + @new_record = false + true + end + + end + + end + end +end diff --git a/lib/fog/aws/models/ec2/key_pairs.rb b/lib/fog/aws/models/ec2/key_pairs.rb new file mode 100644 index 000000000..b3eb04e72 --- /dev/null +++ b/lib/fog/aws/models/ec2/key_pairs.rb @@ -0,0 +1,36 @@ +module Fog + module AWS + class EC2 + + def key_pairs + Fog::AWS::EC2::KeyPairs.new(:connection => self) + end + + class KeyPairs < Fog::Collection + + def all(key_names = []) + data = connection.describe_key_pairs(key_names) + key_pairs = [] + data['keySet'].each do |key| + key_pairs << Fog::AWS::EC2::KeyPair.new({ + :connection => connection + }.merge!(key)) + end + key_pairs + end + + def create(attributes = {}) + bucket = new(attributes) + bucket.save + bucket + end + + def new(attributes = {}) + Fog::AWS::EC2::KeyPair.new(attributes.merge!(:connection => connection)) + end + + end + + end + end +end