/// <summary>Convert the Virtual machine to virtual machine crawler response entity.</summary>
        /// <param name="virtualMachine">The virtual machine.</param>
        /// <param name="partitionKey">The partition key for the virtaul machine entity.</param>
        /// <param name="vmGroup">Vm group name.</param>
        /// <returns></returns>
        public static VirtualMachineCrawlerResponse ConvertToVirtualMachineEntityFromLB(IVirtualMachine virtualMachine, string partitionKey, string vmGroup = "")
        {
            var virtualMachineCrawlerResponseEntity = new VirtualMachineCrawlerResponse(partitionKey,
                                                                                        virtualMachine.Id.Replace(Delimeters.ForwardSlash, Delimeters.Exclamatory))
            {
                RegionName        = virtualMachine.RegionName,
                ResourceGroupName = virtualMachine.ResourceGroupName,
                ResourceName      = virtualMachine.Name,
                AvailabilitySetId = virtualMachine.AvailabilitySetId,
                ResourceType      = virtualMachine.Type,
                AvailabilityZone  = virtualMachine.AvailabilityZones.Count > 0 ?
                                    int.Parse(virtualMachine.AvailabilityZones.FirstOrDefault().Value) : 0,
                VirtualMachineGroup = string.IsNullOrWhiteSpace(vmGroup) ? VirtualMachineGroup.VirtualMachines.ToString() : vmGroup,
                State = virtualMachine.PowerState?.Value
            };

            if (virtualMachine.InstanceView?.PlatformUpdateDomain > 0)
            {
                virtualMachineCrawlerResponseEntity.UpdateDomain = virtualMachine.InstanceView.PlatformUpdateDomain;
            }
            if (virtualMachine.InstanceView?.PlatformFaultDomain > 0)
            {
                virtualMachineCrawlerResponseEntity.FaultDomain = virtualMachine.InstanceView.PlatformFaultDomain;
            }

            return(virtualMachineCrawlerResponseEntity);
        }
        /// <summary>Convert the Virtual machine to virtual machine crawler response entity.</summary>
        /// <param name="scaleSetVirtualMachines">The virtual machine.</param>
        /// <param name="resourceGroup">The resource group name.</param>
        /// <param name="virtualMachineScaleSetId">Scale set name of the vm.</param>
        /// <param name="partitionKey">The partition key for the virtaul machine entity.</param>
        /// <param name="availabilityZone">The availability zone value for the virtual machine scale set vm instance</param>
        /// <param name="vmGroup">Virtual machine group name.</param>
        /// <returns></returns>
        public static VirtualMachineCrawlerResponse ConvertToVirtualMachineEntity(IVirtualMachineScaleSetVM scaleSetVirtualMachines, string resourceGroup,
                                                                                  string virtualMachineScaleSetId, string partitionKey, int?availabilityZone,
                                                                                  string vmGroup = "")
        {
            var virtualMachineCrawlerResponseEntity = new VirtualMachineCrawlerResponse(partitionKey, scaleSetVirtualMachines.Id.Replace(Delimeters.ForwardSlash, Delimeters.Exclamatory))
            {
                RegionName               = scaleSetVirtualMachines.RegionName,
                ResourceGroupName        = resourceGroup,
                ResourceName             = scaleSetVirtualMachines.Name,
                ResourceType             = scaleSetVirtualMachines.Type,
                VirtualMachineScaleSetId = virtualMachineScaleSetId,
                AvailabilityZone         = availabilityZone != 0 ? availabilityZone : 0,
                VirtualMachineGroup      = string.IsNullOrWhiteSpace(vmGroup) ? VirtualMachineGroup.VirtualMachines.ToString() : vmGroup,
                State = scaleSetVirtualMachines.PowerState?.Value
            };

            return(virtualMachineCrawlerResponseEntity);
        }