Removed /usr/local from CDPATH
[clearscm.git] / clearadm / test.pl
1 #!/usr/bin/env 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   for (keys %record) {
61     if ($record{$_}) {
62       display "$_: $record{$_}";
63     } else {
64       display "$_: <undef>";
65     } # if
66   } # for
67 } # DisplayRecord
68
69 sub DisplayRecords(@) {
70   my (@records) = @_;
71   
72   DisplayRecord %{$_} for (@records);
73 } # DisplayRecords
74
75 sub TestSystem() {
76   verbose "Adding system $system{name}";
77
78   my ($err, $msg) = $clearadm->AddSystem(%system);
79
80   if ($err == 1062) {
81     warning 'You already have that record!';
82   } elsif ($err) {
83     error $msg, $err;
84   } # if
85
86   verbose "Finding systems that match \'jup\'";
87   DisplayRecords $clearadm->FindSystem('jup');
88
89   verbose "Getting record for \'jupiter\'";
90   DisplayRecord  $clearadm->GetSystem('jupiter');
91
92   verbose "Finding systems that match \'def\'";
93   DisplayRecords $clearadm->FindSystem('def');
94   
95   verbose "Getting record for \'defaria.com\'";
96   DisplayRecord $clearadm->GetSystem('defaria.com');
97   
98   %update = (
99     'region' => 'East Coast',
100   );
101
102   verbose "Updating system $system{name}";
103
104   ($err, $msg) = $clearadm->UpdateSystem($system{name}, %update);
105
106   error $msg, $err if $err;
107 } # TestaSystem
108
109 sub TestPackage() {
110   verbose "Adding package $package{name}";
111   
112   my ($err, $msg) = $clearadm->AddPackage(%package);
113
114   if ($err == 1062) {
115     warning 'You already have that record!';
116   } elsif ($err) {
117     error $msg, $err;
118   } # if
119
120   %update = (
121     'vendor'      => 'ClearSCM',
122     'description' => 'This is not ClearSCM\'s version of MySQL', 
123   );
124
125   verbose "Updating package $package{name}";
126   
127   ($err, $msg) = $clearadm->UpdatePackage($package{system}, $package{name}, %update);
128
129   error $msg, $err if $err;
130
131   verbose "Finding packages for $system{name} that match \'My\'";
132   DisplayRecords $clearadm->FindPackage($system{name}, 'My');
133
134   verbose ("Getting package for $system{name} record for \'MySQL\'");
135   DisplayRecord  $clearadm->GetPackage($system{name}, 'MySQL');
136 } # TestPackage
137
138 sub TestFilesystem() {
139   verbose "Adding filesystem $filesystem{filesystem}";
140   
141   my ($err, $msg) = $clearadm->AddFilesystem(%filesystem);
142
143   error $msg, $err if $err;
144   
145   $filesystem{filesystem} = '/dev/sda5';
146   $filesystem{path}       = '/disk2';
147
148   verbose "Adding filesystem $filesystem{filesystem}";
149   
150   ($err, $msg) = $clearadm->AddFilesystem(%filesystem);
151
152   error $msg, $err if $err;
153
154   %update = (
155     'filesystem' => '/dev/sdb5',
156   );
157
158   verbose "Updating filesystem $filesystem{filesystem}";
159   
160   ($err, $msg) = $clearadm->UpdateFilesystem(
161     $filesystem{system}, $filesystem{filesystem}, %update
162   );
163
164   error $msg, $err if $err;
165
166   verbose "Finding filesystems for $system{name} that match \'My\'";
167   DisplayRecords $clearadm->FindFilesystem($system{name}, 'root');
168
169   verbose ("Getting filesystem for $system{name} record for \'/dev/sdb5\'");
170   DisplayRecord  $clearadm->GetFilesystem($system{name}, '/dev/sdb5');
171 } # TestFilesystem
172
173 sub TestVob() {
174   verbose "Adding vob $vob{tag}";
175
176   my ($err, $msg) = $clearadm->AddVob(%vob);
177
178   error $msg, $err if $err;
179   
180   $vob{tag} = '/vobs/clearscm_old';
181
182   verbose "Adding vob $vob{tag}";
183
184   ($err, $msg) = $clearadm->AddVob(%vob);
185
186   error $msg, $err if $err;
187
188   verbose "Finding vobs that match \'clearscm\'";
189   DisplayRecords $clearadm->FindVob('clearscm');
190
191   verbose ("Getting vob for \'clearscm\'");
192   DisplayRecord  $clearadm->GetVob('clearscm');
193 } # TestVob
194
195 sub TestView() {
196   verbose "Adding view $view{tag}";
197
198   my ($err, $msg) = $clearadm->AddView(%view);
199
200   error $msg, $err if $err;
201
202   $view{tag} = 'andrew2_view';
203
204   verbose "Adding view $view{tag}";
205
206   ($err, $msg) = $clearadm->AddView(%view);
207
208   error $msg, $err if $err;
209
210   verbose "Finding views that match \'andrew\'";
211   DisplayRecords $clearadm->FindView('andrew');
212
213   verbose ("Getting view for \'view\'");
214   DisplayRecord  $clearadm->GetView('andrew');
215 } # TestView
216
217 TestSystem;
218 TestPackage;
219 TestFilesystem;
220 TestVob;
221 TestView;
222
223 ########################
224 verbose "Deleting system $system{name}";
225   
226 my ($err, $msg) = $clearadm->DeleteSystem($system{name});
227
228 error $msg, $err if $err;