Ejemplo n.º 1
0
        /// <summary>
        /// This function is responsible to synchronize the network configuration between ODL and SCVMM.
        /// </summary>
        /// <param name="vtns">List of VTNs on ODL.</param>
        /// <param name="vMNetworkConfig">VMNetwork.config file instance.</param>
        /// <param name="logicalNetworkId">Logical network ID.</param>
        /// <param name="logicalNetworkDefinitionId">Logical network definition ID.</param>
        /// <param name="txnMng">Transaction manager instance.</param>
        /// <param name="VtnHostName">Host name of the VTNCoordinator.</param>
        private void CompareVTNObjects(List <Vtn> vtns, VMNetworkConfig vMNetworkConfig, Guid logicalNetworkId, Guid?logicalNetworkDefinitionId, TransactionManager txnMng, string VtnHostName)
        {
            var vmnetworks = vMNetworkConfig.VMNetwork;

            foreach (Vtn vtn in vtns)
            {
                var vmnetworkInfo = vmnetworks.VMNetworkMappingInformation.VMNetworkInfo.FirstOrDefault(vmnet => vmnet.VTNName.Equals(vtn.Name));
                if (vmnetworkInfo != null)
                {
                    VMNetwork vmnetwork = vmnetworks.VmNetworks.FirstOrDefault(vmn => vmn.Id == vmnetworkInfo.VMNetworkID);
                    this.SyncVTN(logicalNetworkDefinitionId, vmnetwork, vtn, vmnetworkInfo, txnMng, VtnHostName);
                }
                else
                {
                    VMNetwork vMNetwork = VSEMVMNetworkManagement.CreateVtnVmNetwork(vtn.Name);
                    vMNetwork.LogicalNetwork = logicalNetworkId;

                    vMNetworkConfig.VMNetwork.VmNetworks.Add(vMNetwork);
                    if (vMNetworkConfig.VMNetwork.VMNetworkMappingInformation.VMNetworkInfo == null)
                    {
                        vMNetworkConfig.VMNetwork.VMNetworkMappingInformation.VMNetworkInfo =
                            new List <VMNetworkInfo>();
                    }
                    var vmnetInfo = new VMNetworkInfo {
                        VMNetworkID           = vMNetwork.Id,
                        VMNetworkName         = string.Empty,
                        VTNName               = vtn.Name,
                        VMSubnetInfo          = new List <VMSubnetInfo>(),
                        CreatedFrom           = "ODL",
                        Description           = "VM Network corresponding to this VTN is not created on SCVMM",
                        VMNetworkOriginalName = vMNetwork.Name
                    };
                    vMNetworkConfig.VMNetwork.VMNetworkMappingInformation.VMNetworkInfo.Add(
                        vmnetInfo);
                    foreach (Vbridge vbr in vtn.Vbridges)
                    {
                        this.AddVMSubnet(vmnetInfo, vbr, vMNetwork, logicalNetworkDefinitionId);
                    }
                    ////--------VTN is added on ODL
                }
            }
        }