mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
Merge
This commit is contained in:
commit
56ada11259
4 files changed
+40
-30
No files matched your search
@@ -1823,9 +1823,6 @@ class XendAPI(object):
|
||||
VM_metrics_attr_rw = []
|
||||
VM_metrics_methods = []
|
||||
|
||||
def VIF_metrics_get_all(self, session):
|
||||
return self.VIF_get_all(session)
|
||||
|
||||
def _VM_metrics_get(self, _, ref):
|
||||
return XendVMMetrics.get_by_uuid(ref)
|
||||
|
||||
@@ -2135,6 +2132,9 @@ class XendAPI(object):
|
||||
VIF_metrics_attr_rw = []
|
||||
VIF_metrics_methods = []
|
||||
|
||||
def VIF_metrics_get_all(self, session):
|
||||
return self.VIF_get_all(session)
|
||||
|
||||
def VIF_metrics_get_record(self, _, ref):
|
||||
vm = XendDomain.instance().get_vm_with_dev_uuid('vif', ref)
|
||||
if not vm:
|
||||
|
||||
@@ -143,8 +143,14 @@ class XendNode:
|
||||
for net_uuid, network in saved_networks.items():
|
||||
self.network_create(network, False, net_uuid)
|
||||
else:
|
||||
self.network_create({'name_label' : 'net0' }, False)
|
||||
bridges = Brctl.get_state().keys()
|
||||
for bridge in bridges:
|
||||
self.network_create({'name_label' : bridge }, False)
|
||||
|
||||
# Get a mapping from interface to bridge
|
||||
|
||||
if_to_br = dict(reduce(lambda ls,(b,ifs):[(i,b) for i in ifs] + ls,
|
||||
Brctl.get_state().items(), []))
|
||||
# initialise PIFs
|
||||
saved_pifs = self.state_store.load_state('pif')
|
||||
if saved_pifs:
|
||||
@@ -174,8 +180,14 @@ class XendNode:
|
||||
pif_uuid, pif['network'], exn.pif_uuid)
|
||||
else:
|
||||
for name, mtu, mac in linux_get_phy_ifaces():
|
||||
network = self.networks.values()[0]
|
||||
self._PIF_create(name, mtu, -1, mac, network, False)
|
||||
bridge_name = if_to_br.get(name, None)
|
||||
if bridge_name is not None:
|
||||
networks = [network for
|
||||
network in self.networks.values()
|
||||
if network.get_name_label() == bridge_name]
|
||||
if len(networks) > 0:
|
||||
network = networks[0]
|
||||
self._PIF_create(name, mtu, -1, mac, network, False)
|
||||
|
||||
# initialise storage
|
||||
saved_srs = self.state_store.load_state('sr')
|
||||
|
||||
@@ -74,7 +74,6 @@
|
||||
mtu CDATA #REQUIRED
|
||||
device CDATA #REQUIRED
|
||||
qos_algorithm_type CDATA #REQUIRED
|
||||
bridge CDATA #IMPLIED
|
||||
network CDATA #IMPLIED>
|
||||
|
||||
<!ELEMENT pv EMPTY>
|
||||
|
||||
@@ -25,7 +25,7 @@ from xml.parsers.xmlproc import xmlproc, xmlval, xmldtd
|
||||
from xen.xend import sxp
|
||||
from xen.xend.XendAPIConstants import XEN_API_ON_NORMAL_EXIT, \
|
||||
XEN_API_ON_CRASH_BEHAVIOUR
|
||||
|
||||
from xen.xm.opts import OptionError
|
||||
|
||||
import sys
|
||||
import os
|
||||
@@ -184,15 +184,7 @@ class xenapi_create:
|
||||
map(self.check_vif, vifs)
|
||||
|
||||
def check_vif(self, vif):
|
||||
"""
|
||||
Check that the vif has
|
||||
either a bridge or network
|
||||
name but not both
|
||||
"""
|
||||
if "bridge" in vif.attributes.keys() \
|
||||
and "network" in vif.attributes.keys():
|
||||
raise "You cannot specify both a bridge and\
|
||||
a network name."
|
||||
pass
|
||||
|
||||
# Cleanup methods here
|
||||
def cleanup_vdis(self, vdi_refs_dict):
|
||||
@@ -313,19 +305,23 @@ class xenapi_create:
|
||||
traceback.print_exc()
|
||||
sys.exit(-1)
|
||||
|
||||
# Now create vbds
|
||||
try:
|
||||
# Now create vbds
|
||||
|
||||
vbds = vm.getElementsByTagName("vbd")
|
||||
vbds = vm.getElementsByTagName("vbd")
|
||||
|
||||
self.create_vbds(vm_ref, vbds, vdis)
|
||||
self.create_vbds(vm_ref, vbds, vdis)
|
||||
|
||||
# Now create vifs
|
||||
# Now create vifs
|
||||
|
||||
vifs = vm.getElementsByTagName("vif")
|
||||
vifs = vm.getElementsByTagName("vif")
|
||||
|
||||
self.create_vifs(vm_ref, vifs)
|
||||
self.create_vifs(vm_ref, vifs)
|
||||
|
||||
return vm_ref
|
||||
return vm_ref
|
||||
except:
|
||||
server.xenapi.VM.destroy(vm_ref)
|
||||
raise
|
||||
|
||||
def create_vbds(self, vm_ref, vbds, vdis):
|
||||
log(DEBUG, "create_vbds")
|
||||
@@ -363,13 +359,16 @@ class xenapi_create:
|
||||
def create_vif(self, vm_ref, vif):
|
||||
log(DEBUG, "create_vif")
|
||||
|
||||
if "bridge" in vif.attributes.keys():
|
||||
raise "Not allowed to add by bridge just yet"
|
||||
elif "network" in vif.attributes.keys():
|
||||
network = [network_ref
|
||||
if "network" in vif.attributes.keys():
|
||||
networks = [network_ref
|
||||
for network_ref in server.xenapi.network.get_all()
|
||||
if server.xenapi.network.get_name_label(network_ref)
|
||||
== vif.attributes["network"].value][0]
|
||||
== vif.attributes["network"].value]
|
||||
if len(networks) > 0:
|
||||
network = networks[0]
|
||||
else:
|
||||
raise OptionError("Network %s doesn't exist"
|
||||
% vif.attributes["network"].value)
|
||||
else:
|
||||
network = self._get_network_ref()
|
||||
|
||||
@@ -631,7 +630,7 @@ class sxp2xml:
|
||||
vif.attributes["qos_algorithm_type"] = ""
|
||||
|
||||
if get_child_by_name(vif_sxp, "bridge") is not None:
|
||||
vif.attributes["bridge"] \
|
||||
vif.attributes["network"] \
|
||||
= get_child_by_name(vif_sxp, "bridge")
|
||||
|
||||
return vif
|
||||
|
||||