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'