SYMBOL INDEX (5649 symbols across 665 files) FILE: bin/changelog_generator.py function lint_name_generator (line 25) | def lint_name_generator(file_path): function find_queries (line 38) | def find_queries(file, commit): function generate_release_notes (line 70) | def generate_release_notes(old_commit, new_commit, current_version): FILE: bin/generate_steps.py function fetch_and_list_steps (line 23) | def fetch_and_list_steps(output_file_path: str, base_url_path: str): function main (line 95) | def main(argv: Sequence[str]) -> None: FILE: cookiecutter-gcpdiag-rule/{{cookiecutter.__name}}/gcpdiag/lint/{{cookiecutter.product}}/{{cookiecutter.severity.lower()}}_{{cookiecutter.year}}_{{cookiecutter.number}}_{{cookiecutter.__name}}.py function prepare_rule (line 22) | def prepare_rule(context: models.Context): function prefetch_rule (line 47) | def prefetch_rule(context: models.Context): function run_rule (line 79) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/async_queries/api/api.py class Creds (line 9) | class Creds(Protocol): method update_headers (line 11) | def update_headers(self, headers: Dict[str, str]) -> None: class Sleeper (line 15) | class Sleeper(Protocol): method sleep (line 17) | async def sleep(self, seconds: float) -> None: class RetryStrategy (line 21) | class RetryStrategy(Protocol): method get_sleep_intervals (line 23) | def get_sleep_intervals(self) -> Iterable[float]: class API (line 27) | class API: method __init__ (line 30) | def __init__(self, creds: Creds, retry_strategy: RetryStrategy, method call (line 36) | async def call(self, method _get_headers (line 53) | def _get_headers(self) -> Dict[str, str]: FILE: gcpdiag/async_queries/api/api_slowtest.py class FakeCreds (line 14) | class FakeCreds: method __init__ (line 17) | def __init__(self, token: str) -> None: method update_headers (line 20) | def update_headers(self, headers: Dict[str, str]) -> None: class FakeSleeper (line 24) | class FakeSleeper: method __init__ (line 27) | def __init__(self) -> None: method sleep (line 30) | async def sleep(self, seconds: float) -> None: class TestAPI (line 35) | class TestAPI(unittest.IsolatedAsyncioTestCase): method asyncSetUp (line 38) | async def asyncSetUp(self) -> None: method asyncTearDown (line 51) | async def asyncTearDown(self) -> None: method test_get_response (line 54) | async def test_get_response(self) -> None: method test_enough_retries (line 60) | async def test_enough_retries(self) -> None: method test_not_enough_retries (line 71) | async def test_not_enough_retries(self) -> None: method test_http_429_retried (line 83) | async def test_http_429_retried(self) -> None: method test_other_4xx_http_not_retried (line 94) | async def test_other_4xx_http_not_retried(self) -> None: FILE: gcpdiag/async_queries/api/constant_time_retry_strategy.py class ConstantTimeoutRetryStrategy (line 5) | class ConstantTimeoutRetryStrategy: method __init__ (line 11) | def __init__(self, retries: int, timeout: int) -> None: method get_sleep_intervals (line 15) | def get_sleep_intervals(self) -> Iterator[float]: FILE: gcpdiag/async_queries/api/default_random.py class Random (line 5) | class Random: method generate (line 8) | def generate(self) -> float: FILE: gcpdiag/async_queries/api/exponential_random_retry_strategy.py class Random (line 10) | class Random(Protocol): method generate (line 12) | def generate(self) -> float: class ExponentialRandomTimeoutRetryStrategy (line 16) | class ExponentialRandomTimeoutRetryStrategy: method __init__ (line 27) | def __init__(self, retries: int, random_pct: float, multiplier: float, method get_sleep_intervals (line 34) | def get_sleep_intervals(self) -> Iterator[float]: FILE: gcpdiag/async_queries/api/exponential_random_retry_strategy_test.py class FakeRandom (line 10) | class FakeRandom: method __init__ (line 14) | def __init__(self, numbers: List[float]) -> None: method generate (line 17) | def generate(self) -> float: function test_retries (line 21) | def test_retries() -> None: FILE: gcpdiag/async_queries/api/gcpdiag_creds.py function refresh_google_auth_creds (line 13) | def refresh_google_auth_creds(creds: Any) -> None: class GcpdiagCreds (line 18) | class GcpdiagCreds: method update_headers (line 24) | def update_headers(self, headers: Dict[str, str]) -> None: FILE: gcpdiag/async_queries/api/get_api.py function pick_creds_implementation (line 8) | def pick_creds_implementation() -> api.Creds: function get_api (line 20) | def get_api() -> api.API: FILE: gcpdiag/async_queries/api/sleeper.py class Sleeper (line 8) | class Sleeper: method sleep (line 10) | async def sleep(self, seconds: float) -> None: FILE: gcpdiag/async_queries/api/test_webserver.py class Response (line 7) | class Response(Protocol): method get_response (line 9) | def get_response(self) -> Any: class Success (line 13) | class Success: method __init__ (line 16) | def __init__(self, data: Any) -> None: method get_response (line 19) | def get_response(self) -> Any: class Failure (line 30) | class Failure: method __init__ (line 34) | def __init__(self, status: int = 500) -> None: method get_response (line 37) | def get_response(self) -> Any: class WebServer (line 46) | class WebServer: method __init__ (line 51) | def __init__(self, port: int, expected_auth_token: str) -> None: method start (line 56) | async def start(self) -> None: method stop (line 75) | async def stop(self) -> None: FILE: gcpdiag/async_queries/dataproc/dataproc.py class Region (line 10) | class Region: method __init__ (line 17) | def __init__(self, api: protocols.API, project_id: str, region: str): method load (line 23) | async def load(self) -> None: method clusters (line 32) | def clusters(self) -> List[dataproc.Cluster]: method _clusters_descriptions (line 36) | def _clusters_descriptions(self) -> List[Any]: method _mk_cluster (line 42) | def _mk_cluster(self, desc: Any) -> dataproc.Cluster: class ProjectRegions (line 51) | class ProjectRegions(Protocol): method get_all (line 53) | async def get_all(self) -> Iterable[str]: class Dataproc (line 57) | class Dataproc: method __init__ (line 65) | def __init__(self, api: protocols.API, project_id: str, method list_clusters (line 73) | async def list_clusters(self) -> List[str]: method get_cluster_by_name (line 77) | async def get_cluster_by_name(self, cluster_name: str) -> dataproc.Clu... method _load (line 81) | async def _load(self) -> None: method _mk_region (line 89) | def _mk_region(self, region: str) -> Region: FILE: gcpdiag/async_queries/dataproc/dataproc_test.py class FakeProjectRegions (line 12) | class FakeProjectRegions: method __init__ (line 14) | def __init__(self, regions: List[str]) -> None: method get_all (line 17) | async def get_all(self) -> List[str]: class TestProjectRegions (line 21) | class TestProjectRegions(unittest.IsolatedAsyncioTestCase): method setUp (line 24) | def setUp(self) -> None: method test_list_clusters (line 57) | async def test_list_clusters(self) -> None: method test_cluster_status (line 61) | async def test_cluster_status(self) -> None: method test_deduplication (line 70) | async def test_deduplication(self) -> None: FILE: gcpdiag/async_queries/project/get_project.py function get_project (line 8) | def get_project(project_id: str) -> project.Project: FILE: gcpdiag/async_queries/project/project.py class Project (line 9) | class Project: method __init__ (line 14) | def __init__(self, api: protocols.API, project_id: str) -> None: method dataproc (line 19) | def dataproc(self) -> dataproc.Dataproc: method _project_regions (line 25) | def _project_regions(self) -> project_regions.ProjectRegions: FILE: gcpdiag/async_queries/project_regions.py class ProjectRegions (line 7) | class ProjectRegions: method __init__ (line 14) | def __init__(self, api: protocols.API, project_id: str) -> None: method get_all (line 20) | async def get_all(self) -> List[str]: method load (line 25) | async def load(self) -> None: method call_api (line 29) | async def call_api(self) -> Any: method parse_resp (line 36) | def parse_resp(self, resp: Any) -> List[str]: FILE: gcpdiag/async_queries/project_regions_test.py class TestProjectRegions (line 10) | class TestProjectRegions(IsolatedAsyncioTestCase): method setUp (line 13) | def setUp(self) -> None: method test_happy_path (line 28) | async def test_happy_path(self) -> None: method test_deduplication (line 32) | async def test_deduplication(self) -> None: FILE: gcpdiag/async_queries/utils/fake_api.py class APICall (line 6) | class APICall: method __init__ (line 12) | def __init__(self, method: str, url: str, json: Any = None) -> None: method __eq__ (line 17) | def __eq__(self, other: Any) -> bool: method __repr__ (line 21) | def __repr__(self) -> str: class FakeAPI (line 25) | class FakeAPI: method __init__ (line 30) | def __init__(self, responses: List[Tuple[APICall, Any]]) -> None: method call (line 34) | async def call(self, method get_response (line 43) | def get_response(self, call: APICall) -> Any: method count_calls (line 49) | def count_calls(self, call: APICall) -> int: FILE: gcpdiag/async_queries/utils/loader.py class Loader (line 9) | class Loader: method __init__ (line 40) | def __init__(self, load_coroutine: Callable[[], Coroutine]) -> None: method ensure_loaded (line 44) | async def ensure_loaded(self) -> None: FILE: gcpdiag/async_queries/utils/protocols.py class API (line 6) | class API(Protocol): method call (line 8) | async def call(self, class ProjectRegions (line 15) | class ProjectRegions(Protocol): method get_all (line 17) | async def get_all(self) -> Iterable[str]: FILE: gcpdiag/caching.py function _set_bypass_cache (line 40) | def _set_bypass_cache(value: bool): function _get_bypass_cache (line 49) | def _get_bypass_cache(): function configure_global_cache (line 57) | def configure_global_cache(enabled: bool): function bypass_cache (line 64) | def bypass_cache(): function _clean_cache (line 77) | def _clean_cache(): function _close_cache (line 90) | def _close_cache(): function get_disk_cache (line 96) | def get_disk_cache() -> diskcache.Cache: function _clean_tmp_deque (line 112) | def _clean_tmp_deque(): function get_tmp_deque (line 118) | def get_tmp_deque(prefix='tmp-deque-') -> diskcache.Deque: function _make_key (line 135) | def _make_key(func, args, kwargs): function _acquire_timeout (line 146) | def _acquire_timeout(lock, timeout, name): function cached_api_call (line 162) | def cached_api_call(expire=None, in_memory=False): FILE: gcpdiag/caching_test.py function simple_function (line 27) | def simple_function(mixer_arg): class CacheBypassTests (line 38) | class CacheBypassTests(unittest.TestCase): method test_cache_bypass_in_memory (line 41) | def test_cache_bypass_in_memory(self): method test_cache_bypass_disk_cache (line 59) | def test_cache_bypass_disk_cache(self): method test_thread_safe_caching (line 75) | def test_thread_safe_caching(self): class UseCacheTests (line 95) | class UseCacheTests(unittest.TestCase): method test_enable_use_cache (line 98) | def test_enable_use_cache(self): method test_disable_use_cache (line 110) | def test_disable_use_cache(self): method test_exception_raised_when_cache_disabled (line 120) | def test_exception_raised_when_cache_disabled(self): FILE: gcpdiag/config.py function set_cache_dir (line 72) | def set_cache_dir(path: str): function get_cache_dir (line 79) | def get_cache_dir(): function _get_default_report_dir (line 98) | def _get_default_report_dir(): function init (line 143) | def init(args, is_cloud_shell=False): function set_project_id (line 177) | def set_project_id(project_id): function get_project_id (line 183) | def get_project_id(): function get (line 188) | def get(key): FILE: gcpdiag/config_test.py class Test (line 64) | class Test: method clear_globals (line 68) | def clear_globals(self): method test_static_properties (line 76) | def test_static_properties(self): method test_default_dynamic_properties (line 81) | def test_default_dynamic_properties(self): method test_overwrite_dynamic_properties (line 91) | def test_overwrite_dynamic_properties(self): method test_include (line 103) | def test_include(self): method test_exclude (line 111) | def test_exclude(self): method test_empty_config (line 119) | def test_empty_config(self): method test_sample_config (line 132) | def test_sample_config(self): method test_logging_config (line 148) | def test_logging_config(self): method test_per_project_config (line 163) | def test_per_project_config(self): FILE: gcpdiag/context.py class ContextProvider (line 19) | class ContextProvider(abc.ABC): method setup_thread_context (line 23) | def setup_thread_context(self) -> None: method teardown_thread_context (line 28) | def teardown_thread_context(self) -> None: FILE: gcpdiag/executor.py function _get_real_executor (line 24) | def _get_real_executor() -> concurrent.futures.ThreadPoolExecutor: function _context_wrapper (line 32) | def _context_wrapper(fn, context: models.Context): class ContextAwareExecutor (line 47) | class ContextAwareExecutor: method __init__ (line 54) | def __init__(self, context: models.Context): method submit (line 58) | def submit(self, fn: Callable[..., Any], *args: Any, method map (line 63) | def map( method shutdown (line 76) | def shutdown(self, wait: bool = True): method __enter__ (line 80) | def __enter__(self): method __exit__ (line 83) | def __exit__(self, exc_type, exc_val, exc_tb): function get_executor (line 87) | def get_executor(context: models.Context) -> ContextAwareExecutor: FILE: gcpdiag/executor_test.py class ContextAwareExecutorTest (line 24) | class ContextAwareExecutorTest(unittest.TestCase): method test_context_propagation_with_submit (line 26) | def test_context_propagation_with_submit(self): method test_context_propagation_with_map (line 39) | def test_context_propagation_with_map(self): FILE: gcpdiag/hooks.py function set_lint_args_hook (line 22) | def set_lint_args_hook(args): function set_runbook_args_hook (line 34) | def set_runbook_args_hook(args): function verify_access_hook (line 46) | def verify_access_hook(project_id: str): function request_builder_hook (line 58) | def request_builder_hook(*args, **kwargs): function post_lint_hook (line 71) | def post_lint_hook(report): function post_runbook_hook (line 83) | def post_runbook_hook(report): FILE: gcpdiag/lint/__init__.py class LintRuleClass (line 45) | class LintRuleClass(enum.Enum): method __str__ (line 57) | def __str__(self): class LintRule (line 62) | class LintRule: method __hash__ (line 76) | def __hash__(self): method __str__ (line 79) | def __str__(self): method doc_url (line 83) | def doc_url(self) -> str: class LintRuleResult (line 88) | class LintRuleResult: class LintReportRuleInterface (line 95) | class LintReportRuleInterface: method __init__ (line 101) | def __init__(self, rule: LintRule, lint_result: 'LintResults') -> None: method overall_status (line 107) | def overall_status(self) -> str: method _any_result_with_status (line 115) | def _any_result_with_status(self, status: str) -> bool: method add_skipped (line 118) | def add_skipped(self, method add_ok (line 128) | def add_ok(self, resource: models.Resource, short_info: str = '') -> N... method add_failed (line 135) | def add_failed(self, method finish (line 145) | def finish(self) -> None: class LintResultsHandler (line 149) | class LintResultsHandler(Protocol): method process_rule_report (line 159) | def process_rule_report(self, rule_report: LintReportRuleInterface) ->... class LintResults (line 163) | class LintResults: method __init__ (line 168) | def __init__(self) -> None: method get_rule_reports (line 172) | def get_rule_reports(self) -> List[LintReportRuleInterface]: method add_result_handler (line 175) | def add_result_handler(self, handler: LintResultsHandler) -> None: method create_rule_report (line 185) | def create_rule_report(self, rule: LintRule) -> LintReportRuleInterface: method register_finished_rule_report (line 188) | def register_finished_rule_report( method _notify_result_handlers (line 193) | def _notify_result_handlers(self, method get_totals_by_status (line 198) | def get_totals_by_status(self) -> Dict[str, int]: method get_rule_statuses (line 206) | def get_rule_statuses(self) -> Dict[str, str]: method any_failed (line 210) | def any_failed(self) -> bool: class LintRulesPattern (line 214) | class LintRulesPattern: method __init__ (line 234) | def __init__(self, pattern_str: str): method __str__ (line 264) | def __str__(self): method match_rule (line 269) | def match_rule(self, rule: LintRule) -> bool: class NotLintRule (line 282) | class NotLintRule(Exception): function is_function_named (line 287) | def is_function_named(name: str) -> Callable[[Any], bool]: function get_module_function_or_none (line 291) | def get_module_function_or_none(module: types.ModuleType, class ExecutionStrategy (line 298) | class ExecutionStrategy(Protocol): method run_rules (line 300) | def run_rules(self, context: models.Context, result: LintResults, method filter_runnable_rules (line 304) | def filter_runnable_rules(self, class SequentialExecutionStrategy (line 309) | class SequentialExecutionStrategy: method __init__ (line 316) | def __init__(self, strategies: List[ExecutionStrategy]) -> None: method filter_runnable_rules (line 319) | def filter_runnable_rules(self, rules: Iterable[LintRule]) -> List[Lin... method run_rules (line 327) | def run_rules(self, context: models.Context, result: LintResults, class RuleModule (line 333) | class RuleModule: method __init__ (line 337) | def __init__(self, python_module: types.ModuleType) -> None: method __repr__ (line 340) | def __repr__(self) -> str: method get_method (line 343) | def get_method(self, method_name: str) -> Optional[Callable]: method get_attr (line 346) | def get_attr(self, attribute_name: str) -> Optional[Any]: method get_module_doc (line 349) | def get_module_doc(self) -> Optional[str]: class DefaultPythonModulesGateway (line 353) | class DefaultPythonModulesGateway: method list_pkg_modules (line 356) | def list_pkg_modules(self, pkg: Any) -> List[str]: method get_module (line 360) | def get_module(self, name: str) -> RuleModule: class PythonModulesGateway (line 365) | class PythonModulesGateway(Protocol): method list_pkg_modules (line 367) | def list_pkg_modules(self, pkg: Any) -> Iterable[str]: method get_module (line 370) | def get_module(self, name: str) -> RuleModule: function pick_default_execution_strategy (line 374) | def pick_default_execution_strategy(run_async: bool) -> ExecutionStrategy: class LintRuleRepository (line 383) | class LintRuleRepository: method __init__ (line 390) | def __init__(self, method rules_to_run (line 407) | def rules_to_run(self) -> Iterable[LintRule]: method _rules_filtered (line 411) | def _rules_filtered(self) -> Iterator[LintRule]: method get_rule_by_module_name (line 423) | def get_rule_by_module_name(self, name: str) -> LintRule: method load_rules (line 494) | def load_rules(self, pkg: types.ModuleType) -> None: method _register_rule (line 505) | def _register_rule(self, rule: LintRule): method run_rules (line 508) | def run_rules(self, context: models.Context) -> None: class AsyncRunner (line 515) | class AsyncRunner: method __init__ (line 518) | def __init__(self, context: models.Context, result: LintResults, method run (line 524) | def run(self) -> None: method _run_all (line 527) | async def _run_all(self) -> None: method _run_async_rule (line 531) | async def _run_async_rule(self, rule: LintRule) -> None: class AsyncExecutionStrategy (line 538) | class AsyncExecutionStrategy: method run_rules (line 541) | def run_rules(self, context: models.Context, result: LintResults, method filter_runnable_rules (line 546) | def filter_runnable_rules(self, rules: Iterable[LintRule]) -> List[Lin... function wrap_prefetch_rule_f (line 550) | def wrap_prefetch_rule_f(rule_name, prefetch_rule_f, context): class SyncExecutionStrategy (line 557) | class SyncExecutionStrategy: method filter_runnable_rules (line 560) | def filter_runnable_rules(self, rules: Iterable[LintRule]) -> List[Lin... method run_rules (line 563) | def run_rules(self, context: models.Context, result: LintResults, FILE: gcpdiag/lint/apigee/apigee_rules_snapshot_test.py class Test (line 19) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/lint/apigee/err_2022_001_p4sa_perm.py function prefetch_rule (line 27) | def prefetch_rule(context: models.Context): function run_rule (line 31) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/apigee/err_2022_002_p4sa_kms_key_perm.py function _run_rule_kms_key (line 31) | def _run_rule_kms_key(context: models.Context, function run_rule (line 52) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... function _is_valid_kms_key (line 79) | def _is_valid_kms_key(kms_key): function _apigee_sa_has_role_permissions (line 83) | def _apigee_sa_has_role_permissions(context: models.Context, kms_key_name, FILE: gcpdiag/lint/apigee/err_2023_001_vpc_peering_created.py function run_rule (line 27) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/apigee/err_2023_002_routing_with_mig.py function prefetch_rule (line 28) | def prefetch_rule(context: models.Context): function run_rule (line 34) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/apigee/err_2023_003_pga_on_mig_subnet.py function prefetch_rule (line 27) | def prefetch_rule(context: models.Context): function run_rule (line 33) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/apigee/err_2023_004_p4nsa_perm.py function run_rule (line 31) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/apigee/err_2023_005_fw_rule_xlb_to_mig.py function prefetch_rule (line 29) | def prefetch_rule(context: models.Context): function run_rule (line 34) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/apigee/err_2023_006_multiple_migs_for_multiple_regions.py function prefetch_rule (line 26) | def prefetch_rule(context: models.Context): function run_rule (line 32) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/apigee/warn_2021_001_empty_env.py function run_rule (line 26) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/apigee/warn_2022_001_env_groups_created.py function prepare_rule (line 39) | def prepare_rule(context: models.Context): function run_rule (line 47) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/apigee/warn_2022_002_env_not_attached.py function run_rule (line 25) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/asm/asm_rules_snapshot_test.py class Test (line 19) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/lint/asm/err_2023_001_traffic_4xx.py function prepare_rule (line 26) | def prepare_rule(context: models.Context): function run_rule (line 37) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/asm/err_2023_002_traffic_5xx.py function prepare_rule (line 26) | def prepare_rule(context: models.Context): function run_rule (line 37) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/asm/err_2024_001_secret_not_found.py function prepare_rule (line 36) | def prepare_rule(context: models.Context): function run_rule (line 47) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/asm/err_2024_002_istiod_resource_issues.py function prepare_rule (line 34) | def prepare_rule(context: models.Context): function run_rule (line 47) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/asm/warn_2023_001_grpc_reset.py function prepare_rule (line 28) | def prepare_rule(context: models.Context): function run_rule (line 40) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/asm/warn_2024_001_webhook.py function prepare_rule (line 32) | def prepare_rule(context: models.Context): function run_rule (line 44) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/asm/warn_2025_001_delayedconnect111.py function prepare_rule (line 33) | def prepare_rule(context: models.Context): function run_rule (line 45) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/asm/warn_2025_002_protocolerror.py function prepare_rule (line 29) | def prepare_rule(context: models.Context): function run_rule (line 39) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/bigquery/bigquery_rules_snapshot_test.py class Test (line 19) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/lint/bigquery/err_2022_001_concurrent_dml_updates.py function prepare_rule (line 35) | def prepare_rule(context: models.Context): function run_rule (line 43) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/bigquery/err_2022_002_response_too_large.py function prepare_rule (line 35) | def prepare_rule(context: models.Context): function run_rule (line 43) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/bigquery/err_2022_003_permission_denied_drive_credentials.py function prepare_rule (line 36) | def prepare_rule(context: models.Context): function run_rule (line 44) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/bigquery/err_2022_004_exceeded_limit_shuffle.py function prepare_rule (line 36) | def prepare_rule(context: models.Context): function run_rule (line 44) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/bigquery/err_2023_001_job_not_found_error.py function prepare_rule (line 41) | def prepare_rule(context: models.Context): function run_rule (line 49) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/bigquery/err_2023_002_dataset_not_found.py function prepare_rule (line 42) | def prepare_rule(context: models.Context): function run_rule (line 50) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/bigquery/err_2023_003_resource_exceeded.py function prepare_rule (line 39) | def prepare_rule(context: models.Context): function run_rule (line 48) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/bigquery/err_2023_004_concurrent_dml.py function prepare_rule (line 40) | def prepare_rule(context: models.Context): function run_rule (line 49) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/bigquery/err_2023_005_outdated_credentials_for_scheduled_queries.py function prepare_rule (line 36) | def prepare_rule(context: models.Context): function run_rule (line 44) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/bigquery/err_2023_006_bigquery_policy_do_not_belong_to_user.py function prepare_rule (line 39) | def prepare_rule(context: models.Context): function run_rule (line 48) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/bigquery/err_2023_007_data_transfer_service_agent_does_not_exist.py function run_rule (line 26) | def run_rule(context: models.Context, FILE: gcpdiag/lint/bigquery/err_2023_008_user_not_authorized_to_perform_this_action.py function prepare_rule (line 36) | def prepare_rule(context: models.Context): function run_rule (line 45) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/bigquery/err_2023_009_not_consistent_with_destination_dataset.py function prepare_rule (line 38) | def prepare_rule(context: models.Context): function run_rule (line 48) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/bigquery/err_2024_001_query_too_complex.py function prepare_rule (line 41) | def prepare_rule(context: models.Context): function run_rule (line 50) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/bigquery/warn_2022_001_exceeded_rate_limits.py function prepare_rule (line 39) | def prepare_rule(context: models.Context): function run_rule (line 47) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/bigquery/warn_2022_002_column_level_security.py function prepare_rule (line 38) | def prepare_rule(context: models.Context): function run_rule (line 46) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/bigquery/warn_2022_003_copy_job_quota.py function prepare_rule (line 36) | def prepare_rule(context: models.Context): function run_rule (line 44) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/bigquery/warn_2022_004_cross_region_copy_job_quota.py function prepare_rule (line 36) | def prepare_rule(context: models.Context): function run_rule (line 44) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/bigquery/warn_2023_001_query_job_timed_out.py function prepare_rule (line 38) | def prepare_rule(context: models.Context): function run_rule (line 47) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/bigquery/warn_2023_002_wildcard_tables_query.py function prepare_rule (line 38) | def prepare_rule(context: models.Context): function run_rule (line 46) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/bigquery/warn_2023_003_too_many_output_column.py function prepare_rule (line 37) | def prepare_rule(context: models.Context): function run_rule (line 46) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/bigquery/warn_2023_004_bigquery_kms_errors.py function prepare_rule (line 41) | def prepare_rule(context: models.Context): function run_rule (line 50) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/bigquery/warn_2024_001_imports_or_query_appends_per_table.py function prepare_rule (line 37) | def prepare_rule(context: models.Context): function run_rule (line 46) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/bigquery/warn_2024_002_invalid_external_connection.py function prepare_rule (line 37) | def prepare_rule(context: models.Context): function run_rule (line 46) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/bigquery/warn_2024_003_too_many_concurrent_api_requests.py function prepare_rule (line 37) | def prepare_rule(context: models.Context): function run_rule (line 46) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/bigquery/warn_2024_004_too_many_concurrent_queries.py function prepare_rule (line 39) | def prepare_rule(context: models.Context): function run_rule (line 48) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/bigquery/warn_2024_005_exceeded_partition_modifications.py function prepare_rule (line 38) | def prepare_rule(context: models.Context): function run_rule (line 47) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/bigquery/warn_2024_006_tabledata_list_bytes_exceeded.py function prepare_rule (line 37) | def prepare_rule(context: models.Context): function run_rule (line 46) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/billing/billing_rules_snapshot_test.py class Test (line 23) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/lint/billing/warn_2022_001_project_billing_enabled.py function prepare_rule (line 28) | def prepare_rule(context: models.Context): function run_rule (line 33) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/billing/warn_2022_002_stray_billing_accounts.py function prepare_rule (line 29) | def prepare_rule(context: models.Context): function run_rule (line 35) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/billing/warn_2022_003_cost_anomalies.py function prepare_rule (line 31) | def prepare_rule(context: models.Context): function run_rule (line 38) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/cloudrun/cloud_rules_snapshot_test.py class Test (line 19) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/lint/cloudrun/err_2022_001_missing_cloudrun_serviceagent_role.py function run_rule (line 30) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/cloudsql/bp_2023_001_public_ip.py function run_rule (line 26) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/cloudsql/bp_2023_002_automated_backup.py function prefetch_rule (line 30) | def prefetch_rule(context: models.Context): function run_rule (line 34) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/cloudsql/bp_2023_003_log_output_flag.py function prefetch_rule (line 30) | def prefetch_rule(context: models.Context): function run_rule (line 34) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/cloudsql/bp_ext_2023_001_maint_window.py function run_rule (line 26) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/cloudsql/bp_ext_2023_002_del_protection.py function run_rule (line 25) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/cloudsql/bp_ext_2023_003_auto_storage_increases.py function prefetch_rule (line 32) | def prefetch_rule(context: models.Context): function run_rule (line 36) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/cloudsql/bp_ext_2023_004_sla.py function prefetch_rule (line 31) | def prefetch_rule(context: models.Context): function run_rule (line 35) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/cloudsql/cloudsql_rules_snapshot_test.py class Test (line 19) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/lint/cloudsql/err_2023_001_instance_in_suspended.py function prefetch_rule (line 31) | def prefetch_rule(context: models.Context): function run_rule (line 35) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/cloudsql/sec_2023_001_public_acess.py function run_rule (line 29) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/cloudsql/warn_2022_001_docker_bridge_network.py function run_rule (line 32) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... function _is_docker_bridge_ip (line 51) | def _is_docker_bridge_ip(ip: ipaddress.IPv4Address) -> bool: FILE: gcpdiag/lint/cloudsql/warn_2023_002_high_cpu_usage.py function prefetch_rule (line 32) | def prefetch_rule(context: models.Context): function run_rule (line 50) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/cloudsql/warn_2023_003_high_mem_usage.py function prefetch_rule (line 32) | def prefetch_rule(context: models.Context): function run_rule (line 55) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/command.py class ParseMappingArg (line 34) | class ParseMappingArg(argparse.Action): method __call__ (line 37) | def __call__(self, parser, namespace, values, option_string): function _flatten_multi_arg (line 55) | def _flatten_multi_arg(arg_list): function init_args_parser (line 63) | def init_args_parser(): function _parse_rule_pattern (line 241) | def _parse_rule_pattern( function _load_repository_rules (line 255) | def _load_repository_rules(repo: lint.LintRuleRepository): function _get_output_constructor (line 269) | def _get_output_constructor(output_parameter_value, interface): function _initialize_output (line 280) | def _initialize_output(output_order): function create_and_load_repos (line 296) | def create_and_load_repos( function run_rules_for_context (line 315) | def run_rules_for_context(context: models.Context, function run (line 321) | def run(argv) -> int: FILE: gcpdiag/lint/command_test.py class TestCommand (line 32) | class TestCommand(TestCase): method test_run (line 35) | def test_run(self, mock_email, mock_api): class Test (line 49) | class Test(TestCase): method test_flatten_multi_arg (line 53) | def test_flatten_multi_arg(self): method test_init_args_parser (line 63) | def test_init_args_parser(self): method test_provided_init_args_parser (line 87) | def test_provided_init_args_parser(self): method test_load_repository_rules (line 100) | def test_load_repository_rules(self): method test_create_and_load_repos (line 106) | def test_create_and_load_repos(self): method test_parse_label (line 119) | def test_parse_label(self): FILE: gcpdiag/lint/composer/bp_2023_001_debug_logging_level.py function _check_info_logging_level (line 30) | def _check_info_logging_level(config) -> bool: function prefetch_rule (line 36) | def prefetch_rule(context: models.Context): function run_rule (line 40) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/composer/bp_2023_002_parallelism.py function prefetch_rule (line 28) | def prefetch_rule(context: models.Context): function run_rule (line 32) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/composer/bp_2023_003_statsd.py function prefetch_rule (line 29) | def prefetch_rule(context: models.Context): function run_rule (line 33) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/composer/bp_ext_2023_001_number_of_schedulers.py function prefetch_rule (line 27) | def prefetch_rule(context: models.Context): function run_rule (line 31) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/composer/bp_ext_2023_002_xss_vulnerable_versions.py function prefetch_rule (line 30) | def prefetch_rule(context: models.Context): function run_rule (line 34) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/composer/composer_rules_snapshot_test.py class Test (line 19) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/lint/composer/err_2022_001_composer_p4sa_permissions.py function prefetch_rule (line 30) | def prefetch_rule(context: models.Context): function run_rule (line 35) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/composer/err_2022_002_composer_sa_permissions.py function prefetch_rule (line 37) | def prefetch_rule(context: models.Context): function run_rule (line 55) | def run_rule(context: models.Context, FILE: gcpdiag/lint/composer/err_2023_001_composer_not_in_error_state.py function prefetch_rule (line 27) | def prefetch_rule(context: models.Context): function run_rule (line 31) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/composer/err_2023_002_verify_ip_range.py function prepare_rule (line 43) | def prepare_rule(context: models.Context): function run_rule (line 52) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/composer/err_2023_003_dag_timeout_killing.py function prefetch_rule (line 33) | def prefetch_rule(context: models.Context): function prepare_rule (line 37) | def prepare_rule(context: models.Context): function run_rule (line 46) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/composer/err_2023_004_zombie_detection.py function prefetch_rule (line 31) | def prefetch_rule(context: models.Context): function prepare_rule (line 35) | def prepare_rule(context: models.Context): function run_rule (line 44) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/composer/err_2023_005_environment_delete_fail_nat_config.py function prepare_rule (line 44) | def prepare_rule(context: models.Context): function run_rule (line 54) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/composer/err_2024_001_no_error_surfaced.py function prefetch_rule (line 35) | def prefetch_rule(context: models.Context): function prepare_rule (line 39) | def prepare_rule(context: models.Context): function run_rule (line 48) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/composer/warn_2022_001_composer2_p4sa_permissions.py function prefetch_rule (line 30) | def prefetch_rule(context: models.Context): function run_rule (line 35) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/composer/warn_2022_002_fluentd_pod_crashloop.py function prefetch_rule (line 43) | def prefetch_rule(context: models.Context): function prepare_rule (line 47) | def prepare_rule(context: models.Context): function run_rule (line 55) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/composer/warn_2022_003_total_dag_parse_time.py function prefetch_rule (line 33) | def prefetch_rule(context: models.Context): function run_rule (line 54) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/composer/warn_2023_001_kerberos_support.py function _check_kerberos_overrides (line 25) | def _check_kerberos_overrides(config) -> bool: function prefetch_rule (line 30) | def prefetch_rule(context: models.Context): function run_rule (line 34) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/composer/warn_2023_002_task_sigkill.py function prefetch_rule (line 32) | def prefetch_rule(context: models.Context): function prepare_rule (line 36) | def prepare_rule(context: models.Context): function run_rule (line 44) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/composer/warn_2023_003_task_fail_resource_pressure.py function prefetch_rule (line 31) | def prefetch_rule(context: models.Context): function prepare_rule (line 35) | def prepare_rule(context: models.Context): function run_rule (line 43) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/composer/warn_2023_004_high_database_cpu_usage.py function prefetch_rule (line 33) | def prefetch_rule(context: models.Context): function run_rule (line 49) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/composer/warn_2023_005_environment_is_consistently_healthy.py function prefetch_rule (line 32) | def prefetch_rule(context: models.Context): function run_rule (line 47) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/composer/warn_2023_006_schedulers_are_healthy.py function prefetch_rule (line 34) | def prefetch_rule(context: models.Context): function run_rule (line 54) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/composer/warn_2023_007_high_scheduler_cpu_usage.py function prefetch_rule (line 31) | def prefetch_rule(context: models.Context): function run_rule (line 48) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/composer/warn_2023_008_composer_airflow_db_is_healthy.py function prefetch_rule (line 28) | def prefetch_rule(context: models.Context): function run_rule (line 43) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/composer/warn_2023_009_composer_intermittent_task_failure_issue.py function find_env (line 41) | def find_env(arr_of_composer_envs: list, search_str: str): function get_dag_task (line 58) | def get_dag_task(error_message: str): function prefetch_rule (line 80) | def prefetch_rule(context: models.Context): function prepare_rule (line 84) | def prepare_rule(context: models.Context): function run_rule (line 93) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/composer/warn_2024_001_low_scheduler_cpu_usuage.py function prefetch_rule (line 32) | def prefetch_rule(context: models.Context): function run_rule (line 50) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/composer/warn_2024_002_worker_pod_eviction.py function prefetch_rule (line 31) | def prefetch_rule(context: models.Context): function run_rule (line 49) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/composer/warn_2024_003_composer_api_disabled.py function prefetch_rule (line 39) | def prefetch_rule(context: models.Context): function prepare_rule (line 43) | def prepare_rule(context: models.Context): function run_rule (line 52) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataflow/bp_2023_001_dataflow_supported_sdk_version_check.py function prefetch_rule (line 27) | def prefetch_rule(context: models.Context): function run_rule (line 32) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataflow/dataflow_rules_snapshot_test.py class Test (line 19) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/lint/dataflow/err_2023_001_dataflow_sa_perm_check.py function prefetch_rule (line 25) | def prefetch_rule(context: models.Context): function run_rule (line 30) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataflow/err_2023_002_dataflow_ip_space_exhausted.py function prepare_rule (line 34) | def prepare_rule(context: models.Context): function run_rule (line 42) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataflow/err_2023_003_dataflow_subnet_format_check.py function prepare_rule (line 34) | def prepare_rule(context: models.Context): function run_rule (line 42) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataflow/err_2023_004_dataflow_org_policy_violated.py function prepare_rule (line 37) | def prepare_rule(context: models.Context): function run_rule (line 45) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataflow/err_2023_005_dataflow_credential_perm_issue.py function prepare_rule (line 38) | def prepare_rule(context: models.Context): function run_rule (line 47) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataflow/err_2023_006_dataflow_private_google_access_check.py function prepare_rule (line 37) | def prepare_rule(context: models.Context): function run_rule (line 45) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataflow/err_2023_007_dataflow_missing_firewall_issue.py function prepare_rule (line 36) | def prepare_rule(context: models.Context): function run_rule (line 44) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataflow/err_2023_008_dataflow_sa_worker_perm_check.py function prefetch_rule (line 43) | def prefetch_rule(context: models.Context): function prepare_rule (line 48) | def prepare_rule(context: models.Context): function run_rule (line 57) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataflow/err_2023_009_splunk_err_invalid_cert.py function prepare_rule (line 43) | def prepare_rule(context: models.Context): function run_rule (line 54) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataflow/err_2023_010_bq_streaming_insert_missing_field.py function prepare_rule (line 40) | def prepare_rule(context: models.Context): function run_rule (line 51) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataflow/err_2023_011_bq_streaming_insert_mismatch_column.py function prepare_rule (line 39) | def prepare_rule(context: models.Context): function run_rule (line 49) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataflow/err_2023_012_dataflow_spanner_oom.py function prepare_rule (line 45) | def prepare_rule(context: models.Context): function run_rule (line 56) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataflow/err_2023_013_dataflow_spanner_deadline_exceeded.py function prepare_rule (line 44) | def prepare_rule(context: models.Context): function run_rule (line 55) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataflow/err_2024_001_dataflow_gce_quotas.py function prepare_rule (line 49) | def prepare_rule(context: models.Context): function run_rule (line 60) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataflow/err_2024_002_dataflow_key_commit.py function prepare_rule (line 43) | def prepare_rule(context: models.Context): function run_rule (line 55) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataflow/err_2024_003_dataflow_write_truncate_unbounded.py function prepare_rule (line 39) | def prepare_rule(context: models.Context): function run_rule (line 48) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataflow/err_2024_004_missing_gcs_permission_temp_bucket.py function prepare_rule (line 38) | def prepare_rule(context: models.Context): function run_rule (line 47) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataflow/err_2024_005_dataflow_not_creating_pubsub_subscription.py function prepare_rule (line 40) | def prepare_rule(context: models.Context): function run_rule (line 49) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataflow/warn_2023_001_dataflow_hot_key.py function prepare_rule (line 43) | def prepare_rule(context: models.Context): function run_rule (line 53) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataflow/warn_2023_003_dataflow_worker_logs_throttled.py function prepare_rule (line 30) | def prepare_rule(context: models.Context): function run_rule (line 45) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataflow/warn_2023_004_dataflow_stuck_at_draining.py function prefetch_rule (line 30) | def prefetch_rule(context: models.Context): function run_rule (line 35) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataflow/warn_2023_006_dataflow_stuck_at_cancelling.py function prefetch_rule (line 30) | def prefetch_rule(context: models.Context): function run_rule (line 35) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataflow/warn_2024_001_dataflow_operation_ongoing.py function prepare_rule (line 45) | def prepare_rule(context: models.Context): function run_rule (line 57) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataflow/warn_2024_002_dataflow_streaming_appliance_commit_failed.py function prepare_rule (line 43) | def prepare_rule(context: models.Context): function run_rule (line 54) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/datafusion/datafusion_rules_snapshot_test.py class Test (line 26) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/lint/datafusion/err_2022_001_connectivity_dataproc_vms.py function run_rule (line 33) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/datafusion/err_2022_002_shared_vpc_ip_range.py function run_rule (line 33) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/datafusion/err_2022_003_private_peering.py function run_rule (line 33) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/datafusion/err_2022_004_cloud_datafusion_sa_permissions.py function prefetch_rule (line 30) | def prefetch_rule(context: models.Context): function run_rule (line 34) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/datafusion/err_2022_005_host_vpc_permissions.py function validate_iam_roles (line 33) | def validate_iam_roles(context: models.Context, service_account: str, function run_rule (line 81) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/datafusion/err_2022_006_private_google_access.py function run_rule (line 30) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/datafusion/err_2022_007_cloud_datafusion_sa_permissions.py function prefetch_rule (line 30) | def prefetch_rule(context: models.Context): function run_rule (line 34) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/datafusion/err_2022_008_cloud_datafusion_sa_permissions.py function prefetch_rule (line 31) | def prefetch_rule(context: models.Context): function run_rule (line 35) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/datafusion/err_2022_009_cloud_dataproc_sa_permissions.py function prefetch_rule (line 31) | def prefetch_rule(context: models.Context): function run_rule (line 35) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/datafusion/err_2022_010_cloud_datafusion_sa_permissions.py function prefetch_rule (line 31) | def prefetch_rule(context: models.Context): function run_rule (line 35) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/datafusion/err_2022_011_cloud_datafusion_sa_permissions.py function prefetch_rule (line 33) | def prefetch_rule(context: models.Context): function run_rule (line 37) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/datafusion/err_2024_001_delete_operation_failing.py function find_instance (line 42) | def find_instance(arr_of_datafusion_envs: dict, search_str: str): function prefetch_rule (line 48) | def prefetch_rule(context: models.Context): function prepare_rule (line 53) | def prepare_rule(context: models.Context): function run_rule (line 62) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/datafusion/warn_2024_001_data_fusion_version.py function prefetch_rule (line 33) | def prefetch_rule(context: models.Context): function run_rule (line 37) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/datafusion/warn_2024_002_instance_state_running.py function prefetch_rule (line 31) | def prefetch_rule(context: models.Context): function run_rule (line 35) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/datafusion/warn_2024_003_cluster_scaling_down_disabled.py function prefetch_rule (line 30) | def prefetch_rule(context: models.Context): function run_rule (line 34) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/datafusion/warn_2024_004_datafusion_dataproc_compatabillity.py function prefetch_rule (line 32) | def prefetch_rule(context: models.Context): function run_rule (line 36) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/datafusion/warn_2024_005_datafusion_dataproc_compatability_preference.py function prefetch_rule (line 36) | def prefetch_rule(context: models.Context): function run_rule (line 40) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... function check_dataproc_version_valid (line 162) | def check_dataproc_version_valid(preference_image_version: str): function check_datafusion_dataproc_version_compatibility (line 170) | def check_datafusion_dataproc_version_compatibility( FILE: gcpdiag/lint/dataproc/bp_2021_001_logging_enabled.py function prefetch_rule (line 27) | def prefetch_rule(context: models.Context): function run_rule (line 31) | def run_rule(context: models.Context, FILE: gcpdiag/lint/dataproc/bp_2022_001_monitoring_enabled.py function run_rule (line 13) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataproc/bp_2022_098_another_dummy_async_rule.py class FakeResource (line 11) | class FakeResource(models.Resource): method __init__ (line 13) | def __init__(self, text): method full_path (line 18) | def full_path(self): function async_run_rule (line 23) | async def async_run_rule(context: models.Context, FILE: gcpdiag/lint/dataproc/bp_2022_099_dummy_async_rule.py class FakeResource (line 11) | class FakeResource(models.Resource): method __init__ (line 13) | def __init__(self, text): method full_path (line 18) | def full_path(self): function async_run_rule (line 23) | async def async_run_rule(context: models.Context, FILE: gcpdiag/lint/dataproc/dataproc_rules_snapshot_test.py class Test (line 19) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/lint/dataproc/err_2022_002_image_versions.py class VersionParser (line 27) | class VersionParser: method __init__ (line 32) | def __init__(self, s): method parse (line 41) | def parse(self): method match_re (line 47) | def match_re(self): method fill_properties_from_match (line 52) | def fill_properties_from_match(self): class ImageVersion (line 63) | class ImageVersion: method __init__ (line 66) | def __init__(self, version_str): method is_deprecated (line 70) | def is_deprecated(self): function prefetch_rule (line 85) | def prefetch_rule(context: models.Context): function run_rule (line 89) | def run_rule(context: models.Context, FILE: gcpdiag/lint/dataproc/err_2022_002_image_versions_test.py class TestDataprocImageVersions (line 19) | class TestDataprocImageVersions: method dotest (line 22) | def dotest(self, versions, expected): method test_not_deprecated (line 26) | def test_not_deprecated(self): method test_deprecated (line 29) | def test_deprecated(self): method test_something_completely_wrong (line 32) | def test_something_completely_wrong(self): method test_something_close_but_wrong_parts (line 35) | def test_something_close_but_wrong_parts(self): method test_missing_parts (line 38) | def test_missing_parts(self): FILE: gcpdiag/lint/dataproc/err_2022_003_dataproc_sa_permissions.py function run_rule (line 27) | def run_rule(context: models.Context, FILE: gcpdiag/lint/dataproc/err_2022_004_dpgce_connectivity.py function prefetch_rule (line 28) | def prefetch_rule(context: models.Context): function run_rule (line 96) | def run_rule(context: models.Context, FILE: gcpdiag/lint/dataproc/err_2023_001_initialization_action_timeout.py function prepare_rule (line 39) | def prepare_rule(context: models.Context): function run_rule (line 47) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataproc/err_2023_002_orphaned_yarn_application.py function prepare_rule (line 38) | def prepare_rule(context: models.Context): function run_rule (line 46) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataproc/err_2023_003_dataproc_permission.py function prepare_rule (line 41) | def prepare_rule(context: models.Context): function run_rule (line 49) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataproc/err_2023_004_dataproc_firewall_issue.py function prepare_rule (line 41) | def prepare_rule(context: models.Context): function run_rule (line 50) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataproc/err_2023_005_dataproc_quota.py function prepare_rule (line 42) | def prepare_rule(context: models.Context): function format_cluster (line 51) | def format_cluster(cluster_name, uuid): function run_rule (line 55) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataproc/err_2023_006_shared_vpc_permission.py function validate_iam_roles (line 35) | def validate_iam_roles( function shared_vpc_check (line 74) | def shared_vpc_check(host_project, service_project): function run_rule (line 78) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataproc/err_2023_007_cluster_creation_stockout.py function prepare_rule (line 42) | def prepare_rule(context: models.Context): function run_rule (line 51) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataproc/err_2023_008_bad_dirs.py function prepare_rule (line 46) | def prepare_rule(context: models.Context): function prefetch_rule (line 54) | def prefetch_rule(context: models.Context): function is_relevant (line 58) | def is_relevant(entry, context): function get_clusters_having_relevant_log_entries (line 70) | def get_clusters_having_relevant_log_entries(context): function run_rule (line 78) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataproc/warn_2021_001_cluster_status_running.py function prefetch_rule (line 25) | def prefetch_rule(context: models.Context): function run_rule (line 29) | def run_rule(context: models.Context, FILE: gcpdiag/lint/dataproc/warn_2022_001_cluster_local_ssd_failed_stop.py function prepare_rule (line 38) | def prepare_rule(context: models.Context): function run_rule (line 46) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataproc/warn_2022_002_job_throttling_rate_limit.py function prepare_rule (line 39) | def prepare_rule(context: models.Context): function prefetch_rule (line 47) | def prefetch_rule(context: models.Context): function is_relevant (line 51) | def is_relevant(entry, context): function get_clusters_having_relevant_log_entries (line 63) | def get_clusters_having_relevant_log_entries(context): function run_rule (line 71) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataproc/warn_2022_003_sa_permissions.py function prefetch_rule (line 30) | def prefetch_rule(context: models.Context): function run_rule (line 35) | def run_rule(context: models.Context, FILE: gcpdiag/lint/dataproc/warn_2022_004_cluster_status_running_async.py function async_run_rule (line 10) | async def async_run_rule(context: models.Context, FILE: gcpdiag/lint/dataproc/warn_2023_001_job_throttling_too_many.py function prepare_rule (line 36) | def prepare_rule(context: models.Context): function run_rule (line 44) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataproc/warn_2023_002_high_system_memory_usage.py function prepare_rule (line 37) | def prepare_rule(context: models.Context): function run_rule (line 45) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataproc/warn_2024_001_safemode.py function prepare_rule (line 41) | def prepare_rule(context: models.Context): function prefetch_rule (line 49) | def prefetch_rule(context: models.Context): function is_relevant (line 53) | def is_relevant(entry, context): function get_clusters_having_relevant_log_entries (line 65) | def get_clusters_having_relevant_log_entries(context): function run_rule (line 73) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/dataproc/warn_2024_002_hdfs_write_issue.py function prepare_rule (line 42) | def prepare_rule(context: models.Context): function prefetch_rule (line 51) | def prefetch_rule(context: models.Context): function is_relevant (line 55) | def is_relevant(entry, context): function get_clusters_having_relevant_log_entries (line 66) | def get_clusters_having_relevant_log_entries(context): function run_rule (line 74) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gae/err_2023_001_appengine_vpc_connector_policy.py function prepare_rule (line 40) | def prepare_rule(context: models.Context): function run_rule (line 48) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gae/err_2023_002_appengine_vpc_connector_subnet_overlap.py function prepare_rule (line 44) | def prepare_rule(context: models.Context): function run_rule (line 52) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gae/err_2025_001_gae_default_service_account_is_deleted.py function prepare_rule (line 28) | def prepare_rule(context: models.Context): function run_rule (line 48) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gae/gae_rules_snapshot_test.py class Test (line 19) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/lint/gae/warn_2022_001_appengine_standard_deprecated_runtimes.py function run_rule (line 27) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gae/warn_2022_002_appengine_flexible_deprecated_runtimes.py function run_rule (line 27) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gcb/err_2022_001_missing_cloudbuild_editor_role.py function run_rule (line 30) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gcb/err_2022_002_build_failed_whithout_artifact_registry_permission.py function run_rule (line 38) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... class FailedBuildStatus (line 61) | class FailedBuildStatus: class Repository (line 67) | class Repository(abc.ABC): method can_read_registry (line 70) | def can_read_registry(self, context: models.Context, method format_message (line 75) | def format_message(self) -> str: class GcrRepository (line 79) | class GcrRepository(Repository): method __init__ (line 82) | def __init__(self, project_id: str, repository: str): method can_read_registry (line 86) | def can_read_registry(self, context: models.Context, method format_message (line 96) | def format_message(self) -> str: class ArtifactRepository (line 100) | class ArtifactRepository(Repository): method __init__ (line 103) | def __init__(self, project_id: str, location: str, repository: str): method can_read_registry (line 108) | def can_read_registry(self, context: models.Context, method format_message (line 118) | def format_message(self) -> str: function find_builds_without_image_upload_permission (line 123) | def find_builds_without_image_upload_permission( function get_used_registries (line 137) | def get_used_registries(images: Iterable[str]) -> Iterable[Repository]: FILE: gcpdiag/lint/gcb/err_2022_003_build_failed_with_logs_bucket_retention_policy.py function run_rule (line 29) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... class FailedBuildStatus (line 47) | class FailedBuildStatus: function find_builds_failing_to_upload_logs (line 52) | def find_builds_failing_to_upload_logs( FILE: gcpdiag/lint/gcb/err_2022_004_missing_cloudbuild_service_agent_role.py function run_rule (line 31) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gcb/gcb_rules_snapshot_test.py class Test (line 19) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/lint/gce/bp_2021_001_serial_logging_enabled.py function run_rule (line 30) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/bp_2022_003_unused_boot_disks.py function run_rule (line 24) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/bp_2023_001_ntp_config.py function prepare_rule (line 38) | def prepare_rule(context: models.Context): function run_rule (line 45) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/bp_2024_001_legacy_monitoring_agent.py function prefetch_rule (line 45) | def prefetch_rule(context: models.Context): function run_rule (line 60) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/bp_2024_002_legacy_logging_agent.py function prefetch_rule (line 44) | def prefetch_rule(context: models.Context): function run_rule (line 60) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/bp_ext_2021_003_secure_boot_enabled.py function run_rule (line 29) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/bp_ext_2022_001_vm_manager_enabled.py function run_rule (line 25) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/bp_ext_2023_001_gce_scopes.py function run_rule (line 32) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/bp_ext_2024_001_no_public_ip.py function run_rule (line 26) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/bp_ext_2024_002_calculate_vm_iops_throughput.py function prepare_rule (line 33) | def prepare_rule(context: models.Context): function run_rule (line 41) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... function limit_calculator (line 605) | def limit_calculator(limits_data, mach_fam_json_data, disktype: str, FILE: gcpdiag/lint/gce/err_2021_001_mig_scaleup_failed.py function prepare_rule (line 32) | def prepare_rule(context: models.Context): function run_rule (line 46) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/err_2021_002_osconfig_perm.py function prefetch_rule (line 30) | def prefetch_rule(context: models.Context): function run_rule (line 37) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/err_2021_003_api_service_agent.py function prefetch_rule (line 33) | def prefetch_rule(context: models.Context): function run_rule (line 40) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/err_2021_004_secure_boot_failed.py function prepare_rule (line 42) | def prepare_rule(context: models.Context): function run_rule (line 47) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/err_2021_005_mount_errors.py function prepare_rule (line 39) | def prepare_rule(context: models.Context): function run_rule (line 44) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/err_2022_001_quota_exceeded.py function prefetch_rule (line 31) | def prefetch_rule(context: models.Context): function run_rule (line 40) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/err_2022_002_premium_guestos_activation_failed.py function prepare_rule (line 43) | def prepare_rule(context: models.Context): function run_rule (line 48) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/err_2024_001_snapshot_rate_limit.py function prepare_rule (line 38) | def prepare_rule(context: models.Context): function run_rule (line 47) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/err_2024_002_performance.py function prepare_rule (line 41) | def prepare_rule(context: models.Context): function run_rule (line 82) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/err_2024_003_vm_secure_boot_failures.py function prepare_rule (line 31) | def prepare_rule(context: models.Context): function run_rule (line 50) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/err_2024_004_ops_agent.py class Instance (line 77) | class Instance: method __init__ (line 93) | def __init__(self, project_id, gce_instance): method project_id (line 105) | def project_id(self) -> str: method gce_instance (line 109) | def gce_instance(self) -> gce.Instance: method is_gke_node (line 113) | def is_gke_node(self) -> bool: method id (line 117) | def id(self) -> str: method zone (line 121) | def zone(self) -> str: method name (line 125) | def name(self) -> str: method has_os_inventory (line 129) | def has_os_inventory(self) -> bool: method has_os_inventory (line 133) | def has_os_inventory(self, new_value: bool): method ops_agent_installed (line 137) | def ops_agent_installed(self) -> bool: method ops_agent_installed (line 141) | def ops_agent_installed(self, new_value: bool): method has_recent_log_pings (line 145) | def has_recent_log_pings(self) -> bool: method has_recent_log_pings (line 149) | def has_recent_log_pings(self, new_value: bool): method has_recent_log_entries (line 153) | def has_recent_log_entries(self) -> bool: method has_recent_log_entries (line 157) | def has_recent_log_entries(self, new_value: bool): method has_logging_uptime_metrics (line 161) | def has_logging_uptime_metrics(self) -> bool: method has_logging_uptime_metrics (line 165) | def has_logging_uptime_metrics(self, new_value: bool): method has_monitoring_uptime_metrics (line 169) | def has_monitoring_uptime_metrics(self) -> bool: method has_monitoring_uptime_metrics (line 173) | def has_monitoring_uptime_metrics(self, new_value: bool): function prepare_rule (line 177) | def prepare_rule(context: models.Context): function run_rule (line 224) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... function confirm_agent_installation_via_os_config (line 252) | def confirm_agent_installation_via_os_config( function format_metric_entries (line 287) | def format_metric_entries( function confirm_agent_installation_via_uptime_metrics (line 307) | def confirm_agent_installation_via_uptime_metrics( function populate_sub_agents_uptime_metrics_status (line 362) | def populate_sub_agents_uptime_metrics_status( function populate_log_type_status (line 381) | def populate_log_type_status(instances: List[Instance], function format_log_entries (line 396) | def format_log_entries( function confirm_agent_telemetry_transmission (line 439) | def confirm_agent_telemetry_transmission( FILE: gcpdiag/lint/gce/gce_rules_snapshot_test.py class Test (line 19) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/lint/gce/utils.py class SerialOutputSearch (line 27) | class SerialOutputSearch: method __init__ (line 36) | def __init__(self, method _mk_filter (line 52) | def _mk_filter(self) -> str: method get_last_match (line 56) | def get_last_match(self, instance_id: str) -> Optional[logs.LogEntrySh... method get_all_instance_with_match (line 61) | def get_all_instance_with_match(self): class QueryCloudLogs (line 86) | class QueryCloudLogs: method __init__ (line 92) | def __init__(self, method _mk_filter (line 106) | def _mk_filter(self, logid) -> str: method get_entries (line 110) | def get_entries(self, instance_id: str) -> dict: function is_cloudsql_peer_network (line 121) | def is_cloudsql_peer_network(url: str) -> bool: function is_serial_port_one_logs_available (line 129) | def is_serial_port_one_logs_available(context: models.Context): FILE: gcpdiag/lint/gce/utils_test.py class TestUtils (line 27) | class TestUtils: method test_query_order_with_buffer_enabled (line 60) | def test_query_order_with_buffer_enabled(self, mock_logs_query_entries, method test_query_order_buffer_disabled (line 90) | def test_query_order_buffer_disabled(self, mock_logs_query_entries, function test_is_serial_logs_available (line 115) | def test_is_serial_logs_available(): FILE: gcpdiag/lint/gce/warn_2021_001_logging_perm.py function prefetch_rule (line 57) | def prefetch_rule(context: models.Context): function run_rule (line 65) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/warn_2021_002_disk_latency.py function prefetch_rule (line 39) | def prefetch_rule(context: models.Context): function run_rule (line 67) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/warn_2021_003_monitoring_permissions.py function prefetch_rule (line 53) | def prefetch_rule(context: models.Context): function run_rule (line 61) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/warn_2021_004_disk_full_serial_messages.py function prepare_rule (line 38) | def prepare_rule(context: models.Context): function run_rule (line 43) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/warn_2021_005_out_of_memory.py function prepare_rule (line 40) | def prepare_rule(context: models.Context): function run_rule (line 45) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/warn_2021_006_kernel_panic.py function prepare_rule (line 35) | def prepare_rule(context: models.Context): function run_rule (line 40) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/warn_2021_007_bsod.py function prepare_rule (line 37) | def prepare_rule(context: models.Context): function run_rule (line 42) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/warn_2022_001_iap_tcp_forwarding.py function run_rule (line 33) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/warn_2022_002_duplicated_named_ports.py function run_rule (line 25) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/warn_2022_003_vm_instances_quota.py function prefetch_rule (line 38) | def prefetch_rule(context: models.Context): function run_rule (line 56) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/warn_2022_004_docker_bridge_network.py function run_rule (line 33) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... function _is_docker_bridge_ip (line 66) | def _is_docker_bridge_ip(ip: ipaddress.IPv4Address) -> bool: FILE: gcpdiag/lint/gce/warn_2022_005_cpu_quota.py function prefetch_rule (line 48) | def prefetch_rule(context: models.Context): function run_rule (line 67) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/warn_2022_006_gpu_quota.py function prefetch_rule (line 44) | def prefetch_rule(context: models.Context): function run_rule (line 63) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/warn_2022_007_cloudsql_admin_scope.py function run_rule (line 36) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/warn_2022_008_ip_address_quota.py function prefetch_rule (line 45) | def prefetch_rule(context: models.Context): function run_rule (line 64) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/warn_2022_009_disk_quota.py function prefetch_rule (line 43) | def prefetch_rule(context: models.Context): function run_rule (line 62) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/warn_2022_010_resource_availability.py function prepare_rule (line 44) | def prepare_rule(context: models.Context): function run_rule (line 52) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/warn_2022_011_valid_sa.py function run_rule (line 25) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/warn_2022_012_windows_kms.py function kms_route_access (line 33) | def kms_route_access(instance) -> bool: function run_rule (line 43) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/warn_2023_001_snapshot_policies_on_unused_disks.py function run_rule (line 25) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gce/warn_2023_002_airflowtask_oom.py function prepare_rule (line 35) | def prepare_rule(context: models.Context): function run_rule (line 40) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gcf/err_2022_001_missing_cloudfunctions_serviceagent_role.py function run_rule (line 30) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gcf/err_2022_002_cloudfunctions_org_policy_violation.py function prepare_rule (line 42) | def prepare_rule(context: models.Context): function run_rule (line 50) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gcf/err_2022_003_cloudfunctions_memory_limit_exceeded.py function prepare_rule (line 32) | def prepare_rule(context: models.Context): function run_rule (line 40) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gcf/gcf_rules_snapshot_test.py class Test (line 19) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/lint/gcf/warn_2021_001_cloudfunctions_deprecated_runtimes.py function run_rule (line 13) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gcf/warn_2021_002_cloudfunctions_request_aborted.py function prepare_rule (line 32) | def prepare_rule(context: models.Context): function run_rule (line 40) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gcs/bp_2022_001_bucket_access_uniform.py function _is_google_managed (line 31) | def _is_google_managed(bucket): function run_rule (line 38) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gcs/gcs_rules_snapshot_test.py class Test (line 19) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/lint/gke/bp_2021_001_cloudops_enabled.py function run_rule (line 25) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/bp_2022_001_regional_cluster.py function run_rule (line 25) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/bp_2022_002_unique_subnets.py function run_rule (line 28) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/bp_2022_003_cluster_eol.py function _estimate_oss_release_date (line 43) | def _estimate_oss_release_date(version: Version) -> date: function _estimate_gke_eol_date (line 65) | def _estimate_gke_eol_date(version: Version, eol_schedule: Dict): function _notification_required (line 96) | def _notification_required(version: Version, eol_schedule: Dict) -> bool: function _get_notification_msg (line 121) | def _get_notification_msg(version: Version, eol_schedule: Dict) -> str: function run_rule (line 129) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/bp_2022_004_http_load_balancing_disabled.py function run_rule (line 13) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/bp_2023_001_network_policy_minimum_requirements.py function run_rule (line 30) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/bp_2023_002_stateful_workloads_not_on_preemptible_node.py function run_rule (line 15) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/bp_2023_004_vpc_native_cluster.py function run_rule (line 29) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/bp_2023_005_gateway_crd.py function prepare_rule (line 30) | def prepare_rule(context: models.Context): function run_rule (line 41) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/bp_2025_001_gke_nodelocal_dnscache_enabled.py function run_rule (line 26) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/bp_ext_2022_001_groups_enabled.py function run_rule (line 26) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/bp_ext_2023_001_maintenance_window.py function prepare_rule (line 28) | def prepare_rule(context: models.Context): function run_rule (line 32) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/bp_ext_2023_002_private_cluster.py function prepare_rule (line 31) | def prepare_rule(context: models.Context): function run_rule (line 35) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2021_001_logging_perm.py function prefetch_rule (line 26) | def prefetch_rule(context: models.Context): function run_rule (line 33) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2021_002_monitoring_perm.py function run_rule (line 26) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2021_003_kms_key_enabled.py function run_rule (line 24) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2021_004_node_connection_apiserver.py function prepare_rule (line 29) | def prepare_rule(context: models.Context): function run_rule (line 39) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2021_005_node_connection_storage.py function prepare_rule (line 29) | def prepare_rule(context: models.Context): function run_rule (line 39) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2021_006_scaleup_failed.py function prepare_rule (line 33) | def prepare_rule(context: models.Context): function is_mig_instance (line 55) | def is_mig_instance(mig_name: str, instance_name: str): function run_rule (line 64) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2021_007_gke_sa.py function run_rule (line 27) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2021_008_api_service_agent.py function prefetch_rule (line 35) | def prefetch_rule(context: models.Context): function run_rule (line 42) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2021_009_nodepool_version_skew.py function run_rule (line 33) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2021_010_internal_forwarding_rule_limits.py function prepare_rule (line 28) | def prepare_rule(context: models.Context): function run_rule (line 38) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2021_011_ip_masq_not_reporting_errors.py function prepare_rule (line 32) | def prepare_rule(context: models.Context): function run_rule (line 41) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2021_012_np_sa_enabled.py function run_rule (line 25) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2021_013_connectivity_cluster_rules.py function _run_rule_cluster (line 30) | def _run_rule_cluster(report: lint.LintReportRuleInterface, c: gke.Clust... function run_rule (line 52) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2021_014_connectivity_master.py function _run_rule_cluster (line 23) | def _run_rule_cluster(report: lint.LintReportRuleInterface, c: gke.Clust... function run_rule (line 55) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2021_015_connectivity_vms.py function prefetch_rule (line 30) | def prefetch_rule(context: models.Context): function _run_rule_cluster (line 38) | def _run_rule_cluster(report: lint.LintReportRuleInterface, c: gke.Clust... function run_rule (line 66) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2022_001_connectivity_pod_to_pod.py function prefetch_rule (line 30) | def prefetch_rule(context: models.Context): function _run_rule_cluster (line 38) | def _run_rule_cluster(report: lint.LintReportRuleInterface, c: gke.Clust... function run_rule (line 67) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2022_002_private_google_access.py function run_rule (line 23) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2022_003_ingress_healthcheck.py function _get_rule_allowed_ports (line 28) | def _get_rule_allowed_ports(rule: VpcFirewallRule): function run_rule (line 50) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2023_001_containerfilesystem_quota.py function prepare_rule (line 30) | def prepare_rule(context: models.Context): function run_rule (line 40) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2023_002_private_routes_based.py function run_rule (line 26) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2023_003_containerd_bad_config_file.py function prepare_rule (line 31) | def prepare_rule(context: models.Context): function run_rule (line 41) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2023_004_ingress_config.py function prepare_rule (line 29) | def prepare_rule(context: models.Context): function run_rule (line 38) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2023_005_gke_cni_issue.py function prepare_rule (line 31) | def prepare_rule(context: models.Context): function run_rule (line 42) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2023_006_gw_controller_annotation_error.py function prepare_rule (line 29) | def prepare_rule(context: models.Context): function run_rule (line 40) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2023_007_gw_controller_http_route_misconfig.py function prepare_rule (line 29) | def prepare_rule(context: models.Context): function run_rule (line 40) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2023_008_crashloopbackoff.py function prepare_rule (line 31) | def prepare_rule(context: models.Context): function run_rule (line 41) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2023_009_missing_cpu_req.py function prepare_rule (line 32) | def prepare_rule(context: models.Context): function _filter_f (line 43) | def _filter_f(log_entry): function run_rule (line 50) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2023_010_nodelocal_timeout.py function prepare_rule (line 29) | def prepare_rule(context: models.Context): function run_rule (line 40) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2023_011_wi_pod_ip_not_found.py function prepare_rule (line 41) | def prepare_rule(context: models.Context): function run_rule (line 50) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2023_012_missing_mem_request.py function prepare_rule (line 32) | def prepare_rule(context: models.Context): function _filter_f (line 43) | def _filter_f(log_entry): function run_rule (line 50) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2024_001_psa_violoations.py function prepare_rule (line 35) | def prepare_rule(context: models.Context): function _filter_f (line 46) | def _filter_f(log_entry): function run_rule (line 53) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2024_002_webhook_failure_no_endpoint.py function prepare_rule (line 35) | def prepare_rule(context: models.Context): function run_rule (line 46) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2024_003_default_node_serviceaccount_perm.py function prefetch_rule (line 27) | def prefetch_rule(context: models.Context): function run_rule (line 34) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/err_2025_001_serial_port_logging.py function get_non_compliant_pools (line 29) | def get_non_compliant_pools(cluster: gke.Cluster) -> List[str]: function run_rule (line 57) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/gke_rules_snapshot_test.py class Test (line 19) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/lint/gke/sec_2021_001_np_uses_default_sa.py function run_rule (line 25) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/sec_2023_001_worload_id.py function prepare_rule (line 29) | def prepare_rule(context: models.Context): function run_rule (line 33) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/util.py class _CantMapLogEntry (line 26) | class _CantMapLogEntry(BaseException): function _initialize_clusters_by_name (line 39) | def _initialize_clusters_by_name(context: models.Context): function _initialize_clusters_by_instance_id (line 47) | def _initialize_clusters_by_instance_id(context: models.Context): function _gke_node_of_log_entry (line 68) | def _gke_node_of_log_entry(context, log_entry): function _gke_pod_of_log_entry (line 98) | def _gke_pod_of_log_entry(context, log_entry): function _gke_cluster_of_log_entry (line 129) | def _gke_cluster_of_log_entry(context, log_entry): function gke_logs_find_bad_nodes (line 146) | def gke_logs_find_bad_nodes(context: models.Context, function gke_logs_find_bad_clusters (line 174) | def gke_logs_find_bad_clusters(context: models.Context, function get_cluster_object (line 205) | def get_cluster_object(cluster_dict, partial_path): function gke_logs_find_bad_pods (line 224) | def gke_logs_find_bad_pods( FILE: gcpdiag/lint/gke/warn_2021_001_cluster_version.py function run_rule (line 25) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/warn_2021_002_nodes_version.py function run_rule (line 26) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/warn_2021_003_pod_cidr_cluster_size.py function nodepool_calc (line 35) | def nodepool_calc(cluster) -> Tuple[dict, dict]: function run_rule (line 70) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/warn_2021_004_system_workloads_stable.py function prefetch_rule (line 47) | def prefetch_rule(context: models.Context): function run_rule (line 75) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/warn_2021_005_disk_latency.py function prefetch_rule (line 39) | def prefetch_rule(context: models.Context): function run_rule (line 65) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/warn_2021_006_node_conntrack_full.py function prepare_rule (line 28) | def prepare_rule(context: models.Context): function run_rule (line 38) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/warn_2021_007_disk_full.py function prefetch_rule (line 33) | def prefetch_rule(context: models.Context): function run_rule (line 56) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/warn_2021_008_gke_istio_incompatible_versions.py function prefetch_rule (line 30) | def prefetch_rule(context: models.Context): function run_rule (line 50) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/warn_2021_009_node_deprecated_image_types.py function run_rule (line 24) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/warn_2022_001_wi_with_regional_cluster.py function run_rule (line 25) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/warn_2022_002_md_concealment.py function run_rule (line 26) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/warn_2022_003_firewall_rules_permission.py function run_rule (line 35) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/warn_2022_004_logging_api_disabled.py function run_rule (line 24) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/warn_2022_005_nvdia_gpu.py function prefetch_rule (line 29) | def prefetch_rule(context: models.Context): function run_rule (line 49) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/warn_2022_006_nap_node_image_types.py function run_rule (line 24) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/warn_2022_007_storage_scope.py function run_rule (line 34) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/warn_2022_008_dns_lookup_timeout_intra_node_visibility.py function run_rule (line 28) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... function _guard_for_unaffected_versions (line 43) | def _guard_for_unaffected_versions( function _check_for_affected_version (line 58) | def _check_for_affected_version(cluster: gke.Cluster, FILE: gcpdiag/lint/gke/warn_2023_001_containerfilesystem_scope.py function prepare_rule (line 29) | def prepare_rule(context: models.Context): function run_rule (line 39) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/warn_2023_002_metadata_server_timeout.py function prepare_rule (line 37) | def prepare_rule(context: models.Context): function run_rule (line 46) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/warn_2023_003_monitoring_api_disabled.py function run_rule (line 25) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/warn_2023_004_too_few_pods_per_node.py function run_rule (line 28) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/warn_2024_001_cluster_nap_limits_prevent_autoscaling.py function prepare_rule (line 46) | def prepare_rule(context: models.Context): function _filter_f (line 57) | def _filter_f(log_entry: logs.LogEntryShort) -> bool: function _extract_sample_affected_pod (line 76) | def _extract_sample_affected_pod( function run_rule (line 96) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/warn_2024_002_ksa_exceed.py function prefetch_rule (line 27) | def prefetch_rule(context: models.Context): function run_rule (line 48) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/warn_2024_003_ingress_svc_notfound.py function prepare_rule (line 31) | def prepare_rule(context: models.Context): function run_rule (line 42) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/warn_2024_004_ingress_backendcrd.py function prepare_rule (line 33) | def prepare_rule(context: models.Context): function run_rule (line 44) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/warn_2024_005_ingress_servicetype.py function prepare_rule (line 31) | def prepare_rule(context: models.Context): function run_rule (line 42) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/warn_2024_007_loadbalancer_ipv6_no_internal_range.py function prepare_rule (line 31) | def prepare_rule(context: models.Context): function run_rule (line 43) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/gke/warn_2025_001_loadbalancer_ipv6_no_external_range.py function prepare_rule (line 46) | def prepare_rule(context: models.Context): function run_rule (line 59) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/iam/bp_2023_001_auto_grant_editor_role_default_sa.py function prefetch_rule (line 26) | def prefetch_rule(context: models.Context): function run_rule (line 33) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/iam/iam_rules_snapshot_test.py class Test (line 19) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/lint/iam/sec_2021_001_sa_permissions.py function prefetch_rule (line 26) | def prefetch_rule(context: models.Context): function run_rule (line 31) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/iam/sec_2024_001_unused_sa.py function prefetch_rule (line 31) | def prefetch_rule(context: models.Context): function run_rule (line 43) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/interconnect/bp_2023_001_high_availability.py function run_rule (line 29) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/interconnect/interconnect_rules_snapshot_test.py class Test (line 19) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/lint/interconnect/warn_2023_001_legacy_dataplane.py function run_rule (line 25) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/interconnect/warn_2023_002_defunct_attachment.py function run_rule (line 24) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/interconnect/warn_2023_003_link_maintenance.py function run_rule (line 24) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/interconnect/warn_2025_001_check_interconnect_mtu.py function run_rule (line 25) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/lb/bp_2022_001_lbpolicy_for_sessionaffinity.py function run_rule (line 23) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/lb/bp_2023_001_cloudcdn_for_lb_backend_services.py function run_rule (line 27) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/lb/bp_2023_002_healthcheck_logging_for_backend_services.py function prefetch_rule (line 27) | def prefetch_rule(context: models.Context): function run_rule (line 38) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/lb/bp_2024_001_sessionaffinity_for_lb_backendservices.py function run_rule (line 25) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/lb/bp_2024_002_global_access_for_regional_ilb.py function prefetch_rule (line 32) | def prefetch_rule(context: models.Context): function run_rule (line 37) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/lb/bp_2025_001_protocol_for_lb_backendservices.py function run_rule (line 26) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/lb/bp_2025_002_timeout_sec_for_lb_backendservices.py function run_rule (line 29) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/lb/bp_2025_003_connection_draining_backend_services.py function run_rule (line 23) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/lb/lb_rules_snapshot_test.py class Test (line 19) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/lint/lint_rule_repository_test.py class FakePyPkg (line 23) | class FakePyPkg: method __init__ (line 25) | def __init__(self, name, path): class FakeModulesGateway (line 30) | class FakeModulesGateway: method __init__ (line 33) | def __init__(self, modules_by_name): method list_pkg_modules (line 36) | def list_pkg_modules(self, pkg): method get_module (line 41) | def get_module(self, name): class FakeModule (line 45) | class FakeModule: method __init__ (line 48) | def __init__(self, methods, doc): method get_method (line 52) | def get_method(self, name): method get_module_doc (line 55) | def get_module_doc(self): method get_attr (line 58) | def get_attr(self, attribute): class FakeExecutionStrategy (line 62) | class FakeExecutionStrategy: method __init__ (line 65) | def __init__(self): method filter_runnable_rules (line 68) | def filter_runnable_rules(self, rules): method run_rules (line 71) | def run_rules(self, context, result, rules): class Setup (line 76) | class Setup: method __init__ (line 79) | def __init__(self, method repo (line 90) | def repo(self): method modules_gw (line 98) | def modules_gw(self): method execution_strategy (line 102) | def execution_strategy(self): function mk_simple_rule_module (line 106) | def mk_simple_rule_module(methods=None, doc=None): function mk_simple_async_rule_module (line 112) | def mk_simple_async_rule_module(methods=None, doc=None): function test_sync_happy_path (line 118) | def test_sync_happy_path(): function test_async_happy_path (line 139) | def test_async_happy_path(): function test_no_entrypoint_raises (line 160) | def test_no_entrypoint_raises(): function test_wrong_rule_class_raises (line 171) | def test_wrong_rule_class_raises(): function test_wrong_module_names_ignored (line 182) | def test_wrong_module_names_ignored(): function test_tests_ignored (line 195) | def test_tests_ignored(): function test_empty_doc_raises (line 208) | def test_empty_doc_raises(): function test_singleline_doc_happy_path (line 220) | def test_singleline_doc_happy_path(): function test_multiline_doc_happy_path (line 236) | def test_multiline_doc_happy_path(): function test_non_empty_second_doc_line_raises (line 254) | def test_non_empty_second_doc_line_raises(): function test_ext_ignored (line 267) | def test_ext_ignored(): function test_ext_loaded (line 280) | def test_ext_loaded(): function test_include_id (line 295) | def test_include_id(): function test_include_class (line 316) | def test_include_class(): function test_include_product (line 337) | def test_include_product(): function test_exclude_id (line 362) | def test_exclude_id(): function test_exclude_class (line 383) | def test_exclude_class(): function test_exclude_product (line 404) | def test_exclude_product(): FILE: gcpdiag/lint/looker/bp_2025_001_get_all_instances.py function run_rule (line 22) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/looker/bp_2025_002_lsp_high_intensity_queries_bq.py function prepare_rule (line 33) | def prepare_rule(context: models.Context): function run_rule (line 42) | def run_rule( FILE: gcpdiag/lint/looker/bp_2025_003_get_all_lags_operations.py function format_operation_message (line 12) | def format_operation_message(operation): function run_rule (line 28) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/looker/looker_rules_snapshot_test.py class Test (line 19) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/lint/notebooks/bp_2023_001_enable_report_system_health.py function prefetch_rule (line 32) | def prefetch_rule(context: models.Context): function run_rule (line 36) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/notebooks/bp_2023_002_instances_upgrade_available.py function prefetch_rule (line 26) | def prefetch_rule(context: models.Context): function run_rule (line 30) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/notebooks/bp_2023_003_runtimes_upgrade_available.py function prefetch_rule (line 26) | def prefetch_rule(context: models.Context): function run_rule (line 30) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/notebooks/bp_2023_004_runtime_idle_shutdown.py function prefetch_rule (line 25) | def prefetch_rule(context: models.Context): function run_rule (line 29) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/notebooks/err_2023_001_instances_health_state.py function prefetch_rule (line 27) | def prefetch_rule(context: models.Context): function run_rule (line 31) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/notebooks/err_2023_002_create_notebook_compute_subnetworks_permissions_missing.py function prepare_rule (line 49) | def prepare_rule(context: models.Context): function find_logs_with_permission_errors (line 67) | def find_logs_with_permission_errors(context: models.Context, function run_rule (line 86) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/notebooks/err_2023_003_create_notebook_permissions_missing.py function prepare_rule (line 50) | def prepare_rule(context: models.Context): function find_logs_with_permission_errors (line 68) | def find_logs_with_permission_errors(context: models.Context, function run_rule (line 80) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/notebooks/err_2023_004_runtimes_health_state.py function prefetch_rule (line 27) | def prefetch_rule(context: models.Context): function run_rule (line 31) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/notebooks/err_2024_001_executor_explicit_project_permissions.py function prepare_rule (line 54) | def prepare_rule(context: models.Context): function find_logs_with_permission_errors (line 67) | def find_logs_with_permission_errors(context: models.Context): function run_rule (line 79) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/notebooks/notebooks_rules_snapshot_test.py class Test (line 19) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/lint/notebooks/warn_2023_001_notebooks_oom.py function prepare_rule (line 31) | def prepare_rule(context: models.Context): function run_rule (line 36) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/notebooks/warn_2023_002_data_disk_utilization.py function prefetch_rule (line 25) | def prefetch_rule(context: models.Context): function run_rule (line 29) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/notebooks/warn_2023_003_boot_disk_utilization.py function prefetch_rule (line 25) | def prefetch_rule(context: models.Context): function run_rule (line 29) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/output/api_output.py class APIOutput (line 22) | class APIOutput(base_output.BaseOutput): method result_handler (line 26) | def result_handler(self) -> 'lint.LintResultsHandler': method process_rule_report (line 29) | def process_rule_report(self, method get_logging_handler (line 33) | def get_logging_handler(self) -> logging.Handler: FILE: gcpdiag/lint/output/base_output.py class BaseOutput (line 11) | class BaseOutput: method __init__ (line 19) | def __init__(self, method display_banner (line 30) | def display_banner(self) -> None: method display_header (line 33) | def display_header(self, context: models.Context) -> None: method display_footer (line 36) | def display_footer(self, result: 'lint.LintResults') -> None: method get_logging_handler (line 44) | def get_logging_handler(self) -> logging.Handler: method print_line (line 47) | def print_line(self, text: str = '') -> None: method _should_result_be_skipped (line 51) | def _should_result_be_skipped(self, result: 'lint.LintRuleResult') -> ... method _should_rule_be_skipped (line 56) | def _should_rule_be_skipped( class _LoggingHandler (line 63) | class _LoggingHandler(logging.Handler): method __init__ (line 67) | def __init__(self, output: BaseOutput): method format (line 71) | def format(self, record: logging.LogRecord) -> str: method emit (line 74) | def emit(self, record: logging.LogRecord) -> None: FILE: gcpdiag/lint/output/csv_output.py class CSVOutput (line 24) | class CSVOutput(base_output.BaseOutput): method __init__ (line 29) | def __init__(self, method result_handler (line 38) | def result_handler(self) -> 'lint.LintResultsHandler': method process_rule_report (line 41) | def process_rule_report(self, method _print_rule_report (line 46) | def _print_rule_report(self, method _add_result (line 56) | def _add_result(self, method display_header (line 78) | def display_header(self, context): method display_footer (line 82) | def display_footer(self, result) -> None: FILE: gcpdiag/lint/output/json_output.py class JSONOutput (line 23) | class JSONOutput(base_output.BaseOutput): method display_header (line 28) | def display_header(self, context: models.Context) -> None: method display_footer (line 33) | def display_footer(self, result: lint.LintResults) -> None: method result_handler (line 41) | def result_handler(self) -> 'lint.LintResultsHandler': method process_rule_report (line 44) | def process_rule_report(self, method _print_rule_report (line 49) | def _print_rule_report(self, method _add_result (line 59) | def _add_result(self, FILE: gcpdiag/lint/output/terminal_output.py function is_cloud_shell (line 34) | def is_cloud_shell(): function emoji_wrap (line 38) | def emoji_wrap(char): class OutputOrderer (line 46) | class OutputOrderer: method __init__ (line 54) | def __init__(self, result_handler: 'lint.LintResultsHandler', method process_rule_report (line 61) | def process_rule_report(self, rule_report: Any) -> None: method _output_ready (line 66) | def _output_ready(self) -> None: method _has_more_work (line 73) | def _has_more_work(self) -> bool: method _is_next_rule_ready (line 77) | def _is_next_rule_ready(self) -> bool: method _next_rule_id (line 81) | def _next_rule_id(self) -> str: class TerminalOutput (line 85) | class TerminalOutput(base_output.BaseOutput): method __init__ (line 91) | def __init__(self, method result_handler (line 103) | def result_handler(self) -> 'lint.LintResultsHandler': method process_rule_report (line 111) | def process_rule_report(self, method _print_rule_report (line 117) | def _print_rule_report(self, method _handle_rule_report_result (line 126) | def _handle_rule_report_result(self, method _wrap_indent (line 142) | def _wrap_indent(self, text: str, prefix: str) -> str: method _italic (line 147) | def _italic(self, text: str) -> str: method terminal_update_line (line 154) | def terminal_update_line(self, text: str) -> None: method terminal_erase_line (line 167) | def terminal_erase_line(self) -> None: method terminal_print_line (line 176) | def terminal_print_line(self, text: str = '') -> None: method display_banner (line 187) | def display_banner(self) -> None: method _print_rule_header (line 193) | def _print_rule_header(self, rule: 'lint.LintRule') -> None: method _print_long_desc (line 204) | def _print_long_desc(self, rule: 'lint.LintRule') -> None: method _print_skipped (line 211) | def _print_skipped(self, resource: Optional[models.Resource], method _print_ok (line 230) | def _print_ok(self, resource: Optional[models.Resource], method _print_failed (line 243) | def _print_failed(self, resource: Optional[models.Resource], method get_logging_handler (line 256) | def get_logging_handler(self) -> logging.Handler: class _LoggingHandler (line 260) | class _LoggingHandler(logging.Handler): method __init__ (line 264) | def __init__(self, output: TerminalOutput) -> None: method format (line 268) | def format(self, record: logging.LogRecord) -> str: method emit (line 271) | def emit(self, record: logging.LogRecord) -> None: FILE: gcpdiag/lint/pubsub/bp_2024_001_ouma_less_one_day.py function prefetch_rule (line 36) | def prefetch_rule(context: models.Context): function run_rule (line 57) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/pubsub/err_2024_001_bq_subscription_table_not_found.py function prepare_rule (line 38) | def prepare_rule(context: models.Context): function run_rule (line 46) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/pubsub/err_2024_002_vpc_sc_new_subs_create_policy_violated.py function prepare_rule (line 39) | def prepare_rule(context: models.Context): function run_rule (line 47) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/pubsub/err_2024_003_snapshot_creation_fails.py function prepare_rule (line 38) | def prepare_rule(context: models.Context): function run_rule (line 46) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/pubsub/err_2025_001_push_service_agent_permission.py function prefetch_rule (line 30) | def prefetch_rule(context: models.Context): function run_rule (line 34) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/pubsub/pubsub_rules_snapshot_test.py class Test (line 19) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/lint/pubsub/warn_2023_001_detached_subscription_exists.py function run_rule (line 27) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/pubsub/warn_2023_002_bq_subscription_has_dlq_topic.py function run_rule (line 26) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/pubsub/warn_2023_003_topic_atleastone_sub.py function run_rule (line 28) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/pubsub/warn_2023_004_orphaned_subscription_exists.py function run_rule (line 29) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/pubsub/warn_2023_005_bq_subscription_permisions.py function prefetch_rule (line 30) | def prefetch_rule(context: models.Context): function run_rule (line 34) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/pubsub/warn_2023_006_push_requests_failing.py function prefetch_rule (line 35) | def prefetch_rule(context: models.Context): function run_rule (line 58) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/pubsub/warn_2024_001_dead_letter_queues_permissions.py function prefetch_rule (line 35) | def prefetch_rule(context: models.Context): function run_rule (line 40) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/pubsub/warn_2024_002_gcs_subscription_permissions.py function prefetch_rule (line 34) | def prefetch_rule(context: models.Context): function run_rule (line 51) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... function check_policy_project (line 85) | def check_policy_project(context, member) -> bool: function check_policy_buckets (line 93) | def check_policy_buckets(member) -> bool: FILE: gcpdiag/lint/pubsub/warn_2024_003_cmek_topic_permissions.py function prefetch_rule (line 34) | def prefetch_rule(context: models.Context): function run_rule (line 39) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/snapshot_test_base.py class RulesSnapshotTestBase (line 37) | class RulesSnapshotTestBase: method test_all_rules (line 40) | def test_all_rules(self, snapshot): method _list_rules (line 55) | def _list_rules(self): method _mk_context (line 58) | def _mk_context(self): method _mk_output (line 61) | def _mk_output(self, output_stream): method _mk_repo (line 64) | def _mk_repo(self, rule=None): FILE: gcpdiag/lint/tpu/tpu_rules_snapshot_test.py class Test (line 19) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/lint/tpu/warn_2022_001_stockout.py function prepare_rule (line 41) | def prepare_rule(context: models.Context): function run_rule (line 49) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/vertex/vertex_rules_snapshot_test.py class Test (line 19) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/lint/vertex/warn_2023_001_featurestores_state.py function prefetch_rule (line 26) | def prefetch_rule(context: models.Context): function run_rule (line 31) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/vpc/bp_2022_001_pga_next_hop.py function run_rule (line 16) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/vpc/bp_2023_001_public_zone_logging.py function run_rule (line 10) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/vpc/sec_2023_001_public_zone_dnssec.py function run_rule (line 23) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/vpc/vpc_rules_snapshot_test.py class Test (line 19) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/lint/vpc/warn_2022_001_project_level_quota.py function prefetch_rule (line 139) | def prefetch_rule(context: models.Context): function run_rule (line 152) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/vpc/warn_2023_001_psa_no_export_custom_routes.py function run_rule (line 28) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/vpc/warn_2023_002_private_zone_attachment.py function run_rule (line 23) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/lint/vpc/warn_2024_001_unused_reserved_ip_addresses.py function run_rule (line 27) | def run_rule(context: models.Context, report: lint.LintReportRuleInterfa... FILE: gcpdiag/models.py function _mapping_str (line 28) | def _mapping_str(mapping: Mapping[str, str]) -> str: class Messages (line 32) | class Messages(dict): method get_msg (line 34) | def get_msg(self, template: str, **kwargs): class Parameter (line 44) | class Parameter(dict[T, V], Generic[T, V]): method __init__ (line 47) | def __init__(self, *args, **kwargs): method _parse_value (line 55) | def _parse_value(self, value: str) -> Any: method __setitem__ (line 61) | def __setitem__(self, key: T, value: V) -> None: method update (line 64) | def update(self, *args, **kwargs) -> None: method setdefault (line 68) | def setdefault(self, key: T, default: V = None) -> V: method __str__ (line 75) | def __str__(self): class Context (line 80) | class Context: method copy_with (line 98) | def copy_with(self, **changes) -> 'Context': method __init__ (line 109) | def __init__( method __str__ (line 178) | def __str__(self): method __hash__ (line 190) | def __hash__(self): method match_project_resource (line 196) | def match_project_resource( class Resource (line 243) | class Resource(abc.ABC): method __init__ (line 247) | def __init__(self, project_id): method __str__ (line 250) | def __str__(self): method __hash__ (line 253) | def __hash__(self): method __lt__ (line 256) | def __lt__(self, other): method __eq__ (line 259) | def __eq__(self, other): method project_id (line 266) | def project_id(self) -> str: method full_path (line 272) | def full_path(self) -> str: method short_path (line 280) | def short_path(self) -> str: FILE: gcpdiag/models_test.py function test_context_region_exception (line 23) | def test_context_region_exception(): function test_context_to_string (line 29) | def test_context_to_string(): function test_match_project_resource (line 63) | def test_match_project_resource(): function test_generic_declaration (line 126) | def test_generic_declaration(): function test_string_strip (line 131) | def test_string_strip(): function test_update_method (line 137) | def test_update_method(): function test_setdefault_existing_key (line 144) | def test_setdefault_existing_key(): function test_setdefault_non_existing_key (line 150) | def test_setdefault_non_existing_key(): FILE: gcpdiag/product_list.py function get_product_list (line 7) | def get_product_list() -> Dict: FILE: gcpdiag/queries/apigee.py class ApigeeEnvironment (line 32) | class ApigeeEnvironment(models.Resource): method __init__ (line 37) | def __init__(self, apigee_org, env_name: str): method full_path (line 43) | def full_path(self) -> str: class ApigeeOrganization (line 47) | class ApigeeOrganization(models.Resource): method __init__ (line 56) | def __init__(self, method full_path (line 65) | def full_path(self) -> str: method environments (line 69) | def environments(self) -> Iterable[ApigeeEnvironment]: method runtime_type (line 79) | def runtime_type(self) -> str: method runtime_database_encryption_key_name (line 85) | def runtime_database_encryption_key_name(self) -> str: method authorized_network (line 92) | def authorized_network(self) -> str: method network (line 99) | def network(self) -> network.Network: class EnvironmentGroup (line 119) | class EnvironmentGroup(models.Resource): method __init__ (line 125) | def __init__(self, apigee_org: ApigeeOrganization, resource_data): method name (line 131) | def name(self) -> str: method full_path (line 135) | def full_path(self) -> str: method host_names (line 139) | def host_names(self) -> List[str]: class ApigeeInstance (line 143) | class ApigeeInstance(models.Resource): method __init__ (line 149) | def __init__(self, apigee_org: ApigeeOrganization, resource_data): method name (line 155) | def name(self) -> str: method full_path (line 159) | def full_path(self) -> str: method disk_encryption_key_name (line 163) | def disk_encryption_key_name(self) -> str: method host (line 167) | def host(self) -> str: method location (line 171) | def location(self) -> str: function get_org (line 176) | def get_org(context: models.Context) -> Optional[ApigeeOrganization]: function get_envgroups (line 203) | def get_envgroups( function get_envgroups_attachments (line 221) | def get_envgroups_attachments(envgroup_name: str) -> List[str]: function get_instances (line 238) | def get_instances( function get_instances_attachments (line 259) | def get_instances_attachments(instance_name: str) -> List[str]: function get_network_bridge_instance_groups (line 277) | def get_network_bridge_instance_groups( FILE: gcpdiag/queries/apigee_stub.py class ApigeeApiStub (line 30) | class ApigeeApiStub: method __init__ (line 33) | def __init__(self, project_id=DUMMY_PROJECT_ID): method organizations (line 36) | def organizations(self): class ApigeeOraganizationsApiStub (line 40) | class ApigeeOraganizationsApiStub(ApigeeApiStub): method list (line 43) | def list(self, parent): method get (line 46) | def get(self, name): method envgroups (line 49) | def envgroups(self): method instances (line 52) | def instances(self): class ApigeeEnvgroupsApiStub (line 56) | class ApigeeEnvgroupsApiStub(ApigeeApiStub): method list (line 59) | def list(self, parent): method attachments (line 65) | def attachments(self): method list_next (line 68) | def list_next(self, previous_request, previous_response): class ApigeeInstancesApiStub (line 72) | class ApigeeInstancesApiStub(ApigeeApiStub): method list (line 75) | def list(self, parent): method attachments (line 81) | def attachments(self): method list_next (line 84) | def list_next(self, previous_request, previous_response): class ApigeeEnvGroupsAttachmentsApiStub (line 88) | class ApigeeEnvGroupsAttachmentsApiStub(ApigeeApiStub): method list (line 91) | def list(self, parent): method list_next (line 100) | def list_next(self, previous_request, previous_response): class ApigeeInstancesAttachmentsApiStub (line 104) | class ApigeeInstancesAttachmentsApiStub(ApigeeApiStub): method list (line 107) | def list(self, parent): method list_next (line 116) | def list_next(self, previous_request, previous_response): FILE: gcpdiag/queries/apigee_test.py class TestOrganization (line 43) | class TestOrganization: method test_get_org (line 46) | def test_get_org(self): method test_get_envgroups (line 60) | def test_get_envgroups(self): method test_get_envgroups_attachments (line 71) | def test_get_envgroups_attachments(self): method test_get_instances (line 76) | def test_get_instances(self): method test_get_instances_attachments (line 87) | def test_get_instances_attachments(self): method test_get_network_bridge_instance_groups (line 92) | def test_get_network_bridge_instance_groups(self): FILE: gcpdiag/queries/apis.py function _auth_method (line 43) | def _auth_method(): function _get_credentials_adc (line 59) | def _get_credentials_adc(): function _get_credentials_key (line 71) | def _get_credentials_key(): function set_credentials (line 82) | def set_credentials(cred_json): function get_credentials (line 91) | def get_credentials(): function _get_project_or_billing_id (line 103) | def _get_project_or_billing_id(project_id: str) -> str: function login (line 110) | def login(): function get_user_email (line 115) | def get_user_email() -> str: function get_api (line 130) | def get_api(service_name: str, function _list_enabled_apis (line 184) | def _list_enabled_apis(project_id: str) -> Set[str]: function is_enabled (line 212) | def is_enabled(project_id: str, service_name: str) -> bool: function is_all_enabled (line 217) | def is_all_enabled(project_id: str, services: list) -> Dict[str, str]: function list_services_with_state (line 228) | def list_services_with_state(project_id: str) -> Dict[str, str]: function verify_access (line 244) | def verify_access(project_id: str): FILE: gcpdiag/queries/apis_stub.py function get_json_dir (line 209) | def get_json_dir(project_id: str): class ApiStub (line 213) | class ApiStub: method fail_next (line 221) | def fail_next(self, fail_count: int, fail_status: int = 429): method _maybe_raise_api_exception (line 225) | def _maybe_raise_api_exception(self): class RestCallStub (line 238) | class RestCallStub(ApiStub): method __init__ (line 241) | def __init__(self, method execute (line 257) | def execute(self, num_retries: int = 0) -> dict: class ServiceUsageApiStub (line 276) | class ServiceUsageApiStub(ApiStub): method __init__ (line 279) | def __init__(self, mock_state=None, project_id=None, service=None): method services (line 284) | def services(self): method list (line 288) | def list(self, parent, filter): method list_next (line 295) | def list_next(self, request, response): method get (line 298) | def get(self, name): method execute (line 306) | def execute(self, num_retries=0): function _batch_request_default_callback (line 319) | def _batch_request_default_callback(req_id, response, exception): class BatchRequestStub (line 324) | class BatchRequestStub(ApiStub): method __init__ (line 327) | def __init__(self, callback=_batch_request_default_callback): method add (line 331) | def add(self, request, callback=None, request_id=None): method execute (line 339) | def execute(self): function get_api_stub (line 350) | def get_api_stub(service_name: str, FILE: gcpdiag/queries/apis_test.py class TestCredential (line 24) | class TestCredential: method test_set_credential_null (line 27) | def test_set_credential_null(self): method test_set_credential (line 35) | def test_set_credential(self, mock_cred): class Test (line 44) | class Test: method test_is_enabled (line 47) | def test_is_enabled(self): method test_is_all_enabled (line 51) | def test_is_all_enabled(self): class TestTPC (line 60) | class TestTPC(TestCase): method test_tpc_endpoint (line 65) | def test_tpc_endpoint(self, mock_build, mock_cred): method test_not_tpc_endpoint (line 74) | def test_not_tpc_endpoint(self, mock_build, mock_cred): method test_universe_mismatch (line 83) | def test_universe_mismatch(self, mock_build, mock_cred): FILE: gcpdiag/queries/apis_utils.py function execute_concurrently (line 29) | def execute_concurrently( function _execute_with_pagination_in_api_context (line 59) | def _execute_with_pagination_in_api_context( function execute_concurrently_with_pagination (line 96) | def execute_concurrently_with_pagination( function list_all (line 116) | def list_all(request, function multi_list_all (line 139) | def multi_list_all( function batch_list_all (line 147) | def batch_list_all(api, function _original_batch (line 164) | def _original_batch(api, function should_retry (line 200) | def should_retry(resp_status): function get_nth_exponential_random_retry (line 208) | def get_nth_exponential_random_retry(n, random_pct, multiplier, random_f... function batch_execute_all (line 213) | def batch_execute_all(api, requests: list): function execute_single_request (line 290) | def execute_single_request( FILE: gcpdiag/queries/apis_utils_test.py class RequestMock (line 27) | class RequestMock(apis_stub.ApiStub): method __init__ (line 30) | def __init__(self, method execute (line 40) | def execute(self, num_retries: int = 0): function next_function_mock (line 51) | def next_function_mock(previous_request, previous_response): function mock_sleep (line 62) | def mock_sleep(sleep_time: float): class Test (line 68) | class Test(unittest.TestCase): method test_list_all (line 70) | def test_list_all(self): method test_multi_list_all (line 74) | def test_multi_list_all(self): method test_batch_list_all (line 81) | def test_batch_list_all(self): method test_batch_execute_all (line 93) | def test_batch_execute_all(self): method test_batch_execute_all_unretriable_exception (line 103) | def test_batch_execute_all_unretriable_exception(self): method test_batch_execute_all_too_many_failures (line 113) | def test_batch_execute_all_too_many_failures(self): method test_batch_execute_all_retriable_exception (line 122) | def test_batch_execute_all_retriable_exception(self): method test_batch_execute_batchapi_tempfail (line 140) | def test_batch_execute_batchapi_tempfail(self): method test_execute_concurrently_api_server (line 157) | def test_execute_concurrently_api_server(self, mock_get_executor, method test_execute_concurrently_cli (line 197) | def test_execute_concurrently_cli(self, mock_batch_execute_all): class ExecuteConcurrentlyWithPaginationTest (line 216) | class ExecuteConcurrentlyWithPaginationTest(unittest.TestCase): method setUp (line 219) | def setUp(self): method test_cli_context_uses_batch_list_all (line 228) | def test_cli_context_uses_batch_list_all(self, mock_batch_list_all): method test_api_context_single_page (line 249) | def test_api_context_single_page(self, mock_execute_concurrently): method test_api_context_multi_page (line 273) | def test_api_context_multi_page(self, mock_execute_concurrently): method test_api_context_skips_404 (line 308) | def test_api_context_skips_404(self, mock_execute_concurrently): method test_api_context_raises_other_error (line 332) | def test_api_context_raises_other_error(self, mock_execute_concurrently): FILE: gcpdiag/queries/artifact_registry.py class ArtifactRegistryIAMPolicy (line 25) | class ArtifactRegistryIAMPolicy(iam.BaseIAMPolicy): method _is_resource_permission (line 27) | def _is_resource_permission(self, permission): class ProjectSettings (line 32) | class ProjectSettings: function get_registry_iam_policy (line 37) | def get_registry_iam_policy(context: models.Context, location: str, function get_project_settings (line 50) | def get_project_settings(project_id: str) -> ProjectSettings: FILE: gcpdiag/queries/artifact_registry_stub.py class ArtifactRegistryApiStub (line 31) | class ArtifactRegistryApiStub: method projects (line 34) | def projects(self): method locations (line 37) | def locations(self): method repositories (line 40) | def repositories(self): method getIamPolicy (line 43) | def getIamPolicy(self, resource: str) -> apis_stub.RestCallStub: method getProjectSettings (line 52) | def getProjectSettings(self, name: str) -> apis_stub.RestCallStub: FILE: gcpdiag/queries/artifact_registry_test.py class TestArtifactRegistry (line 30) | class TestArtifactRegistry: method test_get_bucket_iam_policy (line 33) | def test_get_bucket_iam_policy(self): method test_get_project_settings (line 40) | def test_get_project_settings(self): FILE: gcpdiag/queries/bigquery.py function get_project_policy (line 65) | def get_project_policy(context: models.Context): function get_organization_policy (line 80) | def get_organization_policy(context: models.Context, organization_id: str): function check_permissions_for_principal (line 103) | def check_permissions_for_principal( function get_missing_permissions (line 117) | def get_missing_permissions(required_permissions: Set[str], class BigQueryTable (line 128) | class BigQueryTable: method __init__ (line 135) | def __init__(self, project_id: str, dataset_id: str, table_id: str): method table_identifier (line 141) | def table_identifier(self) -> str: class BigQueryRoutine (line 145) | class BigQueryRoutine: method __init__ (line 152) | def __init__(self, project_id: str, dataset_id: str, routine_id: str): method routine_identifier (line 158) | def routine_identifier(self) -> str: class BigQueryJob (line 162) | class BigQueryJob(models.Resource): method __init__ (line 169) | def __init__( method full_path (line 181) | def full_path(self) -> str: method id (line 187) | def id(self) -> str: method short_path (line 192) | def short_path(self) -> str: method user_email (line 197) | def user_email(self) -> str: method _job_configuration (line 201) | def _job_configuration(self) -> dict[str, Any]: method _query (line 205) | def _query(self) -> dict[str, Any]: method _stats (line 209) | def _stats(self) -> dict[str, Any]: method _query_stats (line 214) | def _query_stats(self) -> dict[str, Any]: method _query_info (line 219) | def _query_info(self) -> dict[str, Any]: method _status (line 223) | def _status(self) -> dict[str, Any]: method job_type (line 227) | def job_type(self) -> str: method query_sql (line 231) | def query_sql(self) -> str: method use_legacy_sql (line 235) | def use_legacy_sql(self) -> bool: method priority (line 239) | def priority(self) -> str: method edition (line 243) | def edition(self) -> str: method creation_time (line 248) | def creation_time(self) -> Optional[int]: method start_time (line 254) | def start_time(self) -> Optional[int]: method end_time (line 260) | def end_time(self) -> Optional[int]: method total_bytes_processed (line 266) | def total_bytes_processed(self) -> int: method total_bytes_billed (line 272) | def total_bytes_billed(self) -> int: method total_slot_ms (line 278) | def total_slot_ms(self) -> int: method cache_hit (line 283) | def cache_hit(self) -> bool: method quota_deferments (line 287) | def quota_deferments(self) -> list[str]: method query_plan (line 297) | def query_plan(self) -> list[dict[str, Any]]: method total_partitions_processed (line 302) | def total_partitions_processed(self) -> int: method referenced_tables (line 308) | def referenced_tables(self) -> list[BigQueryTable]: method referenced_routines (line 325) | def referenced_routines(self) -> list[BigQueryRoutine]: method num_affected_dml_rows (line 342) | def num_affected_dml_rows(self) -> int: method dml_stats (line 348) | def dml_stats(self) -> dict[str, int]: method statement_type (line 366) | def statement_type(self) -> str: method bi_engine_statistics (line 371) | def bi_engine_statistics(self) -> dict[str, Any]: method vector_search_statistics (line 391) | def vector_search_statistics(self) -> dict[str, Any]: method performance_insights (line 422) | def performance_insights(self) -> dict[str, Any]: method optimization_details (line 453) | def optimization_details(self) -> Any: method export_data_statistics (line 457) | def export_data_statistics(self) -> dict[str, int]: method load_query_statistics (line 471) | def load_query_statistics(self) -> dict[str, int]: method spark_statistics (line 499) | def spark_statistics(self) -> dict[str, Any]: method transferred_bytes (line 518) | def transferred_bytes(self) -> int: method reservation_id (line 524) | def reservation_id(self) -> str: method reservation_admin_project_id (line 529) | def reservation_admin_project_id(self) -> Optional[str]: method num_child_jobs (line 550) | def num_child_jobs(self) -> int: method parent_job_id (line 555) | def parent_job_id(self) -> str: method row_level_security_applied (line 560) | def row_level_security_applied(self) -> bool: method data_masking_applied (line 566) | def data_masking_applied(self) -> bool: method session_id (line 572) | def session_id(self) -> str: method final_execution_duration_ms (line 579) | def final_execution_duration_ms(self) -> int: method job_state (line 585) | def job_state(self) -> str: method job_error_result (line 590) | def job_error_result(self) -> dict[str, Optional[str]]: method job_errors (line 602) | def job_errors(self) -> list[dict[str, Optional[str]]]: method materialized_view_statistics (line 617) | def materialized_view_statistics(self) -> dict[str, Any]: method metadata_cache_statistics (line 648) | def metadata_cache_statistics(self) -> dict[str, Any]: method information_schema_user_email (line 673) | def information_schema_user_email(self) -> str | None: method information_schema_start_time_str (line 679) | def information_schema_start_time_str(self) -> str | None: method information_schema_end_time_str (line 685) | def information_schema_end_time_str(self) -> str | None: method information_schema_query (line 691) | def information_schema_query(self) -> str | None: method information_schema_total_modified_partitions (line 697) | def information_schema_total_modified_partitions(self) -> Union[int, s... method information_schema_resource_warning (line 712) | def information_schema_resource_warning(self) -> str: method information_schema_normalized_literals (line 727) | def information_schema_normalized_literals(self) -> str: function get_bigquery_job_api_resource_data (line 738) | def get_bigquery_job_api_resource_data( function get_information_schema_job_metadata (line 757) | def get_information_schema_job_metadata( function get_bigquery_job (line 850) | def get_bigquery_job( function _parse_value (line 908) | def _parse_value(field_schema: dict, value_data: Any) -> Any: function _parse_row (line 933) | def _parse_row(schema_fields: List[dict], function get_query_results (line 945) | def get_query_results( function get_bigquery_project (line 1113) | def get_bigquery_project(project_id: str) -> crm.Project: function get_table (line 1158) | def get_table(project_id: str, dataset_id: str, FILE: gcpdiag/queries/bigquery_stub.py class GetJobRequest (line 18) | class GetJobRequest(apis_stub.ApiStub): method __init__ (line 21) | def __init__(self, project_id: str, location: str, job_id: str): method execute (line 32) | def execute(self, num_retries=0): class GetQueryResultsRequest (line 56) | class GetQueryResultsRequest(apis_stub.ApiStub): method __init__ (line 59) | def __init__(self, project_id: str, location: str, job_id: str): method execute (line 69) | def execute(self, num_retries=0): class BigQueryJobsStub (line 108) | class BigQueryJobsStub(apis_stub.ApiStub): method insert (line 114) | def insert(self, projectId: str, body: dict[str, Any]): method get (line 178) | def get(self, projectId: str, jobId: str, location: Optional[str] = No... method getQueryResults (line 217) | def getQueryResults(self, method query (line 230) | def query(self, projectId: str, body: dict[str, Any]): class BigQueryApiStub (line 287) | class BigQueryApiStub(apis_stub.ApiStub): method __init__ (line 290) | def __init__(self): method jobs (line 295) | def jobs(self): method new_batch_http_request (line 299) | def new_batch_http_request(self, callback=None): FILE: gcpdiag/queries/bigquery_test.py class TestBigQueryQueries (line 30) | class TestBigQueryQueries: method test_get_bigquery_job1_success_and_properties (line 38) | def test_get_bigquery_job1_success_and_properties(self, mock_api_is_en... method test_get_query_results_success (line 73) | def test_get_query_results_success(self, mock_api_is_enabled, mock_uuid, method test_get_query_results_api_disabled (line 99) | def test_get_query_results_api_disabled(self, mock_api_is_enabled, method test_get_bigquery_job2_success (line 114) | def test_get_bigquery_job2_success(self, mock_api_is_enabled, method test_get_bigquery_job_returns_none_on_api_fail (line 132) | def test_get_bigquery_job_returns_none_on_api_fail(self): method test_get_info_schema_not_found_returns_none (line 143) | def test_get_info_schema_not_found_returns_none(self, mock_get_user_em... method test_get_info_schema_api_disabled (line 156) | def test_get_info_schema_api_disabled(self, mock_api_is_enabled, method test_get_bigquery_job_info_schema_fails (line 171) | def test_get_bigquery_job_info_schema_fails(self, mock_api_is_enabled, method test_get_job_api_data_not_found_raises_error (line 193) | def test_get_job_api_data_not_found_raises_error(self, mock_api_is_ena... method test_get_bigquery_job_info_schema_extended_fields_fail (line 209) | def test_get_bigquery_job_info_schema_extended_fields_fail( FILE: gcpdiag/queries/billing.py class BillingAccount (line 31) | class BillingAccount(models.Resource): method full_path (line 39) | def full_path(self) -> str: method name (line 43) | def name(self) -> str: method display_name (line 47) | def display_name(self) -> str: method is_open (line 50) | def is_open(self) -> bool: method is_master (line 53) | def is_master(self) -> bool: method list_projects (line 56) | def list_projects(self, context) -> list: method __init__ (line 59) | def __init__(self, project_id, resource_data): class ProjectBillingInfo (line 64) | class ProjectBillingInfo(models.Resource): method full_path (line 72) | def full_path(self) -> str: method name (line 76) | def name(self) -> str: method project_id (line 80) | def project_id(self) -> str: method billing_account_name (line 84) | def billing_account_name(self) -> str: method is_billing_enabled (line 87) | def is_billing_enabled(self) -> bool: method __init__ (line 90) | def __init__(self, project_id, resource_data): class CostInsights (line 95) | class CostInsights(models.Resource): method full_path (line 99) | def full_path(self) -> str: method description (line 103) | def description(self) -> str: method anomaly_details (line 107) | def anomaly_details(self) -> dict: method forecasted_units (line 111) | def forecasted_units(self) -> str: method forecasted_currency (line 115) | def forecasted_currency(self) -> str: method actual_units (line 119) | def actual_units(self) -> str: method actual_currency (line 123) | def actual_currency(self) -> str: method start_time (line 127) | def start_time(self) -> str: method end_time (line 131) | def end_time(self) -> str: method anomaly_type (line 135) | def anomaly_type(self) -> str: method is_anomaly (line 139) | def is_anomaly(self) -> bool: method build_anomaly_description (line 144) | def build_anomaly_description(self): method __init__ (line 151) | def __init__(self, project_id, resource_data): function get_billing_info (line 157) | def get_billing_info(project_id) -> ProjectBillingInfo: function get_billing_account (line 171) | def get_billing_account(project_id: str) -> Optional[BillingAccount]: function get_all_billing_accounts (line 197) | def get_all_billing_accounts(project_id: str) -> Optional[List[BillingAc... function get_all_projects_in_billing_account (line 221) | def get_all_projects_in_billing_account( function get_cost_insights_for_a_project (line 257) | def get_cost_insights_for_a_project(project_id: str): FILE: gcpdiag/queries/billing_stub.py class BillingApiStub (line 29) | class BillingApiStub: method __init__ (line 32) | def __init__(self, project_id=DUMMY_PROJECT_ID): method projects (line 35) | def projects(self): method billingAccounts (line 38) | def billingAccounts(self): class ProjectBillingInfo (line 42) | class ProjectBillingInfo(BillingApiStub): method getBillingInfo (line 45) | def getBillingInfo(self, name): class BillingAccountStub (line 49) | class BillingAccountStub(BillingApiStub): method get (line 52) | def get(self, name): method list (line 55) | def list(self): method list_next (line 58) | def list_next(self, previous_request, previous_response): method projects (line 61) | def projects(self): class BillingAccountProjectsStub (line 65) | class BillingAccountProjectsStub(BillingApiStub): method list (line 68) | def list(self, name): method list_next (line 72) | def list_next(self, previous_request, previous_response): class RecommenderBillingApiStub (line 76) | class RecommenderBillingApiStub: method __init__ (line 79) | def __init__(self, project_id=DUMMY_PROJECT_ID): method locations (line 82) | def locations(self): method insightTypes (line 85) | def insightTypes(self): method insights (line 88) | def insights(self): method get (line 91) | def get(self, name): method list (line 94) | def list(self, parent): method list_next (line 97) | def list_next(self, previous_request, previous_response): FILE: gcpdiag/queries/billing_test.py class TestBilling (line 42) | class TestBilling: method test_get_billing_account (line 45) | def test_get_billing_account(self): method test_get_all_billing_accounts (line 55) | def test_get_all_billing_accounts(self): method test_get_all_projects_in_billing_account (line 62) | def test_get_all_projects_in_billing_account(self): method test_get_billing_info (line 71) | def test_get_billing_info(self): method test_get_cost_insights_for_a_project (line 80) | def test_get_cost_insights_for_a_project(self): FILE: gcpdiag/queries/cloudasset.py class AssetResource (line 28) | class AssetResource(models.Resource): method __init__ (line 32) | def __init__(self, project_id, resource_data): method name (line 37) | def name(self) -> str: method full_path (line 45) | def full_path(self) -> str: method asset_type (line 49) | def asset_type(self) -> str: function search_all_resources (line 54) | def search_all_resources( FILE: gcpdiag/queries/cloudasset_stub.py class CloudAssetApiStub (line 25) | class CloudAssetApiStub(apis_stub.ApiStub): method v1 (line 28) | def v1(self): method searchAllResources (line 32) | def searchAllResources(self, scope, assetTypes=None, query=None): FILE: gcpdiag/queries/cloudasset_test.py class TestCloudAsset (line 28) | class TestCloudAsset: method test_search_all_resources (line 31) | def test_search_all_resources(self): FILE: gcpdiag/queries/cloudrun.py class Service (line 28) | class Service(models.Resource): method __init__ (line 32) | def __init__(self, project_id, resource_data): method name (line 37) | def name(self) -> str: method id (line 45) | def id(self) -> str: method full_path (line 49) | def full_path(self) -> str: method conditions (line 53) | def conditions(self) -> Dict[str, 'ServiceCondition']: method short_path (line 60) | def short_path(self) -> str: class ServiceCondition (line 65) | class ServiceCondition: method __init__ (line 69) | def __init__(self, resource_data): method message (line 73) | def message(self) -> str: function get_all_locations (line 77) | def get_all_locations(project_id: str) -> Iterable[str]: function get_services (line 107) | def get_services(context: models.Context) -> Mapping[str, Service]: function get_service (line 154) | def get_service(project_id: str, region: str, service_name: str) -> Serv... FILE: gcpdiag/queries/cloudrun_stub.py class CloudRunApiStub (line 31) | class CloudRunApiStub: method projects (line 34) | def projects(self): method locations (line 37) | def locations(self): method services (line 40) | def services(self): method list (line 43) | def list(self, **args): method get (line 52) | def get(self, name): class GetServiceRequest (line 56) | class GetServiceRequest: method __init__ (line 59) | def __init__(self, name: str): method execute (line 62) | def execute(self, num_retries=0): FILE: gcpdiag/queries/cloudrun_test.py class TestCloudRun (line 27) | class TestCloudRun: method test_get_services (line 30) | def test_get_services(self): method test_get_service (line 36) | def test_get_service(self): FILE: gcpdiag/queries/cloudsql.py class Instance (line 25) | class Instance(models.Resource): method __init__ (line 29) | def __init__(self, project_id: str, resource_data: dict): method name (line 34) | def name(self) -> str: method state (line 38) | def state(self) -> str: method version (line 42) | def version(self) -> str: method is_regional (line 46) | def is_regional(self) -> bool: method ip_addresses (line 51) | def ip_addresses(self) -> Iterable[network.IPv4AddrOrIPv6Addr]: method has_public_ip (line 58) | def has_public_ip(self) -> bool: method has_maint_window (line 63) | def has_maint_window(self) -> int: method is_storage_auto_resize_enabled (line 71) | def is_storage_auto_resize_enabled(self) -> bool: method has_del_protection (line 75) | def has_del_protection(self) -> bool: method authorizednetworks (line 80) | def authorizednetworks(self) -> List[str]: method is_publically_accessible (line 89) | def is_publically_accessible(self) -> List[str]: method is_automated_backup_enabled (line 93) | def is_automated_backup_enabled(self) -> bool: method is_suspended_state (line 98) | def is_suspended_state(self) -> bool: method is_shared_core (line 102) | def is_shared_core(self) -> bool: method is_high_available (line 108) | def is_high_available(self) -> bool: method flags (line 113) | def flags(self) -> dict: method is_log_output_configured_as_table (line 118) | def is_log_output_configured_as_table(self) -> bool: method self_link (line 122) | def self_link(self) -> str: method full_path (line 126) | def full_path(self) -> str: method __str__ (line 129) | def __str__(self) -> str: function get_instances (line 134) | def get_instances(context: models.Context) -> Iterable[Instance]: FILE: gcpdiag/queries/cloudsql_stub.py class CloudSQLApiStub (line 24) | class CloudSQLApiStub: method instances (line 27) | def instances(self): method list (line 31) | def list(self, project): FILE: gcpdiag/queries/cloudsql_test.py class TestCloudSQL (line 27) | class TestCloudSQL: method test_get_instances (line 30) | def test_get_instances(self): method test_docker_bridge_ip_addresses (line 35) | def test_docker_bridge_ip_addresses(self): FILE: gcpdiag/queries/composer.py class Environment (line 28) | class Environment(models.Resource): method __init__ (line 32) | def __init__(self, project_id: str, resource_data: dict): method num_schedulers (line 39) | def num_schedulers(self) -> int: method worker_cpu (line 45) | def worker_cpu(self) -> float: method worker_memory_gb (line 50) | def worker_memory_gb(self) -> float: method worker_max_count (line 55) | def worker_max_count(self) -> int: method worker_concurrency (line 60) | def worker_concurrency(self) -> float: method parallelism (line 75) | def parallelism(self) -> float: method composer_version (line 79) | def composer_version(self) -> str: method airflow_version (line 85) | def airflow_version(self) -> str: method is_composer2 (line 91) | def is_composer2(self) -> bool: method full_path (line 95) | def full_path(self) -> str: method state (line 99) | def state(self) -> str: method image_version (line 103) | def image_version(self) -> str: method short_path (line 107) | def short_path(self) -> str: method airflow_config_overrides (line 111) | def airflow_config_overrides(self) -> dict: method service_account (line 116) | def service_account(self) -> str: method parse_full_path (line 125) | def parse_full_path(self) -> Tuple[str, str]: method __str__ (line 132) | def __str__(self) -> str: method is_private_ip (line 135) | def is_private_ip(self) -> bool: method gke_cluster (line 140) | def gke_cluster(self) -> str: function _query_region_envs (line 153) | def _query_region_envs(region, api, project_id): function _query_regions_envs (line 162) | def _query_regions_envs(regions, api, project_id, context: models.Context): function get_environments (line 172) | def get_environments(context: models.Context) -> Iterable[Environment]: FILE: gcpdiag/queries/composer_stub.py class ComposerApiStub (line 26) | class ComposerApiStub: method projects (line 29) | def projects(self): method locations (line 32) | def locations(self): method environments (line 35) | def environments(self): method list (line 39) | def list(self, parent): FILE: gcpdiag/queries/composer_test.py class TestComposer (line 27) | class TestComposer: method test_get_environments (line 30) | def test_get_environments(self): method test_service_account (line 35) | def test_service_account(self): method test_is_private_ip (line 45) | def test_is_private_ip(self): FILE: gcpdiag/queries/crm.py class Project (line 28) | class Project(models.Resource): method __init__ (line 38) | def __init__(self, resource_data): method number (line 48) | def number(self) -> int: method id (line 52) | def id(self) -> str: method name (line 57) | def name(self) -> str: method full_path (line 61) | def full_path(self) -> str: method short_path (line 65) | def short_path(self) -> str: method default_compute_service_account (line 69) | def default_compute_service_account(self) -> str: method parent (line 73) | def parent(self) -> str: function get_project (line 78) | def get_project(project_id: str) -> Project: function get_all_projects_in_parent (line 131) | def get_all_projects_in_parent(project_id: str) -> List[ProjectBillingIn... class Organization (line 169) | class Organization(models.Resource): method __init__ (line 177) | def __init__(self, project_id, resource_data): method id (line 182) | def id(self) -> str: method name (line 188) | def name(self) -> str: method full_path (line 193) | def full_path(self) -> str: method short_path (line 197) | def short_path(self) -> str: function get_organization (line 202) | def get_organization(project_id: str, FILE: gcpdiag/queries/crm_stub.py class CrmApiStub (line 30) | class CrmApiStub: method new_batch_http_request (line 36) | def new_batch_http_request(self): method projects (line 39) | def projects(self): method organizations (line 42) | def organizations(self): method list (line 46) | def list(self, parent=None, page_token=None, filter=None): method list_next (line 50) | def list_next(self, previous_request, previous_response): method search (line 53) | def search(self, query=None): method search_next (line 56) | def search_next(self, previous_request, previous_response): method get (line 60) | def get(self, project_id=None, name=None): method getAncestry (line 67) | def getAncestry(self, projectId='gcpdiag-bigquery1-aaaa', project_id=N... method getIamPolicy (line 75) | def getIamPolicy(self, resource): method getEffectiveOrgPolicy (line 81) | def getEffectiveOrgPolicy(self, resource, body): method listOrgPolicies (line 95) | def listOrgPolicies(self, resource): method listOrgPolicies_next (line 102) | def listOrgPolicies_next(self, previous_request, previous_response): FILE: gcpdiag/queries/crm_test.py function get_cache_stub (line 28) | def get_cache_stub(): class Test (line 35) | class Test: method test_get_project (line 38) | def test_get_project(self): FILE: gcpdiag/queries/dataflow.py class Job (line 22) | class Job(models.Resource): method __init__ (line 39) | def __init__(self, project_id: str, resource_data: dict): method full_path (line 44) | def full_path(self) -> str: method id (line 48) | def id(self) -> str: method state (line 52) | def state(self) -> str: method job_type (line 56) | def job_type(self) -> str: method location (line 60) | def location(self) -> str: method sdk_support_status (line 64) | def sdk_support_status(self) -> str: method sdk_language (line 68) | def sdk_language(self) -> str: method minutes_in_current_state (line 73) | def minutes_in_current_state(self) -> int: function get_region_dataflow_jobs (line 80) | def get_region_dataflow_jobs(api, context: models.Context, function get_all_dataflow_jobs (line 107) | def get_all_dataflow_jobs(context: models.Context) -> List[Job]: function get_job (line 129) | def get_job(project_id: str, job: str, region: str) -> Union[Job, None]: function get_all_dataflow_jobs_for_project (line 147) | def get_all_dataflow_jobs_for_project( function logs_excluded (line 173) | def logs_excluded(project_id: str) -> Union[bool, None]: FILE: gcpdiag/queries/dataflow_stub.py class DataflowApiStub (line 6) | class DataflowApiStub(apis_stub.ApiStub): method projects (line 9) | def projects(self): method locations (line 12) | def locations(self): method jobs (line 15) | def jobs(self): class DataflowJobsStub (line 19) | class DataflowJobsStub: method list (line 23) | def list(self, projectId, location): method list_next (line 28) | def list_next(self, previous_request, previous_response): method get (line 32) | def get(self, projectId, location, jobId): method aggregated (line 36) | def aggregated( method aggregated_next (line 42) | def aggregated_next(self, previous_request, previous_response): FILE: gcpdiag/queries/dataflow_test.py class TestDataFlow (line 13) | class TestDataFlow(unittest.TestCase): method test_get_jobs (line 16) | def test_get_jobs(self): method test_get_jobs_with_id (line 22) | def test_get_jobs_with_id(self): method test_get_jobs_for_project (line 34) | def test_get_jobs_for_project(self): FILE: gcpdiag/queries/datafusion.py class Instance (line 37) | class Instance(models.Resource): method __init__ (line 45) | def __init__(self, project_id, resource_data): method full_path (line 50) | def full_path(self) -> str: method short_path (line 59) | def short_path(self) -> str: method name (line 67) | def name(self) -> str: method location (line 72) | def location(self) -> str: method zone (line 77) | def zone(self) -> str: method type (line 81) | def type(self) -> str: method is_basic_type (line 85) | def is_basic_type(self) -> bool: method is_enterprise_type (line 89) | def is_enterprise_type(self) -> bool: method is_developer_type (line 93) | def is_developer_type(self) -> bool: method is_private (line 97) | def is_private(self) -> bool: method status (line 103) | def status(self) -> str: method status_details (line 107) | def status_details(self) -> Optional[str]: method is_running (line 113) | def is_running(self) -> bool: method is_deleting (line 117) | def is_deleting(self) -> bool: method version (line 121) | def version(self) -> Version: method api_service_agent (line 125) | def api_service_agent(self) -> str: method dataproc_service_account (line 129) | def dataproc_service_account(self) -> str: method tenant_project_id (line 136) | def tenant_project_id(self) -> str: method uses_shared_vpc (line 140) | def uses_shared_vpc(self) -> bool: method network (line 155) | def network(self) -> network.Network: method tp_ipv4_cidr (line 180) | def tp_ipv4_cidr(self) -> Optional[IPv4NetOrIPv6Net]: method api_endpoint (line 187) | def api_endpoint(self) -> str: function get_instances (line 192) | def get_instances(context: models.Context) -> Mapping[str, Instance]: function extract_support_datafusion_version (line 235) | def extract_support_datafusion_version() -> Dict[str, str]: class Profile (line 289) | class Profile(models.Resource): method __init__ (line 294) | def __init__(self, project_id, instance_name, resource_data): method full_path (line 300) | def full_path(self) -> str: method short_path (line 309) | def short_path(self) -> str: method name (line 318) | def name(self) -> str: method region (line 322) | def region(self) -> str: method status (line 329) | def status(self) -> str: method scope (line 333) | def scope(self) -> str: method is_dataproc_provisioner (line 337) | def is_dataproc_provisioner(self) -> bool: method is_existing_dataproc_provisioner (line 341) | def is_existing_dataproc_provisioner(self) -> bool: method autoscaling_enabled (line 345) | def autoscaling_enabled(self) -> bool: method image_version (line 353) | def image_version(self) -> str: method auto_scaling_policy (line 360) | def auto_scaling_policy(self) -> str: function get_instance_system_compute_profile (line 368) | def get_instance_system_compute_profile( function get_instance_user_compute_profile (line 386) | def get_instance_user_compute_profile(context: models.Context, function extract_datafusion_dataproc_version (line 409) | def extract_datafusion_dataproc_version() -> Dict[str, list[str]]: class Preference (line 458) | class Preference(models.Resource): method __init__ (line 463) | def __init__(self, project_id, instance, resource_data): method full_path (line 469) | def full_path(self) -> str: method image_version (line 477) | def image_version(self): function get_system_preferences (line 482) | def get_system_preferences(context: models.Context, function get_namespace_preferences (line 492) | def get_namespace_preferences(context: models.Context, function get_application_preferences (line 512) | def get_application_preferences(context: models.Context, FILE: gcpdiag/queries/datafusion_stub.py class DataFusionApiStub (line 28) | class DataFusionApiStub(apis_stub.ApiStub): method __init__ (line 31) | def __init__(self, mock_state='init', region=None): method projects (line 35) | def projects(self): method locations (line 38) | def locations(self): method instances (line 41) | def instances(self): method list (line 44) | def list(self, parent): FILE: gcpdiag/queries/datafusion_test.py class TestDataFusion (line 55) | class TestDataFusion: method test_get_instances (line 58) | def test_get_instances(self): method test_running (line 63) | def test_running(self): method test_is_private_ip (line 69) | def test_is_private_ip(self): class TestExtractVersionPolicyDict (line 77) | class TestExtractVersionPolicyDict: method test_extract_support_datafusion_version (line 80) | def test_extract_support_datafusion_version(self): method test_extract_datafusion_dataproc_version (line 84) | def test_extract_datafusion_dataproc_version(self): class TestComputeProfile (line 92) | class TestComputeProfile: method test_get_instance_system_compute_profile (line 95) | def test_get_instance_system_compute_profile(self): method test_get_instance_user_compute_profile (line 102) | def test_get_instance_user_compute_profile(self): class TestPreferences (line 113) | class TestPreferences: method test_get_system_preferences (line 116) | def test_get_system_preferences(self): method test_get_application_preferences (line 123) | def test_get_application_preferences(self): method test_get_namespace_preferences (line 130) | def test_get_namespace_preferences(self): FILE: gcpdiag/queries/dataproc.py class Cluster (line 28) | class Cluster(models.Resource): method __init__ (line 34) | def __init__(self, name: str, project_id: str, resource_data: Mapping): method is_running (line 39) | def is_running(self) -> bool: method get_software_property (line 42) | def get_software_property(self, property_name) -> str: method is_stackdriver_logging_enabled (line 46) | def is_stackdriver_logging_enabled(self) -> bool: method is_stackdriver_monitoring_enabled (line 53) | def is_stackdriver_monitoring_enabled(self) -> bool: method region (line 58) | def region(self) -> str: method zone (line 67) | def zone(self) -> Optional[str]: method full_path (line 77) | def full_path(self) -> str: method short_path (line 83) | def short_path(self) -> str: method status (line 87) | def status(self) -> str: method __str__ (line 90) | def __str__(self) -> str: method cluster_uuid (line 94) | def cluster_uuid(self) -> str: method image_version (line 98) | def image_version(self): method vm_service_account_email (line 102) | def vm_service_account_email(self): method is_custom_gcs_connector (line 109) | def is_custom_gcs_connector(self) -> bool: method cluster_provided_bq_connector (line 115) | def cluster_provided_bq_connector(self): method is_gce_cluster (line 138) | def is_gce_cluster(self) -> bool: method gce_network_uri (line 142) | def gce_network_uri(self) -> Optional[str]: method gce_subnetwork_uri (line 157) | def gce_subnetwork_uri(self) -> Optional[str]: method is_single_node_cluster (line 172) | def is_single_node_cluster(self) -> bool: method is_ha_cluster (line 179) | def is_ha_cluster(self) -> bool: method is_internal_ip_only (line 186) | def is_internal_ip_only(self) -> bool: method has_autoscaling_policy (line 195) | def has_autoscaling_policy(self) -> bool: method autoscaling_policy_id (line 200) | def autoscaling_policy_id(self) -> str: method number_of_primary_workers (line 210) | def number_of_primary_workers(self) -> float: method number_of_secondary_workers (line 216) | def number_of_secondary_workers(self) -> float: method is_preemptible_primary_workers (line 222) | def is_preemptible_primary_workers(self) -> bool: method is_preemptible_secondary_workers (line 228) | def is_preemptible_secondary_workers(self) -> bool: method initialization_actions (line 234) | def initialization_actions(self) -> List[str]: class Region (line 238) | class Region: method __init__ (line 244) | def __init__(self, project_id: str, region: str): method get_clusters (line 248) | def get_clusters(self, context: models.Context) -> Iterable[Cluster]: method query_api (line 262) | def query_api(self) -> Iterable[dict]: class Dataproc (line 278) | class Dataproc: method __init__ (line 283) | def __init__(self, project_id: str): method get_regions (line 286) | def get_regions(self) -> Iterable[Region]: method is_api_enabled (line 292) | def is_api_enabled(self) -> bool: function get_clusters (line 297) | def get_clusters(context: models.Context) -> Iterable[Cluster]: function get_cluster (line 310) | def get_cluster(cluster_name, region, project) -> Optional[Cluster]: class AutoScalingPolicy (line 324) | class AutoScalingPolicy(models.Resource): method __init__ (line 329) | def __init__(self, project_id, resource_data, region): method policy_id (line 335) | def policy_id(self) -> str: method full_path (line 339) | def full_path(self) -> str: method short_path (line 343) | def short_path(self) -> str: method name (line 347) | def name(self) -> str: method scale_down_factor (line 351) | def scale_down_factor(self) -> float: method has_graceful_decommission_timeout (line 356) | def has_graceful_decommission_timeout(self) -> bool: method graceful_decommission_timeout (line 365) | def graceful_decommission_timeout(self) -> float: function get_auto_scaling_policy (line 373) | def get_auto_scaling_policy(project_id: str, region: str, function list_auto_scaling_policies (line 388) | def list_auto_scaling_policies(project_id: str, class Job (line 405) | class Job(models.Resource): method __init__ (line 410) | def __init__(self, project_id, job_id, region, resource_data): method full_path (line 417) | def full_path(self) -> str: method short_path (line 422) | def short_path(self) -> str: method cluster_name (line 426) | def cluster_name(self) -> str: method cluster_uuid (line 430) | def cluster_uuid(self) -> str: method state (line 434) | def state(self): method details (line 438) | def details(self): method status_history (line 444) | def status_history(self): method yarn_applications (line 454) | def yarn_applications(self): method driver_output_resource_uri (line 458) | def driver_output_resource_uri(self): method job_uuid (line 462) | def job_uuid(self): method job_provided_bq_connector (line 466) | def job_provided_bq_connector(self): function get_job_by_jobid (line 483) | def get_job_by_jobid(project_id: str, region: str, job_id: str): function extract_dataproc_supported_version (line 496) | def extract_dataproc_supported_version() -> list[str]: function extract_dataproc_bigquery_version (line 532) | def extract_dataproc_bigquery_version(image_version) -> list[str]: FILE: gcpdiag/queries/dataproc_stub.py class DataprocApiStub (line 28) | class DataprocApiStub(apis_stub.ApiStub): method __init__ (line 31) | def __init__(self, json_basename=None, project_id=None, mock_state='in... method projects (line 36) | def projects(self): method regions (line 39) | def regions(self): method clusters (line 42) | def clusters(self): method jobs (line 45) | def jobs(self): method autoscalingPolicies (line 48) | def autoscalingPolicies(self): method get (line 51) | def get(self, name='', clusterName='', region='', projectId='', jobId=... method list (line 76) | def list(self, projectId, region): method execute (line 83) | def execute(self, num_retries=0): FILE: gcpdiag/queries/dataproc_test.py class TestDataproc (line 30) | class TestDataproc: method test_get_clusters (line 33) | def test_get_clusters(self): method test_get_cluster (line 38) | def test_get_cluster(self): method test_is_running (line 42) | def test_is_running(self): method test_stackdriver_logging_enabled (line 47) | def test_stackdriver_logging_enabled(self): method test_monitoring_enabled (line 61) | def test_monitoring_enabled(self): method test_zone (line 71) | def test_zone(self): method test_is_gce_cluster (line 78) | def test_is_gce_cluster(self): method test_gce_network_uri (line 85) | def test_gce_network_uri(self): method test_auto_scaling_policy (line 93) | def test_auto_scaling_policy(self): method test_get_job_by_jobid_ (line 101) | def test_get_job_by_jobid_(self): FILE: gcpdiag/queries/dns.py function find_dns_records (line 24) | def find_dns_records(domain: str) -> Set: FILE: gcpdiag/queries/dns_stub.py function find_dns_records (line 14) | def find_dns_records(domain: str) -> Set: FILE: gcpdiag/queries/gae.py class Service (line 28) | class Service(models.Resource): method __init__ (line 32) | def __init__(self, project_id, resource_data): method name (line 37) | def name(self) -> str: method id (line 45) | def id(self) -> str: method full_path (line 49) | def full_path(self) -> str: method short_path (line 53) | def short_path(self) -> str: class Version (line 58) | class Version(models.Resource): method __init__ (line 63) | def __init__(self, project_id, resource_data): method id (line 68) | def id(self) -> str: method full_path (line 72) | def full_path(self) -> str: method short_path (line 76) | def short_path(self) -> str: method runtime (line 81) | def runtime(self) -> str: method env (line 85) | def env(self) -> str: function get_services (line 90) | def get_services(context: models.Context) -> Mapping[str, Service]: function get_versions (line 125) | def get_versions(context: models.Context) -> Mapping[str, Version]: FILE: gcpdiag/queries/gae_stub.py class AppEngineApiStub (line 27) | class AppEngineApiStub(apis_stub.ApiStub): method __init__ (line 30) | def __init__(self, mock_state='init'): method apps (line 33) | def apps(self): method services (line 36) | def services(self): method versions (line 39) | def versions(self): method list (line 42) | def list(self, appsId='appsId', servicesId='servicesId'): FILE: gcpdiag/queries/gae_test.py class TestAppEngine (line 27) | class TestAppEngine: method test_get_services (line 30) | def test_get_services(self): method test_get_versions (line 35) | def test_get_versions(self): FILE: gcpdiag/queries/gcb.py class BuildOptions (line 62) | class BuildOptions: method is_bucket_streaming_enabled (line 67) | def is_bucket_streaming_enabled(self) -> bool: class BuildOptionsBuilder (line 72) | class BuildOptionsBuilder: method __init__ (line 75) | def __init__(self, options: dict): method build (line 78) | def build(self) -> BuildOptions: method _get_logging (line 84) | def _get_logging(self) -> str: method _get_log_streaming_option (line 87) | def _get_log_streaming_option(self) -> str: class FailureInfo (line 92) | class FailureInfo: class FailureInfoBuilder (line 97) | class FailureInfoBuilder: method __init__ (line 100) | def __init__(self, failure_info: dict): method build (line 103) | def build(self) -> FailureInfo: method _get_failure_type (line 106) | def _get_failure_type(self) -> str: class Build (line 110) | class Build(models.Resource): method __init__ (line 114) | def __init__(self, project_id, location, resource_data): method id (line 120) | def id(self) -> str: method full_path (line 124) | def full_path(self) -> str: method short_path (line 128) | def short_path(self) -> str: method status (line 133) | def status(self) -> str: method service_account (line 137) | def service_account(self) -> Optional[str]: method images (line 141) | def images(self) -> List[str]: method logs_bucket (line 145) | def logs_bucket(self) -> str: method options (line 149) | def options(self) -> BuildOptions: method failure_info (line 153) | def failure_info(self) -> FailureInfo: class Trigger (line 158) | class Trigger(models.Resource): method __init__ (line 162) | def __init__(self, project_id, resource_data): method name (line 167) | def name(self) -> str: method id (line 173) | def id(self) -> str: method full_path (line 177) | def full_path(self) -> str: method short_path (line 181) | def short_path(self) -> str: function get_builds (line 187) | def get_builds(context: models.Context) -> Mapping[str, Build]: function get_triggers (line 240) | def get_triggers(context: models.Context) -> Mapping[str, Trigger]: FILE: gcpdiag/queries/gcb_stub.py class CloudBuildApiStub (line 28) | class CloudBuildApiStub: method new_batch_http_request (line 31) | def new_batch_http_request(self): method projects (line 34) | def projects(self): method locations (line 37) | def locations(self): method builds (line 40) | def builds(self): method triggers (line 43) | def triggers(self): class CloudBuildBuildsApiStub (line 47) | class CloudBuildBuildsApiStub: method list (line 51) | def list(self, parent, filter): class CloudBuildTriggersApiStub (line 67) | class CloudBuildTriggersApiStub: method list (line 70) | def list(self, parent): FILE: gcpdiag/queries/gcb_test.py class TestCloudBuild (line 35) | class TestCloudBuild: method test_get_builds (line 38) | def test_get_builds(self): method test_build_service_account (line 48) | def test_build_service_account(self): method test_build_images (line 55) | def test_build_images(self): method test_build_failure_info (line 61) | def test_build_failure_info(self): method test_build_options (line 70) | def test_build_options(self): FILE: gcpdiag/queries/gce.py class InstanceTemplate (line 39) | class InstanceTemplate(models.Resource): method __init__ (line 44) | def __init__(self, project_id, resource_data): method self_link (line 49) | def self_link(self) -> str: method full_path (line 53) | def full_path(self) -> str: method short_path (line 62) | def short_path(self) -> str: method name (line 67) | def name(self) -> str: method tags (line 71) | def tags(self) -> List[str]: method service_account (line 75) | def service_account(self) -> Optional[str]: method network (line 86) | def network(self) -> network_q.Network: method subnetwork (line 91) | def subnetwork(self) -> network_q.Subnetwork: method get_metadata (line 96) | def get_metadata(self, key: str) -> str: class InstanceGroup (line 103) | class InstanceGroup(models.Resource): method __init__ (line 108) | def __init__(self, project_id, resource_data): method full_path (line 113) | def full_path(self) -> str: method short_path (line 124) | def short_path(self) -> str: method self_link (line 129) | def self_link(self) -> str: method name (line 133) | def name(self) -> str: method named_ports (line 137) | def named_ports(self) -> List[dict]: method has_named_ports (line 142) | def has_named_ports(self) -> bool: class ManagedInstanceGroup (line 148) | class ManagedInstanceGroup(models.Resource): method __init__ (line 154) | def __init__(self, project_id, resource_data): method full_path (line 160) | def full_path(self) -> str: method short_path (line 171) | def short_path(self) -> str: method is_gke (line 175) | def is_gke(self) -> bool: method self_link (line 189) | def self_link(self) -> str: method name (line 193) | def name(self) -> str: method region (line 197) | def region(self) -> str: method zone (line 219) | def zone(self) -> Optional[str]: method count_no_action_instances (line 228) | def count_no_action_instances(self) -> int: method is_instance_member (line 232) | def is_instance_member(self, project_id: str, region: str, method template (line 239) | def template(self) -> InstanceTemplate: method version_target_reached (line 260) | def version_target_reached(self) -> bool: method get (line 264) | def get(self, path: str, default: Any = None) -> Any: class Autoscaler (line 271) | class Autoscaler(models.Resource): method __init__ (line 276) | def __init__(self, project_id, resource_data): method self_link (line 281) | def self_link(self) -> str: method full_path (line 285) | def full_path(self) -> str: method name (line 294) | def name(self) -> str: method get (line 297) | def get(self, path: str, default: Any = None) -> Any: class SerialPortOutput (line 304) | class SerialPortOutput: method __init__ (line 314) | def __init__(self, project_id, instance_id, contents): method contents (line 320) | def contents(self) -> List[str]: method instance_id (line 324) | def instance_id(self) -> str: class Instance (line 328) | class Instance(models.Resource): method __init__ (line 334) | def __init__(self, project_id, resource_data): method id (line 341) | def id(self) -> str: method name (line 345) | def name(self) -> str: method full_path (line 349) | def full_path(self) -> str: method short_path (line 360) | def short_path(self) -> str: method creation_timestamp (line 367) | def creation_timestamp(self) -> datetime: method region (line 374) | def region(self) -> str: method zone (line 389) | def zone(self) -> str: method disks (line 398) | def disks(self) -> List[dict]: method boot_disk_licenses (line 404) | def boot_disk_licenses(self) -> List[str]: method guest_os_features (line 415) | def guest_os_features(self) -> List[str]: method startrestricted (line 423) | def startrestricted(self) -> bool: method laststarttimestamp (line 426) | def laststarttimestamp(self) -> str: method laststoptimestamp (line 429) | def laststoptimestamp(self) -> str: method is_serial_port_logging_enabled (line 434) | def is_serial_port_logging_enabled(self) -> bool: method is_oslogin_enabled (line 438) | def is_oslogin_enabled(self) -> bool: method is_metadata_enabled (line 442) | def is_metadata_enabled(self, metadata_name) -> bool: method has_label (line 447) | def has_label(self, label) -> bool: method is_dataproc_instance (line 450) | def is_dataproc_instance(self) -> bool: method is_gke_node (line 453) | def is_gke_node(self) -> bool: method is_preemptible_vm (line 457) | def is_preemptible_vm(self) -> bool: method min_cpu_platform (line 462) | def min_cpu_platform(self) -> str: method created_by_mig (line 468) | def created_by_mig(self) -> bool: method is_windows_machine (line 486) | def is_windows_machine(self) -> bool: method is_public_machine (line 494) | def is_public_machine(self) -> bool: method machine_type (line 499) | def machine_type(self): method check_license (line 511) | def check_license(self, licenses: List[str]) -> bool: method get_boot_disk_image (line 522) | def get_boot_disk_image(self) -> str: method is_sole_tenant_vm (line 539) | def is_sole_tenant_vm(self) -> bool: method network (line 543) | def network(self) -> network_q.Network: method network_ips (line 555) | def network_ips(self) -> List[network_q.IPv4AddrOrIPv6Addr]: method get_network_interfaces (line 562) | def get_network_interfaces(self): method subnetworks (line 566) | def subnetworks(self) -> List[network_q.Subnetwork]: method routes (line 573) | def routes(self) -> List[network_q.Route]: method get_network_ip_for_instance_interface (line 587) | def get_network_ip_for_instance_interface( method secure_boot_enabled (line 595) | def secure_boot_enabled(self) -> bool: method access_scopes (line 601) | def access_scopes(self) -> List[str]: method service_account (line 609) | def service_account(self) -> Optional[str]: method tags (line 617) | def tags(self) -> List[str]: method get_metadata (line 623) | def get_metadata(self, key: str) -> str: method status (line 635) | def status(self) -> str: method is_running (line 640) | def is_running(self) -> bool: method network_interface_count (line 645) | def network_interface_count(self) -> int: method mig (line 651) | def mig(self) -> ManagedInstanceGroup: method labels (line 690) | def labels(self) -> dict: class Disk (line 694) | class Disk(models.Resource): method __init__ (line 699) | def __init__(self, project_id, resource_data): method id (line 704) | def id(self) -> str: method name (line 708) | def name(self) -> str: method type (line 712) | def type(self) -> str: method users (line 720) | def users(self) -> list: method zone (line 731) | def zone(self) -> str: method source_image (line 739) | def source_image(self) -> str: method full_path (line 743) | def full_path(self) -> str: method short_path (line 754) | def short_path(self) -> str: method bootable (line 758) | def bootable(self) -> bool: method in_use (line 762) | def in_use(self) -> bool: method size (line 766) | def size(self) -> int: method provisionediops (line 770) | def provisionediops(self) -> Optional[int]: method has_snapshot_schedule (line 774) | def has_snapshot_schedule(self) -> bool: function get_gce_zones (line 779) | def get_gce_zones(project_id: str) -> Set[str]: function get_gce_public_licences (line 792) | def get_gce_public_licences(project_id: str) -> List[str]: function get_instance (line 808) | def get_instance(project_id: str, zone: str, instance_name: str) -> Inst... function get_instance_by_id (line 820) | def get_instance_by_id(project_id: str, instance_id: str) -> Optional[In... function get_global_operations (line 853) | def get_global_operations( function get_disk (line 886) | def get_disk(project_id: str, zone: str, disk_name: str) -> Disk: function get_instance_group_manager (line 894) | def get_instance_group_manager( function get_region_instance_group_manager (line 922) | def get_region_instance_group_manager( function get_autoscaler (line 951) | def get_autoscaler(project_id: str, zone: str, function get_region_autoscaler (line 965) | def get_region_autoscaler(project_id: str, region: str, function get_instances (line 980) | def get_instances(context: models.Context) -> Mapping[str, Instance]: function get_instance_groups (line 1025) | def get_instance_groups(context: models.Context) -> Mapping[str, Instanc... function get_managed_instance_groups (line 1066) | def get_managed_instance_groups( function get_region_managed_instance_groups (line 1110) | def get_region_managed_instance_groups( function get_instance_templates (line 1156) | def get_instance_templates(project_id: str) -> Mapping[str, InstanceTemp... function get_project_metadata (line 1176) | def get_project_metadata(project_id) -> Mapping[str, str]: function get_instances_serial_port_output (line 1194) | def get_instances_serial_port_output(context: models.Context): function get_instance_serial_port_output (line 1265) | def get_instance_serial_port_output( class Region (line 1309) | class Region(models.Resource): method __init__ (line 1314) | def __init__(self, project_id, resource_data): method self_link (line 1319) | def self_link(self) -> str: method full_path (line 1323) | def full_path(self) -> str: method name (line 1332) | def name(self) -> str: function get_all_regions (line 1337) | def get_all_regions(project_id: str) -> Iterable[Region]: function get_regions_with_instances (line 1363) | def get_regions_with_instances(context: models.Context) -> Iterable[Regi... function get_all_disks (line 1383) | def get_all_disks(context: models.Context) -> Iterable[Disk]: function get_all_disks_of_instance (line 1417) | def get_all_disks_of_instance(context: models.Context, zone: str, class InstanceEffectiveFirewalls (line 1459) | class InstanceEffectiveFirewalls(network_q.EffectiveFirewalls): method __init__ (line 1468) | def __init__(self, instance, nic, resource_data): function get_instance_interface_effective_firewalls (line 1475) | def get_instance_interface_effective_firewalls( function is_project_serial_port_logging_enabled (line 1489) | def is_project_serial_port_logging_enabled(project_id: str) -> bool: function is_serial_port_buffer_enabled (line 1498) | def is_serial_port_buffer_enabled(): class _SerialOutputJob (line 1503) | class _SerialOutputJob: method __init__ (line 1509) | def __init__(self, class SerialOutputQuery (line 1516) | class SerialOutputQuery: method __init__ (line 1521) | def __init__(self, job): method entries (line 1525) | def entries(self) -> Sequence: function execute_fetch_serial_port_outputs (line 1540) | def execute_fetch_serial_port_outputs( function fetch_serial_port_outputs (line 1555) | def fetch_serial_port_outputs(context: models.Context) -> SerialOutputQu... class HealthCheck (line 1562) | class HealthCheck(models.Resource): method __init__ (line 1568) | def __init__(self, project_id, resource_data): method name (line 1573) | def name(self) -> str: method full_path (line 1577) | def full_path(self) -> str: method short_path (line 1586) | def short_path(self) -> str: method self_link (line 1591) | def self_link(self) -> str: method is_log_enabled (line 1595) | def is_log_enabled(self) -> bool: method region (line 1605) | def region(self): method type (line 1614) | def type(self) -> str: method request_path (line 1618) | def request_path(self) -> str: method request (line 1622) | def request(self) -> str: method response (line 1626) | def response(self) -> str: method port (line 1630) | def port(self) -> int: method port_specification (line 1634) | def port_specification(self) -> str: method timeout_sec (line 1638) | def timeout_sec(self) -> int: method check_interval_sec (line 1642) | def check_interval_sec(self) -> int: method unhealthy_threshold (line 1646) | def unhealthy_threshold(self) -> int: method healthy_threshold (line 1650) | def healthy_threshold(self) -> int: method get_health_check_property (line 1653) | def get_health_check_property(self, property_name: str, default_value=... function get_health_check (line 1670) | def get_health_check(project_id: str, class NetworkEndpointGroup (line 1685) | class NetworkEndpointGroup(models.Resource): method __init__ (line 1691) | def __init__(self, project_id, resource_data): method name (line 1696) | def name(self) -> str: method id (line 1700) | def id(self) -> str: method full_path (line 1704) | def full_path(self) -> str: method short_path (line 1713) | def short_path(self) -> str: method self_link (line 1718) | def self_link(self) -> str: function get_zonal_network_endpoint_groups (line 1723) | def get_zonal_network_endpoint_groups( FILE: gcpdiag/queries/gce_stub.py class ComputeEngineApiStub (line 29) | class ComputeEngineApiStub(apis_stub.ApiStub): method __init__ (line 44) | def __init__(self, mock_state='init', project_id=None, zone=None, page... method regions (line 50) | def regions(self): method zones (line 53) | def zones(self): method disks (line 56) | def disks(self): method list (line 59) | def list(self, project, zone=None, returnPartialSuccess=None, fields=N... method aggregatedList (line 74) | def aggregatedList( method aggregatedList_next (line 91) | def aggregatedList_next(self, previous_request, previous_response): method list_next (line 102) | def list_next(self, previous_request, previous_response): method instances (line 113) | def instances(self): method globalOperations (line 116) | def globalOperations(self): method instanceGroupManagers (line 119) | def instanceGroupManagers(self): method regionInstanceGroupManagers (line 122) | def regionInstanceGroupManagers(self): method licenses (line 125) | def licenses(self): method instanceGroups (line 128) | def instanceGroups(self): method instanceTemplates (line 131) | def instanceTemplates(self): method getSerialPortOutput (line 134) | def getSerialPortOutput(self, project, zone, instance, start): method networkEndpointGroups (line 140) | def networkEndpointGroups(self): method new_batch_http_request (line 143) | def new_batch_http_request(self): method get (line 150) | def get(self, project, zone=None, instance=None, disk=None): method projects (line 174) | def projects(self): method addresses (line 177) | def addresses(self): method networks (line 180) | def networks(self): method subnetworks (line 183) | def subnetworks(self): method routes (line 186) | def routes(self): method routers (line 189) | def routers(self): method backendServices (line 192) | def backendServices(self): method regionBackendServices (line 195) | def regionBackendServices(self): method targetHttpsProxies (line 198) | def targetHttpsProxies(self): method targetSslProxies (line 201) | def targetSslProxies(self): method sslCertificates (line 204) | def sslCertificates(self): method regionSslCertificates (line 207) | def regionSslCertificates(self): method forwardingRules (line 210) | def forwardingRules(self): method globalForwardingRules (line 213) | def globalForwardingRules(self): method healthChecks (line 216) | def healthChecks(self): method regionHealthChecks (line 219) | def regionHealthChecks(self): method interconnects (line 222) | def interconnects(self): method interconnectAttachments (line 225) | def interconnectAttachments(self): method vpnTunnels (line 228) | def vpnTunnels(self): method execute (line 231) | def execute(self, num_retries=0): method getEffectiveFirewalls (line 265) | def getEffectiveFirewalls(self, project, zone, instance, networkInterf... class InstanceGroupManagersApiStub (line 274) | class InstanceGroupManagersApiStub(ComputeEngineApiStub): method list (line 277) | def list(self, project, zone=None): method aggregatedList (line 282) | def aggregatedList(self, project, returnPartialSuccess=True): method aggregatedList_next (line 285) | def aggregatedList_next(self, previous_request, previous_response): method get (line 296) | def get(self, project, zone=None, instanceGroupManager=None): method execute (line 305) | def execute(self, num_retries=0): class RegionInstanceGroupManagersApiStub (line 328) | class RegionInstanceGroupManagersApiStub(ComputeEngineApiStub): method list (line 331) | def list(self, project, region=None): class HealthCheckApiStub (line 337) | class HealthCheckApiStub: method __init__ (line 340) | def __init__(self, mock_state): method list (line 344) | def list(self, project, region=None): method get (line 352) | def get(self, project, healthCheck=None, region=None): method execute (line 361) | def execute(self, num_retries=0): FILE: gcpdiag/queries/gce_test.py class TestGce (line 59) | class TestGce(unittest.TestCase): method test_get_instances (line 62) | def test_get_instances(self): method test_get_instances_by_region_returns_instance (line 75) | def test_get_instances_by_region_returns_instance(self): method test_get_instances_by_label (line 82) | def test_get_instances_by_label(self): method test_get_instances_by_other_region_returns_empty_result (line 90) | def test_get_instances_by_other_region_returns_empty_result(self): method test_is_serial_port_logging_enabled (line 96) | def test_is_serial_port_logging_enabled(self): method test_is_serial_port_logging_enabled_instance_level (line 105) | def test_is_serial_port_logging_enabled_instance_level(self): method test_is_gke_node_false (line 112) | def test_is_gke_node_false(self): method test_is_gke_node_true (line 119) | def test_is_gke_node_true(self): method test_is_windows_machine (line 127) | def test_is_windows_machine(self): method test_is_preemptible_vm (line 134) | def test_is_preemptible_vm(self): method test_min_cpu_platform (line 142) | def test_min_cpu_platform(self): method test_network (line 150) | def test_network(self): method test_tags (line 159) | def test_tags(self): method test_disks (line 166) | def test_disks(self): method test_access_scopes (line 173) | def test_access_scopes(self): method test_service_account (line 186) | def test_service_account(self): method test_get_global_operations (line 194) | def test_get_global_operations(self): method test_get_instance_groups (line 202) | def test_get_instance_groups(self): method test_get_managed_instance_groups (line 213) | def test_get_managed_instance_groups(self): method test_get_region_managed_instance_groups (line 222) | def test_get_region_managed_instance_groups(self): method test_get_managed_instance_groups_gke (line 234) | def test_get_managed_instance_groups_gke(self): method test_get_managed_instance_groups_empty_result (line 242) | def test_get_managed_instance_groups_empty_result(self): method test_managed_instance_group_zone (line 248) | def test_managed_instance_group_zone(self): method test_managed_instance_group_get_method (line 281) | def test_managed_instance_group_get_method(self): method test_autoscaler_get_method (line 301) | def test_autoscaler_get_method(self): method test_mig_property (line 323) | def test_mig_property(self): method test_mig_property_instance_not_in_mig (line 329) | def test_mig_property_instance_not_in_mig(self): method test_get_instance_group_manager (line 335) | def test_get_instance_group_manager(self): method test_get_all_regions (line 340) | def test_get_all_regions(self): method test_get_regions_with_instances (line 348) | def test_get_regions_with_instances(self): method test_count_no_action_instances (line 354) | def test_count_no_action_instances(self): method test_get_instance_templates (line 367) | def test_get_instance_templates(self): method test_mig_template (line 383) | def test_mig_template(self): method test_get_all_disks (line 389) | def test_get_all_disks(self): method test_get_instance (line 398) | def test_get_instance(self): method test_get_instance_interface_effective_firewalls (line 406) | def test_get_instance_interface_effective_firewalls(self): method test_is_public_machine (line 417) | def test_is_public_machine(self): method test_check_license (line 431) | def test_check_license(self): method test_get_instance_interface_subnetworks (line 447) | def test_get_instance_interface_subnetworks(self): method test_get_instance_interface_routes (line 456) | def test_get_instance_interface_routes(self): method test_is_vm_running (line 465) | def test_is_vm_running(self): method test_network_interface_count (line 475) | def test_network_interface_count(self): method test_get_serial_port_outputs (line 483) | def test_get_serial_port_outputs(self): method test_fetch_serial_port_outputs (line 491) | def test_fetch_serial_port_outputs(self): method test_serial_output_contents_order (line 503) | def test_serial_output_contents_order(self): method test_is_serial_port_buffer_enabled (line 520) | def test_is_serial_port_buffer_enabled(self): method test_is_dataproc_instance (line 527) | def test_is_dataproc_instance(self): method test_get_labels (line 540) | def test_get_labels(self): method test_get_zonal_network_endpoint_groups (line 547) | def test_get_zonal_network_endpoint_groups(self): method test_get_instances_by_id (line 554) | def test_get_instances_by_id(self): method test_get_instance_by_id (line 561) | def test_get_instance_by_id(self): method test_get_instance_by_id_not_found (line 567) | def test_get_instance_by_id_not_found(self): FILE: gcpdiag/queries/gcf.py class CloudFunction (line 28) | class CloudFunction(models.Resource): method __init__ (line 32) | def __init__(self, project_id, resource_data): method name (line 38) | def name(self) -> str: method description (line 46) | def description(self) -> str: method full_path (line 50) | def full_path(self) -> str: method short_path (line 54) | def short_path(self) -> str: method runtime (line 59) | def runtime(self) -> str: method memory (line 63) | def memory(self) -> str: function get_cloudfunctions (line 68) | def get_cloudfunctions(context: models.Context) -> Mapping[str, CloudFun... FILE: gcpdiag/queries/gcf_stub.py class CloudFunctionsApiStub (line 28) | class CloudFunctionsApiStub: method projects (line 31) | def projects(self): method locations (line 34) | def locations(self): method functions (line 37) | def functions(self): method list (line 40) | def list(self, parent): FILE: gcpdiag/queries/gcf_test.py class TestGcf (line 29) | class TestGcf: method test_get_functions (line 32) | def test_get_functions(self): FILE: gcpdiag/queries/gcs.py class RetentionPolicy (line 33) | class RetentionPolicy: class RetentionPolicyBuilder (line 38) | class RetentionPolicyBuilder: method __init__ (line 41) | def __init__(self, retention_policy): method build (line 44) | def build(self) -> RetentionPolicy: method _get_retention_period (line 47) | def _get_retention_period(self) -> int: class Bucket (line 54) | class Bucket(models.Resource): method __init__ (line 58) | def __init__(self, project_id, resource_data): method id (line 64) | def id(self) -> str: method name (line 68) | def name(self) -> str: method is_uniform_access (line 71) | def is_uniform_access(self) -> bool: method full_path (line 77) | def full_path(self) -> str: method short_path (line 86) | def short_path(self) -> str: method labels (line 90) | def labels(self) -> dict: method retention_policy (line 94) | def retention_policy(self) -> RetentionPolicy: class BucketIAMPolicy (line 99) | class BucketIAMPolicy(iam.BaseIAMPolicy): method _is_resource_permission (line 101) | def _is_resource_permission(self, permission): function get_bucket_iam_policy (line 106) | def get_bucket_iam_policy(context: models.Context, function get_bucket (line 117) | def get_bucket(context: models.Context, bucket: str) -> Bucket: function get_buckets (line 133) | def get_buckets(context: models.Context) -> Mapping[str, Bucket]: FILE: gcpdiag/queries/gcs_stub.py class BucketApiStub (line 31) | class BucketApiStub: method __init__ (line 41) | def __init__(self, project_id: Optional[str] = None): method buckets (line 44) | def buckets(self): method list (line 47) | def list(self, project): method get (line 50) | def get(self, bucket): method getIamPolicy (line 53) | def getIamPolicy(self, bucket): FILE: gcpdiag/queries/gcs_test.py class TestGcs (line 65) | class TestGcs: method test_get_buckets (line 68) | def test_get_buckets(self): method test_get_bucket_iam_policy (line 74) | def test_get_bucket_iam_policy(self): method test_bucket_labels (line 79) | def test_bucket_labels(self): method test_get_bucket_with_retention (line 85) | def test_get_bucket_with_retention(self): method test_get_uniform_access (line 91) | def test_get_uniform_access(self): FILE: gcpdiag/queries/generic_api/api_build/api.py class Creds (line 11) | class Creds(Protocol): method update_headers (line 13) | def update_headers(self, headers: Dict[str, str]) -> None: class RetryStrategy (line 17) | class RetryStrategy(Protocol): method get_sleep_intervals (line 19) | def get_sleep_intervals(self) -> Iterable[float]: class API (line 23) | class API: method __init__ (line 26) | def __init__(self, base_url: str, creds: Creds, method _request (line 32) | def _request(self, method: str, endpoint: str, **kwargs): method _get_headers (line 49) | def _get_headers(self) -> Dict[str, str]: method get (line 54) | def get(self, endpoint, params=None): FILE: gcpdiag/queries/generic_api/api_build/api_unittest.py class FakeCreds (line 14) | class FakeCreds: method __init__ (line 17) | def __init__(self, token: str) -> None: method update_headers (line 20) | def update_headers(self, headers: Dict[str, str]) -> None: class TestAPI (line 24) | class TestAPI(unittest.TestCase): method setUp (line 27) | def setUp(self): method test_sucessful_get_request (line 36) | def test_sucessful_get_request(self, mock_request): method test_failure_get_request (line 52) | def test_failure_get_request(self, mock_request): method test_max_retries_exceeded (line 65) | def test_max_retries_exceeded(self, mock_request): method test_temporary_failure_then_success (line 82) | def test_temporary_failure_then_success(self, mock_request): FILE: gcpdiag/queries/generic_api/api_build/generic_api_stub.py class GenericApiStub (line 22) | class GenericApiStub: method __init__ (line 29) | def __init__(self, service_name: str): method _load_json (line 35) | def _load_json(self, file_name: str) -> dict: function get_generic_api_stub (line 44) | def get_generic_api_stub(service_name: str, api_base_url: str): FILE: gcpdiag/queries/generic_api/api_build/get_generic.py function pick_creds_implementation (line 9) | def pick_creds_implementation() -> api.Creds: function get_generic_api (line 23) | def get_generic_api(service_name: str, api_base_url: str) -> api.API: FILE: gcpdiag/queries/generic_api/api_build/service_factory.py function build_api (line 6) | def build_api(service_name: str, api_base_url: str, creds: api.Creds, FILE: gcpdiag/queries/generic_api/datafusion/datafusion.py class Datafusion (line 6) | class Datafusion(api.API): method __init__ (line 9) | def __init__(self, base_url: str, creds: api.Creds, method get_system_profiles (line 13) | def get_system_profiles(self): method get_all_namespaces (line 17) | def get_all_namespaces(self): method get_user_profiles (line 21) | def get_user_profiles(self, namespace: str): method get_system_preferences (line 25) | def get_system_preferences(self): method get_namespace_preferences (line 29) | def get_namespace_preferences(self, namespace: str): method get_all_applications (line 33) | def get_all_applications(self, namespace: str): method get_application_preferences (line 37) | def get_application_preferences(self, namespace: str, application_name... FILE: gcpdiag/queries/generic_api/datafusion/datafusion_stub.py class DataFusionApiStub (line 7) | class DataFusionApiStub(GenericApiStub): method __init__ (line 10) | def __init__(self): method get_system_profiles (line 13) | def get_system_profiles(self): method get_all_namespaces (line 16) | def get_all_namespaces(self): method get_user_profiles (line 19) | def get_user_profiles(self, namespace: str): method get_system_preferences (line 22) | def get_system_preferences(self): method get_namespace_preferences (line 25) | def get_namespace_preferences(self, namespace: str): method get_all_applications (line 28) | def get_all_applications(self, namespace: str): method get_application_preferences (line 31) | def get_application_preferences(self, namespace: str, application_name... FILE: gcpdiag/queries/generic_api/datafusion/datafusion_test.py class FakeCreds (line 16) | class FakeCreds: method __init__ (line 19) | def __init__(self, token: str) -> None: method update_headers (line 22) | def update_headers(self, headers: Dict[str, str]) -> None: class TestDatafusion (line 26) | class TestDatafusion(unittest.TestCase): method setUp (line 29) | def setUp(self): method test_get_system_profiles_success (line 39) | def test_get_system_profiles_success(self, mock_request): method test_get_all_namespaces (line 56) | def test_get_all_namespaces(self, mock_request): method test_get_user_profiles (line 73) | def test_get_user_profiles(self, mock_request): method test_get_system_profiles_failure (line 90) | def test_get_system_profiles_failure(self, mock_request): method test_get_user_profiles_temporary_failure_then_success (line 105) | def test_get_user_profiles_temporary_failure_then_success(self, mock_r... method test_get_all_namespaces_max_retries_exceeded (line 126) | def test_get_all_namespaces_max_retries_exceeded(self, mock_request): method test_get_user_profiles_failure (line 144) | def test_get_user_profiles_failure(self, mock_request): method test_get_all_applications (line 160) | def test_get_all_applications(self, mock_request): method test_get_application_preferences (line 170) | def test_get_application_preferences(self, mock_request): method test_get_application_preferences_failure (line 180) | def test_get_application_preferences_failure(self, mock_request): method test_get_system_preferences (line 197) | def test_get_system_preferences(self, mock_request): method test_get_namespace_preferences (line 206) | def test_get_namespace_preferences(self, mock_request): FILE: gcpdiag/queries/gke.py class NodeConfig (line 41) | class NodeConfig: method __init__ (line 44) | def __init__(self, resource_data): method has_accelerators (line 47) | def has_accelerators(self) -> bool: method machine_type (line 53) | def machine_type(self) -> str: method image_type (line 57) | def image_type(self) -> str: method oauth_scopes (line 61) | def oauth_scopes(self) -> list: method has_serial_port_logging_enabled (line 65) | def has_serial_port_logging_enabled(self) -> bool: class NodePool (line 76) | class NodePool(models.Resource): method __init__ (line 81) | def __init__(self, cluster, resource_data): method _get_service_account (line 88) | def _get_service_account(self) -> str: method full_path (line 92) | def full_path(self) -> str: method short_path (line 102) | def short_path(self) -> str: method name (line 112) | def name(self) -> str: method config (line 116) | def config(self) -> NodeConfig: method node_count (line 120) | def node_count(self) -> int: method has_default_service_account (line 123) | def has_default_service_account(self) -> bool: method has_image_streaming_enabled (line 127) | def has_image_streaming_enabled(self) -> bool: method has_md_concealment_enabled (line 131) | def has_md_concealment_enabled(self) -> bool: method has_workload_identity_enabled (line 138) | def has_workload_identity_enabled(self) -> bool: method service_account (line 146) | def service_account(self) -> str: method pod_ipv4_cidr_size (line 155) | def pod_ipv4_cidr_size(self) -> int: method pod_ipv4_cidr_block (line 159) | def pod_ipv4_cidr_block(self) -> Optional[IPv4NetOrIPv6Net]: method max_pod_per_node (line 171) | def max_pod_per_node(self) -> int: method cluster (line 177) | def cluster(self) -> 'Cluster': method instance_groups (line 181) | def instance_groups(self) -> List[gce.ManagedInstanceGroup]: method node_tags (line 197) | def node_tags(self) -> List[str]: method get_machine_type (line 207) | def get_machine_type(self) -> str: class UndefinedClusterPropertyError (line 212) | class UndefinedClusterPropertyError(Exception): class Cluster (line 219) | class Cluster(models.Resource): method __init__ (line 229) | def __init__(self, project_id, resource_data, context: models.Context): method full_path (line 237) | def full_path(self) -> str: method short_path (line 246) | def short_path(self) -> str: method name (line 255) | def name(self) -> str: method location (line 259) | def location(self) -> str: method pod_ipv4_cidr (line 263) | def pod_ipv4_cidr(self) -> IPv4NetOrIPv6Net: method current_node_count (line 268) | def current_node_count(self) -> int: method release_channel (line 272) | def release_channel(self) -> Optional[str]: method nap_node_image_type (line 279) | def nap_node_image_type(self) -> Optional[str]: method app_layer_sec_key (line 287) | def app_layer_sec_key(self) -> str: method status (line 291) | def status(self) -> str: method status_message (line 295) | def status_message(self) -> str: method has_app_layer_enc_enabled (line 298) | def has_app_layer_enc_enabled(self) -> bool: method has_logging_enabled (line 303) | def has_logging_enabled(self) -> bool: method enabled_logging_components (line 306) | def enabled_logging_components(self) -> List[str]: method has_monitoring_enabled (line 310) | def has_monitoring_enabled(self) -> bool: method enabled_monitoring_components (line 313) | def enabled_monitoring_components(self) -> List[str]: method has_authenticator_group_enabled (line 317) | def has_authenticator_group_enabled(self) -> bool: method has_workload_identity_enabled (line 320) | def has_workload_identity_enabled(self) -> bool: method has_http_load_balancing_enabled (line 323) | def has_http_load_balancing_enabled(self) -> bool: method has_network_policy_enabled (line 329) | def has_network_policy_enabled(self) -> bool: method has_dpv2_enabled (line 335) | def has_dpv2_enabled(self) -> bool: method has_intra_node_visibility_enabled (line 340) | def has_intra_node_visibility_enabled(self) -> bool: method has_maintenance_window (line 346) | def has_maintenance_window(self) -> bool: method has_image_streaming_enabled (line 353) | def has_image_streaming_enabled(self) -> bool: method nodepools (line 372) | def nodepools(self) -> List[NodePool]: method network (line 380) | def network(self) -> network.Network: method subnetwork (line 389) | def subnetwork(self) -> Optional[models.Resource]: method get_subnet_name (line 402) | def get_subnet_name(self) -> Optional[models.Resource]: method get_nodepool_config (line 408) | def get_nodepool_config(self) -> Optional[models.Resource]: method get_network_string (line 414) | def get_network_string(self) -> str: method is_private (line 422) | def is_private(self) -> bool: method is_vpc_native (line 430) | def is_vpc_native(self) -> bool: method is_regional (line 436) | def is_regional(self) -> bool: method cluster_ca_certificate (line 440) | def cluster_ca_certificate(self) -> str: method endpoint (line 444) | def endpoint(self) -> Optional[str]: method is_autopilot (line 450) | def is_autopilot(self) -> bool: method masters_cidr_list (line 456) | def masters_cidr_list(self) -> Iterable[IPv4NetOrIPv6Net]: method cluster_hash (line 477) | def cluster_hash(self) -> Optional[str]: method is_nodelocal_dnscache_enabled (line 487) | def is_nodelocal_dnscache_enabled(self) -> bool: function get_clusters (line 495) | def get_clusters(context: models.Context) -> Mapping[str, Cluster]: function get_cluster (line 529) | def get_cluster( function _get_server_config (line 555) | def _get_server_config(project_id: str, location: str): function get_valid_master_versions (line 566) | def get_valid_master_versions(project_id: str, location: str) -> List[str]: function get_valid_node_versions (line 583) | def get_valid_node_versions(project_id: str, location: str) -> List[str]: class Node (line 597) | class Node(models.Resource): method __init__ (line 607) | def __init__(self, instance, nodepool, mig): method full_path (line 615) | def full_path(self) -> str: method short_path (line 619) | def short_path(self) -> str: function get_node_by_instance_id (line 628) | def get_node_by_instance_id(context: models.Context, instance_id: str) -... function get_release_schedule (line 658) | def get_release_schedule() -> Dict: FILE: gcpdiag/queries/gke_stub.py class ContainerApiStub (line 29) | class ContainerApiStub(apis_stub.ApiStub): method __init__ (line 32) | def __init__(self, mock_state='init', region=None): method projects (line 36) | def projects(self): method locations (line 39) | def locations(self): method clusters (line 42) | def clusters(self): method getServerConfig (line 46) | def getServerConfig(self, name): method list (line 52) | def list(self, parent): method get (line 57) | def get(self, name): FILE: gcpdiag/queries/gke_test.py class TestCluster (line 46) | class TestCluster(unittest.TestCase): method test_get_clusters_by_label (line 49) | def test_get_clusters_by_label(self): method test_get_clusters_by_region (line 56) | def test_get_clusters_by_region(self): method test_cluster_properties (line 63) | def test_cluster_properties(self): method test_get_path_regional (line 75) | def test_get_path_regional(self): method test_has_logging_enabled_false (line 85) | def test_has_logging_enabled_false(self): method test_has_logging_enabled_true (line 93) | def test_has_logging_enabled_true(self): method test_has_monitoring_enabled_false (line 101) | def test_has_monitoring_enabled_false(self): method test_has_monitoring_enabled_true (line 109) | def test_has_monitoring_enabled_true(self): method test_has_authenticator_group_enabled (line 117) | def test_has_authenticator_group_enabled(self): method test_cluster_has_workload_identity_enabled (line 129) | def test_cluster_has_workload_identity_enabled(self): method test_has_http_load_balancing_enabled (line 139) | def test_has_http_load_balancing_enabled(self): method test_has_default_service_account (line 149) | def test_has_default_service_account(self): method test_pod_ipv4_cidr (line 161) | def test_pod_ipv4_cidr(self): method test_current_node_count (line 174) | def test_current_node_count(self): method test_np_pod_ipv4_cidr_size (line 185) | def test_np_pod_ipv4_cidr_size(self): method test_np_pod_ipv4_cidr_block (line 193) | def test_np_pod_ipv4_cidr_block(self): method test_has_md_concealment_enabled (line 206) | def test_has_md_concealment_enabled(self): method test_has_workload_identity_enabled (line 212) | def test_has_workload_identity_enabled(self): method test_has_intra_node_visibility_enabled (line 218) | def test_has_intra_node_visibility_enabled(self): method test_no_accelerators (line 227) | def test_no_accelerators(self): method test_has_accelerators (line 233) | def test_has_accelerators(self): method test_no_maintenance_window (line 239) | def test_no_maintenance_window(self): method test_maintenance_window (line 245) | def test_maintenance_window(self): method test_nodepool_instance_groups (line 251) | def test_nodepool_instance_groups(self): method test_get_node_by_instance_id (line 260) | def test_get_node_by_instance_id(self): method test_service_account_property (line 275) | def test_service_account_property(self): method test_masters_cidr_list (line 285) | def test_masters_cidr_list(self): method test_cluster_is_private (line 291) | def test_cluster_is_private(self): method test_cluster_is_vpc_native (line 299) | def test_cluster_is_vpc_native(self): method test_cluster_is_regional (line 307) | def test_cluster_is_regional(self): method test_cluster_ca_certificate (line 315) | def test_cluster_ca_certificate(self): method test_cluster_endpoint (line 321) | def test_cluster_endpoint(self): method test_node_tag_property (line 327) | def test_node_tag_property(self): method test_cluster_hash_property (line 336) | def test_cluster_hash_property(self): method test_verify_firewall_rule_exists (line 342) | def test_verify_firewall_rule_exists(self): method test_cluster_network_subnetwork (line 350) | def test_cluster_network_subnetwork(self): method test_cluster_masters_cidr_list (line 358) | def test_cluster_masters_cidr_list(self): method test_has_network_policy_enabled (line 374) | def test_has_network_policy_enabled(self): method test_has_dpv2_enabled (line 381) | def test_has_dpv2_enabled(self): method test_is_nodelocal_dnscache_enabled (line 390) | def test_is_nodelocal_dnscache_enabled(self): class TestVersion (line 405) | class TestVersion: method test_init (line 408) | def test_init(self): method test_same_major (line 416) | def test_same_major(self): method test_diff_minor (line 420) | def test_diff_minor(self): method test_eq_str (line 424) | def test_eq_str(self): method test_add_str (line 428) | def test_add_str(self): method test_eq_version (line 439) | def test_eq_version(self): method test_compare_lt_gt (line 443) | def test_compare_lt_gt(self): method raises (line 454) | def raises(self, v): FILE: gcpdiag/queries/iam.py class Role (line 32) | class Role(models.Resource): method __init__ (line 35) | def __init__(self, resource_data): method name (line 45) | def name(self) -> str: method full_path (line 49) | def full_path(self) -> str: method permissions (line 53) | def permissions(self) -> List[str]: class RoleNotFoundError (line 58) | class RoleNotFoundError(Exception): function _fetch_iam_roles (line 63) | def _fetch_iam_roles(parent: str, api_project_id: str) -> Dict[str, Role]: function _get_predefined_roles (line 93) | def _get_predefined_roles(api_project_id: str) -> Dict[str, Role]: function _get_predefined_role (line 98) | def _get_predefined_role(name: str, api_project_id: str) -> Role: function _get_organization_roles (line 120) | def _get_organization_roles(organization_name: str, function _get_project_roles (line 126) | def _get_project_roles(project_name: str, function _get_iam_role (line 132) | def _get_iam_role(name: str, default_project_id: str) -> Role: class BaseIAMPolicy (line 161) | class BaseIAMPolicy(models.Resource): method full_path (line 168) | def full_path(self): method _is_resource_permission (line 172) | def _is_resource_permission(self, permission: str) -> bool: method _expand_policy (line 181) | def _expand_policy(self, resource_data: Dict[str, Any]) -> Dict[str, A... method _expand_member_policy (line 258) | def _expand_member_policy(self, member: str): method _is_active_member (line 280) | def _is_active_member(self, member: str) -> bool: method __init__ (line 300) | def __init__(self, project_id: Optional[str], name: str, method get_member_permissions (line 307) | def get_member_permissions(self, member: str) -> List[str]: method get_members (line 320) | def get_members(self) -> List[str]: method get_member_type (line 328) | def get_member_type(self, member) -> Optional[str]: method has_permission (line 340) | def has_permission(self, member: str, permission: str) -> bool: method has_any_permission (line 355) | def has_any_permission(self, member: str, permission: set[str]) -> bool: method _has_role (line 371) | def _has_role(self, member: str, role: str) -> bool: method has_role_permissions (line 387) | def has_role_permissions(self, member: str, role: str) -> bool: function fetch_iam_policy (line 416) | def fetch_iam_policy( class ProjectPolicy (line 452) | class ProjectPolicy(BaseIAMPolicy): method _is_resource_permission (line 462) | def _is_resource_permission(self, permission: str) -> bool: function get_project_policy (line 475) | def get_project_policy(context: models.Context, class OrganizationPolicy (line 487) | class OrganizationPolicy(BaseIAMPolicy): method _is_resource_permission (line 494) | def _is_resource_permission(self, permission: str) -> bool: function get_organization_policy (line 504) | def get_organization_policy(context: models.Context, class ServiceAccount (line 517) | class ServiceAccount(models.Resource): method __init__ (line 526) | def __init__(self, project_id, resource_data): method name (line 531) | def name(self) -> str: method email (line 535) | def email(self) -> str: method unique_id (line 539) | def unique_id(self) -> str: method disabled (line 543) | def disabled(self) -> bool: method full_path (line 547) | def full_path(self) -> str: method short_path (line 554) | def short_path(self) -> str: function _batch_fetch_service_accounts (line 614) | def _batch_fetch_service_accounts(emails: List[str], context: models.Con... function _extract_project_id (line 708) | def _extract_project_id(email: str): function is_service_account_existing (line 759) | def is_service_account_existing(email: str, context: models.Context) -> ... function is_service_account_enabled (line 773) | def is_service_account_enabled(email: str, context: models.Context) -> b... class ServiceAccountIAMPolicy (line 786) | class ServiceAccountIAMPolicy(BaseIAMPolicy): method _is_resource_permission (line 788) | def _is_resource_permission(self, permission): function get_service_account_iam_policy (line 793) | def get_service_account_iam_policy( function get_service_account_list (line 807) | def get_service_account_list(project_id: str) -> List[ServiceAccount]: FILE: gcpdiag/queries/iam_stub.py class IamApiStub (line 38) | class IamApiStub: method __init__ (line 43) | def __init__(self, method new_batch_http_request (line 59) | def new_batch_http_request(self, callback=None): method projects (line 65) | def projects(self): method serviceAccounts (line 68) | def serviceAccounts(self): method get (line 71) | def get(self, name): method getIamPolicy (line 82) | def getIamPolicy(self, resource): method roles (line 91) | def roles(self): method list (line 106) | def list(self, **args): method list_next (line 118) | def list_next(self, previous_request, previous_response): method uri (line 125) | def uri(self): method execute (line 128) | def execute(self, num_retries=0): FILE: gcpdiag/queries/iam_test.py function get_cache_stub (line 27) | def get_cache_stub(): class TestProjectPolicy (line 84) | class TestProjectPolicy: method test_get_member_permissions (line 87) | def test_get_member_permissions(self): method test_has_permission (line 94) | def test_has_permission(self): method test_has_role (line 103) | def test_has_role(self): method test_has_role_permissions (line 111) | def test_has_role_permissions(self): method test_missing_role (line 119) | def test_missing_role(self): method test_internal_role (line 126) | def test_internal_role(self): method test_is_service_acccount_existing (line 132) | def test_is_service_acccount_existing(self): method test_is_service_acccount_existing_inexisting (line 136) | def test_is_service_acccount_existing_inexisting(self): method test_is_service_acccount_enabled (line 140) | def test_is_service_acccount_enabled(self): method test_service_account_policy (line 144) | def test_service_account_policy(self): method test_project_id_extraction_from_service_account (line 152) | def test_project_id_extraction_from_service_account(self): method test_service_account_list (line 161) | def test_service_account_list(self): FILE: gcpdiag/queries/interconnect.py class Interconnect (line 26) | class Interconnect(models.Resource): method __init__ (line 34) | def __init__(self, project_id, resource_data): method name (line 41) | def name(self) -> str: method under_maintenance (line 45) | def under_maintenance(self) -> bool: method id (line 49) | def id(self) -> str: method full_path (line 53) | def full_path(self) -> str: method short_path (line 62) | def short_path(self) -> str: method self_link (line 67) | def self_link(self) -> str: method attachments (line 71) | def attachments(self) -> List[str]: method ead (line 80) | def ead(self) -> str: method metro (line 86) | def metro(self) -> str: function get_interconnect (line 91) | def get_interconnect(project_id: str, interconnect_name: str) -> Interco... function get_interconnects (line 101) | def get_interconnects(project_id: str) -> List[Interconnect]: function get_links (line 110) | def get_links(project_id: str) -> List[Interconnect]: function _metro (line 127) | def _metro(ead: str) -> str: class VlanAttachment (line 131) | class VlanAttachment(models.Resource): method __init__ (line 140) | def __init__(self, project_id, resource_data): method name (line 148) | def name(self) -> str: method id (line 152) | def id(self) -> str: method full_path (line 156) | def full_path(self) -> str: method short_path (line 165) | def short_path(self) -> str: method self_link (line 170) | def self_link(self) -> str: method type (line 174) | def type(self) -> str: method interconnect (line 178) | def interconnect(self) -> str: method router (line 184) | def router(self) -> str: method region (line 188) | def region(self) -> str: method mtu (line 192) | def mtu(self) -> int: method ipv4address (line 199) | def ipv4address(self) -> str: method remoteip (line 203) | def remoteip(self) -> str: method ead (line 207) | def ead(self) -> str: method metro (line 214) | def metro(self) -> str: method legacy_dataplane (line 218) | def legacy_dataplane(self) -> bool: method defunct_state (line 225) | def defunct_state(self) -> bool: function get_vlan_attachment (line 230) | def get_vlan_attachment(project_id: str, region: str, function get_vlan_attachments (line 241) | def get_vlan_attachments(project_id: str) -> List[VlanAttachment]: FILE: gcpdiag/queries/interconnect_stub.py class InterconnectApiStub (line 30) | class InterconnectApiStub(apis_stub.ApiStub): method __init__ (line 35) | def __init__(self, mock_state): method get (line 39) | def get(self, project, interconnect): method list (line 47) | def list(self, project): function _find_test_data (line 54) | def _find_test_data(interconnect_name): class VlanAttachmentApiStub (line 60) | class VlanAttachmentApiStub(apis_stub.ApiStub): method __init__ (line 65) | def __init__(self, mock_state): method get (line 69) | def get(self, project, region, interconnectAttachment): method aggregatedList (line 76) | def aggregatedList(self, project): FILE: gcpdiag/queries/interconnect_test.py class TestInterconnect (line 29) | class TestInterconnect: method test_get_interconnect (line 32) | def test_get_interconnect(self): method test_get_interconnects (line 40) | def test_get_interconnects(self): method test_get_vlan_attachment (line 62) | def test_get_vlan_attachment(self): method test_get_vlan_attachments (line 73) | def test_get_vlan_attachments(self): method test_legacy_dataplane (line 109) | def test_legacy_dataplane(self): method test_defunct_state (line 117) | def test_defunct_state(self): method test_under_maintenance (line 125) | def test_under_maintenance(self): method test_get_links (line 131) | def test_get_links(self): method test_ipv4address (line 138) | def test_ipv4address(self): FILE: gcpdiag/queries/kms.py class CryptoKey (line 27) | class CryptoKey(models.Resource): method full_path (line 35) | def full_path(self) -> str: method name (line 39) | def name(self) -> str: method is_destroyed (line 42) | def is_destroyed(self) -> bool: method is_enabled (line 45) | def is_enabled(self) -> bool: method __init__ (line 48) | def __init__(self, project_id, resource_data): class KMSCryptoKeyIAMPolicy (line 53) | class KMSCryptoKeyIAMPolicy(iam.BaseIAMPolicy): method _is_resource_permission (line 55) | def _is_resource_permission(self, permission): function get_crypto_key (line 60) | def get_crypto_key(key_name: str) -> CryptoKey: function get_crypto_key_iam_policy (line 78) | def get_crypto_key_iam_policy(context: models.Context, FILE: gcpdiag/queries/kms_stub.py class KmsApiStub (line 32) | class KmsApiStub: method projects (line 35) | def projects(self): method locations (line 38) | def locations(self): method keyRings (line 41) | def keyRings(self): method cryptoKeys (line 44) | def cryptoKeys(self): method get (line 47) | def get(self, name=None): method getIamPolicy (line 52) | def getIamPolicy(self, resource): FILE: gcpdiag/queries/kms_test.py class TestCryptoKey (line 36) | class TestCryptoKey: method test_get_crypto_key (line 39) | def test_get_crypto_key(self): method test_is_destroyed (line 46) | def test_is_destroyed(self): method test_is_enabled (line 50) | def test_is_enabled(self): method test_get_crypto_key_iam_policy (line 56) | def test_get_crypto_key_iam_policy(self): FILE: gcpdiag/queries/kubectl.py function get_config_path (line 30) | def get_config_path(): class KubectlExecutor (line 34) | class KubectlExecutor: method __init__ (line 39) | def __init__(self, cluster: gke.Cluster): method make_kube_config (line 43) | def make_kube_config(self) -> bool: method kubectl_execute (line 97) | def kubectl_execute(self, command_list: list[str]): function verify_auth (line 110) | def verify_auth(executor: KubectlExecutor) -> bool: function check_gke_ingress (line 126) | def check_gke_ingress(executor: KubectlExecutor): function get_kubectl_executor (line 134) | def get_kubectl_executor(c: gke.Cluster): function clean_up (line 151) | def clean_up(): function error_message (line 160) | def error_message(rule_name, kind, namespace, name, message) -> str: FILE: gcpdiag/queries/kubectl_stub.py function check_gke_ingress (line 22) | def check_gke_ingress(executor: kubectl.KubectlExecutor): function verify_auth (line 30) | def verify_auth(executor: kubectl.KubectlExecutor) -> bool: FILE: gcpdiag/queries/lb.py class LoadBalancerType (line 27) | class LoadBalancerType(Enum): function get_load_balancer_type_name (line 46) | def get_load_balancer_type_name(lb_type: LoadBalancerType) -> str: function get_load_balancer_type (line 82) | def get_load_balancer_type( function normalize_url (line 124) | def normalize_url(url: str) -> str: class BackendServices (line 133) | class BackendServices(models.Resource): method __init__ (line 139) | def __init__(self, project_id, resource_data): method name (line 144) | def name(self) -> str: method id (line 148) | def id(self) -> str: method full_path (line 152) | def full_path(self) -> str: method short_path (line 161) | def short_path(self) -> str: method self_link (line 166) | def self_link(self) -> str: method session_affinity (line 170) | def session_affinity(self) -> str: method timeout_sec (line 174) | def timeout_sec(self) -> int: method locality_lb_policy (line 178) | def locality_lb_policy(self) -> str: method is_enable_cdn (line 182) | def is_enable_cdn(self) -> str: method draining_timeout_sec (line 186) | def draining_timeout_sec(self) -> int: method load_balancing_scheme (line 191) | def load_balancing_scheme(self) -> str: method health_check (line 195) | def health_check(self): method health_check_region (line 207) | def health_check_region(self): method backends (line 218) | def backends(self) -> List[dict]: method region (line 222) | def region(self): method protocol (line 236) | def protocol(self) -> str: method port_name (line 240) | def port_name(self) -> str: method used_by_refs (line 244) | def used_by_refs(self) -> List[str]: method load_balancer_type (line 256) | def load_balancer_type(self) -> LoadBalancerType: function get_backend_services (line 267) | def get_backend_services(project_id: str) -> List[BackendServices]: function get_backend_service (line 285) | def get_backend_service(project_id: str, function get_backend_service_by_self_link (line 306) | def get_backend_service_by_self_link( class BackendHealth (line 318) | class BackendHealth: method __init__ (line 323) | def __init__(self, resource_data, group): method instance (line 328) | def instance(self) -> str: method group (line 332) | def group(self) -> str: method health_state (line 336) | def health_state(self) -> str: function get_backend_service_health (line 341) | def get_backend_service_health( class SslCertificate (line 399) | class SslCertificate(models.Resource): method __init__ (line 405) | def __init__(self, project_id, resource_data): method name (line 410) | def name(self) -> str: method id (line 414) | def id(self) -> str: method full_path (line 418) | def full_path(self) -> str: method self_link (line 427) | def self_link(self) -> str: method type (line 431) | def type(self) -> str: method status (line 435) | def status(self) -> str: method domains (line 439) | def domains(self) -> List[str]: method domain_status (line 443) | def domain_status(self) -> Dict[str, str]: function get_ssl_certificate (line 448) | def get_ssl_certificate( class ForwardingRules (line 462) | class ForwardingRules(models.Resource): method __init__ (line 468) | def __init__(self, project_id, resource_data): method name (line 473) | def name(self) -> str: method id (line 477) | def id(self) -> str: method full_path (line 481) | def full_path(self) -> str: method short_path (line 490) | def short_path(self) -> str: method region (line 495) | def region(self): method self_link (line 505) | def self_link(self) -> str: method global_access_allowed (line 509) | def global_access_allowed(self) -> bool: method load_balancing_scheme (line 513) | def load_balancing_scheme(self) -> str: method target (line 517) | def target(self) -> str: method backend_service (line 526) | def backend_service(self) -> str: method ip_address (line 535) | def ip_address(self) -> str: method port_range (line 539) | def port_range(self) -> str: method get_related_backend_services (line 543) | def get_related_backend_services(self) -> List[BackendServices]: method load_balancer_type (line 566) | def load_balancer_type(self) -> LoadBalancerType: function get_target_proxy_reference (line 588) | def get_target_proxy_reference(target_proxy_self_link: str) -> str: function get_forwarding_rules (line 655) | def get_forwarding_rules(project_id: str) -> List[ForwardingRules]: function get_forwarding_rule (line 673) | def get_forwarding_rule(project_id: str, class TargetHttpsProxy (line 688) | class TargetHttpsProxy(models.Resource): method __init__ (line 694) | def __init__(self, project_id, resource_data): method name (line 699) | def name(self) -> str: method id (line 703) | def id(self) -> str: method full_path (line 707) | def full_path(self) -> str: method self_link (line 716) | def self_link(self) -> str: method region (line 720) | def region(self): method ssl_certificates (line 730) | def ssl_certificates(self) -> List[str]: method certificate_map (line 734) | def certificate_map(self) -> str: function get_target_https_proxies (line 744) | def get_target_https_proxies(project_id: str) -> List[TargetHttpsProxy]: class TargetSslProxy (line 762) | class TargetSslProxy(models.Resource): method __init__ (line 768) | def __init__(self, project_id, resource_data): method name (line 773) | def name(self) -> str: method id (line 777) | def id(self) -> str: method full_path (line 781) | def full_path(self) -> str: method self_link (line 790) | def self_link(self) -> str: method region (line 794) | def region(self): method ssl_certificates (line 804) | def ssl_certificates(self) -> List[str]: method certificate_map (line 808) | def certificate_map(self) -> str: function get_target_ssl_proxies (line 818) | def get_target_ssl_proxies(project_id: str) -> List[TargetSslProxy]: class LoadBalancerInsight (line 829) | class LoadBalancerInsight(models.Resource): method full_path (line 833) | def full_path(self) -> str: method description (line 837) | def description(self) -> str: method insight_subtype (line 841) | def insight_subtype(self) -> str: method details (line 845) | def details(self) -> dict: method is_firewall_rule_insight (line 849) | def is_firewall_rule_insight(self) -> bool: method is_health_check_port_mismatch_insight (line 859) | def is_health_check_port_mismatch_insight(self) -> bool: method __init__ (line 862) | def __init__(self, project_id, resource_data): function get_lb_insights_for_a_project (line 868) | def get_lb_insights_for_a_project(project_id: str, region: str = 'global'): FILE: gcpdiag/queries/lb_stub.py class LbApiStub (line 52) | class LbApiStub: method __init__ (line 58) | def __init__(self, mock_state): method aggregatedList (line 61) | def aggregatedList(self, project): method list (line 72) | def list(self, project, region=None): method get (line 81) | def get( method getHealth (line 99) | def getHealth(self, project, backendService, body, region=None): method _get_resources_from_json_items (line 118) | def _get_resources_from_json_items(self, items: Any, resource_name: str): method execute (line 125) | def execute(self, num_retries=0): method list_next (line 178) | def list_next(self, prev_request, prev_response): class SslCertificateApiStub (line 182) | class SslCertificateApiStub: method __init__ (line 185) | def __init__(self, mock_state): method get (line 188) | def get(self, project, sslCertificate=None, region=None): method execute (line 197) | def execute(self, num_retries=0): class TargetProxyStub (line 220) | class TargetProxyStub: method __init__ (line 223) | def __init__(self, mock_state): method aggregatedList (line 226) | def aggregatedList(self, project): method list (line 230) | def list(self, project): method get (line 233) | def get( method execute (line 263) | def execute(self, num_retries=0): FILE: gcpdiag/queries/lb_test.py class TestURLMap (line 35) | class TestURLMap(unittest.TestCase): method test_get_backend_services (line 38) | def test_get_backend_services(self): method test_get_backend_service_global (line 47) | def test_get_backend_service_global(self): method test_get_backend_service_regional (line 59) | def test_get_backend_service_regional(self): method test_get_backend_service_health_implicit_global (line 73) | def test_get_backend_service_health_implicit_global(self): method test_get_backend_service_health_explicit_global (line 80) | def test_get_backend_service_health_explicit_global(self): method test_get_backend_service_health_regional (line 88) | def test_get_backend_service_health_regional(self): method test_get_forwarding_rules (line 96) | def test_get_forwarding_rules(self): method test_get_forwarding_rule_regional (line 104) | def test_get_forwarding_rule_regional(self): method test_get_forwarding_rule_global (line 116) | def test_get_forwarding_rule_global(self): method test_forwarding_rule_related_backend_service_http (line 126) | def test_forwarding_rule_related_backend_service_http(self): method test_get_ssl_certificate_global (line 135) | def test_get_ssl_certificate_global(self): method test_get_target_https_proxies (line 150) | def test_get_target_https_proxies(self): method test_get_target_ssl_proxies (line 161) | def test_get_target_ssl_proxies(self): method test_get_lb_insights_for_a_project (line 170) | def test_get_lb_insights_for_a_project(self): FILE: gcpdiag/queries/logs.py class _LogsQueryJob (line 57) | class _LogsQueryJob: class LogsQuery (line 66) | class LogsQuery: method __init__ (line 70) | def __init__(self, job): method entries (line 74) | def entries(self) -> Sequence: class LogEntryShort (line 89) | class LogEntryShort: method __init__ (line 94) | def __init__(self, raw_entry): method text (line 107) | def text(self): method timestamp (line 111) | def timestamp(self): method timestamp_iso (line 115) | def timestamp_iso(self): class LogExclusion (line 121) | class LogExclusion(models.Resource): method __init__ (line 126) | def __init__(self, project_id: str, resource_data: dict): method full_path (line 131) | def full_path(self) -> str: method filter (line 135) | def filter(self) -> str: method disabled (line 139) | def disabled(self) -> bool: function query (line 145) | def query(project_id: str, resource_type: str, log_name: str, function _ratelimited_execute (line 164) | def _ratelimited_execute(req): function _execute_query_job (line 174) | def _execute_query_job(job: _LogsQueryJob, context: models.Context): ##... function realtime_query (line 249) | def realtime_query(project_id, function execute_queries (line 323) | def execute_queries(query_executor: executor.ContextAwareExecutor, function log_entry_timestamp (line 332) | def log_entry_timestamp(log_entry: Mapping[str, Any]) -> datetime.datetime: function format_log_entry (line 341) | def format_log_entry(log_entry: dict) -> str: function exclusions (line 357) | def exclusions(project_id: str) -> Union[List[LogExclusion], None]: FILE: gcpdiag/queries/logs_helper/__init__.py class LogsQuery (line 9) | class LogsQuery: method __init__ (line 12) | def __init__(self, *args, **kwargs): method mk_query (line 17) | def mk_query(self): method has_matching_entries (line 21) | def has_matching_entries(self): method get_unique (line 24) | def get_unique(self, fn): FILE: gcpdiag/queries/logs_helper/logs_query.py class LogsQuery (line 5) | class LogsQuery: method __init__ (line 66) | def __init__(self, project_id, resource_type, log_name, search_exprs, method mk_query (line 76) | def mk_query(self): method has_matching_entries (line 83) | def has_matching_entries(self): method get_unique (line 88) | def get_unique(self, fn): method _stackdriver_expr (line 96) | def _stackdriver_expr(self): method _is_log_entry_matches (line 99) | def _is_log_entry_matches(self, log_entry): FILE: gcpdiag/queries/logs_helper/logs_query_test.py class FakeLogsResult (line 10) | class FakeLogsResult: method __init__ (line 12) | def __init__(self, entries): class FakeLogsQueryFn (line 16) | class FakeLogsQueryFn: method __init__ (line 19) | def __init__(self, entries): method __call__ (line 22) | def __call__(self, project_id, resource_type, log_name, filter_str): class TestLogsQuery (line 91) | class TestLogsQuery(TestCase): method setUp (line 94) | def setUp(self): method _create_query (line 109) | def _create_query(self, search_exprs, project_id=None): method test_no_result (line 116) | def test_no_result(self): method test_empty_entries (line 122) | def test_empty_entries(self): method test_found (line 128) | def test_found(self): method test_not_found (line 133) | def test_not_found(self): method test_unique (line 138) | def test_unique(self): method test_unique_found (line 145) | def test_unique_found(self): FILE: gcpdiag/queries/logs_helper/search_exprs.py class Equals (line 8) | class Equals: method __init__ (line 26) | def __init__(self, field, value): method stackdriver_expr (line 31) | def stackdriver_expr(self): method is_log_entry_matches (line 34) | def is_log_entry_matches(self, log_entry): class REFound (line 41) | class REFound: method __init__ (line 59) | def __init__(self, field, re_exp): method stackdriver_expr (line 64) | def stackdriver_expr(self): method is_log_entry_matches (line 67) | def is_log_entry_matches(self, log_entry): method _compiled_re (line 72) | def _compiled_re(self): class AnyREFound (line 76) | class AnyREFound: method __init__ (line 99) | def __init__(self, field, re_exps): method stackdriver_expr (line 104) | def stackdriver_expr(self): method is_log_entry_matches (line 109) | def is_log_entry_matches(self, log_entry): method _compiled_re_exps (line 114) | def _compiled_re_exps(self): FILE: gcpdiag/queries/logs_helper/search_exprs_test.py class TestEquals (line 7) | class TestEquals(TestCase): method test_stackdriver_expr (line 10) | def test_stackdriver_expr(self): method test_field_equals (line 14) | def test_field_equals(self): method test_field_not_equals (line 19) | def test_field_not_equals(self): method test_nested_stackdriver_expr (line 24) | def test_nested_stackdriver_expr(self): method test_nested_field_equals (line 28) | def test_nested_field_equals(self): method test_nested_field_not_equals (line 33) | def test_nested_field_not_equals(self): class TestREFound (line 39) | class TestREFound(TestCase): method test_stackdriver_expr (line 42) | def test_stackdriver_expr(self): method test_found (line 46) | def test_found(self): method test_not_found (line 51) | def test_not_found(self): method test_nested_stackdriver_expr (line 56) | def test_nested_stackdriver_expr(self): method test_nested_found (line 60) | def test_nested_found(self): method test_nested_not_found (line 65) | def test_nested_not_found(self): class TestAnyREFound (line 71) | class TestAnyREFound(TestCase): method test_stackdriver_expr_one_re (line 74) | def test_stackdriver_expr_one_re(self): method test_stackdriver_expr_many_res (line 78) | def test_stackdriver_expr_many_res(self): method test_found (line 83) | def test_found(self): method test_not_found (line 88) | def test_not_found(self): method test_nested_stackdriver_expr_many_res (line 93) | def test_nested_stackdriver_expr_many_res(self): method test_nested_found (line 99) | def test_nested_found(self): method test_nested_not_found (line 105) | def test_nested_not_found(self): FILE: gcpdiag/queries/logs_stub.py class LoggingApiStub (line 32) | class LoggingApiStub: method __init__ (line 36) | def __init__(self, mock_state='init', project_id=None, zone=None, page... method exclusions (line 42) | def exclusions(self): method entries (line 45) | def entries(self): method list (line 48) | def list(self, parent=None, body=None): method list_next (line 60) | def list_next(self, req, res): FILE: gcpdiag/queries/logs_test.py class TestLogs (line 31) | class TestLogs: method test_single_query (line 34) | def test_single_query(self): method test_aggregated_query (line 52) | def test_aggregated_query(self): method test_format_log_entry (line 78) | def test_format_log_entry(self): FILE: gcpdiag/queries/looker.py class Instance (line 25) | class Instance(models.Resource): method __init__ (line 29) | def __init__(self, project_id, resource_data): method name (line 34) | def name(self) -> str: method full_path (line 38) | def full_path(self) -> str: method short_path (line 42) | def short_path(self) -> str: method status (line 46) | def status(self) -> str: method create_time (line 50) | def create_time(self) -> str: method update_time (line 54) | def update_time(self) -> str: method platform_edition (line 58) | def platform_edition(self) -> str: method looker_version (line 62) | def looker_version(self) -> str: method looker_uri (line 66) | def looker_uri(self) -> str: class Operation (line 70) | class Operation(models.Resource): method __init__ (line 73) | def __init__(self, project_id, resource_data): method full_path (line 78) | def full_path(self) -> str: method name (line 82) | def name(self) -> str: method metadata (line 86) | def metadata(self) -> dict: method done (line 90) | def done(self) -> bool: method target (line 94) | def target(self) -> str: method verb (line 98) | def verb(self) -> str: method status (line 102) | def status(self) -> str: method location_id (line 106) | def location_id(self) -> str: method instance_name (line 111) | def instance_name(self) -> str: method operation_type (line 116) | def operation_type(self) -> str: method action (line 120) | def action(self) -> str: method create_time (line 128) | def create_time(self) -> datetime: function _get_locations_to_scan (line 137) | def _get_locations_to_scan(context: models.Context, looker_api) -> List[... function get_instances (line 156) | def get_instances(context: models.Context) -> Dict[str, Instance]: function get_operations (line 189) | def get_operations( FILE: gcpdiag/queries/looker_stub.py class LookerApiStub (line 30) | class LookerApiStub(apis_stub.ApiStub): method __init__ (line 33) | def __init__(self, project_id=None): class _HttpRequest (line 38) | class _HttpRequest: method __init__ (line 40) | def __init__(self, stub, resource_type, method, kwargs): method execute (line 46) | def execute(self, num_retries=0): method projects (line 50) | def projects(self): method locations (line 53) | def locations(self): method instances (line 57) | def instances(self): method operations (line 61) | def operations(self): method list (line 65) | def list(self, **kwargs): method get (line 70) | def get(self, **kwargs): method get_operations (line 80) | def get_operations(self, **kwargs): method list_next (line 86) | def list_next(self, previous_request, previous_response=None): method execute_request (line 90) | def execute_request(self, resource_type, method, kwargs, num_retries=0): class LookerInstanceRestCallStub (line 150) | class LookerInstanceRestCallStub(apis_stub.RestCallStub): method execute (line 153) | def execute(self, num_retries=0): FILE: gcpdiag/queries/looker_test.py class TestInstance (line 33) | class TestInstance: method test_get_instances_by_project (line 36) | def test_get_instances_by_project(self): class TestOperation (line 46) | class TestOperation: method test_get_operations_by_project (line 49) | def test_get_operations_by_project(self): FILE: gcpdiag/queries/monitoring.py function _gcp_typed_values_to_python_list (line 31) | def _gcp_typed_values_to_python_list( function period_aligned_now (line 48) | def period_aligned_now(period_seconds: int) -> str: class TimeSeriesCollection (line 60) | class TimeSeriesCollection(collections.abc.Mapping): method __init__ (line 83) | def __init__(self): method __str__ (line 88) | def __str__(self): method __repr__ (line 91) | def __repr__(self): method add_api_response (line 94) | def add_api_response(self, resource_data): method __getitem__ (line 136) | def __getitem__(self, labels): method __iter__ (line 140) | def __iter__(self): method __len__ (line 143) | def __len__(self): method keys (line 146) | def keys(self): method items (line 149) | def items(self): method values (line 152) | def values(self): function query (line 156) | def query(project_id: str, query_str: str) -> TimeSeriesCollection: function queryrange (line 198) | def queryrange(project_id: str, query_str: str, start_time: datetime.dat... FILE: gcpdiag/queries/monitoring_stub.py class MonitoringApiStub (line 26) | class MonitoringApiStub: method location (line 29) | def location(self): method prometheus (line 32) | def prometheus(self): method projects (line 35) | def projects(self): method timeSeries (line 39) | def timeSeries(self): method api (line 42) | def api(self): method v1 (line 45) | def v1(self): method query_range (line 48) | def query_range(self, name, location, body): method query (line 70) | def query(self, name, body): method query_next (line 76) | def query_next(self, previous_request, previous_response): FILE: gcpdiag/queries/monitoring_test.py class Test (line 29) | class Test: method test_timeserie (line 31) | def test_timeserie(self): method test_queryrange (line 59) | def test_queryrange(self): FILE: gcpdiag/queries/network.py class Subnetwork (line 34) | class Subnetwork(models.Resource): method __init__ (line 40) | def __init__(self, project_id, resource_data, context: models.Context): method full_path (line 46) | def full_path(self) -> str: method short_path (line 55) | def short_path(self) -> str: method name (line 60) | def name(self) -> str: method self_link (line 64) | def self_link(self) -> str: method ip_network (line 68) | def ip_network(self) -> IPv4NetOrIPv6Net: method region (line 72) | def region(self) -> str: method is_private_ip_google_access (line 82) | def is_private_ip_google_access(self) -> bool: method network (line 86) | def network(self): class Route (line 90) | class Route(models.Resource): method __init__ (line 95) | def __init__(self, project_id, resource_data): method full_path (line 100) | def full_path(self) -> str: method short_path (line 109) | def short_path(self) -> str: method name (line 114) | def name(self) -> str: method kind (line 118) | def kind(self) -> str: method self_link (line 122) | def self_link(self) -> str: method network (line 126) | def network(self) -> str: method tags (line 130) | def tags(self) -> List[str]: method dest_range (line 136) | def dest_range(self) -> str: method next_hop_gateway (line 140) | def next_hop_gateway(self) -> Optional[str]: method next_hop_vpn_tunnel (line 146) | def next_hop_vpn_tunnel(self) -> Optional[str]: method next_hop_hub (line 150) | def next_hop_hub(self) -> Optional[str]: method priority (line 154) | def priority(self) -> int: method get_next_hop (line 157) | def get_next_hop(self) -> Union[Dict[str, Any], Optional[str]]: method check_route_match (line 175) | def check_route_match(self, ip1: IPAddrOrNet, ip2: str) -> bool: class ManagedZone (line 182) | class ManagedZone(models.Resource): method __init__ (line 190) | def __init__(self, project_id, resource_data): method cloud_logging_config (line 195) | def cloud_logging_config(self) -> bool: method is_public (line 199) | def is_public(self) -> bool: method vpc_attached (line 203) | def vpc_attached(self) -> bool: method dnssec_config_state (line 213) | def dnssec_config_state(self) -> bool: method name (line 220) | def name(self) -> str: method full_path (line 224) | def full_path(self) -> str: method short_path (line 233) | def short_path(self) -> str: method self_link (line 238) | def self_link(self) -> str: class Router (line 242) | class Router(models.Resource): method __init__ (line 247) | def __init__(self, project_id, resource_data): method full_path (line 253) | def full_path(self) -> str: method short_path (line 262) | def short_path(self) -> str: method name (line 267) | def name(self) -> str: method self_link (line 271) | def self_link(self) -> str: method network (line 275) | def network(self) -> str: method get_network_name (line 278) | def get_network_name(self) -> str: method nats (line 285) | def nats(self): method get_nat_ip_allocate_option (line 288) | def get_nat_ip_allocate_option(self, nat_gateway) -> str: method get_enable_dynamic_port_allocation (line 293) | def get_enable_dynamic_port_allocation(self, nat_gateway) -> str: method subnet_has_nat (line 298) | def subnet_has_nat(self, subnetwork): class RouterStatus (line 314) | class RouterStatus(models.Resource): method __init__ (line 319) | def __init__(self, project_id, resource_data): method full_path (line 324) | def full_path(self) -> str: method short_path (line 333) | def short_path(self) -> str: method name (line 338) | def name(self) -> str: method self_link (line 342) | def self_link(self) -> str: method min_extra_nat_ips_needed (line 346) | def min_extra_nat_ips_needed(self) -> str: method num_vms_with_nat_mappings (line 351) | def num_vms_with_nat_mappings(self) -> str: method bgp_peer_status (line 356) | def bgp_peer_status(self) -> str: class RouterNatIpInfo (line 362) | class RouterNatIpInfo(models.Resource): method __init__ (line 367) | def __init__(self, project_id, resource_data): method full_path (line 372) | def full_path(self) -> str: method short_path (line 381) | def short_path(self) -> str: method self_link (line 386) | def self_link(self) -> str: method name (line 390) | def name(self) -> str: method result (line 394) | def result(self) -> str: class Peering (line 399) | class Peering: method __str__ (line 409) | def __str__(self): class Network (line 413) | class Network(models.Resource): method __init__ (line 419) | def __init__(self, project_id, resource_data, context: models.Context): method full_path (line 426) | def full_path(self) -> str: method short_path (line 435) | def short_path(self) -> str: method name (line 440) | def name(self) -> str: method self_link (line 444) | def self_link(self) -> str: method firewall (line 448) | def firewall(self) -> 'EffectiveFirewalls': method mtu (line 452) | def mtu(self) -> int: method subnetworks (line 458) | def subnetworks(self) -> Dict[str, Subnetwork]: method peerings (line 464) | def peerings(self) -> List[Peering]: function _ip_match (line 473) | def _ip_match( # function _l4_match (line 508) | def _l4_match(protocol: str, port: int, l4c_list: Iterable[Dict[str, function _port_in_port_range (line 531) | def _port_in_port_range(port: int, port_range: str): function _vpc_allow_deny_match (line 543) | def _vpc_allow_deny_match(protocol: str, port: Optional[int], class FirewallCheckResult (line 579) | class FirewallCheckResult: method __str__ (line 588) | def __str__(self): method matched_by_str (line 592) | def matched_by_str(self): class FirewallRuleNotFoundError (line 602) | class FirewallRuleNotFoundError(Exception): method __init__ (line 605) | def __init__(self, name, disabled=False): class VpcFirewallRule (line 612) | class VpcFirewallRule: method __init__ (line 615) | def __init__(self, resource_data): method name (line 619) | def name(self) -> str: method source_ranges (line 623) | def source_ranges(self) -> List[ipaddress.IPv4Network]: method target_tags (line 627) | def target_tags(self) -> set: method allowed (line 631) | def allowed(self) -> List[dict]: method is_enabled (line 634) | def is_enabled(self) -> bool: class _FirewallPolicy (line 638) | class _FirewallPolicy: method short_name (line 642) | def short_name(self): method __init__ (line 648) | def __init__(self, resource_data): method check_connectivity_ingress (line 672) | def check_connectivity_ingress( method check_connectivity_egress (line 723) | def check_connectivity_egress( class _VpcFirewall (line 767) | class _VpcFirewall: method __init__ (line 771) | def __init__(self, rules_list): method check_connectivity_ingress (line 795) | def check_connectivity_ingress( method check_connectivity_egress (line 863) | def check_connectivity_egress( method verify_ingress_rule_exists (line 928) | def verify_ingress_rule_exists(self, name: str): method verify_egress_rule_exists (line 932) | def verify_egress_rule_exists(self, name: str): method get_vpc_ingress_rules (line 936) | def get_vpc_ingress_rules(self, method get_vpc_egress_rules (line 965) | def get_vpc_egress_rules(self, class EffectiveFirewalls (line 995) | class EffectiveFirewalls: method __init__ (line 1003) | def __init__(self, resource_data): method check_connectivity_ingress (line 1011) | def check_connectivity_ingress( method check_connectivity_egress (line 1046) | def check_connectivity_egress( method get_vpc_ingress_rules (line 1081) | def get_vpc_ingress_rules( method get_vpc_egress_rules (line 1101) | def get_vpc_egress_rules( method verify_ingress_rule_exists (line 1121) | def verify_ingress_rule_exists(self, name: str): method verify_egress_rule_exists (line 1127) | def verify_egress_rule_exists(self, name: str): class VPCEffectiveFirewalls (line 1134) | class VPCEffectiveFirewalls(EffectiveFirewalls): method __init__ (line 1141) | def __init__(self, network, resource_data): function _get_effective_firewalls (line 1147) | def _get_effective_firewalls(network: Network): function get_network (line 1156) | def get_network(project_id: str, network_name: str, function get_subnetwork_from_url (line 1165) | def get_subnetwork_from_url(url: str) -> Subnetwork: function get_network_from_url (line 1175) | def get_network_from_url(url: str) -> Network: function get_networks (line 1187) | def get_networks(context: models.Context) -> List[Network]: function get_subnetwork (line 1199) | def get_subnetwork(project_id: str, region: str, function _batch_get_subnetworks (line 1216) | def _batch_get_subnetworks(project_id, subnetworks_urls: FrozenSet[str], function get_routes (line 1248) | def get_routes(project_id: str) -> List[Route]: function get_zones (line 1257) | def get_zones(project_id: str) -> List[ManagedZone]: function get_routers (line 1272) | def get_routers(project_id: str, region: str, network) -> List[Router]: function get_router (line 1283) | def get_router(project_id: str, region: str, network) -> Router: function get_router_by_name (line 1294) | def get_router_by_name(project_id: str, region: str, function nat_router_status (line 1308) | def nat_router_status(project_id: str, router_name: str, function get_nat_ip_info (line 1326) | def get_nat_ip_info(project_id: str, router_name: str, class VPCSubnetworkIAMPolicy (line 1343) | class VPCSubnetworkIAMPolicy(iam.BaseIAMPolicy): method _is_resource_permission (line 1345) | def _is_resource_permission(self, permission): function get_subnetwork_iam_policy (line 1350) | def get_subnetwork_iam_policy(context: models.Context, region: str, class Address (line 1365) | class Address(models.Resource): method __init__ (line 1369) | def __init__(self, project_id, resource_data): method full_path (line 1374) | def full_path(self) -> str: method short_path (line 1383) | def short_path(self) -> str: method name (line 1388) | def name(self) -> str: method self_link (line 1392) | def self_link(self) -> str: method subnetwork (line 1396) | def subnetwork(self) -> str: method status (line 1400) | def status(self) -> str: function get_addresses (line 1405) | def get_addresses(project_id: str) -> List[Address]: FILE: gcpdiag/queries/network_stub.py class NetworkApiStub (line 29) | class NetworkApiStub: method __init__ (line 34) | def __init__(self, mock_state): method aggregatedList (line 37) | def aggregatedList(self, project): method get (line 43) | def get(self, project, network=None, region=None, subnetwork=None): method get_network (line 53) | def get_network(self, project, network): method get_routers (line 56) | def get_routers(self, project, region, network): method get_router_by_name (line 59) | def get_router_by_name(self, project, region, router_name): method nat_router_status (line 62) | def nat_router_status(self, project, router_name, region): method get_nat_ip_info (line 66) | def get_nat_ip_info(self, project, router_name, region): method getIamPolicy (line 70) | def getIamPolicy(self, project, region, resource): method getEffectiveFirewalls (line 73) | def getEffectiveFirewalls(self, project, network): method list (line 78) | def list(self, project, region=None, filter=None, fields=None): method list_next (line 94) | def list_next(self, prev_request, prev_response): method execute (line 97) | def execute(self, num_retries=0): method getRouterStatus (line 115) | def getRouterStatus(self, project, router, region): method getNatIpInfo (line 120) | def getNatIpInfo(self, project, router, region): FILE: gcpdiag/queries/network_test.py class TestNetwork (line 37) | class TestNetwork: method test_get_network (line 40) | def test_get_network(self): method test_subnetworks (line 51) | def test_subnetworks(self): method test_cluster_subnetwork (line 63) | def test_cluster_subnetwork(self): method test_cluster_subnetwork_iam_policy (line 70) | def test_cluster_subnetwork_iam_policy(self): method test_get_routers (line 80) | def test_get_routers(self): method test_ingress_deny (line 98) | def test_ingress_deny(self): method test_ingress_deny_2 (line 114) | def test_ingress_deny_2(self): method test_ingress_deny_3 (line 126) | def test_ingress_deny_3(self): method test_ingress_allow_src_ip (line 141) | def test_ingress_allow_src_ip(self): method test_ingress_allow_src_ip_subnet (line 153) | def test_ingress_allow_src_ip_subnet(self): method test_ingress_allow_source_tags (line 165) | def test_ingress_allow_source_tags(self): method test_ingress_allow_target_tags (line 178) | def test_ingress_allow_target_tags(self): method test_ingress_allow_source_sa (line 191) | def test_ingress_allow_source_sa(self): method test_ingress_allow_target_sa (line 205) | def test_ingress_allow_target_sa(self): method test_ingress_parent_policy_allow (line 217) | def test_ingress_parent_policy_allow(self): method test_ingress_sub_policy_allow (line 229) | def test_ingress_sub_policy_allow(self): method test_ingress_sub_policy_allow_target_sa (line 241) | def test_ingress_sub_policy_allow_target_sa(self): method test_ingress_sub_policy_deny_wrong_target_sa (line 255) | def test_ingress_sub_policy_deny_wrong_target_sa(self): method test_get_ingress_rules (line 267) | def test_get_ingress_rules(self): method test_egress_deny (line 293) | def test_egress_deny(self): method test_egress_deny_2 (line 309) | def test_egress_deny_2(self): method test_egress_deny_3 (line 321) | def test_egress_deny_3(self): method test_egress_allow_src_ip (line 333) | def test_egress_allow_src_ip(self): method test_egress_allow_src_ip_subnet (line 345) | def test_egress_allow_src_ip_subnet(self): method test_egress_allow_source_tags (line 357) | def test_egress_allow_source_tags(self): method test_egress_allow_target_tags (line 370) | def test_egress_allow_target_tags(self): method test_egress_allow_source_sa (line 383) | def test_egress_allow_source_sa(self): method test_egress_parent_policy_allow (line 397) | def test_egress_parent_policy_allow(self): method test_egress_sub_policy_allow (line 409) | def test_egress_sub_policy_allow(self): method test_egress_sub_policy_allow_target_sa (line 421) | def test_egress_sub_policy_allow_target_sa(self): method test_egress_sub_policy_deny_wrong_target_sa (line 435) | def test_egress_sub_policy_deny_wrong_target_sa(self): method test_get_egress_rules (line 447) | def test_get_egress_rules(self): method test_get_addresses (line 465) | def test_get_addresses(self): method test_get_router_by_name (line 483) | def test_get_router_by_name(self): method test_bgp_peer_status (line 504) | def test_bgp_peer_status(self): method test_firewall_policy_sorting_same_ip (line 521) | def test_firewall_policy_sorting_same_ip(self): method test_firewall_policy_sorting (line 537) | def test_firewall_policy_sorting(self): FILE: gcpdiag/queries/networkmanagement.py function run_connectivity_test (line 32) | def run_connectivity_test(project_id: str, src_ip: str, dest_ip: str, FILE: gcpdiag/queries/networkmanagement_stub.py class NetworkManagementApiStub (line 28) | class NetworkManagementApiStub: method __init__ (line 34) | def __init__(self, mock_state='init'): method projects (line 37) | def projects(self): method locations (line 40) | def locations(self): method global_ (line 43) | def global_(self): method connectivityTests (line 46) | def connectivityTests(self): method operations (line 49) | def operations(self): method get (line 52) | def get(self, name): method create (line 61) | def create(self, *args, **kwargs): method delete (line 64) | def delete(self, name): method list (line 69) | def list(self, project, url): method execute (line 79) | def execute(self, *args): class OperationsStub (line 83) | class OperationsStub: method __init__ (line 89) | def __init__(self): method get (line 92) | def get(self, name): method execute (line 96) | def execute(self) -> dict: FILE: gcpdiag/queries/notebooks.py class HealthStateEnum (line 36) | class HealthStateEnum(enum.Enum): method __str__ (line 48) | def __str__(self): class StateEnum (line 52) | class StateEnum(enum.Enum): method __str__ (line 70) | def __str__(self): class Instance (line 74) | class Instance(models.Resource): method __init__ (line 82) | def __init__(self, project_id, resource_data): method full_path (line 87) | def full_path(self) -> str: method short_path (line 95) | def short_path(self) -> str: method metadata (line 103) | def metadata(self) -> dict: method name (line 107) | def name(self) -> str: class Runtime (line 112) | class Runtime(models.Resource): method __init__ (line 120) | def __init__(self, project_id, resource_data): method full_path (line 125) | def full_path(self) -> str: method short_path (line 133) | def short_path(self) -> str: method metadata (line 141) | def metadata(self) -> dict: method name (line 145) | def name(self) -> str: method software_config (line 150) | def software_config(self) -> dict: method idle_shutdown (line 154) | def idle_shutdown(self) -> bool: method is_upgradeable (line 158) | def is_upgradeable(self) -> bool: method version (line 162) | def version(self) -> str: method health_state (line 166) | def health_state(self) -> HealthStateEnum: class WorkbenchInstance (line 171) | class WorkbenchInstance(Instance): method __init__ (line 179) | def __init__(self, project_id, resource_data): method state (line 184) | def state(self) -> StateEnum: method gce_setup (line 188) | def gce_setup(self) -> dict: method gce_service_account_email (line 192) | def gce_service_account_email(self) -> str: method network (line 198) | def network(self) -> str: method subnet (line 204) | def subnet(self) -> str: method disable_public_ip (line 210) | def disable_public_ip(self) -> bool: method metadata (line 214) | def metadata(self) -> dict: method environment_version (line 219) | def environment_version(self) -> int: method disable_mixer (line 223) | def disable_mixer(self) -> bool: method serial_port_logging_enabled (line 227) | def serial_port_logging_enabled(self) -> bool: method report_event_health (line 231) | def report_event_health(self) -> bool: method post_startup_script (line 235) | def post_startup_script(self) -> str: method startup_script (line 239) | def startup_script(self) -> str: method startup_script_url (line 243) | def startup_script_url(self) -> str: method health_state (line 247) | def health_state(self) -> HealthStateEnum: method health_info (line 252) | def health_info(self) -> dict: method is_jupyterlab_status_healthy (line 256) | def is_jupyterlab_status_healthy(self) -> bool: method is_jupyterlab_api_status_healthy (line 260) | def is_jupyterlab_api_status_healthy(self) -> bool: method is_notebooks_api_dns_healthy (line 264) | def is_notebooks_api_dns_healthy(self) -> bool: method is_proxy_registration_dns_healthy (line 268) | def is_proxy_registration_dns_healthy(self) -> bool: method is_system_healthy (line 272) | def is_system_healthy(self) -> bool: method is_docker_status_healthy (line 276) | def is_docker_status_healthy(self) -> bool: method is_docker_proxy_agent_status_healthy (line 280) | def is_docker_proxy_agent_status_healthy(self) -> bool: function get_instances (line 285) | def get_instances(context: models.Context) -> Mapping[str, Instance]: function _get_instance_health (line 325) | def _get_instance_health(context: models.Context, name: str) -> dict: function get_instance_health_info (line 335) | def get_instance_health_info(context: models.Context, name: str) -> dict: function get_instance_health_state (line 342) | def get_instance_health_state(context: models.Context, function instance_is_upgradeable (line 360) | def instance_is_upgradeable( function get_runtimes (line 390) | def get_runtimes(context: models.Context) -> Mapping[str, Runtime]: function get_workbench_instance (line 429) | def get_workbench_instance(project_id: str, zone: str, function workbench_instance_check_upgradability (line 451) | def workbench_instance_check_upgradability( FILE: gcpdiag/queries/notebooks_stub.py class NotebooksApiStub (line 36) | class NotebooksApiStub: method __init__ (line 39) | def __init__(self, mock_state='init'): method projects (line 45) | def projects(self): method locations (line 48) | def locations(self): method instances (line 51) | def instances(self): method runtimes (line 55) | def runtimes(self): method list (line 59) | def list(self, parent): method get (line 69) | def get(self, name): method getInstanceHealth (line 84) | def getInstanceHealth(self, name): method isUpgradeable (line 92) | def isUpgradeable(self, notebookInstance): method execute (line 102) | def execute(self, num_retries=0): method checkUpgradability (line 112) | def checkUpgradability(self, notebookInstance): FILE: gcpdiag/queries/notebooks_test.py class TestNotebooks (line 44) | class TestNotebooks: method test_get_instances (line 47) | def test_get_instances(self): method test_get_runtimes (line 52) | def test_get_runtimes(self): method test_get_instance_health (line 57) | def test_get_instance_health(self): method test_instance_is_upgradeable (line 63) | def test_instance_is_upgradeable(self): method test_get_instance (line 69) | def test_get_instance(self): method test_instance_check_upgradability (line 76) | def test_instance_check_upgradability(self): FILE: gcpdiag/queries/orgpolicy.py class PolicyConstraint (line 28) | class PolicyConstraint: method __init__ (line 30) | def __init__(self, name, resource_data): method __str__ (line 34) | def __str__(self): class BooleanPolicyConstraint (line 40) | class BooleanPolicyConstraint(PolicyConstraint): method is_enforced (line 42) | def is_enforced(self) -> bool: class ListPolicyConstraint (line 46) | class ListPolicyConstraint(PolicyConstraint): method allowed_values (line 48) | def allowed_values(self) -> List[str]: method denied_values (line 51) | def denied_values(self) -> List[str]: class RestoreDefaultPolicyConstraint (line 55) | class RestoreDefaultPolicyConstraint(PolicyConstraint): method is_default_restored (line 57) | def is_default_restored(self) -> bool: function _get_effective_org_policy_all_constraints (line 63) | def _get_effective_org_policy_all_constraints( function get_effective_org_policy (line 78) | def get_effective_org_policy(project_id: str, constraint: str): function get_all_project_org_policies (line 110) | def get_all_project_org_policies(project_id: str): FILE: gcpdiag/queries/orgpolicy_test.py class Test (line 25) | class Test(unittest.TestCase): method test_get_effective_org_policy (line 28) | def test_get_effective_org_policy(self): method test_get_all_project_org_policies (line 37) | def test_get_all_project_org_policies(self): FILE: gcpdiag/queries/osconfig.py class Inventory (line 28) | class Inventory(models.Resource): method __init__ (line 33) | def __init__(self, project_id, resource_data): method full_path (line 39) | def full_path(self) -> str: method short_path (line 44) | def short_path(self) -> str: method instance_id (line 53) | def instance_id(self) -> str: method os_shortname (line 58) | def os_shortname(self) -> str: method os_version (line 64) | def os_version(self) -> str: method installed_packages (line 71) | def installed_packages(self) -> Mapping[str, str]: function list_inventories (line 99) | def list_inventories( function get_inventory (line 137) | def get_inventory(context: models.Context, location: str, FILE: gcpdiag/queries/osconfig_stub.py class OSConfigStub (line 32) | class OSConfigStub: method __init__ (line 35) | def __init__(self, mock_state='init'): method projects (line 38) | def projects(self): method locations (line 41) | def locations(self): method instances (line 44) | def instances(self): method inventories (line 47) | def inventories(self): method list_next (line 51) | def list_next(self, previous_request, previous_response): method list (line 54) | def list(self, parent, **kwargs): method get (line 61) | def get(self, name, **kwargs): FILE: gcpdiag/queries/osconfig_test.py class TestOSConfig (line 34) | class TestOSConfig: method test_get_inventory (line 37) | def test_get_inventory(self): method test_get_inventory_of_non_existent_instance (line 49) | def test_get_inventory_of_non_existent_instance(self): method test_list_inventories (line 58) | def test_list_inventories(self): FILE: gcpdiag/queries/pubsub.py class Topic (line 31) | class Topic(models.Resource): method __init__ (line 35) | def __init__(self, project_id, resource_data): method name (line 41) | def name(self) -> str: method full_path (line 49) | def full_path(self) -> str: method short_path (line 53) | def short_path(self) -> str: method kms_key_name (line 58) | def kms_key_name(self) -> str: function get_topics (line 63) | def get_topics(context: models.Context) -> Mapping[str, Topic]: class TopicIAMPolicy (line 97) | class TopicIAMPolicy(iam.BaseIAMPolicy): method _is_resource_permission (line 99) | def _is_resource_permission(self, permission): function get_topic_iam_policy (line 104) | def get_topic_iam_policy(context: models.Context, name: str) -> TopicIAM... class Subscription (line 114) | class Subscription(models.Resource): method __init__ (line 118) | def __init__(self, project_id, resource_data): method name (line 124) | def name(self) -> str: method full_path (line 132) | def full_path(self) -> str: method short_path (line 136) | def short_path(self) -> str: method topic (line 141) | def topic(self) -> Union[Topic, str]: method push_config (line 163) | def push_config(self) -> dict: method push_oidc_service_account_email (line 167) | def push_oidc_service_account_email(self) -> str: method is_detached (line 171) | def is_detached(self) -> bool: method is_big_query_subscription (line 177) | def is_big_query_subscription(self) -> bool: method is_gcs_subscription (line 183) | def is_gcs_subscription(self) -> bool: method is_push_subscription (line 189) | def is_push_subscription(self) -> bool: method is_active (line 196) | def is_active(self) -> bool: method has_dead_letter_topic (line 200) | def has_dead_letter_topic(self) -> bool: method dead_letter_topic (line 206) | def dead_letter_topic(self) -> str: method gcs_subscription_bucket (line 213) | def gcs_subscription_bucket(self) -> str: function get_subscriptions (line 221) | def get_subscriptions(context: models.Context) -> Mapping[str, Subscript... function get_subscription (line 257) | def get_subscription(project_id: str, class SubscriptionIAMPolicy (line 272) | class SubscriptionIAMPolicy(iam.BaseIAMPolicy): method _is_resource_permission (line 274) | def _is_resource_permission(self, permission): function get_subscription_iam_policy (line 279) | def get_subscription_iam_policy(context: models.Context, FILE: gcpdiag/queries/pubsub_stub.py class PubsubApiStub (line 32) | class PubsubApiStub(apis_stub.ApiStub): method __init__ (line 35) | def __init__(self, mock_state='init', project_id=None): method projects (line 39) | def projects(self): method topics (line 42) | def topics(self): method subscriptions (line 46) | def subscriptions(self): method get (line 50) | def get(self, subscription): method list (line 55) | def list(self, project): method getIamPolicy (line 65) | def getIamPolicy(self, resource): method execute (line 73) | def execute(self, num_retries: int = 0): FILE: gcpdiag/queries/pubsub_test.py class TestPubsub (line 31) | class TestPubsub: method test_get_topics (line 34) | def test_get_topics(self): method test_get_subscriptions (line 39) | def test_get_subscriptions(self): method test_get_subscription (line 44) | def test_get_subscription(self): method test_get_topic_iam_policy (line 50) | def test_get_topic_iam_policy(self): method test_get_subscription_iam_policy (line 55) | def test_get_subscription_iam_policy(self): FILE: gcpdiag/queries/recommender_stub.py class RecommenderApiStub (line 25) | class RecommenderApiStub: method billingAccounts (line 28) | def billingAccounts(self): method projects (line 31) | def projects(self): method locations (line 34) | def locations(self): method insightTypes (line 37) | def insightTypes(self): method insights (line 40) | def insights(self): method list (line 43) | def list(self, parent): method list_next (line 54) | def list_next(self, previous_request, previous_response): FILE: gcpdiag/queries/vertex.py class FeaturestoreStateEnum (line 82) | class FeaturestoreStateEnum(enum.Enum): method __str__ (line 92) | def __str__(self): class Featurestore (line 96) | class Featurestore(models.Resource): method __init__ (line 104) | def __init__(self, project_id, resource_data): method full_path (line 109) | def full_path(self) -> str: method short_path (line 117) | def short_path(self) -> str: method name (line 125) | def name(self) -> str: method state (line 130) | def state(self) -> str: function get_featurestores (line 136) | def get_featurestores(context: models.Context) -> Dict[str, Featurestore]: FILE: gcpdiag/queries/vertex_stub.py class VertexApiStub (line 32) | class VertexApiStub: method __init__ (line 35) | def __init__(self, mock_state='init'): method projects (line 38) | def projects(self): method locations (line 41) | def locations(self): method featurestores (line 44) | def featurestores(self): method list (line 48) | def list(self, parent): FILE: gcpdiag/queries/vertex_test.py class TestVertex (line 33) | class TestVertex: method test_get_featurestores (line 36) | def test_get_featurestores(self): FILE: gcpdiag/queries/vpn.py class Vpn (line 26) | class Vpn(models.Resource): method __init__ (line 33) | def __init__(self, project_id, resource_data): method name (line 38) | def name(self) -> str: method under_maintenance (line 42) | def under_maintenance(self) -> bool: method peer_ip (line 46) | def peer_ip(self) -> str: method status (line 50) | def status(self) -> str: method router (line 54) | def router(self) -> str: method id (line 58) | def id(self) -> str: method local_traffic_selector (line 62) | def local_traffic_selector(self) -> List[str]: method remote_traffic_selector (line 66) | def remote_traffic_selector(self) -> List[str]: method self_link (line 70) | def self_link(self) -> str: method full_path (line 74) | def full_path(self) -> str: method short_path (line 83) | def short_path(self) -> str: function get_vpn (line 89) | def get_vpn(project_id: str, vpn_name: str, region: str) -> Vpn: FILE: gcpdiag/queries/vpn_stub.py class VpnApiStub (line 10) | class VpnApiStub: method vpnTunnels (line 12) | def vpnTunnels(self): method get (line 15) | def get(self, project, region, vpnTunnel): class VpnTunnelApiStub (line 19) | class VpnTunnelApiStub(apis_stub.ApiStub): method __init__ (line 22) | def __init__(self, mock_state): method get (line 25) | def get(self, project, region, vpnTunnel): FILE: gcpdiag/queries/vpn_test.py function get_api_stub (line 18) | def get_api_stub(service_name, version, project_id=None): class Test (line 25) | class Test: method test_get_vpn (line 27) | def test_get_vpn(self): method test_short_path (line 41) | def test_short_path(self): method test_get_vpn_failure (line 45) | def test_get_vpn_failure(self): FILE: gcpdiag/queries/web.py function fetch_and_extract_table (line 22) | def fetch_and_extract_table(page_url: str, function get (line 54) | def get( FILE: gcpdiag/queries/web_stub.py function _derive_basename_from_url (line 24) | def _derive_basename_from_url(url): function get (line 31) | def get(url, params=None, timeout=None, *, data=None, headers=None): FILE: gcpdiag/queries/web_test.py class TestFetchAndExtractHtmlContent (line 25) | class TestFetchAndExtractHtmlContent(unittest.TestCase): method test_fetch_and_extract_table (line 28) | def test_fetch_and_extract_table(self, mock_get): method test_fetch_and_extract_table_with_no_tag (line 47) | def test_fetch_and_extract_table_with_no_tag(self, mock_get): method test_fetch_and_extract_table_with_no_tag_id_and_class_name (line 66) | def test_fetch_and_extract_table_with_no_tag_id_and_class_name( method test_fetch_and_extract_table_with_class_name (line 88) | def test_fetch_and_extract_table_with_class_name(self, mock_get): method test_fetch_and_extract_table_with_tag_id (line 113) | def test_fetch_and_extract_table_with_tag_id(self, mock_get): FILE: gcpdiag/rule_classes.py function get_rule_classes (line 7) | def get_rule_classes() -> Dict: FILE: gcpdiag/runbook/__init__.py class MetaStep (line 53) | class MetaStep(type): method id (line 57) | def id(cls): method __new__ (line 61) | def __new__(mcs, name, bases, namespace): class Step (line 71) | class Step(metaclass=MetaStep): method __init__ (line 79) | def __init__(self, method id (line 107) | def id(self): method execution_id (line 112) | def execution_id(self): method __str__ (line 115) | def __str__(self): method execute_hook (line 119) | def execute_hook(self, operator: op.Operator): method execute (line 136) | def execute(self): method set_observations (line 140) | def set_observations(self, prompt: models.Messages = None): method load_observations (line 145) | def load_observations(self): method add_child (line 164) | def add_child(self, child): method find_step (line 168) | def find_step(self, step: 'Step'): method __hash__ (line 178) | def __hash__(self) -> int: method label (line 182) | def label(self): method name (line 189) | def name(self): method long_desc (line 261) | def long_desc(self): method short_desc (line 274) | def short_desc(self): method doc_url (line 278) | def doc_url(self): class StartStep (line 283) | class StartStep(Step): method __init__ (line 286) | def __init__(self): method execute (line 289) | def execute(self): class CompositeStep (line 294) | class CompositeStep(Step): method __init__ (line 297) | def __init__(self, **parameters): class EndStep (line 301) | class EndStep(Step): method __init__ (line 304) | def __init__(self): method execute (line 307) | def execute(self): class Gateway (line 316) | class Gateway(Step): method __init__ (line 321) | def __init__(self, **parameters): class RunbookRule (line 328) | class RunbookRule(type): method __new__ (line 332) | def __new__(mcs, name, bases, namespace): method validate_parameter_definitions (line 341) | def validate_parameter_definitions(class_, namespace): class DiagnosticTree (line 368) | class DiagnosticTree(metaclass=RunbookRule): method __init__ (line 377) | def __init__(self, uuid=None): method run_id (line 387) | def run_id(self): method add_step (line 390) | def add_step(self, parent: Step, child: Step): method add_start (line 406) | def add_start(self, step: StartStep): method add_end (line 412) | def add_end(self, step: EndStep): method find_step (line 420) | def find_step(self, step_id): method hook_build_tree (line 424) | def hook_build_tree(self, operator: op.Operator): method legacy_parameter_handler (line 450) | def legacy_parameter_handler(self, parameters): method build_tree (line 493) | def build_tree(self): method __hash__ (line 497) | def __hash__(self): method __str__ (line 500) | def __str__(self): method long_desc (line 504) | def long_desc(self): method short_desc (line 516) | def short_desc(self): method doc_url (line 520) | def doc_url(self) -> str: class Bundle (line 525) | class Bundle: method __init__ (line 530) | def __init__(self) -> None: class DiagnosticEngine (line 535) | class DiagnosticEngine: method __init__ (line 547) | def __init__(self, method add_task (line 557) | def add_task(self, new_task: Tuple): method get_similar_trees (line 561) | def get_similar_trees(self, name: str) -> List[str]: method load_tree (line 565) | def load_tree(self, name: str) -> DiagnosticTree: method load_steps (line 611) | def load_steps(self, parameter: Mapping[str, Mapping], method _get_billing_project (line 629) | def _get_billing_project(self, parameter: models.Parameter): method _check_required_paramaters (line 642) | def _check_required_paramaters(self, parameter_def: Dict, method _set_default_parameters (line 664) | def _set_default_parameters(self, parameter_def: Dict): method _check_deprecated_paramaters (line 675) | def _check_deprecated_paramaters(self, parameter_def: Dict, method process_parameters (line 694) | def process_parameters(self, runbook: DiagnosticTree, method parse_parameters (line 702) | def parse_parameters(self, parameter_def: Dict, method run (line 786) | def run(self): method run_diagnostic_tree (line 805) | def run_diagnostic_tree(self, tree: DiagnosticTree, method find_path_dfs (line 843) | def find_path_dfs(self, step: Step, operator: op.Operator, method run_step (line 889) | def run_step(self, step: Step, operator: op.Operator): method _run (line 1000) | def _run(self, step: Step, operator: op.Operator): method run_bundles (line 1015) | def run_bundles(self, bundles: List[Bundle]) -> None: class ExpandTreeFromAst (line 1059) | class ExpandTreeFromAst(ast.NodeVisitor): method __init__ (line 1066) | def __init__(self, tree=None): method visit_Assign (line 1074) | def visit_Assign(self, node): method visit_Call (line 1098) | def visit_Call(self, node): method visit_ClassDef (line 1165) | def visit_ClassDef(self, node): method visit_ast_nodes (line 1171) | def visit_ast_nodes(self, func): function find_class_globally (line 1178) | def find_class_globally(class_name): FILE: gcpdiag/runbook/bigquery/failed_query.py class FailedQuery (line 31) | class FailedQuery(runbook.DiagnosticTree): method build_tree (line 67) | def build_tree(self): class BigQueryFailedQueryStart (line 78) | class BigQueryFailedQueryStart(runbook.StartStep): method execute (line 87) | def execute(self): class BigQueryJobExists (line 186) | class BigQueryJobExists(runbook.Gateway): method execute (line 196) | def execute(self): class ConfirmBQJobIsDone (line 263) | class ConfirmBQJobIsDone(runbook.Gateway): method execute (line 273) | def execute(self): class CheckBQJobHasFailed (line 297) | class CheckBQJobHasFailed(runbook.Gateway): method execute (line 307) | def execute(self): class BigQueryErrorIdentification (line 334) | class BigQueryErrorIdentification(runbook.Step): method execute (line 345) | def execute(self): class BigQueryEnd (line 404) | class BigQueryEnd(runbook.EndStep): method execute (line 410) | def execute(self): FILE: gcpdiag/runbook/bigquery/failed_query_test.py class Test (line 26) | class Test(snapshot_test_base.RulesSnapshotTestBase): class MockMessage (line 82) | class MockMessage: method get_msg (line 85) | def get_msg(self, key, **kwargs): class FailedQueryStepTestBase (line 90) | class FailedQueryStepTestBase(unittest.TestCase): method setUp (line 93) | def setUp(self): class BigQueryFailedQueryStartTest (line 129) | class BigQueryFailedQueryStartTest(FailedQueryStepTestBase): method test_valid_parameters (line 132) | def test_valid_parameters(self): method test_get_project_is_none (line 142) | def test_get_project_is_none(self, mock_get_project): method test_get_project_api_error_not_found (line 155) | def test_get_project_api_error_not_found(self, mock_get_project): method test_get_project_api_error_permission_denied (line 169) | def test_get_project_api_error_permission_denied(self, mock_get_project): method test_get_project_api_error_rm_permission_denied (line 183) | def test_get_project_api_error_rm_permission_denied(self, mock_get_pro... method test_invalid_project_id (line 195) | def test_invalid_project_id(self): method test_invalid_region (line 207) | def test_invalid_region(self): method test_invalid_job_id (line 219) | def test_invalid_job_id(self): method test_bq_api_not_enabled (line 231) | def test_bq_api_not_enabled(self): method test_get_user_email_attribute_error (line 243) | def test_get_user_email_attribute_error(self): method test_is_enabled_api_error (line 253) | def test_is_enabled_api_error(self): method test_get_user_email_runtime_error (line 262) | def test_get_user_email_runtime_error(self): class BigQueryJobExistsTest (line 277) | class BigQueryJobExistsTest(FailedQueryStepTestBase): method test_job_exists (line 280) | def test_job_exists(self): method test_get_job_not_found_gcp_api_error (line 290) | def test_get_job_not_found_gcp_api_error(self): method test_job_not_found (line 298) | def test_job_not_found(self): method test_get_project_error (line 306) | def test_get_project_error(self): method test_get_project_gcp_api_error_pass (line 315) | def test_get_project_gcp_api_error_pass(self, mock_get_project): method test_get_job_raises_not_found_gcp_api_error (line 325) | def test_get_job_raises_not_found_gcp_api_error(self, mock_get_job): method test_get_job_access_denied_runtime_error (line 335) | def test_get_job_access_denied_runtime_error(self, mock_get_job): method test_get_job_access_denied_attribute_error (line 347) | def test_get_job_access_denied_attribute_error(self, mock_get_job): class ConfirmBQJobIsDoneTest (line 359) | class ConfirmBQJobIsDoneTest(FailedQueryStepTestBase): method test_job_is_done (line 362) | def test_job_is_done(self): method test_job_is_not_done (line 370) | def test_job_is_not_done(self): method test_job_is_none (line 378) | def test_job_is_none(self): class CheckBQJobHasFailedTest (line 387) | class CheckBQJobHasFailedTest(FailedQueryStepTestBase): method test_job_has_failed (line 390) | def test_job_has_failed(self): method test_job_has_not_failed (line 398) | def test_job_has_not_failed(self): method test_job_is_none (line 406) | def test_job_is_none(self): method test_known_error_in_job_errors (line 414) | def test_known_error_in_job_errors(self): method test_no_error_message_in_job (line 422) | def test_no_error_message_in_job(self): class BigQueryErrorIdentificationTest (line 431) | class BigQueryErrorIdentificationTest(FailedQueryStepTestBase): method test_known_error (line 434) | def test_known_error(self): method test_unknown_error (line 442) | def test_unknown_error(self): method test_job_is_none (line 450) | def test_job_is_none(self): method test_job_error_result_is_none (line 458) | def test_job_error_result_is_none(self): method test_duplicate_error_messages (line 466) | def test_duplicate_error_messages(self): class BigQueryEndTest (line 475) | class BigQueryEndTest(FailedQueryStepTestBase): method test_end_step (line 478) | def test_end_step(self): method test_no_error_message_found (line 486) | def test_no_error_message_found(self): class FailedQueryTest (line 495) | class FailedQueryTest(unittest.TestCase): method test_build_tree (line 497) | def test_build_tree(self): FILE: gcpdiag/runbook/bigquery/generalized_steps.py class RunPermissionChecks (line 33) | class RunPermissionChecks(runbook.Gateway): method __init__ (line 46) | def __init__(self, runbook_id='Failed Query Runbook'): method execute (line 51) | def execute(self): method _get_principal (line 205) | def _get_principal(self): method _add_info (line 216) | def _add_info( FILE: gcpdiag/runbook/bigquery/generalized_steps_test.py class MockMessage (line 28) | class MockMessage: method get_msg (line 31) | def get_msg(self, key, **kwargs): class RunPermissionChecksTest (line 36) | class RunPermissionChecksTest(unittest.TestCase): method setUp (line 39) | def setUp(self): method test_no_runbook_id_raises_value_error (line 98) | def test_no_runbook_id_raises_value_error(self): method test_skip_permission_check_true (line 105) | def test_skip_permission_check_true(self): method test_get_user_email_fails (line 117) | def test_get_user_email_fails(self): method test_get_project_policy_is_none (line 129) | def test_get_project_policy_is_none(self): method test_missing_mandatory_permissions (line 141) | def test_missing_mandatory_permissions(self): method test_missing_optional_project_permissions (line 149) | def test_missing_optional_project_permissions(self): method test_runbook_id_not_failed_query_missing_org_perm (line 168) | def test_runbook_id_not_failed_query_missing_org_perm(self): method test_get_org_fails (line 183) | def test_get_org_fails(self): method test_get_org_policy_fails (line 194) | def test_get_org_policy_fails(self): method test_service_account_principal_gcp_sa (line 217) | def test_service_account_principal_gcp_sa(self): method test_service_account_principal_default (line 230) | def test_service_account_principal_default(self): FILE: gcpdiag/runbook/cloudrun/service_deployment.py class ServiceDeployment (line 26) | class ServiceDeployment(runbook.DiagnosticTree): method legacy_parameter_handler (line 70) | def legacy_parameter_handler(self, parameters): method build_tree (line 75) | def build_tree(self): class ServiceDeploymentStart (line 82) | class ServiceDeploymentStart(runbook.StartStep): method execute (line 88) | def execute(self): class ServiceDeploymentCodeStep (line 102) | class ServiceDeploymentCodeStep(runbook.CompositeStep): method execute (line 105) | def execute(self): class ContainerFailedToStartStep (line 112) | class ContainerFailedToStartStep(runbook.Step): method execute (line 124) | def execute(self): class ImageWasNotFoundStep (line 136) | class ImageWasNotFoundStep(runbook.Step): method execute (line 147) | def execute(self): class NoPermissionForImageStep (line 162) | class NoPermissionForImageStep(runbook.Step): method execute (line 174) | def execute(self): FILE: gcpdiag/runbook/cloudrun/service_deployment_test.py class TestInvalidContainer (line 27) | class TestInvalidContainer(snapshot_test_base.RulesSnapshotTestBase): class MockMessage (line 51) | class MockMessage: method get_msg (line 54) | def get_msg(self, key, **kwargs): class ServiceDeploymentTest (line 59) | class ServiceDeploymentTest(unittest.TestCase): method test_legacy_parameter_handler (line 61) | def test_legacy_parameter_handler(self): method test_build_tree (line 67) | def test_build_tree(self): class StepTestBase (line 76) | class StepTestBase(unittest.TestCase): method setUp (line 79) | def setUp(self): class ServiceDeploymentStartTest (line 101) | class ServiceDeploymentStartTest(StepTestBase): method test_execute_success (line 103) | def test_execute_success(self): method test_execute_service_not_found (line 111) | def test_execute_service_not_found(self): class ServiceDeploymentCodeStepTest (line 120) | class ServiceDeploymentCodeStepTest(StepTestBase): method test_execute (line 122) | def test_execute(self): class ContainerFailedToStartStepTest (line 136) | class ContainerFailedToStartStepTest(StepTestBase): method test_container_failed_to_start (line 138) | def test_container_failed_to_start(self): method test_container_started (line 146) | def test_container_started(self): class ImageWasNotFoundStepTest (line 155) | class ImageWasNotFoundStepTest(StepTestBase): method test_image_not_found (line 157) | def test_image_not_found(self): method test_image_found (line 165) | def test_image_found(self): class NoPermissionForImageStepTest (line 174) | class NoPermissionForImageStepTest(StepTestBase): method test_no_permission (line 176) | def test_no_permission(self): method test_has_permission (line 184) | def test_has_permission(self): FILE: gcpdiag/runbook/command.py class ParseMappingArg (line 34) | class ParseMappingArg(argparse.Action): method __call__ (line 37) | def __call__(self, parser, namespace, values, option_string): class ParseBundleSpec (line 56) | class ParseBundleSpec(argparse.Action): method __call__ (line 59) | def __call__(self, parser, namespace, values, option_string): function expand_and_validate_path (line 72) | def expand_and_validate_path(arg) -> str: function validate_args (line 93) | def validate_args(args): function _init_runbook_args_parser (line 100) | def _init_runbook_args_parser(): function _load_runbook_rules (line 219) | def _load_runbook_rules(package: str): function _load_bundles_spec (line 236) | def _load_bundles_spec(file_path): function _initialize_output (line 275) | def _initialize_output(interface): function _init_config (line 287) | def _init_config(args): function setup_logging (line 294) | def setup_logging(logging_handler): function run_and_get_report (line 309) | def run_and_get_report(argv=None, credentials: str = None) -> dict: function run (line 373) | def run(argv) -> None: FILE: gcpdiag/runbook/command_test.py class Test (line 48) | class Test(unittest.TestCase): method test_init_args_parser (line 52) | def test_init_args_parser(self): method test_provided_init_args_parser (line 71) | def test_provided_init_args_parser(self): method test_load_repository_rules (line 106) | def test_load_repository_rules(self): method test_no_file_path_provided (line 114) | def test_no_file_path_provided(self, mock_print): method test_file_does_not_exist (line 124) | def test_file_does_not_exist(self, mock_print, mock_exists): method test_valid_yaml_parsing (line 139) | def test_valid_yaml_parsing(self, mock_file, mock_exists): method test_run_and_get_report (line 149) | def test_run_and_get_report(self, mock_get_user_email): method test_run_and_get_report_invalid_runbook (line 158) | def test_run_and_get_report_invalid_runbook(self): method test_parse_mapping_arg_with_braces (line 168) | def test_parse_mapping_arg_with_braces(self): method test_parse_mapping_arg_value_error (line 178) | def test_parse_mapping_arg_value_error(self): method test_expand_path_cloud_shell_outside_home (line 191) | def test_expand_path_cloud_shell_outside_home(self, mock_getenv, method test_validate_args_missing_inputs (line 202) | def test_validate_args_missing_inputs(self, mock_print): method test_load_runbook_rules_import_error (line 214) | def test_load_runbook_rules_import_error(self, mock_walk, mock_import): method test_load_bundles_spec_yaml_error (line 228) | def test_load_bundles_spec_yaml_error(self, unused_mock_file, method test_expand_path_cloud_shell_valid (line 237) | def test_expand_path_cloud_shell_valid(self, unused_mock_getenv, method test_initialize_output_api (line 246) | def test_initialize_output_api(self): method test_initialize_output_base (line 251) | def test_initialize_output_base(self): method test_run_and_get_report_bundle_spec (line 258) | def test_run_and_get_report_bundle_spec(self, mock_init_output, method test_run_logs_exceptions (line 284) | def test_run_logs_exceptions(self, mock_log, mock_run_report): method test_run_and_get_report_full_flow (line 297) | def test_run_and_get_report_full_flow(self, mock_kube, mock_hook, mock... FILE: gcpdiag/runbook/constants.py class StepType (line 122) | class StepType(Enum): method to_list (line 133) | def to_list(cls): FILE: gcpdiag/runbook/crm/generalized_steps.py class OrgPolicyCheck (line 22) | class OrgPolicyCheck(runbook.Step): method execute (line 32) | def execute(self): FILE: gcpdiag/runbook/crm/generalized_steps_test.py class MockMessage (line 28) | class MockMessage: method get_msg (line 31) | def get_msg(self, key, **kwargs): class GeneralizedStepsTestBase (line 36) | class GeneralizedStepsTestBase(unittest.TestCase): method setUp (line 39) | def setUp(self): class OrgPolicyCheckTest (line 64) | class OrgPolicyCheckTest(GeneralizedStepsTestBase): method test_org_policy_enforced_and_expected_enforced (line 67) | def test_org_policy_enforced_and_expected_enforced(self): method test_org_policy_not_enforced_and_expected_enforced (line 78) | def test_org_policy_not_enforced_and_expected_enforced(self): method test_org_policy_not_enforced_and_expected_not_enforced (line 89) | def test_org_policy_not_enforced_and_expected_not_enforced(self): method test_org_policy_enforced_and_expected_not_enforced (line 100) | def test_org_policy_enforced_and_expected_not_enforced(self): method test_org_policy_enforced_with_project_parameter (line 111) | def test_org_policy_enforced_with_project_parameter(self): FILE: gcpdiag/runbook/dataflow/failed_streaming_pipeline.py class FailedStreamingPipeline (line 25) | class FailedStreamingPipeline(runbook.DiagnosticTree): method legacy_parameter_handler (line 60) | def legacy_parameter_handler(self, parameters): method build_tree (line 64) | def build_tree(self): class FailedStreamingPipelineStart (line 84) | class FailedStreamingPipelineStart(runbook.StartStep): method execute (line 95) | def execute(self): class JobIsStreaming (line 124) | class JobIsStreaming(runbook.Step): method execute (line 127) | def execute(self): class JobState (line 145) | class JobState(runbook.Step): method execute (line 153) | def execute(self): class JobGraphIsConstructed (line 206) | class JobGraphIsConstructed(runbook.Gateway): method execute (line 216) | def execute(self): class JobLogsVisible (line 254) | class JobLogsVisible(runbook.Step): method execute (line 264) | def execute(self): class FailedStreamingPipelineEnd (line 289) | class FailedStreamingPipelineEnd(runbook.EndStep): method execute (line 295) | def execute(self): FILE: gcpdiag/runbook/dataflow/failed_streaming_pipeline_test.py class Test (line 33) | class Test(snapshot_test_base.RulesSnapshotTestBase): class MockMessage (line 45) | class MockMessage: method get_msg (line 48) | def get_msg(self, key, **kwargs): class FailedStreamingPipelineTest (line 53) | class FailedStreamingPipelineTest(unittest.TestCase): method test_legacy_parameter_handler (line 55) | def test_legacy_parameter_handler(self): class FailedStreamingPipelineBuildTreeTest (line 68) | class FailedStreamingPipelineBuildTreeTest(unittest.TestCase): method test_build_tree (line 80) | def test_build_tree(self, mock_op_get, mock_add_end, mock_add_start, class FailedStreamingPipelineStepTestBase (line 110) | class FailedStreamingPipelineStepTestBase(unittest.TestCase): method setUp (line 113) | def setUp(self): class FailedStreamingPipelineStartTest (line 144) | class FailedStreamingPipelineStartTest(FailedStreamingPipelineStepTestBa... method test_start_step_ok (line 148) | def test_start_step_ok(self, mock_get_job): method test_start_step_api_disabled (line 158) | def test_start_step_api_disabled(self, mock_is_enabled): method test_start_step_job_not_found (line 168) | def test_start_step_job_not_found(self, mock_get_job): class JobIsStreamingTest (line 179) | class JobIsStreamingTest(FailedStreamingPipelineStepTestBase): method test_job_is_streaming (line 183) | def test_job_is_streaming(self, mock_get_job): method test_job_is_not_streaming (line 195) | def test_job_is_not_streaming(self, mock_get_job): class JobStateTest (line 207) | class JobStateTest(FailedStreamingPipelineStepTestBase, parameterized.Te... method test_job_state_failed_no_error_logs (line 212) | def test_job_state_failed_no_error_logs(self, mock_get_job, mock_logs_... method test_job_state_failed_with_error_logs (line 226) | def test_job_state_failed_with_error_logs(self, mock_get_job, method test_job_state_stopped (line 243) | def test_job_state_stopped(self, mock_get_job): method test_job_state_ok (line 254) | def test_job_state_ok(self, job_state, mock_get_job): class JobGraphIsConstructedTest (line 265) | class JobGraphIsConstructedTest(FailedStreamingPipelineStepTestBase): method setUp (line 268) | def setUp(self): method test_graph_construction_error_yes (line 276) | def test_graph_construction_error_yes(self, mock_get_job): method test_graph_construction_error_no (line 294) | def test_graph_construction_error_no(self, mock_get_job): method test_graph_construction_error_python_sdk (line 312) | def test_graph_construction_error_python_sdk(self, mock_get_job): method test_graph_construction_error_go_sdk (line 331) | def test_graph_construction_error_go_sdk(self, mock_get_job): class JobLogsVisibleTest (line 350) | class JobLogsVisibleTest(FailedStreamingPipelineStepTestBase): method test_logs_not_excluded (line 354) | def test_logs_not_excluded(self, mock_logs_excluded): method test_logs_api_disabled (line 364) | def test_logs_api_disabled(self, mock_logs_excluded): method test_logs_excluded_is_none_on_second_call (line 377) | def test_logs_excluded_is_none_on_second_call(self, mock_logs_excluded): method test_logs_excluded (line 387) | def test_logs_excluded(self, mock_logs_excluded): class FailedStreamingPipelineEndTest (line 397) | class FailedStreamingPipelineEndTest(FailedStreamingPipelineStepTestBase): method test_end_step (line 400) | def test_end_step(self): FILE: gcpdiag/runbook/dataflow/generalized_steps.py class ValidSdk (line 22) | class ValidSdk(runbook.Step): method execute (line 29) | def execute(self): FILE: gcpdiag/runbook/dataflow/generalized_steps_test.py class MockMessage (line 29) | class MockMessage: method get_msg (line 32) | def get_msg(self, key, **kwargs): class GeneralizedStepsTestBase (line 37) | class GeneralizedStepsTestBase(unittest.TestCase): method setUp (line 40) | def setUp(self): class ValidSdkTest (line 69) | class ValidSdkTest(GeneralizedStepsTestBase): method test_valid_sdk (line 72) | def test_valid_sdk(self): method test_invalid_sdk (line 81) | def test_invalid_sdk(self, mock_get_job): FILE: gcpdiag/runbook/dataflow/job_permissions.py function local_realtime_query (line 27) | def local_realtime_query(filter_str): class JobPermissions (line 37) | class JobPermissions(runbook.DiagnosticTree): method build_tree (line 89) | def build_tree(self): class DataflowUserAccountPermissions (line 114) | class DataflowUserAccountPermissions(runbook.Step): method execute (line 126) | def execute(self): class DataflowWorkerServiceAccountPermissions (line 139) | class DataflowWorkerServiceAccountPermissions(runbook.Gateway): method execute (line 149) | def execute(self): class DataflowResourcePermissions (line 242) | class DataflowResourcePermissions(runbook.Step): method execute (line 251) | def execute(self): class DataflowPermissionsEnd (line 276) | class DataflowPermissionsEnd(runbook.EndStep): method execute (line 279) | def execute(self): FILE: gcpdiag/runbook/dataflow/job_permissions_test.py class Test (line 31) | class Test(snapshot_test_base.RulesSnapshotTestBase): class MockMessage (line 45) | class MockMessage: method get_msg (line 48) | def get_msg(self, key, **kwargs): class JobPermissionsStepTestBase (line 53) | class JobPermissionsStepTestBase(unittest.TestCase): method setUp (line 56) | def setUp(self): class JobPermissionsBuildTreeTest (line 89) | class JobPermissionsBuildTreeTest(unittest.TestCase): method test_build_tree (line 98) | def test_build_tree( class DataflowUserAccountPermissionsTest (line 136) | class DataflowUserAccountPermissionsTest(JobPermissionsStepTestBase): method setUp (line 138) | def setUp(self): method test_add_child_called (line 145) | def test_add_child_called(self): class DataflowWorkerServiceAccountPermissionsTest (line 155) | class DataflowWorkerServiceAccountPermissionsTest(JobPermissionsStepTest... method setUp (line 157) | def setUp(self): method test_sa_exists_same_project (line 165) | def test_sa_exists_same_project(self, method test_sa_does_not_exist (line 177) | def test_sa_does_not_exist(self, unused_mock_is_service_account_existi... method test_sa_exists_cross_project (line 188) | def test_sa_exists_cross_project(self, mock_is_service_account_existing): class DataflowResourcePermissionsTest (line 215) | class DataflowResourcePermissionsTest(JobPermissionsStepTestBase): method setUp (line 217) | def setUp(self): method test_logs_found_same_project (line 224) | def test_logs_found_same_project(self): method test_logs_found_cross_project (line 235) | def test_logs_found_cross_project(self): method test_no_logs_found (line 248) | def test_no_logs_found(self): class DataflowPermissionsEndTest (line 262) | class DataflowPermissionsEndTest(JobPermissionsStepTestBase): method test_end_step (line 264) | def test_end_step(self): FILE: gcpdiag/runbook/dataproc/cluster_creation.py class ClusterCreation (line 29) | class ClusterCreation(runbook.DiagnosticTree): method legacy_parameter_handler (line 155) | def legacy_parameter_handler(self, parameters): method build_tree (line 163) | def build_tree(self): class ClusterCreationStart (line 172) | class ClusterCreationStart(runbook.StartStep): method execute (line 180) | def execute(self): class ClusterCreationStockout (line 235) | class ClusterCreationStockout(runbook.Step): method execute (line 238) | def execute(self): class ClusterCreationQuota (line 260) | class ClusterCreationQuota(runbook.Step): method execute (line 263) | def execute(self): class ClusterDetailsDependencyGateway (line 280) | class ClusterDetailsDependencyGateway(runbook.Gateway): method execute (line 287) | def execute(self): class CheckClusterNetwork (line 304) | class CheckClusterNetwork(runbook.Step): method execute (line 314) | def execute(self): class InternalIpGateway (line 473) | class InternalIpGateway(runbook.Gateway): method execute (line 481) | def execute(self): class CheckPrivateGoogleAccess (line 533) | class CheckPrivateGoogleAccess(runbook.Step): method execute (line 541) | def execute(self): class ServiceAccountExists (line 565) | class ServiceAccountExists(runbook.Gateway): method execute (line 575) | def execute(self): class CheckSharedVPCRoles (line 689) | class CheckSharedVPCRoles(runbook.Step): method execute (line 695) | def execute(self): class CheckInitScriptFailure (line 726) | class CheckInitScriptFailure(runbook.Step): method execute (line 733) | def execute(self): class ClusterCreationEnd (line 770) | class ClusterCreationEnd(runbook.EndStep): method execute (line 776) | def execute(self): function get_log_filter (line 797) | def get_log_filter( FILE: gcpdiag/runbook/dataproc/cluster_creation_test.py class Test (line 32) | class Test(snapshot_test_base.RulesSnapshotTestBase): class MockMessage (line 80) | class MockMessage: method get_msg (line 83) | def get_msg(self, key, **kwargs): class ClusterCreationTest (line 88) | class ClusterCreationTest(unittest.TestCase): method test_legacy_parameter_handler (line 90) | def test_legacy_parameter_handler(self): class ClusterCreationBuildTreeTest (line 107) | class ClusterCreationBuildTreeTest(unittest.TestCase): method test_build_tree (line 116) | def test_build_tree(self, mock_op_get, mock_add_end, mock_add_start, class ClusterCreationStepTestBase (line 134) | class ClusterCreationStepTestBase(unittest.TestCase): method setUp (line 137) | def setUp(self): class ClusterCreationStartTest (line 212) | class ClusterCreationStartTest(ClusterCreationStepTestBase): method test_cluster_in_error_state (line 214) | def test_cluster_in_error_state(self): method test_cluster_not_in_error_state (line 224) | def test_cluster_not_in_error_state(self): method test_cluster_api_error (line 233) | def test_cluster_api_error(self): method test_cluster_not_found (line 241) | def test_cluster_not_found(self): method test_cluster_in_error_state_stackdriver_disabled (line 250) | def test_cluster_in_error_state_stackdriver_disabled(self): class ClusterCreationStockoutTest (line 264) | class ClusterCreationStockoutTest(ClusterCreationStepTestBase): method setUp (line 266) | def setUp(self): method test_add_child_called (line 273) | def test_add_child_called(self): class ClusterCreationQuotaTest (line 283) | class ClusterCreationQuotaTest(ClusterCreationStepTestBase): method setUp (line 285) | def setUp(self): method test_add_child_called (line 292) | def test_add_child_called(self): class ClusterDetailsDependencyGatewayTest (line 302) | class ClusterDetailsDependencyGatewayTest(ClusterCreationStepTestBase): method setUp (line 304) | def setUp(self): method test_cluster_exists (line 311) | def test_cluster_exists(self): method test_cluster_does_not_exist (line 339) | def test_cluster_does_not_exist(self): class CheckClusterNetworkTest (line 356) | class CheckClusterNetworkTest(ClusterCreationStepTestBase): method setUp (line 358) | def setUp(self): method test_cluster_none (line 371) | def test_cluster_none(self): method test_no_zone (line 379) | def test_no_zone(self): method test_dpgke_cluster (line 389) | def test_dpgke_cluster(self): method test_single_node_cluster (line 398) | def test_single_node_cluster(self): method test_connectivity_ok (line 407) | def test_connectivity_ok(self): method test_connectivity_failed_icmp (line 417) | def test_connectivity_failed_icmp(self): method test_connectivity_failed_tcp (line 450) | def test_connectivity_failed_tcp(self): method test_connectivity_failed_udp (line 483) | def test_connectivity_failed_udp(self): method test_ha_cluster_connectivity_ok (line 516) | def test_ha_cluster_connectivity_ok(self): class InternalIpGatewayTest (line 533) | class InternalIpGatewayTest(ClusterCreationStepTestBase): method setUp (line 535) | def setUp(self): method test_cluster_none_no_flag (line 542) | def test_cluster_none_no_flag(self): method test_cluster_none_no_subnet (line 551) | def test_cluster_none_no_subnet(self): method test_internal_ip_only_true (line 561) | def test_internal_ip_only_true(self): method test_internal_ip_only_false (line 574) | def test_internal_ip_only_false(self): class CheckPrivateGoogleAccessTest (line 585) | class CheckPrivateGoogleAccessTest(ClusterCreationStepTestBase): method test_pga_enabled (line 587) | def test_pga_enabled(self): method test_pga_disabled (line 598) | def test_pga_disabled(self): class ServiceAccountExistsTest (line 610) | class ServiceAccountExistsTest(ClusterCreationStepTestBase): method setUp (line 612) | def setUp(self): method test_no_sa_email (line 620) | def test_no_sa_email(self): method test_sa_exists_same_project (line 628) | def test_sa_exists_same_project(self): method test_sa_exists_cross_project (line 641) | def test_sa_exists_cross_project(self): method test_sa_not_exists_cross_project (line 662) | def test_sa_not_exists_cross_project(self): method test_sa_not_exists_no_cross_project (line 673) | def test_sa_not_exists_no_cross_project(self): class CheckSharedVPCRolesTest (line 684) | class CheckSharedVPCRolesTest(ClusterCreationStepTestBase): method setUp (line 686) | def setUp(self): method test_shared_vpc (line 693) | def test_shared_vpc(self): method test_no_shared_vpc (line 707) | def test_no_shared_vpc(self): class CheckInitScriptFailureTest (line 717) | class CheckInitScriptFailureTest(ClusterCreationStepTestBase): method test_failure_logs_found (line 719) | def test_failure_logs_found(self): method test_no_failure_logs (line 727) | def test_no_failure_logs(self): class ClusterCreationEndTest (line 736) | class ClusterCreationEndTest(ClusterCreationStepTestBase): method test_cluster_exists (line 738) | def test_cluster_exists(self): method test_cluster_does_not_exist (line 750) | def test_cluster_does_not_exist(self): FILE: gcpdiag/runbook/dataproc/generalized_steps.py class CheckLogsExist (line 24) | class CheckLogsExist(runbook.Step): method execute (line 38) | def execute(self): class CheckClusterNetworkConnectivity (line 107) | class CheckClusterNetworkConnectivity(runbook.Step): method execute (line 119) | def execute(self): FILE: gcpdiag/runbook/dataproc/generalized_steps_test.py class MockMessage (line 27) | class MockMessage: method get_msg (line 30) | def get_msg(self, key, **kwargs): class GeneralizedStepsTestBase (line 35) | class GeneralizedStepsTestBase(unittest.TestCase): method setUp (line 38) | def setUp(self): class CheckLogsExistTest (line 110) | class CheckLogsExistTest(GeneralizedStepsTestBase): method test_job_does_not_exist (line 112) | def test_job_does_not_exist(self): method test_job_too_old (line 120) | def test_job_too_old(self): method test_logs_found_no_cluster_details (line 128) | def test_logs_found_no_cluster_details(self): method test_logs_not_found_no_cluster_details (line 138) | def test_logs_not_found_no_cluster_details(self): method test_logs_found_with_cluster_details (line 148) | def test_logs_found_with_cluster_details(self): method test_logs_found_with_project_id (line 162) | def test_logs_found_with_project_id(self): class CheckClusterNetworkConnectivityTest (line 178) | class CheckClusterNetworkConnectivityTest(GeneralizedStepsTestBase): method setUp (line 180) | def setUp(self): method test_cluster_none (line 193) | def test_cluster_none(self): method test_no_zone (line 201) | def test_no_zone(self): method test_dpgke_cluster (line 209) | def test_dpgke_cluster(self): method test_single_node_cluster (line 217) | def test_single_node_cluster(self): method test_connectivity_ok (line 225) | def test_connectivity_ok(self): method test_connectivity_failed_icmp (line 234) | def test_connectivity_failed_icmp(self): method test_connectivity_failed_tcp (line 266) | def test_connectivity_failed_tcp(self): method test_connectivity_failed_udp (line 298) | def test_connectivity_failed_udp(self): method test_ha_cluster_connectivity_ok (line 330) | def test_ha_cluster_connectivity_ok(self): method test_step_with_cluster_name_and_project_id (line 345) | def test_step_with_cluster_name_and_project_id(self): FILE: gcpdiag/runbook/dataproc/spark_job_failures.py class SparkJobFailures (line 31) | class SparkJobFailures(runbook.DiagnosticTree): method legacy_parameter_handler (line 103) | def legacy_parameter_handler(self, parameters): method build_tree (line 107) | def build_tree(self): class JobStart (line 117) | class JobStart(runbook.StartStep): method execute (line 125) | def execute(self): class JobDetailsDependencyGateway (line 203) | class JobDetailsDependencyGateway(runbook.Gateway): method execute (line 210) | def execute(self): class CheckStackdriverSetting (line 239) | class CheckStackdriverSetting(runbook.Step): method execute (line 248) | def execute(self): class CheckClusterVersion (line 269) | class CheckClusterVersion(runbook.Step): method execute (line 275) | def execute(self): class CheckTaskNotFound (line 302) | class CheckTaskNotFound(runbook.CompositeStep): method execute (line 307) | def execute(self): class CheckPermissions (line 369) | class CheckPermissions(runbook.CompositeStep): method execute (line 375) | def execute(self): class CheckMasterOOM (line 475) | class CheckMasterOOM(runbook.Step): method execute (line 481) | def execute(self): class CheckWorkerOOM (line 570) | class CheckWorkerOOM(runbook.Step): method execute (line 575) | def execute(self): class CheckSWPreemption (line 585) | class CheckSWPreemption(runbook.CompositeStep): method execute (line 590) | def execute(self): class CheckWorkerDiskUsageIssue (line 598) | class CheckWorkerDiskUsageIssue(runbook.CompositeStep): method execute (line 603) | def execute(self): class CheckPortExhaustion (line 611) | class CheckPortExhaustion(runbook.CompositeStep): method execute (line 616) | def execute(self): class CheckKillingOrphanedApplication (line 625) | class CheckKillingOrphanedApplication(runbook.CompositeStep): method execute (line 630) | def execute(self): class CheckPythonImportFailure (line 640) | class CheckPythonImportFailure(runbook.CompositeStep): method execute (line 643) | def execute(self): class CheckShuffleFailures (line 664) | class CheckShuffleFailures(runbook.Step): method execute (line 669) | def execute(self): class CheckShuffleServiceKill (line 776) | class CheckShuffleServiceKill(runbook.CompositeStep): method execute (line 780) | def execute(self): class CheckAutoscalingPolicy (line 790) | class CheckAutoscalingPolicy(runbook.Step): method execute (line 795) | def execute(self): class CheckPreemptible (line 831) | class CheckPreemptible(runbook.Step): method execute (line 836) | def execute(self): class CheckGCPause (line 871) | class CheckGCPause(runbook.CompositeStep): method execute (line 876) | def execute(self): class CheckJobThrottling (line 884) | class CheckJobThrottling(runbook.CompositeStep): method execute (line 887) | def execute(self): class CheckYarnRuntimeException (line 927) | class CheckYarnRuntimeException(runbook.CompositeStep): method execute (line 930) | def execute(self): class CheckGCSConnector (line 939) | class CheckGCSConnector(runbook.CompositeStep): method execute (line 944) | def execute(self): class CheckBQConnector (line 988) | class CheckBQConnector(runbook.CompositeStep): method execute (line 993) | def execute(self): class SparkJobEnd (line 1053) | class SparkJobEnd(runbook.EndStep): method execute (line 1059) | def execute(self): function check_datetime_gap (line 1072) | def check_datetime_gap(date1, date2, gap_in_days): FILE: gcpdiag/runbook/dataproc/spark_job_failures_test.py class Test (line 32) | class Test(snapshot_test_base.RulesSnapshotTestBase): class MockMessage (line 56) | class MockMessage: method get_msg (line 59) | def get_msg(self, key, **kwargs): class SparkJobFailuresTest (line 63) | class SparkJobFailuresTest(unittest.TestCase): method test_legacy_parameter_handler (line 65) | def test_legacy_parameter_handler(self): class SparkJobFailuresBuildTreeTest (line 74) | class SparkJobFailuresBuildTreeTest(unittest.TestCase): method test_build_tree (line 83) | def test_build_tree(self, mock_op_get, mock_add_end, mock_add_start, class SparkJobFailuresStepTestBase (line 101) | class SparkJobFailuresStepTestBase(unittest.TestCase): method setUp (line 104) | def setUp(self): class JobStartTest (line 195) | class JobStartTest(SparkJobFailuresStepTestBase): method test_job_start_ok (line 197) | def test_job_start_ok(self): method test_job_start_done (line 208) | def test_job_start_done(self): method test_job_start_api_error (line 216) | def test_job_start_api_error(self): method test_job_older_than_30_days (line 225) | def test_job_older_than_30_days(self): class JobDetailsDependencyGatewayTest (line 238) | class JobDetailsDependencyGatewayTest(SparkJobFailuresStepTestBase): method setUp (line 240) | def setUp(self): method test_cluster_exists (line 247) | def test_cluster_exists(self): method test_cluster_does_not_exist (line 255) | def test_cluster_does_not_exist(self): class CheckStackdriverSettingTest (line 264) | class CheckStackdriverSettingTest(SparkJobFailuresStepTestBase): method test_stackdriver_enabled (line 266) | def test_stackdriver_enabled(self): method test_stackdriver_disabled (line 275) | def test_stackdriver_disabled(self): method test_cluster_none (line 284) | def test_cluster_none(self): class CheckClusterVersionTest (line 293) | class CheckClusterVersionTest(SparkJobFailuresStepTestBase): method test_version_supported (line 295) | def test_version_supported(self): method test_version_not_supported (line 304) | def test_version_not_supported(self): class CheckTaskNotFoundTest (line 314) | class CheckTaskNotFoundTest(SparkJobFailuresStepTestBase): method test_job_older_than_30_days (line 316) | def test_job_older_than_30_days(self): method test_job_not_task_not_found (line 324) | def test_job_not_task_not_found(self): method test_job_task_not_found_logs_found (line 333) | def test_job_task_not_found_logs_found(self): method test_job_task_not_found_logs_not_found (line 352) | def test_job_task_not_found_logs_not_found(self): class CheckPermissionsTest (line 366) | class CheckPermissionsTest(SparkJobFailuresStepTestBase): method setUp (line 368) | def setUp(self): method test_no_sa (line 375) | def test_no_sa(self): method test_sa_exists_same_project (line 383) | def test_sa_exists_same_project(self): method test_sa_exists_cross_project (line 396) | def test_sa_exists_cross_project(self): class CheckMasterOOMTest (line 409) | class CheckMasterOOMTest(SparkJobFailuresStepTestBase): method test_no_task_not_acquired (line 411) | def test_no_task_not_acquired(self): method test_task_not_acquired_sigterm (line 419) | def test_task_not_acquired_sigterm(self): method test_task_not_acquired_yarn_metrics (line 434) | def test_task_not_acquired_yarn_metrics(self): class CheckCompositeStepTest (line 451) | class CheckCompositeStepTest(SparkJobFailuresStepTestBase): method test_check_worker_oom (line 453) | def test_check_worker_oom(self): method test_check_sw_preemption (line 465) | def test_check_sw_preemption(self): method test_check_worker_disk_usage_issue (line 477) | def test_check_worker_disk_usage_issue(self): method test_check_port_exhaustion (line 489) | def test_check_port_exhaustion(self): method test_check_killing_orphaned_application (line 501) | def test_check_killing_orphaned_application(self): method test_check_python_import_failure (line 513) | def test_check_python_import_failure(self): method test_check_gc_pause (line 527) | def test_check_gc_pause(self): method test_check_job_throttling (line 539) | def test_check_job_throttling(self): method test_check_yarn_runtime_exception (line 549) | def test_check_yarn_runtime_exception(self): class CheckShuffleFailuresTest (line 562) | class CheckShuffleFailuresTest(SparkJobFailuresStepTestBase): method test_job_older_than_30_days (line 564) | def test_job_older_than_30_days(self): method test_no_logs (line 572) | def test_no_logs(self): method test_logs_found_efm_workers (line 580) | def test_logs_found_efm_workers(self): method test_logs_found_old_image (line 597) | def test_logs_found_old_image(self): method test_logs_found_small_disk (line 610) | def test_logs_found_small_disk(self): method test_logs_found_low_timeout (line 621) | def test_logs_found_low_timeout(self): method test_logs_found_pvm (line 636) | def test_logs_found_pvm(self): class CheckShuffleServiceKillTest (line 650) | class CheckShuffleServiceKillTest(SparkJobFailuresStepTestBase): method setUp (line 652) | def setUp(self): method test_add_child_called (line 659) | def test_add_child_called(self): class CheckAutoscalingPolicyTest (line 673) | class CheckAutoscalingPolicyTest(SparkJobFailuresStepTestBase): method test_no_policy (line 675) | def test_no_policy(self): method test_policy_no_graceful_timeout (line 683) | def test_policy_no_graceful_timeout(self): method test_policy_with_graceful_timeout (line 694) | def test_policy_with_graceful_timeout(self): class CheckPreemptibleTest (line 706) | class CheckPreemptibleTest(SparkJobFailuresStepTestBase): method test_preemptible_workers_high_ratio (line 708) | def test_preemptible_workers_high_ratio(self): method test_preemptible_workers_low_ratio (line 718) | def test_preemptible_workers_low_ratio(self): method test_no_preemptible_workers (line 728) | def test_no_preemptible_workers(self): class CheckGCSConnectorTest (line 737) | class CheckGCSConnectorTest(SparkJobFailuresStepTestBase): method setUp (line 739) | def setUp(self): method test_custom_connector (line 746) | def test_custom_connector(self): method test_default_connector (line 755) | def test_default_connector(self): class CheckBQConnectorTest (line 765) | class CheckBQConnectorTest(SparkJobFailuresStepTestBase): method setUp (line 767) | def setUp(self): method test_cluster_none (line 776) | def test_cluster_none(self): method test_version_ok_no_connector (line 785) | def test_version_ok_no_connector(self): method test_version_uncertain_job_connector_mismatch (line 795) | def test_version_uncertain_job_connector_mismatch(self): method test_version_uncertain_cluster_connector_mismatch (line 805) | def test_version_uncertain_cluster_connector_mismatch(self): method test_version_ok_old_image_with_connector (line 815) | def test_version_ok_old_image_with_connector(self): method test_version_skipped_old_image_no_connector (line 826) | def test_version_skipped_old_image_no_connector(self): class SparkJobEndTest (line 838) | class SparkJobEndTest(SparkJobFailuresStepTestBase): method test_end_step (line 840) | def test_end_step(self): FILE: gcpdiag/runbook/exceptions.py class InvalidDiagnosticTree (line 17) | class InvalidDiagnosticTree(Exception): method __init__ (line 20) | def __init__(self, message: str): class InvalidStepOperation (line 24) | class InvalidStepOperation(Exception): method __init__ (line 27) | def __init__(self, message: str): class DiagnosticTreeNotFound (line 31) | class DiagnosticTreeNotFound(Exception): class DiagnosticTreeConstructionError (line 35) | class DiagnosticTreeConstructionError(Exception): method __init__ (line 38) | def __init__(self, message: str): class MissingParameterError (line 42) | class MissingParameterError(ValueError): method __init__ (line 45) | def __init__(self, class InvalidParameterError (line 53) | class InvalidParameterError(ValueError): class FailedStepError (line 57) | class FailedStepError(Exception): FILE: gcpdiag/runbook/gce/generalized_steps.py function _get_operator_fn (line 40) | def _get_operator_fn(op_str: str): function _resolve_expected_value (line 57) | def _resolve_expected_value(value_str: str) -> Any: function _check_condition (line 69) | def _check_condition(actual_value: Any, expected_value: Any, class HighVmMemoryUtilization (line 107) | class HighVmMemoryUtilization(runbook.Step): method execute (line 125) | def execute(self): class HighVmDiskUtilization (line 222) | class HighVmDiskUtilization(runbook.Step): method execute (line 238) | def execute(self): class HighVmCpuUtilization (line 321) | class HighVmCpuUtilization(runbook.Step): method execute (line 337) | def execute(self): class VmLifecycleState (line 414) | class VmLifecycleState(runbook.Step): method execute (line 431) | def execute(self): class VmSerialLogsCheck (line 475) | class VmSerialLogsCheck(runbook.Step): method execute (line 497) | def execute(self): class VmMetadataCheck (line 643) | class VmMetadataCheck(runbook.Step): method is_expected_md_value (line 663) | def is_expected_md_value(self, actual_value): method execute (line 693) | def execute(self): class GceVpcConnectivityCheck (line 785) | class GceVpcConnectivityCheck(runbook.Step): method execute (line 801) | def execute(self): class VmScope (line 867) | class VmScope(runbook.Step): method execute (line 887) | def execute(self): class VmHasOpsAgent (line 958) | class VmHasOpsAgent(runbook.Step): method _has_ops_agent_subagent (line 980) | def _has_ops_agent_subagent(self, metric_data): method execute (line 1001) | def execute(self): class MigAutoscalingPolicyCheck (line 1094) | class MigAutoscalingPolicyCheck(runbook.Step): method execute (line 1122) | def execute(self): class InstancePropertyCheck (line 1260) | class InstancePropertyCheck(runbook.Step): method execute (line 1289) | def execute(self): class GceLogCheck (line 1388) | class GceLogCheck(runbook.Step): method execute (line 1408) | def execute(self): class GceIamPolicyCheck (line 1446) | class GceIamPolicyCheck(runbook.Step): method execute (line 1465) | def execute(self): FILE: gcpdiag/runbook/gce/generalized_steps_test.py class RegexMatcher (line 37) | class RegexMatcher: method __init__ (line 40) | def __init__(self, pattern): method __eq__ (line 43) | def __eq__(self, other): method __repr__ (line 46) | def __repr__(self): class MockMessage (line 50) | class MockMessage: method get_msg (line 53) | def get_msg(self, key, **kwargs): class GceStepTestBase (line 58) | class GceStepTestBase(unittest.TestCase): method setUp (line 61) | def setUp(self): class GeneralizedStepsUtilsTest (line 107) | class GeneralizedStepsUtilsTest(unittest.TestCase): method test_get_operator_fn_error (line 110) | def test_get_operator_fn_error(self): method test_resolve_expected_value_ref_fail (line 115) | def test_resolve_expected_value_ref_fail(self): method test_check_condition_contains_non_collection (line 120) | def test_check_condition_contains_non_collection(self): method test_check_condition_matches_invalid_regex (line 124) | def test_check_condition_matches_invalid_regex(self): method test_check_condition_type_mismatch (line 129) | def test_check_condition_type_mismatch(self): class HighVmMemoryUtilizationTest (line 134) | class HighVmMemoryUtilizationTest(GceStepTestBase): method test_init_with_vm_object (line 137) | def test_init_with_vm_object(self): method test_ops_agent_installed_memory_usage_found (line 150) | def test_ops_agent_installed_memory_usage_found(self): method test_ops_agent_not_installed_not_e2_skipped (line 173) | def test_ops_agent_not_installed_not_e2_skipped(self): method test_instance_resolution_failure (line 184) | def test_instance_resolution_failure(self): method test_vm_not_found (line 195) | def test_vm_not_found(self): method test_cpu_usage_not_found (line 203) | def test_cpu_usage_not_found(self): method test_e2_machine_memory_usage_found (line 215) | def test_e2_machine_memory_usage_found(self): class HighVmDiskUtilizationTest (line 234) | class HighVmDiskUtilizationTest(GceStepTestBase): method test_instance_resolution_failure (line 237) | def test_instance_resolution_failure(self): method test_vm_not_found (line 246) | def test_vm_not_found(self): method test_init_with_vm_object (line 254) | def test_init_with_vm_object(self): method test_ops_agent_installed_disk_usage_not_found (line 267) | def test_ops_agent_installed_disk_usage_not_found(self): method test_ops_agent_installed_disk_usage_found (line 284) | def test_ops_agent_installed_disk_usage_found(self): method test_no_ops_agent_skipped_with_child_step (line 307) | def test_no_ops_agent_skipped_with_child_step(self): class HighVmCpuUtilizationTest (line 323) | class HighVmCpuUtilizationTest(GceStepTestBase): method test_instance_resolution_failure (line 326) | def test_instance_resolution_failure(self): method test_init_with_vm_object (line 335) | def test_init_with_vm_object(self): method test_cpu_usage_found (line 345) | def test_cpu_usage_found(self): method test_ops_agent_installed_cpu_usage_found (line 362) | def test_ops_agent_installed_cpu_usage_found(self): method test_vm_not_found (line 379) | def test_vm_not_found(self): class GceVpcConnectivityCheckTest (line 388) | class GceVpcConnectivityCheckTest(GceStepTestBase): method test_instance_resolution_failure (line 391) | def test_instance_resolution_failure(self): method test_vm_not_found (line 400) | def test_vm_not_found(self): method test_init_with_vm_object (line 408) | def test_init_with_vm_object(self): method test_ingress_deny (line 422) | def test_ingress_deny(self): method test_egress_allow (line 435) | def test_egress_allow(self): class VmScopeTest (line 450) | class VmScopeTest(GceStepTestBase): method test_require_all_false_fail (line 453) | def test_require_all_false_fail(self): method test_require_all_true_fail (line 463) | def test_require_all_true_fail(self): method test_instance_resolution_failure (line 473) | def test_instance_resolution_failure(self): method test_vm_not_found (line 482) | def test_vm_not_found(self): method test_init_with_vm_object (line 490) | def test_init_with_vm_object(self): method test_require_all_ok (line 501) | def test_require_all_ok(self): class GceLogCheckTest (line 512) | class GceLogCheckTest(GceStepTestBase): method test_missing_project_id (line 515) | def test_missing_project_id(self): method test_gce_log_check_adds_child (line 524) | def test_gce_log_check_adds_child(self): method test_gce_log_check_ref_resolution (line 532) | def test_gce_log_check_ref_resolution(self): method test_gce_log_check_invalid_ref (line 544) | def test_gce_log_check_invalid_ref(self): method test_parameter_missing (line 552) | def test_parameter_missing(self): method test_gce_log_check_issue_pattern_ref_resolution (line 560) | def test_gce_log_check_issue_pattern_ref_resolution(self): method test_no_issue_pattern (line 573) | def test_no_issue_pattern(self): class VmHasOpsAgentTest (line 585) | class VmHasOpsAgentTest(GceStepTestBase): method test_instance_resolution_failure (line 588) | def test_instance_resolution_failure(self): method test_subagent_check_with_metrics (line 597) | def test_subagent_check_with_metrics(self): method test_logging_agent_fail (line 617) | def test_logging_agent_fail(self): method test_metrics_agent_fail (line 626) | def test_metrics_agent_fail(self): method test_subagent_check_no_metrics (line 635) | def test_subagent_check_no_metrics(self): method test_init_with_vm_object (line 643) | def test_init_with_vm_object(self): method test_logging_agent_ok (line 656) | def test_logging_agent_ok(self): class VmLifecycleStateTest (line 669) | class VmLifecycleStateTest(GceStepTestBase): method test_instance_resolution_failure (line 672) | def test_instance_resolution_failure(self): method test_vm_not_found (line 681) | def test_vm_not_found(self): method test_init_with_vm_object (line 689) | def test_init_with_vm_object(self): method test_running_state_ok (line 699) | def test_running_state_ok(self): method test_non_running_state_failed (line 708) | def test_non_running_state_failed(self): class GceIamPolicyCheckTest (line 718) | class GceIamPolicyCheckTest(GceStepTestBase): method test_gce_iam_policy_check_adds_child (line 721) | def test_gce_iam_policy_check_adds_child(self): method test_iam_role_ref_resolution (line 730) | def test_iam_role_ref_resolution(self): method test_iam_permission_ref_resolution (line 745) | def test_iam_permission_ref_resolution(self): method test_gce_iam_policy_check_only_roles (line 759) | def test_gce_iam_policy_check_only_roles(self): class MigAutoscalingPolicyCheckTest (line 772) | class MigAutoscalingPolicyCheckTest(GceStepTestBase): method test_get_instance_api_error_non_404 (line 775) | def test_get_instance_api_error_non_404(self): method test_missing_property_path (line 784) | def test_missing_property_path(self): method test_missing_expected_value (line 803) | def test_missing_expected_value(self): method test_bad_ref_expected_value (line 817) | def test_bad_ref_expected_value(self): method test_instance_resolution_failure (line 831) | def test_instance_resolution_failure(self): method test_check_autoscaler_policy_ok (line 839) | def test_check_autoscaler_policy_ok(self): method test_check_autoscaler_policy_404_fail (line 861) | def test_check_autoscaler_policy_404_fail(self): method test_check_policy_by_instance_ok (line 879) | def test_check_policy_by_instance_ok(self): method test_check_policy_by_instance_fail (line 895) | def test_check_policy_by_instance_fail(self): method test_instance_not_in_mig (line 911) | def test_instance_not_in_mig(self): method test_regional_mig_policy_ok (line 919) | def test_regional_mig_policy_ok(self): method test_check_regional_autoscaler_policy_ok (line 941) | def test_check_regional_autoscaler_policy_ok(self): method test_check_zonal_autoscaler_policy_ok (line 972) | def test_check_zonal_autoscaler_policy_ok(self): method test_mig_location_missing_skipped (line 993) | def test_mig_location_missing_skipped(self): method test_mig_invalid_location_raises_error (line 1011) | def test_mig_invalid_location_raises_error(self): class VmSerialLogsCheckTest (line 1027) | class VmSerialLogsCheckTest(GceStepTestBase): method test_instance_resolution_failure (line 1030) | def test_instance_resolution_failure(self): method test_vm_not_found (line 1039) | def test_vm_not_found(self): method test_pattern_overrides (line 1047) | def test_pattern_overrides(self): method test_pattern_overrides_with_ref (line 1064) | def test_pattern_overrides_with_ref(self): method test_init_with_vm_object (line 1083) | def test_init_with_vm_object(self): method test_positive_pattern_ok (line 1102) | def test_positive_pattern_ok(self): method test_negative_pattern_fail (line 1120) | def test_negative_pattern_fail(self): method test_no_pattern_uncertain (line 1139) | def test_no_pattern_uncertain(self): method test_positive_only_no_match_uncertain (line 1158) | def test_positive_only_no_match_uncertain(self): method test_negative_only_no_match_uncertain (line 1176) | def test_negative_only_no_match_uncertain(self): method test_no_logs_skipped (line 1194) | def test_no_logs_skipped(self): method test_serial_console_file_read_ok (line 1203) | def test_serial_console_file_read_ok(self): method test_serial_console_multiple_files (line 1220) | def test_serial_console_multiple_files(self): method test_positive_pattern_and_operator_ok (line 1240) | def test_positive_pattern_and_operator_ok(self): method test_parameter_overrides_only_template (line 1259) | def test_parameter_overrides_only_template(self): class VmMetadataCheckTest (line 1272) | class VmMetadataCheckTest(GceStepTestBase): method test_instance_resolution_failure (line 1275) | def test_instance_resolution_failure(self): method test_expected_value_ref_resolution_fail (line 1288) | def test_expected_value_ref_resolution_fail(self): method test_init_with_vm_object (line 1299) | def test_init_with_vm_object(self): method test_metadata_bool_true_ok (line 1312) | def test_metadata_bool_true_ok(self): method test_metadata_bool_fail (line 1324) | def test_metadata_bool_fail(self): method test_bool_expected_false_ok (line 1336) | def test_bool_expected_false_ok(self): method test_metadata_string_ok (line 1348) | def test_metadata_string_ok(self): method test_metadata_numeric_comparison (line 1360) | def test_metadata_numeric_comparison(self): method test_metadata_api_error_404 (line 1371) | def test_metadata_api_error_404(self): method test_metadata_key_ref_resolution (line 1381) | def test_metadata_key_ref_resolution(self): method test_metadata_key_ref_resolution_fail (line 1396) | def test_metadata_key_ref_resolution_fail(self): method test_metadata_api_error_non_404 (line 1408) | def test_metadata_api_error_non_404(self): method test_missing_metadata_key_raises_error (line 1418) | def test_missing_metadata_key_raises_error(self): method test_missing_expected_value_raises_error (line 1426) | def test_missing_expected_value_raises_error(self): class InstancePropertyCheckTest (line 1435) | class InstancePropertyCheckTest(GceStepTestBase): method test_invalid_property_path (line 1438) | def test_invalid_property_path(self): method test_instance_resolution_failure (line 1450) | def test_instance_resolution_failure(self): method test_vm_not_found (line 1459) | def test_vm_not_found(self): method test_init_with_vm_object (line 1472) | def test_init_with_vm_object(self): method test_property_eq_ok (line 1485) | def test_property_eq_ok(self): method test_property_ne_fail (line 1497) | def test_property_ne_fail(self): method test_property_path_ref_resolution (line 1510) | def test_property_path_ref_resolution(self): method test_property_matches_ok (line 1524) | def test_property_matches_ok(self): method test_property_matches_list_ok (line 1537) | def test_property_matches_list_ok(self): method test_property_contains_list_ok (line 1550) | def test_property_contains_list_ok(self): method test_get_instance_api_error_non_404 (line 1563) | def test_get_instance_api_error_non_404(self): method test_missing_property_path_raises_error (line 1573) | def test_missing_property_path_raises_error(self): method test_missing_expected_value_raises_error (line 1583) | def test_missing_expected_value_raises_error(self): class StepParameterResolutionTest (line 1594) | class StepParameterResolutionTest(GceStepTestBase): method test_step_parameter_override (line 1597) | def test_step_parameter_override(self): method test_step_parameter_ref_resolution_override (line 1609) | def test_step_parameter_ref_resolution_override(self): method test_vm_not_found_skips (line 1623) | def test_vm_not_found_skips(self): class ExtendedEdgeCaseTest (line 1636) | class ExtendedEdgeCaseTest(GceStepTestBase): method test_mig_autoscaling_policy_missing_mig (line 1639) | def test_mig_autoscaling_policy_missing_mig(self): FILE: gcpdiag/runbook/gce/guestos_bootup.py class GuestosBootup (line 28) | class GuestosBootup(runbook.DiagnosticTree): method build_tree (line 85) | def build_tree(self): class GuestosBootupStart (line 138) | class GuestosBootupStart(runbook.StartStep): method execute (line 149) | def execute(self): class CloudInitChecks (line 213) | class CloudInitChecks(runbook.CompositeStep): method execute (line 216) | def execute(self): FILE: gcpdiag/runbook/gce/guestos_bootup_test.py class MockMessage (line 28) | class MockMessage: method get_msg (line 31) | def get_msg(self, key, **kwargs): class BootupStepTestBase (line 36) | class BootupStepTestBase(unittest.TestCase): method setUp (line 39) | def setUp(self): class GuestosBootupStartTest (line 90) | class GuestosBootupStartTest(BootupStepTestBase): method test_instance_id_missing (line 92) | def test_instance_id_missing(self): method test_instance_name_missing (line 99) | def test_instance_name_missing(self): method test_instance_not_found (line 108) | def test_instance_not_found(self): method test_instance_not_running (line 115) | def test_instance_not_running(self): method test_serial_file_not_found (line 122) | def test_serial_file_not_found(self): method test_serial_file_compressed (line 131) | def test_serial_file_compressed(self): method test_serial_file_not_plain_text (line 147) | def test_serial_file_not_plain_text(self): method test_serial_valid_file (line 166) | def test_serial_valid_file(self): class CloudInitChecksTest (line 178) | class CloudInitChecksTest(BootupStepTestBase): method setUp (line 180) | def setUp(self): method test_ubuntu_license_present (line 191) | def test_ubuntu_license_present(self): method test_ubuntu_license_not_present (line 199) | def test_ubuntu_license_not_present(self): class GuestosBootupBuildTreeTest (line 208) | class GuestosBootupBuildTreeTest(unittest.TestCase): method test_build_tree (line 210) | def test_build_tree(self): class Test (line 233) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/runbook/gce/ops_agent.py class OpsAgent (line 38) | class OpsAgent(runbook.DiagnosticTree): method build_tree (line 108) | def build_tree(self): class OpsAgentStart (line 121) | class OpsAgentStart(runbook.StartStep): method execute (line 128) | def execute(self): class VmHasAServiceAccount (line 151) | class VmHasAServiceAccount(runbook.Step): method execute (line 161) | def execute(self): class InvestigateLoggingMonitoring (line 199) | class InvestigateLoggingMonitoring(runbook.Gateway): method execute (line 207) | def execute(self): class CheckSerialPortLogging (line 290) | class CheckSerialPortLogging(runbook.CompositeStep): method execute (line 297) | def execute(self): class OpsAgentEnd (line 313) | class OpsAgentEnd(runbook.EndStep): method _has_ops_agent_metric_logging_agent (line 319) | def _has_ops_agent_metric_logging_agent(self, metric_data): method execute (line 323) | def execute(self): FILE: gcpdiag/runbook/gce/ops_agent_test.py class MockMessage (line 35) | class MockMessage: method get_msg (line 41) | def get_msg(self, key, **kwargs): class Test (line 45) | class Test(snapshot_test_base.RulesSnapshotTestBase): class OpsAgentUnitTest (line 65) | class OpsAgentUnitTest(unittest.TestCase): method setUp (line 67) | def setUp(self): method test_start_step_instance_not_found (line 117) | def test_start_step_instance_not_found(self): method test_start_step_instance_found (line 125) | def test_start_step_instance_found(self): method test_vm_has_sa_no_gac_no_instance_sa (line 135) | def test_vm_has_sa_no_gac_no_instance_sa(self): method test_vm_has_sa_no_gac_with_instance_sa (line 142) | def test_vm_has_sa_no_gac_with_instance_sa(self): method test_vm_has_sa_gac_found (line 151) | def test_vm_has_sa_gac_found(self): method test_vm_has_sa_gac_not_found (line 166) | def test_vm_has_sa_gac_not_found(self): method test_investigate_logging_monitoring_all_enabled (line 177) | def test_investigate_logging_monitoring_all_enabled(self): method test_investigate_logging_disabled (line 203) | def test_investigate_logging_disabled(self): method test_investigate_monitoring_disabled (line 211) | def test_investigate_monitoring_disabled(self): method test_investigate_no_serial_port_logging (line 219) | def test_investigate_no_serial_port_logging(self): method test_check_serial_port_logging (line 230) | def test_check_serial_port_logging(self): method test_end_step_serial_logs_found (line 238) | def test_end_step_serial_logs_found(self): method test_end_step_metrics_found (line 249) | def test_end_step_metrics_found(self): method test_end_step_no_logs_metrics_prompt_no (line 267) | def test_end_step_no_logs_metrics_prompt_no(self): method test_end_step_no_logs_metrics_prompt_yes (line 279) | def test_end_step_no_logs_metrics_prompt_yes(self): method test_end_step_no_serial_check (line 288) | def test_end_step_no_serial_check(self): method test_ops_agent_tree_structure (line 296) | def test_ops_agent_tree_structure(self): method test_vm_has_sa_failure_condition_no_gac_no_sa (line 341) | def test_vm_has_sa_failure_condition_no_gac_no_sa(self): FILE: gcpdiag/runbook/gce/serial_log_analyzer.py class SerialLogAnalyzer (line 27) | class SerialLogAnalyzer(runbook.DiagnosticTree): method legacy_parameter_handler (line 109) | def legacy_parameter_handler(self, parameters): method build_tree (line 113) | def build_tree(self): class SerialLogAnalyzerStart (line 247) | class SerialLogAnalyzerStart(runbook.StartStep): method execute (line 252) | def execute(self): class CloudInitChecks (line 316) | class CloudInitChecks(runbook.CompositeStep): method execute (line 319) | def execute(self): class AnalysingSerialLogsEnd (line 354) | class AnalysingSerialLogsEnd(runbook.EndStep): method execute (line 357) | def execute(self): FILE: gcpdiag/runbook/gce/serial_log_analyzer_test.py class Test (line 27) | class Test(snapshot_test_base.RulesSnapshotTestBase): class SerialLogAnalyzerTreeTest (line 43) | class SerialLogAnalyzerTreeTest(GceStepTestBase): method test_build_tree (line 46) | def test_build_tree(self): method test_legacy_parameter_handler (line 64) | def test_legacy_parameter_handler(self): class SerialLogAnalyzerStartTest (line 73) | class SerialLogAnalyzerStartTest(GceStepTestBase): method setUp (line 76) | def setUp(self): method test_start_success (line 84) | def test_start_success(self): method test_start_updates_missing_instance_name (line 94) | def test_start_updates_missing_instance_name(self): method test_instance_not_found_error_handling (line 110) | def test_instance_not_found_error_handling(self): method test_serial_console_file_checks (line 124) | def test_serial_console_file_checks(self, mock_guess, mock_open): method test_serial_console_file_compressed (line 139) | def test_serial_console_file_compressed(self, mock_guess, unused_mock_... method test_serial_console_file_binary_error (line 158) | def test_serial_console_file_binary_error(self, mock_guess, unused_moc... class CloudInitChecksTest (line 174) | class CloudInitChecksTest(GceStepTestBase): method setUp (line 177) | def setUp(self): method test_ubuntu_triggers_child_steps (line 184) | def test_ubuntu_triggers_child_steps(self): method test_non_ubuntu_skips_checks (line 200) | def test_non_ubuntu_skips_checks(self): class AnalysingSerialLogsEndTest (line 210) | class AnalysingSerialLogsEndTest(GceStepTestBase): method test_end_step_output_non_interactive (line 213) | def test_end_step_output_non_interactive(self): method test_end_step_output_interactive_mode (line 227) | def test_end_step_output_interactive_mode(self): FILE: gcpdiag/runbook/gce/ssh.py class Ssh (line 47) | class Ssh(runbook.DiagnosticTree): method legacy_parameter_handler (line 208) | def legacy_parameter_handler(self, parameters): method build_tree (line 233) | def build_tree(self): class SshStart (line 283) | class SshStart(runbook.StartStep): method execute (line 292) | def execute(self): class VmGuestOsType (line 374) | class VmGuestOsType(runbook.Gateway): method execute (line 381) | def execute(self): class SshEnd (line 408) | class SshEnd(runbook.EndStep): method execute (line 415) | def execute(self): class SshInBrowserCheck (line 426) | class SshInBrowserCheck(runbook.CompositeStep): method execute (line 433) | def execute(self): class GcpSshPermissions (line 442) | class GcpSshPermissions(runbook.CompositeStep): method execute (line 450) | def execute(self): class OsLoginStatusCheck (line 486) | class OsLoginStatusCheck(runbook.Gateway): method execute (line 493) | def execute(self): class PosixUserHasValidSshKeyCheck (line 547) | class PosixUserHasValidSshKeyCheck(runbook.Step): method execute (line 558) | def execute(self): class VmDuplicateSshKeysCheck (line 585) | class VmDuplicateSshKeysCheck(runbook.Step): method execute (line 590) | def execute(self): class GceFirewallAllowsSsh (line 642) | class GceFirewallAllowsSsh(runbook.Gateway): method execute (line 649) | def execute(self): class VmPerformanceChecks (line 695) | class VmPerformanceChecks(runbook.CompositeStep): method execute (line 703) | def execute(self): class LinuxGuestOsChecks (line 722) | class LinuxGuestOsChecks(runbook.CompositeStep): method execute (line 732) | def execute(self): class WindowsGuestOsChecks (line 763) | class WindowsGuestOsChecks(runbook.CompositeStep): method execute (line 772) | def execute(self): FILE: gcpdiag/runbook/gce/ssh_test.py class MockMessage (line 29) | class MockMessage: method get_msg (line 35) | def get_msg(self, key, **kwargs): class SshStepTestBase (line 39) | class SshStepTestBase(unittest.TestCase): method setUp (line 42) | def setUp(self): class SshTreeTest (line 76) | class SshTreeTest(SshStepTestBase): method test_legacy_parameter_handler (line 79) | def test_legacy_parameter_handler(self): method test_build_tree (line 101) | def test_build_tree(self): class SshStartTest (line 118) | class SshStartTest(SshStepTestBase): method setUp (line 121) | def setUp(self): method test_ssh_start_runs (line 126) | def test_ssh_start_runs(self): method test_ssh_start_principal_handling (line 135) | def test_ssh_start_principal_handling(self): method test_ssh_start_iap_proxy (line 152) | def test_ssh_start_iap_proxy(self): method test_ssh_start_instance_not_found (line 165) | def test_ssh_start_instance_not_found(self): method test_ssh_start_public_vm_no_proxy (line 174) | def test_ssh_start_public_vm_no_proxy(self): method test_ssh_start_jumphost_proxy (line 189) | def test_ssh_start_jumphost_proxy(self): method test_ssh_start_oslogin_message (line 201) | def test_ssh_start_oslogin_message(self): method test_ssh_start_ssh_key_in_metadata_message (line 212) | def test_ssh_start_ssh_key_in_metadata_message(self): method test_ssh_start_gcloud_client_message (line 223) | def test_ssh_start_gcloud_client_message(self): method test_ssh_start_oslogin_2fa_message (line 234) | def test_ssh_start_oslogin_2fa_message(self): class VmGuestOsTypeTest (line 247) | class VmGuestOsTypeTest(SshStepTestBase): method setUp (line 250) | def setUp(self): method test_linux_os (line 260) | def test_linux_os(self): method test_windows_os (line 272) | def test_windows_os(self): method test_instance_not_found (line 284) | def test_instance_not_found(self): class SshEndTest (line 295) | class SshEndTest(SshStepTestBase): method setUp (line 298) | def setUp(self): method test_ssh_end_no_interactive (line 305) | def test_ssh_end_no_interactive(self): method test_ssh_end_yes_interactive (line 316) | def test_ssh_end_yes_interactive(self): class SshInBrowserCheckTest (line 325) | class SshInBrowserCheckTest(SshStepTestBase): method setUp (line 328) | def setUp(self): method test_ssh_in_browser_check (line 336) | def test_ssh_in_browser_check(self): class GcpSshPermissionsTest (line 348) | class GcpSshPermissionsTest(SshStepTestBase): method setUp (line 351) | def setUp(self): method test_base_permissions_checked (line 361) | def test_base_permissions_checked(self): method test_iap_permissions_checked (line 372) | def test_iap_permissions_checked(self): method test_permissions_ssh_in_browser (line 381) | def test_permissions_ssh_in_browser(self): class OsLoginStatusCheckTest (line 393) | class OsLoginStatusCheckTest(SshStepTestBase): method setUp (line 396) | def setUp(self): method test_os_login_path (line 415) | def test_os_login_path(self): method test_ssh_key_in_metadata_path (line 431) | def test_ssh_key_in_metadata_path(self): class PosixUserHasValidSshKeyCheckTest (line 451) | class PosixUserHasValidSshKeyCheckTest(SshStepTestBase): method setUp (line 454) | def setUp(self): method test_valid_key_present (line 460) | def test_valid_key_present(self): method test_no_valid_key (line 470) | def test_no_valid_key(self): class VmDuplicateSshKeysCheckTest (line 481) | class VmDuplicateSshKeysCheckTest(SshStepTestBase): method test_no_ssh_keys (line 484) | def test_no_ssh_keys(self): method test_duplicate_keys (line 492) | def test_duplicate_keys(self): method test_no_duplicate_keys (line 503) | def test_no_duplicate_keys(self): method test_duplicate_keys_detection (line 514) | def test_duplicate_keys_detection(self): class GceFirewallAllowsSshTest (line 532) | class GceFirewallAllowsSshTest(SshStepTestBase): method setUp (line 535) | def setUp(self): method test_iap_firewall_check (line 544) | def test_iap_firewall_check(self): method test_public_vm_firewall_check (line 557) | def test_public_vm_firewall_check(self): method test_custom_ip_firewall_check (line 571) | def test_custom_ip_firewall_check(self): class VmPerformanceChecksTest (line 584) | class VmPerformanceChecksTest(SshStepTestBase): method setUp (line 587) | def setUp(self): method test_performance_checks_added (line 601) | def test_performance_checks_added(self): class LinuxGuestOsChecksTest (line 615) | class LinuxGuestOsChecksTest(SshStepTestBase): method setUp (line 618) | def setUp(self): method test_linux_checks_added (line 626) | def test_linux_checks_added(self): class WindowsGuestOsChecksTest (line 644) | class WindowsGuestOsChecksTest(SshStepTestBase): method setUp (line 647) | def setUp(self): method test_windows_checks_added (line 661) | def test_windows_checks_added(self): method test_windows_human_task_added (line 675) | def test_windows_human_task_added(self): class Test (line 687) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/runbook/gce/util/__init__.py function ensure_instance_resolved (line 31) | def ensure_instance_resolved(): function search_pattern_in_serial_logs (line 72) | def search_pattern_in_serial_logs(patterns: List, function user_has_valid_ssh_key (line 94) | def user_has_valid_ssh_key(local_user, keys: List[str], key_type=None) -... function ops_agent_installed (line 119) | def ops_agent_installed(project_id, vm_id) -> bool: FILE: gcpdiag/runbook/gce/util/util_test.py class TestEnsureInstanceResolved (line 25) | class TestEnsureInstanceResolved(unittest.TestCase): method setUp (line 28) | def setUp(self): method test_instance_already_resolved (line 35) | def test_instance_already_resolved(self): method test_instance_resolved_by_name (line 43) | def test_instance_resolved_by_name(self): method test_instance_resolved_by_id (line 61) | def test_instance_resolved_by_id(self): method test_missing_parameters (line 79) | def test_missing_parameters(self): method test_instance_not_found (line 89) | def test_instance_not_found(self): class TestUtil (line 103) | class TestUtil(): method test_has_at_least_one_valid_key (line 112) | def test_has_at_least_one_valid_key(self): method test_has_google_ssh_comment (line 116) | def test_has_google_ssh_comment(self): method test_has_no_valid_key (line 121) | def test_has_no_valid_key(self): method test_no_keys_present (line 126) | def test_no_keys_present(self): method test_has_at_least_one_valid_key_and_type (line 130) | def test_has_at_least_one_valid_key_and_type(self): method test_has_at_least_one_valid_key_and_mismatched_type (line 137) | def test_has_at_least_one_valid_key_and_mismatched_type(self): method test_regex_pattern_exist_in_logs (line 143) | def test_regex_pattern_exist_in_logs(self): method test_one_pattern_exist_in_logs (line 150) | def test_one_pattern_exist_in_logs(self): method test_all_pattern_exist_logs (line 159) | def test_all_pattern_exist_logs(self): FILE: gcpdiag/runbook/gce/vm_creation.py class VmCreation (line 38) | class VmCreation(runbook.DiagnosticTree): method build_tree (line 86) | def build_tree(self): class InvestigateVmCreationLogFailure (line 104) | class InvestigateVmCreationLogFailure(runbook.Gateway): method execute (line 112) | def execute(self): FILE: gcpdiag/runbook/gce/vm_creation_test.py class Test (line 27) | class Test(snapshot_test_base.RulesSnapshotTestBase): class VmCreationUnitTests (line 44) | class VmCreationUnitTests(unittest.TestCase): method setUp (line 47) | def setUp(self): method _get_base_entry (line 75) | def _get_base_entry(self): method test_build_tree_logic_zone_separation_true (line 93) | def test_build_tree_logic_zone_separation_true(self): method test_build_tree_logic_zone_separation_false (line 100) | def test_build_tree_logic_zone_separation_false(self): method test_execute_quota_exceeded (line 108) | def test_execute_quota_exceeded(self, mock_query): method test_execute_already_exists (line 127) | def test_execute_already_exists(self, mock_query): method test_execute_forbidden (line 140) | def test_execute_forbidden(self, mock_query): method test_execute_no_logs (line 153) | def test_execute_no_logs(self, mock_query): FILE: gcpdiag/runbook/gce/vm_performance.py class VmPerformance (line 31) | class VmPerformance(runbook.DiagnosticTree): method legacy_parameter_handler (line 101) | def legacy_parameter_handler(self, parameters): method build_tree (line 105) | def build_tree(self): class VmPerformanceStart (line 160) | class VmPerformanceStart(runbook.StartStep): method execute (line 165) | def execute(self): class CheckLiveMigrations (line 196) | class CheckLiveMigrations(runbook.Step): method execute (line 201) | def execute(self): class DiskHealthCheck (line 244) | class DiskHealthCheck(runbook.Step): method execute (line 249) | def execute(self): class CpuOvercommitmentCheck (line 288) | class CpuOvercommitmentCheck(runbook.Step): method execute (line 291) | def execute(self): class DiskAvgIOLatencyCheck (line 385) | class DiskAvgIOLatencyCheck(runbook.Step): method execute (line 390) | def execute(self): class DiskIopsThroughputUtilisationChecks (line 443) | class DiskIopsThroughputUtilisationChecks(runbook.Step): method execute (line 455) | def execute(self): method limit_calculator (line 1297) | def limit_calculator(self, limits_data, mach_fam_json_data, disktype: ... method actual_usage_comparision (line 1343) | def actual_usage_comparision(self, vm: gce.Instance, disktype: str, class VmPerformanceEnd (line 1404) | class VmPerformanceEnd(runbook.EndStep): method execute (line 1407) | def execute(self): FILE: gcpdiag/runbook/gce/vm_performance_test.py class Test (line 32) | class Test(snapshot_test_base.RulesSnapshotTestBase): class VmPerformanceTest (line 52) | class VmPerformanceTest(unittest.TestCase): method test_legacy_parameter_handler (line 54) | def test_legacy_parameter_handler(self): class MockMessage (line 64) | class MockMessage: method get_msg (line 67) | def get_msg(self, key, **kwargs): class VmPerformanceStepTestBase (line 72) | class VmPerformanceStepTestBase(unittest.TestCase): method setUp (line 75) | def setUp(self): class VmPerformanceStartTest (line 130) | class VmPerformanceStartTest(VmPerformanceStepTestBase): method test_instance_running (line 133) | def test_instance_running(self): method test_instance_not_running (line 147) | def test_instance_not_running(self): method test_instance_not_found (line 156) | def test_instance_not_found(self): method test_instance_name_missing_id_provided (line 165) | def test_instance_name_missing_id_provided(self): class DiskHealthCheckTest (line 178) | class DiskHealthCheckTest(VmPerformanceStepTestBase): method test_healthy_disk (line 181) | def test_healthy_disk(self): method test_unhealthy_disk (line 191) | def test_unhealthy_disk(self): class CpuOvercommitmentCheckTest (line 202) | class CpuOvercommitmentCheckTest(VmPerformanceStepTestBase): method setUp (line 205) | def setUp(self): method test_e2_cpu_not_overcommitted (line 211) | def test_e2_cpu_not_overcommitted(self): method test_e2_cpu_overcommitted (line 230) | def test_e2_cpu_overcommitted(self): method test_sole_tenant_cpu_not_overcommitted (line 251) | def test_sole_tenant_cpu_not_overcommitted(self): method test_not_e2_or_sole_tenant_skipped (line 269) | def test_not_e2_or_sole_tenant_skipped(self): method test_no_cpu_count_info (line 278) | def test_no_cpu_count_info(self): method test_instance_just_started_within_window (line 291) | def test_instance_just_started_within_window(self, mock_datetime): class DiskAvgIOLatencyCheckTest (line 324) | class DiskAvgIOLatencyCheckTest(VmPerformanceStepTestBase): method setUp (line 327) | def setUp(self): method test_latency_ok (line 336) | def test_latency_ok(self): method test_latency_high (line 346) | def test_latency_high(self): method test_unsupported_disk_type (line 356) | def test_unsupported_disk_type(self): class CheckLiveMigrationsTest (line 366) | class CheckLiveMigrationsTest(VmPerformanceStepTestBase): method setUp (line 369) | def setUp(self): method test_no_live_migrations (line 375) | def test_no_live_migrations(self): method test_live_migrations_found (line 389) | def test_live_migrations_found(self): class DiskIopsThroughputUtilisationChecksTest (line 495) | class DiskIopsThroughputUtilisationChecksTest(VmPerformanceStepTestBase): method setUp (line 498) | def setUp(self): method test_n1_pd_balanced_ok (line 527) | def test_n1_pd_balanced_ok(self, mock_json_load): method test_c2_pd_ssd_ok (line 542) | def test_c2_pd_ssd_ok(self, mock_json_load): method test_n1_pd_balanced_high_usage (line 567) | def test_n1_pd_balanced_high_usage(self, mock_json_load): method test_t2d_pd_standard_ok (line 603) | def test_t2d_pd_standard_ok(self, mock_json_load): method test_e2_pd_balanced_ok (line 631) | def test_e2_pd_balanced_ok(self, mock_json_load): method test_n2_pd_extreme_ok (line 659) | def test_n2_pd_extreme_ok(self, mock_json_load): method test_unsupported_machine_type (line 690) | def test_unsupported_machine_type(self, mock_json_load): method test_custom_machine_type (line 706) | def test_custom_machine_type(self, mock_json_load): method test_g1_small_unsupported_family (line 726) | def test_g1_small_unsupported_family(self, mock_json_load): method test_e2_medium_machine_type (line 741) | def test_e2_medium_machine_type(self, mock_json_load): method test_instance_just_stopped_window (line 770) | def test_instance_just_stopped_window(self, mock_json_load, mock_datet... method test_actual_usage_comparision_http_error (line 800) | def test_actual_usage_comparision_http_error(self, mock_json_load): method test_t2a_machine_types (line 829) | def test_t2a_machine_types(self, mock_json_load): method test_m_family_machine_types (line 858) | def test_m_family_machine_types(self, mock_json_load): method test_c3_machine_types_pd_extreme (line 887) | def test_c3_machine_types_pd_extreme(self, mock_json_load): method test_n2d_machine_types_pd_standard (line 911) | def test_n2d_machine_types_pd_standard(self, mock_json_load): method test_e2_pd_extreme (line 940) | def test_e2_pd_extreme(self, mock_json_load): method test_limit_calculator_iops_write (line 970) | def test_limit_calculator_iops_write(self, mock_json_load): class VmPerformanceEndTest (line 994) | class VmPerformanceEndTest(VmPerformanceStepTestBase): method setUp (line 997) | def setUp(self): method test_end_step_no_interactive_mode_no_answer (line 1003) | def test_end_step_no_interactive_mode_no_answer(self): method test_end_step_no_interactive_mode_yes_answer (line 1013) | def test_end_step_no_interactive_mode_yes_answer(self): method test_end_step_interactive_mode (line 1023) | def test_end_step_interactive_mode(self): class VmPerformanceBuildTreeTest (line 1032) | class VmPerformanceBuildTreeTest(unittest.TestCase): method test_build_tree (line 1038) | def test_build_tree(self, mock_op_get, mock_add_end, mock_add_start, class VmPerformanceCoverageTest (line 1087) | class VmPerformanceCoverageTest(VmPerformanceStepTestBase): method setUp (line 1090) | def setUp(self): method test_pd_standard_small_disk_limits (line 1107) | def test_pd_standard_small_disk_limits(self, mock_json_load): method test_pd_extreme_n2_high_cpu (line 1144) | def test_pd_extreme_n2_high_cpu(self, mock_json_load): method test_unsupported_disk_type (line 1175) | def test_unsupported_disk_type(self, mock_json_load): method test_a2_pd_balanced_ok (line 1193) | def test_a2_pd_balanced_ok(self, mock_json_load): method test_a2_ultragpu_machine_type (line 1222) | def test_a2_ultragpu_machine_type(self, mock_json_load): method test_disk_iops_utilisation_unbound_local (line 1249) | def test_disk_iops_utilisation_unbound_local(self): FILE: gcpdiag/runbook/gce/vm_termination.py class VmTermination (line 42) | class VmTermination(runbook.DiagnosticTree): method build_tree (line 102) | def build_tree(self): class VmTerminationStart (line 110) | class VmTerminationStart(runbook.StartStep): method execute (line 113) | def execute(self): function is_within_window (line 137) | def is_within_window(operation, start_time, end_time): class TerminationOperationType (line 143) | class TerminationOperationType(runbook.Gateway): method execute (line 150) | def execute(self): class ManagedInstanceGroupRecreation (line 221) | class ManagedInstanceGroupRecreation(runbook.Step): method execute (line 228) | def execute(self): class PreemptibleInstance (line 250) | class PreemptibleInstance(runbook.Step): method execute (line 258) | def execute(self): class HostError (line 283) | class HostError(runbook.Step): method execute (line 290) | def execute(self): class GuestOsIssuedShutdown (line 303) | class GuestOsIssuedShutdown(runbook.Step): method execute (line 311) | def execute(self): class TerminateOnHostMaintenance (line 326) | class TerminateOnHostMaintenance(runbook.Step): method execute (line 335) | def execute(self): class UserOrServiceAccountInitiatedStop (line 348) | class UserOrServiceAccountInitiatedStop(runbook.Step): method execute (line 356) | def execute(self): class ComputeClusterManagerTermination (line 380) | class ComputeClusterManagerTermination(runbook.Step): method execute (line 389) | def execute(self): class StopOperationGateway (line 422) | class StopOperationGateway(runbook.Gateway): method execute (line 431) | def execute(self): class ScheduledStopPolicy (line 461) | class ScheduledStopPolicy(runbook.Step): method execute (line 469) | def execute(self): class VmTerminationEnd (line 493) | class VmTerminationEnd(runbook.EndStep): method execute (line 501) | def execute(self): FILE: gcpdiag/runbook/gce/vm_termination_test.py class MockMessage (line 33) | class MockMessage: method get_msg (line 39) | def get_msg(self, key, **kwargs): class VmTerminationTestBase (line 44) | class VmTerminationTestBase(unittest.TestCase): method setUp (line 47) | def setUp(self): function make_operation (line 101) | def make_operation(op_type, class TerminationOperationTypeTest (line 118) | class TerminationOperationTypeTest(VmTerminationTestBase): method test_host_error_operation (line 121) | def test_host_error_operation(self): method test_stop_operation (line 132) | def test_stop_operation(self): method test_preempted_operation (line 142) | def test_preempted_operation(self): method test_shutdown_operation (line 153) | def test_shutdown_operation(self): method test_mig_repair_operation (line 165) | def test_mig_repair_operation(self): method test_no_relevant_operation (line 177) | def test_no_relevant_operation(self): class TestVmTerminationStubs (line 186) | class TestVmTerminationStubs(VmTerminationTestBase): method test_is_within_window (line 189) | def test_is_within_window(self): method test_start_step_instance_not_found (line 195) | def test_start_step_instance_not_found(self): method test_termination_op_type_unresolved (line 204) | def test_termination_op_type_unresolved(self): method test_mig_recreation_target_reached (line 214) | def test_mig_recreation_target_reached(self): method test_preemptible_instance_skipped (line 229) | def test_preemptible_instance_skipped(self): method test_host_error_execution (line 238) | def test_host_error_execution(self): method test_guest_os_shutdown_execution (line 246) | def test_guest_os_shutdown_execution(self): method test_terminate_on_maintenance_execution (line 254) | def test_terminate_on_maintenance_execution(self): method test_user_stop_stopped_state (line 262) | def test_user_stop_stopped_state(self): method test_ccm_termination_api_error (line 271) | def test_ccm_termination_api_error(self): method test_stop_gateway_scheduled_policy (line 283) | def test_stop_gateway_scheduled_policy(self): method test_start_step_instance_found_by_id (line 304) | def test_start_step_instance_found_by_id(self): method test_start_step_instance_found_by_name (line 313) | def test_start_step_instance_found_by_name(self): method test_mig_recreation_target_not_reached (line 322) | def test_mig_recreation_target_not_reached(self): method test_preemptible_instance_not_running (line 337) | def test_preemptible_instance_not_running(self): method test_ccm_termination_shared_vpc (line 352) | def test_ccm_termination_shared_vpc(self): method test_stop_gateway_user_stop (line 364) | def test_stop_gateway_user_stop(self): method test_stop_gateway_ccm_termination (line 376) | def test_stop_gateway_ccm_termination(self): method test_scheduled_stop_policy_running (line 388) | def test_scheduled_stop_policy_running(self): method test_vm_termination_end_satisfied (line 402) | def test_vm_termination_end_satisfied(self): FILE: gcpdiag/runbook/gcf/failed_deployments.py class FailedDeployments (line 29) | class FailedDeployments(runbook.DiagnosticTree): method legacy_parameter_handler (line 75) | def legacy_parameter_handler(self, parameters): method build_tree (line 79) | def build_tree(self): class FailedDeploymentsStart (line 91) | class FailedDeploymentsStart(runbook.StartStep): method execute (line 94) | def execute(self): class DefaultServiceAccountCheck (line 102) | class DefaultServiceAccountCheck(runbook.Step): method execute (line 107) | def execute(self): class UserServiceAccountCheck (line 148) | class UserServiceAccountCheck(runbook.Step): method execute (line 153) | def execute(self): class FunctionGlobalScopeCheck (line 209) | class FunctionGlobalScopeCheck(runbook.Step): method execute (line 214) | def execute(self): class LocationConstraintCheck (line 237) | class LocationConstraintCheck(runbook.Step): method execute (line 242) | def execute(self): class FailedDeploymentEndStep (line 265) | class FailedDeploymentEndStep(runbook.EndStep): method execute (line 268) | def execute(self): FILE: gcpdiag/runbook/gcf/failed_deployments_test.py class Test (line 20) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/runbook/gcp/constants.py class APIState (line 21) | class APIState(Enum): FILE: gcpdiag/runbook/gcp/generalized_steps.py class HumanTask (line 28) | class HumanTask(runbook.Step): method __init__ (line 41) | def __init__(self, uuid=None, parent=None, step_type=op.StepType.MANUAL): method execute (line 44) | def execute(self): class ResourceAttributeCheck (line 66) | class ResourceAttributeCheck(runbook.Step): method execute (line 127) | def execute(self): class ServiceApiStatusCheck (line 173) | class ServiceApiStatusCheck(runbook.Step): method execute (line 192) | def execute(self): FILE: gcpdiag/runbook/gke/cluster_autoscaler.py function local_log_search (line 25) | def local_log_search(cluster_name, cluster_location, error_message): class ClusterAutoscaler (line 53) | class ClusterAutoscaler(runbook.DiagnosticTree): method legacy_parameter_handler (line 113) | def legacy_parameter_handler(self, parameters): method build_tree (line 117) | def build_tree(self): class ClusterAutoscalerStart (line 161) | class ClusterAutoscalerStart(runbook.StartStep): method execute (line 169) | def execute(self): class CaOutOfResources (line 200) | class CaOutOfResources(runbook.Step): method execute (line 204) | def execute(self): class CaQuotaExceeded (line 232) | class CaQuotaExceeded(runbook.Step): method execute (line 237) | def execute(self): class CaInstanceTimeout (line 265) | class CaInstanceTimeout(runbook.Step): method execute (line 270) | def execute(self): class CaIpSpaceExhausted (line 298) | class CaIpSpaceExhausted(runbook.Step): method execute (line 303) | def execute(self): class CaServiceAccountDeleted (line 331) | class CaServiceAccountDeleted(runbook.Step): method execute (line 336) | def execute(self): class CaMinSizeReached (line 364) | class CaMinSizeReached(runbook.Step): method execute (line 369) | def execute(self): class CaFailedToEvictPods (line 397) | class CaFailedToEvictPods(runbook.Step): method execute (line 402) | def execute(self): class CaDisabledAnnotation (line 430) | class CaDisabledAnnotation(runbook.Step): method execute (line 435) | def execute(self): class CaMinResourceLimitExceeded (line 464) | class CaMinResourceLimitExceeded(runbook.Step): method execute (line 469) | def execute(self): class CaNoPlaceToMovePods (line 498) | class CaNoPlaceToMovePods(runbook.Step): method execute (line 503) | def execute(self): class CaPodsNotBackedByController (line 532) | class CaPodsNotBackedByController(runbook.Step): method execute (line 537) | def execute(self): class CaNotSafeToEvictAnnotation (line 566) | class CaNotSafeToEvictAnnotation(runbook.Step): method execute (line 571) | def execute(self): class CaPodKubeSystemUnmovable (line 600) | class CaPodKubeSystemUnmovable(runbook.Step): method execute (line 605) | def execute(self): class CaPodNotEnoughPdb (line 634) | class CaPodNotEnoughPdb(runbook.Step): method execute (line 639) | def execute(self): class CaPodControllerNotFound (line 668) | class CaPodControllerNotFound(runbook.Step): method execute (line 673) | def execute(self): class CaPodUnexpectedError (line 702) | class CaPodUnexpectedError(runbook.Step): method execute (line 707) | def execute(self): class ClusterAutoscalerEnd (line 736) | class ClusterAutoscalerEnd(runbook.EndStep): method execute (line 746) | def execute(self): FILE: gcpdiag/runbook/gke/cluster_autoscaler_test.py class Test (line 26) | class Test(snapshot_test_base.RulesSnapshotTestBase): class MockMessage (line 47) | class MockMessage: method __init__ (line 50) | def __init__(self): method print (line 53) | def print(self, *args, **kwargs): class RunbookTest (line 57) | class RunbookTest(unittest.TestCase): method setUp (line 59) | def setUp(self): method test_start_step_logging_disabled (line 108) | def test_start_step_logging_disabled(self): method test_start_step_cluster_not_found (line 114) | def test_start_step_cluster_not_found(self): method test_ca_out_of_resources_step_with_logs (line 125) | def test_ca_out_of_resources_step_with_logs(self): method test_ca_min_size_reached_step_with_logs (line 131) | def test_ca_min_size_reached_step_with_logs(self): method test_end_step_prompt_no (line 137) | def test_end_step_prompt_no(self): method test_start_step_success (line 143) | def test_start_step_success(self): method test_ca_out_of_resources_step_without_logs (line 151) | def test_ca_out_of_resources_step_without_logs(self): method test_ca_min_size_reached_step_without_logs (line 157) | def test_ca_min_size_reached_step_without_logs(self): method test_ca_quota_exceeded_step_with_logs (line 163) | def test_ca_quota_exceeded_step_with_logs(self): method test_ca_quota_exceeded_step_without_logs (line 169) | def test_ca_quota_exceeded_step_without_logs(self): method test_ca_instance_timeout_step_with_logs (line 175) | def test_ca_instance_timeout_step_with_logs(self): method test_ca_instance_timeout_step_without_logs (line 181) | def test_ca_instance_timeout_step_without_logs(self): method test_ca_ip_space_exhausted_step_with_logs (line 187) | def test_ca_ip_space_exhausted_step_with_logs(self): method test_ca_ip_space_exhausted_step_without_logs (line 193) | def test_ca_ip_space_exhausted_step_without_logs(self): method test_ca_service_account_deleted_step_with_logs (line 199) | def test_ca_service_account_deleted_step_with_logs(self): method test_ca_service_account_deleted_step_without_logs (line 205) | def test_ca_service_account_deleted_step_without_logs(self): method test_ca_failed_to_evict_pods_step_with_logs (line 211) | def test_ca_failed_to_evict_pods_step_with_logs(self): method test_ca_failed_to_evict_pods_step_without_logs (line 217) | def test_ca_failed_to_evict_pods_step_without_logs(self): method test_ca_disabled_annotation_step_with_logs (line 223) | def test_ca_disabled_annotation_step_with_logs(self): method test_ca_disabled_annotation_step_without_logs (line 229) | def test_ca_disabled_annotation_step_without_logs(self): method test_ca_min_resource_limit_exceeded_step_with_logs (line 235) | def test_ca_min_resource_limit_exceeded_step_with_logs(self): method test_ca_min_resource_limit_exceeded_step_without_logs (line 241) | def test_ca_min_resource_limit_exceeded_step_without_logs(self): method test_ca_no_place_to_move_pods_step_with_logs (line 247) | def test_ca_no_place_to_move_pods_step_with_logs(self): method test_ca_no_place_to_move_pods_step_without_logs (line 253) | def test_ca_no_place_to_move_pods_step_without_logs(self): method test_ca_pods_not_backed_by_controller_step_with_logs (line 259) | def test_ca_pods_not_backed_by_controller_step_with_logs(self): method test_ca_pods_not_backed_by_controller_step_without_logs (line 265) | def test_ca_pods_not_backed_by_controller_step_without_logs(self): method test_ca_not_safe_to_evict_annotation_step_with_logs (line 271) | def test_ca_not_safe_to_evict_annotation_step_with_logs(self): method test_ca_not_safe_to_evict_annotation_step_without_logs (line 277) | def test_ca_not_safe_to_evict_annotation_step_without_logs(self): method test_ca_pod_kube_system_unmovable_step_with_logs (line 283) | def test_ca_pod_kube_system_unmovable_step_with_logs(self): method test_ca_pod_kube_system_unmovable_step_without_logs (line 289) | def test_ca_pod_kube_system_unmovable_step_without_logs(self): method test_ca_pod_not_enough_pdb_step_with_logs (line 295) | def test_ca_pod_not_enough_pdb_step_with_logs(self): method test_ca_pod_not_enough_pdb_step_without_logs (line 301) | def test_ca_pod_not_enough_pdb_step_without_logs(self): method test_ca_pod_controller_not_found_step_with_logs (line 307) | def test_ca_pod_controller_not_found_step_with_logs(self): method test_ca_pod_controller_not_found_step_without_logs (line 313) | def test_ca_pod_controller_not_found_step_without_logs(self): method test_ca_pod_unexpected_error_step_with_logs (line 319) | def test_ca_pod_unexpected_error_step_with_logs(self): method test_ca_pod_unexpected_error_step_without_logs (line 325) | def test_ca_pod_unexpected_error_step_without_logs(self): method test_legacy_parameter (line 331) | def test_legacy_parameter(self): class TestClusterAutoscaler (line 340) | class TestClusterAutoscaler(unittest.TestCase): method setUp (line 343) | def setUp(self): method test_build_tree_structure (line 347) | def test_build_tree_structure(self): method test_start_step_cluster_not_found_mock (line 370) | def test_start_step_cluster_not_found_mock(self, mock_get, mock_add_sk... method test_out_of_resources_with_logs (line 393) | def test_out_of_resources_with_logs(self, mock_crm, mock_get, mock_add... FILE: gcpdiag/runbook/gke/generalized_steps.py class ApiEnabled (line 23) | class ApiEnabled(runbook.Step): method execute (line 33) | def execute(self): class NodePoolScope (line 47) | class NodePoolScope(runbook.Step): method execute (line 60) | def execute(self): class ServiceAccountPermission (line 85) | class ServiceAccountPermission(runbook.Step): method execute (line 97) | def execute(self): FILE: gcpdiag/runbook/gke/generalized_steps_test.py class MockMessage (line 24) | class MockMessage: method get_msg (line 27) | def get_msg(self, key, **kwargs): class GkeStepTestBase (line 32) | class GkeStepTestBase(unittest.TestCase): method setUp (line 35) | def setUp(self): class ApiEnabledTest (line 69) | class ApiEnabledTest(GkeStepTestBase): method test_api_enabled_ok (line 74) | def test_api_enabled_ok(self, unused_mock_get_project, mock_is_enabled): method test_api_enabled_failed (line 83) | def test_api_enabled_failed(self, unused_mock_get_project, mock_is_ena... class NodePoolScopeTest (line 91) | class NodePoolScopeTest(GkeStepTestBase): method test_nodepool_scope_ok (line 96) | def test_nodepool_scope_ok(self, mock_get_cluster_obj, method test_nodepool_scope_failed (line 114) | def test_nodepool_scope_failed(self, mock_get_cluster_obj, class ServiceAccountPermissionTest (line 129) | class ServiceAccountPermissionTest(GkeStepTestBase): method test_sa_permission_ok (line 136) | def test_sa_permission_ok(self, mock_sa_enabled, mock_get_policy, method test_sa_disabled (line 159) | def test_sa_disabled(self, mock_sa_enabled, unused_mock_get_policy, FILE: gcpdiag/runbook/gke/gke_ip_masq_standard.py class GkeIpMasqStandard (line 25) | class GkeIpMasqStandard(runbook.DiagnosticTree): method legacy_parameter_handler (line 99) | def legacy_parameter_handler(self, parameters): method build_tree (line 103) | def build_tree(self): class GkeIpMasqStandardStart (line 125) | class GkeIpMasqStandardStart(runbook.StartStep): method execute (line 131) | def execute(self): class Nodeproblem (line 199) | class Nodeproblem(runbook.Step): method execute (line 206) | def execute(self): class CheckDaemonSet (line 226) | class CheckDaemonSet(runbook.Step): method execute (line 233) | def execute(self): class CheckConfigMap (line 246) | class CheckConfigMap(runbook.Step): method execute (line 253) | def execute(self): class CheckPodIP (line 264) | class CheckPodIP(runbook.Step): method execute (line 271) | def execute(self): class CheckNodeIP (line 282) | class CheckNodeIP(runbook.Step): method execute (line 289) | def execute(self): class CheckDestinationIP (line 300) | class CheckDestinationIP(runbook.Step): method execute (line 307) | def execute(self): class GkeIpMasqStandardEnd (line 318) | class GkeIpMasqStandardEnd(runbook.EndStep): method execute (line 325) | def execute(self): FILE: gcpdiag/runbook/gke/gke_ip_masq_standard_test.py class MockMessage (line 24) | class MockMessage: method get_msg (line 27) | def get_msg(self, key, **kwargs): class TestGkeIpMasqStandard (line 32) | class TestGkeIpMasqStandard(unittest.TestCase): method setUp (line 35) | def setUp(self): method test_execute_found_cluster_with_name_and_location (line 68) | def test_execute_found_cluster_with_name_and_location(self, mock_add_ok, method test_execute_skipped_when_cluster_location_mismatch (line 90) | def test_execute_skipped_when_cluster_location_mismatch( method test_execute_uncertain_when_only_location_provided (line 110) | def test_execute_uncertain_when_only_location_provided( method test_legacy_parameter_handler_converts_name_to_cluster_name (line 127) | def test_legacy_parameter_handler_converts_name_to_cluster_name(self): method test_build_tree_constructs_full_diagnostic_path (line 140) | def test_build_tree_constructs_full_diagnostic_path(self, mock_add_end, method test_nodeproblem_success_on_logs_found (line 155) | def test_nodeproblem_success_on_logs_found(self, mock_add_ok, mock_op_... class TestGkeIpMasqStandardCoverage (line 169) | class TestGkeIpMasqStandardCoverage(unittest.TestCase): method setUp (line 172) | def setUp(self): method test_execute_found_cluster_by_name_only (line 190) | def test_execute_found_cluster_by_name_only(self, mock_add_ok, mock_op... method test_execute_skipped_when_cluster_name_not_found (line 209) | def test_execute_skipped_when_cluster_name_not_found(self, mock_add_sk... method test_execute_skipped_when_no_clusters_at_location (line 229) | def test_execute_skipped_when_no_clusters_at_location(self, mock_add_s... method test_nodeproblem_failed_on_no_logs (line 249) | def test_nodeproblem_failed_on_no_logs(self, mock_add_failed, mock_op_... method test_diagnostic_steps_uncertain_output (line 262) | def test_diagnostic_steps_uncertain_output(self, mock_add_uncertain, method test_gke_ip_masq_standard_end_info (line 281) | def test_gke_ip_masq_standard_end_info(self, mock_op_info): FILE: gcpdiag/runbook/gke/image_pull.py function local_realtime_query (line 27) | def local_realtime_query(filter_list): class ImagePull (line 36) | class ImagePull(runbook.DiagnosticTree): method legacy_parameter_handler (line 96) | def legacy_parameter_handler(self, parameters): method build_tree (line 100) | def build_tree(self): class ImagePullStart (line 127) | class ImagePullStart(runbook.StartStep): method execute (line 135) | def execute(self): class ImageNotFound (line 165) | class ImageNotFound(runbook.Step): method execute (line 169) | def execute(self): class ImageForbidden (line 204) | class ImageForbidden(runbook.Step): method execute (line 208) | def execute(self): class ImageDnsIssue (line 243) | class ImageDnsIssue(runbook.Step): method execute (line 247) | def execute(self): class ImageConnectionTimeoutRestrictedPrivate (line 283) | class ImageConnectionTimeoutRestrictedPrivate(runbook.Step): method execute (line 287) | def execute(self): class ImageConnectionTimeout (line 325) | class ImageConnectionTimeout(runbook.Step): method execute (line 329) | def execute(self): class ImageNotFoundInsufficientScope (line 366) | class ImageNotFoundInsufficientScope(runbook.Step): method execute (line 370) | def execute(self): class ImagePullEnd (line 406) | class ImagePullEnd(runbook.EndStep): method execute (line 416) | def execute(self): function format_log_entries (line 425) | def format_log_entries(log_entries): FILE: gcpdiag/runbook/gke/image_pull_test.py class MockMessage (line 26) | class MockMessage: method get_msg (line 29) | def get_msg(self, key, **kwargs): class Test (line 34) | class Test(snapshot_test_base.RulesSnapshotTestBase): class TestImagePull (line 48) | class TestImagePull(unittest.TestCase): method setUp (line 51) | def setUp(self): method test_image_pull_start_skips_when_logging_disabled (line 84) | def test_image_pull_start_skips_when_logging_disabled(self, mock_add_s... method test_image_pull_start_skips_when_cluster_not_found (line 105) | def test_image_pull_start_skips_when_cluster_not_found( method test_image_not_found_fails_when_logs_detected (line 136) | def test_image_not_found_fails_when_logs_detected(self, mock_op_get, method test_format_log_entries_handles_missing_labels (line 157) | def test_format_log_entries_handles_missing_labels(self): method test_legacy_parameter_handler_migrates_name_to_gke_cluster_name (line 166) | def test_legacy_parameter_handler_migrates_name_to_gke_cluster_name(se... method test_image_pull_end_shows_info_on_no_response (line 178) | def test_image_pull_end_shows_info_on_no_response(self, mock_op_info, class TestImagePullCoverage (line 190) | class TestImagePullCoverage(unittest.TestCase): method setUp (line 193) | def setUp(self): method test_local_realtime_query_correctly_calls_logs_query (line 209) | def test_local_realtime_query_correctly_calls_logs_query( method test_build_tree_constructs_correct_diagnostic_structure (line 229) | def test_build_tree_constructs_correct_diagnostic_structure( method test_diagnostic_steps_report_ok_when_no_logs_found (line 245) | def test_diagnostic_steps_report_ok_when_no_logs_found( method test_steps_fail_on_matching_log_entries (line 268) | def test_steps_fail_on_matching_log_entries(self, mock_op_get, method test_image_pull_start_succeeds_when_cluster_and_logging_active (line 297) | def test_image_pull_start_succeeds_when_cluster_and_logging_active( FILE: gcpdiag/runbook/gke/ip_exhaustion.py function local_realtime_query (line 25) | def local_realtime_query(filter_str): class IpExhaustion (line 33) | class IpExhaustion(runbook.DiagnosticTree): method legacy_parameter_handler (line 88) | def legacy_parameter_handler(self, parameters): method build_tree (line 92) | def build_tree(self): class IpExhaustionStart (line 110) | class IpExhaustionStart(runbook.StartStep): method execute (line 113) | def execute(self): class NodeIpRangeExhaustion (line 134) | class NodeIpRangeExhaustion(runbook.Step): method execute (line 144) | def execute(self): class PodIpRangeExhaustion (line 191) | class PodIpRangeExhaustion(runbook.Step): method execute (line 201) | def execute(self): class IpExhaustionEnd (line 280) | class IpExhaustionEnd(runbook.EndStep): method execute (line 287) | def execute(self): FILE: gcpdiag/runbook/gke/ip_exhaustion_test.py class MockMessage (line 26) | class MockMessage: method get_msg (line 29) | def get_msg(self, key, **kwargs): class Test (line 34) | class Test(snapshot_test_base.RulesSnapshotTestBase): class TestIpExhaustionUnit (line 48) | class TestIpExhaustionUnit(unittest.TestCase): method setUp (line 51) | def setUp(self): method test_local_realtime_query (line 83) | def test_local_realtime_query(self, mock_query, mock_op_get): method test_legacy_parameter_handler (line 97) | def test_legacy_parameter_handler(self): method test_start_step_cluster_not_found (line 109) | def test_start_step_cluster_not_found(self, mock_skip, mock_get_cluster, method test_node_exhaustion_detected (line 132) | def test_node_exhaustion_detected(self, mock_failed, mock_query, method test_pod_exhaustion_autopilot_detected (line 150) | def test_pod_exhaustion_autopilot_detected(self, mock_failed, mock_query, method test_end_step_resolution_confirmation (line 171) | def test_end_step_resolution_confirmation(self, mock_info, mock_prompt, method test_build_tree (line 184) | def test_build_tree(self): method test_start_step_cluster_found (line 202) | def test_start_step_cluster_found(self, mock_ok, mock_get_cluster, method test_node_exhaustion_not_found (line 222) | def test_node_exhaustion_not_found(self, mock_ok, mock_query, method test_pod_exhaustion_standard_cluster_detected (line 242) | def test_pod_exhaustion_standard_cluster_detected(self, mock_info, method test_pod_exhaustion_not_found (line 265) | def test_pod_exhaustion_not_found(self, mock_ok, mock_query, mock_get_... FILE: gcpdiag/runbook/gke/logs.py class Logs (line 25) | class Logs(runbook.DiagnosticTree): method legacy_parameter_handler (line 82) | def legacy_parameter_handler(self, parameters): method build_tree (line 86) | def build_tree(self): class LogsStart (line 108) | class LogsStart(runbook.StartStep): method execute (line 120) | def execute(self): class LoggingApiEnabled (line 168) | class LoggingApiEnabled(runbook.Step): method execute (line 179) | def execute(self): class ClusterLevelLoggingEnabled (line 193) | class ClusterLevelLoggingEnabled(runbook.Step): method execute (line 204) | def execute(self): class NodePoolCloudLoggingAccessScope (line 231) | class NodePoolCloudLoggingAccessScope(runbook.Step): method execute (line 243) | def execute(self): class ServiceAccountLoggingPermission (line 276) | class ServiceAccountLoggingPermission(runbook.Step): method execute (line 286) | def execute(self): class LoggingWriteApiQuotaExceeded (line 319) | class LoggingWriteApiQuotaExceeded(runbook.Step): method execute (line 329) | def execute(self): class LogsEnd (line 375) | class LogsEnd(runbook.EndStep): method execute (line 385) | def execute(self): FILE: gcpdiag/runbook/gke/logs_test.py class MockMessage (line 27) | class MockMessage: method get_msg (line 30) | def get_msg(self, key, **kwargs): class Test (line 35) | class Test(snapshot_test_base.RulesSnapshotTestBase): class TestGkeLogsSteps (line 49) | class TestGkeLogsSteps(unittest.TestCase): method setUp (line 52) | def setUp(self): method test_logs_start_skips_when_no_clusters (line 96) | def test_logs_start_skips_when_no_clusters(self): method test_logs_start_skips_when_cluster_not_found (line 104) | def test_logs_start_skips_when_cluster_not_found(self): method test_logging_api_failed_when_disabled (line 117) | def test_logging_api_failed_when_disabled(self, mock_is_enabled): method test_cluster_logging_fails_when_disabled (line 127) | def test_cluster_logging_fails_when_disabled(self, mock_get_obj): method test_nodepool_scope_fails_when_missing (line 141) | def test_nodepool_scope_fails_when_missing(self, mock_get_obj): method test_sa_permission_fails_when_missing_role (line 158) | def test_sa_permission_fails_when_missing_role(self, mock_get_obj, method test_quota_check_fails_when_exceeded (line 180) | def test_quota_check_fails_when_exceeded(self, mock_query): method test_logs_end_generates_report_on_no (line 202) | def test_logs_end_generates_report_on_no(self, mock_prompt): class TestGkeLogsCoverage (line 213) | class TestGkeLogsCoverage(unittest.TestCase): method setUp (line 216) | def setUp(self): method test_logs_start_branch_coverage (line 258) | def test_logs_start_branch_coverage(self): method test_logging_api_failed (line 276) | def test_logging_api_failed(self): method test_cluster_logging_disabled_logic (line 285) | def test_cluster_logging_disabled_logic(self, mock_get_obj): method test_nodepool_scope_coverage (line 301) | def test_nodepool_scope_coverage(self, mock_get_obj): method test_sa_permission_coverage (line 322) | def test_sa_permission_coverage(self, mock_get_obj): method test_quota_query_error_handling (line 344) | def test_quota_query_error_handling(self): method test_logs_start_location_mismatch_skips (line 358) | def test_logs_start_location_mismatch_skips(self): method test_cluster_logging_enabled_ok (line 374) | def test_cluster_logging_enabled_ok(self, mock_get_obj): method test_node_pool_missing_scope_fails (line 386) | def test_node_pool_missing_scope_fails(self, mock_get_obj): method test_node_pool_access_scope_ok (line 399) | def test_node_pool_access_scope_ok(self): method test_sa_missing_log_writer_role_fails (line 413) | def test_sa_missing_log_writer_role_fails(self, mock_get_obj): method test_sa_disabled_fails (line 428) | def test_sa_disabled_fails(self, mock_get_obj): method test_quota_exceeded_found_fails (line 441) | def test_quota_exceeded_found_fails(self): method test_quota_exceeded_no_data_ok (line 455) | def test_quota_exceeded_no_data_ok(self): method test_logs_end_triggers_report_on_no (line 463) | def test_logs_end_triggers_report_on_no(self): method test_logs_end_satisfied_concludes (line 473) | def test_logs_end_satisfied_concludes(self): FILE: gcpdiag/runbook/gke/monitoring_configuration.py class MonitoringConfiguration (line 24) | class MonitoringConfiguration(runbook.DiagnosticTree): method build_tree (line 72) | def build_tree(self): class MonitoringConfigurationStart (line 96) | class MonitoringConfigurationStart(runbook.StartStep): method execute (line 108) | def execute(self): class MonitoringApiConfigurationEnabled (line 166) | class MonitoringApiConfigurationEnabled(gke_gs.ApiEnabled): class ClusterLevelMonitoringConfigurationEnabled (line 179) | class ClusterLevelMonitoringConfigurationEnabled(runbook.Step): method execute (line 190) | def execute(self): class NodePoolCloudMonitoringAccessScopeConfiguration (line 263) | class NodePoolCloudMonitoringAccessScopeConfiguration(gke_gs.NodePoolSco... class ServiceAccountMonitoringPermissionConfiguration (line 282) | class ServiceAccountMonitoringPermissionConfiguration( class MonitoringConfigurationEnd (line 299) | class MonitoringConfigurationEnd(runbook.EndStep): method execute (line 309) | def execute(self): FILE: gcpdiag/runbook/gke/monitoring_configuration_test.py class Test (line 24) | class Test(snapshot_test_base.RulesSnapshotTestBase): class MockCluster (line 37) | class MockCluster: method __init__ (line 40) | def __init__( method has_monitoring_enabled (line 56) | def has_monitoring_enabled(self): method enabled_monitoring_components (line 59) | def enabled_monitoring_components(self): method __str__ (line 62) | def __str__(self): class MockNodePool (line 66) | class MockNodePool: method __init__ (line 69) | def __init__(self, taints=None): class TestMonitoringConfiguration (line 73) | class TestMonitoringConfiguration(unittest.TestCase): method test_start_step_no_clusters (line 80) | def test_start_step_no_clusters(self, mock_skipped, mock_crm, mock_gke, method test_start_step_cluster_not_found_with_name_and_location (line 97) | def test_start_step_cluster_not_found_with_name_and_location( method test_cluster_monitoring_entirely_disabled (line 125) | def test_cluster_monitoring_entirely_disabled(self, mock_failed, mock_... method test_cluster_monitoring_missing_gpu_metrics (line 144) | def test_cluster_monitoring_missing_gpu_metrics(self, mock_failed, moc... method test_cluster_monitoring_autopilot_skipped (line 168) | def test_cluster_monitoring_autopilot_skipped(self, mock_ok, mock_util, method test_end_step_user_not_satisfied (line 183) | def test_end_step_user_not_satisfied(self, mock_info, mock_prompt): class TestMonitoringConfigurationCoverage (line 194) | class TestMonitoringConfigurationCoverage(unittest.TestCase): method test_start_execute_no_clusters (line 201) | def test_start_execute_no_clusters(self, mock_op_get, mock_add_skipped, method test_start_execute_with_parameters (line 220) | def test_start_execute_with_parameters(self, mock_op_get, mock_get_clu... method test_cluster_level_monitoring_standard_path (line 248) | def test_cluster_level_monitoring_standard_path(self, mock_add_ok, method test_end_execute_satisfied (line 290) | def test_end_execute_satisfied(self, mock_op_info, mock_op_prompt): FILE: gcpdiag/runbook/gke/node_auto_repair.py function local_realtime_query (line 22) | def local_realtime_query(filter_str): function unallocatable_gpu_tpu (line 30) | def unallocatable_gpu_tpu(node, location=None, name=None, gpu=False, tpu... function check_node_unhealthy (line 76) | def check_node_unhealthy(node, class NodeAutoRepair (line 114) | class NodeAutoRepair(runbook.DiagnosticTree): method legacy_parameter_handler (line 162) | def legacy_parameter_handler(self, parameters): method build_tree (line 166) | def build_tree(self): class NodeAutoRepairStart (line 182) | class NodeAutoRepairStart(runbook.StartStep): method execute (line 185) | def execute(self): class NodeNotReady (line 237) | class NodeNotReady(runbook.Step): method execute (line 242) | def execute(self): class NodeDiskFull (line 261) | class NodeDiskFull(runbook.Step): method execute (line 266) | def execute(self): class UnallocatableGpu (line 285) | class UnallocatableGpu(runbook.Step): method execute (line 289) | def execute(self): class UnallocatableTpu (line 306) | class UnallocatableTpu(runbook.Step): method execute (line 310) | def execute(self): class NodeAutoRepairEnd (line 327) | class NodeAutoRepairEnd(runbook.EndStep): method execute (line 337) | def execute(self): FILE: gcpdiag/runbook/gke/node_auto_repair_test.py class Test (line 20) | class Test(snapshot_test_base.RulesSnapshotTestBase): class MockMessage (line 33) | class MockMessage: method __init__ (line 36) | def __init__(self): method __getitem__ (line 44) | def __getitem__(self, key): class NodeAutoRepairTest (line 48) | class NodeAutoRepairTest(unittest.TestCase): method setUp (line 51) | def setUp(self): method test_local_realtime_query_calls_logs_query (line 107) | def test_local_realtime_query_calls_logs_query(self, mock_query): method test_unallocatable_gpu_tpu_returns_false_if_no_events (line 112) | def test_unallocatable_gpu_tpu_returns_false_if_no_events( method test_unallocatable_gpu_tpu_returns_true_if_gpu_found (line 118) | def test_unallocatable_gpu_tpu_returns_true_if_gpu_found( method test_unallocatable_gpu_tpu_returns_true_if_tpu_found (line 124) | def test_unallocatable_gpu_tpu_returns_true_if_tpu_found( method test_check_node_unhealthy_returns_true_if_logs_found (line 130) | def test_check_node_unhealthy_returns_true_if_logs_found( method test_check_node_unhealthy_returns_false_if_no_logs (line 136) | def test_check_node_unhealthy_returns_false_if_no_logs( method test_node_auto_repair_legacy_parameter_handler_renames_flag (line 141) | def test_node_auto_repair_legacy_parameter_handler_renames_flag(self): method test_start_step_skips_if_no_clusters_found (line 149) | def test_start_step_skips_if_no_clusters_found(self): method test_start_step_skips_if_no_repair_operations_found (line 156) | def test_start_step_skips_if_no_repair_operations_found( method test_start_step_continues_if_repair_operations_found (line 165) | def test_start_step_continues_if_repair_operations_found( method test_node_not_ready_reports_failure_if_unhealthy (line 174) | def test_node_not_ready_reports_failure_if_unhealthy(self, mock_check): method test_node_not_ready_reports_ok_if_healthy (line 181) | def test_node_not_ready_reports_ok_if_healthy(self, mock_check): method test_node_disk_full_reports_failure_if_pressure_found (line 188) | def test_node_disk_full_reports_failure_if_pressure_found(self, mock_c... method test_unallocatable_gpu_reports_failure_if_detected (line 195) | def test_unallocatable_gpu_reports_failure_if_detected(self, mock_check): method test_unallocatable_tpu_reports_failure_if_detected (line 202) | def test_unallocatable_tpu_reports_failure_if_detected(self, mock_check): method test_end_step_finishes_without_info_if_satisfied (line 208) | def test_end_step_finishes_without_info_if_satisfied(self): method test_end_step_shows_info_if_not_satisfied (line 214) | def test_end_step_shows_info_if_not_satisfied(self): FILE: gcpdiag/runbook/gke/node_bootstrapping.py function get_node_instance (line 57) | def get_node_instance(project, location, node): function local_realtime_query (line 67) | def local_realtime_query(filter_str): function get_nrc_summary (line 75) | def get_nrc_summary(node, location): class NodeBootstrapping (line 101) | class NodeBootstrapping(runbook.DiagnosticTree): method legacy_parameter_handler (line 187) | def legacy_parameter_handler(self, parameters): method build_tree (line 191) | def build_tree(self): class NodeBootstrappingStart (line 203) | class NodeBootstrappingStart(runbook.StartStep): method execute (line 213) | def execute(self): class NodeInsertCheck (line 286) | class NodeInsertCheck(runbook.Step): method execute (line 292) | def execute(self): class NodeRegistrationSuccess (line 365) | class NodeRegistrationSuccess(runbook.Step): method execute (line 370) | def execute(self): class NodeBootstrappingEnd (line 612) | class NodeBootstrappingEnd(runbook.EndStep): method execute (line 622) | def execute(self): FILE: gcpdiag/runbook/gke/node_bootstrapping_test.py class MockDatetime (line 31) | class MockDatetime(datetime): method now (line 34) | def now(cls, tz=None): class Test (line 40) | class Test(snapshot_test_base.RulesSnapshotTestBase): class TestNodeBootstrappingCoverage (line 53) | class TestNodeBootstrappingCoverage(unittest.TestCase): method setUp (line 59) | def setUp(self): method create_mock_vm (line 103) | def create_mock_vm(self, is_gke=True, serial_enabled=True, running=True): method test_start_no_clusters_named (line 113) | def test_start_no_clusters_named(self): method test_start_no_clusters_at_all (line 122) | def test_start_no_clusters_at_all(self): method test_start_non_gke_node (line 132) | def test_start_non_gke_node(self): method test_insert_check_failed (line 144) | def test_insert_check_failed(self): method test_registration_too_young (line 158) | def test_registration_too_young(self): method test_registration_missing_permissions (line 168) | def test_registration_missing_permissions(self): method test_registration_repair_loop (line 180) | def test_registration_repair_loop(self): method test_registration_deleted_node_past_success (line 212) | def test_registration_deleted_node_past_success(self): method test_get_nrc_summary_logic (line 223) | def test_get_nrc_summary_logic(self): method test_insert_check_ok (line 244) | def test_insert_check_ok(self): method test_registration_start_time_after_boot (line 253) | def test_registration_start_time_after_boot(self): method test_registration_success_running (line 273) | def test_registration_success_running(self): method test_registration_failed_with_summary (line 288) | def test_registration_failed_with_summary(self): method test_registration_deleted_node_failed_summary (line 318) | def test_registration_deleted_node_failed_summary(self): method test_end_step_not_satisfied (line 344) | def test_end_step_not_satisfied(self): method test_get_nrc_summary_no_match (line 353) | def test_get_nrc_summary_no_match(self): method test_get_instance_http_error (line 360) | def test_get_instance_http_error(self): method test_start_no_logs_for_node (line 373) | def test_start_no_logs_for_node(self): method test_registration_uncertain_no_nrc_complete (line 385) | def test_registration_uncertain_no_nrc_complete(self): method test_node_not_running_nrc_did_not_complete_in_past (line 402) | def test_node_not_running_nrc_did_not_complete_in_past(self): method test_legacy_parameter_handler (line 414) | def test_legacy_parameter_handler(self): method test_build_tree (line 423) | def test_build_tree(self): FILE: gcpdiag/runbook/gke/node_unavailability.py function local_realtime_query (line 25) | def local_realtime_query(filter_str): class NodeUnavailability (line 35) | class NodeUnavailability(runbook.DiagnosticTree): method legacy_parameter_handler (line 80) | def legacy_parameter_handler(self, parameters): method build_tree (line 84) | def build_tree(self): class NodeUnavailabilityStart (line 100) | class NodeUnavailabilityStart(runbook.StartStep): method execute (line 103) | def execute(self): class LiveMigration (line 165) | class LiveMigration(runbook.Step): method execute (line 170) | def execute(self): class PreemptionCondition (line 184) | class PreemptionCondition(runbook.Step): method execute (line 189) | def execute(self): class NodeRemovedByAutoscaler (line 203) | class NodeRemovedByAutoscaler(runbook.Step): method execute (line 208) | def execute(self): class NodePoolUpgrade (line 237) | class NodePoolUpgrade(runbook.Step): method execute (line 242) | def execute(self): class NodeUnavailabilityEnd (line 273) | class NodeUnavailabilityEnd(runbook.EndStep): method execute (line 285) | def execute(self): FILE: gcpdiag/runbook/gke/node_unavailability_test.py class Test (line 25) | class Test(snapshot_test_base.RulesSnapshotTestBase): class MockMessage (line 38) | class MockMessage: method get_msg (line 41) | def get_msg(self, key, **kwargs): class TestNodeUnavailability (line 46) | class TestNodeUnavailability(unittest.TestCase): method setUp (line 49) | def setUp(self): method test_local_realtime_query (line 107) | def test_local_realtime_query(self, mock_realtime_query): method test_legacy_parameter_handler (line 112) | def test_legacy_parameter_handler(self): method test_build_tree (line 120) | def test_build_tree(self): method test_node_unavailability_start_no_clusters (line 127) | def test_node_unavailability_start_no_clusters(self): method test_node_unavailability_start_no_logs (line 135) | def test_node_unavailability_start_no_logs(self, mock_local_query): method test_live_migration_failed (line 143) | def test_live_migration_failed(self): method test_live_migration_ok (line 150) | def test_live_migration_ok(self): method test_preemption_failed (line 157) | def test_preemption_failed(self): method test_preemption_ok (line 164) | def test_preemption_ok(self): method test_autoscaler_removal_failed (line 172) | def test_autoscaler_removal_failed(self, mock_local_query): method test_autoscaler_removal_ok (line 181) | def test_autoscaler_removal_ok(self, mock_local_query): method test_node_pool_upgrade_failed (line 189) | def test_node_pool_upgrade_failed(self, mock_local_query): method test_node_pool_upgrade_ok (line 198) | def test_node_pool_upgrade_ok(self, mock_local_query): method test_node_unavailability_end_not_satisfied (line 205) | def test_node_unavailability_end_not_satisfied(self): FILE: gcpdiag/runbook/gke/resource_quotas.py class ResourceQuotas (line 28) | class ResourceQuotas(runbook.DiagnosticTree): method legacy_parameter_handler (line 75) | def legacy_parameter_handler(self, parameters): method build_tree (line 79) | def build_tree(self): class ResourceQuotasStart (line 96) | class ResourceQuotasStart(runbook.StartStep): method execute (line 107) | def execute(self): class ClusterVersion (line 129) | class ClusterVersion(runbook.Step): method execute (line 133) | def execute(self): class ResourceQuotaExceeded (line 153) | class ResourceQuotaExceeded(runbook.Step): method execute (line 160) | def execute(self): class ResourceQuotasEnd (line 210) | class ResourceQuotasEnd(runbook.EndStep): method execute (line 220) | def execute(self): FILE: gcpdiag/runbook/gke/resource_quotas_test.py class Test (line 26) | class Test(snapshot_test_base.RulesSnapshotTestBase): class MockMessage (line 40) | class MockMessage: method get_msg (line 43) | def get_msg(self, key, **kwargs): class TestResourceQuotas (line 48) | class TestResourceQuotas(unittest.TestCase): method setUp (line 51) | def setUp(self): method test_legacy_parameter_handler_renames_name_to_cluster_name (line 103) | def test_legacy_parameter_handler_renames_name_to_cluster_name(self): method test_build_tree_correctly_assembles_diagnostic_dag (line 111) | def test_build_tree_correctly_assembles_diagnostic_dag(self): method test_start_step_cluster_found_reports_ok (line 117) | def test_start_step_cluster_found_reports_ok(self): method test_start_step_cluster_not_found_reports_skipped (line 124) | def test_start_step_cluster_not_found_reports_skipped(self): method test_cluster_version_step_assigns_higher_version_template (line 131) | def test_cluster_version_step_assigns_higher_version_template(self): method test_cluster_version_step_assigns_lower_version_template (line 142) | def test_cluster_version_step_assigns_lower_version_template(self): method test_quota_exceeded_step_reports_failure_when_logs_found (line 154) | def test_quota_exceeded_step_reports_failure_when_logs_found( method test_quota_exceeded_step_reports_ok_when_no_logs_found (line 171) | def test_quota_exceeded_step_reports_ok_when_no_logs_found( method test_end_step_shows_info_on_negative_user_response (line 181) | def test_end_step_shows_info_on_negative_user_response(self): FILE: gcpdiag/runbook/iam/generalized_steps.py class VmHasAnActiveServiceAccount (line 24) | class VmHasAnActiveServiceAccount(runbook.Step): method execute (line 44) | def execute(self): class IamPolicyCheck (line 80) | class IamPolicyCheck(runbook.Step): method execute (line 105) | def execute(self): FILE: gcpdiag/runbook/interconnect/bgp_down_flap.py function get_time_delta (line 33) | def get_time_delta(t1: str, t2: str) -> str: function local_realtime_query (line 52) | def local_realtime_query(in_start_time, in_end_time, filter_str): class BgpDownFlap (line 71) | class BgpDownFlap(runbook.DiagnosticTree): method build_tree (line 116) | def build_tree(self): class BgpDownFlapStart (line 135) | class BgpDownFlapStart(runbook.StartStep): method execute (line 149) | def execute(self): class CheckBgpDown (line 195) | class CheckBgpDown(runbook.Step): method execute (line 202) | def execute(self): class CheckInterconnectMaintenance (line 270) | class CheckInterconnectMaintenance(runbook.Step): method execute (line 277) | def execute(self): class CheckCloudRouterMaintenance (line 334) | class CheckCloudRouterMaintenance(runbook.Step): method execute (line 342) | def execute(self): class CheckBgpFlap (line 485) | class CheckBgpFlap(runbook.Step): method execute (line 493) | def execute(self): class BgpDownFlapEnd (line 740) | class BgpDownFlapEnd(runbook.EndStep): method execute (line 753) | def execute(self): FILE: gcpdiag/runbook/interconnect/bgp_down_flap_test.py class Test (line 28) | class Test(snapshot_test_base.RulesSnapshotTestBase): class TestBgpDownFlap (line 56) | class TestBgpDownFlap(unittest.TestCase): method setUp (line 59) | def setUp(self): method tearDown (line 104) | def tearDown(self): method _create_vlan_mock (line 108) | def _create_vlan_mock(self, name='vlan1', ipv4='2.2.2.2'): method test_get_time_delta (line 119) | def test_get_time_delta(self): method test_local_realtime_query (line 124) | def test_local_realtime_query(self): method test_start_step_handles_api_failure (line 128) | def test_start_step_handles_api_failure(self): method test_check_bgp_down_detects_failure (line 136) | def test_check_bgp_down_detects_failure(self): method test_check_bgp_down_ok (line 170) | def test_check_bgp_down_ok(self): method test_start_step_ok (line 185) | def test_start_step_ok(self): method test_start_step_attachment_not_found (line 193) | def test_start_step_attachment_not_found(self): method test_check_ic_maintenance_skipped_no_errors (line 202) | def test_check_ic_maintenance_skipped_no_errors(self): method test_check_ic_maintenance_skipped_no_links (line 209) | def test_check_ic_maintenance_skipped_no_links(self): method test_check_ic_maintenance_ok (line 217) | def test_check_ic_maintenance_ok(self): method test_check_ic_maintenance_unexplained_down (line 228) | def test_check_ic_maintenance_unexplained_down(self): method test_check_cr_maintenance_detects_unexplained_flap (line 240) | def test_check_cr_maintenance_detects_unexplained_flap(self): method test_check_cr_maintenance_skipped_no_uncertain_flaps (line 270) | def test_check_cr_maintenance_skipped_no_uncertain_flaps(self): method test_check_cr_maintenance_ok (line 277) | def test_check_cr_maintenance_ok(self): method test_check_bgp_flap_logic (line 316) | def test_check_bgp_flap_logic(self): method test_check_bgp_flap_skipped_on_api_error (line 348) | def test_check_bgp_flap_skipped_on_api_error(self): method test_check_bgp_flap_ok_no_flaps (line 356) | def test_check_bgp_flap_ok_no_flaps(self): method test_check_bgp_flap_uncertain (line 366) | def test_check_bgp_flap_uncertain(self): method test_check_bgp_flap_log_reversal (line 397) | def test_check_bgp_flap_log_reversal(self): method test_end_step (line 428) | def test_end_step(self): FILE: gcpdiag/runbook/lb/latency.py class Latency (line 24) | class Latency(runbook.DiagnosticTree): method build_tree (line 81) | def build_tree(self): class LbLatencyStart (line 100) | class LbLatencyStart(runbook.StartStep): method execute (line 103) | def execute(self): class LbBackendLatencyCheck (line 150) | class LbBackendLatencyCheck(runbook.Step): method execute (line 155) | def execute(self): class LbRequestCountCheck (line 263) | class LbRequestCountCheck(runbook.Step): method __init__ (line 266) | def __init__(self, average_request_count=0, **kwargs): method execute (line 272) | def execute(self): method get_average_request_count (line 366) | def get_average_request_count(self): class LbErrorRateCheck (line 371) | class LbErrorRateCheck(runbook.Step): method __init__ (line 374) | def __init__(self, average_request_count=None, **kwargs): method execute (line 380) | def execute(self): class LatencyEnd (line 505) | class LatencyEnd(runbook.EndStep): method execute (line 512) | def execute(self): FILE: gcpdiag/runbook/lb/latency_test.py class Test (line 31) | class Test(snapshot_test_base.RulesSnapshotTestBase): class TestLatencyLogic (line 56) | class TestLatencyLogic(unittest.TestCase): method setUp (line 59) | def setUp(self): method test_start_step_unspecified_type (line 82) | def test_start_step_unspecified_type(self, mock_skip, mock_get_fr): method test_start_step_unsupported_type (line 96) | def test_start_step_unsupported_type(self, mock_skip, mock_get_fr): method test_backend_latency_exception (line 111) | def test_backend_latency_exception(self, mock_info, mock_get_fr, mock_... method test_backend_latency_empty_values (line 125) | def test_backend_latency_empty_values(self, mock_get_fr, mock_query): method test_backend_latency_regional_external (line 137) | def test_backend_latency_regional_external(self, mock_get_fr, mock_que... method test_backend_latency_regional_internal (line 158) | def test_backend_latency_regional_internal(self, mock_get_fr, mock_que... method test_request_count_regional_external (line 179) | def test_request_count_regional_external(self, mock_get_fr, mock_query): method test_request_count_regional_internal (line 200) | def test_request_count_regional_internal(self, mock_get_fr, mock_query): method test_error_rate_calculation_and_regional_internal (line 221) | def test_error_rate_calculation_and_regional_internal(self, mock_get_fr, method test_latency_end_yes (line 244) | def test_latency_end_yes(self, mock_info, unused_mock_prompt, method test_start_step_compute_disabled (line 256) | def test_start_step_compute_disabled(self, mock_skip, unused_mock_is_e... method test_start_step_http_error (line 266) | def test_start_step_http_error(self, mock_skip, mock_get_fr): method test_request_count_exception (line 278) | def test_request_count_exception(self, mock_info, mock_get_fr, mock_qu... method test_get_average_request_count (line 288) | def test_get_average_request_count(self): method test_error_rate_regional_external (line 295) | def test_error_rate_regional_external(self, mock_get_fr, mock_query): method test_error_rate_empty_values (line 314) | def test_error_rate_empty_values(self, mock_get_fr, mock_query): method test_error_rate_zero_qps (line 324) | def test_error_rate_zero_qps(self, mock_get_fr, mock_query): method test_error_rate_exception (line 335) | def test_error_rate_exception(self, mock_info, mock_get_fr, mock_query): FILE: gcpdiag/runbook/lb/ssl_certificates.py class SslCertificates (line 30) | class SslCertificates(runbook.DiagnosticTree): method build_tree (line 71) | def build_tree(self): class SslCertificatesStart (line 97) | class SslCertificatesStart(runbook.StartStep): method name (line 105) | def name(self): method execute (line 109) | def execute(self): class AnalyzeCertificateStatus (line 151) | class AnalyzeCertificateStatus(runbook.Gateway): method name (line 159) | def name(self): method execute (line 163) | def execute(self): class AnalyzeDomainStatuses (line 212) | class AnalyzeDomainStatuses(runbook.Gateway): method name (line 220) | def name(self): method execute (line 225) | def execute(self): class AnalyzeFailedNotVisibleDomains (line 280) | class AnalyzeFailedNotVisibleDomains(runbook.Step): method name (line 289) | def name(self): method execute (line 293) | def execute(self): class AnalyzeProvisioningDomains (line 308) | class AnalyzeProvisioningDomains(runbook.Step): method name (line 317) | def name(self): method execute (line 321) | def execute(self): class AnalyzeRateLimitedDomains (line 336) | class AnalyzeRateLimitedDomains(runbook.Step): method name (line 345) | def name(self): method execute (line 350) | def execute(self): class AnalyzeFailedCaaCheck (line 363) | class AnalyzeFailedCaaCheck(runbook.Step): method name (line 372) | def name(self): method execute (line 377) | def execute(self): class CheckCertificateAttachment (line 390) | class CheckCertificateAttachment(runbook.Gateway): method name (line 402) | def name(self): method execute (line 406) | def execute(self): class VerifyDnsRecords (line 514) | class VerifyDnsRecords(runbook.Gateway): method name (line 524) | def name(self): method execute (line 529) | def execute(self): class VerifyForwardingRulesPort (line 609) | class VerifyForwardingRulesPort(runbook.Step): method name (line 622) | def name(self): method execute (line 626) | def execute(self): method is_port_in_range (line 661) | def is_port_in_range(self, port: int, port_range: str): class VerifyNoCertificateMapConflict (line 670) | class VerifyNoCertificateMapConflict(runbook.Step): method name (line 679) | def name(self): method execute (line 683) | def execute(self): class CheckProvisioningTime (line 716) | class CheckProvisioningTime(runbook.Step): method name (line 726) | def name(self): method execute (line 730) | def execute(self): class SslCertificatesEnd (line 810) | class SslCertificatesEnd(runbook.EndStep): method execute (line 813) | def execute(self): FILE: gcpdiag/runbook/lb/ssl_certificates_test.py class Test (line 20) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/runbook/lb/unhealthy_backends.py class UnhealthyBackends (line 32) | class UnhealthyBackends(runbook.DiagnosticTree): method build_tree (line 95) | def build_tree(self): class UnhealthyBackendsStart (line 190) | class UnhealthyBackendsStart(runbook.StartStep): method name (line 206) | def name(self): method execute (line 211) | def execute(self): class CheckVmPerformance (line 383) | class CheckVmPerformance(runbook.CompositeStep): method name (line 393) | def name(self): method execute (line 398) | def execute(self): class VerifyFirewallRules (line 445) | class VerifyFirewallRules(runbook.Step): method name (line 455) | def name(self): method execute (line 460) | def execute(self): class ValidateBackendServicePortConfiguration (line 506) | class ValidateBackendServicePortConfiguration(runbook.Step): method name (line 517) | def name(self): method execute (line 522) | def execute(self): method _normalize_url (line 626) | def _normalize_url(self, url): method _format_affected_instance_groups (line 650) | def _format_affected_instance_groups(self, impacted_instance_groups, method _get_port_numbers_by_name (line 662) | def _get_port_numbers_by_name(self, impacted_instance_group, class ValidateBackendServiceProtocolConfiguration (line 671) | class ValidateBackendServiceProtocolConfiguration(runbook.Step): method name (line 682) | def name(self): method execute (line 687) | def execute(self): class VerifyHealthCheckLoggingEnabled (line 726) | class VerifyHealthCheckLoggingEnabled(runbook.Gateway): method name (line 738) | def name(self): method execute (line 743) | def execute(self): class AnalyzeLatestHealthCheckLog (line 784) | class AnalyzeLatestHealthCheckLog(runbook.Gateway): method name (line 796) | def name(self): method execute (line 801) | def execute(self): class AnalyzeTimeoutHealthCheckLog (line 913) | class AnalyzeTimeoutHealthCheckLog(runbook.Step): method name (line 925) | def name(self): method execute (line 930) | def execute(self): class AnalyzeUnhealthyHealthCheckLog (line 966) | class AnalyzeUnhealthyHealthCheckLog(runbook.Step): method name (line 978) | def name(self): method execute (line 983) | def execute(self): class AnalyzeUnknownHealthCheckLog (line 1016) | class AnalyzeUnknownHealthCheckLog(runbook.Step): method name (line 1026) | def name(self): method execute (line 1031) | def execute(self): class CheckPastHealthCheckSuccess (line 1041) | class CheckPastHealthCheckSuccess(runbook.Step): method name (line 1052) | def name(self): method execute (line 1057) | def execute(self): class UnhealthyBackendsEnd (line 1152) | class UnhealthyBackendsEnd(runbook.EndStep): method execute (line 1159) | def execute(self): function get_health_check_success_criteria (line 1176) | def get_health_check_success_criteria(health_check: gce.HealthCheck): function _get_timing_and_threshold_info (line 1216) | def _get_timing_and_threshold_info(health_check: gce.HealthCheck) -> str: function _get_zonal_network_endpoint_group (line 1233) | def _get_zonal_network_endpoint_group( FILE: gcpdiag/runbook/lb/unhealthy_backends_test.py class Test (line 20) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/runbook/logs/generalized_steps.py class CheckIssueLogEntry (line 24) | class CheckIssueLogEntry(runbook.Step): method execute (line 44) | def execute(self): function _pattern_exists_in_entries (line 99) | def _pattern_exists_in_entries(issue_pattern, fetched_logs): FILE: gcpdiag/runbook/monitoring/generalized_steps.py class TimeSeriesCheck (line 22) | class TimeSeriesCheck(runbook.Step): method execute (line 34) | def execute(self): FILE: gcpdiag/runbook/nat/generalized_steps.py class NatIpExhaustionCheck (line 23) | class NatIpExhaustionCheck(runbook.Step): method execute (line 31) | def execute(self): class NatResourceExhaustionCheck (line 71) | class NatResourceExhaustionCheck(runbook.Step): method execute (line 80) | def execute(self): class NatDroppedReceivedPacketCheck (line 126) | class NatDroppedReceivedPacketCheck(runbook.Step): method execute (line 136) | def execute(self): FILE: gcpdiag/runbook/nat/generalized_steps_test.py class MockMessage (line 26) | class MockMessage: method get_msg (line 32) | def get_msg(self, key, **kwargs): class MockMonitoringResult (line 37) | class MockMonitoringResult: method __init__ (line 39) | def __init__(self, data): method values (line 42) | def values(self): method __bool__ (line 45) | def __bool__(self): function make_ip_exhaustion_result (line 49) | def make_ip_exhaustion_result(is_failed): function make_resource_exhaustion_result (line 55) | def make_resource_exhaustion_result(value, reason='OUT_OF_RESOURCES'): function make_dropped_received_packet_result (line 66) | def make_dropped_received_packet_result(value): function make_vm_dropped_received_packet_result (line 72) | def make_vm_dropped_received_packet_result(vm_drops): class NatStepsTest (line 85) | class NatStepsTest(unittest.TestCase): method setUp (line 87) | def setUp(self): method test_nat_ip_exhaustion_check_failed (line 120) | def test_nat_ip_exhaustion_check_failed(self): method test_nat_ip_exhaustion_check_ok (line 132) | def test_nat_ip_exhaustion_check_ok(self): method test_nat_ip_exhaustion_check_no_gw_name (line 144) | def test_nat_ip_exhaustion_check_no_gw_name(self): method test_nat_ip_exhaustion_check_no_monitoring_data (line 155) | def test_nat_ip_exhaustion_check_no_monitoring_data(self): class NatResourceExhaustionCheckTest (line 168) | class NatResourceExhaustionCheckTest(NatStepsTest): method test_nat_resource_exhaustion_check_failed (line 170) | def test_nat_resource_exhaustion_check_failed(self): method test_nat_resource_exhaustion_check_ok (line 182) | def test_nat_resource_exhaustion_check_ok(self): method test_nat_resource_exhaustion_check_no_gw_name (line 194) | def test_nat_resource_exhaustion_check_no_gw_name(self): method test_nat_resource_exhaustion_check_no_monitoring_data (line 205) | def test_nat_resource_exhaustion_check_no_monitoring_data(self): class NatDroppedReceivedPacketCheckTest (line 218) | class NatDroppedReceivedPacketCheckTest(NatStepsTest): method test_nat_dropped_received_packet_check_ok (line 220) | def test_nat_dropped_received_packet_check_ok(self): method test_nat_dropped_received_packet_check_no_gw_name (line 233) | def test_nat_dropped_received_packet_check_no_gw_name(self): method test_nat_dropped_received_packet_check_no_monitoring_data (line 245) | def test_nat_dropped_received_packet_check_no_monitoring_data(self): method test_nat_dropped_received_packet_check_gw_drops_no_vm_drops_data (line 258) | def test_nat_dropped_received_packet_check_gw_drops_no_vm_drops_data(s... method test_nat_dropped_received_packet_check_gw_drops_vm_drops_below_threshold (line 272) | def test_nat_dropped_received_packet_check_gw_drops_vm_drops_below_thr... method test_nat_dropped_received_packet_check_gw_drops_with_vm_drops (line 288) | def test_nat_dropped_received_packet_check_gw_drops_with_vm_drops(self): FILE: gcpdiag/runbook/nat/public_nat_ip_allocation_failed.py class PublicNatIpAllocationFailed (line 24) | class PublicNatIpAllocationFailed(runbook.DiagnosticTree): method legacy_parameter_handler (line 76) | def legacy_parameter_handler(self, parameters): method build_tree (line 81) | def build_tree(self): class NatIpAllocationFailedStart (line 98) | class NatIpAllocationFailedStart(runbook.StartStep): method execute (line 112) | def execute(self): class NatAllocationFailedCheck (line 182) | class NatAllocationFailedCheck(runbook.Step): method execute (line 192) | def execute(self): class NatIpAllocationMethodCheck (line 261) | class NatIpAllocationMethodCheck(runbook.Gateway): method execute (line 269) | def execute(self): class NatIpAllocationAutoOnly (line 316) | class NatIpAllocationAutoOnly(runbook.Step): method execute (line 326) | def execute(self): class NatIpAllocationManualOnly (line 337) | class NatIpAllocationManualOnly(runbook.Step): method execute (line 347) | def execute(self): class NatIpAllocationFailedEnd (line 446) | class NatIpAllocationFailedEnd(runbook.EndStep): method execute (line 455) | def execute(self): FILE: gcpdiag/runbook/nat/public_nat_ip_allocation_failed_test.py class Test (line 28) | class Test(snapshot_test_base.RulesSnapshotTestBase): class MockMessage (line 42) | class MockMessage: method get_msg (line 48) | def get_msg(self, key, **kwargs): class MockMonitoringResult (line 53) | class MockMonitoringResult: method __init__ (line 55) | def __init__(self, data): method values (line 58) | def values(self): method __bool__ (line 61) | def __bool__(self): function make_ip_exhaustion_result (line 65) | def make_ip_exhaustion_result(is_failed): class MockRouterStatus (line 71) | class MockRouterStatus: method __init__ (line 73) | def __init__(self, min_extra_nat_ips_needed, num_vms_with_nat_mappings): class MockNatIpInfo (line 78) | class MockNatIpInfo: method __init__ (line 80) | def __init__(self, result): class MockRouter (line 84) | class MockRouter: method __init__ (line 87) | def __init__(self, method get_nat_ip_allocate_option (line 97) | def get_nat_ip_allocate_option(self, nat_gateway): method get_enable_dynamic_port_allocation (line 101) | def get_enable_dynamic_port_allocation(self, nat_gateway): class PublicNatIpAllocationFailedTest (line 106) | class PublicNatIpAllocationFailedTest(unittest.TestCase): method setUp (line 108) | def setUp(self): method test_legacy_parameter_handler_network_present (line 159) | def test_legacy_parameter_handler_network_present(self): method test_start_step_get_network_fails (line 168) | def test_start_step_get_network_fails(self): method test_start_step_get_routers_fails (line 181) | def test_start_step_get_routers_fails(self): method test_start_step_router_not_found (line 194) | def test_start_step_router_not_found(self): method test_start_step_nat_gw_not_found (line 208) | def test_start_step_nat_gw_not_found(self): method test_nat_allocation_failed_check_no_router_status (line 222) | def test_nat_allocation_failed_check_no_router_status(self): method test_nat_allocation_failed_check_monitoring_returns_none (line 235) | def test_nat_allocation_failed_check_monitoring_returns_none(self): method test_nat_allocation_failed_check_failed_metric (line 246) | def test_nat_allocation_failed_check_failed_metric(self): method test_nat_allocation_failed_check_extra_ips_needed (line 258) | def test_nat_allocation_failed_check_extra_ips_needed(self): method test_nat_allocation_failed_check_ok (line 270) | def test_nat_allocation_failed_check_ok(self): method test_nat_ip_allocation_method_check_auto (line 283) | def test_nat_ip_allocation_method_check_auto(self): method test_nat_ip_allocation_method_check_manual (line 300) | def test_nat_ip_allocation_method_check_manual(self): method test_nat_ip_allocation_auto_only (line 318) | def test_nat_ip_allocation_auto_only(self): method test_nat_ip_allocation_manual_only_needs_quota (line 327) | def test_nat_ip_allocation_manual_only_needs_quota(self): method test_nat_ip_allocation_manual_only_ok (line 353) | def test_nat_ip_allocation_manual_only_ok(self): method test_end_step (line 380) | def test_end_step(self): method test_build_tree (line 391) | def test_build_tree(self): method test_nat_ip_allocation_manual_only_no_router_status (line 397) | def test_nat_ip_allocation_manual_only_no_router_status(self): method test_nat_ip_allocation_method_check_get_network_fails (line 419) | def test_nat_ip_allocation_method_check_get_network_fails(self): method test_nat_ip_allocation_method_check_get_routers_fails (line 431) | def test_nat_ip_allocation_method_check_get_routers_fails(self): method test_nat_ip_allocation_method_check_no_router_found (line 443) | def test_nat_ip_allocation_method_check_no_router_found(self): method test_end_step_interactive_no (line 456) | def test_end_step_interactive_no(self): method test_nat_ip_allocation_manual_only_get_network_fails (line 467) | def test_nat_ip_allocation_manual_only_get_network_fails(self): method test_nat_ip_allocation_manual_only_get_routers_fails (line 479) | def test_nat_ip_allocation_manual_only_get_routers_fails(self): method test_nat_ip_allocation_manual_only_no_nat_ip_info (line 491) | def test_nat_ip_allocation_manual_only_no_nat_ip_info(self): method test_nat_ip_allocation_manual_only_no_routers_list_found (line 506) | def test_nat_ip_allocation_manual_only_no_routers_list_found(self): method test_end_step_interactive_yes (line 515) | def test_end_step_interactive_yes(self): class PublicNatIpAllocationFailedStubDataTest (line 526) | class PublicNatIpAllocationFailedStubDataTest(unittest.TestCase): method setUp (line 528) | def setUp(self): method test_start_step_success_with_stub_data (line 559) | def test_start_step_success_with_stub_data(self): method test_end_step_interactive_yes (line 569) | def test_end_step_interactive_yes(self): FILE: gcpdiag/runbook/nat/utils.py function region_from_zone (line 20) | def region_from_zone(zone: str) -> str: FILE: gcpdiag/runbook/nat/utils_test.py class RegionFromZoneTest (line 21) | class RegionFromZoneTest(unittest.TestCase): method test_region_from_zone (line 24) | def test_region_from_zone(self): method test_no_match (line 31) | def test_no_match(self): FILE: gcpdiag/runbook/op.py class Operator (line 29) | class Operator: method __init__ (line 40) | def __init__( method set_run_id (line 48) | def set_run_id(self, run_id): method set_parameters (line 51) | def set_parameters(self, p): method create_context (line 54) | def create_context(self, method set_messages (line 67) | def set_messages(self, m): method set_step (line 70) | def set_step(self, s): method set_tree (line 73) | def set_tree(self, t): method step (line 77) | def step(self): method tree (line 81) | def tree(self): function operator_context (line 86) | def operator_context(new_operator): function _get_operator (line 94) | def _get_operator(): function prep_msg (line 106) | def prep_msg(key, **kwargs): function get (line 135) | def get(key, default=None): function put (line 159) | def put(key, value): function prompt (line 177) | def prompt(message: str, function info (line 212) | def info(message: str, step_type='INFO') -> None: function prep_rca (line 222) | def prep_rca(resource: Optional[models.Resource], template, suffix, function add_skipped (line 234) | def add_skipped(resource: Optional[models.Resource], reason: str) -> None: function add_ok (line 244) | def add_ok(resource: models.Resource, reason: str) -> None: function add_failed (line 254) | def add_failed(resource: models.Resource, reason: str, remediation: str)... function add_uncertain (line 266) | def add_uncertain(resource: models.Resource, function get_step_outcome (line 282) | def get_step_outcome(execution_id) -> Tuple[Any, dict]: function step_ok (line 302) | def step_ok(execution_id) -> bool: function step_failed (line 308) | def step_failed(execution_id) -> bool: function step_uncertain (line 314) | def step_uncertain(execution_id) -> bool: function step_skipped (line 320) | def step_skipped(execution_id) -> bool: function step_unexecuted (line 326) | def step_unexecuted(execution_id) -> bool: function add_metadata (line 332) | def add_metadata(key, value): function get_metadata (line 342) | def get_metadata(key, step_execution_id=None): function get_all_metadata (line 350) | def get_all_metadata(step_execution_id=None): function get_context (line 358) | def get_context(**kwargs) -> models.Context: FILE: gcpdiag/runbook/op_test.py function with_operator_context (line 23) | def with_operator_context(test_method): class OperatorTest (line 94) | class OperatorTest(unittest.TestCase): method test_positive_step_overall_status_case (line 98) | def test_positive_step_overall_status_case(self): method test_negative_step_overall_status_case (line 106) | def test_negative_step_overall_status_case(self): method test_get_and_put_parameters (line 114) | def test_get_and_put_parameters(self): method test_get_step_outcome (line 122) | def test_get_step_outcome(self): method test_add_and_get_metadata (line 132) | def test_add_and_get_metadata(self): method test_add_info_metadata (line 144) | def test_add_info_metadata(self): method test_get_context_with_create (line 153) | def test_get_context_with_create(self): method test_get_context_lazy_init (line 160) | def test_get_context_lazy_init(self): method test_get_context_with_kwargs (line 172) | def test_get_context_with_kwargs(self): method test_operator_properties (line 179) | def test_operator_properties(self): method test_get_operator_no_context_error (line 191) | def test_get_operator_no_context_error(self): method test_prep_msg (line 196) | def test_prep_msg(self): method test_prompt (line 210) | def test_prompt(self): method test_prep_rca (line 219) | def test_prep_rca(self): method test_reporting_actions (line 234) | def test_reporting_actions(self): FILE: gcpdiag/runbook/output/api_output.py class ApiOutput (line 22) | class ApiOutput(BaseOutput): method __init__ (line 25) | def __init__(self, execution_id=None): method get_logging_handler (line 29) | def get_logging_handler(self) -> logging.Handler: method _get_log_format (line 35) | def _get_log_format(self): FILE: gcpdiag/runbook/output/base_output.py class BaseOutput (line 22) | class BaseOutput: method print_ok (line 25) | def print_ok(self, resource: models.Resource, reason: str = '') -> None: method print_skipped (line 28) | def print_skipped(self, method print_failed (line 34) | def print_failed(self, resource: models.Resource, reason: str, method print_uncertain (line 38) | def print_uncertain(self, method prompt (line 44) | def prompt(self, method info (line 52) | def info(self, message: str, step_type='INFO'): method display_runbook_description (line 55) | def display_runbook_description(self, tree) -> None: method get_logging_handler (line 58) | def get_logging_handler(self) -> logging.Handler: class _LoggingHandler (line 62) | class _LoggingHandler(logging.Handler): method __init__ (line 65) | def __init__(self, stream_config=None): method emit (line 75) | def emit(self, record): FILE: gcpdiag/runbook/output/terminal_output.py function is_cloud_shell (line 35) | def is_cloud_shell(): function emoji_wrap (line 39) | def emoji_wrap(char): class TerminalOutput (line 47) | class TerminalOutput(BaseOutput): method __init__ (line 57) | def __init__(self, method display_banner (line 70) | def display_banner(self) -> None: method display_header (line 76) | def display_header(self) -> None: method display_runbook_description (line 79) | def display_runbook_description(self, tree): method display_footer (line 82) | def display_footer(self, result) -> None: method get_logging_handler (line 90) | def get_logging_handler(self) -> logging.Handler: method print_line (line 93) | def print_line(self, text: str = '') -> None: method _wrap_indent (line 97) | def _wrap_indent(self, text: str, prefix: str) -> str: method _italic (line 102) | def _italic(self, text: str) -> str: method terminal_update_line (line 109) | def terminal_update_line(self, text: str) -> None: method terminal_erase_line (line 122) | def terminal_erase_line(self) -> None: method terminal_print_line (line 131) | def terminal_print_line(self, text: str = '') -> None: method _print_rule_header (line 142) | def _print_rule_header(self, rule: 'runbook.DiagnosticTree') -> None: method _print_long_desc (line 150) | def _print_long_desc(self, rule: 'runbook.DiagnosticTree') -> None: method print_skipped (line 157) | def print_skipped(self, method print_ok (line 176) | def print_ok(self, resource: models.Resource, reason: str = '') -> None: method print_failed (line 188) | def print_failed(self, resource: models.Resource, reason: str, method print_uncertain (line 211) | def print_uncertain(self, method info (line 229) | def info(self, message: str, step_type='INFO'): method prompt (line 236) | def prompt(self, class _LoggingHandler (line 300) | class _LoggingHandler(logging.Handler): method __init__ (line 304) | def __init__(self, output: TerminalOutput) -> None: method format (line 308) | def format(self, record: logging.LogRecord) -> str: method emit (line 311) | def emit(self, record: logging.LogRecord) -> None: FILE: gcpdiag/runbook/pubsub/bigquery_subscription_delivery.py class BigquerySubscriptionDelivery (line 37) | class BigquerySubscriptionDelivery(runbook.DiagnosticTree): method build_tree (line 63) | def build_tree(self): class StartStep (line 99) | class StartStep(runbook.StartStep): method execute (line 103) | def execute(self): class SubscriptionExistenceCheck (line 127) | class SubscriptionExistenceCheck(runbook.Step): method execute (line 131) | def execute(self): class BigQueryTableExistenceCheck (line 159) | class BigQueryTableExistenceCheck(runbook.Step): method execute (line 163) | def execute(self): class BigQueryWriterPermissionCheck (line 193) | class BigQueryWriterPermissionCheck(runbook.Step): method execute (line 197) | def execute(self): class SubscriptionStatusCheck (line 243) | class SubscriptionStatusCheck(runbook.Step): method execute (line 247) | def execute(self): class InvestigateBQPushErrors (line 266) | class InvestigateBQPushErrors(runbook.Step): method execute (line 271) | def execute(self): class EndStep (line 305) | class EndStep(runbook.EndStep): method execute (line 308) | def execute(self): FILE: gcpdiag/runbook/pubsub/bigquery_subscription_delivery_test.py class Test (line 20) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/runbook/pubsub/gcs_subscription_delivery.py class GcsSubscriptionDelivery (line 37) | class GcsSubscriptionDelivery(runbook.DiagnosticTree): method build_tree (line 62) | def build_tree(self): class GcsSubscriptionDeliveryStart (line 97) | class GcsSubscriptionDeliveryStart(runbook.StartStep): method execute (line 105) | def execute(self): class GcsSubscriptionExistenceCheck (line 129) | class GcsSubscriptionExistenceCheck(runbook.Step): method execute (line 137) | def execute(self): class CheckGcsBucket (line 165) | class CheckGcsBucket(runbook.Step): method execute (line 173) | def execute(self): class CheckServiceAccountPermissions (line 199) | class CheckServiceAccountPermissions(runbook.Step): method execute (line 207) | def execute(self): class ResponseCodeStep (line 258) | class ResponseCodeStep(runbook.Step): method execute (line 267) | def execute(self): class GcsSubscriptionDeliveryEnd (line 301) | class GcsSubscriptionDeliveryEnd(runbook.EndStep): method execute (line 307) | def execute(self): FILE: gcpdiag/runbook/pubsub/gcs_subscription_delivery_test.py class Test (line 20) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/runbook/pubsub/generalized_steps.py class PubsubQuotas (line 26) | class PubsubQuotas(runbook.Step): method execute (line 34) | def execute(self): method quota_exceeded_found (line 48) | def quota_exceeded_found(self) -> bool: class ThroughputQualification (line 59) | class ThroughputQualification(runbook.Step): method execute (line 67) | def execute(self): class ActiveSubscription (line 101) | class ActiveSubscription(runbook.Step): method execute (line 109) | def execute(self): class DeadLetterTopic (line 122) | class DeadLetterTopic(runbook.Step): method execute (line 132) | def execute(self): class DeadLetterTopicPermissions (line 146) | class DeadLetterTopicPermissions(runbook.Step): method execute (line 156) | def execute(self): FILE: gcpdiag/runbook/pubsub/pull_subscription_delivery.py class PullSubscriptionDelivery (line 44) | class PullSubscriptionDelivery(runbook.DiagnosticTree): method build_tree (line 71) | def build_tree(self): class PullSubscriptionDeliveryStart (line 86) | class PullSubscriptionDeliveryStart(runbook.StartStep): method execute (line 92) | def execute(self): class PullRate (line 128) | class PullRate(runbook.Gateway): method execute (line 131) | def execute(self): method delivery_rate (line 152) | def delivery_rate(self, subscription_name: str) -> float: method unacked_messages (line 163) | def unacked_messages(self, subscription_name: str) -> float: class PullSubscriptionDeliveryEnd (line 175) | class PullSubscriptionDeliveryEnd(runbook.EndStep): method execute (line 181) | def execute(self): FILE: gcpdiag/runbook/pubsub/pull_subscription_delivery_test.py class Test (line 20) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/runbook/pubsub/push_subscription_delivery.py class PushSubscriptionDelivery (line 36) | class PushSubscriptionDelivery(runbook.DiagnosticTree): method build_tree (line 65) | def build_tree(self): class PushSubscriptionDeliveryStart (line 94) | class PushSubscriptionDeliveryStart(runbook.StartStep): method execute (line 100) | def execute(self): class ResponseCodeStep (line 136) | class ResponseCodeStep(runbook.Step): method execute (line 145) | def execute(self): class VpcScStep (line 179) | class VpcScStep(runbook.Step): method execute (line 187) | def execute(self): class PushSubscriptionDeliveryEnd (line 194) | class PushSubscriptionDeliveryEnd(runbook.EndStep): method execute (line 200) | def execute(self): FILE: gcpdiag/runbook/pubsub/push_subscription_delivery_test.py class Test (line 20) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/runbook/report.py class ResourceEvaluation (line 37) | class ResourceEvaluation: method __init__ (line 46) | def __init__(self, class StepResult (line 63) | class StepResult: method __init__ (line 75) | def __init__(self, step): method __hash__ (line 84) | def __hash__(self) -> int: method __eq__ (line 87) | def __eq__(self, other) -> bool: method overall_status (line 97) | def overall_status(self): method any_failed (line 110) | def any_failed(self): method any_uncertain (line 114) | def any_uncertain(self): method totals_by_status (line 118) | def totals_by_status(self) -> Dict[str, int]: class Report (line 126) | class Report: method __init__ (line 137) | def __init__(self, run_id, parameters) -> None: method any_failed (line 145) | def any_failed(self) -> bool: method get_totals_by_status (line 149) | def get_totals_by_status(self) -> Dict[str, int]: method get_rule_statuses (line 156) | def get_rule_statuses(self) -> Dict[str, str]: class ReportManager (line 162) | class ReportManager: method __init__ (line 166) | def __init__(self) -> None: method add_step_result (line 169) | def add_step_result(self, run_id, result: StepResult): method add_step_eval (line 172) | def add_step_eval(self, run_id, execution_id, evaluation: ResourceEval... method add_step_prompt_response (line 175) | def add_step_prompt_response(self, run_id, execution_id, prompt_respon... method serialize_report (line 178) | def serialize_report(self, report: Report): method generate_reports (line 241) | def generate_reports(self): method get_totals_by_status (line 244) | def get_totals_by_status(self) -> Dict[str, int]: method generate_report_metrics (line 251) | def generate_report_metrics(self, report: Report) -> Dict[str, dict]: method add_step_metadata (line 276) | def add_step_metadata(self, run_id, key, value, step_execution_id): method add_step_info_metadata (line 283) | def add_step_info_metadata(self, run_id, value, step_execution_id): method get_step_metadata (line 290) | def get_step_metadata(self, run_id, key, step_execution_id): method get_all_step_metadata (line 298) | def get_all_step_metadata(self, run_id, step_execution_id) -> dict: class ApiReportManager (line 307) | class ApiReportManager(ReportManager): method generate_reports (line 310) | def generate_reports(self): class TerminalReportManager (line 320) | class TerminalReportManager(ReportManager): method get_report_path (line 323) | def get_report_path(self, run_id): method generate_reports (line 328) | def generate_reports(self): method _write_report_to_terminal (line 336) | def _write_report_to_terminal(self, out_path, json_report): class InteractionInterface (line 354) | class InteractionInterface: method __init__ (line 361) | def __init__(self, kind) -> None: method prompt (line 372) | def prompt(self, method info (line 382) | def info(self, message: str, step_type='INFO') -> None: method prepare_rca (line 385) | def prepare_rca(self, run_id, resource: Optional[models.Resource], tem... method add_skipped (line 408) | def add_skipped(self, run_id, resource: Optional[models.Resource], method add_ok (line 418) | def add_ok(self, method add_failed (line 431) | def add_failed(self, method add_uncertain (line 468) | def add_uncertain(self, FILE: gcpdiag/runbook/report_test.py class TestTerminalReportManager (line 30) | class TestTerminalReportManager(unittest.TestCase): method setUp (line 33) | def setUp(self): method test_initialization (line 56) | def test_initialization(self): method test_add_step_result (line 59) | def test_add_step_result(self): method test_any_failed (line 68) | def test_any_failed(self): method test_get_rule_statuses (line 80) | def test_get_rule_statuses(self): method test_generate_report_path (line 84) | def test_generate_report_path(self): method test_add_step_prompt_response (line 90) | def test_add_step_prompt_response(self): method test_report_any_failed_uncertain (line 105) | def test_report_any_failed_uncertain(self): method test_report_to_terminal_success (line 124) | def test_report_to_terminal_success(self, mock_stderr, mock_logging_er... method test_save_report_permission_error (line 138) | def test_save_report_permission_error(self, mock_stderr, mock_logging_... method test_write_report_to_terminal_os_error (line 155) | def test_write_report_to_terminal_os_error(self, mock_stderr, method test_add_step_metadata (line 171) | def test_add_step_metadata(self): method test_get_all_step_metadata_no_id (line 191) | def test_get_all_step_metadata_no_id(self): method test_add_step_info_metadata (line 196) | def test_add_step_info_metadata(self): method test_add_step_metadata_no_id (line 206) | def test_add_step_metadata_no_id(self): method test_get_step_metadata_no_id (line 214) | def test_get_step_metadata_no_id(self): method test_report_any_failed (line 220) | def test_report_any_failed(self): method test_trm_generate_reports (line 237) | def test_trm_generate_reports(self, mock_write_report): method test_generate_report_metrics_no_runbook_name (line 251) | def test_generate_report_metrics_no_runbook_name(self): method test_get_totals_by_status (line 269) | def test_get_totals_by_status(self): method test_generate_report_metrics (line 273) | def test_generate_report_metrics(self): method test_generate_reports_no_reports (line 290) | def test_generate_reports_no_reports(self, m_open): method test_serialize_report_with_formatting (line 296) | def test_serialize_report_with_formatting(self): class TestReportResults (line 310) | class TestReportResults(unittest.TestCase): method test_overall_status_no_status (line 313) | def test_overall_status_no_status(self): method test_step_result_any_failed (line 317) | def test_step_result_any_failed(self): method test_hash (line 332) | def test_hash(self): method test_equality (line 336) | def test_equality(self): method test_overall_status_with_step_error (line 346) | def test_overall_status_with_step_error(self): method test_overall_status_no_results (line 351) | def test_overall_status_no_results(self): method test_any_uncertain (line 355) | def test_any_uncertain(self): method test_any_failed (line 371) | def test_any_failed(self): class TestApiReportManager (line 388) | class TestApiReportManager(unittest.TestCase): method setUp (line 391) | def setUp(self): method test_generate_reports (line 419) | def test_generate_reports(self, mock_name): class TestInteractionInterface (line 426) | class TestInteractionInterface(unittest.TestCase): method setUp (line 429) | def setUp(self): method test_invalid_interface (line 441) | def test_invalid_interface(self): method test_info (line 446) | def test_info(self, mock_info): method test_add_skipped (line 451) | def test_add_skipped(self, mock_print_skipped): method test_add_ok (line 465) | def test_add_ok(self, mock_print_ok): method test_add_failed (line 480) | def test_add_failed(self, mock_print_failed, mock_prompt): method test_add_uncertain (line 497) | def test_add_uncertain(self, mock_print_uncertain, mock_prompt): method test_prepare_rca (line 513) | def test_prepare_rca(self, mock_info, mock_render_template): method test_prepare_rca_import_error (line 531) | def test_prepare_rca_import_error(self, mock_render_template, mock_info, method test_prepare_rca_attribute_error (line 550) | def test_prepare_rca_attribute_error(self, mock_render_template, mock_... FILE: gcpdiag/runbook/runbook_test.py class LegacyParamHandler (line 27) | class LegacyParamHandler(runbook.DiagnosticTree): method legacy_parameter_handler (line 40) | def legacy_parameter_handler(self, parameters): class TestDiagnosticEngine (line 46) | class TestDiagnosticEngine(unittest.TestCase): method setUp (line 49) | def setUp(self): method test_run_diagnostic_tree_missing_required_parameters (line 59) | def test_run_diagnostic_tree_missing_required_parameters(self): method test_run_diagnostic_tree_deprecated_parameters (line 77) | def test_run_diagnostic_tree_deprecated_parameters(self, mock_logging_... method test_both_new_and_deprecated_missing (line 91) | def test_both_new_and_deprecated_missing(self): method test_backward_compatibility_for_deprecated_params (line 100) | def test_backward_compatibility_for_deprecated_params(self): method test_load_steps_missing_step (line 107) | def test_load_steps_missing_step(self): method test_find_path_dfs_normal_operation (line 112) | def test_find_path_dfs_normal_operation(self, mock_run_step): method test_find_path_dfs_finite_loop (line 127) | def test_find_path_dfs_finite_loop(self, mock_run_step): method test_find_path_dfs_dynamically_added_child (line 141) | def test_find_path_dfs_dynamically_added_child(self, mock_run_step): method test_find_path_dfs_dynamic_end_step_stops_execution (line 176) | def test_find_path_dfs_dynamic_end_step_stops_execution(self, mock_run... method test_find_path_all_child_step_executions (line 221) | def test_find_path_all_child_step_executions(self, mock_run_step): method test_gateway_step_in_bundle (line 239) | def test_gateway_step_in_bundle(self, mock_run_step, mock_operator_cla... method test_run_operation (line 291) | def test_run_operation(self, mock_run_bundle, mock_run_diagnostic_tree): method test_run_bundles (line 298) | def test_run_bundles(self, mock_run_step): method test_run_diagnostic_tree_missing_legacy_handler (line 315) | def test_run_diagnostic_tree_missing_legacy_handler(self): method test_run_multiple_bundles_consolidated_report (line 334) | def test_run_multiple_bundles_consolidated_report(self, mock_run_step)... class TestSetDefaultParameters (line 361) | class TestSetDefaultParameters(unittest.TestCase): method setUp (line 364) | def setUp(self): method test_no_parameters_set (line 368) | def test_no_parameters_set(self): method test_end_time_provided_in_rfc3339 (line 383) | def test_end_time_provided_in_rfc3339(self): method test_only_start_time_provided_in_rfc3339 (line 396) | def test_only_start_time_provided_in_rfc3339(self): method test_both_times_provided_in_rfc3339 (line 409) | def test_both_times_provided_in_rfc3339(self): method test_start_time_provided_in_utc_format (line 427) | def test_start_time_provided_in_utc_format(self): method test_end_time_provided_in_utc_format (line 440) | def test_end_time_provided_in_utc_format(self): method test_both_times_provided_in_utc_format (line 453) | def test_both_times_provided_in_utc_format(self): method test_both_times_provided_in_non_utc_format (line 468) | def test_both_times_provided_in_non_utc_format(self): method test_times_provided_in_epoch_format (line 493) | def test_times_provided_in_epoch_format(self): method test_invalid_format_provided (line 510) | def test_invalid_format_provided(self): class TestMetaStepRegistry (line 520) | class TestMetaStepRegistry(unittest.TestCase): method setUp (line 523) | def setUp(self): method test_register_step_subclass (line 527) | def test_register_step_subclass(self): method test_register_gateway_subclass (line 535) | def test_register_gateway_subclass(self): method test_register_composite_step_subclass (line 543) | def test_register_composite_step_subclass(self): method test_dont_register_base_classes (line 551) | def test_dont_register_base_classes(self): method test_dont_register_other_classes (line 555) | def test_dont_register_other_classes(self): FILE: gcpdiag/runbook/snapshot_test_base.py class RulesSnapshotTestBase (line 34) | class RulesSnapshotTestBase: method test_all_rules (line 37) | def test_all_rules(self, snapshot): method _mk_parameters (line 55) | def _mk_parameters(self, parameter): class _Tee (line 59) | class _Tee: method __init__ (line 62) | def __init__(self, string_io1, string_io2): method write (line 66) | def write(self, data): method flush (line 70) | def flush(self): FILE: gcpdiag/runbook/util.py function generate_uuid (line 35) | def generate_uuid(length: int = 10, function pascal_case_to_kebab_case (line 63) | def pascal_case_to_kebab_case(s): function kebab_case_to_pascal_case (line 79) | def kebab_case_to_pascal_case(s): function pascal_case_to_snake_case (line 94) | def pascal_case_to_snake_case(s): function runbook_name_parser (line 110) | def runbook_name_parser(s): function pascal_case_to_title (line 126) | def pascal_case_to_title(s): function load_template_block (line 142) | def load_template_block(module_name, file_name, block_name): function render_template (line 167) | def render_template(file_dir, function parse_time_input (line 186) | def parse_time_input(time_str): function resolve_patterns (line 205) | def resolve_patterns(patterns_str: str, constants_module) -> list[str]: function get_operator_fn (line 226) | def get_operator_fn(op_str: str): FILE: gcpdiag/runbook/util_test.py class TestStringConversions (line 25) | class TestStringConversions(unittest.TestCase): method test_pascal_case_to_kebab_case (line 28) | def test_pascal_case_to_kebab_case(self): method test_pascal_case_to_title (line 37) | def test_pascal_case_to_title(self): method test_pascal_case_to_snake_case (line 44) | def test_pascal_case_to_snake_case(self): method test_kebab_case_to_pascal_case (line 52) | def test_kebab_case_to_pascal_case(self): method test_runbook_name_parser (line 57) | def test_runbook_name_parser(self): method test_parse_rfc3339_format (line 87) | def test_parse_rfc3339_format(self): method test_parse_epoch_format (line 93) | def test_parse_epoch_format(self): method test_invalid_format_raises_error (line 99) | def test_invalid_format_raises_error(self): class TestGenerateUUID (line 105) | class TestGenerateUUID(unittest.TestCase): method test_uniqueness (line 108) | def test_uniqueness(self): method test_default_parameters (line 115) | def test_default_parameters(self): method test_custom_length (line 122) | def test_custom_length(self): method test_custom_separator (line 127) | def test_custom_separator(self): method test_custom_interval (line 132) | def test_custom_interval(self): method test_truncate (line 138) | def test_truncate(self): method test_pad (line 143) | def test_pad(self): class MockConstantsModule (line 150) | class MockConstantsModule: class TestResolvePatterns (line 155) | class TestResolvePatterns(unittest.TestCase): method test_no_references (line 158) | def test_no_references(self): method test_single_string_reference (line 162) | def test_single_string_reference(self): method test_list_reference (line 166) | def test_list_reference(self): method test_mixed_patterns_and_references (line 170) | def test_mixed_patterns_and_references(self): method test_invalid_reference (line 179) | def test_invalid_reference(self): class TestGetOperatorFn (line 184) | class TestGetOperatorFn(unittest.TestCase): method test_get_operator_fn (line 187) | def test_get_operator_fn(self): method test_get_operator_fn_invalid (line 195) | def test_get_operator_fn_invalid(self): class TestTemplateFunctions (line 200) | class TestTemplateFunctions(unittest.TestCase): method setUp (line 203) | def setUp(self): method test_load_template_block (line 218) | def test_load_template_block(self): method test_render_template (line 236) | def test_render_template(self): FILE: gcpdiag/runbook/vertex/generalized_steps.py class CheckWorkbenchInstanceCustomScripts (line 24) | class CheckWorkbenchInstanceCustomScripts(runbook.Step): method execute (line 37) | def execute(self): class CheckWorkbenchInstanceUsingOfficialImage (line 62) | class CheckWorkbenchInstanceUsingOfficialImage(runbook.Step): method execute (line 74) | def execute(self): class CheckWorkbenchInstanceIsUsingLatestEnvVersion (line 114) | class CheckWorkbenchInstanceIsUsingLatestEnvVersion(runbook.Step): method execute (line 125) | def execute(self): class CheckWorkbenchInstanceSyslogsJupyterRunningOnPort8080 (line 189) | class CheckWorkbenchInstanceSyslogsJupyterRunningOnPort8080(runbook.Step): method execute (line 201) | def execute(self): class CheckWorkbenchInstancePerformance (line 264) | class CheckWorkbenchInstancePerformance(runbook.CompositeStep): method execute (line 276) | def execute(self): class CheckWorkbenchInstanceExternalIpDisabled (line 320) | class CheckWorkbenchInstanceExternalIpDisabled(runbook.Step): method execute (line 332) | def execute(self): FILE: gcpdiag/runbook/vertex/workbench_instance_stuck_in_provisioning.py class WorkbenchInstanceStuckInProvisioning (line 30) | class WorkbenchInstanceStuckInProvisioning(runbook.DiagnosticTree): method build_tree (line 96) | def build_tree(self): class WorkbenchInstanceStuckInProvisioningStart (line 133) | class WorkbenchInstanceStuckInProvisioningStart(runbook.StartStep): method execute (line 141) | def execute(self): method print_workbench_instance_data (line 197) | def print_workbench_instance_data( method print_workbench_instance_health_data (line 228) | def print_workbench_instance_health_data( class CheckWorkbenchInstanceUsingCustomContainer (line 245) | class CheckWorkbenchInstanceUsingCustomContainer(runbook.Step): method execute (line 254) | def execute(self): class DecisionCheckWorkbenchInstanceSystemLogging (line 274) | class DecisionCheckWorkbenchInstanceSystemLogging(runbook.Gateway): method execute (line 283) | def execute(self): class CheckWorkbenchInstanceComputeEngineSSH (line 325) | class CheckWorkbenchInstanceComputeEngineSSH(runbook.CompositeStep): method execute (line 334) | def execute(self): class CheckWorkbenchInstanceJupyterSpace (line 368) | class CheckWorkbenchInstanceJupyterSpace(runbook.Step): method execute (line 377) | def execute(self): class WorkbenchInstanceStuckInProvisioningEnd (line 400) | class WorkbenchInstanceStuckInProvisioningEnd(runbook.EndStep): method execute (line 409) | def execute(self): FILE: gcpdiag/runbook/vertex/workbench_instance_stuck_in_provisioning_test.py class Test (line 20) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/runbook/vpc/generalized_steps.py class VpcFirewallCheck (line 24) | class VpcFirewallCheck(runbook.Step): method execute (line 32) | def execute(self): class VpcRouteCheck (line 75) | class VpcRouteCheck(runbook.Step): method execute (line 82) | def execute(self): class VmExternalIpConnectivityTest (line 119) | class VmExternalIpConnectivityTest(runbook.Step): method execute (line 124) | def execute(self): FILE: gcpdiag/runbook/vpc/util.py function is_valid_nic (line 23) | def is_valid_nic(nic: str): function is_external_ip_on_nic (line 29) | def is_external_ip_on_nic(interfaces: list, nic: str): function get_nic_info (line 35) | def get_nic_info(interfaces: list, nic: str): function get_network_from_url (line 53) | def get_network_from_url(url): function get_selected_route_for_dest_ip (line 63) | def get_selected_route_for_dest_ip(project, net, dest_ip): FILE: gcpdiag/runbook/vpc/vm_external_ip_connectivity.py class VmExternalIpConnectivity (line 32) | class VmExternalIpConnectivity(runbook.DiagnosticTree): method legacy_parameter_handler (line 107) | def legacy_parameter_handler(self, parameters): method build_tree (line 111) | def build_tree(self): class VmExternalIpConnectivityStart (line 131) | class VmExternalIpConnectivityStart(runbook.StartStep): method execute (line 134) | def execute(self): class VmHasExternalIp (line 185) | class VmHasExternalIp(runbook.Gateway): method execute (line 192) | def execute(self): class VmExternalIpConnectivityEnd (line 215) | class VmExternalIpConnectivityEnd(runbook.EndStep): method execute (line 222) | def execute(self): class ExternalInterfaceCheck (line 235) | class ExternalInterfaceCheck(runbook.CompositeStep): method execute (line 242) | def execute(self): class InternalInterfaceCheck (line 262) | class InternalInterfaceCheck(runbook.CompositeStep): method execute (line 269) | def execute(self): FILE: gcpdiag/runbook/vpc/vm_external_ip_connectivity_test.py class Test (line 20) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/runbook/vpn/vpn_tunnel_check.py class VpnTunnelCheck (line 26) | class VpnTunnelCheck(runbook.DiagnosticTree): method build_tree (line 76) | def build_tree(self): class VpnTunnelStatus (line 88) | class VpnTunnelStatus(runbook.StartStep): method execute (line 93) | def execute(self): function _get_combined_metric_data (line 138) | def _get_combined_metric_data(project_id, query_ingress, query_egress, class TunnelPacketsUtilizationCheck (line 179) | class TunnelPacketsUtilizationCheck(runbook.Step): method execute (line 183) | def execute(self): class TunnelPacketsDropCheck (line 247) | class TunnelPacketsDropCheck(runbook.Step): method execute (line 308) | def execute(self): class TunnelDownStatusReason (line 385) | class TunnelDownStatusReason(runbook.Step): method execute (line 390) | def execute(self): class VpnTunnelCheckEnd (line 522) | class VpnTunnelCheckEnd(runbook.EndStep): method execute (line 525) | def execute(self): FILE: gcpdiag/runbook/vpn/vpn_tunnel_check_test.py class Test (line 20) | class Test(snapshot_test_base.RulesSnapshotTestBase): FILE: gcpdiag/search/command.py function _init_search_args_parser (line 31) | def _init_search_args_parser() -> argparse.ArgumentParser: function _load_lint_rules (line 75) | def _load_lint_rules(args) -> Iterable[LintRule]: function _load_runbook_rules (line 85) | def _load_runbook_rules() -> Dict[str, DiagnosticTree]: function run (line 92) | def run(argv=None): function _rank_runbook_rules (line 112) | def _rank_runbook_rules(rules: Dict, function _rank_lint_rules (line 141) | def _rank_lint_rules(rules: Iterable[LintRule], function _search_rules (line 170) | def _search_rules(args) -> None: function _print (line 215) | def _print(all_rules: dict) -> None: FILE: gcpdiag/search/command_test.py class TestGcpdiagSearchCommand (line 24) | class TestGcpdiagSearchCommand(unittest.TestCase): method setUp (line 29) | def setUp(self): method test_no_search_terms (line 32) | def test_no_search_terms(self): method test_single_search_term (line 37) | def test_single_search_term(self): method test_multiple_search_terms (line 46) | def test_multiple_search_terms(self): method test_limit_argument (line 51) | def test_limit_argument(self): method test_rule_type_argument (line 56) | def test_rule_type_argument(self): method test_product_argument (line 61) | def test_product_argument(self): method test_format_argument (line 66) | def test_format_argument(self): method test_all_arguments (line 71) | def test_all_arguments(self): method test_search_rules (line 85) | def test_search_rules(self, mock_load_runbook_rules, mock_load_lint_ru... method test_search_rules_output (line 103) | def test_search_rules_output(self, mock_rank_lint_rules, class TestRankingFunctions (line 119) | class TestRankingFunctions(unittest.TestCase): class TestDT1 (line 124) | class TestDT1(DiagnosticTree): class TestDT2 (line 130) | class TestDT2(DiagnosticTree): class TestDT3 (line 136) | class TestDT3(DiagnosticTree): method setUp (line 142) | def setUp(self): method test_rank_runbook_rules_max_heap (line 170) | def test_rank_runbook_rules_max_heap(self): method test_rank_runbook_rules_frequency (line 179) | def test_rank_runbook_rules_frequency(self): method test_rank_lint_rules_frequency (line 191) | def test_rank_lint_rules_frequency(self): method test_rank_lint_rules_max_heap (line 205) | def test_rank_lint_rules_max_heap(self): FILE: gcpdiag/types.py class Email (line 18) | class Email: method __init__ (line 30) | def __init__(self, email: str): method is_valid (line 41) | def is_valid(email: str) -> bool: method __str__ (line 52) | def __str__(self): method __eq__ (line 56) | def __eq__(self, other): method __repr__ (line 60) | def __repr__(self): FILE: gcpdiag/types_test.py class TestServiceAccountDomains (line 25) | class TestServiceAccountDomains(unittest.TestCase): method test_default_service_account_domains (line 34) | def test_default_service_account_domains(self): method test_service_agent_domains (line 40) | def test_service_agent_domains(self): method test_regular_email (line 46) | def test_regular_email(self): FILE: gcpdiag/utils.py class VersionComponentsParser (line 30) | class VersionComponentsParser: method __init__ (line 35) | def __init__(self, version_str: str): method get_components (line 38) | def get_components(self) -> List[int]: method extract_base_version (line 44) | def extract_base_version(self) -> str: class Version (line 51) | class Version: method __init__ (line 59) | def __init__(self, version_str: str): method same_major (line 65) | def same_major(self, other_version: 'Version') -> bool: method diff_minor (line 68) | def diff_minor(self, other_version: 'Version') -> int: method __str__ (line 71) | def __str__(self) -> str: method __add__ (line 74) | def __add__(self, other: object) -> object: method __radd__ (line 79) | def __radd__(self, other: object) -> object: method __eq__ (line 84) | def __eq__(self, other: object) -> bool: method __lt__ (line 92) | def __lt__(self, other): method __ge__ (line 95) | def __ge__(self, other): class GcpApiError (line 99) | class GcpApiError(Exception): method status (line 106) | def status(self) -> Optional[int]: method __init__ (line 112) | def __init__(self, method __str__ (line 142) | def __str__(self): function extract_value_from_res_name (line 146) | def extract_value_from_res_name(resource_name: str, key: str) -> str: function get_region_by_res_name (line 167) | def get_region_by_res_name(res_name: str) -> str: function get_zone_by_res_name (line 171) | def get_zone_by_res_name(res_name: str) -> str: function get_project_by_res_name (line 175) | def get_project_by_res_name(res_name: str) -> str: function is_region (line 179) | def is_region(name: str) -> bool: function is_zone (line 183) | def is_zone(name: str) -> bool: function zone_region (line 187) | def zone_region(zone: str) -> str: function is_full_res_name (line 195) | def is_full_res_name(res_name: str) -> bool: function is_rel_res_name (line 199) | def is_rel_res_name(res_name: str) -> bool: function is_valid_res_name (line 203) | def is_valid_res_name(res_name: str) -> bool: function iter_dictlist (line 207) | def iter_dictlist(dictlist: Dict[Any, List[Any]]): function format_fault_list (line 216) | def format_fault_list(fault_list) -> str: FILE: gcpdiag/utils_test.py class TestGcpApiError (line 33) | class TestGcpApiError(): method test_exception (line 35) | def test_exception(self): function test_is_region (line 45) | def test_is_region(): function test_is_full_res_name (line 51) | def test_is_full_res_name(): function test_is_rel_res_name (line 59) | def test_is_rel_res_name(): function test_is_valid_res_name (line 67) | def test_is_valid_res_name(): function test_get_region_by_res_name (line 81) | def test_get_region_by_res_name(): function test_get_zone_by_res_name (line 88) | def test_get_zone_by_res_name(): function test_get_project_by_res_name (line 95) | def test_get_project_by_res_name(): function test_extract_value_from_res_name (line 102) | def test_extract_value_from_res_name(): function test_iter_dictlist (line 118) | def test_iter_dictlist(): class TestVersionComponentsParser (line 124) | class TestVersionComponentsParser(): method test_extract_base_version (line 127) | def test_extract_base_version(self): FILE: test-data/gcf1/sample-code/main.py function hello_world (line 19) | def hello_world(request): FILE: test-data/gcf2/sourcecode/memalloc.py function gcf_mem_alloc (line 27) | def gcf_mem_alloc(request): FILE: website/api_render.py function customize_index_file (line 32) | def customize_index_file(file_directory, page_title, page_link_title,