Skip to content

Commit

Permalink
Add instance type to assessment
Browse files Browse the repository at this point in the history
  • Loading branch information
zacksiri committed Jun 28, 2024
1 parent 3b02639 commit 21152f8
Show file tree
Hide file tree
Showing 10 changed files with 51 additions and 25 deletions.
4 changes: 2 additions & 2 deletions lib/polar/machines.ex
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ defmodule Polar.Machines do

alias __MODULE__.Assessment

defdelegate create_assessment(version, params),
defdelegate get_or_create_assessment(version, params),
to: Assessment.Manager,
as: :create
as: :get_or_create
end
8 changes: 4 additions & 4 deletions lib/polar/machines/assessment.ex
Original file line number Diff line number Diff line change
Expand Up @@ -17,19 +17,19 @@ defmodule Polar.Machines.Assessment do
@valid_attrs ~w(
check_id
cluster_id
machine_type
instance_type
)a

@required_attrs ~w(
check_id
cluster_id
machine_type
instance_type
)a

schema "assessments" do
field :current_state, :string, default: "created"

field :machine_type, :string
field :instance_type, :string

belongs_to :check, Check
belongs_to :cluster, Cluster
Expand All @@ -44,6 +44,6 @@ defmodule Polar.Machines.Assessment do
assessment
|> cast(attrs, @valid_attrs)
|> validate_required(@required_attrs)
|> validate_inclusion(:machine_type, ["container", "vm"])
|> validate_inclusion(:instance_type, ["container", "vm"])
end
end
19 changes: 19 additions & 0 deletions lib/polar/machines/assessment/manager.ex
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,25 @@ defmodule Polar.Machines.Assessment.Manager do
alias Polar.Repo
alias Polar.Machines.Assessment

def get_or_create(version, params) do
check_id = Map.get(params, "check_id") || params.check_id
instance_type = Map.get(params, "instance_type") || params.instance_type

Assessment
|> Repo.get_by(
version_id: version.id,
check_id: check_id,
instance_type: instance_type
)
|> case do
%Assessment{} = assessment ->
assessment

nil ->
create(version, params)
end
end

def create(version, params) do
%Assessment{version_id: version.id}
|> Assessment.changeset(params)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ defmodule PolarWeb.Publish.Testing.AssessmentController do
"assessment" => assessment_params
}) do
with %Version{} = check <- Repo.get(Version, version_id),
{:ok, assessment} <- Machines.create_assessment(check, assessment_params) do
{:ok, assessment} <- Machines.get_or_create_assessment(check, assessment_params) do
assessment = Repo.preload(assessment, [:check])

conn
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
defmodule Polar.Repo.Migrations.AddInstanceTypeToAssessments do
use Ecto.Migration

def change do
alter table(:assessments) do
add :instance_type, :string, null: false
end

drop index(:assessments, [:check_id, :version_id], unique: true)
create index(:assessments, [:check_id, :version_id, :instance_type], unique: true)
end
end

This file was deleted.

5 changes: 3 additions & 2 deletions test/polar/machines/assessment/manager_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,10 @@ defmodule Polar.Machines.Assessment.ManagerTest do
describe "create assessment" do
test "successfully create assessment", %{check: check, cluster: cluster, version: version} do
assert {:ok, assessment} =
Machines.create_assessment(version, %{
Machines.get_or_create_assessment(version, %{
check_id: check.id,
cluster_id: cluster.id
cluster_id: cluster.id,
instance_type: "container"
})

assert assessment.current_state == "created"
Expand Down
5 changes: 3 additions & 2 deletions test/polar/machines/assessment/transitions_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,10 @@ defmodule Polar.Machines.Assessment.TransitionsTest do
Streams.create_version(product, valid_version_attributes(2))

{:ok, assessment} =
Machines.create_assessment(version, %{
Machines.get_or_create_assessment(version, %{
check_id: check.id,
cluster_id: cluster.id
cluster_id: cluster.id,
instance_type: "container"
})

{:ok, assessment: assessment, user: user}
Expand Down
6 changes: 5 additions & 1 deletion test/polar_web/controllers/publish/event_controller_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,11 @@ defmodule PolarWeb.Publish.EventControllerTest do
})

{:ok, assessment} =
Machines.create_assessment(version, %{check_id: check.id, cluster_id: cluster.id})
Machines.get_or_create_assessment(version, %{
check_id: check.id,
cluster_id: cluster.id,
instance_type: "container"
})

{:ok, assessment: assessment}
end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,8 @@ defmodule PolarWeb.Publish.Testing.AssessmentControllerTest do
post(conn, ~p"/publish/testing/versions/#{version.id}/assessments", %{
"assessment" => %{
"check_id" => check.id,
"cluster_id" => cluster.id
"cluster_id" => cluster.id,
"instance_type" => "container"
}
})

Expand Down

0 comments on commit 21152f8

Please sign in to comment.