[VDSM] Dead code found by vulture

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 positives but I'm sure we can find lot of useful info in the report. See example run bellow. 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'

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'

On Tue, Oct 4, 2016 at 6:14 PM, Dan Kenigsberg <danken@redhat.com> wrote:
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"
I did
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
Thanks!
participants (2)
-
Dan Kenigsberg
-
Nir Soffer