c4a74bc7b0
numerous updates to the defspec definitions for managing xCAT data definitions. git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@80 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
592 lines
25 KiB
Perl
592 lines
25 KiB
Perl
# IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
|
|
package xCAT::Schema;
|
|
|
|
#Note that the SQL is far from imaginative. Fact of the matter is that
|
|
#certain SQL backends don't ascribe meaning to the data types anyway.
|
|
#New format, not sql statements, but info enough to describe xcat tables
|
|
%tabspec = (
|
|
ppchcp => {
|
|
cols => [qw(hcp username password comments disable)],
|
|
keys => [qw(hcp)],
|
|
},
|
|
ppc => {
|
|
cols => [qw(node hcp id profile parent comments disable)],
|
|
keys => [qw(node)],
|
|
},
|
|
ppcDirect => {
|
|
cols => [qw(hcp username password comments disable)],
|
|
keys => [qw(hcp)],
|
|
},
|
|
nodetype => {
|
|
cols => [qw(node os arch profile comments disable)],
|
|
keys => [qw(node)],
|
|
},
|
|
nodepos => {
|
|
cols => [qw(node rack u chassis slot room comments disable)],
|
|
keys => [qw(node)],
|
|
},
|
|
iscsi => {
|
|
cols => [qw(node server target userid passwd comments disable)],
|
|
keys => [qw(node)],
|
|
},
|
|
vpd => {
|
|
cols => [qw(node serial mtm comments disable)],
|
|
keys => [qw(node)],
|
|
},
|
|
nodehm => {
|
|
cols => [qw(node power mgt cons termserver termport conserver serialspeed serialflow getmac comments disable)],
|
|
keys => [qw(node)],
|
|
},
|
|
hosts => {
|
|
cols => [qw(node ip hostnames comments disable)],
|
|
keys => [qw(node)],
|
|
},
|
|
mp => {
|
|
cols => [qw(node mpa id comments disable)],
|
|
keys => [qw(node)],
|
|
},
|
|
mpa => {
|
|
cols => [qw(mpa username password comments disable)],
|
|
keys => [qw(mpa)],
|
|
},
|
|
mac => {
|
|
cols => [qw(node interface mac comments disable)],
|
|
keys => [qw(node interface)],
|
|
},
|
|
chain => {
|
|
cols => [qw(node currstate currchain chain ondiscover comments disable)],
|
|
keys => [qw(node)],
|
|
},
|
|
noderes => {
|
|
cols => [qw(node servicenode netboot tftpserver nfsserver kernel initrd kcmdline nfsdir serialport installnic primarynic xcatmaster current_osimage next_osimage comments disable)],
|
|
keys => [qw(node)],
|
|
},
|
|
networks => {
|
|
cols => [qw(netname net mask gateway dhcpserver tftpserver nameservers dynamicrange comments disable)],
|
|
keys => [qw(net mask)]
|
|
},
|
|
osimage => {
|
|
cols => [qw(imagename osname osvers osdistro osarch comments disable)],
|
|
keys => [qw(imagename)]
|
|
},
|
|
nodegroup => {
|
|
cols => [qw(groupname grouptype members wherevals comments disable)],
|
|
keys => [qw(groupname)]
|
|
},
|
|
switch => {
|
|
cols => [qw(node switch vlan port comments disable)],
|
|
keys => [qw(node switch port)]
|
|
},
|
|
nodelist => {
|
|
cols => [qw(node nodetype groups comments disable)],
|
|
keys => [qw(node)],
|
|
},
|
|
site => {
|
|
cols => [qw(key value comments disable)],
|
|
keys => [qw(key)]
|
|
},
|
|
# site => {
|
|
# cols => [qw(sitename domain master rsh rcp xcatdport installdir comments disable)],
|
|
# keys => [qw(sitename)]
|
|
# },
|
|
passwd => {
|
|
cols => [qw(key username password comments disable)],
|
|
keys => [qw(key)]
|
|
},
|
|
ipmi => {
|
|
cols => [qw(node bmc username password comments disable )],
|
|
keys => [qw(node)]
|
|
},
|
|
policy => {
|
|
cols => [qw(priority name host commands noderange parameters time rule comments disable)],
|
|
keys => [qw(priority)]
|
|
},
|
|
notification => {
|
|
cols => [qw(filename tables tableops comments disable)],
|
|
keys => [qw(filename)],
|
|
required => [qw(tables filename)]
|
|
}
|
|
);
|
|
|
|
|
|
|
|
####################################################
|
|
#
|
|
# Data abstraction definitions
|
|
# For each table entry added to the database schema,
|
|
# a corresponding attribute should be added to one of
|
|
# the data objects below, or new data objects should
|
|
# be created as needed.
|
|
#
|
|
# Definition format:
|
|
# List of data object hashes:
|
|
# <dataobject_name> =>
|
|
# {attrs =>
|
|
# [ {attr_name => '<attribute_name>',
|
|
# only_if => '<attr>=<value>',
|
|
# # optional, used to define conditional attributes.
|
|
# # <attr> is a previously resolved attribute from
|
|
# # this data object.
|
|
# tabentry => '<table.attr>',
|
|
# # where the data is stored in the database
|
|
# access_tabentry => '<table.attr>=<value>',
|
|
# # how to look up tabentry. For <value>,
|
|
# # if "attr:<attrname>", use a previously resolved
|
|
# # attribute value from the data object
|
|
# # if "str:<value>" use the value directly
|
|
# description => '<description of this attribute>',
|
|
# },
|
|
# {attr_name => <attribute_name>,
|
|
# ...
|
|
# } ],
|
|
# attrhash => {}, # internally generated hash of attrs array
|
|
# # to allow code direct access to an attr def
|
|
# objkey => 'attribute_name' # key attribute for this data object
|
|
# }
|
|
#
|
|
#
|
|
####################################################
|
|
%defspec = (
|
|
node => { attrs => [], attrhash => {}, objkey => 'node' },
|
|
osimage => { attrs => [], attrhash => {}, objkey => 'imagename' },
|
|
network => { attrs => [], attrhash => {}, objkey => 'netname' },
|
|
group => { attrs => [], attrhash => {}, objkey => 'groupname' },
|
|
site => { attrs => [], attrhash => {}, objkey => 'master' },
|
|
#site => { attrs => [], attrhash => {}, objkey => 'sitename' },
|
|
policy => { attrs => [], attrhash => {}, objkey => 'priority' },
|
|
notification => { attrs => [], attrhash => {}, objkey => 'filename' }
|
|
);
|
|
|
|
@{$defspec{node}->{'attrs'}} = (
|
|
{attr_name => 'node',
|
|
tabentry => 'nodelist.node',
|
|
access_tabentry => 'nodelist.node=attr:node',
|
|
description => 'The name of this node definition.'},
|
|
{attr_name => 'nodetype',
|
|
tabentry => 'nodelist.nodetype',
|
|
access_tabentry => 'nodelist.node=attr:node',
|
|
description => 'Specifies a comma-separated list of node type values. (Valid values: osi, hmc, fsp, blade, vm, lpar, ivm, bpa, mm, rsa, switch)'},
|
|
{attr_name => 'groups',
|
|
tabentry => 'nodelist.groups',
|
|
access_tabentry => 'nodelist.node=attr:node',
|
|
description => 'Comma separated list of groups this node belongs to.'},
|
|
{attr_name => 'xcatmaster',
|
|
tabentry => 'noderes.xcatmaster',
|
|
access_tabentry => 'noderes.node=attr:node',
|
|
description => 'The hostname of the xCAT management node.'},
|
|
# {attr_name => 'mgtnet',
|
|
# tabentry => 'noderes.mgtnet',
|
|
# access_tabentry => 'noderes.node=attr:node',
|
|
# description => 'The name of the xCAT network definition for this node.'},
|
|
{attr_name => 'servicenode',
|
|
tabentry => 'noderes.servicenode',
|
|
access_tabentry => 'noderes.node=attr:node',
|
|
description => '??????.'},
|
|
{attr_name => 'kernel',
|
|
tabentry => 'noderes.kernel',
|
|
access_tabentry => 'noderes.node=attr:node',
|
|
description => '??????.'},
|
|
{attr_name => 'initrd',
|
|
tabentry => 'noderes.initrd',
|
|
access_tabentry => 'noderes.node=attr:node',
|
|
description => '??????.'},
|
|
{attr_name => 'kcmdline',
|
|
tabentry => 'noderes.kcmdline',
|
|
access_tabentry => 'noderes.node=attr:node',
|
|
description => '??????.'},
|
|
{attr_name => 'mgt',
|
|
tabentry => 'nodehm.mgt',
|
|
access_tabentry => 'nodehm.node=attr:node',
|
|
description => 'Specifies the hardware management method.'},
|
|
{attr_name => 'power',
|
|
tabentry => 'nodehm.power',
|
|
access_tabentry => 'nodehm.node=attr:node',
|
|
description => 'Specifies the power method.'},
|
|
{attr_name => 'cons',
|
|
tabentry => 'nodehm.cons',
|
|
access_tabentry => 'nodehm.node=attr:node',
|
|
description => 'Specifies the console method.'},
|
|
{attr_name => 'termserver',
|
|
tabentry => 'nodehm.termserver',
|
|
access_tabentry => 'nodehm.node=attr:node',
|
|
description => 'The name of the terminal server.'},
|
|
{attr_name => 'termport',
|
|
tabentry => 'nodehm.termport',
|
|
access_tabentry => 'nodehm.node=attr:node',
|
|
description => '??????.'},
|
|
{attr_name => 'conserver',
|
|
tabentry => 'nodehm.conserver',
|
|
access_tabentry => 'nodehm.node=attr:node',
|
|
description => '??????.'},
|
|
{attr_name => 'getmac',
|
|
tabentry => 'nodehm.getmac',
|
|
access_tabentry => 'nodehm.node=attr:node',
|
|
description => '??????.'},
|
|
{attr_name => 'serialport',
|
|
tabentry => 'noderes.serialport',
|
|
access_tabentry => 'noderes.node=attr:node',
|
|
description => '??????.'},
|
|
{attr_name => 'serialspeed',
|
|
tabentry => 'nodehm.serialspeed',
|
|
access_tabentry => 'nodehm.node=attr:node',
|
|
description => '??????.'},
|
|
{attr_name => 'serialflow',
|
|
tabentry => 'nodehm.serialflow',
|
|
access_tabentry => 'nodehm.node=attr:node',
|
|
description => '??????.'},
|
|
{attr_name => 'ip',
|
|
tabentry => 'hosts.ip',
|
|
access_tabentry => 'hosts.node=attr:node',
|
|
description => '??????.'},
|
|
{attr_name => 'hostnames',
|
|
tabentry => 'hosts.hostnames',
|
|
access_tabentry => 'hosts.node=attr:node',
|
|
description => '??????.'},
|
|
{attr_name => 'serialnumber',
|
|
tabentry => 'vpd.serial',
|
|
access_tabentry => 'vpd.node=attr:node',
|
|
description => '??????.'},
|
|
{attr_name => 'mtm',
|
|
tabentry => 'vpd.mtm',
|
|
access_tabentry => 'vpd.node=attr:node',
|
|
description => '??????.'},
|
|
{attr_name => 'rackloc',
|
|
tabentry => 'nodepos.rack',
|
|
access_tabentry => 'nodepos.node=attr:node',
|
|
description => '??????.'},
|
|
{attr_name => 'unitloc',
|
|
tabentry => 'nodepos.u',
|
|
access_tabentry => 'nodepos.node=attr:node',
|
|
description => '??????.'},
|
|
{attr_name => 'chassisloc',
|
|
tabentry => 'nodepos.chassis',
|
|
access_tabentry => 'nodepos.node=attr:node',
|
|
description => '??????.'},
|
|
{attr_name => 'slotloc',
|
|
tabentry => 'nodepos.slot',
|
|
access_tabentry => 'nodepos.node=attr:node',
|
|
description => '??????.'},
|
|
{attr_name => 'roomloc',
|
|
tabentry => 'nodepos.room',
|
|
access_tabentry => 'nodepos.node=attr:node',
|
|
description => '??????.'},
|
|
{attr_name => 'usercomment',
|
|
tabentry => 'nodelist.comments',
|
|
access_tabentry => 'nodelist.node=attr:node',
|
|
description => 'User comment.'},
|
|
{attr_name => 'interface',
|
|
tabentry => 'mac.interface',
|
|
access_tabentry => 'mac.node=attr:node',
|
|
description => 'The Ethernet adapter interface name that will be used to install and manage the node. (For example, eth0 or en0.)'},
|
|
{attr_name => 'mac',
|
|
tabentry => 'mac.mac',
|
|
access_tabentry => 'mac.node=attr:node',
|
|
description => 'The machine address of the network adapter used for deployment.'},
|
|
{attr_name => 'currstate',
|
|
tabentry => 'chain.currstate',
|
|
access_tabentry => 'chain.node=attr:node',
|
|
description => '?????'},
|
|
{attr_name => 'currchain',
|
|
tabentry => 'chain.currchain',
|
|
access_tabentry => 'chain.node=attr:node',
|
|
description => '?????'},
|
|
{attr_name => 'chain',
|
|
tabentry => 'chain.chain',
|
|
access_tabentry => 'chain.node=attr:node',
|
|
description => '?????'},
|
|
{attr_name => 'ondiscover',
|
|
tabentry => 'chain.ondiscover',
|
|
access_tabentry => 'chain.node=attr:node',
|
|
description => '?????'},
|
|
|
|
# Conditional attributes:
|
|
# OSI node attributes:
|
|
|
|
{attr_name => 'tftpserver',
|
|
only_if => 'nodetype=osi',
|
|
tabentry => 'noderes.tftpserver',
|
|
access_tabentry => 'noderes.node=attr:node',
|
|
description => '??????.'},
|
|
{attr_name => 'nfsserver',
|
|
only_if => 'nodetype=osi',
|
|
tabentry => 'noderes.nfsserver',
|
|
access_tabentry => 'noderes.node=attr:node',
|
|
description => '??????.'},
|
|
{attr_name => 'nfsdir',
|
|
only_if => 'nodetype=osi',
|
|
tabentry => 'noderes.nfsdir',
|
|
access_tabentry => 'noderes.node=attr:node',
|
|
description => '??????.'},
|
|
{attr_name => 'primarynic',
|
|
only_if => 'nodetype=osi',
|
|
tabentry => 'noderes.primarynic',
|
|
access_tabentry => 'noderes.node=attr:node',
|
|
description => '??????.'},
|
|
{attr_name => 'installnic',
|
|
only_if => 'nodetype=osi',
|
|
tabentry => 'noderes.installnic',
|
|
access_tabentry => 'noderes.node=attr:node',
|
|
description => '??????.'},
|
|
{attr_name => 'netboot',
|
|
only_if => 'nodetype=osi',
|
|
tabentry => 'noderes.netboot',
|
|
access_tabentry => 'noderes.node=attr:node',
|
|
description => '??????.'},
|
|
{attr_name => 'current_osimage',
|
|
only_if => 'nodetype=osi',
|
|
tabentry => 'noderes.current_osimage',
|
|
access_tabentry => 'noderes.node=attr:node',
|
|
description => '??????.'},
|
|
{attr_name => 'next_osimage',
|
|
only_if => 'nodetype=osi',
|
|
tabentry => 'noderes.next_osimage',
|
|
access_tabentry => 'noderes.node=attr:node',
|
|
description => '??????.'},
|
|
|
|
# Hardware Control node attributes:
|
|
|
|
# add hcp username password id profile mgt
|
|
|
|
{attr_name => hcp,
|
|
only_if => 'mgt=hmc',
|
|
tabentry => 'ppc.hcp',
|
|
access_tabentry => 'ppc.node=attr:node',
|
|
description => 'The host name or IP address of the network interface for the hardware control point.'},
|
|
{attr_name => id,
|
|
only_if => 'mgt=hmc',
|
|
tabentry => 'ppc.id',
|
|
access_tabentry => 'ppc.node=attr:node',
|
|
description => '?????'},
|
|
{attr_name => profile,
|
|
only_if => 'mgt=hmc',
|
|
tabentry => 'ppc.profile',
|
|
access_tabentry => 'ppc.node=attr:node',
|
|
description => '?????'},
|
|
{attr_name => id,
|
|
only_if => 'mgt=hmc',
|
|
tabentry => 'ppc.id',
|
|
access_tabentry => 'ppc.node=attr:node',
|
|
description => '?????'},
|
|
|
|
|
|
# {attr_name => hdwctrlpoint,
|
|
# only_if => 'mgtmethod=hmc',
|
|
# tabentry => 'ppc.hcp',
|
|
# access_tabentry => 'ppc.node=attr:node'},
|
|
{attr_name => hdwctrlpoint,
|
|
only_if => 'mgtmethod=ipmi',
|
|
tabentry => 'ipmi.bmc',
|
|
access_tabentry => 'ipmi.node=attr:node'},
|
|
{attr_name => hdwctrlnodeid,
|
|
only_if => 'mgtmethod=mp',
|
|
tabentry => 'mp.id',
|
|
access_tabentry => 'mp.node=attr:node',
|
|
description => '??????.'},
|
|
# {attr_name => hdwctrlnodeid,
|
|
# only_if => 'mgtmethod=hmc',
|
|
# tabentry => 'ppc.id',
|
|
# access_tabentry => 'ppc.node=attr:node'}
|
|
);
|
|
|
|
@{$defspec{osimage}->{'attrs'}} = (
|
|
{attr_name => 'imagename',
|
|
tabentry => 'osimage.imagename',
|
|
access_tabentry => 'osimage.imagename=attr:imagename',
|
|
description => 'The name of this operating system image.'},
|
|
{attr_name => 'osdistro',
|
|
tabentry => 'osimage.osdistro',
|
|
access_tabentry => 'osimage.imagename=attr:imagename',
|
|
description => 'The Linux distribution name to be deployed. The valid values are RedHat, and SLES.'},
|
|
{attr_name => 'osname',
|
|
tabentry => 'osimage.osname',
|
|
access_tabentry => 'osimage.imagename=attr:imagename',
|
|
description => 'The name of the operating system to be deployed. The expected values are AIX or Linux.'},
|
|
{attr_name => 'osvers',
|
|
tabentry => 'osimage.osvers',
|
|
access_tabentry => 'osimage.imagename=attr:imagename',
|
|
description => 'The operating system version to be deployed. The formats for the values are "version.release.mod" for AIX and "version" for Linux. (ex. AIX: "5.3.0", Linux: "5").'},
|
|
{attr_name => 'osarch',
|
|
tabentry => 'osimage.osarch',
|
|
access_tabentry => 'osimage.imagename=attr:imagename',
|
|
description => 'The node machine architecture.'},
|
|
{attr_name => 'usercomment',
|
|
tabentry => 'osimage.comments',
|
|
access_tabentry => 'osimage.imagename=attr:imagename',
|
|
description => 'User comment.'},
|
|
);
|
|
|
|
@{$defspec{network}->{'attrs'}} = (
|
|
{attr_name => 'netname',
|
|
tabentry => 'networks.netname',
|
|
access_tabentry => 'networks.netname=attr:netname',
|
|
description => 'Name used to identify this network definition.'},
|
|
{attr_name => 'net',
|
|
tabentry => 'networks.net',
|
|
access_tabentry => 'networks.netname=attr:netname',
|
|
description => '??????.'},
|
|
{attr_name => 'mask',
|
|
tabentry => 'networks.mask',
|
|
access_tabentry => 'networks.netname=attr:netname',
|
|
description => 'The network mask.'},
|
|
{attr_name => 'gateway',
|
|
tabentry => 'networks.gateway',
|
|
access_tabentry => 'networks.netname=attr:netname',
|
|
description => 'Specifies the hostname or IP address of the network gateway.'},
|
|
{attr_name => 'dhcpserver',
|
|
tabentry => 'networks.dhcpserver',
|
|
access_tabentry => 'networks.netname=attr:netname',
|
|
description => '??????.'},
|
|
{attr_name => 'tftpserver',
|
|
tabentry => 'networks.tftpserver',
|
|
access_tabentry => 'networks.netname=attr:netname',
|
|
description => '??????.'},
|
|
{attr_name => 'nameservers',
|
|
tabentry => 'networks.nameservers',
|
|
access_tabentry => 'networks.netname=attr:netname',
|
|
description => '??????.'},
|
|
{attr_name => 'dynamicrange',
|
|
tabentry => 'networks.dynamicrange',
|
|
access_tabentry => 'networks.netname=attr:netname',
|
|
description => '??????.'},
|
|
{attr_name => 'usercomment',
|
|
tabentry => 'networks.comments',
|
|
access_tabentry => 'networks.netname=attr:netname',
|
|
description => 'User comment.'},
|
|
);
|
|
|
|
@{$defspec{site}->{'attrs'}} = (
|
|
{attr_name => 'key',
|
|
tabentry => 'site.key',
|
|
access_tabentry => 'site.key=attr:key',
|
|
description => 'The name of the attribute.'},
|
|
{attr_name => 'value',
|
|
tabentry => 'site.value',
|
|
access_tabentry => 'site.key=attr:key',
|
|
description => 'The value of the attribute.'},
|
|
{attr_name => 'comments',
|
|
tabentry => 'site.comments',
|
|
access_tabentry => 'site.key=attr:key',
|
|
description => 'User comments.'},
|
|
);
|
|
|
|
#@{$defspec{site}->{'attrs'}} = (
|
|
# {attr_name => 'sitename',
|
|
# tabentry => 'site.sitename',
|
|
# access_tabentry => 'site.sitename=attr:sitename',
|
|
# description => 'Name of this xCAT cluster site definition.'},
|
|
# {attr_name => 'master',
|
|
# tabentry => 'site.master',
|
|
# access_tabentry => 'site.sitename=attr:sitename',
|
|
# description => 'The name of the xCAT management node.'},
|
|
# {attr_name => 'domain',
|
|
# tabentry => 'site.domain',
|
|
# access_tabentry => 'site.sitename=attr:sitename',
|
|
# description => 'The DNS domain name for this cluster.'},
|
|
# {attr_name => 'installdir',
|
|
# tabentry => 'site.installdir',
|
|
# access_tabentry => 'site.sitename=attr:sitename',
|
|
# description => 'The installation directory.'},
|
|
# {attr_name => 'rsh',
|
|
# tabentry => 'site.rsh',
|
|
# access_tabentry => 'site.sitename=attr:sitename',
|
|
# description => 'Specifies the path of the remote shell command to use.'},
|
|
# {attr_name => 'rcp',
|
|
# tabentry => 'site.rcp',
|
|
# access_tabentry => 'site.sitename=attr:sitename',
|
|
# description => 'Specifies the path of the remote copy command to use.'},
|
|
# {attr_name => 'xcatdport',
|
|
# tabentry => 'site.xcatdport',
|
|
# access_tabentry => 'site.sitename=attr:sitename',
|
|
# description => 'The port used by xcatd daemon running on the xCAT management node.'},
|
|
# {attr_name => 'usercomment',
|
|
# tabentry => 'site.comments',
|
|
# access_tabentry => 'site.sitename=attr:sitename',
|
|
# description => 'User comment.'},
|
|
# );
|
|
|
|
|
|
@{$defspec{group}->{'attrs'}} = (
|
|
{attr_name => 'groupname',
|
|
tabentry => 'nodegroup.groupname',
|
|
access_tabentry => 'nodegroup.groupname=attr:groupname',
|
|
description => 'The name of this xCAT group object definition.'},
|
|
{attr_name => 'grouptype',
|
|
tabentry => 'nodegroup.grouptype',
|
|
access_tabentry => 'nodegroup.groupname=attr:groupname',
|
|
description => 'The type of xCAT group - either "static" or "dynamic".'},
|
|
{attr_name => 'members',
|
|
tabentry => 'nodegroup.members',
|
|
access_tabentry => 'nodegroup.groupname=attr:groupname',
|
|
description => 'The list of members for this group.'},
|
|
{attr_name => 'wherevals',
|
|
tabentry => 'nodegroup.wherevals',
|
|
access_tabentry => 'nodegroup.groupname=attr:groupname',
|
|
description => 'A list of comma-separated "attr=val" pairs that can be used to determine the members of a dynamic group.'},
|
|
{attr_name => 'usercomment',
|
|
tabentry => 'nodegroup.comments',
|
|
access_tabentry => 'nodegroup.groupname=attr:groupname',
|
|
description => 'User comment.'},
|
|
|
|
#
|
|
# Node attrs that can be used with static groups - from above!!!!
|
|
#
|
|
);
|
|
|
|
@{$defspec{policy}->{'attrs'}} = (
|
|
{attr_name => 'priority',
|
|
tabentry => 'policy.priority',
|
|
access_tabentry => 'policy.priority=attr:priority',
|
|
description => '??????.'},
|
|
{attr_name => 'name',
|
|
tabentry => 'policy.name',
|
|
access_tabentry => 'policy.priority=attr:priority',
|
|
description => '??????.'},
|
|
{attr_name => 'host',
|
|
tabentry => 'policy.host',
|
|
access_tabentry => 'policy.priority=attr:priority',
|
|
description => '??????.'},
|
|
{attr_name => 'commands',
|
|
tabentry => 'policy.commands',
|
|
access_tabentry => 'policy.priority=attr:priority',
|
|
description => '??????.'},
|
|
{attr_name => 'noderange',
|
|
tabentry => 'policy.noderange',
|
|
access_tabentry => 'policy.priority=attr:priority',
|
|
description => '??????.'},
|
|
{attr_name => 'parameters',
|
|
tabentry => 'policy.parameters',
|
|
access_tabentry => 'policy.priority=attr:priority',
|
|
description => '??????.'},
|
|
{attr_name => 'time',
|
|
tabentry => 'policy.time',
|
|
access_tabentry => 'policy.priority=attr:priority',
|
|
description => '??????.'},
|
|
{attr_name => 'rule',
|
|
tabentry => 'policy.rule',
|
|
access_tabentry => 'policy.priority=attr:priority',
|
|
description => '??????.'},
|
|
{attr_name => 'usercomment',
|
|
tabentry => 'policy.comments',
|
|
access_tabentry => 'policy.priority=attr:priority',
|
|
description => 'User comment.'},
|
|
);
|
|
|
|
@{$defspec{notification}->{'attrs'}} = (
|
|
{attr_name => 'filename',
|
|
tabentry => 'notification.filename',
|
|
access_tabentry => 'notification.filename=attr:filename',
|
|
description => 'Specifies a file that implements the callback routine when the monitored table changes.'},
|
|
{attr_name => 'tables',
|
|
tabentry => 'notification.tables',
|
|
access_tabentry => 'notification.filename=attr:filename',
|
|
description => 'The name of the xCAT database table to monitor.'},
|
|
{attr_name => 'tableops',
|
|
tabentry => 'notification.tableops',
|
|
access_tabentry => 'notification.filename=attr:filename',
|
|
description => 'Specifies the table operation to monitor. It can be "d" for rows deleted, "a" for rows added or "u" for rows updated.'},
|
|
{attr_name => 'comments',
|
|
tabentry => 'notification.comments',
|
|
access_tabentry => 'notification.filename=attr:filename',
|
|
description => 'User comment.'},
|
|
);
|