From nobody Wed Nov 5 13:00:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=virtuozzo.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1534440782770120.34981308712827; Thu, 16 Aug 2018 10:33:02 -0700 (PDT) Received: from localhost ([::1]:57390 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fqM8n-0000ed-QF for importer@patchew.org; Thu, 16 Aug 2018 13:32:57 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44743) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fqLx2-0007JX-IO for qemu-devel@nongnu.org; Thu, 16 Aug 2018 13:20:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fqLx1-0001bb-Ps for qemu-devel@nongnu.org; Thu, 16 Aug 2018 13:20:48 -0400 Received: from mail-am5eur02on0701.outbound.protection.outlook.com ([2a01:111:f400:fe07::701]:23936 helo=EUR02-AM5-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fqLx1-0001b5-G8; Thu, 16 Aug 2018 13:20:47 -0400 Received: from vova-pc.sw.ru (185.231.240.5) by AM4PR08MB2913.eurprd08.prod.outlook.com (2603:10a6:205:e::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1038.25; Thu, 16 Aug 2018 17:20:42 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=z5ePMYrHa0vfqAiDcD/+OAzxywEv80NjSI8E1v5eeRI=; b=bYyPt9sJa93sn7IvScVNns13eY5/zL/9A5hVve3ycDolhk7+C5N4pv/5clWKS3vUdEy4LUz2IjAmPkbknpsF7EpJ/r/fnzGe4oY6LRK2gdLGysIffXswZiW8ZmI3+Jkwy/2bf+86ungj7olIkGcKWoIWPKI1SUSKeQDZZbaIXBc= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=vsementsov@virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org, qemu-block@nongnu.org Date: Thu, 16 Aug 2018 20:20:26 +0300 Message-Id: <1534440027-10528-4-git-send-email-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1534440027-10528-1-git-send-email-vsementsov@virtuozzo.com> References: <1534440027-10528-1-git-send-email-vsementsov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [185.231.240.5] X-ClientProxiedBy: DB6PR0202CA0005.eurprd02.prod.outlook.com (2603:10a6:4:29::15) To AM4PR08MB2913.eurprd08.prod.outlook.com (2603:10a6:205:e::26) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9a6f8954-1426-40ba-d756-08d6039c9a00 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:AM4PR08MB2913; X-Microsoft-Exchange-Diagnostics: 1; AM4PR08MB2913; 3:mB3X7LXs5/JS2Xzr36FkRMXN9TeFVOmT7CBjPjv8vXK7Mt7LghTg84jqxzbUOor1D7fttVOQfNqDNolZA/tVItl+LHcVY4GvoBd9dXpfwUJArpWjAmSVoABuM9lyk3ocqjbbqTxQU1AeLGY0cfDfVaFw18Cgh+xv0Ogr4Y3Jk0hMgIo6k3fu1kNkFVz0o+QmYbkzuyXc9Wvs2Y47OHtJvK4KmK6wcYN7AiU8uAcGALDjPdi5sshdbEZKGkhQWXjv; 25:HEqrHGOI4bypCdZjnkV5Izj1EvkKhXKc3mTopR8qSntFvR7Gye2RIkNMgzwpWIOlZMFm4WudqGhaFd6TZLqC0V+1qatc/lQwhdKyaHo5LIRMqXtQ3lQgweW2cpNt/YMVFU6Cs1w1RI/v1Cmx8634dteyWkvFo48CznAECP3ppywTY6dhC5e1+fSU3F8/nyO3LluOMpgNJIxb5ssb4Y+JpEklny1OqJpQNJ5ccdgPD4LlM76DQ6ixrg+se/vxyAf3SvAQwGgbH2K+I0qSs5+oaFjXTnP02LaqZibPYuuIdr6525soefRvERuxd+Pt7BepOASUVSgMGLOXbWNkjR1NTQ==; 31:w+iq8/0Wh8XQw3i5HPuBnKOMZen51jZ9oiStghlXT9HuyW5STX49/nqtaJbLZmm0Cnbd+MckmSVagr8es9+IyP6kab/rNl1+40tw6R1vXAI+esdjOMkhXembndb4gkxhN9QoYpXVssqggV6Wbpj7QXSq1YYukinprSb6mzhtOxwhy1hImmPZsYofEAjjKlaRPBwsWD1JV2ZG8N4D9whPugGK1VUR4K9SndHolcKkgqQ= X-MS-TrafficTypeDiagnostic: AM4PR08MB2913: X-Microsoft-Exchange-Diagnostics: 1; AM4PR08MB2913; 20:CgR1hIR4PUvEShHbxqWw7zfDMkyMOAUN83MIwvl8vcrTEKLD+qTPSRNWUGWnlH2SpGzNp80bZMehImQ+a+7VXt4/Z++tCYLZ/Es6YaROWI8zm5jVdUqi4yP8a6M1jVaEjP63tAzaxl2MzXt7sLnaAIFVKCTXh3pU1lsXDbtXcjQpVwCGuh5RkwPyER5ZLnp/qwYC+I8LEMYq2xS5jhJin2nhBrUaLe+1NhIg2kWGUNIcnZIyfuOSvZElz92rC3UUZGDzVAuoBYbCXxuYAAvkX/WPyHbvt3KjYSXqZS2glLAea8lOgsXgOP0nyOIjvyKX4XkHU1ZK9nwekCtXbBPEO4rl4+v8T0crb21jZYddjj41dJreTud6S2drCwiHBggsioe1VmqjK5z8cWoBclItvAMvJagP94JN5lsGkxa6V1zMHbvlla8se1RE2ym1kN5QsoyGyUuvFVXZLsHf7l/ApwTrECIk4KfLMAtx8t20soW8Lw3TeYlfz5se/RBGNr/r; 4:t5XQ1PafXl2ffZtmBABcfp1l3eKgxTfkq4GZHXZooQNo719VgjO7SDN2DdLzm+afku+oZte+3Rhk8qDkWc2eEwqYo77GI8C/SpxjJXxCeKWUprkpQlYbtJR/ti1mdifko4tExnlQtw+HNOTQ/TQpsSX4BLa3C2MZNFZmooZsTj9VqzT1IAzdPr59b2bZgdBCzoK4dLC0mDRtcV1DzAcl3E0/KO/OmJKUACDGUh7Xj2Ob2UXmmWg4Yg9Y0ubWlgYHMhRnyYpFvpFcR9Hsu+kh76G3WXIMYV+CXKf+O9U0ir1tnuZ27Zo3O1VFv8WKmCKI X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(21532816269658); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(8121501046)(5005006)(3231311)(944501410)(52105095)(10201501046)(93006095)(93001095)(3002001)(149027)(150027)(6041310)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123562045)(201708071742011)(7699016); SRVR:AM4PR08MB2913; BCL:0; PCL:0; RULEID:; SRVR:AM4PR08MB2913; X-Forefront-PRVS: 07665BE9D1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(366004)(39850400004)(396003)(136003)(376002)(346002)(189003)(199004)(50226002)(16586007)(386003)(6506007)(36756003)(186003)(316002)(4326008)(53416004)(26005)(16526019)(8936002)(52116002)(446003)(69596002)(11346002)(2616005)(47776003)(25786009)(76176011)(476003)(66066001)(486006)(51416003)(956004)(68736007)(6512007)(8676002)(105586002)(81166006)(86362001)(2906002)(5660300001)(6666003)(7416002)(106356001)(305945005)(7736002)(3846002)(6116002)(478600001)(50466002)(97736004)(48376002)(81156014)(6486002)(53936002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:AM4PR08MB2913; H:vova-pc.sw.ru; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: None (protection.outlook.com: virtuozzo.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM4PR08MB2913; 23:rm4ode+si92Rg6vnVnGWB+Y4xI6X9X8zQQMtWDwOl?= =?us-ascii?Q?wbzwadeWhUovEPFhld7ocdEtSaCcEFhnQGEjheEOYy8yeiGD7kWrdbchfN2m?= =?us-ascii?Q?TvbB99Mzdq4TZTYSlVYWAL3epk7hHLpvST3j7Ftafh58oJAGEdu6Bx5g9iGj?= =?us-ascii?Q?51+l3Y8hrUe/nCCD4RApe3J6Hv00QpSIuZMuYt4CAqWL4i//vpMz/PLpbkQ/?= =?us-ascii?Q?7K9dytlUv0o45PGPutgo36muokWCgN3d38NA+dgXtZxnDRKymxo7Cc8ig5Z3?= =?us-ascii?Q?mUCejCHsoFPPR3r+pf2IAcg17PtWvk1k/GbpVDG5uzWoOBA+e5BGUeXKm+oT?= =?us-ascii?Q?+mX3K7kIjt6Le7QEfvr62rxZ2H/aFGo7u/xR2kR3H2KvxJ69UX2tgpM/pq7K?= =?us-ascii?Q?OuQzI7pDU93W2CU8BaHO5VvLgJLACG4yvN0MvCrhjvwgsMMQen+s0kmbrhv0?= =?us-ascii?Q?V0QMU1hC+YoMLVQ8nSx2bYdY/mxQHlUuI4r9n1bQrGCDyFFA4fs5cVGyieht?= =?us-ascii?Q?v9sbqG5y4+VvE+iaabhDvhNajmtQXKvXRzZBH/Ymy5EAkggMI0ghi2W/CtgA?= =?us-ascii?Q?3HohY+JVDL75nISctd00+7RoLeK8Wfsqi47Hub0SOXa3G1KX6p5bw6o1SJGX?= =?us-ascii?Q?/A2P1mw1PIvqKHHjIcPvGiOUKMU1ni2+lXiYQdBUZ8lO20YxqQrUPhn3PsM9?= =?us-ascii?Q?Z3PL76fv8cujcutXtdxPlIJ60hWTzGFAm9ewhglidWnptH6/d6GggRd7eTXr?= =?us-ascii?Q?RRmCCqMxTh6pOim0dNWKQ3ojJqoXznDOGN/gADruj43fWDCRflDEqW0jwLMv?= =?us-ascii?Q?ml6qQ76rO8dalYNcPKZ0PnvF+Wz2zJce0uQ7No6M++7Yu8Cb46ldLSqcpGmG?= =?us-ascii?Q?38MBFlORmw9FRjm1/s5czoKX7wBp7Yp0H5gR4kv7SBef9ZcdCJCCNYhzE9fI?= =?us-ascii?Q?FYnPWPFgI1NBZd2dj5xyzARZpDqXejlIu+UzzglyzSDpQ9rNBM3Vahit/WU9?= =?us-ascii?Q?3OjDpjhuqy/ygLUwzkXUZfBWiriJ72ujGuG9HM3QZpkGKuOyq32K/BOZqrJJ?= =?us-ascii?Q?3+BifP78CFjjGMOog3wzflIZGWibWoWNQwdNRhv5zRBYJLvZ+6tdGogdBo3i?= =?us-ascii?Q?l2J/3th1qAIXyKWz1lfioRT7yTg4/loFOrO2g096zg9BHG1tyW8gGcfqWmNc?= =?us-ascii?Q?rb05e0IuYvXaX6N1Tlsr4FWQmif/JZkQy6+PVZUpkdLi10xYsH9LVE2WA=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Antispam-Message-Info: 30P+0AZT/V2Z9E7DtBboEWoHrIBEKaFvwdIIKUgMcVBcFTLSEs/JYDlHmiRwHGZJ0AX9c+UFTOEAgYvcJfJByYrrYy7xbiiOVtJ9QpPyHtpsgCghJfLdrdHhsyMu54RzAobBpYy6abNHPcrd4hoUgLs/rWvWU43+lXGjXhRzvzkOcJ9yWXlEcQPNAmNxBgyobBSL0WK7D2/uCN0wr2YfQzvyQmIS1tw22SFixg5IR+Y7hLD3J0oE7ivL2ZgBARvCwE+5CHF1YqXbS4OaGh/p05kIzPFC9tdbS6bRRPU8tqnb1YpefDwxVYIk/p2JtL0zgaENW74h9Q51tiYfh3XhJDy8P08bRc483SPvluSAaMA= X-Microsoft-Exchange-Diagnostics: 1; AM4PR08MB2913; 6:HcTCHoR/TWJIX+w9fR4nXOqLzWYvUkzNfmlqcud7Y2AnyzeSM8fxbHlKQdnbOc2CZLj6cYShdCizRBn9Rzr+QCMtCMk1f0niPtNumNnLk76Aq0tyjH74NeG+YsN4DDX1Epo8LXVFZ8oouQIoS9n2fT1duTOI9BA1//Ypw1IaBGEIpAO7wG698t/Z9iCvZ7k6SKZobBqd0wbjRnKVSLBW9ueoBR9+hq4YMSTG9u2wNvPicOWtUAADMvLbpam5hx7zBYZXbQ1vozx8tbAT1IlCNpfTxmWuNRnhaUXrnS1bkH8FPRQDaWM/MhqZpWkAkzsEmWp2zFYpSH2ariIoyr9/8nBW+Kp4jBKZdGqoPrTbIn+Um64U4/qgZnuy+jsH8osgeZO4bXIa3MDsa4KRA3Sje3BRIrCltcx3khqTfCQ3/eIjMCFC59yvzpilY8SoG7xsdheG95Dodf0LIAsc6fgppg==; 5:C7lYVP7ZWDjhDPl5q04hUJKOC7qfaNL1o7JgCOTlp9RHOLC/a9kEP0S5IBYzgGpGqYUxll00mVz4EZcsK4CjJdNhgwbL2diuIFnCmQBC4bhMzY5SAaYHr3UayQZfFpi1m+RDyxY1D+F5t1gwPjG+J3J5duiJaSiP6Hk6+nzn+IE=; 7:vs5iVXR2ALxrYFpSYfb3PLiSBVyt3XmLZ0hZfgCkA2R/Fm/gsrE3HVrflNoUfQnPZaFVLHuit4bk6LGiz/cyFHLGA3uwod375gksj/xgTBVJR4z9Lv9zmH0ZDBEG/APTqlc9+KAb4ubB4eHJCVAVPUSunlyfEM07OO5kA1oac7F/SIA+K1mkI2ZfJi6b3TMg8p7Q+qWX8Tnbc5nvM8dwbHeMlyXB0NM+EUFCc6ccqBmYYRXssisCFZA2kwyYqIvB SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; AM4PR08MB2913; 20:gxWuF39z64okXwQOUbh6XnwtRJcLNIJcuGqepivBgLtoxuNWR4Co6QiDESq4nPgS68BD/y8k8LbrsJc6ajKcX7VwafbrnbMlDY1G8EUfZ/Y/riqKL8bhLCVXo/HCcQRdMOML+uu5ilJqmjk9p5rEkw6AHy0ZP1fIQd1/yD/6Wj0= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Aug 2018 17:20:42.9281 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9a6f8954-1426-40ba-d756-08d6039c9a00 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR08MB2913 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 2a01:111:f400:fe07::701 Subject: [Qemu-devel] [PATCH 3/4] scripts/qemu: add render_block_graph method for QEMUMachine X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, vsementsov@virtuozzo.com, famz@redhat.com, ehabkost@redhat.com, jsnow@redhat.com, armbru@redhat.com, mreitz@redhat.com, pbonzini@redhat.com, stefanha@redhat.com, crosa@redhat.com, den@openvz.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDMRC_1 RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Render block nodes graph with help of graphviz Signed-off-by: Vladimir Sementsov-Ogievskiy --- scripts/qemu.py | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/scripts/qemu.py b/scripts/qemu.py index f099ce7278..cff562c713 100644 --- a/scripts/qemu.py +++ b/scripts/qemu.py @@ -460,3 +460,56 @@ class QEMUMachine(object): socket.SOCK_STREAM) self._console_socket.connect(self._console_address) return self._console_socket + + def render_block_graph(self, filename): + ''' + Render graph in text (dot) representation into "filename" and grap= hical + representation into pdf file "filename".pdf + ''' + + try: + from graphviz import Digraph + except ImportError: + print "Can't import graphviz. Please run 'pip install graphviz= '" + return + + nodes =3D self.qmp('query-named-block-nodes')['return'] + edges =3D self.qmp('x-query-block-nodes-relations')['return'] + node_names =3D [] + + graph =3D Digraph(comment=3D'Block Nodes Graph') + graph.node('permission symbols:\l' + ' w - Write\l' + ' r - consistent-Read\l' + ' u - write - Unchanged\l' + ' g - Graph-mod\l' + ' s - reSize\l' + 'edge label scheme:\l' + ' \l' + ' \l' + ' \l', shape=3D'none') + + def perm(arr): + s =3D 'w' if 'write' in arr else '_' + s +=3D 'r' if 'consistent-read' in arr else '_' + s +=3D 'u' if 'write-unchanged' in arr else '_' + s +=3D 'g' if 'graph-mod' in arr else '_' + s +=3D 's' if 'resize' in arr else '_' + return s + + for n in nodes: + node_names.append(n['node-name']) + label =3D n['node-name'] + ' [' + n['drv'] + ']' + if n['drv'] =3D=3D 'file': + label =3D '<%s
%s>' % (label, os.path.basename(n['file= '])) + graph.node(n['node-name'], label) + + for r in edges: + if r['parent'] not in node_names: + graph.node(r['parent'], shape=3D'box') + + label =3D '%s\l%s\l%s\l' % (r['name'], perm(r['perm']), + perm(r['shared-perm'])) + graph.edge(r['parent'], r['child'], label=3Dlabel) + + graph.render(filename) --=20 2.11.1