'Create table if not exists, otherwise return the description.'

def _get_or_create_table(self):

    table_schema = self._get_table_schema()
    try:
        table_description = self._client.create_table(**table_schema)
        logger.info(u'DynamoDB    Table    {}    did    not    exist,    creating.'.format(self.table_name))
        self._wait_for_table_status(u'ACTIVE')
        logger.info(u'DynamoDB    Table    {}    is    now    available.'.format(self.table_name))
        return table_description
    except ClientError as e:
        error_code = e.response[u'Error'].get(u'Code', u'Unknown')
        if (error_code == u'ResourceInUseException'):
            return self._client.describe_table(TableName=self.table_name)
        else:
            raise e
