You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
182 lines
7.4 KiB
182 lines
7.4 KiB
# Copyright (C) 2005-2024 Splunk Inc. All Rights Reserved.
|
|
|
|
|
|
class SuiteContent(object):
|
|
"""
|
|
This class defines Python data structures of ITSI suite content.
|
|
This class is designed to only implement data definition and simple helper methods
|
|
to construct, read and maintain these data structures.
|
|
Application logic interpreting these data structures should be implemented outside of this class.
|
|
"""
|
|
|
|
_RESTRICTED_SUITE = "standard"
|
|
_UNRESTRICTED_SUITE = "plus"
|
|
|
|
# changing _SUITES might affect the _SUITES_PERMISSIVENESS_ORDER
|
|
_SUITES = _RESTRICTED_SUITE, _UNRESTRICTED_SUITE
|
|
_SUITES_PERMISSIVENESS_ORDER = _SUITES
|
|
|
|
FEATURE_itsi_alerts_onboarding = "itsi_alerts_onboarding"
|
|
FEATURE_itsi_backup_restore = "itsi_backup_restore"
|
|
FEATURE_itsi_content_packs = "itsi_content_packs"
|
|
FEATURE_itsi_content_packs_authorship = "itsi_content_packs_authorship"
|
|
FEATURE_itsi_cp_service_overview = "itsi_cp_service_overview"
|
|
FEATURE_itsi_cp_infra_overview = "itsi_cp_infra_overview"
|
|
FEATURE_itsi_custom_threshold_windows = "itsi_custom_threshold_windows"
|
|
FEATURE_itsi_data_integration = "itsi_data_integration"
|
|
FEATURE_itsi_drift_detection = "itsi_drift_detection_configuration"
|
|
FEATURE_itsi_entities = "itsi_entities"
|
|
FEATURE_itsi_entity_lifecycle_management = "itsi_entity_lifecycle_management"
|
|
FEATURE_itsi_event_analytics = "itsi_event_analytics"
|
|
FEATURE_itsi_event_grouping = "itsi_event_grouping"
|
|
FEATURE_itsi_deep_dive = "itsi_deep_dive"
|
|
FEATURE_itsi_glass_table = "itsi_glass_table"
|
|
FEATURE_itsi_health_analytics_console = "itsi_health_analytics_console"
|
|
FEATURE_itsi_infrastructure_overview = "itsi_infrastructure_overview"
|
|
FEATURE_itsi_maintenance_window = "itsi_maintenance_window"
|
|
FEATURE_itsi_predictive_analytics = "itsi_predictive_analytics"
|
|
FEATURE_itsi_service_analyzer = "itsi_service_analyzer"
|
|
FEATURE_itsi_service_kpi_management = "itsi_service_kpi_management"
|
|
FEATURE_itsi_service_monitoring = "itsi_service_monitoring"
|
|
FEATURE_itsi_service_sandbox = "itsi_service_sandbox"
|
|
FEATURE_itsi_teams = "itsi_teams"
|
|
FEATURE_itsi_upgrade_readiness_precheck = "itsi_upgrade_readiness_precheck"
|
|
|
|
_FEATURES = {
|
|
FEATURE_itsi_alerts_onboarding,
|
|
FEATURE_itsi_backup_restore,
|
|
FEATURE_itsi_content_packs,
|
|
FEATURE_itsi_content_packs_authorship,
|
|
FEATURE_itsi_cp_service_overview,
|
|
FEATURE_itsi_cp_infra_overview,
|
|
FEATURE_itsi_custom_threshold_windows,
|
|
FEATURE_itsi_data_integration,
|
|
FEATURE_itsi_deep_dive,
|
|
FEATURE_itsi_drift_detection,
|
|
FEATURE_itsi_entities,
|
|
FEATURE_itsi_entity_lifecycle_management,
|
|
FEATURE_itsi_event_analytics,
|
|
FEATURE_itsi_event_grouping,
|
|
FEATURE_itsi_glass_table,
|
|
FEATURE_itsi_health_analytics_console,
|
|
FEATURE_itsi_infrastructure_overview,
|
|
FEATURE_itsi_maintenance_window,
|
|
FEATURE_itsi_predictive_analytics,
|
|
FEATURE_itsi_service_analyzer,
|
|
FEATURE_itsi_service_kpi_management,
|
|
FEATURE_itsi_service_monitoring,
|
|
FEATURE_itsi_service_sandbox,
|
|
FEATURE_itsi_teams,
|
|
FEATURE_itsi_upgrade_readiness_precheck
|
|
}
|
|
|
|
_SUITE_TO_FEATURES = {
|
|
_RESTRICTED_SUITE: {
|
|
FEATURE_itsi_alerts_onboarding: False,
|
|
FEATURE_itsi_backup_restore: True,
|
|
FEATURE_itsi_content_packs: True,
|
|
FEATURE_itsi_content_packs_authorship: False,
|
|
FEATURE_itsi_cp_service_overview: False,
|
|
FEATURE_itsi_cp_infra_overview: True,
|
|
FEATURE_itsi_custom_threshold_windows: False,
|
|
FEATURE_itsi_data_integration: True,
|
|
FEATURE_itsi_deep_dive: False,
|
|
FEATURE_itsi_drift_detection: False,
|
|
FEATURE_itsi_entities: True,
|
|
FEATURE_itsi_entity_lifecycle_management: False,
|
|
FEATURE_itsi_event_analytics: False,
|
|
FEATURE_itsi_event_grouping: False,
|
|
FEATURE_itsi_glass_table: False,
|
|
FEATURE_itsi_health_analytics_console: False,
|
|
FEATURE_itsi_infrastructure_overview: True,
|
|
FEATURE_itsi_maintenance_window: False,
|
|
FEATURE_itsi_predictive_analytics: False,
|
|
FEATURE_itsi_service_analyzer: False,
|
|
FEATURE_itsi_service_kpi_management: False,
|
|
FEATURE_itsi_service_monitoring: False,
|
|
FEATURE_itsi_service_sandbox: False,
|
|
FEATURE_itsi_teams: False,
|
|
FEATURE_itsi_upgrade_readiness_precheck: False
|
|
},
|
|
_UNRESTRICTED_SUITE: {
|
|
FEATURE_itsi_alerts_onboarding: True,
|
|
FEATURE_itsi_backup_restore: True,
|
|
FEATURE_itsi_content_packs: True,
|
|
FEATURE_itsi_content_packs_authorship: True,
|
|
FEATURE_itsi_cp_service_overview: True,
|
|
FEATURE_itsi_cp_infra_overview: True,
|
|
FEATURE_itsi_custom_threshold_windows: True,
|
|
FEATURE_itsi_data_integration: True,
|
|
FEATURE_itsi_deep_dive: True,
|
|
FEATURE_itsi_drift_detection: True,
|
|
FEATURE_itsi_entities: True,
|
|
FEATURE_itsi_entity_lifecycle_management: True,
|
|
FEATURE_itsi_event_analytics: True,
|
|
FEATURE_itsi_event_grouping: True,
|
|
FEATURE_itsi_glass_table: True,
|
|
FEATURE_itsi_health_analytics_console: True,
|
|
FEATURE_itsi_infrastructure_overview: True,
|
|
FEATURE_itsi_maintenance_window: True,
|
|
FEATURE_itsi_predictive_analytics: True,
|
|
FEATURE_itsi_service_analyzer: True,
|
|
FEATURE_itsi_service_kpi_management: True,
|
|
FEATURE_itsi_service_monitoring: True,
|
|
FEATURE_itsi_service_sandbox: True,
|
|
FEATURE_itsi_teams: True,
|
|
FEATURE_itsi_upgrade_readiness_precheck: True
|
|
}
|
|
}
|
|
|
|
@staticmethod
|
|
def verify_suite_to_features_definition():
|
|
for key, val in SuiteContent._SUITE_TO_FEATURES.items():
|
|
assert set(val.keys()) == SuiteContent._FEATURES
|
|
assert key in SuiteContent._SUITES
|
|
|
|
@staticmethod
|
|
def get_features_for_suite(suite_name):
|
|
"""
|
|
Returns features and whether they are enabled or not for a particular ITSI suite
|
|
|
|
@type: str
|
|
@param suite_name: suite name
|
|
|
|
@rtype: dict
|
|
@return: dict of this form: {feature_name1: <boolean>, feature_name2: <boolean>,...,feature_nameN: enabled}
|
|
"""
|
|
|
|
assert SuiteContent.is_known_suite(suite_name)
|
|
return SuiteContent._SUITE_TO_FEATURES.get(suite_name)
|
|
|
|
@staticmethod
|
|
def least_permissible_suite():
|
|
return SuiteContent.get_suite_by_permissiveness_level(0)
|
|
|
|
@staticmethod
|
|
def most_permissible_suite():
|
|
return SuiteContent._SUITES_PERMISSIVENESS_ORDER[len(SuiteContent._SUITES_PERMISSIVENESS_ORDER) - 1]
|
|
|
|
@staticmethod
|
|
def is_known_suite(suite):
|
|
return suite in SuiteContent._SUITES
|
|
|
|
@staticmethod
|
|
def get_suite_permissiveness_level(suite):
|
|
assert SuiteContent.is_known_suite(suite)
|
|
return SuiteContent._SUITES_PERMISSIVENESS_ORDER.index(suite)
|
|
|
|
@staticmethod
|
|
def most_restrictive_suite_level():
|
|
return SuiteContent.get_suite_permissiveness_level(SuiteContent._RESTRICTED_SUITE)
|
|
|
|
@staticmethod
|
|
def get_suite_by_permissiveness_level(level):
|
|
return SuiteContent._SUITES_PERMISSIVENESS_ORDER[level]
|
|
|
|
@staticmethod
|
|
def features():
|
|
return SuiteContent._FEATURES
|
|
|
|
|
|
SuiteContent.verify_suite_to_features_definition()
|