'Fetches the node\'s alias stored in a tag from either the instance
or the instance\'s parent spot request. If no alias tag is found an
exception is raised.'

@property
def alias(self):

    if (not self._alias):
        alias = self.tags.get('alias')
        if (not alias):
            aliasestxt = self.user_data.get(static.UD_ALIASES_FNAME, '')
            aliases = aliasestxt.splitlines()[2:]
            index = self.ami_launch_index
            try:
                alias = aliases[index]
            except IndexError:
                alias = None
                log.debug(('invalid    aliases    file    in    user_data:\n%s' % aliasestxt))
            if (not alias):
                raise exception.BaseException(('instance    %s    has    no    alias' % self.id))
            self.add_tag('alias', alias)
        if (not self.tags.get('Name')):
            self.add_tag('Name', alias)
        self._alias = alias
    return self._alias
