1
0
Fork 0
mirror of https://github.com/retspen/webvirtcloud synced 2024-12-24 15:15:22 +00:00

Merge pull request #231 from catborise/master

fix & Updates
This commit is contained in:
Anatoliy Guskov 2019-03-28 09:45:28 +02:00 committed by GitHub
commit ad373cff7b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 32 additions and 181 deletions

View file

@ -267,14 +267,14 @@ python manage.py migrate
sudo service supervisor restart sudo service supervisor restart
``` ```
### Screenshots ### Screenshots
Instance Detail:</br> Instance Detail:
<img src="doc/images/instance.PNG" width="95%" align="center"></img> <img src="doc/images/instance.PNG" width="95%" align="center"/>
Instance List:</br> Instance List:</br>
<img src="doc/images/grouped.PNG" width="47%"></img> <img src="doc/images/grouped.PNG" width="47%"/>
<img src="doc/images/nongrouped.PNG" width="51%"></img> <img src="doc/images/nongrouped.PNG" width="51%"/>
Other: </br> Other: </br>
<img src="doc/images/hosts.PNG" width="52%"></img> <img src="doc/images/hosts.PNG" width="52%"/>
<img src="doc/images/log.PNG" width="47%"></img> <img src="doc/images/log.PNG" width="47%"/>
### License ### License

View file

@ -1398,19 +1398,21 @@
function update_clone_disk_name(new_vname) { function update_clone_disk_name(new_vname) {
vname = '{{ vname }}'; vname = '{{ vname }}';
{% for disk in disks %} {% for disk in disks %}
disk_name = '{{ disk.image }}'; disk_name = '{{ disk.image }}';
disk_dot = disk_name.split('.') disk_dot = disk_name.split('.')
disk_dot_suffix = disk_dot[disk_dot.length-1]; disk_dot_suffix = disk_dot[disk_dot.length-1];
if (disk_name.startsWith(vname)) { if (disk_name.startsWith(vname)) {
image = disk_name.replace(vname, new_vname); image = disk_name.replace(vname, new_vname);
} else if (disk_name.lastIndexOf('.') > -1 && disk_dot_suffix.length <= 7) { } else if (disk_name.lastIndexOf('.') > -1 && disk_dot_suffix.length <= 7) {
image = new_vname + "." + disk_dot_suffix disk_dot.pop();
} else if (new_vname != disk_name) { disk_name_only = disk_dot.join('-')
image = new_vname image = new_vname + "-" + disk_name_only + "." + disk_dot_suffix
} else { } else if (new_vname != disk_name) {
image = new_vname + '-clone'; image = new_vname
} } else {
$('#disk_name-{{ disk.dev }}').val(image); image = new_vname + '-clone';
}
$('#disk_name-{{ disk.dev }}').val(image);
{% endfor %} {% endfor %}
} }
</script> </script>

View file

@ -469,7 +469,7 @@ def instance(request, compute_id, vname):
name = request.POST.get('name', '') name = request.POST.get('name', '')
format = request.POST.get('format', default_format) format = request.POST.get('format', default_format)
size = request.POST.get('size', 0) size = request.POST.get('size', 0)
meta_prealloc = request.POST.get('meta_prealloc', False) meta_prealloc = True if request.POST.get('meta_prealloc', False) else False
bus = request.POST.get('bus', default_bus) bus = request.POST.get('bus', default_bus)
cache = request.POST.get('cache', default_cache) cache = request.POST.get('cache', default_cache)
target = get_new_disk_dev(media, disks, bus) target = get_new_disk_dev(media, disks, bus)
@ -774,7 +774,7 @@ def instance(request, compute_id, vname):
if request.user.is_superuser or request.user.userattributes.can_clone_instances: if request.user.is_superuser or request.user.userattributes.can_clone_instances:
if 'clone' in request.POST: if 'clone' in request.POST:
clone_data = {} clone_data = dict()
clone_data['name'] = request.POST.get('name', '') clone_data['name'] = request.POST.get('name', '')
disk_sum = sum([disk['size'] >> 30 for disk in disks]) disk_sum = sum([disk['size'] >> 30 for disk in disks])

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

7
static/js/jquery.js vendored

File diff suppressed because one or more lines are too long

View file

@ -1,151 +1,3 @@
/*! /*! js-cookie v2.2.0 | MIT */
* JavaScript Cookie v2.1.1
* https://github.com/js-cookie/js-cookie
*
* Copyright 2006, 2015 Klaus Hartl & Fagner Brack
* Released under the MIT license
*/
;(function (factory) {
if (typeof define === 'function' && define.amd) {
define(factory);
} else if (typeof exports === 'object') {
module.exports = factory();
} else {
var OldCookies = window.Cookies;
var api = window.Cookies = factory();
api.noConflict = function () {
window.Cookies = OldCookies;
return api;
};
}
}(function () {
function extend () {
var i = 0;
var result = {};
for (; i < arguments.length; i++) {
var attributes = arguments[ i ];
for (var key in attributes) {
result[key] = attributes[key];
}
}
return result;
}
function init (converter) { !function(e){var n=!1;if("function"==typeof define&&define.amd&&(define(e),n=!0),"object"==typeof exports&&(module.exports=e(),n=!0),!n){var o=window.Cookies,t=window.Cookies=e();t.noConflict=function(){return window.Cookies=o,t}}}(function(){function e(){for(var e=0,n={};e<arguments.length;e++){var o=arguments[e];for(var t in o)n[t]=o[t]}return n}function n(o){function t(n,r,i){var c;if("undefined"!=typeof document){if(arguments.length>1){if("number"==typeof(i=e({path:"/"},t.defaults,i)).expires){var a=new Date;a.setMilliseconds(a.getMilliseconds()+864e5*i.expires),i.expires=a}i.expires=i.expires?i.expires.toUTCString():"";try{c=JSON.stringify(r),/^[\{\[]/.test(c)&&(r=c)}catch(e){}r=o.write?o.write(r,n):encodeURIComponent(r+"").replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent),n=(n=(n=encodeURIComponent(n+"")).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent)).replace(/[\(\)]/g,escape);var s="";for(var f in i)i[f]&&(s+="; "+f,!0!==i[f]&&(s+="="+i[f]));return document.cookie=n+"="+r+s}n||(c={});for(var p=document.cookie?document.cookie.split("; "):[],d=/(%[0-9A-Z]{2})+/g,u=0;u<p.length;u++){var l=p[u].split("="),C=l.slice(1).join("=");this.json||'"'!==C.charAt(0)||(C=C.slice(1,-1));try{var m=l[0].replace(d,decodeURIComponent);if(C=o.read?o.read(C,m):o(C,m)||C.replace(d,decodeURIComponent),this.json)try{C=JSON.parse(C)}catch(e){}if(n===m){c=C;break}n||(c[m]=C)}catch(e){}}return c}}return t.set=t,t.get=function(e){return t.call(t,e)},t.getJSON=function(){return t.apply({json:!0},[].slice.call(arguments))},t.defaults={},t.remove=function(n,o){t(n,"",e(o,{expires:-1}))},t.withConverter=n,t}return n(function(){})});
function api (key, value, attributes) {
var result;
if (typeof document === 'undefined') {
return;
}
// Write
if (arguments.length > 1) {
attributes = extend({
path: '/'
}, api.defaults, attributes);
if (typeof attributes.expires === 'number') {
var expires = new Date();
expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5);
attributes.expires = expires;
}
try {
result = JSON.stringify(value);
if (/^[\{\[]/.test(result)) {
value = result;
}
} catch (e) {}
if (!converter.write) {
value = encodeURIComponent(String(value))
.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);
} else {
value = converter.write(value, key);
}
key = encodeURIComponent(String(key));
key = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent);
key = key.replace(/[\(\)]/g, escape);
return (document.cookie = [
key, '=', value,
attributes.expires && '; expires=' + attributes.expires.toUTCString(), // use expires attribute, max-age is not supported by IE
attributes.path && '; path=' + attributes.path,
attributes.domain && '; domain=' + attributes.domain,
attributes.secure ? '; secure' : ''
].join(''));
}
// Read
if (!key) {
result = {};
}
// To prevent the for loop in the first place assign an empty array
// in case there are no cookies at all. Also prevents odd result when
// calling "get()"
var cookies = document.cookie ? document.cookie.split('; ') : [];
var rdecode = /(%[0-9A-Z]{2})+/g;
var i = 0;
for (; i < cookies.length; i++) {
var parts = cookies[i].split('=');
var name = parts[0].replace(rdecode, decodeURIComponent);
var cookie = parts.slice(1).join('=');
if (cookie.charAt(0) === '"') {
cookie = cookie.slice(1, -1);
}
try {
cookie = converter.read ?
converter.read(cookie, name) : converter(cookie, name) ||
cookie.replace(rdecode, decodeURIComponent);
if (this.json) {
try {
cookie = JSON.parse(cookie);
} catch (e) {}
}
if (key === name) {
result = cookie;
break;
}
if (!key) {
result[name] = cookie;
}
} catch (e) {}
}
return result;
}
api.set = api;
api.get = function (key) {
return api(key);
};
api.getJSON = function () {
return api.apply({
json: true
}, [].slice.call(arguments));
};
api.defaults = {};
api.remove = function (key, attributes) {
api(key, '', extend(attributes, {
expires: -1
}));
};
api.withConverter = init;
return api;
}
return init(function () {});
}));