It can be quite hard to manage a pool of 40-50 VMs without informations about the OS running, the contact (which is the only one to know when the vm can really be destroyed) or an End Of Life date. This patch add those fields, and rework a little the VM list view, in order to show gracefully those new fields. It has been made at the expense of UUID, Total Run Time & Load fields. Since those fields are often better displayed from a monitoring software, I have though it was acceptable. Signed-off-by: Loiseleur Michel <mloiseleur at linagora.com> --- src/app/controllers/pool_controller.rb | 6 ++-- src/app/views/vm/_form.rhtml | 10 ++++++-- src/app/views/vm/_grid.rhtml | 9 ++++--- src/db/migrate/044_add_vm_fields.rb | 34 ++++++++++++++++++++++++++++++++ 4 files changed, 49 insertions(+), 10 deletions(-) create mode 100644 src/db/migrate/044_add_vm_fields.rb diff --git a/src/app/controllers/pool_controller.rb b/src/app/controllers/pool_controller.rb index e86b064..e6c341d 100644 --- a/src/app/controllers/pool_controller.rb +++ b/src/app/controllers/pool_controller.rb @@ -94,11 +94,11 @@ class PoolController < ApplicationController end def vms_json(args) - attr_list = [:id, :description, :uuid, + attr_list = [:id, :description, :num_vcpus_allocated, :memory_allocated_in_mb, - :state, :calc_uptime, :id] + :state, :contact, :os, :eol, :comment ] if (@pool.is_a? VmResourcePool) and @pool.get_hardware_pool.can_view(@user) - attr_list.insert(3, [:host, :hostname]) + attr_list.insert(2, [:host, :hostname]) end json_list(args[:full_items], attr_list, [:all], args[:find_opts]) end diff --git a/src/app/views/vm/_form.rhtml b/src/app/views/vm/_form.rhtml index adb75d2..13e73db 100644 --- a/src/app/views/vm/_form.rhtml +++ b/src/app/views/vm/_form.rhtml @@ -8,10 +8,14 @@ <div class="form_heading clickable open">General</div> <div class="vm_form_section"> - <%= text_field_with_label "Name:", "vm", "description", {:style=>"width:250px;"} %> - <%= text_field_with_label "UUID:", "vm", "uuid", {:style=>"width:250px;"} %> - <%= select_with_label "Operating System:", 'vm', 'provisioning_and_boot_settings', @provisioning_options, :style=>"width:250px;" %> + <%= text_field_with_label "Name:", "vm", "description" %> + <%= text_field_with_label "UUID:", "vm", "uuid" %> + <%= select_with_label "Provisioning:", 'vm', 'provisioning_and_boot_settings', @provisioning_options %> <% if controller.action_name == "edit" %><b style="color: #FF0000">*Warning* Editing provision could overwrite vm</b><% end %> + <%= text_field_with_label "Contact:", "vm", "contact" %> + <%= text_field_with_label "Operating System:", "vm", "os" %> + <%= text_field_with_label "End Of Life:", "vm", "eol" %> + <%= text_field_with_label "Comment:", "vm", "comment" %> <div class="clear_row" style="height:15px;"></div> </div> diff --git a/src/app/views/vm/_grid.rhtml b/src/app/views/vm/_grid.rhtml index e3fa0e0..fe821e1 100644 --- a/src/app/views/vm/_grid.rhtml +++ b/src/app/views/vm/_grid.rhtml @@ -27,16 +27,17 @@ <% end %> colModel : [ {display: '', name : 'id', width : 20, sortable : false, align: 'left', process: <%= table_id %>checkbox}, - {display: 'Description', name : 'description', width : 180, sortable : true, align: 'left'}, - {display: 'UUID', name : 'uuid', width : 180, sortable : true, align: 'left'}, + {display: 'Name', name : 'description', width : 180, sortable : true, align: 'left'}, <% if (pool.is_a? VmResourcePool) and pool.get_hardware_pool.can_view(@user) %> {display: 'Host', name : 'host', width: 180, sortable : true, align: 'left' }, <% end %> {display: 'CPUs', name : 'num_vcpus_allocated', width : 40, sortable : true, align: 'left'}, {display: 'Memory (MB)', name : 'memory_allocated', width : 60, sortable : true, align: 'right'}, {display: 'State', name : 'state', width : 50, sortable : true, align: 'right'}, - {display: 'Total Run Time', name : 'calc_uptime', width : 50, align: 'right'}, - {display: 'Load', name : 'load', width: 180, sortable : false, align: 'left', process: <%= table_id %>_load_widget } + {display: 'Contact', name : 'contact', width : 100, align: 'left'}, + {display: 'OS', name : 'os', width : 60, sortable : true, align: 'left'}, + {display: 'EOL', name : 'eol', width : 60, sortable : true, align: 'right'}, + {display: 'Comment', name : 'comment', width : 100, sortable : true, align: 'right'} ], sortname: "description", sortorder: "asc", diff --git a/src/db/migrate/044_add_vm_fields.rb b/src/db/migrate/044_add_vm_fields.rb new file mode 100644 index 0000000..834f0ec --- /dev/null +++ b/src/db/migrate/044_add_vm_fields.rb @@ -0,0 +1,34 @@ +# Copyright (C) 2010 Linagora. +# Written by Michel Loiseleur <mloiseleur at linagora.com> +# +# 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. + +# introduce information fields for VMs +class AddVmFields < ActiveRecord::Migration + def self.up + add_column :vms, :contact, :string, :null => false, :default => '' + add_column :vms, :comment, :string, :null => false, :default => '' + add_column :vms, :eol, :date, :null => false, :default => Date.new(1970,01,01).to_s + add_column :vms, :os, :string, :null => false, :default => '' + end + + def self.down + remove_column :vms, :contact + remove_column :vms, :comment + remove_column :vms, :eol + remove_column :vms, :os + end +end -- 1.7.0
Hi, Any comments on this one ? Regards, Le 25/02/2010 13:28, Loiseleur Michel a ?crit :> It can be quite hard to manage a pool of 40-50 VMs without informations about the OS running, the contact (which is the only one to know when the vm can really be destroyed) or an End Of Life date. This patch add those fields, and rework a little the VM list view, in order to show gracefully those new fields. It has been made at the expense of UUID, Total Run Time& Load fields. Since those fields are often better displayed from a monitoring software, I have though it was acceptable. > > Signed-off-by: Loiseleur Michel<mloiseleur at linagora.com> > --- > src/app/controllers/pool_controller.rb | 6 ++-- > src/app/views/vm/_form.rhtml | 10 ++++++-- > src/app/views/vm/_grid.rhtml | 9 ++++--- > src/db/migrate/044_add_vm_fields.rb | 34 ++++++++++++++++++++++++++++++++ > 4 files changed, 49 insertions(+), 10 deletions(-) > create mode 100644 src/db/migrate/044_add_vm_fields.rb > > diff --git a/src/app/controllers/pool_controller.rb b/src/app/controllers/pool_controller.rb > index e86b064..e6c341d 100644 > --- a/src/app/controllers/pool_controller.rb > +++ b/src/app/controllers/pool_controller.rb > @@ -94,11 +94,11 @@ class PoolController< ApplicationController > end > > def vms_json(args) > - attr_list = [:id, :description, :uuid, > + attr_list = [:id, :description, > :num_vcpus_allocated, :memory_allocated_in_mb, > - :state, :calc_uptime, :id] > + :state, :contact, :os, :eol, :comment ] > if (@pool.is_a? VmResourcePool) and @pool.get_hardware_pool.can_view(@user) > - attr_list.insert(3, [:host, :hostname]) > + attr_list.insert(2, [:host, :hostname]) > end > json_list(args[:full_items], attr_list, [:all], args[:find_opts]) > end > diff --git a/src/app/views/vm/_form.rhtml b/src/app/views/vm/_form.rhtml > index adb75d2..13e73db 100644 > --- a/src/app/views/vm/_form.rhtml > +++ b/src/app/views/vm/_form.rhtml > @@ -8,10 +8,14 @@ > > <div class="form_heading clickable open">General</div> > <div class="vm_form_section"> > -<%= text_field_with_label "Name:", "vm", "description", {:style=>"width:250px;"} %> > -<%= text_field_with_label "UUID:", "vm", "uuid", {:style=>"width:250px;"} %> > -<%= select_with_label "Operating System:", 'vm', 'provisioning_and_boot_settings', @provisioning_options, :style=>"width:250px;" %> > +<%= text_field_with_label "Name:", "vm", "description" %> > +<%= text_field_with_label "UUID:", "vm", "uuid" %> > +<%= select_with_label "Provisioning:", 'vm', 'provisioning_and_boot_settings', @provisioning_options %> > <% if controller.action_name == "edit" %><b style="color: #FF0000">*Warning* Editing provision could overwrite vm</b><% end %> > +<%= text_field_with_label "Contact:", "vm", "contact" %> > +<%= text_field_with_label "Operating System:", "vm", "os" %> > +<%= text_field_with_label "End Of Life:", "vm", "eol" %> > +<%= text_field_with_label "Comment:", "vm", "comment" %> > > <div class="clear_row" style="height:15px;"></div> > </div> > diff --git a/src/app/views/vm/_grid.rhtml b/src/app/views/vm/_grid.rhtml > index e3fa0e0..fe821e1 100644 > --- a/src/app/views/vm/_grid.rhtml > +++ b/src/app/views/vm/_grid.rhtml > @@ -27,16 +27,17 @@ > <% end %> > colModel : [ > {display: '', name : 'id', width : 20, sortable : false, align: 'left', process:<%= table_id %>checkbox}, > - {display: 'Description', name : 'description', width : 180, sortable : true, align: 'left'}, > - {display: 'UUID', name : 'uuid', width : 180, sortable : true, align: 'left'}, > + {display: 'Name', name : 'description', width : 180, sortable : true, align: 'left'}, > <% if (pool.is_a? VmResourcePool) and pool.get_hardware_pool.can_view(@user) %> > {display: 'Host', name : 'host', width: 180, sortable : true, align: 'left' }, > <% end %> > {display: 'CPUs', name : 'num_vcpus_allocated', width : 40, sortable : true, align: 'left'}, > {display: 'Memory (MB)', name : 'memory_allocated', width : 60, sortable : true, align: 'right'}, > {display: 'State', name : 'state', width : 50, sortable : true, align: 'right'}, > - {display: 'Total Run Time', name : 'calc_uptime', width : 50, align: 'right'}, > - {display: 'Load', name : 'load', width: 180, sortable : false, align: 'left', process:<%= table_id %>_load_widget } > + {display: 'Contact', name : 'contact', width : 100, align: 'left'}, > + {display: 'OS', name : 'os', width : 60, sortable : true, align: 'left'}, > + {display: 'EOL', name : 'eol', width : 60, sortable : true, align: 'right'}, > + {display: 'Comment', name : 'comment', width : 100, sortable : true, align: 'right'} > ], > sortname: "description", > sortorder: "asc", > diff --git a/src/db/migrate/044_add_vm_fields.rb b/src/db/migrate/044_add_vm_fields.rb > new file mode 100644 > index 0000000..834f0ec > --- /dev/null > +++ b/src/db/migrate/044_add_vm_fields.rb > @@ -0,0 +1,34 @@ > +# Copyright (C) 2010 Linagora. > +# Written by Michel Loiseleur<mloiseleur at linagora.com> > +# > +# 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. > + > +# introduce information fields for VMs > +class AddVmFields< ActiveRecord::Migration > + def self.up > + add_column :vms, :contact, :string, :null => false, :default => '' > + add_column :vms, :comment, :string, :null => false, :default => '' > + add_column :vms, :eol, :date, :null => false, :default => Date.new(1970,01,01).to_s > + add_column :vms, :os, :string, :null => false, :default => '' > + end > + > + def self.down > + remove_column :vms, :contact > + remove_column :vms, :comment > + remove_column :vms, :eol > + remove_column :vms, :os > + end > +end >-- Loiseleur Michel Directeur de l'OSSA Linagora / 80, rue Roque de Fillol / 92800 PUTEAUX Tel/Fax : +33 1 46 96 63 63 / +33 1 46 96 63 64 http://www.08000linux.com/ | http://www.tosca-project.net "Ce n'est pas le logiciel qui est libre, c'est vous"
Pushed On jeudi 25 f?vrier 2010 13:28:59 Loiseleur Michel wrote:> It can be quite hard to manage a pool of 40-50 VMs without informations > about the OS running, the contact (which is the only one to know when the > vm can really be destroyed) or an End Of Life date. This patch add those > fields, and rework a little the VM list view, in order to show gracefully > those new fields. It has been made at the expense of UUID, Total Run Time > & Load fields. Since those fields are often better displayed from a > monitoring software, I have though it was acceptable. > > Signed-off-by: Loiseleur Michel <mloiseleur at linagora.com> > --- > src/app/controllers/pool_controller.rb | 6 ++-- > src/app/views/vm/_form.rhtml | 10 ++++++-- > src/app/views/vm/_grid.rhtml | 9 ++++--- > src/db/migrate/044_add_vm_fields.rb | 34 > ++++++++++++++++++++++++++++++++ 4 files changed, 49 insertions(+), 10 > deletions(-) > create mode 100644 src/db/migrate/044_add_vm_fields.rb > > diff --git a/src/app/controllers/pool_controller.rb > b/src/app/controllers/pool_controller.rb index e86b064..e6c341d 100644 > --- a/src/app/controllers/pool_controller.rb > +++ b/src/app/controllers/pool_controller.rb > @@ -94,11 +94,11 @@ class PoolController < ApplicationController > end > > def vms_json(args) > - attr_list = [:id, :description, :uuid, > + attr_list = [:id, :description, > > :num_vcpus_allocated, :memory_allocated_in_mb, > > - :state, :calc_uptime, :id] > + :state, :contact, :os, :eol, :comment ] > if (@pool.is_a? VmResourcePool) and > @pool.get_hardware_pool.can_view(@user) - attr_list.insert(3, [:host, > :hostname]) > + attr_list.insert(2, [:host, :hostname]) > end > json_list(args[:full_items], attr_list, [:all], args[:find_opts]) > end > diff --git a/src/app/views/vm/_form.rhtml b/src/app/views/vm/_form.rhtml > index adb75d2..13e73db 100644 > --- a/src/app/views/vm/_form.rhtml > +++ b/src/app/views/vm/_form.rhtml > @@ -8,10 +8,14 @@ > > <div class="form_heading clickable open">General</div> > <div class="vm_form_section"> > - <%= text_field_with_label "Name:", "vm", "description", > {:style=>"width:250px;"} %> - <%= text_field_with_label "UUID:", "vm", > "uuid", {:style=>"width:250px;"} %> - <%= select_with_label "Operating > System:", 'vm', 'provisioning_and_boot_settings', @provisioning_options, > :style=>"width:250px;" %> + <%= text_field_with_label "Name:", "vm", > "description" %> > + <%= text_field_with_label "UUID:", "vm", "uuid" %> > + <%= select_with_label "Provisioning:", 'vm', > 'provisioning_and_boot_settings', @provisioning_options %> <% if > controller.action_name == "edit" %><b style="color: #FF0000">*Warning* > Editing provision could overwrite vm</b><% end %> + <%> text_field_with_label "Contact:", "vm", "contact" %> > + <%= text_field_with_label "Operating System:", "vm", "os" %> > + <%= text_field_with_label "End Of Life:", "vm", "eol" %> > + <%= text_field_with_label "Comment:", "vm", "comment" %> > > <div class="clear_row" style="height:15px;"></div> > </div> > diff --git a/src/app/views/vm/_grid.rhtml b/src/app/views/vm/_grid.rhtml > index e3fa0e0..fe821e1 100644 > --- a/src/app/views/vm/_grid.rhtml > +++ b/src/app/views/vm/_grid.rhtml > @@ -27,16 +27,17 @@ > <% end %> > colModel : [ > {display: '', name : 'id', width : 20, sortable : false, align: > 'left', process: <%= table_id %>checkbox}, - {display: > 'Description', name : 'description', width : 180, sortable : true, align: > 'left'}, - {display: 'UUID', name : 'uuid', width : 180, sortable : > true, align: 'left'}, + {display: 'Name', name : 'description', > width : 180, sortable : true, align: 'left'}, <% if (pool.is_a? > VmResourcePool) and pool.get_hardware_pool.can_view(@user) %> {display: > 'Host', name : 'host', width: 180, sortable : true, align: 'left' }, <% > end %> > {display: 'CPUs', name : 'num_vcpus_allocated', width : 40, > sortable : true, align: 'left'}, {display: 'Memory (MB)', name : > 'memory_allocated', width : 60, sortable : true, align: 'right'}, > {display: 'State', name : 'state', width : 50, sortable : true, align: > 'right'}, - {display: 'Total Run Time', name : 'calc_uptime', width > : 50, align: 'right'}, - {display: 'Load', name : 'load', width: > 180, sortable : false, align: 'left', process: <%= table_id %>_load_widget > } + {display: 'Contact', name : 'contact', width : 100, align: > 'left'}, + {display: 'OS', name : 'os', width : 60, sortable : > true, align: 'left'}, + {display: 'EOL', name : 'eol', width : 60, > sortable : true, align: 'right'}, + {display: 'Comment', name : > 'comment', width : 100, sortable : true, align: 'right'} ], > sortname: "description", > sortorder: "asc", > diff --git a/src/db/migrate/044_add_vm_fields.rb > b/src/db/migrate/044_add_vm_fields.rb new file mode 100644 > index 0000000..834f0ec > --- /dev/null > +++ b/src/db/migrate/044_add_vm_fields.rb > @@ -0,0 +1,34 @@ > +# Copyright (C) 2010 Linagora. > +# Written by Michel Loiseleur <mloiseleur at linagora.com> > +# > +# 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. > + > +# introduce information fields for VMs > +class AddVmFields < ActiveRecord::Migration > + def self.up > + add_column :vms, :contact, :string, :null => false, :default => '' > + add_column :vms, :comment, :string, :null => false, :default => '' > + add_column :vms, :eol, :date, :null => false, :default => > Date.new(1970,01,01).to_s + add_column :vms, :os, :string, :null => > false, :default => '' + end > + > + def self.down > + remove_column :vms, :contact > + remove_column :vms, :comment > + remove_column :vms, :eol > + remove_column :vms, :os > + end > +end-- Arthur CLEMENT Linagora Paris
Seemingly Similar Threads
- [PATCH server] add collapsable sections to vm form
- [PATCH server] add toggable sections to vm form
- permit many-to-many vms / networks relationship redux
- [PATCH server] UI for accumulated uptime for VMs. (revised)
- [PATCH server] UI for accumulated uptime for VMs. (revised3)