CI-44: Add an extra field "originator" to session object.

This is a key string used for distinguishing different API users sharing the same login name.

Signed-off-by: Zheng Li <zheng.li@eu.citrix.com>
CI-44: Add the originator param to XAPI session creation

Signed-off-by: Zheng Li <zheng.li@eu.citrix.com>
CI-44: update internal uses of login_with_password with the originator param

Signed-off-by: Zheng Li <zheng.li@eu.citrix.com>
CI-44: update external components and tests with the new originator param

Signed-off-by: Zheng Li <zheng.li@eu.citrix.com>
CI-44: Add max_sessions_per_originator config

Signed-off-by: Zheng Li <zheng.li@eu.citrix.com>
CI-44: update session create/destory rbac audit functions

Based on some previous patches from Thomas Sanders.

Signed-off-by: Zheng Li <zheng.li@eu.citrix.com>
CI-44: it seems making better sense to expire tasks before sessions

Signed-off-by: Zheng Li <zheng.li@eu.citrix.com>
CI-44: add max_sessions_per_user_name config variable

Signed-off-by: Zheng Li <zheng.li@eu.citrix.com>
CI-44: expire sessions based on username/originator specific quota

Based on some previous patches by Thomas Sanders.

The current algorithm is implemented as follows:

  * For sessions with their own auth_user_name (other than "root"/""), they will use their independent session quota (Xapi_globs.max_sessions_per_user_name) grouped by their auth_user_name. This can happen in following cases:
    - The session creator uses an external authentication method where the username is not the default
    - The session creator is logged in as local super user (hence no username/password authentication required) but still chooses to pass an independent username argument in purpose (e.g. vmpr, sm)

  * Sessions without independent auth_user_name (e.g. without RBAC, most external API users will have to share the same super user login) can still distiguish themselves using the new "originator" param during session creation. For sessions created with the optional "originator" argument, they will use their independent session quota (Xapi_globs.max_sessions_per_originator) grouped by their originator key.

  * All the rest sessions are in the common session pool, as before, sharing the default session quota (Xapi_globs.max_sessions). Among them, internal sessions will have higher prioirty than the external ones.

Signed-off-by: Zheng Li <zheng.li@eu.citrix.com>
CA-102855: Gateway PIF was not set properly when creating bond while management disabled

This is fixed by ensuring that, during a bond create or destroy, when the IP config is
move from bond slave to master or vice versa, only one of the PIFs has IP config.

Signed-off-by: Rob Hoes <rob.hoes@citrix.com>
CP-4460: Auto generate code for API messages marked as removed.

... there are also small tweaks to the formatter to make the generated code look nicer.

Signed-off-by: Zheng Li <zheng.li@eu.citrix.com>
CP-4460: mark WLB related API fields/messages as deprecated/removed.

Signed-off-by: Zheng Li <zheng.li@eu.citrix.com>
CP-4460: hide WLB's CLI cmdlet

According to the PR-1632 requirement, all WLB's API and CLI should remain and return a feature no longer available error message.

As such, we won't remove the CLI cmdlets implementation. Instead, we hide them from bash completion, to reduce their chances of being used. If a WLB related cmdlet is still called, the feature unavailable error will be eventually generated by API layer and pop through.

Signed-off-by: Zheng Li <zheng.li@eu.citrix.com>
CP-4460: remove WLB report/diagnose retrieve web services

and the corresponding cmdlets don't use API, so they need to return the feature removal error themselves.

Signed-off-by: Zheng Li <zheng.li@eu.citrix.com>
CP-4460: Remove the internal implementation of WLB interfacing components

Signed-off-by: Zheng Li <zheng.li@eu.citrix.com>
CP-4460: getter/setter/ctor/dtor etc. should inherit the lifecyle values from their corresponding fields/objects

so that when a field/object type is marked as removed, these implicit methods will reject clients with clear error message.

Note that, object/field/method types maked as removed will remain exist/effective in the DB layer, as they are also necceary in the case of upgrade (from previous releases).

Signed-off-by: Zheng Li <zheng.li@eu.citrix.com>
CP-4460: clear WLB metadata from DB during upgrade

Signed-off-by: Zheng Li <zheng.li@eu.citrix.com>
CP-4460: Cleanup some debug code

Signed-off-by: Zheng Li <zheng.li@eu.citrix.com>
CA-97232: Optimize host-evacuate
When host-evacuate is in progress:
Case-1: Ignore VMs that are being shutdown
Case-2: Prevent VMs from starting on that host

Signed-off-by: Siddharth Vinothkumar <siddharth.vinothkumar@citrix.com>
Adding error message to datamodel

Signed-off-by: Siddharth Vinothkumar <siddharth.vinothkumar@citrix.com>