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

Merge pull request #237 from catborise/master

Fix and Addition
This commit is contained in:
Anatoliy Guskov 2019-05-04 11:13:04 +03:00 committed by GitHub
commit 44fcb4b748
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 38 additions and 28 deletions

View file

@ -375,7 +375,7 @@ __check_end_of_life_versions
# #
install_centos() { install_centos() {
if [ $DISTRO_MAJOR_VERSION -ge 6 ]; then if [ $DISTRO_MAJOR_VERSION -ge 6 ]; then
yum -y install qemu-kvm libvirt bridge-utils python-libguestfs supervisor cyrus-sasl-md5 || return 1 yum -y install qemu-kvm libvirt bridge-utils python-libguestfs libguestfs-tools supervisor cyrus-sasl-md5 epel-release || return 1
fi fi
return 0 return 0
} }

View file

@ -269,7 +269,7 @@
<button type="button" class="btn btn-lg btn-success " onclick="open_console('lite')">Console</button> <button type="button" class="btn btn-lg btn-success " onclick="open_console('lite')">Console</button>
<button type="button" class="btn btn-lg btn-success dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <button type="button" class="btn btn-lg btn-success dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="caret"></span> <span class="caret"></span>
<span class="sr-only">Toggle Dropdown</span> <span class="sr-only">{% trans 'Toggle Dropdown' %}</span>
</button> </button>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li><a href="#" title="Console port: {{ console_port }}" onclick="open_console('lite')">{% trans "Console - Lite" %}</a></li> <li><a href="#" title="Console port: {{ console_port }}" onclick="open_console('lite')">{% trans "Console - Lite" %}</a></li>
@ -537,10 +537,10 @@
</a> </a>
</li> </li>
{% endif %} {% endif %}
{% if request.user.is_superuser or userinstance.is_vnc %} {% if request.user.is_superuser or request.user.is_staff or userinstance.is_vnc %}
<li role="presentation"> <li role="presentation">
<a href="#vncsettings" aria-controls="vncsettings" role="tab" data-toggle="tab"> <a href="#vncsettings" aria-controls="vncsettings" role="tab" data-toggle="tab">
{% trans "VNC" %} {% trans "Console" %}
</a> </a>
</li> </li>
{% endif %} {% endif %}
@ -963,7 +963,7 @@
<div class="clearfix"></div> <div class="clearfix"></div>
</div> </div>
{% endif %} {% endif %}
{% if request.user.is_superuser or userinstance.is_vnc %} {% if request.user.is_superuser or request.user.is_staff or userinstance.is_vnc %}
<div role="tabpanel" class="tab-pane tab-pane-bordered" id="vncsettings"> <div role="tabpanel" class="tab-pane tab-pane-bordered" id="vncsettings">
<p>{% trans "To set console's type, shutdown the instance." %}</p> <p>{% trans "To set console's type, shutdown the instance." %}</p>
<form class="form-horizontal" method="post" role="form">{% csrf_token %} <form class="form-horizontal" method="post" role="form">{% csrf_token %}

View file

@ -645,7 +645,7 @@ def instance(request, compute_id, vname):
addlogmsg(request.user.username, instance.name, msg) addlogmsg(request.user.username, instance.name, msg)
return HttpResponseRedirect(request.get_full_path() + '#xmledit') return HttpResponseRedirect(request.get_full_path() + '#xmledit')
if request.user.is_superuser or userinstance.is_vnc: if request.user.is_superuser or request.user.is_staff or userinstance.is_vnc:
if 'set_console_passwd' in request.POST: if 'set_console_passwd' in request.POST:
if request.POST.get('auto_pass', ''): if request.POST.get('auto_pass', ''):
passwd = randomPasswd() passwd = randomPasswd()

View file

@ -52,7 +52,6 @@
<div class="col-sm-6"> <div class="col-sm-6">
<input type="text" class="form-control" name="name" placeholder="{% trans "Name" %}" required pattern="[a-zA-Z0-9\.\-_]+"> <input type="text" class="form-control" name="name" placeholder="{% trans "Name" %}" required pattern="[a-zA-Z0-9\.\-_]+">
</div> </div>
<label class="col-sm-1 control-label">.img</label>
</div> </div>
<div class="form-group" id="image_format"> <div class="form-group" id="image_format">
<label class="col-sm-3 control-label">{% trans "Format" %}</label> <label class="col-sm-3 control-label">{% trans "Format" %}</label>

View file

@ -132,7 +132,6 @@
<input type="text" class="form-control" name="name" placeholder="{% trans "Name" %}" required pattern="[a-zA-Z0-9\.\-_]+"> <input type="text" class="form-control" name="name" placeholder="{% trans "Name" %}" required pattern="[a-zA-Z0-9\.\-_]+">
<input type="hidden" name="image" value="{{ volume.name }}"> <input type="hidden" name="image" value="{{ volume.name }}">
</div> </div>
<label class="col-sm-1 control-label">.img</label>
</div> </div>
<div class="form-group" id="image_format"> <div class="form-group" id="image_format">
<label class="col-sm-3 control-label">{% trans "Convert" %}</label> <label class="col-sm-3 control-label">{% trans "Convert" %}</label>

View file

@ -155,8 +155,8 @@ def storage(request, compute_id, pool):
if data['meta_prealloc'] and data['format'] == 'qcow2': if data['meta_prealloc'] and data['format'] == 'qcow2':
meta_prealloc = True meta_prealloc = True
try: try:
conn.create_volume(data['name'], data['size'], data['format'], meta_prealloc) name = conn.create_volume(data['name'], data['size'], data['format'], meta_prealloc)
messages.success(request, _("Image file {} is created successfully".format(data['name']+".img"))) messages.success(request, _("Image file {} is created successfully".format(name)))
return HttpResponseRedirect(request.get_full_path()) return HttpResponseRedirect(request.get_full_path())
except libvirtError as lib_err: except libvirtError as lib_err:
error_messages.append(lib_err) error_messages.append(lib_err)
@ -184,10 +184,10 @@ def storage(request, compute_id, pool):
form = CloneImage(request.POST) form = CloneImage(request.POST)
if form.is_valid(): if form.is_valid():
data = form.cleaned_data data = form.cleaned_data
img_name = data['name'] + '.img' img_name = data['name']
meta_prealloc = 0 meta_prealloc = 0
if img_name in conn.update_volumes(): if img_name in conn.update_volumes():
msg = _("Name of volume name already use") msg = _("Name of volume already in use")
error_messages.append(msg) error_messages.append(msg)
if not error_messages: if not error_messages:
if data['convert']: if data['convert']:
@ -197,8 +197,8 @@ def storage(request, compute_id, pool):
else: else:
format = None format = None
try: try:
conn.clone_volume(data['image'], data['name'], format, meta_prealloc) name = conn.clone_volume(data['image'], data['name'], format, meta_prealloc)
messages.success(request, _("{} image cloned as {} successfully".format(data['image'], data['name'] + ".img"))) messages.success(request, _("{} image cloned as {} successfully".format(data['image'], name)))
return HttpResponseRedirect(request.get_full_path()) return HttpResponseRedirect(request.get_full_path())
except libvirtError as lib_err: except libvirtError as lib_err:
error_messages.append(lib_err) error_messages.append(lib_err)

View file

@ -230,22 +230,31 @@ class wvmStorage(wvmConnect):
<group>%s</group> <group>%s</group>
<mode>0644</mode> <mode>0644</mode>
<label>virt_image_t</label> <label>virt_image_t</label>
</permissions> </permissions>""" % (name, size, alloc, vol_fmt, owner['uid'], owner['guid'])
if vol_fmt == 'qcow2':
xml += """
<compat>1.1</compat> <compat>1.1</compat>
<features> <features>
<lazy_refcounts/> <lazy_refcounts/>
</features> </features>"""
xml += """
</target> </target>
</volume>""" % (name, size, alloc, vol_fmt, owner['uid'], owner['guid']) </volume>"""
self._createXML(xml, metadata) self._createXML(xml, metadata)
return name
def clone_volume(self, name, target_file, vol_fmt=None, metadata=False, owner=owner): def clone_volume(self, name, target_file, vol_fmt=None, metadata=False, owner=owner):
storage_type = self.get_type()
if storage_type == 'dir':
target_file += '.img'
vol = self.get_volume(name) vol = self.get_volume(name)
if not vol_fmt: if not vol_fmt:
vol_fmt = self.get_volume_type(name) vol_fmt = self.get_volume_type(name)
storage_type = self.get_type()
if storage_type == 'dir':
if vol_fmt in ('qcow', 'qcow2'):
target_file += '.' + vol_fmt
else:
target_file += '.img'
xml = """ xml = """
<volume> <volume>
<name>%s</name> <name>%s</name>
@ -258,11 +267,14 @@ class wvmStorage(wvmConnect):
<group>%s</group> <group>%s</group>
<mode>0644</mode> <mode>0644</mode>
<label>virt_image_t</label> <label>virt_image_t</label>
</permissions> </permissions>""" % (target_file, vol_fmt, owner['uid'], owner['guid'])
if vol_fmt == 'qcow2':
xml += """
<compat>1.1</compat> <compat>1.1</compat>
<features> <features>
<lazy_refcounts/> <lazy_refcounts/>
</features> </features>"""
</target> xml += """ </target>
</volume>""" % (target_file, vol_fmt, owner['uid'],owner['guid']) </volume>"""
self._createXMLFrom(xml, vol, metadata) self._createXMLFrom(xml, vol, metadata)
return target_file