line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package IBM::V7000; |
2
|
|
|
|
|
|
|
|
3
|
1
|
|
|
1
|
|
23401
|
use strict; |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
32
|
|
4
|
1
|
|
|
1
|
|
5
|
use warnings; |
|
1
|
|
|
|
|
1
|
|
|
1
|
|
|
|
|
27
|
|
5
|
|
|
|
|
|
|
|
6
|
1
|
|
|
1
|
|
1041
|
use IBM::StorageSystem; |
|
1
|
|
|
|
|
120025
|
|
|
1
|
|
|
|
|
34
|
|
7
|
1
|
|
|
1
|
|
11
|
use Carp qw(croak); |
|
1
|
|
|
|
|
1
|
|
|
1
|
|
|
|
|
134
|
|
8
|
|
|
|
|
|
|
|
9
|
|
|
|
|
|
|
our $VERSION = '0.02'; |
10
|
|
|
|
|
|
|
|
11
|
|
|
|
|
|
|
our @METHODS=qw(array drive enclosure host iogroup vdisk); |
12
|
|
|
|
|
|
|
|
13
|
|
|
|
|
|
|
our @ATTRS = qw(auth_service_cert_set auth_service_configured auth_service_enabled |
14
|
|
|
|
|
|
|
auth_service_pwd_set auth_service_type auth_service_url auth_service_user_name |
15
|
|
|
|
|
|
|
bandwidth cluster_isns_IP_address cluster_locale cluster_ntp_IP_address code_level |
16
|
|
|
|
|
|
|
console_IP email_contact email_contact2 email_contact2_alternate email_contact2_primary |
17
|
|
|
|
|
|
|
email_contact_alternate email_contact_location email_contact_primary email_reply |
18
|
|
|
|
|
|
|
email_state gm_inter_cluster_delay_simulation gm_intra_cluster_delay_simulation |
19
|
|
|
|
|
|
|
gm_link_tolerance gm_max_host_delay has_nas_key id id_alias inventory_mail_interval |
20
|
|
|
|
|
|
|
iscsi_auth_method iscsi_chap_secret layer location name partnership rc_buffer_size |
21
|
|
|
|
|
|
|
relationship_bandwidth_limit space_allocated_to_vdisks space_in_mdisk_grps |
22
|
|
|
|
|
|
|
statistics_frequency statistics_status stats_threshold tier tier_capacity tier_free_capacity |
23
|
|
|
|
|
|
|
time_zone total_allocated_extent_capacity total_free_space total_mdisk_capacity |
24
|
|
|
|
|
|
|
total_overallocation total_used_capacity total_vdisk_capacity total_vdiskcopy_capacity |
25
|
|
|
|
|
|
|
compression_cpu_pc cpu_pc drive_r_io drive_r_mb drive_r_ms drive_w_io |
26
|
|
|
|
|
|
|
drive_w_mb drive_w_ms fc_io fc_mb iscsi_io iscsi_mb mdisk_r_io mdisk_r_mb mdisk_r_ms |
27
|
|
|
|
|
|
|
mdisk_w_io mdisk_w_mb mdisk_w_ms sas_io sas_mb total_cache_pc vdisk_r_io vdisk_r_mb |
28
|
|
|
|
|
|
|
vdisk_r_ms vdisk_w_io vdisk_w_mb vdisk_w_ms write_cache_pc); |
29
|
|
|
|
|
|
|
# TO DO: mdsik |
30
|
|
|
|
|
|
|
|
31
|
|
|
|
|
|
|
foreach my $method ( @METHODS ) { |
32
|
|
|
|
|
|
|
{ |
33
|
1
|
|
|
1
|
|
10
|
no strict 'refs'; |
|
1
|
|
|
|
|
1
|
|
|
1
|
|
|
|
|
162
|
|
34
|
|
|
|
|
|
|
my $get_method = "get_$method"; |
35
|
|
|
|
|
|
|
my $get_methods = "get_${method}s"; |
36
|
|
|
|
|
|
|
|
37
|
|
|
|
|
|
|
*{ __PACKAGE__ ."::$method" } = sub { |
38
|
0
|
|
|
0
|
|
|
my $self = shift; |
39
|
0
|
|
|
|
|
|
$self->{ss}->$method(@_) |
40
|
|
|
|
|
|
|
}; |
41
|
|
|
|
|
|
|
|
42
|
|
|
|
|
|
|
*{ __PACKAGE__ ."::$get_method" } = sub { |
43
|
0
|
|
|
0
|
|
|
my $self = shift; |
44
|
0
|
|
|
|
|
|
$self->{ss}->$get_method(@_) |
45
|
|
|
|
|
|
|
}; |
46
|
|
|
|
|
|
|
|
47
|
|
|
|
|
|
|
*{ __PACKAGE__ ."::$get_methods" } = sub { |
48
|
0
|
|
|
0
|
|
|
my $self = shift; |
49
|
0
|
|
|
|
|
|
$self->{ss}->$get_methods(@_) |
50
|
|
|
|
|
|
|
} |
51
|
|
|
|
|
|
|
} |
52
|
|
|
|
|
|
|
} |
53
|
|
|
|
|
|
|
|
54
|
|
|
|
|
|
|
foreach my $attr ( @ATTRS ) { |
55
|
|
|
|
|
|
|
{ |
56
|
1
|
|
|
1
|
|
5
|
no strict 'refs'; |
|
1
|
|
|
|
|
1
|
|
|
1
|
|
|
|
|
315
|
|
57
|
|
|
|
|
|
|
|
58
|
|
|
|
|
|
|
*{ __PACKAGE__ ."::$attr" } = sub { |
59
|
0
|
|
|
0
|
|
|
my $self = shift; |
60
|
0
|
|
|
|
|
|
$self->{ss}->$attr(@_) |
61
|
|
|
|
|
|
|
}; |
62
|
|
|
|
|
|
|
} |
63
|
|
|
|
|
|
|
} |
64
|
|
|
|
|
|
|
|
65
|
|
|
|
|
|
|
sub new { |
66
|
0
|
|
|
0
|
1
|
|
my ($class, %args) = @_; |
67
|
0
|
|
|
|
|
|
my $self = bless {} , $class; |
68
|
0
|
|
|
|
|
|
my %opts = ( user => $self->{user}, key_path => $self->{key_path}, batch_mode => 1, master_opts => '-q', ); |
69
|
|
|
|
|
|
|
|
70
|
0
|
|
|
|
|
|
$self->{ss} = IBM::StorageSystem->new( %args ); |
71
|
|
|
|
|
|
|
|
72
|
0
|
|
|
|
|
|
return $self |
73
|
|
|
|
|
|
|
} |
74
|
|
|
|
|
|
|
|
75
|
|
|
|
|
|
|
=head1 NAME |
76
|
|
|
|
|
|
|
|
77
|
|
|
|
|
|
|
IBM::V7000 - Perl API to IBM V7000 CLI |
78
|
|
|
|
|
|
|
|
79
|
|
|
|
|
|
|
=head1 VERSION |
80
|
|
|
|
|
|
|
|
81
|
|
|
|
|
|
|
Version 0.01 |
82
|
|
|
|
|
|
|
|
83
|
|
|
|
|
|
|
=head1 SYNOPSIS |
84
|
|
|
|
|
|
|
|
85
|
|
|
|
|
|
|
IBM::V7000 is a Perl API to IBM V7000 CLI. |
86
|
|
|
|
|
|
|
|
87
|
|
|
|
|
|
|
=head1 METHODS |
88
|
|
|
|
|
|
|
|
89
|
|
|
|
|
|
|
=head3 new |
90
|
|
|
|
|
|
|
|
91
|
|
|
|
|
|
|
my $ibm = IBM::V7000->new( user => 'admin', |
92
|
|
|
|
|
|
|
host => 'my-v7000.company.com', |
93
|
|
|
|
|
|
|
key_path => '/path/to/my/.ssh/private_key' |
94
|
|
|
|
|
|
|
) or die "Couldn't create object! $!\n"; |
95
|
|
|
|
|
|
|
|
96
|
|
|
|
|
|
|
Constructor - creates a new IBM::V7000 object. This method accepts three mandatory parameters |
97
|
|
|
|
|
|
|
and one optional parameter, the three mandatory parameters are: |
98
|
|
|
|
|
|
|
|
99
|
|
|
|
|
|
|
=over 3 |
100
|
|
|
|
|
|
|
|
101
|
|
|
|
|
|
|
=item user |
102
|
|
|
|
|
|
|
|
103
|
|
|
|
|
|
|
The username of the user with which to connect to the device. |
104
|
|
|
|
|
|
|
|
105
|
|
|
|
|
|
|
=item host |
106
|
|
|
|
|
|
|
|
107
|
|
|
|
|
|
|
The hostname or IP address of the device to which we are connecting. |
108
|
|
|
|
|
|
|
|
109
|
|
|
|
|
|
|
=item key_path |
110
|
|
|
|
|
|
|
|
111
|
|
|
|
|
|
|
Either a relative or fully qualified path to the private ssh key valid for the |
112
|
|
|
|
|
|
|
user name and device to which we are connecting. Please note that the executing user |
113
|
|
|
|
|
|
|
must have read permission to this key. |
114
|
|
|
|
|
|
|
|
115
|
|
|
|
|
|
|
=back |
116
|
|
|
|
|
|
|
|
117
|
|
|
|
|
|
|
The optional parameter is: |
118
|
|
|
|
|
|
|
|
119
|
|
|
|
|
|
|
=over 3 |
120
|
|
|
|
|
|
|
|
121
|
|
|
|
|
|
|
=item stats_threshold |
122
|
|
|
|
|
|
|
|
123
|
|
|
|
|
|
|
The period in seconds for which retrieved system statistics will be considered fresh, |
124
|
|
|
|
|
|
|
after which they will be re-retrieved. If not set, the default value of this parameter |
125
|
|
|
|
|
|
|
is zero meaning that the statistics are not refreshed unless done explicitly via the |
126
|
|
|
|
|
|
|
B method of an L object. |
127
|
|
|
|
|
|
|
|
128
|
|
|
|
|
|
|
=back |
129
|
|
|
|
|
|
|
|
130
|
|
|
|
|
|
|
=head3 auth_service_cert_set |
131
|
|
|
|
|
|
|
|
132
|
|
|
|
|
|
|
Specifies if the authentication service certificate has been set. |
133
|
|
|
|
|
|
|
|
134
|
|
|
|
|
|
|
=head3 auth_service_configured |
135
|
|
|
|
|
|
|
|
136
|
|
|
|
|
|
|
True if the auth_service_type is configured and either one of the following is true: |
137
|
|
|
|
|
|
|
|
138
|
|
|
|
|
|
|
=over 3 |
139
|
|
|
|
|
|
|
|
140
|
|
|
|
|
|
|
=item * The auth_service_type is LDAP-only (if at least one LDAP server is configured) |
141
|
|
|
|
|
|
|
|
142
|
|
|
|
|
|
|
=item * The auth_service_type is TIP-only: |
143
|
|
|
|
|
|
|
|
144
|
|
|
|
|
|
|
=over 5 |
145
|
|
|
|
|
|
|
|
146
|
|
|
|
|
|
|
=item * The name, password, and URL are established |
147
|
|
|
|
|
|
|
|
148
|
|
|
|
|
|
|
=item * An SSL certificate is created (if an HTTPS URL is available) |
149
|
|
|
|
|
|
|
|
150
|
|
|
|
|
|
|
=back |
151
|
|
|
|
|
|
|
|
152
|
|
|
|
|
|
|
=back |
153
|
|
|
|
|
|
|
|
154
|
|
|
|
|
|
|
=head3 auth_service_enabled |
155
|
|
|
|
|
|
|
|
156
|
|
|
|
|
|
|
True if auth_service_type is configured. |
157
|
|
|
|
|
|
|
|
158
|
|
|
|
|
|
|
=head3 auth_service_pwd_set |
159
|
|
|
|
|
|
|
|
160
|
|
|
|
|
|
|
Specifies if the authentication password has been set. |
161
|
|
|
|
|
|
|
|
162
|
|
|
|
|
|
|
=head3 auth_service_type |
163
|
|
|
|
|
|
|
|
164
|
|
|
|
|
|
|
returns the authentication services type, either; Tivoli Integrated Portal (TIP) or Native Lightweight |
165
|
|
|
|
|
|
|
Directory Access Protocol (LDAP) |
166
|
|
|
|
|
|
|
|
167
|
|
|
|
|
|
|
=head3 auth_service_url |
168
|
|
|
|
|
|
|
|
169
|
|
|
|
|
|
|
Returns the authentication services URL. |
170
|
|
|
|
|
|
|
|
171
|
|
|
|
|
|
|
=head3 auth_service_user_name |
172
|
|
|
|
|
|
|
|
173
|
|
|
|
|
|
|
Returns the user name used for authentication services. |
174
|
|
|
|
|
|
|
|
175
|
|
|
|
|
|
|
=head3 bandwidth |
176
|
|
|
|
|
|
|
|
177
|
|
|
|
|
|
|
Returns the bandwidth available on the intersystem link for background copy, in megabytes per second (MBps). |
178
|
|
|
|
|
|
|
|
179
|
|
|
|
|
|
|
=head3 cluster_isns_IP_address |
180
|
|
|
|
|
|
|
|
181
|
|
|
|
|
|
|
Returns the cluster ISNS IP address. |
182
|
|
|
|
|
|
|
|
183
|
|
|
|
|
|
|
=head3 cluster_locale |
184
|
|
|
|
|
|
|
|
185
|
|
|
|
|
|
|
Returns the cluster configured locale. |
186
|
|
|
|
|
|
|
|
187
|
|
|
|
|
|
|
=head3 cluster_ntp_IP_address |
188
|
|
|
|
|
|
|
|
189
|
|
|
|
|
|
|
Returns the cluster NTP service address. |
190
|
|
|
|
|
|
|
|
191
|
|
|
|
|
|
|
=head3 code_level |
192
|
|
|
|
|
|
|
|
193
|
|
|
|
|
|
|
Returns the cluster code level. |
194
|
|
|
|
|
|
|
|
195
|
|
|
|
|
|
|
=head3 console_IP |
196
|
|
|
|
|
|
|
|
197
|
|
|
|
|
|
|
Returns the cluster console IP address. |
198
|
|
|
|
|
|
|
|
199
|
|
|
|
|
|
|
=head3 email_contact |
200
|
|
|
|
|
|
|
|
201
|
|
|
|
|
|
|
Returns the clusters email contact information - this value is usually the system name. |
202
|
|
|
|
|
|
|
|
203
|
|
|
|
|
|
|
=head3 email_contact2 |
204
|
|
|
|
|
|
|
|
205
|
|
|
|
|
|
|
Returns the clusters extended email contact information. |
206
|
|
|
|
|
|
|
|
207
|
|
|
|
|
|
|
=head3 email_contact2_alternate |
208
|
|
|
|
|
|
|
|
209
|
|
|
|
|
|
|
Returns the clusters extended alternate email contact information. |
210
|
|
|
|
|
|
|
|
211
|
|
|
|
|
|
|
=head3 email_contact2_primary |
212
|
|
|
|
|
|
|
|
213
|
|
|
|
|
|
|
Returns the clusters extended primary email contact information. |
214
|
|
|
|
|
|
|
|
215
|
|
|
|
|
|
|
=head3 email_contact_alternate |
216
|
|
|
|
|
|
|
|
217
|
|
|
|
|
|
|
Returns the clusters email contact alternate information. |
218
|
|
|
|
|
|
|
|
219
|
|
|
|
|
|
|
=head3 email_contact_location |
220
|
|
|
|
|
|
|
|
221
|
|
|
|
|
|
|
Returns the clusters email contact location. |
222
|
|
|
|
|
|
|
|
223
|
|
|
|
|
|
|
=head3 email_contact_primary |
224
|
|
|
|
|
|
|
|
225
|
|
|
|
|
|
|
Returns the clusters email contact phone number. |
226
|
|
|
|
|
|
|
|
227
|
|
|
|
|
|
|
=head3 email_reply |
228
|
|
|
|
|
|
|
|
229
|
|
|
|
|
|
|
Returns the clusters email reply email. |
230
|
|
|
|
|
|
|
|
231
|
|
|
|
|
|
|
=head3 email_state |
232
|
|
|
|
|
|
|
|
233
|
|
|
|
|
|
|
Returns the clusters email operational state. |
234
|
|
|
|
|
|
|
|
235
|
|
|
|
|
|
|
=head3 gm_inter_cluster_delay_simulation |
236
|
|
|
|
|
|
|
|
237
|
|
|
|
|
|
|
Returns the cluster gm inter cluster delay simulation. |
238
|
|
|
|
|
|
|
|
239
|
|
|
|
|
|
|
=head3 gm_intra_cluster_delay_simulation |
240
|
|
|
|
|
|
|
|
241
|
|
|
|
|
|
|
Returns the cluster gm intra cluster delay simulation. |
242
|
|
|
|
|
|
|
|
243
|
|
|
|
|
|
|
=head3 gm_link_tolerance |
244
|
|
|
|
|
|
|
|
245
|
|
|
|
|
|
|
Returns the cluster gm link delay tolerance in seconds. |
246
|
|
|
|
|
|
|
|
247
|
|
|
|
|
|
|
=head3 gm_max_host_delay |
248
|
|
|
|
|
|
|
|
249
|
|
|
|
|
|
|
Returns the cluster gm maximum host delay value. |
250
|
|
|
|
|
|
|
|
251
|
|
|
|
|
|
|
=head3 has_nas_key |
252
|
|
|
|
|
|
|
|
253
|
|
|
|
|
|
|
Specifies if the cluster has a NAS key configured. |
254
|
|
|
|
|
|
|
|
255
|
|
|
|
|
|
|
=head3 id |
256
|
|
|
|
|
|
|
|
257
|
|
|
|
|
|
|
Returns the cluster ID. |
258
|
|
|
|
|
|
|
|
259
|
|
|
|
|
|
|
=head3 id_alias |
260
|
|
|
|
|
|
|
|
261
|
|
|
|
|
|
|
Returns the cluster ID alias. |
262
|
|
|
|
|
|
|
|
263
|
|
|
|
|
|
|
=head3 inventory_mail_interval |
264
|
|
|
|
|
|
|
|
265
|
|
|
|
|
|
|
Returns the cluster inventory mail interval period in days. |
266
|
|
|
|
|
|
|
|
267
|
|
|
|
|
|
|
=head3 iscsi_auth_method |
268
|
|
|
|
|
|
|
|
269
|
|
|
|
|
|
|
Returns the cluster iSCSI authentication method. |
270
|
|
|
|
|
|
|
|
271
|
|
|
|
|
|
|
=head3 iscsi_chap_secret |
272
|
|
|
|
|
|
|
|
273
|
|
|
|
|
|
|
Returns the iSCSI CHAP secret. |
274
|
|
|
|
|
|
|
|
275
|
|
|
|
|
|
|
=head3 layer |
276
|
|
|
|
|
|
|
|
277
|
|
|
|
|
|
|
Returns the cluster layer type; either replication or storage (default). |
278
|
|
|
|
|
|
|
Replication means the system can create partnerships with Storwize StorageSystem Unified. |
279
|
|
|
|
|
|
|
Storage means the system can present storage to Storwize StorageSystem Unified. |
280
|
|
|
|
|
|
|
|
281
|
|
|
|
|
|
|
=head3 location |
282
|
|
|
|
|
|
|
|
283
|
|
|
|
|
|
|
Returns the cluster location type, either local or remote. |
284
|
|
|
|
|
|
|
|
285
|
|
|
|
|
|
|
=head3 name |
286
|
|
|
|
|
|
|
|
287
|
|
|
|
|
|
|
Returns the cluster name. |
288
|
|
|
|
|
|
|
|
289
|
|
|
|
|
|
|
=head3 partnership |
290
|
|
|
|
|
|
|
|
291
|
|
|
|
|
|
|
Returns the cluster partnership type, either one of; fully_configured, partially_configured_local, |
292
|
|
|
|
|
|
|
partially_configured_local_stopped, not_present, fully_configured_stopped, fully_configured_remote_stopped, |
293
|
|
|
|
|
|
|
fully_configured_local_excluded, fully_configured_remote_excluded or fully_configured_exceeded |
294
|
|
|
|
|
|
|
|
295
|
|
|
|
|
|
|
=head3 rc_buffer_size |
296
|
|
|
|
|
|
|
|
297
|
|
|
|
|
|
|
Returns the cluster resource buffer size assigned for Metro Mirror or Global Mirrored Copy Services. |
298
|
|
|
|
|
|
|
|
299
|
|
|
|
|
|
|
=head3 relationship_bandwidth_limit |
300
|
|
|
|
|
|
|
|
301
|
|
|
|
|
|
|
Returns the cluster relationship bandwidth limit in megabytes per second (MBps). |
302
|
|
|
|
|
|
|
|
303
|
|
|
|
|
|
|
=head3 space_allocated_to_vdisks |
304
|
|
|
|
|
|
|
|
305
|
|
|
|
|
|
|
Returns the space allocated to VDisks - this may be in a variable notation format. |
306
|
|
|
|
|
|
|
|
307
|
|
|
|
|
|
|
=head3 space_in_mdisk_grps |
308
|
|
|
|
|
|
|
|
309
|
|
|
|
|
|
|
Returns the space allocated to MDisk groups - this may be in a variable notation format. |
310
|
|
|
|
|
|
|
|
311
|
|
|
|
|
|
|
=head3 statistics_frequency |
312
|
|
|
|
|
|
|
|
313
|
|
|
|
|
|
|
Returns the statistics collection frequency interval. |
314
|
|
|
|
|
|
|
|
315
|
|
|
|
|
|
|
=head3 statistics_status |
316
|
|
|
|
|
|
|
|
317
|
|
|
|
|
|
|
Returns the statistics collection status. |
318
|
|
|
|
|
|
|
|
319
|
|
|
|
|
|
|
=head3 tier |
320
|
|
|
|
|
|
|
|
321
|
|
|
|
|
|
|
Returns an array containing the supported tier types for the cluster. |
322
|
|
|
|
|
|
|
|
323
|
|
|
|
|
|
|
B that this method returns an array of the available tier types and that the ordering |
324
|
|
|
|
|
|
|
of these types is preserved from the CLI output. The ordering of these types can be used to |
325
|
|
|
|
|
|
|
retrieve the tier capacity of each tier type with the B command. |
326
|
|
|
|
|
|
|
|
327
|
|
|
|
|
|
|
=head3 tier_capacity |
328
|
|
|
|
|
|
|
|
329
|
|
|
|
|
|
|
Returns the total tier capacity for each tier type in the cluster. |
330
|
|
|
|
|
|
|
|
331
|
|
|
|
|
|
|
B that this method returns an array of tier capacity ivalues, the index of |
332
|
|
|
|
|
|
|
which corresponds with the array indexes of tier types as returned by the B method. |
333
|
|
|
|
|
|
|
|
334
|
|
|
|
|
|
|
For example, to print each tier type and the corresponding tier capacity for this cluster: |
335
|
|
|
|
|
|
|
|
336
|
|
|
|
|
|
|
for ( my $i = 0; $i < scalar @{ $ibm->tier } ; $i++ ) { |
337
|
|
|
|
|
|
|
print "Tier: " . $ibm->tier->[$i] . |
338
|
|
|
|
|
|
|
" - Capacity: " . $ibm->tier_capacity->[$i] . "\n" |
339
|
|
|
|
|
|
|
} |
340
|
|
|
|
|
|
|
|
341
|
|
|
|
|
|
|
=head3 tier_free_capacity |
342
|
|
|
|
|
|
|
|
343
|
|
|
|
|
|
|
Returns the free tier capacity for each tier type in the cluster. |
344
|
|
|
|
|
|
|
|
345
|
|
|
|
|
|
|
B that like the B and B methods, this method also returns an |
346
|
|
|
|
|
|
|
array of tier free capacity values, the order of which corresponds with the arrays returned |
347
|
|
|
|
|
|
|
by the aforementioned methods. |
348
|
|
|
|
|
|
|
|
349
|
|
|
|
|
|
|
=head3 time_zone |
350
|
|
|
|
|
|
|
|
351
|
|
|
|
|
|
|
Returns the cluster time zone. |
352
|
|
|
|
|
|
|
|
353
|
|
|
|
|
|
|
=head3 total_allocated_extent_capacity |
354
|
|
|
|
|
|
|
|
355
|
|
|
|
|
|
|
Returns the clusters total allocated capacity - this may be in a variable notation format. |
356
|
|
|
|
|
|
|
|
357
|
|
|
|
|
|
|
=head3 total_free_space |
358
|
|
|
|
|
|
|
|
359
|
|
|
|
|
|
|
Returns the clusters total free space - this may be in a variable notation format. |
360
|
|
|
|
|
|
|
|
361
|
|
|
|
|
|
|
=head3 total_mdisk_capacity |
362
|
|
|
|
|
|
|
|
363
|
|
|
|
|
|
|
Returns the clusters total MDisk capacity - this may be in a variable notation format. |
364
|
|
|
|
|
|
|
|
365
|
|
|
|
|
|
|
=head3 total_overallocation |
366
|
|
|
|
|
|
|
|
367
|
|
|
|
|
|
|
Returns the cluster total overallocation limit. |
368
|
|
|
|
|
|
|
|
369
|
|
|
|
|
|
|
=head3 total_used_capacity |
370
|
|
|
|
|
|
|
|
371
|
|
|
|
|
|
|
Returns the clusters total used capacity - this may be in a variable notation format. |
372
|
|
|
|
|
|
|
|
373
|
|
|
|
|
|
|
=head3 total_vdisk_capacity |
374
|
|
|
|
|
|
|
|
375
|
|
|
|
|
|
|
Returns the clusters total VDisk capacity - this may be in a variable notation format. |
376
|
|
|
|
|
|
|
|
377
|
|
|
|
|
|
|
=head3 total_vdiskcopy_capacity |
378
|
|
|
|
|
|
|
|
379
|
|
|
|
|
|
|
Returns the clusters total VDisk copy capacity - this may be in a variable notation format. |
380
|
|
|
|
|
|
|
|
381
|
|
|
|
|
|
|
=head3 compression_cpu_pc |
382
|
|
|
|
|
|
|
|
383
|
|
|
|
|
|
|
Returns an L object for allocated CPU capacity utilised for compression. |
384
|
|
|
|
|
|
|
|
385
|
|
|
|
|
|
|
=head3 cpu_pc |
386
|
|
|
|
|
|
|
|
387
|
|
|
|
|
|
|
Returns an L object for allocated CPU capacity utilised for the system. |
388
|
|
|
|
|
|
|
|
389
|
|
|
|
|
|
|
=head3 drive_r_io |
390
|
|
|
|
|
|
|
|
391
|
|
|
|
|
|
|
Returns an L object the average amount of I/O operations transferred |
392
|
|
|
|
|
|
|
per second for read operations to drives during the sample period. |
393
|
|
|
|
|
|
|
|
394
|
|
|
|
|
|
|
=head3 drive_r_mb |
395
|
|
|
|
|
|
|
|
396
|
|
|
|
|
|
|
Returns an L object for the average number of megabytes transferred |
397
|
|
|
|
|
|
|
per second for read operations to drives during the sample period. |
398
|
|
|
|
|
|
|
|
399
|
|
|
|
|
|
|
=head3 drive_r_ms |
400
|
|
|
|
|
|
|
|
401
|
|
|
|
|
|
|
Returns an L object for the average amount of time in milliseconds |
402
|
|
|
|
|
|
|
that the system takes to respond to read requests to drives over the sample period. |
403
|
|
|
|
|
|
|
|
404
|
|
|
|
|
|
|
=head3 drive_w_io |
405
|
|
|
|
|
|
|
|
406
|
|
|
|
|
|
|
Returns an L object the average amount of I/O operations transferred |
407
|
|
|
|
|
|
|
per second for write operations to drives during the sample period. |
408
|
|
|
|
|
|
|
|
409
|
|
|
|
|
|
|
=head3 drive_w_mb |
410
|
|
|
|
|
|
|
|
411
|
|
|
|
|
|
|
Returns an L object for the average number of megabytes transferred |
412
|
|
|
|
|
|
|
per second for write operations to drives during the sample period. |
413
|
|
|
|
|
|
|
|
414
|
|
|
|
|
|
|
=head3 drive_w_ms |
415
|
|
|
|
|
|
|
|
416
|
|
|
|
|
|
|
Returns an L object for the average amount of time in milliseconds |
417
|
|
|
|
|
|
|
that the system takes to respond to write requests to drives over the sample period. |
418
|
|
|
|
|
|
|
|
419
|
|
|
|
|
|
|
=head3 fc_io |
420
|
|
|
|
|
|
|
|
421
|
|
|
|
|
|
|
Returns an L object for the total input/output (I/O) operations |
422
|
|
|
|
|
|
|
transferred per seconds for Fibre Channel traffic on the system. This value includes |
423
|
|
|
|
|
|
|
host I/O and any bandwidth that is used for communication within the system. |
424
|
|
|
|
|
|
|
|
425
|
|
|
|
|
|
|
=head3 fc_mb |
426
|
|
|
|
|
|
|
|
427
|
|
|
|
|
|
|
Returns an L object for the total number of megabytes transferred |
428
|
|
|
|
|
|
|
per second for Fibre Channel traffic on the system. This value includes host I/O and any |
429
|
|
|
|
|
|
|
bandwidth that is used for communication within the system. |
430
|
|
|
|
|
|
|
|
431
|
|
|
|
|
|
|
=head3 iscsi_io |
432
|
|
|
|
|
|
|
|
433
|
|
|
|
|
|
|
Returns an L object for the total I/O operations transferred |
434
|
|
|
|
|
|
|
per second for iSCSI traffic on the system. |
435
|
|
|
|
|
|
|
|
436
|
|
|
|
|
|
|
=head3 iscsi_mb |
437
|
|
|
|
|
|
|
|
438
|
|
|
|
|
|
|
Returns an L object for the total number of megabytes |
439
|
|
|
|
|
|
|
transferred per second for iSCSI traffic on the system. |
440
|
|
|
|
|
|
|
|
441
|
|
|
|
|
|
|
=head3 mdisk_r_io |
442
|
|
|
|
|
|
|
|
443
|
|
|
|
|
|
|
Returns an L object for the average amount of I/O operations |
444
|
|
|
|
|
|
|
transferred per second for read operations to MDisks during the sample period. |
445
|
|
|
|
|
|
|
|
446
|
|
|
|
|
|
|
=head3 mdisk_r_mb |
447
|
|
|
|
|
|
|
|
448
|
|
|
|
|
|
|
Returns an L object for the average number of megabytes transferred |
449
|
|
|
|
|
|
|
per second for read operations to MDisks during the sample period. |
450
|
|
|
|
|
|
|
|
451
|
|
|
|
|
|
|
=head3 mdisk_r_ms |
452
|
|
|
|
|
|
|
|
453
|
|
|
|
|
|
|
Returns an L object for the average amount of time in milliseconds |
454
|
|
|
|
|
|
|
that the system takes to respond to read requests to MDisks over the sample period. |
455
|
|
|
|
|
|
|
|
456
|
|
|
|
|
|
|
=head3 mdisk_w_io |
457
|
|
|
|
|
|
|
|
458
|
|
|
|
|
|
|
Returns an L object for the average amount of I/O operations |
459
|
|
|
|
|
|
|
transferred per second for write operations to MDisks during the sample period. |
460
|
|
|
|
|
|
|
|
461
|
|
|
|
|
|
|
=head3 mdisk_w_mb |
462
|
|
|
|
|
|
|
|
463
|
|
|
|
|
|
|
Returns an L object for the average number of megabytes transferred |
464
|
|
|
|
|
|
|
per second for write operations to MDisks during the sample period. |
465
|
|
|
|
|
|
|
|
466
|
|
|
|
|
|
|
=head3 mdisk_w_ms |
467
|
|
|
|
|
|
|
|
468
|
|
|
|
|
|
|
Returns an L object for the average amount of time in milliseconds |
469
|
|
|
|
|
|
|
that the system takes to respond to write requests to MDisks over the sample period. |
470
|
|
|
|
|
|
|
|
471
|
|
|
|
|
|
|
=head3 sas_io |
472
|
|
|
|
|
|
|
|
473
|
|
|
|
|
|
|
Returns an L object for the total I/O operations transferred per |
474
|
|
|
|
|
|
|
second for SAS traffic on the system. This value includes host I/O and bandwidth that |
475
|
|
|
|
|
|
|
is used for background RAID activity. |
476
|
|
|
|
|
|
|
|
477
|
|
|
|
|
|
|
=head3 sas_mb |
478
|
|
|
|
|
|
|
|
479
|
|
|
|
|
|
|
Returns an L object for the total number of megabytes |
480
|
|
|
|
|
|
|
transferred per second for iSCSI traffic on the system. |
481
|
|
|
|
|
|
|
|
482
|
|
|
|
|
|
|
=head3 total_cache_pc |
483
|
|
|
|
|
|
|
|
484
|
|
|
|
|
|
|
Returns an L object for the total percentage for both the |
485
|
|
|
|
|
|
|
write and read cache usage for the node. |
486
|
|
|
|
|
|
|
|
487
|
|
|
|
|
|
|
=head3 vdisk_r_io |
488
|
|
|
|
|
|
|
|
489
|
|
|
|
|
|
|
Returns an L object for the average amount of I/O operations |
490
|
|
|
|
|
|
|
transferred per second for read operations to volumes during the sample period. |
491
|
|
|
|
|
|
|
|
492
|
|
|
|
|
|
|
=head3 vdisk_r_mb |
493
|
|
|
|
|
|
|
|
494
|
|
|
|
|
|
|
Returns an L object for the average number of megabytes |
495
|
|
|
|
|
|
|
transferred per second for read operations to MDisks during the sample period. |
496
|
|
|
|
|
|
|
|
497
|
|
|
|
|
|
|
=head3 vdisk_r_ms |
498
|
|
|
|
|
|
|
|
499
|
|
|
|
|
|
|
Returns an L object for the average amount of time in |
500
|
|
|
|
|
|
|
milliseconds that the system takes to respond to read requests to MDisks over the |
501
|
|
|
|
|
|
|
sample period. |
502
|
|
|
|
|
|
|
|
503
|
|
|
|
|
|
|
=head3 vdisk_w_io |
504
|
|
|
|
|
|
|
|
505
|
|
|
|
|
|
|
Returns an L object for the average amount of I/O operations |
506
|
|
|
|
|
|
|
transferred per second for read operations to drives during the sample period. |
507
|
|
|
|
|
|
|
|
508
|
|
|
|
|
|
|
=head3 vdisk_w_mb |
509
|
|
|
|
|
|
|
|
510
|
|
|
|
|
|
|
Returns an L object for the average number of megabytes transferred |
511
|
|
|
|
|
|
|
per second for read operations to drives during the sample period |
512
|
|
|
|
|
|
|
|
513
|
|
|
|
|
|
|
=head3 vdisk_w_ms |
514
|
|
|
|
|
|
|
|
515
|
|
|
|
|
|
|
Returns an L object for the average amount of time in milliseconds |
516
|
|
|
|
|
|
|
that the system takes to respond to read requests to MDisks over the sample period. |
517
|
|
|
|
|
|
|
|
518
|
|
|
|
|
|
|
=head3 write_cache_pc |
519
|
|
|
|
|
|
|
|
520
|
|
|
|
|
|
|
Returns an L object for the percentage of the write cache usage |
521
|
|
|
|
|
|
|
for the node. |
522
|
|
|
|
|
|
|
|
523
|
|
|
|
|
|
|
=head3 refresh_system_stats |
524
|
|
|
|
|
|
|
|
525
|
|
|
|
|
|
|
This method refreshes all system statistics with updated values from the system. This |
526
|
|
|
|
|
|
|
method may be handy if instantiate an IBM::StorageSystem object within a long running or non-exiting |
527
|
|
|
|
|
|
|
process and wish to either periodically retrieve updated system statistics. |
528
|
|
|
|
|
|
|
|
529
|
|
|
|
|
|
|
B that you can call B on individual system statistics which may have a slight |
530
|
|
|
|
|
|
|
performance increase over this method. |
531
|
|
|
|
|
|
|
|
532
|
|
|
|
|
|
|
=head3 stats_threshold |
533
|
|
|
|
|
|
|
|
534
|
|
|
|
|
|
|
This method allows you specify the statistics threshold freshness interval in seconds. This |
535
|
|
|
|
|
|
|
interval is used to determine if the value sreturned by a statistics method are fresh or |
536
|
|
|
|
|
|
|
whether they should be refreshed from the atregt system. |
537
|
|
|
|
|
|
|
|
538
|
|
|
|
|
|
|
By default this value is zero, meaning that the statistics are never refreshed unless explicitly |
539
|
|
|
|
|
|
|
done so by calling the B method of the statistic object. This may result in a |
540
|
|
|
|
|
|
|
performance increase in situations where statistic methods are frequently used, and may also |
541
|
|
|
|
|
|
|
result in more consistent reporting of the target system state as the statistic values will more |
542
|
|
|
|
|
|
|
closely represent a single point in time overview of the system rather than a series of |
543
|
|
|
|
|
|
|
consecutive snapshots. |
544
|
|
|
|
|
|
|
|
545
|
|
|
|
|
|
|
In situation where you may want to gather a set of statistical values for the target system over |
546
|
|
|
|
|
|
|
a finite period, you could set the threshold value low, and reset it afterwards. e.g. |
547
|
|
|
|
|
|
|
|
548
|
|
|
|
|
|
|
# Print the current FC IOPS value every two seconds for a minute |
549
|
|
|
|
|
|
|
$ibm->stats_threshold = 1; |
550
|
|
|
|
|
|
|
for ( 1 .. 30 ) { |
551
|
|
|
|
|
|
|
print $ibm->fc_io_current; |
552
|
|
|
|
|
|
|
sleep 2 |
553
|
|
|
|
|
|
|
} |
554
|
|
|
|
|
|
|
# Disable automatic refreshing |
555
|
|
|
|
|
|
|
$ibm->stats_threshold = 0; |
556
|
|
|
|
|
|
|
|
557
|
|
|
|
|
|
|
=head3 array( $id ) |
558
|
|
|
|
|
|
|
|
559
|
|
|
|
|
|
|
# Print the capacity and RAID level of array 1 in GB |
560
|
|
|
|
|
|
|
my $array = $ibm->array( 1 ); |
561
|
|
|
|
|
|
|
print "Array 1 capacity: " . int ( $array->capacity / ( 1024 ** 3 ) ) |
562
|
|
|
|
|
|
|
. " (" . $array->raid_level . ")\n" |
563
|
|
|
|
|
|
|
|
564
|
|
|
|
|
|
|
# e.g. Array 1 capacity: 5824G (raid10) |
565
|
|
|
|
|
|
|
|
566
|
|
|
|
|
|
|
Returns an L object representing the array specified by the numerical |
567
|
|
|
|
|
|
|
id parameter. |
568
|
|
|
|
|
|
|
|
569
|
|
|
|
|
|
|
B that this is a caching method and that a previously retrieved L object will |
570
|
|
|
|
|
|
|
be returned if one has been cached from previous invocations. |
571
|
|
|
|
|
|
|
|
572
|
|
|
|
|
|
|
=head3 get_array( $id ) |
573
|
|
|
|
|
|
|
|
574
|
|
|
|
|
|
|
Returns the array specified by the value of the numerical ID argument as an L object. |
575
|
|
|
|
|
|
|
|
576
|
|
|
|
|
|
|
B that this method is non-caching and the array information will always be retrieved from the StorageSystem |
577
|
|
|
|
|
|
|
system even if a cached object exists. |
578
|
|
|
|
|
|
|
|
579
|
|
|
|
|
|
|
=head3 get_arrays |
580
|
|
|
|
|
|
|
|
581
|
|
|
|
|
|
|
# Print the array status of all arrays in our system |
582
|
|
|
|
|
|
|
map { print "Array ", $_->mdisk_id, " status ", $_->status, "\n" } $ibm->get_arrays; |
583
|
|
|
|
|
|
|
|
584
|
|
|
|
|
|
|
Returns an array of L objects representing all arrays in the target system. |
585
|
|
|
|
|
|
|
|
586
|
|
|
|
|
|
|
=head3 drive ( $id ) |
587
|
|
|
|
|
|
|
|
588
|
|
|
|
|
|
|
# Get drive ID 2 as an IBM::StorageSystem::Drive object |
589
|
|
|
|
|
|
|
my $drive = $ibm->drive( 2 ); |
590
|
|
|
|
|
|
|
|
591
|
|
|
|
|
|
|
# Print the drive capacity in bytes |
592
|
|
|
|
|
|
|
print $drive->capacity; |
593
|
|
|
|
|
|
|
|
594
|
|
|
|
|
|
|
# Alternately; |
595
|
|
|
|
|
|
|
print $ibm->drive( 2 )->capacity; |
596
|
|
|
|
|
|
|
|
597
|
|
|
|
|
|
|
# Print the drive vendor and product IDs |
598
|
|
|
|
|
|
|
print "Vendor ID: ", $drive->vendor_id, " - Product ID: ", $drive->product_id, "\n"; |
599
|
|
|
|
|
|
|
|
600
|
|
|
|
|
|
|
Returns the drive specified by the value of the integer argument as a L object. |
601
|
|
|
|
|
|
|
|
602
|
|
|
|
|
|
|
B that this method implements caching and that a cached object will be retrieved if present. |
603
|
|
|
|
|
|
|
|
604
|
|
|
|
|
|
|
If you require a non-cached object, then use the B method instead. |
605
|
|
|
|
|
|
|
|
606
|
|
|
|
|
|
|
=head3 get_drive( $id ) |
607
|
|
|
|
|
|
|
|
608
|
|
|
|
|
|
|
Returns the drive specified by the value of the integer argument. This method is non-caching and |
609
|
|
|
|
|
|
|
always retrieves information directly from the target system even if a cached object is present. |
610
|
|
|
|
|
|
|
|
611
|
|
|
|
|
|
|
=head3 get_drives( $id ) |
612
|
|
|
|
|
|
|
|
613
|
|
|
|
|
|
|
# Print the SAS port status and drive status for all drives in a nicely formatted list |
614
|
|
|
|
|
|
|
printf("%-20s%-20s%-20s%-20s\n", 'Drive', 'SAS Port 1 Status', 'SAS Port 2 Status', 'Status'); |
615
|
|
|
|
|
|
|
printf("%-20s%-20s%-20s%-20s\n", '-'x18, '-'x18, '-'x18, '-'x18); |
616
|
|
|
|
|
|
|
map { printf( "%-20s%-20s%-20s%-20s\n", $_->id, $_->port_1_status, $_->port_2_status, $_->status) } $ibm->get_drives; |
617
|
|
|
|
|
|
|
|
618
|
|
|
|
|
|
|
# e.g. |
619
|
|
|
|
|
|
|
# Drive SAS Port 1 Status SAS Port 2 Status Status |
620
|
|
|
|
|
|
|
# ------------------ ------------------ ------------------ ------------------ |
621
|
|
|
|
|
|
|
# 0 online online online |
622
|
|
|
|
|
|
|
# 1 online online online |
623
|
|
|
|
|
|
|
# 2 online online online |
624
|
|
|
|
|
|
|
# 3 online online online |
625
|
|
|
|
|
|
|
# ... |
626
|
|
|
|
|
|
|
|
627
|
|
|
|
|
|
|
Returns all drives as an array of L objects. |
628
|
|
|
|
|
|
|
|
629
|
|
|
|
|
|
|
=head3 enclosure( $id ) |
630
|
|
|
|
|
|
|
|
631
|
|
|
|
|
|
|
# Print the status of a specific enclosure |
632
|
|
|
|
|
|
|
print "Enclosure two status is " . $ibm->enclosure(2)->status . "\n"; |
633
|
|
|
|
|
|
|
|
634
|
|
|
|
|
|
|
# Get all PSUs in an enclosure as L objects. |
635
|
|
|
|
|
|
|
my @psus = $ibm->enclosure(1)->psus; |
636
|
|
|
|
|
|
|
|
637
|
|
|
|
|
|
|
Returns the enclosure specified by the numerical identifer of the id parameter as an |
638
|
|
|
|
|
|
|
L object. |
639
|
|
|
|
|
|
|
|
640
|
|
|
|
|
|
|
B that this is a caching method and that a cached object will be returned if one is present. |
641
|
|
|
|
|
|
|
If you require a non-cached result, then please use the B method. |
642
|
|
|
|
|
|
|
|
643
|
|
|
|
|
|
|
=head3 get_enclosure( $id ) |
644
|
|
|
|
|
|
|
|
645
|
|
|
|
|
|
|
This method is a functionally equivalent non-caching implementation of the B method. |
646
|
|
|
|
|
|
|
|
647
|
|
|
|
|
|
|
=head3 get_enclosures |
648
|
|
|
|
|
|
|
|
649
|
|
|
|
|
|
|
# Print the status of each enclosure in our system. |
650
|
|
|
|
|
|
|
foreach my $enclosure ( $ibm->get_enclosures ) { |
651
|
|
|
|
|
|
|
print "Enclosure ", $enclosure->id, " status: ", $enclosure->status, "\n" |
652
|
|
|
|
|
|
|
} |
653
|
|
|
|
|
|
|
|
654
|
|
|
|
|
|
|
Returns an array of L objects representing all enclosures present in teh target |
655
|
|
|
|
|
|
|
system. |
656
|
|
|
|
|
|
|
|
657
|
|
|
|
|
|
|
=head3 host( $hostname ) |
658
|
|
|
|
|
|
|
|
659
|
|
|
|
|
|
|
# Print the host status of the attached host 'sauron' |
660
|
|
|
|
|
|
|
print "Status: " . $ibm->host(sauron)->status . "\n"; |
661
|
|
|
|
|
|
|
|
662
|
|
|
|
|
|
|
Returns the host specified by the value of the named host parameter as an L object. |
663
|
|
|
|
|
|
|
|
664
|
|
|
|
|
|
|
B that this is a caching method and a cached object will be returned if one exists. If you require |
665
|
|
|
|
|
|
|
a non-cached object, then please use the B method. |
666
|
|
|
|
|
|
|
|
667
|
|
|
|
|
|
|
=head3 get_host( $hostname ) |
668
|
|
|
|
|
|
|
|
669
|
|
|
|
|
|
|
This is a functionally equivalent non-caching implementation of the B method. |
670
|
|
|
|
|
|
|
|
671
|
|
|
|
|
|
|
=head3 get_hosts |
672
|
|
|
|
|
|
|
|
673
|
|
|
|
|
|
|
# Print a list of all configured hosts sorted by hostname, their WWPNs, |
674
|
|
|
|
|
|
|
# port state and login status. |
675
|
|
|
|
|
|
|
|
676
|
|
|
|
|
|
|
foreach $host ( map { $_->[0] } sort { $a->[1] cmp $b->[1] } map { [ $_, $_->name ] } $ibm->get_hosts ) { |
677
|
|
|
|
|
|
|
my $c = 0; |
678
|
|
|
|
|
|
|
|
679
|
|
|
|
|
|
|
foreach $wwpn ( @{ $host->WWPN } ) { |
680
|
|
|
|
|
|
|
print ( $c ? "\t" : ('-'x100)."\n".$host->name ); |
681
|
|
|
|
|
|
|
print "\t\t\t$wwpn\t" . @{ $host->state }[$c] . "\t\t" . |
682
|
|
|
|
|
|
|
( @{$host->node_logged_in_count }[$c] ? '' : 'not ' ) . "logged in\n"; |
683
|
|
|
|
|
|
|
$c++ |
684
|
|
|
|
|
|
|
} |
685
|
|
|
|
|
|
|
} |
686
|
|
|
|
|
|
|
|
687
|
|
|
|
|
|
|
# Prints something similar to: |
688
|
|
|
|
|
|
|
# ---------------------------------------------------------------------------------------------------- |
689
|
|
|
|
|
|
|
# host-3 2101001B32A3D94C active logged in |
690
|
|
|
|
|
|
|
# 2100001B3283D94C active logged in |
691
|
|
|
|
|
|
|
# ---------------------------------------------------------------------------------------------------- |
692
|
|
|
|
|
|
|
# host-4 2100001B320786E7 active logged in |
693
|
|
|
|
|
|
|
# 2101001B322786E7 active logged in |
694
|
|
|
|
|
|
|
# ---------------------------------------------------------------------------------------------------- |
695
|
|
|
|
|
|
|
# storage-2 210100E08BB40A08 offline not logged in |
696
|
|
|
|
|
|
|
# 210000E08B940A08 offline not logged in |
697
|
|
|
|
|
|
|
# ... etc. |
698
|
|
|
|
|
|
|
|
699
|
|
|
|
|
|
|
Returns an array of L objects representing all host attached to the target system. |
700
|
|
|
|
|
|
|
|
701
|
|
|
|
|
|
|
=head3 iogroup( $id ) |
702
|
|
|
|
|
|
|
|
703
|
|
|
|
|
|
|
# Get I/O group 0 |
704
|
|
|
|
|
|
|
my $io_group = $ibm->get_iogroup(0); |
705
|
|
|
|
|
|
|
|
706
|
|
|
|
|
|
|
# Print the I/O group maintenance state |
707
|
|
|
|
|
|
|
print $io_group->maintenance_state; |
708
|
|
|
|
|
|
|
|
709
|
|
|
|
|
|
|
# Alternately: |
710
|
|
|
|
|
|
|
print $ibm->iogroup(0)->maintenance_state; |
711
|
|
|
|
|
|
|
|
712
|
|
|
|
|
|
|
Returns the I/O group identified by the value of the numerical ID parameter as an L |
713
|
|
|
|
|
|
|
object. |
714
|
|
|
|
|
|
|
|
715
|
|
|
|
|
|
|
B that this method implements caching and a cached object will be returned shoudl one be present. |
716
|
|
|
|
|
|
|
If you require a non-cached object then please use the B method. |
717
|
|
|
|
|
|
|
|
718
|
|
|
|
|
|
|
=head3 get_iogroup( $id ) |
719
|
|
|
|
|
|
|
|
720
|
|
|
|
|
|
|
This is a functionally equivalent non-caching implementation of the B method. |
721
|
|
|
|
|
|
|
|
722
|
|
|
|
|
|
|
=head3 get_iogroups |
723
|
|
|
|
|
|
|
|
724
|
|
|
|
|
|
|
# Print a formatted listing of all I/O groups by ID and name, along with |
725
|
|
|
|
|
|
|
# their VDisk count, host count, node count and maintenance state. |
726
|
|
|
|
|
|
|
map { printf("%-8s%-20s%-20s%-20s%-20s%-20s\n", |
727
|
|
|
|
|
|
|
$_->id, |
728
|
|
|
|
|
|
|
$_->name, |
729
|
|
|
|
|
|
|
$_->vdisk_count, |
730
|
|
|
|
|
|
|
$_->host_count, |
731
|
|
|
|
|
|
|
$_->node_count, |
732
|
|
|
|
|
|
|
$_->maintenance ) |
733
|
|
|
|
|
|
|
} $ibm->get_iogroups; |
734
|
|
|
|
|
|
|
|
735
|
|
|
|
|
|
|
# Prints something like: |
736
|
|
|
|
|
|
|
# |
737
|
|
|
|
|
|
|
# ID Name VDisk Count Host Count Node Count Maintenance |
738
|
|
|
|
|
|
|
# 0 io_grp0 2 3 2 no |
739
|
|
|
|
|
|
|
# 1 io_grp1 0 3 0 no |
740
|
|
|
|
|
|
|
# 2 io_grp2 0 3 0 no |
741
|
|
|
|
|
|
|
# 3 io_grp3 0 3 0 no |
742
|
|
|
|
|
|
|
# ... etc. |
743
|
|
|
|
|
|
|
|
744
|
|
|
|
|
|
|
Returns an array of L objects representing all configured I/O groups on the target system. |
745
|
|
|
|
|
|
|
|
746
|
|
|
|
|
|
|
=head3 vdisk( $id ) |
747
|
|
|
|
|
|
|
|
748
|
|
|
|
|
|
|
# Get the VDisk ID 3 and print the VDisk UUID |
749
|
|
|
|
|
|
|
my $vdisk = $ibm->vdisk(3); |
750
|
|
|
|
|
|
|
print $vdisk->vdisk_UUID; |
751
|
|
|
|
|
|
|
|
752
|
|
|
|
|
|
|
# Alternately: |
753
|
|
|
|
|
|
|
print $ibm->vdisk(3)->vdisk_UUID; |
754
|
|
|
|
|
|
|
|
755
|
|
|
|
|
|
|
Returns an L object representing the VDisk identified by the numerical ID parameter. |
756
|
|
|
|
|
|
|
|
757
|
|
|
|
|
|
|
B that this method implements caching to improve performance and reduce network overhead, and that a cached |
758
|
|
|
|
|
|
|
object will be returned if one is present. If you require a non-cached object then please use the B |
759
|
|
|
|
|
|
|
method. |
760
|
|
|
|
|
|
|
|
761
|
|
|
|
|
|
|
=head3 get_vdisk( $id ) |
762
|
|
|
|
|
|
|
|
763
|
|
|
|
|
|
|
This is a functionally equivalent non-caching implementation of the B method. |
764
|
|
|
|
|
|
|
|
765
|
|
|
|
|
|
|
=head3 get_vdisks |
766
|
|
|
|
|
|
|
|
767
|
|
|
|
|
|
|
# Print the name, ID, capacity in GB and MDisk group name of all VDisks in a |
768
|
|
|
|
|
|
|
# nicely formatted output |
769
|
|
|
|
|
|
|
printf( "%-20s%-8s%-15s%20s\n", 'Name', 'ID', 'Capacity (GB)', 'MDisk Group Name' ); |
770
|
|
|
|
|
|
|
printf( "%-20s%-8s%-15s%20s\n", '-'x18, '-'x4, '-'x12, '-'x15 ); |
771
|
|
|
|
|
|
|
map { printf( "%-20s%-8s%-15s%20s\n", $_->name, $_->id, (int($_->capacity / (1024**3))), $_->mdisk_grp_name) } |
772
|
|
|
|
|
|
|
grep { $_->status eq 'online' } $ibm->get_vdisks; |
773
|
|
|
|
|
|
|
|
774
|
|
|
|
|
|
|
# Should print something like: |
775
|
|
|
|
|
|
|
# Name ID Capacity (GB) MDisk Group Name |
776
|
|
|
|
|
|
|
# ------------------ ---- ------------ --------------- |
777
|
|
|
|
|
|
|
# file-host-1 0 5823 FILE_POOL |
778
|
|
|
|
|
|
|
# backup-host-2 1 2330 BACKUP_POOL |
779
|
|
|
|
|
|
|
# ... etc. |
780
|
|
|
|
|
|
|
|
781
|
|
|
|
|
|
|
Returns all configured VDisks in the target system as an array of L objects. |
782
|
|
|
|
|
|
|
|
783
|
|
|
|
|
|
|
=head1 AUTHOR |
784
|
|
|
|
|
|
|
|
785
|
|
|
|
|
|
|
Luke Poskitt, C<< >> |
786
|
|
|
|
|
|
|
|
787
|
|
|
|
|
|
|
=head1 BUGS |
788
|
|
|
|
|
|
|
|
789
|
|
|
|
|
|
|
Please report any bugs or feature requests to C, or through |
790
|
|
|
|
|
|
|
the web interface at L. I will be notified, and then you'll |
791
|
|
|
|
|
|
|
automatically be notified of progress on your bug as I make changes. |
792
|
|
|
|
|
|
|
|
793
|
|
|
|
|
|
|
=head1 SUPPORT |
794
|
|
|
|
|
|
|
|
795
|
|
|
|
|
|
|
You can find documentation for this module with the perldoc command. |
796
|
|
|
|
|
|
|
|
797
|
|
|
|
|
|
|
perldoc IBM::V7000 |
798
|
|
|
|
|
|
|
|
799
|
|
|
|
|
|
|
|
800
|
|
|
|
|
|
|
|
801
|
|
|
|
|
|
|
=over 4 |
802
|
|
|
|
|
|
|
|
803
|
|
|
|
|
|
|
=item * RT: CPAN's request tracker (report bugs here) |
804
|
|
|
|
|
|
|
|
805
|
|
|
|
|
|
|
L |
806
|
|
|
|
|
|
|
|
807
|
|
|
|
|
|
|
=item * AnnoCPAN: Annotated CPAN documentation |
808
|
|
|
|
|
|
|
|
809
|
|
|
|
|
|
|
L |
810
|
|
|
|
|
|
|
|
811
|
|
|
|
|
|
|
=item * CPAN Ratings |
812
|
|
|
|
|
|
|
|
813
|
|
|
|
|
|
|
L |
814
|
|
|
|
|
|
|
|
815
|
|
|
|
|
|
|
=item * Search CPAN |
816
|
|
|
|
|
|
|
|
817
|
|
|
|
|
|
|
L |
818
|
|
|
|
|
|
|
|
819
|
|
|
|
|
|
|
=back |
820
|
|
|
|
|
|
|
|
821
|
|
|
|
|
|
|
|
822
|
|
|
|
|
|
|
=head1 ACKNOWLEDGEMENTS |
823
|
|
|
|
|
|
|
|
824
|
|
|
|
|
|
|
|
825
|
|
|
|
|
|
|
=head1 LICENSE AND COPYRIGHT |
826
|
|
|
|
|
|
|
|
827
|
|
|
|
|
|
|
Copyright 2013 Luke Poskitt. |
828
|
|
|
|
|
|
|
|
829
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or modify it |
830
|
|
|
|
|
|
|
under the terms of either: the GNU General Public License as published |
831
|
|
|
|
|
|
|
by the Free Software Foundation; or the Artistic License. |
832
|
|
|
|
|
|
|
|
833
|
|
|
|
|
|
|
See http://dev.perl.org/licenses/ for more information. |
834
|
|
|
|
|
|
|
|
835
|
|
|
|
|
|
|
|
836
|
|
|
|
|
|
|
=cut |
837
|
|
|
|
|
|
|
|
838
|
|
|
|
|
|
|
1; |