Source code for insights.parsers.cloud_init

"""
CloudInit
=========

Parsers related to "cloud-init" can be placed in this module.

CloudInitQuery - cmd `cloud-init query -f '{{ cloud_name, platform }}'`
-----------------------------------------------------------------------
"""

from insights import CommandParser, parser
from insights.core.exceptions import SkipComponent
from insights.specs import Specs


[docs] @parser(Specs.cloud_init_query) class CloudInitQuery(CommandParser): """ Parse the ``cloud-init query -f '{{ cloud_name, platform }}'`` output. Sample input:: ('azure', 'azure') Examples: >>> cloud_query.cloud_name == 'azure' True >>> cloud_query.platform == 'azure' True """
[docs] def parse_content(self, content): try: if ( len(content) == 1 and content[0][0] == '(' and content[0][-1] == ')' and ', ' in content[0] ): line = content[0].strip("()") self.cloud_name, self.platform = [ v.lstrip('u').strip('\'"') for v in line.split(', ') ] else: raise except Exception: raise SkipComponent("Invalid content: '{0}'".format(content))