class InspectBuffer(Buffer): display_name = "Inspect " description = "Display all the information docker knows about selected object: " + \ "same output as `docker inspect`." def __init__(self, ui, docker_object): """ :param docker_object: object to inspect """ self.docker_object = docker_object self.ui = ui self.widget = None self.display_name += docker_object.short_name super().__init__() def refresh(self): inspect_data = self.docker_object.display_inspect() self.widget = ScrollableListBox(self.ui, inspect_data) def process_realtime_event(self, event): if event.get("id", None) == self.docker_object.object_id: self.ui.notify_message("Docker object changed, refreshing.") focus = self.widget.get_focus()[1] self.widget.set_text(self.docker_object.display_inspect()) self.widget.set_focus(focus)
class InspectBuffer(Buffer): display_name = "Inspect " description = "Display all the information docker knows about selected object: " + \ "same output as `docker inspect`." def __init__(self, ui, docker_object): """ :param docker_object: object to inspect """ self.docker_object = docker_object self.ui = ui self.widget = None self.display_name += docker_object.short_name super().__init__() def refresh(self): inspect_data = self.docker_object.display_inspect() self.widget = ScrollableListBox(self.ui, inspect_data) def process_realtime_event(self, event): if event.get("id", None) == self.docker_object.object_id: self.ui.notify_message("Docker object changed, refreshing.") focus = self.widget.get_focus()[1] self.widget.set_text(self.docker_object.display_inspect()) self.widget.set_focus(focus)
def __init__(self, ui, docker_object, follow=False): """ :param docker_object: container to display logs :param ui: ui object so we can refresh """ self.display_name += "({})".format(docker_object.short_name) if isinstance(docker_object, DockerContainer): try: pre_message = "Getting logs for container {}...".format( docker_object.short_name) ui.notify_message(pre_message) if follow: # FIXME: this is a bit race-y -- we might lose some logs with this approach operation = docker_object.logs(follow=follow, lines=0) static_data = docker_object.logs(follow=False).response self.widget = AsyncScrollableListBox( operation.response, ui, static_data=static_data) else: operation = docker_object.logs(follow=follow) self.widget = ScrollableListBox(ui, operation.response) ui.remove_notification_message(pre_message) ui.notify_widget( get_operation_notify_widget(operation, display_always=False)) except Exception as ex: # FIXME: let's catch 404 and print that container doesn't exist # instead of printing ugly HTTP error raise NotifyError("Error getting logs for container %s: %r" % (docker_object, ex)) else: raise NotifyError("Only containers have logs.") super().__init__()
def __init__(self, ui, docker_object): """ :param docker_object: object to inspect """ inspect_data = docker_object.display_inspect() self.widget = ScrollableListBox(ui, inspect_data) self.display_name += docker_object.short_name super().__init__()
def test_scrollable_listbox(inp, expected): lb = ScrollableListBox(inp) canvas = lb.render((SCREEN_WIDTH, SCREEN_HEIGHT)) text = [bytes().join([t for at, cs, t in ln]) for ln in canvas.content()] assert text == expected
def refresh(self): inspect_data = self.docker_object.display_inspect() self.widget = ScrollableListBox(self.ui, inspect_data)
def test_scrollable_listbox(inp, expected): lb = ScrollableListBox(MockUI(), inp) canvas = lb.render((SCREEN_WIDTH, SCREEN_HEIGHT)) text = [bytes().join([t for at, cs, t in ln]) for ln in canvas.content()] assert text == expected