From: Jan Provaznik <[email protected]>
---
src/app/controllers/image_descriptor_controller.rb | 117 --------------------
src/app/controllers/templates_controller.rb | 116 +++++++++++++++++++
src/app/helpers/image_descriptor_helper.rb | 2 -
src/app/views/dashboard/summary.haml | 2 +-
src/app/views/image_descriptor/_basics.haml | 16 ---
src/app/views/image_descriptor/_nav.haml | 15 ---
src/app/views/image_descriptor/_targets.haml | 18 ---
src/app/views/image_descriptor/new.haml | 22 ----
.../image_descriptor/repository_packages.haml | 4 -
.../repository_packages_by_group.haml | 5 -
src/app/views/image_descriptor/services.haml | 37 ------
src/app/views/image_descriptor/software.haml | 78 -------------
src/app/views/image_descriptor/summary.haml | 64 -----------
src/app/views/image_descriptor/targets.haml | 1 -
src/app/views/templates/_basics.haml | 16 +++
src/app/views/templates/_nav.haml | 15 +++
src/app/views/templates/_targets.haml | 18 +++
src/app/views/templates/new.haml | 22 ++++
src/app/views/templates/repository_packages.haml | 4 +
.../templates/repository_packages_by_group.haml | 5 +
src/app/views/templates/services.haml | 37 ++++++
src/app/views/templates/software.haml | 78 +++++++++++++
src/app/views/templates/summary.haml | 64 +++++++++++
src/app/views/templates/targets.haml | 1 +
24 files changed, 377 insertions(+), 380 deletions(-)
delete mode 100644 src/app/helpers/image_descriptor_helper.rb
delete mode 100644 src/app/views/image_descriptor/_basics.haml
delete mode 100644 src/app/views/image_descriptor/_nav.haml
delete mode 100644 src/app/views/image_descriptor/_targets.haml
delete mode 100644 src/app/views/image_descriptor/new.haml
delete mode 100644 src/app/views/image_descriptor/repository_packages.haml
delete mode 100644
src/app/views/image_descriptor/repository_packages_by_group.haml
delete mode 100644 src/app/views/image_descriptor/services.haml
delete mode 100644 src/app/views/image_descriptor/software.haml
delete mode 100644 src/app/views/image_descriptor/summary.haml
delete mode 100644 src/app/views/image_descriptor/targets.haml
create mode 100644 src/app/views/templates/_basics.haml
create mode 100644 src/app/views/templates/_nav.haml
create mode 100644 src/app/views/templates/_targets.haml
create mode 100644 src/app/views/templates/new.haml
create mode 100644 src/app/views/templates/repository_packages.haml
create mode 100644 src/app/views/templates/repository_packages_by_group.haml
create mode 100644 src/app/views/templates/services.haml
create mode 100644 src/app/views/templates/software.haml
create mode 100644 src/app/views/templates/summary.haml
create mode 100644 src/app/views/templates/targets.haml
diff --git a/src/app/controllers/image_descriptor_controller.rb
b/src/app/controllers/image_descriptor_controller.rb
index d2e37d8..c555547 100644
--- a/src/app/controllers/image_descriptor_controller.rb
+++ b/src/app/controllers/image_descriptor_controller.rb
@@ -1,119 +1,2 @@
class ImageDescriptorController < ApplicationController
- layout :layout
- before_filter :require_user, :require_admin
-
- def layout
- return "aggregator" unless ajax?
- end
-
- def ajax?
- return params[:ajax] == "true"
- end
-
- def new
- if params[:cancel]
- redirect_to :controller => "dashboard", :action => 'index'
- else
- @image_descriptor = params[:id] ? ImageDescriptor.find(params[:id]) :
ImageDescriptor.new
- @image_descriptor.update_xml_attributes!(params[:xml] || {})
- end
- end
-
- def services
- if params[:cancel]
- redirect_to :controller => "dashboard", :action => 'index'
- else
- @image_descriptor = params[:id] ? ImageDescriptor.find(params[:id]) :
ImageDescriptor.new
- @image_descriptor.update_xml_attributes!(params[:xml] || {})
- end
- end
-
- def software
- if params[:cancel]
- redirect_to :controller => "dashboard", :action => 'index'
- else
- @image_descriptor = params[:id] ? ImageDescriptor.find(params[:id]) :
ImageDescriptor.new
- @image_descriptor.update_xml_attributes!(params[:xml] || {})
- @repositories = RepositoryManager.new.repositories
- if params[:back]
- redirect_to :action => 'new', :id => params[:id]
- return
- end
- end
- end
-
- def summary
- if params[:cancel]
- redirect_to :controller => "dashboard", :action => 'index'
- else
- @image_descriptor = params[:id] ? ImageDescriptor.find(params[:id]) :
ImageDescriptor.new
- @image_descriptor.update_xml_attributes!(params[:xml] || {})
- @image_descriptor.complete = true
- @image_descriptor.save!
- @all_targets = ImageDescriptorTarget.available_targets
- if params[:back]
- redirect_to :action => 'services', :id => params[:id]
- return
- end
- end
- end
-
- def build
- if params[:cancel] or params[:done]
- redirect_to :controller => "dashboard", :action => 'index'
- elsif params[:back]
- redirect_to :action => 'software', :id => params[:id]
- else
- @all_targets = ImageDescriptorTarget.available_targets
- if params[:targets]
- params[:targets].each do |target|
- ImageDescriptorTarget.new_if_not_exists(:name => target,
:image_descriptor_id => params[:id], :status =>
ImageDescriptorTarget::STATE_QUEUED)
- end
- end
- redirect_to :action => 'summary', :id => params[:id]
- end
- end
-
- def targets
- @image_descriptor = ImageDescriptor.find(params[:id])
- @all_targets = ImageDescriptorTarget.available_targets
- end
-
- def selected_packages
- data = ImageDescriptor.find(params[:id]).xml.packages
- end
-
- def repository_packages
- @packages = []
- rmanager = RepositoryManager.new
- rmanager.repositories.keys.each do |repid|
- next if params[:repository] and params[:repository] != 'all' and repid
!= params[:repository]
- rep = rmanager.get_repository(repid)
- @packages += rep.get_packages
- end
- end
-
- def repository_packages_by_group
- @packages = {}
- rmanager = RepositoryManager.new
- rmanager.repositories.keys.each do |repid|
- next if params[:repository] and params[:repository] != 'all' and repid
!= params[:repository]
- rep = rmanager.get_repository(repid)
- rep.get_packages_by_group.each do |group, pkgs|
- @packages[group] ||= []
- @packages[group] += pkgs
- end
- end
- end
-
- private
-
- # FIXME - this is temporary solution, replace with
- # concrete permission checks in actions
- def require_admin
- unless @current_user.permissions.collect { |p| p.role }.find { |r| r.name
== "Administrator" }
- raise PermissionError.new(
- 'You have insufficient privileges to perform action.')
- end
- end
end
diff --git a/src/app/controllers/templates_controller.rb
b/src/app/controllers/templates_controller.rb
index 9c53be5..8916d9e 100644
--- a/src/app/controllers/templates_controller.rb
+++ b/src/app/controllers/templates_controller.rb
@@ -20,5 +20,121 @@
# Likewise, all the methods added will be available for all controllers.
class TemplatesController < ApplicationController
+ layout :layout
+ before_filter :require_user, :require_admin
+ def layout
+ return "aggregator" unless ajax?
+ end
+
+ def ajax?
+ return params[:ajax] == "true"
+ end
+
+ def new
+ if params[:cancel]
+ redirect_to :controller => "dashboard", :action => 'index'
+ else
+ @image_descriptor = params[:id] ? ImageDescriptor.find(params[:id]) :
ImageDescriptor.new
+ @image_descriptor.update_xml_attributes!(params[:xml] || {})
+ end
+ end
+
+ def services
+ if params[:cancel]
+ redirect_to :controller => "dashboard", :action => 'index'
+ else
+ @image_descriptor = params[:id] ? ImageDescriptor.find(params[:id]) :
ImageDescriptor.new
+ @image_descriptor.update_xml_attributes!(params[:xml] || {})
+ end
+ end
+
+ def software
+ if params[:cancel]
+ redirect_to :controller => "dashboard", :action => 'index'
+ else
+ @image_descriptor = params[:id] ? ImageDescriptor.find(params[:id]) :
ImageDescriptor.new
+ @image_descriptor.update_xml_attributes!(params[:xml] || {})
+ @repositories = RepositoryManager.new.repositories
+ if params[:back]
+ redirect_to :action => 'new', :id => params[:id]
+ return
+ end
+ end
+ end
+
+ def summary
+ if params[:cancel]
+ redirect_to :controller => "dashboard", :action => 'index'
+ else
+ @image_descriptor = params[:id] ? ImageDescriptor.find(params[:id]) :
ImageDescriptor.new
+ @image_descriptor.update_xml_attributes!(params[:xml] || {})
+ @image_descriptor.complete = true
+ @image_descriptor.save!
+ @all_targets = ImageDescriptorTarget.available_targets
+ if params[:back]
+ redirect_to :action => 'services', :id => params[:id]
+ return
+ end
+ end
+ end
+
+ def build
+ if params[:cancel] or params[:done]
+ redirect_to :controller => "dashboard", :action => 'index'
+ elsif params[:back]
+ redirect_to :action => 'software', :id => params[:id]
+ else
+ @all_targets = ImageDescriptorTarget.available_targets
+ if params[:targets]
+ params[:targets].each do |target|
+ ImageDescriptorTarget.new_if_not_exists(:name => target,
:image_descriptor_id => params[:id], :status =>
ImageDescriptorTarget::STATE_QUEUED)
+ end
+ end
+ redirect_to :action => 'summary', :id => params[:id]
+ end
+ end
+
+ def targets
+ @image_descriptor = ImageDescriptor.find(params[:id])
+ @all_targets = ImageDescriptorTarget.available_targets
+ end
+
+ def selected_packages
+ data = ImageDescriptor.find(params[:id]).xml.packages
+ end
+
+ def repository_packages
+ @packages = []
+ rmanager = RepositoryManager.new
+ rmanager.repositories.keys.each do |repid|
+ next if params[:repository] and params[:repository] != 'all' and repid
!= params[:repository]
+ rep = rmanager.get_repository(repid)
+ @packages += rep.get_packages
+ end
+ end
+
+ def repository_packages_by_group
+ @packages = {}
+ rmanager = RepositoryManager.new
+ rmanager.repositories.keys.each do |repid|
+ next if params[:repository] and params[:repository] != 'all' and repid
!= params[:repository]
+ rep = rmanager.get_repository(repid)
+ rep.get_packages_by_group.each do |group, pkgs|
+ @packages[group] ||= []
+ @packages[group] += pkgs
+ end
+ end
+ end
+
+ private
+
+ # FIXME - this is temporary solution, replace with
+ # concrete permission checks in actions
+ def require_admin
+ unless @current_user.permissions.collect { |p| p.role }.find { |r| r.name
== "Administrator" }
+ raise PermissionError.new(
+ 'You have insufficient privileges to perform action.')
+ end
+ end
end
diff --git a/src/app/helpers/image_descriptor_helper.rb
b/src/app/helpers/image_descriptor_helper.rb
deleted file mode 100644
index fc89001..0000000
--- a/src/app/helpers/image_descriptor_helper.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-module ImageDescriptorHelper
-end
diff --git a/src/app/views/dashboard/summary.haml
b/src/app/views/dashboard/summary.haml
index ccbe9aa..44bff64 100644
--- a/src/app/views/dashboard/summary.haml
+++ b/src/app/views/dashboard/summary.haml
@@ -35,7 +35,7 @@
Add a Provider Account
%a{:href => url_for(:controller => "provider", :action => "new")}
Add a Provider
- %a{:href => url_for(:controller => "image_descriptor", :action => "new")}
+ %a{:href => url_for(:controller => "templates", :action => "new")}
Create a Template
%a{:href => url_for(:controller => "users", :action => "new")}
Create a User
diff --git a/src/app/views/image_descriptor/_basics.haml
b/src/app/views/image_descriptor/_basics.haml
deleted file mode 100644
index b89970d..0000000
--- a/src/app/views/image_descriptor/_basics.haml
+++ /dev/null
@@ -1,16 +0,0 @@
-%ul
- %li
- %label Name
- = text_field_tag 'xml[name]', @image_descriptor.xml.name
- %span Provide a unique name for template master. Users will see this name
when they choose this image to instantiate.
- %li
- %label Platform
- = select_tag("xml[platform]", @image_descriptor.xml.platforms.map{|repid,
rep| "<option value=\"#{repid}\" selected=\"#{repid ==
@image_descriptor.xml.platform ? 'selected' : ''}\">#{rep['name']}</option>"})
- %span Choose the software operating system.
- %li
- %label Description
- = text_area_tag("xml[description]", @image_descriptor.xml.description,
:rows => 4)
- %span Provide a description of your template master. Be descriptive to
help users to identify the images created with this master.
-.submit
- = submit_tag "Cancel"
- = submit_tag "Next"
diff --git a/src/app/views/image_descriptor/_nav.haml
b/src/app/views/image_descriptor/_nav.haml
deleted file mode 100644
index 35cfd02..0000000
--- a/src/app/views/image_descriptor/_nav.haml
+++ /dev/null
@@ -1,15 +0,0 @@
-#image_descriptor_nav
- %h2 Create a New Template Master
- %ul{:class => 'nav'}
- %li{:class => controller.action_name == 'new' ? 'selected' : nil}
- %h4 BASICS
- %p Basic RHEL LAMP
- %li{:class => controller.action_name == 'services' ? 'selected' : nil}
- %h4 SERVICES
- %p Add services
- %li{:class => controller.action_name == 'software' ? 'selected' : nil}
- %h4 SOFTWARE
- %p Add software
- %li{:class => controller.action_name == 'summary' ? 'selected' : nil}
- %h4 SUMMARY
- %p Create images
diff --git a/src/app/views/image_descriptor/_targets.haml
b/src/app/views/image_descriptor/_targets.haml
deleted file mode 100644
index 77406f7..0000000
--- a/src/app/views/image_descriptor/_targets.haml
+++ /dev/null
@@ -1,18 +0,0 @@
-#image_target_list{:class => 'target_list'}
- - if @image_descriptor.image_descriptor_targets.empty?
- .empty No images have been created yet.
- -else
- %ul
- - @image_descriptor.image_descriptor_targets.each do |target|
- %li
- %span{:class => 'actions'}
-
- - if ImageDescriptorTarget::ACTIVE_STATES.include?(target.status)
- = link_to 'Cancel', {:controller => 'image_descriptor_target',
:action => 'cancel', :id => target.id, :descriptor_id => @image_descriptor.id}
- %span{:class => 'status'}
- = target.status
- = @all_targets[target.name]['name']
- %p
- = target.created_at
- //%span{:style => 'float:right'}
- // Cancel
diff --git a/src/app/views/image_descriptor/new.haml
b/src/app/views/image_descriptor/new.haml
deleted file mode 100644
index 5a1adda..0000000
--- a/src/app/views/image_descriptor/new.haml
+++ /dev/null
@@ -1,22 +0,0 @@
-= render :partial => "nav"
-
-#image_descriptor_form{:class => 'dcloud_form'}
- = error_messages_for 'image_descriptor'
-
- - form_for @image_descriptor, :url => {:action => 'services', :id =>
@image_descriptor.id} do
- %ul
- %li
- %label Name
- = text_field_tag 'xml[name]', @image_descriptor.xml.name
- %span Provide a unique name for template master. Users will see this
name when they choose this image to instantiate.
- %li
- %label Platform
- = select_tag("xml[platform]",
@image_descriptor.xml.platforms.map{|repid, rep| "<option value=\"#{repid}\"
selected=\"#{repid == @image_descriptor.xml.platform ? 'selected' :
''}\">#{rep['name']}</option>"})
- %span Choose the software operating system.
- %li
- %label Description
- = text_area_tag("xml[description]", @image_descriptor.xml.description,
:rows => 4)
- %span Provide a description of your template master. Be descriptive to
help users to identify the images created with this master.
- .submit
- = submit_tag "Cancel", :name => "cancel"
- = submit_tag "Next", :name => "next"
diff --git a/src/app/views/image_descriptor/repository_packages.haml
b/src/app/views/image_descriptor/repository_packages.haml
deleted file mode 100644
index 9414b85..0000000
--- a/src/app/views/image_descriptor/repository_packages.haml
+++ /dev/null
@@ -1,4 +0,0 @@
-%ul
- - @packages.each do |pkg|
- %li
- = "#{pkg[:name]}<span class='select' onclick=\"select_group({group:
'#{pkg[:group]}', pkgs: ['#{pkg[:name]}']})\">Select</span>"
diff --git a/src/app/views/image_descriptor/repository_packages_by_group.haml
b/src/app/views/image_descriptor/repository_packages_by_group.haml
deleted file mode 100644
index 2f2b704..0000000
--- a/src/app/views/image_descriptor/repository_packages_by_group.haml
+++ /dev/null
@@ -1,5 +0,0 @@
-%ul
- - @packages.keys.map {|group| group.to_s}.sort.each do |group|
- %li
- - pkgs = @packages[group].map {|p| p[:name]}.join("','")
- = "#{group}<span class='select' onclick=\"select_group({group:
'#{group}', pkgs: ['#{pkgs}']})\">Select</span>"
diff --git a/src/app/views/image_descriptor/services.haml
b/src/app/views/image_descriptor/services.haml
deleted file mode 100644
index ac169b7..0000000
--- a/src/app/views/image_descriptor/services.haml
+++ /dev/null
@@ -1,37 +0,0 @@
-= render :partial => "nav"
-
-#image_descriptor_form{:class => 'dcloud_form'}
- = error_messages_for 'image_descriptor'
-
- - form_for @image_descriptor, :url => {:action => 'software', :id =>
@image_descriptor.id} do
- = hidden_field :image_descriptor, :id
- %ul
- %li
- %label Storage
- = check_box_tag 'xml[services][amazon3_storage]', '1',
@image_descriptor.xml.services.include?('amazon3_storage')
- = label_tag 'xml[services][amazon3_storage]', 'Enable Amazon S3
storage', :class => "plain"
- %span Provides cloud aware table storage for both user-data and
guest-images and snapshots compatible with Amazon S3, for any (internal &
external)cloud deployment
- %li
- %label Inter-node Messaging
- = check_box_tag 'xml[services][inter_node_messaging]', '1',
@image_descriptor.xml.services.include?('inter_node_messaging')
- = label_tag 'xml[services][inter_node_messaging]', 'Enable inter-node
messaging', :class => "plain"
- %span Provides cloud aware messaging to facilitate
instance-to-instance and instance-to-external communication compatible with
Amazon SQS, for any (internal & external)cloud deployment
- %li
- %label Availbility
- = check_box_tag 'xml[services][availbility]', '1',
@image_descriptor.xml.services.include?('availbility')
- = label_tag 'xml[services][availbility]', 'Enable high availbility
services', :class => "plain"
- %span Provides REST API's that allow applications and administrators
to inspect instances and know the active state and configuration. Choose high
availability to actively maintain and manage application availability when run
in cloud
- %li
- %label JBoss
- = check_box_tag 'xml[services][jboss]', '1',
@image_descriptor.xml.services.include?('jboss')
- = label_tag 'xml[services][jboss]', 'Enable JBoss infrastructure',
:class => "plain"
- %span Provides cloud ready JBoss infrastructure to be run in public
and internal clouds
- %li
- %label Cooling Tower
- = check_box_tag 'xml[services][cooling_tower]', '1',
@image_descriptor.xml.services.include?('cooling_tower')
- = label_tag 'xml[services][cooling_tower]', 'Enable Cooling Tower',
:class => "plain"
- %span Provides multi-tenant, lightweight container for managing many
cloud ready PaaS services inside a single instance
- .submit
- = submit_tag "Cancel", :name => "cancel"
- = submit_tag "Back", :name => "back"
- = submit_tag "Next", :name => "next"
diff --git a/src/app/views/image_descriptor/software.haml
b/src/app/views/image_descriptor/software.haml
deleted file mode 100644
index 9821af3..0000000
--- a/src/app/views/image_descriptor/software.haml
+++ /dev/null
@@ -1,78 +0,0 @@
-- content_for :scripts do
- :javascript
- $(document).ready(function() {
- $("#dashboard-tabs > ul > li > a").each(function(index) {
- var link = $(this).attr("href") + "?ajax=true";
- $(this).attr("href", link);
- });
- $("#dashboard-tabs").tabs({spinner: "Loading..."});
-
- // when JS is enabled, hide the Dashboard content -- it'll be loaded
- // by jquery UI tab using ajax
- $("#dashboard-content").hide();
- #...@image_descriptor.xml.packages.map {|group, pkgs|
"select_group({group: '#{group}', pkgs: ['#{pkgs.map {|p|
p[:name]}.join("','")}']});"}.join("\n")}
- });
- function remove_group(ev) {
- $(ev.target).parent().remove();
- };
- function get_repository(ev) {
- var rep = $(ev.target).val();
- $("#dashboard-tabs > ul > li > a").each(function(index) {
- var link = $(this).data('load.tabs');
- if (link.search(/repository=[^$&]*/) == -1) {
- link = link + "&repository=" + rep;
- } else {
- link = link.replace(/repository=[^$&]*/, "repository="+rep);
- }
- $("#dashboard-tabs").tabs('url', index, link);
- });
- $("#dashboard-tabs").tabs('load', $("#dashboard-tabs").tabs('option',
'selected'));
- };
- function select_package(group, pkgname, parent) {
- if (!parent) parent = $("#selected_packages");
- if (parent.find(".pkgname").filter(function() {return $(this).text() ==
pkgname}).length == 0) {
- var node = $("<li><input type=checkbox name='xml[packages][]' value='"
+ group + '#' + pkgname + "' checked=true><span class='pkgname'>" + pkgname +
"</span></li>").appendTo(parent);
- }
- };
- function add_group(name) {
- var group = $("<li><span class='group'>" + name + "</span><span
class='select'
onclick='remove_group(event)'>Remove</span><ul></ul></li>").appendTo("#selected_packages");
- return group.find("ul");
- };
- function select_group(opts) {
- var groups = $("#selected_packages li .group").filter(function() {return
$(this).text() == opts.group});
- //FIXME: if group exists, we abort adding group again, merging is not
supported yet
- if (groups.length > 0) return;
- var group = add_group(opts.group);
- for (var i = 0; i < opts.pkgs.length; i++) {
- select_package(opts.group, opts.pkgs[i], group);
- }
- };
-
-- menu = [ { :text => "Groups", :action => "repository_packages_by_group" }, |
- { :text => "Packages", :action => "repository_packages" }, ] |
-
-= render :partial => "nav"
-
-#image_descriptor_form{:class => 'dcloud_form'}
- = error_messages_for 'image_descriptor'
-
- - form_for @image_descriptor, :url => {:action => 'summary', :id =>
@image_descriptor.id} do
- .pkglist_wrapper
- .pkglist
- #dashboard-tabs{ :class => "ui-tabs ui-widget ui-widget-content
ui-corner-all" }
- %ul{ :class => "ui-tabs ui-widget ui-widget-content ui-corner-all
ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header" }
- - menu.each do |item|
- - selection_style = "ui-tabs-selected ui-state-active" if
item[:action] == controller.action_name
- %li{ :class => "#{selection_style} ui-state-default
ui-corner-top", :style => 'clear: none' }
- = "<a href=\"#{url_for :controller => "image_descriptor",
:action => item[:action] }\"><span>#{item[:text]}</span></a>"
- %li{ :class => "select_repository"}
- = select_tag("repository", ["<option value='all'
selected='selected'>All</option>"] + @repositories.map{|repid, rep| "<option
value=\"#{repid}\">#{rep['name']}</option>"}, {:onchange =>
"get_repository(event)"})
- .pkglist{:style => "margin-left: 30px", :class => "left-pkglist"}
- %div{:class => "ui-tabs ui-widget ui-widget-content ui-corner-all
ui-helper-reset ui-helper-clearfix ui-widget-header"}
- Selected packages
- %ul{:id => "selected_packages"}
-
- .submit
- = submit_tag "Cancel", :name => "cancel"
- = submit_tag "Back", :name => "back"
- = submit_tag "Next", :name => "next"
diff --git a/src/app/views/image_descriptor/summary.haml
b/src/app/views/image_descriptor/summary.haml
deleted file mode 100644
index dd8ff1f..0000000
--- a/src/app/views/image_descriptor/summary.haml
+++ /dev/null
@@ -1,64 +0,0 @@
-- content_for :scripts do
- :javascript
- $(document).ready(function() {
- var refreshId = setInterval(function() {
- $('#image_target_list').load('#{url_for :controller =>
'image_descriptor', :action => 'targets', :id => @image_descriptor.id, :ajax =>
true}');
- }, 10000);
- });
- function toggle_build_form_visibility(ev) {
- if ($("#image_build_form").css('display') == 'none') {
- $("#image_build_form").css('display', 'block');
- $(ev.target).val('Cancel');
- } else {
- $("#image_build_form").css('display', 'none');
- $(ev.target).val('Build Images');
- }
- }
-
-= render :partial => "nav"
-
-#image_descriptor_form{:class => 'dcloud_form'}
- = error_messages_for 'image_descriptor'
-
- - form_for @image_descriptor, :url => {:action => 'build', :id =>
@image_descriptor.id} do
- .summary_panel
- %ul{:class => 'side_panel'}
- %li
- BASICS
- %label
- = @image_descriptor.xml.name
- %label
- = @image_descriptor.xml.platform
- %label
- = @image_descriptor.xml.description
- %li
- SERVICES
- - @image_descriptor.xml.services.each do |service|
- %label
- = service
- //FIXME: software could take realy long space
- //%li
- // SOFTWARE
-
- %ul{:class => 'main_panel'}
- .image_build_panel
- %h3
- Images
- %input{:type => 'button', :value => "Build Images", :style =>
'float:right', :onclick => 'toggle_build_form_visibility(event)'}
- #image_build_form
- %ul
- %li
- %label Image formats
- %ul
- - @all_targets.each do |target_id, target|
- %li
- = check_box_tag 'targets[]', target_id, false
- %span
- = target['name']
- = submit_tag "Build"
- = render :partial => 'targets'
-
- .submit
- = submit_tag "Cancel", :name => "cancel"
- = submit_tag "Back", :name => "back"
- = submit_tag "Done", :name => "done"
diff --git a/src/app/views/image_descriptor/targets.haml
b/src/app/views/image_descriptor/targets.haml
deleted file mode 100644
index b4351d5..0000000
--- a/src/app/views/image_descriptor/targets.haml
+++ /dev/null
@@ -1 +0,0 @@
-= render :partial => 'targets'
diff --git a/src/app/views/templates/_basics.haml
b/src/app/views/templates/_basics.haml
new file mode 100644
index 0000000..b89970d
--- /dev/null
+++ b/src/app/views/templates/_basics.haml
@@ -0,0 +1,16 @@
+%ul
+ %li
+ %label Name
+ = text_field_tag 'xml[name]', @image_descriptor.xml.name
+ %span Provide a unique name for template master. Users will see this name
when they choose this image to instantiate.
+ %li
+ %label Platform
+ = select_tag("xml[platform]", @image_descriptor.xml.platforms.map{|repid,
rep| "<option value=\"#{repid}\" selected=\"#{repid ==
@image_descriptor.xml.platform ? 'selected' : ''}\">#{rep['name']}</option>"})
+ %span Choose the software operating system.
+ %li
+ %label Description
+ = text_area_tag("xml[description]", @image_descriptor.xml.description,
:rows => 4)
+ %span Provide a description of your template master. Be descriptive to
help users to identify the images created with this master.
+.submit
+ = submit_tag "Cancel"
+ = submit_tag "Next"
diff --git a/src/app/views/templates/_nav.haml
b/src/app/views/templates/_nav.haml
new file mode 100644
index 0000000..35cfd02
--- /dev/null
+++ b/src/app/views/templates/_nav.haml
@@ -0,0 +1,15 @@
+#image_descriptor_nav
+ %h2 Create a New Template Master
+ %ul{:class => 'nav'}
+ %li{:class => controller.action_name == 'new' ? 'selected' : nil}
+ %h4 BASICS
+ %p Basic RHEL LAMP
+ %li{:class => controller.action_name == 'services' ? 'selected' : nil}
+ %h4 SERVICES
+ %p Add services
+ %li{:class => controller.action_name == 'software' ? 'selected' : nil}
+ %h4 SOFTWARE
+ %p Add software
+ %li{:class => controller.action_name == 'summary' ? 'selected' : nil}
+ %h4 SUMMARY
+ %p Create images
diff --git a/src/app/views/templates/_targets.haml
b/src/app/views/templates/_targets.haml
new file mode 100644
index 0000000..77406f7
--- /dev/null
+++ b/src/app/views/templates/_targets.haml
@@ -0,0 +1,18 @@
+#image_target_list{:class => 'target_list'}
+ - if @image_descriptor.image_descriptor_targets.empty?
+ .empty No images have been created yet.
+ -else
+ %ul
+ - @image_descriptor.image_descriptor_targets.each do |target|
+ %li
+ %span{:class => 'actions'}
+
+ - if ImageDescriptorTarget::ACTIVE_STATES.include?(target.status)
+ = link_to 'Cancel', {:controller => 'image_descriptor_target',
:action => 'cancel', :id => target.id, :descriptor_id => @image_descriptor.id}
+ %span{:class => 'status'}
+ = target.status
+ = @all_targets[target.name]['name']
+ %p
+ = target.created_at
+ //%span{:style => 'float:right'}
+ // Cancel
diff --git a/src/app/views/templates/new.haml b/src/app/views/templates/new.haml
new file mode 100644
index 0000000..5a1adda
--- /dev/null
+++ b/src/app/views/templates/new.haml
@@ -0,0 +1,22 @@
+= render :partial => "nav"
+
+#image_descriptor_form{:class => 'dcloud_form'}
+ = error_messages_for 'image_descriptor'
+
+ - form_for @image_descriptor, :url => {:action => 'services', :id =>
@image_descriptor.id} do
+ %ul
+ %li
+ %label Name
+ = text_field_tag 'xml[name]', @image_descriptor.xml.name
+ %span Provide a unique name for template master. Users will see this
name when they choose this image to instantiate.
+ %li
+ %label Platform
+ = select_tag("xml[platform]",
@image_descriptor.xml.platforms.map{|repid, rep| "<option value=\"#{repid}\"
selected=\"#{repid == @image_descriptor.xml.platform ? 'selected' :
''}\">#{rep['name']}</option>"})
+ %span Choose the software operating system.
+ %li
+ %label Description
+ = text_area_tag("xml[description]", @image_descriptor.xml.description,
:rows => 4)
+ %span Provide a description of your template master. Be descriptive to
help users to identify the images created with this master.
+ .submit
+ = submit_tag "Cancel", :name => "cancel"
+ = submit_tag "Next", :name => "next"
diff --git a/src/app/views/templates/repository_packages.haml
b/src/app/views/templates/repository_packages.haml
new file mode 100644
index 0000000..9414b85
--- /dev/null
+++ b/src/app/views/templates/repository_packages.haml
@@ -0,0 +1,4 @@
+%ul
+ - @packages.each do |pkg|
+ %li
+ = "#{pkg[:name]}<span class='select' onclick=\"select_group({group:
'#{pkg[:group]}', pkgs: ['#{pkg[:name]}']})\">Select</span>"
diff --git a/src/app/views/templates/repository_packages_by_group.haml
b/src/app/views/templates/repository_packages_by_group.haml
new file mode 100644
index 0000000..2f2b704
--- /dev/null
+++ b/src/app/views/templates/repository_packages_by_group.haml
@@ -0,0 +1,5 @@
+%ul
+ - @packages.keys.map {|group| group.to_s}.sort.each do |group|
+ %li
+ - pkgs = @packages[group].map {|p| p[:name]}.join("','")
+ = "#{group}<span class='select' onclick=\"select_group({group:
'#{group}', pkgs: ['#{pkgs}']})\">Select</span>"
diff --git a/src/app/views/templates/services.haml
b/src/app/views/templates/services.haml
new file mode 100644
index 0000000..ac169b7
--- /dev/null
+++ b/src/app/views/templates/services.haml
@@ -0,0 +1,37 @@
+= render :partial => "nav"
+
+#image_descriptor_form{:class => 'dcloud_form'}
+ = error_messages_for 'image_descriptor'
+
+ - form_for @image_descriptor, :url => {:action => 'software', :id =>
@image_descriptor.id} do
+ = hidden_field :image_descriptor, :id
+ %ul
+ %li
+ %label Storage
+ = check_box_tag 'xml[services][amazon3_storage]', '1',
@image_descriptor.xml.services.include?('amazon3_storage')
+ = label_tag 'xml[services][amazon3_storage]', 'Enable Amazon S3
storage', :class => "plain"
+ %span Provides cloud aware table storage for both user-data and
guest-images and snapshots compatible with Amazon S3, for any (internal &
external)cloud deployment
+ %li
+ %label Inter-node Messaging
+ = check_box_tag 'xml[services][inter_node_messaging]', '1',
@image_descriptor.xml.services.include?('inter_node_messaging')
+ = label_tag 'xml[services][inter_node_messaging]', 'Enable inter-node
messaging', :class => "plain"
+ %span Provides cloud aware messaging to facilitate
instance-to-instance and instance-to-external communication compatible with
Amazon SQS, for any (internal & external)cloud deployment
+ %li
+ %label Availbility
+ = check_box_tag 'xml[services][availbility]', '1',
@image_descriptor.xml.services.include?('availbility')
+ = label_tag 'xml[services][availbility]', 'Enable high availbility
services', :class => "plain"
+ %span Provides REST API's that allow applications and administrators
to inspect instances and know the active state and configuration. Choose high
availability to actively maintain and manage application availability when run
in cloud
+ %li
+ %label JBoss
+ = check_box_tag 'xml[services][jboss]', '1',
@image_descriptor.xml.services.include?('jboss')
+ = label_tag 'xml[services][jboss]', 'Enable JBoss infrastructure',
:class => "plain"
+ %span Provides cloud ready JBoss infrastructure to be run in public
and internal clouds
+ %li
+ %label Cooling Tower
+ = check_box_tag 'xml[services][cooling_tower]', '1',
@image_descriptor.xml.services.include?('cooling_tower')
+ = label_tag 'xml[services][cooling_tower]', 'Enable Cooling Tower',
:class => "plain"
+ %span Provides multi-tenant, lightweight container for managing many
cloud ready PaaS services inside a single instance
+ .submit
+ = submit_tag "Cancel", :name => "cancel"
+ = submit_tag "Back", :name => "back"
+ = submit_tag "Next", :name => "next"
diff --git a/src/app/views/templates/software.haml
b/src/app/views/templates/software.haml
new file mode 100644
index 0000000..04e34a3
--- /dev/null
+++ b/src/app/views/templates/software.haml
@@ -0,0 +1,78 @@
+- content_for :scripts do
+ :javascript
+ $(document).ready(function() {
+ $("#dashboard-tabs > ul > li > a").each(function(index) {
+ var link = $(this).attr("href") + "?ajax=true";
+ $(this).attr("href", link);
+ });
+ $("#dashboard-tabs").tabs({spinner: "Loading..."});
+
+ // when JS is enabled, hide the Dashboard content -- it'll be loaded
+ // by jquery UI tab using ajax
+ $("#dashboard-content").hide();
+ #...@image_descriptor.xml.packages.map {|group, pkgs|
"select_group({group: '#{group}', pkgs: ['#{pkgs.map {|p|
p[:name]}.join("','")}']});"}.join("\n")}
+ });
+ function remove_group(ev) {
+ $(ev.target).parent().remove();
+ };
+ function get_repository(ev) {
+ var rep = $(ev.target).val();
+ $("#dashboard-tabs > ul > li > a").each(function(index) {
+ var link = $(this).data('load.tabs');
+ if (link.search(/repository=[^$&]*/) == -1) {
+ link = link + "&repository=" + rep;
+ } else {
+ link = link.replace(/repository=[^$&]*/, "repository="+rep);
+ }
+ $("#dashboard-tabs").tabs('url', index, link);
+ });
+ $("#dashboard-tabs").tabs('load', $("#dashboard-tabs").tabs('option',
'selected'));
+ };
+ function select_package(group, pkgname, parent) {
+ if (!parent) parent = $("#selected_packages");
+ if (parent.find(".pkgname").filter(function() {return $(this).text() ==
pkgname}).length == 0) {
+ var node = $("<li><input type=checkbox name='xml[packages][]' value='"
+ group + '#' + pkgname + "' checked=true><span class='pkgname'>" + pkgname +
"</span></li>").appendTo(parent);
+ }
+ };
+ function add_group(name) {
+ var group = $("<li><span class='group'>" + name + "</span><span
class='select'
onclick='remove_group(event)'>Remove</span><ul></ul></li>").appendTo("#selected_packages");
+ return group.find("ul");
+ };
+ function select_group(opts) {
+ var groups = $("#selected_packages li .group").filter(function() {return
$(this).text() == opts.group});
+ //FIXME: if group exists, we abort adding group again, merging is not
supported yet
+ if (groups.length > 0) return;
+ var group = add_group(opts.group);
+ for (var i = 0; i < opts.pkgs.length; i++) {
+ select_package(opts.group, opts.pkgs[i], group);
+ }
+ };
+
+- menu = [ { :text => "Groups", :action => "repository_packages_by_group" }, |
+ { :text => "Packages", :action => "repository_packages" }, ] |
+
+= render :partial => "nav"
+
+#image_descriptor_form{:class => 'dcloud_form'}
+ = error_messages_for 'image_descriptor'
+
+ - form_for @image_descriptor, :url => {:action => 'summary', :id =>
@image_descriptor.id} do
+ .pkglist_wrapper
+ .pkglist
+ #dashboard-tabs{ :class => "ui-tabs ui-widget ui-widget-content
ui-corner-all" }
+ %ul{ :class => "ui-tabs ui-widget ui-widget-content ui-corner-all
ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header" }
+ - menu.each do |item|
+ - selection_style = "ui-tabs-selected ui-state-active" if
item[:action] == controller.action_name
+ %li{ :class => "#{selection_style} ui-state-default
ui-corner-top", :style => 'clear: none' }
+ = "<a href=\"#{url_for :controller => "templates", :action =>
item[:action] }\"><span>#{item[:text]}</span></a>"
+ %li{ :class => "select_repository"}
+ = select_tag("repository", ["<option value='all'
selected='selected'>All</option>"] + @repositories.map{|repid, rep| "<option
value=\"#{repid}\">#{rep['name']}</option>"}, {:onchange =>
"get_repository(event)"})
+ .pkglist{:style => "margin-left: 30px", :class => "left-pkglist"}
+ %div{:class => "ui-tabs ui-widget ui-widget-content ui-corner-all
ui-helper-reset ui-helper-clearfix ui-widget-header"}
+ Selected packages
+ %ul{:id => "selected_packages"}
+
+ .submit
+ = submit_tag "Cancel", :name => "cancel"
+ = submit_tag "Back", :name => "back"
+ = submit_tag "Next", :name => "next"
diff --git a/src/app/views/templates/summary.haml
b/src/app/views/templates/summary.haml
new file mode 100644
index 0000000..faff8e3
--- /dev/null
+++ b/src/app/views/templates/summary.haml
@@ -0,0 +1,64 @@
+- content_for :scripts do
+ :javascript
+ $(document).ready(function() {
+ var refreshId = setInterval(function() {
+ $('#image_target_list').load('#{url_for :controller => 'templates',
:action => 'targets', :id => @image_descriptor.id, :ajax => true}');
+ }, 10000);
+ });
+ function toggle_build_form_visibility(ev) {
+ if ($("#image_build_form").css('display') == 'none') {
+ $("#image_build_form").css('display', 'block');
+ $(ev.target).val('Cancel');
+ } else {
+ $("#image_build_form").css('display', 'none');
+ $(ev.target).val('Build Images');
+ }
+ }
+
+= render :partial => "nav"
+
+#image_descriptor_form{:class => 'dcloud_form'}
+ = error_messages_for 'image_descriptor'
+
+ - form_for @image_descriptor, :url => {:action => 'build', :id =>
@image_descriptor.id} do
+ .summary_panel
+ %ul{:class => 'side_panel'}
+ %li
+ BASICS
+ %label
+ = @image_descriptor.xml.name
+ %label
+ = @image_descriptor.xml.platform
+ %label
+ = @image_descriptor.xml.description
+ %li
+ SERVICES
+ - @image_descriptor.xml.services.each do |service|
+ %label
+ = service
+ //FIXME: software could take realy long space
+ //%li
+ // SOFTWARE
+
+ %ul{:class => 'main_panel'}
+ .image_build_panel
+ %h3
+ Images
+ %input{:type => 'button', :value => "Build Images", :style =>
'float:right', :onclick => 'toggle_build_form_visibility(event)'}
+ #image_build_form
+ %ul
+ %li
+ %label Image formats
+ %ul
+ - @all_targets.each do |target_id, target|
+ %li
+ = check_box_tag 'targets[]', target_id, false
+ %span
+ = target['name']
+ = submit_tag "Build"
+ = render :partial => 'targets'
+
+ .submit
+ = submit_tag "Cancel", :name => "cancel"
+ = submit_tag "Back", :name => "back"
+ = submit_tag "Done", :name => "done"
diff --git a/src/app/views/templates/targets.haml
b/src/app/views/templates/targets.haml
new file mode 100644
index 0000000..b4351d5
--- /dev/null
+++ b/src/app/views/templates/targets.haml
@@ -0,0 +1 @@
+= render :partial => 'targets'
--
1.7.0.1
_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel