Source code for insights.parsers.openshift_get

"""
OpenShift Get commands
======================

``oc get`` command is from openshift used to list the usage info - e.g.
pods info, dc info, services info, etc.  This shared parser is used to parse
``oc get XX --all-namespaces -o yaml`` command information. Parameters
"--all-namespaces" means collecting information from all projects and "-o yaml"
means the output is in YAML format.

Parsers included in this module are:

OcGetBc - command ``oc get bc -o yaml --all-namespaces``
--------------------------------------------------------

OcGetBuild - command ``oc get build -o yaml --all-namespaces``
--------------------------------------------------------------

OcGetDc - command ``oc get dc -o yaml --all-namespaces``
--------------------------------------------------------

OcGetEgressNetworkPolicy - command ``oc get egressnetworkpolicy -o yaml --all-namespaces``
------------------------------------------------------------------------------------------

OcGetEndPoints - command ``oc get endpoints -o yaml --all-namespaces``
----------------------------------------------------------------------

OcGetEvent - command ``oc get event -o yaml --all-namespaces``
--------------------------------------------------------------

OcGetNode - command ``oc get nodes -o yaml``
--------------------------------------------

OcGetPod - command ``oc get pod -o yaml --all-namespaces``
----------------------------------------------------------

OcGetProject - command ``oc get project -o yaml --all-namespaces``
------------------------------------------------------------------

OcGetPv - command ``oc get pv -o yaml --all-namespaces``
--------------------------------------------------------

OcGetPvc - command ``oc get pvc -o yaml --all-namespaces``
----------------------------------------------------------

OcGetRc - command ``oc get rc -o yaml --all-namespaces``
--------------------------------------------------------

OcGetRole - command ``oc get role -o yaml --all-namespaces``
------------------------------------------------------------

OcGetRolebinding - command ``oc get rolebinding -o yaml --all-namespaces``
--------------------------------------------------------------------------

OcGetRoute - command ``oc get route -o yaml --all-namespaces``
--------------------------------------------------------------

OcGetService - command ``oc get service -o yaml --all-namespaces``
------------------------------------------------------------------

OcGetConfigmap - command ``oc get configmap -o yaml --all-namespaces``
----------------------------------------------------------------------

Examples:
    >>> type(setting_dic)
    <class 'insights.parsers.openshift_get.OcGetService'>
    >>> setting_dic.data['items'][0]['kind']
    'Service'
    >>> setting_dic.data['items'][0]['spec']['clusterIP']
    '172.30.0.1'
    >>> setting_dic.data['items'][0]['metadata']['name']
    'kubernetes'
    >>> setting_dic.data['items'][1]['metadata']['name']
    'router-1'
    >>> "zjj" in setting_dic.data['items'][1]['metadata']['namespace']
    True
"""

from .. import YAMLParser, parser, CommandParser
from insights.specs import Specs


def metadata_name_items(data):
    return dict((item['metadata']['name'], item) for item in data['items'])


[docs] @parser(Specs.oc_get_bc) class OcGetBc(CommandParser, YAMLParser): """Class to parse ``oc get bc -o yaml --all-namespaces``""" @property def build_configs(self): """ dict: Returns a dictionary of openshift build configs information.""" return metadata_name_items(self.data)
[docs] @parser(Specs.oc_get_build) class OcGetBuild(YAMLParser): """Class to parse ``oc get build -o yaml --all-namespaces``""" @property def started_builds(self): """ dict: Returns a dictionary of openshift started build information.""" return metadata_name_items(self.data)
[docs] @parser(Specs.oc_get_dc) class OcGetDc(CommandParser, YAMLParser): """Class to parse ``oc get dc -o yaml --all-namespaces``""" @property def deployment_configs(self): """ dict: Returns a dictionary of openshift deploymentconfigs information.""" return metadata_name_items(self.data)
[docs] @parser(Specs.oc_get_egressnetworkpolicy) class OcGetEgressNetworkPolicy(CommandParser, YAMLParser): """Class to parse ``oc get egressnetworkpolicy -o yaml --all-namespaces``""" @property def egress_network_policies(self): """ dict: Returns a dictionary of openshift egress network policy information.""" return metadata_name_items(self.data)
[docs] @parser(Specs.oc_get_endpoints) class OcGetEndPoints(CommandParser, YAMLParser): """Class to parse ``oc get endpoints -o yaml --all-namespaces``""" @property def endpoints(self): """ dict: Returns a dictionary of openshift endpoints information.""" return metadata_name_items(self.data)
[docs] @parser(Specs.oc_get_event) class OcGetEvent(CommandParser, YAMLParser): """Class to parse ``oc get event -o yaml --all-namespaces``""" @property def events(self): """ dict: Returns a dictionary of openshift events information.""" return metadata_name_items(self.data)
[docs] @parser(Specs.oc_get_node) class OcGetNode(CommandParser, YAMLParser): """Class to parse ``oc get nodes -o yaml``""" @property def nodes(self): """ dict: Returns a dictionary of openshift nodes information.""" return metadata_name_items(self.data)
[docs] @parser(Specs.oc_get_pod) class OcGetPod(CommandParser, YAMLParser): """Class to parse ``oc get pod -o yaml --all-namespaces``""" @property def pods(self): """ dict: Returns a dictionary of openshift pods information.""" return metadata_name_items(self.data)
[docs] @parser(Specs.oc_get_project) class OcGetProject(CommandParser, YAMLParser): """Class to parse ``oc get project -o yaml --all-namespaces``""" @property def projects(self): """ dict: Returns a dictionary of openshift project information.""" return metadata_name_items(self.data)
[docs] @parser(Specs.oc_get_pv) class OcGetPv(CommandParser, YAMLParser): """Class to parse ``oc get pv -o yaml --all-namespaces``""" @property def persistent_volumes(self): """ dict: Returns a dictionary of openshift persistent volume information.""" return metadata_name_items(self.data)
[docs] @parser(Specs.oc_get_pvc) class OcGetPvc(CommandParser, YAMLParser): """Class to parse ``oc get pvc -o yaml --all-namespaces``""" @property def persistent_volume_claims(self): """ dict: Returns a dictionary of openshift persistent volume claim information.""" return metadata_name_items(self.data)
[docs] @parser(Specs.oc_get_rc) class OcGetRc(CommandParser, YAMLParser): """Class to parse ``oc get rc -o yaml --all-namespaces``""" @property def replication_controllers(self): """ dict: Returns a dictionary of openshift replication controllers information.""" return metadata_name_items(self.data)
[docs] @parser(Specs.oc_get_role) class OcGetRole(CommandParser, YAMLParser): """Class to parse ``oc get role -o yaml --all-namespaces``""" @property def roles(self): """ dict: Returns a dictionary of openshift role information.""" return metadata_name_items(self.data)
[docs] @parser(Specs.oc_get_rolebinding) class OcGetRolebinding(CommandParser, YAMLParser): """Class to parse ``oc get rolebinding -o yaml --all-namespaces``""" @property def rolebindings(self): """ dict: Returns a dictionary of openshift rolebind information.""" return metadata_name_items(self.data)
[docs] @parser(Specs.oc_get_route) class OcGetRoute(CommandParser, YAMLParser): """Class to parse ``oc get route -o yaml --all-namespaces``""" @property def routes(self): """ dict: Returns a dictionary of openshift route information.""" return metadata_name_items(self.data)
[docs] @parser(Specs.oc_get_service) class OcGetService(CommandParser, YAMLParser): """Class to parse ``oc get service -o yaml --all-namespaces``""" @property def services(self): """ dict: Returns a dictionary of openshift services information.""" return metadata_name_items(self.data)
[docs] @parser(Specs.oc_get_configmap) class OcGetConfigmap(CommandParser, YAMLParser): """Class to parse ``oc get configmap -o yaml --all-namespaces``""" @property def configmaps(self): """ dict: Returns a dictionary of openshift configmaps information.""" return metadata_name_items(self.data)