# Path: libcloudforensics/providers/gcp/internal/gke.py
# class GoogleKubernetesEngine:
# class GkeCluster(cluster.K8sCluster, GoogleKubernetesEngine):
#   GKE_API_VERSION = 'v1'
#   def GkeApi(self) -> 'googleapiclient.discovery.Resource':
#   def __init__(self, project_id: str, zone: str, cluster_id: str) -> None:
#   def name(self) -> str:
#   def _GetK8sApiClient(self) -> client.ApiClient:
#   def GetOperation(self) -> Dict[str, Any]:
#   def _MakeQuery(self, query_type: str) -> str:
#   def ClusterLogsQuery(
#       self, workload: Optional[base.K8sWorkload] = None) -> str:
#   def ContainerLogsQuery(
#       self, workload: Optional[base.K8sWorkload] = None) -> str:
#   def _GetValue(self, *keys: str, default: Any = None) -> Any:
#   def IsWorkloadIdentityEnabled(self) -> bool:
#   def IsLegacyEndpointsDisabled(self) -> bool:
#   def IsNetworkPolicyEnabled(self) -> bool:
# 
# Path: libcloudforensics/providers/kubernetes/enumerations/base.py
# def _SafeMerge(*dictionaries: Dict[KeyT, ValT]) -> Dict[KeyT, ValT]:
# def _FilterEmptyValues(dictionary: Dict[KeyT, ValT]) -> Dict[KeyT, ValT]:
#   def __init__(self, underlying_object: ObjT) -> None:
#   def _Children(
#       self,
#       namespace: Optional[str] = None  # pylint: disable=unused-argument
#   ) -> Iterable['Enumeration[Any]']:
#   def _Populate(self, info: Dict[str, Any], warnings: Dict[str, Any]) -> None:
#   def __PrintTable(
#       self, print_func: Callable[[str, int], None], filter_empty: bool) -> None:
#     def MakeRow(_item: Tuple[str, Any]) -> str:
#   def Enumerate(
#       self,
#       namespace: Optional[str] = None,
#       filter_empty: bool = True,
#       silent: bool = False,
#       _print_func: Optional[Callable[[str, int], None]] = None) -> str:
#     def PrintFunc(text: str, level: int) -> None:
#     def ChildPrintFunc(text: str, level: int) -> None:
#   def ToJson(self, namespace: Optional[str] = None) -> Dict[str, Any]:
#   def _GetInformationAndWarnings(
#       self,
#       filter_empty: bool = False) -> Tuple[Dict[str, Any], Dict[str, Any]]:
#   def keyword(self) -> str:
#   def keyword(self) -> str:
#   def _Populate(self, info: Dict[str, Any], warnings: Dict[str, Any]) -> None:
#   def keyword(self) -> str:
#   def _Populate(self, info: Dict[str, Any], warnings: Dict[str, Any]) -> None:
#   def keyword(self) -> str:
#   def _Children(self,
#                 namespace: Optional[str] = None) -> Iterable[Enumeration[Any]]:
#   def _Populate(self, info: Dict[str, Any], warnings: Dict[str, Any]) -> None:
#   def keyword(self) -> str:
#   def _Children(self,
#                 namespace: Optional[str] = None) -> Iterable[Enumeration[Any]]:
#   def _Populate(self, info: Dict[str, Any], warnings: Dict[str, Any]) -> None:
#   def keyword(self) -> str:
#   def _Children(self,
#                 namespace: Optional[str] = None) -> Iterable[Enumeration[Any]]:
#   def keyword(self) -> str:
#   def _Children(self,
#                 namespace: Optional[str] = None) -> Iterable[Enumeration[Any]]:
#   def _Populate(self, info: Dict[str, Any], warnings: Dict[str, Any]) -> None:
#   def keyword(self) -> str:
#   def _Children(self,
#                 namespace: Optional[str] = None) -> Iterable[Enumeration[Any]]:
#   def _Populate(self, info: Dict[str, Any], warnings: Dict[str, Any]) -> None:
# class Enumeration(Generic[ObjT], metaclass=abc.ABCMeta):
# class ContainerEnumeration(Enumeration[container.K8sContainer]):
# class VolumeEnumeration(Enumeration[volume.K8sVolume]):
# class PodsEnumeration(Enumeration[base.K8sPod]):
# class NodeEnumeration(Enumeration[base.K8sNode]):
# class ClusterEnumeration(Enumeration[cluster.K8sCluster]):
# class WorkloadEnumeration(Enumeration[base.K8sWorkload]):
# class ServiceEnumeration(Enumeration[services.K8sService]):
#   _INDENT_STRING = '    '


from typing import Any, Dict, Iterable, Optional
from libcloudforensics.providers.gcp.internal import gke
from libcloudforensics.providers.kubernetes.enumerations import base
# -*- coding: utf-8 -*-
# Copyright 2021 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""GCP Enumeration classes."""



class GkeClusterEnumeration(base.Enumeration[gke.GkeCluster]):
  """Enumeration class for a GKE cluster."""

  @property
  def keyword(self) -> str:
    """Override of abstract property."""
    return 'GkeCluster'

  def _Children(

# Path: libcloudforensics/providers/gcp/internal/gke.py
# class GoogleKubernetesEngine:
# class GkeCluster(cluster.K8sCluster, GoogleKubernetesEngine):
#   GKE_API_VERSION = 'v1'
#   def GkeApi(self) -> 'googleapiclient.discovery.Resource':
#   def __init__(self, project_id: str, zone: str, cluster_id: str) -> None:
#   def name(self) -> str:
#   def _GetK8sApiClient(self) -> client.ApiClient:
#   def GetOperation(self) -> Dict[str, Any]:
#   def _MakeQuery(self, query_type: str) -> str:
#   def ClusterLogsQuery(
#       self, workload: Optional[base.K8sWorkload] = None) -> str:
#   def ContainerLogsQuery(
#       self, workload: Optional[base.K8sWorkload] = None) -> str:
#   def _GetValue(self, *keys: str, default: Any = None) -> Any:
#   def IsWorkloadIdentityEnabled(self) -> bool:
#   def IsLegacyEndpointsDisabled(self) -> bool:
#   def IsNetworkPolicyEnabled(self) -> bool:
# 
# Path: libcloudforensics/providers/kubernetes/enumerations/base.py
# def _SafeMerge(*dictionaries: Dict[KeyT, ValT]) -> Dict[KeyT, ValT]:
# def _FilterEmptyValues(dictionary: Dict[KeyT, ValT]) -> Dict[KeyT, ValT]:
#   def __init__(self, underlying_object: ObjT) -> None:
#   def _Children(
#       self,
#       namespace: Optional[str] = None  # pylint: disable=unused-argument
#   ) -> Iterable['Enumeration[Any]']:
#   def _Populate(self, info: Dict[str, Any], warnings: Dict[str, Any]) -> None:
#   def __PrintTable(
#       self, print_func: Callable[[str, int], None], filter_empty: bool) -> None:
#     def MakeRow(_item: Tuple[str, Any]) -> str:
#   def Enumerate(
#       self,
#       namespace: Optional[str] = None,
#       filter_empty: bool = True,
#       silent: bool = False,
#       _print_func: Optional[Callable[[str, int], None]] = None) -> str:
#     def PrintFunc(text: str, level: int) -> None:
#     def ChildPrintFunc(text: str, level: int) -> None:
#   def ToJson(self, namespace: Optional[str] = None) -> Dict[str, Any]:
#   def _GetInformationAndWarnings(
#       self,
#       filter_empty: bool = False) -> Tuple[Dict[str, Any], Dict[str, Any]]:
#   def keyword(self) -> str:
#   def keyword(self) -> str:
#   def _Populate(self, info: Dict[str, Any], warnings: Dict[str, Any]) -> None:
#   def keyword(self) -> str:
#   def _Populate(self, info: Dict[str, Any], warnings: Dict[str, Any]) -> None:
#   def keyword(self) -> str:
#   def _Children(self,
#                 namespace: Optional[str] = None) -> Iterable[Enumeration[Any]]:
#   def _Populate(self, info: Dict[str, Any], warnings: Dict[str, Any]) -> None:
#   def keyword(self) -> str:
#   def _Children(self,
#                 namespace: Optional[str] = None) -> Iterable[Enumeration[Any]]:
#   def _Populate(self, info: Dict[str, Any], warnings: Dict[str, Any]) -> None:
#   def keyword(self) -> str:
#   def _Children(self,
#                 namespace: Optional[str] = None) -> Iterable[Enumeration[Any]]:
#   def keyword(self) -> str:
#   def _Children(self,
#                 namespace: Optional[str] = None) -> Iterable[Enumeration[Any]]:
#   def _Populate(self, info: Dict[str, Any], warnings: Dict[str, Any]) -> None:
#   def keyword(self) -> str:
#   def _Children(self,
#                 namespace: Optional[str] = None) -> Iterable[Enumeration[Any]]:
#   def _Populate(self, info: Dict[str, Any], warnings: Dict[str, Any]) -> None:
# class Enumeration(Generic[ObjT], metaclass=abc.ABCMeta):
# class ContainerEnumeration(Enumeration[container.K8sContainer]):
# class VolumeEnumeration(Enumeration[volume.K8sVolume]):
# class PodsEnumeration(Enumeration[base.K8sPod]):
# class NodeEnumeration(Enumeration[base.K8sNode]):
# class ClusterEnumeration(Enumeration[cluster.K8sCluster]):
# class WorkloadEnumeration(Enumeration[base.K8sWorkload]):
# class ServiceEnumeration(Enumeration[services.K8sService]):
#   _INDENT_STRING = '    '


# Path: libcloudforensics/providers/kubernetes/enumerations/gcp.py
from typing import Any, Dict, Iterable, Optional
from libcloudforensics.providers.gcp.internal import gke
from libcloudforensics.providers.kubernetes.enumerations import base

# -*- coding: utf-8 -*-
# Copyright 2021 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""GCP Enumeration classes."""



class GkeClusterEnumeration(base.Enumeration[gke.GkeCluster]):
  """Enumeration class for a GKE cluster."""

  @property
  def keyword(self) -> str:
    """Override of abstract property."""
    return 'GkeCluster'

  def _Children(

      self, namespace: Optional[str] = None) -> Iterable[base.Enumeration[Any]]: