=head1 NAME

B<mkdef> - Use this command to create xCAT data object definitions.

=head1 SYNOPSIS

B<mkdef> [B<-h>|B<--help>] [B<-t> I<object-types>]

B<mkdef> [B<-V>|B<--verbose>] [B<-t> I<object-types>] [B<-o> I<object-names>]
[B<-z>|B<--stanza>] [B<-d>|B<--dynamic>] [B<-f>|B<--force>]
[[B<-w> I<attr>==I<val>] [B<-w> I<attr>=~I<val>] ...] [I<noderange>] [I<attr>=I<val> [I<attr>=I<val...>]]


=head1 DESCRIPTION

This command is used to create xCAT object definitions which are stored in the xCAT database. If the definition already exists it will return an error message. The force option may be used to re-create a definition.  In this case the old definition will be remove and the new definition will be created.


=head1 OPTIONS

=over 10

=item I<attr=val [attr=val ...]>

Specifies one or more "attribute equals value" pairs, separated by spaces. Attr=val pairs must be specified last on the command line. Use the help option to get a list of valid attributes for each object type.

Note: when creating node object definitions, the 'groups' attribute is required.

=item B<-d|--dynamic>

Use the dynamic option to create dynamic node groups. This option must be used with -w option.

=item B<-f|--force>

Use the force option to re-create object definitions. This option removes the old definition before creating the new one.

=item B<-h|--help>

Display usage message.

=item I<noderange>

A set of comma delimited node names and/or group names. (must be the first parameter) See the "noderange" man page for details on supported formats.

=item B<-o> I<object-names>

A set of comma delimited object names.

=item B<-t> I<object-types>

A set of comma delimited object types.  Use the help option to get a list of valid object types.

=item B<-V|--verbose>

Verbose mode.

=item B<-w> I<attr==val> B<-w> I<attr=~val> ... 

Use one or multiple -w flags to specify the selection string that can be used to select objects. The operators ==, !=, =~ and !~ are available. For mkdef commmand, the -w flag only makes sense for creating dynamic node group. Use the help option to get a list of valid attributes for each object type.

Operator descriptions:
        ==        Select nodes where the attribute value is exactly this value.
        !=        Select nodes where the attribute value is not this specific value.
        =~        Select nodes where the attribute value matches this regular expression.
        !~        Select nodes where the attribute value does not match this regular expression.

Note: if the "val" fields includes spaces or any other characters that will be parsed by shell, the "attr<operator>val" needs to be quoted. If the operator is "!~", the "attr<operator>val" needs to be quoted using single quote.

=item B<-z|--stanza>

Indicates that the file being piped to the command is in stanza format.  See the xcatstanzafile man page for details on using xCAT stanza files.

=back


=head1 RETURN VALUE

0 The command completed successfully.

1 An error has occurred.


=head1 EXAMPLES

=over 3

=item 1.

To create a site definition.

 mkdef -t site -o clustersite rsh=/bin/rsh rcp=/bin/rcp installdir=/xcatinstall

=item 2.

To create a basic node definition.

 mkdef -t node -o node01 groups="all,aix"

=item 3.

To re-create the current definition of "node01".

 mkdef -f -t node -o node01  nodetype=osi groups="linux"

(The group definitions are also created if they don't already exist.)

=item 4.

To create a set of different types of definitions based on information contained in a stanza file.

 cat defstanzafile | mkdef -z

=item 5.

To create a group definition called LinuxNodes containing the nodes clstrn01 and clstrn02.

 mkdef -t group -o LinuxNodes members="clstrn01,clstrn02"

=item 6.

To create a node definition for an FSP node using the attributes provided by the group fspnodes.

 mkdef -t node fspn1 groups=fspnodes nodetype=fsp

=item 7.

To create node definitions for a set of node host names contained in the node range "node1,node2,node3"

 mkdef -t node node1,node2,node3 power=hmc groups="all,aix"

=item 8.

To create a dynamic node group definition called HMCMgtNodes containing all the HMC managed nodes"

 mkdef -t group -o HMCMgtNodes -d -w mgt==hmc -w cons==hmc

=item 9.

To create a dynamic node group definition called SLESNodes containing all the SLES nodes

 mkdef -t group -o SLESNodes -d -w "os=~^sles[0-9]+$"

=back


=head1 FILES

$XCATROOT/bin/mkdef

(The XCATROOT environment variable is set when xCAT is installed. The
default value is "/opt/xcat".)


=head1 NOTES

This command is part of the xCAT software product.


=head1 SEE ALSO

L<chdef(1)|chdef.1>, L<lsdef(1)|lsdef.1>, L<rmdef(1)|rmdef.1>, L<xcatstanzafile(5)|xcatstanzafile.5>
