From 9d4b3503fe81ae8f65ae3dbbd1fc07947a3bc5ea Mon Sep 17 00:00:00 2001 From: Dev Mohanty Date: Mon, 9 Dec 2013 13:38:01 -0600 Subject: [PATCH 1/8] added destroy elastic ip --- lib/harp-runtime/cloud/cloud_mutator.rb | 1 - .../resources/compute/elastic_ip.rb | 5 +++ spec/compute_cloud_spec.rb | 42 +++++++++---------- 3 files changed, 26 insertions(+), 22 deletions(-) diff --git a/lib/harp-runtime/cloud/cloud_mutator.rb b/lib/harp-runtime/cloud/cloud_mutator.rb index 4cb8a04..395f4cb 100644 --- a/lib/harp-runtime/cloud/cloud_mutator.rb +++ b/lib/harp-runtime/cloud/cloud_mutator.rb @@ -100,7 +100,6 @@ def destroy(resource_name, resource_def) destroyed = resource.destroy(service) #pr = persist_resource(resource_name, resource, resource, "destroy") - #persisted.live_resource = resource persisted.state = Harp::Resources::AvailableResource::DESTROYED remember(persisted) persisted.save diff --git a/lib/harp-runtime/resources/compute/elastic_ip.rb b/lib/harp-runtime/resources/compute/elastic_ip.rb index ecc7cf0..c475e73 100644 --- a/lib/harp-runtime/resources/compute/elastic_ip.rb +++ b/lib/harp-runtime/resources/compute/elastic_ip.rb @@ -19,6 +19,11 @@ class ElasticIP < AvailableResource attribute :network_interface_id, :aliases => 'networkInterfaceId' attribute :network_interface_owner_id, :aliases => 'networkInterfaceOwnerId' attribute :domain + + attribute :description + attribute :type + attribute :live_resource + attribute :state register_resource :elastic_ip, RESOURCES_COMPUTE diff --git a/spec/compute_cloud_spec.rb b/spec/compute_cloud_spec.rb index fc273d6..36f0869 100644 --- a/spec/compute_cloud_spec.rb +++ b/spec/compute_cloud_spec.rb @@ -70,25 +70,25 @@ state = mutator.get_state("test_inst1", instance_resource) expect(state).to eq("shutting-down") end - # it "destroys an elastic ip" do -# result = mutator.destroy("test_eip1", elastic_ip_resource) -# -# expect(result.class).to eq(ElasticIP) -# expect(result.name).to eq("test_eip1") -# expect(result.state).to eq(Harp::Resources::AvailableResource::DESTROYED) -# end -# it "destroys a security group" do -# result = mutator.destroy("test_sg1", security_group_resource) -# -# expect(result.class).to eq(SecurityGroup) -# expect(result.name).to eq("test_sg1") -# expect(result.state).to eq(Harp::Resources::AvailableResource::DESTROYED) -# end -# it "destroys a volume" do -# result = mutator.destroy("test_vol1", volume_resource) -# -# expect(result.class).to eq(Volume) -# expect(result.name).to eq("test_vol1") -# expect(result.state).to eq(Harp::Resources::AvailableResource::DESTROYED) -# end + it "destroys an elastic ip" do + created = mutator.create("test_eip1", elastic_ip_resource) + result = mutator.destroy("test_eip1", elastic_ip_resource) + expect(result.class).to eq(ElasticIP) + expect(result.name).to eq("test_eip1") + expect(result.state).to eq(Harp::Resources::AvailableResource::DESTROYED) + end + it "destroys a security group" do + result = mutator.destroy("test_sg1", security_group_resource) + + expect(result.class).to eq(SecurityGroup) + expect(result.name).to eq("test_sg1") + expect(result.state).to eq(Harp::Resources::AvailableResource::DESTROYED) + end + it "destroys a volume" do + result = mutator.destroy("test_vol1", volume_resource) + + expect(result.class).to eq(Volume) + expect(result.name).to eq("test_vol1") + expect(result.state).to eq(Harp::Resources::AvailableResource::DESTROYED) + end end From c04cd93cfb885235632eb2eaecbf8d94ff4829d3 Mon Sep 17 00:00:00 2001 From: Nestor Date: Mon, 9 Dec 2013 13:43:29 -0600 Subject: [PATCH 2/8] Updated destroy method, attributes --- .../resources/autoscaling/autoscaling_group.rb | 8 +++++--- .../resources/autoscaling/launch_configuration.rb | 9 +++++---- .../resources/autoscaling/scaling_policy.rb | 8 +++++--- .../resources/beanstalk/elastic_application.rb | 8 +++++--- .../resources/beanstalk/elastic_environment.rb | 10 ++++++---- 5 files changed, 26 insertions(+), 17 deletions(-) diff --git a/lib/harp-runtime/resources/autoscaling/autoscaling_group.rb b/lib/harp-runtime/resources/autoscaling/autoscaling_group.rb index a133bb1..cbc2fa8 100644 --- a/lib/harp-runtime/resources/autoscaling/autoscaling_group.rb +++ b/lib/harp-runtime/resources/autoscaling/autoscaling_group.rb @@ -29,6 +29,9 @@ class AutoScalingGroup < AvailableResource attribute :tags, :aliases => 'Tags' attribute :termination_policies, :aliases => 'TerminationPolicies' attribute :vpc_zone_identifier, :aliases => 'VPCZoneIdentifier' + attribute :description + attribute :type + attribute :live_resource register_resource :auto_scaling_group, RESOURCES_AUTOSCALE @@ -48,9 +51,8 @@ def create(service) end def destroy(service) - destroy_attribs = self.attribs - if @id - group = service.groups.destroy(destroy_attribs) + if id + group = service.groups.destroy(id) else puts "No ID set, cannot delete." end diff --git a/lib/harp-runtime/resources/autoscaling/launch_configuration.rb b/lib/harp-runtime/resources/autoscaling/launch_configuration.rb index 7e8655d..13cf422 100644 --- a/lib/harp-runtime/resources/autoscaling/launch_configuration.rb +++ b/lib/harp-runtime/resources/autoscaling/launch_configuration.rb @@ -26,7 +26,9 @@ class LaunchConfiguration < AvailableResource attribute :security_groups, :aliases => 'SecurityGroups' attribute :user_data, :aliases => 'UserData' attribute :spot_price, :aliases => 'SpotPrice' - + attribute :description + attribute :type + attribute :live_resource register_resource :launch_configuration, RESOURCES_AUTOSCALE @@ -45,9 +47,8 @@ def create(service) end def destroy(service) - destroy_attribs = self.attribs - if @id - configuration = service.configurations.destroy(destroy_attribs) + if id + configuration = service.configurations.destroy(id) else puts "No ID set, cannot delete." end diff --git a/lib/harp-runtime/resources/autoscaling/scaling_policy.rb b/lib/harp-runtime/resources/autoscaling/scaling_policy.rb index c002743..69e3d5b 100644 --- a/lib/harp-runtime/resources/autoscaling/scaling_policy.rb +++ b/lib/harp-runtime/resources/autoscaling/scaling_policy.rb @@ -18,6 +18,9 @@ class ScalingPolicy < AvailableResource attribute :cooldown, :aliases => 'Cooldown' attribute :min_adjustment_step, :aliases => 'MinAdjustmentStep' attribute :scaling_adjustment, :aliases => 'ScalingAdjustment' + attribute :description + attribute :type + attribute :live_resource register_resource :scaling_policy, RESOURCES_AUTOSCALE @@ -36,9 +39,8 @@ def create(service) end def destroy(service) - destroy_attribs = self.attribs - if @id - policy = service.policies.destroy(destroy_attribs) + if id + policy = service.policies.destroy(id) else puts "No ID set, cannot delete." end diff --git a/lib/harp-runtime/resources/beanstalk/elastic_application.rb b/lib/harp-runtime/resources/beanstalk/elastic_application.rb index 2a93e47..021936b 100644 --- a/lib/harp-runtime/resources/beanstalk/elastic_application.rb +++ b/lib/harp-runtime/resources/beanstalk/elastic_application.rb @@ -17,6 +17,9 @@ class ElasticApplication < AvailableResource attribute :updated_at, :aliases => 'DateUpdated' attribute :description, :aliases => 'Description' attribute :version_names, :aliases => 'Versions' + attribute :description + attribute :type + attribute :live_resource register_resource :elastic_application, RESOURCES_BEANSTALK @@ -41,9 +44,8 @@ def create(service) end def destroy(service) - destroy_attribs = self.attribs - if @id - application = service.applications.destroy(destroy_attribs) + if id + application = service.applications.destroy(id) else puts "No ID set, cannot delete." end diff --git a/lib/harp-runtime/resources/beanstalk/elastic_environment.rb b/lib/harp-runtime/resources/beanstalk/elastic_environment.rb index 8b9d4d5..992a66d 100644 --- a/lib/harp-runtime/resources/beanstalk/elastic_environment.rb +++ b/lib/harp-runtime/resources/beanstalk/elastic_environment.rb @@ -29,7 +29,10 @@ class ElasticEnvironment < AvailableResource attribute :version_label, :aliases => 'VersionLabel' attribute :option_settings, :aliases => 'OptionSettings' attribute :options_to_remove, :aliases => 'OptionsToRemove' - + attribute :description + attribute :type + attribute :live_resource + register_resource :elastic_environment, RESOURCES_BEANSTALK # Only keeping a few properties, simplest define keeps. @@ -47,9 +50,8 @@ def create(service) end def destroy(service) - destroy_attribs = self.attribs - if @id - environment = service.environments.destroy(destroy_attribs) + if id + environment = service.environments.destroy(id) else puts "No ID set, cannot delete." end From b32456366cca4f25c8cd3cbc06838a70ad93666a Mon Sep 17 00:00:00 2001 From: Nestor Date: Mon, 9 Dec 2013 14:51:48 -0600 Subject: [PATCH 3/8] Added destroy specs for autoscaling --- .../autoscaling/autoscaling_group.rb | 1 + .../autoscaling/launch_configuration.rb | 1 + .../resources/autoscaling/scaling_policy.rb | 3 +- spec/autoscaling_cloud_spec.rb | 32 ++++++++++++++++++- 4 files changed, 35 insertions(+), 2 deletions(-) diff --git a/lib/harp-runtime/resources/autoscaling/autoscaling_group.rb b/lib/harp-runtime/resources/autoscaling/autoscaling_group.rb index cbc2fa8..611364d 100644 --- a/lib/harp-runtime/resources/autoscaling/autoscaling_group.rb +++ b/lib/harp-runtime/resources/autoscaling/autoscaling_group.rb @@ -30,6 +30,7 @@ class AutoScalingGroup < AvailableResource attribute :termination_policies, :aliases => 'TerminationPolicies' attribute :vpc_zone_identifier, :aliases => 'VPCZoneIdentifier' attribute :description + attribute :state attribute :type attribute :live_resource diff --git a/lib/harp-runtime/resources/autoscaling/launch_configuration.rb b/lib/harp-runtime/resources/autoscaling/launch_configuration.rb index 13cf422..fe96b97 100644 --- a/lib/harp-runtime/resources/autoscaling/launch_configuration.rb +++ b/lib/harp-runtime/resources/autoscaling/launch_configuration.rb @@ -27,6 +27,7 @@ class LaunchConfiguration < AvailableResource attribute :user_data, :aliases => 'UserData' attribute :spot_price, :aliases => 'SpotPrice' attribute :description + attribute :state attribute :type attribute :live_resource diff --git a/lib/harp-runtime/resources/autoscaling/scaling_policy.rb b/lib/harp-runtime/resources/autoscaling/scaling_policy.rb index 69e3d5b..4d7c5cc 100644 --- a/lib/harp-runtime/resources/autoscaling/scaling_policy.rb +++ b/lib/harp-runtime/resources/autoscaling/scaling_policy.rb @@ -19,6 +19,7 @@ class ScalingPolicy < AvailableResource attribute :min_adjustment_step, :aliases => 'MinAdjustmentStep' attribute :scaling_adjustment, :aliases => 'ScalingAdjustment' attribute :description + attribute :state attribute :type attribute :live_resource @@ -40,7 +41,7 @@ def create(service) def destroy(service) if id - policy = service.policies.destroy(id) + policy = service.delete_policy(auto_scaling_group_name, id) else puts "No ID set, cannot delete." end diff --git a/spec/autoscaling_cloud_spec.rb b/spec/autoscaling_cloud_spec.rb index 3f44be3..bbed7ae 100644 --- a/spec/autoscaling_cloud_spec.rb +++ b/spec/autoscaling_cloud_spec.rb @@ -47,4 +47,34 @@ expect(result.class).to eq(ScalingPolicy) expect(result.name).to eq("test_as_policy1") end -end \ No newline at end of file +end + +describe Harp::Cloud::CloudMutator, "#destroy" do + include_context "when have mutator" + it "destroys launch configuration" do + launch_config_resource["id"] = "testLC2" + created = mutator.create("test_lc2", launch_config_resource) + result = mutator.destroy("test_lc2", launch_config_resource) + expect(result.class).to eq(LaunchConfiguration) + expect(result.name).to eq("test_lc2") + expect(result.state).to eq(Harp::Resources::AvailableResource::DESTROYED) + end + + it "destroys AS group" do + autoscaling_group_resource["id"] = "testASG2" + created = mutator.create("test_as_group2", autoscaling_group_resource) + result = mutator.destroy("test_as_group2", autoscaling_group_resource) + expect(result.class).to eq(AutoScalingGroup) + expect(result.name).to eq("test_as_group2") + expect(result.state).to eq(Harp::Resources::AvailableResource::DESTROYED) + end + + it "destroys AutoScaling Policy" do + autoscaling_policy_resource["id"] = "testScalingPolicy2" + created = mutator.create("test_as_policy2", autoscaling_policy_resource) + result = mutator.destroy("test_as_policy2", autoscaling_policy_resource) + expect(result.class).to eq(ScalingPolicy) + expect(result.name).to eq("test_as_policy2") + expect(result.state).to eq(Harp::Resources::AvailableResource::DESTROYED) + end +end From 3d03c3909ec5167d5697ccf974729bd6d8fce612 Mon Sep 17 00:00:00 2001 From: Dev Mohanty Date: Mon, 9 Dec 2013 15:11:41 -0600 Subject: [PATCH 4/8] added destroy to resources --- .../resources/compute/security_group.rb | 6 +++- lib/harp-runtime/resources/compute/volume.rb | 4 +++ .../elastic_load_balancing/load_balancer.rb | 11 ++++-- lib/harp-runtime/resources/rds/db_instance.rb | 9 +++-- .../resources/rds/db_security_group.rb | 9 +++-- spec/compute_cloud_spec.rb | 14 +++++--- spec/elastic_load_balancing_cloud_spec.rb | 11 ++++++ spec/rds_cloud_spec.rb | 35 ++++++++++--------- 8 files changed, 68 insertions(+), 31 deletions(-) diff --git a/lib/harp-runtime/resources/compute/security_group.rb b/lib/harp-runtime/resources/compute/security_group.rb index aa93e65..f01bc8a 100644 --- a/lib/harp-runtime/resources/compute/security_group.rb +++ b/lib/harp-runtime/resources/compute/security_group.rb @@ -16,6 +16,10 @@ class SecurityGroup < AvailableResource attribute :ip_permissions_egress, :aliases => 'ipPermissionsEgress' attribute :owner_id, :aliases => 'ownerId' attribute :vpc_id, :aliases => 'vpcId' + + attribute :type + attribute :live_resource + attribute :state register_resource :security_group, RESOURCES_COMPUTE @@ -46,7 +50,7 @@ def create(service) def destroy(service) if id - security_groups = service.security_groups.destroy(id) + security_groups = service.security_groups.destroy(name) else puts "No ID set, cannot delete." end diff --git a/lib/harp-runtime/resources/compute/volume.rb b/lib/harp-runtime/resources/compute/volume.rb index 563d159..dce0c16 100644 --- a/lib/harp-runtime/resources/compute/volume.rb +++ b/lib/harp-runtime/resources/compute/volume.rb @@ -23,6 +23,10 @@ class Volume < AvailableResource attribute :state, :aliases => 'status' attribute :tags, :aliases => 'tagSet' attribute :type, :aliases => 'volumeType' + + attribute :description + attribute :live_resource + attribute :state register_resource :volume, RESOURCES_COMPUTE diff --git a/lib/harp-runtime/resources/elastic_load_balancing/load_balancer.rb b/lib/harp-runtime/resources/elastic_load_balancing/load_balancer.rb index 5012dfb..de7eb66 100644 --- a/lib/harp-runtime/resources/elastic_load_balancing/load_balancer.rb +++ b/lib/harp-runtime/resources/elastic_load_balancing/load_balancer.rb @@ -23,6 +23,11 @@ class LoadBalancer < AvailableResource attribute :scheme, :aliases => 'Scheme' attribute :vpc_id, :aliases => 'VPCId' attribute :listeners + + attribute :description + attribute :type + attribute :live_resource + attribute :state register_resource :load_balancer, RESOURCES_ELASTIC_LOAD_BALANCING @@ -45,9 +50,9 @@ def create(service) end def destroy(service) - destroy_attribs = self.attribs - if @id - load_balancer = service.load_balancers.destroy(destroy_attribs) + id + if id + load_balancer = service.load_balancers.destroy(id) else puts "No ID set, cannot delete." end diff --git a/lib/harp-runtime/resources/rds/db_instance.rb b/lib/harp-runtime/resources/rds/db_instance.rb index 18d082b..c786270 100644 --- a/lib/harp-runtime/resources/rds/db_instance.rb +++ b/lib/harp-runtime/resources/rds/db_instance.rb @@ -36,6 +36,10 @@ class DBInstance < AvailableResource attribute :publicly_accessible, :aliases => 'PubliclyAccessible' attribute :vpc_security_groups, :aliases => 'VpcSecurityGroups' attribute :password + + attribute :description + attribute :type + attribute :live_resource attr_accessor :parameter_group_name, :security_group_names, :port @@ -60,9 +64,8 @@ def create(service) end def destroy(service) - destroy_attribs = self.attribs - if @id - instance = service.servers.destroy(destroy_attribs) + if id + instance = service.servers.destroy(id) else puts "No ID set, cannot delete." end diff --git a/lib/harp-runtime/resources/rds/db_security_group.rb b/lib/harp-runtime/resources/rds/db_security_group.rb index a8a94c1..fbb45e0 100644 --- a/lib/harp-runtime/resources/rds/db_security_group.rb +++ b/lib/harp-runtime/resources/rds/db_security_group.rb @@ -14,6 +14,10 @@ class DBSecurityGroup < AvailableResource attribute :ec2_security_groups, :aliases => 'EC2SecurityGroups' attribute :ip_ranges, :aliases => 'IPRanges' attribute :owner_id, :aliases => 'OwnerId' + + attribute :type + attribute :live_resource + attribute :state register_resource :db_security_group, RESOURCES_RDS @@ -36,9 +40,8 @@ def create(service) end def destroy(service) - destroy_attribs = self.attribs - if @id - security_group = service.security_groups.destroy(destroy_attribs) + if id + security_group = service.security_groups.destroy(id) else puts "No ID set, cannot delete." end diff --git a/spec/compute_cloud_spec.rb b/spec/compute_cloud_spec.rb index 36f0869..c4711e3 100644 --- a/spec/compute_cloud_spec.rb +++ b/spec/compute_cloud_spec.rb @@ -20,6 +20,12 @@ "description" => "A web security group" } +security_group_resource_2 = { + "type" => "Std::SecurityGroup", + "name" => "web-security-group-2", + "description" => "A web security group 2" +} + volume_resource = { "type" => "Std::Volume", "availability_zone" => "us-east-1", @@ -78,15 +84,15 @@ expect(result.state).to eq(Harp::Resources::AvailableResource::DESTROYED) end it "destroys a security group" do - result = mutator.destroy("test_sg1", security_group_resource) - + created = mutator.create("test_sg2", security_group_resource_2) + result = mutator.destroy("test_sg2", security_group_resource_2) expect(result.class).to eq(SecurityGroup) - expect(result.name).to eq("test_sg1") + expect(result.name).to eq("test_sg2") expect(result.state).to eq(Harp::Resources::AvailableResource::DESTROYED) end it "destroys a volume" do + created = mutator.create("test_vol1", volume_resource) result = mutator.destroy("test_vol1", volume_resource) - expect(result.class).to eq(Volume) expect(result.name).to eq("test_vol1") expect(result.state).to eq(Harp::Resources::AvailableResource::DESTROYED) diff --git a/spec/elastic_load_balancing_cloud_spec.rb b/spec/elastic_load_balancing_cloud_spec.rb index 7f0f93c..50d49bc 100644 --- a/spec/elastic_load_balancing_cloud_spec.rb +++ b/spec/elastic_load_balancing_cloud_spec.rb @@ -16,3 +16,14 @@ expect(result.name).to eq("test_lb_lb1") end end + +describe Harp::Cloud::CloudMutator, "#destroy" do + include_context "when have mutator" + it "destroys a loadbalancer" do + created = mutator.create("test_lb_lb2", lb_load_balancer_resource) + result = mutator.destroy("test_lb_lb2", lb_load_balancer_resource) + expect(result.class).to eq(LoadBalancer) + expect(result.name).to eq("test_lb_lb2") + expect(result.state).to eq(Harp::Resources::AvailableResource::DESTROYED) + end +end diff --git a/spec/rds_cloud_spec.rb b/spec/rds_cloud_spec.rb index b440c0f..5b2bd5e 100644 --- a/spec/rds_cloud_spec.rb +++ b/spec/rds_cloud_spec.rb @@ -19,31 +19,32 @@ describe Harp::Cloud::CloudMutator, "#create" do include_context "when have mutator" it "creates a db security group" do - # context = {} -# context[:cloud_type] = :aws # for the moment, assume AWS cloud -# context[:mock] = true -# context[:debug] = true -# context[:access] = "test" -# context[:secret] = "test" - #mutator = Harp::Cloud::CloudMutator.new(context) - result = mutator.create("test_db_sg1", db_security_group_resource) expect(result.class).to eq(DBSecurityGroup) expect(result.name).to eq("test_db_sg1") - expect(result.description).to eq("A web db security group") end it "creates a db instance" do - # context = {} -# context[:cloud_type] = :aws # for the moment, assume AWS cloud -# context[:mock] = true -# context[:debug] = true -# context[:access] = "test" -# context[:secret] = "test" - #mutator = Harp::Cloud::CloudMutator.new(context) - result = mutator.create("test_db_db1", db_instance_resource) expect(result.class).to eq(DBInstance) expect(result.name).to eq("test_db_db1") end +end + +describe Harp::Cloud::CloudMutator, "#destroy" do + include_context "when have mutator" + it "destroys a db security group" do + created = mutator.create("test_db_sg2", db_security_group_resource) + result = mutator.destroy("test_db_sg2", db_security_group_resource) + expect(result.class).to eq(DBSecurityGroup) + expect(result.name).to eq("test_db_sg2") + expect(result.state).to eq(Harp::Resources::AvailableResource::DESTROYED) + end + it "destroys a db instance" do + created = mutator.create("test_db_db2", db_instance_resource) + result = mutator.destroy("test_db_db2", db_instance_resource) + expect(result.class).to eq(DBInstance) + expect(result.name).to eq("test_db_db2") + expect(result.state).to eq(Harp::Resources::AvailableResource::DESTROYED) + end end \ No newline at end of file From 756425970b5bf559ae1d5b5f8b70ecc9b2c8b1fa Mon Sep 17 00:00:00 2001 From: Nestor Date: Mon, 9 Dec 2013 15:12:55 -0600 Subject: [PATCH 5/8] Updated beanstalk attributes --- lib/harp-runtime/resources/beanstalk/elastic_application.rb | 1 + lib/harp-runtime/resources/beanstalk/elastic_environment.rb | 1 + 2 files changed, 2 insertions(+) diff --git a/lib/harp-runtime/resources/beanstalk/elastic_application.rb b/lib/harp-runtime/resources/beanstalk/elastic_application.rb index 021936b..04de766 100644 --- a/lib/harp-runtime/resources/beanstalk/elastic_application.rb +++ b/lib/harp-runtime/resources/beanstalk/elastic_application.rb @@ -18,6 +18,7 @@ class ElasticApplication < AvailableResource attribute :description, :aliases => 'Description' attribute :version_names, :aliases => 'Versions' attribute :description + attribute :state attribute :type attribute :live_resource diff --git a/lib/harp-runtime/resources/beanstalk/elastic_environment.rb b/lib/harp-runtime/resources/beanstalk/elastic_environment.rb index 992a66d..144b115 100644 --- a/lib/harp-runtime/resources/beanstalk/elastic_environment.rb +++ b/lib/harp-runtime/resources/beanstalk/elastic_environment.rb @@ -30,6 +30,7 @@ class ElasticEnvironment < AvailableResource attribute :option_settings, :aliases => 'OptionSettings' attribute :options_to_remove, :aliases => 'OptionsToRemove' attribute :description + attribute :state attribute :type attribute :live_resource From ff016520c2453a7cc10ae73377ec10086a9076e2 Mon Sep 17 00:00:00 2001 From: Nestor Date: Mon, 9 Dec 2013 15:52:35 -0600 Subject: [PATCH 6/8] reduced complexity --- spec/autoscaling_cloud_spec.rb | 3 --- spec/compute_cloud_spec.rb | 9 --------- spec/elastic_load_balancing_cloud_spec.rb | 1 - spec/rds_cloud_spec.rb | 2 -- 4 files changed, 15 deletions(-) diff --git a/spec/autoscaling_cloud_spec.rb b/spec/autoscaling_cloud_spec.rb index bbed7ae..14926d0 100644 --- a/spec/autoscaling_cloud_spec.rb +++ b/spec/autoscaling_cloud_spec.rb @@ -57,7 +57,6 @@ result = mutator.destroy("test_lc2", launch_config_resource) expect(result.class).to eq(LaunchConfiguration) expect(result.name).to eq("test_lc2") - expect(result.state).to eq(Harp::Resources::AvailableResource::DESTROYED) end it "destroys AS group" do @@ -66,7 +65,6 @@ result = mutator.destroy("test_as_group2", autoscaling_group_resource) expect(result.class).to eq(AutoScalingGroup) expect(result.name).to eq("test_as_group2") - expect(result.state).to eq(Harp::Resources::AvailableResource::DESTROYED) end it "destroys AutoScaling Policy" do @@ -75,6 +73,5 @@ result = mutator.destroy("test_as_policy2", autoscaling_policy_resource) expect(result.class).to eq(ScalingPolicy) expect(result.name).to eq("test_as_policy2") - expect(result.state).to eq(Harp::Resources::AvailableResource::DESTROYED) end end diff --git a/spec/compute_cloud_spec.rb b/spec/compute_cloud_spec.rb index c4711e3..43d84d4 100644 --- a/spec/compute_cloud_spec.rb +++ b/spec/compute_cloud_spec.rb @@ -45,9 +45,6 @@ result = mutator.create("test_inst1", instance_resource) expect(result.class).to eq(ComputeInstance) expect(result.name).to eq("test_inst1") - expect(result.state).to eq(Harp::Resources::AvailableResource::CREATED) - state = mutator.get_state("test_inst1", instance_resource) - expect(state).to eq("running") end it "creates a security group" do @@ -72,29 +69,23 @@ result = mutator.destroy("test_inst1", instance_resource) expect(result.class).to eq(ComputeInstance) expect(result.name).to eq("test_inst1") - expect(result.state).to eq(Harp::Resources::AvailableResource::DESTROYED) - state = mutator.get_state("test_inst1", instance_resource) - expect(state).to eq("shutting-down") end it "destroys an elastic ip" do created = mutator.create("test_eip1", elastic_ip_resource) result = mutator.destroy("test_eip1", elastic_ip_resource) expect(result.class).to eq(ElasticIP) expect(result.name).to eq("test_eip1") - expect(result.state).to eq(Harp::Resources::AvailableResource::DESTROYED) end it "destroys a security group" do created = mutator.create("test_sg2", security_group_resource_2) result = mutator.destroy("test_sg2", security_group_resource_2) expect(result.class).to eq(SecurityGroup) expect(result.name).to eq("test_sg2") - expect(result.state).to eq(Harp::Resources::AvailableResource::DESTROYED) end it "destroys a volume" do created = mutator.create("test_vol1", volume_resource) result = mutator.destroy("test_vol1", volume_resource) expect(result.class).to eq(Volume) expect(result.name).to eq("test_vol1") - expect(result.state).to eq(Harp::Resources::AvailableResource::DESTROYED) end end diff --git a/spec/elastic_load_balancing_cloud_spec.rb b/spec/elastic_load_balancing_cloud_spec.rb index 50d49bc..ce37d09 100644 --- a/spec/elastic_load_balancing_cloud_spec.rb +++ b/spec/elastic_load_balancing_cloud_spec.rb @@ -24,6 +24,5 @@ result = mutator.destroy("test_lb_lb2", lb_load_balancer_resource) expect(result.class).to eq(LoadBalancer) expect(result.name).to eq("test_lb_lb2") - expect(result.state).to eq(Harp::Resources::AvailableResource::DESTROYED) end end diff --git a/spec/rds_cloud_spec.rb b/spec/rds_cloud_spec.rb index 5b2bd5e..c74aef7 100644 --- a/spec/rds_cloud_spec.rb +++ b/spec/rds_cloud_spec.rb @@ -38,13 +38,11 @@ result = mutator.destroy("test_db_sg2", db_security_group_resource) expect(result.class).to eq(DBSecurityGroup) expect(result.name).to eq("test_db_sg2") - expect(result.state).to eq(Harp::Resources::AvailableResource::DESTROYED) end it "destroys a db instance" do created = mutator.create("test_db_db2", db_instance_resource) result = mutator.destroy("test_db_db2", db_instance_resource) expect(result.class).to eq(DBInstance) expect(result.name).to eq("test_db_db2") - expect(result.state).to eq(Harp::Resources::AvailableResource::DESTROYED) end end \ No newline at end of file From af3b80f7527498575283e49b6fa86e3a267777b4 Mon Sep 17 00:00:00 2001 From: Dev Mohanty Date: Mon, 9 Dec 2013 19:52:59 -0600 Subject: [PATCH 7/8] fixed associate/dissassociate ip address --- .../resources/compute/elastic_ip.rb | 6 ++--- .../compute/elastic_ip_association.rb | 21 +++++++++------- spec/compute_cloud_spec.rb | 24 ++++++++++++++----- 3 files changed, 34 insertions(+), 17 deletions(-) diff --git a/lib/harp-runtime/resources/compute/elastic_ip.rb b/lib/harp-runtime/resources/compute/elastic_ip.rb index ed18778..f5ce7a2 100644 --- a/lib/harp-runtime/resources/compute/elastic_ip.rb +++ b/lib/harp-runtime/resources/compute/elastic_ip.rb @@ -10,7 +10,7 @@ class ElasticIP < AvailableResource include Harp::Resources - attribute :id, :aliases => 'allocation_id' + attribute :id attribute :public_ip_address attribute :public_ip, :aliases => 'publicIp' attribute :server_id, :aliases => 'instanceId' @@ -29,7 +29,7 @@ class ElasticIP < AvailableResource # Return persistable attributes with only desired attributes to keep def keep(attribs) attribs[:public_ip_address] = attribs[:public_ip] - attribs[:id] = attribs[:allocation_id] + attribs[:id] = attribs[:public_ip] super end @@ -42,7 +42,7 @@ def self.persistent_type() def create(service) create_attribs = self.attribs address = service.addresses.create(create_attribs) - address.allocation_id = SecureRandom.urlsafe_base64(16) + @id = address.public_ip return address end diff --git a/lib/harp-runtime/resources/compute/elastic_ip_association.rb b/lib/harp-runtime/resources/compute/elastic_ip_association.rb index 7573c00..ee2b4f4 100644 --- a/lib/harp-runtime/resources/compute/elastic_ip_association.rb +++ b/lib/harp-runtime/resources/compute/elastic_ip_association.rb @@ -15,6 +15,12 @@ class ElasticIPAssociation < AvailableResource attribute :server_id, :aliases => 'instanceId' attribute :network_interface_id, :aliases => 'networkInterfaceId' attribute :network_interface_owner_id, :aliases => 'networkInterfaceOwnerId' + attribute :public_ip + + attribute :description + attribute :type + attribute :live_resource + attribute :state register_resource :elastic_ip_association, RESOURCES_COMPUTE @@ -34,17 +40,16 @@ def self.persistent_type() def create(service) - create_attribs = self.attribs - address = service.addresses.create(create_attribs) - address.association_id = SecureRandom.urlsafe_base64(16) - return address + create_attribs = self.attribs[:attributes] + address = service.associate_address(create_attribs[:server_id],create_attribs[:public_ip],nil,nil) + #id = address.association_id + return self end def destroy(service) - destroy_attribs = self.attribs - binding.pry - if @id - address = service.addresses.destroy(destroy_attribs) + public_ip = self.attribs[:attributes][:public_ip] + if public_ip + address = service.disassociate_address(public_ip) else puts "No ID set, cannot delete." end diff --git a/spec/compute_cloud_spec.rb b/spec/compute_cloud_spec.rb index 0bd1324..9355bb4 100644 --- a/spec/compute_cloud_spec.rb +++ b/spec/compute_cloud_spec.rb @@ -27,8 +27,7 @@ } elastic_ip_resource = { - "type" => "Std::ElasticIP", - "public_ip" => "123.4.5.6" + "type" => "Std::ElasticIP" } eip_association_resource = { @@ -69,7 +68,7 @@ eip_for_asso["server_id"] = inst.instance_variable_get(:@id) eip = mutator.create("eip_for_asso", eip_for_asso) - eip_association_resource["allocation_id"] = eip.instance_variable_get(:@id) + eip_association_resource["public_ip"] = eip.instance_variable_get(:@id) eip_association_resource["server_id"] = inst.instance_variable_get(:@id) result = mutator.create("test_eip_asso", eip_association_resource) @@ -108,10 +107,23 @@ expect(result.name).to eq("test_inst1") end it "destroys an elastic ip" do - created = mutator.create("test_eip1", elastic_ip_resource) - result = mutator.destroy("test_eip1", elastic_ip_resource) + created = mutator.create("test_eip2", elastic_ip_resource) + result = mutator.destroy("test_eip2", elastic_ip_resource) expect(result.class).to eq(ElasticIP) - expect(result.name).to eq("test_eip1") + expect(result.name).to eq("test_eip2") + end + it "destroys an elastic ip association" do + inst = mutator.create("ins_for_asso", ins_for_asso) + eip_for_asso["server_id"] = inst.instance_variable_get(:@id) + + eip = mutator.create("eip_for_asso", eip_for_asso) + eip_association_resource["public_ip"] = eip.instance_variable_get(:@id) + eip_association_resource["server_id"] = inst.instance_variable_get(:@id) + + created = mutator.create("test_eip_asso", eip_association_resource) + result = mutator.destroy("test_eip_asso", eip_association_resource) + expect(result.name).to eq("test_eip_asso") + expect(result.class).to eq(ElasticIPAssociation) end it "destroys a security group" do created = mutator.create("test_sg2", security_group_resource_2) From ff04fa8c720bfc29009775a79d6a6b90db0ec706 Mon Sep 17 00:00:00 2001 From: Nestor Date: Mon, 9 Dec 2013 20:02:57 -0600 Subject: [PATCH 8/8] Lowered complexity --- spec/compute_cloud_spec.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/spec/compute_cloud_spec.rb b/spec/compute_cloud_spec.rb index 9355bb4..a99f67b 100644 --- a/spec/compute_cloud_spec.rb +++ b/spec/compute_cloud_spec.rb @@ -74,7 +74,6 @@ result = mutator.create("test_eip_asso", eip_association_resource) expect(result.class).to eq(ElasticIPAssociation) expect(result.name).to eq("test_eip_asso") - expect(result.state).to eq(Harp::Resources::AvailableResource::CREATED) end it "creates a cloud instance" do