mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-22 18:50:08 +03:00
Merge remote-tracking branch 'hector/feature-862' into feature-862
This commit is contained in:
commit
02a4ee2c02
@ -290,11 +290,28 @@ function updateVNetworkInfo(request,vn){
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("ID")+'</td>\
|
||||
<td class="value_td">'+vn_info.ID+'</td>\
|
||||
<tr>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("Name")+'</td>\
|
||||
<td class="value_td">'+vn_info.NAME+'</td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("Used leases")+'</td>\
|
||||
<td class="value_td">'+vn_info.USED_LEASES+'</td>\
|
||||
</tr>';
|
||||
|
||||
if (vn_info.ADDRESS){
|
||||
info_tab_content += '\
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("Address")+'</td>\
|
||||
<td class="value_td">'+vn_info.ADDRESS+'</td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("Size")+'</td>\
|
||||
<td class="value_td">'+vn_info.SIZE+'</td>\
|
||||
</tr>';
|
||||
};
|
||||
info_tab_content += '\
|
||||
</table>\
|
||||
<div class="form_buttons">\
|
||||
<button class="vnet_close_dialog_link"/></div>';
|
||||
|
@ -367,14 +367,14 @@ function updateImageInfo(request,img){
|
||||
<td class="value_td">'+img_info.NAME+'</td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("Name")+'</td>\
|
||||
<td class="key_td">'+tr("Description")+'</td>\
|
||||
<td class="value_td">'+img_info.DESCRIPTION+'</td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("Type")+'</td>\
|
||||
<td class="value_td">'+OCCI.Helper.image_type(img_info.TYPE)+'</td>\
|
||||
</tr>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("Persistent")+'</td>\
|
||||
<td class="value_td"><input type="checkbox" '+(img_info.PERSISTENT == "YES" ? 'checked="checked"' : "")+' /></td>\
|
||||
</tr>\
|
||||
|
@ -51,6 +51,7 @@ module OpenNebulaJSON
|
||||
when "unpublish" then self.unpublish
|
||||
when "update" then self.update(action_hash['params'])
|
||||
when "chown" then self.chown(action_hash['params'])
|
||||
when "chmod" then self.chmod_octet(action_hash['params'])
|
||||
when "chtype" then self.chtype(action_hash['params'])
|
||||
else
|
||||
error_msg = "#{action_hash['perform']} action not " <<
|
||||
@ -71,6 +72,10 @@ module OpenNebulaJSON
|
||||
super(params['owner_id'].to_i,params['group_id'].to_i)
|
||||
end
|
||||
|
||||
def chmod_octet(params=Hash.new)
|
||||
super(params['octet'])
|
||||
end
|
||||
|
||||
def chtype(params=Hash.new)
|
||||
super(params['type'])
|
||||
end
|
||||
|
@ -42,11 +42,12 @@ module OpenNebulaJSON
|
||||
end
|
||||
|
||||
rc = case action_hash['perform']
|
||||
when "publish" then self.publish
|
||||
when "unpublish" then self.unpublish
|
||||
when "update" then self.update(action_hash['params'])
|
||||
when "chown" then self.chown(action_hash['params'])
|
||||
when "instantiate" then self.instantiate(action_hash['params'])
|
||||
when "publish" then self.publish
|
||||
when "unpublish" then self.unpublish
|
||||
when "update" then self.update(action_hash['params'])
|
||||
when "chown" then self.chown(action_hash['params'])
|
||||
when "chmod" then self.chmod_octet(action_hash['params'])
|
||||
when "instantiate" then self.instantiate(action_hash['params'])
|
||||
else
|
||||
error_msg = "#{action_hash['perform']} action not " <<
|
||||
" available for this resource"
|
||||
@ -62,6 +63,10 @@ module OpenNebulaJSON
|
||||
super(params['owner_id'].to_i,params['group_id'].to_i)
|
||||
end
|
||||
|
||||
def chmod_octet(params=Hash.new)
|
||||
super(params['octet'])
|
||||
end
|
||||
|
||||
def instantiate(params=Hash.new)
|
||||
super(params['vm_name'])
|
||||
end
|
||||
|
@ -65,6 +65,7 @@ module OpenNebulaJSON
|
||||
when "reboot" then self.reboot
|
||||
when "resubmit" then self.resubmit
|
||||
when "chown" then self.chown(action_hash['params'])
|
||||
when "chmod" then self.chmod_octet(action_hash['params'])
|
||||
else
|
||||
error_msg = "#{action_hash['perform']} action not " <<
|
||||
" available for this resource"
|
||||
@ -95,5 +96,9 @@ module OpenNebulaJSON
|
||||
def chown(params=Hash.new)
|
||||
super(params['owner_id'].to_i,params['group_id'].to_i)
|
||||
end
|
||||
|
||||
def chmod_octet(params=Hash.new)
|
||||
super(params['octet'])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -48,6 +48,7 @@ module OpenNebulaJSON
|
||||
when "unpublish" then self.unpublish
|
||||
when "update" then self.update(action_hash['params'])
|
||||
when "chown" then self.chown(action_hash['params'])
|
||||
when "chmod" then self.chmod_octet(action_hash['params'])
|
||||
when "hold" then self.hold(action_hash['params'])
|
||||
when "release" then self.release(action_hash['params'])
|
||||
else
|
||||
@ -73,6 +74,10 @@ module OpenNebulaJSON
|
||||
super(params['owner_id'].to_i,params['group_id'].to_i)
|
||||
end
|
||||
|
||||
def chmod_octet(params=Hash.new)
|
||||
super(params['octet'])
|
||||
end
|
||||
|
||||
def hold(params=Hash.new)
|
||||
super(params['ip'])
|
||||
end
|
||||
|
@ -491,6 +491,13 @@ var OpenNebula = {
|
||||
"chgrp" : function(params){
|
||||
OpenNebula.Action.chgrp(params,OpenNebula.Network.resource);
|
||||
},
|
||||
"chmod" : function(params){
|
||||
var action_obj = params.data.extra_param;
|
||||
OpenNebula.Action.simple_action(params,
|
||||
OpenNebula.Network.resource,
|
||||
"chmod",
|
||||
action_obj);
|
||||
},
|
||||
"publish": function(params){
|
||||
OpenNebula.Action.simple_action(params,OpenNebula.Network.resource,"publish");
|
||||
},
|
||||
@ -558,6 +565,13 @@ var OpenNebula = {
|
||||
"chgrp" : function(params){
|
||||
OpenNebula.Action.chgrp(params,OpenNebula.VM.resource);
|
||||
},
|
||||
"chmod" : function(params){
|
||||
var action_obj = params.data.extra_param;
|
||||
OpenNebula.Action.simple_action(params,
|
||||
OpenNebula.VM.resource,
|
||||
"chmod",
|
||||
action_obj);
|
||||
},
|
||||
"shutdown": function(params){
|
||||
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,"shutdown");
|
||||
},
|
||||
@ -585,6 +599,9 @@ var OpenNebula = {
|
||||
"resubmit": function(params){
|
||||
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,"resubmit");
|
||||
},
|
||||
"reboot" : function(params){
|
||||
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,"reboot");
|
||||
},
|
||||
|
||||
"log": function(params){
|
||||
OpenNebula.Action.show(params,OpenNebula.VM.resource,"log");
|
||||
@ -732,6 +749,13 @@ var OpenNebula = {
|
||||
"chgrp" : function(params){
|
||||
OpenNebula.Action.chgrp(params,OpenNebula.Image.resource);
|
||||
},
|
||||
"chmod" : function(params){
|
||||
var action_obj = params.data.extra_param;
|
||||
OpenNebula.Action.simple_action(params,
|
||||
OpenNebula.Image.resource,
|
||||
"chmod",
|
||||
action_obj);
|
||||
},
|
||||
"update": function(params){
|
||||
var action_obj = {"template_raw" : params.data.extra_param };
|
||||
OpenNebula.Action.simple_action(params,
|
||||
@ -748,12 +772,6 @@ var OpenNebula = {
|
||||
"disable": function(params){
|
||||
OpenNebula.Action.simple_action(params,OpenNebula.Image.resource,"disable");
|
||||
},
|
||||
"publish": function(params){
|
||||
OpenNebula.Action.simple_action(params,OpenNebula.Image.resource,"publish");
|
||||
},
|
||||
"unpublish": function(params){
|
||||
OpenNebula.Action.simple_action(params,OpenNebula.Image.resource,"unpublish");
|
||||
},
|
||||
"persistent": function(params){
|
||||
OpenNebula.Action.simple_action(params,OpenNebula.Image.resource,"persistent");
|
||||
},
|
||||
@ -790,6 +808,13 @@ var OpenNebula = {
|
||||
"chgrp" : function(params){
|
||||
OpenNebula.Action.chgrp(params,OpenNebula.Template.resource);
|
||||
},
|
||||
"chmod" : function(params){
|
||||
var action_obj = params.data.extra_param;
|
||||
OpenNebula.Action.simple_action(params,
|
||||
OpenNebula.Template.resource,
|
||||
"chmod",
|
||||
action_obj);
|
||||
},
|
||||
"update" : function(params){
|
||||
var action_obj = {"template_raw" : params.data.extra_param };
|
||||
OpenNebula.Action.simple_action(params,
|
||||
|
@ -65,16 +65,11 @@ var create_acl_tmpl =
|
||||
<label for="belonging_to">'+tr("Group")+':</label>\
|
||||
<select name="belonging_to" id="belonging_to"></select>\
|
||||
<div class="clear"></div>\
|
||||
<label style="height:12em;">'+tr("Allowed operations")+':</label>\
|
||||
<label style="height:5em;">'+tr("Allowed operations")+':</label>\
|
||||
<input type="checkbox" name="right_create" class="right_cb" value="CREATE">'+tr("Create")+'</input><br />\
|
||||
<input type="checkbox" name="right_delete" class="right_cb" value="DELETE">'+tr("Delete")+'</input><br />\
|
||||
<input type="checkbox" name="right_use" class="right_cb" value="USE">'+tr("Use")+'</input><br />\
|
||||
<input type="checkbox" name="right_manage" class="right_cb" value="MANAGE">'+tr("Manage")+'</input><br />\
|
||||
<input type="checkbox" name="right_info" class="right_cb" value="INFO">'+tr("Get Information")+'</input><br />\
|
||||
<input type="checkbox" name="right_info_pool" class="right_cb" value="INFO_POOL">'+tr("Get Pool of resources")+'</input><br />\
|
||||
<input type="checkbox" name="right_info_pool_mine" class="right_cb" value="INFO_POOL_MINE">'+tr("Get Pool of my/group\'s resources")+'</input><br />\
|
||||
<input type="checkbox" name="right_chown" class="right_cb" value="CHOWN">'+tr("Change owner")+'</input><br />\
|
||||
<input type="checkbox" name="right_deploy" class="right_cb" value="DEPLOY">'+tr("Deploy")+'</input><br />\
|
||||
<input type="checkbox" name="right_delete" class="right_cb" value="USE">'+tr("Use")+'</input><br />\
|
||||
<input type="checkbox" name="right_use" class="right_cb" value="MANAGE">'+tr("Manage")+'</input><br />\
|
||||
<input type="checkbox" name="right_manage" class="right_cb" value="ADMIN">'+tr("Administrate")+'</input><br />\
|
||||
<div class="clear"></div>\
|
||||
<label for="acl_preview">'+tr("ACL String preview")+':</label>\
|
||||
<input type="text" name="acl_preview" id="acl_preview" style="width:400px;"></input>\
|
||||
|
@ -31,7 +31,6 @@ var images_tab_content =
|
||||
<th>'+tr("Size")+'</th>\
|
||||
<th>'+tr("Type")+'</th>\
|
||||
<th>'+tr("Registration time")+'</th>\
|
||||
<th>'+tr("Public")+'</th>\
|
||||
<th>'+tr("Persistent")+'</th>\
|
||||
<th>'+tr("Status")+'</th>\
|
||||
<th>'+tr("#VMS")+'</th>\
|
||||
@ -74,11 +73,6 @@ var create_image_tmpl =
|
||||
</select>\
|
||||
<div class="tip">'+tr("Type of the image, explained in detail in the following section. If omitted, the default value is the one defined in oned.conf (install default is OS).")+'</div>\
|
||||
</div>\
|
||||
<div class="img_param">\
|
||||
<label for="img_public">'+tr("Public")+':</label>\
|
||||
<input type="checkbox" id="img_public" name="img_public" value="YES" />\
|
||||
<div class="tip">'+tr("Public scope of the image")+'</div>\
|
||||
</div>\
|
||||
<div class="img_param">\
|
||||
<label for="img_persistent">'+tr("Persistent")+':</label>\
|
||||
<input type="checkbox" id="img_persistent" name="img_persistent" value="YES" />\
|
||||
@ -185,12 +179,35 @@ var update_image_tmpl =
|
||||
<select id="image_template_update_select" name="image_template_update_select"></select>\
|
||||
<div class="clear"></div>\
|
||||
<div>\
|
||||
<label for="image_template_update_public">'+tr("Public")+':</label>\
|
||||
<input type="checkbox" name="image_template_update_public" id="image_template_update_public" />\
|
||||
<label for="image_template_update_persistent">'+tr("Persistent")+':</label>\
|
||||
<input type="checkbox" name="image_template_update_persistent" id="image_template_update_persistent" />\
|
||||
</div>\
|
||||
<div>\
|
||||
<label for="image_template_update_public">'+tr("Persistent")+':</label>\
|
||||
<input type="checkbox" name="image_template_update_persistent" id="image_template_update_persistent" />\
|
||||
<table class="permissions_table" style="padding:0 10px;">\
|
||||
<thead><tr>\
|
||||
<td style="width:130px">'+tr("Permissions")+':</td>\
|
||||
<td style="width:40px;text-align:center;">'+tr("Use")+'</td>\
|
||||
<td style="width:40px;text-align:center;">'+tr("Manage")+'</td>\
|
||||
<td style="width:40px;text-align:center;">'+tr("Admin")+'</td></tr></thead>\
|
||||
<tr>\
|
||||
<td>'+tr("Owner")+'</td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vnet_owner_u" class="owner_u" /></td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vnet_owner_m" class="owner_m" /></td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vnet_owner_a" class="owner_a" /></td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td>'+tr("Group")+'</td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vnet_owner_u" class="group_u" /></td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vnet_owner_m" class="group_m" /></td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vnet_owner_a" class="group_a" /></td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td>'+tr("Other")+'</td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vnet_owner_u" class="other_u" /></td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vnet_owner_m" class="other_m" /></td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vnet_owner_a" class="other_a" /></td>\
|
||||
</tr>\
|
||||
</table>\
|
||||
</div>\
|
||||
<label for="image_template_update_textarea">'+tr("Template")+':</label>\
|
||||
<div class="clear"></div>\
|
||||
@ -267,11 +284,20 @@ var image_actions = {
|
||||
error: onError
|
||||
},
|
||||
|
||||
"Image.fetch_permissions" : {
|
||||
type: "single",
|
||||
call: OpenNebula.Image.show,
|
||||
callback: function(request,image_json){
|
||||
var dialog = $('#image_template_update_dialog form');
|
||||
var image = image_json.IMAGE;
|
||||
setPermissionsTable(image,dialog);
|
||||
},
|
||||
error: onError
|
||||
},
|
||||
|
||||
"Image.update_dialog" : {
|
||||
type: "custom",
|
||||
call: function() {
|
||||
popUpImageTemplateUpdateDialog();
|
||||
}
|
||||
call: popUpImageTemplateUpdateDialog,
|
||||
},
|
||||
|
||||
"Image.update" : {
|
||||
@ -327,28 +353,6 @@ var image_actions = {
|
||||
notify: true
|
||||
},
|
||||
|
||||
"Image.publish" : {
|
||||
type: "multiple",
|
||||
call: OpenNebula.Image.publish,
|
||||
callback: function (req) {
|
||||
Sunstone.runAction("Image.show",req.request.data[0]);
|
||||
},
|
||||
elements: imageElements,
|
||||
error: onError,
|
||||
notify: true
|
||||
},
|
||||
|
||||
"Image.unpublish" : {
|
||||
type: "multiple",
|
||||
call: OpenNebula.Image.unpublish,
|
||||
callback: function (req) {
|
||||
Sunstone.runAction("Image.show",req.request.data[0]);
|
||||
},
|
||||
elements: imageElements,
|
||||
error: onError,
|
||||
notify: true
|
||||
},
|
||||
|
||||
"Image.delete" : {
|
||||
type: "multiple",
|
||||
call: OpenNebula.Image.delete,
|
||||
@ -380,6 +384,14 @@ var image_actions = {
|
||||
notify: true
|
||||
},
|
||||
|
||||
"Image.chmod" : {
|
||||
type: "single",
|
||||
call: OpenNebula.Image.chmod,
|
||||
// callback
|
||||
error: onError,
|
||||
notify: true
|
||||
},
|
||||
|
||||
"Image.chtype" : {
|
||||
type: "single",
|
||||
call: OpenNebula.Image.chtype,
|
||||
@ -390,8 +402,7 @@ var image_actions = {
|
||||
error: onError,
|
||||
notify: true
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
var image_buttons = {
|
||||
@ -406,7 +417,7 @@ var image_buttons = {
|
||||
},
|
||||
"Image.update_dialog" : {
|
||||
type: "action",
|
||||
text: tr("Update a template"),
|
||||
text: tr("Update properties"),
|
||||
alwaysActive: true
|
||||
},
|
||||
"Image.chown" : {
|
||||
@ -434,14 +445,6 @@ var image_buttons = {
|
||||
type: "action",
|
||||
text: tr("Disable")
|
||||
},
|
||||
"Image.publish" : {
|
||||
type: "action",
|
||||
text: tr("Publish")
|
||||
},
|
||||
"Image.unpublish" : {
|
||||
type: "action",
|
||||
text: tr("Unpublish")
|
||||
},
|
||||
"Image.persistent" : {
|
||||
type: "action",
|
||||
text: tr("Make persistent")
|
||||
@ -489,7 +492,7 @@ function imageElements() {
|
||||
// Returns an array containing the values of the image_json and ready
|
||||
// to be inserted in the dataTable
|
||||
function imageElementArray(image_json){
|
||||
//Changing this? It may affect to the is_public() and is_persistent() functions.
|
||||
//Changing this? It may affect to the is_persistent() functions.
|
||||
var image = image_json.IMAGE;
|
||||
|
||||
var type = $('<select>\
|
||||
@ -501,8 +504,6 @@ function imageElementArray(image_json){
|
||||
var value = OpenNebula.Helper.image_type(image.TYPE);
|
||||
$('option[value="'+value+'"]',type).replaceWith('<option value="'+value+'" selected="selected">'+tr(value)+'</option>');
|
||||
|
||||
|
||||
|
||||
return [
|
||||
'<input class="check_item" type="checkbox" id="image_'+image.ID+'" name="selected_items" value="'+image.ID+'"/>',
|
||||
image.ID,
|
||||
@ -512,8 +513,6 @@ function imageElementArray(image_json){
|
||||
image.SIZE,
|
||||
'<select class="action_cb" id="select_chtype_image" elem_id="'+image.ID+'" style="width:100px">'+type.html()+'</select>',
|
||||
pretty_time(image.REGTIME),
|
||||
parseInt(image.PUBLIC) ? '<input class="action_cb" id="cb_public_image" type="checkbox" elem_id="'+image.ID+'" checked="checked"/>'
|
||||
: '<input class="action_cb" id="cb_public_image" type="checkbox" elem_id="'+image.ID+'"/>',
|
||||
parseInt(image.PERSISTENT) ? '<input class="action_cb" id="cb_persistent_image" type="checkbox" elem_id="'+image.ID+'" checked="checked"/>'
|
||||
: '<input class="action_cb" id="cb_persistent_image" type="checkbox" elem_id="'+image.ID+'"/>',
|
||||
OpenNebula.Helper.resource_state("image",image.STATE),
|
||||
@ -602,10 +601,6 @@ function updateImageInfo(request,img){
|
||||
<td class="key_td">'+tr("Register time")+'</td>\
|
||||
<td class="value_td">'+pretty_time(img_info.REGTIME)+'</td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("Public")+'</td>\
|
||||
<td class="value_td">'+(parseInt(img_info.PUBLIC) ? tr("yes") : tr("no"))+'</td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("Persistent")+'</td>\
|
||||
<td class="value_td">'+(parseInt(img_info.PERSISTENT) ? tr("yes") : tr("no"))+'</td>\
|
||||
@ -634,6 +629,19 @@ function updateImageInfo(request,img){
|
||||
<td class="key_td">'+tr("Running #VMS")+'</td>\
|
||||
<td class="value_td">'+img_info.RUNNING_VMS+'</td>\
|
||||
</tr>\
|
||||
<tr><td></td><td></td></tr>\
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("Owner permissions")+'</td>\
|
||||
<td class="value_td">'+ownerPermStr(img_info)+'</td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("Group permissions")+'</td>\
|
||||
<td class="value_td">'+groupPermStr(img_info)+'</td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("Other permissions")+'</td>\
|
||||
<td class="value_td">'+otherPermStr(img_info)+'</td>\
|
||||
</tr>\
|
||||
</table>'
|
||||
}
|
||||
|
||||
@ -693,16 +701,6 @@ function setupCreateImageDialog(){
|
||||
$('#path_img',dialog).attr('checked','checked');
|
||||
$('#img_path',dialog).parent().addClass("img_man");
|
||||
|
||||
$('#img_public',dialog).click(function(){
|
||||
$('#img_persistent',$create_image_dialog).removeAttr('checked');
|
||||
});
|
||||
|
||||
$('#img_persistent',dialog).click(function(){
|
||||
$('#img_public',$create_image_dialog).removeAttr('checked');
|
||||
});
|
||||
|
||||
|
||||
|
||||
$('#src_path_select input').click(function(){
|
||||
var context = $create_image_dialog;
|
||||
var value = $(this).val();
|
||||
@ -776,8 +774,6 @@ function setupCreateImageDialog(){
|
||||
var type = $('#img_type',this).val();
|
||||
img_json["TYPE"]= type;
|
||||
|
||||
img_json["PUBLIC"] = $('#img_public:checked',this).length ? "YES" : "NO";
|
||||
|
||||
img_json["PERSISTENT"] = $('#img_persistent:checked',this).length ? "YES" : "NO";
|
||||
|
||||
var dev_prefix = $('#img_dev_prefix',this).val();
|
||||
@ -841,18 +837,19 @@ function popUpCreateImageDialog(){
|
||||
function setupImageTemplateUpdateDialog(){
|
||||
|
||||
//Append to DOM
|
||||
dialogs_context.append('<div id="image_template_update_dialog" title="'+tr("Update image template")+'"></div>');
|
||||
dialogs_context.append('<div id="image_template_update_dialog" title="'+tr("Update image properties")+'"></div>');
|
||||
var dialog = $('#image_template_update_dialog',dialogs_context);
|
||||
|
||||
//Put HTML in place
|
||||
dialog.html(update_image_tmpl);
|
||||
|
||||
var height = Math.floor($(window).height()*0.8); //set height to a percentage of the window
|
||||
//Convert into jQuery
|
||||
dialog.dialog({
|
||||
autoOpen:false,
|
||||
width:700,
|
||||
modal:true,
|
||||
height:480,
|
||||
height:height,
|
||||
resizable:false,
|
||||
});
|
||||
|
||||
@ -860,62 +857,61 @@ function setupImageTemplateUpdateDialog(){
|
||||
|
||||
$('#image_template_update_select',dialog).change(function(){
|
||||
var id = $(this).val();
|
||||
$('.permissions_table input',dialog).removeAttr('checked')
|
||||
$('.permissions_table',dialog).removeAttr('update');
|
||||
if (id && id.length){
|
||||
var dialog = $('#image_template_update_dialog');
|
||||
$('#image_template_update_textarea',dialog).val(tr("Loading")+
|
||||
"...");
|
||||
|
||||
var img_public = is_public_image(id);
|
||||
var img_persistent = is_persistent_image(id)
|
||||
|
||||
if (img_public){
|
||||
$('#image_template_update_public',dialog).attr('checked','checked')
|
||||
} else {
|
||||
$('#image_template_update_public',dialog).removeAttr('checked')
|
||||
}
|
||||
var img_persistent = is_persistent_image(id);
|
||||
|
||||
if (img_persistent){
|
||||
$('#image_template_update_persistent',dialog).attr('checked','checked')
|
||||
} else {
|
||||
$('#image_template_update_persistent',dialog).removeAttr('checked')
|
||||
}
|
||||
};
|
||||
|
||||
Sunstone.runAction("Image.fetch_permissions",id);
|
||||
Sunstone.runAction("Image.fetch_template",id);
|
||||
} else {
|
||||
$('#image_template_update_textarea',dialog).val("");
|
||||
};
|
||||
});
|
||||
|
||||
$('#image_template_update_button',dialog).click(function(){
|
||||
var dialog = $('#image_template_update_dialog');
|
||||
$('.permissions_table input',dialog).change(function(){
|
||||
$(this).parents('table').attr('update','update');
|
||||
});
|
||||
|
||||
$('form',dialog).submit(function(){
|
||||
var dialog = $(this);
|
||||
var new_template = $('#image_template_update_textarea',dialog).val();
|
||||
var id = $('#image_template_update_select',dialog).val();
|
||||
if (!id || !id.length) {
|
||||
dialog.dialog('close');
|
||||
$(this).parents('#image_template_update_dialog').dialog('close');
|
||||
return false;
|
||||
};
|
||||
|
||||
var old_public = is_public_image(id)
|
||||
var old_persistent = is_persistent_image(id);
|
||||
|
||||
var new_public = $('#image_template_update_public:checked',dialog).length;
|
||||
var new_persistent = $('#image_template_update_persistent:checked',dialog).length;
|
||||
|
||||
if (old_public != new_public){
|
||||
if (new_public) Sunstone.runAction("Image.publish",id);
|
||||
else Sunstone.runAction("Image.unpublish",id);
|
||||
};
|
||||
|
||||
var new_persistent = $('#image_template_update_persistent',dialog).is(':checked');
|
||||
if (old_persistent != new_persistent){
|
||||
if (new_persistent) Sunstone.runAction("Image.persistent",id);
|
||||
else Sunstone.runAction("Image.nonpersistent",id);
|
||||
};
|
||||
|
||||
var permissions = $('.permissions_table',dialog);
|
||||
if (permissions.attr('update')){
|
||||
var perms = {
|
||||
octet : buildOctet(permissions)
|
||||
};
|
||||
Sunstone.runAction("Image.chmod",id,perms);
|
||||
};
|
||||
|
||||
Sunstone.runAction("Image.update",id,new_template);
|
||||
dialog.dialog('close');
|
||||
$(this).parents('#image_template_update_dialog').dialog('close');
|
||||
return false;
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
function popUpImageTemplateUpdateDialog(){
|
||||
@ -931,8 +927,10 @@ function popUpImageTemplateUpdateDialog(){
|
||||
var dialog = $('#image_template_update_dialog');
|
||||
$('#image_template_update_select',dialog).html(select);
|
||||
$('#image_template_update_textarea',dialog).val("");
|
||||
$('#image_template_update_public',dialog).removeAttr('checked')
|
||||
$('#image_template_update_persistent',dialog).removeAttr('checked')
|
||||
$('#image_template_update_persistent',dialog).removeAttr('checked');
|
||||
$('.permissions_table input',dialog).removeAttr('checked');
|
||||
$('.permissions_table',dialog).removeAttr('update');
|
||||
|
||||
|
||||
if (sel_elems.length >= 1){ //several items in the list are selected
|
||||
//grep them
|
||||
@ -947,14 +945,12 @@ function popUpImageTemplateUpdateDialog(){
|
||||
if (sel_elems.length == 1) {
|
||||
$('#image_template_update_select option',dialog).attr('selected','selected');
|
||||
$('#image_template_update_select',dialog).trigger("change");
|
||||
}
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
dialog.dialog('open');
|
||||
return false;
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
// Set the autorefresh interval for the datatable
|
||||
function setImageAutorefresh() {
|
||||
@ -968,43 +964,19 @@ function setImageAutorefresh() {
|
||||
},INTERVAL+someTime());
|
||||
};
|
||||
|
||||
function is_public_image(id){
|
||||
var data = getElementData(id,"#image",dataTable_images)[7];
|
||||
return $(data).attr('checked');
|
||||
};
|
||||
|
||||
function is_persistent_image(id){
|
||||
var data = getElementData(id,"#image",dataTable_images)[8];
|
||||
return $(data).attr('checked');
|
||||
return $(data).is(':checked');
|
||||
};
|
||||
|
||||
function setupImageActionCheckboxes(){
|
||||
$('input.action_cb#cb_public_image',dataTable_images).live("click",function(){
|
||||
var $this = $(this)
|
||||
var id=$this.attr('elem_id');
|
||||
if ($this.attr('checked')){
|
||||
if (!is_persistent_image(id))
|
||||
Sunstone.runAction("Image.publish",id);
|
||||
else {
|
||||
notifyError(tr("Image cannot be public and persistent"));
|
||||
return false;
|
||||
};
|
||||
} else Sunstone.runAction("Image.unpublish",id);
|
||||
|
||||
return true;
|
||||
});
|
||||
|
||||
$('input.action_cb#cb_persistent_image',dataTable_images).live("click",function(){
|
||||
var $this = $(this)
|
||||
var id=$this.attr('elem_id');
|
||||
if ($this.attr('checked')){
|
||||
if (!is_public_image(id))
|
||||
Sunstone.runAction("Image.persistent",id);
|
||||
else {
|
||||
notifyError(tr("Image cannot be public and persistent"));
|
||||
return false;
|
||||
};
|
||||
} else Sunstone.runAction("Image.nonpersistent",id);
|
||||
if ($this.attr('checked'))
|
||||
Sunstone.runAction("Image.persistent",id);
|
||||
else
|
||||
Sunstone.runAction("Image.nonpersistent",id);
|
||||
|
||||
return true;
|
||||
});
|
||||
@ -1029,21 +1001,21 @@ $(document).ready(function(){
|
||||
"sPaginationType": "full_numbers",
|
||||
"aoColumnDefs": [
|
||||
{ "bSortable": false, "aTargets": ["check"] },
|
||||
{ "sWidth": "60px", "aTargets": [0,2,3,8,9,10] },
|
||||
{ "sWidth": "35px", "aTargets": [1,5,11] },
|
||||
{ "sWidth": "60px", "aTargets": [0,2,3,8,9] },
|
||||
{ "sWidth": "35px", "aTargets": [1,5,10] },
|
||||
{ "sWidth": "100px", "aTargets": [6] },
|
||||
{ "sWidth": "150px", "aTargets": [7] }
|
||||
],
|
||||
"oLanguage": (datatable_lang != "") ?
|
||||
{
|
||||
sUrl: "locale/"+lang+"/"+datatable_lang
|
||||
sUrl: "locale/"+lang+"/"+datatable_lang
|
||||
} : ""
|
||||
});
|
||||
|
||||
dataTable_images.fnClearTable();
|
||||
addElement([
|
||||
spinner,
|
||||
'','','','','','','','','','',''],dataTable_images);
|
||||
'','','','','','','','','',''],dataTable_images);
|
||||
Sunstone.runAction("Image.list");
|
||||
|
||||
setupCreateImageDialog();
|
||||
@ -1055,6 +1027,4 @@ $(document).ready(function(){
|
||||
initCheckAllBoxes(dataTable_images);
|
||||
tableCheckboxesListener(dataTable_images);
|
||||
imageInfoListener();
|
||||
|
||||
|
||||
})
|
||||
});
|
||||
|
@ -29,7 +29,6 @@ var templates_tab_content =
|
||||
<th>'+tr("Group")+'</th>\
|
||||
<th>'+tr("Name")+'</th>\
|
||||
<th>'+tr("Registration time")+'</th>\
|
||||
<th>'+tr("Public")+'</th>\
|
||||
</tr>\
|
||||
</thead>\
|
||||
<tbody id="tbodytemplates">\
|
||||
@ -592,8 +591,31 @@ var update_template_tmpl =
|
||||
<select id="template_template_update_select" name="template_template_update_select"></select>\
|
||||
<div class="clear"></div>\
|
||||
<div>\
|
||||
<label for="template_template_update_public">'+tr("Public")+':</label>\
|
||||
<input type="checkbox" name="template_template_update_public" id="template_template_update_public" />\
|
||||
<table class="permissions_table" style="padding:0 10px;">\
|
||||
<thead><tr>\
|
||||
<td style="width:130px">'+tr("Permissions")+':</td>\
|
||||
<td style="width:40px;text-align:center;">'+tr("Use")+'</td>\
|
||||
<td style="width:40px;text-align:center;">'+tr("Manage")+'</td>\
|
||||
<td style="width:40px;text-align:center;">'+tr("Admin")+'</td></tr></thead>\
|
||||
<tr>\
|
||||
<td>'+tr("Owner")+'</td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vnet_owner_u" class="owner_u" /></td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vnet_owner_m" class="owner_m" /></td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vnet_owner_a" class="owner_a" /></td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td>'+tr("Group")+'</td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vnet_owner_u" class="group_u" /></td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vnet_owner_m" class="group_m" /></td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vnet_owner_a" class="group_a" /></td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td>'+tr("Other")+'</td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vnet_owner_u" class="other_u" /></td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vnet_owner_m" class="other_m" /></td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vnet_owner_a" class="other_a" /></td>\
|
||||
</tr>\
|
||||
</table>\
|
||||
</div>\
|
||||
<label for="template_template_update_textarea">'+tr("Template")+':</label>\
|
||||
<div class="clear"></div>\
|
||||
@ -664,9 +686,7 @@ var template_actions = {
|
||||
|
||||
"Template.update_dialog" : {
|
||||
type: "custom",
|
||||
call: function() {
|
||||
popUpTemplateTemplateUpdateDialog();
|
||||
}
|
||||
call: popUpTemplateTemplateUpdateDialog
|
||||
},
|
||||
|
||||
"Template.update" : {
|
||||
@ -687,32 +707,25 @@ var template_actions = {
|
||||
error: onError
|
||||
},
|
||||
|
||||
"Template.publish" : {
|
||||
"Template.fetch_permissions" : {
|
||||
type: "single",
|
||||
call: OpenNebula.Template.show,
|
||||
callback: function(request,template_json){
|
||||
var dialog = $('#template_template_update_dialog form');
|
||||
var template = template_json.VMTEMPLATE;
|
||||
setPermissionsTable(template,dialog);
|
||||
},
|
||||
error: onError
|
||||
},
|
||||
|
||||
"Template.delete" : {
|
||||
type: "multiple",
|
||||
call: OpenNebula.Template.publish,
|
||||
callback: templateShow,
|
||||
call: OpenNebula.Template.delete,
|
||||
callback: deleteTemplateElement,
|
||||
elements: templateElements,
|
||||
error: onError,
|
||||
notify: true
|
||||
},
|
||||
|
||||
"Template.unpublish" : {
|
||||
type: "multiple",
|
||||
call: OpenNebula.Template.unpublish,
|
||||
callback: templateShow,
|
||||
elements: templateElements,
|
||||
error: onError,
|
||||
notify: true
|
||||
},
|
||||
|
||||
"Template.delete" : {
|
||||
type: "multiple",
|
||||
call: OpenNebula.Template.delete,
|
||||
callback: deleteTemplateElement,
|
||||
elements: templateElements,
|
||||
error: onError,
|
||||
notify: true
|
||||
},
|
||||
},
|
||||
|
||||
"Template.instantiate" : {
|
||||
type: "single",
|
||||
@ -746,7 +759,13 @@ var template_actions = {
|
||||
elements: templateElements,
|
||||
error:onError,
|
||||
notify: true
|
||||
}
|
||||
},
|
||||
"Template.chmod" : {
|
||||
type: "single",
|
||||
call: OpenNebula.Template.chmod,
|
||||
error: onError,
|
||||
notify: true
|
||||
},
|
||||
}
|
||||
|
||||
var template_buttons = {
|
||||
@ -761,7 +780,7 @@ var template_buttons = {
|
||||
},
|
||||
"Template.update_dialog" : {
|
||||
type: "action",
|
||||
text: tr("Update a template"),
|
||||
text: tr("Update properties"),
|
||||
alwaysActive: true
|
||||
},
|
||||
"Template.instantiate_vms" : {
|
||||
@ -838,10 +857,8 @@ function templateElementArray(template_json){
|
||||
template.UNAME,
|
||||
template.GNAME,
|
||||
template.NAME,
|
||||
pretty_time(template.REGTIME),
|
||||
parseInt(template.PUBLIC) ? '<input class="action_cb" id="cb_public_template" type="checkbox" elem_id="'+template.ID+'" checked="checked"/>'
|
||||
: '<input class="action_cb" id="cb_public_template" type="checkbox" elem_id="'+template.ID+'"/>'
|
||||
];
|
||||
pretty_time(template.REGTIME)
|
||||
];
|
||||
}
|
||||
|
||||
// Set up the listener on the table TDs to show the info panel
|
||||
@ -936,10 +953,19 @@ function updateTemplateInfo(request,template){
|
||||
<td class="key_td">'+tr("Register time")+'</td>\
|
||||
<td class="value_td">'+pretty_time(template_info.REGTIME)+'</td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("Public")+'</td>\
|
||||
<td class="value_td">'+(parseInt(template_info.PUBLIC) ? tr("yes") : tr("no"))+'</td>\
|
||||
</tr>\
|
||||
<tr><td></td><td></td></tr>\
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("Owner permissions")+'</td>\
|
||||
<td class="value_td">'+ownerPermStr(template_info)+'</td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("Group permissions")+'</td>\
|
||||
<td class="value_td">'+groupPermStr(template_info)+'</td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("Other permissions")+'</td>\
|
||||
<td class="value_td">'+otherPermStr(template_info)+'</td>\
|
||||
</tr>\
|
||||
</table>'
|
||||
};
|
||||
var template_tab = {
|
||||
@ -2002,18 +2028,20 @@ function popUpCreateTemplateDialog(){
|
||||
|
||||
function setupTemplateTemplateUpdateDialog(){
|
||||
//Append to DOM
|
||||
dialogs_context.append('<div id="template_template_update_dialog" title="'+tr("Update a template")+'"></div>');
|
||||
dialogs_context.append('<div id="template_template_update_dialog" title="'+tr("Update template properties")+'"></div>');
|
||||
var dialog = $('#template_template_update_dialog',dialogs_context);
|
||||
|
||||
//Put HTML in place
|
||||
dialog.html(update_template_tmpl);
|
||||
|
||||
var height = Math.floor($(window).height()*0.8); //set height to a percentage of the window
|
||||
|
||||
//Convert into jQuery
|
||||
dialog.dialog({
|
||||
autoOpen:false,
|
||||
width:700,
|
||||
modal:true,
|
||||
height:480,
|
||||
height:height,
|
||||
resizable:false,
|
||||
});
|
||||
|
||||
@ -2021,43 +2049,42 @@ function setupTemplateTemplateUpdateDialog(){
|
||||
|
||||
$('#template_template_update_select',dialog).change(function(){
|
||||
var id = $(this).val();
|
||||
$('.permissions_table input',dialog).removeAttr('checked')
|
||||
$('.permissions_table',dialog).removeAttr('update');
|
||||
if (id && id.length){
|
||||
var dialog = $('#template_template_update_dialog');
|
||||
$('#template_template_update_textarea',dialog).val(tr("Loading")+"...");
|
||||
|
||||
var templ_public = is_public_template(id);
|
||||
|
||||
if (templ_public){
|
||||
$('#template_template_update_public',dialog).attr('checked','checked')
|
||||
} else {
|
||||
$('#template_template_update_public',dialog).removeAttr('checked')
|
||||
}
|
||||
|
||||
Sunstone.runAction("Template.fetch_permissions",id);
|
||||
Sunstone.runAction("Template.fetch_template",id);
|
||||
} else {
|
||||
$('#template_template_update_textarea',dialog).val("");
|
||||
};
|
||||
});
|
||||
|
||||
$('#template_template_update_button',dialog).click(function(){
|
||||
var dialog = $('#template_template_update_dialog');
|
||||
$('.permissions_table input',dialog).change(function(){
|
||||
$(this).parents('table').attr('update','update');
|
||||
});
|
||||
|
||||
$('form',dialog).submit(function(){
|
||||
var dialog = $(this);
|
||||
var new_template = $('#template_template_update_textarea',dialog).val();
|
||||
var id = $('#template_template_update_select',dialog).val();
|
||||
if (!id || !id.length) {
|
||||
dialog.dialog('close');
|
||||
$(this).parents('#template_template_update_dialog').dialog('close');
|
||||
return false;
|
||||
};
|
||||
|
||||
var old_public = is_public_template(id);
|
||||
|
||||
var new_public = $('#template_template_update_public:checked',dialog).length;
|
||||
|
||||
if (old_public != new_public){
|
||||
if (new_public) Sunstone.runAction("Template.publish",id);
|
||||
else Sunstone.runAction("Template.unpublish",id);
|
||||
var permissions = $('.permissions_table',dialog);
|
||||
if (permissions.attr('update')){
|
||||
var perms = {
|
||||
octet : buildOctet(permissions)
|
||||
};
|
||||
Sunstone.runAction("Template.chmod",id,perms);
|
||||
};
|
||||
|
||||
Sunstone.runAction("Template.update",id,new_template);
|
||||
$(this).parents('#template_template_update_dialog').dialog('close');
|
||||
dialog.dialog('close');
|
||||
return false;
|
||||
});
|
||||
@ -2076,7 +2103,8 @@ function popUpTemplateTemplateUpdateDialog(){
|
||||
var dialog = $('#template_template_update_dialog');
|
||||
$('#template_template_update_select',dialog).html(select);
|
||||
$('#template_template_update_textarea',dialog).val("");
|
||||
$('#template_template_update_public',dialog).removeAttr('checked')
|
||||
$('.permissions_table input',dialog).removeAttr('checked');
|
||||
$('.permissions_table',dialog).removeAttr('update');
|
||||
|
||||
if (sel_elems.length >= 1){ //several items in the list are selected
|
||||
//grep them
|
||||
@ -2092,7 +2120,6 @@ function popUpTemplateTemplateUpdateDialog(){
|
||||
$('#template_template_update_select option',dialog).attr('selected','selected');
|
||||
$('#template_template_update_select',dialog).trigger("change");
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
dialog.dialog('open');
|
||||
@ -2110,25 +2137,8 @@ function setTemplateAutorefresh() {
|
||||
Sunstone.runAction("Template.autorefresh");
|
||||
}
|
||||
},INTERVAL+someTime());
|
||||
}
|
||||
|
||||
function is_public_template(id){
|
||||
var data = getElementData(id,"#template",dataTable_templates)[6];
|
||||
return $(data).attr('checked');
|
||||
};
|
||||
|
||||
function setupTemplateActionCheckboxes(){
|
||||
$('input.action_cb#cb_public_template',dataTable_templates).live("click",function(){
|
||||
var $this = $(this)
|
||||
var id=$this.attr('elem_id');
|
||||
if ($this.attr('checked'))
|
||||
Sunstone.runAction("Template.publish",id);
|
||||
else Sunstone.runAction("Template.unpublish",id);
|
||||
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
//The DOM is ready at this point
|
||||
$(document).ready(function(){
|
||||
|
||||
@ -2139,29 +2149,28 @@ $(document).ready(function(){
|
||||
"sPaginationType": "full_numbers",
|
||||
"aoColumnDefs": [
|
||||
{ "bSortable": false, "aTargets": ["check"] },
|
||||
{ "sWidth": "60px", "aTargets": [0,6] },
|
||||
{ "sWidth": "60px", "aTargets": [0] },
|
||||
{ "sWidth": "35px", "aTargets": [1] },
|
||||
{ "sWidth": "150px", "aTargets": [5] },
|
||||
{ "sWidth": "100px", "aTargets": [2,3] }
|
||||
],
|
||||
"oLanguage": (datatable_lang != "") ?
|
||||
{
|
||||
sUrl: "locale/"+lang+"/"+datatable_lang
|
||||
} : ""
|
||||
"oLanguage": (datatable_lang != "") ?
|
||||
{
|
||||
sUrl: "locale/"+lang+"/"+datatable_lang
|
||||
} : ""
|
||||
});
|
||||
|
||||
dataTable_templates.fnClearTable();
|
||||
addElement([
|
||||
spinner,
|
||||
'','','','','',''],dataTable_templates);
|
||||
'','','','',''],dataTable_templates);
|
||||
Sunstone.runAction("Template.list");
|
||||
|
||||
setupCreateTemplateDialog();
|
||||
setupTemplateTemplateUpdateDialog();
|
||||
setupTemplateActionCheckboxes();
|
||||
setTemplateAutorefresh();
|
||||
|
||||
initCheckAllBoxes(dataTable_templates);
|
||||
tableCheckboxesListener(dataTable_templates);
|
||||
templateInfoListener();
|
||||
})
|
||||
});
|
||||
|
@ -92,6 +92,54 @@ var create_vm_tmpl ='<form id="create_vm_form" action="">\
|
||||
</fieldset>\
|
||||
</form>';
|
||||
|
||||
var update_vm_tmpl =
|
||||
'<form action="javascript:alert(\'js error!\');">\
|
||||
<h3 style="margin-bottom:10px;">'+tr("Please, choose and modify the virtual machine you want to update")+':</h3>\
|
||||
<fieldset style="border-top:none;">\
|
||||
<label for="vm_template_update_select">'+tr("Select a VM")+':</label>\
|
||||
<select id="vm_template_update_select" name="vm_template_update_select"></select>\
|
||||
<div class="clear"></div>\
|
||||
<div>\
|
||||
<table class="permissions_table" style="padding:0 10px;">\
|
||||
<thead><tr>\
|
||||
<td style="width:130px">'+tr("Permissions")+':</td>\
|
||||
<td style="width:40px;text-align:center;">'+tr("Use")+'</td>\
|
||||
<td style="width:40px;text-align:center;">'+tr("Manage")+'</td>\
|
||||
<td style="width:40px;text-align:center;">'+tr("Admin")+'</td></tr></thead>\
|
||||
<tr>\
|
||||
<td>'+tr("Owner")+'</td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vm_owner_u" class="owner_u" /></td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vm_owner_m" class="owner_m" /></td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vm_owner_a" class="owner_a" /></td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td>'+tr("Group")+'</td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vm_owner_u" class="group_u" /></td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vm_owner_m" class="group_m" /></td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vm_owner_a" class="group_a" /></td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td>'+tr("Other")+'</td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vm_owner_u" class="other_u" /></td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vm_owner_m" class="other_m" /></td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vm_owner_a" class="other_a" /></td>\
|
||||
</tr>\
|
||||
</table>\
|
||||
</div>\
|
||||
<!-- <label for="vnet_template_update_textarea">'+tr("Template")+':</label>\
|
||||
<div class="clear"></div>\
|
||||
<textarea id="vnet_template_update_textarea" style="width:100%; height:14em;"></textarea>\
|
||||
-->\
|
||||
</fieldset>\
|
||||
<fieldset>\
|
||||
<div class="form_buttons">\
|
||||
<button class="button" id="vm_template_update_button" value="VM.update_template">\
|
||||
'+tr("Update")+'\
|
||||
</button>\
|
||||
</div>\
|
||||
</fieldset>\
|
||||
</form>';
|
||||
|
||||
var vmachine_list_json = {};
|
||||
var dataTable_vMachines;
|
||||
var $create_vm_dialog;
|
||||
@ -115,6 +163,11 @@ var vm_actions = {
|
||||
call: popUpCreateVMDialog,
|
||||
},
|
||||
|
||||
"VM.update_dialog" : {
|
||||
type: "custom",
|
||||
call: popUpVMTemplateUpdateDialog
|
||||
},
|
||||
|
||||
"VM.list" : {
|
||||
type: "list",
|
||||
call: OpenNebula.VM.list,
|
||||
@ -241,6 +294,15 @@ var vm_actions = {
|
||||
notify: true
|
||||
},
|
||||
|
||||
"VM.reboot" : {
|
||||
type: "multiple",
|
||||
call: OpenNebula.VM.reboot,
|
||||
callback: vmShow,
|
||||
elements: vmElements,
|
||||
error: onError,
|
||||
notify: true
|
||||
},
|
||||
|
||||
"VM.saveasmultiple" : {
|
||||
type: "custom",
|
||||
call: function(){
|
||||
@ -364,8 +426,24 @@ var vm_actions = {
|
||||
elements: vmElements,
|
||||
error: onError,
|
||||
notify: true
|
||||
}
|
||||
}
|
||||
},
|
||||
"VM.fetch_permissions" : {
|
||||
type: "single",
|
||||
call: OpenNebula.VM.show,
|
||||
callback : function(request, vm_json){
|
||||
var dialog = $('#vm_template_update_dialog form');
|
||||
var vm = vm_json.VM;
|
||||
setPermissionsTable(vm,dialog);
|
||||
},
|
||||
error: onError
|
||||
},
|
||||
"VM.chmod" : {
|
||||
type: "single",
|
||||
call: OpenNebula.VM.chmod,
|
||||
error: onError,
|
||||
notify: true
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -382,6 +460,12 @@ var vm_buttons = {
|
||||
alwaysActive: true
|
||||
},
|
||||
|
||||
"VM.update_dialog" : {
|
||||
type: "action",
|
||||
text: tr("Update properties"),
|
||||
alwaysActive: true
|
||||
},
|
||||
|
||||
"VM.chown" : {
|
||||
type: "confirm_with_select",
|
||||
text: tr("Change owner"),
|
||||
@ -464,6 +548,11 @@ var vm_buttons = {
|
||||
text: tr("Resubmit"),
|
||||
tip: tr("This will resubmits VMs to PENDING state")
|
||||
},
|
||||
"VM.reboot" : {
|
||||
type : "confirm",
|
||||
text: tr("Reboot"),
|
||||
tip: tr("This will send a reboot action to running VMs")
|
||||
},
|
||||
"VM.saveasmultiple" : {
|
||||
type: "action",
|
||||
text: tr("Save as")
|
||||
@ -659,7 +748,21 @@ function updateVMInfo(request,vm){
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("Deploy ID")+'</td>\
|
||||
<td class="value_td">'+(typeof(vm_info.DEPLOY_ID) == "object" ? "-" : vm_info.DEPLOY_ID)+'</td>\
|
||||
</tr></tbody>\
|
||||
</tr>\
|
||||
<tr><td></td><td></td></tr>\
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("Owner permissions")+'</td>\
|
||||
<td class="value_td">'+ownerPermStr(vm_info)+'</td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("Group permissions")+'</td>\
|
||||
<td class="value_td">'+groupPermStr(vm_info)+'</td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("Other permissions")+'</td>\
|
||||
<td class="value_td">'+otherPermStr(vm_info)+'</td>\
|
||||
</tr>\
|
||||
</tbody>\
|
||||
</table>\
|
||||
<table id="vm_monitoring_table" class="info_table">\
|
||||
<thead>\
|
||||
@ -908,7 +1011,100 @@ function saveasDisksCallback(req,response){
|
||||
//introduce options in the right tab
|
||||
$('#saveas_tabs #saveas_tab_'+id+' #vm_disk_id',$saveas_vm_dialog).html(select);
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
function setupVMTemplateUpdateDialog(){
|
||||
//Append to DOM
|
||||
dialogs_context.append('<div id="vm_template_update_dialog" title="'+tr("Update VM properties")+'"></div>');
|
||||
var dialog = $('#vm_template_update_dialog',dialogs_context);
|
||||
|
||||
//Put HTML in place
|
||||
dialog.html(update_vm_tmpl);
|
||||
|
||||
var height = Math.floor($(window).height()*0.8); //set height to a percentage of the window
|
||||
|
||||
//Convert into jQuery
|
||||
dialog.dialog({
|
||||
autoOpen:false,
|
||||
width:500,
|
||||
modal:true,
|
||||
height:height,
|
||||
resizable:true,
|
||||
});
|
||||
|
||||
$('button',dialog).button();
|
||||
|
||||
$('#vm_template_update_select',dialog).change(function(){
|
||||
var id = $(this).val();
|
||||
$('.permissions_table input',dialog).removeAttr('checked');
|
||||
$('.permissions_table',dialog).removeAttr('update');
|
||||
if (id && id.length){
|
||||
var dialog = $('#vm_template_update_dialog');
|
||||
Sunstone.runAction("VM.fetch_permissions",id);
|
||||
};
|
||||
});
|
||||
|
||||
$('.permissions_table input',dialog).change(function(){
|
||||
$(this).parents('table').attr('update','update');
|
||||
});
|
||||
|
||||
$('form',dialog).submit(function(){
|
||||
var dialog = $(this);
|
||||
var id = $('#vm_template_update_select',dialog).val();
|
||||
if (!id || !id.length) {
|
||||
$(this).parents('#vm_template_update_dialog').dialog('close');
|
||||
return false;
|
||||
};
|
||||
|
||||
var permissions = $('.permissions_table',dialog);
|
||||
if (permissions.attr('update')){
|
||||
var perms = {
|
||||
octet : buildOctet(permissions)
|
||||
};
|
||||
Sunstone.runAction("VM.chmod",id,perms);
|
||||
};
|
||||
|
||||
$(this).parents('#vm_template_update_dialog').dialog('close');
|
||||
return false;
|
||||
});
|
||||
};
|
||||
|
||||
function popUpVMTemplateUpdateDialog(){
|
||||
var select = makeSelectOptions(dataTable_vMachines,
|
||||
1,//id_col
|
||||
4,//name_col
|
||||
[],
|
||||
[]
|
||||
);
|
||||
var sel_elems = getSelectedNodes(dataTable_vMachines);
|
||||
|
||||
|
||||
var dialog = $('#vm_template_update_dialog');
|
||||
$('#vm_template_update_select',dialog).html(select);
|
||||
$('#vm_template_update_textarea',dialog).val("");
|
||||
$('.permissions_table input',dialog).removeAttr('checked');
|
||||
$('.permissions_table',dialog).removeAttr('update');
|
||||
|
||||
if (sel_elems.length >= 1){ //several items in the list are selected
|
||||
//grep them
|
||||
var new_select= sel_elems.length > 1? '<option value="">Please select</option>' : "";
|
||||
$('option','<select>'+select+'</select>').each(function(){
|
||||
var val = $(this).val();
|
||||
if ($.inArray(val,sel_elems) >= 0){
|
||||
new_select+='<option value="'+val+'">'+$(this).text()+'</option>';
|
||||
};
|
||||
});
|
||||
$('#vm_template_update_select',dialog).html(new_select);
|
||||
if (sel_elems.length == 1) {
|
||||
$('#vm_template_update_select option',dialog).attr('selected','selected');
|
||||
$('#vm_template_update_select',dialog).trigger("change");
|
||||
};
|
||||
};
|
||||
|
||||
dialog.dialog('open');
|
||||
return false;
|
||||
};
|
||||
|
||||
//Prepares autorefresh
|
||||
function setVMAutorefresh(){
|
||||
@ -1069,10 +1265,10 @@ $(document).ready(function(){
|
||||
{ "sWidth": "150px", "aTargets": [5,9] },
|
||||
{ "sWidth": "100px", "aTargets": [2,3] }
|
||||
],
|
||||
"oLanguage": (datatable_lang != "") ?
|
||||
{
|
||||
sUrl: "locale/"+lang+"/"+datatable_lang
|
||||
} : ""
|
||||
"oLanguage": (datatable_lang != "") ?
|
||||
{
|
||||
sUrl: "locale/"+lang+"/"+datatable_lang
|
||||
} : ""
|
||||
});
|
||||
|
||||
dataTable_vMachines.fnClearTable();
|
||||
@ -1082,6 +1278,7 @@ $(document).ready(function(){
|
||||
Sunstone.runAction("VM.list");
|
||||
|
||||
setupCreateVMDialog();
|
||||
setupVMTemplateUpdateDialog();
|
||||
setupSaveasDialog();
|
||||
setVMAutorefresh();
|
||||
setupVNC();
|
||||
|
@ -30,7 +30,6 @@ var vnets_tab_content =
|
||||
<th>'+tr("Name")+'</th>\
|
||||
<th>'+tr("Type")+'</th>\
|
||||
<th>'+tr("Bridge")+'</th>\
|
||||
<th>'+tr("Public")+'</th>\
|
||||
<th>'+tr("Total Leases")+'</th>\
|
||||
</tr>\
|
||||
</thead>\
|
||||
@ -149,8 +148,31 @@ var update_vnet_tmpl =
|
||||
<select id="vnet_template_update_select" name="vnet_template_update_select"></select>\
|
||||
<div class="clear"></div>\
|
||||
<div>\
|
||||
<label for="vnet_template_update_public">'+tr("Public")+':</label>\
|
||||
<input type="checkbox" name="vnet_template_update_public" id="vnet_template_update_public" />\
|
||||
<table class="permissions_table" style="padding:0 10px;">\
|
||||
<thead><tr>\
|
||||
<td style="width:130px">'+tr("Permissions")+':</td>\
|
||||
<td style="width:40px;text-align:center;">'+tr("Use")+'</td>\
|
||||
<td style="width:40px;text-align:center;">'+tr("Manage")+'</td>\
|
||||
<td style="width:40px;text-align:center;">'+tr("Admin")+'</td></tr></thead>\
|
||||
<tr>\
|
||||
<td>'+tr("Owner")+'</td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vnet_owner_u" class="owner_u" /></td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vnet_owner_m" class="owner_m" /></td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vnet_owner_a" class="owner_a" /></td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td>'+tr("Group")+'</td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vnet_owner_u" class="group_u" /></td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vnet_owner_m" class="group_m" /></td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vnet_owner_a" class="group_a" /></td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td>'+tr("Other")+'</td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vnet_owner_u" class="other_u" /></td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vnet_owner_m" class="other_m" /></td>\
|
||||
<td style="text-align:center"><input type="checkbox" name="vnet_owner_a" class="other_a" /></td>\
|
||||
</tr>\
|
||||
</table>\
|
||||
</div>\
|
||||
<label for="vnet_template_update_textarea">'+tr("Template")+':</label>\
|
||||
<div class="clear"></div>\
|
||||
@ -299,6 +321,14 @@ var vnet_actions = {
|
||||
notify: true
|
||||
},
|
||||
|
||||
"Network.chmod" : {
|
||||
type: "single",
|
||||
call: OpenNebula.Network.chmod,
|
||||
// callback
|
||||
error: onError,
|
||||
notify: true
|
||||
},
|
||||
|
||||
"Network.fetch_template" : {
|
||||
type: "single",
|
||||
call: OpenNebula.Network.fetch_template,
|
||||
@ -308,11 +338,20 @@ var vnet_actions = {
|
||||
error: onError
|
||||
},
|
||||
|
||||
"Network.fetch_permissions" : {
|
||||
type: "single",
|
||||
call: OpenNebula.Network.show,
|
||||
callback: function(request,vnet_json){
|
||||
var dialog = $('#vnet_template_update_dialog form');
|
||||
var vnet = vnet_json.VNET;
|
||||
setPermissionsTable(vnet,dialog);
|
||||
},
|
||||
error: onError
|
||||
},
|
||||
|
||||
"Network.update_dialog" : {
|
||||
type: "custom",
|
||||
call: function() {
|
||||
popUpVNetTemplateUpdateDialog();
|
||||
}
|
||||
call: popUpVNetTemplateUpdateDialog
|
||||
},
|
||||
|
||||
"Network.update" : {
|
||||
@ -341,20 +380,10 @@ var vnet_buttons = {
|
||||
|
||||
"Network.update_dialog" : {
|
||||
type: "action",
|
||||
text: tr("Update a template"),
|
||||
text: tr("Update properties"),
|
||||
alwaysActive: true
|
||||
},
|
||||
|
||||
"Network.publish" : {
|
||||
type: "action",
|
||||
text: tr("Publish")
|
||||
},
|
||||
|
||||
"Network.unpublish" : {
|
||||
type: "action",
|
||||
text: tr("Unpublish")
|
||||
},
|
||||
|
||||
"Network.chown" : {
|
||||
type: "confirm_with_select",
|
||||
text: tr("Change owner"),
|
||||
@ -419,8 +448,6 @@ function vNetworkElementArray(vn_json){
|
||||
network.NAME,
|
||||
parseInt(network.TYPE) ? "FIXED" : "RANGED",
|
||||
network.BRIDGE,
|
||||
parseInt(network.PUBLIC) ? '<input class="action_cb" id="cb_public_vnet" type="checkbox" elem_id="'+network.ID+'" checked="checked"/>'
|
||||
: '<input class="action_cb" id="cb_public_vnet" type="checkbox" elem_id="'+network.ID+'"/>',
|
||||
network.TOTAL_LEASES ];
|
||||
}
|
||||
|
||||
@ -487,11 +514,11 @@ function updateVNetworkInfo(request,vn){
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("ID")+'</td>\
|
||||
<td class="value_td">'+vn_info.ID+'</td>\
|
||||
<tr>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("Name")+'</td>\
|
||||
<td class="value_td">'+vn_info.NAME+'</td>\
|
||||
<tr>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("Owner")+'</td>\
|
||||
<td class="value_td">'+vn_info.UNAME+'</td>\
|
||||
@ -500,10 +527,6 @@ function updateVNetworkInfo(request,vn){
|
||||
<td class="key_td">'+tr("Group")+'</td>\
|
||||
<td class="value_td">'+vn_info.GNAME+'</td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("Public")+'</td>\
|
||||
<td class="value_td">'+(parseInt(vn_info.PUBLIC) ? "yes" : "no" )+'</td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("Physical device")+'</td>\
|
||||
<td class="value_td">'+ (typeof(vn_info.PHYDEV) == "object" ? "--": vn_info.PHYDEV) +'</td>\
|
||||
@ -512,6 +535,19 @@ function updateVNetworkInfo(request,vn){
|
||||
<td class="key_td">'+tr("VNET ID")+'</td>\
|
||||
<td class="value_td">'+ (typeof(vn_info.VLAN_ID) == "object" ? "--": vn_info.VLAN_ID) +'</td>\
|
||||
</tr>\
|
||||
<tr><td></td><td></td></tr>\
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("Owner permissions")+'</td>\
|
||||
<td class="value_td">'+ownerPermStr(vn_info)+'</td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("Group permissions")+'</td>\
|
||||
<td class="value_td">'+groupPermStr(vn_info)+'</td>\
|
||||
</tr>\
|
||||
<tr>\
|
||||
<td class="key_td">'+tr("Other permissions")+'</td>\
|
||||
<td class="value_td">'+otherPermStr(vn_info)+'</td>\
|
||||
</tr>\
|
||||
</table>';
|
||||
|
||||
info_tab_content += '\
|
||||
@ -802,7 +838,7 @@ function setupCreateVNetDialog() {
|
||||
if (ip_start.length)
|
||||
network_json["vnet"]["ip_start"] = ip_start;
|
||||
if (ip_end.length)
|
||||
network_json["vnet"]["ip_start"] = ip_end;
|
||||
network_json["vnet"]["ip_end"] = ip_end;
|
||||
};
|
||||
};
|
||||
|
||||
@ -836,63 +872,63 @@ function popUpCreateVnetDialog() {
|
||||
|
||||
function setupVNetTemplateUpdateDialog(){
|
||||
//Append to DOM
|
||||
dialogs_context.append('<div id="vnet_template_update_dialog" title="'+tr("Update network template")+'"></div>');
|
||||
dialogs_context.append('<div id="vnet_template_update_dialog" title="'+tr("Update network properties")+'"></div>');
|
||||
var dialog = $('#vnet_template_update_dialog',dialogs_context);
|
||||
|
||||
//Put HTML in place
|
||||
dialog.html(update_vnet_tmpl);
|
||||
|
||||
var height = Math.floor($(window).height()*0.8); //set height to a percentage of the window
|
||||
|
||||
//Convert into jQuery
|
||||
dialog.dialog({
|
||||
autoOpen:false,
|
||||
width:700,
|
||||
modal:true,
|
||||
height:480,
|
||||
resizable:false,
|
||||
height:height,
|
||||
resizable:true,
|
||||
});
|
||||
|
||||
$('button',dialog).button();
|
||||
|
||||
$('#vnet_template_update_select',dialog).change(function(){
|
||||
var id = $(this).val();
|
||||
$('.permissions_table input',dialog).removeAttr('checked')
|
||||
$('.permissions_table',dialog).removeAttr('update');
|
||||
if (id && id.length){
|
||||
var dialog = $('#vnet_template_update_dialog');
|
||||
$('#vnet_template_update_textarea',dialog).val(tr("Loading")+"...");
|
||||
|
||||
var vnet_public = is_public_vnet(id);
|
||||
|
||||
if (vnet_public){
|
||||
$('#vnet_template_update_public',dialog).attr('checked','checked')
|
||||
} else {
|
||||
$('#vnet_template_update_public',dialog).removeAttr('checked')
|
||||
}
|
||||
|
||||
Sunstone.runAction("Network.fetch_permissions",id);
|
||||
Sunstone.runAction("Network.fetch_template",id);
|
||||
} else {
|
||||
$('#vnet_template_update_textarea',dialog).val("");
|
||||
};
|
||||
});
|
||||
|
||||
$('#vnet_template_update_button',dialog).click(function(){
|
||||
var dialog = $('#vnet_template_update_dialog');
|
||||
$('.permissions_table input',dialog).change(function(){
|
||||
$(this).parents('table').attr('update','update');
|
||||
});
|
||||
|
||||
$('form',dialog).submit(function(){
|
||||
var dialog = $(this);
|
||||
var new_template = $('#vnet_template_update_textarea',dialog).val();
|
||||
var id = $('#vnet_template_update_select',dialog).val();
|
||||
if (!id || !id.length) {
|
||||
dialog.dialog('close');
|
||||
$(this).parents('#vnet_template_update_dialog').dialog('close');
|
||||
return false;
|
||||
};
|
||||
|
||||
var old_public = is_public_vnet(id);
|
||||
|
||||
var new_public = $('#vnet_template_update_public:checked',dialog).length;
|
||||
|
||||
if (old_public != new_public){
|
||||
if (new_public) Sunstone.runAction("Network.publish",id);
|
||||
else Sunstone.runAction("Network.unpublish",id);
|
||||
var permissions = $('.permissions_table',dialog);
|
||||
if (permissions.attr('update')){
|
||||
var perms = {
|
||||
octet : buildOctet(permissions)
|
||||
};
|
||||
Sunstone.runAction("Network.chmod",id,perms);
|
||||
};
|
||||
|
||||
Sunstone.runAction("Network.update",id,new_template);
|
||||
dialog.dialog('close');
|
||||
$(this).parents('#vnet_template_update_dialog').dialog('close');
|
||||
return false;
|
||||
});
|
||||
};
|
||||
@ -910,7 +946,8 @@ function popUpVNetTemplateUpdateDialog(){
|
||||
var dialog = $('#vnet_template_update_dialog');
|
||||
$('#vnet_template_update_select',dialog).html(select);
|
||||
$('#vnet_template_update_textarea',dialog).val("");
|
||||
$('#vnet_template_update_public',dialog).removeAttr('checked')
|
||||
$('.permissions_table input',dialog).removeAttr('checked');
|
||||
$('.permissions_table',dialog).removeAttr('update');
|
||||
|
||||
if (sel_elems.length >= 1){ //several items in the list are selected
|
||||
//grep them
|
||||
@ -925,8 +962,7 @@ function popUpVNetTemplateUpdateDialog(){
|
||||
if (sel_elems.length == 1) {
|
||||
$('#vnet_template_update_select option',dialog).attr('selected','selected');
|
||||
$('#vnet_template_update_select',dialog).trigger("change");
|
||||
}
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
dialog.dialog('open');
|
||||
@ -999,23 +1035,6 @@ function setVNetAutorefresh() {
|
||||
},INTERVAL+someTime());
|
||||
};
|
||||
|
||||
function is_public_vnet(id) {
|
||||
var data = getElementData(id,"#vnetwork",dataTable_vNetworks)[7];
|
||||
return $(data).is(":checked");
|
||||
};
|
||||
|
||||
function setupVNetActionCheckboxes(){
|
||||
$('input.action_cb#cb_public_vnet',dataTable_vNetworks).live("click",function(){
|
||||
var $this = $(this)
|
||||
var id=$this.attr('elem_id');
|
||||
if ($this.attr('checked'))
|
||||
Sunstone.runAction("Network.publish",id);
|
||||
else Sunstone.runAction("Network.unpublish",id);
|
||||
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
//The DOM is ready and the ready() from sunstone.js
|
||||
//has been executed at this point.
|
||||
$(document).ready(function(){
|
||||
@ -1027,7 +1046,7 @@ $(document).ready(function(){
|
||||
"sPaginationType": "full_numbers",
|
||||
"aoColumnDefs": [
|
||||
{ "bSortable": false, "aTargets": ["check"] },
|
||||
{ "sWidth": "60px", "aTargets": [0,5,6,7,8] },
|
||||
{ "sWidth": "60px", "aTargets": [0,5,6,7] },
|
||||
{ "sWidth": "35px", "aTargets": [1] },
|
||||
{ "sWidth": "100px", "aTargets": [2,3] }
|
||||
],
|
||||
@ -1040,13 +1059,12 @@ $(document).ready(function(){
|
||||
dataTable_vNetworks.fnClearTable();
|
||||
addElement([
|
||||
spinner,
|
||||
'','','','','','','',''],dataTable_vNetworks);
|
||||
'','','','','','',''],dataTable_vNetworks);
|
||||
Sunstone.runAction("Network.list");
|
||||
|
||||
setupCreateVNetDialog();
|
||||
setupVNetTemplateUpdateDialog();
|
||||
setupLeasesOps();
|
||||
setupVNetActionCheckboxes();
|
||||
setVNetAutorefresh();
|
||||
|
||||
initCheckAllBoxes(dataTable_vNetworks);
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
|
||||
/* Some useful functions for Sunstone default plugins */
|
||||
var INTERVAL=60000; //milisecs
|
||||
var INTERVAL=300000; //milisecs
|
||||
|
||||
function someTime(){
|
||||
return Math.floor(Math.random()*30000);
|
||||
@ -743,3 +743,126 @@ function groups_sel(){
|
||||
function hosts_sel(){
|
||||
return hosts_select;
|
||||
}
|
||||
|
||||
function ownerUse(resource){
|
||||
return parseInt(resource.PERMISSIONS.OWNER_U);
|
||||
};
|
||||
function ownerManage(resource){
|
||||
return parseInt(resource.PERMISSIONS.OWNER_M);
|
||||
};
|
||||
function ownerAdmin(resource){
|
||||
return parseInt(resource.PERMISSIONS.OWNER_A);
|
||||
};
|
||||
|
||||
function groupUse(resource){
|
||||
return parseInt(resource.PERMISSIONS.GROUP_U);
|
||||
};
|
||||
function groupManage(resource){
|
||||
return parseInt(resource.PERMISSIONS.GROUP_M);
|
||||
};
|
||||
function groupAdmin(resource){
|
||||
return parseInt(resource.PERMISSIONS.GROUP_A);
|
||||
};
|
||||
|
||||
function otherUse(resource){
|
||||
return parseInt(resource.PERMISSIONS.OTHER_U);
|
||||
};
|
||||
function otherManage(resource){
|
||||
return parseInt(resource.PERMISSIONS.OTHER_M);
|
||||
};
|
||||
function otherAdmin(resource){
|
||||
return parseInt(resource.PERMISSIONS.OTHER_A);
|
||||
};
|
||||
|
||||
|
||||
function ownerPermStr(resource){
|
||||
var result = "";
|
||||
if (ownerUse(resource))
|
||||
result += tr("Use")+", ";
|
||||
if (ownerManage(resource))
|
||||
result += tr("Manage")+", ";
|
||||
if (ownerAdmin(resource))
|
||||
result += tr("Administrate")+", ";
|
||||
|
||||
//Remove ", " from end
|
||||
result = result.substring(0,result.length-2);
|
||||
return result;
|
||||
};
|
||||
|
||||
function groupPermStr(resource){
|
||||
var result = "";
|
||||
if (groupUse(resource))
|
||||
result += tr("Use")+", ";
|
||||
if (groupManage(resource))
|
||||
result += tr("Manage")+", ";
|
||||
if (groupAdmin(resource))
|
||||
result += tr("Administrate")+", ";
|
||||
|
||||
//Remove ", " from end
|
||||
result = result.substring(0,result.length-2);
|
||||
return result;
|
||||
};
|
||||
|
||||
function otherPermStr(resource){
|
||||
var result = "";
|
||||
if (otherUse(resource))
|
||||
result += tr("Use")+", ";
|
||||
if (otherManage(resource))
|
||||
result += tr("Manage")+", ";
|
||||
if (otherAdmin(resource))
|
||||
result += tr("Administrate")+", ";
|
||||
|
||||
//Remove ", " from end
|
||||
result = result.substring(0,result.length-2);
|
||||
return result;
|
||||
};
|
||||
|
||||
function setPermissionsTable(resource,context){
|
||||
if (ownerUse(resource))
|
||||
$('.owner_u',context).attr('checked','checked');
|
||||
if (ownerManage(resource))
|
||||
$('.owner_m',context).attr('checked','checked');
|
||||
if (ownerAdmin(resource))
|
||||
$('.owner_a',context).attr('checked','checked');
|
||||
if (groupUse(resource))
|
||||
$('.group_u',context).attr('checked','checked');
|
||||
if (groupManage(resource))
|
||||
$('.group_m',context).attr('checked','checked');
|
||||
if (groupAdmin(resource))
|
||||
$('.group_a',context).attr('checked','checked');
|
||||
if (otherUse(resource))
|
||||
$('.other_u',context).attr('checked','checked');
|
||||
if (otherManage(resource))
|
||||
$('.other_m',context).attr('checked','checked');
|
||||
if (otherAdmin(resource))
|
||||
$('.other_a',context).attr('checked','checked');
|
||||
};
|
||||
|
||||
function buildOctet(permTable){
|
||||
var owner=0;
|
||||
var group=0;
|
||||
var other=0;
|
||||
|
||||
if ($('.owner_u',permTable).is(':checked'))
|
||||
owner+=4;
|
||||
if ($('.owner_m',permTable).is(':checked'))
|
||||
owner+=2;
|
||||
if ($('.owner_a',permTable).is(':checked'))
|
||||
owner+=1;
|
||||
|
||||
if ($('.group_u',permTable).is(':checked'))
|
||||
group+=4;
|
||||
if ($('.group_m',permTable).is(':checked'))
|
||||
group+=2;
|
||||
if ($('.group_a',permTable).is(':checked'))
|
||||
group+=1;
|
||||
|
||||
if ($('.other_u',permTable).is(':checked'))
|
||||
other+=4;
|
||||
if ($('.other_m',permTable).is(':checked'))
|
||||
other+=2;
|
||||
if ($('.other_a',permTable).is(':checked'))
|
||||
other+=1;
|
||||
|
||||
return ""+owner+group+other;
|
||||
};
|
@ -19,6 +19,8 @@ locale={
|
||||
"Add lease":"",
|
||||
"Add network":"",
|
||||
"Add placement options":"",
|
||||
"Admin":"",
|
||||
"Administrate":"",
|
||||
"Advanced mode":"",
|
||||
"Affected resources":"",
|
||||
"All":"",
|
||||
@ -132,14 +134,12 @@ locale={
|
||||
"Format":"",
|
||||
"FS":"",
|
||||
"FS type":"",
|
||||
"Get Information":"",
|
||||
"Get Pool of my/group\'s resources":"",
|
||||
"Get Pool of resources":"",
|
||||
"Graphics":"",
|
||||
"Graphics type":"",
|
||||
"Group":"",
|
||||
"Group ":"",
|
||||
"Group name":"",
|
||||
"Group permissions":"",
|
||||
"Groups":"",
|
||||
"Hardware that will emulate this network interface. With Xen this is the type attribute of the vif.":"",
|
||||
"hd":"",
|
||||
@ -166,7 +166,6 @@ locale={
|
||||
"ID":"",
|
||||
"IDE":"",
|
||||
"Image":"",
|
||||
"Image cannot be public and persistent":"",
|
||||
"Image information":"",
|
||||
"Image name":"",
|
||||
"Images":"",
|
||||
@ -248,8 +247,11 @@ locale={
|
||||
"Optional, please select":"",
|
||||
"OS":"",
|
||||
"OS and Boot options":"",
|
||||
"Other":"",
|
||||
"Other permissions":"",
|
||||
"Owned by group":"",
|
||||
"Owner":"",
|
||||
"Owner permissions":"",
|
||||
"PAE":"",
|
||||
"Password":"",
|
||||
"Password for the VNC server":"",
|
||||
@ -260,6 +262,7 @@ locale={
|
||||
"Path to the OS kernel to boot the image":"",
|
||||
"Path vs. source":"",
|
||||
"Percentage of CPU divided by 100 required for the Virtual Machine. Half a processor is written 0.5.":"",
|
||||
"Permissions":"",
|
||||
"Permits access to the VM only through the specified ports in the TCP protocol":"",
|
||||
"Permits access to the VM only through the specified ports in the UDP protocol":"",
|
||||
"Persistence of the image":"",
|
||||
@ -270,6 +273,7 @@ locale={
|
||||
"Please choose":"",
|
||||
"Please, choose and modify the image you want to update":"",
|
||||
"Please, choose and modify the template you want to update":"",
|
||||
"Please, choose and modify the virtual machine you want to update":"",
|
||||
"Please, choose and modify the virtual network you want to update":"",
|
||||
"Please choose path if you have a file-based image. Choose source otherwise or create an empty datablock disk.":"",
|
||||
"Please choose the new type of authentication for the selected users":"",
|
||||
@ -290,7 +294,6 @@ locale={
|
||||
"Provide a source":"",
|
||||
"PS2":"",
|
||||
"Public":"",
|
||||
"Public scope of the image":"",
|
||||
"Publish":"",
|
||||
"Quickstart":"",
|
||||
"Ranged network":"",
|
||||
@ -298,6 +301,7 @@ locale={
|
||||
"Raw":"",
|
||||
"Raw data to be passed directly to the hypervisor":"",
|
||||
"Read only":"",
|
||||
"Reboot":"",
|
||||
"Refresh list":"",
|
||||
"Register time":"",
|
||||
"Registration time":"",
|
||||
@ -329,6 +333,7 @@ locale={
|
||||
"Select a network":"",
|
||||
"Select an image":"",
|
||||
"Select a template":"",
|
||||
"Select a VM":"",
|
||||
"Select boot method":"",
|
||||
"Select disk":"",
|
||||
"Select template":"",
|
||||
@ -390,6 +395,7 @@ locale={
|
||||
"This will release held machines":"",
|
||||
"This will resubmits VMs to PENDING state":"",
|
||||
"This will resume selected stopped or suspended VMs":"",
|
||||
"This will send a reboot action to running VMs":"",
|
||||
"This will suspend selected machines":"",
|
||||
"TM MAD":"",
|
||||
"total":"",
|
||||
@ -410,9 +416,12 @@ locale={
|
||||
"Unpublish":"",
|
||||
"Update":"",
|
||||
"Update a template":"",
|
||||
"Update image template":"",
|
||||
"Update network template":"",
|
||||
"Update image properties":"",
|
||||
"Update network properties":"",
|
||||
"Update properties":"",
|
||||
"Update template":"",
|
||||
"Update template properties":"",
|
||||
"Update VM properties":"",
|
||||
"USB":"",
|
||||
"Use":"",
|
||||
"Used by VM":"",
|
||||
|
@ -1,79 +1,82 @@
|
||||
//Translated by
|
||||
lang="en_US"
|
||||
datatable_lang=""
|
||||
//Translated by JSC "VIVOSS and OI", 2011
|
||||
//Переведено ЗАО «ВИВОСС и ОИ», 2011
|
||||
lang="ru"
|
||||
datatable_lang="ru_datatable.txt"
|
||||
locale={
|
||||
"Accept (default)":"",
|
||||
"Acl":"",
|
||||
"ACL Rules":"",
|
||||
"ACLs":"",
|
||||
"Accept (default)":"Принять (по умолчанию)",
|
||||
"Acl":"Список контроля доступа",
|
||||
"ACL Rules":"Правила контроля доступа",
|
||||
"ACLs":"Списки контроля",
|
||||
"ACL String preview":"",
|
||||
"ACPI":"",
|
||||
"Add":"",
|
||||
"Add context variables":"",
|
||||
"Add custom variables":"",
|
||||
"Add disk/image":"",
|
||||
"Add disks/images":"",
|
||||
"Add Graphics":"",
|
||||
"Add Hypervisor raw options":"",
|
||||
"Add inputs":"",
|
||||
"Add lease":"",
|
||||
"Add network":"",
|
||||
"Add placement options":"",
|
||||
"Advanced mode":"",
|
||||
"Affected resources":"",
|
||||
"All":"",
|
||||
"Allowed operations":"",
|
||||
"Amount of RAM required for the VM, in Megabytes.":"",
|
||||
"Applies to":"",
|
||||
"ACPI":"ACPI",
|
||||
"Add":"Добавить",
|
||||
"Add context variables":"Добавить контекстные переменные",
|
||||
"Add custom variables":"Добавить пользовательские переменные",
|
||||
"Add disk/image":"Добавить диск/образ",
|
||||
"Add disks/images":"Добавить диски/образы",
|
||||
"Add Graphics":"Добавить графические устройства",
|
||||
"Add Hypervisor raw options":"Добавить исходные опции гипервизора",
|
||||
"Add inputs":"Добавить устройства ввода",
|
||||
"Add lease":"Добавить адрес",
|
||||
"Add network":"Добавить сеть",
|
||||
"Add placement options":"Добавить опции размещения",
|
||||
"Admin":"",
|
||||
"Administrate":"",
|
||||
"Advanced mode":"Расширенный режим",
|
||||
"Affected resources":"Затрагиваемые правилом ресурсы",
|
||||
"All":"Все",
|
||||
"Allowed operations":"Разрешенные действия",
|
||||
"Amount of RAM required for the VM, in Megabytes.":"Объем ОЗУ (в МБ), необходимый для ВМ.",
|
||||
"Applies to":"Применено к",
|
||||
"Architecture":"",
|
||||
"are mandatory":"",
|
||||
"Arguments for the booting kernel":"",
|
||||
"are mandatory":"обязательные",
|
||||
"Arguments for the booting kernel":"Параметры для загрузки ядра",
|
||||
"Authentication":"",
|
||||
"Authentication driver":"",
|
||||
"Block":"",
|
||||
"Boolean expression that rules out provisioning hosts from list of machines suitable to run this VM":"",
|
||||
"Block":"Block",
|
||||
"Boolean expression that rules out provisioning hosts from list of machines suitable to run this VM":"Логическое выражение, исключающее элементы из списка узлов, подходящих для запуска данной ВМ",
|
||||
"Boot":"",
|
||||
"Boot device type":"",
|
||||
"Boot device type":"Тип устройства загрузки",
|
||||
"Bootloader":"",
|
||||
"Boot method":"",
|
||||
"Boot/OS options":"",
|
||||
"Bridge":"",
|
||||
"Boot/OS options":"Загрузка и тип ОС",
|
||||
"Bridge":"Шлюз",
|
||||
"Bus":"",
|
||||
"Cancel":"",
|
||||
"Cancel":"Отменить",
|
||||
"Cannot contact server: is it running and reachable?":"",
|
||||
"Canvas not supported.":"",
|
||||
"Capacity":"",
|
||||
"Capacity options":"",
|
||||
"cdrom":"",
|
||||
"CD-ROM":"",
|
||||
"Canvas not supported.":"Canvas не поддерживается.",
|
||||
"Capacity":"Производительность",
|
||||
"Capacity options":"Настройки производительности",
|
||||
"cdrom":"cdrom",
|
||||
"CD-ROM":"CD-ROM",
|
||||
"Change":"",
|
||||
"Change authentication":"",
|
||||
"Change group":"",
|
||||
"Change owner":"",
|
||||
"Change group":"Сменить группу",
|
||||
"Change owner":"Сменить владельца",
|
||||
"Change password":"",
|
||||
"Changing language":"",
|
||||
"Clone":"",
|
||||
"Clone this image":"",
|
||||
"Clone this image":"Клонировать образ",
|
||||
"Community":"",
|
||||
"Configuration":"",
|
||||
"Confirmation of action":"",
|
||||
"Context":"",
|
||||
"Context variable name and value must be filled in":"",
|
||||
"Confirmation of action":"Подтверждение действия",
|
||||
"Context":"Контекст",
|
||||
"Context variable name and value must be filled in":"Поля «Имя переменной» и «Значение» должны быть заполнены",
|
||||
"Core":"",
|
||||
"CPU":"",
|
||||
"CPU architecture to virtualization":"",
|
||||
"CPU Monitoring information":"",
|
||||
"CPU Use":"",
|
||||
"Create":"",
|
||||
"Create ACL":"",
|
||||
"Create an empty datablock":"",
|
||||
"Create group":"",
|
||||
"Create host":"",
|
||||
"CPU":"ЦП",
|
||||
"CPU architecture to virtualization":"Архитектура ЦП для виртуализации",
|
||||
"CPU Monitoring information":"Мониторинг ЦП",
|
||||
"CPU Use":"Использование ЦП",
|
||||
"Create":"Создать",
|
||||
"Create ACL":"Создать список контроля",
|
||||
"Create an empty datablock":"Создать пустой блок данных",
|
||||
"Create group":"Создать группу",
|
||||
"Create host":"Создать узел",
|
||||
"Create Image":"",
|
||||
"Create user":"",
|
||||
"Create Virtual Machine":"",
|
||||
"Create Virtual Network":"",
|
||||
"Create VM Template":"",
|
||||
"Create user":"Создать пользователя",
|
||||
"Create Virtual Machine":"Создать виртуальную машину",
|
||||
"Create Virtual Network":"Создать виртуальную сеть",
|
||||
"Create VM Template":"Создать шаблон ВМ",
|
||||
"Current disks":"",
|
||||
"Current inputs":"",
|
||||
"Current leases":"",
|
||||
@ -81,402 +84,415 @@ locale={
|
||||
"Current variables":"",
|
||||
"Custom attribute name and value must be filled in":"",
|
||||
"Custom attributes":"",
|
||||
"Custom variable name and value must be filled in":"",
|
||||
"Custom variables":"",
|
||||
"Dashboard":"",
|
||||
"Custom variable name and value must be filled in":"Поля «Имя переменной» и «Значение» должны быть заполнены",
|
||||
"Custom variables":"Пользовательские переменные",
|
||||
"Dashboard":"Инф. панель",
|
||||
"Data":"",
|
||||
"Datablock":"",
|
||||
"Default":"",
|
||||
"Datablock":"Блок данных",
|
||||
"Default":"По умолчанию",
|
||||
"Default (current image type)":"",
|
||||
"Define a subnet by IP range":"",
|
||||
"Delete":"",
|
||||
"Delete host":"",
|
||||
"Deploy":"",
|
||||
"Deploy ID":"",
|
||||
"Delete":"Удалить",
|
||||
"Delete host":"Удалить узел",
|
||||
"Deploy":"Разместить на узле",
|
||||
"Deploy ID":"№ размещения",
|
||||
"Deploy # VMs":"",
|
||||
"Description":"",
|
||||
"Device prefix":"",
|
||||
"Device to be mounted as root":"",
|
||||
"Device to map image disk. If set, it will overwrite the default device mapping":"",
|
||||
"Disable":"",
|
||||
"Device to be mounted as root":"Устройство, монтируемое как корневое",
|
||||
"Device to map image disk. If set, it will overwrite the default device mapping":"Устройство для образа диска. Если установлено, то оно перезапищет устройсво картографирования по умолчанию.",
|
||||
"Disable":"Отключить",
|
||||
"disabled":"",
|
||||
"Disallow access to the VM through the specified ports in the TCP protocol":"",
|
||||
"Disallow access to the VM through the specified ports in the UDP protocol":"",
|
||||
"Disk":"",
|
||||
"Disk file location path or URL":"",
|
||||
"Disallow access to the VM through the specified ports in the TCP protocol":"Запретить доступ к ВМ через указанные порты для TCP протокола",
|
||||
"Disallow access to the VM through the specified ports in the UDP protocol":"Запретить доступ к ВМ через указанные порты для UDP протокола",
|
||||
"Disk":"Диск",
|
||||
"Disk file location path or URL":"Путь расположения файла диска или URL",
|
||||
"disk id":"",
|
||||
"Disks":"",
|
||||
"Disk type":"",
|
||||
"Disks":"Диски",
|
||||
"Disk type":"Тип диска",
|
||||
"Documentation":"",
|
||||
"Do you want to proceed?":"",
|
||||
"Do you want to proceed?":"Хотите продолжить?",
|
||||
"Driver":"",
|
||||
"Driver default":"",
|
||||
"Drivers":"",
|
||||
"Drop":"",
|
||||
"Dummy":"",
|
||||
"EC2":"",
|
||||
"Enable":"",
|
||||
"Driver default":"Драйвер по умолчанию",
|
||||
"Drivers":"Драйверы",
|
||||
"Drop":"Сбросить",
|
||||
"Dummy":"Заглушка",
|
||||
"EC2":"EC2",
|
||||
"Enable":"Включить",
|
||||
"English":"",
|
||||
"Error":"",
|
||||
"failed":"",
|
||||
"fd":"",
|
||||
"Features":"",
|
||||
"Fields marked with":"",
|
||||
"File":"",
|
||||
"Error":"Ошибка",
|
||||
"failed":"дефектных",
|
||||
"fd":"fd",
|
||||
"Features":"Особенности",
|
||||
"Fields marked with":"Поля помеченные",
|
||||
"File":"Файл",
|
||||
"Filesystem type":"",
|
||||
"Filesystem type for the fs images":"",
|
||||
"Filesystem type for the fs images":"Тип файловой системы для образов ФС",
|
||||
"Fill in a new password":"",
|
||||
"Fixed network":"",
|
||||
"Floppy":"",
|
||||
"Fold / Unfold all sections":"",
|
||||
"Fixed network":"Фиксированные адреса",
|
||||
"Floppy":"Floppy",
|
||||
"Fold / Unfold all sections":"Свернуть/развернуть все разделы",
|
||||
"Format":"",
|
||||
"FS":"",
|
||||
"FS":"FS",
|
||||
"FS type":"",
|
||||
"Get Information":"",
|
||||
"Get Pool of my/group\'s resources":"",
|
||||
"Get Pool of resources":"",
|
||||
"Graphics":"",
|
||||
"Graphics":"Графические устройства",
|
||||
"Graphics type":"",
|
||||
"Group":"",
|
||||
"Group":"Группа пользователей",
|
||||
"Group ":"",
|
||||
"Group name":"",
|
||||
"Groups":"",
|
||||
"Hardware that will emulate this network interface. With Xen this is the type attribute of the vif.":"",
|
||||
"hd":"",
|
||||
"Historical monitoring information":"",
|
||||
"Group permissions":"",
|
||||
"Groups":"Группы",
|
||||
"Hardware that will emulate this network interface. With Xen this is the type attribute of the vif.":"Аппаратное устройствое, которое будет отвечать за эмуляцию сетевого интерфейса. Для Xen это атрибут vif.",
|
||||
"hd":"hd",
|
||||
"Historical monitoring information":"Мониторинг состояния",
|
||||
"hold":"",
|
||||
"Hold":"",
|
||||
"Hold":"Запретить размещение",
|
||||
"Hold lease":"",
|
||||
"Host":"",
|
||||
"Host information":"",
|
||||
"Hostname":"",
|
||||
"Host":"Узел",
|
||||
"Host information":"Состояние узла",
|
||||
"Hostname":"Название узла",
|
||||
"Host name missing!":"",
|
||||
"Host parameters":"",
|
||||
"Hosts":"",
|
||||
"Hosts CPU":"",
|
||||
"Host shares":"",
|
||||
"Hosts memory":"",
|
||||
"Hosts (total/active)":"",
|
||||
"Host template":"",
|
||||
"Human readable description of the image for other users.":"",
|
||||
"HW address associated with the network interface":"",
|
||||
"Host parameters":"Параметры узла",
|
||||
"Hosts":"Узлы",
|
||||
"Hosts CPU":"Загрузка ЦП",
|
||||
"Host shares":"Ресурсы узла",
|
||||
"Hosts memory":"Загрузка ОЗУ",
|
||||
"Hosts (total/active)":"Узлы (всего/из них активных)",
|
||||
"Host template":"Шаблон узла",
|
||||
"Human readable description of the image for other users.":"Краткое описание образа.",
|
||||
"HW address associated with the network interface":"MAC-адрес, связанный с сетевым интерфейсом",
|
||||
"Icmp":"",
|
||||
"ICMP policy":"",
|
||||
"id":"",
|
||||
"ID":"",
|
||||
"IDE":"",
|
||||
"Image":"",
|
||||
"Image cannot be public and persistent":"",
|
||||
"Image information":"",
|
||||
"ICMP policy":"Политика ICMP",
|
||||
"id":"№",
|
||||
"ID":"№",
|
||||
"IDE":"IDE",
|
||||
"Image":"Образ",
|
||||
"Image information":"Информация об образе",
|
||||
"Image name":"",
|
||||
"Images":"",
|
||||
"Images (total/public)":"",
|
||||
"Image template":"",
|
||||
"IM MAD":"",
|
||||
"Info":"",
|
||||
"information":"",
|
||||
"Information":"",
|
||||
"Images":"Образы ВМ",
|
||||
"Images (total/public)":"Образы (всего/из них открытых)",
|
||||
"Image template":"Шаблон образа",
|
||||
"IM MAD":"Модуль ср-ва мониторинга",
|
||||
"Info":"Информация",
|
||||
"information":" ",
|
||||
"Information":"Информация",
|
||||
"Information Manager":"",
|
||||
"Initrd":"",
|
||||
"Inputs":"",
|
||||
"Instantiate":"",
|
||||
"IP":"",
|
||||
"Inputs":"Устройства ввода",
|
||||
"Instantiate":"Создать экземпляр ВМ",
|
||||
"IP":"IP-адрес",
|
||||
"IP End":"",
|
||||
"IP Start":"",
|
||||
"IP to listen on":"",
|
||||
"IP to listen on":"IP-адрес для прослушивания",
|
||||
"Kernel":"",
|
||||
"Kernel commands":"",
|
||||
"Keyboard configuration locale to use in the VNC display":"",
|
||||
"Keymap":"",
|
||||
"KVM":"",
|
||||
"Keyboard configuration locale to use in the VNC display":"Раскладка клавиатуры, используемая при работе с VNC-дисплеем",
|
||||
"Keymap":"Раскладка клавиатуры",
|
||||
"KVM":"KVM",
|
||||
"Language":"",
|
||||
"LCM State":"",
|
||||
"LCM State":"Текущее состояние ВМ",
|
||||
"Lease IP":"",
|
||||
"Lease MAC (opt):":"",
|
||||
"Lease MAC (opt):":"MAC-адрес (необяз.):",
|
||||
"Lease management":"",
|
||||
"Leases information":"",
|
||||
"Leases information":"Сведения по имеющимся адресам виртуальной сети",
|
||||
"Listen IP":"",
|
||||
"Live migrate":"",
|
||||
"Loading":"",
|
||||
"MAC":"",
|
||||
"Make non persistent":"",
|
||||
"Make persistent":"",
|
||||
"Manage":"",
|
||||
"Manual":"",
|
||||
"Max Mem":"",
|
||||
"Memory":"",
|
||||
"Memory monitoring information":"",
|
||||
"Memory use":"",
|
||||
"Migrate":"",
|
||||
"Live migrate":"Перенести запущенную ВМ",
|
||||
"Loading":"Идет загрузка",
|
||||
"MAC":"MAC-адрес",
|
||||
"Make non persistent":"Сделать непостоянным",
|
||||
"Make persistent":"Сделать постоянным",
|
||||
"Manage":"Управлять",
|
||||
"Manual":"В ручную",
|
||||
"Max Mem":"Доступно ОЗУ",
|
||||
"Memory":"Память",
|
||||
"Memory monitoring information":"Мониторинг ОЗУ",
|
||||
"Memory use":"Использование ОЗУ",
|
||||
"Migrate":"Перенести ВМ",
|
||||
"Model":"",
|
||||
"Monitoring information":"",
|
||||
"Mount image as read-only":"",
|
||||
"Mouse":"",
|
||||
"Name":"",
|
||||
"Name for the context variable":"",
|
||||
"Name for the custom variable":"",
|
||||
"Name for the tun device created for the VM":"",
|
||||
"Name of a shell script to be executed after creating the tun device for the VM":"",
|
||||
"Name of the bridge the network device is going to be attached to":"",
|
||||
"Name of the image to use":"",
|
||||
"Name of the network to attach this device":"",
|
||||
"Name that the Image will get. Every image must have a unique name.":"",
|
||||
"Name that the VM will get for description purposes. If NAME is not supplied a name generated by one will be in the form of one-<VID>.":"",
|
||||
"Net_RX":"",
|
||||
"Net_TX":"",
|
||||
"network":"",
|
||||
"Network":"",
|
||||
"Monitoring information":"Мониторинг",
|
||||
"Mount image as read-only":"Монтировать образ только для чтения",
|
||||
"Mouse":"Мышь",
|
||||
"Name":"Название",
|
||||
"Name for the context variable":"Имя контекстной переменной",
|
||||
"Name for the custom variable":"Имя пользовательской переменной",
|
||||
"Name for the tun device created for the VM":"Имя сетевого туннеля, созданного для ВМ",
|
||||
"Name of a shell script to be executed after creating the tun device for the VM":"shell-скрипт, который будет выполнен после создания сетевого туннеля для ВМ",
|
||||
"Name of the bridge the network device is going to be attached to":"Шлюз, с которым будет связано сетевое устройство",
|
||||
"Name of the image to use":"Название образа для использования",
|
||||
"Name of the network to attach this device":"Сеть, подключаемая к данному устройству",
|
||||
"Name that the Image will get. Every image must have a unique name.":"Название, которое получит образ. Каждый образ должен обладать уникальным названием.",
|
||||
"Name that the VM will get for description purposes. If NAME is not supplied a name generated by one will be in the form of one-<VID>.":"Название, которое получит ВМ. Если название не будет указано, то оно будет сгенерировано в формате one-<№ ВМ>.",
|
||||
"Net_RX":"Принято",
|
||||
"Net_TX":"Отправлено",
|
||||
"network":"network",
|
||||
"Network":"Сеть",
|
||||
"Network Address":"",
|
||||
"Network is unreachable: is OpenNebula running?":"",
|
||||
"Network mask":"",
|
||||
"Network Mask":"",
|
||||
"Network reception":"",
|
||||
"Network transmission":"",
|
||||
"Network reception":"Сеть: принято",
|
||||
"Network transmission":"Сеть: отправлено",
|
||||
"Network type":"",
|
||||
"New":"",
|
||||
"+ New":"",
|
||||
"+ New Group":"",
|
||||
"+ New":"Добавить",
|
||||
"+ New Group":"Создать группу",
|
||||
"New password":"",
|
||||
"No":"",
|
||||
"No":"Нет",
|
||||
"No disk id or image name specified":"",
|
||||
"No disks defined":"",
|
||||
"No disks defined":"Дисков не обнаружено",
|
||||
"No leases to show":"",
|
||||
"None":"",
|
||||
"Number of virtual cpus. This value is optional, the default hypervisor behavior is used, usually one virtual CPU.":"",
|
||||
"OK":"",
|
||||
"Open VNC Session":"",
|
||||
"Optional, please select":"",
|
||||
"OS":"",
|
||||
"OS and Boot options":"",
|
||||
"Owned by group":"",
|
||||
"Owner":"",
|
||||
"None":"Никакой",
|
||||
"Number of virtual cpus. This value is optional, the default hypervisor behavior is used, usually one virtual CPU.":"Количество виртуальных процессоров. Это значение опционально, используется поведение гипервизора по умолчанию - один виртуальный ЦП.",
|
||||
"OK":"OK",
|
||||
"Open VNC Session":"Открыть VNC-сессию",
|
||||
"Optional, please select":"Опционально, пожалуйста выберите",
|
||||
"OS":"ОС",
|
||||
"OS and Boot options":"Опции загрузки и ОС",
|
||||
"Other":"",
|
||||
"Other permissions":"",
|
||||
"Owned by group":"Принадлежит группе",
|
||||
"Owner":"Владелец",
|
||||
"Owner permissions":"",
|
||||
"PAE":"",
|
||||
"Password":"",
|
||||
"Password for the VNC server":"",
|
||||
"Password for the VNC server":"Пароль для VNC сервера",
|
||||
"Path":"",
|
||||
"Path to the bootloader executable":"",
|
||||
"Path to the initrd image":"",
|
||||
"Path to the original file that will be copied to the image repository. If not specified for a DATABLOCK type image, an empty image will be created.":"",
|
||||
"Path to the OS kernel to boot the image":"",
|
||||
"Path to the bootloader executable":"Путь к исполняемому файлу загрузчика",
|
||||
"Path to the initrd image":"Путь к образу initrd",
|
||||
"Path to the original file that will be copied to the image repository. If not specified for a DATABLOCK type image, an empty image will be created.":"Путь к исходному файлу, который будет скопирован в хранилище образов. Если путь не указан для типа образа БЛОК ДАННЫХ, то будет создан пустой образ.",
|
||||
"Path to the OS kernel to boot the image":"Путь к ядру ОС для загрузки образа",
|
||||
"Path vs. source":"",
|
||||
"Percentage of CPU divided by 100 required for the Virtual Machine. Half a processor is written 0.5.":"",
|
||||
"Permits access to the VM only through the specified ports in the TCP protocol":"",
|
||||
"Permits access to the VM only through the specified ports in the UDP protocol":"",
|
||||
"Persistence of the image":"",
|
||||
"Persistent":"",
|
||||
"Physical address extension mode allows 32-bit guests to address more than 4 GB of memory":"",
|
||||
"Percentage of CPU divided by 100 required for the Virtual Machine. Half a processor is written 0.5.":"Процент процессорного времени ЦП, предоставлемого ВМ, разделенный на 100. Например, для выделения половины процессорного времени следует указать 0.5.",
|
||||
"Permissions":"",
|
||||
"Permits access to the VM only through the specified ports in the TCP protocol":"Разрешить доступ к ВМ только через указанные порты протокола TCP",
|
||||
"Permits access to the VM only through the specified ports in the UDP protocol":"Разрешить доступ к ВМ только через указанные порты протокола UPD",
|
||||
"Persistence of the image":"Если образ является постоянным, то при каждом завершении работы с полученной на его основе виртуальной машиной все изменения будут сохранены в образе.
|
||||
|
||||
Важно помнить, что сохранение выполнится только в случае завершения работы соответствующей ВМ при помощи операций «Выключить» и «Отменить».
|
||||
|
||||
Постоянный образ всегда хранится в одном экземпляре.",
|
||||
"Persistent":"Постоянный",
|
||||
"Physical address extension mode allows 32-bit guests to address more than 4 GB of memory":"Режим расширенной физической адресации позволяет использовать 32-битным ВМ больше 4-х ГБ ",
|
||||
"Physical device":"",
|
||||
"Placement":"",
|
||||
"Please choose":"",
|
||||
"Placement":"Размещение",
|
||||
"Please choose":"Пожалуйста выберите",
|
||||
"Please, choose and modify the image you want to update":"",
|
||||
"Please, choose and modify the template you want to update":"",
|
||||
"Please, choose and modify the virtual machine you want to update":"",
|
||||
"Please, choose and modify the virtual network you want to update":"",
|
||||
"Please choose path if you have a file-based image. Choose source otherwise or create an empty datablock disk.":"",
|
||||
"Please choose path if you have a file-based image. Choose source otherwise or create an empty datablock disk.":"«Путь к эталонному файлу образа» — образ создается путем копирования эталонного файла образа в хранилище образов.
|
||||
|
||||
«Источник» — в данное поле следует указывать местоположение образа (в качестве образа будет использован ресурс, непосредственно указанный в поле «Источник», а не копия этого ресурса).",
|
||||
"Please choose the new type of authentication for the selected users":"",
|
||||
"Please provide a lease IP":"",
|
||||
"Please provide a network address":"",
|
||||
"Please provide a resource ID for the resource(s) in this rule":"",
|
||||
"Please select":"",
|
||||
"Please select at least one resource":"",
|
||||
"Please specify to who this ACL applies":"",
|
||||
"Please provide a lease IP":"Необходимо указать IP-адрес",
|
||||
"Please provide a network address":"Укажите адрес сети",
|
||||
"Please provide a resource ID for the resource(s) in this rule":"Необходимо указать № ресурса(ов) для данного правила)",
|
||||
"Please select":"Выберите",
|
||||
"Please select at least one resource":"Необходимо выбрать по меньшей мере один ресурс",
|
||||
"Please specify to who this ACL applies":"Необходимо указать, к кому применять данный список контроля",
|
||||
"Port":"",
|
||||
"Port blacklist":"",
|
||||
"Port for the VNC server":"",
|
||||
"Port whitelist":"",
|
||||
"Predefined":"",
|
||||
"Prefix for the emulated device this image will be mounted at. For instance, “hd”, “sd”. If omitted, the default value is the one defined in oned.conf (installation default is “hd”).":"",
|
||||
"Previous action":"",
|
||||
"Provide a path":"",
|
||||
"Provide a source":"",
|
||||
"PS2":"",
|
||||
"Public":"",
|
||||
"Public scope of the image":"",
|
||||
"Publish":"",
|
||||
"Quickstart":"",
|
||||
"Ranged network":"",
|
||||
"Port blacklist":"Список запрещенных портов",
|
||||
"Port for the VNC server":"Порт для сервера VNC",
|
||||
"Port whitelist":"Список разрешенных портов",
|
||||
"Predefined":"По умолчанию",
|
||||
"Prefix for the emulated device this image will be mounted at. For instance, “hd”, “sd”. If omitted, the default value is the one defined in oned.conf (installation default is “hd”).":"Префикс эмулируемого устройства, на которое будет смонтирован образ. Например, «hd» и «sd». Если не указать префикс, его значение будет считано из конфигурационного файла oned.conf (значение по умолчанию — «hd»).",
|
||||
"Previous action":"Предыдущее действие",
|
||||
"Provide a path":"Указать путь к эталонному файлу образа",
|
||||
"Provide a source":"Указать источник для образа",
|
||||
"PS2":"PS/2",
|
||||
"Public":"Открытый",
|
||||
"Publish":"Сделать открытым",
|
||||
"Quickstart":"Типовые операции",
|
||||
"Ranged network":"Диапазон адресов",
|
||||
"Rank":"",
|
||||
"Raw":"",
|
||||
"Raw data to be passed directly to the hypervisor":"",
|
||||
"Raw":"Исходная опция",
|
||||
"Raw data to be passed directly to the hypervisor":"Исходные данные, передаваемые напрямую гипервизору",
|
||||
"Read only":"",
|
||||
"Refresh list":"",
|
||||
"Register time":"",
|
||||
"Registration time":"",
|
||||
"Reboot":"",
|
||||
"Refresh list":"Обновить список",
|
||||
"Register time":"Время регистрации",
|
||||
"Registration time":"Время регистрации",
|
||||
"release":"",
|
||||
"Release":"",
|
||||
"Remove selected":"",
|
||||
"Request an specific IP from the Network":"",
|
||||
"Release":"Разрешить размещение",
|
||||
"Remove selected":"Удалить выбранные",
|
||||
"Request an specific IP from the Network":"Запросить определенный IP-адрес из сети",
|
||||
"Requirements":"",
|
||||
"Reset":"",
|
||||
"Reset":"Сбросить",
|
||||
"Resource ID":"",
|
||||
"Resource ID / Owned by":"",
|
||||
"Resource ID / Owned by":"№ ресурса / Принадлежит",
|
||||
"Resource subset":"",
|
||||
"Restart":"",
|
||||
"Resubmit":"",
|
||||
"Resume":"",
|
||||
"Restart":"Перезапустить",
|
||||
"Resubmit":"Разместить повторно",
|
||||
"Resume":"Возобновить работу ВМ",
|
||||
"Retrieving":"",
|
||||
"Root":"",
|
||||
"running":"",
|
||||
"Running VMs":"",
|
||||
"running":"запущенных",
|
||||
"Running VMs":"Запущено ВМ",
|
||||
"Running #VMS":"",
|
||||
"Russian":"",
|
||||
"Save":"",
|
||||
"Save as":"",
|
||||
"Saveas for VM with ID":"",
|
||||
"Save this image after shutting down the VM":"",
|
||||
"Save as":"Сохранить как",
|
||||
"Saveas for VM with ID":"Сохранить как для ВМ с №",
|
||||
"Save this image after shutting down the VM":"Сохранить образ после выключения ВМ",
|
||||
"Script":"",
|
||||
"SCSI":"",
|
||||
"SDL":"",
|
||||
"SCSI":"SCSI",
|
||||
"SDL":"SDL",
|
||||
"Select a network":"",
|
||||
"Select an image":"",
|
||||
"Select a template":"",
|
||||
"Select boot method":"",
|
||||
"Select a template":"Выберите шаблон",
|
||||
"Select a VM":"",
|
||||
"Select boot method":"Выберите метод загрузки",
|
||||
"Select disk":"",
|
||||
"Select template":"",
|
||||
"Select the new group":"",
|
||||
"Select the new owner":"",
|
||||
"Server (Cipher)":"",
|
||||
"Server (x509)":"",
|
||||
"Setup Networks":"",
|
||||
"Setup Networks":"Настройка сетей",
|
||||
"Shared":"",
|
||||
"Shutdown":"",
|
||||
"Shutdown":"Выключить",
|
||||
"Sign out":"",
|
||||
"Size":"",
|
||||
"Size in MB":"",
|
||||
"Size in MB":"Размер в МБ",
|
||||
"Size (Mb)":"",
|
||||
"Size of the datablock in MB.":"",
|
||||
"Skipping VM ":"",
|
||||
"Source":"",
|
||||
"Source to be used in the DISK attribute. Useful for not file-based images.":"",
|
||||
"Specific ID":"",
|
||||
"Size of the datablock in MB.":"Размер блока данных в МБ.",
|
||||
"Skipping VM ":"Пропуск ВМ ",
|
||||
"Source":"Источник",
|
||||
"Source to be used in the DISK attribute. Useful for not file-based images.":"В качестве источника указывается местоположение образа, который планируется использовать непосредственно.",
|
||||
"Specific ID":"Ресурс с конкретным №",
|
||||
"Specific image mapping driver. KVM: raw, qcow2. XEN: tap:aio, file:":"",
|
||||
"Specific image mapping driver. KVM: raw, qcow2. Xen:tap:aio:, file:. VMware unsupported":"",
|
||||
"Specific image mapping driver. KVM: raw, qcow2. Xen:tap:aio:, file:. VMware unsupported":"Формат образа виртуального диска. Для KVM: raw, qcow2. Для Xen: tap:aio:, file:. Форматы VMware не поддерживаются",
|
||||
"SSH":"",
|
||||
"Start time":"",
|
||||
"Start Time":"",
|
||||
"State":"",
|
||||
"Status":"",
|
||||
"Stop":"",
|
||||
"Submitted":"",
|
||||
"Summary of resources":"",
|
||||
"Start time":"Время запуска",
|
||||
"Start Time":"Время запуска",
|
||||
"State":"Состояние",
|
||||
"Status":"Статус",
|
||||
"Stop":"Остановить",
|
||||
"Submitted":"Выполнено",
|
||||
"Summary of resources":"Использование ресурсов",
|
||||
"Sunstone UI Configuration":"",
|
||||
"Support":"",
|
||||
"Suspend":"",
|
||||
"Swap":"",
|
||||
"Tablet":"",
|
||||
"Suspend":"Приостановить работу ВМ",
|
||||
"Swap":"Swap",
|
||||
"Tablet":"Планшетный ПК",
|
||||
"Target":"",
|
||||
"Tcp black ports":"",
|
||||
"Tcp firewall mode":"",
|
||||
"Tcp white ports":"",
|
||||
"Template":"",
|
||||
"Template information":"",
|
||||
"Templates":"",
|
||||
"Template updated correctly":"",
|
||||
"There are mandatory fields missing in the capacity section":"",
|
||||
"There are mandatory fields missing in the OS Boot options section":"",
|
||||
"There are mandatory parameters missing":"",
|
||||
"There are mandatory parameters missing in this section":"",
|
||||
"This field sets which attribute will be used to sort the suitable hosts for this VM. Basically, it defines which hosts are more suitable than others":"",
|
||||
"Template":"Шаблон",
|
||||
"Template information":"Сведения о шаблоне",
|
||||
"Templates":"Шаблоны ВМ",
|
||||
"Template updated correctly":"Шаблон успешно обновлен",
|
||||
"There are mandatory fields missing in the capacity section":"В разделе «Производительность» не заполнены некоторые обязательные поля",
|
||||
"There are mandatory fields missing in the OS Boot options section":"В разделе «Загрузка и тип ОС» не заполнены некоторые обязательные поля",
|
||||
"There are mandatory parameters missing":"Указаны не все обязательные параметры",
|
||||
"There are mandatory parameters missing in this section":"В данном разделе указаны не все обязательные параметры",
|
||||
"This field sets which attribute will be used to sort the suitable hosts for this VM. Basically, it defines which hosts are more suitable than others":"В данном поле устанавливается значение атрибута, используемое для ранжирования узлов, пригодных для размещения ВМ. Значение атрибута определяет, какие из узлов лучше подходят для размещения ВМ.",
|
||||
"This rule applies to":"",
|
||||
"This will cancel selected VMs":"",
|
||||
"This will cancel selected VMs":"Прервать работу выбранных ВМ",
|
||||
"This will change the main group of the selected users. Select the new group":"",
|
||||
"This will change the password for the selected users":"",
|
||||
"This will delete the selected VMs from the database":"",
|
||||
"This will deploy the selected VMs on the chosen host":"",
|
||||
"This will hold selected pending VMs from being deployed":"",
|
||||
"This will initiate the shutdown process in the selected VMs":"",
|
||||
"This will live-migrate the selected VMs to the chosen host":"",
|
||||
"This will migrate the selected VMs to the chosen host":"",
|
||||
"This will redeploy selected VMs (in UNKNOWN or BOOT state)":"",
|
||||
"This will release held machines":"",
|
||||
"This will resubmits VMs to PENDING state":"",
|
||||
"This will resume selected stopped or suspended VMs":"",
|
||||
"This will suspend selected machines":"",
|
||||
"TM MAD":"",
|
||||
"total":"",
|
||||
"Total Leases":"",
|
||||
"Total VM count":"",
|
||||
"This will delete the selected VMs from the database":"Удалить выбранные ВМ и связанные с ними образы дисков из базы данных и хранилища образов",
|
||||
"This will deploy the selected VMs on the chosen host":"Разместить выбранные ВМ на определенном узле",
|
||||
"This will hold selected pending VMs from being deployed":"Приостановить процедуру размещения ВМ на узле",
|
||||
"This will initiate the shutdown process in the selected VMs":"Запустить процесс выключения выбранных ВМ",
|
||||
"This will live-migrate the selected VMs to the chosen host":"Перенести выбранные запущенные ВМ, не завершая их работы, с текущих узлов на выбранный",
|
||||
"This will migrate the selected VMs to the chosen host":"Перенести выбранные остановленные ВМ с текущих узлов на выбранный",
|
||||
"This will redeploy selected VMs (in UNKNOWN or BOOT state)":"Повторно выполнить процедуру размещения выбранных ВМ, находящихся в состоянии UNKNOWN или BOOT, на узле",
|
||||
"This will release held machines":"Продолжить ранее приостановленное размещение ВМ на узле",
|
||||
"This will resubmits VMs to PENDING state":"Повторно выполнить попытку размещения выбранных ВМ на одном из доступных узлов системы виртуализации (перевод в состояние PENDING)",
|
||||
"This will resume selected stopped or suspended VMs":"Возобновить работу выбранных остановленных или приостановленных ВМ",
|
||||
"This will send a reboot action to running VMs":"",
|
||||
"This will suspend selected machines":"Приостановить выбранные ВМ",
|
||||
"TM MAD":"Модуль ср-ва передачи",
|
||||
"total":"всего",
|
||||
"Total Leases":"Суммарное количество адресов",
|
||||
"Total VM count":"Количество виртуальных машин",
|
||||
"Total VM CPU":"",
|
||||
"Total VM Memory":"",
|
||||
"Transfer Manager":"",
|
||||
"Type":"",
|
||||
"Type of disk device to emulate.":"",
|
||||
"Type of disk device to emulate: ide, scsi":"",
|
||||
"Type of file system to be built. This can be any value understood by mkfs unix command.":"",
|
||||
"Type of the image, explained in detail in the following section. If omitted, the default value is the one defined in oned.conf (install default is OS).":"",
|
||||
"Type":"Тип",
|
||||
"Type of disk device to emulate.":"Тип эмулируемого дискового устройства",
|
||||
"Type of disk device to emulate: ide, scsi":"Тип эмулируемого дискового устройства: ide, scsi",
|
||||
"Type of file system to be built. This can be any value understood by mkfs unix command.":"Тип создаваемой ФС. Может быть указан любой тип, который используется в unix-команде mkfs.",
|
||||
"Type of the image, explained in detail in the following section. If omitted, the default value is the one defined in oned.conf (install default is OS).":"Тип. Если не указать тип образа, его значение будет считано из конфигурационного файла oned.conf (значение по умолчанию — «OS»).",
|
||||
"Udp black ports":"",
|
||||
"Udp firewall mode":"",
|
||||
"Udp white ports":"",
|
||||
"Unauthorized":"",
|
||||
"Unpublish":"",
|
||||
"Update":"",
|
||||
"Update a template":"",
|
||||
"Update image template":"",
|
||||
"Update network template":"",
|
||||
"Update template":"",
|
||||
"USB":"",
|
||||
"Use":"",
|
||||
"Unpublish":"Отменить статус «Открытый»",
|
||||
"Update":"Обновить",
|
||||
"Update a template":"Обновить шаблон",
|
||||
"Update image properties":"",
|
||||
"Update network properties":"",
|
||||
"Update properties":"",
|
||||
"Update template":"Обновить шаблон",
|
||||
"Update template properties":"",
|
||||
"Update VM properties":"",
|
||||
"USB":"USB",
|
||||
"Use":"Использовать",
|
||||
"Used by VM":"",
|
||||
"Used CPU":"",
|
||||
"Used CPU (allocated)":"",
|
||||
"Used CPU (real)":"",
|
||||
"Used Mem (allocated)":"",
|
||||
"Used Memory":"",
|
||||
"Used Mem (real)":"",
|
||||
"Useful for power management, for example, normally required for graceful shutdown to work":"",
|
||||
"User":"",
|
||||
"Used CPU":"Используется ЦП",
|
||||
"Used CPU (allocated)":"Использовано ОЗУ(реально)",
|
||||
"Used CPU (real)":"Использовано ЦП(реально)",
|
||||
"Used Mem (allocated)":"Использовано ОЗУ(выделено)",
|
||||
"Used Memory":"Используется памяти",
|
||||
"Used Mem (real)":"Использовано ОЗУ(реально)",
|
||||
"Useful for power management, for example, normally required for graceful shutdown to work":"Требуется для корректного завершения работы ВМ средствами системы виртуализации",
|
||||
"User":"Пользователь",
|
||||
"Username":"",
|
||||
"User name and password must be filled in":"",
|
||||
"Users":"",
|
||||
"User name and password must be filled in":"Необходимо указать и имя пользователя, и пароль",
|
||||
"Users":"Пользователи",
|
||||
"Value":"",
|
||||
"Value of the context variable":"",
|
||||
"Value of the custom variable":"",
|
||||
"VCPU":"",
|
||||
"Virtio":"",
|
||||
"Virtio (KVM)":"",
|
||||
"Value of the context variable":"Значение контекстной переменной",
|
||||
"Value of the custom variable":"Значение пользовательской перменной",
|
||||
"VCPU":"Кол-во вирт. ЦП",
|
||||
"Virtio":"Virtio",
|
||||
"Virtio (KVM)":"Virtio (KVM)",
|
||||
"Virtualization Manager":"",
|
||||
"Virtual Machine information":"",
|
||||
"Virtual Machines":"",
|
||||
"Virtual Network":"",
|
||||
"Virtual network information":"",
|
||||
"Virtual Network information":"",
|
||||
"Virtual Network name missing!":"",
|
||||
"Virtual Networks":"",
|
||||
"Virtual Networks (total/public)":"",
|
||||
"Virtual Machine information":"Информация о виртуальной машине",
|
||||
"Virtual Machines":"Вирт. машины",
|
||||
"Virtual Network":"Виртуальная сеть",
|
||||
"Virtual network information":"Информация о виртуальной сети",
|
||||
"Virtual Network information":"Информация о виртуальной сети",
|
||||
"Virtual Network name missing!":"Отсутствует название виртуальной сети!",
|
||||
"Virtual Networks":"Вирт. сети",
|
||||
"Virtual Networks (total/public)":"Виртуальные сети (всего/из них открытых)",
|
||||
"Virtual Network template (attributes)":"",
|
||||
"VM information":"",
|
||||
"VM Instance":"",
|
||||
"VM information":"Информация о ВМ",
|
||||
"VM Instance":"Экземпляр ВМ",
|
||||
"VM Instances":"",
|
||||
"VM log":"",
|
||||
"VM MAD":"",
|
||||
"VM log":"Журнал ВМ",
|
||||
"VM MAD":"Модуль ср-ва виртуализации",
|
||||
"VM Name":"",
|
||||
"VM Network stats":"",
|
||||
"#VMS":"",
|
||||
"VM Save As":"",
|
||||
"VM template":"",
|
||||
"VM Template":"",
|
||||
"VM Templates":"",
|
||||
"VM Templates (total/public)":"",
|
||||
"VNC":"",
|
||||
"VNC Access":"",
|
||||
"VNC connection":"",
|
||||
"VNC Disabled":"",
|
||||
"VNC Session":"",
|
||||
"VM Network stats":"Статистика виртуальных сетей",
|
||||
"#VMS":"Кол-во ВМ",
|
||||
"VM Save As":"ВМ сохранить как",
|
||||
"VM template":"Шаблон ВМ",
|
||||
"VM Template":"Шаблон ВМ",
|
||||
"VM Templates":"Шаблоны ВМ",
|
||||
"VM Templates (total/public)":"Шаблоны ВМ (всего/из них открытых)",
|
||||
"VNC":"VNC",
|
||||
"VNC Access":"Доступ по VNC",
|
||||
"VNC connection":"VNC соединение",
|
||||
"VNC Disabled":"VNC недоступно",
|
||||
"VNC Session":"VNC сессия",
|
||||
"VNET ID":"",
|
||||
"VN MAD":"",
|
||||
"Welcome":"",
|
||||
"Wizard":"",
|
||||
"Wizard KVM":"",
|
||||
"Wizard VMware":"",
|
||||
"Wizard XEN":"",
|
||||
"Write the image template here":"",
|
||||
"Write the Virtual Machine template here":"",
|
||||
"Write the Virtual Network template here":"",
|
||||
"Wizard":"Мастер настройки",
|
||||
"Wizard KVM":"Шаблон KVM",
|
||||
"Wizard VMware":"Шаблон VMware",
|
||||
"Wizard XEN":"Шаблон XEN",
|
||||
"Write the image template here":"Отредактируйте параметры шаблона образа ВМ вручную",
|
||||
"Write the Virtual Machine template here":"Отредактируйте параметры шаблона ВМ вручную",
|
||||
"Write the Virtual Network template here":"Отредактируйте параметры шаблона вирт. сети вручную",
|
||||
"x509":"",
|
||||
"XEN":"",
|
||||
"Xen templates must specify a boot method":"",
|
||||
"yes":"",
|
||||
"Yes":"",
|
||||
"You have not selected a template":"",
|
||||
"You have to confirm this action.":"",
|
||||
"You need to select something.":"",
|
||||
"XEN":"XEN",
|
||||
"Xen templates must specify a boot method":"В шаблон Xen необходимо указывать метод загрузки",
|
||||
"yes":"да",
|
||||
"Yes":"Да",
|
||||
"You have not selected a template":"Вы не выбрали шаблон",
|
||||
"You have to confirm this action.":"Необходимо подтвердить данную операцию.",
|
||||
"You need to select something.":"Вы должны что-нибудь выбрать.",
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user