/// <summary>
        /// Verify whether the specified VMNetwork is HNV resource or not.
        /// </summary>
        /// <param name="vmnetwork">VMNetwork instance.</param>
        /// <returns>True if HNV resource, else false.</returns>
        public bool IsHNVVMNetwork(VMNetwork vmnetwork)
        {
            if (vmnetwork == null)
            {
                return(false);
            }

            // Create txn and read configuration.
            var txnMng = new TransactionManager();

            txnMng.StartTransaction();
            var logicalNetworkConfig = new LogicalNetworkConfig(this.VtnHostName);

            txnMng.SetConfigManager(logicalNetworkConfig, TransactionManager.OpenMode.ReadMode);

            bool ret;

            // Get LogicalNetowork that Guid equals vmnetwork.LogicalNetwork.
            LogicalNetwork logicalnetwork = logicalNetworkConfig.GetLogicalNetworkById(vmnetwork.LogicalNetwork);

            if (logicalnetwork == null)
            {
                ret = false;
                goto txnEnd;
            }

            var hnvLogicalNetworkManagement = new HNVLogicalNetworkManagement(this.VtnHostName);

            ret = hnvLogicalNetworkManagement.IsHNVLogicalNetwork(logicalnetwork);

            if (ret == false)
            {
                ODLVSEMETW.EventWriteNotHNVVMNetwork(
                    MethodBase.GetCurrentMethod().Name,
                    string.Format("VMNetwork name is {0}", vmnetwork.Name));
            }
txnEnd:
            txnMng.EndTransaction(TransactionManager.Operation.None);
            return(ret);
        }
        /// <summary>
        /// Process the updated logical network.
        /// </summary>
        /// <remarks>
        /// Ignore logical network that does not belong to us.
        /// </remarks>
        protected override void DoODLVSEMCmdlet()
        {
            var hnvLogicalNetworkManagement = new HNVLogicalNetworkManagement(this.conn.GetVtnHostName());

            // Make sure we are managing this logical network.
            if (hnvLogicalNetworkManagement.IsHNVLogicalNetwork(this.LogicalNetwork) == true) {
                var txnMng = new TransactionManager();
                txnMng.StartTransaction();
                var ope = TransactionManager.Operation.None;
                bool writeResult = false;

                try {
                    switch (this.OperationType) {
                        case NetworkEntityPublishType.Create:
                            {
                                // Create is not supported through VMM.
                                writeResult = true;
                            }
                            break;

                        case NetworkEntityPublishType.Update:
                            {
                                hnvLogicalNetworkManagement.UpdateLogicalNetwork(txnMng, this.LogicalNetwork);
                                writeResult = hnvLogicalNetworkManagement.IsLogicalNetworkValid(this.LogicalNetwork);
                            }
                            break;

                        case NetworkEntityPublishType.Delete:
                            {
                                // Delete is not supported through VMM.
                                writeResult = true;
                            }
                            break;
                    }

                    ope = TransactionManager.Operation.Commit;
                } catch (Exception ex) {
                    ope = TransactionManager.Operation.Rollback;
                    throw VSEMODLExceptionUtil.ConvertExceptionToVSEMException(ex);
                } finally {
                    txnMng.EndTransaction(ope);
                }

                string output = "\"Logical Network\":" + new JavaScriptSerializer().Serialize(this.LogicalNetwork);
                ODLVSEMETW.EventWriteEndCmdlet(this.CmdletName, output);

                // Indicate errors.
                if (!writeResult) {
                    this.WriteObject(this.LogicalNetwork);
                }
            }
        }
        /// <summary>
        /// Verify whether the specified VMNetwork is HNV resource or not.
        /// </summary>
        /// <param name="vmnetwork">VMNetwork instance.</param>
        /// <returns>True if HNV resource, else false.</returns>
        public bool IsHNVVMNetwork(VMNetwork vmnetwork)
        {
            if (vmnetwork == null) {
                return false;
            }

            // Create txn and read configuration.
            var txnMng = new TransactionManager();
            txnMng.StartTransaction();
            var logicalNetworkConfig = new LogicalNetworkConfig(this.VtnHostName);
            txnMng.SetConfigManager(logicalNetworkConfig, TransactionManager.OpenMode.ReadMode);

            bool ret;

            // Get LogicalNetowork that Guid equals vmnetwork.LogicalNetwork.
            LogicalNetwork logicalnetwork = logicalNetworkConfig.GetLogicalNetworkById(vmnetwork.LogicalNetwork);
            if (logicalnetwork == null) {
                ret = false;
                goto txnEnd;
            }

            var hnvLogicalNetworkManagement = new HNVLogicalNetworkManagement(this.VtnHostName);
            ret = hnvLogicalNetworkManagement.IsHNVLogicalNetwork(logicalnetwork);

            if (ret == false) {
                ODLVSEMETW.EventWriteNotHNVVMNetwork(
                    MethodBase.GetCurrentMethod().Name,
                    string.Format("VMNetwork name is {0}", vmnetwork.Name));
            }
            txnEnd:
            txnMng.EndTransaction(TransactionManager.Operation.None);
            return ret;
        }