Files
ubicloud/views/postgres/create.erb
Maciek Sarnowicz 9e454cf629 Adding UI support for Burstables
Adding a new selector for `family` to create pages and using it to list VM sizes specific to each family. The visibility of Burstable family, or any other in the future that requires slics support, is guarded by the project feature flag.

Also updated the logic in generate_vm_options to fully use what is set in Options::VmSize and Options::PostgresSize structures. This should make it easier to add more Vm sizes in the future.
2025-02-24 16:45:25 -08:00

44 lines
2.3 KiB
Plaintext

<%
@page_title, logo = if @flavor == PostgresResource::Flavor::PARADEDB
["Create ParadeDB PostgreSQL Database", "logo-paradedb.png"]
elsif @flavor == PostgresResource::Flavor::LANTERN
["Create Lantern PostgreSQL Database", "logo-lantern.png"]
else
["Create PostgreSQL Database", nil]
end
%>
<%== 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) %>