[AVM Module Issue]: [Bump to 0.3.0 from 0.2.0] Error: Failed to retrieve resource

Check for previous/existing GitHub issues

[x] I have checked for previous/existing GitHub issues

Issue Type?
Bug
(Optional) Module Version
0.3.0
(Optional) Correlation Id
No response
Description
Verified that this occurs only when updating to 0.3.0 from 0.2.0 on the module "Azure/avm-ptn-alz-management/azurerm"
This is the module configuration (Unchanged since initial setup when using alz-management, before avm)
module "alz-management" {
  source  = "Azure/avm-ptn-alz-management/azurerm"
  version = "0.3.0"

  automation_account_name      = "aa-management-${var.DEFAULT_LOCATION}"
  location                     = var.DEFAULT_LOCATION
  log_analytics_workspace_name = "log-management-${var.DEFAULT_LOCATION}"
  resource_group_name          = "rg-management-${var.DEFAULT_LOCATION}"

  providers = {
    azurerm = azurerm.management
  }
}

The plan generated by terraform, when bumping the version to 0.3.0:
Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
  + create
  ~ update in-place
  - destroy

Terraform will perform the following actions:

  # module.alz-core.azurerm_management_group_policy_assignment.enterprise_scale["/providers/Microsoft.Management/managementGroups/ALZ-CANARY-landing-zones/providers/Microsoft.Authorization/policyAssignments/Enforce-GR-KeyVault"] will be updated in-place
  ~ resource "azurerm_management_group_policy_assignment" "enterprise_scale" {
        id                   = "/providers/Microsoft.Management/managementGroups/ALZ-CANARY-landing-zones/providers/Microsoft.Authorization/policyAssignments/Enforce-GR-KeyVault"
        name                 = "Enforce-GR-KeyVault"
      - parameters           = jsonencode({})
        # (8 unchanged attributes hidden)

        # (1 unchanged block hidden)
    }

  # module.alz-management.azapi_resource.data_collection_rule["change_tracking"] will be created
  + resource "azapi_resource" "data_collection_rule" {
      + body                      = {
          + properties = {
              + dataFlows    = [
                  + {
                      + destinations = [
                          + "Microsoft-CT-Dest",
                        ]
                      + streams      = [
                          + "Microsoft-ConfigurationChange",
                          + "Microsoft-ConfigurationChangeV2",
                          + "Microsoft-ConfigurationData",
                        ]
                    },
                ]
              + dataSources  = {
                  + extensions = [
                      + {
                          + extensionName     = "ChangeTracking-Windows"
                          + extensionSettings = {
                              + enableFiles       = true
                              + enableInventory   = true
                              + enableRegistry    = true
                              + enableServices    = true
                              + enableSoftware    = true
                              + fileSettings      = {
                                  + fileCollectionFrequency = 2700
                                }
                              + inventorySettings = {
                                  + inventoryCollectionFrequency = 36000
                                }
                              + registrySettings  = {
                                  + registryCollectionFrequency = 3600
                                  + registryInfo                = [
                                      + {
                                          + description = ""
                                          + enabled     = false
                                          + groupTag    = "Recommended"
                                          + keyName     = "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Group Policy\\Scripts\\Startup"
                                          + name        = "Registry_1"
                                          + recurse     = true
                                          + valueName   = ""
                                        },
                                      + {
                                          + description = ""
                                          + enabled     = false
                                          + groupTag    = "Recommended"
                                          + keyName     = "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Group Policy\\Scripts\\Shutdown"
                                          + name        = "Registry_2"
                                          + recurse     = true
                                          + valueName   = ""
                                        },
                                      + {
                                          + description = ""
                                          + enabled     = false
                                          + groupTag    = "Recommended"
                                          + keyName     = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run"
                                          + name        = "Registry_3"
                                          + recurse     = true
                                          + valueName   = ""
                                        },
                                      + {
                                          + description = ""
                                          + enabled     = false
                                          + groupTag    = "Recommended"
                                          + keyName     = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Active Setup\\Installed Components"
                                          + name        = "Registry_4"
                                          + recurse     = true
                                          + valueName   = ""
                                        },
                                      + {
                                          + description = ""
                                          + enabled     = false
                                          + groupTag    = "Recommended"
                                          + keyName     = "HKEY_LOCAL_MACHINE\\Software\\Classes\\Directory\\ShellEx\\ContextMenuHandlers"
                                          + name        = "Registry_5"
                                          + recurse     = true
                                          + valueName   = ""
                                        },
                                      + {
                                          + description = ""
                                          + enabled     = false
                                          + groupTag    = "Recommended"
                                          + keyName     = "HKEY_LOCAL_MACHINE\\Software\\Classes\\Directory\\Background\\ShellEx\\ContextMenuHandlers"
                                          + name        = "Registry_6"
                                          + recurse     = true
                                          + valueName   = ""
                                        },
                                      + {
                                          + description = ""
                                          + enabled     = false
                                          + groupTag    = "Recommended"
                                          + keyName     = "HKEY_LOCAL_MACHINE\\Software\\Classes\\Directory\\Shellex\\CopyHookHandlers"
                                          + name        = "Registry_7"
                                          + recurse     = true
                                          + valueName   = ""
                                        },
                                      + {
                                          + description = ""
                                          + enabled     = false
                                          + groupTag    = "Recommended"
                                          + keyName     = "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ShellIconOverlayIdentifiers"
                                          + name        = "Registry_8"
                                          + recurse     = true
                                          + valueName   = ""
                                        },
                                      + {
                                          + description = ""
                                          + enabled     = false
                                          + groupTag    = "Recommended"
                                          + keyName     = "HKEY_LOCAL_MACHINE\\Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ShellIconOverlayIdentifiers"
                                          + name        = "Registry_9"
                                          + recurse     = true
                                          + valueName   = ""
                                        },
                                      + {
                                          + description = ""
                                          + enabled     = false
                                          + groupTag    = "Recommended"
                                          + keyName     = "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Browser Helper Objects"
                                          + name        = "Registry_10"
                                          + recurse     = true
                                          + valueName   = ""
                                        },
                                      + {
                                          + description = ""
                                          + enabled     = false
                                          + groupTag    = "Recommended"
                                          + keyName     = "HKEY_LOCAL_MACHINE\\Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Browser Helper Objects"
                                          + name        = "Registry_11"
                                          + recurse     = true
                                          + valueName   = ""
                                        },
                                      + {
                                          + description = ""
                                          + enabled     = false
                                          + groupTag    = "Recommended"
                                          + keyName     = "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Internet Explorer\\Extensions"
                                          + name        = "Registry_12"
                                          + recurse     = true
                                          + valueName   = ""
                                        },
                                      + {
                                          + description = ""
                                          + enabled     = false
                                          + groupTag    = "Recommended"
                                          + keyName     = "HKEY_LOCAL_MACHINE\\Software\\Wow6432Node\\Microsoft\\Internet Explorer\\Extensions"
                                          + name        = "Registry_13"
                                          + recurse     = true
                                          + valueName   = ""
                                        },
                                      + {
                                          + description = ""
                                          + enabled     = false
                                          + groupTag    = "Recommended"
                                          + keyName     = "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Drivers32"
                                          + name        = "Registry_14"
                                          + recurse     = true
                                          + valueName   = ""
                                        },
                                      + {
                                          + description = ""
                                          + enabled     = false
                                          + groupTag    = "Recommended"
                                          + keyName     = "HKEY_LOCAL_MACHINE\\Software\\Wow6432Node\\Microsoft\\Windows NT\\CurrentVersion\\Drivers32"
                                          + name        = "Registry_15"
                                          + recurse     = true
                                          + valueName   = ""
                                        },
                                      + {
                                          + description = ""
                                          + enabled     = false
                                          + groupTag    = "Recommended"
                                          + keyName     = "HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\Session Manager\\KnownDlls"
                                          + name        = "Registry_16"
                                          + recurse     = true
                                          + valueName   = ""
                                        },
                                      + {
                                          + description = ""
                                          + enabled     = false
                                          + groupTag    = "Recommended"
                                          + keyName     = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\Notify"
                                          + name        = "Registry_17"
                                          + recurse     = true
                                          + valueName   = ""
                                        },
                                    ]
                                }
                              + servicesSettings  = {
                                  + serviceCollectionFrequency = 1800
                                }
                              + softwareSettings  = {
                                  + softwareCollectionFrequency = 1800
                                }
                            }
                          + name              = "CTDataSource-Windows"
                          + streams           = [
                              + "Microsoft-ConfigurationChange",
                              + "Microsoft-ConfigurationChangeV2",
                              + "Microsoft-ConfigurationData",
                            ]
                        },
                      + {
                          + extensionName     = "ChangeTracking-Linux"
                          + extensionSettings = {
                              + enableFiles       = true
                              + enableInventory   = true
                              + enableRegistry    = false
                              + enableServices    = true
                              + enableSoftware    = true
                              + fileSettings      = {
                                  + fileCollectionFrequency = 900
                                  + fileInfo                = [
                                      + {
                                          + destinationPath       = "/etc/.*.conf"
                                          + enabled               = true
                                          + groupTag              = "Recommended"
                                          + links                 = "Follow"
                                          + maxContentsReturnable = 5000000
                                          + maxOutputSize         = 500000
                                          + name                  = "ChangeTrackingLinuxPath_default"
                                          + pathType              = "File"
                                          + recurse               = true
                                          + type                  = "File"
                                          + useSudo               = true
                                        },
                                    ]
                                }
                              + inventorySettings = {
                                  + inventoryCollectionFrequency = 36000
                                }
                              + servicesSettings  = {
                                  + serviceCollectionFrequency = 300
                                }
                              + softwareSettings  = {
                                  + softwareCollectionFrequency = 300
                                }
                            }
                          + name              = "CTDataSource-Linux"
                          + streams           = [
                              + "Microsoft-ConfigurationChange",
                              + "Microsoft-ConfigurationChangeV2",
                              + "Microsoft-ConfigurationData",
                            ]
                        },
                    ]
                }
              + description  = "Data collection rule for CT"
              + destinations = {
                  + logAnalytics = [
                      + {
                          + name                = "Microsoft-CT-Dest"
                          + workspaceResourceId = "/subscriptions/10309b5e-1978-4167-8199-87d36cfbe44b/resourceGroups/rg-management-norwayeast/providers/Microsoft.OperationalInsights/workspaces/log-management-norwayeast"
                        },
                    ]
                }
            }
        }
      + id                        = (known after apply)
      + ignore_casing             = false
      + ignore_missing_property   = true
      + location                  = "norwayeast"
      + name                      = "dcr-change-tracking"
      + output                    = (known after apply)
      + parent_id                 = "/subscriptions/10309b5e-1978-4167-8199-87d36cfbe44b/resourceGroups/rg-management-norwayeast"
      + removing_special_chars    = false
      + schema_validation_enabled = true
      + type                      = "Microsoft.Insights/dataCollectionRules@2021-04-01"
    }

  # module.alz-management.azapi_resource.data_collection_rule["defender_sql"] will be created
  + resource "azapi_resource" "data_collection_rule" {
      + body                      = {
          + properties = {
              + dataFlows    = [
                  + {
                      + destinations = [
                          + "LogAnalyticsDest",
                        ]
                      + streams      = [
                          + "Microsoft-DefenderForSqlAlerts",
                          + "Microsoft-DefenderForSqlLogins",
                          + "Microsoft-DefenderForSqlTelemetry",
                          + "Microsoft-DefenderForSqlScanEvents",
                          + "Microsoft-DefenderForSqlScanResults",
                        ]
                    },
                ]
              + dataSources  = {
                  + extensions = [
                      + {
                          + extensionName     = "MicrosoftDefenderForSQL"
                          + extensionSettings = {
                              + enableCollectionOfSqlQueriesForSecurityResearch = false
                            }
                          + name              = "MicrosoftDefenderForSQL"
                          + streams           = [
                              + "Microsoft-DefenderForSqlAlerts",
                              + "Microsoft-DefenderForSqlLogins",
                              + "Microsoft-DefenderForSqlTelemetry",
                              + "Microsoft-DefenderForSqlScanEvents",
                              + "Microsoft-DefenderForSqlScanResults",
                            ]
                        },
                    ]
                }
              + description  = "Data collection rule for Defender for SQL."
              + destinations = {
                  + logAnalytics = [
                      + {
                          + name                = "LogAnalyticsDest"
                          + workspaceResourceId = "/subscriptions/10309b5e-1978-4167-8199-87d36cfbe44b/resourceGroups/rg-management-norwayeast/providers/Microsoft.OperationalInsights/workspaces/log-management-norwayeast"
                        },
                    ]
                }
            }
        }
      + id                        = (known after apply)
      + ignore_casing             = false
      + ignore_missing_property   = true
      + location                  = "norwayeast"
      + name                      = "dcr-defender-sql"
      + output                    = (known after apply)
      + parent_id                 = "/subscriptions/10309b5e-1978-4167-8199-87d36cfbe44b/resourceGroups/rg-management-norwayeast"
      + removing_special_chars    = false
      + schema_validation_enabled = true
      + type                      = "Microsoft.Insights/dataCollectionRules@2021-04-01"
    }

  # module.alz-management.azapi_resource.data_collection_rule["vm_insights"] will be created
  + resource "azapi_resource" "data_collection_rule" {
      + body                      = {
          + properties = {
              + dataFlows    = [
                  + {
                      + destinations = [
                          + "VMInsightsPerf-Logs-Dest",
                        ]
                      + streams      = [
                          + "Microsoft-InsightsMetrics",
                        ]
                    },
                  + {
                      + destinations = [
                          + "VMInsightsPerf-Logs-Dest",
                        ]
                      + streams      = [
                          + "Microsoft-ServiceMap",
                        ]
                    },
                ]
              + dataSources  = {
                  + extensions          = [
                      + {
                          + extensionName     = "DependencyAgent"
                          + extensionSettings = {}
                          + name              = "DependencyAgentDataSource"
                          + streams           = [
                              + "Microsoft-ServiceMap",
                            ]
                        },
                    ]
                  + performanceCounters = [
                      + {
                          + counterSpecifiers          = [
                              + "\\VmInsights\\DetailedMetrics",
                            ]
                          + name                       = "VMInsightsPerfCounters"
                          + samplingFrequencyInSeconds = 60
                          + scheduledTransferPeriod    = "PT1M"
                          + streams                    = [
                              + "Microsoft-InsightsMetrics",
                            ]
                        },
                    ]
                }
              + description  = "Data collection rule for VM Insights."
              + destinations = {
                  + logAnalytics = [
                      + {
                          + name                = "VMInsightsPerf-Logs-Dest"
                          + workspaceResourceId = "/subscriptions/10309b5e-1978-4167-8199-87d36cfbe44b/resourceGroups/rg-management-norwayeast/providers/Microsoft.OperationalInsights/workspaces/log-management-norwayeast"
                        },
                    ]
                }
            }
        }
      + id                        = (known after apply)
      + ignore_casing             = false
      + ignore_missing_property   = true
      + location                  = "norwayeast"
      + name                      = "dcr-vm-insights"
      + output                    = (known after apply)
      + parent_id                 = "/subscriptions/10309b5e-1978-4167-8199-87d36cfbe44b/resourceGroups/rg-management-norwayeast"
      + removing_special_chars    = false
      + schema_validation_enabled = false
      + type                      = "Microsoft.Insights/dataCollectionRules@2021-04-01"
    }

  # module.alz-management.azapi_resource.sentinel_onboarding[0] will be created
  + resource "azapi_resource" "sentinel_onboarding" {
      + body                      = {
          + properties = {
              + customerManagedKey = false
            }
        }
      + id                        = (known after apply)
      + ignore_casing             = false
      + ignore_missing_property   = true
      + name                      = "default"
      + output                    = (known after apply)
      + parent_id                 = "/subscriptions/10309b5e-1978-4167-8199-87d36cfbe44b/resourceGroups/rg-management-norwayeast/providers/Microsoft.OperationalInsights/workspaces/log-management-norwayeast"
      + removing_special_chars    = false
      + schema_validation_enabled = true
      + type                      = "Microsoft.SecurityInsights/onboardingStates@2024-03-01"
    }

  # module.alz-management.azurerm_log_analytics_solution.management["Microsoft/OMSGallery/AgentHealthAssessment"] will be destroyed
  # (because key ["Microsoft/OMSGallery/AgentHealthAssessment"] is not in for_each map)
  - resource "azurerm_log_analytics_solution" "management" {
      - id                    = "/subscriptions/10309b5e-1978-4167-8199-87d36cfbe44b/resourceGroups/rg-management-norwayeast/providers/Microsoft.OperationsManagement/solutions/AgentHealthAssessment(log-management-norwayeast)" -> null
      - location              = "norwayeast" -> null
      - resource_group_name   = "rg-management-norwayeast" -> null
      - solution_name         = "AgentHealthAssessment" -> null
      - tags                  = {} -> null
      - workspace_name        = "log-management-norwayeast" -> null
      - workspace_resource_id = "/subscriptions/10309b5e-1978-4167-8199-87d36cfbe44b/resourceGroups/rg-management-norwayeast/providers/Microsoft.OperationalInsights/workspaces/log-management-norwayeast" -> null

      - plan {
          - name           = "AgentHealthAssessment(log-management-norwayeast)" -> null
          - product        = "OMSGallery/AgentHealthAssessment" -> null
          - publisher      = "Microsoft" -> null
            # (1 unchanged attribute hidden)
        }
    }

  # module.alz-management.azurerm_log_analytics_solution.management["Microsoft/OMSGallery/AntiMalware"] will be destroyed
  # (because key ["Microsoft/OMSGallery/AntiMalware"] is not in for_each map)
  - resource "azurerm_log_analytics_solution" "management" {
      - id                    = "/subscriptions/10309b5e-1978-4167-8199-87d36cfbe44b/resourceGroups/rg-management-norwayeast/providers/Microsoft.OperationsManagement/solutions/AntiMalware(log-management-norwayeast)" -> null
      - location              = "norwayeast" -> null
      - resource_group_name   = "rg-management-norwayeast" -> null
      - solution_name         = "AntiMalware" -> null
      - tags                  = {} -> null
      - workspace_name        = "log-management-norwayeast" -> null
      - workspace_resource_id = "/subscriptions/10309b5e-1978-4167-8199-87d36cfbe44b/resourceGroups/rg-management-norwayeast/providers/Microsoft.OperationalInsights/workspaces/log-management-norwayeast" -> null

      - plan {
          - name           = "AntiMalware(log-management-norwayeast)" -> null
          - product        = "OMSGallery/AntiMalware" -> null
          - publisher      = "Microsoft" -> null
            # (1 unchanged attribute hidden)
        }
    }

  # module.alz-management.azurerm_log_analytics_solution.management["Microsoft/OMSGallery/ChangeTracking"] will be destroyed
  # (because key ["Microsoft/OMSGallery/ChangeTracking"] is not in for_each map)
  - resource "azurerm_log_analytics_solution" "management" {
      - id                    = "/subscriptions/10309b5e-1978-4167-8199-87d36cfbe44b/resourceGroups/rg-management-norwayeast/providers/Microsoft.OperationsManagement/solutions/ChangeTracking(log-management-norwayeast)" -> null
      - location              = "norwayeast" -> null
      - resource_group_name   = "rg-management-norwayeast" -> null
      - solution_name         = "ChangeTracking" -> null
      - tags                  = {} -> null
      - workspace_name        = "log-management-norwayeast" -> null
      - workspace_resource_id = "/subscriptions/10309b5e-1978-4167-8199-87d36cfbe44b/resourceGroups/rg-management-norwayeast/providers/Microsoft.OperationalInsights/workspaces/log-management-norwayeast" -> null

      - plan {
          - name           = "ChangeTracking(log-management-norwayeast)" -> null
          - product        = "OMSGallery/ChangeTracking" -> null
          - publisher      = "Microsoft" -> null
            # (1 unchanged attribute hidden)
        }
    }

  # module.alz-management.azurerm_log_analytics_solution.management["Microsoft/OMSGallery/SQLAdvancedThreatProtection"] will be destroyed
  # (because key ["Microsoft/OMSGallery/SQLAdvancedThreatProtection"] is not in for_each map)
  - resource "azurerm_log_analytics_solution" "management" {
      - id                    = "/subscriptions/10309b5e-1978-4167-8199-87d36cfbe44b/resourceGroups/rg-management-norwayeast/providers/Microsoft.OperationsManagement/solutions/SQLAdvancedThreatProtection(log-management-norwayeast)" -> null
      - location              = "norwayeast" -> null
      - resource_group_name   = "rg-management-norwayeast" -> null
      - solution_name         = "SQLAdvancedThreatProtection" -> null
      - tags                  = {} -> null
      - workspace_name        = "log-management-norwayeast" -> null
      - workspace_resource_id = "/subscriptions/10309b5e-1978-4167-8199-87d36cfbe44b/resourceGroups/rg-management-norwayeast/providers/Microsoft.OperationalInsights/workspaces/log-management-norwayeast" -> null

      - plan {
          - name           = "SQLAdvancedThreatProtection(log-management-norwayeast)" -> null
          - product        = "OMSGallery/SQLAdvancedThreatProtection" -> null
          - publisher      = "Microsoft" -> null
            # (1 unchanged attribute hidden)
        }
    }

  # module.alz-management.azurerm_log_analytics_solution.management["Microsoft/OMSGallery/SQLAssessment"] will be destroyed
  # (because key ["Microsoft/OMSGallery/SQLAssessment"] is not in for_each map)
  - resource "azurerm_log_analytics_solution" "management" {
      - id                    = "/subscriptions/10309b5e-1978-4167-8199-87d36cfbe44b/resourceGroups/rg-management-norwayeast/providers/Microsoft.OperationsManagement/solutions/SQLAssessment(log-management-norwayeast)" -> null
      - location              = "norwayeast" -> null
      - resource_group_name   = "rg-management-norwayeast" -> null
      - solution_name         = "SQLAssessment" -> null
      - tags                  = {} -> null
      - workspace_name        = "log-management-norwayeast" -> null
      - workspace_resource_id = "/subscriptions/10309b5e-1978-4167-8199-87d36cfbe44b/resourceGroups/rg-management-norwayeast/providers/Microsoft.OperationalInsights/workspaces/log-management-norwayeast" -> null

      - plan {
          - name           = "SQLAssessment(log-management-norwayeast)" -> null
          - product        = "OMSGallery/SQLAssessment" -> null
          - publisher      = "Microsoft" -> null
            # (1 unchanged attribute hidden)
        }
    }

  # module.alz-management.azurerm_log_analytics_solution.management["Microsoft/OMSGallery/SQLVulnerabilityAssessment"] will be destroyed
  # (because key ["Microsoft/OMSGallery/SQLVulnerabilityAssessment"] is not in for_each map)
  - resource "azurerm_log_analytics_solution" "management" {
      - id                    = "/subscriptions/10309b5e-1978-4167-8199-87d36cfbe44b/resourceGroups/rg-management-norwayeast/providers/Microsoft.OperationsManagement/solutions/SQLVulnerabilityAssessment(log-management-norwayeast)" -> null
      - location              = "norwayeast" -> null
      - resource_group_name   = "rg-management-norwayeast" -> null
      - solution_name         = "SQLVulnerabilityAssessment" -> null
      - tags                  = {} -> null
      - workspace_name        = "log-management-norwayeast" -> null
      - workspace_resource_id = "/subscriptions/10309b5e-1978-4167-8199-87d36cfbe44b/resourceGroups/rg-management-norwayeast/providers/Microsoft.OperationalInsights/workspaces/log-management-norwayeast" -> null

      - plan {
          - name           = "SQLVulnerabilityAssessment(log-management-norwayeast)" -> null
          - product        = "OMSGallery/SQLVulnerabilityAssessment" -> null
          - publisher      = "Microsoft" -> null
            # (1 unchanged attribute hidden)
        }
    }

  # module.alz-management.azurerm_log_analytics_solution.management["Microsoft/OMSGallery/Security"] will be destroyed
  # (because key ["Microsoft/OMSGallery/Security"] is not in for_each map)
  - resource "azurerm_log_analytics_solution" "management" {
      - id                    = "/subscriptions/10309b5e-1978-4167-8199-87d36cfbe44b/resourceGroups/rg-management-norwayeast/providers/Microsoft.OperationsManagement/solutions/Security(log-management-norwayeast)" -> null
      - location              = "norwayeast" -> null
      - resource_group_name   = "rg-management-norwayeast" -> null
      - solution_name         = "Security" -> null
      - tags                  = {} -> null
      - workspace_name        = "log-management-norwayeast" -> null
      - workspace_resource_id = "/subscriptions/10309b5e-1978-4167-8199-87d36cfbe44b/resourceGroups/rg-management-norwayeast/providers/Microsoft.OperationalInsights/workspaces/log-management-norwayeast" -> null

      - plan {
          - name           = "Security(log-management-norwayeast)" -> null
          - product        = "OMSGallery/Security" -> null
          - publisher      = "Microsoft" -> null
            # (1 unchanged attribute hidden)
        }
    }

  # module.alz-management.azurerm_log_analytics_solution.management["Microsoft/OMSGallery/ServiceMap"] will be destroyed
  # (because key ["Microsoft/OMSGallery/ServiceMap"] is not in for_each map)
  - resource "azurerm_log_analytics_solution" "management" {
      - id                    = "/subscriptions/10309b5e-1978-4167-8199-87d36cfbe44b/resourceGroups/rg-management-norwayeast/providers/Microsoft.OperationsManagement/solutions/ServiceMap(log-management-norwayeast)" -> null
      - location              = "norwayeast" -> null
      - resource_group_name   = "rg-management-norwayeast" -> null
      - solution_name         = "ServiceMap" -> null
      - tags                  = {} -> null
      - workspace_name        = "log-management-norwayeast" -> null
      - workspace_resource_id = "/subscriptions/10309b5e-1978-4167-8199-87d36cfbe44b/resourceGroups/rg-management-norwayeast/providers/Microsoft.OperationalInsights/workspaces/log-management-norwayeast" -> null

      - plan {
          - name           = "ServiceMap(log-management-norwayeast)" -> null
          - product        = "OMSGallery/ServiceMap" -> null
          - publisher      = "Microsoft" -> null
            # (1 unchanged attribute hidden)
        }
    }

  # module.alz-management.azurerm_log_analytics_solution.management["Microsoft/OMSGallery/Updates"] will be destroyed
  # (because key ["Microsoft/OMSGallery/Updates"] is not in for_each map)
  - resource "azurerm_log_analytics_solution" "management" {
      - id                    = "/subscriptions/10309b5e-1978-4167-8199-87d36cfbe44b/resourceGroups/rg-management-norwayeast/providers/Microsoft.OperationsManagement/solutions/Updates(log-management-norwayeast)" -> null
      - location              = "norwayeast" -> null
      - resource_group_name   = "rg-management-norwayeast" -> null
      - solution_name         = "Updates" -> null
      - tags                  = {} -> null
      - workspace_name        = "log-management-norwayeast" -> null
      - workspace_resource_id = "/subscriptions/10309b5e-1978-4167-8199-87d36cfbe44b/resourceGroups/rg-management-norwayeast/providers/Microsoft.OperationalInsights/workspaces/log-management-norwayeast" -> null

      - plan {
          - name           = "Updates(log-management-norwayeast)" -> null
          - product        = "OMSGallery/Updates" -> null
          - publisher      = "Microsoft" -> null
            # (1 unchanged attribute hidden)
        }
    }

 # module.alz-management.azurerm_log_analytics_solution.security_insights_remove_legacy_deployment_from_state_but_do_not_destroy will no longer be managed by Terraform, but will not be destroyed
 # (destroy = false is set in the configuration)
  # (moved from module.alz-management.azurerm_log_analytics_solution.management["Microsoft/OMSGallery/SecurityInsights"])
 . resource "azurerm_log_analytics_solution" "security_insights_remove_legacy_deployment_from_state_but_do_not_destroy" {
        id                    = "/subscriptions/10309b5e-1978-4167-8199-87d36cfbe44b/resourceGroups/rg-management-norwayeast/providers/Microsoft.OperationsManagement/solutions/SecurityInsights(log-management-norwayeast)"
        # (5 unchanged attributes hidden)

        # (1 unchanged block hidden)
    }

  # module.alz-management.azurerm_resource_group_template_deployment.telemetry[0] will be destroyed
  # (because azurerm_resource_group_template_deployment.telemetry is not in configuration)
  - resource "azurerm_resource_group_template_deployment" "telemetry" {
      - deployment_mode          = "Incremental" -> null
      - id                       = "/subscriptions/10309b5e-1978-4167-8199-87d36cfbe44b/resourceGroups/rg-management-norwayeast/providers/Microsoft.Resources/deployments/46d3xgtf.ptn.alz-management.v0-2-0.375d366f" -> null
      - name                     = "46d3xgtf.ptn.alz-management.v0-2-0.375d366f" -> null
      - output_content           = jsonencode(
            {
              - telemetry = {
                  - type  = "String"
                  - value = "For more information, see https://aka.ms/avm/telemetry"
                }
            }
        ) -> null
      - parameters_content       = jsonencode({})
      - resource_group_name      = "rg-management-norwayeast" -> null
      - tags                     = {} -> null
      - template_content         = jsonencode(
            {
              - "$schema"      = "https://schema.management.azure.com/schemas/[2019](https://github.com/skagerakenergi/ene-ena-alzplatform/actions/runs/11479240388/job/31945106416#step:7:2020)-04-01/deploymentTemplate.json#"
              - contentVersion = "<IP_ADDRESS>"
              - outputs        = {
                  - telemetry = {
                      - type  = "String"
                      - value = "For more information, see https://aka.ms/avm/telemetry"
                    }
                }
              - parameters     = {}
              - resources      = []
              - variables      = {}
            }
        ) -> null
        # (2 unchanged attributes hidden)
    }

  # module.alz-management.azurerm_user_assigned_identity.management["ama"] will be created
  + resource "azurerm_user_assigned_identity" "management" {
      + client_id           = (known after apply)
      + id                  = (known after apply)
      + location            = "norwayeast"
      + name                = "uami-ama"
      + principal_id        = (known after apply)
      + resource_group_name = "rg-management-norwayeast"
      + tenant_id           = (known after apply)
    }

  # module.alz-management.modtm_telemetry.telemetry[0] will be created
  + resource "modtm_telemetry" "telemetry" {
      + ephemeral_number = (known after apply)
      + id               = (known after apply)
      + nonce            = (known after apply)
      + tags             = {
          + "module_source"   = "registry.terraform.io/Azure/avm-ptn-alz-management/azurerm"
          + "module_version"  = "0.3.0"
          + "random_id"       = (known after apply)
          + "subscription_id" = "10309b5e-1978-4167-8199-87d36cfbe44b"
          + "tenant_id"       = "***"
        }
    }

  # module.alz-management.random_id.telemetry[0] will be destroyed
  # (because random_id.telemetry is not in configuration)
  - resource "random_id" "telemetry" {
      - b64_std     = "N102bw==" -> null
      - b64_url     = "N102bw" -> null
      - byte_length = 4 -> null
      - dec         = "928855663" -> null
      - hex         = "375d366f" -> null
      - id          = "N102bw" -> null
    }

  # module.alz-management.random_uuid.telemetry[0] will be created
  + resource "random_uuid" "telemetry" {
      + id     = (known after apply)
      + result = (known after apply)
    }

Plan: 7 to add, 1 to change, 11 to destroy.
╷
│ Warning: Some objects will no longer be managed by Terraform
│
│ If you apply this plan, Terraform will discard its tracking information for
│ the following objects, but it will not delete them:
│  - module.alz-management.azurerm_log_analytics_solution.security_insights_remove_legacy_deployment_from_state_but_do_not_destroy
│
│ After applying this plan, Terraform will no longer manage these objects.
│ You will need to import them into Terraform to manage them again.

The error we see when applying the changes
│ Error: Failed to retrieve resource
│
│   with module.alz-management.azapi_resource.sentinel_onboarding[0],
│   on .terraform/modules/alz-management/main.tf line 90, in resource "azapi_resource" "sentinel_onboarding":
│   90: resource "azapi_resource" "sentinel_onboarding" {
│
│ checking for presence of existing Resource: (ResourceId
│ "/subscriptions/10309b5e-19[78](https://github.com/skagerakenergi/ene-ena-alzplatform/actions/runs/11479240388/job/31945106416#step:8:79)-4167-8199-87d36cfbe44b/resourceGroups/rg-management-norwayeast/providers/Microsoft.OperationalInsights/workspaces/log-management-norwayeast/providers/Microsoft.SecurityInsights/onboardingStates/default"
│ / Api Version "2024-03-01"): ChainedTokenCredential authentication failed
│ GET http://<IP_ADDRESS>/metadata/identity/oauth2/token
│ --------------------------------------------------------------------------------
│ RESPONSE 400 Bad Request
│ --------------------------------------------------------------------------------
│ {
│   "error": "invalid_request",
│   "error_description": "Identity not found"
│ }
│ --------------------------------------------------------------------------------
│
╵
╷
│ Error: Failed to retrieve resource
│
│   with module.alz-management.azapi_resource.data_collection_rule["vm_insights"],
│   on .terraform/modules/alz-management/main.tf line 112, in resource "azapi_resource" "data_collection_rule":
│  112: resource "azapi_resource" "data_collection_rule" {
│
│ checking for presence of existing Resource: (ResourceId
│ "/subscriptions/10309b5e-1978-4167-8199-87d36cfbe44b/resourceGroups/rg-management-norwayeast/providers/Microsoft.Insights/dataCollectionRules/dcr-vm-insights"
│ / Api Version "2021-04-01"): ChainedTokenCredential authentication failed
│ GET http://<IP_ADDRESS>/metadata/identity/oauth2/token
│ --------------------------------------------------------------------------------
│ RESPONSE 400 Bad Request
│ --------------------------------------------------------------------------------
│ {
│   "error": "invalid_request",
│   "error_description": "Identity not found"
│ }
│ --------------------------------------------------------------------------------
│
╵
╷
│ Error: Failed to retrieve resource
│
│   with module.alz-management.azapi_resource.data_collection_rule["change_tracking"],
│   on .terraform/modules/alz-management/main.tf line 112, in resource "azapi_resource" "data_collection_rule":
│  112: resource "azapi_resource" "data_collection_rule" {
│
│ checking for presence of existing Resource: (ResourceId
│ "/subscriptions/10309b5e-1978-4167-[81](https://github.com/skagerakenergi/ene-ena-alzplatform/actions/runs/11479240388/job/31945106416#step:8:82)99-87d36cfbe44b/resourceGroups/rg-management-norwayeast/providers/Microsoft.Insights/dataCollectionRules/dcr-change-tracking"
│ / Api Version "2021-04-01"): ChainedTokenCredential authentication failed
│ GET http://<IP_ADDRESS>/metadata/identity/oauth2/token
│ --------------------------------------------------------------------------------
│ RESPONSE 400 Bad Request
│ --------------------------------------------------------------------------------
│ {
│   "error": "invalid_request",
│   "error_description": "Identity not found"
│ }
│ --------------------------------------------------------------------------------
│
╵
╷
│ Error: Failed to retrieve resource
│
│   with module.alz-management.azapi_resource.data_collection_rule["defender_sql"],
│   on .terraform/modules/alz-management/main.tf line 112, in resource "azapi_resource" "data_collection_rule":
│  112: resource "azapi_resource" "data_collection_rule" {
│
│ checking for presence of existing Resource: (ResourceId
│ "/subscriptions/10309b5e-1978-4167-8199-[87](https://github.com/skagerakenergi/ene-ena-alzplatform/actions/runs/11479240388/job/31945106416#step:8:88)d36cfbe44b/resourceGroups/rg-management-norwayeast/providers/Microsoft.Insights/dataCollectionRules/dcr-defender-sql"
│ / Api Version "2021-04-01"): ChainedTokenCredential authentication failed
│ GET http://<IP_ADDRESS>/metadata/identity/oauth2/token
│ --------------------------------------------------------------------------------
│ RESPONSE 400 Bad Request
│ --------------------------------------------------------------------------------
│ {
│   "error": "invalid_request",
│   "error_description": "Identity not found"
│ }
│ --------------------------------------------------------------------------------
│

Hi @Brakistad this could well be due to the AzAPI provider bump and it trying to authenticate using MSI. Please try setting use_msi to false and see what happens

Let us know if this solves the issue #RR

Does this also apply when we use OIDC?
We run our terraform infrastructure scripts in GitHub, using a managed identity with the neede roles/access:
Setting "use_msi = false" doesn't seem to affect anything.
terraform {
  required_version = ">= 1.9.8"
  required_providers {
    azurerm = {
      source = "hashicorp/azurerm"
      version = ">= 3.116.0" # Azure/alz-management/azurerm requires azurerm >= 3.0, < 4.0
    }
  }
  backend "azurerm" {
    use_oidc = true
  }
}

Hi this isn't just for backend auth. You need to disable MSI for all providers, easiest way is with Env var.


Fresh rebuild of flatcar VM fails to boot because docker.service is not found by ignition

Description
I will continue to document my finding throughout the day, but at the moment we have an image that we have uploaded to 3 site and are unable to boot a new machine because the docker.socket service file doesn't exist (and so ignition can't disable it).
The message we get on the console is the following (see image);

When booting without any ignition configuration, we do get the docker.socket unit available and started.  The thing is that it's not a recommended setup for production environment for getting containers to be started at boot (as per flatcar own recommendation);
https://www.flatcar.org/docs/latest/container-runtimes/getting-started-with-docker/#permanently-running-a-container
NOTE; The upgrade of already running instances worked flawlessly, it's only when we try to do a "rebuild" of the server from our openstack.
Impact
Can't deploy freshly machines with this image.  Need to deploy with an older image and apply updates.
Environment and steps to reproduce

Set-up: Deploy a new VM with the openstack image and pass it the systemd unit configuration for docker.socket

systemd:
  units:
    -  name: "docker.socket"
        enabled: false

Task: Let the VM boot
Action(s): No Action made
Error:

Expected behavior
Have the docker.socket unit deactivated like suggested in the documentation
Additional information
Relevant information for our configuration;
systemd:
  units:
    -  name: "docker.socket"
        enabled: false

We used the image from https://stable.release.flatcar-linux.net/amd64-usr/3510.2.0/flatcar_production_openstack_image.img.bz2  (https://stable.release.flatcar-linux.net/amd64-usr/current/flatcar_production_openstack_image.img.bz2 ) as we are running in an openstack Queens
I will keep you posted on our findings, but please do let us know if you get the issue as well or are able to reproduce, we are concern that this could be an issue from our side.
We have also try downloading the image again and compared our checksums with the one we have, no issues found there.
We will start using the old image to spawn our machine and trigger the update.

Edited to fit the "bug" template (I found it after).

Good catch Mathieu.   I think you might be onto something.  Thanks for the feedback.
So probably we should transform this ticket to change the documentation.  My tests yesterday also indicate to me that the docker socket is always started, so not sure how relevant this is to address then.


can i change refresh rate according to my taste

is dfps module can capp an app for value like 50/65/70hz refresh rate unlike the defautl values of 60/90/120hz

definitely no, that is on hardware side


Add Symptoms column to the results tab

Add Symptoms column to the results tab. The new column should use the values from TestResult.noSymptoms
Options are:

value: true
display: "yes"
value: false
display: "no"
value: null
display: "unknown"

@timothybest-usds Are the "yes" and "no" fields reversed here? noSymptoms is a negative, so if noSymptoms is true then I'd expect to show "No"

this is live in that application


[osflow] use workdir 'build' when calling GHDL

Instead of creating temporary files (.cf, .o, etc.) in subdir osflow, this will use osflow/build.

Good idea!
Btw, do you have permissions (now) to merge PRs by yourself? 🤔

Btw, do you have permissions (now) to merge PRs by yourself? 🤔

I believe I do, since I have been pushing feature branches to this repo (which requires write permisions). However, I prefer not to merge my own PRs, so there is always a second pair of eyes having a look. OTOH, I believe it's always good to let enhancements stay for a few hours at least, until someone else or myself has a second thought on it.

I believe it's always good to let enhancements stay for a few hours at least, until someone else or myself has a second thought on it.

Right, I try to do the same most of the time. :wink:

However, I prefer not to merge my own PRs, so there is always a second pair of eyes having a look

There is always the option to revert changes. So feel free to directly merge hot-fixes and "minor" (whatever that means...) updates.


Add doc methods to Swagger object model

Update the all classes to include doc methods defined in swagger object model.
Verification steps:
$ make test

Coverage decreased (-4.3%) to 84.88% when pulling cf86d6fa9a9e8584c7ee776bb3d776d7478b8512 on feature/swagger-documentation into 2894e5ee5273db072b6572e8e60a2fdea0d035c4 on feature/swagger-object-model.

@rightlag Updated.

Coverage decreased (-4.3%) to 84.88% when pulling 4d0b3ba7b738e4f2d7eadbd138d44fb883a7567d on feature/swagger-documentation into 2894e5ee5273db072b6572e8e60a2fdea0d035c4 on feature/swagger-object-model.


Undefined method "new"

0.13.2
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Function Call, undefined method `new' for Puppet_X::Elastic::Hash:Module at /etc/puppetlabs/code/environments/logging/thirdparty/elasticsearch/manifests/instance.pp:179:26

#710 appears to be related to this. Once that was fixed this Undefined method went away.


Warn about potential collisions with new API

Issue: #24413

@bot-gradle test BD

@bot-gradle test BD

@bot-gradle test and merge


[search] block crawling from non-prod domains

we currently have results from staging.datacommons.org and autopush.datacommons.org which should be block from crawling
some steps we could follow are listed here:
https://prometteursolutions.com/blog/how-do-i-remove-subdomains-from-google-search-effectively/

Blocked subdomain from the CSE console.


Update JS Function Name on every Call

Hello,
Would it be possible to add the feature to update all the call of a js function when we change his name ?
For example, on this code...
1 function MyFunction(){return true;}
2
3 MyFunction();
4
5 if(true){MyFunction();}
...if I change " function MyFunction " to " function DaFunction ", the line 3 and 5 would be automatically be updated.
Regards,
Rollover

Hello @O4D,
there are currently two extensions that implement a slightly different behaviour, but are the closest you cn get:

Rename JavaScript Identifier by @asgerf
Ternific by @MiguelCastillo

I personally recommend to install ternific if you want better autocompletion for JavaScript.

Also, what you can do without extensions:

Replace all occurrences using Replace (Ctrl+H)
Select all occurrences (using Find all and select (Alt+F3) or Add next match to selection (Ctrl+B)) and override them

It may not be that comfortable, but it's still pretty quick

It's essentially impossible to make a 100% reliable version of this feature for JavaScript -- unlike statically-typed languages such as Java.  Type inference can give pretty accurate results, and ask the user to confirm in cases where the correct action is ambiguous -- I believe that's what the few tools that do offer this for JS (like WebStorm) do.  Question is whether the Tern type inference engine inside Brackets could do that well enough for this feature to feel much better than the simple Replace commands we have today.

Thank you for your answer. I were very busy these last month but it helps me to know the real capacity of Brackets.
I think today I'll use " Select all occurrences (using Find all and select (Alt+F3)) ", and I already begin to use Ctrl+E to find the original function's definition.
But i'm a little sad to not find equals features than in Visual Studio (C#)...


Nithish/refactor/consistent data flow

Description
This PR fixes #
FIx a potential race condition
Signed commits

[x] Yes, I signed my commits.

@ritamgit-alt thanks for contributing. Is this an accidental PR?

Sorry but yes

Ok. That's no problem. Please do go ahead and close the PR, in this case.


Table: Fix changing Rows during runtime

This fixes a concurrency problem in termui.Table. This was the part I cared most about, but maybe this is also a starting point if these kind of problems should get fixed deeper down in the core or per termui module.
Original commit message:
So far changing table.Rows had two problems that made it panic in
dynamic environments, where users tried to reassign new table.Rows.

A trivial case where the Colors array was accessed out of bounds
because the index was generated by iterating over table.Rows
(Analysis()). While nasty, this could be fixed by the user by also
adding Colors elements to the according Color arrays.

An internal race in Buffer() when the table.Rows (even with additional
Colors) were updated between "rowCells" calculation and then iterating a
few lines below again over the now longer table.Rows. This caused panics
when rowCells out of bound got accessed.

This introduces a sync.Mutex and a setter method. The implementation of
public methods that are also used in Buffer() got split out to a private
implementation (e.g. Analysis -> analysis). The public implementation
now does the locking and calls the private implementation. This allows
us to take the lock once in Buffer() and then call multiple internal
implementations.
The setter (i.e., SetRows()) also takes care of allocating/initializing
potentially new Color elements. As commented in the source code,
currently not used Color elements are kept as cache without immediately
deallocating them.

Hi guys, any updates on that?
Am I using the table wrong and you think the number of rows has to be fixed and a public member (Rows) is not allowed to be touched? Do you need an example that this actually happens without the patches?
Regards, rck

I'm facing that issue too. It's annoying for a long-running dashboard.

@maxdec : did you try the patched version? I use LINBIT/termui for a project, basically also a long-running, dynamic dashboard, and have not had any problems since.
Somehow strange that this simply gets ignored...

Yep I'm using that fork and it works great.
I'm no Go expert but the changes make sense to me. (Maybe it needs specs?)

Face the same issue


Spoofing your MAC Address with Python

Aim

Python Script to Spoof you MAC Address

I will like to work on this issue.Please assign me this issue.

I will like to work on this issue.Please assign me this issue.

I will like to work on this issue.Please assign me this issue.But please clarify if we have to suggest an original solution , or we can copy from someone's work,

Sure Go ahead..You can take inspiration from someone else work.. Don't copy someone else's work and paste here..it would be of no use...Then

I will like to work on this issue.Please assign me this issue.But please clarify if we have to suggest an original solution , or we can copy from someone's work,

Sure Go ahead..You can take inspiration from someone else work.. Don't copy someone else's work and paste here..it would be of no use...Then

sir, i there have to me different scripts for windown and linux. What shall i do?

sir, i there have to me different scripts for windown and linux. What shall i do?

Push both the scripts.

Push both the scripts.

sir, i am done with making a MAC spoofer for linux, but for windows . I think it is not needed.
As windows GUI is user friendly and it is easy to change it from control panel.Should i send this program alone for pull request?

sir, i am done with making a MAC spoofer for linux, but for windows . I think it is not needed.
As windows GUI is user friendly and it is easy to change it from control panel.Should i send this program alone for pull request?

Yes @himanshu007-creator .. Sorry for the delay

Yes @himanshu007-creator .. Sorry for the delay
I will send tomorrow 👍🏽


[REFACTORING] Needs make refactoring for Fragments

We want make refactoring for SettingsFragment, PasswordFragment, UpdateFragment & ConfirmFragment in v1.2.0 (#6)

Fragments was updated/cleaned/refactored


Using primus lisp as a configuration language for WP

Currently, we have few ways of allowing fine-grained control to the user for the WP analysis. This is in contrast to the programatic API, which provides hooks to control:

The postcondition
The precondition (to an extent)
Side conditions at each branch
Side conditions based on pattern-matching an expression
Summaries for function calls
Summaries for interrupts
Summaries for loops (to an extent)

Most of this is hidden to the user, with the notable exception of the postcondition (and some precondition stuff now) which can be entered as a string in the SMT-LIB2 format, which is massaged using regexps and passed directly to Z3 for processing.
An obvious idea is to replace this with a DSL which gives the user extensible control over these options. An obvious language for such a DSL might be Lisp, since it requires relatively little infrastructure within the host language. Since Primus Lisp already exists, it seems like a reasonable thing to try to re-use the existing infrastructure to implement these desiderata.
Here are some usage examples, to help fix ideas and notations:
As a simple example, with a single binary, we could imagine the following invocation:
bap a.out --pass=wp --wp-config=my_config.lisp
Where my_config.lisp might be the following:
(wp-update-post
     (assert (= init_RAX (+ RAX 1))))

For checking non-null dereferences in expressions, one might write
(wp-update-expr-hook
   (on-mem-read (mem loc)
    (assert (not (= (init loc) 0))))

Where on-mem-read adds a hook which matches memory reads in the expression, and takes the memory and read values as argument to the hook, and init var returns the value before the expression is evaluated.
For function summaries, we have a similar story, for example one would ideally like something like:
(defun malloc-spec (env)
     (fun-assumes (> RDI 0))
     (fun-ensures (or (= RAX 0) (> RAX HEAP_MIN)))

(wp-update-fun-spec
     "malloc"
      malloc-spec)

Or something similar. This isn't entirely trivial, since because we do WP, we work backwards from a postcondition, but something similar can work. We can start by offering exactly the ocaml interface currently provided:
https://github.com/draperlaboratory/cbat_tools/blob/83459fc157d3162eab0d326186c28902cef68d53/wp/lib/bap_wp/src/environment.mli#L45
In the long term, one could expect a fair amount of configuration to happen this way, for example the environment set up, and generally all the current user flags might be configurable with this language, which would simply require adding hooks to the method.
From an engineering perspective, it's not obvious how to wrangle the current Primus-Lisp execution environment to do this. However there are two main issues with this:

Primus Lisp currently only operates on concrete values
Primus Lisp executes entirely within a Machine.t monad

For 1, one might create a machine which watches the evaluation of a machine instruction, and hook into the events fired by the relative observations. Alternately, one could abuse the lisp macro system to manipulate the S-expressions into something we can directly pass to one of our OCaml constraint builders or other.
For 2, I would imagine that there is some Obj.magic trickery that we could exploit, despite the general desire to avoid such things. The alternative seems to be wrapping the whole main execution of the wp pass into a Machine.t though.

I can propose two options for that:

Option A: reuse Primus (with Lisp included);
Option B: extract Lisp from Primus and reuse it.

Of course, the set of options is not discrete and is not limited to the two options specified above. We can certainly end up enacting a mixture of options A and B or choose a completely different option.
Let's do some cons and pros analysis so that we can analyze the risks and benefits of the choice.
Option A
The plan is to switch to run Primus computations and the extension points to produce summaries of the statement semantics and then use those summaries to compute the weakest preconditions.
Cons

substantial changes on the WP side
much less control on the semantics and on the evaluation process
increased complexity of WP

Pros

minimal to no changes on the BAP side
full reuse of Primus Lisp components and infrastructure
much less code on WP side to support

The fact that Primus runs forwards but WP backwards is not very important, as you still consider def terms (or statements in general) in a forward manner, and then combine them. So you can use Primus on per expression/statement level and then summarize the effects of that statement into a weakest precondition. You can use the new symbolic executor to keep inputs symbolic and your postcondition will serve as a constraint to the symbolic solver, e.g., suppose we have a term
RAX := mem[RBX + RDI,el]

If you will apply Primus on this term together with its symbolic executor, you will get both the concrete state (numbers are honestly rolled on a dice1):
RDI -> 2
RBX -> 5
RAX -> 6
mem[7] -> 6

and the corresponding symbolic formula
RDI -> R_RDI
RBX -> R_RBX
(RBX+RDI) -> (bvadd R_RDI R_RBX)
mem[RBX+RDI] ->  (select mem (bvadd R_RDI R_RBX))
RAX -> (select mem (bvadd R_RDI R_RBX))

Note: right now we do not support symbolic memory, but, of course, it could be added.  You can then add the weakest precondition of the next statement to the computed formulae so that they can be simplified or even solved.
The same approach could be extended to calls to stubbed functions. If we will think of call @memcpy as a big statement that does a lot of reads and loads, we can still compute the weakest precondition.
So far so good, but there is one caveat. The main thing that you can't take away from Primus is the concreteness of values. For each expression in the given context, Primus will ask you for concrete values of that expression. You can specify more than one of course, but Primus needs at least one. Moreover, each generated formula will be wrt some valuation. This is both the boon and the bane. For example, when you will use malloc or memcpy stub, written in Primus Lisp, it will generate a formula that will be valid for the set of concrete inputs that were chosen, based on some concretization strategy. On one hand, it automatically serves the problem with loops (at least in the stubs), on the other hand, and steals control and under-approximates the real program. But, again, for programs without loos (for BIR terms in particular) you can safely use Primus and reuse all of its components. E.g., you can use Primus Lisp for specifying the preconditions, initializing the state with concrete values, etc.
Summary
This is a risky option that at the same time have a big potential (or not, hence the risk). It may require substantial rethinking and rewriting of WP so that even rewriting it from scratch would be considered a viable option. On the other hand, if it will work, then it could be a solution to the scalability problem.
Option B
The plan is to extract the Primus independent part of Primus Lisp, rename it into BAP Lisp, and employ it without any dependencies on Primus.
Cons

you will have to reimplement the Lisp semantics from scratch
you will not be able to reuse Primus facilities and will end up also reimplementing them (though, you're already doing this a lot in WP)
will require substantial changes to BAP

Pros

It is the least invasive solution for WP
You will have a much less constraint design space

Notes
Extracting Lisp from Primus is totally in vain with our long term plans. And in the future, we plan to use BAP Lisp for many different tasks, such as writing lifters, specifying summaries for abstract interpreters and model checkers, and even using it is the main media for storing program semantics information, i.e., for storing it on disk and exchanging information between analyses, probably running in different environments and implemented in different programming languages. In other words, we plan to use BAP Lisp as our lingua franca. Of course, for that BAP Lisp shall have a pretty well-defined semantics, so that different interpretations of BAP Lisp mean the same thing. Right now, the semantics is not specified and is provided by the reference implementation.
Given such ambitious goals, we have to be very careful when we will use BAP Lisp for WP and do not accidentally change its semantics. In other words, we should always keep in mind that this is not just a lisp for WP configuration, but BAP Lisp with a concrete semantics. This will enable the reuse of the existing Lisp code now and in the future.
For example, this is not possible
(wp-update-fun-spec
     "malloc"
      malloc-spec)

Instead, in BAP/Primus Lisp we use the notion of signals and methods, e.g.,
(defmethod wp:update-fun-spec "malloc" (size)
  (if (symbolic-is-concrete size)
      (malloc size)
    (symbolic-malloc size)))
;; but oops, this won't work, as all methods return unit
;; we can of course pass a reference (a symbol) to the method, but maybe there is a better solution

In addition, BAP Lisp encourages overloading for the composable extension of program semantics. Each function or signal may have multiple definitions. And depending on the application context, we will choose the most specific definition (in case of methods we will choose a set of most specific methods). We represent contexts as partially ordered type classes (here context should be understood in terms of Haskell type classes). For example,
(defun symbolic-malloc (size)
  (declare (external "malloc")
           (context symbolic))
  (if (symbolic-is-concrete size)
      (bap:malloc size)
    (symbolic-assume (>= 0 size)
                     (< *malloc-max-chunk* size))
    (symbolic-allocate-memory size)))

This is just an example to give you the flavor of Primus Lisp. Most likely, you won't need this overloading as the current stub of malloc will most certainly work for you, if you will implement the corresponding Lisp primitives, e.g., for malloc you need the memory-allocate PTR LEN primitive, that marks the region PTR, PTR+LEN as allocated. In Primus this primitive is implemented with the Primus.Memory library, which is concrete, so you have to provide the same implementation that will provide symbolic memory.
And I envision a lot of code duplication between symbolic and non-symbolic implementations of Memory, Env, Linker, and Interpreter libraries (which are the main libraries of Primus). We can, of course, address this in the future and factor out those commonalities and move the to the BAP Lisp libraries. It shouldn't be very hard, as those components are already generic (they are all parameterized with the Primus.Machine.S monad), so the only difference would be the abstraction of the Value.
Summary
This is the option of the least risk but minimal benefits. You don't need to break anything in WP and can start right now. We can even extract BAP Lisp into a separate library that is independent of BAP release cycle (so that the BAP Lisp interface could be changed between releases and we won't accumulate a technical debt of bad decisions).

1)Joke :)


SCSS files not compiling with webassets >=0.12

There is a problem using relative paths with the import tag in scss files following the version release 0.12 of webassets.  With this being the minimum version currently in this module, the latest  release is not useable for us at the moment.

Same problem for us. I thought #38 was going to solve this...

@andrewm89 can you provide a test case or traceback?

@jirikuncar Here's the stack trace we have:
'''
Failed, error was: scss: subprocess returned a non-success result code: 1, stdout=b'', stderr=b'{\n  "formatted": "Error: File to import not found or unreadable: variables\n       Parent style sheet: stdin\n        on line 23 of stdin\n>> @import \"variables\";\n   ^\n",\n  "message": "File to import not found or unreadable: variables\nParent style sheet: stdin",\n  "column": 1,\n  "line": 23,\n  "file": "stdin",\n  "status": 1\n}\n'
Building bundle: gen/tind_theme.%(version)s.css
'''

@andrewm89 @jacquerie please try to use node-scss filter instead of scss.

@jirikuncar seems to work!  Will keep testing it until it breaks.

Yes, this fixes the issue on our side as well. Thanks!


#13 - removing invalid cert due to non-https link for issuer profile

Non-https link redirecting to an https link with :80 appended to the base url is causing it to fail.

do you want to maybe replace it?
This one is a valid and working V1: https://raw.githubusercontent.com/learningmachine/blockcerts-universal-verifier/master/test/fixtures/valid-v1-certificate.json?token=AMNICsAJVez3nHNABRVzDYM5fqR1_o9sks5bcurMwA%3D%3D

@lemoustachiste replaced


Request: Show More Informative Error Message When ipsw.me Is Updating Firmware Information

When ipsw.me is updating firmware information for new releases, the v3 API can take a few hours to be updated (because of slower caching: https://twitter.com/icj_/status/1368997997200171016 & https://twitter.com/icj_/status/1176583207531241479 & https://twitter.com/icj_/status/1440043400049295372)
While the updates are being processed, the "devices" object returned from https://api.ipsw.me/v3/firmwares.json/condensed will be null, but the "iTunes" object will still have data in it.
Currently, when the "devices" object is null, mist shows an error that "There was an error retrieving firmwares from https://api.ipsw.me/v3/firmwares.json/condensed..." from: https://github.com/ninxsoft/Mist/blob/4ad02fd4bae57368be932be340ce061c29097138/Mist/Helpers/HTTP.swift#L36

Since it is possible to detect the difference between not being able to load the firmwares.json file at all, and the "devices" object being temporarily null (either by detecting that the "iTunes" object has data, or by detecting that a "devices" key was present with a null value as opposed to not existing at all), I think it would be nice (and easy) for mist to present a different more informative error message stating the ipsw.me is currently updating the firmware information and to try again later today (or something like that).

Sounds good, will look into adding this functionality!


Convert from visual designer to YAML

I've been working with the visual designer for some time, but I read that we are encouraged to move to YAML. Is there a way to easily convert from visual designer to YAML?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: f94a6e7d-3cb5-790c-2b8b-c09abd1de3f6
Version Independent ID: a0d381e1-07ad-9191-4697-6faf600a7bd8
Content: Use Azure Pipelines - Azure DevOps Services
Content Source: docs/pipelines/get-started/pipelines-get-started.md
Product: devops
GitHub Login: @erickson-doug
Microsoft Alias: douge

Export the yaml from the visual designer using view yaml (on the far right of the edit screen) copy the yaml and then paste that into a new file in the root of the git repository with name azure-pipeline.yml

Is it also possible to convert release-pipelines, initially developed using the visual designer, to yaml, and keep this separate from the build-pipeline?
Regards,
R.

You can deploy from a YAML pipeline; some of our docs show examples of this. However, YAML pipelines don't have stages or approvals.

For designer builds, the "view YAML" button is the best bet.
As Andy said, we aren't quite there on feature parity for designer releases.

@RolfEleveld , @vtbassmatt
Does anyone know where the "View YAML" button went? I can't see it on the far right of the edit screen, or anywhere else for that matter.

@yannduran, open edit on the visual flow and now for each step, select the step and you can see yam button right top.

@RolfEleveld, oh I see. You only see the YAML step-by-step, not for the whole pipeline. Thanks!
I was expecting something that allowed you to see the YAML for the whole pipeline. I mean you can export a whole pipeline to JSON, so it'd seem reasonable to expect that you could also see/export it to YAML, especially with the emphasis that's being placed on YAML now.

It's available at the Job level.

FYI soon will be possible to export an entire pipeline as YAML;

https://devblogs.microsoft.com/devops/replacing-view-yaml/


[LIVY-986][SERVER] Adding null pointer check for SessionInfo

What changes were proposed in this pull request?
[LIVY-986][SERVER] Adding null pointer check for SessionInfo
What changes were proposed in this pull request?
Adding null check for SessionInfo parameters "conf", "archives", "jars", "pyFiles" and "files"
JIRA: https://issues.apache.org/jira/browse/LIVY-986
How was this patch tested?
Tested manually by running session recovery.
Please review https://livy.incubator.apache.org/community/ before opening a pull request.

Codecov Report

Merging #412 (b2d0dc7) into master (b175ba1) will decrease coverage by 37.04%.
Report is 1 commits behind head on master.
The diff coverage is 44.44%.

@@              Coverage Diff              @@
##             master     #412       +/-   ##
=============================================
- Coverage     65.61%   28.58%   -37.04%
+ Complexity      952      379      -573
=============================================
  Files           103      103
  Lines          6044     6059       +15
  Branches        911      916        +5
=============================================
- Hits           3966     1732     -2234
- Misses         1534     3973     +2439
+ Partials        544      354      -190

Files Changed
Coverage Δ

...server/interactive/InteractiveSessionServlet.scala
56.12% <44.44%> (-6.02%)
:arrow_down:

... and 85 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Add option for authentication token

Hi,
Added support for auth headers

Hi @pontjho,
Thanks for your PR and sorry for not responding earlier. I assume this PR is in response to the token based authentication support introduced in Neo4j v2.2?
Will look into adding a test case today or tomorrow.
Cheers Phil

Hi @pontjho,
Finally implemented testing for your PR and thereby rearranged the testing script. I will close this PR and merge the other one.
Thanks a lot for your work.
Cheers Phil


How to use the SteamWorks.SteamMatchmakingServers.GetServerDetails function?

I searched in the Steam documentation, in the source code, in other Github repositories...
No answer to my question, so I put it here.

You have to get a server list request object to pass to that function. The functions that return one of those are listed here:
https://partner.steamgames.com/doc/api/ISteamMatchmakingServers

For 2 Days I have been trying to get information about a server from the Steam SDK.
I got to know how to use the function I wanted.
I realized that the "ISteamMatchmakingServers" method uses the steam server browser.
This one never really worked, I would even say that it is deprecated.
The alternative ? The Steam Web API.
The API is functional, easy to use, but at a big disadvantage.
To connect to this API, you need an authentication key.
Even if this information is public, it is required to have one.
If any of you know how to retrieve information from a server of any game with the Steam SDK, I would appreciate this valuable information.


percentage_match: fix query for Elasticsearch 5

Following some testing with elastalert I stumbled across a bug in the implementation of the percentage_match alert on ES5.
The rule was crafted with the query directly as string to the must argument which is no longer a viable solution for ES5 and will throw and error such as:
Error running query: TransportError(400, u"parsing_exception", u"[bool] query does not support [must]")

To fix this, I just updated the query to use the correct way of doing so which is compatible with ES2 and ES5.

My bad, was confused by the documentation about ES DSL and was thinking we had to use a full text query (ala Kibana search).


Prepare this type checking code for python 3 compatibility. This does…

… not work as is with
the str from builtins

@ticoann please merge this. Maybe a good thing for some testing first since it is pretty basic in our stack. But before I fixed this, I had hundreds of unit test failures. So it's pretty well covered. :-)

Eric, can I merge this on Tuesday? We are still running the test in testbed. Although it is simple change,   just in case we have make other the fix for testbed it might be safer to not include.

Tuesday is fine. No rush. I'm going to keep going through futurize stuff and see if there is more future proofing to do.


Update .NET SDK 8 to 8.0.401 under ubuntu-24.04 to match 22.04

Tool name
.NET SDK 8
Tool license
N/A
Add or update?

[ ] Add
[X] Update

Desired version
8.0.401 (matches ubuntu-22.04)
Approximate size
No response
Brief description of tool
No response
URL for tool's homepage
No response
Provide a basic test case to validate the tool's functionality.
No response
Platforms where you need the tool

[ ] Azure DevOps
[ ] GitHub Actions

Runner images where you need the tool

[ ] Ubuntu 20.04
[ ] Ubuntu 22.04
[ ] Ubuntu 24.04
[ ] macOS 12
[ ] macOS 13
[ ] macOS 13 Arm64
[ ] macOS 14
[ ] macOS 14 Arm64
[ ] Windows Server 2019
[ ] Windows Server 2022

Can this tool be installed during the build?
No response
Tool installation time in runtime
No response
Are you willing to submit a PR?
No response

Hi @jupjohn ,
Thank you for bringing this issue to us. We are looking into this issue and will update you on this issue after investigating

Thanks!
I upgraded an ADO pipeline today from ubuntu-latest (22.04) to 24.04 and noticed the SDK downgrade as my solution was pinned to 8.0.200 as minimum. I suspect others would have this issue as 24.04 gets rolled out as ubuntu-latest if this isn't upgraded.

Dear @jupjohn
We would like to inform you that the following.NET Core SDK versions available in Ubuntu 22.04 are  6.0.425, 7.0.410, and 8.0.401. However, Ubuntu 24.04 has not yet been rolled-out to General Availability and is scheduled to be released in the coming weeks.
Please let us know if you require any additional information to assist you, or allow us to close this issue.

Hey @lakshminarayana02,
Maybe the description was confusing: I am suggesting to have the .NET 8 SDK on ubuntu-24.04 upgraded to be in line with what ubuntu-22.04 has before it goes GA. I don't see a reason for it to be using 8.0.1xx when most users have been using 8.0.4xx provided by default.

Hi @jupjohn
Yes, it will take a few more weeks to be accessible for GA.
Ubuntu 24.04 will always provide the most recent updates and stable versions with the default version.
If you are satisfied with the solution, kindly suggest that we close this ticket.

Hi @lakshminarayana02,
could you please rerun the image generation pipeline for Ubuntu 24.04 as for which ever reason the dotnet sdk has built as  .NET Core SDK: 8.0.108
https://github.com/actions/runner-images/blob/8a1eeaf6ac70c66f675a04078d1a7222edd42008/images/ubuntu/Ubuntu2404-Readme.md?plain=1#L160
the pipeline definitions should pull this through properly.

Dear @thommaa
Yes, we noticed that the previous and current Image Generation builds have the same version,  we are working to fix the issue.

 Ubuntu 24.04 won't add any version beyond 8.0.10* and Microsoft won't provide them in their repo's as described here. So the only option left is to install the SDK by using the dotnet install scripts.

Hi
While investigating,  we noticed line 65. . The link is maintained by Microsoft.
https://github.com/actions/runner-images/blob/main/images/ubuntu/scripts/build/install-dotnetcore-sdk.sh#L65
We are attempting to gather more information and will share it here.

Hi
we are still working on it and will keep you posted,

Hi
SDK version in all the latest images have been upgraded from 8 to 8.0.40x version EXCEPT for Ubuntu-24 which shows 8.0.10x version and it will be updated in current week deployment.
Thank you for contacting us,  we have rectified this issue.

@lakshminarayana02 this issue was marked as resolved but it doesn't seem to be the case.
The 20241103 release of this week still mentions .NET Core SDK: 8.0.110 only. And since this document is generated by script directly on a VM that serves as the basis for the image, it's not a matter of someone having forgotten to update the documentation - this reflects what is present on the actual agents.
We're building our own agents loosely based on the scripts in this repo and it just seems that the install-dotnetcore-sdk.sh script is broken for Ubuntu 24.04. I identify 2 issues:

SDK tarballs are downloaded to /tmp but the find command that should execute extract_dotnet_sdk on the files looks in the working directory (.). I don't see where the working directory is set to /tmp in the Packer template or any preceding scripts, but I might be missing something.
More importantly, the extract_dotnet_sdk function tries to install SDKs to /usr/share/dotnet while the official Ubuntu package for dotnet-sdk-8.0 on 24.04 installs to /usr/lib/dotnet. Since /usr/share/dotnet does not exist, rsync fails to move the files.

Furthermore, the script unconditionally applies steps for pinning the package sources to the Microsoft repositories which only applies to Ubuntu 22.04 (and maybe 20.04, I don't know). There are conflicting sources of information on whether the Microsoft package repositories for Ubuntu 24.04 provide *net* packages but it turns out they do not as mentioned in dotnet/core/discussions/9258.


Migrate keys from strings to hashed strings

This PR includes the following changes:

Store key prefixes are changed from strings to hashed strings (e.g. "ValsetRequestKey" -> HashFunc("ValsetRequestKey")). Methods for creating keys in key.go now use and return []byte, thus avoiding unnecessary string[]byte conversions. Some keys were not used anywhere, so we removed them.
Method ConvertByteArrToString() is no longer used in key creation, except in one place. This method produces bad results in cases when the highest bit in any of input bytes is set to 1. This results in one byte sometimes being converted into two bytes when casting back to bytes to create the key (e.g. []byte(ConvertByteArrToString(inputBytes)). Also, []byte can be directly casted into string so the method is redundant. The only place we had to keep this method is for the PastEthSignatureCheckpointKey, since the key was constructed from the prefix concatenated with ConvertByteArrToString(checkpoint). Since the checkpoint is 32 bytes long, if any of bytes had the highest bit set to 1 it would be converted to two bytes so the key length could be len(PastEthSignatureCheckpointKey) plus 32 to 64 bytes depending on the checkpoint content. Converting variable number of bytes back to correct 32 bytes isn't possible because we can't know which bytes are "real" and which ones are added as a result of running ConvertByteArrToString(). And since the value stored under the key is 0 or 1 we couldn't reconstruct the key from the value during store migrations, so we had to keep the method, but we made it unexported and added comment that it shouldn't be used anywhere except in this case.
Store migrations are written to migrate all keys from strings to hashed strings, while keeping the old values. Keys created with unused prefixes will be removed from the store during migration, if such values existed at all.
Chain upgrade handler is added in app.go. We named this initial upgrade handler "v1.5" since Justin mentioned that the next release of Gravity Bridge will be 1.5. Is this OK to you?

@facundomedica @alexanderbez Here is our PR so you can take a look.

Hey @dusan-ethernal @MirelEthernal @sasa-ethernal @stana-ethernal could you turn on "Allow maintainers to edit commits"? @jkilpatr and I like to keep clean git history for future use so I collapsed the 6 commits into 2, but I am unable to push to your branch.

@ChristianBorst It turns out we don't have this option since it is an Organization repository. We gave you and Justin write permission on our repository instead. Let us know if that works.

Works just fine, just letting the tests run one last time and we'll merge.


fix: Cannot get Janet-lang's dependencies

https://github.com/haruki7049/buildJanetPackage/actions/runs/10414944484/job/28844692115

resolved by: 782fd9f8375f20d080ee97dfca6b8ce4029a77a3


Return error if workflow has tasks but no start tasks

Add step in the workflow inspection to return error if the workflow has tasks defined but no start tasks can be identified.

Codecov Report

Merging #210 into master will decrease coverage by 0.79%.
The diff coverage is 91.91%.

@@            Coverage Diff             @@
##           master     #210      +/-   ##
==========================================
- Coverage   94.04%   93.24%   -0.80%
==========================================
  Files          41       45       +4
  Lines        2735     3124     +389
  Branches      545      644      +99
==========================================
+ Hits         2572     2913     +341
- Misses        100      128      +28
- Partials       63       83      +20

Impacted Files
Coverage Δ

orquesta/composers/base.py
91.66% <0.00%> (ø)

orquesta/composers/mock.py
57.14% <0.00%> (ø)

orquesta/expressions/functions/base.py
100.00% <ø> (ø)

orquesta/requests.py
100.00% <ø> (ø)

orquesta/specs/mistral/__init__.py
100.00% <ø> (ø)

orquesta/specs/mistral/v2/policies.py
100.00% <ø> (ø)

orquesta/specs/native/__init__.py
100.00% <ø> (ø)

orquesta/utils/context.py
90.47% <ø> (ø)

orquesta/utils/date.py
89.65% <ø> (ø)

orquesta/utils/dictionary.py
90.90% <ø> (ø)

... and 40 more

Continue to review full report at Codecov.

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


Add Handlebars helper for resolving system and environment variables

I'm looking to stand up a standalone version for load testing. One of the needs is to be able to replace values in the response template from system or environment variables. Based on https://github.com/tomakehurst/wiremock/issues/789, looks like it's not currently possible without repackaging the code, although I'm not sure even in that case how'd I register the custom helper class.
I can imagine such a helper to be pretty useful, and will be happy to make a PR. I'm not super familiar with Handlebars, but I think the following should get the job done:
{{var key='something' scope='[sys|env]'}}

If scope isn't specified, the code will lookup in the system variables first, followed by environment variables. Any . or - in the key will be converted to a _ if scope=env, as well as uppercased. For example, key=wire-mock.rocks will be converted to WIRE_MOCK_ROCKS. No such translation will be performed for scope=sys.

Knock knock @tomakehurst

That kind of comment pretty much guarantees I won't be looking at this any time soon

Oops, looks like someone forgot that GitHub sends out email notifications! Here's the thing though: I tried to raise you a week after creating the ticket. In case you didn't notice, I stated a problem, proposed a solution, and offered a PR; that's more than most people do on a OSS project. If you're expecting an award or something for maintaining the project, sorry, it won't come from me.
Now, feel free to do whatever you wish with the ticket; I can anytime fork the project, or just use the mock server I wrote myself.

I don't expect an award, but neither do I expect people to presume my voluntary, unpaid time is theirs to demand. There are PRs far older than this one that I've not had time to properly review and merge yet.
I appreciate contributions to WireMock, but hassling me and attempting to jump the queue when I've got no bandwidth isn't at all helpful.
BTW, I'm fully aware of how GitHub notifications work.

hassling me and attempting to jump the queue when I've got no bandwidth isn't at all helpful.
Feel free to relinquish project ownership and put up the project for adoption. Retaining control, and then complaining about it is just pretentious.

I have a usecase for this too. I want to proxy requires in maven integration tests. But the port of the service to proxy to is generated by another maven plugin. So I was hoping I could have a mapping like "proxyBaseUrl" : "http://localhost:${generatedPort}/other-service"

@zkendall I agree this would be useful, and I'm happy for it to be added. If you're up for a creating a PR that would make things happen much more quickly.

See PR #1085

@philippe-granet The PR seems to be missing the following:

Scope doesn't seem to be optional. One of the goals of this ticket is to keep it transparent where the value is coming from. This is especially important when used with Spring Boot because of relaxed property binding.
You don't seem to be normalizing the key names, or falling back to env var if not found in system var.

@asarkar OK, I will do a second PR.
What do you think of this more concise syntax ?
{{var 'sys:user.home'}}
{{var 'env:JAVA_HOME'}}
{{var 'java.home'}}

How about having a top-level config object in the template model, which performs the sleight of hand required to do relaxed binding e.g.
{{config.[java.home]}} when you want the value to come from any config source
{{config.env.JAVA_HOME}} when you want to target just the environment
{{config.sys.[java.home}} when you want to target just the system props

What do you think of my new implementation in PR #1085 ?

Added in d06f3aa60b9a2a887d6d0b7a89c45b3193dcc5f3


How to switch models, other than redefining the function?

Perhaps I'm not understanding, but it seems like there's no way to switch which model is being used, other than to redefine the function with a different decorator?
Is that correct? If so, would it be possible to include a mechanism to pass the model to the function at runtime, so that you could do:

gpt4 = LitellmChatModel('gpt-4o')
llama3 = LitellmChatModel("ollama/llama3.1")

@magentic.prompt("tell me a joke about {thing}", model=gpt4)
def joke(thing: str) -> str: ...

joke("apples")
joke("apples", model=llama3)

and this would call the different models?

as an aside, but relatedly, it's somewhat annoying to only be able to change the default model by setting an ENV var. It would be nice if this could be done programatically too.

Would using two functions, one for each model, suit you @benwhalley ? See here in the last code example: https://magentic.dev/configuration/

I can see that you could do that, but it just seems like the model you use shouldn't be tied to the function itself. Likewise for things like temperature etc.
In the work I'm doing now I'd like to be able to compare models, settings etc so it would take some metaprogramming to be able to define functions on the fly, which isn't ideal (and I really like elements of magentic)

hi - yes, this makes sense and I can see it's a tradeoff to avoid having to pass the model down the chain. The context managers work for setting both the model and retry model btw.

Great! Closing this issue. Separate issue for setting default model is https://github.com/jackmpcollins/magentic/issues/313


Cass sb 8 fix connectformtypes

Overview

PR Checklist

[ ] Related to designs:
[ ] Related to JIRA ticket: [ABC-123]
[ ] I have run this code to verify it works
[ ] This PR includes unit tests for the code change
[ ] This PR includes testing instructions tests for the code change
[ ] The alpha package of this PR is passing end-to-end tests in all relevant Codecademy repositories

Testing Instructions

Don't make me tap the sign.
PR Links and Envs

Repository
PR Link
PR Env

Monolith
Monolith PR
Monolith Env

Portal
Portal Link
Portal Env

Another Repo
Another Link
Another Env

🚀 Styleguide deploy preview ready!https://67227b042944272e07602a39--gamut-preview.netlify.appDeploy Logs

📬Published Alpha Packages:eslint-plugin-gamut@2.2.1-alpha.469d91.0@codecademy/gamut@57.4.4-alpha.469d91.0@codecademy/gamut-icons@9.32.1-alpha.469d91.0@codecademy/gamut-illustrations@0.49.1-alpha.469d91.0@codecademy/gamut-kit@0.6.452-alpha.469d91.0@codecademy/gamut-patterns@0.9.16-alpha.469d91.0@codecademy/gamut-styles@17.1.1-alpha.469d91.0@codecademy/gamut-tests@5.1.3-alpha.469d91.0@codecademy/macros@3.0.5-alpha.469d91.0@codecademy/styleguide@68.1.4-alpha.469d91.0<EMAIL_ADDRESS>
🚀 Styleguide deploy preview ready!https://67227d8a790ff12dc885089a--gamut-preview.netlify.appDeploy Logs

📬Published Alpha Packages:eslint-plugin-gamut@2.2.1-alpha.edf7c7.0@codecademy/gamut@57.4.4-alpha.edf7c7.0@codecademy/gamut-icons@9.32.1-alpha.edf7c7.0@codecademy/gamut-illustrations@0.49.1-alpha.edf7c7.0@codecademy/gamut-kit@0.6.452-alpha.edf7c7.0@codecademy/gamut-patterns@0.9.16-alpha.edf7c7.0@codecademy/gamut-styles@17.1.1-alpha.edf7c7.0@codecademy/gamut-tests@5.1.3-alpha.edf7c7.0@codecademy/macros@3.0.5-alpha.edf7c7.0@codecademy/styleguide@68.1.4-alpha.edf7c7.0<EMAIL_ADDRESS>
📬Published Alpha Packages:eslint-plugin-gamut@2.2.1-alpha.de6161.0@codecademy/gamut@57.4.4-alpha.de6161.0@codecademy/gamut-icons@9.32.1-alpha.de6161.0@codecademy/gamut-illustrations@0.49.1-alpha.de6161.0@codecademy/gamut-kit@0.6.452-alpha.de6161.0@codecademy/gamut-patterns@0.9.16-alpha.de6161.0@codecademy/gamut-styles@17.1.1-alpha.de6161.0@codecademy/gamut-tests@5.1.3-alpha.de6161.0@codecademy/macros@3.0.5-alpha.de6161.0@codecademy/styleguide@68.1.4-alpha.de6161.0<EMAIL_ADDRESS>
🚀 Styleguide deploy preview ready!https://67228663a5240439e28b2622--gamut-preview.netlify.appDeploy Logs

🚀 Styleguide deploy preview ready!https://6723d47e111bbc18c3a366b5--gamut-preview.netlify.appDeploy Logs

📬Published Alpha Packages:eslint-plugin-gamut@2.2.1-alpha.24602f.0@codecademy/gamut@57.4.4-alpha.24602f.0@codecademy/gamut-icons@9.32.1-alpha.24602f.0@codecademy/gamut-illustrations@0.49.1-alpha.24602f.0@codecademy/gamut-kit@0.6.452-alpha.24602f.0@codecademy/gamut-patterns@0.9.16-alpha.24602f.0@codecademy/gamut-styles@17.1.1-alpha.24602f.0@codecademy/gamut-tests@5.1.3-alpha.24602f.0@codecademy/macros@3.0.5-alpha.24602f.0@codecademy/styleguide@68.1.4-alpha.24602f.0<EMAIL_ADDRESS>
🚀 Styleguide deploy preview ready!https://6723e04bd0918e29e36cba76--gamut-preview.netlify.appDeploy Logs

📬Published Alpha Packages:eslint-plugin-gamut@2.2.1-alpha.94acef.0@codecademy/gamut@57.4.4-alpha.94acef.0@codecademy/gamut-icons@9.32.1-alpha.94acef.0@codecademy/gamut-illustrations@0.49.1-alpha.94acef.0@codecademy/gamut-kit@0.6.452-alpha.94acef.0@codecademy/gamut-patterns@0.9.16-alpha.94acef.0@codecademy/gamut-styles@17.1.1-alpha.94acef.0@codecademy/gamut-tests@5.1.3-alpha.94acef.0@codecademy/macros@3.0.5-alpha.94acef.0@codecademy/styleguide@68.1.4-alpha.94acef.0@codecademy/variance@0.21.4-alpha.94acef.0


Tolerate doclint. http://blog.joda.org/2014/02/turning-off-doclint-in…

…-jdk-8-javadoc.html

Windows Build 1387 is now running using a merge of 41c0bd90841ae7c77440a55f3f651165c9487e05

Core - Full Integration Build 983 is now running using a merge of 41c0bd90841ae7c77440a55f3f651165c9487e05

Linux Build 1834 is now running using a merge of 41c0bd90841ae7c77440a55f3f651165c9487e05

Windows Build 1387 outcome was SUCCESS using a merge of 41c0bd90841ae7c77440a55f3f651165c9487e05
Summary: Tests passed: 3107, ignored: 69 Build time: 0:20:27

Linux Build 1834 outcome was SUCCESS using a merge of 41c0bd90841ae7c77440a55f3f651165c9487e05
Summary: Tests passed: 3107, ignored: 69 Build time: 0:22:45

Core - Full Integration Build 983 outcome was SUCCESS using a merge of 41c0bd90841ae7c77440a55f3f651165c9487e05
Summary: Tests passed: 2844, ignored: 375, muted: 1 Build time: 0:51:12

Core - Full Integration JDK8 Build 46 outcome was FAILURE using a merge of 41c0bd90841ae7c77440a55f3f651165c9487e05
Summary: Compilation error: Compiler (new) Build time: 00:02:14


json_equal() is not const correct

I suspect  that json_equal() does not modify its arguments. In spite of this, const is not used. We should change the signature from this:
int json_equal(json_t *value1, json_t *value2);

... to this:
int json_equal(const json_t *value1, const json_t *value2);

Note that this does not break either API or ABI stability.

Fixed, thanks!