Skip to content

Commit

Permalink
Merge pull request #10 from AhmedKamal1432/amahi-8
Browse files Browse the repository at this point in the history
Select the size of partition from unallocated space
  • Loading branch information
cpg committed Aug 19, 2015
2 parents e538a1a + f22817e commit b7680fe
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 12 deletions.
10 changes: 8 additions & 2 deletions app/controllers/disk_wizard_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,10 @@ def manage_disk
if request.post?
self.user_selections = {fs_type: fs_type, format: format, path: partition}
end
if partition.match(/^\/dev/).blank?
device = Device.find_with_unallocated(user_selections['disk'])
@selected_partiton = (device.partitions.select{|part| part.identifier == user_selections['path'] }).first
end
end

# Expected key:values in @params:
Expand All @@ -64,7 +68,8 @@ def confirmation
unless params[:fs_type].blank?
# create new partition with this file system
fs_type = params[:fs_type].to_i
self.user_selections = {fs_type: fs_type}
partition_divider = params[:partition_divider].to_i
self.user_selections = {fs_type: fs_type, partition_divider: partition_divider}
end
option = params[:option]
label = params[:label].blank? ? nil : params[:label]
Expand Down Expand Up @@ -131,7 +136,8 @@ def process_disk
end

if option.include?(CREATE_OPTION)
para = {identifier: user_selections['identifier'], path: user_selections['disk'], fs_type: user_selections['fs_type']}
para = {identifier: user_selections['identifier'], path: user_selections['disk'],
fs_type: user_selections['fs_type'], partition_divider: user_selections['partition_divider']}
job_name = :create_new_partition_job
DebugLogger.info "|#{self.class.name}|>|#{__method__}|:Job_name = #{job_name}, para = #{para}"
jobs_queue.enqueue({job_name: job_name, job_para: para})
Expand Down
2 changes: 1 addition & 1 deletion app/views/disk_wizard/confirmation.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@
<span class="badge alert-info"> <span class="glyphicon glyphicon-ok"></span> </span> create Partition
</li>
<li class="list-group-item text-left">
<span class="badge alert-info"><%= number_to_human_size @selected_disk.size %></span>
<span class="badge alert-info"><%= number_to_human_size @selected_disk.size/user_selections['partition_divider'] %></span>
Partition Size
</li>
<% elsif option == DiskWizardController::NOTHING_OPTION %>
Expand Down
29 changes: 21 additions & 8 deletions app/views/disk_wizard/manage_disk.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -24,19 +24,23 @@
$( document ).ready( function () {
if ($('.create_new_partition').is(':checked')) {
$('#fs_selector').slideDown();
$('#size_selector').slideDown();
$('#mount_after_creation').slideDown();
} else {
$('#fs_selector').slideUp();
$('#mount_after_creation').slideUp();
$('#size_selector').slideUp();
}
});
$(function () {
$('.create_new_partition, .nothing').change(function () {
if ($('.create_new_partition').is(':checked')) {
$('#fs_selector').slideDown();
$('#size_selector').slideDown();
$('#mount_after_creation').slideDown();
} else {
$('#fs_selector').slideUp();
$('#size_selector').slideUp();
$('#mount_after_creation').slideUp();
}
});
Expand Down Expand Up @@ -90,16 +94,25 @@
<div class="alert alert-info">
<label > Create new partition</label>
<div class="row">
<div id="size_selector" class="col-md-10 col-md-offset-1" style="display: none;">
<ul class="list-group">
<li class="list-group-item list-group-item-info">
Please select a Partition size
</li>
<%= select_tag :partition_divider, options_for_select([
["#{number_to_human_size @selected_partiton.size}", 1],
["#{number_to_human_size (@selected_partiton.size/2)}", 2],
["#{number_to_human_size (@selected_partiton.size/4)}", 4]], 0), class: "form-control" %>
</ul>
</div>
<div id="fs_selector" class="col-md-10 col-md-offset-1" style="display: none;">
<div class="well">
<ul class="list-group">
<li class="list-group-item list-group-item-success">
Please select a file system type
</li>
<%= select_tag :fs_type, options_for_select([["Ext4", 0], ["Ext3", 1], ["NTFS", 2], ["FAT32", 3]], 0), class: "form-control" %>
<ul class="list-group">
<li class="list-group-item list-group-item-info">
Please select a file system type
</li>
<%= select_tag :fs_type, options_for_select([["Ext4", 0], ["Ext3", 1], ["NTFS", 2], ["FAT32", 3]], 0), class: "form-control" %>

</ul>
</div>
</ul>
</div>

<div id="mount_after_creation" class="col-md-10 col-md-offset-1" style="display: none;">
Expand Down
8 changes: 7 additions & 1 deletion lib/modules/operation.rb
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,15 @@ def create_new_partition_job params_hash
raise "We don't support GPT yet" if device.partition_table != "msdos"
raise "We don't support extended partitions yet, The number of partitions >= 3" if device.partition_count > 2
DebugLogger.info "|#{self.class.name}|>|#{__method__}|:Params_hash #{params_hash}"

device = Device.find_with_unallocated params_hash[:path]
partition = device.partitions.select { |part| part.identifier == params_hash[:identifier] }.first
partition_size = {start_sector: partition.start_sector, end_sector: partition.end_sector}
partition_divider = params_hash[:partition_divider].to_i
raise "Unknown partition size" unless [1, 2, 4].include? partition_divider

# calculate the position of the end sector
new_end_sector = partition.start_sector.to_i + ( (partition.end_sector.to_i - partition.start_sector.to_i) / partition_divider)
partition_size = {start_sector: partition.start_sector, end_sector: new_end_sector}
partition = device.create_partition partition_size
filesystem = {fs_type: params_hash[:fs_type].to_i || 3 }
partition.format_job filesystem
Expand Down

0 comments on commit b7680fe

Please sign in to comment.