create Native and Tagged views on DevicePortVlan
This commit is contained in:
@@ -86,14 +86,6 @@ The C<with_age> variants add an additional column C<time_last_age>, a
|
|||||||
preformatted value for the Node's C<time_last> field, which reads as "X
|
preformatted value for the Node's C<time_last> field, which reads as "X
|
||||||
days/weeks/months/years".
|
days/weeks/months/years".
|
||||||
|
|
||||||
=over 4
|
|
||||||
|
|
||||||
=item *
|
|
||||||
|
|
||||||
Rows returned are sorted by the Node MAC address.
|
|
||||||
|
|
||||||
=back
|
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
__PACKAGE__->has_many( nodes => 'Netdisco::DB::Result::Node',
|
__PACKAGE__->has_many( nodes => 'Netdisco::DB::Result::Node',
|
||||||
@@ -205,7 +197,6 @@ the database.
|
|||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
# make this more efficient by specifying the full join to DBIC?
|
|
||||||
sub neighbor {
|
sub neighbor {
|
||||||
my $row = shift;
|
my $row = shift;
|
||||||
return eval { $row->neighbor_alias->device || undef };
|
return eval { $row->neighbor_alias->device || undef };
|
||||||
|
|||||||
19
Netdisco/lib/Netdisco/DB/Result/DevicePortVlanNative.pm
Normal file
19
Netdisco/lib/Netdisco/DB/Result/DevicePortVlanNative.pm
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
use utf8;
|
||||||
|
package Netdisco::DB::Result::DevicePortVlanNative;
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
|
||||||
|
use base 'Netdisco::DB::Result::DevicePortVlan';
|
||||||
|
|
||||||
|
__PACKAGE__->load_components('Helper::Row::SubClass');
|
||||||
|
__PACKAGE__->subclass;
|
||||||
|
|
||||||
|
__PACKAGE__->table_class('DBIx::Class::ResultSource::View');
|
||||||
|
__PACKAGE__->table("device_port_vlan_native");
|
||||||
|
__PACKAGE__->result_source_instance->is_virtual(1);
|
||||||
|
__PACKAGE__->result_source_instance->view_definition(q{
|
||||||
|
SELECT * FROM device_port_vlan WHERE native
|
||||||
|
});
|
||||||
|
|
||||||
|
1;
|
||||||
@@ -1,81 +1,19 @@
|
|||||||
use utf8;
|
use utf8;
|
||||||
package Netdisco::DB::Result::DevicePortVlanTagged;
|
package Netdisco::DB::Result::DevicePortVlanTagged;
|
||||||
|
|
||||||
# Created by DBIx::Class::Schema::Loader
|
|
||||||
# DO NOT MODIFY THE FIRST PART OF THIS FILE
|
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
use base 'DBIx::Class::Core';
|
use base 'Netdisco::DB::Result::DevicePortVlan';
|
||||||
__PACKAGE__->table_class('DBIx::Class::ResultSource::View');
|
|
||||||
|
|
||||||
|
__PACKAGE__->load_components('Helper::Row::SubClass');
|
||||||
|
__PACKAGE__->subclass;
|
||||||
|
|
||||||
|
__PACKAGE__->table_class('DBIx::Class::ResultSource::View');
|
||||||
__PACKAGE__->table("device_port_vlan_tagged");
|
__PACKAGE__->table("device_port_vlan_tagged");
|
||||||
__PACKAGE__->result_source_instance->is_virtual(1);
|
__PACKAGE__->result_source_instance->is_virtual(1);
|
||||||
__PACKAGE__->result_source_instance->view_definition(
|
__PACKAGE__->result_source_instance->view_definition(q{
|
||||||
'SELECT * FROM device_port_vlan WHERE NOT native'
|
SELECT * FROM device_port_vlan WHERE NOT native
|
||||||
);
|
|
||||||
|
|
||||||
__PACKAGE__->add_columns(
|
|
||||||
"ip",
|
|
||||||
{ data_type => "inet", is_nullable => 0 },
|
|
||||||
"port",
|
|
||||||
{ data_type => "text", is_nullable => 0 },
|
|
||||||
"vlan",
|
|
||||||
{ data_type => "integer", is_nullable => 0 },
|
|
||||||
"native",
|
|
||||||
{ data_type => "boolean", default_value => \"false", is_nullable => 0 },
|
|
||||||
"creation",
|
|
||||||
{
|
|
||||||
data_type => "timestamp",
|
|
||||||
default_value => \"current_timestamp",
|
|
||||||
is_nullable => 1,
|
|
||||||
original => { default_value => \"now()" },
|
|
||||||
},
|
|
||||||
"last_discover",
|
|
||||||
{
|
|
||||||
data_type => "timestamp",
|
|
||||||
default_value => \"current_timestamp",
|
|
||||||
is_nullable => 1,
|
|
||||||
original => { default_value => \"now()" },
|
|
||||||
},
|
|
||||||
);
|
|
||||||
__PACKAGE__->set_primary_key("ip", "port", "vlan");
|
|
||||||
|
|
||||||
|
|
||||||
# Created by DBIx::Class::Schema::Loader v0.07015 @ 2012-01-07 14:20:02
|
|
||||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:/3KLjJ3D18pGaPEaw9EU5w
|
|
||||||
|
|
||||||
=head1 RELATIONSHIPS
|
|
||||||
|
|
||||||
=head2 device
|
|
||||||
|
|
||||||
Returns the entry from the C<device> table which hosts the Port on which this
|
|
||||||
VLAN is configured.
|
|
||||||
|
|
||||||
=cut
|
|
||||||
|
|
||||||
__PACKAGE__->belongs_to( device => 'Netdisco::DB::Result::Device', 'ip' );
|
|
||||||
|
|
||||||
=head2 port
|
|
||||||
|
|
||||||
Returns the entry from the C<port> table on which this VLAN is configured.
|
|
||||||
|
|
||||||
=cut
|
|
||||||
|
|
||||||
__PACKAGE__->belongs_to( port => 'Netdisco::DB::Result::DevicePort', {
|
|
||||||
'foreign.ip' => 'self.ip', 'foreign.port' => 'self.port',
|
|
||||||
});
|
|
||||||
|
|
||||||
=head2 vlan
|
|
||||||
|
|
||||||
Returns the entry from the C<device_vlan> table describing this VLAN in
|
|
||||||
detail, typically in order that the C<name> can be retrieved.
|
|
||||||
|
|
||||||
=cut
|
|
||||||
|
|
||||||
__PACKAGE__->belongs_to( vlan => 'Netdisco::DB::Result::DeviceVlan', {
|
|
||||||
'foreign.ip' => 'self.ip', 'foreign.vlan' => 'self.vlan',
|
|
||||||
});
|
});
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|||||||
@@ -53,14 +53,8 @@ Link relationship for C<tagging_ports>, see below.
|
|||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
__PACKAGE__->has_many( port_vlans_tagged => 'Netdisco::DB::Result::DevicePortVlan',
|
__PACKAGE__->has_many( port_vlans_tagged => 'Netdisco::DB::Result::DevicePortVlanTagged',
|
||||||
{
|
{ 'foreign.ip' => 'self.ip', 'foreign.vlan' => 'self.vlan' },
|
||||||
'foreign.ip' => 'self.ip',
|
|
||||||
'foreign.vlan' => 'self.vlan',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
where => { -not_bool => 'me.native' },
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
|
|
||||||
=head2 port_vlans_native
|
=head2 port_vlans_native
|
||||||
@@ -69,14 +63,8 @@ Link relationship to support C<native_ports>, see below.
|
|||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
__PACKAGE__->has_many( port_vlans_native => 'Netdisco::DB::Result::DevicePortVlan',
|
__PACKAGE__->has_many( port_vlans_native => 'Netdisco::DB::Result::DevicePortVlanNative',
|
||||||
{
|
{ 'foreign.ip' => 'self.ip', 'foreign.vlan' => 'self.vlan' },
|
||||||
'foreign.ip' => 'self.ip',
|
|
||||||
'foreign.vlan' => 'self.vlan',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
where => { -bool => 'me.native' },
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
|
|
||||||
=head2 tagging_ports
|
=head2 tagging_ports
|
||||||
|
|||||||
Reference in New Issue
Block a user