From: Jiri Tomasek <jtomasek(a)redhat.com>
---
.../admin/hardware_profiles_controller.rb | 221 --------------
.../controllers/admin/pool_families_controller.rb | 127 --------
.../admin/provider_accounts_controller.rb | 177 ------------
src/app/controllers/admin/providers_controller.rb | 132 ---------
.../controllers/admin/realm_mappings_controller.rb | 40 ---
src/app/controllers/admin/realms_controller.rb | 90 ------
src/app/controllers/admin/roles_controller.rb | 100 -------
src/app/controllers/admin/settings_controller.rb | 44 ---
src/app/controllers/admin/users_controller.rb | 124 --------
src/app/controllers/assemblies_controller.rb | 6 +
src/app/controllers/builds_controller.rb | 110 +++++++
src/app/controllers/deployables_controller.rb | 149 ++++++++++
src/app/controllers/deployments_controller.rb | 123 ++++++++
.../controllers/hardware_profiles_controller.rb | 221 ++++++++++++++
.../image_factory/assemblies_controller.rb | 6 -
.../controllers/image_factory/builds_controller.rb | 110 -------
.../image_factory/deployables_controller.rb | 149 ----------
.../image_factory/image_imports_controller.rb | 27 --
.../image_factory/templates_controller.rb | 301 --------------------
src/app/controllers/image_imports_controller.rb | 27 ++
src/app/controllers/instances_controller.rb | 223 +++++++++++++++
src/app/controllers/pool_families_controller.rb | 127 ++++++++
src/app/controllers/pools_controller.rb | 141 +++++++++
.../controllers/provider_accounts_controller.rb | 177 ++++++++++++
src/app/controllers/providers_controller.rb | 132 +++++++++
src/app/controllers/realm_mappings_controller.rb | 40 +++
src/app/controllers/realms_controller.rb | 90 ++++++
.../resources/deployments_controller.rb | 123 --------
.../controllers/resources/instances_controller.rb | 223 ---------------
src/app/controllers/resources/pools_controller.rb | 141 ---------
src/app/controllers/roles_controller.rb | 100 +++++++
src/app/controllers/settings_controller.rb | 44 +++
src/app/controllers/templates_controller.rb | 301 ++++++++++++++++++++
src/app/controllers/users_controller.rb | 124 ++++++++
src/app/helpers/resources/instances_helper.rb | 33 ---
src/app/views/admin/hardware_profiles/_form.haml | 18 --
.../views/admin/hardware_profiles/_history.haml | 1 -
src/app/views/admin/hardware_profiles/_list.haml | 28 --
.../_matching_provider_hardware_profiles.haml | 24 --
.../views/admin/hardware_profiles/_properties.haml | 13 -
src/app/views/admin/hardware_profiles/create.haml | 6 -
src/app/views/admin/hardware_profiles/edit.haml | 7 -
src/app/views/admin/hardware_profiles/index.haml | 2 -
src/app/views/admin/hardware_profiles/new.haml | 7 -
src/app/views/admin/hardware_profiles/show.haml | 5 -
src/app/views/admin/pool_families/_form.haml | 12 -
src/app/views/admin/pool_families/_list.haml | 23 --
src/app/views/admin/pool_families/_properties.haml | 4 -
.../admin/pool_families/_provider_accounts.haml | 25 --
src/app/views/admin/pool_families/edit.haml | 7 -
src/app/views/admin/pool_families/index.haml | 2 -
src/app/views/admin/pool_families/new.haml | 3 -
src/app/views/admin/pool_families/show.haml | 5 -
.../admin/provider_accounts/_credentials.haml | 3 -
.../views/admin/provider_accounts/_history.haml | 3 -
src/app/views/admin/provider_accounts/_list.haml | 20 --
.../admin/provider_accounts/_permissions.haml | 3 -
.../views/admin/provider_accounts/_properties.haml | 13 -
.../admin/provider_accounts/_provider_form.haml | 27 --
.../provider_accounts/_provider_selection.haml | 25 --
src/app/views/admin/provider_accounts/_rhevm.haml | 2 -
src/app/views/admin/provider_accounts/edit.haml | 14 -
src/app/views/admin/provider_accounts/index.haml | 2 -
src/app/views/admin/provider_accounts/new.haml | 18 --
src/app/views/admin/provider_accounts/show.haml | 5 -
src/app/views/admin/providers/_form.haml | 15 -
src/app/views/admin/providers/_list.haml | 20 --
src/app/views/admin/providers/_properties.haml | 5 -
src/app/views/admin/providers/edit.haml | 7 -
src/app/views/admin/providers/index.haml | 2 -
src/app/views/admin/providers/new.haml | 3 -
src/app/views/admin/providers/show.haml | 5 -
src/app/views/admin/realm_mappings/new.haml | 10 -
src/app/views/admin/realm_mappings/show.haml | 5 -
src/app/views/admin/realms/_form.haml | 6 -
src/app/views/admin/realms/_list.haml | 19 --
src/app/views/admin/realms/_mapping.haml | 20 --
src/app/views/admin/realms/_properties.haml | 3 -
src/app/views/admin/realms/edit.haml | 4 -
src/app/views/admin/realms/index.haml | 2 -
src/app/views/admin/realms/new.haml | 3 -
src/app/views/admin/realms/show.haml | 5 -
src/app/views/admin/roles/_form.haml | 8 -
src/app/views/admin/roles/_list.haml | 30 --
src/app/views/admin/roles/_properties.haml | 23 --
src/app/views/admin/roles/edit.haml | 4 -
src/app/views/admin/roles/index.haml | 2 -
src/app/views/admin/roles/new.haml | 3 -
src/app/views/admin/settings/general_settings.haml | 41 ---
src/app/views/admin/settings/index.haml | 42 ---
src/app/views/admin/settings/self_service.haml | 120 --------
src/app/views/admin/users/_form.haml | 44 ---
src/app/views/admin/users/_list.haml | 40 ---
src/app/views/admin/users/_properties.haml | 98 -------
src/app/views/admin/users/edit.haml | 7 -
src/app/views/admin/users/index.haml | 2 -
src/app/views/admin/users/new.haml | 6 -
src/app/views/assemblies/index.haml | 1 +
src/app/views/deployables/_assemblies.haml | 30 ++
src/app/views/deployables/_deployments.haml | 25 ++
src/app/views/deployables/_form.haml | 10 +
src/app/views/deployables/_list.haml | 28 ++
src/app/views/deployables/_pick_assemblies.haml | 16 +
src/app/views/deployables/_properties.haml | 8 +
src/app/views/deployables/edit.haml | 4 +
src/app/views/deployables/index.haml | 2 +
src/app/views/deployables/new.haml | 3 +
src/app/views/deployables/pick_assemblies.haml | 5 +
src/app/views/deployables/show.haml | 5 +
src/app/views/deployments/_history.haml | 1 +
src/app/views/deployments/_instances.haml | 2 +
src/app/views/deployments/_list.haml | 35 +++
src/app/views/deployments/_permissions.haml | 2 +
src/app/views/deployments/_properties.haml | 2 +
src/app/views/deployments/_provider_services.haml | 1 +
src/app/views/deployments/_required_services.haml | 1 +
src/app/views/deployments/index.haml | 2 +
src/app/views/deployments/launch_new.haml | 6 +
src/app/views/deployments/new.haml | 25 ++
src/app/views/deployments/show.haml | 5 +
src/app/views/hardware_profiles/_form.haml | 18 ++
src/app/views/hardware_profiles/_history.haml | 1 +
src/app/views/hardware_profiles/_list.haml | 28 ++
.../_matching_provider_hardware_profiles.haml | 24 ++
src/app/views/hardware_profiles/_properties.haml | 13 +
src/app/views/hardware_profiles/create.haml | 6 +
src/app/views/hardware_profiles/edit.haml | 7 +
src/app/views/hardware_profiles/index.haml | 2 +
src/app/views/hardware_profiles/new.haml | 7 +
src/app/views/hardware_profiles/show.haml | 5 +
src/app/views/image_factory/assemblies/index.haml | 1 -
.../image_factory/deployables/_assemblies.haml | 30 --
.../image_factory/deployables/_deployments.haml | 25 --
src/app/views/image_factory/deployables/_form.haml | 10 -
src/app/views/image_factory/deployables/_list.haml | 28 --
.../deployables/_pick_assemblies.haml | 16 -
.../image_factory/deployables/_properties.haml | 8 -
src/app/views/image_factory/deployables/edit.haml | 4 -
src/app/views/image_factory/deployables/index.haml | 2 -
src/app/views/image_factory/deployables/new.haml | 3 -
.../image_factory/deployables/pick_assemblies.haml | 5 -
src/app/views/image_factory/deployables/show.haml | 5 -
src/app/views/image_factory/image_imports/new.haml | 8 -
.../views/image_factory/templates/_addbuttons.haml | 4 -
src/app/views/image_factory/templates/_basics.haml | 27 --
src/app/views/image_factory/templates/_builds.haml | 41 ---
.../image_factory/templates/_collections.haml | 8 -
src/app/views/image_factory/templates/_form.haml | 120 --------
.../image_factory/templates/_hidden_fields.haml | 8 -
src/app/views/image_factory/templates/_list.haml | 35 ---
.../templates/_local_content_to_bundle.haml | 21 --
.../image_factory/templates/_managed_content.haml | 21 --
.../templates/_metagroup_packages.haml | 19 --
.../views/image_factory/templates/_metagroups.haml | 13 -
.../templates/_preboot_configuration.haml | 11 -
.../views/image_factory/templates/_properties.haml | 4 -
.../image_factory/templates/_search_packages.haml | 45 ---
.../templates/_software_selection.haml | 41 ---
.../views/image_factory/templates/collections.haml | 1 -
src/app/views/image_factory/templates/edit.haml | 9 -
src/app/views/image_factory/templates/index.haml | 2 -
.../image_factory/templates/managed_content.haml | 1 -
.../templates/metagroup_packages.haml | 1 -
src/app/views/image_factory/templates/new.haml | 10 -
.../image_factory/templates/search_packages.haml | 1 -
src/app/views/image_factory/templates/show.haml | 5 -
src/app/views/image_imports/new.haml | 8 +
.../instances/_can_perform_state_change.xml.haml | 7 +
src/app/views/instances/_history.haml | 3 +
src/app/views/instances/_list.haml | 23 ++
src/app/views/instances/_permissions.haml | 3 +
src/app/views/instances/_properties.haml | 65 +++++
src/app/views/instances/index.haml | 2 +
src/app/views/instances/new.haml | 27 ++
src/app/views/instances/select_template.haml | 19 ++
src/app/views/instances/show.haml | 5 +
src/app/views/pool_families/_form.haml | 12 +
src/app/views/pool_families/_list.haml | 23 ++
src/app/views/pool_families/_properties.haml | 4 +
.../views/pool_families/_provider_accounts.haml | 25 ++
src/app/views/pool_families/edit.haml | 7 +
src/app/views/pool_families/index.haml | 2 +
src/app/views/pool_families/new.haml | 3 +
src/app/views/pool_families/show.haml | 5 +
src/app/views/pools/_deployments.haml | 3 +
src/app/views/pools/_history.haml | 3 +
src/app/views/pools/_instances.haml | 28 ++
src/app/views/pools/_list.haml | 39 +++
src/app/views/pools/_permissions.haml | 3 +
src/app/views/pools/_properties.haml | 4 +
src/app/views/pools/edit.haml | 30 ++
src/app/views/pools/index.haml | 2 +
src/app/views/pools/new.haml | 27 ++
src/app/views/pools/show.haml | 5 +
src/app/views/provider_accounts/_credentials.haml | 3 +
src/app/views/provider_accounts/_history.haml | 3 +
src/app/views/provider_accounts/_list.haml | 20 ++
src/app/views/provider_accounts/_permissions.haml | 3 +
src/app/views/provider_accounts/_properties.haml | 13 +
.../views/provider_accounts/_provider_form.haml | 27 ++
.../provider_accounts/_provider_selection.haml | 25 ++
src/app/views/provider_accounts/_rhevm.haml | 2 +
src/app/views/provider_accounts/edit.haml | 14 +
src/app/views/provider_accounts/index.haml | 2 +
src/app/views/provider_accounts/new.haml | 18 ++
src/app/views/provider_accounts/show.haml | 5 +
src/app/views/providers/_form.haml | 15 +
src/app/views/providers/_list.haml | 20 ++
src/app/views/providers/_properties.haml | 5 +
src/app/views/providers/edit.haml | 7 +
src/app/views/providers/index.haml | 2 +
src/app/views/providers/new.haml | 3 +
src/app/views/providers/show.haml | 5 +
src/app/views/realm_mappings/new.haml | 10 +
src/app/views/realm_mappings/show.haml | 5 +
src/app/views/realms/_form.haml | 6 +
src/app/views/realms/_list.haml | 19 ++
src/app/views/realms/_mapping.haml | 20 ++
src/app/views/realms/_properties.haml | 3 +
src/app/views/realms/edit.haml | 4 +
src/app/views/realms/index.haml | 2 +
src/app/views/realms/new.haml | 3 +
src/app/views/realms/show.haml | 5 +
src/app/views/resources/deployments/_history.haml | 1 -
.../views/resources/deployments/_instances.haml | 2 -
src/app/views/resources/deployments/_list.haml | 35 ---
.../views/resources/deployments/_permissions.haml | 2 -
.../views/resources/deployments/_properties.haml | 2 -
.../resources/deployments/_provider_services.haml | 1 -
.../resources/deployments/_required_services.haml | 1 -
src/app/views/resources/deployments/index.haml | 2 -
.../views/resources/deployments/launch_new.haml | 6 -
src/app/views/resources/deployments/new.haml | 25 --
src/app/views/resources/deployments/show.haml | 5 -
.../instances/_can_perform_state_change.xml.haml | 7 -
src/app/views/resources/instances/_history.haml | 3 -
src/app/views/resources/instances/_list.haml | 23 --
.../views/resources/instances/_permissions.haml | 3 -
src/app/views/resources/instances/_properties.haml | 65 -----
src/app/views/resources/instances/index.haml | 2 -
src/app/views/resources/instances/new.haml | 27 --
.../views/resources/instances/select_template.haml | 19 --
src/app/views/resources/instances/show.haml | 5 -
src/app/views/resources/pools/_deployments.haml | 3 -
src/app/views/resources/pools/_history.haml | 3 -
src/app/views/resources/pools/_instances.haml | 28 --
src/app/views/resources/pools/_list.haml | 39 ---
src/app/views/resources/pools/_permissions.haml | 3 -
src/app/views/resources/pools/_properties.haml | 4 -
src/app/views/resources/pools/edit.haml | 30 --
src/app/views/resources/pools/index.haml | 2 -
src/app/views/resources/pools/new.haml | 27 --
src/app/views/resources/pools/show.haml | 5 -
src/app/views/roles/_form.haml | 8 +
src/app/views/roles/_list.haml | 30 ++
src/app/views/roles/_properties.haml | 23 ++
src/app/views/roles/edit.haml | 4 +
src/app/views/roles/index.haml | 2 +
src/app/views/roles/new.haml | 3 +
src/app/views/settings/general_settings.haml | 41 +++
src/app/views/settings/index.haml | 42 +++
src/app/views/settings/self_service.haml | 120 ++++++++
src/app/views/templates/_addbuttons.haml | 4 +
src/app/views/templates/_basics.haml | 27 ++
src/app/views/templates/_builds.haml | 41 +++
src/app/views/templates/_collections.haml | 8 +
src/app/views/templates/_form.haml | 120 ++++++++
src/app/views/templates/_hidden_fields.haml | 8 +
src/app/views/templates/_list.haml | 35 +++
.../views/templates/_local_content_to_bundle.haml | 21 ++
src/app/views/templates/_managed_content.haml | 21 ++
src/app/views/templates/_metagroup_packages.haml | 19 ++
src/app/views/templates/_metagroups.haml | 13 +
.../views/templates/_preboot_configuration.haml | 11 +
src/app/views/templates/_properties.haml | 4 +
src/app/views/templates/_search_packages.haml | 45 +++
src/app/views/templates/_software_selection.haml | 41 +++
src/app/views/templates/collections.haml | 1 +
src/app/views/templates/edit.haml | 9 +
src/app/views/templates/index.haml | 2 +
src/app/views/templates/managed_content.haml | 1 +
src/app/views/templates/metagroup_packages.haml | 1 +
src/app/views/templates/new.haml | 10 +
src/app/views/templates/search_packages.haml | 1 +
src/app/views/templates/show.haml | 5 +
src/app/views/users/_form.haml | 44 +++
src/app/views/users/_list.haml | 40 +++
src/app/views/users/_properties.haml | 98 +++++++
src/app/views/users/edit.haml | 7 +
src/app/views/users/index.haml | 2 +
src/app/views/users/new.haml | 6 +
291 files changed, 4039 insertions(+), 4072 deletions(-)
delete mode 100644 src/app/controllers/admin/hardware_profiles_controller.rb
delete mode 100644 src/app/controllers/admin/pool_families_controller.rb
delete mode 100644 src/app/controllers/admin/provider_accounts_controller.rb
delete mode 100644 src/app/controllers/admin/providers_controller.rb
delete mode 100644 src/app/controllers/admin/realm_mappings_controller.rb
delete mode 100644 src/app/controllers/admin/realms_controller.rb
delete mode 100644 src/app/controllers/admin/roles_controller.rb
delete mode 100644 src/app/controllers/admin/settings_controller.rb
delete mode 100644 src/app/controllers/admin/users_controller.rb
create mode 100644 src/app/controllers/assemblies_controller.rb
create mode 100644 src/app/controllers/builds_controller.rb
create mode 100644 src/app/controllers/deployables_controller.rb
create mode 100644 src/app/controllers/deployments_controller.rb
create mode 100644 src/app/controllers/hardware_profiles_controller.rb
delete mode 100644 src/app/controllers/image_factory/assemblies_controller.rb
delete mode 100644 src/app/controllers/image_factory/builds_controller.rb
delete mode 100644 src/app/controllers/image_factory/deployables_controller.rb
delete mode 100644 src/app/controllers/image_factory/image_imports_controller.rb
delete mode 100644 src/app/controllers/image_factory/templates_controller.rb
create mode 100644 src/app/controllers/image_imports_controller.rb
create mode 100644 src/app/controllers/instances_controller.rb
create mode 100644 src/app/controllers/pool_families_controller.rb
create mode 100644 src/app/controllers/pools_controller.rb
create mode 100644 src/app/controllers/provider_accounts_controller.rb
create mode 100644 src/app/controllers/providers_controller.rb
create mode 100644 src/app/controllers/realm_mappings_controller.rb
create mode 100644 src/app/controllers/realms_controller.rb
delete mode 100644 src/app/controllers/resources/deployments_controller.rb
delete mode 100644 src/app/controllers/resources/instances_controller.rb
delete mode 100644 src/app/controllers/resources/pools_controller.rb
create mode 100644 src/app/controllers/roles_controller.rb
create mode 100644 src/app/controllers/settings_controller.rb
create mode 100644 src/app/controllers/templates_controller.rb
create mode 100644 src/app/controllers/users_controller.rb
delete mode 100644 src/app/helpers/resources/instances_helper.rb
delete mode 100644 src/app/views/admin/hardware_profiles/_form.haml
delete mode 100644 src/app/views/admin/hardware_profiles/_history.haml
delete mode 100644 src/app/views/admin/hardware_profiles/_list.haml
delete mode 100644
src/app/views/admin/hardware_profiles/_matching_provider_hardware_profiles.haml
delete mode 100644 src/app/views/admin/hardware_profiles/_properties.haml
delete mode 100644 src/app/views/admin/hardware_profiles/create.haml
delete mode 100644 src/app/views/admin/hardware_profiles/edit.haml
delete mode 100644 src/app/views/admin/hardware_profiles/index.haml
delete mode 100644 src/app/views/admin/hardware_profiles/new.haml
delete mode 100644 src/app/views/admin/hardware_profiles/show.haml
delete mode 100644 src/app/views/admin/pool_families/_form.haml
delete mode 100644 src/app/views/admin/pool_families/_history.haml
delete mode 100644 src/app/views/admin/pool_families/_list.haml
delete mode 100644 src/app/views/admin/pool_families/_permissions.haml
delete mode 100644 src/app/views/admin/pool_families/_pools.haml
delete mode 100644 src/app/views/admin/pool_families/_properties.haml
delete mode 100644 src/app/views/admin/pool_families/_provider_accounts.haml
delete mode 100644 src/app/views/admin/pool_families/edit.haml
delete mode 100644 src/app/views/admin/pool_families/index.haml
delete mode 100644 src/app/views/admin/pool_families/new.haml
delete mode 100644 src/app/views/admin/pool_families/show.haml
delete mode 100644 src/app/views/admin/provider_accounts/_credentials.haml
delete mode 100644 src/app/views/admin/provider_accounts/_history.haml
delete mode 100644 src/app/views/admin/provider_accounts/_list.haml
delete mode 100644 src/app/views/admin/provider_accounts/_permissions.haml
delete mode 100644 src/app/views/admin/provider_accounts/_properties.haml
delete mode 100644 src/app/views/admin/provider_accounts/_provider_form.haml
delete mode 100644 src/app/views/admin/provider_accounts/_provider_selection.haml
delete mode 100644 src/app/views/admin/provider_accounts/_rhevm.haml
delete mode 100644 src/app/views/admin/provider_accounts/edit.haml
delete mode 100644 src/app/views/admin/provider_accounts/index.haml
delete mode 100644 src/app/views/admin/provider_accounts/new.haml
delete mode 100644 src/app/views/admin/provider_accounts/show.haml
delete mode 100644 src/app/views/admin/providers/_form.haml
delete mode 100644 src/app/views/admin/providers/_history.haml
delete mode 100644 src/app/views/admin/providers/_hw_profiles.haml
delete mode 100644 src/app/views/admin/providers/_list.haml
delete mode 100644 src/app/views/admin/providers/_permissions.haml
delete mode 100644 src/app/views/admin/providers/_properties.haml
delete mode 100644 src/app/views/admin/providers/_provider_accounts.haml
delete mode 100644 src/app/views/admin/providers/_realms.haml
delete mode 100644 src/app/views/admin/providers/_services.haml
delete mode 100644 src/app/views/admin/providers/edit.haml
delete mode 100644 src/app/views/admin/providers/index.haml
delete mode 100644 src/app/views/admin/providers/new.haml
delete mode 100644 src/app/views/admin/providers/show.haml
delete mode 100644 src/app/views/admin/realm_mappings/new.haml
delete mode 100644 src/app/views/admin/realm_mappings/show.haml
delete mode 100644 src/app/views/admin/realms/_form.haml
delete mode 100644 src/app/views/admin/realms/_list.haml
delete mode 100644 src/app/views/admin/realms/_mapping.haml
delete mode 100644 src/app/views/admin/realms/_properties.haml
delete mode 100644 src/app/views/admin/realms/edit.haml
delete mode 100644 src/app/views/admin/realms/index.haml
delete mode 100644 src/app/views/admin/realms/new.haml
delete mode 100644 src/app/views/admin/realms/show.haml
delete mode 100644 src/app/views/admin/roles/_form.haml
delete mode 100644 src/app/views/admin/roles/_list.haml
delete mode 100644 src/app/views/admin/roles/_properties.haml
delete mode 100644 src/app/views/admin/roles/edit.haml
delete mode 100644 src/app/views/admin/roles/index.haml
delete mode 100644 src/app/views/admin/roles/new.haml
delete mode 100644 src/app/views/admin/settings/general_settings.haml
delete mode 100644 src/app/views/admin/settings/index.haml
delete mode 100644 src/app/views/admin/settings/self_service.haml
delete mode 100644 src/app/views/admin/users/_form.haml
delete mode 100644 src/app/views/admin/users/_list.haml
delete mode 100644 src/app/views/admin/users/_properties.haml
delete mode 100644 src/app/views/admin/users/edit.haml
delete mode 100644 src/app/views/admin/users/index.haml
delete mode 100644 src/app/views/admin/users/new.haml
create mode 100644 src/app/views/assemblies/index.haml
create mode 100644 src/app/views/builds/index.haml
create mode 100644 src/app/views/deployables/_assemblies.haml
create mode 100644 src/app/views/deployables/_deployments.haml
create mode 100644 src/app/views/deployables/_form.haml
create mode 100644 src/app/views/deployables/_list.haml
create mode 100644 src/app/views/deployables/_pick_assemblies.haml
create mode 100644 src/app/views/deployables/_properties.haml
create mode 100644 src/app/views/deployables/edit.haml
create mode 100644 src/app/views/deployables/index.haml
create mode 100644 src/app/views/deployables/new.haml
create mode 100644 src/app/views/deployables/pick_assemblies.haml
create mode 100644 src/app/views/deployables/show.haml
create mode 100644 src/app/views/deployments/_history.haml
create mode 100644 src/app/views/deployments/_instances.haml
create mode 100644 src/app/views/deployments/_list.haml
create mode 100644 src/app/views/deployments/_permissions.haml
create mode 100644 src/app/views/deployments/_properties.haml
create mode 100644 src/app/views/deployments/_provider_services.haml
create mode 100644 src/app/views/deployments/_required_services.haml
create mode 100644 src/app/views/deployments/index.haml
create mode 100644 src/app/views/deployments/launch_new.haml
create mode 100644 src/app/views/deployments/new.haml
create mode 100644 src/app/views/deployments/show.haml
create mode 100644 src/app/views/hardware_profiles/_form.haml
create mode 100644 src/app/views/hardware_profiles/_history.haml
create mode 100644 src/app/views/hardware_profiles/_list.haml
create mode 100644
src/app/views/hardware_profiles/_matching_provider_hardware_profiles.haml
create mode 100644 src/app/views/hardware_profiles/_properties.haml
create mode 100644 src/app/views/hardware_profiles/create.haml
create mode 100644 src/app/views/hardware_profiles/edit.haml
create mode 100644 src/app/views/hardware_profiles/index.haml
create mode 100644 src/app/views/hardware_profiles/new.haml
create mode 100644 src/app/views/hardware_profiles/show.haml
delete mode 100644 src/app/views/image_factory/assemblies/index.haml
delete mode 100644 src/app/views/image_factory/builds/index.haml
delete mode 100644 src/app/views/image_factory/deployables/_assemblies.haml
delete mode 100644 src/app/views/image_factory/deployables/_deployments.haml
delete mode 100644 src/app/views/image_factory/deployables/_form.haml
delete mode 100644 src/app/views/image_factory/deployables/_list.haml
delete mode 100644 src/app/views/image_factory/deployables/_pick_assemblies.haml
delete mode 100644 src/app/views/image_factory/deployables/_properties.haml
delete mode 100644 src/app/views/image_factory/deployables/edit.haml
delete mode 100644 src/app/views/image_factory/deployables/index.haml
delete mode 100644 src/app/views/image_factory/deployables/new.haml
delete mode 100644 src/app/views/image_factory/deployables/pick_assemblies.haml
delete mode 100644 src/app/views/image_factory/deployables/show.haml
delete mode 100644 src/app/views/image_factory/image_imports/new.haml
delete mode 100644 src/app/views/image_factory/templates/_addbuttons.haml
delete mode 100644 src/app/views/image_factory/templates/_basics.haml
delete mode 100644 src/app/views/image_factory/templates/_builds.haml
delete mode 100644 src/app/views/image_factory/templates/_collections.haml
delete mode 100644 src/app/views/image_factory/templates/_form.haml
delete mode 100644 src/app/views/image_factory/templates/_hidden_fields.haml
delete mode 100644 src/app/views/image_factory/templates/_list.haml
delete mode 100644 src/app/views/image_factory/templates/_local_content_to_bundle.haml
delete mode 100644 src/app/views/image_factory/templates/_managed_content.haml
delete mode 100644 src/app/views/image_factory/templates/_metagroup_packages.haml
delete mode 100644 src/app/views/image_factory/templates/_metagroups.haml
delete mode 100644 src/app/views/image_factory/templates/_preboot_configuration.haml
delete mode 100644 src/app/views/image_factory/templates/_properties.haml
delete mode 100644 src/app/views/image_factory/templates/_search_packages.haml
delete mode 100644 src/app/views/image_factory/templates/_software_selection.haml
delete mode 100644 src/app/views/image_factory/templates/collections.haml
delete mode 100644 src/app/views/image_factory/templates/edit.haml
delete mode 100644 src/app/views/image_factory/templates/index.haml
delete mode 100644 src/app/views/image_factory/templates/managed_content.haml
delete mode 100644 src/app/views/image_factory/templates/metagroup_packages.haml
delete mode 100644 src/app/views/image_factory/templates/new.haml
delete mode 100644 src/app/views/image_factory/templates/search_packages.haml
delete mode 100644 src/app/views/image_factory/templates/show.haml
create mode 100644 src/app/views/image_imports/new.haml
create mode 100644 src/app/views/instances/_can_perform_state_change.xml.haml
create mode 100644 src/app/views/instances/_history.haml
create mode 100644 src/app/views/instances/_list.haml
create mode 100644 src/app/views/instances/_permissions.haml
create mode 100644 src/app/views/instances/_properties.haml
create mode 100644 src/app/views/instances/index.haml
create mode 100644 src/app/views/instances/new.haml
create mode 100644 src/app/views/instances/select_template.haml
create mode 100644 src/app/views/instances/show.haml
create mode 100644 src/app/views/pool_families/_form.haml
create mode 100644 src/app/views/pool_families/_history.haml
create mode 100644 src/app/views/pool_families/_list.haml
create mode 100644 src/app/views/pool_families/_permissions.haml
create mode 100644 src/app/views/pool_families/_pools.haml
create mode 100644 src/app/views/pool_families/_properties.haml
create mode 100644 src/app/views/pool_families/_provider_accounts.haml
create mode 100644 src/app/views/pool_families/edit.haml
create mode 100644 src/app/views/pool_families/index.haml
create mode 100644 src/app/views/pool_families/new.haml
create mode 100644 src/app/views/pool_families/show.haml
create mode 100644 src/app/views/pools/_deployments.haml
create mode 100644 src/app/views/pools/_history.haml
create mode 100644 src/app/views/pools/_instances.haml
create mode 100644 src/app/views/pools/_list.haml
create mode 100644 src/app/views/pools/_permissions.haml
create mode 100644 src/app/views/pools/_properties.haml
create mode 100644 src/app/views/pools/edit.haml
create mode 100644 src/app/views/pools/index.haml
create mode 100644 src/app/views/pools/new.haml
create mode 100644 src/app/views/pools/show.haml
create mode 100644 src/app/views/provider_accounts/_credentials.haml
create mode 100644 src/app/views/provider_accounts/_history.haml
create mode 100644 src/app/views/provider_accounts/_list.haml
create mode 100644 src/app/views/provider_accounts/_permissions.haml
create mode 100644 src/app/views/provider_accounts/_properties.haml
create mode 100644 src/app/views/provider_accounts/_provider_form.haml
create mode 100644 src/app/views/provider_accounts/_provider_selection.haml
create mode 100644 src/app/views/provider_accounts/_rhevm.haml
create mode 100644 src/app/views/provider_accounts/edit.haml
create mode 100644 src/app/views/provider_accounts/index.haml
create mode 100644 src/app/views/provider_accounts/new.haml
create mode 100644 src/app/views/provider_accounts/show.haml
create mode 100644 src/app/views/providers/_form.haml
create mode 100644 src/app/views/providers/_history.haml
create mode 100644 src/app/views/providers/_hw_profiles.haml
create mode 100644 src/app/views/providers/_list.haml
create mode 100644 src/app/views/providers/_permissions.haml
create mode 100644 src/app/views/providers/_properties.haml
create mode 100644 src/app/views/providers/_provider_accounts.haml
create mode 100644 src/app/views/providers/_realms.haml
create mode 100644 src/app/views/providers/_services.haml
create mode 100644 src/app/views/providers/edit.haml
create mode 100644 src/app/views/providers/index.haml
create mode 100644 src/app/views/providers/new.haml
create mode 100644 src/app/views/providers/show.haml
create mode 100644 src/app/views/realm_mappings/new.haml
create mode 100644 src/app/views/realm_mappings/show.haml
create mode 100644 src/app/views/realms/_form.haml
create mode 100644 src/app/views/realms/_list.haml
create mode 100644 src/app/views/realms/_mapping.haml
create mode 100644 src/app/views/realms/_properties.haml
create mode 100644 src/app/views/realms/edit.haml
create mode 100644 src/app/views/realms/index.haml
create mode 100644 src/app/views/realms/new.haml
create mode 100644 src/app/views/realms/show.haml
delete mode 100644 src/app/views/resources/deployments/_history.haml
delete mode 100644 src/app/views/resources/deployments/_instances.haml
delete mode 100644 src/app/views/resources/deployments/_list.haml
delete mode 100644 src/app/views/resources/deployments/_permissions.haml
delete mode 100644 src/app/views/resources/deployments/_properties.haml
delete mode 100644 src/app/views/resources/deployments/_provider_services.haml
delete mode 100644 src/app/views/resources/deployments/_required_services.haml
delete mode 100644 src/app/views/resources/deployments/index.haml
delete mode 100644 src/app/views/resources/deployments/launch_new.haml
delete mode 100644 src/app/views/resources/deployments/new.haml
delete mode 100644 src/app/views/resources/deployments/show.haml
delete mode 100644 src/app/views/resources/instances/_can_perform_state_change.xml.haml
delete mode 100644 src/app/views/resources/instances/_history.haml
delete mode 100644 src/app/views/resources/instances/_list.haml
delete mode 100644 src/app/views/resources/instances/_permissions.haml
delete mode 100644 src/app/views/resources/instances/_properties.haml
delete mode 100644 src/app/views/resources/instances/index.haml
delete mode 100644 src/app/views/resources/instances/new.haml
delete mode 100644 src/app/views/resources/instances/select_template.haml
delete mode 100644 src/app/views/resources/instances/show.haml
delete mode 100644 src/app/views/resources/pools/_deployments.haml
delete mode 100644 src/app/views/resources/pools/_history.haml
delete mode 100644 src/app/views/resources/pools/_instances.haml
delete mode 100644 src/app/views/resources/pools/_list.haml
delete mode 100644 src/app/views/resources/pools/_permissions.haml
delete mode 100644 src/app/views/resources/pools/_properties.haml
delete mode 100644 src/app/views/resources/pools/edit.haml
delete mode 100644 src/app/views/resources/pools/index.haml
delete mode 100644 src/app/views/resources/pools/new.haml
delete mode 100644 src/app/views/resources/pools/show.haml
create mode 100644 src/app/views/roles/_form.haml
create mode 100644 src/app/views/roles/_list.haml
create mode 100644 src/app/views/roles/_properties.haml
create mode 100644 src/app/views/roles/edit.haml
create mode 100644 src/app/views/roles/index.haml
create mode 100644 src/app/views/roles/new.haml
create mode 100644 src/app/views/settings/general_settings.haml
create mode 100644 src/app/views/settings/index.haml
create mode 100644 src/app/views/settings/self_service.haml
create mode 100644 src/app/views/templates/_addbuttons.haml
create mode 100644 src/app/views/templates/_basics.haml
create mode 100644 src/app/views/templates/_builds.haml
create mode 100644 src/app/views/templates/_collections.haml
create mode 100644 src/app/views/templates/_form.haml
create mode 100644 src/app/views/templates/_hidden_fields.haml
create mode 100644 src/app/views/templates/_list.haml
create mode 100644 src/app/views/templates/_local_content_to_bundle.haml
create mode 100644 src/app/views/templates/_managed_content.haml
create mode 100644 src/app/views/templates/_metagroup_packages.haml
create mode 100644 src/app/views/templates/_metagroups.haml
create mode 100644 src/app/views/templates/_preboot_configuration.haml
create mode 100644 src/app/views/templates/_properties.haml
create mode 100644 src/app/views/templates/_search_packages.haml
create mode 100644 src/app/views/templates/_software_selection.haml
create mode 100644 src/app/views/templates/collections.haml
create mode 100644 src/app/views/templates/edit.haml
create mode 100644 src/app/views/templates/index.haml
create mode 100644 src/app/views/templates/managed_content.haml
create mode 100644 src/app/views/templates/metagroup_packages.haml
create mode 100644 src/app/views/templates/new.haml
create mode 100644 src/app/views/templates/search_packages.haml
create mode 100644 src/app/views/templates/show.haml
create mode 100644 src/app/views/users/_form.haml
create mode 100644 src/app/views/users/_list.haml
create mode 100644 src/app/views/users/_properties.haml
create mode 100644 src/app/views/users/edit.haml
create mode 100644 src/app/views/users/index.haml
create mode 100644 src/app/views/users/new.haml
diff --git a/src/app/controllers/admin/hardware_profiles_controller.rb
b/src/app/controllers/admin/hardware_profiles_controller.rb
deleted file mode 100644
index e82580b..0000000
--- a/src/app/controllers/admin/hardware_profiles_controller.rb
+++ /dev/null
@@ -1,221 +0,0 @@
-class Admin::HardwareProfilesController < ApplicationController
- before_filter :require_user, :except => :matching_profiles
- before_filter :set_params_and_header, :only => [:index, :show]
- before_filter :load_hardware_profiles, :only => [:index, :show]
- before_filter :load_hardware_profile, :only => [:show]
- before_filter :setup_new_hardware_profile, :only => [:new]
- before_filter :setup_hardware_profile, :only => [:new, :create, :edit, :update]
-
- def index
- @params = params
- respond_to do |format|
- format.js do
- build_hardware_profile(params[:hardware_profile])
- matching_provider_hardware_profiles
- render :partial => 'matching_provider_hardware_profiles' and return
- end
- format.html do
- @search_term = params[:q]
- if @search_term.blank?
- load_hardware_profiles
- return
- end
-
- search = HardwareProfile.search do
- keywords(params[:q])
- with(:frontend, true)
- end
- @hardware_profiles = search.results
- end
- end
- end
-
- def show
- @hardware_profile = HardwareProfile.find(params[:id].to_a.first)
- @tab_captions = ['Properties', 'History', 'Matching Provider
Hardware Profiles']
- @details_tab = params[:details_tab].blank? ? 'properties' :
params[:details_tab]
- case @details_tab
- when 'properties'
- properties
- when 'matching_provider_hardware_profiles'
- matching_provider_hardware_profiles
- end
- respond_to do |format|
- format.js do
- if @url_params.delete :details_pane
- render :partial => 'layouts/details_pane' and return
- end
- render :partial => @details_tab and return
- end
- format.html { render :action => 'show'}
- end
- end
-
- def new
- respond_to do |format|
- format.js { render :partial => 'matching_provider_hardware_profiles' }
- format.html { render :action => 'new'}
- end
- end
-
- def create
- build_hardware_profile(params[:hardware_profile])
- if params[:commit] == 'Save'
- if @hardware_profile.save!
- redirect_to admin_hardware_profiles_path
- else
- params.delete :commit
- render :action => 'create'
- end
- else
- matching_provider_hardware_profiles
- render :action => 'new'
- end
- kick_condor
- end
-
- def delete
- kick_condor
- end
-
- def edit
- unless @hardware_profile
- @hardware_profile = HardwareProfile.find(params[:id])
- end
- matching_provider_hardware_profiles
- end
-
- def update
- if params[:commit] == "Reset"
- redirect_to edit_admin_hardware_profile_url(@hardware_profile) and return
- end
-
- if params[:id]
- @hardware_profile = HardwareProfile.find(params[:id])
- build_hardware_profile(params[:hardware_profile])
- end
-
- if params[:commit] == "Check Matches"
- matching_provider_hardware_profiles
- render :edit and return
- end
-
- unless @hardware_profile.save!
- render :action => 'edit' and return
- else
- flash[:notice] = "Hardware Profile updated!"
- redirect_to admin_hardware_profiles_path
- end
- kick_condor
- end
-
- def multi_destroy
- HardwareProfile.destroy(params[:hardware_profile_selected])
- kick_condor
- redirect_to admin_hardware_profiles_path
- end
-
- private
- def setup_new_hardware_profile
- if params[:hardware_profile]
- begin
- @hardware_profile =
HardwareProfile.new(remove_irrelevant_params(params[:hardware_profile]))
- end
- else
- @hardware_profile = HardwareProfile.new(:memory =>
HardwareProfileProperty.new(:name => "memory", :unit => "MB"),
- :cpu =>
HardwareProfileProperty.new(:name => "cpu", :unit => "count"),
- :storage =>
HardwareProfileProperty.new(:name => "storage", :unit => "GB"),
- :architecture =>
HardwareProfileProperty.new(:name => "architecture", :unit =>
"label"))
- end
- matching_provider_hardware_profiles
- end
-
- def properties
- @properties_header = [
- { :name => "Name", :sort_attr => :name},
- { :name => "Unit", :sort_attr => :unit},
- { :name => "Minimum Value", :sort_attr => :value}]
- @hwp_properties = [@hardware_profile.memory, @hardware_profile.cpu,
@hardware_profile.storage, @hardware_profile.architecture]
- end
-
- #TODO Update this method when moving to new HWP Model
- def matching_provider_hardware_profiles
- @provider_hwps_header = [
- { :name => "Provider Name", :sort_attr => "provider.name"
},
- { :name => "Hardware Profile Name", :sort_attr => :name },
- { :name => "Architecture", :sort_attr => :architecture },
- { :name => "Memory", :sort_attr => :memory},
- { :name => "Storage", :sort_attr => :storage },
- { :name => "Virtual CPU", :sort_attr => :cpu}
- ]
-
- begin
- @matching_hwps = HardwareProfile.matching_hardware_profiles(@hardware_profile)
- rescue Exception => e
- @matching_hwps = []
- end
- end
-
- def setup_hardware_profile
- @tab_captions = ['Matched Provider Hardware Profiles']
- @details_tab = 'matching_provider_hardware_profiles'
- @url_params = params
- @header = [
- { :name => "Name", :sort_attr => :name},
- { :name => "Unit", :sort_attr => :unit},
- { :name => "Minimum Value", :sort_attr => :value}]
- end
-
- def set_params_and_header
- @url_params = params
- @header = [
- { :name => "Hardware Profile Name", :sort_attr => :name },
- { :name => "Architecture", :sort_attr => :architecture },
- { :name => "Memory", :sort_attr => :memory},
- { :name => "Storage", :sort_attr => :storage },
- { :name => "Virtual CPU", :sort_attr => :cpu}
- ]
- end
-
- def load_hardware_profiles
- sort_field = params[:order_field].nil? ? "name" : params[:order_field]
- sort_order = params[:order_dir] == "asc" || params[:order_dir].nil? ?
"" : "desc"
- if sort_field == "name"
- @hardware_profiles = HardwareProfile.all(:order => sort_field + " " +
sort_order, :conditions => 'provider_id IS NULL')
- else
- @hardware_profiles = HardwareProfile.all(:conditions => 'provider_id IS
NULL')
- if sort_order == ""
- @hardware_profiles.sort! {|x,y| x.get_property_map[sort_field].sort_value(true)
<=> y.get_property_map[sort_field].sort_value(true)}
- else
- @hardware_profiles.sort! {|x,y| y.get_property_map[sort_field].sort_value(false)
<=> x.get_property_map[sort_field].sort_value(false)}
- end
- end
- end
-
- def load_hardware_profile
- @hardware_profile = HardwareProfile.find(params[:id])
- end
-
- def build_hardware_profile(params)
- if @hardware_profile.nil?
- @hardware_profile = HardwareProfile.new
- end
-
- @hardware_profile.name = params[:name]
- @hardware_profile.memory = create_hwpp((a)hardware_profile.memory,
params[:memory_attributes])
- @hardware_profile.storage = create_hwpp((a)hardware_profile.storage,
params[:storage_attributes])
- @hardware_profile.cpu = create_hwpp((a)hardware_profile.cpu, params[:cpu_attributes])
- @hardware_profile.architecture = create_hwpp((a)hardware_profile.architecture,
params[:architecture_attributes])
- end
-
- def create_hwpp(hwpp, params)
- hardwareProfileProperty = hwpp.nil? ? HardwareProfileProperty.new : hwpp
-
- hardwareProfileProperty.name = params[:name]
- hardwareProfileProperty.kind = "fixed"
- hardwareProfileProperty.value = params[:value]
- hardwareProfileProperty.unit = params[:unit]
- return hardwareProfileProperty
- end
-
-end
diff --git a/src/app/controllers/admin/pool_families_controller.rb
b/src/app/controllers/admin/pool_families_controller.rb
deleted file mode 100644
index fa4e03f..0000000
--- a/src/app/controllers/admin/pool_families_controller.rb
+++ /dev/null
@@ -1,127 +0,0 @@
-class Admin::PoolFamiliesController < ApplicationController
- before_filter :require_user
- before_filter :set_params_and_header, :only => [:index, :show]
- before_filter :load_pool_families, :only =>[:show]
- before_filter :load_tab_captions_and_details_tab, :only => [:show]
-
- def index
- @search_term = params[:q]
- if @search_term.blank?
- load_pool_families
- return
- end
-
- search = PoolFamily.search() do
- keywords(params[:q])
- end
- @pool_families = search.results
- end
-
- def new
- @pool_family = PoolFamily.new(:quota => Quota.new)
- end
-
- def create
- @pool_family = PoolFamily.new(params[:pool_family])
- unless @pool_family.save
- flash.now[:warning] = "Pool family's creation failed."
- render :new and return
- else
- @pool_family.assign_owner_roles(current_user)
- flash[:notice] = "Pool family was added."
- redirect_to admin_pool_families_path
- end
- end
-
- def edit
- @pool_family = PoolFamily.find(params[:id])
- @pool_family.quota ||= Quota.new
- end
-
- def update
- @pool_family = PoolFamily.find(params[:id])
- unless @pool_family.update_attributes(params[:pool_family])
- flash[:error] = "Pool Family wasn't updated!"
- render :action => 'edit' and return
- else
- flash[:notice] = "Pool Family was updated!"
- redirect_to admin_pool_families_path
- end
- end
-
- def show
- @pool_family = PoolFamily.find(params[:id])
- @url_params = params.clone
-
- respond_to do |format|
- format.js do
- if @url_params.delete :details_pane
- render :partial => 'layouts/details_pane' and return
- end
- render :partial => @details_tab and return
- end
- format.html { render :show }
- end
- end
-
- def add_provider_account
- @pool_family = PoolFamily.find(params[:id])
- @provider_account = ProviderAccount.find(params[:provider_account_id])
-
- @pool_family.provider_accounts << @provider_account
- flash[:notice] = "Provider Account has been added"
- redirect_to admin_pool_family_path(@pool_family, :details_tab =>
'provider_accounts')
- end
-
- def multi_destroy
- deleted = []
- not_deleted = []
- PoolFamily.find(params[:pool_family_selected]).each do |pool_family|
- if pool_family.destroy
- deleted << pool_family.name
- else
- not_deleted << pool_family.name
- end
- end
- if deleted.size > 0
- flash[:notice] = t 'pool_families.index.deleted', :list =>
deleted.join(', ')
- end
- if not_deleted.size > 0
- flash[:error] = t 'pool_families.index.not_deleted', :list =>
not_deleted.join(', ')
- end
- redirect_to admin_pool_families_path
- end
-
- def multi_destroy_provider_accounts
- @pool_family = PoolFamily.find(params[:pool_family_id])
-
- ProviderAccount.find(params[:provider_account_selected]).each do |provider_account|
- @pool_family.provider_accounts.delete provider_account
- end
-
- redirect_to admin_pool_family_path(@pool_family, :details_tab =>
'provider_accounts')
- end
-
- protected
-
- def load_tab_captions_and_details_tab
- @tab_captions = ['Properties', 'History', 'Permissions',
'Provider Accounts', 'Pools']
- @details_tab = params[:details_tab].blank? ? 'properties' :
params[:details_tab]
- @provider_accounts_header = [{ :name => "Provider Account", :sort_attr
=> :name}]
- end
-
- def set_params_and_header
- @url_params = params.clone
- @header = [{ :name => "Name", :sort_attr => :name},
- { :name => "Quota limit", :sort_attr => :name},
- { :name => "Quota currently in use", :sort_attr =>
:name},
- ]
- end
-
- def load_pool_families
- @pool_families = PoolFamily.paginate(:all,
- :page => params[:page] || 1,
- :order => ( params[:order_field] ||
'name' ) + ' ' + (params[:order_dir] || 'asc')
- )
- end
-end
diff --git a/src/app/controllers/admin/provider_accounts_controller.rb
b/src/app/controllers/admin/provider_accounts_controller.rb
deleted file mode 100644
index 01aa549..0000000
--- a/src/app/controllers/admin/provider_accounts_controller.rb
+++ /dev/null
@@ -1,177 +0,0 @@
-class Admin::ProviderAccountsController < ApplicationController
- before_filter :require_user
- before_filter :load_accounts, :only => :show
- before_filter :set_view_vars, :only => [:index,:show]
-
- def index
- @search_term = params[:q]
- if @search_term.blank?
- load_accounts
- else
- search = ProviderAccount.search do
- keywords(params[:q])
- end
- @accounts = search.results
- end
- end
-
- def show
- @tab_captions = ['Properties', 'Credentials', 'History',
'Permissions']
- @account = ProviderAccount.find(params[:id])
- require_privilege(Privilege::VIEW, @account)
- @details_tab = params[:details_tab].blank? ? 'properties' :
params[:details_tab]
-
- if params.delete :test_account
- test_account(@account)
- render :action => 'show' and return
- end
-
- respond_to do |format|
- format.js do
- if @url_params.delete :details_pane
- render :partial => 'layouts/details_pane' and return
- end
- render :partial => @details_tab and return
- end
- format.html { render :action => 'show'}
- end
- end
-
- def new
- @provider_account = ProviderAccount.new
- @quota = Quota.new
- @providers = Provider.all
- if @providers.empty?
- flash[:error] = "You don't have any provider yet. Please create
one!"
- else
- @selected_provider = @providers.first unless @providers.blank?
- end
- end
-
- def create
- @selected_provider = @provider =
Provider.find(params[:provider_account][:provider_id])
- require_privilege(Privilege::CREATE, ProviderAccount, @provider)
-
- @providers = Provider.all
- @provider_account = ProviderAccount.new(params[:provider_account])
- @provider_account.provider = @provider
- @provider_account.quota = @quota = Quota.new
-
- limit = params[:quota][:maximum_running_instances] if params[:quota]
- @provider_account.quota.set_maximum_running_instances(limit)
-
- if @provider_account.invalid? || !(a)provider_account.valid_credentials?
- flash[:error] = "Credentials are invalid!"
- render :action => 'new' and return
- end
-
- @provider_account.pool_families << PoolFamily.default
- @provider_account.save!
- @provider_account.assign_owner_roles(current_user)
- if @provider_account.populate_realms
- flash[:notice] = "Provider account added."
- end
- redirect_to admin_provider_account_path(@provider_account)
- kick_condor
- end
-
- def edit
- @provider_account = ProviderAccount.find(params[:id])
- @selected_provider = @provider_account.provider
- @quota = @provider_account.quota
- @providers = Provider.find(:all)
- require_privilege(Privilege::MODIFY,@provider_account)
- end
-
- def update
- @provider_account = ProviderAccount.find(params[:id])
- @selected_provider = @provider = @provider_account.provider
- require_privilege(Privilege::MODIFY, @provider)
- require_privilege(Privilege::MODIFY,@provider_account)
- @quota = @provider_account.quota
- @providers = Provider.find(:all)
-
- limit = params[:quota][:maximum_running_instances] if params[:quota]
- @provider_account.quota.set_maximum_running_instances(limit)
- if @provider_account.update_attributes(params[:provider_account])
- flash[:notice] = "Provider Account updated!"
- redirect_to admin_provider_account_path(@provider_account)
- else
- flash[:error] = "Provider Account wasn't updated!"
- render :action => :edit
- end
- end
-
- def multi_destroy
- if params[:accounts_selected].blank?
- flash[:notice] = "You must select some accounts first."
- redirect_to admin_provider_accounts_url and return
- end
-
- succeeded = []
- failed = []
- ProviderAccount.find(params[:accounts_selected]).each do |account|
- if check_privilege(Privilege::MODIFY, account) && account.destroyable?
- account.destroy
- succeeded << account.label
- else
- failed << account.label
- end
- end
-
- unless succeeded.empty?
- flash[:notice] = t 'provider_accounts.index.account_deleted', :count =>
succeeded.length, :list => succeeded.join(', ')
- end
- unless failed.empty?
- flash[:error] = t 'provider_accounts.index.account_not_deleted', :count
=> failed.length, :list => failed.join(', ')
- end
- kick_condor
- redirect_to admin_provider_accounts_url
- end
-
- def set_selected_provider
- @quota = Quota.new
- @provider_account = ProviderAccount.new
- respond_to do |format|
- format.js {
- @providers = Provider.find(:all)
- @selected_provider = Provider.find(params[:provider_account][:provider_id])
- render :partial => 'provider_selection'
- }
- format.html {
- @providers = Provider.find(:all)
- @selected_provider = Provider.find(params[:provider_account][:provider_id])
- render :action => 'new', :layout => true
- }
- end
- end
-
- protected
-
- def test_account(account)
- if account.valid_credentials?
- flash.now[:notice] = "Test Connection Success: Valid Account Details"
- else
- flash.now[:error] = "Test Connection Failed: Invalid Account Details"
- end
- rescue
- flash.now[:error] = "Test Connection Failed: Could not connect to
provider"
- end
-
- def set_view_vars
- #FIXME need to include atributes from credentials, credential_definitions and
provider_type in load_accounts query to make it work
- @header = [
- { :name => "Name", :sortable => false },
- { :name => "Username", :sortable => false},
- { :name => "Provider Type", :sortable => false }
- ]
- @url_params = params
- end
-
- def load_accounts
- @accounts = ProviderAccount.paginate(:all,
- :page => params[:page] || 1,
- :order => (params[:order_field] || 'label') +' '+
(params[:order_dir] || 'asc')
- )
- end
-end
diff --git a/src/app/controllers/admin/providers_controller.rb
b/src/app/controllers/admin/providers_controller.rb
deleted file mode 100644
index 16e07de..0000000
--- a/src/app/controllers/admin/providers_controller.rb
+++ /dev/null
@@ -1,132 +0,0 @@
-class Admin::ProvidersController < ApplicationController
- before_filter :require_user
- before_filter :set_view_envs, :only => [:show, :index]
-
- def index
- @params = params
- @search_term = params[:q]
- if @search_term.blank?
- load_providers
- return
- end
-
- search = Provider.search do
- keywords(params[:q])
- end
- @providers = search.results
- end
-
- def new
- require_privilege(Privilege::CREATE, Provider)
- @provider = Provider.new
- end
-
- def edit
- @provider = Provider.find_by_id(params[:id])
- require_privilege(Privilege::MODIFY, @provider)
- end
-
- def show
- load_providers
- @provider = Provider.find(params[:id])
- @hardware_profiles = @provider.hardware_profiles
- @realm_names = @provider.realms.collect { |r| r.name }
-
- @url_params = params.clone
- require_privilege(Privilege::VIEW, @provider)
- @tab_captions = ['Properties', 'HW Profiles', 'Realms',
'Provider Accounts', 'Services','History','Permissions']
- @details_tab = params[:details_tab].blank? ? 'properties' :
params[:details_tab]
-
- if params.delete :test_provider
- test_connection(@provider)
- end
-
- respond_to do |format|
- format.js do
- if @url_params.delete :details_pane
- render :partial => 'layouts/details_pane' and return
- end
- render :partial => @details_tab and return
- end
- format.html { render :action => 'show' }
- end
- end
-
- def create
- require_privilege(Privilege::CREATE, Provider)
- if params[:provider].has_key?(:provider_type_codename)
- provider_type = params[:provider].delete(:provider_type_codename)
- provider_type = ProviderType.find_by_codename(provider_type)
- params[:provider][:provider_type_id] = provider_type.id
- end
- @provider = Provider.new(params[:provider])
- if !(a)provider.connect
- flash[:notice] = "Failed to connect to Provider"
- render :action => "new"
- else
- if @provider.save && @provider.populate_hardware_profiles
- @provider.assign_owner_roles(current_user)
- flash[:notice] = "Provider added."
- redirect_to admin_providers_path
- else
- flash[:notice] = "Cannot add the provider."
- render :action => "new"
- end
- kick_condor
- end
- end
-
- def update
- @provider = Provider.find_by_id(params[:id])
- require_privilege(Privilege::MODIFY, @provider)
- @provider.update_attributes(params[:provider])
- if !(a)provider.connect
- flash[:notice] = "Failed to connect to Provider"
- render :action => "edit"
- else
- if @provider.errors.empty? and @provider.save
- flash[:notice] = "Provider updated."
- redirect_to admin_providers_path
- else
- flash[:notice] = "Cannot update the provider."
- render :action => 'edit'
- end
- kick_condor
- end
- end
-
- def multi_destroy
- Provider.find(params[:provider_selected]).each do |provider|
- provider.destroy if check_privilege(Privilege::MODIFY, provider)
- end
- kick_condor
- redirect_to admin_providers_url
- end
-
- def test_connection(provider)
- @provider.errors.clear
- if @provider.connect
- flash[:notice] = "Successfuly Connected to Provider"
- else
- flash[:notice] = "Failed to Connect to Provider"
- @provider.errors.add :url
- end
- end
-
- protected
- def set_view_envs
- @header = [{ :name => "Provider name", :sort_attr => :name },
- { :name => "Provider URL", :sort_attr => :name }
- ]
- @url_params = params.clone
- end
-
- def load_providers
- @header = [{ :name => "Provider name", :sort_attr => :name },
- { :name => "Provider URL", :sort_attr => :name },
- { :name => "Provider Type", :sort_attr => :name }
- ]
- @providers = Provider.list_for_user(@current_user, Privilege::VIEW)
- @url_params = params.clone
- end
-end
diff --git a/src/app/controllers/admin/realm_mappings_controller.rb
b/src/app/controllers/admin/realm_mappings_controller.rb
deleted file mode 100644
index cf84e2c..0000000
--- a/src/app/controllers/admin/realm_mappings_controller.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-class Admin::RealmMappingsController < ApplicationController
- before_filter :require_user
-
- def new
- require_privilege(Privilege::CREATE, Realm)
- @realm_target = RealmBackendTarget.new(:frontend_realm_id =>
params[:frontend_realm_id], :realm_or_provider_type =>
params[:realm_or_provider_type])
- load_backend_targets
- end
-
- def create
- require_privilege(Privilege::CREATE, Realm)
- @realm_target = RealmBackendTarget.new(params[:realm_backend_target])
- if @realm_target.save
- flash[:notice] = "Realm mapping was added."
- redirect_to admin_realm_path((a)realm_target.frontend_realm, :details_tab =>
'mapping') and return
- #redirect_to admin_realms_path and return
- end
-
- load_backend_targets
- render :new
- end
-
- def multi_destroy
- require_privilege(Privilege::MODIFY, Realm)
- if params[:id].blank?
- flash[:error] = 'You must select at least one mapping to delete.'
- redirect_to admin_realm_path(params[:frontend_realm_id], :details_tab =>
'mapping')
- else
- # TODO: add permissions checks
- destroyed = RealmBackendTarget.destroy(params[:id])
- redirect_to admin_realm_path(destroyed.first.frontend_realm_id, :details_tab =>
'mapping')
- end
- end
-
- protected
-
- def load_backend_targets
- @backend_targets = @realm_target.realm_or_provider_type == 'Realm' ?
Realm.all : Provider.list_for_user(@current_user, Privilege::VIEW)
- end
-end
diff --git a/src/app/controllers/admin/realms_controller.rb
b/src/app/controllers/admin/realms_controller.rb
deleted file mode 100644
index bcfd7a8..0000000
--- a/src/app/controllers/admin/realms_controller.rb
+++ /dev/null
@@ -1,90 +0,0 @@
-class Admin::RealmsController < ApplicationController
- before_filter :require_user
- before_filter :load_realms, :only =>[:index,:show]
-
- def new
- require_privilege(Privilege::CREATE, Realm)
- @realm = FrontendRealm.new
- load_backend_realms
- end
-
- def edit
- require_privilege(Privilege::MODIFY, Realm)
- @realm = FrontendRealm.find(params[:id])
- load_backend_realms
- end
-
- def update
- require_privilege(Privilege::MODIFY, Realm)
- @realm = FrontendRealm.find(params[:id])
-
- if params[:commit] == "Reset"
- redirect_to edit_admin_realm_url(@realm) and return
- end
-
- if @realm.update_attributes(params[:frontend_realm])
- flash[:notice] = 'Realm updated successfully!'
- redirect_to admin_realms_url and return
- end
-
- load_backend_realms
- render :action => 'edit'
- end
-
- def create
- require_privilege(Privilege::CREATE, Realm)
- @realm = FrontendRealm.new(params[:frontend_realm])
- if @realm.save
- flash[:notice] = "Realm was added."
- redirect_to admin_realms_path and return
- end
-
- load_backend_realms
- render :new
- end
-
- def multi_destroy
- if params[:id].blank?
- flash[:error] = 'You must select at least one realm to delete.'
- else
- require_privilege(Privilege::MODIFY, Realm)
- FrontendRealm.destroy(params[:id])
- end
- redirect_to admin_realms_path
- end
-
- def show
- @realm = FrontendRealm.find(params[:id])
-
- @url_params = params.clone
- @tab_captions = ['Properties', 'Mapping']
- @details_tab = params[:details_tab].blank? ? 'properties' :
params[:details_tab]
- if @details_tab == 'mapping'
- @backend_realm_targets = @realm.realm_backend_targets.select {|x|
x.realm_or_provider_type == 'Realm'}
- @backend_provider_targets = @realm.realm_backend_targets.select {|x|
x.realm_or_provider_type == 'Provider'}
- end
- respond_to do |format|
- format.js do
- if @url_params.delete :details_pane
- render :partial => 'layouts/details_pane' and return
- end
- render :partial => @details_tab
- end
- format.html { render :action => 'show'}
- end
- end
-
- protected
-
- def load_backend_realms
- #TODO: list only realms user has permission on
- @backend_realms = Realm.all
- @providers = Provider.list_for_user(current_user, Privilege::VIEW)
- end
-
- def load_realms
- @header = [{ :name => "Name", :sort_attr => :name}]
- @url_params = params.clone
- @realms = FrontendRealm.all
- end
-end
diff --git a/src/app/controllers/admin/roles_controller.rb
b/src/app/controllers/admin/roles_controller.rb
deleted file mode 100644
index a373c1b..0000000
--- a/src/app/controllers/admin/roles_controller.rb
+++ /dev/null
@@ -1,100 +0,0 @@
-class Admin::RolesController < ApplicationController
- before_filter :require_user
- before_filter :load_roles, :only => [:show]
- before_filter :load_params_and_headers, :only => [:index]
-
- def index
- @search_term = params[:q]
- if @search_term.blank?
- load_roles
- return
- end
-
- search = Role.search() do
- keywords(params[:q])
- end
- @roles = search.results
- end
-
- def new
- require_privilege(Privilege::PERM_SET)
- @role = Role.new
- end
-
- def create
- require_privilege(Privilege::PERM_SET)
- @role = Role.new(params[:role])
-
- # TODO: (lmartinc) Fix this and let user select the scope. Consult with sseago.
- @role.scope = BasePermissionObject.to_s if @role.scope.nil?
-
- if @role.save
- flash[:notice] = 'Role successfully saved!'
- redirect_to admin_roles_path and return
- end
-
- render :action => 'new'
- end
-
- def show
- require_privilege(Privilege::PERM_VIEW)
- @role = Role.find(params[:id])
-
- @url_params = params.clone
- @tab_captions = ['Properties']
- @details_tab = params[:details_tab].blank? ? 'properties' :
params[:details_tab]
- respond_to do |format|
- format.js do
- if @url_params.delete :details_pane
- render :partial => 'layouts/details_pane' and return
- end
- render :partial => @details_tab
- end
- format.html { render :partial => @details_tab }
- end
- end
-
- def edit
- require_privilege(Privilege::PERM_SET)
- @role = Role.find(params[:id])
- end
-
- def update
- require_privilege(Privilege::PERM_SET)
- @role = Role.find(params[:id])
-
- if params[:commit] == "Reset"
- redirect_to edit_admin_role_url(@role) and return
- end
-
- if @role.update_attributes(params[:role])
- flash[:notice] = 'Role updated successfully!'
- redirect_to admin_roles_url and return
- end
-
- render :action => 'edit'
- end
-
- def multi_destroy
- require_privilege(Privilege::PERM_SET)
- Role.destroy(params[:role_selected])
- redirect_to admin_roles_url
- end
-
- protected
-
- def load_params_and_headers
- @header = [
- { :name => "Role name", :sort_attr => :name }
- ]
- @url_params = params.clone
- end
-
- def load_roles
- @roles = Role.paginate(:all,
- :page => params[:page] || 1,
- :order => (params[:order_field] || 'name') +' '+
(params[:order_dir] || 'asc')
- )
- end
-
-end
diff --git a/src/app/controllers/admin/settings_controller.rb
b/src/app/controllers/admin/settings_controller.rb
deleted file mode 100644
index a6f5cec..0000000
--- a/src/app/controllers/admin/settings_controller.rb
+++ /dev/null
@@ -1,44 +0,0 @@
-class Admin::SettingsController < ApplicationController
- before_filter :require_user
-
- # Settings MetaData Keys
- SELF_SERVICE_DEFAULT_QUOTA = "self_service_default_quota"
- KEYS = [SELF_SERVICE_DEFAULT_QUOTA]
-
- def self_service
- require_privilege(Privilege::MODIFY)
- @self_service_default_quota = MetadataObject.lookup(SELF_SERVICE_DEFAULT_QUOTA)
- end
-
- def general_settings
- require_privilege(Privilege::MODIFY)
- end
-
- def update
- KEYS.each do |key|
- if params[key]
- if key == SELF_SERVICE_DEFAULT_QUOTA
- @self_service_default_quota = MetadataObject.lookup(key)
- if !(a)self_service_default_quota.update_attributes(params[key])
- flash[:notice] = "Could not update the default quota"
- render :self_service
- return
- end
- elsif key == SELF_SERVICE_DEFAULT_POOL
- if Pool.exists?(params[key])
- MetadataObject.set(key, Pool.find(params[key]))
- end
- elsif key == SELF_SERVICE_DEFAULT_ROLE
- if Role.exists?(params[key])
- MetadataObject.set(key, Role.find(params[key]))
- end
- else
- MetadataObject.set(key, params[key])
- end
- end
- end
- flash[:notice] = "Settings Updated!"
- redirect_to :action => 'self_service'
- end
-
-end
diff --git a/src/app/controllers/admin/users_controller.rb
b/src/app/controllers/admin/users_controller.rb
deleted file mode 100644
index d0297ad..0000000
--- a/src/app/controllers/admin/users_controller.rb
+++ /dev/null
@@ -1,124 +0,0 @@
-class Admin::UsersController < ApplicationController
- before_filter :require_user, :except => [:new, :create]
- before_filter :load_users, :only => [:show]
-
- def index
- require_privilege(Privilege::VIEW, User)
- @params = params
- @search_term = params[:q]
- if @search_term.blank?
- load_users
- return
- end
-
- search = User.search do
- keywords(params[:q])
- end
- @users = search.results
- end
-
- def new
- require_privilege(Privilege::CREATE, User) unless current_user.nil?
- @user = User.new
- @user.quota = Quota.new
- end
-
- def create
- if params[:commit] == "Reset"
- redirect_to :action => 'new' and return
- end
-
- require_privilege(Privilege::MODIFY, User) unless current_user.nil?
- @user = User.new(params[:user])
-
- @registration = RegistrationService.new(@user)
- unless @registration.save
- flash.now[:warning] = "User registration failed: #{(a)registration.error}"
- render :action => 'new' and return
- end
-
- if current_user != @user
- flash[:notice] = "User registered!"
- redirect_to admin_users_url
- else
- flash[:notice] = "You have successfully registered!"
- redirect_to root_url
- end
- end
-
- def show
- @user = params[:id] ? User.find(params[:id]) : current_user
- require_privilege(Privilege::VIEW, User) unless current_user == @user
- @quota_resources = @user.quota.quota_resources
-
- @url_params = params.clone
- @tab_captions = ['Properties']
- @details_tab = params[:details_tab].blank? ? 'properties' :
params[:details_tab]
- respond_to do |format|
- format.js do
- if @url_params.delete :details_pane
- render :partial => 'layouts/details_pane' and return
- end
- render :partial => @details_tab
- end
- format.html { render :partial => @details_tab }
- end
- end
-
- def edit
- @user = params[:id] ? User.find(params[:id]) : current_user
- require_privilege(Privilege::MODIFY, User) unless @user == current_user
- end
-
- def update
- @user = params[:id] ? User.find(params[:id]) : current_user
- require_privilege(Privilege::MODIFY, User) unless @user == current_user
-
- if params[:commit] == "Reset"
- redirect_to edit_admin_user_url(@user) and return
- end
-
- redirect_to root_url and return unless @user
-
- unless @user.update_attributes(params[:user])
- render :action => 'edit' and return
- else
- flash[:notice] = "User updated!"
- redirect_to (@user == current_user) ? root_url : admin_users_url
- end
- end
-
- def multi_destroy
- require_privilege(Privilege::MODIFY, User)
- deleted_users = []
- User.find(params[:user_selected]).each do |user|
- if user == current_user
- flash[:warning] = "Cannot delete #{user.login}: you are logged in as this
user"
- else
- user.destroy
- deleted_users << user.login
- end
- end
- unless deleted_users.empty?
- msg = "Deleted user#{'s' if deleted_users.length > 1}"
- flash[:notice] = "#{msg}: #{deleted_users.join(', ')}"
- end
- redirect_to admin_users_url
- end
-
- protected
-
- def load_users
- @users = User.all
- sort_order = params[:sort_by].nil? ? "login" : params[:sort_by]
- # TODO: (lmartinc) Optimize this sort! hell!
- if sort_order == "percentage_quota_used"
- @users.sort! {|x,y| y.quota.percentage_used <=> x.quota.percentage_used }
- elsif sort_order == "quota"
- @users.sort! {|x,y| (x.quota.maximum_running_instances and
y.quota.maximum_running_instances) ? x.quota.maximum_running_instances <=>
y.quota.maximum_running_instances : (x ? 1 : -1) }
- else
- @users = User.all(:order => sort_order)
- end
- end
-
-end
diff --git a/src/app/controllers/assemblies_controller.rb
b/src/app/controllers/assemblies_controller.rb
new file mode 100644
index 0000000..c109039
--- /dev/null
+++ b/src/app/controllers/assemblies_controller.rb
@@ -0,0 +1,6 @@
+class AssembliesController < ApplicationController
+ before_filter :require_user
+
+ def index
+ end
+end
diff --git a/src/app/controllers/builds_controller.rb
b/src/app/controllers/builds_controller.rb
new file mode 100644
index 0000000..3572a45
--- /dev/null
+++ b/src/app/controllers/builds_controller.rb
@@ -0,0 +1,110 @@
+class BuildsController < ApplicationController
+ before_filter [:require_user], :except => [:update_status]
+
+ def index
+ end
+
+ def create
+ @tpl = Template.find(params[:template_id])
+ check_permission
+
+ errors = {}
+ warnings = []
+ begin
+ target = ProviderType.find(params[:target])
+ Image.create_and_build!(@tpl, target)
+ rescue
+ flash[:error] = "Warning: #{$!.message}"
+ logger.error $!.message
+ logger.error $!.backtrace.join("\n ")
+ end
+ redirect_to image_factory_template_path(@tpl, :details_tab => 'builds')
+ end
+
+ def upload
+ @tpl = Template.find(params[:template_id])
+ pimg = ProviderImage.create!(
+ :image => Image.find(params[:image_id]),
+ :provider => Provider.find(params[:provider_id]),
+ :status => ProviderImage::STATE_QUEUED
+ )
+ Delayed::Job.enqueue(PushJob.new(pimg.id))
+ redirect_to image_factory_template_path(@tpl, :details_tab => 'builds')
+ end
+
+ def delete
+ @tpl = Template.find(params[:template_id])
+ # FIXME: add logic to delete image when v2 image factory lands
+ redirect_to image_factory_template_path(@tpl, :details_tab => 'builds')
+ end
+
+ def edit
+ # FIXME: is @tpl defined here? do we need check_permission here?
+ end
+
+ def update
+ # FIXME: is @tpl defined here? do we need check_permission here?
+ end
+
+ def retry
+ @tpl = Template.find(params[:template_id])
+ check_permission
+ begin
+ if params[:image_id]
+ image = Image.find(params[:image_id])
+ if image
+ errors = {}
+ warnings = []
+ image.rebuild!
+ flash[:notice] = "Queued rebuild for image #{image.name}"
+ else
+ flash[:warning] = "could not find image #{image_id}"
+ end
+ elsif params[:provider_image_id]
+ provider_image = ProviderImage.find(params[:provider_image_id])
+ if provider_image
+ provider_image.retry_upload!
+ flash[:notice] = "Queued upload of provider image
#{provider_image.image.name} to #{provider_image.provider.name}"
+ else
+ flash[:warning] = "could not find provider image
#{provider_image_id}"
+ end
+ else
+ flash[:warning] = 'You need to specify either a provider or a provider
image'
+ end
+ rescue
+ flash[:warning] = $!.message
+ logger.error $!.message
+ logger.error $!.backtrace.join("\n ")
+ end
+ redirect_to image_factory_template_path(@tpl, :details_tab => 'builds')
+ end
+
+ def update_status
+ image = Image.find_by_uuid(params[:uuid])
+ image = ProviderImage.find_by_uuid(params[:uuid]) unless image
+
+ if image
+ image.status = params[:status]
+ image.save!
+ end
+ return head :not_found unless image
+ respond_to do |format|
+ format.xml {
+ render :xml => image.to_xml
+ }
+ end
+
+ end
+ private
+
+ # TODO: DRY this, is used in templates controller too
+ def get_order(default)
+ @order_dir = params[:order_dir] == 'desc' ? 'desc' : 'asc'
+ @order_field = params[:order_field] || default
+ "#{@order_field} #{@order_dir}"
+ end
+
+ def check_permission
+ require_privilege(Privilege::MODIFY, @tpl)
+ end
+end
diff --git a/src/app/controllers/deployables_controller.rb
b/src/app/controllers/deployables_controller.rb
new file mode 100644
index 0000000..22332f5
--- /dev/null
+++ b/src/app/controllers/deployables_controller.rb
@@ -0,0 +1,149 @@
+class DeployablesController < ApplicationController
+ before_filter :require_user
+ before_filter :load_deployables, :only => [:index, :show, :pick_assemblies]
+ before_filter :load_deployable_with_assemblies, :only => [:remove_assemblies,
:add_assemblies, :pick_assemblies]
+
+ def index
+ require_privilege(Privilege::VIEW, Template)
+ @search_term = params[:q]
+ return if @search_term.blank?
+ search = Deployable.search() do
+ keywords(params[:q])
+ end
+ @deployables = search.results
+ end
+
+ def show
+ @deployable = Deployable.find(params[:id])
+ require_privilege(Privilege::VIEW, @deployable)
+ @url_params = params.clone
+ @tab_captions = ['Properties', 'Assemblies', 'Deployments']
+ @details_tab = params[:details_tab].blank? ? 'properties' :
params[:details_tab]
+ if @details_tab == 'deployments'
+ @deployments = @deployable.deployments
+ end
+ respond_to do |format|
+ format.js do
+ if @url_params.delete :details_pane
+ render :partial => 'layouts/details_pane' and return
+ end
+ render :partial => @details_tab and return
+ end
+ format.html { render :action => 'show'}
+ end
+ end
+
+ def new
+ require_privilege(Privilege::CREATE, Template)
+ @deployable = Deployable.new
+ end
+
+ def create
+ require_privilege(Privilege::CREATE, Template)
+ @deployable = Deployable.new(params[:deployable])
+ @deployable.owner = current_user
+ if @deployable.save
+ flash[:notice] = "Deployable added."
+ redirect_to image_factory_deployable_url(@deployable)
+ else
+ render :action => :new
+ end
+ end
+
+ def edit
+ @deployable = Deployable.find(params[:id])
+ require_privilege(Privilege::MODIFY, @deployable)
+ end
+
+ def update
+ @deployable = Deployable.find(params[:id])
+ require_privilege(Privilege::MODIFY, @deployable)
+ if @deployable.update_attributes(params[:deployable])
+ flash[:notice] = "Deployable updated."
+ redirect_to image_factory_deployable_url(@deployable)
+ else
+ render :action => :edit
+ end
+ end
+
+ def multi_destroy
+ destroyed = []
+ failed = []
+ Deployable.find(params[:deployables_selected]).each do |deployable|
+ if check_privilege(Privilege::MODIFY, deployable) and deployable.destroyable?
+ deployable.destroy
+ destroyed << deployable.name
+ else
+ failed << deployable.name
+ end
+ end
+
+ unless destroyed.empty?
+ flash[:notice] = t('deployables.index.deleted', :count =>
destroyed.length, :list => destroyed.join(', '))
+ end
+ unless failed.empty?
+ flash[:error] = t('deployables.index.not_deleted', :count =>
failed.length, :list => failed.join(', '))
+ end
+ redirect_to image_factory_deployables_url
+ end
+
+ def pick_assemblies
+ require_privilege(Privilege::MODIFY, @deployable)
+ @assemblies = Assembly.all - @deployable.assemblies
+ respond_to do |format|
+ format.js { render :partial => 'pick_assemblies' }
+ format.html { render 'pick_assemblies' }
+ end
+ end
+
+ def add_assemblies
+ require_privilege(Privilege::MODIFY, @deployable)
+ if assemblies = params.delete(:assemblies_selected)
+ @deployable.assembly_ids += assemblies.collect{|a| a.to_i}
+ @deployable.save!
+ flash[:notice] = "Assemblies saved."
+ end
+ respond_to do |format|
+ format.js { render :partial => 'assemblies' }
+ format.html { redirect_to image_factory_deployable_url(@deployable, :details_tab
=> 'assemblies') and return }
+ end
+ end
+
+ def remove_assemblies
+ require_privilege(Privilege::MODIFY, @deployable)
+ if params[:assemblies_selected].present?
+ @deployable.assembly_ids = @deployable.assembly_ids -
params[:assemblies_selected].collect{|a| a.to_i}
+ @deployable.save!
+ flash[:notice] = "Assemblies removed."
+ end
+ respond_to do |format|
+ format.js { render :partial => 'assemblies' }
+ format.html { redirect_to image_factory_deployable_url(@deployable, :details_tab
=> 'assemblies') and return }
+ end
+ end
+
+ protected
+
+ def load_deployables
+ @header = [
+ { :name => "Deployable name", :sort_attr => :name }
+ ]
+ @header_deployments = [
+ { :name => "Deployment name", :sort_attr => :name },
+ { :name => "Deployable", :sortable => false },
+ { :name => "Deployment Owner", :sort_attr =>
"owner.last_name"},
+ { :name => "Running Since", :sort_attr => :running_since },
+ { :name => "Heath Metric", :sort_attr => :health },
+ { :name => "Pool", :sort_attr => "pool.name" }
+ ]
+ @deployables = Deployable.paginate(:all,
+ :page => params[:page] || 1,
+ :order => (params[:order_field] || 'name') +' '+
(params[:order_dir] || 'asc')
+ )
+ @url_params = params.clone
+ end
+
+ def load_deployable_with_assemblies
+ @deployable = Deployable.find(params[:id], :include => :assemblies)
+ end
+end
diff --git a/src/app/controllers/deployments_controller.rb
b/src/app/controllers/deployments_controller.rb
new file mode 100644
index 0000000..d988d81
--- /dev/null
+++ b/src/app/controllers/deployments_controller.rb
@@ -0,0 +1,123 @@
+class DeploymentsController < ApplicationController
+ before_filter :require_user
+ before_filter :load_deployments, :only => [:index, :show]
+
+ def index
+ end
+
+ def launch_new
+ @launchable_deployables = []
+ Deployable.all.each do |deployable|
+ @launchable_deployables << deployable if deployable.launchable?
+ end
+ end
+
+ def new
+ require_privilege(Privilege::CREATE, Deployment)
+ @deployment = Deployment.new(:deployable_id => params[:deployable_id])
+ if @deployment.deployable.assemblies.empty?
+ flash[:warning] = "Deployable must have at least one assembly"
+ redirect_to resources_deployments_path
+ else
+ init_new_deployment_attrs
+ end
+ end
+
+ def create
+ require_privilege(Privilege::CREATE, Deployment)
+ @deployment = Deployment.new(params[:deployment])
+ @deployment.owner = current_user
+ if @deployment.save
+ flash[:notice] = "Deployment launched"
+ errors = @deployment.launch(params[:hw_profiles] || {}, current_user)
+ unless errors.empty?
+ flash[:error] = {
+ :summary => "Failed to launch following assemblies:",
+ :failures => errors
+ }
+ end
+ redirect_to resources_deployment_path(@deployment)
+ else
+ flash.now[:warning] = "Deployment launch failed"
+ init_new_deployment_attrs
+ render :new
+ end
+ end
+
+ def show
+ @deployment = Deployment.find(params[:id])
+ require_privilege(Privilege::VIEW, @deployment)
+ init_new_deployment_attrs
+ @tab_captions = ['Properties', 'Instances', 'Provider
Services', 'Required Services', 'History', 'Permissions']
+ @details_tab = params[:details_tab].blank? ? 'properties' :
params[:details_tab]
+ respond_to do |format|
+ format.js do
+ if @url_params.delete :details_pane
+ render :partial => 'layouts/details_pane' and return
+ end
+ render :partial => @details_tab and return
+ end
+ format.html { render :action => 'show'}
+ end
+ end
+
+ def multi_stop
+ notices = ""
+ errors = ""
+ Deployment.find(params[:deployments_selected]).each do |deployment|
+ deployment.instances.each do |instance|
+ begin
+ require_privilege(Privilege::USE,instance)
+ unless instance.valid_action?('stop')
+ raise ActionError.new("stop is an invalid action.")
+ end
+
+ # not sure if task is used as everything goes through condor
+ #permissons check here
+ @task = instance.queue_action(@current_user, 'stop')
+ unless @task
+ raise ActionError.new("stop cannot be performed on this
instance.")
+ end
+ condormatic_instance_stop(@task)
+ notices << "Deployment: #{instance.deployment.name}, Instance:
#{instance.name}: stop action was successfully queued.<br/>"
+ rescue Exception => err
+ errors << "Deployment: #{instance.deployment.name}, Instance:
#{instance.name}: " + err + "<br/>"
+ end
+ end
+ end
+ flash[:notice] = notices unless notices.blank?
+ flash[:error] = errors unless errors.blank?
+ redirect_to resources_deployments_path
+ end
+
+ private
+ def load_deployments
+ @url_params = params
+ @deployments = Deployment.paginate(:all,
+ :page => params[:page] || 1,
+ :order => (params[:order_field] || 'name') +' '+
(params[:order_dir] || 'asc')
+ )
+ @header = [
+ { :name => "", :sort_attr => :name },
+ { :name => "Deployment name", :sort_attr => :name },
+ { :name => "Deployable", :sortable => false },
+ { :name => "Owner", :sort_attr => "owner.login"},
+ { :name => "Running Since", :sort_attr => :running_since },
+ { :name => "Pool", :sort_attr => "pool.name" }
+ ]
+ @pools = Pool.list_for_user(current_user, Privilege::CREATE, :target_type =>
Deployment)
+ @deployments = Deployment.all(:include => :owner,
+ :conditions => {:pool_id => @pools},
+ :order => (params[:order_field] || 'name')
+' '+ (params[:order_dir] || 'asc')
+ )
+ end
+
+ def init_new_deployment_attrs
+ @pools = Pool.list_for_user(@current_user, Privilege::CREATE, :target_type =>
Deployment)
+ @realms = FrontendRealm.all
+ @hardware_profiles = HardwareProfile.all(
+ :include => :architecture,
+ :conditions => {:provider_id => nil}
+ )
+ end
+end
diff --git a/src/app/controllers/hardware_profiles_controller.rb
b/src/app/controllers/hardware_profiles_controller.rb
new file mode 100644
index 0000000..54f7e8f
--- /dev/null
+++ b/src/app/controllers/hardware_profiles_controller.rb
@@ -0,0 +1,221 @@
+class HardwareProfilesController < ApplicationController
+ before_filter :require_user, :except => :matching_profiles
+ before_filter :set_params_and_header, :only => [:index, :show]
+ before_filter :load_hardware_profiles, :only => [:index, :show]
+ before_filter :load_hardware_profile, :only => [:show]
+ before_filter :setup_new_hardware_profile, :only => [:new]
+ before_filter :setup_hardware_profile, :only => [:new, :create, :edit, :update]
+
+ def index
+ @params = params
+ respond_to do |format|
+ format.js do
+ build_hardware_profile(params[:hardware_profile])
+ matching_provider_hardware_profiles
+ render :partial => 'matching_provider_hardware_profiles' and return
+ end
+ format.html do
+ @search_term = params[:q]
+ if @search_term.blank?
+ load_hardware_profiles
+ return
+ end
+
+ search = HardwareProfile.search do
+ keywords(params[:q])
+ with(:frontend, true)
+ end
+ @hardware_profiles = search.results
+ end
+ end
+ end
+
+ def show
+ @hardware_profile = HardwareProfile.find(params[:id].to_a.first)
+ @tab_captions = ['Properties', 'History', 'Matching Provider
Hardware Profiles']
+ @details_tab = params[:details_tab].blank? ? 'properties' :
params[:details_tab]
+ case @details_tab
+ when 'properties'
+ properties
+ when 'matching_provider_hardware_profiles'
+ matching_provider_hardware_profiles
+ end
+ respond_to do |format|
+ format.js do
+ if @url_params.delete :details_pane
+ render :partial => 'layouts/details_pane' and return
+ end
+ render :partial => @details_tab and return
+ end
+ format.html { render :action => 'show'}
+ end
+ end
+
+ def new
+ respond_to do |format|
+ format.js { render :partial => 'matching_provider_hardware_profiles' }
+ format.html { render :action => 'new'}
+ end
+ end
+
+ def create
+ build_hardware_profile(params[:hardware_profile])
+ if params[:commit] == 'Save'
+ if @hardware_profile.save!
+ redirect_to admin_hardware_profiles_path
+ else
+ params.delete :commit
+ render :action => 'create'
+ end
+ else
+ matching_provider_hardware_profiles
+ render :action => 'new'
+ end
+ kick_condor
+ end
+
+ def delete
+ kick_condor
+ end
+
+ def edit
+ unless @hardware_profile
+ @hardware_profile = HardwareProfile.find(params[:id])
+ end
+ matching_provider_hardware_profiles
+ end
+
+ def update
+ if params[:commit] == "Reset"
+ redirect_to edit_admin_hardware_profile_url(@hardware_profile) and return
+ end
+
+ if params[:id]
+ @hardware_profile = HardwareProfile.find(params[:id])
+ build_hardware_profile(params[:hardware_profile])
+ end
+
+ if params[:commit] == "Check Matches"
+ matching_provider_hardware_profiles
+ render :edit and return
+ end
+
+ unless @hardware_profile.save!
+ render :action => 'edit' and return
+ else
+ flash[:notice] = "Hardware Profile updated!"
+ redirect_to admin_hardware_profiles_path
+ end
+ kick_condor
+ end
+
+ def multi_destroy
+ HardwareProfile.destroy(params[:hardware_profile_selected])
+ kick_condor
+ redirect_to admin_hardware_profiles_path
+ end
+
+ private
+ def setup_new_hardware_profile
+ if params[:hardware_profile]
+ begin
+ @hardware_profile =
HardwareProfile.new(remove_irrelevant_params(params[:hardware_profile]))
+ end
+ else
+ @hardware_profile = HardwareProfile.new(:memory =>
HardwareProfileProperty.new(:name => "memory", :unit => "MB"),
+ :cpu =>
HardwareProfileProperty.new(:name => "cpu", :unit => "count"),
+ :storage =>
HardwareProfileProperty.new(:name => "storage", :unit => "GB"),
+ :architecture =>
HardwareProfileProperty.new(:name => "architecture", :unit =>
"label"))
+ end
+ matching_provider_hardware_profiles
+ end
+
+ def properties
+ @properties_header = [
+ { :name => "Name", :sort_attr => :name},
+ { :name => "Unit", :sort_attr => :unit},
+ { :name => "Minimum Value", :sort_attr => :value}]
+ @hwp_properties = [@hardware_profile.memory, @hardware_profile.cpu,
@hardware_profile.storage, @hardware_profile.architecture]
+ end
+
+ #TODO Update this method when moving to new HWP Model
+ def matching_provider_hardware_profiles
+ @provider_hwps_header = [
+ { :name => "Provider Name", :sort_attr => "provider.name"
},
+ { :name => "Hardware Profile Name", :sort_attr => :name },
+ { :name => "Architecture", :sort_attr => :architecture },
+ { :name => "Memory", :sort_attr => :memory},
+ { :name => "Storage", :sort_attr => :storage },
+ { :name => "Virtual CPU", :sort_attr => :cpu}
+ ]
+
+ begin
+ @matching_hwps = HardwareProfile.matching_hardware_profiles(@hardware_profile)
+ rescue Exception => e
+ @matching_hwps = []
+ end
+ end
+
+ def setup_hardware_profile
+ @tab_captions = ['Matched Provider Hardware Profiles']
+ @details_tab = 'matching_provider_hardware_profiles'
+ @url_params = params
+ @header = [
+ { :name => "Name", :sort_attr => :name},
+ { :name => "Unit", :sort_attr => :unit},
+ { :name => "Minimum Value", :sort_attr => :value}]
+ end
+
+ def set_params_and_header
+ @url_params = params
+ @header = [
+ { :name => "Hardware Profile Name", :sort_attr => :name },
+ { :name => "Architecture", :sort_attr => :architecture },
+ { :name => "Memory", :sort_attr => :memory},
+ { :name => "Storage", :sort_attr => :storage },
+ { :name => "Virtual CPU", :sort_attr => :cpu}
+ ]
+ end
+
+ def load_hardware_profiles
+ sort_field = params[:order_field].nil? ? "name" : params[:order_field]
+ sort_order = params[:order_dir] == "asc" || params[:order_dir].nil? ?
"" : "desc"
+ if sort_field == "name"
+ @hardware_profiles = HardwareProfile.all(:order => sort_field + " " +
sort_order, :conditions => 'provider_id IS NULL')
+ else
+ @hardware_profiles = HardwareProfile.all(:conditions => 'provider_id IS
NULL')
+ if sort_order == ""
+ @hardware_profiles.sort! {|x,y| x.get_property_map[sort_field].sort_value(true)
<=> y.get_property_map[sort_field].sort_value(true)}
+ else
+ @hardware_profiles.sort! {|x,y| y.get_property_map[sort_field].sort_value(false)
<=> x.get_property_map[sort_field].sort_value(false)}
+ end
+ end
+ end
+
+ def load_hardware_profile
+ @hardware_profile = HardwareProfile.find(params[:id])
+ end
+
+ def build_hardware_profile(params)
+ if @hardware_profile.nil?
+ @hardware_profile = HardwareProfile.new
+ end
+
+ @hardware_profile.name = params[:name]
+ @hardware_profile.memory = create_hwpp((a)hardware_profile.memory,
params[:memory_attributes])
+ @hardware_profile.storage = create_hwpp((a)hardware_profile.storage,
params[:storage_attributes])
+ @hardware_profile.cpu = create_hwpp((a)hardware_profile.cpu, params[:cpu_attributes])
+ @hardware_profile.architecture = create_hwpp((a)hardware_profile.architecture,
params[:architecture_attributes])
+ end
+
+ def create_hwpp(hwpp, params)
+ hardwareProfileProperty = hwpp.nil? ? HardwareProfileProperty.new : hwpp
+
+ hardwareProfileProperty.name = params[:name]
+ hardwareProfileProperty.kind = "fixed"
+ hardwareProfileProperty.value = params[:value]
+ hardwareProfileProperty.unit = params[:unit]
+ return hardwareProfileProperty
+ end
+
+end
diff --git a/src/app/controllers/image_factory/assemblies_controller.rb
b/src/app/controllers/image_factory/assemblies_controller.rb
deleted file mode 100644
index ce67f14..0000000
--- a/src/app/controllers/image_factory/assemblies_controller.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-class ImageFactory::AssembliesController < ApplicationController
- before_filter :require_user
-
- def index
- end
-end
diff --git a/src/app/controllers/image_factory/builds_controller.rb
b/src/app/controllers/image_factory/builds_controller.rb
deleted file mode 100644
index 58c3fa6..0000000
--- a/src/app/controllers/image_factory/builds_controller.rb
+++ /dev/null
@@ -1,110 +0,0 @@
-class ImageFactory::BuildsController < ApplicationController
- before_filter [:require_user], :except => [:update_status]
-
- def index
- end
-
- def create
- @tpl = Template.find(params[:template_id])
- check_permission
-
- errors = {}
- warnings = []
- begin
- target = ProviderType.find(params[:target])
- Image.create_and_build!(@tpl, target)
- rescue
- flash[:error] = "Warning: #{$!.message}"
- logger.error $!.message
- logger.error $!.backtrace.join("\n ")
- end
- redirect_to image_factory_template_path(@tpl, :details_tab => 'builds')
- end
-
- def upload
- @tpl = Template.find(params[:template_id])
- pimg = ProviderImage.create!(
- :image => Image.find(params[:image_id]),
- :provider => Provider.find(params[:provider_id]),
- :status => ProviderImage::STATE_QUEUED
- )
- Delayed::Job.enqueue(PushJob.new(pimg.id))
- redirect_to image_factory_template_path(@tpl, :details_tab => 'builds')
- end
-
- def delete
- @tpl = Template.find(params[:template_id])
- # FIXME: add logic to delete image when v2 image factory lands
- redirect_to image_factory_template_path(@tpl, :details_tab => 'builds')
- end
-
- def edit
- # FIXME: is @tpl defined here? do we need check_permission here?
- end
-
- def update
- # FIXME: is @tpl defined here? do we need check_permission here?
- end
-
- def retry
- @tpl = Template.find(params[:template_id])
- check_permission
- begin
- if params[:image_id]
- image = Image.find(params[:image_id])
- if image
- errors = {}
- warnings = []
- image.rebuild!
- flash[:notice] = "Queued rebuild for image #{image.name}"
- else
- flash[:warning] = "could not find image #{image_id}"
- end
- elsif params[:provider_image_id]
- provider_image = ProviderImage.find(params[:provider_image_id])
- if provider_image
- provider_image.retry_upload!
- flash[:notice] = "Queued upload of provider image
#{provider_image.image.name} to #{provider_image.provider.name}"
- else
- flash[:warning] = "could not find provider image
#{provider_image_id}"
- end
- else
- flash[:warning] = 'You need to specify either a provider or a provider
image'
- end
- rescue
- flash[:warning] = $!.message
- logger.error $!.message
- logger.error $!.backtrace.join("\n ")
- end
- redirect_to image_factory_template_path(@tpl, :details_tab => 'builds')
- end
-
- def update_status
- image = Image.find_by_uuid(params[:uuid])
- image = ProviderImage.find_by_uuid(params[:uuid]) unless image
-
- if image
- image.status = params[:status]
- image.save!
- end
- return head :not_found unless image
- respond_to do |format|
- format.xml {
- render :xml => image.to_xml
- }
- end
-
- end
- private
-
- # TODO: DRY this, is used in templates controller too
- def get_order(default)
- @order_dir = params[:order_dir] == 'desc' ? 'desc' : 'asc'
- @order_field = params[:order_field] || default
- "#{@order_field} #{@order_dir}"
- end
-
- def check_permission
- require_privilege(Privilege::MODIFY, @tpl)
- end
-end
diff --git a/src/app/controllers/image_factory/deployables_controller.rb
b/src/app/controllers/image_factory/deployables_controller.rb
deleted file mode 100644
index 90242f3..0000000
--- a/src/app/controllers/image_factory/deployables_controller.rb
+++ /dev/null
@@ -1,149 +0,0 @@
-class ImageFactory::DeployablesController < ApplicationController
- before_filter :require_user
- before_filter :load_deployables, :only => [:index, :show, :pick_assemblies]
- before_filter :load_deployable_with_assemblies, :only => [:remove_assemblies,
:add_assemblies, :pick_assemblies]
-
- def index
- require_privilege(Privilege::VIEW, Template)
- @search_term = params[:q]
- return if @search_term.blank?
- search = Deployable.search() do
- keywords(params[:q])
- end
- @deployables = search.results
- end
-
- def show
- @deployable = Deployable.find(params[:id])
- require_privilege(Privilege::VIEW, @deployable)
- @url_params = params.clone
- @tab_captions = ['Properties', 'Assemblies', 'Deployments']
- @details_tab = params[:details_tab].blank? ? 'properties' :
params[:details_tab]
- if @details_tab == 'deployments'
- @deployments = @deployable.deployments
- end
- respond_to do |format|
- format.js do
- if @url_params.delete :details_pane
- render :partial => 'layouts/details_pane' and return
- end
- render :partial => @details_tab and return
- end
- format.html { render :action => 'show'}
- end
- end
-
- def new
- require_privilege(Privilege::CREATE, Template)
- @deployable = Deployable.new
- end
-
- def create
- require_privilege(Privilege::CREATE, Template)
- @deployable = Deployable.new(params[:deployable])
- @deployable.owner = current_user
- if @deployable.save
- flash[:notice] = "Deployable added."
- redirect_to image_factory_deployable_url(@deployable)
- else
- render :action => :new
- end
- end
-
- def edit
- @deployable = Deployable.find(params[:id])
- require_privilege(Privilege::MODIFY, @deployable)
- end
-
- def update
- @deployable = Deployable.find(params[:id])
- require_privilege(Privilege::MODIFY, @deployable)
- if @deployable.update_attributes(params[:deployable])
- flash[:notice] = "Deployable updated."
- redirect_to image_factory_deployable_url(@deployable)
- else
- render :action => :edit
- end
- end
-
- def multi_destroy
- destroyed = []
- failed = []
- Deployable.find(params[:deployables_selected]).each do |deployable|
- if check_privilege(Privilege::MODIFY, deployable) and deployable.destroyable?
- deployable.destroy
- destroyed << deployable.name
- else
- failed << deployable.name
- end
- end
-
- unless destroyed.empty?
- flash[:notice] = t('deployables.index.deleted', :count =>
destroyed.length, :list => destroyed.join(', '))
- end
- unless failed.empty?
- flash[:error] = t('deployables.index.not_deleted', :count =>
failed.length, :list => failed.join(', '))
- end
- redirect_to image_factory_deployables_url
- end
-
- def pick_assemblies
- require_privilege(Privilege::MODIFY, @deployable)
- @assemblies = Assembly.all - @deployable.assemblies
- respond_to do |format|
- format.js { render :partial => 'pick_assemblies' }
- format.html { render 'pick_assemblies' }
- end
- end
-
- def add_assemblies
- require_privilege(Privilege::MODIFY, @deployable)
- if assemblies = params.delete(:assemblies_selected)
- @deployable.assembly_ids += assemblies.collect{|a| a.to_i}
- @deployable.save!
- flash[:notice] = "Assemblies saved."
- end
- respond_to do |format|
- format.js { render :partial => 'assemblies' }
- format.html { redirect_to image_factory_deployable_url(@deployable, :details_tab
=> 'assemblies') and return }
- end
- end
-
- def remove_assemblies
- require_privilege(Privilege::MODIFY, @deployable)
- if params[:assemblies_selected].present?
- @deployable.assembly_ids = @deployable.assembly_ids -
params[:assemblies_selected].collect{|a| a.to_i}
- @deployable.save!
- flash[:notice] = "Assemblies removed."
- end
- respond_to do |format|
- format.js { render :partial => 'assemblies' }
- format.html { redirect_to image_factory_deployable_url(@deployable, :details_tab
=> 'assemblies') and return }
- end
- end
-
- protected
-
- def load_deployables
- @header = [
- { :name => "Deployable name", :sort_attr => :name }
- ]
- @header_deployments = [
- { :name => "Deployment name", :sort_attr => :name },
- { :name => "Deployable", :sortable => false },
- { :name => "Deployment Owner", :sort_attr =>
"owner.last_name"},
- { :name => "Running Since", :sort_attr => :running_since },
- { :name => "Heath Metric", :sort_attr => :health },
- { :name => "Pool", :sort_attr => "pool.name" }
- ]
- @deployables = Deployable.paginate(:all,
- :page => params[:page] || 1,
- :order => (params[:order_field] || 'name') +' '+
(params[:order_dir] || 'asc')
- )
- @url_params = params.clone
- end
-
- def load_deployable_with_assemblies
- @deployable = Deployable.find(params[:id], :include => :assemblies)
- end
-end
diff --git a/src/app/controllers/image_factory/image_imports_controller.rb
b/src/app/controllers/image_factory/image_imports_controller.rb
deleted file mode 100644
index 45ba6d6..0000000
--- a/src/app/controllers/image_factory/image_imports_controller.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-class ImageFactory::ImageImportsController < ApplicationController
- before_filter :require_user
-
- def new
- init_provider_vars
- end
-
- def create
- begin
- Image.import(ProviderAccount.find(params[:provider_account_id]), params[:ami_id],
current_user)
- flash[:notice]="Image successfully imported"
- redirect_to image_factory_templates_path
- kick_condor
- rescue Exception => e
- init_provider_vars
- # The full message may be multiple lines, including the actual request, so only
include the first line:
- flash.now[:error]="Could not import image:
#{e.message.split("\n").first}"
- Rails.logger.error([e.message,e.backtrace].join("\n "))
- render :new
- end
- end
-
-protected
-def init_provider_vars
- @providers = Provider.list_for_user(current_user, Privilege::VIEW)
-end
-end
diff --git a/src/app/controllers/image_factory/templates_controller.rb
b/src/app/controllers/image_factory/templates_controller.rb
deleted file mode 100644
index dc7ba71..0000000
--- a/src/app/controllers/image_factory/templates_controller.rb
+++ /dev/null
@@ -1,301 +0,0 @@
-require 'util/repository_manager'
-
-class ImageFactory::TemplatesController < ApplicationController
- before_filter :require_user
- before_filter :set_view_vars, :only => [:index, :show]
-
- def index
- require_privilege(Privilege::VIEW, Template)
- @params = params
- @search_term = params[:q]
- if @search_term.blank?
- load_templates
- return
- end
-
- # FIXME: Filter on Permissions
- search = Template.search do
- keywords(params[:q])
- end
- @templates = search.results
- end
-
- def show
- load_templates
- @tpl = Template.find(params[:id])
- require_privilege(Privilege::VIEW, @tpl)
- @url_params = params.clone
- @tab_captions = ['Properties', 'Builds']
- @details_tab = params[:details_tab].blank? ? 'properties' :
params[:details_tab]
- load_images(@tpl) if @details_tab == 'builds'
- respond_to do |format|
- format.js do
- if @url_params.delete :details_pane
- render :partial => 'layouts/details_pane' and return
- end
- render :partial => @details_tab and return
- end
- format.html { render :action => 'show'}
- end
- end
-
- def new
- check_create_permission
- # can't use @template variable - is used by compass (or something other)
- @tpl = Template.new(params[:tpl])
- @repository_manager = RepositoryManager.new(:repositories => params[:repository]
|| @tpl.platform)
- end
-
- def add_selected
- if params[:tpl] and not params[:tpl][:id].blank?
- @tpl = Template.find(params[:tpl][:id])
- check_edit_permission
- @tpl.attributes = params[:tpl]
- else
- @tpl = Template.new(params[:tpl])
- check_create_permission
- end
- @repository_manager = RepositoryManager.new(:repositories => params[:repository]
|| @tpl.platform)
- @tpl.add_software(params[:packages].to_a + params[:selected_packages].to_a +
params[:cached_packages].to_a,
- params[:groups].to_a + params[:selected_groups].to_a)
- render :action => @tpl.id ? :edit : :new
- end
-
- def edit
- @tpl = Template.find(params[:id])
- check_edit_permission
- @tpl.attributes = params[:tpl] unless params[:tpl].blank?
- @tpl.add_software(params[:packages].to_a, params[:groups].to_a)
- @repository_manager = RepositoryManager.new(:repositories => params[:repository]
|| @tpl.platform)
- end
-
- def create
- check_create_permission
- @tpl = Template.new(params[:tpl])
- @tpl.packages = params[:packages]
- @tpl.owner = current_user
- if @tpl.save
- flash[:notice] = "Template saved."
- @tpl.set_complete
- if params[:create_deployable]
- Deployable.create!(:name => @tpl.name, :assemblies => @tpl.assemblies,
:owner => current_user)
- end
- redirect_to image_factory_templates_path
- else
- @repository_manager = RepositoryManager.new(:repositories => params[:repository]
|| @tpl.platform)
- render :new
- end
- end
-
- def update
- @tpl = Template.find(params[:id])
- check_edit_permission
- @tpl.packages = []
- @tpl.add_software(params[:packages].to_a, params[:groups].to_a)
-
- if @tpl.update_attributes(params[:tpl])
- @tpl.set_complete
- flash[:notice] = "Template updated."
- redirect_to image_factory_templates_path
- else
- @repository_manager = RepositoryManager.new(:repositories => params[:repository]
|| @tpl.platform)
- render :action => 'edit'
- end
- end
-
- def search_packages
- set_package_vars
- @page = get_page
- @cached_packages = params[:cached_packages].to_a + params[:selected_packages].to_a
- @searched_packages = params[:package_search].empty? ? [] :
@repository_manager.search_package(
- params[:package_search]).paginate(:page => @page, :per_page => 60)
- if request.xhr?
- render :partial => 'search_packages'
- else
- render 'search_packages'
- end
- end
-
- def metagroup_packages
- set_package_vars
- group = params[:__rewrite] ? params[:__rewrite][:metagroup_packages] : nil
- @metagroup_packages = @repository_manager.metagroup_packages(group)
- if request.xhr?
- render :partial => 'metagroup_packages'
- end
- end
-
- def collections
- if params[:package_search_button]
- search_packages
- return
- end
- set_package_vars
- @collections = @repository_manager.groups
- if request.xhr?
- render :partial => 'collections'
- end
- end
-
- def content_selection
- set_package_vars(true)
- @collections = @repository_manager.groups
- if request.xhr?
- render :partial => 'software_selection', :locals => {:view =>
'collections'}
- else
- render :collections
- end
- end
-
- def managed_content
- if params[:template_id].blank?
- @tpl = Template.new
- check_create_permission
- else
- @tpl = Template.find(params[:template_id])
- check_edit_permission
- end
- @tpl.add_software(params[:packages].to_a + params[:selected_packages].to_a,
- params[:groups].to_a + params[:selected_groups].to_a)
- render :layout => false
- end
-
- def assembly
- # FIXME: do we need perm check here?
- end
-
- def deployment_definition
- # FIXME: do we need perm check here?
- @all_targets = ProviderType.all(:conditions => {:build_supported => true})
- end
-
- def remove_package
- params[:packages].delete(params[:name]) unless params[:name].blank?
- if params[:tpl] and not params[:tpl][:id].blank?
- @tpl = Template.find(params[:tpl][:id])
- check_edit_permission
- @tpl.attributes = params[:tpl]
- else
- @tpl = Template.new(params[:tpl])
- check_create_permission
- end
- @tpl.add_software(params[:packages].to_a, params[:groups].to_a)
- @repository_manager = RepositoryManager.new(:repositories => params[:repository]
|| @tpl.platform)
- render :action => @tpl.id ? :edit : :new
- end
-
- def multi_destroy
- destroyed = []
- failed = []
- Template.find(params[:selected]).each do |template|
- if check_privilege(Privilege::MODIFY, template) and template.destroy
- destroyed << template.name
- else
- failed << template.name
- end
- end
-
- unless destroyed.empty?
- flash[:notice] = t('templates.index.deleted', :count =>
destroyed.length, :list => destroyed.join(', '))
- end
- unless failed.empty?
- flash[:error] = t('templates.index.not_deleted', :count =>
failed.length, :list => failed.join(', '))
- end
- redirect_to image_factory_templates_url
- end
-
- protected
-
- def load_images(tpl)
- @targets_not_built = {}
-
- Provider.all.each do |p|
- @targets_not_built[p.provider_type.id] = p.provider_type.name
- end
-
- tpl.images.each do |img|
- @targets_not_built.delete(img.provider_type_id)
- end
- @targets_not_built = @targets_not_built.invert
-
- @images = tpl.images
- end
-
- def set_view_vars
- @header = [
- {:name => 'NAME', :sort_attr => 'name'},
- {:name => 'OS', :sort_attr => 'platform'},
- {:name => 'VERSION', :sort_attr => 'platform_version'},
- {:name => 'BOOTABLE', :sortable => false},
- {:name => 'ARCH', :sort_attr => 'architecture'},
- ]
-
- @url_params = params.clone
- end
-
- def load_templates
- @templates = Template.list_for_user(current_user,
- Privilege::VIEW,
- :include => :images,
- :order => get_order('name')
- )
- end
-
- def set_package_vars(set_all = false)
- id = params[:id] || (params[:tpl] && params[:tpl][:id]) || nil
- if id.blank?
- @tpl = Template.new
- check_create_permission
- else
- @tpl = Template.find(id)
- check_edit_permission
- end
- @tpl.attributes = params[:tpl] unless params[:tpl].nil?
- @repository_manager = RepositoryManager.new(:repositories => params[:repository]
|| @tpl.platform)
- @groups = @repository_manager.groups
- @categories = @repository_manager.categories if not request.xhr? or set_all
- @metagroups = @repository_manager.metagroups if not request.xhr? or set_all
- @tpl.add_software(params[:packages].to_a, params[:groups].to_a)
- end
-
- def get_order(default)
- @order_dir = params[:order_dir] == 'desc' ? 'desc' : 'asc'
- @order_field = params[:order_field] || default
- "#{@order_field} #{@order_dir}"
- end
-
- def flash_error(summary, errs)
- flash.now[:error] ||= {}
- flash.now[:error][:summary] = summary
- flash.now[:error][:failures] ||= {}
- flash.now[:error][:failures].merge!(errs)
- end
-
- def check_create_permission
- require_privilege(Privilege::CREATE, Template)
- end
-
- def check_edit_permission
- require_privilege(Privilege::MODIFY, @tpl)
- end
-
- def get_selected_id
- ids = params[:ids].to_a
- if ids.size != 1
- flash[:warning] = ids.empty? ? 'No Template Selected' : 'You can select
only one template'
- return
- end
- return ids.first
- end
-
- def get_page
- if params[:page] == 'Previous'
- return params[:old_page].to_i - 1
- elsif params[:page] == 'Next'
- return params[:old_page].to_i + 1
- else
- return params[:page].blank? ? 1 : params[:page].to_i
- end
- end
-
-end
diff --git a/src/app/controllers/image_imports_controller.rb
b/src/app/controllers/image_imports_controller.rb
new file mode 100644
index 0000000..24d286b
--- /dev/null
+++ b/src/app/controllers/image_imports_controller.rb
@@ -0,0 +1,27 @@
+class ImageImportsController < ApplicationController
+ before_filter :require_user
+
+ def new
+ init_provider_vars
+ end
+
+ def create
+ begin
+ Image.import(ProviderAccount.find(params[:provider_account_id]), params[:ami_id],
current_user)
+ flash[:notice]="Image successfully imported"
+ redirect_to image_factory_templates_path
+ kick_condor
+ rescue Exception => e
+ init_provider_vars
+ # The full message may be multiple lines, including the actual request, so only
include the first line:
+ flash.now[:error]="Could not import image:
#{e.message.split("\n").first}"
+ Rails.logger.error([e.message,e.backtrace].join("\n "))
+ render :new
+ end
+ end
+
+protected
+def init_provider_vars
+ @providers = Provider.list_for_user(current_user, Privilege::VIEW)
+end
+end
diff --git a/src/app/controllers/instances_controller.rb
b/src/app/controllers/instances_controller.rb
new file mode 100644
index 0000000..42e0e01
--- /dev/null
+++ b/src/app/controllers/instances_controller.rb
@@ -0,0 +1,223 @@
+class InstancesController < ApplicationController
+ before_filter :require_user, :except => [:can_start, :can_create]
+ before_filter :load_instance, :only => [:show, :key]
+ before_filter :set_view_vars, :only => [:show, :index]
+
+ def index
+ @params = params
+ @search_term = params[:q]
+ if @search_term.blank?
+ load_instances
+ return
+ end
+
+ search = Instance.search do
+ keywords(params[:q])
+ end
+ @instances = search.results
+ end
+
+ def new
+ @instance = Instance.new(params[:instance])
+ require_privilege(Privilege::CREATE, Instance, @instance.pool) if @instance.pool
+
+ unless @instance.template
+ redirect_to select_template_resources_instances_path
+ return
+ end
+
+ init_new_instance_attrs
+ end
+
+ def select_template
+ # FIXME: we need to list only templates for particular user,
+ # => TODO: add TEMPLATE_* permissions
+ @templates = Template.paginate(
+ :page => params[:page] || 1,
+ :include => {:images => :provider_images},
+ :conditions => "provider_images.status =
'#{ProviderImage::STATE_COMPLETED}'"
+ )
+ end
+
+ def create
+ if params[:cancel]
+ redirect_to select_template_resources_instances_path
+ return
+ end
+
+ @instance = Instance.new(params[:instance])
+ @instance.state = Instance::STATE_NEW
+ @instance.owner = current_user
+
+ begin
+ require_privilege(Privilege::CREATE, Instance,
+ Pool.find((a)instance.pool_id))
+ free_quota = Quota.can_start_instance?(@instance, nil)
+ raise "Pool is not enabled" unless @instance.pool and
@instance.pool.enabled
+ @instance.transaction do
+ @instance.save!
+ # set owner permissions:
+ @task = InstanceTask.create!({:user => current_user,
+ :task_target => @instance,
+ :action => InstanceTask::ACTION_CREATE})
+ condormatic_instance_create(@task)
+ end
+ rescue
+ init_new_instance_attrs
+ flash[:warning] = "Failed to launch instance: #{$!}"
+ render :new
+ else
+ if free_quota
+ flash[:notice] = "Instance added."
+ else
+ flash[:warning] = "Quota Exceeded: Instance will not start until you have
free quota"
+ end
+ redirect_to resources_instances_path
+ end
+ end
+
+ def edit
+ end
+
+ def show
+ load_instances
+ @url_params = params.clone
+ @tab_captions = ['Properties', 'History', 'Permissions']
+ @details_tab = params[:details_tab].blank? ? 'properties' :
params[:details_tab]
+ respond_to do |format|
+ format.js do
+ if @url_params.delete :details_pane
+ render :partial => 'layouts/details_pane' and return
+ end
+ render :partial => @details_tab and return
+ end
+ format.html { render :action => 'show'}
+ end
+ end
+
+ def key
+ unless @instance.instance_key.nil?
+ send_data @instance.instance_key.pem,
+ :filename => "#{(a)instance.instance_key.name}.pem",
+ :type => "text/plain"
+ return
+ end
+ flash[:warning] = "SSH Key not found for this Instance."
+ redirect_to resources_instance_path(@instance)
+ end
+
+ def multi_stop
+ notices = ""
+ errors = ""
+ Instance.find(params[:instance_selected]).each do |instance|
+ begin
+ require_privilege(Privilege::USE,instance)
+ unless instance.valid_action?('stop')
+ raise ActionError.new("stop is an invalid action.")
+ end
+
+ # not sure if task is used as everything goes through condor
+ #permissons check here
+ @task = instance.queue_action(@current_user, 'stop')
+ unless @task
+ raise ActionError.new("stop cannot be performed on this instance.")
+ end
+ condormatic_instance_stop(@task)
+ notices << "#{instance.name}: stop action was successfully
queued.<br/>"
+ rescue Exception => err
+ errors << "#{instance.name}: " + err + "<br/>"
+ end
+ end
+ flash[:notice] = notices unless notices.blank?
+ flash[:error] = errors unless errors.blank?
+ redirect_to resources_instances_path
+ end
+
+ def remove_failed
+ notices = ""
+ errors = ""
+ Instance.find(params[:instance_selected]).each do |instance|
+ begin
+ require_privilege(Privilege::USE,instance)
+ raise ActionError.new("remove failed cannot be performed on this
instance.") unless
+ instance.state == Instance::STATE_ERROR
+ condormatic_instance_reset_error(instance)
+ notices << "#{instance.name}: remove failed action was successfully
queued."
+ rescue Exception => err
+ errors << "#{instance.name}: " + err + "<br/>"
+ end
+ end
+ flash[:notice] = notices unless notices.blank?
+ flash[:error] = errors unless errors.blank?
+ redirect_to resources_instances_path
+ end
+
+ def can_create
+ begin
+ provider_account = ProviderAccount.find(params[:provider_account_id])
+ @instance = Instance.find(params[:instance_id])
+ @action_request = "can_create"
+ @value = Quota.can_create_instance?(@instance, provider_account)
+ render :partial => 'can_perform_state_change.xml'
+ rescue ActiveRecord::RecordNotFound
+ head :not_found
+ rescue Exception
+ head :internal_server_error
+ end
+ end
+
+ def can_start
+ begin
+ provider_account = ProviderAccount.find(params[:provider_account_id])
+ @instance = Instance.find(params[:instance_id])
+ @action_request = "can_start"
+ @value = Quota.can_start_instance?(@instance, provider_account)
+ render :partial => 'can_perform_state_change.xml'
+ rescue ActiveRecord::RecordNotFound => e
+ puts e.inspect
+ head :not_found
+ rescue Exception => e
+ puts e.inspect
+ head :internal_server_error
+ end
+ end
+
+ private
+
+ def load_instance
+ @instance = Instance.find(params[:id].to_a.first)
+ require_privilege(Privilege::USE,@instance)
+ end
+
+ def init_new_instance_attrs
+ @pools = Pool.list_for_user(@current_user, Privilege::CREATE, {:target_type =>
Instance,:conditions=>{ :enabled => true}})
+ @realms = FrontendRealm.all
+ @hardware_profiles = HardwareProfile.all(
+ :include => :architecture,
+ :conditions => {
+ :provider_id => nil,
+ 'hardware_profile_properties.value' =>
@instance.template.architecture
+ }
+ )
+ end
+
+ def set_view_vars
+ @header = [
+ {:name => 'VM NAME', :sort_attr => 'name'},
+ {:name => 'STATUS', :sortable => false},
+ {:name => 'TEMPLATE', :sort_attr => 'templates.name'},
+ {:name => 'PUBLIC ADDRESS', :sort_attr =>
'public_addresses'},
+ {:name => 'PROVIDER', :sortable => false},
+ {:name => 'CREATED BY', :sort_attr => 'users.last_name'},
+ ]
+
+ @pools = Pool.list_for_user(@current_user, Privilege::CREATE, :target_type =>
Instance)
+ end
+
+ def load_instances
+ @instances = Instance.all(:include => [:template, :owner],
+ :conditions => {:pool_id => @pools},
+ :order => (params[:order_field] || 'name')
+' '+ (params[:order_dir] || 'asc')
+ )
+ end
+end
diff --git a/src/app/controllers/pool_families_controller.rb
b/src/app/controllers/pool_families_controller.rb
new file mode 100644
index 0000000..3d1a5fd
--- /dev/null
+++ b/src/app/controllers/pool_families_controller.rb
@@ -0,0 +1,127 @@
+class PoolFamiliesController < ApplicationController
+ before_filter :require_user
+ before_filter :set_params_and_header, :only => [:index, :show]
+ before_filter :load_pool_families, :only =>[:show]
+ before_filter :load_tab_captions_and_details_tab, :only => [:show]
+
+ def index
+ @search_term = params[:q]
+ if @search_term.blank?
+ load_pool_families
+ return
+ end
+
+ search = PoolFamily.search() do
+ keywords(params[:q])
+ end
+ @pool_families = search.results
+ end
+
+ def new
+ @pool_family = PoolFamily.new(:quota => Quota.new)
+ end
+
+ def create
+ @pool_family = PoolFamily.new(params[:pool_family])
+ unless @pool_family.save
+ flash.now[:warning] = "Pool family's creation failed."
+ render :new and return
+ else
+ @pool_family.assign_owner_roles(current_user)
+ flash[:notice] = "Pool family was added."
+ redirect_to admin_pool_families_path
+ end
+ end
+
+ def edit
+ @pool_family = PoolFamily.find(params[:id])
+ @pool_family.quota ||= Quota.new
+ end
+
+ def update
+ @pool_family = PoolFamily.find(params[:id])
+ unless @pool_family.update_attributes(params[:pool_family])
+ flash[:error] = "Pool Family wasn't updated!"
+ render :action => 'edit' and return
+ else
+ flash[:notice] = "Pool Family was updated!"
+ redirect_to admin_pool_families_path
+ end
+ end
+
+ def show
+ @pool_family = PoolFamily.find(params[:id])
+ @url_params = params.clone
+
+ respond_to do |format|
+ format.js do
+ if @url_params.delete :details_pane
+ render :partial => 'layouts/details_pane' and return
+ end
+ render :partial => @details_tab and return
+ end
+ format.html { render :show }
+ end
+ end
+
+ def add_provider_account
+ @pool_family = PoolFamily.find(params[:id])
+ @provider_account = ProviderAccount.find(params[:provider_account_id])
+
+ @pool_family.provider_accounts << @provider_account
+ flash[:notice] = "Provider Account has been added"
+ redirect_to admin_pool_family_path(@pool_family, :details_tab =>
'provider_accounts')
+ end
+
+ def multi_destroy
+ deleted = []
+ not_deleted = []
+ PoolFamily.find(params[:pool_family_selected]).each do |pool_family|
+ if pool_family.destroy
+ deleted << pool_family.name
+ else
+ not_deleted << pool_family.name
+ end
+ end
+ if deleted.size > 0
+ flash[:notice] = t 'pool_families.index.deleted', :list =>
deleted.join(', ')
+ end
+ if not_deleted.size > 0
+ flash[:error] = t 'pool_families.index.not_deleted', :list =>
not_deleted.join(', ')
+ end
+ redirect_to admin_pool_families_path
+ end
+
+ def multi_destroy_provider_accounts
+ @pool_family = PoolFamily.find(params[:pool_family_id])
+
+ ProviderAccount.find(params[:provider_account_selected]).each do |provider_account|
+ @pool_family.provider_accounts.delete provider_account
+ end
+
+ redirect_to admin_pool_family_path(@pool_family, :details_tab =>
'provider_accounts')
+ end
+
+ protected
+
+ def load_tab_captions_and_details_tab
+ @tab_captions = ['Properties', 'History', 'Permissions',
'Provider Accounts', 'Pools']
+ @details_tab = params[:details_tab].blank? ? 'properties' :
params[:details_tab]
+ @provider_accounts_header = [{ :name => "Provider Account", :sort_attr
=> :name}]
+ end
+
+ def set_params_and_header
+ @url_params = params.clone
+ @header = [{ :name => "Name", :sort_attr => :name},
+ { :name => "Quota limit", :sort_attr => :name},
+ { :name => "Quota currently in use", :sort_attr =>
:name},
+ ]
+ end
+
+ def load_pool_families
+ @pool_families = PoolFamily.paginate(:all,
+ :page => params[:page] || 1,
+ :order => ( params[:order_field] ||
'name' ) + ' ' + (params[:order_dir] || 'asc')
+ )
+ end
+end
diff --git a/src/app/controllers/pools_controller.rb
b/src/app/controllers/pools_controller.rb
new file mode 100644
index 0000000..ecfff29
--- /dev/null
+++ b/src/app/controllers/pools_controller.rb
@@ -0,0 +1,141 @@
+class PoolsController < ApplicationController
+ before_filter :require_user
+ before_filter :set_params_and_header, :only => [:index, :show]
+ before_filter :load_pools, :only => [:show]
+
+ def index
+ @search_term = params[:q]
+ if @search_term.blank?
+ load_pools
+ return
+ end
+
+ search = Pool.search() do
+ keywords(params[:q])
+ end
+ @pools = search.results
+ end
+
+ def show
+ @pool = Pool.find(params[:id])
+ require_privilege(Privilege::VIEW, @pool)
+ @url_params = params.clone
+ load_instances
+ @tab_captions = ['Properties', 'Deployments', 'Instances',
'History', 'Permissions']
+ @details_tab = params[:details_tab].blank? ? 'properties' :
params[:details_tab]
+ respond_to do |format|
+ format.js do
+ if @url_params.delete :details_pane
+ render :partial => 'layouts/details_pane' and return
+ end
+ render :partial => @details_tab and return
+ end
+ format.html { render :action => 'show'}
+ end
+ end
+
+ def new
+ require_privilege(Privilege::CREATE, Pool)
+ @pool = Pool.new
+ @quota = Quota.new
+ end
+
+ def create
+ require_privilege(Privilege::CREATE, Pool)
+
+ @pool = Pool.new(params[:pool])
+ @pool.quota = @quota = Quota.new
+
+ limit = params[:quota][:maximum_running_instances] if params[:quota]
+ @pool.quota.set_maximum_running_instances(limit)
+
+ if @pool.save
+ @pool.assign_owner_roles(current_user)
+ flash[:notice] = "Pool added."
+ redirect_to :action => 'show', :id => @pool.id
+ else
+ flash.now[:warning] = "Pool creation failed."
+ render :new and return
+ end
+ end
+
+ def edit
+ @pool = Pool.find(params[:id])
+ require_privilege(Privilege::MODIFY, @pool)
+ @quota = @pool.quota
+ end
+
+ def update
+ @pool = Pool.find(params[:id])
+ require_privilege(Privilege::MODIFY, @pool)
+ @quota = @pool.quota
+
+ limit = params[:quota][:maximum_running_instances] if params[:quota]
+ @pool.quota.set_maximum_running_instances(limit)
+ if @pool.update_attributes(params[:pool])
+ flash[:notice] = "Pool updated."
+ redirect_to :action => 'show', :id => @pool.id
+ else
+ flash[:error] = "Pool wasn't updated!"
+ render :action => :edit
+ end
+ end
+
+ def multi_destroy
+ destroyed = []
+ failed = []
+ error_messages = []
+ Pool.find(params[:pools_selected]).each do |pool|
+ # FIXME: remove this check when pools can be assigned to new users
+ # default_pool cannot be deleted because metadata object has it tied
+ # to id of 1 and deleting it prevents new users from being created
+ if pool.id == MetadataObject.lookup("self_service_default_pool").id
+ error_messages << "The default pool cannot be deleted"
+ elsif check_privilege(Privilege::MODIFY, pool) && pool.destroyable?
+ pool.destroy
+ destroyed << pool.name
+ else
+ failed << pool.name
+ end
+ end
+
+ unless destroyed.empty?
+ flash[:notice] = t('pools.index.pool_deleted', :count =>
destroyed.length, :list => destroyed.join(', '))
+ end
+ unless failed.empty?
+ error_messages << t('pools.index.pool_not_deleted', :count =>
failed.length, :list => failed.join(', '))
+ end
+ unless error_messages.empty?
+ flash[:error] = error_messages.join('<br />')
+ end
+ redirect_to resources_pools_url
+ end
+
+ protected
+
+ def set_params_and_header
+ @url_params = params.clone
+ @header = [
+ { :name => "Pool name", :sort_attr => :name },
+ { :name => "Quota (Instances)", :sort_attr =>
"quotas.total_instances"},
+ { :name => "% Quota used", :sortable => false },
+ { :name => "Pool Family", :sort_attr =>
"pool_families.name" },
+ { :name => "Enabled", :sort_attr => :enabled }
+ ]
+ end
+
+ def load_pools
+ @pools = Pool.paginate(:all, :include => [ :quota, :pool_family ],
+ :page => params[:page] || 1,
+ :order => (params[:order_field] || 'name') +' '+
(params[:order_dir] || 'asc')
+ )
+ end
+
+ def load_instances
+ # If state isn't specified at all, show only running instances.
+ # (But if it's nil, we want to show all instances)
+ params[:state] = 'running' unless params.keys.include?('state')
+ conditions = params[:state].present? ? ['state=?', params[:state]] :
''
+ @instances = @pool.instances.find(:all, :conditions => conditions)
+ end
+end
diff --git a/src/app/controllers/provider_accounts_controller.rb
b/src/app/controllers/provider_accounts_controller.rb
new file mode 100644
index 0000000..438e7ee
--- /dev/null
+++ b/src/app/controllers/provider_accounts_controller.rb
@@ -0,0 +1,177 @@
+class ProviderAccountsController < ApplicationController
+ before_filter :require_user
+ before_filter :load_accounts, :only => :show
+ before_filter :set_view_vars, :only => [:index,:show]
+
+ def index
+ @search_term = params[:q]
+ if @search_term.blank?
+ load_accounts
+ else
+ search = ProviderAccount.search do
+ keywords(params[:q])
+ end
+ @accounts = search.results
+ end
+ end
+
+ def show
+ @tab_captions = ['Properties', 'Credentials', 'History',
'Permissions']
+ @account = ProviderAccount.find(params[:id])
+ require_privilege(Privilege::VIEW, @account)
+ @details_tab = params[:details_tab].blank? ? 'properties' :
params[:details_tab]
+
+ if params.delete :test_account
+ test_account(@account)
+ render :action => 'show' and return
+ end
+
+ respond_to do |format|
+ format.js do
+ if @url_params.delete :details_pane
+ render :partial => 'layouts/details_pane' and return
+ end
+ render :partial => @details_tab and return
+ end
+ format.html { render :action => 'show'}
+ end
+ end
+
+ def new
+ @provider_account = ProviderAccount.new
+ @quota = Quota.new
+ @providers = Provider.all
+ if @providers.empty?
+ flash[:error] = "You don't have any provider yet. Please create
one!"
+ else
+ @selected_provider = @providers.first unless @providers.blank?
+ end
+ end
+
+ def create
+ @selected_provider = @provider =
Provider.find(params[:provider_account][:provider_id])
+ require_privilege(Privilege::CREATE, ProviderAccount, @provider)
+
+ @providers = Provider.all
+ @provider_account = ProviderAccount.new(params[:provider_account])
+ @provider_account.provider = @provider
+ @provider_account.quota = @quota = Quota.new
+
+ limit = params[:quota][:maximum_running_instances] if params[:quota]
+ @provider_account.quota.set_maximum_running_instances(limit)
+
+ if @provider_account.invalid? || !(a)provider_account.valid_credentials?
+ flash[:error] = "Credentials are invalid!"
+ render :action => 'new' and return
+ end
+
+ @provider_account.pool_families << PoolFamily.default
+ @provider_account.save!
+ @provider_account.assign_owner_roles(current_user)
+ if @provider_account.populate_realms
+ flash[:notice] = "Provider account added."
+ end
+ redirect_to admin_provider_account_path(@provider_account)
+ kick_condor
+ end
+
+ def edit
+ @provider_account = ProviderAccount.find(params[:id])
+ @selected_provider = @provider_account.provider
+ @quota = @provider_account.quota
+ @providers = Provider.find(:all)
+ require_privilege(Privilege::MODIFY,@provider_account)
+ end
+
+ def update
+ @provider_account = ProviderAccount.find(params[:id])
+ @selected_provider = @provider = @provider_account.provider
+ require_privilege(Privilege::MODIFY, @provider)
+ require_privilege(Privilege::MODIFY,@provider_account)
+ @quota = @provider_account.quota
+ @providers = Provider.find(:all)
+
+ limit = params[:quota][:maximum_running_instances] if params[:quota]
+ @provider_account.quota.set_maximum_running_instances(limit)
+ if @provider_account.update_attributes(params[:provider_account])
+ flash[:notice] = "Provider Account updated!"
+ redirect_to admin_provider_account_path(@provider_account)
+ else
+ flash[:error] = "Provider Account wasn't updated!"
+ render :action => :edit
+ end
+ end
+
+ def multi_destroy
+ if params[:accounts_selected].blank?
+ flash[:notice] = "You must select some accounts first."
+ redirect_to admin_provider_accounts_url and return
+ end
+
+ succeeded = []
+ failed = []
+ ProviderAccount.find(params[:accounts_selected]).each do |account|
+ if check_privilege(Privilege::MODIFY, account) && account.destroyable?
+ account.destroy
+ succeeded << account.label
+ else
+ failed << account.label
+ end
+ end
+
+ unless succeeded.empty?
+ flash[:notice] = t 'provider_accounts.index.account_deleted', :count =>
succeeded.length, :list => succeeded.join(', ')
+ end
+ unless failed.empty?
+ flash[:error] = t 'provider_accounts.index.account_not_deleted', :count
=> failed.length, :list => failed.join(', ')
+ end
+ kick_condor
+ redirect_to admin_provider_accounts_url
+ end
+
+ def set_selected_provider
+ @quota = Quota.new
+ @provider_account = ProviderAccount.new
+ respond_to do |format|
+ format.js {
+ @providers = Provider.find(:all)
+ @selected_provider = Provider.find(params[:provider_account][:provider_id])
+ render :partial => 'provider_selection'
+ }
+ format.html {
+ @providers = Provider.find(:all)
+ @selected_provider = Provider.find(params[:provider_account][:provider_id])
+ render :action => 'new', :layout => true
+ }
+ end
+ end
+
+ protected
+
+ def test_account(account)
+ if account.valid_credentials?
+ flash.now[:notice] = "Test Connection Success: Valid Account Details"
+ else
+ flash.now[:error] = "Test Connection Failed: Invalid Account Details"
+ end
+ rescue
+ flash.now[:error] = "Test Connection Failed: Could not connect to
provider"
+ end
+
+ def set_view_vars
+ #FIXME need to include atributes from credentials, credential_definitions and
provider_type in load_accounts query to make it work
+ @header = [
+ { :name => "Name", :sortable => false },
+ { :name => "Username", :sortable => false},
+ { :name => "Provider Type", :sortable => false }
+ ]
+ @url_params = params
+ end
+
+ def load_accounts
+ @accounts = ProviderAccount.paginate(:all,
+ :page => params[:page] || 1,
+ :order => (params[:order_field] || 'label') +' '+
(params[:order_dir] || 'asc')
+ )
+ end
+end
diff --git a/src/app/controllers/providers_controller.rb
b/src/app/controllers/providers_controller.rb
new file mode 100644
index 0000000..9bbbf8c
--- /dev/null
+++ b/src/app/controllers/providers_controller.rb
@@ -0,0 +1,132 @@
+class ProvidersController < ApplicationController
+ before_filter :require_user
+ before_filter :set_view_envs, :only => [:show, :index]
+
+ def index
+ @params = params
+ @search_term = params[:q]
+ if @search_term.blank?
+ load_providers
+ return
+ end
+
+ search = Provider.search do
+ keywords(params[:q])
+ end
+ @providers = search.results
+ end
+
+ def new
+ require_privilege(Privilege::CREATE, Provider)
+ @provider = Provider.new
+ end
+
+ def edit
+ @provider = Provider.find_by_id(params[:id])
+ require_privilege(Privilege::MODIFY, @provider)
+ end
+
+ def show
+ load_providers
+ @provider = Provider.find(params[:id])
+ @hardware_profiles = @provider.hardware_profiles
+ @realm_names = @provider.realms.collect { |r| r.name }
+
+ @url_params = params.clone
+ require_privilege(Privilege::VIEW, @provider)
+ @tab_captions = ['Properties', 'HW Profiles', 'Realms',
'Provider Accounts', 'Services','History','Permissions']
+ @details_tab = params[:details_tab].blank? ? 'properties' :
params[:details_tab]
+
+ if params.delete :test_provider
+ test_connection(@provider)
+ end
+
+ respond_to do |format|
+ format.js do
+ if @url_params.delete :details_pane
+ render :partial => 'layouts/details_pane' and return
+ end
+ render :partial => @details_tab and return
+ end
+ format.html { render :action => 'show' }
+ end
+ end
+
+ def create
+ require_privilege(Privilege::CREATE, Provider)
+ if params[:provider].has_key?(:provider_type_codename)
+ provider_type = params[:provider].delete(:provider_type_codename)
+ provider_type = ProviderType.find_by_codename(provider_type)
+ params[:provider][:provider_type_id] = provider_type.id
+ end
+ @provider = Provider.new(params[:provider])
+ if !(a)provider.connect
+ flash[:notice] = "Failed to connect to Provider"
+ render :action => "new"
+ else
+ if @provider.save && @provider.populate_hardware_profiles
+ @provider.assign_owner_roles(current_user)
+ flash[:notice] = "Provider added."
+ redirect_to admin_providers_path
+ else
+ flash[:notice] = "Cannot add the provider."
+ render :action => "new"
+ end
+ kick_condor
+ end
+ end
+
+ def update
+ @provider = Provider.find_by_id(params[:id])
+ require_privilege(Privilege::MODIFY, @provider)
+ @provider.update_attributes(params[:provider])
+ if !(a)provider.connect
+ flash[:notice] = "Failed to connect to Provider"
+ render :action => "edit"
+ else
+ if @provider.errors.empty? and @provider.save
+ flash[:notice] = "Provider updated."
+ redirect_to admin_providers_path
+ else
+ flash[:notice] = "Cannot update the provider."
+ render :action => 'edit'
+ end
+ kick_condor
+ end
+ end
+
+ def multi_destroy
+ Provider.find(params[:provider_selected]).each do |provider|
+ provider.destroy if check_privilege(Privilege::MODIFY, provider)
+ end
+ kick_condor
+ redirect_to admin_providers_url
+ end
+
+ def test_connection(provider)
+ @provider.errors.clear
+ if @provider.connect
+ flash[:notice] = "Successfuly Connected to Provider"
+ else
+ flash[:notice] = "Failed to Connect to Provider"
+ @provider.errors.add :url
+ end
+ end
+
+ protected
+ def set_view_envs
+ @header = [{ :name => "Provider name", :sort_attr => :name },
+ { :name => "Provider URL", :sort_attr => :name }
+ ]
+ @url_params = params.clone
+ end
+
+ def load_providers
+ @header = [{ :name => "Provider name", :sort_attr => :name },
+ { :name => "Provider URL", :sort_attr => :name },
+ { :name => "Provider Type", :sort_attr => :name }
+ ]
+ @providers = Provider.list_for_user(@current_user, Privilege::VIEW)
+ @url_params = params.clone
+ end
+end
diff --git a/src/app/controllers/realm_mappings_controller.rb
b/src/app/controllers/realm_mappings_controller.rb
new file mode 100644
index 0000000..226cdf9
--- /dev/null
+++ b/src/app/controllers/realm_mappings_controller.rb
@@ -0,0 +1,40 @@
+class RealmMappingsController < ApplicationController
+ before_filter :require_user
+
+ def new
+ require_privilege(Privilege::CREATE, Realm)
+ @realm_target = RealmBackendTarget.new(:frontend_realm_id =>
params[:frontend_realm_id], :realm_or_provider_type =>
params[:realm_or_provider_type])
+ load_backend_targets
+ end
+
+ def create
+ require_privilege(Privilege::CREATE, Realm)
+ @realm_target = RealmBackendTarget.new(params[:realm_backend_target])
+ if @realm_target.save
+ flash[:notice] = "Realm mapping was added."
+ redirect_to admin_realm_path((a)realm_target.frontend_realm, :details_tab =>
'mapping') and return
+ #redirect_to admin_realms_path and return
+ end
+
+ load_backend_targets
+ render :new
+ end
+
+ def multi_destroy
+ require_privilege(Privilege::MODIFY, Realm)
+ if params[:id].blank?
+ flash[:error] = 'You must select at least one mapping to delete.'
+ redirect_to admin_realm_path(params[:frontend_realm_id], :details_tab =>
'mapping')
+ else
+ # TODO: add permissions checks
+ destroyed = RealmBackendTarget.destroy(params[:id])
+ redirect_to admin_realm_path(destroyed.first.frontend_realm_id, :details_tab =>
'mapping')
+ end
+ end
+
+ protected
+
+ def load_backend_targets
+ @backend_targets = @realm_target.realm_or_provider_type == 'Realm' ?
Realm.all : Provider.list_for_user(@current_user, Privilege::VIEW)
+ end
+end
diff --git a/src/app/controllers/realms_controller.rb
b/src/app/controllers/realms_controller.rb
new file mode 100644
index 0000000..7f05ff7
--- /dev/null
+++ b/src/app/controllers/realms_controller.rb
@@ -0,0 +1,90 @@
+class RealmsController < ApplicationController
+ before_filter :require_user
+ before_filter :load_realms, :only =>[:index,:show]
+
+ def new
+ require_privilege(Privilege::CREATE, Realm)
+ @realm = FrontendRealm.new
+ load_backend_realms
+ end
+
+ def edit
+ require_privilege(Privilege::MODIFY, Realm)
+ @realm = FrontendRealm.find(params[:id])
+ load_backend_realms
+ end
+
+ def update
+ require_privilege(Privilege::MODIFY, Realm)
+ @realm = FrontendRealm.find(params[:id])
+
+ if params[:commit] == "Reset"
+ redirect_to edit_admin_realm_url(@realm) and return
+ end
+
+ if @realm.update_attributes(params[:frontend_realm])
+ flash[:notice] = 'Realm updated successfully!'
+ redirect_to admin_realms_url and return
+ end
+
+ load_backend_realms
+ render :action => 'edit'
+ end
+
+ def create
+ require_privilege(Privilege::CREATE, Realm)
+ @realm = FrontendRealm.new(params[:frontend_realm])
+ if @realm.save
+ flash[:notice] = "Realm was added."
+ redirect_to admin_realms_path and return
+ end
+
+ load_backend_realms
+ render :new
+ end
+
+ def multi_destroy
+ if params[:id].blank?
+ flash[:error] = 'You must select at least one realm to delete.'
+ else
+ require_privilege(Privilege::MODIFY, Realm)
+ FrontendRealm.destroy(params[:id])
+ end
+ redirect_to admin_realms_path
+ end
+
+ def show
+ @realm = FrontendRealm.find(params[:id])
+
+ @url_params = params.clone
+ @tab_captions = ['Properties', 'Mapping']
+ @details_tab = params[:details_tab].blank? ? 'properties' :
params[:details_tab]
+ if @details_tab == 'mapping'
+ @backend_realm_targets = @realm.realm_backend_targets.select {|x|
x.realm_or_provider_type == 'Realm'}
+ @backend_provider_targets = @realm.realm_backend_targets.select {|x|
x.realm_or_provider_type == 'Provider'}
+ end
+ respond_to do |format|
+ format.js do
+ if @url_params.delete :details_pane
+ render :partial => 'layouts/details_pane' and return
+ end
+ render :partial => @details_tab
+ end
+ format.html { render :action => 'show'}
+ end
+ end
+
+ protected
+
+ def load_backend_realms
+ #TODO: list only realms user has permission on
+ @backend_realms = Realm.all
+ @providers = Provider.list_for_user(current_user, Privilege::VIEW)
+ end
+
+ def load_realms
+ @header = [{ :name => "Name", :sort_attr => :name}]
+ @url_params = params.clone
+ @realms = FrontendRealm.all
+ end
+end
diff --git a/src/app/controllers/resources/deployments_controller.rb
b/src/app/controllers/resources/deployments_controller.rb
deleted file mode 100644
index 293e348..0000000
--- a/src/app/controllers/resources/deployments_controller.rb
+++ /dev/null
@@ -1,123 +0,0 @@
-class Resources::DeploymentsController < ApplicationController
- before_filter :require_user
- before_filter :load_deployments, :only => [:index, :show]
-
- def index
- end
-
- def launch_new
- @launchable_deployables = []
- Deployable.all.each do |deployable|
- @launchable_deployables << deployable if deployable.launchable?
- end
- end
-
- def new
- require_privilege(Privilege::CREATE, Deployment)
- @deployment = Deployment.new(:deployable_id => params[:deployable_id])
- if @deployment.deployable.assemblies.empty?
- flash[:warning] = "Deployable must have at least one assembly"
- redirect_to resources_deployments_path
- else
- init_new_deployment_attrs
- end
- end
-
- def create
- require_privilege(Privilege::CREATE, Deployment)
- @deployment = Deployment.new(params[:deployment])
- @deployment.owner = current_user
- if @deployment.save
- flash[:notice] = "Deployment launched"
- errors = @deployment.launch(params[:hw_profiles] || {}, current_user)
- unless errors.empty?
- flash[:error] = {
- :summary => "Failed to launch following assemblies:",
- :failures => errors
- }
- end
- redirect_to resources_deployment_path(@deployment)
- else
- flash.now[:warning] = "Deployment launch failed"
- init_new_deployment_attrs
- render :new
- end
- end
-
- def show
- @deployment = Deployment.find(params[:id])
- require_privilege(Privilege::VIEW, @deployment)
- init_new_deployment_attrs
- @tab_captions = ['Properties', 'Instances', 'Provider
Services', 'Required Services', 'History', 'Permissions']
- @details_tab = params[:details_tab].blank? ? 'properties' :
params[:details_tab]
- respond_to do |format|
- format.js do
- if @url_params.delete :details_pane
- render :partial => 'layouts/details_pane' and return
- end
- render :partial => @details_tab and return
- end
- format.html { render :action => 'show'}
- end
- end
-
- def multi_stop
- notices = ""
- errors = ""
- Deployment.find(params[:deployments_selected]).each do |deployment|
- deployment.instances.each do |instance|
- begin
- require_privilege(Privilege::USE,instance)
- unless instance.valid_action?('stop')
- raise ActionError.new("stop is an invalid action.")
- end
-
- # not sure if task is used as everything goes through condor
- #permissons check here
- @task = instance.queue_action(@current_user, 'stop')
- unless @task
- raise ActionError.new("stop cannot be performed on this
instance.")
- end
- condormatic_instance_stop(@task)
- notices << "Deployment: #{instance.deployment.name}, Instance:
#{instance.name}: stop action was successfully queued.<br/>"
- rescue Exception => err
- errors << "Deployment: #{instance.deployment.name}, Instance:
#{instance.name}: " + err + "<br/>"
- end
- end
- end
- flash[:notice] = notices unless notices.blank?
- flash[:error] = errors unless errors.blank?
- redirect_to resources_deployments_path
- end
-
- private
- def load_deployments
- @url_params = params
- @deployments = Deployment.paginate(:all,
- :page => params[:page] || 1,
- :order => (params[:order_field] || 'name') +' '+
(params[:order_dir] || 'asc')
- )
- @header = [
- { :name => "", :sort_attr => :name },
- { :name => "Deployment name", :sort_attr => :name },
- { :name => "Deployable", :sortable => false },
- { :name => "Owner", :sort_attr => "owner.login"},
- { :name => "Running Since", :sort_attr => :running_since },
- { :name => "Pool", :sort_attr => "pool.name" }
- ]
- @pools = Pool.list_for_user(current_user, Privilege::CREATE, :target_type =>
Deployment)
- @deployments = Deployment.all(:include => :owner,
- :conditions => {:pool_id => @pools},
- :order => (params[:order_field] || 'name')
+' '+ (params[:order_dir] || 'asc')
- )
- end
-
- def init_new_deployment_attrs
- @pools = Pool.list_for_user(@current_user, Privilege::CREATE, :target_type =>
Deployment)
- @realms = FrontendRealm.all
- @hardware_profiles = HardwareProfile.all(
- :include => :architecture,
- :conditions => {:provider_id => nil}
- )
- end
-end
diff --git a/src/app/controllers/resources/instances_controller.rb
b/src/app/controllers/resources/instances_controller.rb
deleted file mode 100644
index 37aadeb..0000000
--- a/src/app/controllers/resources/instances_controller.rb
+++ /dev/null
@@ -1,223 +0,0 @@
-class Resources::InstancesController < ApplicationController
- before_filter :require_user, :except => [:can_start, :can_create]
- before_filter :load_instance, :only => [:show, :key]
- before_filter :set_view_vars, :only => [:show, :index]
-
- def index
- @params = params
- @search_term = params[:q]
- if @search_term.blank?
- load_instances
- return
- end
-
- search = Instance.search do
- keywords(params[:q])
- end
- @instances = search.results
- end
-
- def new
- @instance = Instance.new(params[:instance])
- require_privilege(Privilege::CREATE, Instance, @instance.pool) if @instance.pool
-
- unless @instance.template
- redirect_to select_template_resources_instances_path
- return
- end
-
- init_new_instance_attrs
- end
-
- def select_template
- # FIXME: we need to list only templates for particular user,
- # => TODO: add TEMPLATE_* permissions
- @templates = Template.paginate(
- :page => params[:page] || 1,
- :include => {:images => :provider_images},
- :conditions => "provider_images.status =
'#{ProviderImage::STATE_COMPLETED}'"
- )
- end
-
- def create
- if params[:cancel]
- redirect_to select_template_resources_instances_path
- return
- end
-
- @instance = Instance.new(params[:instance])
- @instance.state = Instance::STATE_NEW
- @instance.owner = current_user
-
- begin
- require_privilege(Privilege::CREATE, Instance,
- Pool.find((a)instance.pool_id))
- free_quota = Quota.can_start_instance?(@instance, nil)
- raise "Pool is not enabled" unless @instance.pool and
@instance.pool.enabled
- @instance.transaction do
- @instance.save!
- # set owner permissions:
- @task = InstanceTask.create!({:user => current_user,
- :task_target => @instance,
- :action => InstanceTask::ACTION_CREATE})
- condormatic_instance_create(@task)
- end
- rescue
- init_new_instance_attrs
- flash[:warning] = "Failed to launch instance: #{$!}"
- render :new
- else
- if free_quota
- flash[:notice] = "Instance added."
- else
- flash[:warning] = "Quota Exceeded: Instance will not start until you have
free quota"
- end
- redirect_to resources_instances_path
- end
- end
-
- def edit
- end
-
- def show
- load_instances
- @url_params = params.clone
- @tab_captions = ['Properties', 'History', 'Permissions']
- @details_tab = params[:details_tab].blank? ? 'properties' :
params[:details_tab]
- respond_to do |format|
- format.js do
- if @url_params.delete :details_pane
- render :partial => 'layouts/details_pane' and return
- end
- render :partial => @details_tab and return
- end
- format.html { render :action => 'show'}
- end
- end
-
- def key
- unless @instance.instance_key.nil?
- send_data @instance.instance_key.pem,
- :filename => "#{(a)instance.instance_key.name}.pem",
- :type => "text/plain"
- return
- end
- flash[:warning] = "SSH Key not found for this Instance."
- redirect_to resources_instance_path(@instance)
- end
-
- def multi_stop
- notices = ""
- errors = ""
- Instance.find(params[:instance_selected]).each do |instance|
- begin
- require_privilege(Privilege::USE,instance)
- unless instance.valid_action?('stop')
- raise ActionError.new("stop is an invalid action.")
- end
-
- # not sure if task is used as everything goes through condor
- #permissons check here
- @task = instance.queue_action(@current_user, 'stop')
- unless @task
- raise ActionError.new("stop cannot be performed on this instance.")
- end
- condormatic_instance_stop(@task)
- notices << "#{instance.name}: stop action was successfully
queued.<br/>"
- rescue Exception => err
- errors << "#{instance.name}: " + err + "<br/>"
- end
- end
- flash[:notice] = notices unless notices.blank?
- flash[:error] = errors unless errors.blank?
- redirect_to resources_instances_path
- end
-
- def remove_failed
- notices = ""
- errors = ""
- Instance.find(params[:instance_selected]).each do |instance|
- begin
- require_privilege(Privilege::USE,instance)
- raise ActionError.new("remove failed cannot be performed on this
instance.") unless
- instance.state == Instance::STATE_ERROR
- condormatic_instance_reset_error(instance)
- notices << "#{instance.name}: remove failed action was successfully
queued."
- rescue Exception => err
- errors << "#{instance.name}: " + err + "<br/>"
- end
- end
- flash[:notice] = notices unless notices.blank?
- flash[:error] = errors unless errors.blank?
- redirect_to resources_instances_path
- end
-
- def can_create
- begin
- provider_account = ProviderAccount.find(params[:provider_account_id])
- @instance = Instance.find(params[:instance_id])
- @action_request = "can_create"
- @value = Quota.can_create_instance?(@instance, provider_account)
- render :partial => 'can_perform_state_change.xml'
- rescue ActiveRecord::RecordNotFound
- head :not_found
- rescue Exception
- head :internal_server_error
- end
- end
-
- def can_start
- begin
- provider_account = ProviderAccount.find(params[:provider_account_id])
- @instance = Instance.find(params[:instance_id])
- @action_request = "can_start"
- @value = Quota.can_start_instance?(@instance, provider_account)
- render :partial => 'can_perform_state_change.xml'
- rescue ActiveRecord::RecordNotFound => e
- puts e.inspect
- head :not_found
- rescue Exception => e
- puts e.inspect
- head :internal_server_error
- end
- end
-
- private
-
- def load_instance
- @instance = Instance.find(params[:id].to_a.first)
- require_privilege(Privilege::USE,@instance)
- end
-
- def init_new_instance_attrs
- @pools = Pool.list_for_user(@current_user, Privilege::CREATE, {:target_type =>
Instance,:conditions=>{ :enabled => true}})
- @realms = FrontendRealm.all
- @hardware_profiles = HardwareProfile.all(
- :include => :architecture,
- :conditions => {
- :provider_id => nil,
- 'hardware_profile_properties.value' =>
@instance.template.architecture
- }
- )
- end
-
- def set_view_vars
- @header = [
- {:name => 'VM NAME', :sort_attr => 'name'},
- {:name => 'STATUS', :sortable => false},
- {:name => 'TEMPLATE', :sort_attr => 'templates.name'},
- {:name => 'PUBLIC ADDRESS', :sort_attr =>
'public_addresses'},
- {:name => 'PROVIDER', :sortable => false},
- {:name => 'CREATED BY', :sort_attr => 'users.last_name'},
- ]
-
- @pools = Pool.list_for_user(@current_user, Privilege::CREATE, :target_type =>
Instance)
- end
-
- def load_instances
- @instances = Instance.all(:include => [:template, :owner],
- :conditions => {:pool_id => @pools},
- :order => (params[:order_field] || 'name')
+' '+ (params[:order_dir] || 'asc')
- )
- end
-end
diff --git a/src/app/controllers/resources/pools_controller.rb
b/src/app/controllers/resources/pools_controller.rb
deleted file mode 100644
index 530883a..0000000
--- a/src/app/controllers/resources/pools_controller.rb
+++ /dev/null
@@ -1,141 +0,0 @@
-class Resources::PoolsController < ApplicationController
- before_filter :require_user
- before_filter :set_params_and_header, :only => [:index, :show]
- before_filter :load_pools, :only => [:show]
-
- def index
- @search_term = params[:q]
- if @search_term.blank?
- load_pools
- return
- end
-
- search = Pool.search() do
- keywords(params[:q])
- end
- @pools = search.results
- end
-
- def show
- @pool = Pool.find(params[:id])
- require_privilege(Privilege::VIEW, @pool)
- @url_params = params.clone
- load_instances
- @tab_captions = ['Properties', 'Deployments', 'Instances',
'History', 'Permissions']
- @details_tab = params[:details_tab].blank? ? 'properties' :
params[:details_tab]
- respond_to do |format|
- format.js do
- if @url_params.delete :details_pane
- render :partial => 'layouts/details_pane' and return
- end
- render :partial => @details_tab and return
- end
- format.html { render :action => 'show'}
- end
- end
-
- def new
- require_privilege(Privilege::CREATE, Pool)
- @pool = Pool.new
- @quota = Quota.new
- end
-
- def create
- require_privilege(Privilege::CREATE, Pool)
-
- @pool = Pool.new(params[:pool])
- @pool.quota = @quota = Quota.new
-
- limit = params[:quota][:maximum_running_instances] if params[:quota]
- @pool.quota.set_maximum_running_instances(limit)
-
- if @pool.save
- @pool.assign_owner_roles(current_user)
- flash[:notice] = "Pool added."
- redirect_to :action => 'show', :id => @pool.id
- else
- flash.now[:warning] = "Pool creation failed."
- render :new and return
- end
- end
-
- def edit
- @pool = Pool.find(params[:id])
- require_privilege(Privilege::MODIFY, @pool)
- @quota = @pool.quota
- end
-
- def update
- @pool = Pool.find(params[:id])
- require_privilege(Privilege::MODIFY, @pool)
- @quota = @pool.quota
-
- limit = params[:quota][:maximum_running_instances] if params[:quota]
- @pool.quota.set_maximum_running_instances(limit)
- if @pool.update_attributes(params[:pool])
- flash[:notice] = "Pool updated."
- redirect_to :action => 'show', :id => @pool.id
- else
- flash[:error] = "Pool wasn't updated!"
- render :action => :edit
- end
- end
-
- def multi_destroy
- destroyed = []
- failed = []
- error_messages = []
- Pool.find(params[:pools_selected]).each do |pool|
- # FIXME: remove this check when pools can be assigned to new users
- # default_pool cannot be deleted because metadata object has it tied
- # to id of 1 and deleting it prevents new users from being created
- if pool.id == MetadataObject.lookup("self_service_default_pool").id
- error_messages << "The default pool cannot be deleted"
- elsif check_privilege(Privilege::MODIFY, pool) && pool.destroyable?
- pool.destroy
- destroyed << pool.name
- else
- failed << pool.name
- end
- end
-
- unless destroyed.empty?
- flash[:notice] = t('pools.index.pool_deleted', :count =>
destroyed.length, :list => destroyed.join(', '))
- end
- unless failed.empty?
- error_messages << t('pools.index.pool_not_deleted', :count =>
failed.length, :list => failed.join(', '))
- end
- unless error_messages.empty?
- flash[:error] = error_messages.join('<br />')
- end
- redirect_to resources_pools_url
- end
-
- protected
-
- def set_params_and_header
- @url_params = params.clone
- @header = [
- { :name => "Pool name", :sort_attr => :name },
- { :name => "Quota (Instances)", :sort_attr =>
"quotas.total_instances"},
- { :name => "% Quota used", :sortable => false },
- { :name => "Pool Family", :sort_attr =>
"pool_families.name" },
- { :name => "Enabled", :sort_attr => :enabled }
- ]
- end
-
- def load_pools
- @pools = Pool.paginate(:all, :include => [ :quota, :pool_family ],
- :page => params[:page] || 1,
- :order => (params[:order_field] || 'name') +' '+
(params[:order_dir] || 'asc')
- )
- end
-
- def load_instances
- # If state isn't specified at all, show only running instances.
- # (But if it's nil, we want to show all instances)
- params[:state] = 'running' unless params.keys.include?('state')
- conditions = params[:state].present? ? ['state=?', params[:state]] :
''
- @instances = @pool.instances.find(:all, :conditions => conditions)
- end
-end
diff --git a/src/app/controllers/roles_controller.rb
b/src/app/controllers/roles_controller.rb
new file mode 100644
index 0000000..a0ac666
--- /dev/null
+++ b/src/app/controllers/roles_controller.rb
@@ -0,0 +1,100 @@
+class RolesController < ApplicationController
+ before_filter :require_user
+ before_filter :load_roles, :only => [:show]
+ before_filter :load_params_and_headers, :only => [:index]
+
+ def index
+ @search_term = params[:q]
+ if @search_term.blank?
+ load_roles
+ return
+ end
+
+ search = Role.search() do
+ keywords(params[:q])
+ end
+ @roles = search.results
+ end
+
+ def new
+ require_privilege(Privilege::PERM_SET)
+ @role = Role.new
+ end
+
+ def create
+ require_privilege(Privilege::PERM_SET)
+ @role = Role.new(params[:role])
+
+ # TODO: (lmartinc) Fix this and let user select the scope. Consult with sseago.
+ @role.scope = BasePermissionObject.to_s if @role.scope.nil?
+
+ if @role.save
+ flash[:notice] = 'Role successfully saved!'
+ redirect_to admin_roles_path and return
+ end
+
+ render :action => 'new'
+ end
+
+ def show
+ require_privilege(Privilege::PERM_VIEW)
+ @role = Role.find(params[:id])
+
+ @url_params = params.clone
+ @tab_captions = ['Properties']
+ @details_tab = params[:details_tab].blank? ? 'properties' :
params[:details_tab]
+ respond_to do |format|
+ format.js do
+ if @url_params.delete :details_pane
+ render :partial => 'layouts/details_pane' and return
+ end
+ render :partial => @details_tab
+ end
+ format.html { render :partial => @details_tab }
+ end
+ end
+
+ def edit
+ require_privilege(Privilege::PERM_SET)
+ @role = Role.find(params[:id])
+ end
+
+ def update
+ require_privilege(Privilege::PERM_SET)
+ @role = Role.find(params[:id])
+
+ if params[:commit] == "Reset"
+ redirect_to edit_admin_role_url(@role) and return
+ end
+
+ if @role.update_attributes(params[:role])
+ flash[:notice] = 'Role updated successfully!'
+ redirect_to admin_roles_url and return
+ end
+
+ render :action => 'edit'
+ end
+
+ def multi_destroy
+ require_privilege(Privilege::PERM_SET)
+ Role.destroy(params[:role_selected])
+ redirect_to admin_roles_url
+ end
+
+ protected
+
+ def load_params_and_headers
+ @header = [
+ { :name => "Role name", :sort_attr => :name }
+ ]
+ @url_params = params.clone
+ end
+
+ def load_roles
+ @roles = Role.paginate(:all,
+ :page => params[:page] || 1,
+ :order => (params[:order_field] || 'name') +' '+
(params[:order_dir] || 'asc')
+ )
+ end
+
+end
diff --git a/src/app/controllers/settings_controller.rb
b/src/app/controllers/settings_controller.rb
new file mode 100644
index 0000000..4cd341c
--- /dev/null
+++ b/src/app/controllers/settings_controller.rb
@@ -0,0 +1,44 @@
+class SettingsController < ApplicationController
+ before_filter :require_user
+
+ # Settings MetaData Keys
+ SELF_SERVICE_DEFAULT_QUOTA = "self_service_default_quota"
+ KEYS = [SELF_SERVICE_DEFAULT_QUOTA]
+
+ def self_service
+ require_privilege(Privilege::MODIFY)
+ @self_service_default_quota = MetadataObject.lookup(SELF_SERVICE_DEFAULT_QUOTA)
+ end
+
+ def general_settings
+ require_privilege(Privilege::MODIFY)
+ end
+
+ def update
+ KEYS.each do |key|
+ if params[key]
+ if key == SELF_SERVICE_DEFAULT_QUOTA
+ @self_service_default_quota = MetadataObject.lookup(key)
+ if !(a)self_service_default_quota.update_attributes(params[key])
+ flash[:notice] = "Could not update the default quota"
+ render :self_service
+ return
+ end
+ elsif key == SELF_SERVICE_DEFAULT_POOL
+ if Pool.exists?(params[key])
+ MetadataObject.set(key, Pool.find(params[key]))
+ end
+ elsif key == SELF_SERVICE_DEFAULT_ROLE
+ if Role.exists?(params[key])
+ MetadataObject.set(key, Role.find(params[key]))
+ end
+ else
+ MetadataObject.set(key, params[key])
+ end
+ end
+ end
+ flash[:notice] = "Settings Updated!"
+ redirect_to :action => 'self_service'
+ end
+
+end
diff --git a/src/app/controllers/templates_controller.rb
b/src/app/controllers/templates_controller.rb
new file mode 100644
index 0000000..786f55a
--- /dev/null
+++ b/src/app/controllers/templates_controller.rb
@@ -0,0 +1,301 @@
+require 'util/repository_manager'
+
+class TemplatesController < ApplicationController
+ before_filter :require_user
+ before_filter :set_view_vars, :only => [:index, :show]
+
+ def index
+ require_privilege(Privilege::VIEW, Template)
+ @params = params
+ @search_term = params[:q]
+ if @search_term.blank?
+ load_templates
+ return
+ end
+
+ # FIXME: Filter on Permissions
+ search = Template.search do
+ keywords(params[:q])
+ end
+ @templates = search.results
+ end
+
+ def show
+ load_templates
+ @tpl = Template.find(params[:id])
+ require_privilege(Privilege::VIEW, @tpl)
+ @url_params = params.clone
+ @tab_captions = ['Properties', 'Builds']
+ @details_tab = params[:details_tab].blank? ? 'properties' :
params[:details_tab]
+ load_images(@tpl) if @details_tab == 'builds'
+ respond_to do |format|
+ format.js do
+ if @url_params.delete :details_pane
+ render :partial => 'layouts/details_pane' and return
+ end
+ render :partial => @details_tab and return
+ end
+ format.html { render :action => 'show'}
+ end
+ end
+
+ def new
+ check_create_permission
+ # can't use @template variable - is used by compass (or something other)
+ @tpl = Template.new(params[:tpl])
+ @repository_manager = RepositoryManager.new(:repositories => params[:repository]
|| @tpl.platform)
+ end
+
+ def add_selected
+ if params[:tpl] and not params[:tpl][:id].blank?
+ @tpl = Template.find(params[:tpl][:id])
+ check_edit_permission
+ @tpl.attributes = params[:tpl]
+ else
+ @tpl = Template.new(params[:tpl])
+ check_create_permission
+ end
+ @repository_manager = RepositoryManager.new(:repositories => params[:repository]
|| @tpl.platform)
+ @tpl.add_software(params[:packages].to_a + params[:selected_packages].to_a +
params[:cached_packages].to_a,
+ params[:groups].to_a + params[:selected_groups].to_a)
+ render :action => @tpl.id ? :edit : :new
+ end
+
+ def edit
+ @tpl = Template.find(params[:id])
+ check_edit_permission
+ @tpl.attributes = params[:tpl] unless params[:tpl].blank?
+ @tpl.add_software(params[:packages].to_a, params[:groups].to_a)
+ @repository_manager = RepositoryManager.new(:repositories => params[:repository]
|| @tpl.platform)
+ end
+
+ def create
+ check_create_permission
+ @tpl = Template.new(params[:tpl])
+ @tpl.packages = params[:packages]
+ @tpl.owner = current_user
+ if @tpl.save
+ flash[:notice] = "Template saved."
+ @tpl.set_complete
+ if params[:create_deployable]
+ Deployable.create!(:name => @tpl.name, :assemblies => @tpl.assemblies,
:owner => current_user)
+ end
+ redirect_to image_factory_templates_path
+ else
+ @repository_manager = RepositoryManager.new(:repositories => params[:repository]
|| @tpl.platform)
+ render :new
+ end
+ end
+
+ def update
+ @tpl = Template.find(params[:id])
+ check_edit_permission
+ @tpl.packages = []
+ @tpl.add_software(params[:packages].to_a, params[:groups].to_a)
+
+ if @tpl.update_attributes(params[:tpl])
+ @tpl.set_complete
+ flash[:notice] = "Template updated."
+ redirect_to image_factory_templates_path
+ else
+ @repository_manager = RepositoryManager.new(:repositories => params[:repository]
|| @tpl.platform)
+ render :action => 'edit'
+ end
+ end
+
+ def search_packages
+ set_package_vars
+ @page = get_page
+ @cached_packages = params[:cached_packages].to_a + params[:selected_packages].to_a
+ @searched_packages = params[:package_search].empty? ? [] :
@repository_manager.search_package(
+ params[:package_search]).paginate(:page => @page, :per_page => 60)
+ if request.xhr?
+ render :partial => 'search_packages'
+ else
+ render 'search_packages'
+ end
+ end
+
+ def metagroup_packages
+ set_package_vars
+ group = params[:__rewrite] ? params[:__rewrite][:metagroup_packages] : nil
+ @metagroup_packages = @repository_manager.metagroup_packages(group)
+ if request.xhr?
+ render :partial => 'metagroup_packages'
+ end
+ end
+
+ def collections
+ if params[:package_search_button]
+ search_packages
+ return
+ end
+ set_package_vars
+ @collections = @repository_manager.groups
+ if request.xhr?
+ render :partial => 'collections'
+ end
+ end
+
+ def content_selection
+ set_package_vars(true)
+ @collections = @repository_manager.groups
+ if request.xhr?
+ render :partial => 'software_selection', :locals => {:view =>
'collections'}
+ else
+ render :collections
+ end
+ end
+
+ def managed_content
+ if params[:template_id].blank?
+ @tpl = Template.new
+ check_create_permission
+ else
+ @tpl = Template.find(params[:template_id])
+ check_edit_permission
+ end
+ @tpl.add_software(params[:packages].to_a + params[:selected_packages].to_a,
+ params[:groups].to_a + params[:selected_groups].to_a)
+ render :layout => false
+ end
+
+ def assembly
+ # FIXME: do we need perm check here?
+ end
+
+ def deployment_definition
+ # FIXME: do we need perm check here?
+ @all_targets = ProviderType.all(:conditions => {:build_supported => true})
+ end
+
+ def remove_package
+ params[:packages].delete(params[:name]) unless params[:name].blank?
+ if params[:tpl] and not params[:tpl][:id].blank?
+ @tpl = Template.find(params[:tpl][:id])
+ check_edit_permission
+ @tpl.attributes = params[:tpl]
+ else
+ @tpl = Template.new(params[:tpl])
+ check_create_permission
+ end
+ @tpl.add_software(params[:packages].to_a, params[:groups].to_a)
+ @repository_manager = RepositoryManager.new(:repositories => params[:repository]
|| @tpl.platform)
+ render :action => @tpl.id ? :edit : :new
+ end
+
+ def multi_destroy
+ destroyed = []
+ failed = []
+ Template.find(params[:selected]).each do |template|
+ if check_privilege(Privilege::MODIFY, template) and template.destroy
+ destroyed << template.name
+ else
+ failed << template.name
+ end
+ end
+
+ unless destroyed.empty?
+ flash[:notice] = t('templates.index.deleted', :count =>
destroyed.length, :list => destroyed.join(', '))
+ end
+ unless failed.empty?
+ flash[:error] = t('templates.index.not_deleted', :count =>
failed.length, :list => failed.join(', '))
+ end
+ redirect_to image_factory_templates_url
+ end
+
+ protected
+
+ def load_images(tpl)
+ @targets_not_built = {}
+
+ Provider.all.each do |p|
+ @targets_not_built[p.provider_type.id] = p.provider_type.name
+ end
+
+ tpl.images.each do |img|
+ @targets_not_built.delete(img.provider_type_id)
+ end
+ @targets_not_built = @targets_not_built.invert
+
+ @images = tpl.images
+ end
+
+ def set_view_vars
+ @header = [
+ {:name => 'NAME', :sort_attr => 'name'},
+ {:name => 'OS', :sort_attr => 'platform'},
+ {:name => 'VERSION', :sort_attr => 'platform_version'},
+ {:name => 'BOOTABLE', :sortable => false},
+ {:name => 'ARCH', :sort_attr => 'architecture'},
+ ]
+
+ @url_params = params.clone
+ end
+
+ def load_templates
+ @templates = Template.list_for_user(current_user,
+ Privilege::VIEW,
+ :include => :images,
+ :order => get_order('name')
+ )
+ end
+
+ def set_package_vars(set_all = false)
+ id = params[:id] || (params[:tpl] && params[:tpl][:id]) || nil
+ if id.blank?
+ @tpl = Template.new
+ check_create_permission
+ else
+ @tpl = Template.find(id)
+ check_edit_permission
+ end
+ @tpl.attributes = params[:tpl] unless params[:tpl].nil?
+ @repository_manager = RepositoryManager.new(:repositories => params[:repository]
|| @tpl.platform)
+ @groups = @repository_manager.groups
+ @categories = @repository_manager.categories if not request.xhr? or set_all
+ @metagroups = @repository_manager.metagroups if not request.xhr? or set_all
+ @tpl.add_software(params[:packages].to_a, params[:groups].to_a)
+ end
+
+ def get_order(default)
+ @order_dir = params[:order_dir] == 'desc' ? 'desc' : 'asc'
+ @order_field = params[:order_field] || default
+ "#{@order_field} #{@order_dir}"
+ end
+
+ def flash_error(summary, errs)
+ flash.now[:error] ||= {}
+ flash.now[:error][:summary] = summary
+ flash.now[:error][:failures] ||= {}
+ flash.now[:error][:failures].merge!(errs)
+ end
+
+ def check_create_permission
+ require_privilege(Privilege::CREATE, Template)
+ end
+
+ def check_edit_permission
+ require_privilege(Privilege::MODIFY, @tpl)
+ end
+
+ def get_selected_id
+ ids = params[:ids].to_a
+ if ids.size != 1
+ flash[:warning] = ids.empty? ? 'No Template Selected' : 'You can select
only one template'
+ return
+ end
+ return ids.first
+ end
+
+ def get_page
+ if params[:page] == 'Previous'
+ return params[:old_page].to_i - 1
+ elsif params[:page] == 'Next'
+ return params[:old_page].to_i + 1
+ else
+ return params[:page].blank? ? 1 : params[:page].to_i
+ end
+ end
+
+end
diff --git a/src/app/controllers/users_controller.rb
b/src/app/controllers/users_controller.rb
new file mode 100644
index 0000000..8e3484c
--- /dev/null
+++ b/src/app/controllers/users_controller.rb
@@ -0,0 +1,124 @@
+class UsersController < ApplicationController
+ before_filter :require_user, :except => [:new, :create]
+ before_filter :load_users, :only => [:show]
+
+ def index
+ require_privilege(Privilege::VIEW, User)
+ @params = params
+ @search_term = params[:q]
+ if @search_term.blank?
+ load_users
+ return
+ end
+
+ search = User.search do
+ keywords(params[:q])
+ end
+ @users = search.results
+ end
+
+ def new
+ require_privilege(Privilege::CREATE, User) unless current_user.nil?
+ @user = User.new
+ @user.quota = Quota.new
+ end
+
+ def create
+ if params[:commit] == "Reset"
+ redirect_to :action => 'new' and return
+ end
+
+ require_privilege(Privilege::MODIFY, User) unless current_user.nil?
+ @user = User.new(params[:user])
+
+ @registration = RegistrationService.new(@user)
+ unless @registration.save
+ flash.now[:warning] = "User registration failed: #{(a)registration.error}"
+ render :action => 'new' and return
+ end
+
+ if current_user != @user
+ flash[:notice] = "User registered!"
+ redirect_to admin_users_url
+ else
+ flash[:notice] = "You have successfully registered!"
+ redirect_to root_url
+ end
+ end
+
+ def show
+ @user = params[:id] ? User.find(params[:id]) : current_user
+ require_privilege(Privilege::VIEW, User) unless current_user == @user
+ @quota_resources = @user.quota.quota_resources
+
+ @url_params = params.clone
+ @tab_captions = ['Properties']
+ @details_tab = params[:details_tab].blank? ? 'properties' :
params[:details_tab]
+ respond_to do |format|
+ format.js do
+ if @url_params.delete :details_pane
+ render :partial => 'layouts/details_pane' and return
+ end
+ render :partial => @details_tab
+ end
+ format.html { render :partial => @details_tab }
+ end
+ end
+
+ def edit
+ @user = params[:id] ? User.find(params[:id]) : current_user
+ require_privilege(Privilege::MODIFY, User) unless @user == current_user
+ end
+
+ def update
+ @user = params[:id] ? User.find(params[:id]) : current_user
+ require_privilege(Privilege::MODIFY, User) unless @user == current_user
+
+ if params[:commit] == "Reset"
+ redirect_to edit_admin_user_url(@user) and return
+ end
+
+ redirect_to root_url and return unless @user
+
+ unless @user.update_attributes(params[:user])
+ render :action => 'edit' and return
+ else
+ flash[:notice] = "User updated!"
+ redirect_to (@user == current_user) ? root_url : admin_users_url
+ end
+ end
+
+ def multi_destroy
+ require_privilege(Privilege::MODIFY, User)
+ deleted_users = []
+ User.find(params[:user_selected]).each do |user|
+ if user == current_user
+ flash[:warning] = "Cannot delete #{user.login}: you are logged in as this
user"
+ else
+ user.destroy
+ deleted_users << user.login
+ end
+ end
+ unless deleted_users.empty?
+ msg = "Deleted user#{'s' if deleted_users.length > 1}"
+ flash[:notice] = "#{msg}: #{deleted_users.join(', ')}"
+ end
+ redirect_to admin_users_url
+ end
+
+ protected
+
+ def load_users
+ @users = User.all
+ sort_order = params[:sort_by].nil? ? "login" : params[:sort_by]
+ # TODO: (lmartinc) Optimize this sort! hell!
+ if sort_order == "percentage_quota_used"
+ @users.sort! {|x,y| y.quota.percentage_used <=> x.quota.percentage_used }
+ elsif sort_order == "quota"
+ @users.sort! {|x,y| (x.quota.maximum_running_instances and
y.quota.maximum_running_instances) ? x.quota.maximum_running_instances <=>
y.quota.maximum_running_instances : (x ? 1 : -1) }
+ else
+ @users = User.all(:order => sort_order)
+ end
+ end
+
+end
diff --git a/src/app/helpers/resources/instances_helper.rb
b/src/app/helpers/resources/instances_helper.rb
deleted file mode 100644
index 91474ad..0000000
--- a/src/app/helpers/resources/instances_helper.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Copyright (C) 2009 Red Hat, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; version 2 of the License.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
-# MA 02110-1301, USA. A copy of the GNU General Public License is
-# also available at
http://www.gnu.org/copyleft/gpl.html.
-
-# Filters added to this controller apply to all controllers in the application.
-# Likewise, all the methods added will be available for all controllers.
-
-module Resources::InstancesHelper
- def owner_name(inst)
- return '' unless inst.owner
- # if last_name is set, use full name,
- # else use login
- if inst.owner.last_name.blank?
- inst.owner.login
- else
- "#{inst.owner.first_name} #{inst.owner.last_name}"
- end
- end
-end
diff --git a/src/app/views/admin/hardware_profiles/_form.haml
b/src/app/views/admin/hardware_profiles/_form.haml
deleted file mode 100644
index 70c982b..0000000
--- a/src/app/views/admin/hardware_profiles/_form.haml
+++ /dev/null
@@ -1,18 +0,0 @@
-=hwp_form.label :name
-=hwp_form.text_field :name
-%table
- = sortable_table_header @header
- - [:memory, :cpu, :storage, :architecture].each do |type|
- - hwp_form.fields_for type do |hwpp_form|
- %tr
- %td
- =hwpp_form.text_field(:name, :readonly => "readonly")
- %td
- =hwpp_form.text_field(:unit, :size => 5, :readonly =>
"readonly")
- %td
- -if type == :architecture
- =hwpp_form.select("value", ["i386", "x86_64"],
{})
- -else
- =hwpp_form.text_field(:value)
-= hwp_form.submit 'Check Matches', :class => "submit formbutton"
-= hwp_form.submit 'Save', :class => 'submit formbutton'
\ No newline at end of file
diff --git a/src/app/views/admin/hardware_profiles/_history.haml
b/src/app/views/admin/hardware_profiles/_history.haml
deleted file mode 100644
index 894e9cd..0000000
--- a/src/app/views/admin/hardware_profiles/_history.haml
+++ /dev/null
@@ -1 +0,0 @@
-%h3 History
diff --git a/src/app/views/admin/hardware_profiles/_list.haml
b/src/app/views/admin/hardware_profiles/_list.haml
deleted file mode 100644
index eee5ff1..0000000
--- a/src/app/views/admin/hardware_profiles/_list.haml
+++ /dev/null
@@ -1,28 +0,0 @@
-- form_tag do
- #object-actions
- = link_to "New Hardware Profile", new_admin_hardware_profile_path, :class
=> 'button'
- = restful_submit_tag "Delete", 'destroy',
multi_destroy_admin_hardware_profiles_path, 'DELETE', :id =>
'delete_button'
- #selections
- %p
- Select:
- = link_to "All", @url_params.merge(:select => 'all')
- %span> ,
- = link_to "None", @url_params.merge(:select => 'none')
-
- #list
- %table
- = sortable_table_header @header
- - @hardware_profiles.each do |hwp|
- %tr
- %td
- - selected = @url_params[:select] == 'all'
- %input{:name => "hardware_profile_selected[]", :type =>
"checkbox", :value => hwp.id, :id =>
"hardware_profile_checkbox_#{hwp.id}", :checked => selected }
- = link_to hwp.name, admin_hardware_profile_path(hwp)
- %td
- =hwp.architecture.to_s
- %td
- =hwp.memory.to_s
- %td
- =hwp.storage.to_s
- %td
- =hwp.cpu.to_s
diff --git
a/src/app/views/admin/hardware_profiles/_matching_provider_hardware_profiles.haml
b/src/app/views/admin/hardware_profiles/_matching_provider_hardware_profiles.haml
deleted file mode 100644
index 49c45e3..0000000
--- a/src/app/views/admin/hardware_profiles/_matching_provider_hardware_profiles.haml
+++ /dev/null
@@ -1,24 +0,0 @@
-- if @hardware_profile
- %h2
- =(a)hardware_profile.name
-- if @matching_hwps.size > 0
- %table
- = sortable_table_header @provider_hwps_header
- - @matching_hwps.each do |hwp|
- %tr
- %td
- - if hwp.provider
- = link_to hwp.provider.name, admin_provider_path(hwp.provider)
- %td
- = link_to hwp.name, admin_hardware_profile_path(hwp)
- %td
- =hwp.architecture.to_s
- %td
- =hwp.memory.to_s
- %td
- =hwp.storage.to_s
- %td
- =hwp.cpu.to_s
-- else
- %h3
- No Matching Provider Hardware Profiles Could be found
\ No newline at end of file
diff --git a/src/app/views/admin/hardware_profiles/_properties.haml
b/src/app/views/admin/hardware_profiles/_properties.haml
deleted file mode 100644
index 0739b84..0000000
--- a/src/app/views/admin/hardware_profiles/_properties.haml
+++ /dev/null
@@ -1,13 +0,0 @@
-%h3
- = @hardware_profile.name + "(" + (@hardware_profile.provider_id.nil? ?
"Front End" : "Provider" ) + ")"
- = link_to 'Edit', edit_admin_hardware_profile_path(@hardware_profile), :class
=> 'button'
-%table
- = sortable_table_header @properties_header
- - @hwp_properties.each do |hwpp|
- %tr
- %td
- =hwpp.name.nil? ? "n/a" : hwpp.name
- %td
- =hwpp.unit.nil? ? "n/a" : hwpp.unit
- %td
- =hwpp.value.nil? ? "n/a" : hwpp.value
diff --git a/src/app/views/admin/hardware_profiles/create.haml
b/src/app/views/admin/hardware_profiles/create.haml
deleted file mode 100644
index c26bbe9..0000000
--- a/src/app/views/admin/hardware_profiles/create.haml
+++ /dev/null
@@ -1,6 +0,0 @@
-%h3
- Check Matching Hardware Profiles
-- content_for :list do
- = render :partial => "form"
-- content_for :details do
- = render :partial => 'layouts/details_pane'
\ No newline at end of file
diff --git a/src/app/views/admin/hardware_profiles/edit.haml
b/src/app/views/admin/hardware_profiles/edit.haml
deleted file mode 100644
index e32eebd..0000000
--- a/src/app/views/admin/hardware_profiles/edit.haml
+++ /dev/null
@@ -1,7 +0,0 @@
-- content_for :list do
- %h3
- Edit Hardware Profile
- -form_for @hardware_profile, :url => admin_hardware_profile_path(@hardware_profile),
:html => { :multipart => true } do |hwp_form|
- = render :partial => "form", :locals => { :hwp_form => hwp_form }
-- content_for :details do
- = render :partial => 'layouts/details_pane'
diff --git a/src/app/views/admin/hardware_profiles/index.haml
b/src/app/views/admin/hardware_profiles/index.haml
deleted file mode 100644
index 62ccbc6..0000000
--- a/src/app/views/admin/hardware_profiles/index.haml
+++ /dev/null
@@ -1,2 +0,0 @@
-- content_for :list do
- = render :partial => 'list'
diff --git a/src/app/views/admin/hardware_profiles/new.haml
b/src/app/views/admin/hardware_profiles/new.haml
deleted file mode 100644
index 3355c87..0000000
--- a/src/app/views/admin/hardware_profiles/new.haml
+++ /dev/null
@@ -1,7 +0,0 @@
-- content_for :list do
- %h3
- New Hardware Profile
- -form_for @hardware_profile, :url => admin_hardware_profiles_path, :html => {
:multipart => true } do |hwp_form|
- = render :partial => "form", :locals => { :hwp_form => hwp_form }
-- content_for :details do
- = render :partial => 'layouts/details_pane'
\ No newline at end of file
diff --git a/src/app/views/admin/hardware_profiles/show.haml
b/src/app/views/admin/hardware_profiles/show.haml
deleted file mode 100644
index a5a777d..0000000
--- a/src/app/views/admin/hardware_profiles/show.haml
+++ /dev/null
@@ -1,5 +0,0 @@
-- content_for :list do
- = render :partial => 'list'
-
-- content_for :details do
- = render :partial => 'layouts/details_pane'
\ No newline at end of file
diff --git a/src/app/views/admin/pool_families/_form.haml
b/src/app/views/admin/pool_families/_form.haml
deleted file mode 100644
index e493931..0000000
--- a/src/app/views/admin/pool_families/_form.haml
+++ /dev/null
@@ -1,12 +0,0 @@
-= error_messages_for :pool_family
-= form.error_message_on :name, 'Name '
-%fieldset.clear
- = form.label :name,'Pool Family Name :'
- = form.text_field :name, :title => 'pool_family_name', :value =>
@pool_family.name, :class => "clear grid_4 alpha"
-%fieldset.clear
- - form.fields_for :quota do |quota_form|
- %fieldset.clear
- = quota_form.label :maximum_running_instances, t(:maximum_running_instances),
:class => "alpha grid_3"
- = quota_form.text_field :maximum_running_instances
-%fieldset.clear
- = form.submit "Save", :class => "submit formbutton"
diff --git a/src/app/views/admin/pool_families/_history.haml
b/src/app/views/admin/pool_families/_history.haml
deleted file mode 100644
index e69de29..0000000
diff --git a/src/app/views/admin/pool_families/_list.haml
b/src/app/views/admin/pool_families/_list.haml
deleted file mode 100644
index 323b6b7..0000000
--- a/src/app/views/admin/pool_families/_list.haml
+++ /dev/null
@@ -1,23 +0,0 @@
-- form_tag do
- = link_to "Create", new_admin_pool_family_path, :class =>
"button"
- = restful_submit_tag "Delete", 'destroy',
multi_destroy_admin_pool_families_path, 'DELETE', :id =>
'delete_button'
-
- %p
- Select:
- = link_to "All", @url_params.merge(:select => 'all')
- %span> ,
- = link_to "None", @url_params.merge(:select => 'none')
-
- %table#pool_families_table
- = sortable_table_header @header
- - unless @pool_families.blank?
- - @pool_families.each do |pool_family|
- %tr
- %td
- - selected = @url_params[:select] == 'all'
- %input{:name => "pool_family_selected[]", :type =>
"checkbox", :value => pool_family.id, :id =>
"pool_family_checkbox_#{pool_family.id}", :checked => selected }
- = link_to pool_family.name, admin_pool_family_path(pool_family)
- %td
- = pool_family.quota.maximum_running_instances or 'unlimited'
- %td
- = "#{pool_family.quota.percentage_used} %"
diff --git a/src/app/views/admin/pool_families/_permissions.haml
b/src/app/views/admin/pool_families/_permissions.haml
deleted file mode 100644
index e69de29..0000000
diff --git a/src/app/views/admin/pool_families/_pools.haml
b/src/app/views/admin/pool_families/_pools.haml
deleted file mode 100644
index e69de29..0000000
diff --git a/src/app/views/admin/pool_families/_properties.haml
b/src/app/views/admin/pool_families/_properties.haml
deleted file mode 100644
index 02d197e..0000000
--- a/src/app/views/admin/pool_families/_properties.haml
+++ /dev/null
@@ -1,4 +0,0 @@
-%h3
- Properties for
- = @pool_family.name
-= link_to "Edit", edit_admin_pool_family_path(@pool_family), {:class =>
'button'}
diff --git a/src/app/views/admin/pool_families/_provider_accounts.haml
b/src/app/views/admin/pool_families/_provider_accounts.haml
deleted file mode 100644
index 358e3d2..0000000
--- a/src/app/views/admin/pool_families/_provider_accounts.haml
+++ /dev/null
@@ -1,25 +0,0 @@
-%h3
- Provider Accounts for
- = @pool_family.name
-
-- unless @pool_family.provider_accounts.blank?
- - form_tag do
- = restful_submit_tag "Remove selected", 'destroy',
multi_destroy_provider_accounts_admin_pool_families_path(:pool_family_id =>
@pool_family.id), 'DELETE', :id => 'delete_button'
- = #submit_tag "Remove selected"
-
- %table#provider_accounts_table
- = sortable_table_header @provider_accounts_header
- - @pool_family.provider_accounts.each do |provider_account|
- %tr
- %td
- - selected = @url_params[:select_provider_accounts] == 'all'
- %input{:name => "provider_account_selected[]", :type =>
"checkbox", :value => provider_account.id, :id =>
"provider_account_checkbox_#{provider_account.id}", :checked => selected }
- = provider_account.name
-
-- unless @pool_family.provider_accounts.count == ProviderAccount.all.count
- - form_for :pool_family, :url => add_provider_account_admin_pool_families_path(:id
=> @pool_family.id) do |f|
- - unless @pool_family.provider_accounts.blank?
- = select_tag :provider_account_id, options_for_select(ProviderAccount.find(:all,
:conditions => [ "id NOT IN (?)", @pool_family.provider_account_ids
]).collect{ |pa| [pa.name, pa.id] })
- - else
- = select_tag :provider_account_id, options_for_select(ProviderAccount.all.collect{
|pa| [pa.name, pa.id] })
- = f.submit "Add to #{(a)pool_family.name}"
diff --git a/src/app/views/admin/pool_families/edit.haml
b/src/app/views/admin/pool_families/edit.haml
deleted file mode 100644
index 1c09438..0000000
--- a/src/app/views/admin/pool_families/edit.haml
+++ /dev/null
@@ -1,7 +0,0 @@
-%h3
- Editing
- = @pool_family.name
- Pool Family
-
--form_for @pool_family, :url => admin_pool_family_path(@pool_family), :html => {
:method => :put } do |f|
- = render :partial => 'form', :locals => { :form => f, :cancel_path
=> admin_providers_path }
diff --git a/src/app/views/admin/pool_families/index.haml
b/src/app/views/admin/pool_families/index.haml
deleted file mode 100644
index 62ccbc6..0000000
--- a/src/app/views/admin/pool_families/index.haml
+++ /dev/null
@@ -1,2 +0,0 @@
-- content_for :list do
- = render :partial => 'list'
diff --git a/src/app/views/admin/pool_families/new.haml
b/src/app/views/admin/pool_families/new.haml
deleted file mode 100644
index 7dbac4c..0000000
--- a/src/app/views/admin/pool_families/new.haml
+++ /dev/null
@@ -1,3 +0,0 @@
-%h2 Create a new Pool family
-- form_for @pool_family, :url => admin_pool_families_path do |f|
- = render :partial => "form", :locals => { :form => f, :cancel_path
=> admin_pool_families_path }
diff --git a/src/app/views/admin/pool_families/show.haml
b/src/app/views/admin/pool_families/show.haml
deleted file mode 100644
index 0c36221..0000000
--- a/src/app/views/admin/pool_families/show.haml
+++ /dev/null
@@ -1,5 +0,0 @@
-- content_for 'list' do
- = render :partial => 'list'
-
-- content_for 'details' do
- = render :partial => 'layouts/details_pane'
diff --git a/src/app/views/admin/provider_accounts/_credentials.haml
b/src/app/views/admin/provider_accounts/_credentials.haml
deleted file mode 100644
index 9d31c8d..0000000
--- a/src/app/views/admin/provider_accounts/_credentials.haml
+++ /dev/null
@@ -1,3 +0,0 @@
-%h3
- Credentials for
- = @account.name
diff --git a/src/app/views/admin/provider_accounts/_history.haml
b/src/app/views/admin/provider_accounts/_history.haml
deleted file mode 100644
index 429320a..0000000
--- a/src/app/views/admin/provider_accounts/_history.haml
+++ /dev/null
@@ -1,3 +0,0 @@
-%h3
- History for
- = @account.name
diff --git a/src/app/views/admin/provider_accounts/_list.haml
b/src/app/views/admin/provider_accounts/_list.haml
deleted file mode 100644
index b431f9b..0000000
--- a/src/app/views/admin/provider_accounts/_list.haml
+++ /dev/null
@@ -1,20 +0,0 @@
-- form_tag do
- = link_to "New Account", new_admin_provider_account_path, :class =>
'button'
- = restful_submit_tag "Delete", "delete",
multi_destroy_admin_provider_accounts_path, 'DELETE'
- %p
- Select:
- = link_to "All", @url_params.merge(:select => 'all')
- %span> ,
- = link_to "None", @url_params.merge(:select => 'none')
- %table
- = sortable_table_header @header
- - @accounts.each do |account|
- %tr
- %td
- - selected = @url_params[:select] == 'all'
- %input{:name => 'accounts_selected[]', :type =>
'checkbox', :value => account.id, :id =>
"account_checkbox_#{account.id}", :checked => selected }
- = link_to account.name, admin_provider_account_path(account)
- %td
- =account.credentials_hash['username']
- %td
- =account.provider.provider_type.name
diff --git a/src/app/views/admin/provider_accounts/_permissions.haml
b/src/app/views/admin/provider_accounts/_permissions.haml
deleted file mode 100644
index 92ad7a5..0000000
--- a/src/app/views/admin/provider_accounts/_permissions.haml
+++ /dev/null
@@ -1,3 +0,0 @@
-%h3
- Permissions for
- = @account.name
diff --git a/src/app/views/admin/provider_accounts/_properties.haml
b/src/app/views/admin/provider_accounts/_properties.haml
deleted file mode 100644
index 27789a1..0000000
--- a/src/app/views/admin/provider_accounts/_properties.haml
+++ /dev/null
@@ -1,13 +0,0 @@
-%h3
- Properties for
- = @account.name
-%p
- %label
- Running instances quota:
- = @account.quota.maximum_running_instances or 'unlimited'
-%p
- %label
- Account ID:
- = @account.credentials_hash['account_number']
-= link_to "Edit", edit_admin_provider_account_path(@account), { :class =>
'button' }
-= link_to "Test", admin_provider_account_path(@account, {:test_account =>
true}), { :class => 'button' }
diff --git a/src/app/views/admin/provider_accounts/_provider_form.haml
b/src/app/views/admin/provider_accounts/_provider_form.haml
deleted file mode 100644
index 182fc36..0000000
--- a/src/app/views/admin/provider_accounts/_provider_form.haml
+++ /dev/null
@@ -1,27 +0,0 @@
-%fieldset.clear
- = label :provider_account, "Account name:"
- = text_field :provider_account, :label
-- CredentialDefinition::CREDENTIAL_DEFINITIONS_ORDER.each do |cred_order|
- - @provider_account.all_credentials((a)selected_provider).each do |cred|
- - if cred_order == cred.credential_definition.name
- %fieldset.clear
- = label_tag cred.credential_definition.label
- - if cred.credential_definition.input_type == "password"
- = password_field_tag
"provider_account[credentials_hash][#{cred.credential_definition.name}]",
cred.value
- - elsif cred.credential_definition.input_type == "file"
- = file_field_tag
"provider_account[credentials_hash][#{cred.credential_definition.name}]", :value
=> cred.value
- - else
- = text_field_tag
"provider_account[credentials_hash][#{cred.credential_definition.name}]",
cred.value
-
-= label_tag "Quota"
-= text_field :quota, :maximum_running_instances, :title =>
t('provider_accounts.form.quota_instances'), :value =>
@quota.maximum_running_instances || "unlimited", :id =>
"quota_instances", :class => "grid_3 omega"
-(
-%button.linkbutton.nospace{ :type => 'button', :onclick =>
"set_unlimited_quota(\"quota_instances\");" }<>
- = t('provider_accounts.form.unlimited_quota')
-)
-%fieldset.clear
-
-:javascript
- function set_unlimited_quota(elem_id) {
- $("#" + elem_id)[0].value = "unlimited";
- }
diff --git a/src/app/views/admin/provider_accounts/_provider_selection.haml
b/src/app/views/admin/provider_accounts/_provider_selection.haml
deleted file mode 100644
index 2095fde..0000000
--- a/src/app/views/admin/provider_accounts/_provider_selection.haml
+++ /dev/null
@@ -1,25 +0,0 @@
-%fieldset#provider_type.clear
- = label_tag "Provider: "
- = select(:provider_account, :provider_id, options_for_select((a)providers.map{ |p|
[p.name, p.id] }, :selected => @selected_provider.id))
- = restful_submit_tag "Choose",
'set_selected_provider',set_selected_provider_admin_provider_accounts_path,
'GET', :class => 'button'
- = label_tag "Cloud type: "
- = @selected_provider.provider_type.name
- - unless @selected_provider.provider_type.codename.nil?
- = render :partial => "provider_form", :locals => { :provider_type
=> @selected_provider.provider_type}
- - else
- = flash.now[:warning] = "You don't have any provider yet"
-
-:javascript
- $(document).ready(function(){
- var selected_provider;
- $("#provider_account_provider_id").change(function()
- {
- selected_provider = $("option:selected").attr('value');
- $.get("#{set_selected_provider_admin_provider_accounts_url}",
{'provider_account[provider_id]':selected_provider},
- function(result) {
- $("#provider_type").html(result);
- }
- );
-
- });
- });
diff --git a/src/app/views/admin/provider_accounts/_rhevm.haml
b/src/app/views/admin/provider_accounts/_rhevm.haml
deleted file mode 100644
index dd86c72..0000000
--- a/src/app/views/admin/provider_accounts/_rhevm.haml
+++ /dev/null
@@ -1,2 +0,0 @@
-%fieldset.clear
- Login form for RHEV-M (not implemented yet)
diff --git a/src/app/views/admin/provider_accounts/edit.haml
b/src/app/views/admin/provider_accounts/edit.haml
deleted file mode 100644
index 9da4d1c..0000000
--- a/src/app/views/admin/provider_accounts/edit.haml
+++ /dev/null
@@ -1,14 +0,0 @@
-#details.grid_13
- = error_messages_for :provider_account
- %h2
- = t('provider_accounts.edit.edit_provider_account')
- - form_tag(admin_provider_account_path, { :method => :put, :multipart => true })
do
- = render :partial => 'provider_selection'
- %fieldset.clearfix
- .grid_13.alpha.omega
- = submit_tag t(:edit), :class => "ra nomargin dialogbutton"
- %section
- %p.requirement
- %span.required *
- \-
- = t('provider_accounts.edit.required_field')
diff --git a/src/app/views/admin/provider_accounts/index.haml
b/src/app/views/admin/provider_accounts/index.haml
deleted file mode 100644
index 62ccbc6..0000000
--- a/src/app/views/admin/provider_accounts/index.haml
+++ /dev/null
@@ -1,2 +0,0 @@
-- content_for :list do
- = render :partial => 'list'
diff --git a/src/app/views/admin/provider_accounts/new.haml
b/src/app/views/admin/provider_accounts/new.haml
deleted file mode 100644
index f1a5e2a..0000000
--- a/src/app/views/admin/provider_accounts/new.haml
+++ /dev/null
@@ -1,18 +0,0 @@
-#details.grid_13
- = error_messages_for :provider_account
- %h2
- = t('provider_accounts.new.new_provider_account')
- %label{ :for => :provider_id }
- Provider
- %fieldset.clear
- - unless @providers.empty?
- - form_for(@provider_account, :url => admin_provider_accounts_path, :html =>
{:multipart => true}) do |f|
- = render :partial => 'provider_selection'
- %fieldset.clearfix
- .grid_13.alpha.omega
- = f.submit t(:add), :class => "ra nomargin dialogbutton"
- %section
- %p.requirement
- %span.required *
- \-
- = t('provider_accounts.new.required_field')
diff --git a/src/app/views/admin/provider_accounts/show.haml
b/src/app/views/admin/provider_accounts/show.haml
deleted file mode 100644
index 05eeedd..0000000
--- a/src/app/views/admin/provider_accounts/show.haml
+++ /dev/null
@@ -1,5 +0,0 @@
-- content_for :list do
- = render :partial => 'list'
-
-- content_for :details do
- = render :partial => 'layouts/details_pane'
diff --git a/src/app/views/admin/providers/_form.haml
b/src/app/views/admin/providers/_form.haml
deleted file mode 100644
index b400d00..0000000
--- a/src/app/views/admin/providers/_form.haml
+++ /dev/null
@@ -1,15 +0,0 @@
-= form.error_message_on :name, 'Name '
-= form.error_message_on :url, 'URL '
-= form.error_message_on :provider_type_id
-%fieldset.clear
- = form.label :name,'Provider name :'
- = form.text_field :name, :title => 'provider_name', :value =>
@provider.name, :class => "clear grid_4 alpha"
-%fieldset.clear
- = form.label :url, 'Provider URL :'
- = form.text_field :url, :title => 'provider_url', :value =>
@provider.url, :class => "grid_5"
-%fieldset.clear
- = form.label :provider_type
- = form.select(:provider_type_id, ProviderType.all.collect {|provider_type|
[provider_type.name,provider_type.id] }, :prompt => "Select type of
provider")
-
-%fieldset.clear
- = form.submit "Save", :class => "submit formbutton"
diff --git a/src/app/views/admin/providers/_history.haml
b/src/app/views/admin/providers/_history.haml
deleted file mode 100644
index e69de29..0000000
diff --git a/src/app/views/admin/providers/_hw_profiles.haml
b/src/app/views/admin/providers/_hw_profiles.haml
deleted file mode 100644
index e69de29..0000000
diff --git a/src/app/views/admin/providers/_list.haml
b/src/app/views/admin/providers/_list.haml
deleted file mode 100644
index 7de6e32..0000000
--- a/src/app/views/admin/providers/_list.haml
+++ /dev/null
@@ -1,20 +0,0 @@
-- form_tag do
- = link_to "Create", new_admin_provider_url, :class => "button"
- = restful_submit_tag "Delete", 'destroy',
multi_destroy_admin_providers_path, 'DELETE', :id => 'delete_button'
-
- %p
- Select:
- = link_to "All", @url_params.merge(:select => 'all')
- %span> ,
- = link_to "None", @url_params.merge(:select => 'none')
-
- %table#providers_table
- = sortable_table_header @header
- -(a)providers.each do |provider|
- %tr
- %td
- - selected = @url_params[:select] == 'all'
- %input{:name => "provider_selected[]", :type =>
"checkbox", :value => provider.id, :id =>
"provider_checkbox_#{provider.id}", :checked => selected }
- = link_to provider.name, admin_provider_path(provider)
- %td= provider.url
- %td= provider.provider_type.name
diff --git a/src/app/views/admin/providers/_permissions.haml
b/src/app/views/admin/providers/_permissions.haml
deleted file mode 100644
index e69de29..0000000
diff --git a/src/app/views/admin/providers/_properties.haml
b/src/app/views/admin/providers/_properties.haml
deleted file mode 100644
index 044895a..0000000
--- a/src/app/views/admin/providers/_properties.haml
+++ /dev/null
@@ -1,5 +0,0 @@
-%h3
- Properties for
- = @provider.name
-= link_to "Edit", edit_admin_provider_path(@provider), {:class =>
'button'}
-= link_to "Test", admin_provider_path(@provider, {:test_provider => true}),
{ :class => 'button' }
diff --git a/src/app/views/admin/providers/_provider_accounts.haml
b/src/app/views/admin/providers/_provider_accounts.haml
deleted file mode 100644
index e69de29..0000000
diff --git a/src/app/views/admin/providers/_realms.haml
b/src/app/views/admin/providers/_realms.haml
deleted file mode 100644
index e69de29..0000000
diff --git a/src/app/views/admin/providers/_services.haml
b/src/app/views/admin/providers/_services.haml
deleted file mode 100644
index e69de29..0000000
diff --git a/src/app/views/admin/providers/edit.haml
b/src/app/views/admin/providers/edit.haml
deleted file mode 100644
index 66864e9..0000000
--- a/src/app/views/admin/providers/edit.haml
+++ /dev/null
@@ -1,7 +0,0 @@
-%h3
- Editing
- = @provider.name
- Provider
-
--form_for @provider, :url => admin_provider_path(@provider), :html => { :method
=> :put } do |f|
- = render :partial => 'form', :locals => { :form => f, :cancel_path
=> admin_providers_path }
diff --git a/src/app/views/admin/providers/index.haml
b/src/app/views/admin/providers/index.haml
deleted file mode 100644
index 62ccbc6..0000000
--- a/src/app/views/admin/providers/index.haml
+++ /dev/null
@@ -1,2 +0,0 @@
-- content_for :list do
- = render :partial => 'list'
diff --git a/src/app/views/admin/providers/new.haml
b/src/app/views/admin/providers/new.haml
deleted file mode 100644
index 516fdb3..0000000
--- a/src/app/views/admin/providers/new.haml
+++ /dev/null
@@ -1,3 +0,0 @@
-%h2 Create a new Provider
-- form_for @provider, :url => admin_providers_path do |f|
- = render :partial => "form", :locals => { :form => f, :cancel_path
=> admin_providers_path }
diff --git a/src/app/views/admin/providers/show.haml
b/src/app/views/admin/providers/show.haml
deleted file mode 100644
index 0c36221..0000000
--- a/src/app/views/admin/providers/show.haml
+++ /dev/null
@@ -1,5 +0,0 @@
-- content_for 'list' do
- = render :partial => 'list'
-
-- content_for 'details' do
- = render :partial => 'layouts/details_pane'
diff --git a/src/app/views/admin/realm_mappings/new.haml
b/src/app/views/admin/realm_mappings/new.haml
deleted file mode 100644
index 0861199..0000000
--- a/src/app/views/admin/realm_mappings/new.haml
+++ /dev/null
@@ -1,10 +0,0 @@
-= error_messages_for 'realm_target'
-%h2 Create a new Realm Mapping
-- form_for @realm_target, :url => admin_realm_mappings_path do |f|
- = f.hidden_field :frontend_realm_id
- = f.hidden_field :realm_or_provider_type
-
- - label_method = @realm_target.realm_or_provider_type == 'Realm' ?
'name_with_provider' : 'name'
- = select_tag 'realm_backend_target[realm_or_provider_id]',
options_from_collection_for_select(@backend_targets, 'id', label_method)
- %fieldset.clear
- = f.submit "Save", :class => "submit formbutton"
diff --git a/src/app/views/admin/realm_mappings/show.haml
b/src/app/views/admin/realm_mappings/show.haml
deleted file mode 100644
index 0c36221..0000000
--- a/src/app/views/admin/realm_mappings/show.haml
+++ /dev/null
@@ -1,5 +0,0 @@
-- content_for 'list' do
- = render :partial => 'list'
-
-- content_for 'details' do
- = render :partial => 'layouts/details_pane'
diff --git a/src/app/views/admin/realms/_form.haml
b/src/app/views/admin/realms/_form.haml
deleted file mode 100644
index 8c49d63..0000000
--- a/src/app/views/admin/realms/_form.haml
+++ /dev/null
@@ -1,6 +0,0 @@
-= form.error_messages
-%fieldset.clear
- = form.label :name,'Realm Name :'
- = form.text_field :name, :title => 'realm_name', :value => @realm.name,
:class => "clear grid_4 alpha"
-%fieldset.clear
- = form.submit "Save", :class => "submit formbutton"
diff --git a/src/app/views/admin/realms/_list.haml
b/src/app/views/admin/realms/_list.haml
deleted file mode 100644
index 367dc14..0000000
--- a/src/app/views/admin/realms/_list.haml
+++ /dev/null
@@ -1,19 +0,0 @@
-- form_tag do
- = link_to "Create", new_admin_realm_path, :class => "button"
- = restful_submit_tag "Delete", 'destroy',
multi_destroy_admin_realms_path, 'DELETE', :id => 'delete_button'
-
- %p
- Select:
- = link_to "All", @url_params.merge(:select => 'all')
- %span> ,
- = link_to "None", @url_params.merge(:select => 'none')
-
- %table#realms_table
- = sortable_table_header @header
- - unless @realms.blank?
- - @realms.each do |realm|
- %tr
- %td
- - selected = @url_params[:select] == 'all'
- %input{:name => "id[]", :type => "checkbox", :value
=> realm.id, :id => "realm_id_#{realm.id}", :checked => selected }
- = link_to realm.name, admin_realm_path(realm)
diff --git a/src/app/views/admin/realms/_mapping.haml
b/src/app/views/admin/realms/_mapping.haml
deleted file mode 100644
index 66b278c..0000000
--- a/src/app/views/admin/realms/_mapping.haml
+++ /dev/null
@@ -1,20 +0,0 @@
-- form_tag do
- = link_to "Add mapping to realm",
new_admin_realm_mapping_path(:frontend_realm_id => @realm.id, :realm_or_provider_type
=> 'Realm'), :class => "button"
- = link_to "Add mapping to provider",
new_admin_realm_mapping_path(:frontend_realm_id => @realm.id, :realm_or_provider_type
=> 'Provider'), :class => "button"
- = restful_submit_tag "Delete", 'destroy',
multi_destroy_admin_realm_mappings_path(:frontend_realm_id => @realm.id),
'DELETE', :id => 'delete_button'
-
- - unless @backend_provider_targets.empty?
- %h2 Realm '#{(a)realm.name}' is mapped to providers:
- %ul
- - @backend_provider_targets.each do |backend|
- %li
- %input{:name => "id[]", :type => "checkbox", :value
=> backend.id, :id => "backend_id_#{backend.id}"}
- = backend.realm_or_provider.name
-
- - unless @backend_realm_targets.empty?
- %h2 Realm '#{(a)realm.name}' is mapped to realms:
- %ul
- - @backend_realm_targets.each do |backend|
- %li
- %input{:name => "id[]", :type => "checkbox", :value
=> backend.id, :id => "backend_id_#{backend.id}"}
- = backend.realm_or_provider.name
diff --git a/src/app/views/admin/realms/_properties.haml
b/src/app/views/admin/realms/_properties.haml
deleted file mode 100644
index 8d5b66d..0000000
--- a/src/app/views/admin/realms/_properties.haml
+++ /dev/null
@@ -1,3 +0,0 @@
-.grid_13
- %h2 #{(a)realm.name}
- = link_to t(:edit), edit_admin_realm_path(@realm), :class => 'button
formbutton'
diff --git a/src/app/views/admin/realms/edit.haml b/src/app/views/admin/realms/edit.haml
deleted file mode 100644
index a0aa97f..0000000
--- a/src/app/views/admin/realms/edit.haml
+++ /dev/null
@@ -1,4 +0,0 @@
-%h2 Editing Realm: #{(a)realm.name}
-
-- form_for @realm, :url => admin_realm_path(@realm), :html => { :method => :put
} do |f|
- = render :partial => "form", :locals => { :form => f }
diff --git a/src/app/views/admin/realms/index.haml
b/src/app/views/admin/realms/index.haml
deleted file mode 100644
index 62ccbc6..0000000
--- a/src/app/views/admin/realms/index.haml
+++ /dev/null
@@ -1,2 +0,0 @@
-- content_for :list do
- = render :partial => 'list'
diff --git a/src/app/views/admin/realms/new.haml b/src/app/views/admin/realms/new.haml
deleted file mode 100644
index c95a306..0000000
--- a/src/app/views/admin/realms/new.haml
+++ /dev/null
@@ -1,3 +0,0 @@
-%h2 Create a new Realm
-- form_for @realm, :url => admin_realms_path do |f|
- = render :partial => "form", :locals => { :form => f, :cancel_path
=> admin_realms_path }
diff --git a/src/app/views/admin/realms/show.haml b/src/app/views/admin/realms/show.haml
deleted file mode 100644
index 0c36221..0000000
--- a/src/app/views/admin/realms/show.haml
+++ /dev/null
@@ -1,5 +0,0 @@
-- content_for 'list' do
- = render :partial => 'list'
-
-- content_for 'details' do
- = render :partial => 'layouts/details_pane'
diff --git a/src/app/views/admin/roles/_form.haml b/src/app/views/admin/roles/_form.haml
deleted file mode 100644
index fc10dd2..0000000
--- a/src/app/views/admin/roles/_form.haml
+++ /dev/null
@@ -1,8 +0,0 @@
-= form.error_messages
-%fieldset.clear
- = form.label :name, 'Name', :class => "grid_3 alpha"
- = form.text_field :name, :class => "grid_5"
-%fieldset.clearfix
- = form.submit "Save", :class => "submit formbutton"
- = form.submit "Reset", :class => "submit formbutton"
- = link_to t(:cancel), admin_roles_path, :class => 'button formbutton'
diff --git a/src/app/views/admin/roles/_list.haml b/src/app/views/admin/roles/_list.haml
deleted file mode 100644
index d825e2f..0000000
--- a/src/app/views/admin/roles/_list.haml
+++ /dev/null
@@ -1,30 +0,0 @@
-- form_tag do
- = link_to "New Role", new_admin_role_path, :class => 'button'
- = restful_submit_tag "Destroy", "destroy",
multi_destroy_admin_roles_path, 'DELETE', :id => 'delete_button'
- %p
- Select:
- = link_to "All", @url_params.merge(:select => 'all')
- %span> ,
- = link_to "None", @url_params.merge(:select => 'none')
- %table#roles_table
- = sortable_table_header @header
- - @roles.each do |role|
- %tr
- %td
- - selected = @url_params[:select] == 'all'
- %input{:name => "role_selected[]", :type =>
"checkbox", :value => role.id, :id =>
"role_checkbox_#{role.id}", :checked => selected }
- = link_to role.name, admin_role_path(role)
-
-:javascript
- $(document).ready(function () {
- $('#delete_button').click(function(e) {
- if ($("#roles_table input[@type=radio]:checked").length == 0) {
- alert('Please select any user to be deleted before clicking Delete
button.');
- e.preventDefault();
- } else {
- if (!confirm("Are you sure you want to delete this user?")) {
- e.preventDefault();
- }
- }
- });
- });
diff --git a/src/app/views/admin/roles/_properties.haml
b/src/app/views/admin/roles/_properties.haml
deleted file mode 100644
index bcb59f4..0000000
--- a/src/app/views/admin/roles/_properties.haml
+++ /dev/null
@@ -1,23 +0,0 @@
-.grid_13
- %h2 #{(a)role.name}
- %strong Scope:
- %span #{(a)role.scope}
- %table
- %thead
- %tr
- %th.show
- Privileges
- %th.show
- %tbody
- %tr
- %td
- %label Action
- %td
- %label Target type
- -(a)role.privileges.each do |privilege|
- %tr
- %td
- = privilege.action
- %td
- = privilege.target_type
- = link_to t(:edit), edit_admin_role_path(@role), :class => 'button
formbutton'
diff --git a/src/app/views/admin/roles/edit.haml b/src/app/views/admin/roles/edit.haml
deleted file mode 100644
index 7aa428e..0000000
--- a/src/app/views/admin/roles/edit.haml
+++ /dev/null
@@ -1,4 +0,0 @@
-%h2 Editing Role: #{(a)role.name}
-
-- form_for @role, :url => admin_role_path(@role), :html => { :method => :put }
do |f|
- = render :partial => "form", :locals => { :form => f }
diff --git a/src/app/views/admin/roles/index.haml b/src/app/views/admin/roles/index.haml
deleted file mode 100644
index 62ccbc6..0000000
--- a/src/app/views/admin/roles/index.haml
+++ /dev/null
@@ -1,2 +0,0 @@
-- content_for :list do
- = render :partial => 'list'
diff --git a/src/app/views/admin/roles/new.haml b/src/app/views/admin/roles/new.haml
deleted file mode 100644
index 064e67d..0000000
--- a/src/app/views/admin/roles/new.haml
+++ /dev/null
@@ -1,3 +0,0 @@
-%h2 New Role
-- form_for @role, :url => admin_roles_path do |f|
- = render :partial => "form", :locals => { :form => f }
diff --git a/src/app/views/admin/settings/general_settings.haml
b/src/app/views/admin/settings/general_settings.haml
deleted file mode 100644
index f073663..0000000
--- a/src/app/views/admin/settings/general_settings.haml
+++ /dev/null
@@ -1,41 +0,0 @@
-%form{:class => 'container_16'}
- .grid_16
- %h1 Portal
- %fieldset.clearfix
- %label.grid_5.alpha Brand Icon:
- .grid_6
- %input{:type => "file", :disabled => true}
- %fieldset.clearfix
- %label.grid_5.alpha Tag Line:
- %textarea.grid_6.disabled{:disabled => true}
- %fieldset.clearfix
- .grid_5.alpha.disabled.ra
- %input{:type => "checkbox", :disabled => true}
- %label Allow Self Service Account Creation:
- .grid_6.disabled
- %select{:disabled => true}
- %option Select User Treatment
- %fieldset.clearfix
- %label.alpha.grid_5 Primary URL Port:
- %input.grid_6{:value => "3000", :disabled => true}
- %h1 Content
- %fieldset.clearfix
- %label.grid_5.alpha Entitlement Mode:
- .grid_5
- %ul.block
- %li
- %input{:type => "radio", :name => "entitlement",
:disabled => true}
- %label.disabled User Brings Subscriptions
- %li
- %input{:type => "radio", :name => "entitlement",
:disabled => true}
- %label.disabled System Provides Subscriptions
- %fieldset.clearfix
- %label.grid_5.alpha Certitifcate:
- .grid_6
- %input{:type => "file", :disabled => true}
- %fieldset.clearfix
- %label.alpha.grid_5 Content Manager URL:
- %input.grid_6{:disabled => true}
- %fieldset.clearfix
- %button.formbutton{:disabled => true} Reset
- %button.formbutton{:disabled => true} Save
diff --git a/src/app/views/admin/settings/index.haml
b/src/app/views/admin/settings/index.haml
deleted file mode 100644
index 8a68a65..0000000
--- a/src/app/views/admin/settings/index.haml
+++ /dev/null
@@ -1,42 +0,0 @@
-%ul.tiles{:class => 'container_16'}
- %li#services.grid_8.disabled.clear
- = image_tag "blnk.png", :class => "icon", :alt =>
""
- %h2
- = t('.define_services')
- %p
- = t('.define_services_desc')
- %button{:disabled => "disabled"}
- = t(:continue)
- %li#permissions.grid_8
- = image_tag "blnk.png", :class => "icon", :alt =>
""
- %h2
- = t('.permissions')
- %p
- = t('.permissions_desc')
- = link_to t(:continue), self_service_admin_settings_path, :class =>
'button'
- %li#settings.grid_8
- = image_tag "blnk.png", :class => "icon", :alt =>
""
- %h2
- = t('.general_settings')
- %p
- = t('.general_settings_desc')
- = link_to t(:continue), general_settings_admin_settings_path, :class =>
'button'
- %li#locales.grid_8.disabled.clear
- = image_tag "blnk.png", :class => "icon", :alt =>
""
- %h2
- = t('.define_locales')
- %p
- = t('.define_locales_desc')
- %button{:disabled => "disabled"}
- = t(:continue)
-
-:javascript
- $(document).ready(function () {
- var $tiles = $(".tiles
li:not(.disabled)").addClass('pointercursor');
- $tiles.click(function (e) {
- $e = $(e.target);
- if (!$e.is('.button')) {
- window.location = $('.button',this).attr('href');
- }
- });
- });
diff --git a/src/app/views/admin/settings/self_service.haml
b/src/app/views/admin/settings/self_service.haml
deleted file mode 100644
index 05235ec..0000000
--- a/src/app/views/admin/settings/self_service.haml
+++ /dev/null
@@ -1,120 +0,0 @@
-.grid_13{:class => 'container_16'}
- = error_messages_for @parent_type
- %h2
- = t('.self_service_default')
- - form_for @self_service_default_quota, :url => { :action => 'update' }
do |form|
- %h3 Instances
- %fieldset.clearfix
- %label.grid_2.alpha Permissions:
- .grid_4 My personal Instances
- .grid_4 Full Instance Permission
- .grid_3.omega
- (
- %a{:href=>'#'}> Edit
- )
- (
- %a{:href=>'#'}> Remove
- )
- %fieldset.clearfix.gap
- .grid_4.prefix_2.alpha
- %select.disabled{:disabled => true}
- %option
- Category of Instances
- .grid_4
- %ul.block
- %li
- %input{ :type => "radio", :name => "permission",
:disabled => true}
- %label.disabled Control Instance - Can't Share
- %li
- %input{ :type => "radio", :name => "permission",
:disabled => true}
- %label.disabled Control Instance - Can Share
- %li
- %input{ :type => "radio", :name => "permission",
:disabled => true}
- %label.disabled Full Instance Permission
- %li
- %input{ :type => "radio", :name => "permission",
:disabled => true}
- %label.disabled Custom ...
- .grid_3.omega
- (
- %a{:href=>'#'}> Add
- )
- = hidden_field :self_service_default_quota, :id
- %fieldset.clearfix.gap
- %label.grid_2.alpha
- = t('.quota') + ":"
- = text_field :self_service_default_quota, :maximum_running_instances, :class =>
'grid_5'
- .grid_2.la (instances)
- = form.error_message_on :maximum_running_instances, 'Maximum Running Instances
'
- %h3 POOLS
- %fieldset.clearfix
- %label.grid_2.alpha Permissions:
- .grid_4 General Usage
- .grid_4 Regular Pool User
- .grid_3.omega
- (
- %a{:href=>'#'}> Edit
- )
- (
- %a{:href=>'#'}> Remove
- )
- %fieldset.clearfix.gap
- .grid_4.prefix_2.alpha
- %select.disabled{:disabled => true}
- %option
- Category of Pools
- .grid_4
- %ul.block
- %li
- %input{ :type => "radio", :name => "pooltype",
:disabled => true}
- %label.disabled Limited Pool User
- %li
- %input{ :type => "radio", :name => "pooltype",
:disabled => true}
- %label.disabled Regular Pool User
- %li
- %input{ :type => "radio", :name => "pooltype",
:disabled => true}
- %label.disabled Advanced Pool User
- %li
- %input{ :type => "radio", :name => "pooltype",
:disabled => true}
- %label.disabled Custom ...
- .grid_3.omega
- (
- %a{:href=>'#'}> Add
- )
- %h3 TEMPLATES
- %fieldset.clearfix
- %label.grid_2.alpha Permissions:
- .grid_4 General Usage
- .grid_4 Basic Template User
- .grid_3.omega
- (
- %a{:href=>'#'}> Edit
- )
- (
- %a{:href=>'#'}> Remove
- )
- %fieldset.clearfix.gap
- .grid_4.prefix_2.alpha
- %select.disabled{:disabled => true}
- %option
- Category of Templates
- .grid_4
- %ul.block
- %li
- %input{ :type => "radio", :name => "pooltype",
:disabled => true}
- %label.disabled Basic Template User
- %li
- %input{ :type => "radio", :name => "pooltype",
:disabled => true}
- %label.disabled General Template User
- %li
- %input{ :type => "radio", :name => "pooltype",
:disabled => true}
- %label.disabled Advanced Template User
- %li
- %input{ :type => "radio", :name => "pooltype",
:disabled => true}
- %label.disabled Custom ...
- .grid_3.omega
- (
- %a{:href=>'#'}> Add
- )
- .grid_13.omega.alpha.gap
- %button.formbutton Reset
- = submit_tag t(:save), :class => "submit formbutton"
diff --git a/src/app/views/admin/users/_form.haml b/src/app/views/admin/users/_form.haml
deleted file mode 100644
index f1b8aa3..0000000
--- a/src/app/views/admin/users/_form.haml
+++ /dev/null
@@ -1,44 +0,0 @@
-= form.error_messages
-%fieldset.clear
- = form.label :login, t(:choose_name), :class => "grid_3 alpha"
- = form.text_field :login, :class => "grid_5"
-%fieldset.clear
- = form.label :password, form.object.new_record? ? t(:choose_password) :
t(:change_password), :class => "grid_3 alpha"
- = form.password_field :password, :class => "grid_5"
-%fieldset
- = form.label :password_confirmation, t(:confirm_password), :class => "grid_3
alpha"
- = form.password_field :password_confirmation, :class => "grid_5"
--if check_privilege(Privilege::MODIFY, User)
- %fieldset.clear
- = form.label :user_status, "User Status:", :class => "alpha
grid_3"
- .grid_5
- = radio_button_tag "user_status","Active",true
- = label_tag "user_status_active", "Active"
- = radio_button_tag "user_status","Inactive", false, :disabled
=> true
- = label_tag "user_status_inactive", "Inactive"
-%fieldset.clear
- = form.label :first_name, t(:first_name), :class => "alpha grid_3"
- = form.text_field :first_name, :class => "grid_5"
-%fieldset.clear
- = form.label :last_name, t(:last_name), :class => "alpha grid_3"
- = form.text_field :last_name, :class => "grid_5"
-%fieldset.clear
- = form.label :email, t(:email), :class => "alpha grid_3"
- = form.text_field :email, :class => "grid_5"
--if check_privilege(Privilege::MODIFY, User)
- %h3.grid_16 User Treatment
- %fieldset.clearfix
- = label_tag 'apply_treatment', t(:apply_treatment), :class => "alpha
grid_3"
- = select_tag 'user_treatment', options_for_select([t(:choose_treatment)]),
:class => "grid_5"
- = submit_tag t(:apply), :disabled => true, :class => "grid_2"
-
- - form.fields_for :quota do |quota_form|
- %fieldset.clear
- = quota_form.label :maximum_running_instances, t(:maximum_running_instances),
:class => "alpha grid_3"
- = quota_form.text_field :maximum_running_instances, :class =>
"grid_5"
- (instances)
- = quota_form.error_message_on :maximum_running_instances, 'Maximum Running
Instances '
-%fieldset.clearfix
- = form.submit "Save", :class => "submit formbutton"
- = form.submit "Reset", :class => "submit formbutton"
- = link_to t(:cancel), cancel_path, :class => 'button formbutton'
diff --git a/src/app/views/admin/users/_list.haml b/src/app/views/admin/users/_list.haml
deleted file mode 100644
index 6a544ed..0000000
--- a/src/app/views/admin/users/_list.haml
+++ /dev/null
@@ -1,40 +0,0 @@
-- form_tag do
- = link_to "Create", new_admin_user_url, :class => 'button'
- = restful_submit_tag "Delete", 'destroy',
multi_destroy_admin_users_path, 'DELETE', :id => 'delete_button'
-
- %table#users_table
- %thead
- %tr
- %th
- %th= link_to "User ID", admin_users_url(:sort_by =>
"login")
- %th= link_to "Last Name", admin_users_url(:sort_by =>
"last_name")
- %th= link_to "First Name", admin_users_url(:sort_by =>
"first_name")
- %th= link_to "% Quota Used", admin_users_url(:sort_by =>
"percentage_quota_used")
- %th
- =link_to "Quota", admin_users_url(:sort_by => "quota")
- %span (Instances)
- %th= link_to "e-mail", admin_users_url(:sort_by =>
"email")
- -(a)users.each do |user|
- %tr
- %td
- %input{:name => "user_selected[]", :type =>
"checkbox", :value => user.id, :id => "user_checkbox_#{user.id}"
}
- %td= link_to user.login, admin_user_path(user)
- %td= user.last_name
- %td= user.first_name
- %td= sprintf("%.2f", user.quota.percentage_used)
- %td= Quota.no_limit(user.quota.maximum_running_instances) ? "Unlimited"
: user.quota.maximum_running_instances
- %td= user.email
-
-:javascript
- $(document).ready(function () {
- $('#delete_button').click(function(e) {
- if ($("#users_table input[@type=radio]:checked").length == 0) {
- alert('Please select any user to be deleted before clicking Delete
button.');
- e.preventDefault();
- } else {
- if (!confirm("Are you sure you want to delete this user?")) {
- e.preventDefault();
- }
- }
- });
- });
diff --git a/src/app/views/admin/users/_properties.haml
b/src/app/views/admin/users/_properties.haml
deleted file mode 100644
index 0842cb1..0000000
--- a/src/app/views/admin/users/_properties.haml
+++ /dev/null
@@ -1,98 +0,0 @@
-.grid_13
- %h2 #{(a)user.first_name} #{(a)user.last_name} (#{(a)user.login})
-
- = link_to 'Edit', edit_admin_user_path(@user), :class => 'button'
-
- %table
- %thead
- %tr
- %th.show
- Personal Details
- %th.show
- %tbody
- %tr
- %td
- %label Username
- %td
- = @user.login
- %tr
- %td
- %label First Name
- %td
- = @user.first_name
- %tr
- %td
- %label Last Name
- %td
- = @user.last_name
- %tr
- %td
- %label e-mail
- %td
- = @user.email
-
- %table
- %thead
- %tr
- %th.show
- Quota Status
- %th.show
- %tbody
- %tr
- %td
- %label Maximum
- %td
- = @quota_resources["running_instances"].max
- %tr
- %td
- %label Used
- %td
- = @quota_resources["running_instances"].used
- %tr
- %td
- %label Available
- %td
- = @quota_resources["running_instances"].available
-
- %table
- %thead
- %tr
- %th.show
- Login Information
- %th.show
- %tbody
- %tr
- %td
- %label Current Login IP
- %td
- = @user.current_login_ip
- %tr
- %td
- %label Current Login at
- %td
- = @user.current_login_at
- %tr
- %td
- %label Last Login IP
- %td
- = @user.last_login_ip
- %tr
- %td
- %label Last Login at
- %td
- = @user.last_login_at
- %tr
- %td
- %label Login Count
- %td
- = @user.login_count
- %tr
- %td
- %label Failed Login Count
- %td
- = @user.login_count
- %tr
- %td
- %label Last Request at
- %td
- = @user.last_request_at
diff --git a/src/app/views/admin/users/edit.haml b/src/app/views/admin/users/edit.haml
deleted file mode 100644
index 1290c4d..0000000
--- a/src/app/views/admin/users/edit.haml
+++ /dev/null
@@ -1,7 +0,0 @@
-- if check_privilege(Privilege::MODIFY, User)
- %h2 Editing User: #{(a)user.first_name} #{(a)user.last_name}
-- else
- %h2 Editing Account
-
-- form_for @user, :url => admin_user_path(@user), :html => { :method => :put }
do |f|
- = render :partial => "form", :locals => { :form => f, :cancel_path
=> admin_users_path }
diff --git a/src/app/views/admin/users/index.haml b/src/app/views/admin/users/index.haml
deleted file mode 100644
index 62ccbc6..0000000
--- a/src/app/views/admin/users/index.haml
+++ /dev/null
@@ -1,2 +0,0 @@
-- content_for :list do
- = render :partial => 'list'
diff --git a/src/app/views/admin/users/new.haml b/src/app/views/admin/users/new.haml
deleted file mode 100644
index 0958f12..0000000
--- a/src/app/views/admin/users/new.haml
+++ /dev/null
@@ -1,6 +0,0 @@
-%h2 New Account
-- form_for @user, :url => admin_users_path do |f|
- -if current_user
- = render :partial => "form", :locals => { :form => f, :cancel_path
=> admin_users_path }
- -else
- = render :partial => "form", :locals => { :form => f, :cancel_path
=> login_path }
diff --git a/src/app/views/assemblies/index.haml b/src/app/views/assemblies/index.haml
new file mode 100644
index 0000000..766d92c
--- /dev/null
+++ b/src/app/views/assemblies/index.haml
@@ -0,0 +1 @@
+image_factory/assemblies/index.haml
diff --git a/src/app/views/builds/index.haml b/src/app/views/builds/index.haml
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/views/deployables/_assemblies.haml
b/src/app/views/deployables/_assemblies.haml
new file mode 100644
index 0000000..9af208b
--- /dev/null
+++ b/src/app/views/deployables/_assemblies.haml
@@ -0,0 +1,30 @@
+.grid_13
+- form_tag do
+ = restful_submit_tag "Remove Selected", 'destroy',
remove_assemblies_image_factory_deployable_path(@deployable), 'DELETE', :id =>
'delete_button'
+ = link_to "Add Assembly...",
pick_assemblies_image_factory_deployable_path(@deployable), :class => 'button',
:id => 'add_assembly'
+
+ %table#assemblies_table
+ %thead
+ %tr
+ %th
+ %th= "Name"
+ %th= "Created"
+ -@deployable.assemblies(:include => :templates).each do |assembly|
+ %tr
+ %td
+ %input{:name => "assemblies_selected[]", :type =>
"checkbox", :value => assembly.id, :id =>
"assembly_checkbox_#{assembly.id}" }
+ %td= assembly.name
+ %td= assembly.created_at
+
+:javascript
+ $(document).ready(function () {
+ $('#add_assembly').click(function(e) {
+ e.preventDefault();
+ var url = $(this).attr('href');
+ $.get(url, function(data) {
+ var selectedTabIndex = $("#details-view").tabs('option',
'selected');
+ var $selectedTab = $("#details-view
div.ui-tabs-panel").eq(selectedTabIndex);
+ $selectedTab.html(data);
+ });
+ });
+ });
diff --git a/src/app/views/deployables/_deployments.haml
b/src/app/views/deployables/_deployments.haml
new file mode 100644
index 0000000..77af2f9
--- /dev/null
+++ b/src/app/views/deployables/_deployments.haml
@@ -0,0 +1,25 @@
+.grid_13
+ %h2 Deployments for #{(a)deployable.name}
+
+ - unless @deployments.empty?
+ - form_tag do
+ %table#deployments_table
+ = sortable_table_header @header_deployments
+ - @deployments.each do |deployment|
+ %tr
+ %td
+ - selected = @url_params[:select] == 'all'
+ %input{:name => "deployments_selected[]", :type =>
"checkbox", :value => deployment.id, :id =>
"deployment_checkbox_#{deployment.id}", :checked => selected }
+ = link_to deployment.name, resources_deployment_path(deployment)
+ %td
+ = deployment.deployable.name
+ %td
+ = deployment.owner.login
+ %td
+ = deployment.created_at.strftime("%d-%b-%Y %H:%M:%S")
+ %td
+ TODO
+ %td
+ = deployment.pool.name
+ - else
+ No Deployments for #{(a)deployable.name}
diff --git a/src/app/views/deployables/_form.haml b/src/app/views/deployables/_form.haml
new file mode 100644
index 0000000..98c2232
--- /dev/null
+++ b/src/app/views/deployables/_form.haml
@@ -0,0 +1,10 @@
+= form.error_messages
+%fieldset.clear
+ = form.label :name, t(:name), :class => "grid_3 alpha"
+ = form.text_field :name, :class => "grid_5"
+%fieldset.clear
+ = form.label :summary, t(:summary), :class => "grid_3 alpha"
+ = form.text_area :summary, :class => "grid_5", :rows => 3
+%fieldset.clearfix
+ = form.submit "Save", :class => "submit formbutton"
+ = link_to t(:cancel), image_factory_deployables_path, :class => 'button
formbutton'
diff --git a/src/app/views/deployables/_list.haml b/src/app/views/deployables/_list.haml
new file mode 100644
index 0000000..e2933f0
--- /dev/null
+++ b/src/app/views/deployables/_list.haml
@@ -0,0 +1,28 @@
+- form_tag do
+ = link_to "Create", new_image_factory_deployable_url, :class =>
'button'
+ = restful_submit_tag "Delete", 'destroy',
multi_destroy_image_factory_deployables_path, 'DELETE', :id =>
'delete_button'
+
+ %table#deployables_table
+ %thead
+ %tr
+ %th
+ %th= link_to "Name", image_factory_deployables_url(:sort_by =>
"name")
+ -(a)deployables.each do |deployable|
+ %tr
+ %td
+ %input{:name => "deployables_selected[]", :type =>
"checkbox", :value => deployable.id, :id =>
"deployable_checkbox_#{deployable.id}" }
+ %td= link_to deployable.name, image_factory_deployable_path(deployable)
+
+:javascript
+ $(document).ready(function () {
+ $('#delete_button').click(function(e) {
+ if ($("#deployables_table input[@type=radio]:checked").length == 0) {
+ alert('Please select any deployable to be deleted before clicking Delete
button.');
+ e.preventDefault();
+ } else {
+ if (!confirm("Are you sure you want to delete this deployable?")) {
+ e.preventDefault();
+ }
+ }
+ });
+ });
diff --git a/src/app/views/deployables/_pick_assemblies.haml
b/src/app/views/deployables/_pick_assemblies.haml
new file mode 100644
index 0000000..cfaf30b
--- /dev/null
+++ b/src/app/views/deployables/_pick_assemblies.haml
@@ -0,0 +1,16 @@
+.grid_13
+ - form_tag(image_factory_deployable_path(@deployable)) do
+ %table#assemblies_list
+ %thead
+ %tr
+ %th
+ %th= "Name"
+ -(a)assemblies.each do |assembly|
+ %tr
+ %td
+ %input{:name => "assemblies_selected[]", :type =>
"checkbox", :value => assembly.id, :id =>
"assembly_checkbox_#{assembly.id}" }
+ %td= assembly.name
+
+ -# AJAX post
+ = restful_submit_tag('Save', 'add_assemblies',
add_assemblies_image_factory_deployable_path(@deployable), 'PUT')
+ = link_to "Back", image_factory_deployable_path(@deployable, :details_tab
=> 'assemblies'), :class => 'button'
diff --git a/src/app/views/deployables/_properties.haml
b/src/app/views/deployables/_properties.haml
new file mode 100644
index 0000000..ce50669
--- /dev/null
+++ b/src/app/views/deployables/_properties.haml
@@ -0,0 +1,8 @@
+.grid_13
+ %h2 #{(a)deployable.name}
+
+ = link_to 'Edit', edit_image_factory_deployable_path(@deployable), :class =>
'button'
+ - if @deployable.launchable?
+ = link_to "Launch", new_resources_deployment_path(:deployable_id =>
@deployable.id), {:class => 'button'}
+ - else
+ The deployable can't be launched - the deployable must have at least one assembly
and each assembly must have at least one template.
diff --git a/src/app/views/deployables/edit.haml b/src/app/views/deployables/edit.haml
new file mode 100644
index 0000000..fc47660
--- /dev/null
+++ b/src/app/views/deployables/edit.haml
@@ -0,0 +1,4 @@
+%h2 Editing Deployable: #{(a)deployable.name}
+
+- form_for @deployable, :url => image_factory_deployable_path(@deployable), :html
=> { :method => :put } do |f|
+ = render :partial => "form", :locals => { :form => f }
diff --git a/src/app/views/deployables/index.haml b/src/app/views/deployables/index.haml
new file mode 100644
index 0000000..62ccbc6
--- /dev/null
+++ b/src/app/views/deployables/index.haml
@@ -0,0 +1,2 @@
+- content_for :list do
+ = render :partial => 'list'
diff --git a/src/app/views/deployables/new.haml b/src/app/views/deployables/new.haml
new file mode 100644
index 0000000..cc582a3
--- /dev/null
+++ b/src/app/views/deployables/new.haml
@@ -0,0 +1,3 @@
+%h2 New Deployable
+- form_for @deployable, :url => image_factory_deployables_path do |f|
+ = render :partial => "form", :locals => { :form => f }
diff --git a/src/app/views/deployables/pick_assemblies.haml
b/src/app/views/deployables/pick_assemblies.haml
new file mode 100644
index 0000000..c223367
--- /dev/null
+++ b/src/app/views/deployables/pick_assemblies.haml
@@ -0,0 +1,5 @@
+- content_for :list do
+ = render :partial => 'list'
+
+- content_for :details do
+ = render :partial => 'pick_assemblies'
diff --git a/src/app/views/deployables/show.haml b/src/app/views/deployables/show.haml
new file mode 100644
index 0000000..05eeedd
--- /dev/null
+++ b/src/app/views/deployables/show.haml
@@ -0,0 +1,5 @@
+- content_for :list do
+ = render :partial => 'list'
+
+- content_for :details do
+ = render :partial => 'layouts/details_pane'
diff --git a/src/app/views/deployments/_history.haml
b/src/app/views/deployments/_history.haml
new file mode 100644
index 0000000..9f4a57e
--- /dev/null
+++ b/src/app/views/deployments/_history.haml
@@ -0,0 +1 @@
+%h3 List of deployment events
diff --git a/src/app/views/deployments/_instances.haml
b/src/app/views/deployments/_instances.haml
new file mode 100644
index 0000000..2ac1792
--- /dev/null
+++ b/src/app/views/deployments/_instances.haml
@@ -0,0 +1,2 @@
+%h3 List Instances for Deployment
+%h3 "Expand" button shifts list view to show the Instance list
diff --git a/src/app/views/deployments/_list.haml b/src/app/views/deployments/_list.haml
new file mode 100644
index 0000000..7b80677
--- /dev/null
+++ b/src/app/views/deployments/_list.haml
@@ -0,0 +1,35 @@
+- form_tag do
+ #object-actions
+ = restful_submit_tag "Start", "start",
resources_deployments_path, "PUT"
+ = restful_submit_tag "Stop", "stop",
multi_stop_resources_deployments_path, "GET"
+ = restful_submit_tag "Launch new", "launch_new",
launch_new_resources_deployments_path, "GET"
+ = restful_submit_tag "Delete", "delete",
resources_deployments_path, "DELETE"
+
+ #search-actions
+ = restful_submit_tag "Save Search", "save_search",
resources_deployments_path, "PUT"
+ = restful_submit_tag "Save Selection", "save_selection",
resources_deployments_path, "PUT"
+ = restful_submit_tag "Export to File", "export",
resources_deployments_path, "PUT"
+
+ %p
+ Select:
+ = link_to "All", @url_params.merge(:select => 'all')
+ %span> ,
+ = link_to "None", @url_params.merge(:select => 'none')
+
+ %table#deployments_table
+ = sortable_table_header @header
+ - @deployments.each do |deployment|
+ %tr
+ %td
+ - selected = @url_params[:select] == 'all'
+ %input{:name => "deployments_selected[]", :type =>
"checkbox", :value => deployment.id, :id =>
"deployment_checkbox_#{deployment.id}", :checked => selected }
+ %td
+ = link_to deployment.name, resources_deployment_path(deployment)
+ %td
+ = link_to deployment.deployable.name,
image_factory_deployable_path(deployment.deployable)
+ %td
+ = deployment.owner.login
+ %td
+ = deployment.created_at
+ %td
+ = link_to deployment.pool.name, resources_pool_path(deployment.pool)
diff --git a/src/app/views/deployments/_permissions.haml
b/src/app/views/deployments/_permissions.haml
new file mode 100644
index 0000000..1784789
--- /dev/null
+++ b/src/app/views/deployments/_permissions.haml
@@ -0,0 +1,2 @@
+%h3 Users and roles they are in for this Deployment
+%h3 Manage permissions on this deployment (if you have permissions to do so)
diff --git a/src/app/views/deployments/_properties.haml
b/src/app/views/deployments/_properties.haml
new file mode 100644
index 0000000..5d2c584
--- /dev/null
+++ b/src/app/views/deployments/_properties.haml
@@ -0,0 +1,2 @@
+%h3 Owner Details
+%h3 CDL
diff --git a/src/app/views/deployments/_provider_services.haml
b/src/app/views/deployments/_provider_services.haml
new file mode 100644
index 0000000..435f470
--- /dev/null
+++ b/src/app/views/deployments/_provider_services.haml
@@ -0,0 +1 @@
+%h3 List of services required by deployment
diff --git a/src/app/views/deployments/_required_services.haml
b/src/app/views/deployments/_required_services.haml
new file mode 100644
index 0000000..30e7601
--- /dev/null
+++ b/src/app/views/deployments/_required_services.haml
@@ -0,0 +1 @@
+%h3 List of services required by deployment
diff --git a/src/app/views/deployments/index.haml b/src/app/views/deployments/index.haml
new file mode 100644
index 0000000..d051c94
--- /dev/null
+++ b/src/app/views/deployments/index.haml
@@ -0,0 +1,2 @@
+- content_for :list do
+ = render :partial => 'list'
\ No newline at end of file
diff --git a/src/app/views/deployments/launch_new.haml
b/src/app/views/deployments/launch_new.haml
new file mode 100644
index 0000000..86cf47f
--- /dev/null
+++ b/src/app/views/deployments/launch_new.haml
@@ -0,0 +1,6 @@
+%h2 Launch new deployment via
+- form_tag new_resources_deployment_path, :method => :get do
+ = label_tag "Deployable:"
+ = select_tag :deployable_id,
options_from_collection_for_select(@launchable_deployables, "id",
"name")
+ = submit_tag "Launch"
+ = link_to "Cancel", resources_deployments_path, :class =>
"button"
diff --git a/src/app/views/deployments/new.haml b/src/app/views/deployments/new.haml
new file mode 100644
index 0000000..42e75fe
--- /dev/null
+++ b/src/app/views/deployments/new.haml
@@ -0,0 +1,25 @@
+= error_messages_for 'deployment'
+%h2 Launch deployable
+- form_for @deployment, :url => resources_deployments_path do
+ = hidden_field :deployment, :deployable_id
+ %ul
+ %li
+ = label :deployment, :name
+ = text_field :deployment, :name
+ %li
+ = label :deployment, :pool
+ = select :deployment, :pool_id, @pools.map {|p| [ p.name, p.id ]}, { :include_blank
=> true }
+ %li
+ = label :deployment, :frontend_realm
+ = select :deployment, :frontend_realm_id, @realms.map {|r| [ r.name, r.id ]}, {
:include_blank => true }
+ %p
+ %h3 Assemblies hardware profiles
+ %ul
+ - @deployment.deployable.assemblies.each do |assembly|
+ %li
+ - hwprofiles = @hardware_profiles.select {|hwp| hwp.architecture.value ==
assembly.templates.first.architecture}
+ = label_tag "hw_profiles[#{assembly.id}]", assembly.name
+ = select_tag "hw_profiles[#{assembly.id}]",
options_from_collection_for_select(hwprofiles, 'id', 'name')
+
+ = submit_tag 'Cancel', :name => 'cancel'
+ = submit_tag 'Launch', :name => 'launch'
diff --git a/src/app/views/deployments/show.haml b/src/app/views/deployments/show.haml
new file mode 100644
index 0000000..a5a777d
--- /dev/null
+++ b/src/app/views/deployments/show.haml
@@ -0,0 +1,5 @@
+- content_for :list do
+ = render :partial => 'list'
+
+- content_for :details do
+ = render :partial => 'layouts/details_pane'
\ No newline at end of file
diff --git a/src/app/views/hardware_profiles/_form.haml
b/src/app/views/hardware_profiles/_form.haml
new file mode 100644
index 0000000..70c982b
--- /dev/null
+++ b/src/app/views/hardware_profiles/_form.haml
@@ -0,0 +1,18 @@
+=hwp_form.label :name
+=hwp_form.text_field :name
+%table
+ = sortable_table_header @header
+ - [:memory, :cpu, :storage, :architecture].each do |type|
+ - hwp_form.fields_for type do |hwpp_form|
+ %tr
+ %td
+ =hwpp_form.text_field(:name, :readonly => "readonly")
+ %td
+ =hwpp_form.text_field(:unit, :size => 5, :readonly =>
"readonly")
+ %td
+ -if type == :architecture
+ =hwpp_form.select("value", ["i386", "x86_64"],
{})
+ -else
+ =hwpp_form.text_field(:value)
+= hwp_form.submit 'Check Matches', :class => "submit formbutton"
+= hwp_form.submit 'Save', :class => 'submit formbutton'
\ No newline at end of file
diff --git a/src/app/views/hardware_profiles/_history.haml
b/src/app/views/hardware_profiles/_history.haml
new file mode 100644
index 0000000..894e9cd
--- /dev/null
+++ b/src/app/views/hardware_profiles/_history.haml
@@ -0,0 +1 @@
+%h3 History
diff --git a/src/app/views/hardware_profiles/_list.haml
b/src/app/views/hardware_profiles/_list.haml
new file mode 100644
index 0000000..eee5ff1
--- /dev/null
+++ b/src/app/views/hardware_profiles/_list.haml
@@ -0,0 +1,28 @@
+- form_tag do
+ #object-actions
+ = link_to "New Hardware Profile", new_admin_hardware_profile_path, :class
=> 'button'
+ = restful_submit_tag "Delete", 'destroy',
multi_destroy_admin_hardware_profiles_path, 'DELETE', :id =>
'delete_button'
+ #selections
+ %p
+ Select:
+ = link_to "All", @url_params.merge(:select => 'all')
+ %span> ,
+ = link_to "None", @url_params.merge(:select => 'none')
+
+ #list
+ %table
+ = sortable_table_header @header
+ - @hardware_profiles.each do |hwp|
+ %tr
+ %td
+ - selected = @url_params[:select] == 'all'
+ %input{:name => "hardware_profile_selected[]", :type =>
"checkbox", :value => hwp.id, :id =>
"hardware_profile_checkbox_#{hwp.id}", :checked => selected }
+ = link_to hwp.name, admin_hardware_profile_path(hwp)
+ %td
+ =hwp.architecture.to_s
+ %td
+ =hwp.memory.to_s
+ %td
+ =hwp.storage.to_s
+ %td
+ =hwp.cpu.to_s
diff --git a/src/app/views/hardware_profiles/_matching_provider_hardware_profiles.haml
b/src/app/views/hardware_profiles/_matching_provider_hardware_profiles.haml
new file mode 100644
index 0000000..49c45e3
--- /dev/null
+++ b/src/app/views/hardware_profiles/_matching_provider_hardware_profiles.haml
@@ -0,0 +1,24 @@
+- if @hardware_profile
+ %h2
+ =(a)hardware_profile.name
+- if @matching_hwps.size > 0
+ %table
+ = sortable_table_header @provider_hwps_header
+ - @matching_hwps.each do |hwp|
+ %tr
+ %td
+ - if hwp.provider
+ = link_to hwp.provider.name, admin_provider_path(hwp.provider)
+ %td
+ = link_to hwp.name, admin_hardware_profile_path(hwp)
+ %td
+ =hwp.architecture.to_s
+ %td
+ =hwp.memory.to_s
+ %td
+ =hwp.storage.to_s
+ %td
+ =hwp.cpu.to_s
+- else
+ %h3
+ No Matching Provider Hardware Profiles Could be found
\ No newline at end of file
diff --git a/src/app/views/hardware_profiles/_properties.haml
b/src/app/views/hardware_profiles/_properties.haml
new file mode 100644
index 0000000..0739b84
--- /dev/null
+++ b/src/app/views/hardware_profiles/_properties.haml
@@ -0,0 +1,13 @@
+%h3
+ = @hardware_profile.name + "(" + (@hardware_profile.provider_id.nil? ?
"Front End" : "Provider" ) + ")"
+ = link_to 'Edit', edit_admin_hardware_profile_path(@hardware_profile), :class
=> 'button'
+%table
+ = sortable_table_header @properties_header
+ - @hwp_properties.each do |hwpp|
+ %tr
+ %td
+ =hwpp.name.nil? ? "n/a" : hwpp.name
+ %td
+ =hwpp.unit.nil? ? "n/a" : hwpp.unit
+ %td
+ =hwpp.value.nil? ? "n/a" : hwpp.value
diff --git a/src/app/views/hardware_profiles/create.haml
b/src/app/views/hardware_profiles/create.haml
new file mode 100644
index 0000000..c26bbe9
--- /dev/null
+++ b/src/app/views/hardware_profiles/create.haml
@@ -0,0 +1,6 @@
+%h3
+ Check Matching Hardware Profiles
+- content_for :list do
+ = render :partial => "form"
+- content_for :details do
+ = render :partial => 'layouts/details_pane'
\ No newline at end of file
diff --git a/src/app/views/hardware_profiles/edit.haml
b/src/app/views/hardware_profiles/edit.haml
new file mode 100644
index 0000000..e32eebd
--- /dev/null
+++ b/src/app/views/hardware_profiles/edit.haml
@@ -0,0 +1,7 @@
+- content_for :list do
+ %h3
+ Edit Hardware Profile
+ -form_for @hardware_profile, :url => admin_hardware_profile_path(@hardware_profile),
:html => { :multipart => true } do |hwp_form|
+ = render :partial => "form", :locals => { :hwp_form => hwp_form }
+- content_for :details do
+ = render :partial => 'layouts/details_pane'
diff --git a/src/app/views/hardware_profiles/index.haml
b/src/app/views/hardware_profiles/index.haml
new file mode 100644
index 0000000..62ccbc6
--- /dev/null
+++ b/src/app/views/hardware_profiles/index.haml
@@ -0,0 +1,2 @@
+- content_for :list do
+ = render :partial => 'list'
diff --git a/src/app/views/hardware_profiles/new.haml
b/src/app/views/hardware_profiles/new.haml
new file mode 100644
index 0000000..3355c87
--- /dev/null
+++ b/src/app/views/hardware_profiles/new.haml
@@ -0,0 +1,7 @@
+- content_for :list do
+ %h3
+ New Hardware Profile
+ -form_for @hardware_profile, :url => admin_hardware_profiles_path, :html => {
:multipart => true } do |hwp_form|
+ = render :partial => "form", :locals => { :hwp_form => hwp_form }
+- content_for :details do
+ = render :partial => 'layouts/details_pane'
\ No newline at end of file
diff --git a/src/app/views/hardware_profiles/show.haml
b/src/app/views/hardware_profiles/show.haml
new file mode 100644
index 0000000..a5a777d
--- /dev/null
+++ b/src/app/views/hardware_profiles/show.haml
@@ -0,0 +1,5 @@
+- content_for :list do
+ = render :partial => 'list'
+
+- content_for :details do
+ = render :partial => 'layouts/details_pane'
\ No newline at end of file
diff --git a/src/app/views/image_factory/assemblies/index.haml
b/src/app/views/image_factory/assemblies/index.haml
deleted file mode 100644
index 766d92c..0000000
--- a/src/app/views/image_factory/assemblies/index.haml
+++ /dev/null
@@ -1 +0,0 @@
-image_factory/assemblies/index.haml
diff --git a/src/app/views/image_factory/builds/index.haml
b/src/app/views/image_factory/builds/index.haml
deleted file mode 100644
index e69de29..0000000
diff --git a/src/app/views/image_factory/deployables/_assemblies.haml
b/src/app/views/image_factory/deployables/_assemblies.haml
deleted file mode 100644
index 9af208b..0000000
--- a/src/app/views/image_factory/deployables/_assemblies.haml
+++ /dev/null
@@ -1,30 +0,0 @@
-.grid_13
-- form_tag do
- = restful_submit_tag "Remove Selected", 'destroy',
remove_assemblies_image_factory_deployable_path(@deployable), 'DELETE', :id =>
'delete_button'
- = link_to "Add Assembly...",
pick_assemblies_image_factory_deployable_path(@deployable), :class => 'button',
:id => 'add_assembly'
-
- %table#assemblies_table
- %thead
- %tr
- %th
- %th= "Name"
- %th= "Created"
- -@deployable.assemblies(:include => :templates).each do |assembly|
- %tr
- %td
- %input{:name => "assemblies_selected[]", :type =>
"checkbox", :value => assembly.id, :id =>
"assembly_checkbox_#{assembly.id}" }
- %td= assembly.name
- %td= assembly.created_at
-
-:javascript
- $(document).ready(function () {
- $('#add_assembly').click(function(e) {
- e.preventDefault();
- var url = $(this).attr('href');
- $.get(url, function(data) {
- var selectedTabIndex = $("#details-view").tabs('option',
'selected');
- var $selectedTab = $("#details-view
div.ui-tabs-panel").eq(selectedTabIndex);
- $selectedTab.html(data);
- });
- });
- });
diff --git a/src/app/views/image_factory/deployables/_deployments.haml
b/src/app/views/image_factory/deployables/_deployments.haml
deleted file mode 100644
index 77af2f9..0000000
--- a/src/app/views/image_factory/deployables/_deployments.haml
+++ /dev/null
@@ -1,25 +0,0 @@
-.grid_13
- %h2 Deployments for #{(a)deployable.name}
-
- - unless @deployments.empty?
- - form_tag do
- %table#deployments_table
- = sortable_table_header @header_deployments
- - @deployments.each do |deployment|
- %tr
- %td
- - selected = @url_params[:select] == 'all'
- %input{:name => "deployments_selected[]", :type =>
"checkbox", :value => deployment.id, :id =>
"deployment_checkbox_#{deployment.id}", :checked => selected }
- = link_to deployment.name, resources_deployment_path(deployment)
- %td
- = deployment.deployable.name
- %td
- = deployment.owner.login
- %td
- = deployment.created_at.strftime("%d-%b-%Y %H:%M:%S")
- %td
- TODO
- %td
- = deployment.pool.name
- - else
- No Deployments for #{(a)deployable.name}
diff --git a/src/app/views/image_factory/deployables/_form.haml
b/src/app/views/image_factory/deployables/_form.haml
deleted file mode 100644
index 98c2232..0000000
--- a/src/app/views/image_factory/deployables/_form.haml
+++ /dev/null
@@ -1,10 +0,0 @@
-= form.error_messages
-%fieldset.clear
- = form.label :name, t(:name), :class => "grid_3 alpha"
- = form.text_field :name, :class => "grid_5"
-%fieldset.clear
- = form.label :summary, t(:summary), :class => "grid_3 alpha"
- = form.text_area :summary, :class => "grid_5", :rows => 3
-%fieldset.clearfix
- = form.submit "Save", :class => "submit formbutton"
- = link_to t(:cancel), image_factory_deployables_path, :class => 'button
formbutton'
diff --git a/src/app/views/image_factory/deployables/_list.haml
b/src/app/views/image_factory/deployables/_list.haml
deleted file mode 100644
index e2933f0..0000000
--- a/src/app/views/image_factory/deployables/_list.haml
+++ /dev/null
@@ -1,28 +0,0 @@
-- form_tag do
- = link_to "Create", new_image_factory_deployable_url, :class =>
'button'
- = restful_submit_tag "Delete", 'destroy',
multi_destroy_image_factory_deployables_path, 'DELETE', :id =>
'delete_button'
-
- %table#deployables_table
- %thead
- %tr
- %th
- %th= link_to "Name", image_factory_deployables_url(:sort_by =>
"name")
- -(a)deployables.each do |deployable|
- %tr
- %td
- %input{:name => "deployables_selected[]", :type =>
"checkbox", :value => deployable.id, :id =>
"deployable_checkbox_#{deployable.id}" }
- %td= link_to deployable.name, image_factory_deployable_path(deployable)
-
-:javascript
- $(document).ready(function () {
- $('#delete_button').click(function(e) {
- if ($("#deployables_table input[@type=radio]:checked").length == 0) {
- alert('Please select any deployable to be deleted before clicking Delete
button.');
- e.preventDefault();
- } else {
- if (!confirm("Are you sure you want to delete this deployable?")) {
- e.preventDefault();
- }
- }
- });
- });
diff --git a/src/app/views/image_factory/deployables/_pick_assemblies.haml
b/src/app/views/image_factory/deployables/_pick_assemblies.haml
deleted file mode 100644
index cfaf30b..0000000
--- a/src/app/views/image_factory/deployables/_pick_assemblies.haml
+++ /dev/null
@@ -1,16 +0,0 @@
-.grid_13
- - form_tag(image_factory_deployable_path(@deployable)) do
- %table#assemblies_list
- %thead
- %tr
- %th
- %th= "Name"
- -(a)assemblies.each do |assembly|
- %tr
- %td
- %input{:name => "assemblies_selected[]", :type =>
"checkbox", :value => assembly.id, :id =>
"assembly_checkbox_#{assembly.id}" }
- %td= assembly.name
-
- -# AJAX post
- = restful_submit_tag('Save', 'add_assemblies',
add_assemblies_image_factory_deployable_path(@deployable), 'PUT')
- = link_to "Back", image_factory_deployable_path(@deployable, :details_tab
=> 'assemblies'), :class => 'button'
diff --git a/src/app/views/image_factory/deployables/_properties.haml
b/src/app/views/image_factory/deployables/_properties.haml
deleted file mode 100644
index ce50669..0000000
--- a/src/app/views/image_factory/deployables/_properties.haml
+++ /dev/null
@@ -1,8 +0,0 @@
-.grid_13
- %h2 #{(a)deployable.name}
-
- = link_to 'Edit', edit_image_factory_deployable_path(@deployable), :class =>
'button'
- - if @deployable.launchable?
- = link_to "Launch", new_resources_deployment_path(:deployable_id =>
@deployable.id), {:class => 'button'}
- - else
- The deployable can't be launched - the deployable must have at least one assembly
and each assembly must have at least one template.
diff --git a/src/app/views/image_factory/deployables/edit.haml
b/src/app/views/image_factory/deployables/edit.haml
deleted file mode 100644
index fc47660..0000000
--- a/src/app/views/image_factory/deployables/edit.haml
+++ /dev/null
@@ -1,4 +0,0 @@
-%h2 Editing Deployable: #{(a)deployable.name}
-
-- form_for @deployable, :url => image_factory_deployable_path(@deployable), :html
=> { :method => :put } do |f|
- = render :partial => "form", :locals => { :form => f }
diff --git a/src/app/views/image_factory/deployables/index.haml
b/src/app/views/image_factory/deployables/index.haml
deleted file mode 100644
index 62ccbc6..0000000
--- a/src/app/views/image_factory/deployables/index.haml
+++ /dev/null
@@ -1,2 +0,0 @@
-- content_for :list do
- = render :partial => 'list'
diff --git a/src/app/views/image_factory/deployables/new.haml
b/src/app/views/image_factory/deployables/new.haml
deleted file mode 100644
index cc582a3..0000000
--- a/src/app/views/image_factory/deployables/new.haml
+++ /dev/null
@@ -1,3 +0,0 @@
-%h2 New Deployable
-- form_for @deployable, :url => image_factory_deployables_path do |f|
- = render :partial => "form", :locals => { :form => f }
diff --git a/src/app/views/image_factory/deployables/pick_assemblies.haml
b/src/app/views/image_factory/deployables/pick_assemblies.haml
deleted file mode 100644
index c223367..0000000
--- a/src/app/views/image_factory/deployables/pick_assemblies.haml
+++ /dev/null
@@ -1,5 +0,0 @@
-- content_for :list do
- = render :partial => 'list'
-
-- content_for :details do
- = render :partial => 'pick_assemblies'
diff --git a/src/app/views/image_factory/deployables/show.haml
b/src/app/views/image_factory/deployables/show.haml
deleted file mode 100644
index 05eeedd..0000000
--- a/src/app/views/image_factory/deployables/show.haml
+++ /dev/null
@@ -1,5 +0,0 @@
-- content_for :list do
- = render :partial => 'list'
-
-- content_for :details do
- = render :partial => 'layouts/details_pane'
diff --git a/src/app/views/image_factory/image_imports/new.haml
b/src/app/views/image_factory/image_imports/new.haml
deleted file mode 100644
index cebc7a7..0000000
--- a/src/app/views/image_factory/image_imports/new.haml
+++ /dev/null
@@ -1,8 +0,0 @@
-- form_tag :image_factory_image_imports do
- %fieldset.clear
- = label_tag :provider_account_id, "Provider Account ID: "
- = select_tag :provider_account_id,
option_groups_from_collection_for_select(@providers,:provider_accounts, :name, :id,:name)
- %fieldset.clear
- = label_tag :ami_id, "Image ID: "
- = text_field_tag :ami_id, params[:ami_id]
- = restful_submit_tag "Import", 'create',
image_factory_image_imports_path, 'POST', :class => "submit"
diff --git a/src/app/views/image_factory/templates/_addbuttons.haml
b/src/app/views/image_factory/templates/_addbuttons.haml
deleted file mode 100644
index 9f88751..0000000
--- a/src/app/views/image_factory/templates/_addbuttons.haml
+++ /dev/null
@@ -1,4 +0,0 @@
-%fieldset.clear
- - cancel_path = @tpl.id ? edit_image_factory_template_path(@tpl) :
new_image_factory_template_path
- = restful_submit_tag "Add Selected", "add_selected",
add_selected_image_factory_templates_path, 'GET', {:class => "grid_2
alpha", :id => "do_add_software"}
- = restful_submit_tag "Cancel", "cancel_add_software", cancel_path,
'GET', {:class => "grid_2", :id =>
"cancel_add_software"}
diff --git a/src/app/views/image_factory/templates/_basics.haml
b/src/app/views/image_factory/templates/_basics.haml
deleted file mode 100644
index 72d2423..0000000
--- a/src/app/views/image_factory/templates/_basics.haml
+++ /dev/null
@@ -1,27 +0,0 @@
-%h3 General Information
-%fieldset.clearfix
- %label.grid_4.alpha.la Template Name:
- %label.grid_7.la Summary:
- %label.grid_3.suffix_2.omega.la Version:
- = text_field :tpl, :name, :value => @tpl.name || 'Template Name', :class
=> "grid_4 alpha"
- = text_field :tpl, :summary, :value => @tpl.summary || 'Template
Description', :class => "grid_7"
- = text_field_tag 'current_version', 'Current Version', :disabled =>
true, :class => "grid_3"
- %button{:type => 'button', :disabled => 'disabled', :class =>
"grid_2 omega"} New Version
-%fieldset.clearfix
- %label.grid_4.alpha Choose Logo:
- %input{:type => 'file', :disabled => 'disabled', :class =>
"grid_7"}
-%fieldset.clearfix
- - default = @tpl.platforms['fedora']
- = label :tpl, :platform, 'Platform Choice:', :class => "grid_4
alpha"
- = select :tpl, :platform, @tpl.platforms.map {|id, p| ["#{p['name']}
#{p['version']} (#{p['architecture']})", id]}, {:selected =>
@tpl.platform || 'fedora'}, {:class => 'grid_7'}
-%fieldset.clearfix
- = label_tag :bootable, 'Bootable:', :class => "grid_4 alpha"
- .grid_12.omega
- = radio_button_tag :bootable, 'yes', true, :disabled => true
- = label_tag :bootable, 'Yes'
- = radio_button_tag :bootable, 'no', false, :disabled => true
- = label_tag :bootable, 'No'
-%fieldset.clearfix
- %label{:for => :template_group, :class => 'grid_4 alpha'}
- Template Group:
- = select_tag(:template_group, options_for_select([['User Private', 1]]), :class
=> 'grid_4')
diff --git a/src/app/views/image_factory/templates/_builds.haml
b/src/app/views/image_factory/templates/_builds.haml
deleted file mode 100644
index a6bdd4b..0000000
--- a/src/app/views/image_factory/templates/_builds.haml
+++ /dev/null
@@ -1,41 +0,0 @@
-Builds for
-= @tpl.platform_name
-= @tpl.platform_version
-, template "#{(a)tpl.name}"
-
-- form_tag image_factory_builds_path do
- = hidden_field_tag :template_id, @tpl.id
- - if @targets_not_built.count > 0 then
- - if @tpl.imported
- Build imported template is not supported
- - else
- New Build for
- = select_tag 'target', options_for_select(@targets_not_built)
- = submit_tag "Go", :name => "build"
-
-%ul
- - if @images.empty?
- %li No Builds
- - else
- - @images.each do |img|
- %li
- - form_tag(retry_image_factory_builds_path, { :method => :post }) do
- = "#{img.name}-#{img.template.architecture}: #{img.status}"
- = hidden_field_tag :template_id, @tpl.id
- = hidden_field_tag :image_id, img.id
- = submit_tag "Retry build", :name => "build"
- - if img.status == Image::STATE_COMPLETED
- %ul
- - img.provider_images.each do |pimg|
- %li
- - form_tag(retry_image_factory_builds_path, { :method => :post }) do
- = "#{pimg.provider.name}: #{pimg.status}"
- = hidden_field_tag :template_id, @tpl.id
- = hidden_field_tag :provider_image_id, pimg.id
- = submit_tag "Retry upload", :name => "build"
- - unless @tpl.imported
- - img.not_uploaded_providers.each do |provider|
- %li
- = "#{provider.name}: "
- not uploaded
- = link_to 'upload',
upload_image_factory_builds_path(:template_id => @tpl.id, :image_id => img.id,
:provider_id => provider.id), {:class => 'button'}
diff --git a/src/app/views/image_factory/templates/_collections.haml
b/src/app/views/image_factory/templates/_collections.haml
deleted file mode 100644
index 98ce959..0000000
--- a/src/app/views/image_factory/templates/_collections.haml
+++ /dev/null
@@ -1,8 +0,0 @@
-%ul.collections
- - @collections.each do |c|
- %li
- /- selected = c[:selected] ? true : false
- - selected = false
- = check_box_tag 'groups[]', c[:id], selected, {:disabled => selected,
:id => "group_#{c[:id]}", :class => "#{selected ? 'selected'
: ''}"}
- = label_tag "group_#{c[:id]}", c[:name]
-= render :partial => 'addbuttons'
diff --git a/src/app/views/image_factory/templates/_form.haml
b/src/app/views/image_factory/templates/_form.haml
deleted file mode 100644
index 7cc323c..0000000
--- a/src/app/views/image_factory/templates/_form.haml
+++ /dev/null
@@ -1,120 +0,0 @@
-:javascript
- $(document).ready(function() {
- var $content_container = $('#managed_content');
- var $sel_pkg_container = $('#package_selection_list');
- var $submit = $('#add_software_button');
- $submit.click(function(e) {
- e.preventDefault();
- $submit.hide();
- var data = {
- 'packages[]':
$("input[name='packages[]']").map(function() {return
$(this).val()}).get(),
- 'repository': $("select[name='tpl[platform]']").val()
|| ''
- }
- var url = '#{url_for :action => 'content_selection', :id =>
@id}';
- //$content_container.empty().show();
- $sel_pkg_container.empty().show().addClass('loading');
- $sel_pkg_container.load(url, data, function(){
- $sel_pkg_container.removeClass('loading');
- var $groups = $('.softwaregroups .disclosure', this);
- //search
- $("input[name='package_search']").keypress(function(event) {
- if (event.keyCode == '13') {
- event.preventDefault();
- $("input[name=package_search] ~ button").click();
- }
- });
- $("input[name=package_search] ~ button").click(function(event) {
- event.preventDefault();
- var data = {
- 'packages[]':
$("input:text[name='packages[]']").map(function() {return
$(this).val()}).get(),
- 'package_search':
$("input[name='package_search']").val(),
- 'repository':
$("select[name='tpl[platform]']").val()
- };
- var url = '#{url_for :action => 'search_packages', :id =>
@id}';
- $('#metagrouppackages').empty().addClass('loading');
- $('#metagrouppackages').load(url, data, function() {
- $('#metagrouppackages').removeClass('loading');
- });
- });
- });
- });
- //removing packages from the list
- $('.remove_package').live('click', function (e) {
- e.preventDefault();
- $(this).parent().hide(300, function () {
- $(this).remove();
- });
- });
- //displaying extended package info and actions
- $('.dropdown').hide();
- $('.packagename').live('click', function () {
- var dropdowncontent = $(this).siblings('.dropdown').html(),
- $dropdown = $("#dropdown");
- $('.packagewrap').removeClass('selected');
- $(this).parent().addClass('selected');
- $dropdown.empty().html(dropdowncontent).css({
- 'top': $(this).positionAncestor('#content').top + 17,
- 'left': $(this).positionAncestor('#content').left - 4
- }).show();
- });
- //catch #content clicks and hide the #dropdown if it's not within it
- $("#content").click(function (e) {
- if(!e.target.id === 'dropdown' ||
!$(e.target).closest("#dropdown").length) {
- $("#dropdown").hide();
- $('.packagewrap').removeClass('selected');
- }
- });
- // select correct package repo when we change platform
- $("select[name='tpl[platform]']").change(function() {
- if ($submit.is(':hidden')) {
- $submit.trigger('click');
- }
- });
- // add selected pkgs/groups
- $('#do_add_software').live('click', function(e) {
- e.preventDefault();
- var $button = $(this).clone();
- var label = "<span id='do_add_software' class='loading
fl'>Adding Packages</span>";
- var url = '#{url_for :action => 'managed_content'}';
- var new_pkgs =
$("input:checked[name='selected_packages[]']").map(function() {return
$(this).val()}).get();
- var old_pkgs =
$("input:hidden[name='packages[]']").map(function() {return
$(this).val()}).get()
- var cached_pkgs =
$("input:hidden[name='cached_packages[]']").map(function() {return
$(this).val()}).get()
- var data = {
- 'selected_packages[]': old_pkgs.concat(new_pkgs.concat(cached_pkgs)),
- 'selected_groups[]':
$("input:checked[name='groups[]']").map(function() {return
$(this).val()}).get(),
- 'collections': $("input:hidden[name=collections]").val(),
- 'template_id' : '#{(a)id.nil? ? nil : @id}'
- };
- $(this).replaceWith(label);
- $('#managed_content').load(url, data, function(){
- $("input:checked[name='groups[]']").attr('disabled',
'disabled');
- $("input:checked[name='packages[]']").attr('disabled',
'disabled');
- // $('#add_software_button').show();
- $('.dropdown').hide();
- $('#do_add_software').replaceWith($button);
- });
- });
- // hide sw selection panel
- $('#cancel_add_software').live('click', function(e) {
- e.preventDefault();
- $('#package_selection_list').hide();
- $('#add_software_button').show();
- $('.dropdown').hide();
- });
- });
-
-#build
- = error_messages_for :tpl, :object_name => 'template'
- = render :partial => 'basics'
- = render :partial => 'local_content_to_bundle'
-
- #managed_content
- = render :partial => 'managed_content'
-
- .clearfix
- .grid_16.alpha.omega
- = restful_submit_tag "Add Software", 'collections',
collections_image_factory_templates_path, 'GET', {:id =>
"add_software_button", :class => "iconbutton"}
-
- #package_selection_list{:style => 'display: none'}
-
- = render :partial => 'preboot_configuration'
diff --git a/src/app/views/image_factory/templates/_hidden_fields.haml
b/src/app/views/image_factory/templates/_hidden_fields.haml
deleted file mode 100644
index 5709087..0000000
--- a/src/app/views/image_factory/templates/_hidden_fields.haml
+++ /dev/null
@@ -1,8 +0,0 @@
-= hidden_field :tpl, :id
-= hidden_field :tpl, :name
-= hidden_field :tpl, :summary
-= hidden_field :tpl, :platform
-= hidden_field :tpl, :platform_version
-= hidden_field :tpl, :architecture
-- @tpl.packages.each do |p|
- = hidden_field_tag "packages[]", p, :id => "package_#{p}"
diff --git a/src/app/views/image_factory/templates/_list.haml
b/src/app/views/image_factory/templates/_list.haml
deleted file mode 100644
index bf8be82..0000000
--- a/src/app/views/image_factory/templates/_list.haml
+++ /dev/null
@@ -1,35 +0,0 @@
-- form_tag do
- = link_to "Create", new_image_factory_template_path, :class =>
'button'
- = restful_submit_tag "Delete", 'destroy',
multi_destroy_image_factory_templates_path, 'DELETE', :id =>
'delete_button'
-
- %table#templates_table
- = sortable_table_header @header
- %tbody
- - if @templates.empty?
- %tr
- %td{:colspan => 6} No Templates
- - else
- - @templates.each do |template|
- %tr
- %td
- = check_box_tag 'selected[]', template.id, @url_params[:select] ==
'all', :id => "selected_#{template.id}"
- = image_tag "blnk.png", :alt => template.platform, :class
=> "icon platform #{template.platform}"
- = link_to template.name, image_factory_template_path(template)
- %td= template.platform_name
- %td= template.platform_version
- %td= image_tag 'blnk.png', :alt => 'yes', :class =>
"icon yes"
- %td= template.architecture
-
-:javascript
- $(document).ready(function () {
- $('#delete_button').click(function(e) {
- if ($("#templates_table input[@type=radio]:checked").length == 0) {
- alert('Please select any template to be deleted before clicking Delete
button.');
- e.preventDefault();
- } else {
- if (!confirm("Are you sure you want to delete this template?")) {
- e.preventDefault();
- }
- }
- });
- });
diff --git a/src/app/views/image_factory/templates/_local_content_to_bundle.haml
b/src/app/views/image_factory/templates/_local_content_to_bundle.haml
deleted file mode 100644
index 109ce20..0000000
--- a/src/app/views/image_factory/templates/_local_content_to_bundle.haml
+++ /dev/null
@@ -1,21 +0,0 @@
-%h3.disabled.gap Local Content to Bundle
-%fieldset.clearfix
- = label_tag :local_bundle_name, 'Local:', :class => "disabled grid_2
alpha"
- = text_field_tag 'local_bundle_name[]', 'Bundle Name', :disabled =>
true, :class => "grid_8"
- .grid_6.omega
- %button{:type => 'button', :disabled => 'disabled'} Browse
- %button{:type => 'button', :disabled => 'disabled'} Config
- %button{:type => 'button', :disabled => 'disabled'} Metadata
- (
- %a{:href => '#'} Remove
- )
- .grid_2.alpha
-
- = text_field_tag 'local_bundle_name[]', 'Bundle Name', :disabled =>
true, :class => "grid_8"
- .grid_6.omega
- %button{:type => 'button', :disabled => 'disabled'} Browse
- %button{:type => 'button', :disabled => 'disabled'} Config
- %button{:type => 'button', :disabled => 'disabled'} Metadata
- (
- %a{:href => '#'} Remove
- )
diff --git a/src/app/views/image_factory/templates/_managed_content.haml
b/src/app/views/image_factory/templates/_managed_content.haml
deleted file mode 100644
index ebea6cd..0000000
--- a/src/app/views/image_factory/templates/_managed_content.haml
+++ /dev/null
@@ -1,21 +0,0 @@
-#selected_packages
- %h3.gap Managed Content to Bundle
- .grid_16.alpha.omega
- - if @tpl.packages.empty?
- No selected packages
- - else
- /- repos = @repository_manager.repositories_hash
- - @tpl.packages.sort.each do |pkg|
- /- pkg_group = @groups.keys.find {|g| @groups[g][:packages][pkg]}
- .packagewrap
- %a.packagename{:id => "package_#{pkg}"}=pkg
- = hidden_field_tag 'packages[]', pkg, :id =>
"package_#{pkg}"
- = restful_submit_tag "Remove", "remove_package",
remove_package_image_factory_templates_path(:name => pkg), 'GET', {:id =>
"remove_package_#{pkg}", :class => 'remove_package'}
- .dropdown
- / we don't display repository for now, it's pretty difficult with
current design
- /%section
- / Repository:
- / %label= (pkg_group and repo = repos[@groups[pkg_group][:repository_id]]) ?
repo.name.to_s : ' '
- %fieldset.nomargin
- %button{:disabled => true} Browse
- %button{:disabled => true} Config
diff --git a/src/app/views/image_factory/templates/_metagroup_packages.haml
b/src/app/views/image_factory/templates/_metagroup_packages.haml
deleted file mode 100644
index 82c2697..0000000
--- a/src/app/views/image_factory/templates/_metagroup_packages.haml
+++ /dev/null
@@ -1,19 +0,0 @@
-- if @metagroup_packages.blank?
- %span.disabled No group selected
-- else
- %h4
- = "#{@metagroup} Packages"
- %ul.metagrouppackages
- - @metagroup_packages.sort {|a, b| a[:name] <=> b[:name]}.each do |group|
- %li
- - selected = false
- %h5
- = check_box_tag 'selected_groups[]', group[:id], selected, {:disabled
=> selected, :id => "group_#{group[:id]}", :class =>
"softwaregroups #{selected ? 'selected' : ''}"}
- = label_tag "group_#{group[:id]}", group[:label]
- %ul
- - group[:packages].each do |pkg|
- %li
- - selected = @packages.to_a.find {|p| p[:name] == pkg}
- = check_box_tag 'selected_packages[]', pkg, selected, {:disabled
=> selected, :id => "pkg_#{group[:name]}_#{pkg}"}
- = label_tag "pkg_#{group[:name]}_#{pkg}", pkg
- = render :partial => 'addbuttons'
diff --git a/src/app/views/image_factory/templates/_metagroups.haml
b/src/app/views/image_factory/templates/_metagroups.haml
deleted file mode 100644
index f23c408..0000000
--- a/src/app/views/image_factory/templates/_metagroups.haml
+++ /dev/null
@@ -1,13 +0,0 @@
-%fieldset.clearfix
- .search.grid_4.alpha
- %input{:type => "search", :placeholder => "Search for
package", :name => 'package_search', :value => params[:package_search],
:id => 'package_search'}
- %button.action{:id => 'package_search_button', :name =>
'package_search_button' , :value => 'true'}
- .grid_8
- %a.grid_4.omega Advanced Search
-
-%ul.metagroups{:class => 'packagegroupsidebar grid_4 alpha'}
- %li
- = restful_submit_tag 'Collections', 'collections',
collections_image_factory_templates_path, 'GET', {:id => 'collections',
:class => 'icon'}
- - @metagroups.keys.sort.each do |cat|
- %li
- = restful_submit_tag cat, "metagroup_packages",
metagroup_packages_image_factory_templates_path, 'GET', {:class =>
'icon'}
diff --git a/src/app/views/image_factory/templates/_preboot_configuration.haml
b/src/app/views/image_factory/templates/_preboot_configuration.haml
deleted file mode 100644
index 79ae839..0000000
--- a/src/app/views/image_factory/templates/_preboot_configuration.haml
+++ /dev/null
@@ -1,11 +0,0 @@
-%h3.clear.gap Preboot Configuration
-%fieldset.clearfix
- .grid_4.alpha
- = radio_button_tag :configure_via_script, 'no', :disabled => true
- = label_tag :configure_via_script, 'Configure Via Script'
- = file_field_tag 'script_file', :disabled => true, :class => 'grid_12
omega'
-%fieldset.clearfix
- .grid_4.alpha
- = radio_button_tag :configure_via_script, 'no', :disabled => true
- = label_tag :configure_via_script, 'Configure Via Script'
- = file_field_tag 'script_file', :disabled => true, :class => 'grid_12
omega'
diff --git a/src/app/views/image_factory/templates/_properties.haml
b/src/app/views/image_factory/templates/_properties.haml
deleted file mode 100644
index 0fe33ae..0000000
--- a/src/app/views/image_factory/templates/_properties.haml
+++ /dev/null
@@ -1,4 +0,0 @@
-%h3
- Properties for
- = @tpl.name
-= link_to "Edit", edit_image_factory_template_path(@tpl), { :class =>
'button' }
diff --git a/src/app/views/image_factory/templates/_search_packages.haml
b/src/app/views/image_factory/templates/_search_packages.haml
deleted file mode 100644
index 78fa5b1..0000000
--- a/src/app/views/image_factory/templates/_search_packages.haml
+++ /dev/null
@@ -1,45 +0,0 @@
-:javascript
- $(document).ready(function() {
- $('.pagination input[type=submit]').click(function(e) {
- e.preventDefault();
- var url = '#{url_for :action => 'search_packages', :id =>
@id}';
- var old_pkgs =
$("input:hidden[name='cached_packages[]']").map(function() {return
$(this).val()}).get();
- var new_pkgs =
$("input:checked[name='selected_packages[]']").map(function() {return
$(this).val()}).get();
- var data = {
- 'selected_packages[]':
$("input:hidden[name='packages[]']").map(function() {return
$(this).val()}).get(),
- 'cached_packages[]': old_pkgs.concat(new_pkgs),
- 'selected_groups[]':
$("input:checked[name='groups[]']").map(function() {return
$(this).val()}).get(),
- 'package_search':
$("input[name='package_search']").val(),
- 'old_page': '#{@page}',
- 'template_id' : '#{(a)id.nil? ? nil : @id}',
- 'page': $(this).val(),
- 'repository': $("select[name='tpl[platform]']").val()
- };
- $('#metagrouppackages').empty().addClass('loading');
- $('#metagrouppackages').load(url, data, function() {
- $('#metagrouppackages').removeClass('loading');
- })
- });
- });
-
-- @cached_packages.uniq.each do |pkg|
- = hidden_field_tag 'cached_packages[]', pkg
-
-- if params[:package_search].empty?
- Search string is empty.
--else
- %h4
- = "Search Results for '#{params[:package_search]}'"
- %ul.searchedpackages
- - @searched_packages.sort {|a, b| a [:name] <=> b[:name]}.each do |pkg|
- %li
- - selected = (@packages.to_a.find {|p| p[:name] == pkg[:name]} or
@cached_packages.include?(pkg[:name]))
- - disabled = @tpl.packages.include?(pkg[:name])
- = check_box_tag 'selected_packages[]', pkg[:name], selected, {:disabled
=> disabled, :id => "pkg_#{pkg[:name]}"}
- = label_tag "pkg_#{pkg[:name]}", pkg[:name]
- .pageinfo
- = page_entries_info @searched_packages, :entry_name => 'package'
- = will_paginate @searched_packages, :params => {:package_search =>
params[:package_search]}, :renderer => TemplatesHelper::ButtonPaginationRenderer.new,
:previous_label => 'Previous', :next_label => 'Next'
-
-
- = render :partial => 'addbuttons'
diff --git a/src/app/views/image_factory/templates/_software_selection.haml
b/src/app/views/image_factory/templates/_software_selection.haml
deleted file mode 100644
index 34606fc..0000000
--- a/src/app/views/image_factory/templates/_software_selection.haml
+++ /dev/null
@@ -1,41 +0,0 @@
-:javascript
- $(document).ready(function() {
- var $metagrouppackages = $('#metagrouppackages');
- $('.metagroups input').click(function(e) {
- e.preventDefault();
- var data = {
- 'repository': $("select[name='tpl[platform]']").val(),
- 'packages[]':
$("input:hidden[name='packages[]']").map(function() {return
$(this).val()}).get()
- };
- if ($(this).attr('name') == '__rewrite[collections]') {
- var url = '#{url_for :action => 'collections', :id =>
@id}';
- } else {
- var url = '#{url_for :action => 'metagroup_packages', :id =>
@id}';
- data.__rewrite = {
- metagroup_packages: e.currentTarget.value
- };
- }
- $metagrouppackages.empty().addClass('loading');
- $metagrouppackages.load(url, data, function() {
- $metagrouppackages.removeClass('loading');
- //select all packages in collection
- $(".softwaregroups").click(function() {
- if ($(this).attr("checked") === true) {
-
$(this).parent().siblings("ul").find("input[type='checkbox']").attr("checked","checked");
- } else {
-
$(this).parent().siblings("ul").find("input[type='checkbox']").removeAttr("checked");
- }
- });
- });
- });
- });
-
-.grid_16
- %h4 Managed Content Selection
-
- - form_tag do
- - unless request.xhr?
- = render :partial => 'hidden_fields'
- = render :partial => 'metagroups'
- #metagrouppackages.grid_12.omega.gap
- = render :partial => view
diff --git a/src/app/views/image_factory/templates/collections.haml
b/src/app/views/image_factory/templates/collections.haml
deleted file mode 100644
index a899c85..0000000
--- a/src/app/views/image_factory/templates/collections.haml
+++ /dev/null
@@ -1 +0,0 @@
-= render :partial => 'software_selection', :locals => {:view =>
'collections'}
diff --git a/src/app/views/image_factory/templates/edit.haml
b/src/app/views/image_factory/templates/edit.haml
deleted file mode 100644
index a2a58ef..0000000
--- a/src/app/views/image_factory/templates/edit.haml
+++ /dev/null
@@ -1,9 +0,0 @@
-#dropdown
-.grid_16
- %h2 Edit Template
- /- form_for @tpl, :url => image_factory_template_path(@tpl), :html => { :method
=> :put } do |f|
- - form_tag do
- = hidden_field_tag :id, @tpl.id
- = render :partial => 'form'
- = restful_submit_tag "Save", 'update',
image_factory_template_path(@tpl), 'PUT', :class => "formbutton"
- = link_to 'Cancel', image_factory_templates_path, :class => 'button
formbutton'
diff --git a/src/app/views/image_factory/templates/index.haml
b/src/app/views/image_factory/templates/index.haml
deleted file mode 100644
index 62ccbc6..0000000
--- a/src/app/views/image_factory/templates/index.haml
+++ /dev/null
@@ -1,2 +0,0 @@
-- content_for :list do
- = render :partial => 'list'
diff --git a/src/app/views/image_factory/templates/managed_content.haml
b/src/app/views/image_factory/templates/managed_content.haml
deleted file mode 100644
index 926142d..0000000
--- a/src/app/views/image_factory/templates/managed_content.haml
+++ /dev/null
@@ -1 +0,0 @@
-= render :partial => 'managed_content'
diff --git a/src/app/views/image_factory/templates/metagroup_packages.haml
b/src/app/views/image_factory/templates/metagroup_packages.haml
deleted file mode 100644
index 9703663..0000000
--- a/src/app/views/image_factory/templates/metagroup_packages.haml
+++ /dev/null
@@ -1 +0,0 @@
-= render :partial => 'software_selection', :locals => {:view =>
'metagroup_packages'}
diff --git a/src/app/views/image_factory/templates/new.haml
b/src/app/views/image_factory/templates/new.haml
deleted file mode 100644
index 2dbac5b..0000000
--- a/src/app/views/image_factory/templates/new.haml
+++ /dev/null
@@ -1,10 +0,0 @@
-#dropdown
-.grid_16
- %h2 New Template
- /- form_for @tpl, :url => image_factory_templates_path do |f|
- - form_tag do
- = render :partial => 'form'
- = check_box_tag :create_deployable
- = label_tag :create_deployable, "Create Deployable for this template"
- = restful_submit_tag "Save", 'create',
image_factory_templates_path, 'POST', :class => "formbutton"
- = link_to 'Cancel', image_factory_templates_path, :class => 'button
formbutton'
diff --git a/src/app/views/image_factory/templates/search_packages.haml
b/src/app/views/image_factory/templates/search_packages.haml
deleted file mode 100644
index 94e30f5..0000000
--- a/src/app/views/image_factory/templates/search_packages.haml
+++ /dev/null
@@ -1 +0,0 @@
-= render :partial => 'software_selection', :locals => {:view =>
'search_packages'}
diff --git a/src/app/views/image_factory/templates/show.haml
b/src/app/views/image_factory/templates/show.haml
deleted file mode 100644
index 05eeedd..0000000
--- a/src/app/views/image_factory/templates/show.haml
+++ /dev/null
@@ -1,5 +0,0 @@
-- content_for :list do
- = render :partial => 'list'
-
-- content_for :details do
- = render :partial => 'layouts/details_pane'
diff --git a/src/app/views/image_imports/new.haml b/src/app/views/image_imports/new.haml
new file mode 100644
index 0000000..cebc7a7
--- /dev/null
+++ b/src/app/views/image_imports/new.haml
@@ -0,0 +1,8 @@
+- form_tag :image_factory_image_imports do
+ %fieldset.clear
+ = label_tag :provider_account_id, "Provider Account ID: "
+ = select_tag :provider_account_id,
option_groups_from_collection_for_select(@providers,:provider_accounts, :name, :id,:name)
+ %fieldset.clear
+ = label_tag :ami_id, "Image ID: "
+ = text_field_tag :ami_id, params[:ami_id]
+ = restful_submit_tag "Import", 'create',
image_factory_image_imports_path, 'POST', :class => "submit"
diff --git a/src/app/views/instances/_can_perform_state_change.xml.haml
b/src/app/views/instances/_can_perform_state_change.xml.haml
new file mode 100644
index 0000000..e20a232
--- /dev/null
+++ b/src/app/views/instances/_can_perform_state_change.xml.haml
@@ -0,0 +1,7 @@
+%result<
+ %action_request<
+ =@action_request
+ %instance_id<
+ =(a)instance.id
+ %value<
+ =@value
\ No newline at end of file
diff --git a/src/app/views/instances/_history.haml
b/src/app/views/instances/_history.haml
new file mode 100644
index 0000000..854743e
--- /dev/null
+++ b/src/app/views/instances/_history.haml
@@ -0,0 +1,3 @@
+%h3
+ History for
+ = @instance.name
diff --git a/src/app/views/instances/_list.haml b/src/app/views/instances/_list.haml
new file mode 100644
index 0000000..7a6cbc4
--- /dev/null
+++ b/src/app/views/instances/_list.haml
@@ -0,0 +1,23 @@
+- form_tag do
+ = restful_submit_tag 'Stop', 'stop',
multi_stop_resources_instances_path, 'GET'
+ = restful_submit_tag 'Create', 'new',
select_template_resources_instances_path, 'GET'
+ = restful_submit_tag 'Remove failed', 'remove_failed',
remove_failed_resources_instances_path, 'GET'
+
+ %p
+ Select:
+ = link_to "All", params.merge(:select => 'all')
+ %span> ,
+ = link_to "None", params.merge(:select => 'none')
+ %table
+ = sortable_table_header @header
+ - @instances.each do |inst|
+ %tr
+ %td
+ - selected = params[:select] == 'all'
+ %input{:name => 'instance_selected[]', :type =>
'checkbox', :value => inst.id, :id =>
"instance_checkbox_#{inst.id}", :checked => selected }
+ = link_to inst.name, resources_instance_path(inst)
+ %td= inst.state
+ %td= inst.template ? inst.template.name : "#{inst.assembly.name}
(assembly)"
+ %td= inst.public_addresses
+ %td= inst.provider_account ? inst.provider_account.provider.name : ''
+ %td= owner_name(inst)
diff --git a/src/app/views/instances/_permissions.haml
b/src/app/views/instances/_permissions.haml
new file mode 100644
index 0000000..02da418
--- /dev/null
+++ b/src/app/views/instances/_permissions.haml
@@ -0,0 +1,3 @@
+%h3
+ Permissions for
+ = @instance.name
diff --git a/src/app/views/instances/_properties.haml
b/src/app/views/instances/_properties.haml
new file mode 100644
index 0000000..2d93dbf
--- /dev/null
+++ b/src/app/views/instances/_properties.haml
@@ -0,0 +1,65 @@
+%h3
+ Properties for
+ = @instance.name
+%ul
+ %li
+ = label_tag :name, 'Name'
+ %span= @instance.name
+ %li
+ = label_tag :status, 'Status'
+ %span= @instance.state
+ %li
+ = label_tag :public_addresses, 'Public Addresses'
+ %span= @instance.public_addresses
+ %li
+ = label_tag :private_addresses, 'Private Addresses'
+ %span= @instance.private_addresses
+ - if @instance.template
+ %li
+ = label_tag :operating_system, 'Operating system'
+ %span= "#{(a)instance.template.xml.platform}
#{(a)instance.template.xml.platform_version}"
+ %li
+ = label_tag :base_template, 'Base Template'
+ %span= @instance.template.name
+ - else
+ %li
+ = label_tag :assembly, 'Assembly'
+ %span= @instance.assembly.name
+ %li
+ = label_tag :provider, 'Provider'
+ %span= @instance.provider_account.provider.name if @instance.provider_account
+ %li
+ = label_tag :architecture, 'Architecture'
+ %span= @instance.hardware_profile.architecture.value
+ %li
+ = label_tag :memory, 'Memory'
+ %span= @instance.hardware_profile.memory.value
+ %li
+ = label_tag :storage, 'Storage'
+ %span= @instance.hardware_profile.storage.value
+ %li
+ = label_tag :instantiation_time, 'Instantiation Time'
+ %span= @instance.created_at.strftime("%d-%b-%Y %H:%M:%S")
+ %li
+ = label_tag :uptime, 'Uptime'
+ %span= @instance.total_state_time((a)instance.state)
+ %li
+ = label_tag :current_alerts, 'Current Alerts'
+ %span= 0
+ %li
+ = label_tag :console_connection, 'Console Connection'
+ %span= 'via SSH'
+ - if @instance.instance_key
+ %li
+ = label_tag :instance_key, 'SSH key'
+ %span= link_to("Download", key_resources_instance_path(@instance))
+ %li
+ = label_tag :owner, 'Owner'
+ %span= "#{(a)instance.owner.first_name} #{(a)instance.owner.last_name}"
+ %li
+ = label_tag :shared_to, 'Shared to'
+ %span= "N/A"
+ - if @instance.state == Instance::STATE_ERROR
+ %li
+ = label_tag :error, 'Error'
+ %span= @instance.last_error
diff --git a/src/app/views/instances/index.haml b/src/app/views/instances/index.haml
new file mode 100644
index 0000000..62ccbc6
--- /dev/null
+++ b/src/app/views/instances/index.haml
@@ -0,0 +1,2 @@
+- content_for :list do
+ = render :partial => 'list'
diff --git a/src/app/views/instances/new.haml b/src/app/views/instances/new.haml
new file mode 100644
index 0000000..7839ba9
--- /dev/null
+++ b/src/app/views/instances/new.haml
@@ -0,0 +1,27 @@
+= error_messages_for 'instance'
+%h2 Launch instance
+- form_for @instance, :url => resources_instances_path do
+ = hidden_field :instance, :template_id
+ %ul
+ %li
+ = label :instance, :name
+ = text_field :instance, :name
+ %li
+ = label :instance, :template
+ = text_field_tag :template_name, @instance.template ? @instance.template.name :
'', :disabled => true
+ %li
+ = label :instance, :pool
+ - if @instance.pool
+ = text_field_tag :pool_name, @instance.pool.name, :disabled => true
+ = hidden_field :instance, :pool_id
+ - else
+ = select :instance, :pool_id, @pools.map {|p| [ p.name, p.id ]}, { :include_blank
=> true }
+ %li
+ = label :instance, :hardware_profile
+ = select :instance, :hardware_profile_id, @hardware_profiles.map {|p| [ p.name,
p.id ]}, { :include_blank => false }
+ %li
+ = label :instance, :frontend_realm
+ = select :instance, :frontend_realm_id, @realms.map {|r| [ r.name, r.id ]}, {
:include_blank => true }
+
+ = submit_tag 'Cancel', :name => 'cancel'
+ = submit_tag 'Launch', :name => 'launch'
diff --git a/src/app/views/instances/select_template.haml
b/src/app/views/instances/select_template.haml
new file mode 100644
index 0000000..a2dfbeb
--- /dev/null
+++ b/src/app/views/instances/select_template.haml
@@ -0,0 +1,19 @@
+%h3 Show Templates
+%hr
+%ul
+ - @templates.each do |tpl|
+ %li
+ - form_tag new_resources_instance_path do
+ = hidden_field :instance, :template_id, :value => tpl.id
+ - if tpl.platform != "unknown"
+ = image_tag "platform_#{tpl.platform}.png", :size =>
"32x32", :alt => tpl.platform
+ %h3= tpl.name
+ %p= tpl.summary
+ %p
+ %label Group:
+ System
+ %label Version:
+ 2.5
+ = submit_tag 'Launch', :name => 'launch'
+= will_paginate(@templates)
+= page_entries_info(@templates)
diff --git a/src/app/views/instances/show.haml b/src/app/views/instances/show.haml
new file mode 100644
index 0000000..05eeedd
--- /dev/null
+++ b/src/app/views/instances/show.haml
@@ -0,0 +1,5 @@
+- content_for :list do
+ = render :partial => 'list'
+
+- content_for :details do
+ = render :partial => 'layouts/details_pane'
diff --git a/src/app/views/pool_families/_form.haml
b/src/app/views/pool_families/_form.haml
new file mode 100644
index 0000000..e493931
--- /dev/null
+++ b/src/app/views/pool_families/_form.haml
@@ -0,0 +1,12 @@
+= error_messages_for :pool_family
+= form.error_message_on :name, 'Name '
+%fieldset.clear
+ = form.label :name,'Pool Family Name :'
+ = form.text_field :name, :title => 'pool_family_name', :value =>
@pool_family.name, :class => "clear grid_4 alpha"
+%fieldset.clear
+ - form.fields_for :quota do |quota_form|
+ %fieldset.clear
+ = quota_form.label :maximum_running_instances, t(:maximum_running_instances),
:class => "alpha grid_3"
+ = quota_form.text_field :maximum_running_instances
+%fieldset.clear
+ = form.submit "Save", :class => "submit formbutton"
diff --git a/src/app/views/pool_families/_history.haml
b/src/app/views/pool_families/_history.haml
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/views/pool_families/_list.haml
b/src/app/views/pool_families/_list.haml
new file mode 100644
index 0000000..323b6b7
--- /dev/null
+++ b/src/app/views/pool_families/_list.haml
@@ -0,0 +1,23 @@
+- form_tag do
+ = link_to "Create", new_admin_pool_family_path, :class =>
"button"
+ = restful_submit_tag "Delete", 'destroy',
multi_destroy_admin_pool_families_path, 'DELETE', :id =>
'delete_button'
+
+ %p
+ Select:
+ = link_to "All", @url_params.merge(:select => 'all')
+ %span> ,
+ = link_to "None", @url_params.merge(:select => 'none')
+
+ %table#pool_families_table
+ = sortable_table_header @header
+ - unless @pool_families.blank?
+ - @pool_families.each do |pool_family|
+ %tr
+ %td
+ - selected = @url_params[:select] == 'all'
+ %input{:name => "pool_family_selected[]", :type =>
"checkbox", :value => pool_family.id, :id =>
"pool_family_checkbox_#{pool_family.id}", :checked => selected }
+ = link_to pool_family.name, admin_pool_family_path(pool_family)
+ %td
+ = pool_family.quota.maximum_running_instances or 'unlimited'
+ %td
+ = "#{pool_family.quota.percentage_used} %"
diff --git a/src/app/views/pool_families/_permissions.haml
b/src/app/views/pool_families/_permissions.haml
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/views/pool_families/_pools.haml
b/src/app/views/pool_families/_pools.haml
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/views/pool_families/_properties.haml
b/src/app/views/pool_families/_properties.haml
new file mode 100644
index 0000000..02d197e
--- /dev/null
+++ b/src/app/views/pool_families/_properties.haml
@@ -0,0 +1,4 @@
+%h3
+ Properties for
+ = @pool_family.name
+= link_to "Edit", edit_admin_pool_family_path(@pool_family), {:class =>
'button'}
diff --git a/src/app/views/pool_families/_provider_accounts.haml
b/src/app/views/pool_families/_provider_accounts.haml
new file mode 100644
index 0000000..358e3d2
--- /dev/null
+++ b/src/app/views/pool_families/_provider_accounts.haml
@@ -0,0 +1,25 @@
+%h3
+ Provider Accounts for
+ = @pool_family.name
+
+- unless @pool_family.provider_accounts.blank?
+ - form_tag do
+ = restful_submit_tag "Remove selected", 'destroy',
multi_destroy_provider_accounts_admin_pool_families_path(:pool_family_id =>
@pool_family.id), 'DELETE', :id => 'delete_button'
+ = #submit_tag "Remove selected"
+
+ %table#provider_accounts_table
+ = sortable_table_header @provider_accounts_header
+ - @pool_family.provider_accounts.each do |provider_account|
+ %tr
+ %td
+ - selected = @url_params[:select_provider_accounts] == 'all'
+ %input{:name => "provider_account_selected[]", :type =>
"checkbox", :value => provider_account.id, :id =>
"provider_account_checkbox_#{provider_account.id}", :checked => selected }
+ = provider_account.name
+
+- unless @pool_family.provider_accounts.count == ProviderAccount.all.count
+ - form_for :pool_family, :url => add_provider_account_admin_pool_families_path(:id
=> @pool_family.id) do |f|
+ - unless @pool_family.provider_accounts.blank?
+ = select_tag :provider_account_id, options_for_select(ProviderAccount.find(:all,
:conditions => [ "id NOT IN (?)", @pool_family.provider_account_ids
]).collect{ |pa| [pa.name, pa.id] })
+ - else
+ = select_tag :provider_account_id, options_for_select(ProviderAccount.all.collect{
|pa| [pa.name, pa.id] })
+ = f.submit "Add to #{(a)pool_family.name}"
diff --git a/src/app/views/pool_families/edit.haml
b/src/app/views/pool_families/edit.haml
new file mode 100644
index 0000000..1c09438
--- /dev/null
+++ b/src/app/views/pool_families/edit.haml
@@ -0,0 +1,7 @@
+%h3
+ Editing
+ = @pool_family.name
+ Pool Family
+
+-form_for @pool_family, :url => admin_pool_family_path(@pool_family), :html => {
:method => :put } do |f|
+ = render :partial => 'form', :locals => { :form => f, :cancel_path
=> admin_providers_path }
diff --git a/src/app/views/pool_families/index.haml
b/src/app/views/pool_families/index.haml
new file mode 100644
index 0000000..62ccbc6
--- /dev/null
+++ b/src/app/views/pool_families/index.haml
@@ -0,0 +1,2 @@
+- content_for :list do
+ = render :partial => 'list'
diff --git a/src/app/views/pool_families/new.haml b/src/app/views/pool_families/new.haml
new file mode 100644
index 0000000..7dbac4c
--- /dev/null
+++ b/src/app/views/pool_families/new.haml
@@ -0,0 +1,3 @@
+%h2 Create a new Pool family
+- form_for @pool_family, :url => admin_pool_families_path do |f|
+ = render :partial => "form", :locals => { :form => f, :cancel_path
=> admin_pool_families_path }
diff --git a/src/app/views/pool_families/show.haml
b/src/app/views/pool_families/show.haml
new file mode 100644
index 0000000..0c36221
--- /dev/null
+++ b/src/app/views/pool_families/show.haml
@@ -0,0 +1,5 @@
+- content_for 'list' do
+ = render :partial => 'list'
+
+- content_for 'details' do
+ = render :partial => 'layouts/details_pane'
diff --git a/src/app/views/pools/_deployments.haml
b/src/app/views/pools/_deployments.haml
new file mode 100644
index 0000000..497bf09
--- /dev/null
+++ b/src/app/views/pools/_deployments.haml
@@ -0,0 +1,3 @@
+%h3
+ Deployments for
+ = @pool.name
diff --git a/src/app/views/pools/_history.haml b/src/app/views/pools/_history.haml
new file mode 100644
index 0000000..4769d92
--- /dev/null
+++ b/src/app/views/pools/_history.haml
@@ -0,0 +1,3 @@
+%h3
+ History for
+ = @pool.name
diff --git a/src/app/views/pools/_instances.haml b/src/app/views/pools/_instances.haml
new file mode 100644
index 0000000..260a9f8
--- /dev/null
+++ b/src/app/views/pools/_instances.haml
@@ -0,0 +1,28 @@
+- form_tag do
+ = restful_submit_tag 'Stop', 'stop',
multi_stop_resources_instances_path, 'GET'
+ Show only
+ = hidden_field_tag 'details_tab', 'instances'
+ = select '', 'state', Instance::STATES, { :include_blank => true,
:selected => params[:state] }
+ instances
+ = restful_submit_tag "Filter", 'show', resources_pool_path,
'GET', :id => 'filter_button'
+
+ %table
+ %thead
+ %td Name
+ %td Assembly
+ %td Deployment
+ %td Since
+ %td State
+ - @instances.each do |instance|
+ %tr
+ %td
+ %input{:name => 'instance_selected[]', :type =>
'checkbox', :value => instance.id, :id =>
"instance_checkbox_#{instance.id}" }
+ = link_to instance.name, resources_instance_path(instance)
+ %td
+ = instance.assembly.present? ? link_to((instance.assembly.name),
image_factory_assembly_path(instance.assembly)) : '—'
+ %td
+ = instance.deployment.present? ? link_to((instance.deployment.name),
resources_deployment_path(instance.deployment)) : '—'
+ %td
+ = instance.created_at.to_s
+ %td
+ = instance.state
\ No newline at end of file
diff --git a/src/app/views/pools/_list.haml b/src/app/views/pools/_list.haml
new file mode 100644
index 0000000..c8083b7
--- /dev/null
+++ b/src/app/views/pools/_list.haml
@@ -0,0 +1,39 @@
+- form_tag do
+ = link_to "New Pool", new_resources_pool_path, { :class =>
'button' }
+ = restful_submit_tag "Destroy", 'destroy',
multi_destroy_resources_pools_path, 'DELETE', :id => 'delete_button'
+ %p
+ Select:
+ = link_to "All", @url_params.merge(:select => 'all')
+ %span> ,
+ = link_to "None", @url_params.merge(:select => 'none')
+ %table#pools_table
+ = sortable_table_header @header
+ - @pools.each do |pool|
+ %tr
+ %td
+ - selected = @url_params[:select] == 'all'
+ %input{:name => "pools_selected[]", :type =>
"checkbox", :value => pool.id, :id =>
"pool_checkbox_#{pool.id}", :checked => selected }
+ = link_to pool.name, resources_pool_path(pool)
+ %td
+ = pool.quota.maximum_running_instances or 'unlimited'
+ %td
+ = pool.quota.percentage_used
+ ='%'
+ %td
+ = pool.pool_family.name
+ %td
+ = pool.enabled
+
+:javascript
+ $(document).ready(function () {
+ $('#delete_button').click(function(e) {
+ if ($("#pools_table input[@type=radio]:checked").length == 0) {
+ alert('Please select any pool to be deleted before clicking Delete
button.');
+ e.preventDefault();
+ } else {
+ if (!confirm("Are you sure you want to delete this pool?")) {
+ e.preventDefault();
+ }
+ }
+ });
+ });
diff --git a/src/app/views/pools/_permissions.haml
b/src/app/views/pools/_permissions.haml
new file mode 100644
index 0000000..fbd252e
--- /dev/null
+++ b/src/app/views/pools/_permissions.haml
@@ -0,0 +1,3 @@
+%h3
+ Permissions for
+ = @pool.name
diff --git a/src/app/views/pools/_properties.haml b/src/app/views/pools/_properties.haml
new file mode 100644
index 0000000..066a491
--- /dev/null
+++ b/src/app/views/pools/_properties.haml
@@ -0,0 +1,4 @@
+%h3
+ Properties for
+ = @pool.name
+= link_to "Edit", edit_resources_pool_path(@pool), { :class =>
'button' }
diff --git a/src/app/views/pools/edit.haml b/src/app/views/pools/edit.haml
new file mode 100644
index 0000000..d4c511f
--- /dev/null
+++ b/src/app/views/pools/edit.haml
@@ -0,0 +1,30 @@
+= error_messages_for :pool
+%h1
+ Edit pool
+ = @pool.name
+
+- form_for [:resources, @pool] do |form|
+ %fieldset
+ = form.label :name, "Name:", :class => "grid_2 alpha"
+ = form.text_field :name
+ %fieldset
+ = form.label :pool_family_id, "Pool Family:", :class => "grid_2
alpha"
+ = form.collection_select :pool_family_id, PoolFamily.all, :id, :name
+ %fieldset
+ = label_tag "Quota"
+ = text_field :quota, :maximum_running_instances, :title =>
t('provider_accounts.form.quota_instances'), :value =>
@quota.maximum_running_instances || "unlimited", :id =>
"quota_instances", :class => "grid_3 omega"
+ (
+ %button.linkbutton.nospace{ :type => 'button', :onclick =>
"set_unlimited_quota(\"quota_instances\");" }<>
+ = t('provider_accounts.form.unlimited_quota')
+ )
+ %fieldset
+ = form.label :enabled, "Enabled:",{ :class => "grid_2 alpha"
}
+ = form.check_box :enabled
+ %fieldset.clear
+
+ = form.submit "Save"
+
+:javascript
+ function set_unlimited_quota(elem_id) {
+ $("#" + elem_id)[0].value = "unlimited";
+ }
diff --git a/src/app/views/pools/index.haml b/src/app/views/pools/index.haml
new file mode 100644
index 0000000..62ccbc6
--- /dev/null
+++ b/src/app/views/pools/index.haml
@@ -0,0 +1,2 @@
+- content_for :list do
+ = render :partial => 'list'
diff --git a/src/app/views/pools/new.haml b/src/app/views/pools/new.haml
new file mode 100644
index 0000000..5c48c9e
--- /dev/null
+++ b/src/app/views/pools/new.haml
@@ -0,0 +1,27 @@
+= error_messages_for :pool
+%h1 Create a new Pool
+- form_for @pool, :url => resources_pools_path do |form|
+ %fieldset
+ = form.label :name, "Name:", :class => "grid_2 alpha"
+ = form.text_field :name
+ %fieldset
+ = form.label :pool_family_id, "Pool Family:", :class => "grid_2
alpha"
+ = form.collection_select :pool_family_id, PoolFamily.all, :id, :name
+ %fieldset
+ = label_tag "Quota:"
+ = text_field :quota, :maximum_running_instances, :title =>
t('provider_accounts.form.quota_instances'), :value =>
@quota.maximum_running_instances || "unlimited", :id =>
"quota_instances", :class => "grid_3 omega"
+ (
+ %button.linkbutton.nospace{ :type => 'button', :onclick =>
"set_unlimited_quota(\"quota_instances\");" }<>
+ = t('provider_accounts.form.unlimited_quota')
+ )
+ %fieldset
+ = form.label :enabled, "Enabled:",{ :class => "grid_2 alpha"
}
+ = form.check_box :enabled
+ %fieldset.clear
+
+ = form.submit "Save"
+
+:javascript
+ function set_unlimited_quota(elem_id) {
+ $("#" + elem_id)[0].value = "unlimited";
+ }
diff --git a/src/app/views/pools/show.haml b/src/app/views/pools/show.haml
new file mode 100644
index 0000000..05eeedd
--- /dev/null
+++ b/src/app/views/pools/show.haml
@@ -0,0 +1,5 @@
+- content_for :list do
+ = render :partial => 'list'
+
+- content_for :details do
+ = render :partial => 'layouts/details_pane'
diff --git a/src/app/views/provider_accounts/_credentials.haml
b/src/app/views/provider_accounts/_credentials.haml
new file mode 100644
index 0000000..9d31c8d
--- /dev/null
+++ b/src/app/views/provider_accounts/_credentials.haml
@@ -0,0 +1,3 @@
+%h3
+ Credentials for
+ = @account.name
diff --git a/src/app/views/provider_accounts/_history.haml
b/src/app/views/provider_accounts/_history.haml
new file mode 100644
index 0000000..429320a
--- /dev/null
+++ b/src/app/views/provider_accounts/_history.haml
@@ -0,0 +1,3 @@
+%h3
+ History for
+ = @account.name
diff --git a/src/app/views/provider_accounts/_list.haml
b/src/app/views/provider_accounts/_list.haml
new file mode 100644
index 0000000..b431f9b
--- /dev/null
+++ b/src/app/views/provider_accounts/_list.haml
@@ -0,0 +1,20 @@
+- form_tag do
+ = link_to "New Account", new_admin_provider_account_path, :class =>
'button'
+ = restful_submit_tag "Delete", "delete",
multi_destroy_admin_provider_accounts_path, 'DELETE'
+ %p
+ Select:
+ = link_to "All", @url_params.merge(:select => 'all')
+ %span> ,
+ = link_to "None", @url_params.merge(:select => 'none')
+ %table
+ = sortable_table_header @header
+ - @accounts.each do |account|
+ %tr
+ %td
+ - selected = @url_params[:select] == 'all'
+ %input{:name => 'accounts_selected[]', :type =>
'checkbox', :value => account.id, :id =>
"account_checkbox_#{account.id}", :checked => selected }
+ = link_to account.name, admin_provider_account_path(account)
+ %td
+ =account.credentials_hash['username']
+ %td
+ =account.provider.provider_type.name
diff --git a/src/app/views/provider_accounts/_permissions.haml
b/src/app/views/provider_accounts/_permissions.haml
new file mode 100644
index 0000000..92ad7a5
--- /dev/null
+++ b/src/app/views/provider_accounts/_permissions.haml
@@ -0,0 +1,3 @@
+%h3
+ Permissions for
+ = @account.name
diff --git a/src/app/views/provider_accounts/_properties.haml
b/src/app/views/provider_accounts/_properties.haml
new file mode 100644
index 0000000..27789a1
--- /dev/null
+++ b/src/app/views/provider_accounts/_properties.haml
@@ -0,0 +1,13 @@
+%h3
+ Properties for
+ = @account.name
+%p
+ %label
+ Running instances quota:
+ = @account.quota.maximum_running_instances or 'unlimited'
+%p
+ %label
+ Account ID:
+ = @account.credentials_hash['account_number']
+= link_to "Edit", edit_admin_provider_account_path(@account), { :class =>
'button' }
+= link_to "Test", admin_provider_account_path(@account, {:test_account =>
true}), { :class => 'button' }
diff --git a/src/app/views/provider_accounts/_provider_form.haml
b/src/app/views/provider_accounts/_provider_form.haml
new file mode 100644
index 0000000..182fc36
--- /dev/null
+++ b/src/app/views/provider_accounts/_provider_form.haml
@@ -0,0 +1,27 @@
+%fieldset.clear
+ = label :provider_account, "Account name:"
+ = text_field :provider_account, :label
+- CredentialDefinition::CREDENTIAL_DEFINITIONS_ORDER.each do |cred_order|
+ - @provider_account.all_credentials((a)selected_provider).each do |cred|
+ - if cred_order == cred.credential_definition.name
+ %fieldset.clear
+ = label_tag cred.credential_definition.label
+ - if cred.credential_definition.input_type == "password"
+ = password_field_tag
"provider_account[credentials_hash][#{cred.credential_definition.name}]",
cred.value
+ - elsif cred.credential_definition.input_type == "file"
+ = file_field_tag
"provider_account[credentials_hash][#{cred.credential_definition.name}]", :value
=> cred.value
+ - else
+ = text_field_tag
"provider_account[credentials_hash][#{cred.credential_definition.name}]",
cred.value
+
+= label_tag "Quota"
+= text_field :quota, :maximum_running_instances, :title =>
t('provider_accounts.form.quota_instances'), :value =>
@quota.maximum_running_instances || "unlimited", :id =>
"quota_instances", :class => "grid_3 omega"
+(
+%button.linkbutton.nospace{ :type => 'button', :onclick =>
"set_unlimited_quota(\"quota_instances\");" }<>
+ = t('provider_accounts.form.unlimited_quota')
+)
+%fieldset.clear
+
+:javascript
+ function set_unlimited_quota(elem_id) {
+ $("#" + elem_id)[0].value = "unlimited";
+ }
diff --git a/src/app/views/provider_accounts/_provider_selection.haml
b/src/app/views/provider_accounts/_provider_selection.haml
new file mode 100644
index 0000000..2095fde
--- /dev/null
+++ b/src/app/views/provider_accounts/_provider_selection.haml
@@ -0,0 +1,25 @@
+%fieldset#provider_type.clear
+ = label_tag "Provider: "
+ = select(:provider_account, :provider_id, options_for_select((a)providers.map{ |p|
[p.name, p.id] }, :selected => @selected_provider.id))
+ = restful_submit_tag "Choose",
'set_selected_provider',set_selected_provider_admin_provider_accounts_path,
'GET', :class => 'button'
+ = label_tag "Cloud type: "
+ = @selected_provider.provider_type.name
+ - unless @selected_provider.provider_type.codename.nil?
+ = render :partial => "provider_form", :locals => { :provider_type
=> @selected_provider.provider_type}
+ - else
+ = flash.now[:warning] = "You don't have any provider yet"
+
+:javascript
+ $(document).ready(function(){
+ var selected_provider;
+ $("#provider_account_provider_id").change(function()
+ {
+ selected_provider = $("option:selected").attr('value');
+ $.get("#{set_selected_provider_admin_provider_accounts_url}",
{'provider_account[provider_id]':selected_provider},
+ function(result) {
+ $("#provider_type").html(result);
+ }
+ );
+
+ });
+ });
diff --git a/src/app/views/provider_accounts/_rhevm.haml
b/src/app/views/provider_accounts/_rhevm.haml
new file mode 100644
index 0000000..dd86c72
--- /dev/null
+++ b/src/app/views/provider_accounts/_rhevm.haml
@@ -0,0 +1,2 @@
+%fieldset.clear
+ Login form for RHEV-M (not implemented yet)
diff --git a/src/app/views/provider_accounts/edit.haml
b/src/app/views/provider_accounts/edit.haml
new file mode 100644
index 0000000..9da4d1c
--- /dev/null
+++ b/src/app/views/provider_accounts/edit.haml
@@ -0,0 +1,14 @@
+#details.grid_13
+ = error_messages_for :provider_account
+ %h2
+ = t('provider_accounts.edit.edit_provider_account')
+ - form_tag(admin_provider_account_path, { :method => :put, :multipart => true })
do
+ = render :partial => 'provider_selection'
+ %fieldset.clearfix
+ .grid_13.alpha.omega
+ = submit_tag t(:edit), :class => "ra nomargin dialogbutton"
+ %section
+ %p.requirement
+ %span.required *
+ \-
+ = t('provider_accounts.edit.required_field')
diff --git a/src/app/views/provider_accounts/index.haml
b/src/app/views/provider_accounts/index.haml
new file mode 100644
index 0000000..62ccbc6
--- /dev/null
+++ b/src/app/views/provider_accounts/index.haml
@@ -0,0 +1,2 @@
+- content_for :list do
+ = render :partial => 'list'
diff --git a/src/app/views/provider_accounts/new.haml
b/src/app/views/provider_accounts/new.haml
new file mode 100644
index 0000000..f1a5e2a
--- /dev/null
+++ b/src/app/views/provider_accounts/new.haml
@@ -0,0 +1,18 @@
+#details.grid_13
+ = error_messages_for :provider_account
+ %h2
+ = t('provider_accounts.new.new_provider_account')
+ %label{ :for => :provider_id }
+ Provider
+ %fieldset.clear
+ - unless @providers.empty?
+ - form_for(@provider_account, :url => admin_provider_accounts_path, :html =>
{:multipart => true}) do |f|
+ = render :partial => 'provider_selection'
+ %fieldset.clearfix
+ .grid_13.alpha.omega
+ = f.submit t(:add), :class => "ra nomargin dialogbutton"
+ %section
+ %p.requirement
+ %span.required *
+ \-
+ = t('provider_accounts.new.required_field')
diff --git a/src/app/views/provider_accounts/show.haml
b/src/app/views/provider_accounts/show.haml
new file mode 100644
index 0000000..05eeedd
--- /dev/null
+++ b/src/app/views/provider_accounts/show.haml
@@ -0,0 +1,5 @@
+- content_for :list do
+ = render :partial => 'list'
+
+- content_for :details do
+ = render :partial => 'layouts/details_pane'
diff --git a/src/app/views/providers/_form.haml b/src/app/views/providers/_form.haml
new file mode 100644
index 0000000..b400d00
--- /dev/null
+++ b/src/app/views/providers/_form.haml
@@ -0,0 +1,15 @@
+= form.error_message_on :name, 'Name '
+= form.error_message_on :url, 'URL '
+= form.error_message_on :provider_type_id
+%fieldset.clear
+ = form.label :name,'Provider name :'
+ = form.text_field :name, :title => 'provider_name', :value =>
@provider.name, :class => "clear grid_4 alpha"
+%fieldset.clear
+ = form.label :url, 'Provider URL :'
+ = form.text_field :url, :title => 'provider_url', :value =>
@provider.url, :class => "grid_5"
+%fieldset.clear
+ = form.label :provider_type
+ = form.select(:provider_type_id, ProviderType.all.collect {|provider_type|
[provider_type.name,provider_type.id] }, :prompt => "Select type of
provider")
+
+%fieldset.clear
+ = form.submit "Save", :class => "submit formbutton"
diff --git a/src/app/views/providers/_history.haml
b/src/app/views/providers/_history.haml
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/views/providers/_hw_profiles.haml
b/src/app/views/providers/_hw_profiles.haml
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/views/providers/_list.haml b/src/app/views/providers/_list.haml
new file mode 100644
index 0000000..7de6e32
--- /dev/null
+++ b/src/app/views/providers/_list.haml
@@ -0,0 +1,20 @@
+- form_tag do
+ = link_to "Create", new_admin_provider_url, :class => "button"
+ = restful_submit_tag "Delete", 'destroy',
multi_destroy_admin_providers_path, 'DELETE', :id => 'delete_button'
+
+ %p
+ Select:
+ = link_to "All", @url_params.merge(:select => 'all')
+ %span> ,
+ = link_to "None", @url_params.merge(:select => 'none')
+
+ %table#providers_table
+ = sortable_table_header @header
+ -(a)providers.each do |provider|
+ %tr
+ %td
+ - selected = @url_params[:select] == 'all'
+ %input{:name => "provider_selected[]", :type =>
"checkbox", :value => provider.id, :id =>
"provider_checkbox_#{provider.id}", :checked => selected }
+ = link_to provider.name, admin_provider_path(provider)
+ %td= provider.url
+ %td= provider.provider_type.name
diff --git a/src/app/views/providers/_permissions.haml
b/src/app/views/providers/_permissions.haml
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/views/providers/_properties.haml
b/src/app/views/providers/_properties.haml
new file mode 100644
index 0000000..044895a
--- /dev/null
+++ b/src/app/views/providers/_properties.haml
@@ -0,0 +1,5 @@
+%h3
+ Properties for
+ = @provider.name
+= link_to "Edit", edit_admin_provider_path(@provider), {:class =>
'button'}
+= link_to "Test", admin_provider_path(@provider, {:test_provider => true}),
{ :class => 'button' }
diff --git a/src/app/views/providers/_provider_accounts.haml
b/src/app/views/providers/_provider_accounts.haml
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/views/providers/_realms.haml b/src/app/views/providers/_realms.haml
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/views/providers/_services.haml
b/src/app/views/providers/_services.haml
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/views/providers/edit.haml b/src/app/views/providers/edit.haml
new file mode 100644
index 0000000..66864e9
--- /dev/null
+++ b/src/app/views/providers/edit.haml
@@ -0,0 +1,7 @@
+%h3
+ Editing
+ = @provider.name
+ Provider
+
+-form_for @provider, :url => admin_provider_path(@provider), :html => { :method
=> :put } do |f|
+ = render :partial => 'form', :locals => { :form => f, :cancel_path
=> admin_providers_path }
diff --git a/src/app/views/providers/index.haml b/src/app/views/providers/index.haml
new file mode 100644
index 0000000..62ccbc6
--- /dev/null
+++ b/src/app/views/providers/index.haml
@@ -0,0 +1,2 @@
+- content_for :list do
+ = render :partial => 'list'
diff --git a/src/app/views/providers/new.haml b/src/app/views/providers/new.haml
new file mode 100644
index 0000000..516fdb3
--- /dev/null
+++ b/src/app/views/providers/new.haml
@@ -0,0 +1,3 @@
+%h2 Create a new Provider
+- form_for @provider, :url => admin_providers_path do |f|
+ = render :partial => "form", :locals => { :form => f, :cancel_path
=> admin_providers_path }
diff --git a/src/app/views/providers/show.haml b/src/app/views/providers/show.haml
new file mode 100644
index 0000000..0c36221
--- /dev/null
+++ b/src/app/views/providers/show.haml
@@ -0,0 +1,5 @@
+- content_for 'list' do
+ = render :partial => 'list'
+
+- content_for 'details' do
+ = render :partial => 'layouts/details_pane'
diff --git a/src/app/views/realm_mappings/new.haml
b/src/app/views/realm_mappings/new.haml
new file mode 100644
index 0000000..0861199
--- /dev/null
+++ b/src/app/views/realm_mappings/new.haml
@@ -0,0 +1,10 @@
+= error_messages_for 'realm_target'
+%h2 Create a new Realm Mapping
+- form_for @realm_target, :url => admin_realm_mappings_path do |f|
+ = f.hidden_field :frontend_realm_id
+ = f.hidden_field :realm_or_provider_type
+
+ - label_method = @realm_target.realm_or_provider_type == 'Realm' ?
'name_with_provider' : 'name'
+ = select_tag 'realm_backend_target[realm_or_provider_id]',
options_from_collection_for_select(@backend_targets, 'id', label_method)
+ %fieldset.clear
+ = f.submit "Save", :class => "submit formbutton"
diff --git a/src/app/views/realm_mappings/show.haml
b/src/app/views/realm_mappings/show.haml
new file mode 100644
index 0000000..0c36221
--- /dev/null
+++ b/src/app/views/realm_mappings/show.haml
@@ -0,0 +1,5 @@
+- content_for 'list' do
+ = render :partial => 'list'
+
+- content_for 'details' do
+ = render :partial => 'layouts/details_pane'
diff --git a/src/app/views/realms/_form.haml b/src/app/views/realms/_form.haml
new file mode 100644
index 0000000..8c49d63
--- /dev/null
+++ b/src/app/views/realms/_form.haml
@@ -0,0 +1,6 @@
+= form.error_messages
+%fieldset.clear
+ = form.label :name,'Realm Name :'
+ = form.text_field :name, :title => 'realm_name', :value => @realm.name,
:class => "clear grid_4 alpha"
+%fieldset.clear
+ = form.submit "Save", :class => "submit formbutton"
diff --git a/src/app/views/realms/_list.haml b/src/app/views/realms/_list.haml
new file mode 100644
index 0000000..367dc14
--- /dev/null
+++ b/src/app/views/realms/_list.haml
@@ -0,0 +1,19 @@
+- form_tag do
+ = link_to "Create", new_admin_realm_path, :class => "button"
+ = restful_submit_tag "Delete", 'destroy',
multi_destroy_admin_realms_path, 'DELETE', :id => 'delete_button'
+
+ %p
+ Select:
+ = link_to "All", @url_params.merge(:select => 'all')
+ %span> ,
+ = link_to "None", @url_params.merge(:select => 'none')
+
+ %table#realms_table
+ = sortable_table_header @header
+ - unless @realms.blank?
+ - @realms.each do |realm|
+ %tr
+ %td
+ - selected = @url_params[:select] == 'all'
+ %input{:name => "id[]", :type => "checkbox", :value
=> realm.id, :id => "realm_id_#{realm.id}", :checked => selected }
+ = link_to realm.name, admin_realm_path(realm)
diff --git a/src/app/views/realms/_mapping.haml b/src/app/views/realms/_mapping.haml
new file mode 100644
index 0000000..66b278c
--- /dev/null
+++ b/src/app/views/realms/_mapping.haml
@@ -0,0 +1,20 @@
+- form_tag do
+ = link_to "Add mapping to realm",
new_admin_realm_mapping_path(:frontend_realm_id => @realm.id, :realm_or_provider_type
=> 'Realm'), :class => "button"
+ = link_to "Add mapping to provider",
new_admin_realm_mapping_path(:frontend_realm_id => @realm.id, :realm_or_provider_type
=> 'Provider'), :class => "button"
+ = restful_submit_tag "Delete", 'destroy',
multi_destroy_admin_realm_mappings_path(:frontend_realm_id => @realm.id),
'DELETE', :id => 'delete_button'
+
+ - unless @backend_provider_targets.empty?
+ %h2 Realm '#{(a)realm.name}' is mapped to providers:
+ %ul
+ - @backend_provider_targets.each do |backend|
+ %li
+ %input{:name => "id[]", :type => "checkbox", :value
=> backend.id, :id => "backend_id_#{backend.id}"}
+ = backend.realm_or_provider.name
+
+ - unless @backend_realm_targets.empty?
+ %h2 Realm '#{(a)realm.name}' is mapped to realms:
+ %ul
+ - @backend_realm_targets.each do |backend|
+ %li
+ %input{:name => "id[]", :type => "checkbox", :value
=> backend.id, :id => "backend_id_#{backend.id}"}
+ = backend.realm_or_provider.name
diff --git a/src/app/views/realms/_properties.haml
b/src/app/views/realms/_properties.haml
new file mode 100644
index 0000000..8d5b66d
--- /dev/null
+++ b/src/app/views/realms/_properties.haml
@@ -0,0 +1,3 @@
+.grid_13
+ %h2 #{(a)realm.name}
+ = link_to t(:edit), edit_admin_realm_path(@realm), :class => 'button
formbutton'
diff --git a/src/app/views/realms/edit.haml b/src/app/views/realms/edit.haml
new file mode 100644
index 0000000..a0aa97f
--- /dev/null
+++ b/src/app/views/realms/edit.haml
@@ -0,0 +1,4 @@
+%h2 Editing Realm: #{(a)realm.name}
+
+- form_for @realm, :url => admin_realm_path(@realm), :html => { :method => :put
} do |f|
+ = render :partial => "form", :locals => { :form => f }
diff --git a/src/app/views/realms/index.haml b/src/app/views/realms/index.haml
new file mode 100644
index 0000000..62ccbc6
--- /dev/null
+++ b/src/app/views/realms/index.haml
@@ -0,0 +1,2 @@
+- content_for :list do
+ = render :partial => 'list'
diff --git a/src/app/views/realms/new.haml b/src/app/views/realms/new.haml
new file mode 100644
index 0000000..c95a306
--- /dev/null
+++ b/src/app/views/realms/new.haml
@@ -0,0 +1,3 @@
+%h2 Create a new Realm
+- form_for @realm, :url => admin_realms_path do |f|
+ = render :partial => "form", :locals => { :form => f, :cancel_path
=> admin_realms_path }
diff --git a/src/app/views/realms/show.haml b/src/app/views/realms/show.haml
new file mode 100644
index 0000000..0c36221
--- /dev/null
+++ b/src/app/views/realms/show.haml
@@ -0,0 +1,5 @@
+- content_for 'list' do
+ = render :partial => 'list'
+
+- content_for 'details' do
+ = render :partial => 'layouts/details_pane'
diff --git a/src/app/views/resources/deployments/_history.haml
b/src/app/views/resources/deployments/_history.haml
deleted file mode 100644
index 9f4a57e..0000000
--- a/src/app/views/resources/deployments/_history.haml
+++ /dev/null
@@ -1 +0,0 @@
-%h3 List of deployment events
diff --git a/src/app/views/resources/deployments/_instances.haml
b/src/app/views/resources/deployments/_instances.haml
deleted file mode 100644
index 2ac1792..0000000
--- a/src/app/views/resources/deployments/_instances.haml
+++ /dev/null
@@ -1,2 +0,0 @@
-%h3 List Instances for Deployment
-%h3 "Expand" button shifts list view to show the Instance list
diff --git a/src/app/views/resources/deployments/_list.haml
b/src/app/views/resources/deployments/_list.haml
deleted file mode 100644
index 7b80677..0000000
--- a/src/app/views/resources/deployments/_list.haml
+++ /dev/null
@@ -1,35 +0,0 @@
-- form_tag do
- #object-actions
- = restful_submit_tag "Start", "start",
resources_deployments_path, "PUT"
- = restful_submit_tag "Stop", "stop",
multi_stop_resources_deployments_path, "GET"
- = restful_submit_tag "Launch new", "launch_new",
launch_new_resources_deployments_path, "GET"
- = restful_submit_tag "Delete", "delete",
resources_deployments_path, "DELETE"
-
- #search-actions
- = restful_submit_tag "Save Search", "save_search",
resources_deployments_path, "PUT"
- = restful_submit_tag "Save Selection", "save_selection",
resources_deployments_path, "PUT"
- = restful_submit_tag "Export to File", "export",
resources_deployments_path, "PUT"
-
- %p
- Select:
- = link_to "All", @url_params.merge(:select => 'all')
- %span> ,
- = link_to "None", @url_params.merge(:select => 'none')
-
- %table#deployments_table
- = sortable_table_header @header
- - @deployments.each do |deployment|
- %tr
- %td
- - selected = @url_params[:select] == 'all'
- %input{:name => "deployments_selected[]", :type =>
"checkbox", :value => deployment.id, :id =>
"deployment_checkbox_#{deployment.id}", :checked => selected }
- %td
- = link_to deployment.name, resources_deployment_path(deployment)
- %td
- = link_to deployment.deployable.name,
image_factory_deployable_path(deployment.deployable)
- %td
- = deployment.owner.login
- %td
- = deployment.created_at
- %td
- = link_to deployment.pool.name, resources_pool_path(deployment.pool)
diff --git a/src/app/views/resources/deployments/_permissions.haml
b/src/app/views/resources/deployments/_permissions.haml
deleted file mode 100644
index 1784789..0000000
--- a/src/app/views/resources/deployments/_permissions.haml
+++ /dev/null
@@ -1,2 +0,0 @@
-%h3 Users and roles they are in for this Deployment
-%h3 Manage permissions on this deployment (if you have permissions to do so)
diff --git a/src/app/views/resources/deployments/_properties.haml
b/src/app/views/resources/deployments/_properties.haml
deleted file mode 100644
index 5d2c584..0000000
--- a/src/app/views/resources/deployments/_properties.haml
+++ /dev/null
@@ -1,2 +0,0 @@
-%h3 Owner Details
-%h3 CDL
diff --git a/src/app/views/resources/deployments/_provider_services.haml
b/src/app/views/resources/deployments/_provider_services.haml
deleted file mode 100644
index 435f470..0000000
--- a/src/app/views/resources/deployments/_provider_services.haml
+++ /dev/null
@@ -1 +0,0 @@
-%h3 List of services required by deployment
diff --git a/src/app/views/resources/deployments/_required_services.haml
b/src/app/views/resources/deployments/_required_services.haml
deleted file mode 100644
index 30e7601..0000000
--- a/src/app/views/resources/deployments/_required_services.haml
+++ /dev/null
@@ -1 +0,0 @@
-%h3 List of services required by deployment
diff --git a/src/app/views/resources/deployments/index.haml
b/src/app/views/resources/deployments/index.haml
deleted file mode 100644
index d051c94..0000000
--- a/src/app/views/resources/deployments/index.haml
+++ /dev/null
@@ -1,2 +0,0 @@
-- content_for :list do
- = render :partial => 'list'
\ No newline at end of file
diff --git a/src/app/views/resources/deployments/launch_new.haml
b/src/app/views/resources/deployments/launch_new.haml
deleted file mode 100644
index 86cf47f..0000000
--- a/src/app/views/resources/deployments/launch_new.haml
+++ /dev/null
@@ -1,6 +0,0 @@
-%h2 Launch new deployment via
-- form_tag new_resources_deployment_path, :method => :get do
- = label_tag "Deployable:"
- = select_tag :deployable_id,
options_from_collection_for_select(@launchable_deployables, "id",
"name")
- = submit_tag "Launch"
- = link_to "Cancel", resources_deployments_path, :class =>
"button"
diff --git a/src/app/views/resources/deployments/new.haml
b/src/app/views/resources/deployments/new.haml
deleted file mode 100644
index 42e75fe..0000000
--- a/src/app/views/resources/deployments/new.haml
+++ /dev/null
@@ -1,25 +0,0 @@
-= error_messages_for 'deployment'
-%h2 Launch deployable
-- form_for @deployment, :url => resources_deployments_path do
- = hidden_field :deployment, :deployable_id
- %ul
- %li
- = label :deployment, :name
- = text_field :deployment, :name
- %li
- = label :deployment, :pool
- = select :deployment, :pool_id, @pools.map {|p| [ p.name, p.id ]}, { :include_blank
=> true }
- %li
- = label :deployment, :frontend_realm
- = select :deployment, :frontend_realm_id, @realms.map {|r| [ r.name, r.id ]}, {
:include_blank => true }
- %p
- %h3 Assemblies hardware profiles
- %ul
- - @deployment.deployable.assemblies.each do |assembly|
- %li
- - hwprofiles = @hardware_profiles.select {|hwp| hwp.architecture.value ==
assembly.templates.first.architecture}
- = label_tag "hw_profiles[#{assembly.id}]", assembly.name
- = select_tag "hw_profiles[#{assembly.id}]",
options_from_collection_for_select(hwprofiles, 'id', 'name')
-
- = submit_tag 'Cancel', :name => 'cancel'
- = submit_tag 'Launch', :name => 'launch'
diff --git a/src/app/views/resources/deployments/show.haml
b/src/app/views/resources/deployments/show.haml
deleted file mode 100644
index a5a777d..0000000
--- a/src/app/views/resources/deployments/show.haml
+++ /dev/null
@@ -1,5 +0,0 @@
-- content_for :list do
- = render :partial => 'list'
-
-- content_for :details do
- = render :partial => 'layouts/details_pane'
\ No newline at end of file
diff --git a/src/app/views/resources/instances/_can_perform_state_change.xml.haml
b/src/app/views/resources/instances/_can_perform_state_change.xml.haml
deleted file mode 100644
index e20a232..0000000
--- a/src/app/views/resources/instances/_can_perform_state_change.xml.haml
+++ /dev/null
@@ -1,7 +0,0 @@
-%result<
- %action_request<
- =@action_request
- %instance_id<
- =(a)instance.id
- %value<
- =@value
\ No newline at end of file
diff --git a/src/app/views/resources/instances/_history.haml
b/src/app/views/resources/instances/_history.haml
deleted file mode 100644
index 854743e..0000000
--- a/src/app/views/resources/instances/_history.haml
+++ /dev/null
@@ -1,3 +0,0 @@
-%h3
- History for
- = @instance.name
diff --git a/src/app/views/resources/instances/_list.haml
b/src/app/views/resources/instances/_list.haml
deleted file mode 100644
index 7a6cbc4..0000000
--- a/src/app/views/resources/instances/_list.haml
+++ /dev/null
@@ -1,23 +0,0 @@
-- form_tag do
- = restful_submit_tag 'Stop', 'stop',
multi_stop_resources_instances_path, 'GET'
- = restful_submit_tag 'Create', 'new',
select_template_resources_instances_path, 'GET'
- = restful_submit_tag 'Remove failed', 'remove_failed',
remove_failed_resources_instances_path, 'GET'
-
- %p
- Select:
- = link_to "All", params.merge(:select => 'all')
- %span> ,
- = link_to "None", params.merge(:select => 'none')
- %table
- = sortable_table_header @header
- - @instances.each do |inst|
- %tr
- %td
- - selected = params[:select] == 'all'
- %input{:name => 'instance_selected[]', :type =>
'checkbox', :value => inst.id, :id =>
"instance_checkbox_#{inst.id}", :checked => selected }
- = link_to inst.name, resources_instance_path(inst)
- %td= inst.state
- %td= inst.template ? inst.template.name : "#{inst.assembly.name}
(assembly)"
- %td= inst.public_addresses
- %td= inst.provider_account ? inst.provider_account.provider.name : ''
- %td= owner_name(inst)
diff --git a/src/app/views/resources/instances/_permissions.haml
b/src/app/views/resources/instances/_permissions.haml
deleted file mode 100644
index 02da418..0000000
--- a/src/app/views/resources/instances/_permissions.haml
+++ /dev/null
@@ -1,3 +0,0 @@
-%h3
- Permissions for
- = @instance.name
diff --git a/src/app/views/resources/instances/_properties.haml
b/src/app/views/resources/instances/_properties.haml
deleted file mode 100644
index 2d93dbf..0000000
--- a/src/app/views/resources/instances/_properties.haml
+++ /dev/null
@@ -1,65 +0,0 @@
-%h3
- Properties for
- = @instance.name
-%ul
- %li
- = label_tag :name, 'Name'
- %span= @instance.name
- %li
- = label_tag :status, 'Status'
- %span= @instance.state
- %li
- = label_tag :public_addresses, 'Public Addresses'
- %span= @instance.public_addresses
- %li
- = label_tag :private_addresses, 'Private Addresses'
- %span= @instance.private_addresses
- - if @instance.template
- %li
- = label_tag :operating_system, 'Operating system'
- %span= "#{(a)instance.template.xml.platform}
#{(a)instance.template.xml.platform_version}"
- %li
- = label_tag :base_template, 'Base Template'
- %span= @instance.template.name
- - else
- %li
- = label_tag :assembly, 'Assembly'
- %span= @instance.assembly.name
- %li
- = label_tag :provider, 'Provider'
- %span= @instance.provider_account.provider.name if @instance.provider_account
- %li
- = label_tag :architecture, 'Architecture'
- %span= @instance.hardware_profile.architecture.value
- %li
- = label_tag :memory, 'Memory'
- %span= @instance.hardware_profile.memory.value
- %li
- = label_tag :storage, 'Storage'
- %span= @instance.hardware_profile.storage.value
- %li
- = label_tag :instantiation_time, 'Instantiation Time'
- %span= @instance.created_at.strftime("%d-%b-%Y %H:%M:%S")
- %li
- = label_tag :uptime, 'Uptime'
- %span= @instance.total_state_time((a)instance.state)
- %li
- = label_tag :current_alerts, 'Current Alerts'
- %span= 0
- %li
- = label_tag :console_connection, 'Console Connection'
- %span= 'via SSH'
- - if @instance.instance_key
- %li
- = label_tag :instance_key, 'SSH key'
- %span= link_to("Download", key_resources_instance_path(@instance))
- %li
- = label_tag :owner, 'Owner'
- %span= "#{(a)instance.owner.first_name} #{(a)instance.owner.last_name}"
- %li
- = label_tag :shared_to, 'Shared to'
- %span= "N/A"
- - if @instance.state == Instance::STATE_ERROR
- %li
- = label_tag :error, 'Error'
- %span= @instance.last_error
diff --git a/src/app/views/resources/instances/index.haml
b/src/app/views/resources/instances/index.haml
deleted file mode 100644
index 62ccbc6..0000000
--- a/src/app/views/resources/instances/index.haml
+++ /dev/null
@@ -1,2 +0,0 @@
-- content_for :list do
- = render :partial => 'list'
diff --git a/src/app/views/resources/instances/new.haml
b/src/app/views/resources/instances/new.haml
deleted file mode 100644
index 7839ba9..0000000
--- a/src/app/views/resources/instances/new.haml
+++ /dev/null
@@ -1,27 +0,0 @@
-= error_messages_for 'instance'
-%h2 Launch instance
-- form_for @instance, :url => resources_instances_path do
- = hidden_field :instance, :template_id
- %ul
- %li
- = label :instance, :name
- = text_field :instance, :name
- %li
- = label :instance, :template
- = text_field_tag :template_name, @instance.template ? @instance.template.name :
'', :disabled => true
- %li
- = label :instance, :pool
- - if @instance.pool
- = text_field_tag :pool_name, @instance.pool.name, :disabled => true
- = hidden_field :instance, :pool_id
- - else
- = select :instance, :pool_id, @pools.map {|p| [ p.name, p.id ]}, { :include_blank
=> true }
- %li
- = label :instance, :hardware_profile
- = select :instance, :hardware_profile_id, @hardware_profiles.map {|p| [ p.name,
p.id ]}, { :include_blank => false }
- %li
- = label :instance, :frontend_realm
- = select :instance, :frontend_realm_id, @realms.map {|r| [ r.name, r.id ]}, {
:include_blank => true }
-
- = submit_tag 'Cancel', :name => 'cancel'
- = submit_tag 'Launch', :name => 'launch'
diff --git a/src/app/views/resources/instances/select_template.haml
b/src/app/views/resources/instances/select_template.haml
deleted file mode 100644
index a2dfbeb..0000000
--- a/src/app/views/resources/instances/select_template.haml
+++ /dev/null
@@ -1,19 +0,0 @@
-%h3 Show Templates
-%hr
-%ul
- - @templates.each do |tpl|
- %li
- - form_tag new_resources_instance_path do
- = hidden_field :instance, :template_id, :value => tpl.id
- - if tpl.platform != "unknown"
- = image_tag "platform_#{tpl.platform}.png", :size =>
"32x32", :alt => tpl.platform
- %h3= tpl.name
- %p= tpl.summary
- %p
- %label Group:
- System
- %label Version:
- 2.5
- = submit_tag 'Launch', :name => 'launch'
-= will_paginate(@templates)
-= page_entries_info(@templates)
diff --git a/src/app/views/resources/instances/show.haml
b/src/app/views/resources/instances/show.haml
deleted file mode 100644
index 05eeedd..0000000
--- a/src/app/views/resources/instances/show.haml
+++ /dev/null
@@ -1,5 +0,0 @@
-- content_for :list do
- = render :partial => 'list'
-
-- content_for :details do
- = render :partial => 'layouts/details_pane'
diff --git a/src/app/views/resources/pools/_deployments.haml
b/src/app/views/resources/pools/_deployments.haml
deleted file mode 100644
index 497bf09..0000000
--- a/src/app/views/resources/pools/_deployments.haml
+++ /dev/null
@@ -1,3 +0,0 @@
-%h3
- Deployments for
- = @pool.name
diff --git a/src/app/views/resources/pools/_history.haml
b/src/app/views/resources/pools/_history.haml
deleted file mode 100644
index 4769d92..0000000
--- a/src/app/views/resources/pools/_history.haml
+++ /dev/null
@@ -1,3 +0,0 @@
-%h3
- History for
- = @pool.name
diff --git a/src/app/views/resources/pools/_instances.haml
b/src/app/views/resources/pools/_instances.haml
deleted file mode 100644
index 260a9f8..0000000
--- a/src/app/views/resources/pools/_instances.haml
+++ /dev/null
@@ -1,28 +0,0 @@
-- form_tag do
- = restful_submit_tag 'Stop', 'stop',
multi_stop_resources_instances_path, 'GET'
- Show only
- = hidden_field_tag 'details_tab', 'instances'
- = select '', 'state', Instance::STATES, { :include_blank => true,
:selected => params[:state] }
- instances
- = restful_submit_tag "Filter", 'show', resources_pool_path,
'GET', :id => 'filter_button'
-
- %table
- %thead
- %td Name
- %td Assembly
- %td Deployment
- %td Since
- %td State
- - @instances.each do |instance|
- %tr
- %td
- %input{:name => 'instance_selected[]', :type =>
'checkbox', :value => instance.id, :id =>
"instance_checkbox_#{instance.id}" }
- = link_to instance.name, resources_instance_path(instance)
- %td
- = instance.assembly.present? ? link_to((instance.assembly.name),
image_factory_assembly_path(instance.assembly)) : '—'
- %td
- = instance.deployment.present? ? link_to((instance.deployment.name),
resources_deployment_path(instance.deployment)) : '—'
- %td
- = instance.created_at.to_s
- %td
- = instance.state
\ No newline at end of file
diff --git a/src/app/views/resources/pools/_list.haml
b/src/app/views/resources/pools/_list.haml
deleted file mode 100644
index c8083b7..0000000
--- a/src/app/views/resources/pools/_list.haml
+++ /dev/null
@@ -1,39 +0,0 @@
-- form_tag do
- = link_to "New Pool", new_resources_pool_path, { :class =>
'button' }
- = restful_submit_tag "Destroy", 'destroy',
multi_destroy_resources_pools_path, 'DELETE', :id => 'delete_button'
- %p
- Select:
- = link_to "All", @url_params.merge(:select => 'all')
- %span> ,
- = link_to "None", @url_params.merge(:select => 'none')
- %table#pools_table
- = sortable_table_header @header
- - @pools.each do |pool|
- %tr
- %td
- - selected = @url_params[:select] == 'all'
- %input{:name => "pools_selected[]", :type =>
"checkbox", :value => pool.id, :id =>
"pool_checkbox_#{pool.id}", :checked => selected }
- = link_to pool.name, resources_pool_path(pool)
- %td
- = pool.quota.maximum_running_instances or 'unlimited'
- %td
- = pool.quota.percentage_used
- ='%'
- %td
- = pool.pool_family.name
- %td
- = pool.enabled
-
-:javascript
- $(document).ready(function () {
- $('#delete_button').click(function(e) {
- if ($("#pools_table input[@type=radio]:checked").length == 0) {
- alert('Please select any pool to be deleted before clicking Delete
button.');
- e.preventDefault();
- } else {
- if (!confirm("Are you sure you want to delete this pool?")) {
- e.preventDefault();
- }
- }
- });
- });
diff --git a/src/app/views/resources/pools/_permissions.haml
b/src/app/views/resources/pools/_permissions.haml
deleted file mode 100644
index fbd252e..0000000
--- a/src/app/views/resources/pools/_permissions.haml
+++ /dev/null
@@ -1,3 +0,0 @@
-%h3
- Permissions for
- = @pool.name
diff --git a/src/app/views/resources/pools/_properties.haml
b/src/app/views/resources/pools/_properties.haml
deleted file mode 100644
index 066a491..0000000
--- a/src/app/views/resources/pools/_properties.haml
+++ /dev/null
@@ -1,4 +0,0 @@
-%h3
- Properties for
- = @pool.name
-= link_to "Edit", edit_resources_pool_path(@pool), { :class =>
'button' }
diff --git a/src/app/views/resources/pools/edit.haml
b/src/app/views/resources/pools/edit.haml
deleted file mode 100644
index d4c511f..0000000
--- a/src/app/views/resources/pools/edit.haml
+++ /dev/null
@@ -1,30 +0,0 @@
-= error_messages_for :pool
-%h1
- Edit pool
- = @pool.name
-
-- form_for [:resources, @pool] do |form|
- %fieldset
- = form.label :name, "Name:", :class => "grid_2 alpha"
- = form.text_field :name
- %fieldset
- = form.label :pool_family_id, "Pool Family:", :class => "grid_2
alpha"
- = form.collection_select :pool_family_id, PoolFamily.all, :id, :name
- %fieldset
- = label_tag "Quota"
- = text_field :quota, :maximum_running_instances, :title =>
t('provider_accounts.form.quota_instances'), :value =>
@quota.maximum_running_instances || "unlimited", :id =>
"quota_instances", :class => "grid_3 omega"
- (
- %button.linkbutton.nospace{ :type => 'button', :onclick =>
"set_unlimited_quota(\"quota_instances\");" }<>
- = t('provider_accounts.form.unlimited_quota')
- )
- %fieldset
- = form.label :enabled, "Enabled:",{ :class => "grid_2 alpha"
}
- = form.check_box :enabled
- %fieldset.clear
-
- = form.submit "Save"
-
-:javascript
- function set_unlimited_quota(elem_id) {
- $("#" + elem_id)[0].value = "unlimited";
- }
diff --git a/src/app/views/resources/pools/index.haml
b/src/app/views/resources/pools/index.haml
deleted file mode 100644
index 62ccbc6..0000000
--- a/src/app/views/resources/pools/index.haml
+++ /dev/null
@@ -1,2 +0,0 @@
-- content_for :list do
- = render :partial => 'list'
diff --git a/src/app/views/resources/pools/new.haml
b/src/app/views/resources/pools/new.haml
deleted file mode 100644
index 5c48c9e..0000000
--- a/src/app/views/resources/pools/new.haml
+++ /dev/null
@@ -1,27 +0,0 @@
-= error_messages_for :pool
-%h1 Create a new Pool
-- form_for @pool, :url => resources_pools_path do |form|
- %fieldset
- = form.label :name, "Name:", :class => "grid_2 alpha"
- = form.text_field :name
- %fieldset
- = form.label :pool_family_id, "Pool Family:", :class => "grid_2
alpha"
- = form.collection_select :pool_family_id, PoolFamily.all, :id, :name
- %fieldset
- = label_tag "Quota:"
- = text_field :quota, :maximum_running_instances, :title =>
t('provider_accounts.form.quota_instances'), :value =>
@quota.maximum_running_instances || "unlimited", :id =>
"quota_instances", :class => "grid_3 omega"
- (
- %button.linkbutton.nospace{ :type => 'button', :onclick =>
"set_unlimited_quota(\"quota_instances\");" }<>
- = t('provider_accounts.form.unlimited_quota')
- )
- %fieldset
- = form.label :enabled, "Enabled:",{ :class => "grid_2 alpha"
}
- = form.check_box :enabled
- %fieldset.clear
-
- = form.submit "Save"
-
-:javascript
- function set_unlimited_quota(elem_id) {
- $("#" + elem_id)[0].value = "unlimited";
- }
diff --git a/src/app/views/resources/pools/show.haml
b/src/app/views/resources/pools/show.haml
deleted file mode 100644
index 05eeedd..0000000
--- a/src/app/views/resources/pools/show.haml
+++ /dev/null
@@ -1,5 +0,0 @@
-- content_for :list do
- = render :partial => 'list'
-
-- content_for :details do
- = render :partial => 'layouts/details_pane'
diff --git a/src/app/views/roles/_form.haml b/src/app/views/roles/_form.haml
new file mode 100644
index 0000000..fc10dd2
--- /dev/null
+++ b/src/app/views/roles/_form.haml
@@ -0,0 +1,8 @@
+= form.error_messages
+%fieldset.clear
+ = form.label :name, 'Name', :class => "grid_3 alpha"
+ = form.text_field :name, :class => "grid_5"
+%fieldset.clearfix
+ = form.submit "Save", :class => "submit formbutton"
+ = form.submit "Reset", :class => "submit formbutton"
+ = link_to t(:cancel), admin_roles_path, :class => 'button formbutton'
diff --git a/src/app/views/roles/_list.haml b/src/app/views/roles/_list.haml
new file mode 100644
index 0000000..d825e2f
--- /dev/null
+++ b/src/app/views/roles/_list.haml
@@ -0,0 +1,30 @@
+- form_tag do
+ = link_to "New Role", new_admin_role_path, :class => 'button'
+ = restful_submit_tag "Destroy", "destroy",
multi_destroy_admin_roles_path, 'DELETE', :id => 'delete_button'
+ %p
+ Select:
+ = link_to "All", @url_params.merge(:select => 'all')
+ %span> ,
+ = link_to "None", @url_params.merge(:select => 'none')
+ %table#roles_table
+ = sortable_table_header @header
+ - @roles.each do |role|
+ %tr
+ %td
+ - selected = @url_params[:select] == 'all'
+ %input{:name => "role_selected[]", :type =>
"checkbox", :value => role.id, :id =>
"role_checkbox_#{role.id}", :checked => selected }
+ = link_to role.name, admin_role_path(role)
+
+:javascript
+ $(document).ready(function () {
+ $('#delete_button').click(function(e) {
+ if ($("#roles_table input[@type=radio]:checked").length == 0) {
+ alert('Please select any user to be deleted before clicking Delete
button.');
+ e.preventDefault();
+ } else {
+ if (!confirm("Are you sure you want to delete this user?")) {
+ e.preventDefault();
+ }
+ }
+ });
+ });
diff --git a/src/app/views/roles/_properties.haml b/src/app/views/roles/_properties.haml
new file mode 100644
index 0000000..bcb59f4
--- /dev/null
+++ b/src/app/views/roles/_properties.haml
@@ -0,0 +1,23 @@
+.grid_13
+ %h2 #{(a)role.name}
+ %strong Scope:
+ %span #{(a)role.scope}
+ %table
+ %thead
+ %tr
+ %th.show
+ Privileges
+ %th.show
+ %tbody
+ %tr
+ %td
+ %label Action
+ %td
+ %label Target type
+ -(a)role.privileges.each do |privilege|
+ %tr
+ %td
+ = privilege.action
+ %td
+ = privilege.target_type
+ = link_to t(:edit), edit_admin_role_path(@role), :class => 'button
formbutton'
diff --git a/src/app/views/roles/edit.haml b/src/app/views/roles/edit.haml
new file mode 100644
index 0000000..7aa428e
--- /dev/null
+++ b/src/app/views/roles/edit.haml
@@ -0,0 +1,4 @@
+%h2 Editing Role: #{(a)role.name}
+
+- form_for @role, :url => admin_role_path(@role), :html => { :method => :put }
do |f|
+ = render :partial => "form", :locals => { :form => f }
diff --git a/src/app/views/roles/index.haml b/src/app/views/roles/index.haml
new file mode 100644
index 0000000..62ccbc6
--- /dev/null
+++ b/src/app/views/roles/index.haml
@@ -0,0 +1,2 @@
+- content_for :list do
+ = render :partial => 'list'
diff --git a/src/app/views/roles/new.haml b/src/app/views/roles/new.haml
new file mode 100644
index 0000000..064e67d
--- /dev/null
+++ b/src/app/views/roles/new.haml
@@ -0,0 +1,3 @@
+%h2 New Role
+- form_for @role, :url => admin_roles_path do |f|
+ = render :partial => "form", :locals => { :form => f }
diff --git a/src/app/views/settings/general_settings.haml
b/src/app/views/settings/general_settings.haml
new file mode 100644
index 0000000..f073663
--- /dev/null
+++ b/src/app/views/settings/general_settings.haml
@@ -0,0 +1,41 @@
+%form{:class => 'container_16'}
+ .grid_16
+ %h1 Portal
+ %fieldset.clearfix
+ %label.grid_5.alpha Brand Icon:
+ .grid_6
+ %input{:type => "file", :disabled => true}
+ %fieldset.clearfix
+ %label.grid_5.alpha Tag Line:
+ %textarea.grid_6.disabled{:disabled => true}
+ %fieldset.clearfix
+ .grid_5.alpha.disabled.ra
+ %input{:type => "checkbox", :disabled => true}
+ %label Allow Self Service Account Creation:
+ .grid_6.disabled
+ %select{:disabled => true}
+ %option Select User Treatment
+ %fieldset.clearfix
+ %label.alpha.grid_5 Primary URL Port:
+ %input.grid_6{:value => "3000", :disabled => true}
+ %h1 Content
+ %fieldset.clearfix
+ %label.grid_5.alpha Entitlement Mode:
+ .grid_5
+ %ul.block
+ %li
+ %input{:type => "radio", :name => "entitlement",
:disabled => true}
+ %label.disabled User Brings Subscriptions
+ %li
+ %input{:type => "radio", :name => "entitlement",
:disabled => true}
+ %label.disabled System Provides Subscriptions
+ %fieldset.clearfix
+ %label.grid_5.alpha Certitifcate:
+ .grid_6
+ %input{:type => "file", :disabled => true}
+ %fieldset.clearfix
+ %label.alpha.grid_5 Content Manager URL:
+ %input.grid_6{:disabled => true}
+ %fieldset.clearfix
+ %button.formbutton{:disabled => true} Reset
+ %button.formbutton{:disabled => true} Save
diff --git a/src/app/views/settings/index.haml b/src/app/views/settings/index.haml
new file mode 100644
index 0000000..8a68a65
--- /dev/null
+++ b/src/app/views/settings/index.haml
@@ -0,0 +1,42 @@
+%ul.tiles{:class => 'container_16'}
+ %li#services.grid_8.disabled.clear
+ = image_tag "blnk.png", :class => "icon", :alt =>
""
+ %h2
+ = t('.define_services')
+ %p
+ = t('.define_services_desc')
+ %button{:disabled => "disabled"}
+ = t(:continue)
+ %li#permissions.grid_8
+ = image_tag "blnk.png", :class => "icon", :alt =>
""
+ %h2
+ = t('.permissions')
+ %p
+ = t('.permissions_desc')
+ = link_to t(:continue), self_service_admin_settings_path, :class =>
'button'
+ %li#settings.grid_8
+ = image_tag "blnk.png", :class => "icon", :alt =>
""
+ %h2
+ = t('.general_settings')
+ %p
+ = t('.general_settings_desc')
+ = link_to t(:continue), general_settings_admin_settings_path, :class =>
'button'
+ %li#locales.grid_8.disabled.clear
+ = image_tag "blnk.png", :class => "icon", :alt =>
""
+ %h2
+ = t('.define_locales')
+ %p
+ = t('.define_locales_desc')
+ %button{:disabled => "disabled"}
+ = t(:continue)
+
+:javascript
+ $(document).ready(function () {
+ var $tiles = $(".tiles
li:not(.disabled)").addClass('pointercursor');
+ $tiles.click(function (e) {
+ $e = $(e.target);
+ if (!$e.is('.button')) {
+ window.location = $('.button',this).attr('href');
+ }
+ });
+ });
diff --git a/src/app/views/settings/self_service.haml
b/src/app/views/settings/self_service.haml
new file mode 100644
index 0000000..05235ec
--- /dev/null
+++ b/src/app/views/settings/self_service.haml
@@ -0,0 +1,120 @@
+.grid_13{:class => 'container_16'}
+ = error_messages_for @parent_type
+ %h2
+ = t('.self_service_default')
+ - form_for @self_service_default_quota, :url => { :action => 'update' }
do |form|
+ %h3 Instances
+ %fieldset.clearfix
+ %label.grid_2.alpha Permissions:
+ .grid_4 My personal Instances
+ .grid_4 Full Instance Permission
+ .grid_3.omega
+ (
+ %a{:href=>'#'}> Edit
+ )
+ (
+ %a{:href=>'#'}> Remove
+ )
+ %fieldset.clearfix.gap
+ .grid_4.prefix_2.alpha
+ %select.disabled{:disabled => true}
+ %option
+ Category of Instances
+ .grid_4
+ %ul.block
+ %li
+ %input{ :type => "radio", :name => "permission",
:disabled => true}
+ %label.disabled Control Instance - Can't Share
+ %li
+ %input{ :type => "radio", :name => "permission",
:disabled => true}
+ %label.disabled Control Instance - Can Share
+ %li
+ %input{ :type => "radio", :name => "permission",
:disabled => true}
+ %label.disabled Full Instance Permission
+ %li
+ %input{ :type => "radio", :name => "permission",
:disabled => true}
+ %label.disabled Custom ...
+ .grid_3.omega
+ (
+ %a{:href=>'#'}> Add
+ )
+ = hidden_field :self_service_default_quota, :id
+ %fieldset.clearfix.gap
+ %label.grid_2.alpha
+ = t('.quota') + ":"
+ = text_field :self_service_default_quota, :maximum_running_instances, :class =>
'grid_5'
+ .grid_2.la (instances)
+ = form.error_message_on :maximum_running_instances, 'Maximum Running Instances
'
+ %h3 POOLS
+ %fieldset.clearfix
+ %label.grid_2.alpha Permissions:
+ .grid_4 General Usage
+ .grid_4 Regular Pool User
+ .grid_3.omega
+ (
+ %a{:href=>'#'}> Edit
+ )
+ (
+ %a{:href=>'#'}> Remove
+ )
+ %fieldset.clearfix.gap
+ .grid_4.prefix_2.alpha
+ %select.disabled{:disabled => true}
+ %option
+ Category of Pools
+ .grid_4
+ %ul.block
+ %li
+ %input{ :type => "radio", :name => "pooltype",
:disabled => true}
+ %label.disabled Limited Pool User
+ %li
+ %input{ :type => "radio", :name => "pooltype",
:disabled => true}
+ %label.disabled Regular Pool User
+ %li
+ %input{ :type => "radio", :name => "pooltype",
:disabled => true}
+ %label.disabled Advanced Pool User
+ %li
+ %input{ :type => "radio", :name => "pooltype",
:disabled => true}
+ %label.disabled Custom ...
+ .grid_3.omega
+ (
+ %a{:href=>'#'}> Add
+ )
+ %h3 TEMPLATES
+ %fieldset.clearfix
+ %label.grid_2.alpha Permissions:
+ .grid_4 General Usage
+ .grid_4 Basic Template User
+ .grid_3.omega
+ (
+ %a{:href=>'#'}> Edit
+ )
+ (
+ %a{:href=>'#'}> Remove
+ )
+ %fieldset.clearfix.gap
+ .grid_4.prefix_2.alpha
+ %select.disabled{:disabled => true}
+ %option
+ Category of Templates
+ .grid_4
+ %ul.block
+ %li
+ %input{ :type => "radio", :name => "pooltype",
:disabled => true}
+ %label.disabled Basic Template User
+ %li
+ %input{ :type => "radio", :name => "pooltype",
:disabled => true}
+ %label.disabled General Template User
+ %li
+ %input{ :type => "radio", :name => "pooltype",
:disabled => true}
+ %label.disabled Advanced Template User
+ %li
+ %input{ :type => "radio", :name => "pooltype",
:disabled => true}
+ %label.disabled Custom ...
+ .grid_3.omega
+ (
+ %a{:href=>'#'}> Add
+ )
+ .grid_13.omega.alpha.gap
+ %button.formbutton Reset
+ = submit_tag t(:save), :class => "submit formbutton"
diff --git a/src/app/views/templates/_addbuttons.haml
b/src/app/views/templates/_addbuttons.haml
new file mode 100644
index 0000000..9f88751
--- /dev/null
+++ b/src/app/views/templates/_addbuttons.haml
@@ -0,0 +1,4 @@
+%fieldset.clear
+ - cancel_path = @tpl.id ? edit_image_factory_template_path(@tpl) :
new_image_factory_template_path
+ = restful_submit_tag "Add Selected", "add_selected",
add_selected_image_factory_templates_path, 'GET', {:class => "grid_2
alpha", :id => "do_add_software"}
+ = restful_submit_tag "Cancel", "cancel_add_software", cancel_path,
'GET', {:class => "grid_2", :id =>
"cancel_add_software"}
diff --git a/src/app/views/templates/_basics.haml b/src/app/views/templates/_basics.haml
new file mode 100644
index 0000000..72d2423
--- /dev/null
+++ b/src/app/views/templates/_basics.haml
@@ -0,0 +1,27 @@
+%h3 General Information
+%fieldset.clearfix
+ %label.grid_4.alpha.la Template Name:
+ %label.grid_7.la Summary:
+ %label.grid_3.suffix_2.omega.la Version:
+ = text_field :tpl, :name, :value => @tpl.name || 'Template Name', :class
=> "grid_4 alpha"
+ = text_field :tpl, :summary, :value => @tpl.summary || 'Template
Description', :class => "grid_7"
+ = text_field_tag 'current_version', 'Current Version', :disabled =>
true, :class => "grid_3"
+ %button{:type => 'button', :disabled => 'disabled', :class =>
"grid_2 omega"} New Version
+%fieldset.clearfix
+ %label.grid_4.alpha Choose Logo:
+ %input{:type => 'file', :disabled => 'disabled', :class =>
"grid_7"}
+%fieldset.clearfix
+ - default = @tpl.platforms['fedora']
+ = label :tpl, :platform, 'Platform Choice:', :class => "grid_4
alpha"
+ = select :tpl, :platform, @tpl.platforms.map {|id, p| ["#{p['name']}
#{p['version']} (#{p['architecture']})", id]}, {:selected =>
@tpl.platform || 'fedora'}, {:class => 'grid_7'}
+%fieldset.clearfix
+ = label_tag :bootable, 'Bootable:', :class => "grid_4 alpha"
+ .grid_12.omega
+ = radio_button_tag :bootable, 'yes', true, :disabled => true
+ = label_tag :bootable, 'Yes'
+ = radio_button_tag :bootable, 'no', false, :disabled => true
+ = label_tag :bootable, 'No'
+%fieldset.clearfix
+ %label{:for => :template_group, :class => 'grid_4 alpha'}
+ Template Group:
+ = select_tag(:template_group, options_for_select([['User Private', 1]]), :class
=> 'grid_4')
diff --git a/src/app/views/templates/_builds.haml b/src/app/views/templates/_builds.haml
new file mode 100644
index 0000000..a6bdd4b
--- /dev/null
+++ b/src/app/views/templates/_builds.haml
@@ -0,0 +1,41 @@
+Builds for
+= @tpl.platform_name
+= @tpl.platform_version
+, template "#{(a)tpl.name}"
+
+- form_tag image_factory_builds_path do
+ = hidden_field_tag :template_id, @tpl.id
+ - if @targets_not_built.count > 0 then
+ - if @tpl.imported
+ Build imported template is not supported
+ - else
+ New Build for
+ = select_tag 'target', options_for_select(@targets_not_built)
+ = submit_tag "Go", :name => "build"
+
+%ul
+ - if @images.empty?
+ %li No Builds
+ - else
+ - @images.each do |img|
+ %li
+ - form_tag(retry_image_factory_builds_path, { :method => :post }) do
+ = "#{img.name}-#{img.template.architecture}: #{img.status}"
+ = hidden_field_tag :template_id, @tpl.id
+ = hidden_field_tag :image_id, img.id
+ = submit_tag "Retry build", :name => "build"
+ - if img.status == Image::STATE_COMPLETED
+ %ul
+ - img.provider_images.each do |pimg|
+ %li
+ - form_tag(retry_image_factory_builds_path, { :method => :post }) do
+ = "#{pimg.provider.name}: #{pimg.status}"
+ = hidden_field_tag :template_id, @tpl.id
+ = hidden_field_tag :provider_image_id, pimg.id
+ = submit_tag "Retry upload", :name => "build"
+ - unless @tpl.imported
+ - img.not_uploaded_providers.each do |provider|
+ %li
+ = "#{provider.name}: "
+ not uploaded
+ = link_to 'upload',
upload_image_factory_builds_path(:template_id => @tpl.id, :image_id => img.id,
:provider_id => provider.id), {:class => 'button'}
diff --git a/src/app/views/templates/_collections.haml
b/src/app/views/templates/_collections.haml
new file mode 100644
index 0000000..98ce959
--- /dev/null
+++ b/src/app/views/templates/_collections.haml
@@ -0,0 +1,8 @@
+%ul.collections
+ - @collections.each do |c|
+ %li
+ /- selected = c[:selected] ? true : false
+ - selected = false
+ = check_box_tag 'groups[]', c[:id], selected, {:disabled => selected,
:id => "group_#{c[:id]}", :class => "#{selected ? 'selected'
: ''}"}
+ = label_tag "group_#{c[:id]}", c[:name]
+= render :partial => 'addbuttons'
diff --git a/src/app/views/templates/_form.haml b/src/app/views/templates/_form.haml
new file mode 100644
index 0000000..7cc323c
--- /dev/null
+++ b/src/app/views/templates/_form.haml
@@ -0,0 +1,120 @@
+:javascript
+ $(document).ready(function() {
+ var $content_container = $('#managed_content');
+ var $sel_pkg_container = $('#package_selection_list');
+ var $submit = $('#add_software_button');
+ $submit.click(function(e) {
+ e.preventDefault();
+ $submit.hide();
+ var data = {
+ 'packages[]':
$("input[name='packages[]']").map(function() {return
$(this).val()}).get(),
+ 'repository': $("select[name='tpl[platform]']").val()
|| ''
+ }
+ var url = '#{url_for :action => 'content_selection', :id =>
@id}';
+ //$content_container.empty().show();
+ $sel_pkg_container.empty().show().addClass('loading');
+ $sel_pkg_container.load(url, data, function(){
+ $sel_pkg_container.removeClass('loading');
+ var $groups = $('.softwaregroups .disclosure', this);
+ //search
+ $("input[name='package_search']").keypress(function(event) {
+ if (event.keyCode == '13') {
+ event.preventDefault();
+ $("input[name=package_search] ~ button").click();
+ }
+ });
+ $("input[name=package_search] ~ button").click(function(event) {
+ event.preventDefault();
+ var data = {
+ 'packages[]':
$("input:text[name='packages[]']").map(function() {return
$(this).val()}).get(),
+ 'package_search':
$("input[name='package_search']").val(),
+ 'repository':
$("select[name='tpl[platform]']").val()
+ };
+ var url = '#{url_for :action => 'search_packages', :id =>
@id}';
+ $('#metagrouppackages').empty().addClass('loading');
+ $('#metagrouppackages').load(url, data, function() {
+ $('#metagrouppackages').removeClass('loading');
+ });
+ });
+ });
+ });
+ //removing packages from the list
+ $('.remove_package').live('click', function (e) {
+ e.preventDefault();
+ $(this).parent().hide(300, function () {
+ $(this).remove();
+ });
+ });
+ //displaying extended package info and actions
+ $('.dropdown').hide();
+ $('.packagename').live('click', function () {
+ var dropdowncontent = $(this).siblings('.dropdown').html(),
+ $dropdown = $("#dropdown");
+ $('.packagewrap').removeClass('selected');
+ $(this).parent().addClass('selected');
+ $dropdown.empty().html(dropdowncontent).css({
+ 'top': $(this).positionAncestor('#content').top + 17,
+ 'left': $(this).positionAncestor('#content').left - 4
+ }).show();
+ });
+ //catch #content clicks and hide the #dropdown if it's not within it
+ $("#content").click(function (e) {
+ if(!e.target.id === 'dropdown' ||
!$(e.target).closest("#dropdown").length) {
+ $("#dropdown").hide();
+ $('.packagewrap').removeClass('selected');
+ }
+ });
+ // select correct package repo when we change platform
+ $("select[name='tpl[platform]']").change(function() {
+ if ($submit.is(':hidden')) {
+ $submit.trigger('click');
+ }
+ });
+ // add selected pkgs/groups
+ $('#do_add_software').live('click', function(e) {
+ e.preventDefault();
+ var $button = $(this).clone();
+ var label = "<span id='do_add_software' class='loading
fl'>Adding Packages</span>";
+ var url = '#{url_for :action => 'managed_content'}';
+ var new_pkgs =
$("input:checked[name='selected_packages[]']").map(function() {return
$(this).val()}).get();
+ var old_pkgs =
$("input:hidden[name='packages[]']").map(function() {return
$(this).val()}).get()
+ var cached_pkgs =
$("input:hidden[name='cached_packages[]']").map(function() {return
$(this).val()}).get()
+ var data = {
+ 'selected_packages[]': old_pkgs.concat(new_pkgs.concat(cached_pkgs)),
+ 'selected_groups[]':
$("input:checked[name='groups[]']").map(function() {return
$(this).val()}).get(),
+ 'collections': $("input:hidden[name=collections]").val(),
+ 'template_id' : '#{(a)id.nil? ? nil : @id}'
+ };
+ $(this).replaceWith(label);
+ $('#managed_content').load(url, data, function(){
+ $("input:checked[name='groups[]']").attr('disabled',
'disabled');
+ $("input:checked[name='packages[]']").attr('disabled',
'disabled');
+ // $('#add_software_button').show();
+ $('.dropdown').hide();
+ $('#do_add_software').replaceWith($button);
+ });
+ });
+ // hide sw selection panel
+ $('#cancel_add_software').live('click', function(e) {
+ e.preventDefault();
+ $('#package_selection_list').hide();
+ $('#add_software_button').show();
+ $('.dropdown').hide();
+ });
+ });
+
+#build
+ = error_messages_for :tpl, :object_name => 'template'
+ = render :partial => 'basics'
+ = render :partial => 'local_content_to_bundle'
+
+ #managed_content
+ = render :partial => 'managed_content'
+
+ .clearfix
+ .grid_16.alpha.omega
+ = restful_submit_tag "Add Software", 'collections',
collections_image_factory_templates_path, 'GET', {:id =>
"add_software_button", :class => "iconbutton"}
+
+ #package_selection_list{:style => 'display: none'}
+
+ = render :partial => 'preboot_configuration'
diff --git a/src/app/views/templates/_hidden_fields.haml
b/src/app/views/templates/_hidden_fields.haml
new file mode 100644
index 0000000..5709087
--- /dev/null
+++ b/src/app/views/templates/_hidden_fields.haml
@@ -0,0 +1,8 @@
+= hidden_field :tpl, :id
+= hidden_field :tpl, :name
+= hidden_field :tpl, :summary
+= hidden_field :tpl, :platform
+= hidden_field :tpl, :platform_version
+= hidden_field :tpl, :architecture
+- @tpl.packages.each do |p|
+ = hidden_field_tag "packages[]", p, :id => "package_#{p}"
diff --git a/src/app/views/templates/_list.haml b/src/app/views/templates/_list.haml
new file mode 100644
index 0000000..bf8be82
--- /dev/null
+++ b/src/app/views/templates/_list.haml
@@ -0,0 +1,35 @@
+- form_tag do
+ = link_to "Create", new_image_factory_template_path, :class =>
'button'
+ = restful_submit_tag "Delete", 'destroy',
multi_destroy_image_factory_templates_path, 'DELETE', :id =>
'delete_button'
+
+ %table#templates_table
+ = sortable_table_header @header
+ %tbody
+ - if @templates.empty?
+ %tr
+ %td{:colspan => 6} No Templates
+ - else
+ - @templates.each do |template|
+ %tr
+ %td
+ = check_box_tag 'selected[]', template.id, @url_params[:select] ==
'all', :id => "selected_#{template.id}"
+ = image_tag "blnk.png", :alt => template.platform, :class
=> "icon platform #{template.platform}"
+ = link_to template.name, image_factory_template_path(template)
+ %td= template.platform_name
+ %td= template.platform_version
+ %td= image_tag 'blnk.png', :alt => 'yes', :class =>
"icon yes"
+ %td= template.architecture
+
+:javascript
+ $(document).ready(function () {
+ $('#delete_button').click(function(e) {
+ if ($("#templates_table input[@type=radio]:checked").length == 0) {
+ alert('Please select any template to be deleted before clicking Delete
button.');
+ e.preventDefault();
+ } else {
+ if (!confirm("Are you sure you want to delete this template?")) {
+ e.preventDefault();
+ }
+ }
+ });
+ });
diff --git a/src/app/views/templates/_local_content_to_bundle.haml
b/src/app/views/templates/_local_content_to_bundle.haml
new file mode 100644
index 0000000..109ce20
--- /dev/null
+++ b/src/app/views/templates/_local_content_to_bundle.haml
@@ -0,0 +1,21 @@
+%h3.disabled.gap Local Content to Bundle
+%fieldset.clearfix
+ = label_tag :local_bundle_name, 'Local:', :class => "disabled grid_2
alpha"
+ = text_field_tag 'local_bundle_name[]', 'Bundle Name', :disabled =>
true, :class => "grid_8"
+ .grid_6.omega
+ %button{:type => 'button', :disabled => 'disabled'} Browse
+ %button{:type => 'button', :disabled => 'disabled'} Config
+ %button{:type => 'button', :disabled => 'disabled'} Metadata
+ (
+ %a{:href => '#'} Remove
+ )
+ .grid_2.alpha
+
+ = text_field_tag 'local_bundle_name[]', 'Bundle Name', :disabled =>
true, :class => "grid_8"
+ .grid_6.omega
+ %button{:type => 'button', :disabled => 'disabled'} Browse
+ %button{:type => 'button', :disabled => 'disabled'} Config
+ %button{:type => 'button', :disabled => 'disabled'} Metadata
+ (
+ %a{:href => '#'} Remove
+ )
diff --git a/src/app/views/templates/_managed_content.haml
b/src/app/views/templates/_managed_content.haml
new file mode 100644
index 0000000..ebea6cd
--- /dev/null
+++ b/src/app/views/templates/_managed_content.haml
@@ -0,0 +1,21 @@
+#selected_packages
+ %h3.gap Managed Content to Bundle
+ .grid_16.alpha.omega
+ - if @tpl.packages.empty?
+ No selected packages
+ - else
+ /- repos = @repository_manager.repositories_hash
+ - @tpl.packages.sort.each do |pkg|
+ /- pkg_group = @groups.keys.find {|g| @groups[g][:packages][pkg]}
+ .packagewrap
+ %a.packagename{:id => "package_#{pkg}"}=pkg
+ = hidden_field_tag 'packages[]', pkg, :id =>
"package_#{pkg}"
+ = restful_submit_tag "Remove", "remove_package",
remove_package_image_factory_templates_path(:name => pkg), 'GET', {:id =>
"remove_package_#{pkg}", :class => 'remove_package'}
+ .dropdown
+ / we don't display repository for now, it's pretty difficult with
current design
+ /%section
+ / Repository:
+ / %label= (pkg_group and repo = repos[@groups[pkg_group][:repository_id]]) ?
repo.name.to_s : ' '
+ %fieldset.nomargin
+ %button{:disabled => true} Browse
+ %button{:disabled => true} Config
diff --git a/src/app/views/templates/_metagroup_packages.haml
b/src/app/views/templates/_metagroup_packages.haml
new file mode 100644
index 0000000..82c2697
--- /dev/null
+++ b/src/app/views/templates/_metagroup_packages.haml
@@ -0,0 +1,19 @@
+- if @metagroup_packages.blank?
+ %span.disabled No group selected
+- else
+ %h4
+ = "#{@metagroup} Packages"
+ %ul.metagrouppackages
+ - @metagroup_packages.sort {|a, b| a[:name] <=> b[:name]}.each do |group|
+ %li
+ - selected = false
+ %h5
+ = check_box_tag 'selected_groups[]', group[:id], selected, {:disabled
=> selected, :id => "group_#{group[:id]}", :class =>
"softwaregroups #{selected ? 'selected' : ''}"}
+ = label_tag "group_#{group[:id]}", group[:label]
+ %ul
+ - group[:packages].each do |pkg|
+ %li
+ - selected = @packages.to_a.find {|p| p[:name] == pkg}
+ = check_box_tag 'selected_packages[]', pkg, selected, {:disabled
=> selected, :id => "pkg_#{group[:name]}_#{pkg}"}
+ = label_tag "pkg_#{group[:name]}_#{pkg}", pkg
+ = render :partial => 'addbuttons'
diff --git a/src/app/views/templates/_metagroups.haml
b/src/app/views/templates/_metagroups.haml
new file mode 100644
index 0000000..f23c408
--- /dev/null
+++ b/src/app/views/templates/_metagroups.haml
@@ -0,0 +1,13 @@
+%fieldset.clearfix
+ .search.grid_4.alpha
+ %input{:type => "search", :placeholder => "Search for
package", :name => 'package_search', :value => params[:package_search],
:id => 'package_search'}
+ %button.action{:id => 'package_search_button', :name =>
'package_search_button' , :value => 'true'}
+ .grid_8
+ %a.grid_4.omega Advanced Search
+
+%ul.metagroups{:class => 'packagegroupsidebar grid_4 alpha'}
+ %li
+ = restful_submit_tag 'Collections', 'collections',
collections_image_factory_templates_path, 'GET', {:id => 'collections',
:class => 'icon'}
+ - @metagroups.keys.sort.each do |cat|
+ %li
+ = restful_submit_tag cat, "metagroup_packages",
metagroup_packages_image_factory_templates_path, 'GET', {:class =>
'icon'}
diff --git a/src/app/views/templates/_preboot_configuration.haml
b/src/app/views/templates/_preboot_configuration.haml
new file mode 100644
index 0000000..79ae839
--- /dev/null
+++ b/src/app/views/templates/_preboot_configuration.haml
@@ -0,0 +1,11 @@
+%h3.clear.gap Preboot Configuration
+%fieldset.clearfix
+ .grid_4.alpha
+ = radio_button_tag :configure_via_script, 'no', :disabled => true
+ = label_tag :configure_via_script, 'Configure Via Script'
+ = file_field_tag 'script_file', :disabled => true, :class => 'grid_12
omega'
+%fieldset.clearfix
+ .grid_4.alpha
+ = radio_button_tag :configure_via_script, 'no', :disabled => true
+ = label_tag :configure_via_script, 'Configure Via Script'
+ = file_field_tag 'script_file', :disabled => true, :class => 'grid_12
omega'
diff --git a/src/app/views/templates/_properties.haml
b/src/app/views/templates/_properties.haml
new file mode 100644
index 0000000..0fe33ae
--- /dev/null
+++ b/src/app/views/templates/_properties.haml
@@ -0,0 +1,4 @@
+%h3
+ Properties for
+ = @tpl.name
+= link_to "Edit", edit_image_factory_template_path(@tpl), { :class =>
'button' }
diff --git a/src/app/views/templates/_search_packages.haml
b/src/app/views/templates/_search_packages.haml
new file mode 100644
index 0000000..78fa5b1
--- /dev/null
+++ b/src/app/views/templates/_search_packages.haml
@@ -0,0 +1,45 @@
+:javascript
+ $(document).ready(function() {
+ $('.pagination input[type=submit]').click(function(e) {
+ e.preventDefault();
+ var url = '#{url_for :action => 'search_packages', :id =>
@id}';
+ var old_pkgs =
$("input:hidden[name='cached_packages[]']").map(function() {return
$(this).val()}).get();
+ var new_pkgs =
$("input:checked[name='selected_packages[]']").map(function() {return
$(this).val()}).get();
+ var data = {
+ 'selected_packages[]':
$("input:hidden[name='packages[]']").map(function() {return
$(this).val()}).get(),
+ 'cached_packages[]': old_pkgs.concat(new_pkgs),
+ 'selected_groups[]':
$("input:checked[name='groups[]']").map(function() {return
$(this).val()}).get(),
+ 'package_search':
$("input[name='package_search']").val(),
+ 'old_page': '#{@page}',
+ 'template_id' : '#{(a)id.nil? ? nil : @id}',
+ 'page': $(this).val(),
+ 'repository': $("select[name='tpl[platform]']").val()
+ };
+ $('#metagrouppackages').empty().addClass('loading');
+ $('#metagrouppackages').load(url, data, function() {
+ $('#metagrouppackages').removeClass('loading');
+ })
+ });
+ });
+
+- @cached_packages.uniq.each do |pkg|
+ = hidden_field_tag 'cached_packages[]', pkg
+
+- if params[:package_search].empty?
+ Search string is empty.
+-else
+ %h4
+ = "Search Results for '#{params[:package_search]}'"
+ %ul.searchedpackages
+ - @searched_packages.sort {|a, b| a [:name] <=> b[:name]}.each do |pkg|
+ %li
+ - selected = (@packages.to_a.find {|p| p[:name] == pkg[:name]} or
@cached_packages.include?(pkg[:name]))
+ - disabled = @tpl.packages.include?(pkg[:name])
+ = check_box_tag 'selected_packages[]', pkg[:name], selected, {:disabled
=> disabled, :id => "pkg_#{pkg[:name]}"}
+ = label_tag "pkg_#{pkg[:name]}", pkg[:name]
+ .pageinfo
+ = page_entries_info @searched_packages, :entry_name => 'package'
+ = will_paginate @searched_packages, :params => {:package_search =>
params[:package_search]}, :renderer => TemplatesHelper::ButtonPaginationRenderer.new,
:previous_label => 'Previous', :next_label => 'Next'
+
+
+ = render :partial => 'addbuttons'
diff --git a/src/app/views/templates/_software_selection.haml
b/src/app/views/templates/_software_selection.haml
new file mode 100644
index 0000000..34606fc
--- /dev/null
+++ b/src/app/views/templates/_software_selection.haml
@@ -0,0 +1,41 @@
+:javascript
+ $(document).ready(function() {
+ var $metagrouppackages = $('#metagrouppackages');
+ $('.metagroups input').click(function(e) {
+ e.preventDefault();
+ var data = {
+ 'repository': $("select[name='tpl[platform]']").val(),
+ 'packages[]':
$("input:hidden[name='packages[]']").map(function() {return
$(this).val()}).get()
+ };
+ if ($(this).attr('name') == '__rewrite[collections]') {
+ var url = '#{url_for :action => 'collections', :id =>
@id}';
+ } else {
+ var url = '#{url_for :action => 'metagroup_packages', :id =>
@id}';
+ data.__rewrite = {
+ metagroup_packages: e.currentTarget.value
+ };
+ }
+ $metagrouppackages.empty().addClass('loading');
+ $metagrouppackages.load(url, data, function() {
+ $metagrouppackages.removeClass('loading');
+ //select all packages in collection
+ $(".softwaregroups").click(function() {
+ if ($(this).attr("checked") === true) {
+
$(this).parent().siblings("ul").find("input[type='checkbox']").attr("checked","checked");
+ } else {
+
$(this).parent().siblings("ul").find("input[type='checkbox']").removeAttr("checked");
+ }
+ });
+ });
+ });
+ });
+
+.grid_16
+ %h4 Managed Content Selection
+
+ - form_tag do
+ - unless request.xhr?
+ = render :partial => 'hidden_fields'
+ = render :partial => 'metagroups'
+ #metagrouppackages.grid_12.omega.gap
+ = render :partial => view
diff --git a/src/app/views/templates/collections.haml
b/src/app/views/templates/collections.haml
new file mode 100644
index 0000000..a899c85
--- /dev/null
+++ b/src/app/views/templates/collections.haml
@@ -0,0 +1 @@
+= render :partial => 'software_selection', :locals => {:view =>
'collections'}
diff --git a/src/app/views/templates/edit.haml b/src/app/views/templates/edit.haml
new file mode 100644
index 0000000..a2a58ef
--- /dev/null
+++ b/src/app/views/templates/edit.haml
@@ -0,0 +1,9 @@
+#dropdown
+.grid_16
+ %h2 Edit Template
+ /- form_for @tpl, :url => image_factory_template_path(@tpl), :html => { :method
=> :put } do |f|
+ - form_tag do
+ = hidden_field_tag :id, @tpl.id
+ = render :partial => 'form'
+ = restful_submit_tag "Save", 'update',
image_factory_template_path(@tpl), 'PUT', :class => "formbutton"
+ = link_to 'Cancel', image_factory_templates_path, :class => 'button
formbutton'
diff --git a/src/app/views/templates/index.haml b/src/app/views/templates/index.haml
new file mode 100644
index 0000000..62ccbc6
--- /dev/null
+++ b/src/app/views/templates/index.haml
@@ -0,0 +1,2 @@
+- content_for :list do
+ = render :partial => 'list'
diff --git a/src/app/views/templates/managed_content.haml
b/src/app/views/templates/managed_content.haml
new file mode 100644
index 0000000..926142d
--- /dev/null
+++ b/src/app/views/templates/managed_content.haml
@@ -0,0 +1 @@
+= render :partial => 'managed_content'
diff --git a/src/app/views/templates/metagroup_packages.haml
b/src/app/views/templates/metagroup_packages.haml
new file mode 100644
index 0000000..9703663
--- /dev/null
+++ b/src/app/views/templates/metagroup_packages.haml
@@ -0,0 +1 @@
+= render :partial => 'software_selection', :locals => {:view =>
'metagroup_packages'}
diff --git a/src/app/views/templates/new.haml b/src/app/views/templates/new.haml
new file mode 100644
index 0000000..2dbac5b
--- /dev/null
+++ b/src/app/views/templates/new.haml
@@ -0,0 +1,10 @@
+#dropdown
+.grid_16
+ %h2 New Template
+ /- form_for @tpl, :url => image_factory_templates_path do |f|
+ - form_tag do
+ = render :partial => 'form'
+ = check_box_tag :create_deployable
+ = label_tag :create_deployable, "Create Deployable for this template"
+ = restful_submit_tag "Save", 'create',
image_factory_templates_path, 'POST', :class => "formbutton"
+ = link_to 'Cancel', image_factory_templates_path, :class => 'button
formbutton'
diff --git a/src/app/views/templates/search_packages.haml
b/src/app/views/templates/search_packages.haml
new file mode 100644
index 0000000..94e30f5
--- /dev/null
+++ b/src/app/views/templates/search_packages.haml
@@ -0,0 +1 @@
+= render :partial => 'software_selection', :locals => {:view =>
'search_packages'}
diff --git a/src/app/views/templates/show.haml b/src/app/views/templates/show.haml
new file mode 100644
index 0000000..05eeedd
--- /dev/null
+++ b/src/app/views/templates/show.haml
@@ -0,0 +1,5 @@
+- content_for :list do
+ = render :partial => 'list'
+
+- content_for :details do
+ = render :partial => 'layouts/details_pane'
diff --git a/src/app/views/users/_form.haml b/src/app/views/users/_form.haml
new file mode 100644
index 0000000..f1b8aa3
--- /dev/null
+++ b/src/app/views/users/_form.haml
@@ -0,0 +1,44 @@
+= form.error_messages
+%fieldset.clear
+ = form.label :login, t(:choose_name), :class => "grid_3 alpha"
+ = form.text_field :login, :class => "grid_5"
+%fieldset.clear
+ = form.label :password, form.object.new_record? ? t(:choose_password) :
t(:change_password), :class => "grid_3 alpha"
+ = form.password_field :password, :class => "grid_5"
+%fieldset
+ = form.label :password_confirmation, t(:confirm_password), :class => "grid_3
alpha"
+ = form.password_field :password_confirmation, :class => "grid_5"
+-if check_privilege(Privilege::MODIFY, User)
+ %fieldset.clear
+ = form.label :user_status, "User Status:", :class => "alpha
grid_3"
+ .grid_5
+ = radio_button_tag "user_status","Active",true
+ = label_tag "user_status_active", "Active"
+ = radio_button_tag "user_status","Inactive", false, :disabled
=> true
+ = label_tag "user_status_inactive", "Inactive"
+%fieldset.clear
+ = form.label :first_name, t(:first_name), :class => "alpha grid_3"
+ = form.text_field :first_name, :class => "grid_5"
+%fieldset.clear
+ = form.label :last_name, t(:last_name), :class => "alpha grid_3"
+ = form.text_field :last_name, :class => "grid_5"
+%fieldset.clear
+ = form.label :email, t(:email), :class => "alpha grid_3"
+ = form.text_field :email, :class => "grid_5"
+-if check_privilege(Privilege::MODIFY, User)
+ %h3.grid_16 User Treatment
+ %fieldset.clearfix
+ = label_tag 'apply_treatment', t(:apply_treatment), :class => "alpha
grid_3"
+ = select_tag 'user_treatment', options_for_select([t(:choose_treatment)]),
:class => "grid_5"
+ = submit_tag t(:apply), :disabled => true, :class => "grid_2"
+
+ - form.fields_for :quota do |quota_form|
+ %fieldset.clear
+ = quota_form.label :maximum_running_instances, t(:maximum_running_instances),
:class => "alpha grid_3"
+ = quota_form.text_field :maximum_running_instances, :class =>
"grid_5"
+ (instances)
+ = quota_form.error_message_on :maximum_running_instances, 'Maximum Running
Instances '
+%fieldset.clearfix
+ = form.submit "Save", :class => "submit formbutton"
+ = form.submit "Reset", :class => "submit formbutton"
+ = link_to t(:cancel), cancel_path, :class => 'button formbutton'
diff --git a/src/app/views/users/_list.haml b/src/app/views/users/_list.haml
new file mode 100644
index 0000000..6a544ed
--- /dev/null
+++ b/src/app/views/users/_list.haml
@@ -0,0 +1,40 @@
+- form_tag do
+ = link_to "Create", new_admin_user_url, :class => 'button'
+ = restful_submit_tag "Delete", 'destroy',
multi_destroy_admin_users_path, 'DELETE', :id => 'delete_button'
+
+ %table#users_table
+ %thead
+ %tr
+ %th
+ %th= link_to "User ID", admin_users_url(:sort_by =>
"login")
+ %th= link_to "Last Name", admin_users_url(:sort_by =>
"last_name")
+ %th= link_to "First Name", admin_users_url(:sort_by =>
"first_name")
+ %th= link_to "% Quota Used", admin_users_url(:sort_by =>
"percentage_quota_used")
+ %th
+ =link_to "Quota", admin_users_url(:sort_by => "quota")
+ %span (Instances)
+ %th= link_to "e-mail", admin_users_url(:sort_by =>
"email")
+ -(a)users.each do |user|
+ %tr
+ %td
+ %input{:name => "user_selected[]", :type =>
"checkbox", :value => user.id, :id => "user_checkbox_#{user.id}"
}
+ %td= link_to user.login, admin_user_path(user)
+ %td= user.last_name
+ %td= user.first_name
+ %td= sprintf("%.2f", user.quota.percentage_used)
+ %td= Quota.no_limit(user.quota.maximum_running_instances) ? "Unlimited"
: user.quota.maximum_running_instances
+ %td= user.email
+
+:javascript
+ $(document).ready(function () {
+ $('#delete_button').click(function(e) {
+ if ($("#users_table input[@type=radio]:checked").length == 0) {
+ alert('Please select any user to be deleted before clicking Delete
button.');
+ e.preventDefault();
+ } else {
+ if (!confirm("Are you sure you want to delete this user?")) {
+ e.preventDefault();
+ }
+ }
+ });
+ });
diff --git a/src/app/views/users/_properties.haml b/src/app/views/users/_properties.haml
new file mode 100644
index 0000000..0842cb1
--- /dev/null
+++ b/src/app/views/users/_properties.haml
@@ -0,0 +1,98 @@
+.grid_13
+ %h2 #{(a)user.first_name} #{(a)user.last_name} (#{(a)user.login})
+
+ = link_to 'Edit', edit_admin_user_path(@user), :class => 'button'
+
+ %table
+ %thead
+ %tr
+ %th.show
+ Personal Details
+ %th.show
+ %tbody
+ %tr
+ %td
+ %label Username
+ %td
+ = @user.login
+ %tr
+ %td
+ %label First Name
+ %td
+ = @user.first_name
+ %tr
+ %td
+ %label Last Name
+ %td
+ = @user.last_name
+ %tr
+ %td
+ %label e-mail
+ %td
+ = @user.email
+
+ %table
+ %thead
+ %tr
+ %th.show
+ Quota Status
+ %th.show
+ %tbody
+ %tr
+ %td
+ %label Maximum
+ %td
+ = @quota_resources["running_instances"].max
+ %tr
+ %td
+ %label Used
+ %td
+ = @quota_resources["running_instances"].used
+ %tr
+ %td
+ %label Available
+ %td
+ = @quota_resources["running_instances"].available
+
+ %table
+ %thead
+ %tr
+ %th.show
+ Login Information
+ %th.show
+ %tbody
+ %tr
+ %td
+ %label Current Login IP
+ %td
+ = @user.current_login_ip
+ %tr
+ %td
+ %label Current Login at
+ %td
+ = @user.current_login_at
+ %tr
+ %td
+ %label Last Login IP
+ %td
+ = @user.last_login_ip
+ %tr
+ %td
+ %label Last Login at
+ %td
+ = @user.last_login_at
+ %tr
+ %td
+ %label Login Count
+ %td
+ = @user.login_count
+ %tr
+ %td
+ %label Failed Login Count
+ %td
+ = @user.login_count
+ %tr
+ %td
+ %label Last Request at
+ %td
+ = @user.last_request_at
diff --git a/src/app/views/users/edit.haml b/src/app/views/users/edit.haml
new file mode 100644
index 0000000..1290c4d
--- /dev/null
+++ b/src/app/views/users/edit.haml
@@ -0,0 +1,7 @@
+- if check_privilege(Privilege::MODIFY, User)
+ %h2 Editing User: #{(a)user.first_name} #{(a)user.last_name}
+- else
+ %h2 Editing Account
+
+- form_for @user, :url => admin_user_path(@user), :html => { :method => :put }
do |f|
+ = render :partial => "form", :locals => { :form => f, :cancel_path
=> admin_users_path }
diff --git a/src/app/views/users/index.haml b/src/app/views/users/index.haml
new file mode 100644
index 0000000..62ccbc6
--- /dev/null
+++ b/src/app/views/users/index.haml
@@ -0,0 +1,2 @@
+- content_for :list do
+ = render :partial => 'list'
diff --git a/src/app/views/users/new.haml b/src/app/views/users/new.haml
new file mode 100644
index 0000000..0958f12
--- /dev/null
+++ b/src/app/views/users/new.haml
@@ -0,0 +1,6 @@
+%h2 New Account
+- form_for @user, :url => admin_users_path do |f|
+ -if current_user
+ = render :partial => "form", :locals => { :form => f, :cancel_path
=> admin_users_path }
+ -else
+ = render :partial => "form", :locals => { :form => f, :cancel_path
=> login_path }
--
1.7.4.2