source: src-qt4/pc-zmanager/zmanagerwindow.h @ 125dbc9

9.2-releasereleng/10.0releng/10.0.1releng/10.0.2releng/10.0.3releng/10.1
Last change on this file since 125dbc9 was 125dbc9, checked in by Kris Moore <kris@…>, 14 months ago

Welcome the new 'pc-zmanager' for ZFS & Disk Management

A HUGE Thank You to: Claudio L <claudio@…>

Update pkg-plist and add it to the control panel

  • Property mode set to 100644
File size: 6.2 KB
Line 
1#ifndef ZMANAGERWINDOW_H
2#define ZMANAGERWINDOW_H
3
4#include <QMainWindow>
5#include <QModelIndex>
6#include <QTreeWidgetItem>
7#include <QHeaderView>
8
9namespace Ui {
10class ZManagerWindow;
11}
12
13enum vdevStatus {
14    STATE_UNKNOWN=0,
15    STATE_NOTAPPLICABLE,
16    STATE_ONLINE,
17    STATE_OFFLINE,
18    STATE_DEGRADED,
19    STATE_FAULTED,
20    STATE_REMOVED,
21    STATE_UNAVAIL,
22    STATE_AVAIL,
23    STATE_EXPORTED=0x100,
24    STATE_DESTROYED=0x200
25};
26
27struct __vdev_t;
28typedef struct __vdev_t vdev_t;
29
30struct __vdev_t {
31    QString Name;               // DEVICE NAME
32    QString Alias;              // GLABEL ALIAS
33    QString MountPoint;         // POINT WHERE THE DEVICE IS MOUNTED (NON-ZFS)
34    QString Description;        // DEVICE DESCRIPTION
35    int Level;
36    int Index;
37    int Status;
38    QString PartType;           // TYPE OF PARTITIONING SYSTEM OR PARTITION TYPE
39    QString InPool;
40    int SectorSize;
41    unsigned long long SectorStart;
42    unsigned long long SectorsCount;
43    unsigned long long Size;    // SIZE OF THE DEVICE
44
45    QList<vdev_t> Partitions;   // LIST OF ALL SUB-PARTITIONS
46    bool operator==(vdev_t b) { return (Name==b.Name); };   // REQUIRED BY LIST FUNCTIONS
47
48};
49
50typedef struct {
51    QString Name;
52    QString Value;
53    int Source;
54    QString From;
55}  zprop_t;
56
57typedef struct {
58    QString Name;
59    QString Type;
60    int Status;
61    QList<vdev_t> VDevs;
62    QList<zprop_t> Properties;
63    unsigned long long Size;
64    unsigned long long Free;
65} zpool_t;
66
67
68typedef struct {
69    QString FullPath;
70    QList<zprop_t> Properties;
71} zfs_t;
72
73
74#define PROP_READONLY 1
75#define PROP_ISNUMBER 2
76#define PROP_ISOPTION  4
77#define PROP_ISPATH   8
78#define PROP_ISSTRING 16
79#define PROP_CHANGED 32
80#define PROP_CREATE 64
81#define PROP_DELETE 128
82#define PROP_INHERIT 512
83#define PROP_ISUSER  1024
84#define PROP_SRCDEFAULT  2048
85#define PROP_SRCLOCAL    4096
86#define PROP_SRCINHERIT  8192
87
88
89struct zproperty {
90    QString Name;
91    QString Description;
92    QStringList ValidOptions;
93    int Flags;
94};
95
96
97typedef struct {
98    QString PoolName;
99    QString Error;
100} zerror_t;
101
102
103#define ITEM_NONE            0
104#define ITEM_ISMIRROR        1
105#define ITEM_ISRAIDZ         2
106#define ITEM_ISLOG           4
107#define ITEM_ISCACHE         8
108#define ITEM_ISSPARE        16
109#define ITEM_ISDISK         32
110#define ITEM_ISPOOL         64
111#define ITEM_ISOFFLINE     256
112#define ITEM_ISFAULTED     512
113#define ITEM_ISDEGRADED   1024
114#define ITEM_ISREMOVED    2048
115#define ITEM_ISUNAVAIL    4096
116#define ITEM_ISEXPORTED   8192
117#define ITEM_ISDESTROYED 16384
118
119
120#define ITEM_TYPE       0xff
121#define ITEM_STATE      0xff00
122#define ITEM_ALL      0xffff
123#define PARENT(a) ((a)<<16)
124
125
126#define ZFS_SRCNONE 0
127#define ZFS_SRCDEFAULT  1
128#define ZFS_SRCLOCAL    2
129#define ZFS_SRCINHERIT  4
130
131
132#define FSITEM_NONE        1
133#define FSITEM_ISROOTFS    2
134#define FSITEM_ISCLONE     4
135#define FSITEM_ISMOUNTED   8
136#define FSITEM_TYPEFS    256
137#define FSITEM_TYPESNAP  512
138#define FSITEM_TYPEVOL  1024
139
140#define FSITEM_ALL      0xffff
141
142class ZManagerWindow : public QMainWindow
143{
144    Q_OBJECT
145
146private:
147    Ui::ZManagerWindow *ui;
148
149public:
150
151    QList<vdev_t> Disks;
152    QList<zpool_t> Pools;
153    QList<zerror_t> Errors;
154    QList<zfs_t> FileSystems;
155
156    zpool_t *lastSelectedPool;
157    vdev_t *lastSelectedVdev;
158    zfs_t *lastSelectedFileSystem;
159
160    bool needRefresh;
161
162
163
164    const QString getStatusString(int status);
165
166    vdev_t *getDiskbyName(QString name);
167    vdev_t *getContainerDisk(vdev_t *device);
168
169    zpool_t *getZpoolbyName(QString name, int index=-1);
170    zfs_t *getFileSystembyPath(QString path, int index=-1);
171    QTreeWidgetItem *getParentFileSystem(QString path);
172    zprop_t *getFileSystemProperty(zfs_t *fs,QString prop);
173    int  getFileSystemFlags(zfs_t *fs);
174
175    vdev_t *getVDevbyName(QString name);
176    vdev_t *getContainerGroup(vdev_t* device);
177    QString getPoolProperty(zpool_t *pool,QString Property);
178    void    setPoolProperty(zpool_t *pool,QString Property,QString Value);
179    void    setFSProperty(zfs_t *pool, QString Property, QString Value);
180    void    inheritFSProperty(zfs_t *fs, QString Property, bool recursive);
181
182
183    void ProgramInit();
184    void GetCurrentTopology();
185    explicit ZManagerWindow(QWidget *parent = 0);
186    ~ZManagerWindow();
187   
188    // Disk management functions
189    bool deviceCreatePartitionTable(vdev_t *device, int type);
190    bool deviceDestroyPartitionTable(vdev_t *device);
191    bool deviceUnmount(vdev_t * device);
192    bool deviceMount(vdev_t * device);
193    bool deviceAddPartition(vdev_t *device);
194    bool deviceDestroyPartition(vdev_t* device);
195
196    // Pool auxiliary functions
197    int zpoolGetVDEVType(vdev_t *);
198
199
200    bool processErrors(QStringList& output,QString command);
201    bool processzpoolErrors(QStringList& output);
202    bool processzfsErrors(QStringList& output);
203
204public slots:
205    void slotSingleInstance();
206    void refreshState();
207    bool close();
208    void zpoolContextMenu(QPoint);
209    void deviceContextMenu(QPoint);
210    void filesystemContextMenu(QPoint);
211    // Pool management functions
212    void zpoolCreate(bool b);
213    void zpoolRename(bool b);
214    void zpoolDestroy(bool b);
215    void zpoolClear(bool b);
216    void zpoolExport(bool b);
217    void zpoolImport(bool b);
218    void zpoolEditProperties(bool b);
219    void zpoolRemoveDevice(bool b);
220    void zpoolAttachDevice(bool b);
221    void zpoolDetachDevice(bool b);
222    void zpoolOfflineDevice(bool b);
223    void zpoolOnlineDevice(bool b);
224    void zpoolScrub(bool b);
225    void zpoolAdd(bool b);
226    void zpoolAddLog(bool b);
227    void zpoolAddCache(bool b);
228    void zpoolAddSpare(bool b);
229
230
231    void fsCreate(bool b);
232    void fsDestroy(bool b);
233    void fsSnapshot(bool b);
234    void fsRename(bool b);
235    void fsPromote(bool b);
236    void fsClone(bool b);
237    void fsRollback(bool b);
238    void fsMount(bool b);
239    void fsUnmount(bool b);
240    void fsEditProps(bool b);
241
242
243
244
245private slots:
246    void on_toolButton_clicked();
247    void on_dropDownButton_clicked();
248    void on_fspoolList_clicked(const QModelIndex &index);
249    void on_fspoolList_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);
250
251
252};
253
254
255struct zactions {
256    const QString menutext;
257    int triggermask,triggerflags;
258    const char *slot;
259};
260
261QString printBytes(unsigned long long bytes, int unit=-1);
262int printUnits(unsigned long long bytes);
263
264
265
266#endif // ZMANAGERWINDOW_H
Note: See TracBrowser for help on using the repository browser.