Files
ubicloud/views/postgres/create.erb
Jeremy Evans 7c8bf5e9b4 Use handle_validation_failure in postgres create route
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.
2025-08-08 01:52:14 +09:00

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) %>