Initial commit
[clearscm.git] / clearadm / test.pl
1 #!/usr/bin/perl
2 use strict;
3 use warnings;
4
5 use FindBin;
6 use Getopt::Long;
7
8 use lib "$FindBin::Bin/lib";
9 use lib "$FindBin::Bin/../lib";
10
11 use Clearadm;
12 use Display;
13 use Utils;
14
15 my $clearadm = new Clearadm;
16
17 my %system = (
18   name                  => 'jupiter',
19   alias                 => 'defaria.com',
20   admin                 => 'Andrew DeFaria',
21   os                    => 'Linux defaria.com 2.6.32-25-generic-pae #45-Ubuntu SMP Sat Oct 16 21:01:33 UTC 2010 i686 GNU/Linux',
22   type                  => 'Linux',
23   description   => 'Home server',
24 );
25
26 my %package = (
27   'system'              => 'jupiter',
28   'name'                => 'MySQL',
29   'version'             => '5.1',
30 );
31
32 my %update;
33
34 my %filesystem = (
35   'system'              => 'jupiter',
36   'filesystem'  => '/dev/mapper/jupiter-root',
37   'fstype'              => 'ext3',
38   'mount'               => '/',
39   'threshold'   => 90,
40 );
41
42 my %vob = (
43   'system'      => 'jupiter',
44   'tag'         => '/vobs/clearscm',
45 );
46
47 my %view = (
48   'system'      => 'jupiter',
49   'tag'         => 'andrew_view',
50 );
51   
52 GetOptions (
53   'verbose'     => sub { set_verbose },
54   'usage'       => sub { Usage },
55 );
56
57 sub DisplayRecord (%) {
58   my (%record) = @_;
59   
60   foreach (keys %record) {
61         if ($record{$_}) {
62           display "$_: $record{$_}";
63         } else {
64           display "$_: <undef>";
65         } # if
66   } # foreach
67 } # DisplayRecord
68
69 sub DisplayRecords (@) {
70   my (@records) = @_;
71   
72   DisplayRecord %{$_}
73     foreach (@records);
74 } # DisplayRecords
75
76 sub TestSystem () {
77   verbose "Adding system $system{name}";
78
79   my ($err, $msg) = $clearadm->AddSystem (%system);
80
81   if ($err == 1062) {
82     warning 'You already have that record!';
83   } elsif ($err) {
84     error $msg, $err;
85   } # if
86
87   verbose "Finding systems that match \'jup\'";
88   DisplayRecords $clearadm->FindSystem ('jup');
89
90   verbose "Getting record for \'jupiter\'";
91   DisplayRecord  $clearadm->GetSystem ('jupiter');
92
93   verbose "Finding systems that match \'def\'";
94   DisplayRecords $clearadm->FindSystem ('def');
95   
96   verbose "Getting record for \'defaria.com\'";
97   DisplayRecord $clearadm->GetSystem ('defaria.com');
98   
99   %update = (
100     'region' => 'East Coast',
101   );
102
103   verbose "Updating system $system{name}";
104
105   ($err, $msg) = $clearadm->UpdateSystem ($system{name}, %update);
106
107   error $msg, $err
108     if $err;
109 } # TestaSystem
110
111 sub TestPackage () {
112   verbose "Adding package $package{name}";
113   
114   my ($err, $msg) = $clearadm->AddPackage (%package);
115
116   if ($err == 1062) {
117     warning 'You already have that record!';
118   } elsif ($err) {
119     error $msg, $err;
120   } # if
121
122   %update = (
123     'vendor'            => 'ClearSCM',
124     'description'       => 'This is not ClearSCM\'s version of MySQL', 
125   );
126
127   verbose "Updating package $package{name}";
128   
129   ($err, $msg) = $clearadm->UpdatePackage ($package{system}, $package{name}, %update);
130
131   error $msg, $err
132     if $err;
133
134   verbose "Finding packages for $system{name} that match \'My\'";
135   DisplayRecords $clearadm->FindPackage ($system{name}, 'My');
136
137   verbose ("Getting package for $system{name} record for \'MySQL\'");
138   DisplayRecord  $clearadm->GetPackage  ($system{name}, 'MySQL');
139 } # TestPackage
140
141 sub TestFilesystem () {
142   verbose "Adding filesystem $filesystem{filesystem}";
143   
144   my ($err, $msg) = $clearadm->AddFilesystem (%filesystem);
145
146   error $msg, $err
147     if $err;
148   
149   $filesystem{filesystem}       = '/dev/sda5';
150   $filesystem{path}                     = '/disk2';
151
152   verbose "Adding filesystem $filesystem{filesystem}";
153   
154   ($err, $msg) = $clearadm->AddFilesystem (%filesystem);
155
156   error $msg, $err
157     if $err;
158
159   %update = (
160     'filesystem'        => '/dev/sdb5',
161   );
162
163   verbose "Updating filesystem $filesystem{filesystem}";
164   
165   ($err, $msg) = $clearadm->UpdateFilesystem (
166     $filesystem{system}, $filesystem{filesystem}, %update
167   );
168
169   error $msg, $err
170     if $err;
171
172   verbose "Finding filesystems for $system{name} that match \'My\'";
173   DisplayRecords $clearadm->FindFilesystem ($system{name}, 'root');
174
175   verbose ("Getting filesystem for $system{name} record for \'/dev/sdb5\'");
176   DisplayRecord  $clearadm->GetFilesystem ($system{name}, '/dev/sdb5');
177 } # TestFilesystem
178
179 sub TestVob () {
180   verbose "Adding vob $vob{tag}";
181
182   my ($err, $msg) = $clearadm->AddVob (%vob);
183
184   error $msg, $err
185     if $err;
186   
187   $vob{tag} = '/vobs/clearscm_old';
188
189   verbose "Adding vob $vob{tag}";
190
191   ($err, $msg) = $clearadm->AddVob (%vob);
192
193   error $msg, $err
194     if $err;
195
196   verbose "Finding vobs that match \'clearscm\'";
197   DisplayRecords $clearadm->FindVob ('clearscm');
198
199   verbose ("Getting vob for \'clearscm\'");
200   DisplayRecord  $clearadm->GetVob ('clearscm');
201 } # TestVob
202
203 sub TestView () {
204   verbose "Adding view $view{tag}";
205
206   my ($err, $msg) = $clearadm->AddView (%view);
207
208   error $msg, $err
209     if $err;
210
211   $view{tag} = 'andrew2_view';
212
213   verbose "Adding view $view{tag}";
214
215   ($err, $msg) = $clearadm->AddView (%view);
216
217   error $msg, $err
218     if $err;
219
220   verbose "Finding views that match \'andrew\'";
221   DisplayRecords $clearadm->FindView ('andrew');
222
223   verbose ("Getting view for \'view\'");
224   DisplayRecord  $clearadm->GetView ('andrew');
225 } # TestView
226
227 TestSystem;
228 TestPackage;
229 TestFilesystem;
230 TestVob;
231 TestView;
232
233 ########################
234 verbose "Deleting system $system{name}";
235   
236 my ($err, $msg) = $clearadm->DeleteSystem ($system{name});
237
238 error $msg, $err
239   if $err;
240