Listing 1 myconfigCDBI.pm
1: package MyConfig::CDBI;
2: use base 'Class::DBI';
3: use Class::DBI::AbstractSearch;
4:
5: package MyConfig::CDBI::Interface;
6: use base 'MyConfig::CDBI';
7: __PACKAGE__->columns(Primary => qw/interface device/);
8: __PACKAGE__->columns(Others => qw/description/);
9: __PACKAGE__->has_a(device => 'MyConfig::CDBI::Device');
10:
11: package MyConfig::CDBI::Device;
12: use base 'MyConfig::CDBI';
13: __PACKAGE__->columns(Primary => qw/device/);
14: __PACKAGE__->columns
15: (Others => qw/location contact serial hardware software class/);
16: __PACKAGE__->has_many(interfaces => 'MyConfig::CDBI::Interface' );
17:
18: package MyConfig::CDBI::Address;
19: use base 'MyConfig::CDBI';
20: __PACKAGE__->columns(Primary => qw/ip interface device/);
21: __PACKAGE__->columns(Others => qw/cidr type/);
22: __PACKAGE__->has_a(device => 'MyConfig::CDBI::Device');
23: __PACKAGE__->has_a(cidr => 'MyConfig::CDBI::Subnet');
24:
25: package MyConfig::CDBI::Subnet;
26: use base 'MyConfig::CDBI';
27: __PACKAGE__->columns(All => qw/cidr first last/);
28: __PACKAGE__->has_many(addresses => 'MyConfig::CDBI::Address');
29:
30: package MyConfig::CDBI::Sighting;
31: use base 'MyConfig::CDBI';
32: __PACKAGE__->columns(Primary => qw/endpoint time device interface/);
33: __PACKAGE__->has_a(endpoint => 'MyConfig::CDBI::Endpoint');
34: __PACKAGE__->has_a(device => 'MyConfig::CDBI::Device');
35:
36: package MyConfig::CDBI::Assignment;
37: use base 'MyConfig::CDBI';
38: __PACKAGE__->columns(Primary => qw/ip time/);
39: __PACKAGE__->columns(Other => qw/endpoint cidr/);
40: __PACKAGE__->has_a(endpoint => 'MyConfig::CDBI::Endpoint');
41: __PACKAGE__->has_a(cidr => 'MyConfig::CDBI::Subnet');
42:
43: package MyConfig::CDBI::Endpoint;
44: use base 'MyConfig::CDBI';
45: __PACKAGE__->columns(Primary => qw/endpoint/);
46: __PACKAGE__->columns(Other => qw/os vendor time/);
47: __PACKAGE__->has_many(all_assignments => 'MyConfig::CDBI::Assignment');
48: __PACKAGE__->has_many(all_sightings => 'MyConfig::CDBI::Sighting');
49:
50: 42; |