Coverage report: 88%

Files Functions Classes

coverage.py v7.8.2, created at 2025-06-17 12:22 +0000

File class statements missing excluded branches partial coverage
watcher/__init__.py (no class) 2 0 0 0 0 100%
watcher/_i18n.py (no class) 11 1 0 0 0 91%
watcher/api/__init__.py (no class) 0 0 0 0 0 100%
watcher/api/acl.py (no class) 7 0 0 2 0 100%
watcher/api/app.py VersionSelectorApplication 3 1 0 0 0 67%
watcher/api/app.py (no class) 17 1 0 2 1 89%
watcher/api/config.py (no class) 9 0 0 2 0 100%
watcher/api/controllers/__init__.py (no class) 0 0 0 0 0 100%
watcher/api/controllers/base.py APIBase 6 1 0 6 1 83%
watcher/api/controllers/base.py Version 21 2 0 8 0 93%
watcher/api/controllers/base.py (no class) 30 0 0 0 0 100%
watcher/api/controllers/link.py Link 4 2 0 0 0 50%
watcher/api/controllers/link.py (no class) 20 0 0 2 0 100%
watcher/api/controllers/root.py APIStatus 0 0 0 0 0 100%
watcher/api/controllers/root.py Version 8 0 0 0 0 100%
watcher/api/controllers/root.py Root 6 0 0 0 0 100%
watcher/api/controllers/root.py RootController 4 0 0 2 0 100%
watcher/api/controllers/root.py (no class) 47 0 0 0 0 100%
watcher/api/controllers/v1/__init__.py APIBase 6 6 0 6 0 0%
watcher/api/controllers/v1/__init__.py MediaType 2 0 0 0 0 100%
watcher/api/controllers/v1/__init__.py V1 16 0 0 4 0 100%
watcher/api/controllers/v1/__init__.py Controller 15 2 0 6 2 81%
watcher/api/controllers/v1/__init__.py (no class) 80 0 0 0 0 100%
watcher/api/controllers/v1/action.py ActionPatchType 1 0 0 0 0 100%
watcher/api/controllers/v1/action.py Action 38 6 0 10 0 88%
watcher/api/controllers/v1/action.py ActionCollection 8 3 0 0 0 62%
watcher/api/controllers/v1/action.py ActionsController 44 4 0 16 3 88%
watcher/api/controllers/v1/action.py (no class) 75 0 0 0 0 100%
watcher/api/controllers/v1/action_plan.py ActionPlanPatchType 12 2 0 6 1 83%
watcher/api/controllers/v1/action_plan.py ActionPlan 76 14 0 32 10 76%
watcher/api/controllers/v1/action_plan.py ActionPlanCollection 8 3 0 0 0 62%
watcher/api/controllers/v1/action_plan.py ActionPlansController 101 11 0 42 9 85%
watcher/api/controllers/v1/action_plan.py (no class) 99 0 0 0 0 100%
watcher/api/controllers/v1/audit.py AuditPostType 47 12 0 34 4 75%
watcher/api/controllers/v1/audit.py AuditPatchType 8 2 0 2 1 70%
watcher/api/controllers/v1/audit.py Audit 76 11 0 34 9 82%
watcher/api/controllers/v1/audit.py AuditCollection 9 3 0 0 0 67%
watcher/api/controllers/v1/audit.py AuditsController 112 13 0 44 8 84%
watcher/api/controllers/v1/audit.py (no class) 140 3 0 6 0 97%
watcher/api/controllers/v1/audit_template.py AuditTemplatePostType 44 6 0 26 2 89%
watcher/api/controllers/v1/audit_template.py AuditTemplatePatchType 30 2 0 18 3 90%
watcher/api/controllers/v1/audit_template.py AuditTemplate 78 10 0 34 10 82%
watcher/api/controllers/v1/audit_template.py AuditTemplateCollection 9 3 0 0 0 67%
watcher/api/controllers/v1/audit_template.py AuditTemplatesController 90 10 0 36 6 84%
watcher/api/controllers/v1/audit_template.py (no class) 120 0 0 0 0 100%
watcher/api/controllers/v1/collection.py Collection 8 0 0 2 0 100%
watcher/api/controllers/v1/collection.py (no class) 11 0 0 0 0 100%
watcher/api/controllers/v1/data_model.py DataModelController 13 2 0 6 2 79%
watcher/api/controllers/v1/data_model.py (no class) 15 0 0 0 0 100%
watcher/api/controllers/v1/efficacy_indicator.py EfficacyIndicator 8 0 0 4 0 100%
watcher/api/controllers/v1/efficacy_indicator.py (no class) 14 0 0 0 0 100%
watcher/api/controllers/v1/goal.py Goal 16 2 0 6 0 91%
watcher/api/controllers/v1/goal.py GoalCollection 9 3 0 0 0 67%
watcher/api/controllers/v1/goal.py GoalsController 27 2 0 6 2 88%
watcher/api/controllers/v1/goal.py (no class) 52 0 0 0 0 100%
watcher/api/controllers/v1/scoring_engine.py ScoringEngine 19 2 0 2 0 90%
watcher/api/controllers/v1/scoring_engine.py ScoringEngineCollection 9 3 0 0 0 67%
watcher/api/controllers/v1/scoring_engine.py ScoringEngineController 28 2 0 6 2 88%
watcher/api/controllers/v1/scoring_engine.py (no class) 52 0 0 0 0 100%
watcher/api/controllers/v1/service.py Service 27 4 0 8 2 83%
watcher/api/controllers/v1/service.py ServiceCollection 9 3 0 0 0 67%
watcher/api/controllers/v1/service.py ServicesController 27 2 0 6 2 88%
watcher/api/controllers/v1/service.py (no class) 63 0 0 0 0 100%
watcher/api/controllers/v1/strategy.py Strategy 47 6 0 16 7 79%
watcher/api/controllers/v1/strategy.py StrategyCollection 9 3 0 0 0 67%
watcher/api/controllers/v1/strategy.py StrategiesController 53 6 0 18 4 83%
watcher/api/controllers/v1/strategy.py (no class) 67 0 0 0 0 100%
watcher/api/controllers/v1/types.py UuidOrNameType 6 3 0 4 0 50%
watcher/api/controllers/v1/types.py IntervalOrCron 6 2 0 4 2 60%
watcher/api/controllers/v1/types.py NameType 6 3 0 4 0 50%
watcher/api/controllers/v1/types.py UuidType 6 0 0 4 0 100%
watcher/api/controllers/v1/types.py BooleanType 7 3 0 2 0 44%
watcher/api/controllers/v1/types.py JsonType 7 0 0 0 0 100%
watcher/api/controllers/v1/types.py MultiType 8 8 0 6 0 0%
watcher/api/controllers/v1/types.py JsonPatchType 17 1 0 10 0 96%
watcher/api/controllers/v1/types.py (no class) 68 0 0 0 0 100%
watcher/api/controllers/v1/utils.py (no class) 89 8 0 44 0 88%
watcher/api/controllers/v1/versions.py VERSIONS 0 0 0 0 0 100%
watcher/api/controllers/v1/versions.py (no class) 17 0 0 0 0 100%
watcher/api/controllers/v1/webhooks.py WebhookController 13 1 0 6 1 89%
watcher/api/controllers/v1/webhooks.py (no class) 16 0 0 0 0 100%
watcher/api/hooks.py ContextHook 13 0 0 0 0 100%
watcher/api/hooks.py NoExceptionTracebackHook 13 0 0 8 0 100%
watcher/api/hooks.py (no class) 8 0 0 0 0 100%
watcher/api/middleware/__init__.py (no class) 0 0 0 0 0 100%
watcher/api/middleware/auth_token.py AuthTokenMiddleware 12 8 0 2 0 29%
watcher/api/middleware/auth_token.py (no class) 10 0 0 0 0 100%
watcher/api/middleware/parsable_error.py ParsableErrorMiddleware 29 8 0 6 1 74%
watcher/api/middleware/parsable_error.py (no class) 9 0 0 0 0 100%
watcher/api/scheduling.py APISchedulingService 37 10 0 14 2 73%
watcher/api/scheduling.py (no class) 19 0 0 0 0 100%
watcher/api/wsgi.py (no class) 16 16 0 2 0 0%
watcher/applier/__init__.py (no class) 0 0 0 0 0 100%
watcher/applier/action_plan/__init__.py (no class) 0 0 0 0 0 100%
watcher/applier/action_plan/base.py BaseActionPlanHandler 0 0 1 0 0 100%
watcher/applier/action_plan/base.py (no class) 2 0 2 0 0 100%
watcher/applier/action_plan/default.py DefaultActionPlanHandler 47 9 0 10 3 79%
watcher/applier/action_plan/default.py (no class) 14 0 0 0 0 100%
watcher/applier/actions/__init__.py (no class) 0 0 0 0 0 100%
watcher/applier/actions/base.py BaseAction 17 1 42 6 1 91%
watcher/applier/actions/base.py (no class) 20 0 13 0 0 100%
watcher/applier/actions/change_node_power_state.py ChangeNodePowerState 35 6 0 16 5 78%
watcher/applier/actions/change_node_power_state.py (no class) 22 0 0 0 0 100%
watcher/applier/actions/change_nova_service_state.py ChangeNovaServiceState 25 2 0 12 3 86%
watcher/applier/actions/change_nova_service_state.py (no class) 23 0 0 0 0 100%
watcher/applier/actions/factory.py ActionFactory 7 0 0 0 0 100%
watcher/applier/actions/factory.py (no class) 6 0 0 0 0 100%
watcher/applier/actions/migration.py Migrate 48 10 0 14 5 76%
watcher/applier/actions/migration.py (no class) 33 0 0 0 0 100%
watcher/applier/actions/nop.py Nop 11 1 0 0 0 91%
watcher/applier/actions/nop.py (no class) 15 0 0 0 0 100%
watcher/applier/actions/resize.py Resize 19 7 0 2 1 62%
watcher/applier/actions/resize.py (no class) 18 0 0 0 0 100%
watcher/applier/actions/sleep.py Sleep 12 6 0 0 0 50%
watcher/applier/actions/sleep.py (no class) 16 0 0 0 0 100%
watcher/applier/actions/volume_migration.py VolumeMigrate 65 12 0 16 5 79%
watcher/applier/actions/volume_migration.py (no class) 43 0 0 0 0 100%
watcher/applier/base.py BaseApplier 0 0 1 0 0 100%
watcher/applier/base.py (no class) 2 0 2 0 0 100%
watcher/applier/default.py DefaultApplier 16 0 0 2 1 94%
watcher/applier/default.py (no class) 16 0 0 0 0 100%
watcher/applier/loading/__init__.py (no class) 0 0 0 0 0 100%
watcher/applier/loading/default.py DefaultWorkFlowEngineLoader 1 0 0 0 0 100%
watcher/applier/loading/default.py DefaultActionLoader 1 0 0 0 0 100%
watcher/applier/loading/default.py (no class) 5 0 0 0 0 100%
watcher/applier/manager.py ApplierManager 7 0 0 0 0 100%
watcher/applier/manager.py (no class) 19 0 0 0 0 100%
watcher/applier/messaging/__init__.py (no class) 0 0 0 0 0 100%
watcher/applier/messaging/trigger.py TriggerActionPlan 11 2 0 0 0 82%
watcher/applier/messaging/trigger.py (no class) 10 0 0 0 0 100%
watcher/applier/rpcapi.py ApplierAPI 4 0 0 2 0 100%
watcher/applier/rpcapi.py ApplierAPIManager 7 0 0 0 0 100%
watcher/applier/rpcapi.py (no class) 24 0 0 0 0 100%
watcher/applier/sync.py Syncer 27 17 0 8 0 40%
watcher/applier/sync.py (no class) 11 0 0 0 0 100%
watcher/applier/workflow_engine/__init__.py (no class) 0 0 0 0 0 100%
watcher/applier/workflow_engine/base.py BaseWorkFlowEngine 22 2 1 4 0 92%
watcher/applier/workflow_engine/base.py BaseTaskFlowActionContainer 84 20 5 16 2 78%
watcher/applier/workflow_engine/base.py (no class) 39 0 12 0 0 100%
watcher/applier/workflow_engine/default.py DefaultWorkFlowEngine 31 8 0 12 0 77%
watcher/applier/workflow_engine/default.py TaskFlowActionContainer 32 8 0 6 1 76%
watcher/applier/workflow_engine/default.py TaskFlowNop 1 1 0 0 0 0%
watcher/applier/workflow_engine/default.py (no class) 28 0 0 0 0 100%
watcher/cmd/__init__.py (no class) 2 0 0 0 0 100%
watcher/cmd/api.py (no class) 20 2 0 2 0 91%
watcher/cmd/applier.py (no class) 17 0 0 0 0 100%
watcher/cmd/dbmanage.py DBCommand 7 1 0 0 0 86%
watcher/cmd/dbmanage.py (no class) 57 25 0 2 0 58%
watcher/cmd/decisionengine.py (no class) 22 0 0 0 0 100%
watcher/cmd/status.py Checks 5 0 0 0 0 100%
watcher/cmd/status.py (no class) 14 2 0 2 1 81%
watcher/cmd/sync.py (no class) 13 13 0 0 0 0%
watcher/common/__init__.py (no class) 0 0 0 0 0 100%
watcher/common/cinder_helper.py CinderHelper 129 6 0 38 4 93%
watcher/common/cinder_helper.py (no class) 31 0 0 0 0 100%
watcher/common/clients.py OpenStackClients 100 17 0 24 1 81%
watcher/common/clients.py (no class) 53 2 0 2 0 96%
watcher/common/config.py (no class) 9 0 0 0 0 100%
watcher/common/context.py RequestContext 25 1 0 4 0 97%
watcher/common/context.py (no class) 14 0 0 0 0 100%
watcher/common/exception.py WatcherException 22 7 0 10 2 66%
watcher/common/exception.py UnsupportedError 0 0 0 0 0 100%
watcher/common/exception.py NotAuthorized 0 0 0 0 0 100%
watcher/common/exception.py NotAcceptable 0 0 0 0 0 100%
watcher/common/exception.py PolicyNotAuthorized 0 0 0 0 0 100%
watcher/common/exception.py OperationNotPermitted 0 0 0 0 0 100%
watcher/common/exception.py Invalid 0 0 0 0 0 100%
watcher/common/exception.py ObjectNotFound 0 0 0 0 0 100%
watcher/common/exception.py Conflict 0 0 0 0 0 100%
watcher/common/exception.py ResourceNotFound 0 0 0 0 0 100%
watcher/common/exception.py InvalidParameter 0 0 0 0 0 100%
watcher/common/exception.py MissingParameter 0 0 0 0 0 100%
watcher/common/exception.py InvalidIdentity 0 0 0 0 0 100%
watcher/common/exception.py InvalidOperator 0 0 0 0 0 100%
watcher/common/exception.py InvalidGoal 0 0 0 0 0 100%
watcher/common/exception.py InvalidStrategy 0 0 0 0 0 100%
watcher/common/exception.py InvalidAudit 0 0 0 0 0 100%
watcher/common/exception.py EagerlyLoadedAuditRequired 0 0 0 0 0 100%
watcher/common/exception.py InvalidActionPlan 0 0 0 0 0 100%
watcher/common/exception.py EagerlyLoadedActionPlanRequired 0 0 0 0 0 100%
watcher/common/exception.py EagerlyLoadedActionRequired 0 0 0 0 0 100%
watcher/common/exception.py InvalidUUID 0 0 0 0 0 100%
watcher/common/exception.py InvalidName 0 0 0 0 0 100%
watcher/common/exception.py InvalidUuidOrName 0 0 0 0 0 100%
watcher/common/exception.py InvalidIntervalOrCron 0 0 0 0 0 100%
watcher/common/exception.py DataModelTypeNotFound 0 0 0 0 0 100%
watcher/common/exception.py GoalNotFound 0 0 0 0 0 100%
watcher/common/exception.py GoalAlreadyExists 0 0 0 0 0 100%
watcher/common/exception.py StrategyNotFound 0 0 0 0 0 100%
watcher/common/exception.py StrategyAlreadyExists 0 0 0 0 0 100%
watcher/common/exception.py AuditTemplateNotFound 0 0 0 0 0 100%
watcher/common/exception.py AuditTemplateAlreadyExists 0 0 0 0 0 100%
watcher/common/exception.py AuditTypeNotFound 0 0 0 0 0 100%
watcher/common/exception.py AuditTypeNotAllowed 0 0 0 0 0 100%
watcher/common/exception.py AuditStateNotAllowed 0 0 0 0 0 100%
watcher/common/exception.py AuditParameterNotAllowed 0 0 0 0 0 100%
watcher/common/exception.py AuditNotFound 0 0 0 0 0 100%
watcher/common/exception.py AuditAlreadyExists 0 0 0 0 0 100%
watcher/common/exception.py AuditIntervalNotSpecified 0 0 0 0 0 100%
watcher/common/exception.py AuditIntervalNotAllowed 0 0 0 0 0 100%
watcher/common/exception.py AuditStartEndTimeNotAllowed 0 0 0 0 0 100%
watcher/common/exception.py AuditReferenced 0 0 0 0 0 100%
watcher/common/exception.py ActionPlanNotFound 0 0 0 0 0 100%
watcher/common/exception.py ActionPlanAlreadyExists 0 0 0 0 0 100%
watcher/common/exception.py ActionPlanReferenced 0 0 0 0 0 100%
watcher/common/exception.py ActionPlanCancelled 0 0 0 0 0 100%
watcher/common/exception.py ActionPlanIsOngoing 0 0 0 0 0 100%
watcher/common/exception.py ActionNotFound 0 0 0 0 0 100%
watcher/common/exception.py ActionAlreadyExists 0 0 0 0 0 100%
watcher/common/exception.py ActionReferenced 0 0 0 0 0 100%
watcher/common/exception.py ActionFilterCombinationProhibited 0 0 0 0 0 100%
watcher/common/exception.py UnsupportedActionType 0 0 0 0 0 100%
watcher/common/exception.py EfficacyIndicatorNotFound 0 0 0 0 0 100%
watcher/common/exception.py EfficacyIndicatorAlreadyExists 0 0 0 0 0 100%
watcher/common/exception.py ScoringEngineAlreadyExists 0 0 0 0 0 100%
watcher/common/exception.py ScoringEngineNotFound 0 0 0 0 0 100%
watcher/common/exception.py HTTPNotFound 0 0 0 0 0 100%
watcher/common/exception.py PatchError 0 0 0 0 0 100%
watcher/common/exception.py DeleteError 0 0 0 0 0 100%
watcher/common/exception.py StartError 0 0 0 0 0 100%
watcher/common/exception.py WorkflowExecutionException 0 0 0 0 0 100%
watcher/common/exception.py IllegalArgumentException 0 0 0 0 0 100%
watcher/common/exception.py AuthorizationFailure 0 0 0 0 0 100%
watcher/common/exception.py ClusterStateStale 0 0 0 0 0 100%
watcher/common/exception.py ClusterDataModelCollectionError 0 0 0 0 0 100%
watcher/common/exception.py ClusterStateNotDefined 0 0 0 0 0 100%
watcher/common/exception.py NoAvailableStrategyForGoal 0 0 0 0 0 100%
watcher/common/exception.py InvalidIndicatorValue 0 0 0 0 0 100%
watcher/common/exception.py GlobalEfficacyComputationError 0 0 0 0 0 100%
watcher/common/exception.py UnsupportedDataSource 0 0 0 0 0 100%
watcher/common/exception.py DataSourceNotAvailable 0 0 0 0 0 100%
watcher/common/exception.py MetricNotAvailable 0 0 0 0 0 100%
watcher/common/exception.py NoDatasourceAvailable 0 0 0 0 0 100%
watcher/common/exception.py NoSuchMetricForHost 0 0 0 0 0 100%
watcher/common/exception.py ServiceAlreadyExists 0 0 0 0 0 100%
watcher/common/exception.py ServiceNotFound 0 0 0 0 0 100%
watcher/common/exception.py WildcardCharacterIsUsed 0 0 0 0 0 100%
watcher/common/exception.py CronFormatIsInvalid 0 0 0 0 0 100%
watcher/common/exception.py ActionDescriptionAlreadyExists 0 0 0 0 0 100%
watcher/common/exception.py ActionDescriptionNotFound 0 0 0 0 0 100%
watcher/common/exception.py ActionExecutionFailure 0 0 0 0 0 100%
watcher/common/exception.py ComputeResourceNotFound 0 0 0 0 0 100%
watcher/common/exception.py InstanceNotFound 0 0 0 0 0 100%
watcher/common/exception.py InstanceNotMapped 0 0 0 0 0 100%
watcher/common/exception.py ComputeNodeNotFound 0 0 0 0 0 100%
watcher/common/exception.py StorageResourceNotFound 0 0 0 0 0 100%
watcher/common/exception.py StorageNodeNotFound 0 0 0 0 0 100%
watcher/common/exception.py PoolNotFound 0 0 0 0 0 100%
watcher/common/exception.py VolumeNotFound 0 0 0 0 0 100%
watcher/common/exception.py BaremetalResourceNotFound 0 0 0 0 0 100%
watcher/common/exception.py IronicNodeNotFound 0 0 0 0 0 100%
watcher/common/exception.py LoadingError 0 0 0 0 0 100%
watcher/common/exception.py ReservedWord 0 0 0 0 0 100%
watcher/common/exception.py NotSoftDeletedStateError 0 0 0 0 0 100%
watcher/common/exception.py NegativeLimitError 0 0 0 0 0 100%
watcher/common/exception.py NotificationPayloadError 0 0 0 0 0 100%
watcher/common/exception.py InvalidPoolAttributeValue 0 0 0 0 0 100%
watcher/common/exception.py (no class) 225 2 0 0 0 99%
watcher/common/ironic_helper.py IronicHelper 11 0 0 2 0 100%
watcher/common/ironic_helper.py (no class) 9 0 0 0 0 100%
watcher/common/keystone_helper.py KeystoneHelper 58 58 0 18 0 0%
watcher/common/keystone_helper.py (no class) 19 0 0 0 0 100%
watcher/common/loader/__init__.py (no class) 0 0 0 0 0 100%
watcher/common/loader/base.py BaseLoader 0 0 2 0 0 100%
watcher/common/loader/base.py (no class) 2 0 4 0 0 100%
watcher/common/loader/default.py DefaultLoader 29 1 0 4 1 94%
watcher/common/loader/default.py (no class) 15 0 0 0 0 100%
watcher/common/loader/loadable.py Loadable 2 0 6 0 0 100%
watcher/common/loader/loadable.py LoadableSingleton 2 0 6 0 0 100%
watcher/common/loader/loadable.py (no class) 7 0 6 0 0 100%
watcher/common/metal_helper/__init__.py (no class) 0 0 0 0 0 100%
watcher/common/metal_helper/base.py BaseMetalNode 11 0 5 6 0 100%
watcher/common/metal_helper/base.py BaseMetalHelper 4 0 2 2 0 100%
watcher/common/metal_helper/base.py (no class) 13 0 13 0 0 100%
watcher/common/metal_helper/constants.py PowerState 0 0 0 0 0 100%
watcher/common/metal_helper/constants.py (no class) 6 0 0 0 0 100%
watcher/common/metal_helper/factory.py (no class) 11 0 0 4 1 93%
watcher/common/metal_helper/ironic.py IronicNode 7 0 0 0 0 100%
watcher/common/metal_helper/ironic.py IronicHelper 24 0 0 10 0 100%
watcher/common/metal_helper/ironic.py (no class) 17 0 0 0 0 100%
watcher/common/metal_helper/maas.py MaasNode 11 2 0 0 0 82%
watcher/common/metal_helper/maas.py MaasHelper 27 15 0 14 2 44%
watcher/common/metal_helper/maas.py (no class) 26 2 0 0 0 92%
watcher/common/nova_helper.py NovaHelper 301 35 0 104 16 87%
watcher/common/nova_helper.py (no class) 47 0 0 0 0 100%
watcher/common/paths.py (no class) 9 9 0 0 0 0%
watcher/common/placement_helper.py PlacementHelper 60 2 0 18 2 95%
watcher/common/placement_helper.py (no class) 17 0 0 0 0 100%
watcher/common/policies/__init__.py (no class) 13 0 0 0 0 100%
watcher/common/policies/action.py (no class) 6 0 0 0 0 100%
watcher/common/policies/action_plan.py (no class) 6 0 0 0 0 100%
watcher/common/policies/audit.py (no class) 6 0 0 0 0 100%
watcher/common/policies/audit_template.py (no class) 6 0 0 0 0 100%
watcher/common/policies/base.py (no class) 7 0 0 0 0 100%
watcher/common/policies/data_model.py (no class) 6 0 0 0 0 100%
watcher/common/policies/goal.py (no class) 6 0 0 0 0 100%
watcher/common/policies/scoring_engine.py (no class) 6 0 0 0 0 100%
watcher/common/policies/service.py (no class) 6 0 0 0 0 100%
watcher/common/policies/strategy.py (no class) 6 0 0 0 0 100%
watcher/common/policy.py (no class) 32 11 0 10 1 62%
watcher/common/rpc.py RequestContextSerializer 9 2 0 4 2 69%
watcher/common/rpc.py (no class) 61 9 0 4 1 82%
watcher/common/scheduling.py GreenThreadPoolExecutor 2 0 0 0 0 100%
watcher/common/scheduling.py BackgroundSchedulerService 11 1 0 6 3 76%
watcher/common/scheduling.py (no class) 18 0 0 0 0 100%
watcher/common/service.py WSGIService 8 4 0 0 0 50%
watcher/common/service.py ServiceHeartbeat 20 0 0 2 0 100%
watcher/common/service.py Service 51 3 0 24 6 88%
watcher/common/service.py (no class) 72 0 0 0 0 100%
watcher/common/service_manager.py ServiceManager 0 0 7 0 0 100%
watcher/common/service_manager.py (no class) 2 0 21 0 0 100%
watcher/common/utils.py Struct 8 4 0 0 0 50%
watcher/common/utils.py (no class) 81 40 0 20 4 52%
watcher/conf/__init__.py (no class) 50 0 0 0 0 100%
watcher/conf/api.py (no class) 10 0 0 0 0 100%
watcher/conf/applier.py (no class) 10 0 0 0 0 100%
watcher/conf/cinder_client.py (no class) 8 0 0 0 0 100%
watcher/conf/clients_auth.py (no class) 7 0 0 0 0 100%
watcher/conf/collector.py (no class) 8 0 0 0 0 100%
watcher/conf/datasources.py (no class) 10 0 0 0 0 100%
watcher/conf/db.py (no class) 12 0 0 0 0 100%
watcher/conf/decision_engine.py (no class) 8 0 0 0 0 100%
watcher/conf/exception.py (no class) 6 0 0 0 0 100%
watcher/conf/glance_client.py (no class) 8 0 0 0 0 100%
watcher/conf/gnocchi_client.py (no class) 8 0 0 0 0 100%
watcher/conf/grafana_client.py (no class) 8 0 0 0 0 100%
watcher/conf/grafana_translators.py (no class) 8 0 0 0 0 100%
watcher/conf/ironic_client.py (no class) 8 0 0 0 0 100%
watcher/conf/keystone_client.py (no class) 8 0 0 0 0 100%
watcher/conf/maas_client.py (no class) 8 0 0 0 0 100%
watcher/conf/monasca_client.py (no class) 8 0 0 0 0 100%
watcher/conf/neutron_client.py (no class) 8 0 0 0 0 100%
watcher/conf/nova_client.py (no class) 9 0 0 0 0 100%
watcher/conf/opts.py (no class) 28 2 0 10 1 92%
watcher/conf/paths.py (no class) 13 2 0 0 0 85%
watcher/conf/placement_client.py (no class) 8 0 0 0 0 100%
watcher/conf/planner.py (no class) 9 0 0 0 0 100%
watcher/conf/plugins.py (no class) 28 5 0 10 0 82%
watcher/conf/prometheus_client.py (no class) 8 0 0 0 0 100%
watcher/conf/service.py (no class) 8 0 0 0 0 100%
watcher/db/__init__.py (no class) 0 0 0 0 0 100%
watcher/db/api.py BaseConnection 0 0 587 0 0 100%
watcher/db/api.py (no class) 15 0 143 0 0 100%
watcher/db/migration.py (no class) 20 10 0 2 0 45%
watcher/db/purge.py WatcherObjectsMap 27 0 0 6 0 100%
watcher/db/purge.py PurgeCommand 156 17 0 36 3 86%
watcher/db/purge.py (no class) 63 0 0 2 0 100%
watcher/db/sqlalchemy/__init__.py (no class) 0 0 0 0 0 100%
watcher/db/sqlalchemy/alembic/env.py (no class) 12 0 0 0 0 100%
watcher/db/sqlalchemy/alembic/versions/001_ocata.py (no class) 26 9 0 0 0 65%
watcher/db/sqlalchemy/alembic/versions/0f6042416884_add_apscheduler_jobs.py (no class) 17 2 0 2 1 84%
watcher/db/sqlalchemy/alembic/versions/15f7375ca737_change_efficiacy_indicator_decimals.py (no class) 6 0 0 0 0 100%
watcher/db/sqlalchemy/alembic/versions/3cfc94cecf4e_add_name_for_audit.py (no class) 8 1 0 0 0 88%
watcher/db/sqlalchemy/alembic/versions/4b16194c56bc_add_start_end_time.py (no class) 10 2 0 0 0 80%
watcher/db/sqlalchemy/alembic/versions/52804f2498c4_add_hostname.py (no class) 10 2 0 4 0 71%
watcher/db/sqlalchemy/alembic/versions/609bec748f2a_add_force_field.py (no class) 8 1 0 0 0 88%
watcher/db/sqlalchemy/alembic/versions/a86240e89a29_.py (no class) 22 9 0 4 1 54%
watcher/db/sqlalchemy/alembic/versions/d098df6021e2_cron_support_for_audit.py (no class) 10 2 0 0 0 80%
watcher/db/sqlalchemy/alembic/versions/d09a5945e4a0_add_action_description_table.py (no class) 9 1 0 0 0 89%
watcher/db/sqlalchemy/api.py JoinMap 0 0 0 0 0 100%
watcher/db/sqlalchemy/api.py Connection 478 40 0 100 2 93%
watcher/db/sqlalchemy/api.py (no class) 165 1 0 6 1 99%
watcher/db/sqlalchemy/job_store.py WatcherJobStore 35 28 0 4 0 18%
watcher/db/sqlalchemy/job_store.py (no class) 19 0 0 0 0 100%
watcher/db/sqlalchemy/migration.py (no class) 39 9 0 6 3 73%
watcher/db/sqlalchemy/models.py JsonEncodedType 9 1 0 6 1 87%
watcher/db/sqlalchemy/models.py JSONEncodedDict 0 0 0 0 0 100%
watcher/db/sqlalchemy/models.py JSONEncodedList 0 0 0 0 0 100%
watcher/db/sqlalchemy/models.py WatcherBase 4 0 0 2 0 100%
watcher/db/sqlalchemy/models.py Goal 0 0 0 0 0 100%
watcher/db/sqlalchemy/models.py Strategy 0 0 0 0 0 100%
watcher/db/sqlalchemy/models.py AuditTemplate 0 0 0 0 0 100%
watcher/db/sqlalchemy/models.py Audit 0 0 0 0 0 100%
watcher/db/sqlalchemy/models.py ActionPlan 0 0 0 0 0 100%
watcher/db/sqlalchemy/models.py Action 0 0 0 0 0 100%
watcher/db/sqlalchemy/models.py EfficacyIndicator 0 0 0 0 0 100%
watcher/db/sqlalchemy/models.py ScoringEngine 0 0 0 0 0 100%
watcher/db/sqlalchemy/models.py Service 0 0 0 0 0 100%
watcher/db/sqlalchemy/models.py ActionDescription 0 0 0 0 0 100%
watcher/db/sqlalchemy/models.py APScheulerJob 0 0 0 0 0 100%
watcher/db/sqlalchemy/models.py (no class) 153 1 0 2 1 99%
watcher/decision_engine/__init__.py (no class) 0 0 0 0 0 100%
watcher/decision_engine/audit/__init__.py (no class) 0 0 0 0 0 100%
watcher/decision_engine/audit/base.py BaseMetaClass 0 0 0 0 0 100%
watcher/decision_engine/audit/base.py BaseAuditHandler 0 0 4 0 0 100%
watcher/decision_engine/audit/base.py AuditHandler 47 1 0 10 2 95%
watcher/decision_engine/audit/base.py (no class) 30 0 8 0 0 100%
watcher/decision_engine/audit/continuous.py ContinuousAuditHandler 92 18 0 48 11 78%
watcher/decision_engine/audit/continuous.py (no class) 29 0 0 0 0 100%
watcher/decision_engine/audit/event.py EventAuditHandler 2 2 0 0 0 0%
watcher/decision_engine/audit/event.py (no class) 4 0 0 0 0 100%
watcher/decision_engine/audit/oneshot.py OneShotAuditHandler 2 0 0 0 0 100%
watcher/decision_engine/audit/oneshot.py (no class) 4 0 0 0 0 100%
watcher/decision_engine/datasources/__init__.py (no class) 0 0 0 0 0 100%
watcher/decision_engine/datasources/base.py DataSourceBase 18 2 106 4 0 91%
watcher/decision_engine/datasources/base.py (no class) 18 0 47 0 0 100%
watcher/decision_engine/datasources/gnocchi.py GnocchiHelper 79 25 0 32 13 62%
watcher/decision_engine/datasources/gnocchi.py (no class) 28 0 0 0 0 100%
watcher/decision_engine/datasources/grafana.py GrafanaHelper 80 8 1 24 8 85%
watcher/decision_engine/datasources/grafana.py (no class) 37 0 0 0 0 100%
watcher/decision_engine/datasources/grafana_translator/__init__.py (no class) 0 0 0 0 0 100%
watcher/decision_engine/datasources/grafana_translator/base.py BaseGrafanaTranslator 17 4 4 8 2 76%
watcher/decision_engine/datasources/grafana_translator/base.py (no class) 16 0 4 0 0 100%
watcher/decision_engine/datasources/grafana_translator/influxdb.py InfluxDBGrafanaTranslator 26 3 0 6 0 91%
watcher/decision_engine/datasources/grafana_translator/influxdb.py (no class) 12 0 0 0 0 100%
watcher/decision_engine/datasources/manager.py DataSourceManager 63 17 0 26 1 78%
watcher/decision_engine/datasources/manager.py (no class) 33 0 0 0 0 100%
watcher/decision_engine/datasources/monasca.py MonascaHelper 44 10 9 14 2 72%
watcher/decision_engine/datasources/monasca.py (no class) 26 0 0 0 0 100%
watcher/decision_engine/datasources/prometheus.py PrometheusHelper 142 11 1 62 6 91%
watcher/decision_engine/datasources/prometheus.py (no class) 31 0 0 0 0 100%
watcher/decision_engine/gmr.py (no class) 17 0 0 2 0 100%
watcher/decision_engine/goal/__init__.py (no class) 10 0 0 0 0 100%
watcher/decision_engine/goal/base.py Goal 5 0 10 0 0 100%
watcher/decision_engine/goal/base.py (no class) 6 0 11 0 0 100%
watcher/decision_engine/goal/efficacy/__init__.py (no class) 0 0 0 0 0 100%
watcher/decision_engine/goal/efficacy/base.py EfficacySpecification 13 0 16 6 0 100%
watcher/decision_engine/goal/efficacy/base.py (no class) 12 0 4 0 0 100%
watcher/decision_engine/goal/efficacy/indicators.py IndicatorSpecification 17 12 5 0 0 29%
watcher/decision_engine/goal/efficacy/indicators.py ComputeNodesCount 2 0 0 0 0 100%
watcher/decision_engine/goal/efficacy/indicators.py ReleasedComputeNodesCount 2 0 0 0 0 100%
watcher/decision_engine/goal/efficacy/indicators.py InstancesCount 2 0 0 0 0 100%
watcher/decision_engine/goal/efficacy/indicators.py InstanceMigrationsCount 2 0 0 0 0 100%
watcher/decision_engine/goal/efficacy/indicators.py LiveInstanceMigrateCount 2 0 0 0 0 100%
watcher/decision_engine/goal/efficacy/indicators.py PlannedLiveInstanceMigrateCount 2 0 0 0 0 100%
watcher/decision_engine/goal/efficacy/indicators.py ColdInstanceMigrateCount 2 0 0 0 0 100%
watcher/decision_engine/goal/efficacy/indicators.py PlannedColdInstanceMigrateCount 2 0 0 0 0 100%
watcher/decision_engine/goal/efficacy/indicators.py VolumeMigrateCount 2 0 0 0 0 100%
watcher/decision_engine/goal/efficacy/indicators.py PlannedVolumeMigrateCount 2 0 0 0 0 100%
watcher/decision_engine/goal/efficacy/indicators.py VolumeUpdateCount 2 0 0 0 0 100%
watcher/decision_engine/goal/efficacy/indicators.py PlannedVolumeUpdateCount 2 0 0 0 0 100%
watcher/decision_engine/goal/efficacy/indicators.py StandardDeviationValue 2 0 0 0 0 100%
watcher/decision_engine/goal/efficacy/indicators.py OriginalStandardDeviationValue 2 0 0 0 0 100%
watcher/decision_engine/goal/efficacy/indicators.py (no class) 71 0 3 0 0 100%
watcher/decision_engine/goal/efficacy/specs.py Unclassified 2 0 0 0 0 100%
watcher/decision_engine/goal/efficacy/specs.py ServerConsolidation 7 0 0 2 1 89%
watcher/decision_engine/goal/efficacy/specs.py WorkloadBalancing 7 0 0 2 0 100%
watcher/decision_engine/goal/efficacy/specs.py HardwareMaintenance 18 0 0 8 0 100%
watcher/decision_engine/goal/efficacy/specs.py (no class) 16 0 0 0 0 100%
watcher/decision_engine/goal/goals.py Dummy 4 1 0 0 0 75%
watcher/decision_engine/goal/goals.py Unclassified 4 1 0 0 0 75%
watcher/decision_engine/goal/goals.py ServerConsolidation 4 1 0 0 0 75%
watcher/decision_engine/goal/goals.py ThermalOptimization 4 1 0 0 0 75%
watcher/decision_engine/goal/goals.py WorkloadBalancing 4 1 0 0 0 75%
watcher/decision_engine/goal/goals.py AirflowOptimization 4 1 0 0 0 75%
watcher/decision_engine/goal/goals.py NoisyNeighborOptimization 4 1 0 0 0 75%
watcher/decision_engine/goal/goals.py SavingEnergy 4 1 0 0 0 75%
watcher/decision_engine/goal/goals.py HardwareMaintenance 4 1 0 0 0 75%
watcher/decision_engine/goal/goals.py ClusterMaintaining 4 1 0 0 0 75%
watcher/decision_engine/goal/goals.py (no class) 93 0 0 0 0 100%
watcher/decision_engine/loading/__init__.py (no class) 0 0 0 0 0 100%
watcher/decision_engine/loading/default.py DefaultStrategyLoader 1 0 0 0 0 100%
watcher/decision_engine/loading/default.py DefaultGoalLoader 1 0 0 0 0 100%
watcher/decision_engine/loading/default.py DefaultPlannerLoader 1 0 0 0 0 100%
watcher/decision_engine/loading/default.py ClusterDataModelCollectorLoader 1 0 0 0 0 100%
watcher/decision_engine/loading/default.py DefaultScoringLoader 1 0 0 0 0 100%
watcher/decision_engine/loading/default.py DefaultScoringContainerLoader 1 0 0 0 0 100%
watcher/decision_engine/loading/default.py (no class) 13 0 0 0 0 100%
watcher/decision_engine/manager.py DecisionEngineManager 8 0 0 0 0 100%
watcher/decision_engine/manager.py (no class) 24 0 0 0 0 100%
watcher/decision_engine/messaging/__init__.py (no class) 0 0 0 0 0 100%
watcher/decision_engine/messaging/audit_endpoint.py AuditEndpoint 14 1 0 4 2 83%
watcher/decision_engine/messaging/audit_endpoint.py (no class) 15 0 0 0 0 100%
watcher/decision_engine/messaging/data_model_endpoint.py DataModelEndpoint 22 3 0 8 3 80%
watcher/decision_engine/messaging/data_model_endpoint.py (no class) 8 0 0 0 0 100%
watcher/decision_engine/model/__init__.py (no class) 0 0 0 0 0 100%
watcher/decision_engine/model/base.py Model 0 0 2 0 0 100%
watcher/decision_engine/model/base.py (no class) 2 0 4 0 0 100%
watcher/decision_engine/model/collector/__init__.py (no class) 0 0 0 0 0 100%
watcher/decision_engine/model/collector/base.py BaseClusterDataModelCollector 20 0 10 2 0 100%
watcher/decision_engine/model/collector/base.py BaseModelBuilder 11 6 12 2 1 46%
watcher/decision_engine/model/collector/base.py (no class) 25 0 11 0 0 100%
watcher/decision_engine/model/collector/cinder.py CinderClusterDataModelCollector 17 3 0 6 2 78%
watcher/decision_engine/model/collector/cinder.py CinderModelBuilder 58 10 0 10 1 84%
watcher/decision_engine/model/collector/cinder.py (no class) 27 0 0 0 0 100%
watcher/decision_engine/model/collector/ironic.py BaremetalClusterDataModelCollector 17 11 0 6 2 35%
watcher/decision_engine/model/collector/ironic.py BareMetalModelBuilder 11 11 0 2 0 0%
watcher/decision_engine/model/collector/ironic.py (no class) 18 0 0 0 0 100%
watcher/decision_engine/model/collector/manager.py CollectorManager 18 1 0 8 2 88%
watcher/decision_engine/model/collector/manager.py (no class) 8 0 0 0 0 100%
watcher/decision_engine/model/collector/nova.py NovaClusterDataModelCollector 17 2 0 6 2 83%
watcher/decision_engine/model/collector/nova.py NovaModelBuilder 134 18 0 52 7 85%
watcher/decision_engine/model/collector/nova.py (no class) 33 0 0 0 0 100%
watcher/decision_engine/model/element/__init__.py (no class) 13 0 0 0 0 100%
watcher/decision_engine/model/element/baremetal_resource.py BaremetalResource 0 0 0 0 0 100%
watcher/decision_engine/model/element/baremetal_resource.py (no class) 6 0 0 0 0 100%
watcher/decision_engine/model/element/base.py Element 15 0 1 6 0 100%
watcher/decision_engine/model/element/base.py (no class) 12 0 2 0 0 100%
watcher/decision_engine/model/element/compute_resource.py ComputeResource 0 0 0 0 0 100%
watcher/decision_engine/model/element/compute_resource.py (no class) 6 0 0 0 0 100%
watcher/decision_engine/model/element/instance.py InstanceState 0 0 0 0 0 100%
watcher/decision_engine/model/element/instance.py Instance 0 0 1 0 0 100%
watcher/decision_engine/model/element/instance.py (no class) 20 0 0 0 0 100%
watcher/decision_engine/model/element/node.py ServiceState 0 0 0 0 0 100%
watcher/decision_engine/model/element/node.py ComputeNode 3 0 1 0 0 100%
watcher/decision_engine/model/element/node.py StorageNode 0 0 1 0 0 100%
watcher/decision_engine/model/element/node.py Pool 0 0 1 0 0 100%
watcher/decision_engine/model/element/node.py IronicNode 0 0 1 0 0 100%
watcher/decision_engine/model/element/node.py (no class) 33 0 0 0 0 100%
watcher/decision_engine/model/element/storage_resource.py StorageResource 0 0 0 0 0 100%
watcher/decision_engine/model/element/storage_resource.py (no class) 6 0 0 0 0 100%
watcher/decision_engine/model/element/volume.py VolumeState 0 0 0 0 0 100%
watcher/decision_engine/model/element/volume.py Volume 0 0 1 0 0 100%
watcher/decision_engine/model/element/volume.py (no class) 20 0 0 0 0 100%
watcher/decision_engine/model/model_root.py ModelRoot 145 7 0 50 7 93%
watcher/decision_engine/model/model_root.py StorageModelRoot 158 19 0 60 15 84%
watcher/decision_engine/model/model_root.py BaremetalModelRoot 36 3 0 6 0 93%
watcher/decision_engine/model/model_root.py (no class) 135 0 0 0 0 100%
watcher/decision_engine/model/notification/__init__.py (no class) 0 0 0 0 0 100%
watcher/decision_engine/model/notification/base.py NotificationEndpoint 4 0 2 0 0 100%
watcher/decision_engine/model/notification/base.py (no class) 5 0 3 0 0 100%
watcher/decision_engine/model/notification/cinder.py CinderNotification 115 28 0 24 4 74%
watcher/decision_engine/model/notification/cinder.py CapacityNotificationEndpoint 11 2 0 0 0 82%
watcher/decision_engine/model/notification/cinder.py VolumeNotificationEndpoint 0 0 0 0 0 100%
watcher/decision_engine/model/notification/cinder.py VolumeCreateEnd 9 0 0 0 0 100%
watcher/decision_engine/model/notification/cinder.py VolumeUpdateEnd 9 0 0 0 0 100%
watcher/decision_engine/model/notification/cinder.py VolumeAttachEnd 1 0 0 0 0 100%
watcher/decision_engine/model/notification/cinder.py VolumeDetachEnd 1 0 0 0 0 100%
watcher/decision_engine/model/notification/cinder.py VolumeResizeEnd 1 0 0 0 0 100%
watcher/decision_engine/model/notification/cinder.py VolumeDeleteEnd 14 3 0 0 0 79%
watcher/decision_engine/model/notification/cinder.py (no class) 48 0 0 0 0 100%
watcher/decision_engine/model/notification/filtering.py NotificationFilter 24 4 0 20 4 82%
watcher/decision_engine/model/notification/filtering.py (no class) 5 0 0 0 0 100%
watcher/decision_engine/model/notification/nova.py NovaNotification 118 22 0 28 9 79%
watcher/decision_engine/model/notification/nova.py VersionedNotification 49 4 0 8 2 89%
watcher/decision_engine/model/notification/nova.py (no class) 35 0 0 0 0 100%
watcher/decision_engine/planner/__init__.py (no class) 0 0 0 0 0 100%
watcher/decision_engine/planner/base.py BasePlanner 1 0 12 0 0 100%
watcher/decision_engine/planner/base.py (no class) 5 0 2 0 0 100%
watcher/decision_engine/planner/manager.py PlannerManager 4 0 0 0 0 100%
watcher/decision_engine/planner/manager.py (no class) 8 0 0 0 0 100%
watcher/decision_engine/planner/node_resource_consolidation.py NodeResourceConsolidationPlanner 65 7 0 22 1 91%
watcher/decision_engine/planner/node_resource_consolidation.py (no class) 13 0 0 0 0 100%
watcher/decision_engine/planner/weight.py WeightPlanner 63 8 0 26 3 88%
watcher/decision_engine/planner/weight.py (no class) 22 0 0 0 0 100%
watcher/decision_engine/planner/workload_stabilization.py WorkloadStabilizationPlanner 72 8 0 20 2 89%
watcher/decision_engine/planner/workload_stabilization.py BaseActionValidator 8 0 1 4 1 92%
watcher/decision_engine/planner/workload_stabilization.py MigrationActionValidator 4 0 0 0 0 100%
watcher/decision_engine/planner/workload_stabilization.py ResizeActionValidator 8 1 0 2 1 80%
watcher/decision_engine/planner/workload_stabilization.py ChangeNovaServiceStateActionValidator 3 3 0 0 0 0%
watcher/decision_engine/planner/workload_stabilization.py SleepActionValidator 1 1 0 0 0 0%
watcher/decision_engine/planner/workload_stabilization.py NOPActionValidator 1 0 0 0 0 100%
watcher/decision_engine/planner/workload_stabilization.py (no class) 44 0 2 0 0 100%
watcher/decision_engine/rpcapi.py DecisionEngineAPI 6 0 0 2 0 100%
watcher/decision_engine/rpcapi.py DecisionEngineAPIManager 7 0 0 0 0 100%
watcher/decision_engine/rpcapi.py (no class) 26 0 0 0 0 100%
watcher/decision_engine/scheduling.py DecisionEngineSchedulingService 36 1 0 6 1 95%
watcher/decision_engine/scheduling.py (no class) 24 0 0 0 0 100%
watcher/decision_engine/scope/__init__.py (no class) 0 0 0 0 0 100%
watcher/decision_engine/scope/baremetal.py BaremetalScope 26 3 0 20 7 78%
watcher/decision_engine/scope/baremetal.py (no class) 6 0 0 0 0 100%
watcher/decision_engine/scope/base.py BaseScope 3 0 1 0 0 100%
watcher/decision_engine/scope/base.py (no class) 4 0 2 0 0 100%
watcher/decision_engine/scope/compute.py ComputeScope 117 8 0 76 12 90%
watcher/decision_engine/scope/compute.py (no class) 18 0 0 0 0 100%
watcher/decision_engine/scope/storage.py StorageScope 91 3 0 62 7 93%
watcher/decision_engine/scope/storage.py (no class) 13 0 0 0 0 100%
watcher/decision_engine/scoring/__init__.py (no class) 0 0 0 0 0 100%
watcher/decision_engine/scoring/base.py ScoringEngine 1 0 41 0 0 100%
watcher/decision_engine/scoring/base.py ScoringEngineContainer 1 0 5 0 0 100%
watcher/decision_engine/scoring/base.py (no class) 8 0 11 0 0 100%
watcher/decision_engine/scoring/dummy_scorer.py DummyScorer 32 4 0 14 2 87%
watcher/decision_engine/scoring/dummy_scorer.py (no class) 24 0 0 0 0 100%
watcher/decision_engine/scoring/dummy_scoring_container.py DummyScoringContainer 1 0 0 0 0 100%
watcher/decision_engine/scoring/dummy_scoring_container.py SimpleFunctionScorer 18 4 0 4 2 73%
watcher/decision_engine/scoring/dummy_scoring_container.py (no class) 14 0 0 0 0 100%
watcher/decision_engine/scoring/scoring_factory.py (no class) 29 0 0 10 0 100%
watcher/decision_engine/solution/__init__.py (no class) 0 0 0 0 0 100%
watcher/decision_engine/solution/base.py BaseSolution 10 0 13 0 0 100%
watcher/decision_engine/solution/base.py (no class) 12 0 5 0 0 100%
watcher/decision_engine/solution/default.py DefaultSolution 14 2 0 8 1 86%
watcher/decision_engine/solution/default.py (no class) 11 0 0 0 0 100%
watcher/decision_engine/solution/efficacy.py IndicatorsMap 0 0 0 0 0 100%
watcher/decision_engine/solution/efficacy.py Indicator 7 1 0 2 1 78%
watcher/decision_engine/solution/efficacy.py Efficacy 19 3 0 2 0 86%
watcher/decision_engine/solution/efficacy.py (no class) 14 0 0 0 0 100%
watcher/decision_engine/solution/solution_comparator.py BaseSolutionComparator 0 0 1 0 0 100%
watcher/decision_engine/solution/solution_comparator.py (no class) 2 2 2 0 0 0%
watcher/decision_engine/solution/solution_evaluator.py BaseSolutionEvaluator 0 0 1 0 0 100%
watcher/decision_engine/solution/solution_evaluator.py (no class) 2 2 2 0 0 0%
watcher/decision_engine/strategy/__init__.py (no class) 0 0 0 0 0 100%
watcher/decision_engine/strategy/common/__init__.py (no class) 0 0 0 0 0 100%
watcher/decision_engine/strategy/common/level.py StrategyLevel 0 0 0 0 0 100%
watcher/decision_engine/strategy/common/level.py (no class) 6 0 0 0 0 100%
watcher/decision_engine/strategy/context/__init__.py (no class) 0 0 0 0 0 100%
watcher/decision_engine/strategy/context/base.py StrategyContext 8 0 10 0 0 100%
watcher/decision_engine/strategy/context/base.py (no class) 5 0 2 0 0 100%
watcher/decision_engine/strategy/context/default.py DefaultStrategyContext 17 0 0 4 1 95%
watcher/decision_engine/strategy/context/default.py (no class) 12 0 0 0 0 100%
watcher/decision_engine/strategy/selection/__init__.py (no class) 0 0 0 0 0 100%
watcher/decision_engine/strategy/selection/base.py BaseSelector 0 0 1 0 0 100%
watcher/decision_engine/strategy/selection/base.py (no class) 2 0 2 0 0 100%
watcher/decision_engine/strategy/selection/default.py DefaultStrategySelector 20 0 0 4 0 100%
watcher/decision_engine/strategy/selection/default.py (no class) 9 0 0 0 0 100%
watcher/decision_engine/strategy/strategies/__init__.py (no class) 33 0 0 0 0 100%
watcher/decision_engine/strategy/strategies/actuation.py Actuator 10 2 0 2 0 83%
watcher/decision_engine/strategy/strategies/actuation.py (no class) 18 0 0 0 0 100%
watcher/decision_engine/strategy/strategies/base.py StrategyEndpoint 37 15 0 14 3 61%
watcher/decision_engine/strategy/strategies/base.py BaseStrategy 100 31 28 36 6 61%
watcher/decision_engine/strategy/strategies/base.py DummyBaseStrategy 2 0 0 0 0 100%
watcher/decision_engine/strategy/strategies/base.py UnclassifiedStrategy 1 0 0 0 0 100%
watcher/decision_engine/strategy/strategies/base.py ServerConsolidationBaseStrategy 1 0 0 0 0 100%
watcher/decision_engine/strategy/strategies/base.py ThermalOptimizationBaseStrategy 1 0 0 0 0 100%
watcher/decision_engine/strategy/strategies/base.py WorkloadStabilizationBaseStrategy 3 0 0 0 0 100%
watcher/decision_engine/strategy/strategies/base.py NoisyNeighborBaseStrategy 1 0 0 0 0 100%
watcher/decision_engine/strategy/strategies/base.py SavingEnergyBaseStrategy 2 0 0 0 0 100%
watcher/decision_engine/strategy/strategies/base.py ZoneMigrationBaseStrategy 2 0 0 0 0 100%
watcher/decision_engine/strategy/strategies/base.py HostMaintenanceBaseStrategy 2 0 0 0 0 100%
watcher/decision_engine/strategy/strategies/base.py (no class) 117 0 18 0 0 100%
watcher/decision_engine/strategy/strategies/basic_consolidation.py BasicConsolidation 120 8 0 40 6 91%
watcher/decision_engine/strategy/strategies/basic_consolidation.py (no class) 45 0 0 0 0 100%
watcher/decision_engine/strategy/strategies/dummy_strategy.py DummyStrategy 14 1 0 0 0 93%
watcher/decision_engine/strategy/strategies/dummy_strategy.py (no class) 18 0 0 0 0 100%
watcher/decision_engine/strategy/strategies/dummy_with_resize.py DummyWithResize 17 15 0 0 0 12%
watcher/decision_engine/strategy/strategies/dummy_with_resize.py (no class) 18 0 0 0 0 100%
watcher/decision_engine/strategy/strategies/dummy_with_scorer.py DummyWithScorer 41 2 0 0 0 95%
watcher/decision_engine/strategy/strategies/dummy_with_scorer.py (no class) 26 0 0 0 0 100%
watcher/decision_engine/strategy/strategies/host_maintenance.py HostMaintenance 70 9 0 34 6 84%
watcher/decision_engine/strategy/strategies/host_maintenance.py (no class) 32 0 0 0 0 100%
watcher/decision_engine/strategy/strategies/node_resource_consolidation.py NodeResourceConsolidation 126 7 0 72 11 91%
watcher/decision_engine/strategy/strategies/node_resource_consolidation.py (no class) 28 0 0 0 0 100%
watcher/decision_engine/strategy/strategies/noisy_neighbor.py NoisyNeighbor 94 17 0 42 11 79%
watcher/decision_engine/strategy/strategies/noisy_neighbor.py (no class) 31 0 0 0 0 100%
watcher/decision_engine/strategy/strategies/outlet_temp_control.py OutletTempControl 77 17 0 28 10 74%
watcher/decision_engine/strategy/strategies/outlet_temp_control.py (no class) 29 0 0 0 0 100%
watcher/decision_engine/strategy/strategies/saving_energy.py SavingEnergy 62 9 0 22 4 82%
watcher/decision_engine/strategy/strategies/saving_energy.py (no class) 28 0 0 0 0 100%
watcher/decision_engine/strategy/strategies/storage_capacity_balance.py StorageCapacityBalance 194 25 0 84 21 83%
watcher/decision_engine/strategy/strategies/storage_capacity_balance.py (no class) 31 0 0 0 0 100%
watcher/decision_engine/strategy/strategies/uniform_airflow.py UniformAirflow 107 15 0 42 11 83%
watcher/decision_engine/strategy/strategies/uniform_airflow.py (no class) 29 0 0 0 0 100%
watcher/decision_engine/strategy/strategies/vm_workload_consolidation.py VMWorkloadConsolidation 208 22 0 94 15 86%
watcher/decision_engine/strategy/strategies/vm_workload_consolidation.py (no class) 48 0 0 0 0 100%
watcher/decision_engine/strategy/strategies/workload_balance.py WorkloadBalance 128 25 0 50 13 78%
watcher/decision_engine/strategy/strategies/workload_balance.py (no class) 26 0 0 0 0 100%
watcher/decision_engine/strategy/strategies/workload_stabilization.py WorkloadStabilization 205 22 0 86 13 87%
watcher/decision_engine/strategy/strategies/workload_stabilization.py (no class) 51 0 0 0 0 100%
watcher/decision_engine/strategy/strategies/zone_migration.py ZoneMigration 162 22 0 78 16 84%
watcher/decision_engine/strategy/strategies/zone_migration.py ActionCounter 31 4 0 12 4 81%
watcher/decision_engine/strategy/strategies/zone_migration.py BaseFilter 15 3 0 10 2 80%
watcher/decision_engine/strategy/strategies/zone_migration.py SortMovingToFrontFilter 9 2 0 6 1 80%
watcher/decision_engine/strategy/strategies/zone_migration.py ProjectSortFilter 8 0 0 4 1 92%
watcher/decision_engine/strategy/strategies/zone_migration.py ComputeHostSortFilter 5 0 0 0 0 100%
watcher/decision_engine/strategy/strategies/zone_migration.py StorageHostSortFilter 4 0 0 0 0 100%
watcher/decision_engine/strategy/strategies/zone_migration.py ComputeSpecSortFilter 39 1 0 24 6 89%
watcher/decision_engine/strategy/strategies/zone_migration.py StorageSpecSortFilter 9 2 0 4 1 77%
watcher/decision_engine/strategy/strategies/zone_migration.py (no class) 122 0 0 0 0 100%
watcher/decision_engine/sync.py Syncer 271 24 0 122 17 89%
watcher/decision_engine/sync.py (no class) 44 0 0 0 0 100%
watcher/decision_engine/threading.py DecisionEngineThreadPool 11 0 0 4 0 100%
watcher/decision_engine/threading.py (no class) 15 0 0 0 0 100%
watcher/eventlet.py (no class) 13 0 0 4 1 94%
watcher/notifications/__init__.py (no class) 7 0 0 0 0 100%
watcher/notifications/action.py ActionPayload 2 0 0 0 0 100%
watcher/notifications/action.py ActionStateUpdatePayload 0 0 0 0 0 100%
watcher/notifications/action.py ActionCreatePayload 1 0 0 0 0 100%
watcher/notifications/action.py ActionUpdatePayload 1 0 0 0 0 100%
watcher/notifications/action.py ActionExecutionPayload 1 0 0 0 0 100%
watcher/notifications/action.py ActionCancelPayload 1 0 0 0 0 100%
watcher/notifications/action.py ActionDeletePayload 1 0 0 0 0 100%
watcher/notifications/action.py ActionExecutionNotification 0 0 0 0 0 100%
watcher/notifications/action.py ActionCreateNotification 0 0 0 0 0 100%
watcher/notifications/action.py ActionUpdateNotification 0 0 0 0 0 100%
watcher/notifications/action.py ActionDeleteNotification 0 0 0 0 0 100%
watcher/notifications/action.py ActionCancelNotification 0 0 0 0 0 100%
watcher/notifications/action.py (no class) 119 0 0 6 0 100%
watcher/notifications/action_plan.py TerseActionPlanPayload 2 0 0 0 0 100%
watcher/notifications/action_plan.py ActionPlanPayload 5 0 0 4 2 78%
watcher/notifications/action_plan.py ActionPlanStateUpdatePayload 0 0 0 0 0 100%
watcher/notifications/action_plan.py ActionPlanCreatePayload 1 0 0 0 0 100%
watcher/notifications/action_plan.py ActionPlanUpdatePayload 1 0 0 0 0 100%
watcher/notifications/action_plan.py ActionPlanActionPayload 1 0 0 0 0 100%
watcher/notifications/action_plan.py ActionPlanDeletePayload 1 0 0 0 0 100%
watcher/notifications/action_plan.py ActionPlanCancelPayload 1 0 0 0 0 100%
watcher/notifications/action_plan.py ActionPlanActionNotification 0 0 0 0 0 100%
watcher/notifications/action_plan.py ActionPlanCreateNotification 0 0 0 0 0 100%
watcher/notifications/action_plan.py ActionPlanUpdateNotification 0 0 0 0 0 100%
watcher/notifications/action_plan.py ActionPlanDeleteNotification 0 0 0 0 0 100%
watcher/notifications/action_plan.py ActionPlanCancelNotification 0 0 0 0 0 100%
watcher/notifications/action_plan.py (no class) 125 0 0 4 0 100%
watcher/notifications/audit.py TerseAuditPayload 2 0 0 0 0 100%
watcher/notifications/audit.py AuditPayload 5 1 0 4 1 78%
watcher/notifications/audit.py AuditStateUpdatePayload 0 0 0 0 0 100%
watcher/notifications/audit.py AuditCreatePayload 1 0 0 0 0 100%
watcher/notifications/audit.py AuditUpdatePayload 1 0 0 0 0 100%
watcher/notifications/audit.py AuditActionPayload 1 0 0 0 0 100%
watcher/notifications/audit.py AuditDeletePayload 1 0 0 0 0 100%
watcher/notifications/audit.py AuditActionNotification 0 0 0 0 0 100%
watcher/notifications/audit.py AuditCreateNotification 0 0 0 0 0 100%
watcher/notifications/audit.py AuditUpdateNotification 0 0 0 0 0 100%
watcher/notifications/audit.py AuditDeleteNotification 0 0 0 0 0 100%
watcher/notifications/audit.py (no class) 105 0 0 6 0 100%
watcher/notifications/base.py NotificationObject 4 2 0 0 0 50%
watcher/notifications/base.py EventType 4 0 0 2 0 100%
watcher/notifications/base.py NotificationPayloadBase 8 0 0 4 1 92%
watcher/notifications/base.py NotificationPublisher 0 0 0 0 0 100%
watcher/notifications/base.py NotificationBase 15 2 0 6 0 90%
watcher/notifications/base.py (no class) 46 0 0 2 0 100%
watcher/notifications/exception.py ExceptionPayload 3 0 0 0 0 100%
watcher/notifications/exception.py ExceptionNotification 0 0 0 0 0 100%
watcher/notifications/exception.py (no class) 16 0 0 0 0 100%
watcher/notifications/goal.py GoalPayload 2 0 0 0 0 100%
watcher/notifications/goal.py (no class) 9 0 0 0 0 100%
watcher/notifications/service.py ServicePayload 2 0 0 0 0 100%
watcher/notifications/service.py ServiceStatusUpdatePayload 0 0 0 0 0 100%
watcher/notifications/service.py ServiceUpdatePayload 1 0 0 0 0 100%
watcher/notifications/service.py ServiceUpdateNotification 0 0 0 0 0 100%
watcher/notifications/service.py (no class) 35 2 0 2 1 92%
watcher/notifications/strategy.py StrategyPayload 2 0 0 0 0 100%
watcher/notifications/strategy.py (no class) 9 0 0 0 0 100%
watcher/objects/__init__.py (no class) 11 0 0 0 0 100%
watcher/objects/action.py State 0 0 0 0 0 100%
watcher/objects/action.py Action 33 0 0 4 0 100%
watcher/objects/action.py (no class) 38 0 0 0 0 100%
watcher/objects/action_description.py ActionDescription 25 3 0 6 1 87%
watcher/objects/action_description.py (no class) 22 0 0 0 0 100%
watcher/objects/action_plan.py State 0 0 0 0 0 100%
watcher/objects/action_plan.py ActionPlan 55 2 0 12 0 97%
watcher/objects/action_plan.py StateManager 7 0 0 2 0 100%
watcher/objects/action_plan.py (no class) 59 0 0 0 0 100%
watcher/objects/audit.py State 0 0 0 0 0 100%
watcher/objects/audit.py AuditType 0 0 0 0 0 100%
watcher/objects/audit.py Audit 52 3 0 8 0 95%
watcher/objects/audit.py AuditStateTransitionManager 2 0 0 0 0 100%
watcher/objects/audit.py (no class) 64 0 0 0 0 100%
watcher/objects/audit_template.py AuditTemplate 31 0 0 4 0 100%
watcher/objects/audit_template.py (no class) 31 0 0 0 0 100%
watcher/objects/base.py WatcherObjectRegistry 11 0 0 6 0 100%
watcher/objects/base.py WatcherObject 1 0 0 0 0 100%
watcher/objects/base.py WatcherObjectDictCompat 0 0 0 0 0 100%
watcher/objects/base.py WatcherComparableObject 0 0 0 0 0 100%
watcher/objects/base.py WatcherPersistentObject 18 0 0 14 0 100%
watcher/objects/base.py WatcherObjectSerializer 0 0 0 0 0 100%
watcher/objects/base.py (no class) 31 0 0 0 0 100%
watcher/objects/efficacy_indicator.py EfficacyIndicator 24 0 0 4 0 100%
watcher/objects/efficacy_indicator.py (no class) 27 0 0 0 0 100%
watcher/objects/fields.py UUIDField 3 0 0 2 0 100%
watcher/objects/fields.py Numeric 4 1 0 2 1 67%
watcher/objects/fields.py NumericField 0 0 0 0 0 100%
watcher/objects/fields.py DictField 0 0 0 0 0 100%
watcher/objects/fields.py ListOfUUIDsField 0 0 0 0 0 100%
watcher/objects/fields.py FlexibleDict 3 0 0 2 0 100%
watcher/objects/fields.py FlexibleDictField 3 1 0 2 1 60%
watcher/objects/fields.py FlexibleListOfDict 3 0 0 2 0 100%
watcher/objects/fields.py FlexibleListOfDictField 3 1 0 2 1 60%
watcher/objects/fields.py Json 6 1 0 2 0 88%
watcher/objects/fields.py JsonField 0 0 0 0 0 100%
watcher/objects/fields.py BaseWatcherEnum 1 0 0 0 0 100%
watcher/objects/fields.py NotificationPriority 0 0 0 0 0 100%
watcher/objects/fields.py NotificationPhase 0 0 0 0 0 100%
watcher/objects/fields.py NotificationAction 0 0 0 0 0 100%
watcher/objects/fields.py NotificationPriorityField 0 0 0 0 0 100%
watcher/objects/fields.py NotificationPhaseField 0 0 0 0 0 100%
watcher/objects/fields.py NotificationActionField 0 0 0 0 0 100%
watcher/objects/fields.py (no class) 75 0 0 0 0 100%
watcher/objects/goal.py Goal 31 1 0 4 1 94%
watcher/objects/goal.py (no class) 29 4 0 0 0 86%
watcher/objects/scoring_engine.py ScoringEngine 31 2 0 4 2 89%
watcher/objects/scoring_engine.py (no class) 27 0 0 0 0 100%
watcher/objects/service.py ServiceStatus 0 0 0 0 0 100%
watcher/objects/service.py Service 25 1 0 6 1 94%
watcher/objects/service.py (no class) 25 0 0 0 0 100%
watcher/objects/strategy.py Strategy 29 0 0 8 0 100%
watcher/objects/strategy.py (no class) 31 0 0 0 0 100%
watcher/version.py (no class) 3 0 0 0 0 100%
watcher/wsgi/__init__.py (no class) 0 0 0 0 0 100%
watcher/wsgi/api.py (no class) 6 6 0 2 0 0%
Total   15277 1453 1329 3142 528 88%

No items found using the specified filter.