Source code for insights.parsers.aws_instance_type

"""
AWSInstanceType
===============

This parser simply reads the output of command
``curl -s http://169.254.169.254/latest/meta-data/instance-type``,
which is used to check the type of the AWS instance on the host.

"""

from insights.parsers import SkipException, ParseException
from insights import parser, CommandParser
from insights.specs import Specs


[docs]@parser(Specs.aws_instance_type) class AWSInstanceType(CommandParser): """ Class for parsing the AWS Instance type returned by command ``curl -s http://169.254.169.254/latest/meta-data/instance-type`` Typical output of this command is:: r3.xlarge Raises: SkipException: When content is empty or no parse-able content. ParseException: When type cannot be recognized. Attributes: type (str): The name of AWS instance type in all uppercase letters. E.g. R3, R4, R5, or X1. raw (str): The fully type string returned by the ``curl`` command. Examples: >>> aws_inst.type 'R3' >>> aws_inst.raw 'r3.xlarge' """
[docs] def parse_content(self, content): if not content or 'curl: ' in content[0]: raise SkipException() self.raw = self.type = None # Ignore any curl stats that may be present in data for l in content: if ' ' not in l.strip() and len(l.strip()) > 0: self.raw = l.strip() if '.' in self.raw: self.type = self.raw.split('.')[0].upper() if not self.type: raise ParseException('Unrecognized type: "{0}"'.format(content))
def __repr__(self): return "<aws_type: {t}, raw: {r}>".format(t=self.type, r=self.raw)