=head1 NAME

B<chhypervisor> - Configure the virtualization hosts.

=head1 SYNOPSIS

B<RHEV specific :>

=over 2

B<chhypervisor> I<noderange> [B<-a>]

B<chhypervisor> I<noderange> [B<-n>]

B<chhypervisor> I<noderange> [B<-p>]

B<chhypervisor> I<noderange> [B<-e>]

B<chhypervisor> I<noderange> [B<-d>]

=back

B<zVM specific :>

=over 2

B<chhypervisor> I<noderange> [B<--adddisk2pool> I<function> I<region> I<volume> I<group>]

B<chhypervisor> I<noderange> [B<--addscsi> I<device_number> I<device_path> I<option> I<persist>]

B<chhypervisor> I<noderange> [B<--addvlan> I<name> I<owner> I<type> I<transport>]

B<chhypervisor> I<noderange> [B<--addvswitch> I<name> I<osa_dev_addr> I<osa_exp_adapter> I<controller> I<connect (0, 1, or 2)> I<memory_queue> I<router> I<transport> I<vlan_id> I<port_type> I<update> I<gvrp> I<native_vlan>]

B<chhypervisor> I<noderange> [B<--addzfcp2pool> I<pool> I<status> I<wwpn> I<lun> I<size> I<owner>]

B<chhypervisor> I<noderange> [B<--removediskfrompool> I<function> I<region> I<group>]

B<chhypervisor> I<noderange> [B<--removescsi> I<device_number> I<persist (YES or NO)>]

B<chhypervisor> I<noderange> [B<--removevlan> I<name> I<owner>]

B<chhypervisor> I<noderange> [B<--removevswitch> I<name>]

B<chhypervisor> I<noderange> [B<--removezfcpfrompool> I<pool> I<lun> I<wwpn>]

B<chhypervisor> I<noderange> [B<--smcli> I<function> I<arguments>]

=back

=head1 DESCRIPTION

The B<chhypervisor> command can be used to configure the RHEV-h.

The rhev-h host will register to the rhev-m automatically, but admin needs to 
approve the host can be added to the 'cluster' with B<-a> flag .

After registering, the network interfaces of host need to be added to the 'network' of 
RHEV. And the power management for the host should be configured so that
rhev-m could make proper decision when certain host encountered error.

The B<chhypervisor> command can also be used to configure the zVM host.

For each host, an entry should be added to the hypervisor table:

The columns of hypervisor table:

=over 2

B<hypervisor.node> - rhev-h host name or zVM host name (lower-case).

B<hypervisor.type> - Must be set to 'rhevh' or 'zvm'.

B<hypervisor.mgr> - The rhev manager (The FQDN of rhev-m server) for the host.

B<hypervisor.interface> - The configuration for the nics. Refer to B<-n>.

B<hypervisor.cluster> - The cluster that the host will be added to. The 
default is 'Default' cluster if not specified. 

=back

=head1 OPTIONS

=head2 RHEV specific :

=over 2

=item B<-a>
Approve the host that to be added to cluster.

Before approve, the status of the host must be 'pending_approval'.

=item B<-n>
Configure the network interfaces for the host.

Note: This operation only can be run when host is in 'maintenance mode'. 
Use B<-d> to switch the host to 'maintenance' mode.

The interfaces which configured in hypervisor.interface will be added
to the network of RHEV.

The format of hypervisor.interface is multiple [network:interfacename:
protocol:IP:netmask:gateway] sections separated with '|'. For example: 
[rhevm2:eth0:static:10.1.0.236:255.255.255.0:0.0.0.0].

=over 2

B<network> - The logic network which has been created by 'cfgve -t nw' 
or the default management network 'rhevm'.

B<interfacename> - Physical network name: 'eth0','eth1'...

B<protocol> - To identify which boot protocol to use for the interface: dhcp 
or static.

B<IP> - The IP address for the interface.

B<netmask> - The network mask for the interface.

B<gateway> - The gateay for the interface. This field only can be set when 
the interface is added to 'rhevm' network. 

=back

=item B<-p>
Configure the power management for the host.

The power management must be configured for the rhev-h host to make the 
rhev-m to monitor the power status of the host, so that when certain host 
failed to function, rhev-m will fail over certain role like SPM to other active host.

For rack mounted server, the bmc IP and user:password need to be set for the 
power management (These parameters are gotten from ipmi table). rhev-m uses the 
ipmi protocol to get the power status of the host. 

=item B<-e>
To activate the host.

=item B<-d>
To deactivate the host to maintenance mode.

=item B<-h>
Display usage message.

=back

=head2 zVM specific :

=over 2

=item B<--adddisk2pool> I<function> I<region> I<volume> I<group>

Add a disk to a disk pool defined in the EXTENT CONTROL. Function type can be 
either: (4) Define region as full volume and add to group OR (5) Add existing 
region to group. If the volume already exists in the EXTENT CONTROL, use 
function 5. If the volume does not exist in the EXTENT CONTROL, but is attached
to SYSTEM, use function 4.

=item B<--addscsi> I<device_number> I<device_path> I<option> I<persist>

Dynamically add a SCSI disk to a running z/VM system.

=item B<--addvlan> I<name> I<owner> I<type> I<transport>

Create a virtual network LAN.

=item B<--addvswitch> I<name> I<osa_dev_addr> I<osa_exp_adapter> I<controller> I<connect (0, 1, or 2)> I<memory_queue> I<router> I<transport> I<vlan_id> I<port_type> I<update> I<gvrp> I<native_vlan>

Create a virtual switch.

=item B<--addzfcp2pool> I<pool> I<status> I<wwpn> I<lun> I<size> I<owner>

Add a zFCP device to a device pool defined in xCAT. The device must have been 
carved up in the storage controller and configured with a WWPN/LUN before it 
can be added to the xCAT storage pool. z/VM does not have the ability to 
communicate directly with the storage controller to carve up disks dynamically.

=item B<--removediskfrompool> I<function> I<region> I<group>

Remove a disk from a disk pool defined in the EXTENT CONTROL. Function type can 
be either: (1) Remove region, (2) Remove region from group, (3) Remove region 
from all groups, OR (7) Remove entire group .

=item B<--removescsi> I<device_number> I<persist (YES or NO)>

Delete a real SCSI disk.

=item B<--removevlan> I<name> I<owner>

Delete a virtual network LAN.

=item B<--removevswitch> I<name>

Delete a virtual switch.

=item B<--removezfcpfrompool> I<pool> I<lun>

Remove a zFCP device from a device pool defined in xCAT.

=item B<--smcli> I<function> I<arguments>

Execute a SMAPI function. A list of APIs supported can be found by using the 
help flag, e.g. chhypervisor pokdev61 --smcli -h. Specific arguments associated 
with a SMAPI function can be found by using the help flag for the function, 
e.g. chhypervisor pokdev61 --smcli Image_Query_DM -h. Only z/VM 6.2 and older 
SMAPI functions are supported at this time. Additional SMAPI functions will be 
added in subsequent zHCP versions.

=back

=head1 RETURN VALUE

0  The command completed successfully.

1  An error has occurred.

=head1 EXAMPLES

=head2 RHEV specific :

=over 2

=item 1.
To approve the host 'host1', enter:

 chhypervisor host1 -a

=item 2.
To configure the network interface for the host 'host1', enter:

 chhypervisor host1 -n

=item 3.
To configure the power management for the host 'host1', enter:

 chhypervisor host1 -p

=item 4.
To activate the host 'host1', enter:

 chhypervisor host1 -e

=item 5.
To deactivate the host 'host1', enter:

 chhypervisor host1 -d

=back

=head2 zVM specific :

=over 2

=item 1.
To add a disk to a disk pool defined in the EXTENT CONTROL, enter:

 chhypervisor pokdev61 --adddisk2pool 4 DM1234 DM1234 POOL1
 
=item 2.
To add a zFCP device to a device pool defined in xCAT, enter:

 chhypervisor pokdev61 --addzfcp2pool zfcp1 free 500501234567C890 4012345600000000 8G
 
=item 3.
To remove a region from a group in the EXTENT CONTROL, enter:

 chhypervisor pokdev61 --removediskfrompool 2 DM1234 POOL1
  
=item 4.
To remove a zFCP device from a device pool defined in xCAT, enter:

 chhypervisor pokdev61 --removezfcpfrompool zfcp1 4012345600000000 500501234567C890
  
=item 5.
To execute a SMAPI function (Image_Query_DM), enter:

 chhypervisor pokdev61 --smcli Image_Query_DM -T LNX3

=back

=head1 FILES

/opt/xcat/bin/chhypervisor

