Bug 14773 - VM's are unable to start after upgrade from 2.2.14 to 3.0.3

Reviewed-By: Alena P.

Changes:
- Added upgrade path to 304. This would check the missing portions of the previous upgrades and try to correct.
- This will check if the setup has multiple physical networks with Guest traffic type. If yes then:
- Check if the previous upgrade has left behind any guest networks that were untagged in 2.2.14. For such networks, add a new physical network
- Check if the multiple physical network has tags. If no add tag and clone the network offerings for the networks on this physical network and add this tag to them
- Also clone the network offering service map.
- Thus this creates copies of offerings for each physical network.
CS-15381: Upgrade from 3.0.3 to 3.0.4 is failing
CS-15382: Hosts going to Alert state if there were destroyed networks with non-existent tags prior to upgrade

Reviewed-By: Alena P.

Changes:
- If 2.2.14, create the SG provider by looking at is_security_group_enabled flag
- if 3.0.3, create the SG provider by looking at the ntwk_service_map.
CS-15396: [2.2.14 to 3.0.4 upgrade] data_center table doesn't contain "uuid" after upgrade

Reviewed-By: Sheng Yang

Changes:
- Add uuid to data_center while upgrading from 2.2.14 to 3.0x.
- For previous setups that have already been updated, correctly add the uuid in 304 upgrade
CS-15450: vmware:upgrade fails from 2.2.14GA to 3.04

CS-15414 [upgrde from 2.2.14 to 3.0.4] Need to decrypt xen.guest.network.device value before setting the traffic label after upgrade.

Reviewed-by: Alena

- This uncovered a generic case where only 1 network tag is used and other few untagged networks.
- Upgrdae 303 to 304, should create a physical network for the untagged networks.
- Earlier we were doing this only if the 303 db has multiple physical networks. But in this case the 303 db will  have just 1 physcial network (created due to the single tag used on 2.2.14).
- So  we need to create the extra physical network for the untagged networks irrespective of the number of physical networks present in 303 db.

- This commit also take care of the decryption of the xen.guest.network.device value
CS-15407 [2.2.14 to 3.0.4 upgrade] After upgrade VLAN allocation doesn't happen properly for multiple physical networks

Reviewed-by: Alena

Changes:
- If a 2.2.14 setup uses guest vnet and has multiple network tags, we cannot upgrade this to 3.0.x since on upgrade we dont know how to assign the vnets to physical networks
- So we error out and provide instructions
- If an already upgraded 3.0.3 setup has this some guest networks using vnet but the assignment of vnet to physical network is wrong, upgrade to 3.04 will detect it and error out with further steps
CS-15406 [2.2.14 to 3.0.4 upgrade] Hosts going to Alert state after upgrade as it cann't find any name-label set to "cloud-private"

Reviewed-By: Alena

Changes:
- Looks like we cannot default to 'cloud-private' label.
- If it is not set, CS figures out the default management interface and usus its name.
- We will use the global config variable as the label. if it is null, the label on the physical network will be null.
CS-15404 [2.2.14 to 3.0.4 upgrade] After upgrade cloud.physical_network.id starts from 200 which is not the case with fresh installation

Reviewed-By: Alena

Changes:
- We need to set the id while creating physical network entry.
CS 15516: com.cloud.utils.exception.CloudRuntimeException: Exception while adding PhysicalNetworks : Caused by: java.sql.SQLException: No value specified for parameter 1

Reviewed-by: Prachi

Changes:
Missed on setting the zoneId parameter.
CS-15516 com.cloud.utils.exception.CloudRuntimeException: Exception while adding PhysicalNetworks : Caused by: java.sql.SQLException: No value specified for parameter 1

Reviewed-By: Prachi

- Same bug in 303 to 304.
CS-15407 [2.2.14 to 3.0.4 upgrade] After upgrade VLAN allocation doesn't happen properly for multiple physical networks

Reviewed-By: Alena

- Update instructions for setups with multiple physical networks and guest vnets
- if there are such setups upgraded to 3.0.3 and face problems starting VMs, then they need to roll back to 2.2.14 and carry out the instructions and then upgrade to 3.0.4
CS-15476: Multiple physical networks are created with same label (to same NIC) after upgrade

Reviewed-By: Alena

Changes:
- Error out upgrade when we find there will be multiple physical networks with same traffic label
CS-15407 [2.2.14 to 3.0.4 upgrade] After upgrade VLAN allocation doesn't happen properly for multiple physical networks

Reviewed-By: Alena

Changes:
- Upgrade insturctions updated to secify 'isolated' networks
CS-15578 (spinned off from 15495) Upgrade from 2.2.14 -> 3.0.3-> 3.04 failed with exception"mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException

reviewed-by: kishan

- Add physical network to the removed data_center as well and mark it as removed, to avoid foreign constraint failures
- Since rest all stuff related to multiple physcial networks is done based on networks having non-null removed field, nothing will apply to this zone.
CS-15606 Dogfood Setup: Virtual Router (DHCP Server) fails to create in Pods

Reviewed-By: Alena

Changes:
- Correct the virtual router entries from table' virtual_router_providers' that wrongly refer to SecurityGroupProvider instead of VirtualRouter provider in physical_network_service_providers table
- For such entries, we update them to point to the VirtualRouter provider in physical_network_service_providers table