Source code for insights.parsers.docker_inspect

"""
DockerInspect - Command ``docker inspect --type={TYPE}``
========================================================

This module parses the output of the ``docker inspect`` command.  This uses
the ``core.marshalling.unmarshal`` function to parse the JSON output from the
commands.  The parsed data can be accessed a dictionary via the object itself.

"""

from insights import parser, CommandParser
from insights.core.marshalling import unmarshal
from insights.parsers import SkipException
from insights.specs import Specs


[docs]class DockerInspect(CommandParser, dict): """ Parse the output of command "docker inspect --type=image" and "docker inspect --type=container". The output of these two commands is formatted as JSON, so "json.loads" is an option to parse the output in the future. Raises: SkipException: If content is not provided """
[docs] def parse_content(self, content): if not content: raise SkipException content = "\n".join(list(content)) try: inspect_data = unmarshal(content) self.update(inspect_data[0]) except: raise SkipException
@property def data(self): return self
[docs]@parser(Specs.docker_image_inspect) class DockerInspectImage(DockerInspect): """ Parse docker image inspect output using the DockerInspect parser class. Sample input:: [ { "Id": "882ab98aae5394aebe91fe6d8a4297fa0387c3cfd421b2d892bddf218ac373b2", "RepoTags": [ "rhel7_imagemagick:latest" ], "RepoDigests": [], ... Examples: >>> image['Id'] == '882ab98aae5394aebe91fe6d8a4297fa0387c3cfd421b2d892bddf218ac373b2' True >>> image['RepoTags'][0] == 'rhel7_imagemagick:latest' True """ pass
[docs]@parser(Specs.docker_container_inspect) class DockerInspectContainer(DockerInspect): """ Parse docker container inspect output using the DockerInspect parser class. Sample input:: [ { "Id": "97d7cd1a5d8fd7730e83bb61ecbc993742438e966ac5c11910776b5d53f4ae07", "Created": "2016-06-23T05:12:25.433469799Z", "Path": "/bin/bash", "Args": [], "Name": "/hehe2", "State": { "Status": "running", "Running": true, "Paused": false, "Restarting": false, ... Examples: >>> container['Id'] == '97d7cd1a5d8fd7730e83bb61ecbc993742438e966ac5c11910776b5d53f4ae07' True >>> container['Name'] == '/hehe2' True >>> container.get('State').get('Paused') # sub-dictionaries False """ pass