'Updates abstract sk.SpinnakerStatus attributes from a Gate response.
This is called by the base class.
Args:
doc: [dict] JSON Document object read from response payload.'

def _update_response_from_json(self, doc):

    self._bind_exception_details(None)
    if (not isinstance(doc, list)):
        self._bind_error("Invalid    response='{0}'".format(doc))
        self.current_state = 'CITEST_INTERNAL_ERROR'
    if (len(doc) == 0):
        return
    if (not self.__saw_pipeline):
        logger = logging.getLogger(__name__)
        logger.info('Pipeline    is    now    visible.')
        self.__saw_pipeline = True
    doc = doc[0]
    if (self.current_state != doc['status']):
        self.current_state = doc['status']
        logger = logging.getLogger(__name__)
        logger.info('Pipeline    state    is    now    %s', self.current_state)
    context = doc.get('context', {})
    exception_details = context.get('exception', None)
    self._bind_exception_details(exception_details)
