mirror of
https://github.com/retspen/webvirtcloud
synced 2024-12-25 15:45:23 +00:00
commit
094f054063
9 changed files with 80 additions and 19491 deletions
|
@ -2,7 +2,7 @@ language: python
|
||||||
python:
|
python:
|
||||||
- "2.7"
|
- "2.7"
|
||||||
env:
|
env:
|
||||||
- DJANGO=1.11.14
|
- DJANGO=1.11.21
|
||||||
install:
|
install:
|
||||||
- pip install -r dev/requirements.txt
|
- pip install -r dev/requirements.txt
|
||||||
script:
|
script:
|
||||||
|
|
43
Vagrantfile
vendored
43
Vagrantfile
vendored
|
@ -2,10 +2,12 @@
|
||||||
# vi: set ft=ruby :
|
# vi: set ft=ruby :
|
||||||
|
|
||||||
Vagrant.configure(2) do |config|
|
Vagrant.configure(2) do |config|
|
||||||
config.vm.box = "ubuntu/trusty64"
|
# Default machine, if name not specified...
|
||||||
config.vm.hostname = "webvirtcloud"
|
config.vm.define "dev", primary: true do |dev|
|
||||||
config.vm.network "private_network", ip: "192.168.33.10"
|
dev.vm.box = "ubuntu/bionic64"
|
||||||
config.vm.provision "shell", inline: <<-SHELL
|
dev.vm.hostname = "webvirtcloud"
|
||||||
|
dev.vm.network "private_network", ip: "192.168.33.10"
|
||||||
|
dev.vm.provision "shell", inline: <<-SHELL
|
||||||
sudo sh /vagrant/dev/libvirt-bootstrap.sh
|
sudo sh /vagrant/dev/libvirt-bootstrap.sh
|
||||||
sudo sed -i 's/auth_tcp = \"sasl\"/auth_tcp = \"none\"/g' /etc/libvirt/libvirtd.conf
|
sudo sed -i 's/auth_tcp = \"sasl\"/auth_tcp = \"none\"/g' /etc/libvirt/libvirtd.conf
|
||||||
sudo service libvirt-bin restart
|
sudo service libvirt-bin restart
|
||||||
|
@ -15,4 +17,37 @@ Vagrant.configure(2) do |config|
|
||||||
source /vagrant/venv/bin/activate
|
source /vagrant/venv/bin/activate
|
||||||
pip install -r /vagrant/dev/requirements.txt
|
pip install -r /vagrant/dev/requirements.txt
|
||||||
SHELL
|
SHELL
|
||||||
|
end
|
||||||
|
# To start this machine run "vagrant up prod"
|
||||||
|
# To enter this machine run "vagrant ssh prod"
|
||||||
|
config.vm.define "prod", autostart: false do |prod|
|
||||||
|
prod.vm.box = "ubuntu/bionic64"
|
||||||
|
prod.vm.hostname = "webvirtcloud"
|
||||||
|
prod.vm.network "private_network", ip: "192.168.33.11"
|
||||||
|
#prod.vm.synced_folder ".", "/srv/webvirtcloud"
|
||||||
|
prod.vm.provision "shell", inline: <<-SHELL
|
||||||
|
sudo mkdir /srv/webvirtcloud
|
||||||
|
sudo cp -R /vagrant/* /srv/webvirtcloud
|
||||||
|
sudo sh /srv/webvirtcloud/dev/libvirt-bootstrap.sh
|
||||||
|
sudo sed -i 's/auth_tcp = \"sasl\"/auth_tcp = \"none\"/g' /etc/libvirt/libvirtd.conf
|
||||||
|
sudo service libvirt-bin restart
|
||||||
|
sudo adduser vagrant libvirtd
|
||||||
|
sudo chown -R vagrant:vagrant /srv/webvirtcloud
|
||||||
|
sudo apt-get -y install python-virtualenv python-dev python-lxml python-pip libvirt-dev zlib1g-dev libxslt1-dev nginx supervisor libsasl2-modules gcc pkg-config python-guestfs
|
||||||
|
virtualenv /srv/webvirtcloud/venv
|
||||||
|
source /srv/webvirtcloud/venv/bin/activate
|
||||||
|
pip install -r /srv/webvirtcloud/dev/requirements.txt
|
||||||
|
sudo cp /srv/webvirtcloud/conf/supervisor/webvirtcloud.conf /etc/supervisor/conf.d
|
||||||
|
sudo cp /srv/webvirtcloud/conf/nginx/webvirtcloud.conf /etc/nginx/conf.d
|
||||||
|
sudo cp /srv/webvirtcloud/webvirtcloud/settings.py.template /srv/webvirtcloud/webvirtcloud/settings.py
|
||||||
|
sudo sed "s/SECRET_KEY = ''/SECRET_KEY = '"`python /srv/webvirtcloud/conf/runit/secret_generator.py`"'/" -i /srv/webvirtcloud/webvirtcloud/settings.py
|
||||||
|
python /srv/webvirtcloud/manage.py migrate
|
||||||
|
sudo rm /etc/nginx/sites-enabled/default
|
||||||
|
sudo chown -R www-data:www-data /srv/webvirtcloud
|
||||||
|
sudo service nginx restart
|
||||||
|
sudo service supervisor restart
|
||||||
|
SHELL
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
4
conf/runit/secret_generator.py
Normal file
4
conf/runit/secret_generator.py
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
import random, string
|
||||||
|
|
||||||
|
haystack = string.ascii_letters + string.digits + string.punctuation
|
||||||
|
print(''.join([random.SystemRandom().choice(haystack.replace('/','').replace('\'', '').replace('\"','')) for _ in range(50)]))
|
|
@ -1,5 +1,5 @@
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
{% if request.user.is_superuser and status == 5 %}
|
{% if request.user.is_superuser %}
|
||||||
<a href="#addInstanceNetwork" type="button" class="btn btn-success pull-right" data-toggle="modal">
|
<a href="#addInstanceNetwork" type="button" class="btn btn-success pull-right" data-toggle="modal">
|
||||||
<span class="glyphicon glyphicon-plus" aria-hidden="true"></span>
|
<span class="glyphicon glyphicon-plus" aria-hidden="true"></span>
|
||||||
</a>
|
</a>
|
||||||
|
|
|
@ -718,7 +718,7 @@ def instance(request, compute_id, vname):
|
||||||
|
|
||||||
conn.change_network(network_data)
|
conn.change_network(network_data)
|
||||||
addlogmsg(request.user.username, instance.name, msg)
|
addlogmsg(request.user.username, instance.name, msg)
|
||||||
msg = _("Network Devices are changed. Please reboot instance to activate.")
|
msg = _("Network Device Config is changed. Please shutdown instance to activate.")
|
||||||
if conn.get_status() != 5: messages.success(request, msg)
|
if conn.get_status() != 5: messages.success(request, msg)
|
||||||
return HttpResponseRedirect(request.get_full_path() + '#network')
|
return HttpResponseRedirect(request.get_full_path() + '#network')
|
||||||
|
|
||||||
|
@ -729,11 +729,7 @@ def instance(request, compute_id, vname):
|
||||||
(source, source_type) = get_network_tuple(request.POST.get('add-net-network'))
|
(source, source_type) = get_network_tuple(request.POST.get('add-net-network'))
|
||||||
|
|
||||||
conn.add_network(mac, source, source_type, nwfilter=nwfilter)
|
conn.add_network(mac, source, source_type, nwfilter=nwfilter)
|
||||||
|
|
||||||
addlogmsg(request.user.username, instance.name, msg)
|
addlogmsg(request.user.username, instance.name, msg)
|
||||||
msg = _("Network Device is added. Please reboot instance to activate.")
|
|
||||||
if conn.get_status() != 5: messages.success(request, msg)
|
|
||||||
|
|
||||||
return HttpResponseRedirect(request.get_full_path() + '#network')
|
return HttpResponseRedirect(request.get_full_path() + '#network')
|
||||||
|
|
||||||
if 'delete_network' in request.POST:
|
if 'delete_network' in request.POST:
|
||||||
|
@ -742,8 +738,6 @@ def instance(request, compute_id, vname):
|
||||||
|
|
||||||
conn.delete_network(mac_address)
|
conn.delete_network(mac_address)
|
||||||
addlogmsg(request.user.username, instance.name, msg)
|
addlogmsg(request.user.username, instance.name, msg)
|
||||||
msg = _("Network Device is deleted. Please reboot instance to activate.")
|
|
||||||
if conn.get_status() != 5: messages.success(request, msg)
|
|
||||||
return HttpResponseRedirect(request.get_full_path() + '#network')
|
return HttpResponseRedirect(request.get_full_path() + '#network')
|
||||||
|
|
||||||
if 'add_owner' in request.POST:
|
if 'add_owner' in request.POST:
|
||||||
|
|
18204
static/js/ace.js
18204
static/js/ace.js
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -970,12 +970,11 @@ class wvmInstance(wvmConnect):
|
||||||
""" % nwfilter
|
""" % nwfilter
|
||||||
xml_interface += """</interface>"""
|
xml_interface += """</interface>"""
|
||||||
|
|
||||||
|
if self.get_status() == 1:
|
||||||
|
self.instance.attachDeviceFlags(xml_interface, VIR_DOMAIN_AFFECT_LIVE)
|
||||||
|
self.instance.attachDeviceFlags(xml_interface, VIR_DOMAIN_AFFECT_CONFIG)
|
||||||
if self.get_status() == 5:
|
if self.get_status() == 5:
|
||||||
devices = tree.find('devices')
|
self.instance.attachDeviceFlags(xml_interface, VIR_DOMAIN_AFFECT_CONFIG)
|
||||||
elm_interface = ElementTree.fromstring(xml_interface)
|
|
||||||
devices.append(elm_interface)
|
|
||||||
xmldom = ElementTree.tostring(tree)
|
|
||||||
self._defineXML(xmldom)
|
|
||||||
|
|
||||||
def delete_network(self, mac_address):
|
def delete_network(self, mac_address):
|
||||||
tree = ElementTree.fromstring(self._XMLDesc(0))
|
tree = ElementTree.fromstring(self._XMLDesc(0))
|
||||||
|
@ -983,10 +982,13 @@ class wvmInstance(wvmConnect):
|
||||||
for interface in tree.findall('devices/interface'):
|
for interface in tree.findall('devices/interface'):
|
||||||
source = interface.find('mac')
|
source = interface.find('mac')
|
||||||
if source.get('address', '') == mac_address:
|
if source.get('address', '') == mac_address:
|
||||||
source = None
|
new_xml = ElementTree.tostring(interface)
|
||||||
devices.remove(interface)
|
|
||||||
new_xml = ElementTree.tostring(tree)
|
if self.get_status() == 1:
|
||||||
self._defineXML(new_xml)
|
self.instance.detachDeviceFlags(new_xml, VIR_DOMAIN_AFFECT_LIVE)
|
||||||
|
self.instance.detachDeviceFlags(new_xml, VIR_DOMAIN_AFFECT_CONFIG)
|
||||||
|
if self.get_status() == 5:
|
||||||
|
self.instance.detachDeviceFlags(new_xml, VIR_DOMAIN_AFFECT_CONFIG)
|
||||||
|
|
||||||
def change_network(self, network_data):
|
def change_network(self, network_data):
|
||||||
xml = self._XMLDesc(VIR_DOMAIN_XML_SECURE)
|
xml = self._XMLDesc(VIR_DOMAIN_XML_SECURE)
|
||||||
|
|
Loading…
Reference in a new issue