=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<--template> I<template-object-name>] [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...>]] [B<-u> B<provmethod>={B<install> | B<netboot> | B<statelite>} B<profile=> I<xxx> [B<osvers=> I<value>] [B<osarch=> I<value>]]


=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<--template> I<template-object-name>

Name of the xCAT shipped object definition template or an existing object, from which the new object definition will be created. The newly created object will inherit the attributes of the template definition unless the attribute is specified in the arguments of B<mkdef> command. If there are a template and an existing object with the same name I<template-object-name>, the tempalte object takes precedence over the existing object. For the details of xCAT shipped object definition templates, refer to the manpage of B<--template> option in L<lsdef(1)|lsdef.1>.

=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.

=item B<-u>

Fill in the attributes such as template file, pkglist file and otherpkglist file of osimage object based on the specified parameters. It will search "/install/custom/" directory first, and then "/opt/xcat/share/".
The I<provmethod> and I<profile> must be specified. If I<osvers> or I<osarch> is not specified, the corresponding value of the management node will be used.

Note: this option only works for objtype B<osimage>.

=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  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]+$"

=item 10.

To create a entry (7.0) in the policy table for user admin1 

 mkdef -t policy -o 7.0 name=admin1 rule=allow 

=item 11.

To create a node definition with nic attributes

 mkdef -t node cn1 groups=all nicips.eth0="1.1.1.1|1.2.1.1" nicnetworks.eth0="net1|net2" nictypes.eth0="Ethernet" 

=item 12.

To create an osimage definition and fill in attributes automatically.

 mkdef redhat6img -u profile=compute provmethod=statelite

=item 13.

To create a PowerLE kvm node definition with the xCAT shipped template "ppc64lekvmguest-template".

 mkdef -t node cn1 --template ppc64lekvmguest-template ip=1.1.1.1 mac=42:3d:0a:05:27:0b vmhost=1.1.0.1 vmnics=br0

=item 14.

To create a node definition from an existing node definition "cn1"

 mkdef -t node cn2 --template cn1 ip=1.1.1.2 mac=42:3d:0a:05:27:0c

=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>
