From: Jan Provaznik <[email protected]>
---
src/app/controllers/image_descriptor_controller.rb | 42 +++++++++++++++++++
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/_services.haml | 32 ++++++++++++++
src/app/views/image_descriptor/_software.haml | 36 ++++++++++++++++
src/app/views/image_descriptor/_summary.haml | 16 +++++++
src/app/views/image_descriptor/new.haml | 9 ++++
src/public/stylesheets/components.css | 44 ++++++++++++++++++++
.../functional/image_descriptor_controller_test.rb | 8 ++++
11 files changed, 222 insertions(+), 0 deletions(-)
create mode 100644 src/app/controllers/image_descriptor_controller.rb
create mode 100644 src/app/helpers/image_descriptor_helper.rb
create mode 100644 src/app/views/image_descriptor/_basics.haml
create mode 100644 src/app/views/image_descriptor/_nav.haml
create mode 100644 src/app/views/image_descriptor/_services.haml
create mode 100644 src/app/views/image_descriptor/_software.haml
create mode 100644 src/app/views/image_descriptor/_summary.haml
create mode 100644 src/app/views/image_descriptor/new.haml
create mode 100644 src/test/functional/image_descriptor_controller_test.rb
diff --git a/src/app/controllers/image_descriptor_controller.rb
b/src/app/controllers/image_descriptor_controller.rb
new file mode 100644
index 0000000..6aa9304
--- /dev/null
+++ b/src/app/controllers/image_descriptor_controller.rb
@@ -0,0 +1,42 @@
+class ImageDescriptorController < ApplicationController
+ before_filter :require_user
+
+ TABS = %w(basics services software summary)
+
+ def new
+ # FIXME: check permission, something like IMAGE_CREATE
+ if params[:commit] == 'Cancel'
+ redirect_to :controller => "image", :action => 'show'
+ return
+ end
+
+ @image_descriptor = params[:image_descriptor] &&
params[:image_descriptor][:id] ?
ImageDescriptor.find(params[:image_descriptor][:id]) : ImageDescriptor.new
+ @image_descriptor.update_xml_attributes!(params[:xml] || {})
+ #...@repositories = RepositoryManager.new.repositories
+
+ idx = (TABS.index(params[:tab]) || -1) + (params[:commit] == 'Back' ? -1 :
1)
+ @tab = TABS[idx] || TABS[0]
+ end
+
+ def create
+ if params[:commit] == 'Cancel'
+ redirect_to :controller => "image", :action => 'show'
+ return
+ end
+ redirect_to :action => 'images', :tab => 'show'
+ end
+
+ def 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 repid != params[:repository]
+ rep = rmanager.get_repository(repid)
+ packages += rep.get_packages.map {|p| [p[:name], p[:group],
p[:description], '']}
+ end
+ end
+end
diff --git a/src/app/helpers/image_descriptor_helper.rb
b/src/app/helpers/image_descriptor_helper.rb
new file mode 100644
index 0000000..fc89001
--- /dev/null
+++ b/src/app/helpers/image_descriptor_helper.rb
@@ -0,0 +1,2 @@
+module ImageDescriptorHelper
+end
diff --git a/src/app/views/dashboard/summary.haml
b/src/app/views/dashboard/summary.haml
index 4eeb58b..993cd18 100644
--- a/src/app/views/dashboard/summary.haml
+++ b/src/app/views/dashboard/summary.haml
@@ -38,6 +38,8 @@
Create a Template
%a{:href => url_for(:controller => "users", :action => "new")}
Create a User
+ %a{:href => url_for(:controller => "image_descriptor", :action => "new")}
+ Create a Image
- else
%a{:href => url_for(:controller => "", :action => "")}
Launch Instances
diff --git a/src/app/views/image_descriptor/_basics.haml
b/src/app/views/image_descriptor/_basics.haml
new file mode 100644
index 0000000..b89970d
--- /dev/null
+++ b/src/app/views/image_descriptor/_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/image_descriptor/_nav.haml
b/src/app/views/image_descriptor/_nav.haml
new file mode 100644
index 0000000..c923baf
--- /dev/null
+++ b/src/app/views/image_descriptor/_nav.haml
@@ -0,0 +1,15 @@
+#image_descriptor_nav
+ %h2 Create a New Template Master
+ %ul{:class => 'nav'}
+ %li{:class => @tab == 'basics' ? 'selected' : nil}
+ %h4 BASICS
+ %p Basic RHEL LAMP
+ %li{:class => @tab == 'services' ? 'selected' : nil}
+ %h4 SERVICES
+ %p Add services
+ %li{:class => @tab == 'software' ? 'selected' : nil}
+ %h4 SOFTWARE
+ %p Add software
+ %li{:class => @tab == 'summary' ? 'selected' : nil}
+ %h4 SUMMARY
+ %p Create images
diff --git a/src/app/views/image_descriptor/_services.haml
b/src/app/views/image_descriptor/_services.haml
new file mode 100644
index 0000000..88cd38a
--- /dev/null
+++ b/src/app/views/image_descriptor/_services.haml
@@ -0,0 +1,32 @@
+%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'
+ %span Provides cloud avare table storage.
+ %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'
+ %span Provides cloud avare messaging.
+ %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'
+ %span
+ %li
+ %label JBoss
+ = check_box_tag 'xml[services][jboss]', '1',
@image_descriptor.xml.services.include?('jboss')
+ = label_tag 'xml[services][jboss]', 'Enable JBoss infrastructure'
+ %span
+ %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'
+ %span
+
+
+.submit
+ = submit_tag "Cancel"
+ = submit_tag "Back"
+ = submit_tag "Next"
diff --git a/src/app/views/image_descriptor/_software.haml
b/src/app/views/image_descriptor/_software.haml
new file mode 100644
index 0000000..4070408
--- /dev/null
+++ b/src/app/views/image_descriptor/_software.haml
@@ -0,0 +1,36 @@
+- 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();
+
+ // when JS is enabled, hide the Dashboard content -- it'll be loaded
+ // by jquery UI tab using ajax
+ $("#dashboard-content").hide();
+ });
+
+- menu = [ { :text => "Groups", :action => "index" }, |
+ { :text => "Packages", :action => "index" }, ] |
+
+//%div{:style => 'float:left;width:400px'}
+// #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" }
+// = "tab #{item[:text]}"
+
+
+.pkglist
+ %div all packages
+
+.pkglist
+ %div selected packages
+
+.submit
+ = submit_tag "Cancel"
+ = submit_tag "Back"
+ = submit_tag "Next"
diff --git a/src/app/views/image_descriptor/_summary.haml
b/src/app/views/image_descriptor/_summary.haml
new file mode 100644
index 0000000..06e1ae5
--- /dev/null
+++ b/src/app/views/image_descriptor/_summary.haml
@@ -0,0 +1,16 @@
+%ul
+ %li
+ %label Name
+ = text_field :image_descriptor, :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("image_descriptor", "platform", ['Fedora', 'RHEL'])
+ %span Choose the software operating system.
+ %li
+ %label Description
+ = text_area("image_descriptor", "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/new.haml
b/src/app/views/image_descriptor/new.haml
new file mode 100644
index 0000000..e6f4a3e
--- /dev/null
+++ b/src/app/views/image_descriptor/new.haml
@@ -0,0 +1,9 @@
+= render :partial => "nav", :locals => {:tab => params[:tab]}
+
+#image_descriptor_form{:class => 'dcloud_form'}
+ = error_messages_for 'image_descriptor'
+
+ - form_tag :action => 'new' do
+ %input{:type => 'hidden', :name => 'tab', :value => @tab}
+ = hidden_field :image_descriptor, :id
+ = render :partial => @tab
diff --git a/src/public/stylesheets/components.css
b/src/public/stylesheets/components.css
index 5b25cd4..8a2ff02 100644
--- a/src/public/stylesheets/components.css
+++ b/src/public/stylesheets/components.css
@@ -136,3 +136,47 @@ ul.nav li.selected {
color: blue;
text-decoration: underline;
}
+
+#image_descriptor_form {
+ width: 80%;
+ margin: 20px;
+ display: inline-block;
+}
+
+
+#image_descriptor_form ul li textarea {
+ width: 302px;
+}
+
+#image_descriptor_form ul li select {
+ width: 302px;
+}
+
+#image_descriptor_form ul li input {
+ width: 302px;
+}
+
+#image_descriptor_form .pkglist {
+ float:left;
+ width:400px;
+ height:300px;
+ overflow:auto;
+}
+
+#image_descriptor_nav {
+ margin: 20px;
+}
+
+#image_descriptor_nav ul {
+ width: 100%;
+}
+
+#image_descriptor_nav ul li {
+ display: inline;
+ float: left;
+ width: 23%;
+ border: 1px solid black;
+ padding-left: 10px;
+ clear: none;
+ font-size: 1em;
+}
diff --git a/src/test/functional/image_descriptor_controller_test.rb
b/src/test/functional/image_descriptor_controller_test.rb
new file mode 100644
index 0000000..7fea6ca
--- /dev/null
+++ b/src/test/functional/image_descriptor_controller_test.rb
@@ -0,0 +1,8 @@
+require 'test_helper'
+
+class ImageDescriptorControllerTest < ActionController::TestCase
+ # Replace this with your real tests.
+ test "the truth" do
+ assert true
+ end
+end
--
1.7.0.1
_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel