Rails.application.routes.draw do
  # rubocop:disable Layout/HashAlignment
  # rubocop:disable Layout/MultilineOperationIndentation
  # default routes for each controller
  default_routes = %w[
    report_data
  ]

  # grouped routes
  adv_search_post = %w[
    adv_search_button
    adv_search_clear
    adv_search_load_choice
    adv_search_name_typed
    adv_search_toggle
    search_clear
  ]

  button_post = %w[
    button_create
    button_update
  ]

  compare_get = %w[
    compare_miq
    compare_to_csv
    compare_to_pdf
    compare_to_txt
  ]

  compare_post = %w[
    compare_cancel
    compare_choose_base
    compare_compress
    compare_miq
    compare_miq_all
    compare_miq_differences
    compare_miq_same
    compare_mode
    compare_remove
    compare_set_state
  ]

  dialog_runner_post = %w[
    dialog_field_changed
    dialog_form_button_pressed
    dynamic_checkbox_refresh
    dynamic_date_refresh
    dynamic_radio_button_refresh
    dynamic_text_box_refresh
    open_url_after_dialog
  ]

  drift_get = %w[
    drift
    drift_history
    drift_to_csv
    drift_to_pdf
    drift_to_txt
  ]

  drift_post = %w[
    drift_all
    drift_compress
    drift_differences
    drift_history
    drift_mode
    drift_same
  ]

  exp_post = %w[
    exp_button
    exp_changed
    exp_token_pressed
  ]

  ownership_post = %w[
    ownership
    ownership_update
  ]

  perf_post = %w[
    perf_chart_chooser
    perf_top_chart
  ]

  policy_post = %w[
    policy_options
    policy_show_options
    policy_sim
    policy_sim_add
    policy_sim_remove
  ]

  pre_prov_post = %w[
    pre_prov
    pre_prov_continue
  ]

  save_post = %w[
    save_default_search
  ]

  snap_post = %w[
    snap_pressed
  ]

  x_post = %w[
    x_button
    x_history
    x_search_by_name
    x_show
  ]

  controller_routes = {

    :ems_storage_dashboard      => {
      :get => %w[
        show
        aggregate_status_data
        resources_capacity_data
        aggregate_event_data
      ]
    },

    :auth_key_pair_cloud      => {
      :get  => %w[
        download_data
        download_summary_pdf
        index
        new
        protect
        show
        show_list
        tagging_edit
        download_private_key
        ownership

      ] +
        compare_get,
      :post => %w[
        button
        dynamic_checkbox_refresh
        listnav_search_selected
        ownership_update
        protect
        quick_search
        sections_field_changed
        show
        show_list
        tagging_edit
        wait_for_task
      ] +
        adv_search_post +
        compare_post +
        exp_post +
        save_post
    },

    :placement_group => {
      :get  => %w[
        show_list
        index
        show
        download_data
        download_summary_pdf
      ],
      :post => %w[
        quick_search
        show_list
        show
      ] +
        adv_search_post +
        exp_post
    },

    :automation_manager_configured_system => {
      :get => %w[
        download_data
        download_summary_pdf
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        button
        listnav_search_selected
        quick_search
        reload
        show
        show_list
        tagging_edit
      ] +
        adv_search_post +
        exp_post
    },

    :configuration_script => {
      :get  => %w[
        configuration_script_service_dialog
        download_summary_pdf
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        button
        listnav_search_selected
        quick_search
        reload
        show
        show_list
        tagging_edit
      ] +
        adv_search_post +
        exp_post +
        save_post
    },

    :availability_zone        => {
      :get  => %w[
        dialog_load
        download_data
        download_summary_pdf
        index
        perf_top_chart
        protect
        show
        show_list
        tagging_edit
      ] +
        compare_get,
      :post => %w[
        button
        listnav_search_selected
        protect
        quick_search
        sections_field_changed
        show
        show_list
        tagging_edit
        tl_chooser
        wait_for_task
      ] +
        adv_search_post +
        compare_post +
        dialog_runner_post +
        exp_post +
        perf_post +
        save_post
    },

    :host_aggregate           => {
      :get  => %w[
        add_host_select
        delete_host_aggregates
        download_data
        download_summary_pdf
        edit
        host_aggregate_form_fields
        index
        new
        perf_top_chart
        protect
        remove_host_select
        show
        show_list
        tagging_edit
      ] +
        compare_get,
      :post => %w[
        add_host
        add_host_select
        button
        delete_host_aggregates
        listnav_search_selected
        create
        protect
        quick_search
        remove_host
        remove_host_select
        sections_field_changed
        show
        show_list
        tagging_edit
        tl_chooser
        update
        wait_for_task
      ] +
        adv_search_post +
        compare_post +
        exp_post +
        perf_post +
        save_post
    },

    :catalog                  => {
      :get  => %w[
        download_data
        explorer
        ot_edit
        ot_orchestration_managers
        ot_show
        servicetemplates_names
        show
      ],
      :post => %w[
        ab_group_reorder
        accordion_select
        ae_tree_select
        ae_tree_select_discard
        ae_tree_select_toggle
        atomic_form_field_changed
        atomic_st_edit
        automate_button_field_changed
        playbook_options_field_changed
        embedded_workflows_modal
        explorer
        group_create
        group_reorder_field_changed
        group_update
        ot_tags_edit
        ownership_update
        prov_field_changed
        reload
        resolve
        resource_delete
        save_copy_catalog
        servicetemplate_edit
        servicetemplate_copy
        servicetemplate_copy_cancel
        servicetemplate_copy_saved
        sort_ds_grid
        sort_host_grid
        sort_iso_img_grid
        sort_pxe_img_grid
        sort_vc_grid
        sort_template_grid
        sort_vm_grid
        st_catalog_edit
        st_edit
        st_form_field_changed
        st_tags_edit
        st_upload_image
        tree_autoload
        tree_select
        x_button
        x_history
        x_show
      ] +
               button_post +
               exp_post +
               dialog_runner_post
    },

    :chargeback_assignment => {
      :get  => %w[
        change_tab
        index
      ],
      :post => %w[
        form_field_changed
        update
      ]
    },
    :chargeback_rate => {
      :get  => %w[
        copy
        edit
        new
        show_list
        show
      ],
      :post => %w[
        delete
        edit
        form_field_changed
        show_list
        show
        tier_add
        tier_remove
      ]
    },

    :chargeback_report => {
      :get  => %w[
        show
        show_list
        render_csv
        render_pdf
        render_txt
        report_only
      ],
      :post => %w[
        saved_report_paging
        show
      ]
    },

    :configuration_job      => {
      :get  => %w[
        download_data
        download_summary_pdf
        index
        parameters
        show
        show_list
        tagging_edit
        protect
      ],
      :post => %w[
        button
        listnav_search_selected
        parameters
        quick_search
        sections_field_changed
        show
        show_list
        protect
        tagging_edit
      ] +
        adv_search_post +
        exp_post +
        save_post
    },

    :consumption                  => {
      :get => %w[
        show
      ]
    },

    :cloud_object_store_container => {
      :get => %w[
        dialog_load
        download_data
        download_summary_pdf
        index
        show
        show_list
        tagging_edit
        new
      ],
      :post => %w[
        button
        dynamic_checkbox_refresh
        listnav_search_selected
        quick_search
        show
        show_list
        tagging_edit
        wait_for_task
      ] + adv_search_post + exp_post + save_post + dialog_runner_post
    },

    :cloud_tenant             => {
      :get => %w[
        delete_cloud_tenants
        dialog_load
        download_data
        download_summary_pdf
        edit
        index
        new
        protect
        show
        show_list
        tagging_edit
      ] +
        compare_get,
      :post => %w[
        button
        listnav_search_selected
        protect
        quick_search
        sections_field_changed
        show
        show_list
        tagging_edit
        wait_for_task
      ] +
        adv_search_post +
        compare_post +
        dialog_runner_post +
        exp_post +
        save_post
    },

    :cloud_tenant_dashboard      => {
      :get => %w[
        data
        recent_instances_data
        recent_images_data
        aggregate_status_data
      ]
    },

    :cloud_object_store_object => {
      :get => %w[
        download_data
        download_summary_pdf
        index
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        button
        dynamic_checkbox_refresh
        listnav_search_selected
        quick_search
        show
        show_list
        tagging_edit
      ] + adv_search_post + exp_post + save_post
    },

    :cloud_volume             => {
      :get  => %w[
        dialog_load
        download_data
        download_summary_pdf
        attach
        detach
        clone
        backup_new
        backup_select
        snapshot_new
        edit
        index
        new
        show
        show_list
        tagging_edit
      ] +
        compare_get,
      :post => %w[
        button
        create
        dynamic_checkbox_refresh
        listnav_search_selected
        quick_search
        reload
        sections_field_changed
        show
        show_list
        tagging_edit
        update
        wait_for_task
      ] +
        adv_search_post +
        compare_post +
        dialog_runner_post +
        exp_post +
        save_post
    },

    :cloud_volume_snapshot    => {
      :get  => %w[
        download_data
        download_summary_pdf
        index
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        button
        dynamic_checkbox_refresh
        listnav_search_selected
        quick_search
        show
        show_list
        tagging_edit
      ] + adv_search_post + exp_post + save_post
    },

    :cloud_volume_backup    => {
      :get  => %w[
        volume_select
        volume_form_choices
        download_data
        index
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        backup_restore
        button
        dynamic_checkbox_refresh
        listnav_search_selected
        quick_search
        show
        show_list
        tagging_edit
        wait_for_task
      ] + adv_search_post + exp_post + save_post
    },

    :cloud_volume_type        => {
      :get  => %w[
        download_data
        index
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        button
        dynamic_checkbox_refresh
        listnav_search_selected
        quick_search
        show
        show_list
        tagging_edit
        wait_for_task
      ] + adv_search_post + exp_post + save_post
    },

    :configuration            => {
      # TODO: routes for new/edit/copy buttons need to be revisited
      # TODO: so they can be changed to send up POST request instead of GET
      :get  => %w[
        change_tab
        index
        show
        timeprofile_copy
        timeprofile_edit
        timeprofile_new
      ],
      :post => %w[
        button
        filters_field_changed
        timeprofile_delete
        tree_autoload
        update
      ]
    },

    :container                => {
      :get  => %w[
        download_data
        download_summary_pdf
        perf_top_chart
        show
        tl_chooser
        wait_for_task
        show_list
        tagging_edit
      ],
      :post => %w[
        accordion_select
        button
        show
        show_list
        tl_chooser
        wait_for_task
        quick_search
        reload
        tree_autoload
        tree_select
        tagging_edit
        listnav_search_selected
        x_button
        x_history
        x_search_by_name
      ] +
               adv_search_post +
               exp_post +
               perf_post +
               save_post
    },

    :container_group          => {
      :get  => %w[
        dialog_load
        download_data
        download_summary_pdf
        index
        perf_top_chart
        show
        show_list
        tagging_edit
        protect
      ],
      :post => %w[
        button
        dynamic_checkbox_refresh
        listnav_search_selected
        quick_search
        sections_field_changed
        show
        show_list
        tl_chooser
        wait_for_task
        tagging_edit
        protect
      ] +
               adv_search_post +
               exp_post +
               perf_post +
               save_post +
               dialog_runner_post
    },

    :container_node           => {
      :get  => %w[
        dialog_load
        download_data
        download_summary_pdf
        index
        perf_top_chart
        show
        show_list
        tagging_edit
        protect
      ],
      :post => %w[
        button
        dynamic_checkbox_refresh
        listnav_search_selected
        quick_search
        sections_field_changed
        show
        show_list
        tl_chooser
        wait_for_task
        tagging_edit
        protect
        launch_external_logging
      ] +
               adv_search_post +
               dialog_runner_post +
               exp_post +
               perf_post +
               save_post
    },

    :container_replicator     => {
      :get  => %w[
        download_data
        download_summary_pdf
        index
        perf_top_chart
        show
        show_list
        tagging_edit
        protect
      ],
      :post => %w[
        button
        dynamic_checkbox_refresh
        listnav_search_selected
        quick_search
        sections_field_changed
        show
        show_list
        tl_chooser
        wait_for_task
        tagging_edit
        protect
      ] +
               adv_search_post +
               exp_post +
               perf_post +
               save_post
    },

    :container_image          => {
      :get  => %w[
        dialog_load
        download_data
        download_summary_pdf
        index
        show
        show_list
        tagging_edit
        guest_applications
        openscap_rule_results
        openscap_html
        protect
      ],
      :post => %w[
        button
        dynamic_checkbox_refresh
        listnav_search_selected
        quick_search
        sections_field_changed
        show
        show_list
        tagging_edit
        guest_applications
        openscap_rule_results
        protect
      ] + adv_search_post + exp_post + save_post + dialog_runner_post
    },

    :container_image_registry => {
      :get  => %w[
        download_data
        download_summary_pdf
        index
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        button
        dynamic_checkbox_refresh
        listnav_search_selected
        quick_search
        sections_field_changed
        show
        show_list
        tagging_edit
      ] + adv_search_post + exp_post + save_post
    },

    :container_service        => {
      :get  => %w[
        download_data
        download_summary_pdf
        index
        perf_top_chart
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        button
        dynamic_checkbox_refresh
        listnav_search_selected
        quick_search
        sections_field_changed
        show
        show_list
        wait_for_task
        tagging_edit
      ] +
               adv_search_post +
               exp_post +
               perf_post +
               save_post
    },

    :container_project        => {
      :get  => %w[
        dialog_load
        download_data
        download_summary_pdf
        index
        perf_top_chart
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        button
        dynamic_checkbox_refresh
        listnav_search_selected
        quick_search
        sections_field_changed
        show
        show_list
        tl_chooser
        wait_for_task
        tagging_edit
      ] +
               adv_search_post +
               exp_post +
               perf_post +
               save_post +
               dialog_runner_post
    },

    :container_route          => {
      :get  => %w[
        download_data
        download_summary_pdf
        index
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        button
        dynamic_checkbox_refresh
        listnav_search_selected
        quick_search
        sections_field_changed
        show
        show_list
        tagging_edit
      ] + adv_search_post + exp_post + save_post
    },

    :persistent_volume        => {
      :get  => %w[
        dialog_load
        download_data
        download_summary_pdf
        index
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        button
        dynamic_checkbox_refresh
        listnav_search_selected
        quick_search
        sections_field_changed
        show
        show_list
        tagging_edit
      ] + adv_search_post + exp_post + save_post + dialog_runner_post
    },

    :container_build          => {
      :get  => %w[
        download_data
        download_summary_pdf
        index
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        button
        dynamic_checkbox_refresh
        listnav_search_selected
        quick_search
        sections_field_changed
        show
        show_list
        tagging_edit
      ] + adv_search_post + exp_post + save_post
    },

    :container_template          => {
      :get  => %w[
        dialog_load
        download_data
        download_summary_pdf
        index
        service_dialog_from_ct
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        button
        ct_form_field_changed
        dynamic_checkbox_refresh
        listnav_search_selected
        quick_search
        sections_field_changed
        service_dialog_from_ct_submit
        show
        show_list
        tagging_edit
      ] + adv_search_post + exp_post + save_post + dialog_runner_post
    },

    :physical_infra_overview => {
      :get => %w[
        show
      ]
    },

    :container_dashboard      => {
      :get => %w[
        data
        ems_utilization_data
        heatmaps_data
        image_metrics_data
        network_metrics_data
        pod_metrics_data
        project_data
        refresh_status_data
        show
      ]
    },

    :dashboard                => {
      :get  => %w[
        auth_error
        iframe
        change_tab
        index
        login
        logout
        saml_login
        oidc_login
        render_csv
        render_pdf
        render_txt
        render_chart
        report_only
        show
        timeline_data
        start_url
        widget_to_pdf
        widget_chart_data
        widget_menu_data
        widget_report_data
      ],
      :post => %w[
        external_authenticate
        kerberos_authenticate
        initiate_saml_login
        initiate_oidc_login
        authenticate
        change_group
        csp_report
        timeline_data
        login_retry
        reset_widgets
        tree_select
        wait_for_task
        widget_add
        widget_close
        widget_dd_done
      ]
    },

    :ems_cloud                => {
      :get  => %w[
        dialog_load
        download_data
        download_summary_pdf
        protect
        show
        show_list
        sync_users
        tagging_edit
      ] +
        compare_get,
      :post => %w[
        new
        button
        dynamic_checkbox_refresh
        dynamic_radio_button_refresh
        dynamic_text_box_refresh
        listnav_search_selected
        protect
        quick_search
        sections_field_changed
        show
        show_list
        sync_users
        tagging_edit
        tl_chooser
        wait_for_task
        launch_console
      ] +
               adv_search_post +
               compare_post +
               dialog_runner_post +
               exp_post +
               save_post
    },

    :ems_cloud_dashboard      => {
      :get => %w[
        data
        recent_instances_data
        recent_images_data
        aggregate_status_data
      ]
    },

    :ems_cluster              => {
      :get  => %w[
        dialog_load
        download_data
        download_summary_pdf
        index
        perf_top_chart
        protect
        show
        show_list
        tagging_edit
      ] +
               compare_get +
               drift_get,
      :post => %w[
        button
        listnav_search_selected
        protect
        quick_search
        sections_field_changed
        show
        show_list
        tagging_edit
        tl_chooser
        tree_autoload
        wait_for_task
      ] +
               adv_search_post +
               compare_post +
               dialog_runner_post +
               drift_post +
               exp_post +
               perf_post +
               save_post
    },

    :ems_infra                => {
      :get  => %w[
        dialog_load
        download_data
        download_summary_pdf
        register_nodes
        protect
        scaledown
        scaling
        show
        show_list
        tagging_edit
      ] +
               compare_get,
      :post => %w[
        new
        button
        register_nodes
        listnav_search_selected
        protect
        quick_search
        sections_field_changed
        show
        show_list
        tagging_edit
        tl_chooser
        tree_autoload
        wait_for_task
        scaling
        scaledown
        open_admin_ui
        open_admin_ui_done
        launch_console
      ] +
               adv_search_post +
               compare_post +
               dialog_runner_post +
               exp_post +
               save_post
    },

    :ems_infra_dashboard      => {
      :get => %w[
        data
        cluster_metrics_data
        ems_utilization_data
        recent_hosts_data
        recent_vms_data
        aggregate_status_data
      ]
    },

    :ems_physical_infra                => {
      :get  => %w[
        dialog_load
        download_data
        download_summary_pdf
        protect
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        new
        button
        listnav_search_selected
        protect
        quick_search
        show
        show_list
        tagging_edit
        tl_chooser
        tree_autoload
        wait_for_task
        launch_console
      ] +
               adv_search_post +
               dialog_runner_post +
               exp_post +
               save_post
    },

    :physical_switch    =>  {
      :get  =>  %w[
        dialog_load
        download_data
        download_summary_pdf
        show_list
        show
      ],

      :post   =>  %w[
        button
        listnav_search_selected
        show_list
        quick_search
      ] + adv_search_post + save_post + dialog_runner_post,
    },

    :physical_server    =>  {
      :get  =>  %w[
        dialog_load
        download_data
        download_summary_pdf
        perf_top_chart
        protect
        show_list
        show
        tagging_edit
        console_file
      ],

      :post   =>  %w[
        button
        show_list
        listnav_search_selected
        protect
        tagging_edit
        quick_search
        tl_chooser
        wait_for_task
        provision
        console
      ] +
          adv_search_post +
          exp_post +
          save_post +
          dialog_runner_post
    },

    :physical_rack    =>  {
      :get  =>  %w[
        dialog_load
        download_data
        download_summary_pdf
        protect
        show_list
        show
      ],
      :post   =>  %w[
        button
        show_list
        quick_search
      ] + dialog_runner_post
    },

    :physical_network_port    => {
      :get  => %w[
        download_data
        download_summary_pdf
        show_list
        show
      ],

      :post  => %w[
        show_list
      ]
    },

    :physical_storage   => {
      :get  => %w[
        dialog_load
        download_data
        download_summary_pdf
        edit
        show
        show_list
        new
      ],
      :post => %w[
        button
        tl_chooser
        wait_for_task
        listnav_search_selected
        quick_search
        show_list
      ] + adv_search_post + save_post + exp_post + dialog_runner_post,
    },

    :physical_chassis    => {
      :get  => %w[
        dialog_load
        download_data
        download_summary_pdf
        protect
        show_list
        show
      ],

      :post  => %w[
        button
        show_list
        quick_search
      ] + dialog_runner_post,
    },

    :guest_device    =>  {
      :get  =>  %w[
        show_list
        show
        quick_search
        download_summary_pdf
      ],

      :post   =>  %w[
        show_list
      ] +
          adv_search_post +
          exp_post +
          save_post
    },

    :ems_physical_infra_dashboard      => {
      :get => %w[
        recent_servers_data
        aggregate_status_data
        servers_group_data
      ]
    },

    :ems_container            => {
      :get  => %w[
        dialog_load
        download_data
        download_summary_pdf
        perf_top_chart
        protect
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        new
        button
        dynamic_checkbox_refresh
        listnav_search_selected
        protect
        quick_search
        sections_field_changed
        show
        show_list
        tl_chooser
        wait_for_task
        tagging_edit
        launch_external_logging
      ] +
               adv_search_post +
               dialog_runner_post +
               exp_post +
               perf_post +
               save_post
    },

    :ems_network              => {
      :get  => %w[
        dialog_load
        download_data
        download_summary_pdf
        index
        protect
        show_list
        tagging_edit
      ],
      :post => %w[
        new
        button
        dynamic_checkbox_refresh
        dynamic_radio_button_refresh
        dynamic_text_box_refresh
        listnav_search_selected
        protect
        quick_search
        sections_field_changed
        show_list
        tagging_edit
        tl_chooser
        wait_for_task
      ] +
        adv_search_post +
        dialog_runner_post +
        exp_post +
        save_post
    },

    :security_group           => {
      :get  => %w[
        dialog_load
        edit
        download_data
        download_summary_pdf
        index
        new
        protect
        show
        show_list
        tagging_edit
      ] +
        compare_get,
      :post => %w[
        button
        create
        listnav_search_selected
        protect
        quick_search
        sections_field_changed
        show
        show_list
        tagging_edit
        update
        wait_for_task
      ] +
        adv_search_post +
        compare_post +
        save_post +
        exp_post +
        dialog_runner_post
    },

    :security_policy          => {
      :get  => %w[
        dialog_load
        download_data
        download_summary_pdf
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        button
        quick_search
        listnav_search_selected
        show
        show_list
        tagging_edit
        wait_for_task
      ] +
        adv_search_post +
        save_post +
        exp_post +
        dialog_runner_post
    },

    :security_policy_rule     => {
      :get  => %w[
        dialog_load
        download_data
        download_summary_pdf
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        button
        quick_search
        listnav_search_selected
        show
        show_list
        tagging_edit
        wait_for_task
      ] +
        adv_search_post +
        save_post +
        exp_post +
        dialog_runner_post
    },

    :floating_ip              => {
      :get  => %w[
        download_data
        download_summary_pdf
        edit
        index
        new
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        button
        create
        listnav_search_selected
        quick_search
        show
        show_list
        tagging_edit
        wait_for_task
      ] +
        adv_search_post +
        save_post +
        exp_post
    },

    :cloud_subnet             => {
      :get  => %w[
        dialog_load
        download_data
        download_summary_pdf
        edit
        index
        new
        protect
        show
        show_list
        tagging_edit
      ] +
        compare_get,
      :post => %w[
        button
        dynamic_checkbox_refresh
        listnav_search_selected
        protect
        quick_search
        sections_field_changed
        show
        show_list
        tagging_edit
        wait_for_task
      ] +
        adv_search_post +
        compare_post +
        save_post +
        exp_post +
        dialog_runner_post
    },
    :cloud_database             => {
      :get  => %w[
        show_list
        index
        show
        download_data
        download_summary_pdf
        edit
        new
      ],
      :post => %w[
        quick_search
        show_list
        show
        button
      ] +
        adv_search_post +
        exp_post
    },
    :cloud_network             => {
      :get  => %w[
        dialog_load
        download_data
        download_summary_pdf
        edit
        index
        new
        protect
        show
        show_list
        tagging_edit
      ] +
        compare_get,
      :post => %w[
        button
        create
        dynamic_checkbox_refresh
        listnav_search_selected
        protect
        quick_search
        sections_field_changed
        show
        show_list
        tagging_edit
        update
        wait_for_task
      ] +
        adv_search_post +
        compare_post +
        save_post +
        exp_post +
        dialog_runner_post
    },

    :network_port             => {
      :get  => %w[
        download_data
        download_summary_pdf
        index
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        button
        quick_search
        listnav_search_selected
        sections_field_changed
        show
        show_list
        tagging_edit
        wait_for_task
      ] +
        adv_search_post +
        save_post +
        exp_post
    },

    :network_router           => {
      :get  => %w[
        add_interface_select
        dialog_load
        download_data
        download_summary_pdf
        edit
        index
        new
        protect
        remove_interface_select
        show
        show_list
        tagging_edit
      ] +
        compare_get,
      :post => %w[
        add_interface
        add_interface_select
        button
        listnav_search_selected
        protect
        quick_search
        remove_interface
        remove_interface_select
        sections_field_changed
        show
        show_list
        tagging_edit
        wait_for_task
      ] +
        adv_search_post +
        compare_post +
        save_post +
        exp_post +
        dialog_runner_post
    },

    :network_service          => {
      :get  => %w[
        download_data
        download_summary_pdf
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        button
        quick_search
        listnav_search_selected
        show
        show_list
        tagging_edit
        wait_for_task
      ] +
        adv_search_post +
        save_post +
        exp_post
    },

    :flavor                   => {
      # FIXME: Change tagging_edit to POST only; We need to remove the redirects
      # in app/controllers/application_controller/tags.rb#tag that are used in
      # a role of a method call.
      # Then remove this route from all other controllers too.
      :get  => %w[
        download_data
        download_summary_pdf
        index
        protect
        show
        show_list
        new
        tagging_edit
        ems_list
        cloud_tenants
      ] +
        compare_get,
      :post => %w[
        button
        listnav_search_selected
        protect
        quick_search
        sections_field_changed
        show
        show_list
        tagging_edit
      ] +
               adv_search_post +
               compare_post +
               exp_post +
               save_post
    },

    :host                     => {
      :get  => %w[
        advanced_settings
        dialog_load
        download_data
        download_summary_pdf
        edit
        filesystem_download
        filesystems
        firewall_rules
        timeline_data
        groups
        guest_applications
        host_form_fields
        host_services
        host_cloud_services
        index
        patches
        perf_top_chart
        protect
        show
        show_list
        start
        tagging_edit
        users
      ] +
               compare_get +
               drift_get,
      :post => %w[
        advanced_settings
        button
        drift_all
        drift_compress
        drift_differences
        drift_mode
        drift_same
        filesystems
        firewall_rules
        groups
        guest_applications
        host_services
        host_cloud_services
        listnav_search_selected
        quick_search
        patches
        protect
        sections_field_changed
        show
        show_list
        tagging_edit
        tl_chooser
        tree_autoload
        users
        wait_for_task
      ] +
               adv_search_post +
               compare_post +
               dialog_runner_post +
               exp_post +
               perf_post +
               save_post
    },

    :infra_networking         => {
      :get  => %w[
        dialog_load
        download_data
        download_summary_pdf
        explorer
        hosts
        show_list
        tagging
        tagging_edit
        x_show
      ],
      :post => %w[
        button
        custom_button_events
        explorer
        hosts
        listnav_search_selected
        quick_search
        reload
        show_list
        tagging
        tagging_edit
        tree_select
        tree_autoload
        x_button
        x_show
        x_search_by_name
      ] +
        adv_search_post +
        exp_post +
        save_post +
        x_post +
        dialog_runner_post
    },

    :generic_object => {
      :get => %w[
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        button
        tagging_edit
      ]
    },

    :generic_object_definition => {
      :get => %w[
        custom_buttons_in_set
        download_data
        download_summary_pdf
        edit
        new
        retrieve_distinct_instances_across_domains
        service_template_ansible_playbooks
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        add_button_in_group
        button
        custom_button_group_new
        custom_button_group_edit
        custom_button_new
        custom_button_edit
        edit
        listnav_search_selected
        new
        quick_search
        show_list
        tagging_edit
        tree_select
      ] +
        adv_search_post +
        exp_post +
        save_post
    },

    :ansible_credential => {
      :get => %w[
        download_data
        download_summary_pdf
        edit
        new
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        search_clear
        button
        show_list
        tagging_edit
      ]
    },

    :ansible_playbook => {
      :get => %w[
        download_data
        download_summary_pdf
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        search_clear
        button
        show_list
        tagging_edit
      ]
    },

    :ansible_repository => {
      :get => %w[
        download_data
        download_summary_pdf
        edit
        new
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        search_clear
        button
        edit
        new
        repository_refresh
        show_list
        tagging_edit
      ]
    },

    :miq_ae_class             => {
      :get  => %w[
        explorer
        method_form_fields
        namespace
        ae_domains
        ae_methods
        ae_method_operations
        show
        edit_class_record
      ],
      :post => %w[
        add_update_method
        ae_tree_select
        ae_tree_select_discard
        ae_tree_select_toggle
        change_tab
        copy_objects
        create
        create_instance
        create_method
        create_namespace
        domains_priority_edit
        embedded_methods_add
        embedded_methods_remove
        explorer
        expand_toggle
        field_accept
        field_delete
        field_method_accept
        field_method_delete
        field_method_select
        field_select
        fields_form_field_changed
        fields_seq_edit
        fields_seq_field_changed
        form_copy_objects_field_changed
        form_field_changed
        form_instance_field_changed
        form_method_field_changed
        priority_form_field_changed
        refresh_git_domain
        reload
        tree_select
        tree_autoload
        update
        update_fields
        update_instance
        update_method
        update_namespace
        validate_method_data
        x_button
        x_history
        x_show
        class_update
      ] + adv_search_post +
        exp_post
    },
    :miq_ae_customization     => {
      :get  => %w[
        explorer
        editor
        export_service_dialogs
        show
        old_dialogs_edit_get
      ],
      :post => %w[
        ab_group_reorder
        accordion_select
        automate_button_field_changed
        playbook_options_field_changed
        change_tab
        dialog_copy_editor
        dialog_edit_editor
        dialog_new_editor
        dialog_list
        explorer
        group_create
        group_reorder_field_changed
        group_update
        import_service_dialogs
        old_dialogs_form_field_changed
        old_dialogs_list
        old_dialogs_update
        provision_dialogs_update
        reload
        resolve
        tree_autoload
        tree_select
        upload_import_file
        x_button
        x_history
        x_show
      ] +
               button_post + exp_post
    },

    :miq_ae_tools             => {
      :get  => %w[
        automate_json
        check_git_task
        export_datastore
        fetch_log
        import_export
        log
        get_form_targets
        resolve
        resolve_automate_simulation
        review_import
        get_simulation_form_vars
      ],
      :post => %w[
        button
        cancel_import
        form_field_changed
        import_automate_datastore
        import_via_git
        reset_datastore
        resolve
        resolve_automate_simulation
        retrieve_git_datastore
        upload
        upload_import_file
        wait_for_task
      ]
    },

    :utilization              => {
      :get  => %w[
        index
        report_download
        timeline_data
      ],
      :post => %w[
        change_tab
        chart_chooser
        tree_autoload
        tree_select
        wait_for_task
      ]
    },

    :miq_policy_export       => {
      :get  => %w[
        export
        fetch_yaml
        get_json
        import
      ],
      :post => %w[
        export
        export_field_changed
        import
        upload
      ]
    },

    :miq_policy               => {
      :get  => %w[
        copy
        edit
        miq_event_edit
        miq_policy_edit_conditions
        miq_policy_edit_events
        new
        show
        show_list
      ],
      :post => %w[
        edit
        event_build_action_values
        miq_event_edit
        miq_policy_edit
        miq_policy_edit_conditions
        miq_policy_edit_events
        policy_field_changed
        quick_search
        reload
        show
        show_list
      ] +
         adv_search_post +
         exp_post
    },

    :miq_policy_log   => {
      :get => %w[
        fetch_log
      ],
      :post => %w[
        button
      ]
    },

    :miq_policy_rsop         => {
      :post => %w[
        rsop
        rsop_option_changed
        rsop_show_options
        rsop_toggle
        wait_for_task
      ]
    },

    :miq_policy_set => {
      :get  => %w[
        edit
        new
        show
        show_list
      ],
      :post => %w[
        reload
        show
        show_list
      ]
    },

    :miq_action       => {
      :get  => %w[
        edit
        new
        show
        show_list
      ],
      :post => %w[
        miq_action_edit
        action_field_changed
        edit
        show
        show_list
      ]
    },

    :miq_alert => {
      :get  => %w[
        copy
        edit
        new
        show
        show_list
      ],
      :post => %w[
        alert_field_changed
        edit
        show
        show_list
      ] +
        exp_post
    },

    :miq_alert_set  => {
      :get  => %w[
        edit
        edit_assignment
        new
        show
        show_list
      ],
      :post => %w[
        alert_profile_assign_changed
        alert_profile_field_changed
        edit
        edit_assignment
        new
        show
        show_list
      ]
    },

    :miq_event_definition => {
      :get  => %w[
        show
        show_list
      ],
      :post => %w[
        show_list
      ]
    },

    :condition => {
      :get  => %w[
        copy
        edit
        new
        show
        show_list
      ],
      :post => %w[
        condition_edit
        condition_field_changed
        edit
        show
        show_list
      ] +
          adv_search_post +
          exp_post
    },

    :miq_request              => {
      # FIXME: Change stamp to POST only; We need to remove the redirect
      :get  => %w[
        index
        post_install_callback
        pre_prov
        prov_copy
        prov_edit
        show
        show_list
        stamp
      ],
      :post => %w[
        button
        post_install_callback
        pre_prov
        prov_continue
        prov_edit
        prov_field_changed
        prov_load_tab
        request_copy
        request_edit
        retrieve_email
        show_list
        sort_configured_system_grid
        sort_ds_grid
        sort_host_grid
        sort_iso_img_grid
        sort_pxe_img_grid
        sort_template_grid
        sort_vc_grid
        sort_template_grid
        sort_vm_grid
        sort_windows_image_grid
        stamp
        stamp_field_changed
        vm_pre_prov
      ] +
               dialog_runner_post
    },

    :miq_task                 => {
      :get  => %w[
        change_tab
        index
        show
        jobs
      ],
      :post => %w[
        button
        jobs
      ]
    },

    :miq_template             => {
      :get  => %w[
        download_summary_pdf
        edit
        show
        ownership
      ],
      :post => %w[
        edit
        show
      ] +
               ownership_post
    },

    :ems_storage              => {
      :get  => %w[
        dialog_load
        download_data
        download_summary_pdf
        edit
        index
        new
        protect
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        new
        button
        dynamic_checkbox_refresh
        dynamic_radio_button_refresh
        dynamic_text_box_refresh
        listnav_search_selected
        protect
        quick_search
        sections_field_changed
        show
        show_list
        quick_search
        tagging_edit
        tl_chooser
        wait_for_task
      ] +
        adv_search_post +
        dialog_runner_post +
        exp_post +
        save_post
    },

    :host_initiator   => {
      :get  => %w[
        download_data
        download_summary_pdf
        index
        show
        show_list
        new
      ],
      :post => %w[
        button
        listnav_search_selected
        quick_search
        show_list
      ] +
        adv_search_post +
        exp_post +
        save_post
    },

    :host_initiator_group   => {
      :get  => %w[
        download_data
        download_summary_pdf
        index
        show
        show_list
        edit
        new
      ],
      :post => %w[
        button
        listnav_search_selected
        quick_search
        show_list
      ] +
        adv_search_post +
        exp_post +
        save_post
    },

    :storage_resource   => {
      :get  => %w[
        download_data
        download_summary_pdf
        index
        show
        show_list
      ],
      :post => %w[
        listnav_search_selected
        quick_search
        show_list
      ] +
        adv_search_post +
        exp_post +
        save_post
    },

    :storage_service   => {
      :get  => %w[
        download_data
        download_summary_pdf
        edit
        index
        show
        show_list
        new
      ],
      :post => %w[
        button
        listnav_search_selected
        quick_search
        show_list
      ] +
        adv_search_post +
        exp_post +
        save_post
    },

    :volume_mapping => {
      :get  => %w[
        download_data
        download_summary_pdf
        index
        show
        show_list
        new
      ],
      :post => %w[
        button
        listnav_search_selected
        quick_search
        show_list
      ] +
        adv_search_post +
        exp_post +
        save_post
    },

    :ops                      => {
      :get  => %w[
        all_categories
        category_entries
        category_information
        dialog_load
        explorer
        fetch_audit_log
        fetch_log
        fetch_production_log
        log_collection_form_fields
        pglogical_subscriptions_form_fields
        schedule_form_fields
      ],
      :post => %w[
        accordion_select
        apply_imports
        ap_ce_delete
        ap_ce_select
        ap_edit
        ap_form_field_changed
        ap_set_active_tab
        aps_list
        automate_schedules_set_vars
        button
        category_delete
        category_edit
        category_field_changed
        ce_accept
        ce_delete
        ce_new_cat
        ce_select
        change_tab
        cu_collection_field_changed
        cu_collection_update
        cu_repair
        cu_repair_field_changed
        diagnostics_server_list
        diagnostics_tree_select
        explorer
        fetch_target_ids
        forest_accept
        forest_delete
        forest_form_field_changed
        forest_select
        help_menu_form_field_changed
        label_tag_mapping_delete
        label_tag_mapping_edit
        label_tag_mapping_update
        label_tag_mapping_field_changed
        log_depot_edit
        log_depot_validate
        perf_chart_chooser
        pglogical_save_subscriptions
        pglogical_validate_subscription
        rbac_group_edit
        rbac_group_field_changed
        rbac_group_load_tab
        rbac_group_seq_edit
        rbac_group_user_lookup
        rbac_groups_list
        rbac_role_edit
        rbac_role_field_changed
        rbac_roles_list
        rbac_tags_edit
        rbac_tenant_edit
        rbac_tenants_list
        rbac_tenant_manage_quotas
        rbac_user_edit
        rbac_user_field_changed
        rbac_users_list
        region_edit
        restart_server
        schedule_edit
        schedule_form_filter_type_field_changed
        schedules_list
        settings_form_field_changed
        settings_update
        settings_update_help_menu
        show
        smartproxy_affinity_field_changed
        tl_chooser
        tree_autoload
        tree_select
        upload_csv
        upload_form_field_changed
        upload_login_brand
        upload_login_logo
        upload_logo
        upload_favicon
        wait_for_task
        x_button
        zone_edit
      ] + exp_post + dialog_runner_post
    },

    :optimization => {
      :get => %w[
        index
        show_list
        show
        json_list
      ],
      :post => %w[
        queue_report
      ],
    },

    :orchestration_stack      => {
      :get  => %w[
        cloud_networks
        dialog_load
        download_data
        download_summary_pdf
        index
        outputs
        parameters
        resources
        retire
        show
        show_list
        stacks_ot_info
        tagging_edit
        protect
      ] +
        compare_get,
      :post => %w[
        button
        cloud_networks
        outputs
        listnav_search_selected
        parameters
        quick_search
        resources
        sections_field_changed
        show
        show_list
        stacks_ot_copy
        protect
        tagging_edit
      ] +
               adv_search_post +
               compare_post +
               exp_post +
               save_post +
               dialog_runner_post
    },

    :ems_automation => {
      :get  => %w[
        download_data
        download_summary_pdf
        edit
        form_fields
        new
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        authentication_validate
        button
        edit
        new
        quick_search
        reload
        show
        show_list
        tagging_edit
        wait_for_task
      ] +
        adv_search_post +
        exp_post
    },

    :ems_configuration => {
      :get  => %w[
        button
        download_data
        download_summary_pdf
        edit
        form_fields
        new
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        authentication_validate
        button
        change_tab
        edit
        new
        quick_search
        reload
        show
        show_list
        tagging_edit
        wait_for_task
      ] +
        adv_search_post +
        exp_post +
        save_post
    },

    :configuration_profile  => {
      :get  => %w[
        download_data
        download_summary_pdf
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        button
        quick_search
        reload
        show
        show_list
        tagging_edit
        launch_configuration_profile_console
      ] +
        adv_search_post +
        exp_post +
        save_post
    },

    :configured_system  => {
      :get  => %w[
        download_data
        download_summary_pdf
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        button
        new
        quick_search
        reload
        show
        show_list
        tagging_edit
        wait_for_task
        launch_configured_system_console
        listnav_search_selected
      ] +
        adv_search_post +
        dialog_runner_post +
        exp_post +
        save_post
    },

    :pxe                      => {
      :get  => %w[
        explorer
        tagging_edit
      ],
      :post => %w[
        accordion_select
        explorer
        iso_datastore_list
        iso_image_edit
        log_depot_validate
        pxe_image_edit
        pxe_image_type_edit
        pxe_image_type_list
        pxe_server_async_cred_validation
        pxe_server_list
        pxe_wimg_edit
        pxe_wimg_form_field_changed
        reload
        tagging_edit
        template_list
        tree_autoload
        tree_select
        x_button
        x_history
      ]
    },

    :report                   => {
      :get  => %w[
        dashboard_get
        db_copy
        db_widget_dd_done
        download_report
        explorer
        export_widgets
        miq_report_edit
        miq_report_new
        preview_chart
        render_chart
        report_only
        sample_chart
        print_report
        send_report_data
        tree_autoload
        tree_select
      ],
      :post => %w[
        accordion_select
        change_tab
        dashboard_render
        db_copy
        db_edit
        db_form_field_changed
        db_seq_edit
        db_widget_dd_done
        db_widget_remove
        discard_changes
        explorer
        export_field_changed
        filter_change
        form_field_changed
        get_report
        import_widgets
        menu_editor
        menu_field_changed
        menu_folder_message_display
        menu_update
        miq_report_edit
        reload
        rep_change_tab
        saved_report_paging
        schedule_edit
        schedule_form_field_changed
        show_preview
        tree_autoload
        tree_select
        upload
        upload_widget_import_file
        wait_for_task
        widget_edit
        widget_form_field_changed
        widget_shortcut_dd_done
        widget_shortcut_remove
        widget_shortcut_reset
        x_button
        x_history
        x_show
      ] +
               exp_post
    },

    :resource_pool            => {
      :get  => %w[
        download_data
        download_summary_pdf
        index
        protect
        show
        show_list
        tagging_edit
      ] +
        compare_get,
      :post => %w[
        button
        listnav_search_selected
        protect
        sections_field_changed
        show
        show_list
        tagging_edit
        tree_autoload
        quick_search
      ] +
               adv_search_post +
               compare_post +
               exp_post +
               save_post
    },

    :restful_redirect => {
      :get => %w[
        index
      ]
    },

    :service                  => {
      :get  => %w[
        dialog_load
        download_data
        service_reconfigure
        reconfigure_form_fields
        retire
        button
        service_form_fields
        show
        show_list
        edit
        ownership
        tagging_edit
      ],
      :post => %w[
        listnav_search_selected
        ownership_update
        quick_search
        reload
        edit
        show
        button
        show_list
        tagging_edit
        show
        ownership
        wait_for_task
      ] +
               dialog_runner_post +
               adv_search_post +
               exp_post +
               save_post
    },

    :storage                  => {
      :get  => %w[
        button
        debris_files
        dialog_load
        disk_files
        download_data
        download_summary_pdf
        explorer
        files
        perf_chart_chooser
        protect
        show
        show_list
        snapshot_files
        tagging_edit
        tree_select
        vm_ram_files
        vm_misc_files
        x_show
      ] +
               compare_get,
      :post => %w[
        accordion_select
        button
        debris_files
        explorer
        files
        listnav_search_selected
        disk_files
        perf_chart_chooser
        protect
        quick_search
        reload
        sections_field_changed
        show
        show_list
        storage_list
        storage_pod_list
        snapshot_files
        tagging
        tagging_edit
        tree_autoload
        tree_select
        vm_misc_files
        vm_ram_files
        wait_for_task
        x_search_by_name
        x_show
      ] +
               adv_search_post +
               compare_post +
               dialog_runner_post +
               exp_post +
               save_post +
               x_post
    },

    :support                  => {
      :get  => %w[index]
    },

    :vm                       => {
      :get  => %w[
        download_data
        download_summary_pdf
        edit
        ownership
        policy_sim
        reconfigure
        reconfigure_form_fields
        resize
        evacuate
        evacuate_form_fields
        live_migrate
        live_migrate_form_fields
        associate_floating_ip
        associate_floating_ip_form_fields
        disassociate_floating_ip
        disassociate_floating_ip_form_fields
        add_security_group
        remove_security_group
        retire
        right_size
        show
        show_list
      ],
      :post => %w[
        policy_sim
        policy_sim_add
        policy_sim_cancel
        policy_sim_remove
        reconfigure
        reconfigure_form_fields
        reconfigure_update
        evacuate_vm
        live_migrate_vm
        associate_floating_ip_vm
        disassociate_floating_ip_vm
        right_size
        set_checked_items
        show_list
        tree_autoload
        genealogy_tree_selected
        ownership_update
        wait_for_task
      ] +
               ownership_post +
               pre_prov_post
    },

    :vm_cloud                 => {
      :get  => %w[
        download_data
        download_summary_pdf
        drift_to_csv
        drift_to_pdf
        drift_to_txt
        explorer
        filesystem_download
        reconfigure_form_fields
        launch_html5_console
        launch_vmrc_console
        perf_chart_chooser
        protect
        retire
        right_size_print
        show
        tagging_edit
        resize
        live_migrate_form_fields
        attach
        detach
        evacuate
        evacuate_form_fields
        associate_floating_ip
        associate_floating_ip_form_fields
        disassociate_floating_ip
        disassociate_floating_ip_form_fields
        add_security_group
        remove_security_group
      ] +
               compare_get,
      :post => %w[
        advanced_settings
        accordion_select
        button
        event_logs
        explorer
        launch_html5_console
        filesystems
        filesystem_drivers
        guest_applications
        groups
        html5_console
        management_console
        kernel_drivers
        linux_initprocesses
        ownership_update
        patches
        perf_chart_chooser
        policies
        processes
        protect
        prov_edit
        prov_field_changed
        quick_search
        registry_items
        reload
        reconfigure_update
        scan_histories
        sections_field_changed
        security_groups
        sort_template_grid
        sort_vm_grid
        floating_ips
        network_routers
        network_ports
        cloud_subnets
        cloud_networks
        cloud_volumes
        show
        tagging_edit
        tl_chooser
        tree_autoload
        tree_select
        users
        vm_pre_prov
        wait_for_task
        win32_services
        live_migrate_vm
        attach_volume
        detach_volume
        evacuate_vm
        ownership_update
        associate_floating_ip_vm
        disassociate_floating_ip_vm
      ] +
               adv_search_post +
               compare_post +
               dialog_runner_post +
               drift_post +
               exp_post +
               policy_post +
               pre_prov_post +
               snap_post +
               x_post
    },

    :vm_infra                 => {
      :get  => %w[
        download_data
        download_summary_pdf
        drift_to_csv
        drift_to_pdf
        drift_to_txt
        explorer
        filesystem_download
        reconfigure_form_fields
        right_size_print
        launch_html5_console
        launch_vmrc_console
        launch_native_console
        perf_chart_chooser
        policies
        protect
        retire
        show
        tagging_edit
      ] +
               compare_get,
      :post => %w[
        accordion_select
        advanced_settings
        button
        event_logs
        explorer
        filesystems
        filesystem_drivers
        guest_applications
        groups
        kernel_drivers
        linux_initprocesses
        management_console
        ownership_update
        patches
        perf_chart_chooser
        policies
        protect
        processes
        prov_edit
        prov_field_changed
        quick_search
        reconfigure_update
        registry_items
        reload
        scan_histories
        sections_field_changed
        security_groups
        show
        sort_ds_grid
        sort_host_grid
        sort_iso_img_grid
        sort_vc_grid
        sort_template_grid
        sort_vm_grid
        tagging_edit
        tl_chooser
        tree_autoload
        tree_select
        users
        vmrc_console
        vm_pre_prov
        html5_console
        native_console
        wait_for_task
        win32_services
        ownership_update
      ] +
               adv_search_post +
               compare_post +
               dialog_runner_post +
               drift_post +
               exp_post +
               policy_post +
               pre_prov_post +
               snap_post +
               x_post
    },

    :vm_or_template           => {
      :get  => %w[
        download_data
        download_summary_pdf
        drift_to_csv
        drift_to_pdf
        drift_to_txt
        explorer
        launch_html5_console
        launch_vmrc_console
        launch_native_console
        reconfigure_form_fields
        policies
        protect
        retire
        show
        tagging_edit
        vm_show
      ] +
               compare_get,
      :post => %w[
        accordion_select
        advanced_settings
        button
        drift_all
        drift_differences
        drift_history
        drift_mode
        drift_same
        event_logs
        explorer
        filesystem_drivers
        filesystems
        groups
        guest_applications
        kernel_drivers
        linux_initprocesses
        ownership_update
        patches
        perf_chart_chooser
        policies
        processes
        protect
        prov_edit
        prov_field_changed
        quick_search
        reconfigure_update
        registry_items
        reload
        scan_histories
        sections_field_changed
        security_groups
        floating_ips
        network_routers
        network_ports
        cloud_subnets
        cloud_networks
        cloud_volumes
        show
        sort_ds_grid
        sort_host_grid
        sort_iso_img_grid
        sort_vc_grid
        tagging_edit
        tl_chooser
        tree_select
        users
        vm_pre_prov
        vmrc_console
        html5_console
        native_console
        management_console
        wait_for_task
        win32_services
        x_button
        x_history
        x_search_by_name
        x_show
        ownership_update
      ] +
               adv_search_post +
               compare_post +
               dialog_runner_post +
               exp_post +
               policy_post +
               pre_prov_post +
               snap_post
    },

    :workflow => {
      :get => %w[
        map_credentials
        download_data
        download_summary_pdf
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        search_clear
        button
        show_list
        tagging_edit
      ]
    },

    :workflow_repository => {
      :get => %w[
        download_data
        download_summary_pdf
        edit
        new
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        button
        edit
        new
        repository_refresh
        show_list
        tagging_edit
      ]
    },

    :workflow_credential => {
      :get => %w[
        download_data
        download_summary_pdf
        edit
        new
        show
        show_list
        tagging_edit
      ],
      :post => %w[
        search_clear
        button
        show_list
        tagging_edit
      ]
    },

    :firmware_registry => {
      :get => %w[
        download_data
        download_summary_pdf
        show
        show_list
      ],
      :post => %w[
        show_list
      ]
    },

    :firmware_binary => {
      :get => %w[
        download_data
        download_summary_pdf
        show
      ]
    },

    :firmware_target => {
      :get => %w[
        download_data
        download_summary_pdf
        show
      ]
    },
  }

  routes_without_index = %i[
    cloud_tenant_dashboard
    container_dashboard
    ems_cloud
    ems_cloud_dashboard
    ems_container
    ems_infra
    ems_storage_dashboard
    ems_infra_dashboard
    ems_network
    ems_physical_infra
    ems_physical_infra_dashboard
    ems_storage
    miq_ae_customization
    pxe
  ].freeze

  root :to => 'dashboard#login'

  # Let's serve pictures directly from the DB
  get '/pictures/:basename' => 'picture#show', :basename => /[\da-zA-Z]+\.[\da-zA-Z]+/

  get '/saml_login(/*path)' => 'dashboard#saml_login'
  get '/oidc_login(/*path)' => 'dashboard#oidc_login'

  # ping response for load balancing
  get '/ping' => 'ping#index'

  controller_routes.each do |controller_name, controller_actions|
    # Default route with no action to controller's index action
    unless routes_without_index.include?(controller_name)
      get controller_name.to_s, :controller => controller_name, :action => :index
    end

    default_routes.each do |action_name|
      post "#{controller_name}/#{action_name}(/:id)",
           :action     => action_name,
           :controller => controller_name
    end

    # rubocop:disable Style/Next, Style/SafeNavigation
    # One-by-one get/post routes for defined controllers
    if controller_actions.kind_of?(Hash)
      unless controller_actions[:get].nil?
        controller_actions[:get].each do |action_name|
          get "#{controller_name}/#{action_name}(/:id)",
              :action     => action_name,
              :controller => controller_name
        end
      end

      unless controller_actions[:post].nil?
        controller_actions[:post].each do |action_name|
          post "#{controller_name}/#{action_name}(/:id)",
               :action     => action_name,
               :controller => controller_name
        end
      end
    end
    # rubocop:enable Style/Next, Style/SafeNavigation
  end

  # API-like JSON trees
  get '/tree/automate_entrypoint', :to => 'tree#automate_entrypoint'
  get '/tree/automate_inline_methods', :to => 'tree#automate_inline_methods'

  # pure-angular templates
  get '/static/*id' => 'static#show', :format => false

  # prevent No route matches [GET] "/favicon.ico"
  get '/favicon.ico' => 'static#favicon', :format => false

  %w[ems_cloud ems_infra ems_physical_infra ems_container ems_network ems_storage].each do |resource|
    resources(resource.to_sym, :as => resource.pluralize.to_sym, :except => %i[create update destroy])
  end
  # rubocop:enable Layout/HashAlignment
  # rubocop:enable Layout/MultilineOperationIndentation
end
