[libvirt] [PATCH 1/2] Remove more trailing semicolons in Python files
by Guido Günther
---
docs/apibuild.py | 56 ++++----
docs/index.py | 32 ++---
examples/domain-events/events-python/event-test.py | 24 ++--
python/generator.py | 146 ++++++++++----------
python/libvirt-override-virConnect.py | 10 +-
python/tests/create.py | 2 +-
6 files changed, 135 insertions(+), 135 deletions(-)
diff --git a/docs/apibuild.py b/docs/apibuild.py
index 2bdbf2d..df12ba6 100755
--- a/docs/apibuild.py
+++ b/docs/apibuild.py
@@ -409,7 +409,7 @@ class CLexer:
return self.lineno
def push(self, token):
- self.tokens.insert(0, token);
+ self.tokens.insert(0, token)
def debug(self):
print "Last token: ", self.last
@@ -429,7 +429,7 @@ class CLexer:
if line[0] == '#':
self.tokens = map((lambda x: ('preproc', x)),
string.split(line))
- break;
+ break
l = len(line)
if line[0] == '"' or line[0] == "'":
end = line[0]
@@ -699,7 +699,7 @@ class CParser:
if self.top_comment == "":
self.top_comment = com
if self.comment == None or com[0] == '*':
- self.comment = com;
+ self.comment = com
else:
self.comment = self.comment + com
token = self.lexer.token()
@@ -897,7 +897,7 @@ class CParser:
while i < nbargs:
if args[i][1] == arg:
args[i] = (args[i][0], arg, desc)
- break;
+ break
i = i + 1
if i >= nbargs:
if not quiet:
@@ -1141,10 +1141,10 @@ class CParser:
type = type + token[1]
token = self.token()
elif token != None and token[0] == 'sep' and token[1] == ';':
- break;
+ break
elif token != None and token[0] == 'name':
type = base_type
- continue;
+ continue
else:
self.error("parsing typedef: expecting ';'", token)
return token
@@ -1239,7 +1239,7 @@ class CParser:
else:
self.error("parseStruct: name", token)
token = self.token()
- self.type = base_type;
+ self.type = base_type
self.struct_fields = fields
#self.debug("end parseStruct", token)
#print fields
@@ -1289,7 +1289,7 @@ class CParser:
else:
self.error("parseUnion: name", token)
token = self.token()
- self.type = base_type;
+ self.type = base_type
self.union_fields = fields
# self.debug("end parseUnion", token)
# print fields
@@ -1633,7 +1633,7 @@ class CParser:
self.type = self.type + token[1]
token = self.token()
if token == None or token[0] != "name" :
- self.error("parsing function type, name expected", token);
+ self.error("parsing function type, name expected", token)
return token
self.type = self.type + token[1]
nametok = token
@@ -1643,14 +1643,14 @@ class CParser:
token = self.token()
if token != None and token[0] == "sep" and token[1] == '(':
token = self.token()
- type = self.type;
- token = self.parseSignature(token);
- self.type = type;
+ type = self.type
+ token = self.parseSignature(token)
+ self.type = type
else:
- self.error("parsing function type, '(' expected", token);
+ self.error("parsing function type, '(' expected", token)
return token
else:
- self.error("parsing function type, ')' expected", token);
+ self.error("parsing function type, ')' expected", token)
return token
self.lexer.push(token)
token = nametok
@@ -1675,7 +1675,7 @@ class CParser:
self.type = self.type + token[1]
token = self.token()
else:
- self.error("parsing array type, ']' expected", token);
+ self.error("parsing array type, ']' expected", token)
return token
elif token != None and token[0] == "sep" and token[1] == ':':
# remove :12 in case it's a limited int size
@@ -1904,7 +1904,7 @@ class CParser:
self.index_add(self.name, self.filename, static,
"function", d)
token = self.token()
- token = self.parseBlock(token);
+ token = self.parseBlock(token)
elif token[1] == ',':
self.comment = None
self.index_add(self.name, self.filename, static,
@@ -2014,7 +2014,7 @@ class docBuilder:
for header in self.headers.keys():
parser = CParser(header)
idx = parser.parse()
- self.headers[header] = idx;
+ self.headers[header] = idx
self.idx.merge(idx)
def scanModules(self):
@@ -2032,19 +2032,19 @@ class docBuilder:
skip = 1
for incl in self.includes:
if string.find(file, incl) != -1:
- skip = 0;
+ skip = 0
break
if skip == 0:
- self.modules[file] = None;
+ self.modules[file] = None
files = glob.glob(directory + "/*.h")
for file in files:
skip = 1
for incl in self.includes:
if string.find(file, incl) != -1:
- skip = 0;
+ skip = 0
break
if skip == 0:
- self.headers[file] = None;
+ self.headers[file] = None
self.scanHeaders()
self.scanModules()
@@ -2067,11 +2067,11 @@ class docBuilder:
val = eval(info[0])
except:
val = info[0]
- output.write(" value='%s'" % (val));
+ output.write(" value='%s'" % (val))
if info[2] != None and info[2] != '':
- output.write(" type='%s'" % info[2]);
+ output.write(" type='%s'" % info[2])
if info[1] != None and info[1] != '':
- output.write(" info='%s'" % escape(info[1]));
+ output.write(" info='%s'" % escape(info[1]))
output.write("/>\n")
def serialize_macro(self, output, name):
@@ -2119,7 +2119,7 @@ class docBuilder:
if self.idx.structs.has_key(name) and ( \
type(self.idx.structs[name].info) == type(()) or
type(self.idx.structs[name].info) == type([])):
- output.write(">\n");
+ output.write(">\n")
try:
for field in self.idx.structs[name].info:
desc = field[2]
@@ -2136,7 +2136,7 @@ class docBuilder:
self.warning("Failed to serialize struct %s" % (name))
output.write(" </struct>\n")
else:
- output.write("/>\n");
+ output.write("/>\n")
else :
output.write(" <typedef name='%s' file='%s' type='%s'" % (
name, self.modulename_file(id.header), id.info))
@@ -2176,7 +2176,7 @@ class docBuilder:
if apstr != "":
apstr = apstr + " && "
apstr = apstr + cond
- output.write(" <cond>%s</cond>\n"% (apstr));
+ output.write(" <cond>%s</cond>\n"% (apstr))
try:
(ret, params, desc) = id.info
output.write(" <info><![CDATA[%s]]></info>\n" % (desc))
@@ -2388,7 +2388,7 @@ class docBuilder:
letter = id[0]
output.write(" <letter name='%s'>\n" % (letter))
output.write(" <word name='%s'>\n" % (id))
- tokens = index[id];
+ tokens = index[id]
tokens.sort()
tok = None
for token in tokens:
diff --git a/docs/index.py b/docs/index.py
index df6bd81..ce5180f 100755
--- a/docs/index.py
+++ b/docs/index.py
@@ -166,15 +166,15 @@ def checkTables(db, verbose = 1):
print "table %s missing" % (table)
createTable(db, table)
try:
- ret = c.execute("SELECT count(*) from %s" % table);
+ ret = c.execute("SELECT count(*) from %s" % table)
row = c.fetchone()
if verbose:
print "Table %s contains %d records" % (table, row[0])
except:
print "Troubles with table %s : repairing" % (table)
- ret = c.execute("repair table %s" % table);
+ ret = c.execute("repair table %s" % table)
print "repairing returned %d" % (ret)
- ret = c.execute("SELECT count(*) from %s" % table);
+ ret = c.execute("SELECT count(*) from %s" % table)
row = c.fetchone()
print "Table %s contains %d records" % (table, row[0])
if verbose:
@@ -600,7 +600,7 @@ def addWordHTML(word, resource, id, section, relevance):
pass
else:
wordsDictHTML[word] = {}
- d = wordsDictHTML[word];
+ d = wordsDictHTML[word]
d[resource] = (relevance, id, section)
return relevance
@@ -647,7 +647,7 @@ def addWordArchive(word, id, relevance):
pass
else:
wordsDictArchive[word] = {}
- d = wordsDictArchive[word];
+ d = wordsDictArchive[word]
d[id] = relevance
return relevance
@@ -989,7 +989,7 @@ def analyzeHTML(doc, resource, p, section, id):
return words
def analyzeHTML(doc, resource):
- para = 0;
+ para = 0
ctxt = doc.xpathNewContext()
try:
res = ctxt.xpathEval("//head/title")
@@ -1079,7 +1079,7 @@ def scanXMLMsgArchive(url, title, force = 0):
try:
print "Loading %s" % (url)
- doc = libxml2.htmlParseFile(url, None);
+ doc = libxml2.htmlParseFile(url, None)
except:
doc = None
if doc == None:
@@ -1102,7 +1102,7 @@ def scanXMLDateArchive(t = None, force = 0):
url = getXMLDateArchive(t)
print "loading %s" % (url)
try:
- doc = libxml2.htmlParseFile(url, None);
+ doc = libxml2.htmlParseFile(url, None)
except:
doc = None
if doc == None:
@@ -1150,7 +1150,7 @@ def analyzeArchives(t = None, force = 0):
refs = wordsDictArchive[word]
if refs == None:
skipped = skipped + 1
- continue;
+ continue
for id in refs.keys():
relevance = refs[id]
updateWordArchive(word, id, relevance)
@@ -1170,7 +1170,7 @@ def analyzeHTMLTop():
refs = wordsDictHTML[word]
if refs == None:
skipped = skipped + 1
- continue;
+ continue
for resource in refs.keys():
(relevance, id, section) = refs[resource]
updateWordHTML(word, resource, section, id, relevance)
@@ -1199,7 +1199,7 @@ def analyzeAPITop():
refs = wordsDict[word]
if refs == None:
skipped = skipped + 1
- continue;
+ continue
for (module, symbol) in refs.keys():
updateWord(word, symbol, refs[(module, symbol)])
i = i + 1
@@ -1228,26 +1228,26 @@ def main():
elif args[i] == '--archive':
analyzeArchives(None, force)
elif args[i] == '--archive-year':
- i = i + 1;
+ i = i + 1
year = args[i]
months = ["January" , "February", "March", "April", "May",
"June", "July", "August", "September", "October",
- "November", "December"];
+ "November", "December"]
for month in months:
try:
str = "%s-%s" % (year, month)
T = time.strptime(str, "%Y-%B")
- t = time.mktime(T) + 3600 * 24 * 10;
+ t = time.mktime(T) + 3600 * 24 * 10
analyzeArchives(t, force)
except:
print "Failed to index month archive:"
print sys.exc_type, sys.exc_value
elif args[i] == '--archive-month':
- i = i + 1;
+ i = i + 1
month = args[i]
try:
T = time.strptime(month, "%Y-%B")
- t = time.mktime(T) + 3600 * 24 * 10;
+ t = time.mktime(T) + 3600 * 24 * 10
analyzeArchives(t, force)
except:
print "Failed to index month archive:"
diff --git a/examples/domain-events/events-python/event-test.py b/examples/domain-events/events-python/event-test.py
index 3095e94..b456dec 100644
--- a/examples/domain-events/events-python/event-test.py
+++ b/examples/domain-events/events-python/event-test.py
@@ -289,7 +289,7 @@ class virEventLoopPure:
def update_timer(self, timerID, interval):
for h in self.timers:
if h.get_id() == timerID:
- h.set_interval(interval);
+ h.set_interval(interval)
self.interrupt()
debug("Update timer %d interval %d" % (timerID, interval))
@@ -325,25 +325,25 @@ class virEventLoopPure:
if events & libvirt.VIR_EVENT_HANDLE_WRITABLE:
ret |= select.POLLOUT
if events & libvirt.VIR_EVENT_HANDLE_ERROR:
- ret |= select.POLLERR;
+ ret |= select.POLLERR
if events & libvirt.VIR_EVENT_HANDLE_HANGUP:
- ret |= select.POLLHUP;
+ ret |= select.POLLHUP
return ret
# Convert from poll() event constants, to libvirt events constants
def events_from_poll(self, events):
- ret = 0;
+ ret = 0
if events & select.POLLIN:
- ret |= libvirt.VIR_EVENT_HANDLE_READABLE;
+ ret |= libvirt.VIR_EVENT_HANDLE_READABLE
if events & select.POLLOUT:
- ret |= libvirt.VIR_EVENT_HANDLE_WRITABLE;
+ ret |= libvirt.VIR_EVENT_HANDLE_WRITABLE
if events & select.POLLNVAL:
- ret |= libvirt.VIR_EVENT_HANDLE_ERROR;
+ ret |= libvirt.VIR_EVENT_HANDLE_ERROR
if events & select.POLLERR:
- ret |= libvirt.VIR_EVENT_HANDLE_ERROR;
+ ret |= libvirt.VIR_EVENT_HANDLE_ERROR
if events & select.POLLHUP:
- ret |= libvirt.VIR_EVENT_HANDLE_HANGUP;
- return ret;
+ ret |= libvirt.VIR_EVENT_HANDLE_HANGUP
+ return ret
###########################################################################
@@ -437,8 +437,8 @@ def eventToString(event):
"Resumed",
"Stopped",
"Shutdown",
- "PMSuspended" );
- return eventStrings[event];
+ "PMSuspended" )
+ return eventStrings[event]
def detailToString(event, detail):
eventStrings = (
diff --git a/python/generator.py b/python/generator.py
index ceade6b..02209f9 100755
--- a/python/generator.py
+++ b/python/generator.py
@@ -615,7 +615,7 @@ def print_function_wrapper(module, name, output, export, include):
# Don't delete the function entry in the caller.
return 1
- c_call = "";
+ c_call = ""
format=""
format_args=""
c_args=""
@@ -638,7 +638,7 @@ def print_function_wrapper(module, name, output, export, include):
c_args = c_args + " PyObject *pyobj_%s;\n" % (arg[0])
c_convert = c_convert + \
" %s = (%s) Py%s_Get(pyobj_%s);\n" % (arg[0],
- arg[1], t, arg[0]);
+ arg[1], t, arg[0])
else:
format_args = format_args + ", &%s" % (arg[0])
if f == 't#':
@@ -646,7 +646,7 @@ def print_function_wrapper(module, name, output, export, include):
c_args = c_args + " int py_buffsize%d;\n" % num_bufs
num_bufs = num_bufs + 1
if c_call != "":
- c_call = c_call + ", ";
+ c_call = c_call + ", "
c_call = c_call + "%s" % (arg[0])
else:
if skipped_types.has_key(arg[1]):
@@ -671,7 +671,7 @@ def print_function_wrapper(module, name, output, export, include):
c_call = "\n %s->%s = %s;\n" % (args[0][0], args[1][0],
args[1][0])
else:
- c_call = "\n %s(%s);\n" % (name, c_call);
+ c_call = "\n %s(%s);\n" % (name, c_call)
ret_convert = " Py_INCREF(Py_None);\n return Py_None;\n"
elif py_types.has_key(ret[0]):
(f, t, n, c) = py_types[ret[0]]
@@ -679,13 +679,13 @@ def print_function_wrapper(module, name, output, export, include):
if file == "python_accessor" and ret[2] != None:
c_call = "\n c_retval = %s->%s;\n" % (args[0][0], ret[2])
else:
- c_call = "\n c_retval = %s(%s);\n" % (name, c_call);
+ c_call = "\n c_retval = %s(%s);\n" % (name, c_call)
ret_convert = " py_retval = libvirt_%sWrap((%s) c_retval);\n" % (n,c)
ret_convert = ret_convert + " return py_retval;\n"
elif py_return_types.has_key(ret[0]):
(f, t, n, c) = py_return_types[ret[0]]
c_return = " %s c_retval;\n" % (ret[0])
- c_call = "\n c_retval = %s(%s);\n" % (name, c_call);
+ c_call = "\n c_retval = %s(%s);\n" % (name, c_call)
ret_convert = " py_retval = libvirt_%sWrap((%s) c_retval);\n" % (n,c)
ret_convert = ret_convert + " return py_retval;\n"
else:
@@ -705,31 +705,31 @@ def print_function_wrapper(module, name, output, export, include):
include.write("PyObject * ")
if module == "libvirt":
- include.write("libvirt_%s(PyObject *self, PyObject *args);\n" % (name));
+ include.write("libvirt_%s(PyObject *self, PyObject *args);\n" % (name))
export.write(" { (char *)\"%s\", libvirt_%s, METH_VARARGS, NULL },\n" %
(name, name))
elif module == "libvirt-lxc":
- include.write("libvirt_lxc_%s(PyObject *self, PyObject *args);\n" % (name));
+ include.write("libvirt_lxc_%s(PyObject *self, PyObject *args);\n" % (name))
export.write(" { (char *)\"%s\", libvirt_lxc_%s, METH_VARARGS, NULL },\n" %
(name, name))
elif module == "libvirt-qemu":
- include.write("libvirt_qemu_%s(PyObject *self, PyObject *args);\n" % (name));
+ include.write("libvirt_qemu_%s(PyObject *self, PyObject *args);\n" % (name))
export.write(" { (char *)\"%s\", libvirt_qemu_%s, METH_VARARGS, NULL },\n" %
(name, name))
if file == "python":
# Those have been manually generated
if cond != None and cond != "":
- include.write("#endif\n");
- export.write("#endif\n");
- output.write("#endif\n");
+ include.write("#endif\n")
+ export.write("#endif\n")
+ output.write("#endif\n")
return 1
if file == "python_accessor" and ret[0] != "void" and ret[2] is None:
# Those have been manually generated
if cond != None and cond != "":
- include.write("#endif\n");
- export.write("#endif\n");
- output.write("#endif\n");
+ include.write("#endif\n")
+ export.write("#endif\n")
+ output.write("#endif\n")
return 1
output.write("PyObject *\n")
@@ -756,9 +756,9 @@ def print_function_wrapper(module, name, output, export, include):
if c_convert != "":
output.write(c_convert + "\n")
- output.write(" LIBVIRT_BEGIN_ALLOW_THREADS;");
- output.write(c_call);
- output.write(" LIBVIRT_END_ALLOW_THREADS;\n");
+ output.write(" LIBVIRT_BEGIN_ALLOW_THREADS;")
+ output.write(c_call)
+ output.write(" LIBVIRT_END_ALLOW_THREADS;\n")
output.write(ret_convert)
output.write("}\n\n")
if cond != None and cond != "":
@@ -1195,7 +1195,7 @@ def writeDoc(module, name, args, indent, output):
if funcs[name][0] is None or funcs[name][0] == "":
return
val = funcs[name][0]
- val = string.replace(val, "NULL", "None");
+ val = string.replace(val, "NULL", "None")
output.write(indent)
output.write('"""')
i = string.find(val, "\n")
@@ -1261,7 +1261,7 @@ def buildWrappers(module):
ctypes_processed[type] = ()
for name in functions.keys():
- found = 0;
+ found = 0
(desc, ret, args, file, mod, cond) = functions[name]
for type in ctypes:
classe = classes_type[type][2]
@@ -1331,7 +1331,7 @@ def buildWrappers(module):
classes.write("%s" % arg[0])
n = n + 1
classes.write("):\n")
- writeDoc(module, name, args, ' ', classes);
+ writeDoc(module, name, args, ' ', classes)
for arg in args:
if classes_type.has_key(arg[1]):
@@ -1340,19 +1340,19 @@ def buildWrappers(module):
classes.write(" else: %s__o = %s%s\n" %
(arg[0], arg[0], classes_type[arg[1]][0]))
if ret[0] != "void":
- classes.write(" ret = ");
+ classes.write(" ret = ")
else:
- classes.write(" ");
+ classes.write(" ")
classes.write("libvirtmod.%s(" % name)
n = 0
for arg in args:
if n != 0:
- classes.write(", ");
+ classes.write(", ")
classes.write("%s" % arg[0])
if classes_type.has_key(arg[1]):
- classes.write("__o");
+ classes.write("__o")
n = n + 1
- classes.write(")\n");
+ classes.write(")\n")
if ret[0] != "void":
if classes_type.has_key(ret[0]):
@@ -1360,15 +1360,15 @@ def buildWrappers(module):
# Raise an exception
#
if functions_noexcept.has_key(name):
- classes.write(" if ret is None:return None\n");
+ classes.write(" if ret is None:return None\n")
else:
classes.write(
" if ret is None:raise libvirtError('%s() failed')\n" %
(name))
- classes.write(" return ");
- classes.write(classes_type[ret[0]][1] % ("ret"));
- classes.write("\n");
+ classes.write(" return ")
+ classes.write(classes_type[ret[0]][1] % ("ret"))
+ classes.write("\n")
# For functions returning an integral type there are
# several things that we can do, depending on the
@@ -1398,7 +1398,7 @@ def buildWrappers(module):
else:
classes.write(" return ret\n")
- classes.write("\n");
+ classes.write("\n")
for classname in classes_list:
if classname == "None":
@@ -1441,14 +1441,14 @@ def buildWrappers(module):
classes.write(" self._dom = dom\n")
classes.write(" self._conn = dom.connect()\n")
classes.write(" if _obj != None:self._o = _obj;return\n")
- classes.write(" self._o = None\n\n");
+ classes.write(" self._o = None\n\n")
destruct=None
if classes_destructors.has_key(classname):
classes.write(" def __del__(self):\n")
classes.write(" if self._o != None:\n")
classes.write(" libvirtmod.%s(self._o)\n" %
- classes_destructors[classname]);
- classes.write(" self._o = None\n\n");
+ classes_destructors[classname])
+ classes.write(" self._o = None\n\n")
destruct=classes_destructors[classname]
if not class_skip_connect_impl.has_key(classname):
@@ -1470,7 +1470,7 @@ def buildWrappers(module):
# to avoid double free
#
if name == destruct:
- continue;
+ continue
if file != oldfile:
if file == "python_accessor":
classes.write(" # accessors for %s\n" % (classname))
@@ -1487,7 +1487,7 @@ def buildWrappers(module):
classes.write(", %s" % arg[0])
n = n + 1
classes.write("):\n")
- writeDoc(module, name, args, ' ', classes);
+ writeDoc(module, name, args, ' ', classes)
n = 0
for arg in args:
if classes_type.has_key(arg[1]):
@@ -1498,24 +1498,24 @@ def buildWrappers(module):
(arg[0], arg[0], classes_type[arg[1]][0]))
n = n + 1
if ret[0] != "void":
- classes.write(" ret = ");
+ classes.write(" ret = ")
else:
- classes.write(" ");
+ classes.write(" ")
n = 0
classes.write("libvirtmod.%s(" % name)
for arg in args:
if n != 0:
- classes.write(", ");
+ classes.write(", ")
if n != index:
classes.write("%s" % arg[0])
if classes_type.has_key(arg[1]):
- classes.write("__o");
+ classes.write("__o")
else:
- classes.write("self");
+ classes.write("self")
if classes_type.has_key(arg[1]):
classes.write(classes_type[arg[1]][0])
n = n + 1
- classes.write(")\n");
+ classes.write(")\n")
if name == "virConnectClose":
classes.write(" self._o = None\n")
@@ -1528,7 +1528,7 @@ def buildWrappers(module):
#
if functions_noexcept.has_key(name):
classes.write(
- " if ret is None:return None\n");
+ " if ret is None:return None\n")
else:
if classname == "virConnect":
classes.write(
@@ -1566,9 +1566,9 @@ def buildWrappers(module):
#
# generate the returned class wrapper for the object
#
- classes.write(" __tmp = ");
- classes.write(classes_type[ret[0]][1] % ("ret"));
- classes.write("\n");
+ classes.write(" __tmp = ")
+ classes.write(classes_type[ret[0]][1] % ("ret"))
+ classes.write("\n")
#
# Sometime one need to keep references of the source
@@ -1586,28 +1586,28 @@ def buildWrappers(module):
# Post-processing - just before we return.
if function_post.has_key(name):
classes.write(" %s\n" %
- (function_post[name]));
+ (function_post[name]))
#
# return the class
#
- classes.write(" return __tmp\n");
+ classes.write(" return __tmp\n")
elif converter_type.has_key(ret[0]):
#
# Raise an exception
#
if functions_noexcept.has_key(name):
classes.write(
- " if ret is None:return None");
+ " if ret is None:return None")
# Post-processing - just before we return.
if function_post.has_key(name):
classes.write(" %s\n" %
- (function_post[name]));
+ (function_post[name]))
- classes.write(" return ");
- classes.write(converter_type[ret[0]] % ("ret"));
- classes.write("\n");
+ classes.write(" return ")
+ classes.write(converter_type[ret[0]] % ("ret"))
+ classes.write("\n")
# For functions returning an integral type there
# are several things that we can do, depending on
@@ -1650,7 +1650,7 @@ def buildWrappers(module):
# Post-processing - just before we return.
if function_post.has_key(name):
classes.write(" %s\n" %
- (function_post[name]));
+ (function_post[name]))
classes.write (" return ret\n")
@@ -1692,7 +1692,7 @@ def buildWrappers(module):
# Post-processing - just before we return.
if function_post.has_key(name):
classes.write(" %s\n" %
- (function_post[name]));
+ (function_post[name]))
classes.write (" return ret\n")
@@ -1700,11 +1700,11 @@ def buildWrappers(module):
# Post-processing - just before we return.
if function_post.has_key(name):
classes.write(" %s\n" %
- (function_post[name]));
+ (function_post[name]))
- classes.write(" return ret\n");
+ classes.write(" return ret\n")
- classes.write("\n");
+ classes.write("\n")
# Append "<classname>.py" to class def, iff it exists
try:
extra = open(os.path.join(srcPref,"libvirt-override-" + classname + ".py"), "r")
@@ -1726,7 +1726,7 @@ def buildWrappers(module):
items.sort(lambda i1,i2: cmp(long(i1[1]),long(i2[1])))
for name,value in items:
classes.write("%s = %s\n" % (name,value))
- classes.write("\n");
+ classes.write("\n")
classes.close()
@@ -1776,7 +1776,7 @@ def qemuBuildWrappers(module):
fd.write(" if str(cyg_e).count(\"No module named\"):\n")
fd.write(" raise lib_e\n\n")
- fd.write("import libvirt\n\n");
+ fd.write("import libvirt\n\n")
fd.write("#\n# Functions from module %s\n#\n\n" % module)
#
# Generate functions directly, no classes
@@ -1792,12 +1792,12 @@ def qemuBuildWrappers(module):
fd.write("%s" % arg[0])
n = n + 1
fd.write("):\n")
- writeDoc(module, name, args, ' ', fd);
+ writeDoc(module, name, args, ' ', fd)
if ret[0] != "void":
- fd.write(" ret = ");
+ fd.write(" ret = ")
else:
- fd.write(" ");
+ fd.write(" ")
fd.write("libvirtmod_qemu.%s(" % name)
n = 0
@@ -1808,7 +1808,7 @@ def qemuBuildWrappers(module):
conn = arg[0]
if n != 0:
- fd.write(", ");
+ fd.write(", ")
if arg[1] in ["virDomainPtr", "virConnectPtr"]:
# FIXME: This might have problem if the function
# has multiple args which are objects.
@@ -1816,7 +1816,7 @@ def qemuBuildWrappers(module):
else:
fd.write("%s" % arg[0])
n = n + 1
- fd.write(")\n");
+ fd.write(")\n")
if ret[0] != "void":
fd.write(" if ret is None: raise libvirt.libvirtError('" + name + "() failed')\n")
@@ -1837,7 +1837,7 @@ def qemuBuildWrappers(module):
items.sort(lambda i1,i2: cmp(long(i1[1]),long(i2[1])))
for name,value in items:
fd.write("%s = %s\n" % (name,value))
- fd.write("\n");
+ fd.write("\n")
fd.close()
@@ -1888,7 +1888,7 @@ def lxcBuildWrappers(module):
fd.write(" if str(cyg_e).count(\"No module named\"):\n")
fd.write(" raise lib_e\n\n")
- fd.write("import libvirt\n\n");
+ fd.write("import libvirt\n\n")
fd.write("#\n# Functions from module %s\n#\n\n" % module)
#
# Generate functions directly, no classes
@@ -1904,12 +1904,12 @@ def lxcBuildWrappers(module):
fd.write("%s" % arg[0])
n = n + 1
fd.write("):\n")
- writeDoc(module, name, args, ' ', fd);
+ writeDoc(module, name, args, ' ', fd)
if ret[0] != "void":
- fd.write(" ret = ");
+ fd.write(" ret = ")
else:
- fd.write(" ");
+ fd.write(" ")
fd.write("libvirtmod_lxc.%s(" % name)
n = 0
@@ -1920,7 +1920,7 @@ def lxcBuildWrappers(module):
conn = arg[0]
if n != 0:
- fd.write(", ");
+ fd.write(", ")
if arg[1] in ["virDomainPtr", "virConnectPtr"]:
# FIXME: This might have problem if the function
# has multiple args which are objects.
@@ -1928,7 +1928,7 @@ def lxcBuildWrappers(module):
else:
fd.write("%s" % arg[0])
n = n + 1
- fd.write(")\n");
+ fd.write(")\n")
if ret[0] != "void":
fd.write(" if ret is None: raise libvirt.libvirtError('" + name + "() failed')\n")
@@ -1949,7 +1949,7 @@ def lxcBuildWrappers(module):
items.sort(lambda i1,i2: cmp(long(i1[1]),long(i2[1])))
for name,value in items:
fd.write("%s = %s\n" % (name,value))
- fd.write("\n");
+ fd.write("\n")
fd.close()
diff --git a/python/libvirt-override-virConnect.py b/python/libvirt-override-virConnect.py
index 84d6cc3..121ef6f 100644
--- a/python/libvirt-override-virConnect.py
+++ b/python/libvirt-override-virConnect.py
@@ -132,7 +132,7 @@
opaque = cbData["opaque"]
cb(self, virDomain(self, _obj=dom), oldSrcPath, newSrcPath, devAlias, reason, opaque)
- return 0;
+ return 0
def _dispatchDomainEventTrayChangeCallback(self, dom, devAlias, reason, cbData):
"""Dispatches event to python user domain trayChange event callbacks
@@ -141,7 +141,7 @@
opaque = cbData["opaque"]
cb(self, virDomain(self, _obj=dom), devAlias, reason, opaque)
- return 0;
+ return 0
def _dispatchDomainEventPMWakeupCallback(self, dom, reason, cbData):
"""Dispatches event to python user domain pmwakeup event callbacks
@@ -150,7 +150,7 @@
opaque = cbData["opaque"]
cb(self, virDomain(self, _obj=dom), reason, opaque)
- return 0;
+ return 0
def _dispatchDomainEventPMSuspendCallback(self, dom, reason, cbData):
"""Dispatches event to python user domain pmsuspend event callbacks
@@ -159,7 +159,7 @@
opaque = cbData["opaque"]
cb(self, virDomain(self, _obj=dom), reason, opaque)
- return 0;
+ return 0
def _dispatchDomainEventBalloonChangeCallback(self, dom, actual, cbData):
"""Dispatches events to python user domain balloon change event callbacks
@@ -177,7 +177,7 @@
opaque = cbData["opaque"]
cb(self, virDomain(self, _obj=dom), reason, opaque)
- return 0;
+ return 0
def domainEventDeregisterAny(self, callbackID):
"""Removes a Domain Event Callback. De-registering for a
diff --git a/python/tests/create.py b/python/tests/create.py
index 95e31a9..815ccc4 100755
--- a/python/tests/create.py
+++ b/python/tests/create.py
@@ -128,7 +128,7 @@ while i < 30:
except:
okay = 0
t = -1
- break;
+ break
if t == 0:
break
--
1.7.10.4
12 years, 2 months
[libvirt] [PATCH] Cosmetics: Remove semicolons
by Guido Günther
It's Python, not C
---
python/libvirt-override.py | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/python/libvirt-override.py b/python/libvirt-override.py
index 8427eab..82d7dcb 100644
--- a/python/libvirt-override.py
+++ b/python/libvirt-override.py
@@ -107,9 +107,9 @@ def getVersion (name = None):
Versions numbers are integers: 1000000*major + 1000*minor + release."""
if name is None:
- ret = libvirtmod.virGetVersion ();
+ ret = libvirtmod.virGetVersion ()
else:
- ret = libvirtmod.virGetVersion (name);
+ ret = libvirtmod.virGetVersion (name)
if ret is None: raise libvirtError ("virGetVersion() failed")
return ret
@@ -132,7 +132,7 @@ def _eventInvokeHandleCallback(watch, fd, event, opaque, opaquecompat=None):
callback = opaque[0]
opaque = opaque[1]
- libvirtmod.virEventInvokeHandleCallback(watch, fd, event, callback, opaque);
+ libvirtmod.virEventInvokeHandleCallback(watch, fd, event, callback, opaque)
#
# Invoke an EventTimeout callback
@@ -152,7 +152,7 @@ def _eventInvokeTimeoutCallback(timer, opaque, opaquecompat=None):
callback = opaque[0]
opaque = opaque[1]
- libvirtmod.virEventInvokeTimeoutCallback(timer, callback, opaque);
+ libvirtmod.virEventInvokeTimeoutCallback(timer, callback, opaque)
def _dispatchEventHandleCallback(watch, fd, events, cbData):
cb = cbData["cb"]
--
1.7.10.4
12 years, 2 months
[libvirt] Failed to to connect socket to '/var/run/libvirt/libvirt-sock': Connection refused
by Yin Olivia-R63875
Hi,
I tried to build and run libvirt-1.0.1 on FSL PowerPC platform.
The connection to '/var/run/libvirt/libvirt-sock' is always refused.
# libvirtd -d
# export LIBVIRT_DEBUG=1
# export LIBVIRT_LOG_OUTPUTS="1:file:virsh.log"
# virsh -c qemu:///system list
2013-01-10 04:55:20.409+0000: 2574: info : libvirt version: 1.0.1
2013-01-10 04:55:20.409+0000: 2574: debug : virLogParseOutputs:1288 : outputs=1:file:virsh.log
error: failed to connect to the hypervisor
error: Failed to connect socket to '/var/run/libvirt/libvirt-sock': Connection refused
Exactly it could work with libvirt-0.10.1. Below are the debug messages with both versions.
# cat virsh.log
-------------------------
1). libvirt-1.0.1
-------------------------
<cut>
2013-01-10 06:12:12.107+0000: 2340: debug : do_open:1145 : name "qemu:///system" to URI components:
scheme qemu
server (null)
user (null)
port 0
path /system
2013-01-10 06:12:12.107+0000: 2340: debug : do_open:1191 : trying driver 0 (Test) ...
2013-01-10 06:12:12.107+0000: 2340: debug : do_open:1197 : driver 0 Test returned DECLINED
2013-01-10 06:12:12.107+0000: 2340: debug : do_open:1191 : trying driver 1 (OPENVZ) ...
2013-01-10 06:12:12.107+0000: 2340: debug : do_open:1197 : driver 1 OPENVZ returned DECLINED
2013-01-10 06:12:12.107+0000: 2340: debug : do_open:1191 : trying driver 2 (VMWARE) ...
2013-01-10 06:12:12.107+0000: 2340: debug : do_open:1197 : driver 2 VMWARE returned DECLINED
2013-01-10 06:12:12.107+0000: 2340: debug : do_open:1191 : trying driver 3 (VBOX) ...
2013-01-10 06:12:12.107+0000: 2340: debug : do_open:1197 : driver 3 VBOX returned DECLINED
2013-01-10 06:12:12.108+0000: 2340: debug : do_open:1191 : trying driver 4 (remote) ...
2013-01-10 06:12:12.108+0000: 2340: debug : doRemoteOpen:586 : proceeding with name = qemu:///system
2013-01-10 06:12:12.108+0000: 2340: debug : doRemoteOpen:595 : Connecting with transport 1
2013-01-10 06:12:12.108+0000: 2340: debug : doRemoteOpen:671 : Proceeding with sockname /var/run/libvirt/libvirt-sock
2013-01-10 06:12:12.108+0000: 2340: error : virNetSocketNewConnectUNIX:570 : Failed to connect socket to '/var/run/libvirt/libvirt-sock': Connection refused
2013-01-10 06:12:12.108+0000: 2340: debug : virFileClose:72 : Closed fd 7
2013-01-10 06:12:12.108+0000: 2340: debug : virNetClientCloseInternal:698 : client=(nil) wantclose=0
2013-01-10 06:12:12.108+0000: 2340: debug : do_open:1197 : driver 4 remote returned ERROR
2013-01-10 06:12:12.108+0000: 2340: debug : virObjectUnref:135 : OBJECT_UNREF: obj=0x48900648
2013-01-10 06:12:12.108+0000: 2340: debug : virObjectUnref:137 : OBJECT_DISPOSE: obj=0x48900648
2013-01-10 06:12:12.108+0000: 2340: debug : virEventPollAddTimeout:225 : Used 0 timeout slots, adding at least 10 more
2013-01-10 06:12:12.108+0000: 2340: debug : virEventPollInterruptLocked:716 : Interrupting
2013-01-10 06:12:12.108+0000: 2340: debug : virEventPollAddTimeout:248 : EVENT_POLL_ADD_TIMEOUT: timer=1 frequency=0 cb=0x10008624 opa
2013-01-10 06:12:12.108+0000: 2341: debug : virEventPollRunOnce:640 : Poll got 1 event(s)
2013-01-10 06:12:12.108+0000: 2341: debug : virEventPollDispatchTimeouts:425 : Dispatch 1
2013-01-10 06:12:12.108+0000: 2341: debug : virEventPollDispatchTimeouts:448 : EVENT_POLL_DISPATCH_TIMEOUT: timer=1
2013-01-10 06:12:12.108+0000: 2341: debug : virEventPollDispatchHandles:470 : Dispatch 1
2013-01-10 06:12:12.108+0000: 2341: debug : virEventPollDispatchHandles:484 : i=0 w=1
2013-01-10 06:12:12.108+0000: 2341: debug : virEventPollDispatchHandles:498 : EVENT_POLL_DISPATCH_HANDLE: watch=1 events=1
2013-01-10 06:12:12.108+0000: 2341: debug : virEventPollCleanupTimeouts:516 : Cleanup 1
2013-01-10 06:12:12.108+0000: 2341: debug : virEventPollCleanupHandles:564 : Cleanup 1
2013-01-10 06:12:12.108+0000: 2340: debug : virEventPollRemoveTimeout:300 : EVENT_POLL_REMOVE_TIMEOUT: timer=1
2013-01-10 06:12:12.108+0000: 2340: debug : virEventPollInterruptLocked:712 : Skip interrupt, 0 1216382096
<cut>
-------------------------
2). libvirt-0.10.1
-------------------------
<cut>
2013-01-10 06:06:27.275+0000: 2393: debug : do_open:1127 : name "qemu:///system" to URI components:
scheme qemu
server (null)
user (null)
port 0
path /system
2013-01-10 06:06:27.275+0000: 2393: debug : do_open:1174 : trying driver 0 (Test) ...
2013-01-10 06:06:27.275+0000: 2393: debug : do_open:1180 : driver 0 Test returned DECLINED
2013-01-10 06:06:27.275+0000: 2393: debug : do_open:1174 : trying driver 1 (OPENVZ) ...
2013-01-10 06:06:27.275+0000: 2393: debug : do_open:1180 : driver 1 OPENVZ returned DECLINED
2013-01-10 06:06:27.275+0000: 2393: debug : do_open:1174 : trying driver 2 (VMWARE) ...
2013-01-10 06:06:27.275+0000: 2393: debug : do_open:1180 : driver 2 VMWARE returned DECLINED
2013-01-10 06:06:27.275+0000: 2393: debug : do_open:1174 : trying driver 3 (VBOX) ...
2013-01-10 06:06:27.275+0000: 2393: debug : do_open:1180 : driver 3 VBOX returned DECLINED
2013-01-10 06:06:27.275+0000: 2393: debug : do_open:1174 : trying driver 4 (remote) ...
2013-01-10 06:06:27.275+0000: 2393: debug : doRemoteOpen:576 : proceeding with name = qemu:///system
2013-01-10 06:06:27.276+0000: 2393: debug : doRemoteOpen:585 : Connecting with transport 1
2013-01-10 06:06:27.276+0000: 2393: debug : doRemoteOpen:661 : Proceeding with sockname /var/run/libvirt/libvirt-sock
2013-01-10 06:06:27.277+0000: 2393: debug : virNetSocketNew:146 : localAddr=0xbff169d4 remoteAddr=0xbff16a58 fd=7 errfd=-1 pid=0
2013-01-10 06:06:27.277+0000: 2393: debug : virObjectNew:110 : OBJECT_NEW: obj=0x48900dc8 classname=virNetSocket
2013-01-10 06:06:27.277+0000: 2393: debug : virNetSocketNew:203 : RPC_SOCKET_NEW: sock=0x48900dc8 fd=7 errfd=-1 pid=0 localAddr=127.0.
2013-01-10 06:06:27.277+0000: 2393: debug : virObjectNew:110 : OBJECT_NEW: obj=0x48900ff8 classname=virNetClient
2013-01-10 06:06:27.277+0000: 2393: debug : virNetClientNew:342 : RPC_CLIENT_NEW: client=0x48900ff8 sock=0x48900dc8
2013-01-10 06:06:27.277+0000: 2393: debug : virObjectRef:168 : OBJECT_REF: obj=0x48900ff8
2013-01-10 06:06:27.277+0000: 2393: debug : virObjectRef:168 : OBJECT_REF: obj=0x48900dc8
2013-01-10 06:06:27.277+0000: 2393: debug : virEventPollInterruptLocked:701 : Interrupting
2013-01-10 06:06:27.277+0000: 2393: debug : virEventPollAddHandle:136 : EVENT_POLL_ADD_HANDLE: watch=2 fd=7 events=1 cb=0xf7bad00 opaq
2013-01-10 06:06:27.277+0000: 2394: debug : virEventPollRunOnce:625 : Poll got 1 event(s)
2013-01-10 06:06:27.277+0000: 2393: debug : virKeepAliveNew:212 : client=0x48900ff8, interval=-1, count=0
<cut>
I checked the source codes of function src/rpc/virnetsocket.c and there's no change on function virNetSocketNewConnectUNIX().
Best Regards,
Olivia
12 years, 2 months
[libvirt] [PATCH 0/8 v2] Persistent vHBA support in storage pool
by Osier Yang
This is the 3rd part to implement NPIV migration support [1].
Part 1: (New version)
https://www.redhat.com/archives/libvir-list/2013-February/msg00112.html
Part 2: (Already ACKed by Michal)
https://www.redhat.com/archives/libvir-list/2013-January/msg00859.html
Part 4: (Partly ACKed by John)
https://www.redhat.com/archives/libvir-list/2013-January/msg02113.html
The patches are based on Part 2.
The new XMLs might be too long, might be deserved to have them as
sub-elements of <adapter>. But I'd like to see the feedback first.
Osier Yang (8):
New XML attributes for storage pool source adapter
storage: Make the adapter name be consistent with node device driver
storage: Move virStorageBackendSCSIGetHostNumber into iscsi backend
phyp: Prohibit fc_host adapter for phyp driver
util: Add helper to get the scsi host name by iterating over sysfs
util: Fix bug of managing vport
storage: Add startPool and stopPool for scsi backend
storage: Guess the parent if it's not specified for vHBA
docs/formatstorage.html.in | 15 ++-
docs/schemas/storagepool.rng | 33 +++++-
src/conf/storage_conf.c | 123 ++++++++++++++++--
src/conf/storage_conf.h | 23 +++-
src/libvirt_private.syms | 4 +
src/phyp/phyp_driver.c | 15 ++-
src/storage/storage_backend_iscsi.c | 39 ++++++-
src/storage/storage_backend_scsi.c | 190 +++++++++++++++++++--------
src/storage/storage_backend_scsi.h | 3 -
src/util/virutil.c | 196 +++++++++++++++++++++++++++-
src/util/virutil.h | 7 +
tests/storagepoolxml2xmlin/pool-scsi.xml | 2 +-
tests/storagepoolxml2xmlin/pool-scsi1.xml | 15 ++
tests/storagepoolxml2xmlout/pool-scsi.xml | 2 +-
tests/storagepoolxml2xmlout/pool-scsi1.xml | 18 +++
tests/storagepoolxml2xmltest.c | 1 +
16 files changed, 602 insertions(+), 84 deletions(-)
create mode 100644 tests/storagepoolxml2xmlin/pool-scsi1.xml
create mode 100644 tests/storagepoolxml2xmlout/pool-scsi1.xml
[1] https://www.redhat.com/archives/libvir-list/2012-November/msg00826.html
Regards,
Osier
12 years, 2 months
[libvirt] [PATCH v3 00/13] documentation improvements, code blocks with syntax highlighting
by Claudio Bley
Hi.
This is version 3 of
https://www.redhat.com/archives/libvir-list/2013-January/msg02026.html
combined with pre-requisite patches from
https://www.redhat.com/archives/libvir-list/2013-January/msg02071.html
Summary of the changes:
- patch #1 to #4 are adding / fixing missing documentation,
which is required so the next patch does not break the build
- patch #5 aborts the build when documentation is missing for
function arguments or the return value, except for those functions
being part of the "ignored_functions" dictionary
- patch #11 also adds an exception to syntax rules for the
generated SHJS files
- patch #12, #13 just add some indentation to make code blocks
properly recognized
This time, I did use make check and make syntax-check after every
patch, so this should be OK. (fingers crossed)
Claudio Bley (13):
libvirt.h.in: add missing documentation for virConnectCloseFunc
libvirt.h.in: fix documentation for
virConnectDomainEventBlockJobCallback
libvirt.h.in: add missing return doc for virEventRemoveHandleFunc
libvirt.h.in: document virConnectDomainEventCallback's return value
docs: abort when missing return or argument documentation
docs: only generate function argument info for args with a
description
docs: use div, not table, for notices on opaque types
docs: process code blocks similar to markdown
docs: add class "description" to div's containing descriptions
docs: define style of code blocks inside descriptions
docs: syntax highlight code blocks using SHJS
libvirt.c: indent code of virDomainGetMemoryParameters's
documentation
libvirt.c: add 2 spaces of indentation to example code
cfg.mk | 2 +-
docs/apibuild.py | 18 +++-
docs/libvirt.css | 8 ++
docs/newapi.xsl | 209 +++++++++++++++++++++++++-----------------
docs/page.xsl | 5 +-
docs/sh_c.min.js | 1 +
docs/sh_emacs.min.css | 1 +
docs/sh_main.min.js | 4 +
include/libvirt/libvirt.h.in | 16 +++-
src/libvirt.c | 130 +++++++++++++-------------
10 files changed, 241 insertions(+), 153 deletions(-)
create mode 100644 docs/sh_c.min.js
create mode 100644 docs/sh_emacs.min.css
create mode 100644 docs/sh_main.min.js
--
1.7.9.5
12 years, 2 months
[libvirt] [Patch]Fix bugs of Sheepdog storage driver
by harryxiyou@gmail.com
Signed-off-by: Harry Wei <harryxiyou(a)gmail.com>
---
src/storage/storage_backend_sheepdog.c | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/src/storage/storage_backend_sheepdog.c b/src/storage/storage_backend_sheepdog.c
index cd18f33..2cbfe01 100644
--- a/src/storage/storage_backend_sheepdog.c
+++ b/src/storage/storage_backend_sheepdog.c
@@ -168,9 +168,12 @@ virStorageBackendSheepdogCreateVol(virConnectPtr conn ATTRIBUTE_UNUSED,
virCommandAddArgFormat(cmd, "%llu", vol->capacity);
virStorageBackendSheepdogAddHostArg(cmd, pool);
ret = virCommandRun(cmd, NULL);
+ if (ret < 0)
+ goto cleanup;
- virStorageBackendSheepdogRefreshVol(conn, pool, vol);
+ ret = virStorageBackendSheepdogRefreshVol(conn, pool, vol);
+cleanup:
virCommandFree(cmd);
return ret;
}
--
1.7.0.4
12 years, 2 months
[libvirt] [PATCH v2 0/6] Add support for qcow3 images
by Ján Tomko
Add support for creating qcow3 images with or without lazy_refcounts,
using them with qemu and creating snapshots (both internal and external).
Diff to V1:
https://www.redhat.com/archives/libvir-list/2013-January/msg00610.html
* only use one bitmap for all features (and one <features> element)
* support snapshots
* detect which features are supported by qemu-img
Ján Tomko (6):
storage: refactor qemu-img command line generation
util: use helper functions for extracting image headers
util: add support for probing qcow3 images
qemu: add support for running domains with qcow3 images
storage: add support for creating qcow3 images
qemu: add qcow3 support to external snapshots
docs/formatsnapshot.html.in | 7 +
docs/formatstorage.html.in | 14 +-
docs/schemas/Makefile.am | 1 +
docs/schemas/domaincommon.rng | 1 +
docs/schemas/domainsnapshot.rng | 4 +
docs/schemas/storagefeatures.rng | 17 +++
docs/schemas/storagevol.rng | 6 +-
libvirt.spec.in | 1 +
mingw-libvirt.spec.in | 2 +
src/conf/snapshot_conf.c | 63 +++++++++
src/conf/snapshot_conf.h | 2 +
src/conf/storage_conf.c | 69 ++++++++++
src/conf/storage_conf.h | 4 +
src/libvirt_private.syms | 4 +
src/qemu/qemu_command.c | 2 +-
src/qemu/qemu_driver.c | 24 +++-
src/qemu/qemu_hotplug.c | 4 +-
src/storage/storage_backend.c | 189 ++++++++++++++++++-------
src/storage/storage_backend_fs.c | 6 +
src/util/virstoragefile.c | 288 ++++++++++++++++++++++++++-------------
src/util/virstoragefile.h | 13 ++
21 files changed, 565 insertions(+), 156 deletions(-)
create mode 100644 docs/schemas/storagefeatures.rng
--
1.7.12.4
12 years, 2 months
[libvirt] [Patch]Sheepdog storage driver ignore refreshVol func's return value
by harryxiyou
Hi all,
In libvirt/src/storage/storage_backend_sheepdog.c file, func
virStorageBackendSheepdogCreateVol calls func
virStorageBackendSheepdogRefreshVol to refresh Sheepdog volume infos.
But we do not check func virStorageBackendSheepdogRefreshVol's return
value. Following patch can fix this bug.
Signed-off-by: Harry Wei <harryxiyou(a)gmail.com>
Subject: [PATCH] sheepdog driver ignore return value for refresh volume
---
src/storage/storage_backend_sheepdog.c | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/src/storage/storage_backend_sheepdog.c
b/src/storage/storage_backend_sheepdog.c
index 66d8fb4..e72c944 100644
--- a/src/storage/storage_backend_sheepdog.c
+++ b/src/storage/storage_backend_sheepdog.c
@@ -168,9 +168,12 @@ virStorageBackendSheepdogCreateVol(virConnectPtr
conn ATTRIBUTE_UNUSED,
virCommandAddArgFormat(cmd, "%llu", vol->capacity);
virStorageBackendSheepdogAddHostArg(cmd, pool);
ret = virCommandRun(cmd, NULL);
+ if (0 > ret)
+ goto cleanup;
- virStorageBackendSheepdogRefreshVol(conn, pool, vol);
+ ret = virStorageBackendSheepdogRefreshVol(conn, pool, vol);
+cleanup:
virCommandFree(cmd);
return ret;
}
--
1.7.0.4
--
Thanks
Harry Wei
12 years, 2 months
[libvirt] [PATCH] build: fix build of HAL node backend
by Eric Blake
Commit 2025356 missed uses of PCI functions in the older HAL-related
code, probably because hal-devel is no longer available in latest Fedora.
* src/node_device/node_device_hal.c (gather_pci_cap): Reflect
function rename.
---
Pushing under the build-breaker rule.
src/node_device/node_device_hal.c | 8 +++++---
1 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/node_device/node_device_hal.c b/src/node_device/node_device_hal.c
index 610df8d..2ecb1de 100644
--- a/src/node_device/node_device_hal.c
+++ b/src/node_device/node_device_hal.c
@@ -1,7 +1,7 @@
/*
* node_device_hal.c: node device enumeration - HAL-based implementation
*
- * Copyright (C) 2011 Red Hat, Inc.
+ * Copyright (C) 2011, 2013 Red Hat, Inc.
* Copyright (C) 2008 Virtual Iron Software, Inc.
* Copyright (C) 2008 David F. Lively
*
@@ -148,10 +148,12 @@ static int gather_pci_cap(LibHalContext *ctx, const char *udi,
(void)virStrToLong_ui(p+1, &p, 16, &d->pci_dev.function);
}
- if (!pciGetPhysicalFunction(sysfs_path, &d->pci_dev.physical_function))
+ if (!virPCIGetPhysicalFunction(sysfs_path,
+ &d->pci_dev.physical_function))
d->pci_dev.flags |= VIR_NODE_DEV_CAP_FLAG_PCI_PHYSICAL_FUNCTION;
- if (!pciGetVirtualFunctions(sysfs_path, &d->pci_dev.virtual_functions,
+ if (!virPCIGetVirtualFunctions(sysfs_path,
+ &d->pci_dev.virtual_functions,
&d->pci_dev.num_virtual_functions) ||
d->pci_dev.num_virtual_functions > 0)
d->pci_dev.flags |= VIR_NODE_DEV_CAP_FLAG_PCI_VIRTUAL_FUNCTION;
--
1.7.1
12 years, 2 months
[libvirt] virsh nodeinfo CPU detection questions
by Scott Sullivan
I have a machine with four AMD Opteron(TM) 6272 processors:
http://www.amd.com/us/products/server/processors/6000-series-platform/620...
I use 'virsh nodeinfo' to determine the amount of physical CPUs, and CPU
cores. What values should I be looking at in the output of nodeinfo to
determine this? With 1.X libvirts the output values have changed from 0.9.4:
0.9.4:
[root@host ~]# virsh nodeinfo
CPU model: x86_64
CPU(s): 64
CPU frequency: 2099 MHz
CPU socket(s): 4
Core(s) per socket: 8
Thread(s) per core: 2
NUMA cell(s): 1
Memory size: 24713980 kB
[root@host28 ~]#
1.0.1:
[root@host ~]# virsh nodeinfo
CPU model: x86_64
CPU(s): 64
CPU frequency: 2099 MHz
CPU socket(s): 1
Core(s) per socket: 8
Thread(s) per core: 2
NUMA cell(s): 4
Memory size: 24713980 KiB
[root@host28 ~]#
As you can see, the CPU socket and NUMA cells values have changed in
these two versions, on the same machine. To get the physical CPU count,
is it safe to assume this?
Numa cell(s) X CPU Socket(s) == physical CPUs present
However, I am not positive what formula I should use to determine the
CPU core count. On this processor, it has 16 cores. Would that mean I
can do this?
Core(s) per socket X Thread(s) per core: == CPU cores
Thanks in advance for clarifying.
12 years, 3 months