| /* |
| * Copyright (C) 2002-2004 Sistina Software, Inc. All rights reserved. |
| * Copyright (C) 2004-2009 Red Hat, Inc. All rights reserved. |
| * |
| * This file is part of LVM2. |
| * |
| * This copyrighted material is made available to anyone wishing to use, |
| * modify, copy, or redistribute it subject to the terms and conditions |
| * of the GNU Lesser General Public License v.2.1. |
| * |
| * You should have received a copy of the GNU Lesser General Public License |
| * along with this program; if not, write to the Free Software Foundation, |
| * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
| */ |
| |
| #ifndef _LVM_REPORT_H |
| #define _LVM_REPORT_H |
| |
| #include "metadata-exported.h" |
| #include "label.h" |
| #include "activate.h" |
| |
| typedef enum { |
| CMDLOG = 1, |
| FULL = 2, |
| LVS = 4, |
| LVSINFO = 8, |
| LVSSTATUS = 16, |
| LVSINFOSTATUS = 32, |
| PVS = 64, |
| VGS = 128, |
| SEGS = 256, |
| PVSEGS = 512, |
| LABEL = 1024, |
| DEVTYPES = 2048 |
| } report_type_t; |
| |
| /* |
| * The "struct selection_handle" is used only for selection |
| * of items that should be processed further (not for display!). |
| * |
| * It consists of selection reporting handle "selection_rh" |
| * used for the selection itself (not for display on output!). |
| * The items are reported directly in memory to a buffer and |
| * then compared against selection criteria. Once we know the |
| * result of the selection, the buffer is dropped! |
| * |
| * The "orig_report_type" is the original requested report type. |
| * The "report_type" is the reporting type actually used which |
| * also counts with report types of the fields used in selection |
| * criteria. |
| * |
| * The "selected" variable is used for propagating the result |
| * of the selection. |
| */ |
| struct selection_handle { |
| struct dm_report *selection_rh; |
| report_type_t orig_report_type; |
| report_type_t report_type; |
| int selected; |
| }; |
| |
| struct cmd_log_item { |
| uint32_t seq_num; |
| const char *type; |
| const char *context; |
| const char *object_type_name; |
| const char *object_name; |
| const char *object_id; |
| const char *object_group; |
| const char *object_group_id; |
| const char *msg; |
| int current_errno; |
| int ret_code; |
| }; |
| |
| struct field; |
| struct report_handle; |
| struct processing_handle; |
| |
| typedef int (*field_report_fn) (struct report_handle * dh, struct field * field, |
| const void *data); |
| |
| int report_format_init(struct cmd_context *cmd, dm_report_group_type_t *report_group_type, |
| struct dm_report_group **report_group, struct dm_report **log_rh, |
| int *log_only, log_report_t *saved_log_report_state); |
| |
| void *report_init(struct cmd_context *cmd, const char *format, const char *keys, |
| report_type_t *report_type, const char *separator, |
| int aligned, int buffered, int headings, int field_prefixes, |
| int quoted, int columns_as_rows, const char *selection, |
| int multiple_output); |
| int report_get_single_selection(struct cmd_context *cmd, report_type_t report_type, const char **selection); |
| void *report_init_for_selection(struct cmd_context *cmd, report_type_t *report_type, |
| const char *selection); |
| int report_get_prefix_and_desc(report_type_t report_type_id, |
| const char **report_prefix, |
| const char **report_desc); |
| int report_for_selection(struct cmd_context *cmd, |
| struct processing_handle *parent_handle, |
| struct physical_volume *pv, |
| struct volume_group *vg, |
| struct logical_volume *lv); |
| void report_free(void *handle); |
| int report_object(void *handle, int selection_only, const struct volume_group *vg, |
| const struct logical_volume *lv, const struct physical_volume *pv, |
| const struct lv_segment *seg, const struct pv_segment *pvseg, |
| const struct lv_with_info_and_seg_status *lvdm, |
| const struct label *label); |
| int report_devtypes(void *handle); |
| int report_cmdlog(void *handle, const char *type, const char *context, |
| const char *object_type_name, const char *object_name, |
| const char *object_id, const char *object_group, |
| const char *object_group_id, const char *msg, |
| int current_errno, int ret_code); |
| #define REPORT_OBJECT_CMDLOG_NAME "status" |
| #define REPORT_OBJECT_CMDLOG_SUCCESS "success" |
| #define REPORT_OBJECT_CMDLOG_FAILURE "failure" |
| int report_current_object_cmdlog(const char *type, const char *msg, int32_t ret_code); |
| int report_output(void *handle); |
| |
| #endif |