Also, treat unrecognized flavor as standard flavor, instead of if trying to handle it as an error. This is only on the create view, actual submissions will raise an error for invalid flavor. You can only get the invalid flavor by manually changing the URL, so there doesn't seem to be a need to make it an error, and treating it as an error complicates the logic.
46 lines
2.7 KiB
Plaintext
46 lines
2.7 KiB
Plaintext
<%
|
|
@flavor = typecast_params.nonempty_str("flavor", PostgresResource::Flavor::STANDARD)
|
|
@flavor = PostgresResource::Flavor::STANDARD unless Option::POSTGRES_FLAVOR_OPTIONS.any? { |k,| k == @flavor }
|
|
@prices = fetch_location_based_prices("PostgresVCpu", "PostgresStorage")
|
|
@has_valid_payment_method = @project.has_valid_payment_method?
|
|
@enabled_postgres_sizes = Option::VmSizes.select { @project.quota_available?("PostgresVCpu", it.vcpus) }.map(&:name)
|
|
@option_tree, @option_parents = generate_postgres_options(flavor: @flavor)
|
|
|
|
@page_title, logo = postgres_flavors[@flavor].yield_self { ["Create #{it.title}", "logo-#{it.brand}.png"] }
|
|
logo = nil if @flavor == PostgresResource::Flavor::STANDARD
|
|
%>
|
|
|
|
<%== render("components/billing_warning") %>
|
|
|
|
<%== part(
|
|
"components/page_header",
|
|
breadcrumbs: [
|
|
%w[Projects /project],
|
|
[@project_data[:name], @project_data[:path]],
|
|
["PostgreSQL Databases", "#{@project_data[:path]}/postgres"],
|
|
%w[Create #]
|
|
],
|
|
right_items: [logo ? "<img src=\"/#{logo}\" class=\"h-6 object-contain\"/>" : nil]
|
|
) %>
|
|
|
|
<%
|
|
form_elements = [
|
|
{name: "flavor", type: "hidden", value: @flavor},
|
|
{name: "name", type: "text", label: "Name", required: "required", placeholder: "Enter name", opening_tag: "<div class='sm:col-span-3'>"},
|
|
{name: "location", type: "radio_small_cards", label: "Location", required: "required", content_generator: ContentGenerator::Postgres.method(:location)},
|
|
{name: "family", type: "radio_small_cards", label: "Server family", required: "required", content_generator: ContentGenerator::Postgres.method(:family)},
|
|
{name: "size", type: "radio_small_cards", label: "Server size", required: "required", content_generator: ContentGenerator::Postgres.method(:size)},
|
|
{name: "storage_size", type: "radio_small_cards", label: "Storage size", required: "required", content_generator: ContentGenerator::Postgres.method(:storage_size)},
|
|
{name: "version", type: "radio_small_cards", label: "Version", required: "required", content_generator: ContentGenerator::Postgres.method(:version)},
|
|
{name: "ha_type", type: "radio_small_cards", label: "High Availability", required: "required", content_generator: ContentGenerator::Postgres.method(:ha_type)},
|
|
]
|
|
|
|
if [PostgresResource::Flavor::PARADEDB, PostgresResource::Flavor::LANTERN].include?(@flavor)
|
|
form_elements << {name: "partnership_notice", type: "partnership_notice", label: "Partnership Notice", required: "required", content_generator: ContentGenerator::Postgres.method(:partnership_notice)}
|
|
end
|
|
|
|
action = "#{@project_data[:path]}/postgres"
|
|
%>
|
|
|
|
<%== part("components/form/resource_creation_form", action:, form_elements:, option_tree: @option_tree, option_parents: @option_parents) %>
|