Add VM migration with external disk support

MERGE -c 1025533 978147-update7/Sources

Review @89141 "add VM migration with external disk support"
Reviewed-by: myakhin
Reviewed-by: shrike
Reviewed-by: tatianar
Observers: sergeyt, juram, dim, igor
1. Change disp to disp migration protocol to add possibility
   to check shared/private for every external disk
2. On successful migration every external disk is wiped out
   on source.

see #PSBM-16836
Issues:
Affects Major Issue PSBM-16836 - "VM migration with external disk"
Per disk AutoCompressEnabled parameter

Merge from current r1020362
Review @90305 "[SDK] per disk AutoCompressEnabled parameter"
Reviewed-by: myakhin
Observers: sergeyt
Setter/getter for per disk autocompress sign

PrlVmDevHd_SetAutoCompressEnabled
PrlVmDevHd_IsAutoCompressEnabled

bug #PSBM-26001
Issues:
Affects Blocker Issue PSBM-26001 - "pcompact must have parameter
to specify ploop device for compacting."
Fixed PrlVmDevHd_GetMountPoint:

get_mount_point returns empty string inspite mount point
is set. (mereg from current r1021011)
Fixed parameters validation, the sMountPoint could be NULL

bug #PSBM-26928

Issues:
Affects Critical Issue PSBM-26928 -
"prlsdkapi: `get_mount_point` returns empty string
inspite mount point is set."
Added RHEL7 and Centos 7 guest OS types
Allow to set CPU masks using Python SDK

Review @97495 "Allow to set CPU masks using Python SDK."
Reviewed-by: myakhin
Observers: sergeyt, dim, nshirokovskiy

This patch introduces ability to set cpu masks using
'set_cpu_features_mask' Python SDK call (wrap for
PrlDispCfg_SetCpuFeaturesMask).
It works with input object of type CpuFeaturesMask which
is simply Python representation of PRL_CPU_FEATURES_MASK
struct added for convenience.
Affects Blocker Issue PSBM-29409 -
"can't set CPU features mask through python sdk api"
Introduced new interface for CPU Features Masks

Review @97920
[PATCH 1/3] Introduced new interface for CPU Features Masks.
Reviewed-by: myakhin
Observers: sergeyt, dim, nshirokovskiy

This series of patches introduce API for working with new
CPU masking feature for Virtual Machines and Containers.
New API works in very same way as old one but uses special
handle for CPU Features Masks in order to extend it in future
if needed (e.g. add more features).
It was implemented with care to preserve old CPU features API.

This patch contains SDK part of the changes (without prlsrvctl).

Changes:
* introduce new dedicated handle for CPU features masks;
* create new calls that allow to set and to get CPU features
  masks using dedicated handle;
* introduce methods that allow to set and get data in CPU features
  masks handle.
Issues:
Affects Critical Issue PSBM-29654 -
"Implement ability to set/get CPU Features Mask using SDK."
Added new interface for CPU Features Masks to Python SDK

Review @97932
"Added new interface for CPU Features Masks to Python SDK."
Reviewed-by: myakhin
Observers: sergeyt, dim, nshirokovskiy

This patch replaces old CPU features masks functionality
(implemented recently) in Python SDK with new one (look
at #PSBM-29654 for more details about new API).

Changes:
 -- removed changes done in r1071300, we don't need them anymore;
 -- added PrlDispCfg_GetCpuFeaturesMaskEx,
    PrlDispCfg_SetCpuFeaturesMaskEx, PrlCpuFeaturesMask_GetValue
    and PrlCpuFeaturesMask_SetValue to Python SDK generator;
 -- added new handle CpuFeaturesMask to Python SDK generator;
 -- marked old PrlDispCfg_GetCpuFeaturesMask and
    PrlDispCfg_SetCpuFeaturesMask methods to deprecated.
Issues:
Affects Blocker Issue PSBM-29409 -
"can't set CPU features mask through python sdk api"
Affects Critical Issue PSBM-29654 -
"Implement ability to set/get CPU Features Mask using SDK."
MINOR fix compilation with -Werr

This patch fixes error:
  'PrlHandleCpuFeaturesMask::toString' hides overloaded virtual function

 #PSBM-29654

Issues:
Affects Critical Issue PSBM-29654 -
"Implement ability to set/get CPU Features Mask using SDK."
Introduced new interface for get CPU features call

Review @98227 "Introduced new interface for get CPU features call."
Reviewed-by: myakhin
Observers: sergeyt, dim, nshirokovskiy

This patch continues implementation of new interface based on handles
for CPU features functionality. This time we introduce new
PrlSrvCfg_GetCpuFeaturesEx that allow to take all features that Host
supports. As before old interface was preserved in order to support
compatibility.

Changes:
 -- introduced new call PrlSrvCfg_GetCpuFeaturesEx that allow to take
    all features that Host supports using dedicated handle;
 -- old PrlSrvCfg_GetCpuFeatures was marked as deprecated;
 -- reimplemented old CpuFeaturesMasks handle to more generic CpuFeatures
    handle;
 -- use one handle for all new CPU features related calls;
 -- added PrlSrvCfg_GetCpuFeaturesEx to Python SDK.
Issues:
Affects Critical Issue PSBM-29655 -
"Add API to get node masking capabilities to SDK."
Fixed compilation
Add PRL_ERR_BACKUP_RESTORE_PROHIBIT_WHEN_ATTACHED error code

see #PSBM-28740 @95183
Reviewed-by: apavlenko

Add a error code and its description, displayed when a user
tries to restore a VM from a backup, which is attached to some VM.

See #PSBM-28740.
Issues:
Affects Critical Issue PSBM-28740 -
"Unable to restore backup of VM - "Access denied""
Prohibit changing of storage URL for existing attached backups

Reviewed-by: shrike
Reviewed-by: apavlenko
Observers: sergeyt, myakhin
Replacing attached backup contents in response to storage URL
change for a running VM is too complicated and error prone.
And we don't know whether this functionality is needed at all.
Let's prohibit changing of storage URL and return a custom error code.

See #PSBM-29099.
Issues:
Affects Major Issue PSBM-29099 -
"Buse: updating --storage-url dosn't work"
Support dispatcher part of inquiring masking capabilities
Reviewed-by: shrike
Observers: sergeyt, myakhin, den
UPDATE:
SDK part included in this patch.

UPDATE2:
1. Don't hide errors on mask load, so move mask loading to
   phase of loadingdispatcher config.
2. Don't fail to sync and get mask on absence of cpufeatures
   binary.

Refactorings:
move all register name specific code to helper, there we have
stuff to manipulate on them in homogeneous way

see #PSBM-29655
Issues:
Affects Critical Issue PSBM-29655 -
"Add API to get node masking capabilities to SDK."
MINOR add 0d_01_eax to features register set
Reviewed-by: sergeyt
Reviewed-by: myakhin
Observers: dim, shrike
add 0d_01_eax to features register set

Issues:
Affects Major Issue PSBM-29739 -
"Add field cpuid_0000000D_01_EAX to SDK that deal with cpufeatures"
MINOR add sdk call to create features handle

Reviewed-by: sergeyt
Reviewed-by: myakhin
Observers: dim, shrike
add sdk call to create features handle

Issues:
Affects Major Issue PSBM-29969 -
"Add method to create cpufeatures handle to SDK"
Modify CUSTOM_BACKUP_SERVER_NOT_SUPPORTED message

since we don't support remote backup servers @noreview
Create packed report from input string

before sending to the report server

Review @95910
Reviewed-by: myakhin
Observers: sergeyt, dim

In current realization of SDK we have ability to send
problem report as a string. This string usually processed
by report sender and sent to the report server as raw bytes.
However the report server expecting some kind of archive
with XML fils inside and marks this kind of reports as invalid.

Now we will try to created basic packed problem report from input
string and send it to the report server.
Issues:
Affects Critical Issue PSBM-28957 - "report.tar.gz in wrong format"
Return PRL_ERR_INVALID_ARG if we failed to convert

input string to packed problem report

Issues:
Affects Critical Issue PSBM-29074 -
"[at.pcs6][CI] pls-sdk-unit: test_sdk FAIL:
./test_sdk >"/tests/.../test_sdk.out" 2>&1  returns 1"
Added ability to transfer new ID or Name using migration protocol

Review @95768
"[PATCH 2/4] Added ability to transfer new ID or
Name using migration protocol."
Reviewed-by: sergeyt
Reviewed-by: shrike
Observers: dim, myakhin

This seria of patches introduces new ability to change Uuid or Name
of a VM and ID or Name of a CT during migration. For this purpose
protocol was extended with new parameter that can contain either
ID or Name of VE. This new parameter is read out from migration
command itself and is transferred between migration Source and
Target servers as part of check-preconditions command.

This patch contains extension for migration protocol that allow to
transfer new ID or Name from client to Dispatcher and between
migration Source and Target servers.
Issues:
Affects Critical Issue PSBM-26671 - "Implement remote clone operation
in SDK."
Added ablity to specify new ID or Name in SDK migration call

Review @95770
"[PATCH 4/4] Added ablity to specify new ID or Name in SDK
migration call and prlctl."
Reviewed-by: myakhin
Reviewed-by: shrike
Observers: sergeyt, dim, igor

This seria of patches introduces new ability to change Uuid or
Name of a VM and ID or Name of a CT during migration. For this
purpose protocol was extended with new parameter that can
contain either ID or Name of VE. This new parameter is read
out from migration command itself and is transferred between
migration Source and Target servers as part of check-preconditions
command.

This patch implements ablity to specify new ID or Name in SDK
migration call and prlctl. In case of prlctl the usage is pretty
straight-forward, e.g.:
prlctl migrate 127.0.0.1/300 10.30.110.100/600
Issues:
Affects Critical Issue PSBM-26671 - "Implement remote clone operation in SDK."