File Coverage

blib/lib/Slurm/Sacctmgr/User.pm
Criterion Covered Total %
statement 41 41 100.0
branch 4 6 66.6
condition 2 6 33.3
subroutine 12 12 100.0
pod n/a
total 59 65 90.7


line stmt bran cond sub pod time code
1             #!/usr/local/bin/perl
2             #
3             #Part of Slurm::Sacctmgr: Perl wrapper for Slurm's sacctmgr cmd
4             #Represents an User
5              
6             package Slurm::Sacctmgr::User;
7 122     122   46993 use strict;
  122         122  
  122         2852  
8 122     122   365 use warnings;
  122         37  
  122         2467  
9 122     122   259 use base qw(Slurm::Sacctmgr::EntityBaseRW);
  122         123  
  122         41095  
10 122     122   530 use Carp qw(carp croak);
  122         122  
  122         37080  
11              
12             #-------------------------------------------------------------------
13             # Globals
14             #-------------------------------------------------------------------
15              
16             #-------------------------------------------------------------------
17             # Accessors
18             #-------------------------------------------------------------------
19              
20             #simple: just scalar, etc. No custom accessor
21             #common: common to all versions of slurm
22             my @simple_common_accessors = qw(
23             adminlevel
24             defaultaccount
25             user
26             );
27              
28             my @aref_common_accessors = qw(
29             coordinators
30             );
31              
32             my @all_accessors =
33             ( @simple_common_accessors,
34             @aref_common_accessors,
35             );
36              
37             my @simple_accessors =
38             ( @simple_common_accessors,
39             );
40              
41             my @aref_accessors =
42             ( @aref_common_accessors,
43             );
44              
45             my @common_accessors =
46             ( @simple_common_accessors,
47             @aref_common_accessors,
48             );
49              
50             #coordinators is NOT modifiable
51             #ie cannot change in sacctmgr modify user
52             my @modifiable_fields =
53             ( @simple_common_accessors,
54             );
55              
56             __PACKAGE__->mk_accessors(@simple_accessors);
57             __PACKAGE__->mk_arrayref_accessors(@aref_accessors);
58              
59              
60             #-------------------------------------------------------------------
61             # Overloaded methods
62             #-------------------------------------------------------------------
63              
64             sub _rw_fields($)
65 6928     6928   10301 { my $class = shift;
66 6928         26230 return [ @all_accessors ];
67             }
68              
69             sub _sacctmgr_name_field($)
70 4586     4586   5777 { my $class = shift;
71 4586         11602 return 'user';
72             }
73            
74             sub _sacctmgr_fields($$)
75 1070     1070   1644 { my $class = shift;
76 1070         1306 my $sacctmgr = shift;
77 1070         3061 return [ @common_accessors ];
78             }
79              
80             sub _sacctmgr_fields_addable($$)
81 342     342   423 { my $class = shift;
82 342         413 my $sacctmgr = shift;
83 342         1293 return [ @modifiable_fields ];
84             }
85              
86             sub _sacctmgr_fields_updatable($$)
87 826     826   1031 { my $class = shift;
88 826         982 my $sacctmgr = shift;
89 826         2567 return [ @modifiable_fields ];
90             }
91              
92             sub _sacctmgr_fields_in_order($$)
93 4676     4676   7266 { my $class = shift;
94 4676         4666 my $sacctmgr = shift;
95 4676         19409 return [ @common_accessors ];
96             }
97              
98             #Overload this to include 'withcoord' flag
99             sub _sacctmgr_list_cmd($$)
100 2332     2332   2765 { my $class = shift;
101 2332         2473 my $sacctmgr = shift;
102 2332         5646 my $me = $class . '::_sacctmgr_list_cmd';
103              
104 2332 50 33     11460 die "$me: Missing sacctmgr param at " unless $sacctmgr && ref($sacctmgr);
105              
106 2332         8227 my $tmp = $class->SUPER::_sacctmgr_list_cmd($sacctmgr);
107 2332 50 33     12543 return $tmp unless $tmp && ref($tmp) eq 'ARRAY';
108 2332         5333 push @$tmp, 'withcoord';
109 2332         5428 return $tmp;
110             }
111              
112              
113             #-------------------------------------------------------------------
114             # Constructors, etc
115             #-------------------------------------------------------------------
116              
117             #Overload default setting
118             sub _set_defaults($)
119             #Default adminlevel to None. Set it to '' for Notset
120 6928     6928   7171 { my $obj = shift;
121              
122 6928         14643 my $val = $obj->adminlevel;
123 6928 100       63310 unless ( defined $val )
124 2394         4563 { $obj->adminlevel('None');
125             }
126              
127 6928         24589 return;
128             }
129             #All inherited
130              
131             1;
132             __END__