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'