From 0d1940d54923813406ac01575461058a4b7ad8d8 Mon Sep 17 00:00:00 2001 From: Varik Matevosyan Date: Thu, 21 Nov 2024 16:46:30 +0400 Subject: [PATCH] accept resource name when creating logical replica --- model/lantern/lantern_resource.rb | 4 ++-- prog/lantern/lantern_resource_nexus.rb | 2 +- routes/api/project/location/lantern.rb | 4 +++- spec/model/lantern/lantern_resource_spec.rb | 7 ++++--- spec/prog/lantern/lantern_resource_nexus_spec.rb | 4 ++-- spec/routes/api/project/location/lantern_spec.rb | 9 ++++++--- 6 files changed, 18 insertions(+), 12 deletions(-) diff --git a/model/lantern/lantern_resource.rb b/model/lantern/lantern_resource.rb index 9a3c4449e..5059a7784 100644 --- a/model/lantern/lantern_resource.rb +++ b/model/lantern/lantern_resource.rb @@ -255,7 +255,7 @@ def mark_switchover_finish representative_server.run_query("UPDATE _ldb_switchover_info SET finished_at=NOW()") end - def create_logical_replica(lantern_version: nil, extras_version: nil, minor_version: nil, pg_upgrade: nil) + def create_logical_replica(resource_name: nil, lantern_version: nil, extras_version: nil, minor_version: nil, pg_upgrade: nil) # TODO:: # 1. If new database will be created during logical replication it won't be added automatically ubid = LanternResource.generate_ubid @@ -265,7 +265,7 @@ def create_logical_replica(lantern_version: nil, extras_version: nil, minor_vers Prog::Lantern::LanternResourceNexus.assemble( project_id: project_id, location: location, - name: "#{name}-#{Time.now.to_i}", + name: resource_name || "#{name}-#{Time.now.to_i}", label: "#{label}-logical", ubid: ubid, target_vm_size: representative_server.target_vm_size, diff --git a/prog/lantern/lantern_resource_nexus.rb b/prog/lantern/lantern_resource_nexus.rb index 1e76f9eee..a25289a0d 100644 --- a/prog/lantern/lantern_resource_nexus.rb +++ b/prog/lantern/lantern_resource_nexus.rb @@ -262,7 +262,7 @@ def before_run label def finish_take_over # update display_states - lantern_resource.update(display_state: nil) + lantern_resource.update(display_state: nil, label: lantern_resource.parent.label) lantern_resource.parent.update(display_state: nil, rollback_target: lantern_resource.id) # remove fork association so parent can be deleted diff --git a/routes/api/project/location/lantern.rb b/routes/api/project/location/lantern.rb index 74c3af34a..c1c4f0894 100644 --- a/routes/api/project/location/lantern.rb +++ b/routes/api/project/location/lantern.rb @@ -165,11 +165,13 @@ class CloverApi extras_version = (r.params["extras_version"] && r.params["extras_version"].empty?) ? nil : r.params["extras_version"] minor_version = (r.params["minor_version"] && r.params["minor_version"].empty?) ? nil : r.params["minor_version"] pg_upgrade = (r.params["pg_upgrade"] && r.params["pg_upgrade"].empty?) ? nil : r.params["pg_upgrade"] + resource_name = (r.params["name"] && r.params["name"].empty?) ? nil : r.params["name"] st = pg.create_logical_replica( lantern_version: lantern_version, extras_version: extras_version, minor_version: minor_version, - pg_upgrade: pg_upgrade + pg_upgrade: pg_upgrade, + resource_name: resource_name ) replica = LanternResource[st.id] serialize(replica, :detailed) diff --git a/spec/model/lantern/lantern_resource_spec.rb b/spec/model/lantern/lantern_resource_spec.rb index db77b69b2..f4b615d71 100644 --- a/spec/model/lantern/lantern_resource_spec.rb +++ b/spec/model/lantern/lantern_resource_spec.rb @@ -286,7 +286,7 @@ logical_replication: true, lantern_version: representative_server.lantern_version, extras_version: representative_server.extras_version, - minor_version: representative_server.minor_version + minor_version: representative_server.minor_version, )) expect { lantern_resource.create_logical_replica }.not_to raise_error end @@ -308,9 +308,10 @@ logical_replication: true, lantern_version: "0.3.0", extras_version: "0.2.6", - minor_version: "1" + minor_version: "1", + name: "test" )) - expect { lantern_resource.create_logical_replica(lantern_version: "0.3.0", extras_version: "0.2.6", minor_version: "1") }.not_to raise_error + expect { lantern_resource.create_logical_replica(resource_name: "test", lantern_version: "0.3.0", extras_version: "0.2.6", minor_version: "1") }.not_to raise_error end end diff --git a/spec/prog/lantern/lantern_resource_nexus_spec.rb b/spec/prog/lantern/lantern_resource_nexus_spec.rb index f85290d58..df1a26c63 100644 --- a/spec/prog/lantern/lantern_resource_nexus_spec.rb +++ b/spec/prog/lantern/lantern_resource_nexus_spec.rb @@ -436,12 +436,12 @@ describe "#finish_take_over" do it "updates display states, and removes fork association" do - parent = instance_double(LanternResource) + parent = instance_double(LanternResource, label: "test") timeline = instance_double(LanternTimeline) expect(lantern_resource).to receive(:parent).and_return(parent).at_least(:once) - expect(lantern_resource).to receive(:update).with(display_state: nil) + expect(lantern_resource).to receive(:update).with(display_state: nil, label: parent.label) expect(parent).to receive(:update).with(display_state: nil, rollback_target: lantern_resource.id) expect(lantern_resource).to receive(:update).with(parent_id: nil) diff --git a/spec/routes/api/project/location/lantern_spec.rb b/spec/routes/api/project/location/lantern_spec.rb index a7e2e4817..a79ad80a4 100644 --- a/spec/routes/api/project/location/lantern_spec.rb +++ b/spec/routes/api/project/location/lantern_spec.rb @@ -333,10 +333,11 @@ lantern_version: nil, extras_version: nil, minor_version: nil, - pg_upgrade: nil + pg_upgrade: nil, + resource_name: nil ).and_return(instance_double(Strand, id: pg.id)) - post "/api/project/#{project.ubid}/location/#{pg.location}/lantern/instance-1/logical-replica", {lantern_version: "", extras_version: "", minor_version: "", pg_upgrade: ""} + post "/api/project/#{project.ubid}/location/#{pg.location}/lantern/instance-1/logical-replica", {lantern_version: "", extras_version: "", minor_version: "", pg_upgrade: "", name: ""} expect(last_response.status).to eq(200) expect(JSON.parse(last_response.body)["id"]).to eq(pg.id) expect(JSON.parse(last_response.body)["name"]).to eq(pg.name) @@ -351,6 +352,7 @@ lantern_version: "0.5.0", extras_version: "0.5.0", minor_version: "1", + resource_name: "test", pg_upgrade: {"lantern_version" => "0.6.0", "extras_version" => "0.6.0", "minor_version" => "1", "pg_version" => "17"} ).and_return(instance_double(Strand, id: pg.id)) @@ -358,7 +360,8 @@ lantern_version: "0.5.0", extras_version: "0.5.0", minor_version: "1", - pg_upgrade: {"lantern_version" => "0.6.0", "extras_version" => "0.6.0", "minor_version" => "1", "pg_version" => 17} + pg_upgrade: {"lantern_version" => "0.6.0", "extras_version" => "0.6.0", "minor_version" => "1", "pg_version" => 17}, + name: "test" } expect(last_response.status).to eq(200) end