def create @interconnection = if create_with_service_tokens? ::Network::Interconnection::Connection::CreateWithServiceTokens.call(create_with_service_tokens_params) else ::Network::Interconnection::Connection::Create.call(create_params) end if @interconnection.valid? render "interconnections/connections/show", status: :created, location: interconnection_path(@interconnection.id) else render_validation_errors(@interconnection) end end def create_params # TODO: Remove facility from create params after making metro required in swagger docs @facility = Facility.find_by_id_or(:code, params[:facility_id]) if params[:facility_id] params.required([:name, :redundancy, :type]) params[:contact_email] = current_user.email unless params.has_key?(:contact_email) params[:speed] = ::Network::Interconnection::InterconnectionPort.parse_speed(params[:speed]) if params.has_key?(:speed) permitted = [:contact_email, :description, :name, :redundancy, :speed, :facility_id, :metro_id, :metro, :type, tags: []] permitted << { vlans: [] } if advanced_shared_create_enabled? permitted << :mode if dedicated_interconnection_mode_enabled? && params[:type] == "dedicated" params .permit(*permitted) .merge( facility: @facility, metro: @metro, project: @project, organization: @organization, virtual_networks: @virtual_networks, ) end def create_with_service_tokens_params set_service_token_params # TODO: Remove VRF feature flag check after VRF is released. array_params = { tags: [], vlans: [] } array_params = array_params.merge(vrfs: []) if Feature.enabled?(Feature::VRF_ON_SHARED_CONNECTIONS, @organization) permitted = [:description, :locked, :name, :redundancy, :speed, :contact_email, :metro_id, :type, :service_token_type, array_params] normalize_params params .permit(*permitted) .merge( vrfs: @vrfs, metro: @metro, project: @project, organization: @organization, virtual_networks: @virtual_networks, ) end