New-LabVM

Fixes #29 by adding New-LabVM cmdlet

@csandfeld - here's the 'quick VM' functionality. Would you mind have a look through? I've called the new cmdlet New-LabVM, but I'm not sure if that confuses things (I did originally name it New-LabQuickVM)?

Looks promissing, but at first try I run into a couple of errors:
D:\SourceControl\Lab [Issue29]> Get-LabVMDefault

StartupMemory          :<PHONE_NUMBER>
MinimumMemory          : 536870912
MaximumMemory          :<PHONE_NUMBER>776
ProcessorCount         : 2
SwitchName             : External
Media                  : 2012R2_x64_Standard_EN_Eval
TimeZone               : GMT Standard Time
UILanguage             : en-US
SystemLocale           : da-DK
InputLocale            : 0406:00000406
UserLocale             : da-DK
Password               :
RegisteredOwner        : DGS
RegisteredOrganization : DGS
ClientCertificatePath  : %ALLUSERSPROFILE%\VirtualEngineLab\Certificates\LabClient.pfx
RootCertificatePath    : %ALLUSERSPROFILE%\VirtualEngineLab\Certificates\LabRoot.cer
BootDelay              : 0

D:\SourceControl\Lab [Issue29]> New-LabVM -Name WIN10CLIENT -Id WIN10_x64_Enterprise_EN_Eval
New-VM : Sequence contains more than one element
At D:\SourceControl\Lab\DSCResources\xHyper-V\DSCResources\MSFT_xVMHyperV\MSFT_xVMHyperV.psm1:291 char:21
+             $null = New-VM @parameters
+                     ~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [New-VM], VirtualizationException
    + FullyQualifiedErrorId : InvalidOperation,Microsoft.HyperV.PowerShell.Commands.NewVM

Set-VM : Hyper-V was unable to find a virtual machine with name "WIN10CLIENT".
At D:\SourceControl\Lab\DSCResources\xHyper-V\DSCResources\MSFT_xVMHyperV\MSFT_xVMHyperV.psm1:312 char:21
+             $null = Set-VM @parameters
+                     ~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (:) [Set-VM], VirtualizationException
    + FullyQualifiedErrorId : ObjectNotFound,Microsoft.HyperV.PowerShell.Commands.SetVM

WARNING: [11:15:54] Cannot locate node 'D:\TestLab\Configurations\WIN10CLIENT.mof' file. No DSC configuration will be
applied. Ensure the DSC configuration has been run successfully.
Checkpoint-VM : Hyper-V was unable to find a virtual machine with name "WIN10CLIENT".
At D:\SourceControl\Lab\Src\LabVM.ps1:269 char:13
+             Checkpoint-VM -Name $Name -SnapshotName $snapshotName;
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (:) [Checkpoint-VM], VirtualizationException
    + FullyQualifiedErrorId : ObjectNotFound,Microsoft.HyperV.PowerShell.Commands.CheckpointVM

Get-VM : Hyper-V was unable to find a virtual machine with name "WIN10CLIENT".
At D:\SourceControl\Lab\Src\LabVM.ps1:281 char:36
+         Write-Output -InputObject (Get-VM -Name $Name);
+                                    ~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (WIN10CLIENT:String) [Get-VM], VirtualizationException
    + FullyQualifiedErrorId : InvalidParameter,Microsoft.HyperV.PowerShell.Commands.GetVM

D:\SourceControl\Lab [Issue29]>

On a side note - I'm wondering if it would maybe make more sense to rename the 'Id' parameter to 'MediaId' or something along those lines - just to give an indication of what it is used for.

With regards to the function name ... hmm ... don't know ... I feel that New-LabVM would be the right name, but can see how that might be confusing. New-LabQuickVM might be a more explanatory naming, but I find it kind of awkward.

Same as before but with verbose output:
D:\SourceControl\Lab [Issue29]> New-LabVM -Name WIN10CLIENT -Id WIN10_x64_Enterprise_EN_Eval -Verbose
VERBOSE: [12:08:32] Creating quick VM 'WIN10CLIENT' using media ''.
VERBOSE: [12:08:32] Setting Virtual Switch configuration 'External'.
VERBOSE: [12:08:32] Checking DSC Resource 'xHyper-V\MSFT_xVMSwitch'.
VERBOSE: [12:08:32] Invoking command 'Test-VMSwitchTargetResource'.
VERBOSE: [12:08:33] Skipping command 'Set-VMSwitchTargetResource'.
VERBOSE: [12:08:33] (Re)setting VHDX configuration 'WIN10_x64_Enterprise_EN_Eval'.
VERBOSE: [12:08:33] Checking DSC Resource 'xHyper-V\MSFT_xVHD'.
VERBOSE: [12:08:33] Invoking command 'Test-VHDTargetResource'.
VERBOSE: [12:08:33] Testing 'Test-VHDTargetResource' failed.
VERBOSE: [12:08:33] Invoking command 'Set-VHDTargetResource'.
VERBOSE: [12:08:34] Checking DSC Resource 'xHyper-V\MSFT_xVHD'.
VERBOSE: [12:08:34] Invoking command 'Test-VHDTargetResource'.
VERBOSE: [12:08:34] Testing 'Test-VHDTargetResource' failed.
VERBOSE: [12:08:34] Invoking command 'Set-VHDTargetResource'.
VERBOSE: [12:08:35] Setting VM configuration 'WIN10CLIENT'.
VERBOSE: [12:08:35] Checking DSC Resource 'xHyper-V\MSFT_xVMHyperV'.
VERBOSE: [12:08:35] Invoking command 'Test-VMTargetResource'.
VERBOSE: [12:08:35] Testing 'Test-VMTargetResource' failed.
VERBOSE: [12:08:35] Invoking command 'Set-VMTargetResource'.
New-VM : Sequence contains more than one element
At D:\SourceControl\Lab\DSCResources\xHyper-V\DSCResources\MSFT_xVMHyperV\MSFT_xVMHyperV.psm1:291 char:21
+             $null = New-VM @parameters
+                     ~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [New-VM], VirtualizationException
    + FullyQualifiedErrorId : InvalidOperation,Microsoft.HyperV.PowerShell.Commands.NewVM

Set-VM : Hyper-V was unable to find a virtual machine with name "WIN10CLIENT".
At D:\SourceControl\Lab\DSCResources\xHyper-V\DSCResources\MSFT_xVMHyperV\MSFT_xVMHyperV.psm1:312 char:21
+             $null = Set-VM @parameters
+                     ~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (:) [Set-VM], VirtualizationException
    + FullyQualifiedErrorId : ObjectNotFound,Microsoft.HyperV.PowerShell.Commands.SetVM

VERBOSE: [12:08:36] Adding VM customizations.
VERBOSE: [12:08:36] Mounting disk image 'D:\TestLab\VMVirtualHardDisks\WIN10CLIENT.vhdx'.
VERBOSE: [12:08:37] Adding DSC resource modules to 'J:\Program Files\WindowsPowershell\Modules'.
VERBOSE: [12:08:37] Adding DSC resource 'xActiveDirectory' (v<IP_ADDRESS>).
VERBOSE: [12:08:37] Adding DSC resource 'xComputerManagement' (v1.3.0).
VERBOSE: [12:08:37] Adding DSC resource 'xDhcpServer' (v1.2).
VERBOSE: [12:08:37] Adding DSC resource 'xDnsServer' (v1.1).
VERBOSE: [12:08:37] Adding DSC resource 'xNetworking' (v<IP_ADDRESS>).
VERBOSE: [12:08:37] Adding DSC resource 'xSmbShare' (v<IP_ADDRESS>).
VERBOSE: [12:08:37] Setting local administrator password to 'Passw0rd'.
VERBOSE: [12:08:37] Adding Unattend file 'J:\Windows\System32\Sysprep\Unattend.xml'.
VERBOSE: [12:08:37] Adding BootStrap.ps1 file to 'J:\BootStrap'.
VERBOSE: [12:08:37] Creating directory 'J:\BootStrap'.
VERBOSE: [12:08:37] Adding SetupComplete.cmd to 'J:\Windows\Setup\Scripts'.
VERBOSE: [12:08:37] Creating directory 'J:\Windows\Setup\Scripts'.
VERBOSE: [12:08:37] Adding DSC file 'J:\BootStrap\localhost.mof'.
WARNING: [12:08:37] Cannot locate node 'D:\TestLab\Configurations\WIN10CLIENT.mof' file. No DSC configuration will be
applied. Ensure the DSC configuration has been run successfully.
VERBOSE: [12:08:37] Adding Client certificate 'J:\BootStrap\LabClient.pfx'.
VERBOSE: [12:08:37] Adding Root certificate 'J:\BootStrap\LabRoot.cer'.
VERBOSE: [12:08:37] Dismounting disk image 'D:\TestLab\VMVirtualHardDisks\WIN10CLIENT.vhdx'.
VERBOSE: [12:08:37] Creating baseline snapshot 'VirtualEngineLab Baseline Snapshot'.
Checkpoint-VM : Hyper-V was unable to find a virtual machine with name "WIN10CLIENT".
At D:\SourceControl\Lab\Src\LabVM.ps1:269 char:13
+             Checkpoint-VM -Name $Name -SnapshotName $snapshotName;
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (:) [Checkpoint-VM], VirtualizationException
    + FullyQualifiedErrorId : ObjectNotFound,Microsoft.HyperV.PowerShell.Commands.CheckpointVM

Get-VM : Hyper-V was unable to find a virtual machine with name "WIN10CLIENT".
At D:\SourceControl\Lab\Src\LabVM.ps1:281 char:36
+         Write-Output -InputObject (Get-VM -Name $Name);
+                                    ~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (WIN10CLIENT:String) [Get-VM], VirtualizationException
    + FullyQualifiedErrorId : InvalidParameter,Microsoft.HyperV.PowerShell.Commands.GetVM

D:\SourceControl\Lab [Issue29]>

It looks like the media (Id) dynamic parameter is not being passed through (looking at the verbose output)?

@csandfeld I can't recreate this. However, it looks like something is not being passed into the xVMHyperV resource. I've added some additional/temporary debugging information to show what is being passed to the nested Hyper-V DSC resource.
Would you mind rerunning with the latest commit and let me know what's displayed on screen? Note: the -Id parameter has been renamed to -MediaId.
Here's an example of the output on my machine:
[18] C:\..\Dropbox\PowerShell\> new-labvm -Name TestyTest -MediaId 2012R2_x64_Standard_EN_Eval -Verbose
VERBOSE: [22:35:08] Creating quick VM 'TestyTest' using media '2012R2_x64_Standard_EN_Eval'.
VERBOSE: [22:35:08] Setting Virtual Switch configuration 'Internal vSwitch'.
VERBOSE: [22:35:08] Checking DSC Resource 'xHyper-V\MSFT_xVMSwitch'.
VERBOSE: [22:35:08] Invoking command 'Test-VMSwitchTargetResource'.
VERBOSE: [22:35:09] Skipping command 'Set-VMSwitchTargetResource'.
VERBOSE: [22:35:09] (Re)setting VHDX configuration '2012R2_x64_Standard_EN_Eval'.
VERBOSE: [22:35:10] Removing VM 'TestyTest' snapshot 'VirtualEngineLab Baseline Snapshot'.
VERBOSE: [22:35:10] Checking DSC Resource 'xHyper-V\MSFT_xVHD'.
VERBOSE: [22:35:10] Invoking command 'Test-VHDTargetResource'.
VERBOSE: [22:35:10] Testing 'Test-VHDTargetResource' failed.
VERBOSE: [22:35:10] Invoking command 'Set-VHDTargetResource'.
VERBOSE: [22:35:11] Checking DSC Resource 'xHyper-V\MSFT_xVHD'.
VERBOSE: [22:35:11] Invoking command 'Test-VHDTargetResource'.
VERBOSE: [22:35:11] Testing 'Test-VHDTargetResource' failed.
VERBOSE: [22:35:11] Invoking command 'Set-VHDTargetResource'.
VERBOSE: [22:35:13] Setting VM configuration 'TestyTest'.
VERBOSE: [22:35:13] Checking DSC Resource 'xHyper-V\MSFT_xVMHyperV'.
CS! 'ProcessorCount' : '2'
CS! 'SwitchName' : 'System.String[]'
CS!  'SwitchName[]' : 'Internal vSwitch'
CS! 'MaximumMemory' : '1099511627776'
CS! 'SecureBoot' : 'True'
CS! 'MinimumMemory' : '536870912'
CS! 'Name' : 'TestyTest'
CS! 'StartupMemory' : '1073741824'
CS! 'VhdPath' : 'D:\TestLab\VM Disks\TestyTest.vhdx'
CS! 'Generation' : '2'
CS! 'RestartIfNeeded' : 'True'
VERBOSE: [22:35:13] Invoking command 'Test-VMTargetResource'.
VERBOSE: [22:35:14] Skipping command 'Set-VMTargetResource'.
VERBOSE: [22:35:14] Adding VM customizations.
VERBOSE: [22:35:15] Mounting disk image 'D:\TestLab\VM Disks\TestyTest.vhdx'.
VERBOSE: [22:35:16] Adding DSC resource modules to 'F:\Program Files\WindowsPowershell\Modules'.
VERBOSE: [22:35:16] Adding DSC resource 'RESONEAutomation' (v1.0.0).
VERBOSE: [22:35:16] Adding DSC resource 'RESONEServiceStore' (v1.0).
VERBOSE: [22:35:16] Adding DSC resource 'VirtualEngineBaseLab' (v1.2.0).
VERBOSE: [22:35:16] Adding DSC resource 'VirtualEngineTrainingLab' (v1.0.0).
VERBOSE: [22:35:16] Adding DSC resource 'xActiveDirectory' (v<IP_ADDRESS>).
VERBOSE: [22:35:17] Adding DSC resource 'xComputerManagement' (v1.3.0).
VERBOSE: [22:35:17] Adding DSC resource 'xCredSSP' (v1.0.1).
VERBOSE: [22:35:17] Adding DSC resource 'xDhcpServer' (v1.2).
VERBOSE: [22:35:17] Adding DSC resource 'xDnsServer' (v1.1).
VERBOSE: [22:35:17] Adding DSC resource 'xExchange' (v<IP_ADDRESS>).
VERBOSE: [22:35:18] Adding DSC resource 'xNetworking' (v<IP_ADDRESS>).
VERBOSE: [22:35:19] Adding DSC resource 'xPendingReboot' (v<IP_ADDRESS>).
VERBOSE: [22:35:19] Adding DSC resource 'xPSDesiredStateConfiguration' (v<IP_ADDRESS>).
VERBOSE: [22:35:19] Adding DSC resource 'xRemoteDesktopAdmin' (v<IP_ADDRESS>).
VERBOSE: [22:35:19] Adding DSC resource 'xSmbShare' (v<IP_ADDRESS>).
VERBOSE: [22:35:19] Setting local administrator password to 'P@ssw0rd'.
VERBOSE: [22:35:19] Adding Unattend file 'F:\Windows\System32\Sysprep\Unattend.xml'.
VERBOSE: [22:35:19] Adding BootStrap.ps1 file to 'F:\BootStrap'.
VERBOSE: [22:35:19] Creating directory 'F:\BootStrap'.
VERBOSE: [22:35:19] Adding SetupComplete.cmd to 'F:\Windows\Setup\Scripts'.
VERBOSE: [22:35:19] Creating directory 'F:\Windows\Setup\Scripts'.
VERBOSE: [22:35:19] Adding DSC file 'F:\BootStrap\localhost.mof'.
WARNING: [22:35:19] Cannot locate node 'D:\TestLab\Configurations\TestyTest.mof' file. No DSC configuration will be
applied. Ensure the DSC configuration has been run successfully.
VERBOSE: [22:35:19] Adding Client certificate 'F:\BootStrap\LabClient.pfx'.
VERBOSE: [22:35:19] Adding Root certificate 'F:\BootStrap\LabRoot.cer'.
VERBOSE: [22:35:19] Dismounting disk image 'D:\TestLab\VM Disks\TestyTest.vhdx'.
VERBOSE: [22:35:20] Creating baseline snapshot 'VirtualEngineLab Baseline Snapshot'.

Name      State CPUUsage(%) MemoryAssigned(M) Uptime   Status             Version
----      ----- ----------- ----------------- ------   ------             -------
TestyTest Off   0           0                 00:00:00 Operating normally 7.0

Still fails for me ... I'll see if I can find time to dig a little deeper into this issue
Output of latest attempt:
D:\SourceControl\Lab [Issue29]> New-LabVM -Name WIN10CLIENT -MediaId WIN10_x64_Enterprise_EN_Eval -Verbose
VERBOSE: [10:07:26] Creating quick VM 'WIN10CLIENT' using media 'WIN10_x64_Enterprise_EN_Eval'.
VERBOSE: [10:07:28] Setting Virtual Switch configuration 'External'.
VERBOSE: [10:07:28] Checking DSC Resource 'xHyper-V\MSFT_xVMSwitch'.
VERBOSE: [10:07:28] Importing bundled DSC Resource 'xHyper-V\MSFT_xVMSwitch'.
VERBOSE: [10:07:28] Invoking command 'Test-VMSwitchTargetResource'.
VERBOSE: [10:07:29] Skipping command 'Set-VMSwitchTargetResource'.
VERBOSE: [10:07:29] (Re)setting VHDX configuration 'WIN10_x64_Enterprise_EN_Eval'.
VERBOSE: [10:07:29] Checking DSC Resource 'xHyper-V\MSFT_xVHD'.
VERBOSE: [10:07:30] Importing bundled DSC Resource 'xHyper-V\MSFT_xVHD'.
VERBOSE: [10:07:30] Invoking command 'Test-VHDTargetResource'.
VERBOSE: [10:07:30] Testing 'Test-VHDTargetResource' failed.
VERBOSE: [10:07:30] Invoking command 'Set-VHDTargetResource'.
VERBOSE: [10:07:31] Setting VM configuration 'WIN10CLIENT'.
VERBOSE: [10:07:31] Checking DSC Resource 'xHyper-V\MSFT_xVMHyperV'.
VERBOSE: [10:07:31] Importing bundled DSC Resource 'xHyper-V\MSFT_xVMHyperV'.
CS! 'ProcessorCount' : '2'
CS! 'SwitchName' : 'System.String[]'
CS!  'SwitchName[]' : 'External'
CS! 'MaximumMemory' : '1099511627776'
CS! 'SecureBoot' : 'True'
CS! 'MinimumMemory' : '536870912'
CS! 'Name' : 'WIN10CLIENT'
CS! 'StartupMemory' : '2147483648'
CS! 'VhdPath' : 'D:\TestLab\VMVirtualHardDisks\WIN10CLIENT.vhdx'
CS! 'Generation' : '2'
CS! 'RestartIfNeeded' : 'True'
VERBOSE: [10:07:31] Invoking command 'Test-VMTargetResource'.
VERBOSE: [10:07:32] Testing 'Test-VMTargetResource' failed.
VERBOSE: [10:07:32] Invoking command 'Set-VMTargetResource'.
New-VM : Sequence contains more than one element
At D:\SourceControl\Lab\DSCResources\xHyper-V\DSCResources\MSFT_xVMHyperV\MSFT_xVMHyperV.psm1:291 char:2
1
+             $null = New-VM @parameters
+                     ~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [New-VM], VirtualizationException
    + FullyQualifiedErrorId : InvalidOperation,Microsoft.HyperV.PowerShell.Commands.NewVM

Set-VM : Hyper-V was unable to find a virtual machine with name "WIN10CLIENT".
At D:\SourceControl\Lab\DSCResources\xHyper-V\DSCResources\MSFT_xVMHyperV\MSFT_xVMHyperV.psm1:312 char:2
1
+             $null = Set-VM @parameters
+                     ~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (:) [Set-VM], VirtualizationException
    + FullyQualifiedErrorId : ObjectNotFound,Microsoft.HyperV.PowerShell.Commands.SetVM

VERBOSE: [10:07:32] Adding VM customizations.
VERBOSE: [10:07:33] Mounting disk image 'D:\TestLab\VMVirtualHardDisks\WIN10CLIENT.vhdx'.
VERBOSE: [10:07:38] Adding DSC resource modules to 'J:\Program Files\WindowsPowershell\Modules'.
VERBOSE: [10:07:38] Adding DSC resource 'xActiveDirectory' (v<IP_ADDRESS>).
VERBOSE: [10:07:38] Adding DSC resource 'xComputerManagement' (v1.3.0).
VERBOSE: [10:07:38] Adding DSC resource 'xDhcpServer' (v1.2).
VERBOSE: [10:07:39] Adding DSC resource 'xDnsServer' (v1.1).
VERBOSE: [10:07:39] Adding DSC resource 'xNetworking' (v<IP_ADDRESS>).
VERBOSE: [10:07:39] Adding DSC resource 'xSmbShare' (v<IP_ADDRESS>).
VERBOSE: [10:07:39] Setting local administrator password to 'Passw0rd'.
VERBOSE: [10:07:39] Adding Unattend file 'J:\Windows\System32\Sysprep\Unattend.xml'.
VERBOSE: [10:07:39] Adding BootStrap.ps1 file to 'J:\BootStrap'.
VERBOSE: [10:07:39] Creating directory 'J:\BootStrap'.
VERBOSE: [10:07:39] Adding SetupComplete.cmd to 'J:\Windows\Setup\Scripts'.
VERBOSE: [10:07:39] Creating directory 'J:\Windows\Setup\Scripts'.
VERBOSE: [10:07:39] Adding DSC file 'J:\BootStrap\localhost.mof'.
WARNING: [10:07:39] Cannot locate node 'D:\TestLab\Configurations\WIN10CLIENT.mof' file. No DSC configura
tion will be applied. Ensure the DSC configuration has been run successfully.
VERBOSE: [10:07:39] Adding Client certificate 'J:\BootStrap\LabClient.pfx'.
VERBOSE: [10:07:39] Adding Root certificate 'J:\BootStrap\LabRoot.cer'.
VERBOSE: [10:07:39] Dismounting disk image 'D:\TestLab\VMVirtualHardDisks\WIN10CLIENT.vhdx'.
VERBOSE: [10:07:39] Creating baseline snapshot 'VirtualEngineLab Baseline Snapshot'.
Checkpoint-VM : Hyper-V was unable to find a virtual machine with name "WIN10CLIENT".
At D:\SourceControl\Lab\Src\LabVM.ps1:269 char:13
+             Checkpoint-VM -Name $Name -SnapshotName $snapshotName;
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (:) [Checkpoint-VM], VirtualizationException
    + FullyQualifiedErrorId : ObjectNotFound,Microsoft.HyperV.PowerShell.Commands.CheckpointVM

Get-VM : Hyper-V was unable to find a virtual machine with name "WIN10CLIENT".
At D:\SourceControl\Lab\Src\LabVM.ps1:281 char:36
+         Write-Output -InputObject (Get-VM -Name $Name);
+                                    ~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (WIN10CLIENT:String) [Get-VM], VirtualizationException
    + FullyQualifiedErrorId : InvalidParameter,Microsoft.HyperV.PowerShell.Commands.GetVM

D:\SourceControl\Lab [Issue29]>

@csandfeld Can you change line 451 in LABVM.ps1 to a [System.String[]] type? Can you confirm that you only have one virtual switch called 'External'?

You beat me to it ... I was just about to write that I found the bug ... the problem is that there are indeed two switches.
I have been using a test configuratin script specifying a switch named "External", of type "External":
@{
    AllNodes = @(
        @{
            NodeName                    = '*'
            InterfaceAlias              = 'Ethernet'
            CertificateFile             = "$env:AllUsersProfile\VirtualEngineLab\Certificates\LabClient.cer"
            Thumbprint                  = '599E0BDA95ADED538154DC9FA6DE94920424BCB1'
            PSDscAllowDomainUser        = $true
            VirtualEngineLab_SwitchName = 'External'
        }
        ,
        @{
            NodeName               = 'SERVER2016TP4'
            Role                   = 'CLIENT'
            VirtualEngineLab_Media = '2016TP4_x64_Standard_EN'
        }
    )
    NonNodeData = @{
        VirtualEngineLab = @{
            Network = @(
             @{
                    Name              = 'External'
                    Type              = 'External'
                    NetAdapterName    = 'Local Area Connection'
                    AllowManagementOS = $true
                }
            )
        }
    }
}

When I invoke the New-LabVM function, it creates another switch named "External" of type "Internal".
The same thing goes the other way around. If I clear my switches and run New-LabVM it works (and create a switch named "External" of type "Internal". If I then invoke Start-LabConfiguration with the config above, it creates a switch named "External" of type "External", and then fail to create the VM.

On another note ... might it make sense to have a Remove-LabVM function as well ?

OK - that'll cause a problem! The New-LabVM method shouldn't be creating switches - I even put a note in the parameter comment stating this :confused: . I'll refactor the underlying NewLabVM function to take this into account.
I see no problem with a Remove-LabVM cmdlet, the only difference between this and the standard Remove-VM cmdlet will be that it also removes the VM's differencing .VHDX file. I guess that it makes sense that it's there?
Thanks again for all your help!

I'm happy to help Iain. I think you have a great thing going here, and I can see great value for us for things such as qualifying Windows Server 2016. Keep up the good work.

@csandfeld OK - give this one a whirl and let me know how you get on!

Tried it, and it does generate a VM as expected ... but ... I cannot log on to the VM, as the local Administrator has been disabled.
Tested with a Windows 10 VM.
I have verified that this problems is not present, when deploying a Windows Server 2016 TP4 VM using the Start-LabConfiguration method.
I will do a quick test of Server 2016 with the New-LabVM method as well, and see how that goes.

Creating a Windows Server 2016 VM using New-LabVM worked as expected, and I was able to log on to the VM with the local administrator account afterwards.

DOH! Yes – with the client OSes the local administrator account is disabled by default. The custom bootstrap enables this, but guess what, I disabled that functionality ☹.
I tested with a server image! I’ll enable the custom bootstrapping for quick VMs. We’ll get there soon…

Hehe ... well ... nice to know there is a logical explanation :)

@csandfeld OK - this is going to be a little more complicated than I initially thought (isn't it always!?).

The custom command for client OSes is specified in the VirtualEngineLab_CustomBootstrap in the node configuration (see Example.psd1).
When creating a 'Quick VM' we don't have a node/configuration document!
The bootstrap is now applied, but the NET USER Administrator /active:yes is still never run.
The local administrator account remains disabled :angry:

Therefore, we only really have one viable option - we add custom bootstrap support in the media json. The only remaining question is how we implement this:

If a custom bootstrap is defined in the configuration document, use that instead of any media-specific bootstrap?
If both a custom bootstrap is defined in both the configuration document and the media definition, combine them?
Which custom bootstrap should be applied first?

Do you have a preference? Option 2 is more flexible IMHO.

Doesn't adding configuration data to media.json kind of compromise the concept of having your entire lab configuration in a single document configuration document (seem to recall that being one of your key points at PowerShell Summit)? Don't get me wrong, I would be totally OK with that, but thought I would bring it up.
Having given your two suggestions some thought, I too believe that the 2nd option would offer the most flexible solution, and think it would make sense to apply bootstrap settings from media.json first, followed by CustomBootStrap stuff from the configuration document.
However to allow for even more flexibility a custom configuration setting could be added allowing you to disable the media.json bootstrap, and specify the order of merging.
Could be something like:

VirtualEngineLab_CustomBootStrapOrder

MediaOnly
ConfigurationOnly
MediaThenConfiguration (default)
ConfigurationThenMedia
Disabled

I'm not sure about the parameter/value names, or that the above will provide the right options. And obviously it will mean more work for you - but doesn't it always!? :-)
Thoughts?

@csandfeld Yes - I agree with you - one document, nothing more, nothing less! However, none of this would ever have come about without the 'quick VM' functionality :stuck_out_tongue:
But regardless of the 'quick VM' functionality or the work involved, being able to control every possilble feature/setting makes for a very powerful solution. Who knows what people will need?!
Following your excellent comments, I propose the following:

Add support for a  -CustomData [Hastable] parameter on the New-LabVM cmdlet
This will permit passing any supported data that you can specify in a node configuration should you need it, for example or VirtualEngineLab_CustomBootstrap or even  VirtualEngineLab_CustomBootStrapOrder!
This will remove the need to expose -CustomBootstrap and -CustomBootstrapOrder parameters (and any others) which will be an advanced use case, now or in future.
Add support for VirtualEngineLab_CustomBootStrapOrder property:
MediaOnly
ConfigurationOnly
MediaThenConfiguration (or MediaFirst?) (or Default?)
ConfigurationThenMedia (or ConfigurationFirst?)
Disabled

It still leaves the following questions:

How should conflicting options be handled? For example specifying New-LabVM -StartupMemory 2GB parameter and specifying VirtualEngineLab_StartupMemory = 1GB in the -CustomData hashtable?
Do we need to support the following:
Enabling/disabling copying DSC resources?
Enabling/disabling copying/importing of the lab certificates?
Enabling/disabling the bootstrap process completely?

Thoughts?

@iainbrighton I know ... scope creep. Always a risk when taking on features not part of the original design spec.
I like your proposal - would offer tremendous flexibility for advanced use cases.
As for property names, I vote for

MediaFirst (I find it unintuitive when a property is named "default", 'cause how do I know what it does?)
ConfigurationFirst

Perhaps with an option of setting a different default through Set-LabVmDefault?
When it comes to 'StartupMemory dilemma' my gut feeling tells me it would make most sense to have the parameter take precedence over the CustomData, as I feel it would be more explicitly set, when setting it with the param (that might just be me).
For the remaining options I'm not sure. As usual when you 'offer' new functionality, I'm inclined to just say 'yes please' :) But to be honest I don't really see a use case for it just now for my own part. But then again as you said yourself - "Who knows what people will need?!"

I like your thinking as it matches mine! I will start work on the following over the Christmas break as and when I get the time:

Support -CustomData parameter on New-LabVM :white_check_mark:
Defined/explicit parameters will override the custom data hashtable  :white_check_mark:
Add CustomBootstrapOrder to Set-LabVMDefault
MediaOnly
ConfigurationOnly
MediaFirst (default value)
ConfigurationFirst
Disabled
Support for CustomBootstrap in the Media.CustomData hastable
Implement the example client custom bootstrap to enable the local admin account
Support for CustomBootstrapOrder in a node's configuration hashtable
Node's definition overrides the LabVMDefault value

I will leave the other options for the time being, until someone needs them (YAGNI)

Excellent Iain, I can see you have already been bussy. If I find time during the holidays, I will see if I can eliminate more ScriptAnalyzer warnings (unless you have other things you would prefer I take a stab at). For now, merry Christmas mate :)

Nope – feel free to crack on! A happy Christmas to you too :D
From: Christian Sandfeld<EMAIL_ADDRESS>Sent: 23 December 2015 16:41
To: VirtualEngine/Lab<EMAIL_ADDRESS>Cc: Iain Brighton<EMAIL_ADDRESS>Subject: Re: [Lab] New-LabVM (#40)
Excellent Iain, I can see you have already been bussy. If I find time during the holidays, I will see if I can eliminate more ScriptAnalyzer warnings (unless you have other things you would prefer I take a stab at). For now, merry Christmas mate :)
—
Reply to this email directly or view it on GitHubhttps://github.com/VirtualEngine/Lab/pull/40#issuecomment-166940215.

@csandfeld A happy New Year to you! I think this functionality is now in a good place for testing before I merge it in. As it's a fairly big change, would you mind having a look through the changes and trying the new CustomBootstrapOrder functionality as-and-when you get a chance? I have sucessfully run New-LabVM -Name WIN10CLIENT -MediaId WIN10_x64_Enterprise_EN_Eval -Verbose and can now log into it :wink:
Note: the client custom bootstrap that was in the Example.psd1 is now included in all the client OS built-in media definitions. If the local administrator account is enabled twice it shouldn't cause any issue (famous last words..)

And a happy new year to you @iainbrighton. I didn't get around to doing any work on this over the holidays (opted to relax with the family instead). Sounds as if you have been hard at work though. I will be happy to test/review your changes, and will get back to you on that as soon as possible.

Testing on a host with 2016 TP4 and a clean Hyper-V install
New-LabVM -Name WIN10CLIENT -MediaId WIN10_x64_Enterprise_EN_Eval -Verbose

Resulted in the following error:
VERBOSE: [8:25:54 AM] Invoking command 'Set-VMTargetResource'.
New-VM : Hyper-V was unable to find a virtual switch with name "Internal vSwitch".
At C:\Users\Administrator\Documents\WindowsPowerShell\Modules\VirtualEngineLab\DSCResources\xHyper-V\DSCResour
ces\MSFT_xVMHyperV\MSFT_xVMHyperV.psm1:291 char:21
+             $null = New-VM @parameters
+                     ~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [New-VM], VirtualizationException
    + FullyQualifiedErrorId : InvalidParameter,Microsoft.HyperV.PowerShell.Commands.NewVM

I don't recall if the switch has to be in place beforehand, or if it is supposed to create it. Could you enlighten me?

Haha - the quick VM functionality won't create any virtual switches as the default switch type is 'Internal' - remember you already had a switch called "External" and it originally created an internal switch called "External"?
I still think that this is an issue though as the default internal vSwitch should be there. Can you run Start-LabHostConfiguration and then try the command again? We might want to ensure that host configuration is enforces, even with a quick VM?

Doing the same on a Windows 10 with the expected switch already in place works a treat. I can confirm that I can now logon with the local administrator account - this even with a new Windows 10 version added to CustomMedia.json, with the CustomBootStrap data copied over from the existing Windows 10 entry.

I can confirm that after manually creating the 'Internal vSwitch' switch on my 2016 TP4 host, the VM was created successfully, and I can log on with the local administrator account here as well.
I already did the Start-LabHostConfiguration bit (which installed Hyper-V etc.), but will remove the switch I just created, and try again. However, isn't the creation of switches supposed to be handled by Start-LabConfiguration as opposed to Start-LabHostConfiguration?

I can confirm that Start-LabHostConfiguration does not create the default switch

Good job! At least someone knows the code does :wink:
So the question is - do we always want to have the "default" virtual switch created? If not, we're probably good to go. Otherwise, I'll need to make an additional tweak...

Not sure at this point. Will try to think that through on the drive home, and see if I can find time to get back to you later tonight if that's OK.

No rush! Here's my thinking:

If the -SwitchName parameter is not specified, we create the "default" internal virtual switch
This would have resolved your issue (and likely 90% of people who try the quick VM functionality!)
If the -SwitchName parameter is specified, it needs to already be created or you still receive the error

We won't have enough information to reliably determine what switch type it should be
This data is in the NonNodeData hashtable, not the node's configuration
This can also lead to duplicate switch names (which we know causes problems!)

Thoughts?

Assumptions (on my part):

The default switch name is always assumed to be an internal switch
If a switch with the default name already exist it's type is not checked or changed

If above is true is there any reason to treat a specified switch by another name different?
Might we just:

Check for existing switch names
If specified switch exist, use it
If specified switch does not exist, create it as an internal switch

Alternatively a -SwitchType parameter could be added, accepting Private, Internal and External as values, and if External is specified, it could select the connected NIC with highest bandwidth for the switch. The value could be added to LabVmDefaults as well.
This may be taking the "quick vm"  functionality too far - I don't know.
Thoughts?

In answer to your assumptions:

The default switch name is always assumed to be an internal switch

Correct
It is purely the safest default value

If a switch with the default name already exist it's type is not checked or changed
Incorrect
The xVMSwitch Test-TargetResource method is called with the switch name and an "internal" type
This is why we've ended up with duplicate switch names, one of type "external" and one "internal"

I don't know whether this changes any of your rationale? I think that trying to second-guess anything is a bad idea.

Somehow it escaped my mind, that the Hyper-V configuration is done using a DSC resource. The fact that it will actually test the switch type, does not make much of a difference. I would still think that we could just create a switch, if the -SwitchName points to a switch that does not exist, and just use the same rationale as when creating the default switch (unless I'm am not seeing the full picture here - which is more than likely).
Anyway ... when I first started working with VirtualEngineLab (on a relatively slow low-end PC), I constantly ran into problems where the Eval versions of Windows could not activate (as they need Internet access to activate and grant you those 90/180 days evaluation period). When they are not activated, they shut down after 1 hour, and when creating and powering on several VM's at once (the TLG scenario) it would start shutting down VM's before they completed their configuration. So I started creating setups with external switches instead, to allow those VM's to register, and complete their setup.
So the question now I guess is, are we able (and do we want) to support the other switch types as well for the default switch (and possibly switches speciified with the -SwitchName parameter)?
I don't know if this is straying to far from the original idea for the product?

@csandfeld The only problem with using the DSC resource is that we have to specify a switch type when testing for its availability. To overcome this, we would need a separate bit of logic to determine whether a switch of any type, with a given name, exists or not. It's not the end-of-the-world as it's only a few lines of code. I was just trying to utilise the DSC resources due to their idempotent characteristics!
I'll implement the switch name checking for the quick VM functionality. If it doesn't exist, we'll create an 'internal' virtual switch. I'm happy to discuss the merits of adding other switch types to the defaults, but that'll need to be logged as a separate issue for discussion!
I hear you on the 'eval' media - it drives me nuts too! Why they don't have a 7 or 30-day grace period for activation is beyond me. This is why I would like to implement #44  (it's just a shame it's not yet available on Win 10 hosts). Could this be a better option?:

Rename the built-in media Ids without the 'Eval' suffix.
Leave the download URIs as they are.
This would permit you to register MAK/VLK media with the same name, overriding the default if needed/wanted.
The MAK/VLK media does have the grace period, we just can't distribute it!
(Future) configurations wouldn't need to be altered if you wanted to use MAK/VLK media.

I agree... discussion about adding other switch types warrants its own topic.
Will be interesting to see if #44 becomes available on Windows 10 too, or if they opt to keep that as a server feature. Anyway for now we can't relly on it.
I think it would make sense to add an Eval suffix to the existing media ID's. And for Windows 10, perhaps even a build number, as currently they have eval versions available for both build 10240 and 10586. As a matter of fact, while testing the CustomBootStrap stuff the other day, I added the 10586 build to my custom media as follows:
    {
        "Id":  "WIN10_x64_Enterprise_EN_Eval_10586",
        "Filename":  "WIN10_x64_ENT_EN_Eval_10586.iso",
        "Description":  "Windows 10 64bit Enterprise English Evaluation build 10586",
        "Architecture":  "x64",
        "ImageName":  "Windows 10 Enterprise Evaluation Technical Preview",
        "MediaType":  "ISO",
        "Uri":  "http://download.microsoft.com/download/B/B/3/BB3611B6-9781-437F-A293-AB43B85C2190/10586.0.151029-1700.TH2_RELEASE_CLIENTENTERPRISEEVAL_OEMRET_X64FRE_EN-US.ISO",
        "Checksum":  "",
        "CustomData": {
            "WindowsOptionalFeature": ["NetFx3"],
            "CustomBootstrap": [
                "## Unattend.xml will set the Administrator password, but it won't enable the account on client OSes",
                "NET USER Administrator /active:yes;",
                "Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine -Force;",
                "## Kick-start PowerShell remoting on clients to permit applying DSC configurations",
                "Enable-PSRemoting -SkipNetworkProfileCheck -Force;"
		]
	},

@csandfeld So leave the _Eval suffix on the default media? That's a good thing; yes? Perhaps we're over-engineering this?
I certainly think that we need to do something with all these Win 10 builds. Don't they have code names like Threshold1 (TH1) and Threshold2 (TH2)? I think the next ones are Redstone? This all makes my head spin at the moment! :confused:

@csandfeld Give the latest commit a go. If a switch does not exist, New-LabVM will now create an Internal virtual switch... You should be able to spin up a VM with a fresh/clean machine now (famous last words...) :smile:

Oh sorry ... got that backwards. Somehow got into my head that they where originaly without the eval suffix.
I can see pro's and con's of both scenarios, but at the end of the day, I think it makes sense to have the Media ID reflect the actual media. Personaly I would prefer having the ability to test with both Eval versions, VLK versions etc. Others might have different preferences. No matter what we go with here, I'm sure someone would have prefered it was different.
It does bring me to another point though. You enabled adding media with Register-LabMedia, storing it in the CustomMedia.json, and removing media with Unregister-LabMedia (haven't tried removing though). So now we have media defined in two places. I'm guessing (haven't tried) that attempting to remove any of the default media would throw an error, and that trying to add media using an existing ID would as well?
Anyway ... if a need would arise for someone to point a certain media ID from the default list of media to a different source, it could be implemented by writing that media to CustomMedia.json, and have that take preference. Might require a -Force or -Overwrite switch or something like that.

Great ... I will try to find time to give that build a spin tomorrow.

@csandfeld Any update? Are you happy that this update is in state to merge in?

Sorry mate, didn't get around to it. It's been a hectic couple of days, and I simply forgot all about it.  Will have to get back to you.

No rush. I'm pretty maxed out with training next week anyhow!

Checked the latest version of the Issue29 branch today, and it looks really good.
Good job once again mate :smile:

Cool. Will merge that in at some point this week when u get a spare 10 mins!


PR template: add "Description" header

[X] Have you followed the guidelines in our Contributing document?
[X] Have you checked to ensure there aren't other open Pull Requests for the same change?
[X] Have you added an explanation of what your changes do and why you'd like us to include them?
[ ] Have you written new tests for your changes? Here's an example. N/A
[ ] Have you successfully ran brew tests with your changes locally? N/A

Description
Adds a "### Description" header separating the template's checklist from the user's comments.
Also a minor grammar fix.
Changes "have you checked for open PRs" to just "have you checked for PRs", changing the link to search for all PRs, not just open ones. I think submitters should look for similar PRs in the closed and merged ones as well, to see if their change has already been proposed and rejected, or if it's already been merged and they just haven't noticed or updated recently.

Maybe we should make the same "also check closed & merged PRs" on homebrew/core, too. The volume there is higher, so we wouldn't expect submitters to scan through all the closed PRs. But there they can easily search for a formula by name and expect to hit everything relevant.

Adds a "### Description" header separating the template's checklist from the user's comments.

Feels weird to me to have a header for that, but no header for the checklist. (I guess one could consider the PR title to be the header for it.) Personally, I prefer fewer headers (depends of course on the extent of the change) and mostly use ---- as a delimiter between the checklist and the description.

Changes "have you checked for open PRs" to just "have you checked for PRs", […]

While I think this would be helpful (even more so in homebrew/core, as some unnecessary work could be avoided if contributors checked how a recent update to a formula has been handled), I don't think many contributors can be bothered to do this.

While I think this would be helpful (even more so in homebrew/core, as some unnecessary work could be avoided if contributors checked how a recent update to a formula has been handled), I don't think many contributors can be bothered to do this.

Agreed. The more we ask them to do, the less likely they will do any.

Agree with Mike and Martin. I also don't know how many first-time contributors will be comfortable determining if we recently closed a PR for something why we made that decision and whether it's safe to ignore it or not.

Good points. I've removed the "all PRs" change; now this is just adding a header.

Feels weird to me to have a header for that, but no header for the checklist.

This matches the change in homebrew/core's PR template; see Homebrew/homebrew-core#476. There were some objections to having a header above the checklist, and I think it looks okay without.
Do other people prefer the ---- (horizontal rule) too? I think both are fine. ---- also has the advantage that it doesn't have the weirdness of a single headerless section, and people writing longer PRs can still put section headers below the HR.

Do other people prefer the ---- (horizontal rule) too?

I prefer that 👍

Switched to -----. Looks just as good to me. If we go with this, I'll make the change in homebrew-core's PR template, too.

Should we also add a boilerplate sentence like the following below the ----?
*Replace this with a description of your change.*

Hmm. Maybe. Any comments from the commit beyond the first line will already show up there, so it may be a bit confusing or overlooked. But it would be easy enough to delete from PRs that accidentally leave it in.

Any comments from the commit beyond the first line will already show up there, […]

Oh right, I temporarily forgot that. Now that you reminded me of this, I don't think we should put anything below the ---- into the PR template. Most PRs (at least in this repository) probably contain some description in the commit message body, so having to remove that extra line will be annoying.

Merged, and made the corresponding format change in homebrew/core in https://github.com/Homebrew/homebrew-core/commit/08ecb75f9ef7ff419155ae4d7d805d04405cdff8.


v1.3.4

Added missing check if running in report mode when updating administrative templates profiles information.
When updating multiple Windows enrollment profiles, the ID of the first profile in the list was incorrectly removed causing the script to exit with KeyError: 'id'. This is now fixed so it removes the ID from the current Windows enrollment profile.

Codecov Report
Base: 96.29% // Head: 96.29% // No change to project coverage :thumbsup:

Coverage data is based on head (713401e) compared to base (0afa7c4).
Patch coverage: 100.00% of modified lines in pull request are covered.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
Additional details and impacted files
@@           Coverage Diff           @@
##             main      #94   +/-   ##
=======================================
  Coverage   96.29%   96.29%
=======================================
  Files          53       53
  Lines        2728     2728
=======================================
  Hits         2627     2627
  Misses        101      101

Flag
Coverage Δ

unittests
96.29% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

src/IntuneCD/update_groupPolicyConfiguration.py
85.71% <100.00%> (ø)

src/IntuneCD/update_windowsEnrollmentProfile.py
96.92% <100.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Using const in size.js breaks IE11

Code in D3 is written in a way to support older browsers and since we have clients on IE11, size.js throws an error there for them, because of const.

Please see the release notes - this is intentional.
https://github.com/d3/d3-selection/releases/tag/v2.0.0
You must stick with 1.x or transpile if you still need to support IE.

Yes, just realized that and saw there were other breaking changes for the older browser. Thanks for this!


Remove copy tooltip on Text that is not selectable - iOS

Description
When creating a custom tooltip (could be using react-native-tooltip), if the custom tooltip is within a Text element, the tooltip will inevitably have the Copy item without any way of removing it.
This is because of the lines 239, 240, 241 of react-native/Libraries/Text/RCTText.m, introduced by @shergin on this commit 5d03ff8035bdb7c582f80d6ce46d7c5f11545e7e .
Reproduction Steps and Sample Code
Create a custom tooltip inside a Text component.
The Text component can have the selectable property set to true or false, it does not affect this issue.
import * as React from 'react';
import { Text } from 'react-native';
import ToolTip from 'react-native-tooltip';

const MyComponent = () => (
  <Text>
    <Text>This is my text.</Text>
    <ToolTip
      actions={[
        {text: 'My', onPress: (): any => null },
        {text: 'Context', onPress: (): any => null },
        {text: 'Menu', onPress: (): any => null },
      ]}
      underlayColor='transparent'
      longPress={true}
      arrowDirection='down'
    >
      <Text>You can long press me for a tooltip.</Text>
    </ToolTip>
    <Text>This is the rest of my text</Text>
  </Text>
);

export default MyComponent;

Solution
If the selectable property on the Text component is set to true, the behaviour should remain the same. However, if it set to false, the Copy item should not show in the tooltip.
To fix this, the following lines should be changed to have a condition to only accept the copy item if the text is selectable:
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
  if (action == @selector(copy:)) {
    return YES;
  }

  return [super canPerformAction:action withSender:sender];
}

Additional Information

React Native version: 0.43.4
Platform: iOS
Development Operating System: MacOS

Thank you, Gabriel!
I will fix that.

@shergin If you look here, I have submitted a fix: https://github.com/facebook/react-native/pull/13619

@gabrielbull Awesome! Please address the comments. :)

Fixed with the PR.


Add Custom Login Page to Con-PCA

🗣 Description

Created custom login/register pages.
Moved authentication to be fully handled by API.

💭 Motivation and context

Needed to rework authentication to solve some technical debt.

🧪 Testing

Tested locally and via unit tests on the backend.

✅ Checklist

[x] This PR has an informative and human-readable title.
[x] Changes are limited to a single goal - eschew scope creep!
[x] All future TODOs are captured in issues, which are referenced
in code comments.
[x] All relevant type-of-change labels have been added.
[x] I have read the CONTRIBUTING document.
[x] These code changes follow cisagov code standards.
[x] All relevant repo and/or project documentation has been updated
to reflect the changes in this PR.
[x] Tests have been added and/or modified to cover the changes in this PR.
[x] All new and existing tests pass.

@dav3r or @jsf9k Can you look at this PR? I made an update .github/workflows/build.yml, disabling one of the platforms to build to, because of errors in this run - https://github.com/cisagov/con-pca-web/pull/163/commits/a550f43e404b6a32a1535d4b46253cdbb9ab7048

@dav3r or @jsf9k Can you look at this PR? I made an update .github/workflows/build.yml, disabling one of the platforms to build to, because of errors in this run - a550f43

Did you attempt to re-run the build to confirm that this wasn't a one-time build error?  If the error is repeatable, we are ok with you disabling that platform, but you should also create an issue in this repo that includes the error details (e.g. the output from here to here).  That way you (or someone else) can check later on to see if that build issue has been resolved.  The issue should also be mentioned in your code comment.
Similar issues should be created for each other platform that you have disabled.


Possibility to import old history stored in the scale.

First, thanks very much for your add-on, it works wonders! Now to the template:
Select Add-On (place a lowercase x for the relevant add-on)

[x] Xiaomi Mi Scale

Is your feature request related to a problem? Please describe.
Not really a problem. The other day a read that the Xiaomi Mi Body Composition Scale, stored all the measurements made inside the scale. I was able to check this by using the app Open Scale. It downloaded months worth of measurements.
Describe the solution you'd like
It would be great being able to download all this data and include it in home assistant so I don't have to check old data in the xiaomi app.
Describe alternatives you've considered
Maybe just a way to upload this information as CSV or somethingn like that, there are ways to download the old values as CSVs.
Additional context
Using HA 114.4 with xiaomi mi scale 0.1.7 in a Pi4, everything working like a charm. Also, I don't know if there is another way of doing that, I just thought that it would be a nice feature.

Thanks,
I wouldn't know where to start with this I'm afraid and probably mean a complete rewrite of the code as it's a different way to communicate with the scale.
Silly question though: If you're able to perform this with another app, why do you need me to build this too?
In addition I'm not sure getting the data into home assistant would be the best way as there is a high chance the data will be lost /wiped at some point. I personally use influxDB to store states & values  for long term and I use grafana to visualise. It may be easier to set this up and manually perform an import into influxDB?
Check this post to get you started:
https://community.home-assistant.io/t/complete-guide-on-setting-up-grafana-influxdb-with-home-assistant-using-official-docker-images/42860

Don't take it wrong, I didn't really know if doing it was easy or hard (a rewrite is hard so probably hard), I simply thought that it would be convinient.
InfluxDB and grafana are already installed in the system but I never thought of importing the data manually. Thanks for the suggestion. I will try to do that. I have no idea how to proceed but I'm sure google will help.
Feel free to close the issue if you feel that it's not relevant to the add-on.

Oh I wasn't taking it wrong, don't worry 😉
I just wanted to explain why I was probably not going to do it.
Glad I could help in the end.
For the import, have a look a this which might help: https://www.influxdata.com/blog/how-to-write-points-from-csv-to-influxdb/
Closing this now


PEP8 compliance and documentation

General issue for best practices.  This ticket will remain open indefinitely.

README.md has been a bit outdated. It needs to include discussion of

Provide description on configuration settings []

While working on #93 I found some style issues including:

multiple spaces before assignments in several scripts as in scripts/org_code_numbers.py

a      = 'a'
ab    = 'ab'
abc  = 'abc'

F-strings with no place holders as in f'foo bar' in scripts/manual_override.py
Some unused imports like from os import path and from os import mkdir in scripts/org_code_numbers.py

I am not sure if 1 is for clarity, but I think fixing the other ones could be part of this issue.


Change ConcatCollector implementation to use off-heap

See https://github.com/apache/incubator-pinot/issues/6770 for motivation
Pending: This PR only changes ConcatCollector. Will update RollupCollector in a following PR.

Codecov Report

Merging #6847 (d8e3766) into master (ac5aee7) will increase coverage by 22.35%.
The diff coverage is 42.68%.

@@              Coverage Diff              @@
##             master    #6847       +/-   ##
=============================================
+ Coverage     43.52%   65.87%   +22.35%
- Complexity        7       12        +5
=============================================
  Files          1421     1422        +1
  Lines         69142    69380      +238
  Branches       9987    10023       +36
=============================================
+ Hits          30093    45706    +15613
+ Misses        36504    20422    -16082
- Partials       2545     3252      +707

Flag
Coverage Δ
Complexity Δ

integration
?
?

unittests
65.87% <42.68%> (?)
12.00 <0.00> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update ac5aee7...d8e3766. Read the comment docs.

Addressed all comments @Jackie-Jiang


Changing to testnet does not update node address

When changing from mainnet to testnet, the node url does not update.
Display a pop up that notifies the user to change their node settings.
If node is set to 'default' - Blockstream - auto change port from 50002 to 60002.

The result of this is that when you switch to testnet, you get a new wallet, you can generate addresses (i.e. all the offline operations) but when you get paid, it does not update because the wallet is still synced to a mainnet node.

Fixed


X18 not connecting

Can I use this on a x18 board? Firmware 1.17.
It is stuck on “syncing” and no operation is possible

There is a separate module for connecting to the xair devices https://github.com/bitfocus/companion-module-behringer-xair. I expect it should work fine with that


[BUG] docker-compose up is not working

Describe the bug
When I followed the documentation to launch with docker-compose up, it failed with the following error information:
WARN[0000] The "EXECUTION_MODE" variable is not set.

Same issue here, the service is not up and listening on the desired port by "docker-compose up -d" and the error message can be seen by "docker-compose up".

seem like not a bug, you should set the .env vars
LOG_PATH=/data/logs
and this should start it without issue

seem like not a bug, you should set the .env vars
LOG_PATH=/data/logs
and this should start it without issue

Cool. Thanks. I will give it a try and close this issue once it's verified.

seem like not a bug, you should set the .env vars
LOG_PATH=/data/logs
and this should start it without issue

Cool. Thanks. I will give it a try and close this issue once it's verified.

By the way, probably it should be documented somewhere, or properly handled by the code, for example, if log path is not set, use some default one.

Perhaps we could remove the comment from the line in docker/.env.example so that it's clear that it's not optional?
https://github.com/FlowiseAI/Flowise/blob/main/docker/.env.example#L7

added fix to use a default log path, and also updated README
If you like to persist your data (flows, logs, apikeys), set these variables in the .env file inside docker folder:

DATABASE_PATH=/root/.flowise
APIKEY_PATH=/root/.flowise
LOG_PATH=/root/.flowise/logs

Perhaps we could remove the comment from the line in docker/.env.example so that it's clear that it's not optional? https://github.com/FlowiseAI/Flowise/blob/main/docker/.env.example#L7

It worked.

added fix to use a default log path, and also updated README
If you like to persist your data (flows, logs, apikeys), set these variables in the .env file inside docker folder:

DATABASE_PATH=/root/.flowise
APIKEY_PATH=/root/.flowise
LOG_PATH=/root/.flowise/logs

Will keep this open until we push to a new release

Thanks for the update. I will leave this issue to you guys. Feel free to close after a new release.

should be updated in 1.2.16 release


Baby detection

Ha sorry, this was intended for my fork.

Ha sorry, this was intended for my fork.


ansible.legecy.dnf leave rpmdb locks open

Which version of Ansible are you running? ansible-core 2.15.3

Is your version of Ansible patched in any way? no

Have you tried the latest master version from Git? yes

Do you have some idea of what the underlying problem may be?

Presumably some destructor is not getting called to close the locks.

Mention your host and target OS and versions
AlmaLinux 8.9

Mention your host and target Python versions
3.11.5

After updating a package with ansible.builtin.dnf (which mitogen converts to ansible.legacy.dnf it seems), running dnf by hand results in:
warning: rpmdb: BDB2053 Freeing read locks for locker 0x12019: 956159/139927092750080
warning: rpmdb: BDB2053 Freeing read locks for locker 0x1201a: 956159/139927092750080
warning: rpmdb: BDB2053 Freeing read locks for locker 0x1201b: 956159/139927092750080
warning: rpmdb: BDB2053 Freeing read locks for locker 0x1201c: 956159/139927092750080
warning: rpmdb: BDB2053 Freeing read locks for locker 0x1201d: 956159/139927092750080
warning: rpmdb: BDB2053 Freeing read locks for locker 0x1201e: 956159/139927092750080
warning: rpmdb: BDB2053 Freeing read locks for locker 0x1201f: 956159/139927092750080
warning: rpmdb: BDB2053 Freeing read locks for locker 0x12020: 956159/139927092750080
warning: rpmdb: BDB2053 Freeing read locks for locker 0x12021: 956159/139927092750080
warning: rpmdb: BDB2053 Freeing read locks for locker 0x12022: 956159/139927092750080
warning: rpmdb: BDB2053 Freeing read locks for locker 0x12023: 956159/139927092750080
warning: rpmdb: BDB2053 Freeing read locks for locker 0x12024: 956159/139927092750080
warning: rpmdb: BDB2053 Freeing read locks for locker 0x12025: 956159/139927092750080
warning: rpmdb: BDB2053 Freeing read locks for locker 0x12026: 956159/139927092750080
warning: rpmdb: BDB2053 Freeing read locks for locker 0x12027: 956159/139927092750080
warning: rpmdb: BDB2053 Freeing read locks for locker 0x12028: 956159/139927092750080
warning: rpmdb: BDB2053 Freeing read locks for locker 0x12015: 956159/139927092750080
warning: rpmdb: BDB2053 Freeing read locks for locker 0x12017: 956159/139927092750080
warning: rpmdb: BDB2053 Freeing read locks for locker 0x12018: 956159/139927092750080

This does not happen without mitogen. Log with -vvvv is attached

Uploading ansible.log.gz…

Can you also try:
  vars:
    mitogen_task_isolation: fork

in a task.
As a workaround I would suggest using command task and calling dnf as you would normally do from a command line.
This is what I do:
- name: 'Install latest packages'
  # delegate_to: "{{ delegate_host | default(omit) }}"
  vars:
    # mitogen_task_isolation: fork
    local_packages_latest: "{{ packages_latest }}"
  command:
    cmd: "dnf install --best --assumeyes {{ local_packages_latest | join(' ') }}"
#    cmd: "yum install --assumeyes {{ local_packages_latest | join(' ') }}"
#  dnf:
#    name: "{{ packages_latest }}"
#    state: latest
#    lock_timeout: 600

I believe that task isolation is already enabled for dnf here: https://github.com/mitogen-hq/mitogen/blob/798032b979bf5cabf50d3665f113f67cb5b33152/ansible_mitogen/planner.py#L325


nnUNet failed in segmenting PVS in some T1W data

Hi,
Thank you for providing the package.
I have noticed that nnUNet-PVS failed in identifying / segmenting PVS with around 5% failure rate out of 800 T1W images that I have ran so far.
Do you have any suggestions? I have attached one of the T1W images that failed for your reference. Thank you.
Ping
Uploading 3170_0000.nii.gz…

3170_0000.nii.gz

Hi Ping,
It appears to be an issue with the default_normalization_schemes.py.
I've updated the code and attached the prediction for 3170_0000.nii.gz :)
3170.nii.gz
Will

Hi Will,
Thank you for the prompt response.
Do I need to re-run all other data, or only the data that failed earlier?
How about T1MB, T1HC, T1FLAIR_WMBG and T2_WMBG?
V/r,
Ping
On Thu, Oct 24, 2024 at 2:55 AM wpham17 @.***> wrote:

Hi Ping,
It appears to be an issue with the default_normalization_schemes.py.
I've updated the code and attached the prediction for 3170_0000.nii.gz :)
3170.nii.gz
https://github.com/user-attachments/files/17502520/3170.nii.gz
Will
—
Reply to this email directly, view it on GitHub
https://github.com/wpham17/nnUNet-Perivascular-Spaces/issues/1#issuecomment-2434449826,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AA43XNUVKIJ4VQWM7ZSCWWLZ5CKX5AVCNFSM6AAAAABQPFPH2KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMZUGQ2DSOBSGY
.
You are receiving this because you authored the thread.Message ID:
@.***>

Hi Ping,
Re-running on all the data would be prudent.
Although the predictions for the successfully processed images should be very similar. So it is up to you :)
The T1MB, T1HC, T1FLAIR_WMBG and T2_WMBG models are unaffected since it uses a different normalisation scheme.
Will


add type in material section

To add material type in the material section. Users do scan fabrics and trims with vizoo machine today.

will be added via U3M 1.1 pull request


Add input validation check for partitionkey and rowkey

Add input validation check for partitionkey and rowkey according to Azure table service data model
Docs Microsoft-Understanding the Table service data model

Added more permissive solution which escape not allowed caracters for partitionKey and rowKey
In the future, this behavior  could be disabled as a toggle feature in Entity Configuration


Probing from every data centre is not allowed with this subscription

I get an error similar to this when I try the basic instructions, even though cloudflared --hello-world works for this account and domain name.
Is there a way to get more information out if it to see what I'm doing wrong?
ERRO[0037] Server error: error creating new pool <domain name>: authentication error: response: {
  "result": null,
  "success": false,
  "errors": [
    {
      "code": 1002,
      "message": "Probing from every data centre is not allowed with this subscription. Please choose regions to probe from.: validation failed"
    }
  ],
  "messages": []
}

+1

Im also getting this error. Anyone able to solve it?

¡Hola!
To get it to work you can edit the load balancer to remove all regions from the health check.
¡Gracias!

In the latest version of the helm chart with image 0.5.1 you can set the loadbalancer option to false and it will work without having a load balancer

I'm spring cleaning issues.  the issue appears to have been resolved by removing the load-balancer requirement. I'm closing the issue (we can reopen or create a new issue tracking against 0.5.3 if the problem is not resolved).


Fix tests were disabled for Python 2.7

I had to disable some tests because they weren't working on Python 2.7 and I couldn't figure out why!

https://github.com/hpe-container-platform-community/hpecp-python-library/commit/7137856ec5460bea265f99515eb9decc3be0087f#diff-5fba11466428a6d2a8d0300fdcad1527R926
https://github.com/hpe-container-platform-community/hpecp-python-library/commit/7137856ec5460bea265f99515eb9decc3be0087f#diff-5fba11466428a6d2a8d0300fdcad1527R949

    if not six.PY3:
        return

Won't this get around the problem? Unless we have an issue with six itself.

One of the issues was use of StringIO instead of BytesIO.

Fixed.


Update LLVM commit to ebe408ad

Update LLVM to ebe408ad
Major changes include

MLIR ciface moved the return value to the first argument (https://reviews.llvm.org/D98725)
MemRef ops moved to their own dialect (https://reviews.llvm.org/D98041)
Math ops moved to their own dialect (https://reviews.llvm.org/D96272)
Rename OwningRewritePatternList -> RewritePatternSet (https://reviews.llvm.org/D99119)
Builtin Attributes moved to ODS, causing small signature changes (https://reviews.llvm.org/D97591)

closes #539

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.Nathaniel McVicar seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

Can one of the admins verify this patch?

Can one of the admins verify this patch?

Can one of the admins verify this patch?

@jenkins-droid test this please

Jenkins Linux s390x Build #769 [push] Update LLVM commit to eb... started at 20:43

Jenkins Linux amd64 Build #771 [push] Update LLVM commit to eb... started at 19:43

Jenkins Linux ppc64le Build #23 [push] Update LLVM commit to eb... started at 00:43

Jenkins Linux amd64 Build #771 [push] Update LLVM commit to eb... passed after 1 hr 40 min

Jenkins Linux s390x Build #769 [push] Update LLVM commit to eb... passed after 2 hr 12 min

Jenkins Linux ppc64le Build #23 [push] Update LLVM commit to eb... passed after 8 hr 27 min


Upgrade to camel-2.19.2

The vote is open on this release:
http://camel.465427.n5.nabble.com/Apache-Camel-2-19-2-Release-td5807464.html


L.. Details: u'unknown' does not appear to be an IPv4 or IPv6 address

Received the following:
[!] There was a problem processing campaign ID 129!
L.. Details: u'unknown' does not appear to be an IPv4 or IPv6 address
Is there a place I can look for more detailed log information for what is happening?  I saw the other issue regarding GeoMapping but not sure if this is in the same realm.  I downloaded the requirements.txt file and updated my version in case the fix was in there already.
Let me know.
Thanks!

All taken care of.  Issue with the campaign.
Thanks.


Support toggle dark mode and light mode

Code of Conduct

[X] I have read and agree to the GitHub Docs project's Code of Conduct

What article on docs.github.com is affected?
All. It's about the site.
What changes are you suggesting?
It seems now the mode always follows system settings. While I set the system preference as dark mode, I'd prefer to view the page in light mode.
Additional information
No response

@cmwilson21 This once works but no more. My preference is light mode but the doc site still gives me the dark mode.


Fitbit Sense . No data.

I have a new Sense and loved your clock face. Worked fine for a day or two but now no data is displayed just the icons..
Uninstalled, installed, rebooted, no joy. Fitbit help says ask you.
Can you fix this?

Most likely cause is battery saving preferences on your phone that prevent communication between the watch and the Fitbit app. The Fitbit app needs to be able to run in the background.

Fitbit has run in background permission.  SPECTRUM face works fine and several others do as wellOn Aug 20, 2021 12:02 PM, Nathaniel Schaaf @.***> wrote:
Most likely cause is battery saving preferences on your phone that prevent communication between the watch and the Fitbit app. The Fitbit app needs to be able to run in the background.
—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or unsubscribe.Triage notifications on the go with GitHub Mobile for iOS or Android.

This is now happening on mine too. Fitbit recently released an update, so I'll have to see what they broke. It's likely the weather updating portion.

It seemed that the weather info disappeared first but I am not sure.It is a great face, lots of dat, but concise Thanks On Aug 20, 2021 2:49 PM, Nathaniel Schaaf @.***> wrote:
This is now happening on mine too. Fitbit recently released an update, so I'll have to see what they broke. It's likely the weather updating portion.
—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or unsubscribe.Triage notifications on the go with GitHub Mobile for iOS or Android.

Yeah. They are now returning an int where they used to return a string. I'll have to update the watch face. Sorry for the inconvenience.

Not to worry.  Please let me know when I should try again.I appreciate the response On Aug 20, 2021 5:39 PM, Nathaniel Schaaf @.***> wrote:
Yeah. They are now returning an int where they used to return a string. I'll have to update the watch face. Sorry for the inconvenience.
—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or unsubscribe.Triage notifications on the go with GitHub Mobile for iOS or Android.

resolved 16747f1ae567390521ad78f8076780978d3625a3

I submitted the update to fitbit for review.

Thank youOn Aug 21, 2021 11:09 AM, Nathaniel Schaaf @.***> wrote:
I submitted the update to fitbit for review.
—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or unsubscribe.Triage notifications on the go with GitHub Mobile for iOS or Android.

This has been published to the Fitbit gallery.

I just installed the new version.  Works great! Thank youOn Aug 21, 2021 12:38 PM, Tom Bella @.> wrote:Thank youOn Aug 21, 2021 11:09 AM, Nathaniel Schaaf @.> wrote:
I submitted the update to fitbit for review.
—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or unsubscribe.Triage notifications on the go with GitHub Mobile for iOS or Android.


Added Padding on Main Content and  Modal

Added Padding on Main Content and  Modal using VW unit.
made Navbar on Fixed Position.

This seems to have some merge conflicts because we merged earlier pull request. If you have time to
solve the conflict we happily merge it :)

Okay let me try :)


French translation

As stated in issue #1, the translations should be about the same for other French speaking countries.

Thanks @AkdM and @bwdrop !


Received ‘Unexpected token }’ error, but passes tests.

Challenge http://freecodecamp.com/challenges/waypoint-target-html-elements-with-selectors-using-jquery has an issue. Please describe how to reproduce it, and include links to screenshots if possible.

Please don't create another issue for a similar error. This can very well be merged with the previous issue you opened :)

@jwjb @awesomeaniruddh On this on you are missing a ; at the end of your line giving that error.... it still passes since the test does not account for a missing ;

@natac13 Great point and I am missing a ;. Interestingly, I get a similar error which I will not create another issue for since it is similar to #3133 (and probably to #3135) per @awesomeaniruddh which I did not know being a newbie to jQuery and freeCodeCamp too, but have included this issue in the below screenshots for your reference where I do have a ; at the end of the two jQuery statements.

Regardless, I will close this issue and not open similar issues henceforth although I feel it would be best to err on the side of caution and report any and all issues which could then be closed on a case-by-case basis after ensuring they are indeed the same issue as these kinds of errors or any errors for that matter for a newbie like me leave me to question my code even when it passes all the tests.
Along these lines it is interesting to note that in Contributing item 6 in the README.md this statement Please do not ignore any linting errors, as they are meant to help you. excerpted from below where I would it would seem these are 'linting errors' of some sort and should not be ignored and if they are not all reported it seems to me they could be ignored and remain within the particular Waypoint, etc to cause confusion for Free Code Camp campers (students) and seasoned JavaScript developers alike, IMHO.

You should have ESLint running in your editor, and it will highlight anything doesn't conform to AirBnB's JavaScript Style Guide. Please do not ignore any linting errors, as they are meant to help you. Make sure none of your JavaScript is longer than 80 characters per line.

@jwjb I agree with you completely on the linting thing! However from what I can tell the linter does not pick this up...
I would also say keep making issues for anything you see wrong!! Obviouvsly do a search for a similar issue.... I really thank you for finding this since it an issue that I am able to fix! lol

@natac13 Just awesome and maybe you could write a blog post on how exactly you fix such an issue as it would not only be great reading, but a great learning resource for us fc3s (Free Code Camp campers) too. By the way, is there a better acronym for Free Code Camp campers than the off the cuff one fc3s I just came up with?

@jwjb That is a fantastic idea! And I will do just that! I will send you the link once I get finished and I should try to remember to post in the camper news sections for the rest of the fc3s.
Not seen any other acronym so I went with the one you came up with!!


The link to the Ohio State home page in the banner displays “OSU.EDU” but a screen reader announces it as “The Ohio State University”

The link to the Ohio State home page in the banner displays “OSU.EDU” but a screen reader announces it as “The Ohio State University”. Logos especially should announce exactly as how they are read if made of text.
•	WCAG 2.5.3 Label in Name
•	Recommendation: Since it is a background image, remove the link text as it both inaccurate and redundant. Change the title attribute to read, “OSU.EDU, home”.
•	Priority: Moderate

Do I ignore Anchors must have content and the content must be accessible by a screen reader.eslint[jsx-a11y/anchor-has-content](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-has-content.md)?

I think let's try swapping it around, instead of using title let's just have the anchor text be "OSU.EDU, home". That should be read off by SR's, even if it's visibility hidden from sighted users.


Message was not delivered successfully to SMTP server.

when im trying to test smtp using postal test-app-smtp
It raises error below
Error: OpenSSL::SSL::SSLError (hostname "xx.xx.xx.xx" does not match the server certificate).

This looks like a configuration issue with your SMTP server.


Support Sketch 45 plugin update system

Hi there!
This is a quick note to remind you that Sketch 45 will include a plugin update system.
It would be awesome if you could add support to it (it's really easy!) before Sketch 45 comes out. Ideally, you should release an update for your plugin while we're still in Sketch 44, so your users will have a nice & easy experience when 45 is released.
For more details, please check http://sketchplugins.com/d/229-updating-plugins and http://developer.sketchapp.com/introduction/updating-plugins/
Thanks in advance!

I've updated the manifest.json and included the appcast.xml path. Any way to test the implementation ahead of time? I used Sketch daily; I'm weary of installing a beta version because it is a critical part of my workflow.

I can test this for you, don't worry! 🙂

You'll want to point you appcast entry to https://raw.githubusercontent.com/philsinatra/Sketch-Color-Vars/master/appcast.xml, so that Sketch downloads the raw XML, and to make sure it's always using the latest version.
Also, make sure the enclosure URL points to a plugin that contains an updated manifest.json (it currently downloads v1.1.1, which does not contain a reference to appcast).
Hope it helps!

Thanks for the details. I believe I have these fixes in place. Let me know if you're able to test again.

Works like a charm, closing! 🎉


Rendering issue. When there are only 3 values on the chart, and one of them is 70%.

Description
Hello,
First of all, thanks for the great plugin!
I have a problem with the intersection of strokes when the segment value is 70% (this can be seen in the screenshot).
My options:
const options = {
    chart: {
      height: '100%',
      type: 'pie',
      zoom: {
        enabled: false
      }
    },
    series: [70, 18, 12],
    labels: ['Direct', 'Organic search', 'Referral'],
    title: {
      show: false
    },
    stroke: {
      width: 3,
      colors: ['rgb(255, 255, 255)']
    },
    dataLabels: {
      style: {
        fontSize: '20px',
        fontFamily: 'Inter, ui-sans-serif',
        fontWeight: '400',
        colors: ['#fff', '#fff', '#1f2937']
      },
      dropShadow: {
        enabled: false
      },
      formatter: (value) => `${value.toFixed(1)} %`
    },
    plotOptions: {
      pie: {
        dataLabels: {
          offset: -15
        }
      }
    },
    legend: {
      show: false
    },
    grid: {
      padding: {
        top: 0,
        bottom: 0,
        left: 0,
        right: 0
      }
    },
    tooltip: {
      enabled: false
    },
    states: {
      hover: {
        filter: {
          type: 'none'
        }
      }
    },
    colors: ['#4f46e5', '#67e8f9', '#e5e7eb']
  }

Thank you in advance!
Screenshots

Did not provide the required repro link.

Sorry, the reproduction link is https://codepen.io/olegpix/pen/yLZeBPQ

Thanks for providing a CodePen. I have fixed this with the last commit and the end result would like like below.

Please wait for the next release.


Changing file content refreshes the GLTF Viewer view, but always resets to Babylon.js

Expected: changing file content refreshes the preview and keeps the previously selected engine selected.
Actual: engine is reset to "Babylon.js" on file change.

Yes, it should probably remember whatever engine it was on before.
Note there is a setting for which engine is the "default" for glTF 2.0 models, in case you want to have ThreeJS (or Cesium) come up first.
Also I should add a setting to enable (by default) the auto-updating behavior, so folks can turn that off entirely if they prefer.

Thanks for the response! Good to know there's a setting for the default.
However, at least my usecase here is preparing models so that they are working in different render engines, so I would like it to stay on whatever I had selected. Usually when I find an issue with an engine, I update the files and want to check what that change did in the same engine.


Update UUID columns to use BLOB type

Storage-wise, at least for audit_logs, BLOB is more efficient than TEXT for UUIDs.

Closed in 423bcc4520ad2e0ddb4e1db1f1e5e5cd660844ea.


Generated code should not contain copyright headers

The output code of the generators and the code ejected from Composer contain copyright headers. This is not correct, the generated code is produced by a tool we provide and is under the ownership of the user of the tool.
Note, for example, when you use the Add Controller feature in Visual Studio while constructing a web application the generated controller does not contain Microsoft copyright headers. Instead the developer is free to add their own copyright headers.
This also applies to the code ejected from Composer; opening the issue in samples initially because this is where the generators currently live.

Agree with you @johnataylor . Users should be able to use the code generated from various tools and use them to build sophisticated bot. Adding @cwhitten for composer.


cli: Remove legacy SSH git code

We switched off of SSH git at the end of August, so it’s very unlikely that anyone is using it.

LGTM


"python" needs to be capitalized on top page

In the sentence of text on the top page, "python" needs to be capitalized:
https://python-programming.quantecon.org/

hey @jstac do you mean in the small blurb about the site?


Typing the "return" keyword auto-corrects to "KEY_RETURN"

Operating system or device - Godot version:
Windows, using Godot 2.1 RC1
Issue description (what happened, and what was expected):
When editing a gd script, if you type return followed by a newline, it 'smartly' replaces it with KEY_RETURN
Link to minimal example project (optional but very welcome):
http://imgur.com/a/KwJ56

Also why is draw_texture_rect_region matched?

This might be solved easily if return is added to the auto-completion list.

Also "false" tends to give you "ERR_FILE_ALREADY_IN_USE".

Closed because I remade a more general issue #5972

... you could have edited the original post, but anyway


Add privacy page

Screenshots
mobile

desktop

Thank @huwd ! I'll rebase and merge this in.

nice...
...
...ly
done


fixdate_add function should accept date type as its param

Proposed changes
pick from master https://github.com/apache/doris/pull/34035

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

run buildall


[labs/context] Request to allow custom ContextProvider in @provide decorator

Should this be an RFC?

[X] This is not a substantial change

Which package is this a feature request for?
Context (@lit-labs/context)
Description
I've been having a discussion in #3685 about how to deal with using an instance of a class as the value for the context value. Issue is, I want to encapsulate the logic for something, such as a timer that keeps track of the timer and status (stop, running, paused) without having to make the providing element know anything about it - aka it should be able to update its internal values itself.
@vdegenne informed me I could do this with a reactive controller. Since ContextProvider is already a reactive controller, I modified his example to extend ContextProvider, cutting out a bunch of code and allowing the timer to call setValue directly and without having to add another function to the providing element. Works pretty well:
Playground Demo
Proposal
Issue is I cannot use @provide() directly as that forces creation of a ContextProvider. What I'd like to see is the ability to optionally pass in a provider class to use for that. I think this unlocks a lot of deeper possibilities with context providers if you can make your own custom provider class.
@provide({ context: timerContext, provider: TimerProvider});

Alternatives and Workarounds
Don't use the decorator and manually call it but that's no fun:
public timerContext = new TimerProvider(this, timerContext);

The @provide decorator is intended for providing values set into the decorated field. Your example syntax isn't legal JS or TS because there isn't a decorated member:
@provide({ context: timerContext, provider: TimerProvider});

@rictic Could this be relooked at? I'm back to wishing something like this was built into Lit.
I apologize for not including the full example and just showing what I thought the @provide syntax should be. I've updated my Lit Playground Example where I've modified the @provide decorator to allow a custom ContextProvider to be used.
Heres a snippet from the playground of the very minor changes I'd like to see to allow overriding the default ContextProvider. It would have no changes to any current projects, but would allow more flexibility.
function provide({ context, provider }) {
  return ((protoOrTarget,nameOrContext) => {
      ...

      // Standard decorators branch
      nameOrContext.addInitializer(function (this) {
        const ProviderClass = provider || ContextProvider;
        controllerMap.set(this, new ContextProvider(this, {context}));
      });

     ...
  });
}

The end goal here is to have a provided object that is able to update itself. I do not see anyway this is possible without using a custom ContextProvider.
The issue is if I want to bundle logic for controlling a timer, I cant just make a Timer class and provide that as that timer has no way of telling its consumer its updated. In the following example, the consumer will never update because the reference to the object isnt changing. The only way I see this is possible is bundling the timer logic into a ContextProvider.
class Timer {
   value = 0;

  tick() {
     value += 1;
  }
}

class AppContainer extends LitElement {
  @provide({ context: timerContext })
  timer = new Timer();

  constructor() {
    super();
    setInterval(() => {
    timer.tick();
    });
  }
}

class TimerDisplay extends LitElement {
  @consume({ context: timerContext, subscribe?: boolean })
  timer;

  render() {
    return html`Time is ${this.timer.value}`;
  }

@joezappie I think this is a misuse of ContextProvider. It's not meant to be a general solution for observable state, it's mean to allow passing values down a tree. What you're doing with this.setValue(this, true) is telling all consumers that there's a new Timer, when there isn't. Our intention with context is definitely not to encourage every observable object to be a context.
What I would do is make an observable Timer class. There are several options including EventTarget, signals, observables, etc. We have a @lit-labs/preact-signals package this you could use now.
One of the most platform-centric and bare-bones way to be observable is to implement EventTarget. Then the consumer just has to listen to an event and update. I've made a decorator to make this more ergonomic before:
const listeners = new WeakMap<Element, () => void>();

/**
 * A property decorator that subscribes to an event on the property value and
 * calls `requestUpdate` when the event fires.
 */
export const updateOnEvent = (eventName: string) => (target: ReactiveElement, propertyKey: string) => {
  const descriptor = Object.getOwnPropertyDescriptor(target, propertyKey)!;

  const {get, set} = descriptor;
  const newDescriptor = {
    ...descriptor,
    set(this: ReactiveElement, v: EventTarget) {
      let listener = listeners.get(this);
      if (listener === undefined) {
        listeners.set(this, listener = () => this.requestUpdate());
      }
      const oldValue = get!.call(this);
      oldValue?.removeEventListener?.(eventName, listener);
      v?.addEventListener?.(eventName, listener);
      return set!.call(this, v);
    },
  };
  Object.defineProperty(target, propertyKey, newDescriptor);
};

I've update your playground top use this: https://lit.dev/playground/#gist=e3600ffc30ff9359404d4268c59d22a7

@justinfagnani Thank you for the fast reply!
I think what you've shown is an excellent solution to what I'm looking to do. I agree, I always felt weird trying to turn the provider into a controller.
I also like that components can subscribe to different events if only certain parts of the controller affect their display. Lots of flexibility there, awesome!


Add support for communicating with CDJ-3000

Communication with a CDJ-3000 is different, see https://djl-analysis.deepsymmetry.org/djl-analysis/startup.html#startup-3000
This PR introduces the needed changes for this different communication while allowing backwards-compatibility.

Does anything break if it’s just always set?

Does anything break if it’s just always set?

I have tested it with a CDJ-3000 and works perfectly. I wasn't able to test it with other CDJs or other setups since I don't have access to them but normally everything should work fine.

I’ll ask around in the dysentery Zulip. I might not be able to get to this for a week or so. Got a lot going on IRL right now!
thanks again for opening this PR!


panicked at 'DeserializeError { location: Some("TransactionBody.outputs.TransactionOutputs.TransactionOutput.address.Address"), failure: CBOR(TrailingData) }

2022-05-13T21:01:52.615267Z  INFO carp::postgres_sink: Starting epoch 337 at block #7225024 (ef0388b8fc14ae432f0e7bf606efcf76f301efee6e28e67ae6987669db18d5a5)
thread '<unnamed>' panicked at 'DeserializeError { location: Some("TransactionBody.outputs.TransactionOutputs.TransactionOutput.address.Address"), failure: CBOR(TrailingData) }
Block cbor: "8205..."
Tx hash: "9c1d13c1d2153651c3c8ff1dfeb16e0b9de5f519fa482d1f07d4320e2ab78fd3"
', tasks/src/multiera/multiera_txs.rs:112:21

tx: https://cardanoscan.io/transaction/9c1d13c1d2153651c3c8ff1dfeb16e0b9de5f519fa482d1f07d4320e2ab78fd3
block: https://cardanoscan.io/block/7225024
full log: carp_panic_9c1d13c1d2153651c3c8ff1dfeb16e0b9de5f519fa482d1f07d4320e2ab78fd3.log

This is a known issue that can't be properly fixed until the Vasil hardfork


Fix input/param bug, refactor docs

What is this PR out to accomplish?
This PR re-adds the accidentally deleted container-registry-user input to action.yml and creates a table for inputs in README.md

Closing: will do a squash merge PR when I get this buffed out.


Information returned isn't correct

Version info:
catt v0.11.0, Yearning Yachtman.
catt -d <IP_ADDRESS> info current_time: 0 content_id: None content_type: None duration: None stream_type: UNKNOWN idle_reason: None media_session_id: None playback_rate: 1 player_state: UNKNOWN supported_media_commands: 0 volume_level: 0.5 volume_muted: False media_custom_data: {} media_metadata: {} subtitle_tracks: {} current_subtitle_tracks: [] last_updated: None is_active_input: False is_stand_by: True app_id: 84912283 display_name: DashCast namespaces: ['urn:x-cast:com.google.cast.debugoverlay', 'urn:x-cast:com.google.cast.cac', 'urn:x-cast:com.madmod.dashcast'] session_id: 60b3605a-92b6-4601-b4ee-0bc6d6b938fe transport_id: 60b3605a-92b6-4601-b4ee-0bc6d6b938fe status_text: Overview - Home Assistant icon_url:
I get this info back but the device isn't casting actively. If I send the stop command it corrects the info but it wont correct its self automatically. This happened in a recent update to my nest hubs.
My nest hub's version is <IP_ADDRESS>3038810

That's odd, but I'm afraid I don't have a Nest hub to be able to reproduce, I will try with my Chromecast and see, thank you.

I tried replicating it on my chromecast ultra but it doesn't seem to be working, is there anything I can do to get you the information you need?

https://support.google.com/googlenest/thread/21806578?hl=en
This might be an issue with the nest hubs in general, this support topic describes the same issue for apps like youtube. I'm going to cast some yule logs via the normal casting method and I'll update you.

I wasn't able to replicate it with the normal cast methods, also something that I didn't mention is that after like 15 mins the site I casted would stop casting and that's when I get the incorrect info returned to me if I check status so I can't recast when the cast stops.

Sounds like a duplicate of #260.

Seems like this, I'll close this then thanks.


Enable REDIS_READY_PATTERN to be configurable

Hi, I'm using Redis 4.0.8 and the startup message do not contains the sentence stated in REDIS_READY_PATTERN ".*The server is now ready to accept connections on port.*". Is there a way to make this as configurable? Since it is now encourage to bundle your own binary.
Thanks.

Hello,
I guess RedisServer and RedisSentinel could take an optional Pattern to use, instead of the default one (a bit like it's done for the port).
That being said, I don't really have time to work on it so feel free to open a PR for it :)
Thanks

PR #11 submitted. I think it would be good to have the exec provider maintaining the exec and the pattern. Also the RedisServer and RedisSentinel has public interface to override the pattern (for pre-installed REDIS). Even though for pre-installed REDIS, I think user should always define their own ExecProvider and set the provider in Redis Builder.

Fixed via #11

I released version 1.6.0 to bintray. Enjoy.

@fmonniot THANKS! Great of you to keep this project alive!!


Possible invalid processing of 404 from google storage

Uhnahndled exception causing our application server crash. Possible cause - invalid handling of 404-alike case from google storage.
I reprting this issue here because only functions from this library mentioned in exception callstack.
at /opt/app/backend/node_modules/google-gax/lib/api_callable.js:356:17 'TypeError: Cannot read property \'length\' of undefined\n at BundleExecutor.schedule (/opt/app/backend/node_modules/google-gax/lib/bundling.js:334:34)\n at /opt/app/backend/node_modules/google-gax/lib/bundling.js:474:20\n at Canceller.call (/opt/app/backend/node_modules/google-gax/lib/api_callable.js:110:19)\n at Bundleable.call (/opt/app/backend/node_modules/google-gax/lib/bundling.js:473:12)\n at /opt/app/backend/node_modules/google-gax/lib/api_callable.js:356:17'
var bundledField = request[this._descriptor.bundledField]; var elementCount = bundledField.length; << bundledField is undefined. How?!

I'm also seeing this issue when trying to log to StackDriver through the cloud-functions-emulator.
TypeError: Cannot read property 'length' of undefined
    at BundleExecutor.schedule (/opt/traverse-functions/node_modules/google-gax/lib/bundling.js:345:34)
    at /opt/traverse-functions/node_modules/google-gax/lib/bundling.js:500:20
    at Canceller.call (/opt/traverse-functions/node_modules/google-gax/lib/api_callable.js:109:19)
    at Bundleable.call (/opt/traverse-functions/node_modules/google-gax/lib/bundling.js:499:12)
    at /opt/traverse-functions/node_modules/google-gax/lib/api_callable.js:384:19
    at process._tickCallback (internal/process/next_tick.js:109:7)

Same here, module fails on  var elementCount = bundledField.length; in node_modules/google-gax/lib/bundling.js in BundleExecutor.schedule at line 345:35
Any info on the matter ?

I'm seeing this error pop up frequently in node's unhandledRejection callback when using @google-cloud/logging-bunyan (0.8.2) within Firebase functions (SDK 2.0.2).
Specifically, the TypeError: Cannot read property 'length' of undefined error is thrown on this line due to the bundle field "entries" being undefined:
https://github.com/googleapis/gax-nodejs/blob/3360c3ea0ab254da91c42ac8b7d03d3bbb6df402/src/bundling.ts#L379-L380
That function is called from this line and subsequently caught:
https://github.com/googleapis/gax-nodejs/blob/9a35ccf7d8c4d331889b85008e6fdca05169983c/src/api_callable.ts#L407-L412
However, apiCaller.fail writes out to a node stream which emits an error that goes unhandled and crashes:
https://github.com/googleapis/gax-nodejs/blob/9a35ccf7d8c4d331889b85008e6fdca05169983c/src/api_callable.ts#L351-L353
I'm not sure if the problem lies up the stack in https://github.com/googleapis/nodejs-logging/issues/178, or if it needs to be handled here.


Get the nested property count

Consider this as more of like a question, rather than an issue.
I have a json data as follows:
var myJson = {
    "features": [
      {
        "id": 1,
        "result": "pass",
        "scenarios": [
          {
              "id": "Scenario-1",
              "steps": [
                {
                   "id": "Step-1"
                },
                {
                   "id": "Step-2"
                }
              ]
          },
          {
              "id": "Scenario-2",
              "steps": [
                {
                   "id": "Step-3"
                },
                {
                   "id": "Step-4"
                },
                {
                   "id": "Step-5"
                },
                {
                   "id": "Step-6"
                }
              ]
          }
        ]
      }
   ]
}

I created a custom helper to get the scenario count as follows:
Handlebars.registerHelper('totalTestCount', function(items) {
    var totalTest = 0;

    for (var i = 0; i < items.length; i++) {
        totalTest += items[i].scenarios.length;
    };

    return totalTest;
});

But I'm unhappy with the implementation. Because, I have to implement another custom helper to get the steps count which is nested to scenarios.
So what do I want to achieve is, I would like to create the template as:

{{#totalCount features scenarios}}{{/totalCount}}

should be rendered as:

2

If there is any nested property inside the scenarios, then the template will be:

{{#totalCount features scenarios steps}}{{/totalCount}}

should be rendered as, for example:

6

I'm not sure whether this is possible or not. Please let me know on how to approach this.

I'm not sure what you are asking here, but closing since this is not a bug report or a feature request. I'd recommend asking questions about your implementation concerns in Stack Overflow as there is a bit of a community built around that.


Add: Ability to Create Default Gmail MX Records

Description
Please start the pull request title with the jira ticket corresponding to the work if applicable. Please include a short summary of the feature added, the change, or issue fixed.
Type of Change

Bug fix ('fix', 'repair', 'bug')
Non breaking change ('update', 'change')
Breaking change ('break', 'deprecate')

If the any above types of change apply to this pull request, please ensure to include one of the listed keywords in the pull request title.
Applicable E2E Tests
To run relevant E2E tests, run these commands in 3 separate terminals:

yarn && yarn start
yarn selenium
yarn e2e --spec=COMMA_SEPARATED_LIST_OF_SPECS_HERE --browser=headlessChrome

Note to Reviewers
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration.

posting for history: https://github.com/linode/manager/pull/5183


Perk Suggestion

How about for all cars but Monster truck (good reason for this) Hydrolics, make it 5k GCs for the perk maybe?

+1

I don't know why anyone need hydraulics at all :D But, well, yeah, hydraulics it's fun, especially on the mix server. I want to see more opinions about this suggestion. And if we'll want to make it, how it should work? You buy perk and enable/disable hydraulics by pressing the button in GC shop and it will be affected on the all cars except monster etc?

buy merk and you can add hydrolics to each car like you do with PJ all but the monster truck as with monster you add it you can't control it as the wheels go up to the body


add mf proxies

not been tested yet
UPDATE: testing done

tested with:
load_data: True data_path: "./storage/data_oracle/test_database_fid.npy"

Remark: we could move the conversion of integer -> one hot encoding conversion of fidelity to datahandler.preprocess_for_dataloader()

yes, i agree. this is more of a first working version and I think we can update it as we test these proxies in different settings