
On Tue, Oct 04, 2016 at 12:37:31AM +0300, Nir Soffer wrote:
Hi all,
Adam mentioned this tool, finding dead code: https://pypi.python.org/pypi/vulture
Running on vdsm show lot of unused code. On first look, it has not of false
Cool. I suppose you ment "has not" -> "has lots"
positives but I'm sure we can find lot of useful info in the report.
See example run bellow.
Let https://gerrit.ovirt.org/#/c/65097/ be the first cleanup patch
Nir
----
$ sudo pip install vulture $ vulture vdsm lib client | sort client/vdsClient.py:160: Unused attribute 'whitespace' client/vdsClient.py:161: Unused attribute 'whitespace_split' client/vdsClient.py:1787: Unused function '__pool_status' client/vdsClient.py:504: Unused function 'do_newDisk' lib/api/schema_to_html.py:338: Unused function 'verify_symbols' lib/api/schema_to_html.py:37: Unused variable 'typeKinds' lib/api/vdsmapi.py:163: Unused function 'get_type' lib/vdsm/cmdutils.py:72: Unused class 'Accounting' lib/vdsm/cmdutils.py:73: Unused variable 'CPU' lib/vdsm/cmdutils.py:75: Unused variable 'BlockIO' lib/vdsm/commands.py:136: Unused function 'seekable' lib/vdsm/commands.py:139: Unused function 'readable' lib/vdsm/commands.py:170: Unused function 'readinto' lib/vdsm/common/eventfd.py:41: Unused variable 'EFD_SEMAPHORE' lib/vdsm/common/eventfd.py:42: Unused variable 'EFD_CLOEXEC' lib/vdsm/common/eventfd.py:43: Unused variable 'EFD_NONBLOCK' lib/vdsm/common/sigutils.py:70: Unused function 'wait_for_signal' lib/vdsm/common/zombiereaper.py:62: Unused function 'registerSignalHandler' lib/vdsm/common/zombiereaper.py:72: Unused function 'unregisterSignalHandler' lib/vdsm/concurrent.py:33: Unused class 'Barrier' lib/vdsm/constants.py:105: Unused variable 'EXT_CP' lib/vdsm/constants.py:26: Unused variable 'GLUSTER_MGMT_ENABLED' lib/vdsm/constants.py:46: Unused variable 'OVIRT_VMCONSOLE_USER' lib/vdsm/constants.py:84: Unused variable 'P_VDSM_CONF' lib/vdsm/gluster/exception.py:122: Unused class 'GlusterVolumeNameErrorException' lib/vdsm/gluster/exception.py:127: Unused class 'GlusterBrickNameErrorException' lib/vdsm/gluster/exception.py:132: Unused class 'GlusterVolumeAlreadyExistException' lib/vdsm/gluster/exception.py:137: Unused class 'GlusterBrickCreationFailedException' lib/vdsm/gluster/exception.py:142: Unused class 'GlusterInvalidTransportException' lib/vdsm/gluster/exception.py:147: Unused class 'GlusterPeerNotFriendException' lib/vdsm/gluster/exception.py:152: Unused class 'GlusterInvalidStripeCountException' lib/vdsm/gluster/exception.py:157: Unused class 'GlusterInvalidReplicaCountException' lib/vdsm/gluster/exception.py:162: Unused class 'GlusterInsufficientBrickException' lib/vdsm/gluster/exception.py:167: Unused class 'GlusterBrickInUseException' lib/vdsm/gluster/exception.py:177: Unused class 'GlusterVolumeNotFoundException' lib/vdsm/gluster/exception.py:182: Unused class 'GlusterVolumeAlreadyStartedException' lib/vdsm/gluster/exception.py:192: Unused class 'GlusterVolumeAlreadyStoppedException' lib/vdsm/gluster/exception.py:207: Unused class 'GlusterVolumeInvalidOptionException' lib/vdsm/gluster/exception.py:212: Unused class 'GlusterVolumeInvalidOptionValueException' lib/vdsm/gluster/exception.py:222: Unused class 'GlusterBrickNotFoundException' lib/vdsm/gluster/exception.py:227: Unused class 'GlusterVolumeRebalanceUnknownTypeException' lib/vdsm/gluster/exception.py:232: Unused class 'GlusterVolumeRebalanceAlreadyStartedException' lib/vdsm/gluster/exception.py:242: Unused class 'GlusterVolumeRebalanceAlreadyStoppedException' lib/vdsm/gluster/exception.py:344: Unused class 'GlusterHostInvalidNameException' lib/vdsm/gluster/exception.py:349: Unused class 'GlusterHostAlreadyAddedException' lib/vdsm/gluster/exception.py:364: Unused class 'GlusterHostInUseException' lib/vdsm/gluster/exception.py:400: Unused class 'GlusterHostStorageDeviceMountFailedException' lib/vdsm/gluster/exception.py:538: Unused class 'GlusterHookReadFailedException' lib/vdsm/gluster/exception.py:77: Unused class 'GlusterPermissionDeniedException' lib/vdsm/gluster/exception.py:82: Unused class 'GlusterSyntaxErrorException' lib/vdsm/hooks.py:343: Unused function 'before_vdsm_start' lib/vdsm/hooks.py:347: Unused function 'after_vdsm_stop' lib/vdsm/hostdev.py:186: Unused function '_process_pci_address' lib/vdsm/hostdev.py:191: Unused function '_process_scsi_address' lib/vdsm/hostdev.py:196: Unused function '_process_usb_address' lib/vdsm/hostdev.py:201: Unused function '_process_assignability' lib/vdsm/hostdev.py:218: Unused function '_process_udev_path' lib/vdsm/hostdev.py:228: Unused function '_process_driver' lib/vdsm/hostdev.py:239: Unused function '_process_storage' lib/vdsm/hostdev.py:249: Unused function '_process_vfs' lib/vdsm/hostdev.py:260: Unused function '_process_iommu' lib/vdsm/hostdev.py:268: Unused function '_process_physfn' lib/vdsm/hostdev.py:277: Unused function '_process_productinfo' lib/vdsm/hostdev.py:292: Unused function '_process_parent' lib/vdsm/hostdev.py:302: Unused function '_process_scsi_device_params' lib/vdsm/hostdev.py:61: Unused variable 'CARDBUS_BRIDGE' lib/vdsm/jobs.py:271: Unused function '_clear' lib/vdsm/jsonrpcvdscli.py:133: Unused function 'set_default_timeout' lib/vdsm/kaxmlrpclib.py:116: Unused variable 'SslServerProxy' lib/vdsm/kaxmlrpclib.py:122: Unused attribute '_extra_headers' lib/vdsm/libvirtconnection.py:70: Unused function 'start_event_loop' lib/vdsm/libvirtconnection.py:74: Unused function 'stop_event_loop' lib/vdsm/libvirtconnection.py:86: Unused variable 'user_data' lib/vdsm/logUtils.py:113: Unused function 'process' lib/vdsm/logUtils.py:117: Unused class 'TracebackRepeatFilter' lib/vdsm/logUtils.py:137: Unused class 'QueueHandler' lib/vdsm/logUtils.py:189: Unused class 'UserGroupEnforcingHandler' lib/vdsm/m2cutils.py:99: Unused class 'SSLServerSocket' lib/vdsm/network/configurators/ifcfg.py:500: Unused function 'restorePersistentBackup' lib/vdsm/network/configurators/ifcfg.py:75: Unused function 'is_available' lib/vdsm/network/configurators/pyroute_two.py:126: Unused function 'removeBridgePort' lib/vdsm/network/configurators/pyroute_two.py:34: Unused variable 'ie' lib/vdsm/network/errors.py:22: Unused variable 'ERR_OK' lib/vdsm/network/ipwrapper.py:42: Unused variable 'NET_SYSFS' lib/vdsm/network/ipwrapper.py:519: Unused function 'routeExists' lib/vdsm/network/ipwrapper.py:541: Unused function 'ruleExists' lib/vdsm/network/ipwrapper.py:588: Unused function 'netns_add' lib/vdsm/network/ipwrapper.py:592: Unused function 'netns_delete' lib/vdsm/network/ipwrapper.py:596: Unused function 'netns_exec' lib/vdsm/network/ipwrapper.py:604: Unused function 'link_set_netns' lib/vdsm/network/link/bond.py:130: Unused attribute '_init_options' lib/vdsm/network/link/bond.py:64: Unused function 'set_options' lib/vdsm/network/link/iface.py:30: Unused variable 'STATE_DOWN' lib/vdsm/network/link/iface.py:61: Unused function 'is_oper_up' lib/vdsm/network/link/iface.py:65: Unused function 'is_promisc' lib/vdsm/network/netconfpersistence.py:110: Unused function 'as_unicode' lib/vdsm/network/netinfo/addresses.py:119: Unused function 'is_ipv4' lib/vdsm/network/netinfo/addresses.py:123: Unused function 'is_ipv6' lib/vdsm/network/netinfo/addresses.py:127: Unused function 'is_dynamic' lib/vdsm/network/netinfo/nics.py:29: Unused variable 'OPERSTATE_UNKNOWN' lib/vdsm/network/netinfo/nics.py:30: Unused variable 'OPERSTATE_DOWN' lib/vdsm/network/netlink/link.py:33: Unused variable 'IFF_BROADCAST' lib/vdsm/network/netlink/link.py:34: Unused variable 'IFF_DEBUG' lib/vdsm/network/netlink/link.py:35: Unused variable 'IFF_LOOPBACK' lib/vdsm/network/netlink/link.py:36: Unused variable 'IFF_POINTOPOINT' lib/vdsm/network/netlink/link.py:37: Unused variable 'IFF_NOTRAILERS' lib/vdsm/network/netlink/link.py:39: Unused variable 'IFF_NOARP' lib/vdsm/network/netlink/link.py:41: Unused variable 'IFF_ALLMULTI' lib/vdsm/network/netlink/link.py:42: Unused variable 'IFF_MASTER' lib/vdsm/network/netlink/link.py:43: Unused variable 'IFF_SLAVE' lib/vdsm/network/netlink/link.py:44: Unused variable 'IFF_MULTICAST' lib/vdsm/network/netlink/link.py:45: Unused variable 'IFF_PORTSEL' lib/vdsm/network/netlink/link.py:46: Unused variable 'IFF_AUTOMEDIA' lib/vdsm/network/netlink/link.py:47: Unused variable 'IFF_DYNAMIC' lib/vdsm/network/netlink/link.py:48: Unused variable 'IFF_LOWER_UP' lib/vdsm/network/netlink/link.py:49: Unused variable 'IFF_DORMANT' lib/vdsm/network/netlink/link.py:50: Unused variable 'IFF_ECHO' lib/vdsm/network/netlink/monitor.py:94: Unused attribute '_time_start' lib/vdsm/network/ovs/driver/__init__.py:103: Unused function 'detach_bond_slave' lib/vdsm/network/ovs/driver/__init__.py:115: Unused function 'list_ports' lib/vdsm/network/ovs/driver/__init__.py:119: Unused function 'do_nothing' lib/vdsm/network/ovs/driver/__init__.py:52: Unused variable 'ex_val' lib/vdsm/network/ovs/driver/__init__.py:83: Unused function 'list_br' lib/vdsm/network/ovs/driver/__init__.py:87: Unused function 'add_vlan' lib/vdsm/network/ovs/driver/__init__.py:91: Unused function 'del_vlan' lib/vdsm/network/ovs/driver/__init__.py:95: Unused function 'add_bond' lib/vdsm/network/ovs/driver/__init__.py:99: Unused function 'attach_bond_slave' lib/vdsm/network/ovs/info.py:75: Unused attribute '_ifaces_uuids' lib/vdsm/network/ovs/info.py:76: Unused attribute '_ifaces_macs' lib/vdsm/network/ovs/validator.py:125: Unused function '_nets_with_bond' lib/vdsm/network/sourceroutethread.py:66: Unused function 'process_IN_CLOSE_WRITE' lib/vdsm/profiling/cpu.py:71: Unused function 'profile' lib/vdsm/properties.py:100: Unused variable 'objtype' lib/vdsm/properties.py:151: Unused class 'String' lib/vdsm/properties.py:201: Unused class 'Boolean' lib/vdsm/properties.py:231: Unused function 'decode_base64' lib/vdsm/protocoldetector.py:214: Unused class '_CannotDetectProtocol' lib/vdsm/protocoldetector.py:218: Unused class '_Stopped' lib/vdsm/pthread.py:79: Unused function 'getname' lib/vdsm/qemuimg.py:43: Unused variable 'QCOW' lib/vdsm/qemuimg.py:44: Unused variable 'QED' lib/vdsm/qemuimg.py:46: Unused variable 'VMDK' lib/vdsm/rpc/bindingxmlrpc.py:125: Unused function 'do_GET' lib/vdsm/rpc/bindingxmlrpc.py:165: Unused function 'do_PUT' lib/vdsm/rpc/bindingxmlrpc.py:881: Unused variable 'recoveryMode' lib/vdsm/rpc/Bridge.py:437: Unused variable 'typefixups' lib/vdsm/schedule.py:69: Unused class 'Scheduler' lib/vdsm/sslutils.py:209: Unused function 'handle_write' lib/vdsm/storage/check.py:142: Unused function 'is_checking' lib/vdsm/storage/check.py:218: Unused attribute '_reader' lib/vdsm/storage/check.py:219: Unused attribute '_reaper' lib/vdsm/storage/clusterlock.py:238: Unused attribute '_sanlockfd' lib/vdsm/storage/constants.py:70: Unused variable 'VOL_ROLE' lib/vdsm/storage/constants.py:92: Unused variable 'LEASE_SHARED' lib/vdsm/storage/devicemapper.py:106: Unused function 'isDmDevice' lib/vdsm/storage/devicemapper.py:111: Unused function 'getAllSlaves' lib/vdsm/storage/devicemapper.py:123: Unused function '_removeMapping' lib/vdsm/storage/devicemapper.py:154: Unused function '_getPathsStatus' lib/vdsm/storage/exception.py:1036: Unused class 'StorageServerValidationError' lib/vdsm/storage/exception.py:1051: Unused class 'MultipathReloadError' lib/vdsm/storage/exception.py:1056: Unused class 'GetiSCSISessionListError' lib/vdsm/storage/exception.py:1061: Unused class 'AddiSCSIPortalError' lib/vdsm/storage/exception.py:1066: Unused class 'RemoveiSCSIPortalError' lib/vdsm/storage/exception.py:1071: Unused class 'RemoveiSCSINodeError' lib/vdsm/storage/exception.py:1076: Unused class 'AddiSCSINodeError' lib/vdsm/storage/exception.py:1081: Unused class 'SetiSCSIAuthError' lib/vdsm/storage/exception.py:1086: Unused class 'SetiSCSIUsernameError' lib/vdsm/storage/exception.py:1091: Unused class 'SetiSCSIPasswdError' lib/vdsm/storage/exception.py:1096: Unused class 'iSCSILoginError' lib/vdsm/storage/exception.py:1111: Unused class 'MultipathSetupError' lib/vdsm/storage/exception.py:1116: Unused class 'StorageTypeError' lib/vdsm/storage/exception.py:1139: Unused class 'MountTypeError' lib/vdsm/storage/exception.py:1144: Unused class 'MountParsingError' lib/vdsm/storage/exception.py:1149: Unused class 'InvalidIpAddress' lib/vdsm/storage/exception.py:1162: Unused class 'iSCSILogoutError' lib/vdsm/storage/exception.py:1185: Unused class 'StorageServerConnectionRefIdAlreadyInUse' lib/vdsm/storage/exception.py:1190: Unused class 'StorageServerConnectionRefIdDoesNotExist' lib/vdsm/storage/exception.py:1195: Unused class 'UnsupportedGlusterVolumeReplicaCountError' lib/vdsm/storage/exception.py:1244: Unused class 'VolumeGroupPermissionsError' lib/vdsm/storage/exception.py:1268: Unused class 'VolumeGroupAlreadyExistsError' lib/vdsm/storage/exception.py:1278: Unused class 'VolumeGroupRenameError' lib/vdsm/storage/exception.py:1293: Unused class 'VolumeGroupReadTagError' lib/vdsm/storage/exception.py:1298: Unused class 'VolumeGroupScanError' lib/vdsm/storage/exception.py:1303: Unused class 'GetVolumeGroupListError' lib/vdsm/storage/exception.py:1351: Unused class 'CannotAccessLogicalVolume' lib/vdsm/storage/exception.py:1364: Unused class 'LogicalVolumesListError' lib/vdsm/storage/exception.py:1374: Unused class 'LogicalVolumeScanError' lib/vdsm/storage/exception.py:1381: Unused class 'CannotActivateLogicalVolume' lib/vdsm/storage/exception.py:1386: Unused class 'LogicalVolumePermissionsError' lib/vdsm/storage/exception.py:1391: Unused class 'LogicalVolumeAddTagError' lib/vdsm/storage/exception.py:1396: Unused class 'LogicalVolumeRemoveTagError' lib/vdsm/storage/exception.py:1401: Unused class 'GetLogicalVolumeTagError' lib/vdsm/storage/exception.py:1406: Unused class 'GetLogicalVolumesByTagError' lib/vdsm/storage/exception.py:1411: Unused class 'GetAllLogicalVolumeTagsError' lib/vdsm/storage/exception.py:1416: Unused class 'GetLogicalVolumeDevError' lib/vdsm/storage/exception.py:1426: Unused class 'CannotWriteAccessLogialVolume' lib/vdsm/storage/exception.py:1440: Unused class 'LogicalVolumesScanError' lib/vdsm/storage/exception.py:1452: Unused class 'GetLogicalVolumeDataError' lib/vdsm/storage/exception.py:1472: Unused class 'LVMSetupError' lib/vdsm/storage/exception.py:1477: Unused class 'CouldNotRetrievePhysicalVolumeList' lib/vdsm/storage/exception.py:1482: Unused class 'LogicalVolumeAlreadyExists' lib/vdsm/storage/exception.py:1487: Unused class 'CouldNotRetrieveLogicalVolumesList' lib/vdsm/storage/exception.py:1499: Unused class 'PartitionedPhysDev' lib/vdsm/storage/exception.py:1521: Unused class 'LogicalVolumeCachingError' lib/vdsm/storage/exception.py:1576: Unused class 'SpmParamsMismatch' lib/vdsm/storage/exception.py:1607: Unused class 'DomainAlreadyLocked' lib/vdsm/storage/exception.py:1612: Unused class 'DomainLockDoesNotExist' lib/vdsm/storage/exception.py:1663: Unused class 'MetaDataKeyError' lib/vdsm/storage/exception.py:1714: Unused class 'ImportInfoError' lib/vdsm/storage/exception.py:1719: Unused class 'ImportUnknownType' lib/vdsm/storage/exception.py:1724: Unused class 'ExportError' lib/vdsm/storage/exception.py:1733: Unused class 'ResourceNamespaceNotEmpty' lib/vdsm/storage/exception.py:180: Unused class 'VolumeIsBusy' lib/vdsm/storage/exception.py:215: Unused class 'VolumeUnlinkError' lib/vdsm/storage/exception.py:220: Unused class 'OrphanVolumeError' lib/vdsm/storage/exception.py:274: Unused class 'CannotModifyVolumeTime' lib/vdsm/storage/exception.py:289: Unused class 'NonLeafVolumeNotWritable' lib/vdsm/storage/exception.py:294: Unused class 'VolumeCopyError' lib/vdsm/storage/exception.py:314: Unused class 'createVolumeSizeError' lib/vdsm/storage/exception.py:319: Unused class 'VolumeWasNotPreparedBeforeTeardown' lib/vdsm/storage/exception.py:348: Unused class 'ImagesActionError' lib/vdsm/storage/exception.py:373: Unused class 'ImageValidationError' lib/vdsm/storage/exception.py:392: Unused class 'ImageIsEmpty_deprecated_vdsm23' lib/vdsm/storage/exception.py:424: Unused class 'CouldNotValideTemplateOnTargetDomain' lib/vdsm/storage/exception.py:434: Unused class 'OverwriteImageError' lib/vdsm/storage/exception.py:489: Unused class 'StorageUpdateVmError' lib/vdsm/storage/exception.py:499: Unused class 'StoragePoolTooManyMasters' lib/vdsm/storage/exception.py:514: Unused class 'StoragePoolHasPotentialMaster' lib/vdsm/storage/exception.py:519: Unused class 'StoragePoolInternalError' lib/vdsm/storage/exception.py:524: Unused class 'ImageMissingFromVm' lib/vdsm/storage/exception.py:540: Unused class 'StoragePoolAlreadyExists' lib/vdsm/storage/exception.py:550: Unused class 'StoragePoolCheckError' lib/vdsm/storage/exception.py:565: Unused class 'ImageNotOnTargetDomain' lib/vdsm/storage/exception.py:594: Unused class 'StoragePoolHigherVersionMasterFound' lib/vdsm/storage/exception.py:633: Unused class 'StorageDomainFormatError' lib/vdsm/storage/exception.py:645: Unused class 'StorageDomainAttachError' lib/vdsm/storage/exception.py:655: Unused class 'StorageDomainDetachError' lib/vdsm/storage/exception.py:660: Unused class 'StorageDomainDeactivateError' lib/vdsm/storage/exception.py:670: Unused class 'StorageDomainActivateError' lib/vdsm/storage/exception.py:690: Unused class 'StorageDomainMetadataFileMissing' lib/vdsm/storage/exception.py:733: Unused class 'StorageDomainMasterCopyError' lib/vdsm/storage/exception.py:770: Unused class 'StorageDomainCheckError' lib/vdsm/storage/exception.py:793: Unused class 'StorageDomainStateTransitionIllegal' lib/vdsm/storage/exception.py:800: Unused class 'StorageDomainActive' lib/vdsm/storage/exception.py:815: Unused class 'StorageDomainInsufficientPermissions' lib/vdsm/storage/exception.py:835: Unused class 'TooManyPVsInVG' lib/vdsm/storage/exception.py:855: Unused class 'StorageDomainRefreshError' lib/vdsm/storage/exception.py:911: Unused class 'InvalidTask' lib/vdsm/storage/exception.py:921: Unused class 'TaskClearError' lib/vdsm/storage/exception.py:931: Unused class 'InvalidTaskType' lib/vdsm/storage/exception.py:941: Unused class 'TaskInProgress' lib/vdsm/storage/fileUtils.py:252: Unused function 'atomic_symlink' lib/vdsm/storage/guarded.py:109: Unused variable 'exc_tb' lib/vdsm/storage/guarded.py:109: Unused variable 'exc_val' lib/vdsm/storage/hba.py:67: Unused function '_rescan' lib/vdsm/storage/misc.py:345: Unused function 'parseHumanReadableSize' lib/vdsm/storage/misc.py:490: Unused function 'getfds' lib/vdsm/storage/misc.py:82: Unused function 'pidExists' lib/vdsm/storage/misc.py:95: Unused function 'getProcCtime' lib/vdsm/storage/mount.py:43: Unused variable 'VFS_NFS' lib/vdsm/storage/mount.py:44: Unused variable 'VFS_NFS4' lib/vdsm/taskset.py:28: Unused variable 'AUTOMATIC' lib/vdsm/taskset.py:88: Unused function 'pick_cpu' lib/vdsm/tool/configfile.py:164: Unused variable 'exec_val' lib/vdsm/tool/configfile.py:202: Unused function 'prependSection' lib/vdsm/tool/configfile.py:212: Unused function 'prefixLines' lib/vdsm/tool/configfile.py:220: Unused function 'unprefixLines' lib/vdsm/tool/configurator.py:184: Unused function 'validate_config' lib/vdsm/tool/configurator.py:209: Unused function 'remove_config' lib/vdsm/tool/configurators/libvirt.py:38: Unused variable 'requires' lib/vdsm/tool/dump_volume_chains.py:84: Unused function 'dump_chains' lib/vdsm/tool/__init__.py:29: Unused attribute '_vdsm_tool' lib/vdsm/tool/network.py:26: Unused function 'retore_nets_init' lib/vdsm/tool/register.py:175: Unused attribute 'propagate' lib/vdsm/tool/restore_nets.py:29: Unused function 'restore_command' lib/vdsm/tool/service.py:363: Unused function 'service_start_command' lib/vdsm/tool/service.py:364: Unused variable 'cmdName' lib/vdsm/tool/service.py:381: Unused function 'service_stop_command' lib/vdsm/tool/service.py:399: Unused function 'service_status_command' lib/vdsm/tool/service.py:422: Unused function 'service_restart_command' lib/vdsm/tool/service.py:440: Unused function 'service_reload_command' lib/vdsm/tool/service.py:458: Unused function 'service_disable_command' lib/vdsm/tool/service.py:476: Unused function 'service_is_managed_command' lib/vdsm/tool/transient.py:42: Unused function 'setup_transient_repository' lib/vdsm/tool/transient.py:64: Unused function 'cleanup_transient_repository' lib/vdsm/tool/unified_persistence.py:198: Unused function 'unified_persistence' lib/vdsm/tool/vdsm-id.py:26: Unused function 'getUUID' lib/vdsm/utils.py:115: Unused function 'rmTree' lib/vdsm/utils.py:412: Unused function 'listSplit' lib/vdsm/utils.py:719: Unused function 'prependDefer' lib/vdsm/utils.py:73: Unused variable 'BEST_EFFORT' lib/vdsm/v2v.py:735: Unused variable 'TERM_DELAY' lib/vdsm/virt/guestagent.py:497: Unused function 'setNumberOfCPUs' lib/vdsm/virt/sampling.py:103: Unused attribute 'duplex' lib/vdsm/virt/sampling.py:358: Unused function 'is_empty' lib/vdsm/virt/utils.py:174: Unused property 'bound' lib/vdsm/virt/utils.py:208: Unused function 'is_kvm' lib/vdsm/virt/vmstats.py:267: Unused variable 'start_index' lib/vdsm/virt/vmstats.py:267: Unused variable 'start_sample' lib/vdsm/xmlrpc.py:37: Unused variable 'protocol_version' lib/yajsonrpc/betterAsyncore.py:150: Unused function 'log_info' lib/yajsonrpc/betterAsyncore.py:54: Unused function 'handle_expt' lib/yajsonrpc/__init__.py:451: Unused function 'registerEventCallback' lib/yajsonrpc/__init__.py:454: Unused function 'unregisterEventCallback' lib/yajsonrpc/stomp.py:427: Unused function '_milis' lib/yajsonrpc/stomp.py:467: Unused function 'getLastError' lib/yajsonrpc/stomp.py:565: Unused attribute '_ack' lib/yajsonrpc/stomp.py:568: Unused attribute '_valid' lib/yajsonrpc/stomp.py:62: Unused variable 'CONTENT_LENGTH' vdsm/API.py:1035: Unused variable 'NFS' vdsm/API.py:1036: Unused variable 'FCP' vdsm/API.py:1037: Unused variable 'ISCSI' vdsm/API.py:1038: Unused variable 'LOCALFS' vdsm/API.py:1039: Unused variable 'CIFS' vdsm/API.py:1040: Unused variable 'POSIXFS' vdsm/API.py:1042: Unused class 'Classes' vdsm/API.py:1044: Unused variable 'ISO' vdsm/API.py:1045: Unused variable 'BACKUP' vdsm/API.py:1187: Unused variable 'enableScsiFencing' vdsm/API.py:820: Unused variable 'PREALLOCATED' vdsm/API.py:821: Unused variable 'SPARSE' vdsm/API.py:825: Unused variable 'COW' vdsm/API.py:830: Unused variable 'LEAF' vdsm/API.py:862: Unused function 'verify_untrusted' vdsm/API.py:905: Unused class 'DiskTypes' vdsm/API.py:907: Unused variable 'SYSTEM' vdsm/API.py:908: Unused variable 'DATA' vdsm/API.py:910: Unused variable 'SWAP' vdsm/API.py:911: Unused variable 'TEMP' vdsm/clientIF.py:102: Unused attribute 'lastRemoteAccess' vdsm/gluster/api.py:114: Unused function 'getGeoRepKeys' vdsm/gluster/api.py:124: Unused function 'updateGeoRepKeys' vdsm/gluster/api.py:175: Unused function 'createMountBrokerRoot' vdsm/gluster/api.py:190: Unused function 'mountMetaVolume' vdsm/gluster/api.py:237: Unused function 'snapshotScheduleDisable' vdsm/gluster/api.py:247: Unused function 'snapshotScheduleFlagUpdate' vdsm/gluster/api.py:510: Unused function 'volumeStatsInfoGet' vdsm/gluster/apiwrapper.py:104: Unused class 'GlusterTask' vdsm/gluster/apiwrapper.py:142: Unused function 'setOptionsList' vdsm/gluster/apiwrapper.py:148: Unused function 'addBrick' vdsm/gluster/apiwrapper.py:153: Unused function 'removeBrickStart' vdsm/gluster/apiwrapper.py:157: Unused function 'removeBrickStop' vdsm/gluster/apiwrapper.py:161: Unused function 'removeBrickStatus' vdsm/gluster/apiwrapper.py:165: Unused function 'removeBrickCommit' vdsm/gluster/apiwrapper.py:169: Unused function 'removeBrickForce' vdsm/gluster/apiwrapper.py:173: Unused function 'replaceBrickCommitForce' vdsm/gluster/apiwrapper.py:178: Unused function 'profileInfo' vdsm/gluster/apiwrapper.py:181: Unused function 'profileStart' vdsm/gluster/apiwrapper.py:184: Unused function 'profileStop' vdsm/gluster/apiwrapper.py:187: Unused function 'rebalanceStart' vdsm/gluster/apiwrapper.py:191: Unused function 'rebalanceStop' vdsm/gluster/apiwrapper.py:194: Unused function 'rebalanceStatus' vdsm/gluster/apiwrapper.py:197: Unused function 'geoRepSessionStart' vdsm/gluster/apiwrapper.py:205: Unused function 'geoRepSessionStop' vdsm/gluster/apiwrapper.py:213: Unused function 'geoRepSessionStatus' vdsm/gluster/apiwrapper.py:220: Unused function 'geoRepSessionList' vdsm/gluster/apiwrapper.py:227: Unused function 'geoRepSessionPause' vdsm/gluster/apiwrapper.py:235: Unused function 'geoRepSessionResume' vdsm/gluster/apiwrapper.py:244: Unused function 'geoRepConfigList' vdsm/gluster/apiwrapper.py:250: Unused function 'geoRepConfigSet' vdsm/gluster/apiwrapper.py:257: Unused function 'geoRepConfigReset' vdsm/gluster/apiwrapper.py:265: Unused function 'snapshotCreate' vdsm/gluster/apiwrapper.py:271: Unused function 'snapshotDeleteAll' vdsm/gluster/apiwrapper.py:281: Unused function 'snapshotList' vdsm/gluster/apiwrapper.py:297: Unused function 'geoRepSessionCreate' vdsm/gluster/apiwrapper.py:307: Unused function 'geoRepSessionDelete' vdsm/gluster/apiwrapper.py:32: Unused class 'GlusterHook' vdsm/gluster/apiwrapper.py:330: Unused class 'GlusterSnapshot' vdsm/gluster/apiwrapper.py:346: Unused function 'configList' vdsm/gluster/apiwrapper.py:349: Unused function 'configSet' vdsm/gluster/apiwrapper.py:62: Unused class 'GlusterHost' vdsm/gluster/apiwrapper.py:75: Unused function 'removeByUuid' vdsm/gluster/cli.py:1146: Unused function 'volumeGeoRepStatus' vdsm/gluster/cli.py:1221: Unused function 'volumeGeoRepConfig' vdsm/gluster/cli.py:1376: Unused function 'snapshotConfig' vdsm/gluster/cli.py:1496: Unused function 'snapshotInfo' vdsm/gluster/cli.py:1514: Unused function 'executeGsecCreate' vdsm/gluster/cli.py:1524: Unused function 'executeMountBrokerUserAdd' vdsm/gluster/cli.py:1537: Unused function 'executeMountBrokerOpt' vdsm/gluster/cli.py:586: Unused function 'volumeSetHelpXml' vdsm/gluster/cli.py:609: Unused function 'volumeAddBrick' vdsm/gluster/cli.py:66: Unused class 'BrickStatus' vdsm/gluster/cli.py:68: Unused variable 'COMPLETED' vdsm/gluster/cli.py:71: Unused variable 'NA' vdsm/gluster/cli.py:826: Unused function 'peerProbe' vdsm/gluster/cli.py:836: Unused function 'peerDetach' vdsm/gluster/cli.py:870: Unused function 'peerStatus' vdsm/gluster/gfapi.py:215: Unused function 'volumeStatvfs' vdsm/gluster/hooks.py:47: Unused variable 'S' vdsm/gluster/hooks.py:49: Unused variable 'K' vdsm/gluster/__init__.py:38: Unused function 'listPublicFunctions' vdsm/gluster/services.py:45: Unused variable 'START' vdsm/gluster/services.py:46: Unused variable 'STOP' vdsm/gluster/services.py:47: Unused variable 'RESTART' vdsm/gluster/storagedev.py:296: Unused attribute '_defaultFormatOptions' vdsm/hooking.py:53: Unused function 'read_domxml' vdsm/hooking.py:58: Unused function 'write_domxml' vdsm/hooking.py:63: Unused function 'read_json' vdsm/hooking.py:68: Unused function 'write_json' vdsm/hooking.py:77: Unused function 'exit_hook' vdsm/sos/vdsm.py:59: Unused class 'vdsm' vdsm/storage/blockSD.py:416: Unused variable 'imgUUUID' vdsm/storage/blockVolume.py:276: Unused function 'setImage' vdsm/storage/blockVolume.py:421: Unused function 'halfbakedVolumeRollback' vdsm/storage/blockVolume.py:422: Unused variable 'taskObj' vdsm/storage/blockVolume.py:442: Unused function 'createVolumeMetadataRollback' vdsm/storage/blockVolume.py:660: Unused function 'renameVolumeRollback' vdsm/storage/blockVolume.py:695: Unused function 'shareVolumeRollback' vdsm/storage/hsm.py:259: Unused class 'HSM' vdsm/storage/hsm.py:350: Unused attribute '_preparedVolumes' vdsm/storage/hsm.py:89: Unused variable 'INITIALIZED' vdsm/storage/hsm.py:90: Unused variable 'CAPACITY' vdsm/storage/hsm.py:91: Unused variable 'PATHLIST' vdsm/storage/hsm.py:97: Unused variable 'STORAGE_CONNECTION_DIR' vdsm/storage/image.py:114: Unused function 'createImageRollback' vdsm/storage/image.py:252: Unused function 'getTemplate' vdsm/storage/iscsiadm.py:31: Unused variable 'ISCSI_ERR_SESS_EXISTS' vdsm/storage/iscsiadm.py:351: Unused function 'session_rescan' vdsm/storage/iscsi.py:388: Unused function 'fromConf' vdsm/storage/iscsi.py:468: Unused function 'getiScsiTarget' vdsm/storage/iscsi.py:487: Unused function 'getDefaultInitiatorName' vdsm/storage/iscsi.py:48: Unused variable 'ISCSI_DEFAULT_PORT' vdsm/storage/iscsi.py:49: Unused variable 'SCAN_PATTERN' vdsm/storage/iscsi.py:70: Unused function 'getDevIscsiInfo' vdsm/storage/lvm.py:1300: Unused function 'addLVTags' vdsm/storage/lvm.py:51: Unused variable 'LVM_DEFAULT_TTL' vdsm/storage/lvm.py:629: Unused function 'getAllLvs' vdsm/storage/lvm.py:86: Unused variable 'VG_UNKNOWN' vdsm/storage/monitor.py:151: Unused property 'domains' vdsm/storage/multipath.py:123: Unused function '_resize_map' vdsm/storage/multipath.py:142: Unused function 'deduceType' vdsm/storage/outOfProcess.py:374: Unused attribute '_modName' vdsm/storage/resourceManager.py:958: Unused function 'ownedResources' vdsm/storage/resourceManager.py:962: Unused function 'requestedResources' vdsm/storage/sdc.py:36: Unused variable 'DEFAULT_REFRESH_INTERVAL' vdsm/storage/sdm/volume_artifacts.py:107: Unused function 'is_garbage' vdsm/storage/sdm/volume_artifacts.py:224: Unused property 'lease_path' vdsm/storage/sd.py:245: Unused function 'sizeStr2Int' vdsm/storage/sd.py:546: Unused variable 'mdBackupVersions' vdsm/storage/sp.py:1375: Unused function 'getIsoDomain' vdsm/storage/storage_mailbox.py:223: Unused function 'flushMessages' vdsm/storage/storage_mailbox.py:522: Unused function 'unregisterMessageType' vdsm/storage/storage_mailbox.py:589: Unused function 'isStopped' vdsm/storage/storage_mailbox.py:592: Unused function 'getMaxHostID' vdsm/storage/storageServer.py:118: Unused property 'vfsType' vdsm/storage/storageServer.py:130: Unused function 'getLocalPathBase' vdsm/storage/storageServer.py:325: Unused property 'retrans' vdsm/storage/storageServer.py:65: Unused class 'ExampleConnection' vdsm/storage/storageServer.py:69: Unused variable 'arg1' vdsm/storage/storageServer.py:69: Unused variable 'arg2' vdsm/storage/taskManager.py:143: Unused function 'unloadTasks' vdsm/storage/task.py:1302: Unused function 'getState' vdsm/storage/task.py:1336: Unused function 'getID' vdsm/storage/task.py:436: Unused variable 'medium' vdsm/storage/task.py:471: Unused attribute 'metadataVersion' vdsm/storage/task.py:528: Unused function '__state_preparing' vdsm/storage/task.py:531: Unused function '__state_blocked' vdsm/storage/task.py:534: Unused function '__state_acquiring' vdsm/storage/task.py:538: Unused function '__state_queued' vdsm/storage/task.py:545: Unused function '__state_running' vdsm/storage/task.py:548: Unused function '__state_finished' vdsm/storage/task.py:551: Unused function '__state_aborting' vdsm/storage/task.py:562: Unused function '__state_waitrecover' vdsm/storage/task.py:565: Unused function '__state_racquiring' vdsm/storage/task.py:569: Unused function '__state_recovering' vdsm/storage/task.py:572: Unused function '__state_raborting' vdsm/storage/task.py:579: Unused function '__state_recovered' vdsm/storage/task.py:582: Unused function '__state_failed' vdsm/storage/task.py:585: Unused function '__state_cleaning' vdsm/storage/task.py:717: Unused function '_getResourcesKeyList' vdsm/storage/task.py:80: Unused variable 'RESOURCE_SEP' vdsm/storage/threadPool.py:136: Unused function 'stopThread' vdsm/storage/threadPool.py:35: Unused attribute '_taskThread' vdsm/storage/threadPool.py:95: Unused function 'getThreadCount' vdsm/storage/volume.py:635: Unused function 'killProcRollback' vdsm/storage/volume.py:640: Unused function 'rebaseVolumeRollback' vdsm/storage/volume.py:773: Unused function 'parentVolumeRollback' vdsm/storage/volume.py:788: Unused function 'startCreateVolumeRollback' vdsm/storage/volume.py:803: Unused function 'createVolumeRollback' vdsm/storage/volume.py:992: Unused function 'extendSizeFinalize' vdsm/supervdsm_api/__init__.py:24: Unused attribute 'exposed_api' vdsm/supervdsm_api/network.py:29: Unused function 'restoreNetworks' vdsm/virt/vmdevices/graphics.py:214: Unused function 'makeSpecParams' vdsm/virt/vmdevices/storage.py:167: Unused attribute 'reqsize' vdsm/virt/vmdevices/storage.py:332: Unused attribute '_diskType' vdsm/virt/vm.py:2126: Unused function '_lookupDeviceByPath'