On Wed, 26 Jan 2011 13:44:51 +0900 KAMEZAWA Hiroyuki <[email protected]> wrote:
> > This patch just adds > bool variable stream_mode > disable curses if stream_mode==true > add stream_mode to the list 'setup' for main_loop. > > The output function dump_stduout is a dummy. filled in the next patch. > > Signed-off-by: KAMEZAWA Hiroyuki <[email protected]> Sorry, it seems the patch I sent is broken...I'll send again today. Regards. -Kame > --- > virt-top/virt_top.cmi |binary > virt-top/virt_top.cmi |binary > virt-top/virt_top.cmi |binary > virt-top/virt_top.ml | 42 ++++++++++++++++++++++++++++++------------ > virt-top/virt_top.mli | 2 +- > 2 files changed, 31 insertions(+), 13 deletions(-) > > Index: virt-top-1.0.5/virt-top/virt_top.ml > =================================================================== > --- virt-top-1.0.5.orig/virt-top/virt_top.ml > +++ virt-top-1.0.5/virt-top/virt_top.ml > @@ -130,10 +130,11 @@ let csv_block = ref true > let csv_net = ref true > let init_file = ref DefaultInitFile > let script_mode = ref false > +let stream_mode = ref false > > (* Tuple of never-changing data returned by start_up function. *) > type setup = > - Libvirt.ro C.t * bool * bool * bool * C.node_info * string * > + Libvirt.ro C.t * bool * bool * bool * bool * C.node_info * string * > (int * int * int) > > (* Function to read command line arguments and go into curses mode. *) > @@ -200,6 +201,8 @@ let start_up () = > " " ^ s_"Secure (\"kiosk\") mode"; > "--script", Arg.Set script_mode, > " " ^ s_"Run from a script (no user interface)"; > + "--stream", Arg.Set stream_mode, > + " " ^ s_"dump output to stdout (no userinterface)"; > "--version", Arg.Unit display_version, > " " ^ s_"Display version number and exit"; > ] in > @@ -232,6 +235,7 @@ OPTIONS" in > | _, "batch", b -> batch_mode := bool_of_string b > | _, "secure", b -> secure_mode := bool_of_string b > | _, "script", b -> script_mode := bool_of_string b > + | _, "stream", b -> stream_mode := bool_of_string b > | _, "end-time", t -> set_end_time t > | _, "overwrite-init-file", "false" -> no_init_file () > | lineno, key, _ -> > @@ -287,7 +291,7 @@ OPTIONS" in > | "" -> (* No debug file specified, send stderr to /dev/null unless > * we're in script mode. > *) > - if not !script_mode then ( > + if not !script_mode && not !stream_mode then ( > let fd = Unix.openfile "/dev/null" [Unix.O_WRONLY] 0o644 in > Unix.dup2 fd Unix.stderr; > Unix.close fd > @@ -301,7 +305,7 @@ OPTIONS" in > ); > > (* Curses voodoo (see ncurses(3)). *) > - if not !script_mode then ( > + if not !script_mode && not !stream_mode then ( > ignore (initscr ()); > ignore (cbreak ()); > ignore (noecho ()); > @@ -317,7 +321,7 @@ OPTIONS" in > * main_loop. See virt_top_main.ml. > *) > (conn, > - !batch_mode, !script_mode, !csv_enabled, (* immutable modes *) > + !batch_mode, !script_mode, !csv_enabled, !stream_mode, (* immutable modes > *) > node_info, hostname, libvirt_version (* info that doesn't change *) > ) > > @@ -436,7 +440,7 @@ let collect, clear_pcpu_display_data = > Hashtbl.clear last_vcpu_info > in > > - let collect (conn, _, _, _, node_info, _, _) = > + let collect (conn, _, _, _, _, node_info, _, _) = > (* Number of physical CPUs (some may be disabled). *) > let nr_pcpus = C.maxcpus_of_node_info node_info in > > @@ -746,7 +750,7 @@ let redraw = > let historical_cpu = ref [] in > let historical_cpu_last_time = ref (Unix.gettimeofday ()) in > fun > - (_, _, _, _, node_info, _, _) (* setup *) > + (_, _, _, _, _, node_info, _, _) (* setup *) > (doms, > time, printable_time, > nr_pcpus, total_cpu, total_cpu_per_pcpu, > @@ -1205,7 +1209,7 @@ let write_csv_header () = > > (* Write summary data to CSV file. *) > let append_csv > - (_, _, _, _, node_info, hostname, _) (* setup *) > + (_, _, _, _, _, node_info, hostname, _) (* setup *) > (doms, > _, printable_time, > nr_pcpus, total_cpu, _, > @@ -1266,21 +1270,35 @@ let append_csv > > (!csv_write) (summary_fields @ domain_fields) > > +let dump_stdout > + (_, _, _, _, _, node_info, hostname, _) (* setup *) > + (doms, > + _, printable_time, > + nr_pcpus, total_cpu, _, > + totals, > + _) (* state *) = > + > + printf "Time %s Host %s %s %d/%dCPU %dMHz %LdMB \n%!" > + printable_time hostname node_info.C.model node_info.C.cpus nr_pcpus > + node_info.C.mhz (node_info.C.memory /^ 1024L) ;; > + > (* Main loop. *) > -let rec main_loop ((_, batch_mode, script_mode, csv_enabled, _, _, _) > +let rec main_loop ((_, batch_mode, script_mode, csv_enabled, stream_mode, _, > _, _) > as setup) = > if csv_enabled then write_csv_header (); > > while not !quit do > let state = collect setup in (* Collect stats. *) > - if not script_mode then redraw setup state; (* Redraw display. *) > + (* Redraw display. *) > + if not script_mode && not stream_mode then redraw setup state; > if csv_enabled then append_csv setup state; (* Update CSV file. *) > + if stream_mode then dump_stdout setup state; (* dump to stdout *) > > (* Clear up unused virDomainPtr objects. *) > Gc.compact (); > > (* Get next key. This does the sleep. *) > - if not batch_mode && not script_mode then > + if not batch_mode && not script_mode && not stream_mode then > get_key_press setup; > > (* Max iterations? *) > @@ -1301,7 +1319,7 @@ let rec main_loop ((_, batch_mode, scrip > (* Batch mode or script mode. We didn't call get_key_press above, so > * we didn't sleep. Sleep now, unless we are about to quit. > *) > - if batch_mode || script_mode then > + if batch_mode || script_mode || stream_mode then > if not !quit then > usleep !delay; > done > @@ -1549,7 +1567,7 @@ and _write_init_file filename = > refresh (); > sleep 2 > > -and show_help (_, _, _, _, _, hostname, > +and show_help (_, _, _, _, _, _, hostname, > (libvirt_major, libvirt_minor, libvirt_release)) = > clear (); > > Index: virt-top-1.0.5/virt-top/virt_top.mli > =================================================================== > --- virt-top-1.0.5.orig/virt-top/virt_top.mli > +++ virt-top-1.0.5/virt-top/virt_top.mli > @@ -30,7 +30,7 @@ val parse_date_time : (string -> float) > > type setup = > Libvirt.ro Libvirt.Connect.t (* connection *) > - * bool * bool * bool (* batch, script, csv modes *) > + * bool * bool * bool * bool (* batch, script, csv, stream > mode *) > * Libvirt.Connect.node_info (* node_info *) > * string (* hostname *) > * (int * int * int) (* libvirt version *) > > _______________________________________________ virt-tools-list mailing list [email protected] https://www.redhat.com/mailman/listinfo/virt-tools-list
