Sw dspdc 900 add encode infrastructure

Trying to get encode set up here so that we will be able to run the orchestration workflow in encode-ingest (Jira Ticket).
This PR might not be ready to go initially, but am hoping someone will be able to confirm that I am moving in the right direction.

I think this looks good; let us know what the terraform plan looks like when you try to apply it! Well maybe let us know, it might be enormous and hard to copy/paste haha

@raaidbroad The copy-paste was too big for slack to handle so I'm adding it here. Let me know if you think it looks okay 😁 If so, I'll go ahead and merge and apply!
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # module.monster_infrastructure.module.command_center.google_service_account_iam_binding.encode_workload_identity_binding will be created
  + resource "google_service_account_iam_binding" "encode_workload_identity_binding" {
      + etag               = (known after apply)
      + id                 = (known after apply)
      + members            = [
          + "serviceAccount:broad-dsp-monster-dev.svc.id.goog[encode/argo-runner]",
        ]
      + role               = "roles/iam.workloadIdentityUser"
      + service_account_id = (known after apply)
    }

  # module.monster_infrastructure.module.encode.google_project_iam_member.command_center_argo_account_iam["bigquery.dataOwner"] will be created
  + resource "google_project_iam_member" "command_center_argo_account_iam" {
      + etag    = (known after apply)
      + id      = (known after apply)
      + member  = (known after apply)
      + project = (known after apply)
      + role    = "roles/bigquery.dataOwner"
    }

  # module.monster_infrastructure.module.encode.google_project_iam_member.command_center_argo_account_iam["bigquery.jobUser"] will be created
  + resource "google_project_iam_member" "command_center_argo_account_iam" {
      + etag    = (known after apply)
      + id      = (known after apply)
      + member  = (known after apply)
      + project = (known after apply)
      + role    = "roles/bigquery.jobUser"
    }

  # module.monster_infrastructure.module.encode.google_project_iam_member.command_center_argo_account_iam["compute.viewer"] will be created
  + resource "google_project_iam_member" "command_center_argo_account_iam" {
      + etag    = (known after apply)
      + id      = (known after apply)
      + member  = (known after apply)
      + project = (known after apply)
      + role    = "roles/compute.viewer"
    }

  # module.monster_infrastructure.module.encode.google_project_iam_member.command_center_argo_account_iam["dataflow.developer"] will be created
  + resource "google_project_iam_member" "command_center_argo_account_iam" {
      + etag    = (known after apply)
      + id      = (known after apply)
      + member  = (known after apply)
      + project = (known after apply)
      + role    = "roles/dataflow.developer"
    }

  # module.monster_infrastructure.module.encode.google_service_account_iam_binding.dataflow_runner_user_binding will be created
  + resource "google_service_account_iam_binding" "dataflow_runner_user_binding" {
      + etag               = (known after apply)
      + id                 = (known after apply)
      + members            = (known after apply)
      + role               = "roles/iam.serviceAccountUser"
      + service_account_id = (known after apply)
    }

  # module.monster_infrastructure.module.encode.google_storage_bucket.staging_storage will be created
  + resource "google_storage_bucket" "staging_storage" {
      + bucket_policy_only = (known after apply)
      + force_destroy      = false
      + id                 = (known after apply)
      + location           = "US"
      + name               = "broad-dsp-monster-encode-dev-staging-storage"
      + project            = (known after apply)
      + self_link          = (known after apply)
      + storage_class      = "STANDARD"
      + url                = (known after apply)

      + lifecycle_rule {
          + action {
              + type = "Delete"
            }

          + condition {
              + age                   = 14
              + matches_storage_class = []
              + with_state            = (known after apply)
            }
        }
    }

  # module.monster_infrastructure.module.encode.google_storage_bucket.temp_bucket will be created
  + resource "google_storage_bucket" "temp_bucket" {
      + bucket_policy_only = (known after apply)
      + force_destroy      = false
      + id                 = (known after apply)
      + location           = "US"
      + name               = "broad-dsp-monster-encode-dev-temp-storage"
      + project            = (known after apply)
      + self_link          = (known after apply)
      + storage_class      = "STANDARD"
      + url                = (known after apply)

      + lifecycle_rule {
          + action {
              + type = "Delete"
            }

          + condition {
              + age                   = 7
              + matches_storage_class = []
              + with_state            = (known after apply)
            }
        }
    }

  # module.monster_infrastructure.module.encode.google_storage_bucket_iam_member.command_center_argo_staging_bucket_iam will be created
  + resource "google_storage_bucket_iam_member" "command_center_argo_staging_bucket_iam" {
      + bucket = "broad-dsp-monster-encode-dev-staging-storage"
      + etag   = (known after apply)
      + id     = (known after apply)
      + member = (known after apply)
      + role   = "roles/storage.admin"
    }

  # module.monster_infrastructure.module.encode.google_storage_bucket_iam_member.command_center_argo_temp_bucket_iam will be created
  + resource "google_storage_bucket_iam_member" "command_center_argo_temp_bucket_iam" {
      + bucket = "broad-dsp-monster-encode-dev-temp-storage"
      + etag   = (known after apply)
      + id     = (known after apply)
      + member = (known after apply)
      + role   = "roles/storage.admin"
    }

  # module.monster_infrastructure.module.encode.google_storage_bucket_iam_member.staging_account_iam_reader will be created
  + resource "google_storage_bucket_iam_member" "staging_account_iam_reader" {
      + bucket = "broad-dsp-monster-encode-dev-staging-storage"
      + etag   = (known after apply)
      + id     = (known after apply)
      + member =<EMAIL_ADDRESS>      + role   = "roles/storage.objectViewer"
    }

  # module.monster_infrastructure.module.encode.google_storage_bucket_iam_member.staging_bucket_runner_iam will be created
  + resource "google_storage_bucket_iam_member" "staging_bucket_runner_iam" {
      + bucket = "broad-dsp-monster-encode-dev-staging-storage"
      + etag   = (known after apply)
      + id     = (known after apply)
      + member = (known after apply)
      + role   = "roles/storage.admin"
    }

  # module.monster_infrastructure.module.encode.google_storage_bucket_iam_member.temp_bucket_runner_iam will be created
  + resource "google_storage_bucket_iam_member" "temp_bucket_runner_iam" {
      + bucket = "broad-dsp-monster-encode-dev-temp-storage"
      + etag   = (known after apply)
      + id     = (known after apply)
      + member = (known after apply)
      + role   = "roles/storage.admin"
    }

  # module.monster_infrastructure.module.command_center.module.encode_argo_runner_account.google_project_iam_member.sa_iam["container.developer"] will be created
  + resource "google_project_iam_member" "sa_iam" {
      + etag    = (known after apply)
      + id      = (known after apply)
      + member  = (known after apply)
      + project = (known after apply)
      + role    = "roles/container.developer"
    }

  # module.monster_infrastructure.module.command_center.module.encode_argo_runner_account.google_service_account.sa will be created
  + resource "google_service_account" "sa" {
      + account_id   = "encode-argo-runner"
      + display_name = "Service account to run Encode's Argo workflow."
      + email        = (known after apply)
      + id           = (known after apply)
      + name         = (known after apply)
      + project      = (known after apply)
      + unique_id    = (known after apply)
    }

  # module.monster_infrastructure.module.command_center.module.encode_argo_runner_account.google_service_account_key.sa_key will be created
  + resource "google_service_account_key" "sa_key" {
      + id                      = (known after apply)
      + key_algorithm           = "KEY_ALG_RSA_2048"
      + name                    = (known after apply)
      + private_key             = (sensitive value)
      + private_key_encrypted   = (known after apply)
      + private_key_fingerprint = (known after apply)
      + private_key_type        = "TYPE_GOOGLE_CREDENTIALS_FILE"
      + public_key              = (known after apply)
      + public_key_type         = "TYPE_X509_PEM_FILE"
      + service_account_id      = (known after apply)
      + valid_after             = (known after apply)
      + valid_before            = (known after apply)
    }

  # module.monster_infrastructure.module.command_center.module.encode_argo_runner_account.null_resource.sa_delay will be created
  + resource "null_resource" "sa_delay" {
      + id       = (known after apply)
      + triggers = (known after apply)
    }

  # module.monster_infrastructure.module.command_center.module.encode_argo_runner_account.vault_generic_secret.sa_secret will be created
  + resource "vault_generic_secret" "sa_secret" {
      + data         = (sensitive value)
      + data_json    = (sensitive value)
      + disable_read = false
      + id           = (known after apply)
      + path         = "secret/dsde/monster/dev/command-center/service-accounts/encode-argo-runner"
    }

  # module.monster_infrastructure.module.encode.module.dataflow_runner_account.google_project_iam_member.sa_iam["dataflow.worker"] will be created
  + resource "google_project_iam_member" "sa_iam" {
      + etag    = (known after apply)
      + id      = (known after apply)
      + member  = (known after apply)
      + project = (known after apply)
      + role    = "roles/dataflow.worker"
    }

  # module.monster_infrastructure.module.encode.module.dataflow_runner_account.google_service_account.sa will be created
  + resource "google_service_account" "sa" {
      + account_id   = "dataflow-runner"
      + display_name = " Service account to run Dataflow jobs"
      + email        = (known after apply)
      + id           = (known after apply)
      + name         = (known after apply)
      + project      = (known after apply)
      + unique_id    = (known after apply)
    }

  # module.monster_infrastructure.module.encode.module.dataflow_runner_account.google_service_account_key.sa_key will be created
  + resource "google_service_account_key" "sa_key" {
      + id                      = (known after apply)
      + key_algorithm           = "KEY_ALG_RSA_2048"
      + name                    = (known after apply)
      + private_key             = (sensitive value)
      + private_key_encrypted   = (known after apply)
      + private_key_fingerprint = (known after apply)
      + private_key_type        = "TYPE_GOOGLE_CREDENTIALS_FILE"
      + public_key              = (known after apply)
      + public_key_type         = "TYPE_X509_PEM_FILE"
      + service_account_id      = (known after apply)
      + valid_after             = (known after apply)
      + valid_before            = (known after apply)
    }

  # module.monster_infrastructure.module.encode.module.dataflow_runner_account.null_resource.sa_delay will be created
  + resource "null_resource" "sa_delay" {
      + id       = (known after apply)
      + triggers = (known after apply)
    }

  # module.monster_infrastructure.module.encode.module.dataflow_runner_account.vault_generic_secret.sa_secret will be created
  + resource "vault_generic_secret" "sa_secret" {
      + data         = (sensitive value)
      + data_json    = (sensitive value)
      + disable_read = false
      + id           = (known after apply)
      + path         = "secret/dsde/monster/dev/processing-projects/encode/service-accounts/dataflow-runner"
    }

  # module.monster_infrastructure.module.encode.module.enable_services.google_project_service.cloud_resource_manager will be created
  + resource "google_project_service" "cloud_resource_manager" {
      + disable_on_destroy = false
      + id                 = (known after apply)
      + project            = (known after apply)
      + service            = "cloudresourcemanager.googleapis.com"
    }

  # module.monster_infrastructure.module.encode.module.enable_services.google_project_service.service_usage will be created
  + resource "google_project_service" "service_usage" {
      + disable_on_destroy = false
      + id                 = (known after apply)
      + project            = (known after apply)
      + service            = "serviceusage.googleapis.com"
    }

  # module.monster_infrastructure.module.encode.module.enable_services.google_project_service.services[0] will be created
  + resource "google_project_service" "services" {
      + disable_on_destroy = false
      + id                 = (known after apply)
      + project            = (known after apply)
      + service            = "compute.googleapis.com"
    }

  # module.monster_infrastructure.module.encode.module.enable_services.google_project_service.services[1] will be created
  + resource "google_project_service" "services" {
      + disable_on_destroy = false
      + id                 = (known after apply)
      + project            = (known after apply)
      + service            = "container.googleapis.com"
    }

  # module.monster_infrastructure.module.encode.module.enable_services.google_project_service.services[2] will be created
  + resource "google_project_service" "services" {
      + disable_on_destroy = false
      + id                 = (known after apply)
      + project            = (known after apply)
      + service            = "containerregistry.googleapis.com"
    }

  # module.monster_infrastructure.module.encode.module.enable_services.google_project_service.services[3] will be created
  + resource "google_project_service" "services" {
      + disable_on_destroy = false
      + id                 = (known after apply)
      + project            = (known after apply)
      + service            = "dataflow.googleapis.com"
    }

  # module.monster_infrastructure.module.encode.module.enable_services.google_project_service.services[4] will be created
  + resource "google_project_service" "services" {
      + disable_on_destroy = false
      + id                 = (known after apply)
      + project            = (known after apply)
      + service            = "iam.googleapis.com"
    }

  # module.monster_infrastructure.module.encode.module.enable_services.google_project_service.services[5] will be created
  + resource "google_project_service" "services" {
      + disable_on_destroy = false
      + id                 = (known after apply)
      + project            = (known after apply)
      + service            = "iamcredentials.googleapis.com"
    }

  # module.monster_infrastructure.module.encode.module.enable_services.google_project_service.services[6] will be created
  + resource "google_project_service" "services" {
      + disable_on_destroy = false
      + id                 = (known after apply)
      + project            = (known after apply)
      + service            = "logging.googleapis.com"
    }

  # module.monster_infrastructure.module.encode.module.enable_services.google_project_service.services[7] will be created
  + resource "google_project_service" "services" {
      + disable_on_destroy = false
      + id                 = (known after apply)
      + project            = (known after apply)
      + service            = "monitoring.googleapis.com"
    }

  # module.monster_infrastructure.module.encode.module.enable_services.google_project_service.services[8] will be created
  + resource "google_project_service" "services" {
      + disable_on_destroy = false
      + id                 = (known after apply)
      + project            = (known after apply)
      + service            = "replicapool.googleapis.com"
    }

  # module.monster_infrastructure.module.encode.module.enable_services.google_project_service.services[9] will be created
  + resource "google_project_service" "services" {
      + disable_on_destroy = false
      + id                 = (known after apply)
      + project            = (known after apply)
      + service            = "replicapoolupdater.googleapis.com"
    }

  # module.monster_infrastructure.module.encode.module.enable_services.google_project_service.services[10] will be created
  + resource "google_project_service" "services" {
      + disable_on_destroy = false
      + id                 = (known after apply)
      + project            = (known after apply)
      + service            = "resourceviews.googleapis.com"
    }

  # module.monster_infrastructure.module.encode.module.enable_services.google_project_service.services[11] will be created
  + resource "google_project_service" "services" {
      + disable_on_destroy = false
      + id                 = (known after apply)
      + project            = (known after apply)
      + service            = "runtimeconfig.googleapis.com"
    }

  # module.monster_infrastructure.module.encode.module.enable_services.google_project_service.services[12] will be created
  + resource "google_project_service" "services" {
      + disable_on_destroy = false
      + id                 = (known after apply)
      + project            = (known after apply)
      + service            = "stackdriver.googleapis.com"
    }

  # module.monster_infrastructure.module.encode.module.enable_services.google_project_service.services[13] will be created
  + resource "google_project_service" "services" {
      + disable_on_destroy = false
      + id                 = (known after apply)
      + project            = (known after apply)
      + service            = "storage-api.googleapis.com"
    }

  # module.monster_infrastructure.module.encode.module.enable_services.google_project_service.services[14] will be created
  + resource "google_project_service" "services" {
      + disable_on_destroy = false
      + id                 = (known after apply)
      + project            = (known after apply)
      + service            = "storage-component.googleapis.com"
    }

  # module.monster_infrastructure.module.encode.module.enable_services.google_project_service.services[15] will be created
  + resource "google_project_service" "services" {
      + disable_on_destroy = false
      + id                 = (known after apply)
      + project            = (known after apply)
      + service            = "bigquery.googleapis.com"
    }

  # module.monster_infrastructure.module.encode.module.k8s_network.google_compute_address.nat_addresses[0] will be created
  + resource "google_compute_address" "nat_addresses" {
      + address            = (known after apply)
      + address_type       = "EXTERNAL"
      + creation_timestamp = (known after apply)
      + id                 = (known after apply)
      + label_fingerprint  = (known after apply)
      + name               = "monster-processing-network-nat-0"
      + network_tier       = (known after apply)
      + project            = (known after apply)
      + purpose            = (known after apply)
      + region             = (known after apply)
      + self_link          = (known after apply)
      + subnetwork         = (known after apply)
      + users              = (known after apply)
    }

  # module.monster_infrastructure.module.encode.module.k8s_network.google_compute_address.nat_addresses[1] will be created
  + resource "google_compute_address" "nat_addresses" {
      + address            = (known after apply)
      + address_type       = "EXTERNAL"
      + creation_timestamp = (known after apply)
      + id                 = (known after apply)
      + label_fingerprint  = (known after apply)
      + name               = "monster-processing-network-nat-1"
      + network_tier       = (known after apply)
      + project            = (known after apply)
      + purpose            = (known after apply)
      + region             = (known after apply)
      + self_link          = (known after apply)
      + subnetwork         = (known after apply)
      + users              = (known after apply)
    }

  # module.monster_infrastructure.module.encode.module.k8s_network.google_compute_network.network will be created
  + resource "google_compute_network" "network" {
      + auto_create_subnetworks         = false
      + delete_default_routes_on_create = false
      + gateway_ipv4                    = (known after apply)
      + id                              = (known after apply)
      + ipv4_range                      = (known after apply)
      + name                            = "monster-processing-network"
      + project                         = (known after apply)
      + routing_mode                    = (known after apply)
      + self_link                       = (known after apply)
    }

  # module.monster_infrastructure.module.encode.module.k8s_network.google_compute_router.router will be created
  + resource "google_compute_router" "router" {
      + creation_timestamp = (known after apply)
      + id                 = (known after apply)
      + name               = "monster-processing-network-router"
      + network            = (known after apply)
      + project            = (known after apply)
      + region             = (known after apply)
      + self_link          = (known after apply)

      + bgp {
          + advertise_mode = "DEFAULT"
          + asn            = 64514
        }
    }

  # module.monster_infrastructure.module.encode.module.k8s_network.google_compute_router_nat.nat will be created
  + resource "google_compute_router_nat" "nat" {
      + icmp_idle_timeout_sec              = 30
      + id                                 = (known after apply)
      + name                               = "monster-processing-network-nat"
      + nat_ip_allocate_option             = "MANUAL_ONLY"
      + nat_ips                            = (known after apply)
      + project                            = (known after apply)
      + region                             = (known after apply)
      + router                             = "monster-processing-network-router"
      + source_subnetwork_ip_ranges_to_nat = "ALL_SUBNETWORKS_ALL_IP_RANGES"
      + tcp_established_idle_timeout_sec   = 1200
      + tcp_transitory_idle_timeout_sec    = 30
      + udp_idle_timeout_sec               = 30
    }

  # module.monster_infrastructure.module.encode.module.k8s_network.google_compute_subnetwork.subnetworks[0] will be created
  + resource "google_compute_subnetwork" "subnetworks" {
      + creation_timestamp       = (known after apply)
      + enable_flow_logs         = (known after apply)
      + fingerprint              = (known after apply)
      + gateway_address          = (known after apply)
      + id                       = (known after apply)
      + ip_cidr_range            = "<IP_ADDRESS>/22"
      + name                     = "monster-processing-network"
      + network                  = (known after apply)
      + private_ip_google_access = true
      + project                  = (known after apply)
      + purpose                  = (known after apply)
      + region                   = (known after apply)
      + secondary_ip_range       = (known after apply)
      + self_link                = (known after apply)
    }

Plan: 47 to add, 0 to change, 0 to destroy.

@snwessel the plan looks good to me; @danxmoran if you'd like to look it over too have at it. At worst we are not destroying anything so nothing super bad should happen if we miss something here.

Plan LGTM too :shipit:


feat: added full stack observability quickstart

Summary
Migrating old quickstarts into new repository. This is the full stack observability dashboard showing information from all telemetry sources.

Pre merge checklist

[x] Did you check you NRQL syntax? - Does it work?
[x] Did you check your dashboard image quality? -  Do they look good?
[x] Did you check that your alerts actually work?
[x] Did you include an InstallPlan and Documentation reference?
[x] Did you check your descriptive content for voice, tone, spelling and grammar errors?
[x] Did you attach images of your dashboards to the PR so we can see them working?

Screenshots
Attach images of any visual changes, such as a dashboard here.

I've tested this one so it should work fine.


Lib list dialog revork

Proof of concept in done. But don't merge before I improve it and write a documentation.
issue: #41

@akrasuski1 Could you check this out please?

Checking.

Bug: when the list is exactly two full pages long, the cancellable dialog shows: page 2/2, but you can go to the third page (then it says page 3/2 and contains just the next, previous and cancel buttons). Other than that, I haven't found bugs.

Cosmetic changes I would adopt:

The controls could be capitalized (i.e. Next page, Previous page, Cancel). The word Page too.
The example has a typo: it's choose, not chose. Also add a colon (:) at the end of the title (in example, not the library)
This is discutable: the page 2/2 thing in the current place looks as part of the title. I would either move it to the top of the screen, or skip the word page, leaving it  to be just 2/2. Any other ideas?

Done.

Documentation for it: #54.

@akrasuski1 Could you please check this out?

inaccessibe_lines variable is misspelled - should be inaccessible_lines.
No other problems, you can merge it.


Suggestions

Hey, great job on the module! I have a few suggestions:

Option to only play sounds to players, not the DM.
Smart snapping into place like Small Time (would be extra great if it could snap to or on top of Small Time and start at this default position for everyone).
Maybe the progress bar could be more visible and appear above or below the numbers instead of behind them. Maybe have a toggle for its visibility as well.
Give a bit more padding around the numbers, make them slightly smaller (mockup below).

Ill take them into consideration but I plan on keeping it simple , I have a lot of modules to maintain ;)

Cool, thanks! Most of them are QoL, but I think playing sounds only to players is a must-have.

if you are gonna make your players suffer the ticking, you should suffer it as well

To each their own suffering for taking too long! ⏳


Educationbook-library-management

Need to make my library management project more robust or potent! Run only access _location.py to also access other or just remove # from end line of admin and lib modules.
admin.py.txt
lib_mod_db.py.txt
access_location.py.txt

I don't think this belongs here...

Perhaps make your own repository or gist.


Add bash script to automate the configuration of oci environment variables (oci.env)

Substituting /home/ubuntu with $HOME
and made a bash script to include the following into oci.env file :

DISPLAY_NAME
OCI_SUBNET_ID (optional)
OCI_IMAGE_ID (optional)
NOTIFY_EMAIL
EMAIL (if notify enabled)
EMAIL_PASSWORD (if notify enabled)

Hey @sMouaad, thanks for this PR! The interactive filling of the config file via the bash script is a great addition and was long overdue on my end, just like some of the other todo features!
However, I noticed that while you're prompting the user for the shape, the script is still using the default values for oci.config. This could lead to some confusion if users select a Micro Instance shape during the interactive setup but see a different configuration applied.
Could you please update the script to ensure that both the shape and the second instance variables are populated based on the user's input?

Done @mohankumarpaluru ! I don't know how I missed that :') everything is good now


How to do a gradient mask? Or, how to fade out the edge of a DisplayObject?

I was playing with the panda mask demo, and if I set the opacity of the thing mask to 0.5 or 1.0, the result is the same. If I change the color to white or black, the result is the same.
I was hoping that different levels of opacity, or varying colors would mask more (or mask less) each pixel depending on the color or opacity.

So I thought I could write this function to make a gradient, then apply it as a texture:
function createLinearGradient(width, height, stops, mapFn) {
    mapFn = typeof mapFn == 'function' ? mapFn : function(canvas) {return canvas}

    var canvas = document.createElement('canvas')

    canvas.width = width
    canvas.height = height

    var ctx = canvas.getContext('2d')
    var gradient = ctx.createLinearGradient(0, 0, width, 0)
    var stopPoints = Object.keys(stops)

    for (var i=0, n=stopPoints.length; i<n; i+=1)
        gradient.addColorStop(parseFloat(stopPoints[i]), stops[stopPoints[i]])

    ctx.fillStyle = gradient
    ctx.fillRect(0, 0, width, height)

    return mapFn(canvas)
}

But that won't seem to work based on what I observe in the panda demo (tried with pixi.js v4.1.1).
Can we achieve a gradient-based mask in Pixi.js?
If not, how would you recommend fading out a texture?
For reference, what I'm trying to create is a text marquee where text fades as it approaches the end of the texture.

Ah, yep, I was able to do it!! When I replaced the PIXI.Graphics with a PIXI.Sprite containing my gradient texture, that makes a gradient fade out! So, that accomplishes what I want.
I'll close, but I also have a question:
Why does the color of a PIXI.Graphics not have the same effect as the color of a PIXI.Sprite when either is applied as a mask?

Graphics are used a vector masks, they just cut out area based on the shape. Sprites are alpha masks, the color determines the alpha of what it is masking.


Remove and replace I wait for XX sec, with proper functions

This step  sleep function means:

Performance and lack of real fonctions check
the possibility of failures issue because the sleep is not enoug

When possible substitute sleep with real fonctions

[ ] features/centos_salt_remote_cmds.feature:16:    And I wait for "5" seconds
[ ] features/centos_salt_remote_cmds.feature:19:    And I wait for "15" seconds
[ ] features/salt_action_pickedup.feature:27:    And I wait for "1" seconds
[ ] features/salt_action_pickedup.feature:31:    And I wait for "6" seconds
[ ] features/minion_bootstrap.feature:18:     And I wait for "100" seconds
[ ] features/minion_bootstrap.feature:37:    Then I wait for "3" seconds
[ ] features/minion_bootstrap.feature:80:     And I wait for "100" seconds
[ ] features/minion_bootstrap.feature:118:     And I wait for "5" seconds
[ ] features/minion_bootstrap.feature:141:     And I wait for "15" seconds
[ ] features/minion_bootstrap.feature:156:     And I wait for "15" seconds
[ ] features/minion_bootstrap.feature:171:     And I wait for "15" seconds
[ ] features/minion_bootstrap.feature:185:     And I wait for "30" seconds
[ ] features/cve_audit.feature:19:    And I wait for "5" seconds
[ ] features/init_user_create.feature:56:    Then I wait for mgr-sync refresh is finished
[ ] features/migrate_client_to_minion.feature:20:     And I wait for "100" seconds
[ ] features/migrate_client_to_minion.feature:54:     And I wait for "5" seconds
[ ] features/minion_centos_bootstrap.feature:17:     And I wait for "150" seconds
[ ] features/powermanagement.feature:37:    And I wait for "20" seconds
[ ] features/salt_ssh.feature:25:    And I wait for "15" seconds
[ ] features/salt_ssh.feature:27:    And I wait for "10" seconds
[ ] features/salt_ssh.feature:54:    Then I wait for "15" seconds
[ ] features/salt_ssh.feature:72:    And I wait for "60" seconds
[ ] features/salt_ssh.feature:84:    And I wait for "100" seconds
[ ] features/salt_ssh.feature:105:    And I wait for "15" seconds
[ ] features/salt_ssh.feature:107:    And I wait for "10" seconds
[ ] features/salt_ssh.feature:134:    Then I wait for "15" seconds
[ ] features/salt_ssh.feature:152:    And I wait for "60" seconds
[ ] features/salt_ssh.feature:173:    And I wait for "100" seconds
[ ] features/salt_install_package.feature:16:    And I wait for "5" seconds
[ ] features/salt_minions_page.feature:41:    And I wait for "20" seconds
[ ] features/salt_regression_multiminion.feature:22:    And I wait for "50" seconds
[ ] features/salt_regression_multiminion.feature:32:    Then I wait for "3" seconds
[ ] features/salt_remote_cmds.feature:18:    Then I wait for "3" seconds
[ ] features/setup_wizard.feature:35:    And I wait for "20" seconds
[ ] features/xmlrpc_VHM.feature:49:    And I wait for "10" seconds
[ ] features/xmlrpc_cve_audit.feature:13:    And I wait for "10" seconds
[ ] features/xmlrpc_cve_audit.feature:30:    And I wait for "5" seconds
[ ] features/centos_salt_ssh.feature:30:    And I wait for "15" seconds
[ ] features/centos_salt_ssh.feature:32:    And I wait for "10" seconds
[ ] features/centos_salt_ssh.feature:55:    Then I wait for "15" seconds
[ ] features/centos_salt_ssh.feature:69:    And I wait for "60" seconds
[ ] features/centos_salt_ssh.feature:81:    And I wait for "60" seconds
[ ] features/centos_salt_ssh.feature:102:    And I wait for "15" seconds
[ ] features/centos_salt_ssh.feature:104:    And I wait for "10" seconds
[ ] features/centos_salt_ssh.feature:127:    Then I wait for "15" seconds
[ ] features/centos_salt_ssh.feature:141:    And I wait for "60" seconds
[ ] features/centos_salt_ssh.feature:158:    And I wait for "60" seconds
[ ] features/baremetal_test.feature:76:    And I wait for "30" seconds

Yes this is most needed. As a beginning, we should refrain from using "I wait" as much as we can.
(but I think it's not good having a list of check boxes here. Trello cards have items list and they are our normal way to track our progress)

The testsuite is an open source project, is not a private project repo. Trello is not open. Anyone ho want to contribuite could solve this , in trello not.

i close this because it's a part of another


Image delete icon starts showing on refreshing even if image is null

Describe the bug
Image delete icon starts showing on refreshing even if image is not present.
Would you like to work on the issue?

[x] Yes
[ ] No

Server issue: https://github.com/fossasia/open-event-server/issues/6303


fix build failed bug

there is a error when I build, I use docker 1.13.1
err:
Step 1/32 : ARG NGINX_VERSION=1.13.7 ERROR: Service 'nginx' failed to build: Please provide a source image with fromprior to commit

I see, my docker version is to slow, please close it


Spelling error at doc\editors.html containing "GogLand" instead of "GoLand"

#####Website at https://golang.org/doc/editors.html contains "Gogland" instead of GoLand

yet in the docs https://github.com/golang/go/blob/master/doc/editors.html , it contains the correct spelling.

https://golang.org/doc/editors.html has the 1.9 website. It'll be updated to serve the tip doc for go1.10. Until then, tip is served at https://tip.golang.org/doc/editors.html. As you noticed, the name is already fixed.
Nothing to do here, closing this.


K8SPG-531: remove error on cluster creation

https://perconadev.atlassian.net/browse/K8SPG-531
CHANGE DESCRIPTION
Problem:
Short explanation of the problem.
Cause:
Short explanation of the root cause of the issue if applicable.
Solution:
Short explanation of the solution we are providing with this PR.
CHECKLIST
Jira

[ ] Is the Jira ticket created and referenced properly?
[ ] Does the Jira ticket have the proper statuses for documentation (Needs Doc) and QA (Needs QA)?
[ ] Does the Jira ticket link to the proper milestone (Fix Version field)?

Tests

[ ] Is an E2E test/test case added for the new feature/change?
[ ] Are unit tests added where appropriate?

Config/Logging/Testability

[ ] Are all needed new/changed options added to default YAML files?
[ ] Are the manifests (crd/bundle) regenerated if needed?
[ ] Did we add proper logging messages for operator actions?
[ ] Did we ensure compatibility with the previous version or cluster upgrade process?
[ ] Does the change support oldest and newest supported PG version?
[ ] Does the change support oldest and newest supported Kubernetes version?

Test name
Status

custom-extensions
passed

demand-backup
passed

init-deploy
passed

monitoring
passed

operator-self-healing
passed

scaling
passed

scheduled-backup
passed

self-healing
passed

start-from-backup
passed

telemetry-transfer
passed

upgrade-minor
passed

users
passed

We run 12 out of 12

commit: https://github.com/percona/percona-postgresql-operator/pull/746/commits/151ab2bcaf485b452d93255621a4221bf1154d19
image: perconalab/percona-postgresql-operator:PR-746-151ab2bca


Connect to PostgreSQL via connection string

Connection Grid should have an option to allow the user to specify a connection string rather than have to fill each field to specify connection information.

Released in OmniDB 2.14.


EV10.5 hardware changes

PR for issue #83

Few things I saw but it probably still needs a more careful review

[ ]  snap EDA stuff seems to have leaked in on BQ21040DBVR
[ ] C1 and C2 look they have wrong footprint
[ ] C33 does not have LCSC part number but other caps of same value do
[ ] We should have an 'JLCPCB Part #' field for every part that has the number instead of the LCSC one
[ ] The EEPROM should have an identifier like U? not CR1 and footprint have really werid name
[ ] I wonder if a normal header would just be easier to use for test points
[ ] Given the placement of the test points, will the screen still fit ?
[ ] I think we had a bunch of changes in b ugs like add SDO and JTAG programs, reset boot buttons, move battery connector to not be so close to keyboard connector etc. They don't see to be in.

Tried to review but a bit hard because no easy way to see what hanged. We may just need some diffs on schematic and PCB images.

Can we check the circuit for the MIC and C18 and C17, R9.  It just seems off to me in that nothing pulls MiC_N to GND .
Lets also add a 1/8 TRRS audio jack with headset.

Can we check the circuit for the MIC and C18 and C17, R9. It just seems off to me in that nothing pulls MiC_N to GND .
Lets also add a 1/8 TRRS audio jack with headset.

Ok, I'll add that into EV10.1. I ran EV10.1 in the Electrical rules checker, and it has quite a few warning which may take awhile to go through. My only concern with that is EV11 (current newest) would have the same warnings and fixing them all on EV10.1 would feel like a huge time sink unless we scrap current EV11 and use EV10.1 as the base template for it.

Regarding JLCPCB Part #, the LCSC Part # is the first primary field, so I chose to use that field tag instead.

C1 and C2 look they have wrong footprint

Should it be larger or smaller?

Regarding JLCPCB Part #, the LCSC Part # is the first primary field, so I chose to use that field tag instead.

The problem is not all the part numbers stay the same between them and we are ordering from JLCPCB so it si really weird to put JLCPCB number is a field labled LCSC. It is really easy to fix, you just open the spreadsheet tab for the board and copy them from one column to the other.

Closing due to a updated branch and PR #92


Fix link in docs (#536)

Oops, it's issue 536. Will fix.

Coverage remained the same at 77.133% when pulling 4b3b35b8b84e690fe5eac6a40228d74ce94d943f on louispotok:master into f2c6e3d78c0ebc1f13a99807e33ef3482995b1fd on datamade:master.

Okay, fixed. This addresses issue 536, broken link in the docs.

Coverage remained the same at 77.133% when pulling 0edb34da7f57d17b2d6a06ac5e0aac6869ff2ddd on louispotok:master into f2c6e3d78c0ebc1f13a99807e33ef3482995b1fd on datamade:master.

Coverage remained the same at 77.133% when pulling 0edb34da7f57d17b2d6a06ac5e0aac6869ff2ddd on louispotok:master into f2c6e3d78c0ebc1f13a99807e33ef3482995b1fd on datamade:master.

Coverage remained the same at 77.133% when pulling 0edb34da7f57d17b2d6a06ac5e0aac6869ff2ddd on louispotok:master into f2c6e3d78c0ebc1f13a99807e33ef3482995b1fd on datamade:master.

thanks @louispotok


Fix fan object classes

Proposed Changes
It appeared the updates from commit #28 didn't correctly map to the fan data in settings. This update makes it consistent with the API response for settings.fan
https://developer.honeywellhome.com/lyric/apis/get/devices/thermostats/{deviceId}-0
Related Issues
#28
Checklist

[ x] Change has been tested and works on my device(s).

Also tested & working with home-assistant/tree/lyric-fan/homeassistant/components/lyric

Hi! Is there anything I can do to help with this PR? I've been looking at playing with my Lyric's fan.


Add warning note for shadowDatabaseUrl.

Describe this PR
As a developer I made the mistake to put the same value for both url and shadowDatabaseUrl. This lead to situation where the Prisma's migration table disappeared several times resulting in an inconsistent app state.
Changes

Added a note.

What issue does this fix?
Can be useful for other devs.
Any other relevant information
Probably, we could expand and tell concisely what happens when we put the same value.

I created an issue that we actually forbid that, so we will not need that warning when this is implemented: https://github.com/prisma/prisma/issues/16628

Even though we're going to fix the issue in the product, I've merged this docs PR, so that this information is available in the interrim. Thans @rmariuzzo


Fix bootstrap test

TestNG assumes every method is a test method if the class is annotated
with @Test. Unfortunately, annotating the class is the only way to
specifiy single-threaded behavior.

looks good


feat: useTypeahead hook and Typeahead component

Please make the following changes:
• Move the hook to Typeahead component directory, since it is not a generic hook.
• Merge the examples
Bugs:
• on iOS, if I type in something and the input is empty, it shows all options. Ideally, it should be closed if input is empty unless it is opened from button.
• When I type, if I select something, it does not get selected at once, it takes two clicks.
• When dropdown is opened, I cannot remove the focus from input. Ideally, should be able to de-select and close the dropdown by clicking outside.

Can we make it accessible?


[Feature Request][PowerToys Run] Set alias for some apps

Summary of the new feature/enhancement
Can we set some alias for apps? Such as launch VSCode by typing vscode or launch Windows Terminal just by typing t and press enter. I think it's useful when users have many unrelated files in his disk like the screenshot below 😂

Closing this as a duplicate of #3363


Add supported/allowed chain IDs for mainnet and testnet for multiple chains

Add supported/allowed chain IDs for mainnet and testnet for following chains:

Bcs
Velas
Mantle
Optimism
Arbitrum

Related PR, change implemented
https://github.com/getsafle/safle-keyless-js/pull/56


[10.x] Fix api singleton route registration

Issues
Creatable API singleton resource
Context
When creating an API Singleton resource we're given the possibility to use the creatable method that accepts a bool $creatable parameter.
Problem
This parameter is currently being ignore. It will register a store endpoint event when false is passed into the creatable method.
Cannot use destroyable(false) with creatable()
Context
Route::apiSingleton('route', Controller::class)
    ->creatable()
    ->destroyable(false);

Problem
Since the destroyable function's parameter is also ignore we cannot have a resource that is creatable but not destroyable.
API Singleton with edit endpoint
Context
Route::apiSingleton('route', Controller::class)
    ->only(['edit']);

Problem
This registers the edit route.
Notes
I've included some tests of what I believe to be the expected usage, some of this tests do not pass with the current implementation, my implementation addresses all issues listed above.
Also, this is my first laravel/framework PR, if you feel that something can be improved, please comment and I'll improve it.

This is great... I was also having this problem and about to create an issue for it.
Great implementation.

If we're approaching this as a bugfix, shouldn't this PR go to 9.x?


issue#4 | @rebeccahongsf | update ordering to work on multiple browsers

Summary

update to ascending order which works on multiple browsers

Issue ticket number and link

#4

Checklist before requesting a review

[x] I have performed a self-review of my code

Screenshots (if applicable)
Firefox:

Chrome:

@jwu910


Add BSP support for Metals

For a full integration of Metals with sbt, as a BSP server, it is required to enable the semanticdb plugin and to set some compiler options (see Metals documentation)
Metals include some metadata in its intialization request that should be used to identify the semanticdb version:
{
  "rootUri": "file:///home/adpi2/hello-world/",
  "displayName": "Metals",
  "version": "0.9.0",
  "bspVersion": "2.0.0-M4+10-61e61e87",
  "capabilities": {
    "languageIds": [
      "scala"
    ]
  },
  "data": {
    "semanticdbVersion": "4.3.10",
    "supportedScalaVersions": [
      "2.13.2",
      "2.12.11",
      "2.12.10",
      "2.13.1",
      "2.11.12",
      "2.12.8",
      "2.12.9",
      "2.13.0"
    ]
  }
}

The problem with enabling the semanticdb plugin is that it forces a full compilation. So it is not a good idea to enable it automatically at Metals connection. It would compile everything once, then if the user stop using Metals, it will recompile everything again.
A user of Metals can enable the semanticdb plugin in its global sbt settings so that it does not worry about it anymore. It would have then a good experience using Metals with sbt and a good experience with sbt incremental compilation.
This should be as simple as:
Global / semanticdbEnabled := true
Global / semanticdbEnabled := "4.3.10"

But the current -P:semanticdb:targetroot:... is incompatible with Metals. Does anyone really need it? I don't think so, and I suggest to remove it.
Also I suggest to issue a warning when Metals connects if the semanticdb plugin is not enabled or the semanticdb version is not the right one.

I am curious about the -P:semanticdb:targetroot:... options that sbt add when semanticdb is enabled. Apparently Metals can deal with it so we are fine. But I don't see the point of overriding the targetroot default value as documented here.
I think the semanticdbTargetRoot setting does more harm than good:

it is duplicated in tests config:

sbt:scaladex> show server / Test / semanticdbOptions
[info] * -Yrangepos
[info] * -P:semanticdb:targetroot:/home/adpi2/helloworld/server/target/scala-2.12/meta
[info] * -P:semanticdb:targetroot:/home/adpi2/helloworld/server/target/scala-2.12/test-meta

it is sometime overridden to the default value
https://github.com/sbt/sbt/blob/5ca27512ca2ab4651309e0495039e20fd095df19/main/src/main/scala/sbt/plugins/SemanticdbPlugin.scala#L49-L53

I think the semanticdbTargetRoot setting should be removed but maybe there is a reason for it that I dont know about.

As of https://github.com/sbt/sbt/pull/5613/commits/8789d2072453387dadedfbd29cc93f105860ba3e, you can either define -Dsbt.semanticdb=true or env variable SBT_SEMANTICDB=true that would set semanticdbEnabled setting too.

As of 8789d20, you can either define -Dsbt.semanticdb=true or env variable SBT_SEMANTICDB=true that would set semanticdbEnabled setting too.

This is dangerous. It exposes the same issue with spurious full recompilations if you open sbt once with and once without the env var. Same problem if Metals launches sbt with the env var but the user doesn't.
Such volatile environment should not affect compile settings.

I agree with @sjrd the compile confirmation should not be affected by the presence of an environment variable or sbt flag.
One solution could be to declare the configuration (semanticdb=true) in some file on disk that the user can optionally gitignore. For example, the default value for semanticdbEnabled and associated settings could be declared via semanticdb.json or project/semanticdb.json 🤔

This looks like the kind of option I would like to enable or disable globally on my machine, irrespective of the project, and without impacting the project on other machines. That's because it depends on the IDE I am using, not on the particular project.
So I would recommend that this option be stored globally, perhaps in ~/.sbt/1.0/*.

Both solution are good.
@olafurpg solution is useful for occasional or first time users of Metals that don't want semanticdb on all their projects. Metals could suggest it in a pop-up.
@sjrd solution is useful for frequent users of Metals. You configure it once and forall and then you can work on any sbt project in Metals. This solution could be documented on the Metals website.

@sjrd if it depends on the IDE, shouldn't the respective IDE be passing it in?

Not if it affects the compiled products, or incremental compilation in any way. Otherwise you suffer from spurious recompilations from scratch every time you switch from compiling while your IDE is running or not.

What if different IDEs require different settings? (I don't think it applies here though, IntelliJ should not really care if this setting is on or not)

If they require conflicting settings, then yeah, you're out of luck of you want to use both IDEs for some reason. But it seems unlikely that enabling SemanticDB could enter into conflict with anything.

#5618 adds suggestion about enabling semanticdb when connecting to Metals


7.0.x wizard installer is failing when node join runs from the same node with installer

Description
What happened:
Adding a node into the cluster using the same installer node failing with error:
[ERROR]: detected an active installer service in /home/ec2-user/.gravity, please resume the agent with `gravity resume` or clean it up using `gravity leave --force` before proceeding (see https://gravitational.com/gravity/docs/cluster/#deleting-a-cluster for more details)

What you expected to happen:
Node successfully joining.
How to reproduce it (as minimally and precisely as possible):
Environment

Gravity version [e.g. 7.0.11]: 7.0.20
OS [e.g. Redhat 7.4]:
Platform [e.g. Vmware, AWS]:

Browser environment

Browser Version (for UI-related issues):
Install tools:
Others:

Relevant Debug Logs If Applicable

So we found what the problem is.
In recent versions we added a temporary systemd unit that runs the installer and join agent, in order to workaround potential disconnections and sessions issues. So basically the installer/join process is started through a systemd unit (gravity-installer.service or gravity-agent.service).
This systemd unit stores all its data in $HOME/.gravity
In this context when the installer is started, it will create that directory and store its data within it.
Then when the join process starts, it will detect that there's already this directory in place and fail with a "false positive".
The fix should not be too huge... we can probably have it by next Tue/Wed.

So I've been investigating a fix, and I'm not sure how to address it just yet. On the latest 7.0.x as opposed to 7.0.20 there are a couple other glitches to be addressed.
On latest 7.0.x, this error doesn't appear, however the join agent does hang without connecting to the cluster. I'm pretty sure the reason is that the wizard and join agent both self initialize within the current directory, and listen to ./.gravity/installer.sock which means the wrong PID get's some of the messages.
I tried some basic changes such as renaming the socket, but I think it creates some problems as we don't easily distinguish on whether we want to talk to gravity-agent or the wizard process.
I'm not exactly sure how to avoid this just yet, I see a couple options:

Prevent the wizard and join from being started in the same directory, and give a clear warning of what to do.
In the curl | bash the wizard provides for join, have that script self-initialize into a temp directory instead of the PWD. The downside is for a user to resume a join they may have to find/switch to the temp directory to find the socket.
Have the wizard or gravity agent use a separate socket name/path. I'm not sure to what degree the wizard needs the socket off hand, so it should be safest to move, but my quick attempt to do so broke the startup of the wizard.

@UnderGreen the easiest way to temporarily workaround this issue is to start the join in a different directory from where the wizard was started.

I think option "1" is the simplest to implement and makes sense. I also remember @a-palchikov was mentioning some issues trying to split installer/agent service names - Dim, do you recall what it was, or what's your opinion in general on this issue?

The installation on a single node was never supposed to use the same directory for installer and agent. When starting the interactive installation, the installer is supposed to be launched from the tarball directory (e.g. the directory where the installer tarball was extracted) while agent needs to start from any other directory except the installer's (tarball's) - they both create and maintain local state which cannot be shared between the two roles.
For example, if the installer has been extracted to ~/installer it will create a .gravity directory inside that directory to persist its state. Once the wizard UI has generated the download link for the agent, it can be started in a separate directory - .e.g. ~/agent and the cluster can be installed w/o issues:
$~ mkdir ~/agent
$~ cd ~/agent
$~/agent curl <agent-download-url> | sudo bash

It is true that the state detection might be confusing and does not hint at the possibility of another role (e.g. with installer's state, starting an agent from the same directory or vice versa) clashing with existing state - the message could be updated to reflect that.

It is true that the state detection might be confusing and does not hint at the possibility of another role (e.g. with installer's state, starting an agent from the same directory or vice versa) clashing with existing state - the message could be updated to reflect that.

Atleast in my testing I don't think builds off the latest version/7.0x commits detect the conflict at all. So we need to fix the detection so we get the message, and yea reword it a bit. This scenario is showing the problem, because the installer is being extracted to the users home directory, so when they login with a second shell and run the curl | bash they're naturally in the same directory as the installer.


bump a set of test-related JS libs

CATEGORY
Choose one

[ ] Bug Fix
[ ] Enhancement (new features, refinement)
[ ] Refactor
[ ] Add tests
[x] Build / Development Environment
[ ] Documentation

SUMMARY
Mostly upgrading jest as I was trying to tackle issues related to
wrong source-maps reporting in jest. The entrance to the rabbit hole is here: https://github.com/facebook/jest/issues/5446

Codecov Report

Merging #8051 into master will decrease coverage by <.01%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #8051      +/-   ##
==========================================
- Coverage   65.56%   65.55%   -0.01%
==========================================
  Files         469      469
  Lines       22480    22485       +5
  Branches     2442     2446       +4
==========================================
+ Hits        14739    14741       +2
- Misses       7621     7624       +3
  Partials      120      120

Impacted Files
Coverage Δ

superset/assets/src/query/Metric.ts
0% <0%> (ø)
:arrow_up:

superset/assets/src/utils/safeStringify.ts
100% <0%> (ø)
:arrow_up:

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 ed8bb1b...cfa33de. Read the comment docs.

@kristw , adjusted to core-js/stable


Store a list of my own class?

How do I store a list of my class myClass?
I get an error {
 Cannot write unknown data type : myClass
}
Thanks.

You have to use TypeAdapters. You can either create it yourself or use hive_generator to generate it automatically.

What command should I use to run the hive_generator ? Can't find it on the docs

Try flutter pub run build_runner build

I had to add build_runner package too, I will update the docs and send a PR :D

Oh thanks 👍👍

@krypticallusion if you need more help, just reopen the issue.


Dynamic Index Name in OpenSearch sink #1459

Signed-off-by: Krishna Kondaka<EMAIL_ADDRESS>Description
Added support for dynamic index name in OpenSearch Sink. See issue #1459 (https://github.com/opensearch-project/data-prepper/issues/1459) for more details.
With this change, the index  option for Opensearch sink may contain dynamic parts "${..}" which are replaced by the corresponding value in the event that is being processed.
Added new test cases for the new API in the Event. Added integration test case for testing dynamic index
Issues Resolved
#1459
Check List

[ X] New functionality includes testing.
[X ] New functionality has been documented.

[ ] New functionality has javadoc added

[X ] Commits are signed with a real name per the DCO

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Hi @kkondaka, the build failed because of missing javadocs in some of the new functions. Can you please address these.


feat: buy/bid only players if not in my team yet

Prerequisites

[X] I have searched for existing issues that already include this feature request, without success.

Describe the Feature Request
In autobuyer section buy/bid only players if not in my team yet.
Describe the Use Case
In autobuyer section buy/bid only players if not in my team yet.
Describe Preferred Solution
No response
Describe Alternatives
No response
Additional Information
No response

by not in team you mean not in club?

Yes, sorry, in club


Add new lifecycle method: oninsert.

oninsert is a new lifecycle method that occurs after and
element is created and mounted/inserted into the DOM.

Also rename lifecycle events -> lifecycle methods to avoid
creating new/unfamiliar terms.

Update docs.

@zaceno Fixed! 🎉

... oh you already merged it. Thats why, Lol!

Hmm, I am unsure about "Lifecycle Methods" though.  What is the confusion?

@jamen I am borrowing the term from react. Newcomers are likely to be more familiar with that term. But more importantly, lifecycle events !== appOptions.events, which may actually cause confusion.

Agree on the last point.
The first point is trivial imo, but I'll just say this:  "methods" seems like object-orientated wording to me.  Because in React they are methods on a class. Here I just thought of them as functions and more specifically events.  Especially with the usage
.

Snabbdom call them (lifecycle events/methods) Hooks
Preact is with Lifecycle methods too (It seem you are a lot inspired by Preact isnt it ?)
Vue is in favor of Lifecycle Hooks
Inferno use Lifecycle events

I think naming is not an issue ; if the doc is well written

@jamen "methods" seems like object-orientated wording

Good point. Oh, what to do...? 🤔

My vote would be "hooks" or "events".

Hooks looks good associated to a Lifecycle diagram.
e.g : Vue - Lifecycle Diagram
This diagram show us the instance lifecycle ; and in red there are some hooks to catch some moments of the instance lifecycle.

So, I went with events for everything. I like the harmony it brings to the docs.

app events property.
custom events, created via emit("myCustomEvent", data)
lifecycle events, oncreate, oninsert, onupdate, onremove

lifecycle events, oncreate, oninsert, onupdate, onremove

Lifecycle Events looks also great associated to DOM Events. Same API, one deal with Lifecycle, the other one with regular events :

 {} }
  onupdate={ () => {} }
  onclick={ () => {} }
  onhover={ () => {} }
/>


Password changing feature work as expected but various error message are blinking infinitly - Looping suspected

PassCore Server

OS: [Windows]

Provider: [Active Directory]

Settings file (without sensitive information):
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
},
"WebSettings": {
"EnableHttpsRedirect": false
},
"AppSettings": {
// The following options for AD Provider (remove if you don't use this Provider)
"UseAutomaticContext": true, // Set true to allow PassCore to reset password using the same credentials, or false if you will fill the credentials below
"RestrictedADGroups": [
"Administrators",
"Domain Admins",
"Enterprise Admins"
], // Set the AD groups to restrict the use of PassCore
"AllowedADGroups": ["Domain Users"], // Set the AD Groups to allow PassCore, if the array is empty all the groups no-restricted above are allowed
"IdTypeForUser": "UPN", // Possible values are "DN", "GUID", "Name", "SAM", "SID" and "UPN" (Default UPN)
"UpdateLastPassword": true, // Set true to allow PassCore to  update the last password timestamp
// General options (valid for both providers)
"LdapHostnames": [ "ad01.domain.local", "ad02.domain.local" ], // Set your hostname(s)
"LdapPort": 389, // Default for AD is 389, for LDAPS 636
"LdapUsername": "", // Set the username or distinguish name (DN) to bind the LDAP server
"LdapPassword": "", // Set the password for the username
"DefaultDomain": "" // Set your default AD domain here, or non "@" logins will not work! Use empty value to allow user to set the domain. This option is ONLY available with UPN.
},
"ClientSettings": {
"ValidationRegex": {
"EmailRegex": "^[a-zA-Z0-9.!#$%&’+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)$",
"UsernameRegex": "^[a-zA-Z0-9._-]{3,20}$"
},
"UsePasswordGeneration": false, //Set true to let PassCore create a new password for the current account. If true the user can not customize its new password.
"MinimumDistance": 0, //The minimum distance beetween the old and the new password, this is used to enforce the edit distance using the levenshtein distance algorithm.
"PasswordEntropy": 16, // the number of bytes of entropy to use for generated passwords
"ShowPasswordMeter": true,
"MinimumScore": 0, //The minimum acceptable score that the user's new password needs to get at being evaluated by ZXCVBN to be established as the new password.
"Recaptcha": {
"SiteKey": "", // ReCAPTCHA public key: replace this! or leave empty if you don't need ReCAPTCHA
"PrivateKey": "", // ReCAPTCHA private key: replace this! or leave empty if you don't need ReCAPTCHA
"LanguageCode": "en"
},
"UseEmail": "true",
"ApplicationTitle": "Change Account Password | Self-Service Account Management Tools",
"ChangePasswordTitle": "Change Account Password",
"ChangePasswordForm": {
"HelpText": "If you are having trouble with this tool, please contact IT Support",
"UsernameLabel": "Username",
"UsernameHelpblock": "Your organization's email address",
"UsernameDefaultDomainHelperBlock": "Your organization's username",
"CurrentPasswordLabel": "Current Password",
"CurrentPasswordHelpblock": "Enter your current password",
"NewPasswordLabel": "New Password",
"NewPasswordHelpblock": "Enter a strong password. You can use this tool to help you create one; use the XKCD (random sep, pad digit), or NTLM, options.",
"NewPasswordVerifyLabel": "Re-enter New Password",
"NewPasswordVerifyHelpblock": "Enter your new password again",
"ChangePasswordButtonLabel": "Change Password"
},
"ErrorsPasswordForm": {
"FieldRequired": "This field is required",
"UsernamePattern": "Please enter a valid username",
"UsernameEmailPattern": "Please enter a valid email address",
"PasswordMatch": "Passwords do not match"
},
"Alerts": {
"SuccessAlertTitle": "You have changed your password successfully.",
"SuccessAlertBody": "Please note it may take a few hours for your new password to reach all domain controllers.",
"ErrorPasswordChangeNotAllowed": "You are not allowed to change your password. Please contact your system administrator.",
"ErrorInvalidCredentials": "You need to provide the correct current password.",
"ErrorInvalidDomain": "You have supplied an invalid domain to logon to.",
"ErrorInvalidUser": "We could not find your user account.",
"ErrorCaptcha": "Could not verify you are not a robot.",
"ErrorFieldRequired": "Fulfill all the fields.",
"ErrorFieldMismatch": "The passwords do not match.",
"ErrorComplexPassword": "Failed due to password complex policies: New password length is shorter than AD minimum password length",
"ErrorConnectionLdap": "Unhandled error connecting to the LDAP server.",
"ErrorScorePassword": "The password you are trying to set is not secure enough.",
"ErrorDistancePassword": "The password you are trying to set is not diferent enough of your last password.",
"ErrorPwnedPassword": "The password you are trying to use is publicly known and can be used in dictionary attacks."
}
}
}

Log file (without sensitive information):
stdout_20200914153137_5604.log

Describe the bug
A clear and concise description of what the bug is.
The reset password function works well, but after clicking on 'change password' button, the information message expected 'Password successfully changed, operation may take few minutes to replicate ...' appears but random error messages are blinking on the right bottom like 'complexity no met' or 'incorrect password'. It seems the action to change password is looping in background
Note: If you want to report an issue of passcorepro, please use the proper bug report form at https://store.unosquare.com/passcorepro
To Reproduce
Steps to reproduce the behavior:
Fill Username, Old Password NewPassword and NewPasswordConfirmation fields, then click on Change Password Box
Expected behavior
A clear and concise description of what you expected to happen.
The password should be changed without blinking error messages
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS: [Windows Server 2016 or Windows 10]
Browser [Chrome 85.0.4183.102 | Firefox 80.0.1]

Additional context
Add any other context about the problem here.
Web Server is dedicated for that application, runnning Windows Server 2016 Datacenter and IIS. .NET Core 3.1 and PassCore 2.4.2 are installed

Same here. Watching for updates.

To dig further, the debug console

On Chrome debug console, you can see the looping behavior :

Probably you are mounting the wrong folder. What folder do you have in IIS?

The folder is c:\PassCore424 which is the same configured in advanced binding settings in IIS.
I've tried to rename the folder (c:\PassCore424 to c:\passcore) and remapped the path in IIS (believing there was static bindings in the code ...) but the same behavior happens.

can confirm this bug, have seen it appear when using chrome browser

same thing for me too , password changed successfully , but error message are displaying rapidly ( looping)

I believe I am getting this too on the following systems:
Passcore 4.2.4
Ubuntu 18.04.5
Nginx 1.14
Client:
Ubuntu 18.04.5
Chrome: 84.0.4147.105
Passcore successfully resets the password. However after doing so it hits these HTTP 400 errors and then reloads the request along with the password reset details. Each attempt (more than 10) successfully hits our Domain Controllers. But since it already reset the password, the controllers return an "Invalid Credentials" error which Passcore detects and shows on the page. Additionally what is making PassCore unusable is that the 10+ subsequent requests with a bad password is triggering the account locking.
You can reset your password, but your account is now locked.
I am also seeing the HTTP 400 errors and the request reloads when the current password is initially incorrect. And again so many requests triggers the account locking.

Here is what the Chrome console looks like after resetting the password.
And the full stack here:
passcore-dev-.com-1603825588512.log
Let me know what other logs would help debug this issue

same problem ... i have many 400 bad request
and user locking , i have passcorepro too and no problem with the pro version

I am also seeing this behavior, although I am using Firefox. The first password change call succeeds but some errors are still shown because it looks like the request is sent many times, even though it succeeded the first time. Because the password is already changed, the subsequent requests cause the "You need to provide the correct current password." error to show at the same time as the success dialog.

From the first 400 error after the 200 OK response:

Most of the other 400 errors are error code 4

I am not seeing this issue with version 4.2.3. I will just install and use that version until this is fixed.
For anyone else reverting, I had to update nodejs and npm using these steps and then npm update before running dotnet publish...
I can also confirm that this version is functioning as expected on Ubuntu 20.04

Try the new version, some users already report the issue was fixed.

I'm still seeing 4.2.4 as the latest version. Additionally, the docker container is even worse for me. Where my build from the tar.gz would only loop 10-15 times. The docker container build would get into a infinite loop and I would eventually have to pull the plug on it

This is still an issue with 4.2.4
Host OS:  Server 2012R2
Error message has a spastic blinking. Very noticeable issue.

I am not seeing this issue with version 4.2.3. I will just install and use that version until this is fixed.
For anyone else reverting, I had to update nodejs and npm using these steps and then npm update before running dotnet publish...
I can also confirm that this version is functioning as expected on Ubuntu 20.04

I can confirm that, used 4.2.3 and just copied appsettings.json, previously used in 4.2.4.
Password is changed but no more popup errors and the account is not locked out.
Tested in lab on: Windows Server 2019 and IIS.

I am not seeing this issue with version 4.2.3. I will just install and use that version until this is fixed.
For anyone else reverting, I had to update nodejs and npm using these steps and then npm update before running dotnet publish...
I can also confirm that this version is functioning as expected on Ubuntu 20.04

I can confirm that, used 4.2.3 and just copied appsettings.json, previously used in 4.2.4.
Password is changed but no more popup errors and the account is not locked out.
Tested in lab on: Windows Server 2019 and IIS.

Unfortunately still having this issue. Is there already a fix in the process?


尝试对QTextStream的符号重载函数打桩失败

尝试对QTextStream的符号重载函数打桩失败
    QTextStream& (*addrQTSOperator) (QTextStream*,const QString&)=(QTextStream& (*) (QTextStream*,const QString&)) ((QTextStream& (QTextStream::*)(const QString&))&QTextStream::operator<<);     EMOCK(addrQTSOperator)             .stubs()             .will(invoke(mock_QTSOperator));
QTextStream& EMOCK_API mock_QTSOperator(QTextStream* obj,const QString& s) {     auto fileName=((QFile*)(obj->device()))->fileName();     qDebug()<<fileName;     qDebug()<<s;     return *obj; }
报错如下：
/home/ken/tstPluginSaveRuntime/lemock/include/emock/IsEqual.h:42: error: use of deleted function ‘QTextStream::QTextStream(const QTextStream&)’ lemock/include/emock/IsEqual.h:45:25:   required from ‘bool emock::IsEqual<T>::eval(const emock::RefAny&) const [with T = QTextStream]’ lemock/include/emock/IsEqual.h:42:10:   required from here lemock/include/emock/types/AnyCast.h:155:38: error: use of deleted function ‘QTextStream::QTextStream(const QTextStream&)’   155 |    return *const_cast<nonref*>(result);       |                                      ^ /usr/include/qt/QtCore/qtextstream.h:195:20: note: declared here   195 |     Q_DISABLE_COPY(QTextStream)       |                    ^~~~~~~~~~~ /usr/include/qt/QtCore/qglobal.h:443:5: note: in definition of macro ‘Q_DISABLE_COPY’   443 |     Class(const Class &) = delete;\       |     ^~~~~

看报错是说拷贝构造函数被禁用，我晚点看下AnyCast.h的155行是啥


Ability to retrieve a component by tag

Maybe there's a better way to achieve what I'm trying to do, but it seems like the ability to retrieve a component based on the tag used to instantiate it would be helpful, because the tag is an identifier that isn't tightly coupled to the component's implementation like the specifier is.
I have weapon components in my shared code, which are intended to be usable by both players and NPCs. I have a client-only player input component and a server-only NPC input component, with the same public API. From the weapon code, I want to be able to do something like Dependency<Components>.getComponentFromTag<IInputComponent>("Input") so that weapons can just react to the owner's input without regard for where it originated from. The downside is that I don't see a way to have this proposed function actually validate that the component is truly an IInputComponent, but to me it still seems worth having.
The only current workaround I see is functional, but pretty terrible - have the weapon component do something like components.getComponent<PlayerInput>() ?? components.getComponent<NpcInput>(). It works but generates import warnings about client/server code in a shared module, and it looks like it should be a compilation error to anyone unfamiliar with how the TS code is transformed to Lua.

Closing in favor of #38


codercom/code-server:latest

codercom/code-server:latest

docker run -itd --restart=always --name code-server -p 8100:8080 -e PASSWORD=123456 -v /share/homes/hally/vscode:/root/.vscode-server registry.cn-hangzhou.aliyuncs.com/hallymirror/code-server:latest


Add different handlers for the socket events 'error' and 'close'.

I noticed that when the connection to the STOMP broker fails due to a network issue the error callback is fired twice.
This is due to the net specification where the 'close' event will be called directly following the 'error' event. And the fact that we are listening to both events:
socket.on('error', function(e) {
  return typeof ws.onclose === "function" ? ws.onclose(e) : void 0;
});
socket.on('close', function(e) {
  return typeof ws.onclose === "function" ? ws.onclose(e) : void 0;
});

But treating them on the same way and not paying attention to the value of the parameter error:
 this.ws.onclose = function() {
    var msg;
    msg = "Whoops! Lost connection to " + _this.ws.url;
    if (typeof _this.debug === "function") {
      _this.debug(msg);
    }
    _this._cleanUp();
    return typeof errorCallback === "function" ? errorCallback(msg) : void 0;
  };

So I have decided to add an onerror method for handling the errors.
In the documentation of the library it's defined that the error callback will be called with a single argument corresponding to a STOMP ERROR frame. So I'm emulating the frame building an object with a message in the headers. This way anybody could do the defined:
var error_callback = function(error) {
  // display the error's message header:
  alert(error.headers.message);
};

With this modification reconnecting on error as you described here could be better handled:
var error_callback = function(error, had_error) {
  if (had_error) {
    // Reconnect.
  } else {
    // Handle error.
  }
};

This pull request recreates #67 but from an specific branch.

@Puigcerber Do you mantain a fork with your updated patches?

Hi @polve!
Not really, it's a long time that I haven't worked with STOMP and I don't even know if this is still valid. As the library is no longer maintained, I just decided to close the PR but feel free to use the code if you think it might work.
Cheers, Pablo.


Validate MYCN status in NBL Cell Lines

Related with #163
Resources include https://www.nature.com/articles/sdata201733/tables/3 and https://figshare.com/articles/STAR-reads/7613975

closed via 123d330


[TUBEMQ-197] Support TubeMQ connector for Apache Flink

Support tubemq flink SinkFunction.
Support Table interface for TubeMQ flink connector

Jira Link: https://issues.apache.org/jira/browse/TUBEMQ-197

reopen


feature: autocomplete PaperProps

Ability to pass PaperProps on <Autocomplete ... />
Example <Autocomplete PaperProps={{ elevation: 2 }} />

[x] I have searched the issues of this repository and believe that this is not a duplicate.

Summary 💡

I should be able to supply props to the paper elementType... but because its elementType I don't have the flexibility

Duplicate of #23043


Invoice plugin hooks

I want to merge this change because it adds base plugin for invoice create and delete.
For now this cannot be connected with mutation since mutation doesn't yet exists.
This branch is created from invoice model branch since the other one is not merged yet.

Screenshots

Pull Request Checklist

[ ] Privileged views and APIs are guarded by proper permission checks.
[ ] All visible strings are translated with proper context.
[ ] All data-formatting is locale-aware (dates, numbers, and so on).
[ ] Database queries are optimized and the number of queries is constant.
[ ] Database migration files are up to date.
[ ] The changes are tested.
[ ] GraphQL schema and type definitions are up to date.
[ ] Changes are mentioned in the changelog.

Here is the report for 8cbbef36e42423dfe7e5dada1403cfc05e1d9cdd (mirumee/saleor @ invoice-plugin-hooks)
Base comparison is d8fe58d33626fe6fb54292de606f28ce3716b511.
No differences were found. (click me)

# api.benchmark category
  test name                                  	left count 	right count	duplicate count
  -------------------------------------------	-----------	-----------	---------------
  category view                              	         23	         23	              0

# api.benchmark checkout
  test name                                  	left count 	right count	duplicate count
  -------------------------------------------	-----------	-----------	---------------
  add billing address to checkout            	         34	         34	             20
  add shipping to checkout                   	          7	          7	              0
  checkout payment charge                    	         10	         10	              0
  complete checkout                          	          8	          8	              0
  create checkout                            	          5	          5	              1

# api.benchmark collection
  test name                                  	left count 	right count	duplicate count
  -------------------------------------------	-----------	-----------	---------------
  collection view                            	         21	         21	              0

# api.benchmark homepage
  test name                                  	left count 	right count	duplicate count
  -------------------------------------------	-----------	-----------	---------------
  featured products list                     	         20	         20	              0
  retrieve main menu                         	          8	          8	              0
  retrieve product list                      	          6	          6	              0
  retrieve secondary menu                    	          8	          8	              0
  retrieve shop                              	          2	          2	              0
  user checkout details                      	         53	         53	             28

# api.benchmark product
  test name                                  	left count 	right count	duplicate count
  -------------------------------------------	-----------	-----------	---------------
  product details                            	         17	         17	              3
  retrieve product attributes                	          9	          9	              0

# api.benchmark variant
  test name                                  	left count 	right count	duplicate count
  -------------------------------------------	-----------	-----------	---------------
  product variant bulk create                	         51	         51	              3
  retrieve variant list                      	         23	         23	              9

# api product sorting attributes
  test name                                  	left count 	right count	duplicate count
  -------------------------------------------	-----------	-----------	---------------
  sort product not having attribute data     	         21	         21	              0

Let's close this for now and add the mutation first so we can actually use these hooks anywhere (plus this would have to be rewritten either way due to conceptional changes).


Fix issue #22 connection abort and recovery

Not sure if this is exactly how you'd like this solved.  One of the for loops in drain_all_pending was erroneously trying to iterate over tuples.  Once that was fixed the StreamClosedError that occurs when the connection is lost and PingRequest attempts to send on the iostream was occurring, but was not triggering a state change that would inform repair_loop to initiate reconnect attempts.  These changes do repair the connection (when stopping and starting zoonado).  I don't know if you want a test for that.  However for the locking example, after reconnect, the test does not continue where it left off.

Excellent, pulled the branch locally and it's definitely an improvement.  Thanks a bunch!
When recreating the issue I managed to kill zookeeper at just the right time to cause a different error:
ERROR:zoonado.session:Couldn't connect to localhost:2181
Traceback (most recent call last):
  File "/Users/william/work/zoonado/zoonado/session.py", line 110, in make_connection
    yield conn.connect()
  File "/Users/william/.venvs/zoonado/lib/python2.7/site-packages/tornado-4.5.1-py2.7-macosx-10.11-x86_64.egg/tornado/gen.py", line 1055, in run
    value = future.result()
  File "/Users/william/.venvs/zoonado/lib/python2.7/site-packages/tornado-4.5.1-py2.7-macosx-10.11-x86_64.egg/tornado/concurrent.py", line 238, in result
    raise_exc_info(self._exc_info)
  File "/Users/william/.venvs/zoonado/lib/python2.7/site-packages/tornado-4.5.1-py2.7-macosx-10.11-x86_64.egg/tornado/gen.py", line 1069, in run
    yielded = self.gen.send(value)
  File "/Users/william/work/zoonado/zoonado/connection.py", line 63, in connect
    map(int, version_regex.match(version_line).groups())
AttributeError: 'NoneType' object has no attribute 'groups'

I'll get to the bottom of that though.
Sorry for the super-duper late follow-up, life got in the way.


feat(event-handler): Add AppSync handler decorator

Issue #, if available:
#356
Description of changes:
Changes:

Relocate AppSyncResolver to aws_lambda_powertools/utilities/event_handler
Add docstrings for AppSyncResolver
Fixed aws_lambda_powertools/utilities/data_classes/__init__.py imports
Add initial markdown docs for AppSyncResolver

UX example:
from aws_lambda_powertools.utilities.data_classes import AppSyncResolverEvent
from aws_lambda_powertools.utilities.event_handler import AppSyncResolver

app = AppSyncResolver()

@app.resolver(type_name="Query", field_name="listLocations", include_event=True)
def list_locations(event: AppSyncResolverEvent, page: int = 0, size: int = 10):
    """ Your logic to fetch locations """

@app.resolver(type_name="Merchant", field_name="extraInfo", include_event=True)
def get_extra_info(event: AppSyncResolverEvent):
     """ Can use "event.source" to filter within the parent context  """

@app.resolver(field_name="commonField")
def common_field():
     """ Would match all fieldNames matching 'commonField'  """

def handle(event, context):
    app.resolve(event, context)

Checklist

[x] Meet tenets criteria
[x] Update tests
[x] Update docs
[x] PR title follows conventional commit semantics

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

@heitorlessa i moved this to the event_handler location. Just have not added a new section in the docs for event_handler

Codecov Report

Merging #363 (9f4e3e8) into develop (7c9a319) will decrease coverage by 0.33%.
The diff coverage is 100.00%.

@@             Coverage Diff             @@
##           develop     #363      +/-   ##
===========================================
- Coverage    99.94%   99.61%   -0.34%
===========================================
  Files           96       97       +1
  Lines         3643     3626      -17
  Branches       175      175
===========================================
- Hits          3641     3612      -29
- Misses           0        7       +7
- Partials         2        7       +5

Impacted Files
Coverage Δ

...mbda_powertools/utilities/data_classes/__init__.py
100.00% <100.00%> (ø)

...bda_powertools/utilities/event_handler/__init__.py
100.00% <100.00%> (ø)

...mbda_powertools/utilities/event_handler/appsync.py
100.00% <100.00%> (ø)

aws_lambda_powertools/utilities/parser/types.py
71.42% <0.00%> (-28.58%)
:arrow_down:

...wertools/utilities/idempotency/persistence/base.py
92.94% <0.00%> (-6.42%)
:arrow_down:

aws_lambda_powertools/logging/logger.py
100.00% <0.00%> (ø)

aws_lambda_powertools/tracing/tracer.py
100.00% <0.00%> (ø)

aws_lambda_powertools/metrics/metrics.py
100.00% <0.00%> (ø)

aws_lambda_powertools/logging/formatter.py
100.00% <0.00%> (ø)

aws_lambda_powertools/utilities/batch/base.py
100.00% <0.00%> (ø)

... and 7 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 7c9a319...9f4e3e8. Read the comment docs.

looking :)


fixed: Missing escape in llms.utils.enforce_stop_tokens()

Problem:
The problem with the enforce_stop_tokens method as currently implemented is that it directly joins the stop words with the | character for the re.split function. This approach works well if the stop words don't contain any regex special characters. However, if they do, this can lead to unintended behavior because the special characters are interpreted as part of the regex pattern, not as literal characters.
Solution
To fix this issue, each stop word should be escaped so that any special characters it contains are treated as literals.
fixed: #13397

Same PR as #11113 - closing because people can escape before passing in, and anyone currently escaping would be broken by this.

@efriis
Thanks for your feedback. Did you guys left the issue #13397 open intentionally?

Commented


Empty sendArray causes server crash.

MPP.client.sendArray([""]);

Sending this can easily crash the server.

that's not empty but an array with an empty string. what about other strings, or other types like numbers, booleans and null? normally the array only ever has objects so perhaps the server doesn't expect other data types.

https://github.com/nagalun/multiplayerpiano-server/blob/02c2e9916ee5251ec80ba8d8486b255d8f5710c0/src/server.cpp#L534
needs m.is_object() check and a try catch around it to ignore future slip-ups like these

fixed?

fixed?

Appears to be

On this one too, now.


ROX-17994: Wait for pods to be ready to work

Description
The "AdmissionControllerTest > Verify admission controller performs image scans if Sensor is Unavailable" test can fail because while it waits for the restarted admission-control pods to be ready it does not wait for them to be healthy and ready to work. This change uses the ApplicationHealth package to ensure admission-control is ready to work before trying to deploy an image that it should refuse.
E.g. in a failing test the admission-control pod is not health until about 15:50:37 but the test tries to create at 15:50:33:
AdmissionControllerTest > Verify admission controller performs image scans if Sensor is Unavailable STANDARD_OUT
    15:50:07 | INFO  | AdmissionControllerTest   | Starting testcase
    15:50:12 | INFO  | Kubernetes                | Scaled the deployment sensor to 0
    15:50:15 | INFO  | AdmissionControllerTest   | Sensor is now scaled to 0
    15:50:15 | INFO  | Kubernetes                | Scaled the deployment admission-control to 0
    15:50:32 | INFO  | AdmissionControllerTest   | Admission controller scaled to 0, was 3
    15:50:32 | INFO  | Kubernetes                | Scaled the deployment admission-control to 3
    15:50:33 | DEBUG | Kubernetes                | Encountered 3 ready pods matching [app:admission-control]: [admission-control-7d8f48d9c5-fmxsr, admission-control-7d8f48d9c5-pd2lp, admission-control-7d8f48d9c5-rfwp9]
    15:50:33 | INFO  | AdmissionControllerTest   | Admission controller scaled back to 3
    15:50:33 | DEBUG | Kubernetes                | Told the orchestrator to createOrReplace qagcrnginx
[edit: the point of failure is here and what follows is from the cleanup: block]
    15:50:33 | INFO  | Kubernetes                | Scaled the deployment sensor to 1
    15:50:33 | DEBUG | Kubernetes                | Encountered 1 ready pods matching [app:sensor]: [sensor-d4d87774c-sjrfh]
    15:50:33 | DEBUG | Kubernetes                | Removed the deployment: qagcrnginx
    15:50:33 | ERROR | Helpers                   | An exception occurred in test
    org.spockframework.runtime.ConditionNotSatisfiedError: Condition not satisfied:

    !created
    ||
    |true
    false

Logs from admission-control pods show they are not ready to do anything until later:
No certificates found in /usr/local/share/ca-certificates
'/etc/pki/injected-ca-trust/tls-ca-bundle.pem' -> '/etc/pki/ca-trust/source/anchors/tls-ca-bundle.pem'
main: 2023/06/22 15:50:37.127183 main.go:39: Info: StackRox Sensor Admission Control Service, version 4.0.x-781-g55e7775a9c
admission-control/settingswatch: 2023/06/22 15:50:37.148772 k8s.go:144: Info: Detected and propagated updated admission controller settings via Kubernetes config map watch, timestamp: 2023-06-22T15:50:07.72651334Z
admission-control/manager: 2023/06/22 15:50:37.152671 manager_impl.go:329: Info: RE-ENABLING admission control service
admission-control/manager: 2023/06/22 15:50:37.152727 manager_impl.go:339: Info: Applied new admission control settings (enforcing on 2 deploy-time policies; detecting on 5 run-time policies; enforcing on 0 run-time policies).
admission-control/settingswatch: 2023/06/22 15:50:37.207718 mount.go:146: Info: Detected and propagated updated admission controller settings via config map mount, timestamp: 2023-06-22T15:50:07.72651334Z
admission-control/alerts: 2023/06/22 15:50:37.207826 sender.go:50: Info: Starting admission control alert pusher
pkg/grpc: 2023/06/22 15:50:37.208081 server.go:217: Info: Launching backend gRPC listener
admission-control/settingswatch: 2023/06/22 15:50:37.208610 sensor_push.go:66: Warn: Communication to sensor failed: rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing: dial tcp <IP_ADDRESS>:443: connect: connection refused". Retrying in 6.835658599s

Checklist

[ ] Investigated and inspected CI test results

Testing Performed
CI and in particular OCP 4.13 where this test regularly fails.

/test

/test ocp-4-13-qa-e2e-tests

/test ocp-4-10-qa-e2e-tests
/test ocp-4-13-qa-e2e-tests

works.
    04:42:19 | DEBUG | ApplicationHealth         | 3 admission-control pods expected
    04:42:20 | DEBUG | ApplicationHealth         | admission-control admission-control-79fb69b5b9-87hlp is not in the desired state
    04:42:20 | DEBUG | ApplicationHealth         | admission-control admission-control-79fb69b5b9-9d92z is not in the desired state
    04:42:21 | DEBUG | ApplicationHealth         | admission-control admission-control-79fb69b5b9-v98fd is not in the desired state
    04:42:21 | DEBUG | ApplicationHealth         | admission-control has yet to reach an operable state, will try again in 5 seconds, 57 seconds remain
    04:42:26 | DEBUG | ApplicationHealth         | admission-control admission-control-79fb69b5b9-87hlp is in the desired state
    04:42:26 | DEBUG | ApplicationHealth         | admission-control admission-control-79fb69b5b9-9d92z is in the desired state
    04:42:26 | DEBUG | ApplicationHealth         | admission-control admission-control-79fb69b5b9-v98fd is in the desired state
    04:42:26 | DEBUG | ApplicationHealth         | admission-control is healthy
    04:42:27 | WARN  | Kubernetes                | Error creating k8s deployment:


segfault in "Reparent Node" dialog

Operating system or device, Godot version, GPU Model and driver (if graphics related):
Debian 9.3, Godot_v3.0-beta1_x11.64
Issue description:
"Reparent Node" dialog segfaults on invalid parent selection.
Steps to reproduce:
In the following steps, the specific node type and tree depth is not important.
You just need two or more nodes and an invalid parent selection.

Create an empty project.
Under "Scene", click "+" and add a Node2D.
Click "+" and add another Node2D. (It appears as a child of the first node.)
Right click on second Node2D, and select Reparent.
In the dialog, double-click in the empty tree view space below the second Node2D.

The editor will segfault.
handle_crash: Program crashed with signal 11

Godot 3.0 beta1 came with debug symbols in the Godot_v3.0-beta1_x11.64.debug, which will be loaded automatically to get a backtrace if kept next to your binary. Didn't it happen here?
If not, can you run it trough gdb (note that to debug the actual editor and not the project manager, you should cd to your project directory, and in gdb run run -e) and get a backtrace when it crashes? (bt)

I can reproduce with Godot_v3.0-beta1_x11.64 from official beta1.
but can't reproduce it with current master head c05c66ee01bcf285d5b4d952fb24c15af281803d
probably it's fixed between official beta1 and now.

probably by https://github.com/godotengine/godot/commit/b8b5bb657767698b5864356fb2549ee9681f1bd6#diff-5d8a6d4c5fbd4ef652a74f16a0ccda4f

Closing as fixed then.

@akien-mga The Godot_v3.0-beta1_x11.64.debug in Godot_v3.0-beta1_x11.64.zip does not actually contain debug symbols.
I can confirm that this bug has been fixed.  Tested on build c05c66e

The Godot_v3.0-beta1_x11.64.debug in Godot_v3.0-beta1_x11.64.zip does not actually contain debug symbols.

Hm, that's right.. @hpvb It looks like LTO is breaking symbol extraction?


Incomplete source for Bunny Soul

Bunny Soul can be the reward from any of the Shadowlands pet battle world quests, not just in Ardenweald. Got mine in Maldraxxus. Ther're confirming comments for all four regions in Shadowlands on wowhead: https://www.wowhead.com/item=187858/bunny-soul#comments

Hello, thanks for bringing this information up.
I'm currently abroad and cannot fix this right now, but I'll pick that up asap when I'm back.


Adding a search hint if query results in no items

Based on the idea posted here: https://github.com/NuGet/NuGetGallery/issues/782
Maybe the issue then already solved that way - nothing to fancy. It should look like this:

The link points to this location:
https://docs.microsoft.com/nuget/consume-packages/finding-and-choosing-packages#search-syntax

@anangaur

LGTM 👍

LGTM 👍

That was fast - thanks for merging!


don't expose re-manager

only expose re-manager to queueserver, not to wider world
I think...

re manager is actually the thing that matters and needs to be exposed
what was called queueserver was removed from the repo and spun out. It was actually only the fastapi layer, all the actual state and the zmq (which fastapi just called) is in re-manager.


VOLTE: Unable to establish calls between two UEs using new PCSCF

Hello!
I'm trying to develop a new IMS solution that is using OpenSIPS as CSCF. Most of the development is completed, and I've successfully managed to register two UEs over IPsec. However, when I try to place a call between them, although the INVITE is properly sent to the terminating UE, and it responds with a 183, the phone is not actually ringing, and the call is eventually thorn down. This happens in either direction (UE1 calling UE2, and UE2 caling UE1). I've attached a few sngrep screenshots for reference, as well as a pcap.
Call from UE1 (Xiaomi Redmi Note 9T) -> UE2 (OnePlus 8T)

Call from UE2 (OnePlus 8T) -> UE1 (Xiaomi Redmi Note 9T)

call-attempts-fail.zip
If I replace the P-CSCF with Kamailio, the calls are running fine, so I must be missing something in my P-CSCF configuration/setup, but I am not sure what, and how to troubleshoot this. So any hints on what is the problem, or how I can troubleshoot this, it would be really helpful.
Thanks!

The only difference I spotted between OpenSIPS's and Kamailio's behavior is that for the failed scenario (OpenSIPS P-CSCF), the PRACK is received over UDP, while for the successful scenario (Kamailio P-CSCF), the PRACK comes over TCP. However, I couldn't find any references in the specifications on what could lead to this behavior, and how an UE decides when to use UDP and when TCP. Perhaps understanding this is a good start, but I couldn't find any reference on this.
Thanks a lot!

Glad it got sorted out. If i recall correctly usage of TVP or UDP is in some RFC. Usually TCP is used when MTU exceed a certain threshold around 1300 bytes.
Let me know if you face further issues. Looking forward to seeing opensips IMS getting integrated here.

Indeed, having this sorted out, I now have a fully working PoC, that is derived from this repository (thanks a lot for your work!), that I will be presenting next week at the OpenSIPS Summit Workshop. As soon as that finishes, I would like to wrap everything up and open a PR for it.


Anchor links broken in glossary.md

for multi word links, the generated html uses - dash and the links in the md refer to _ underscore

These anchor links have been updated: https://internetcomputer.org/docs/current/concepts/glossary