Feature compatibility issue with standard sklearn gridsearch, missing best_score_

Feature compatibility issue with standard sklearn gridsearch, missing best_score_

Looks like we can't set this; see https://github.com/databricks/spark-sklearn/pull/79


Client is not entitled log when navigating through images

Replication steps

Get latest version of Wonderous app (This is the log when this issue was created - commit a04d8bbb71c2a1a00e393218de6e44dc2ad0559a (HEAD -> main, origin/main, origin/HEAD)
Merge: https://github.com/flutter/flutter/commit/8a29d67fa4eb7947b01c5eba330f1fd52a23da47 509487f
Author: Shawn<EMAIL_ADDRESS>Date: Mon Oct 2 14:02:12 2023 -0600
Merge pull request https://github.com/flutter/flutter/issues/124 from yangsfang/yangsfang-patch-1
Fix throttler calling an action twice
)

Run Wonderous in XCode (target: iPhone 14Pro + iOS 17.0.2)

Navigate to the Great Wall (Navigate to: /wonder/greatWall?t=0)

Go to images

Check the log:

 Runner[577/0x16e80b000] [lvl=3] -[GMSx_GIPPseudonymousIDStore initializeStorage] Shared App Groups unavailable
nw_path_necp_check_for_updates Failed to copy updated result (22)
container_create_or_lookup_app_group_path_by_app_group_identifier: client is not entitled
container_create_or_lookup_app_group_path_by_app_group_identifier: client is not entitled
container_create_or_lookup_app_group_path_by_app_group_identifier: client is not entitled
nw_path_necp_check_for_updates Failed to copy updated result (22)

Expected results
None warning should be logged
Actual results
Warning logs due to Shared App Groups unavailable
Flutter doctor output
[✓] Flutter (Channel master, 3.16.0-2.0.pre.8, on macOS 13.5 22G74 darwin-arm64, locale en-US)
    • Flutter version 3.16.0-2.0.pre.8 on channel master at /Users/diegogawenda/fvm/versions/master
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision b71f8ce7ae (2 hours ago), 2023-10-02 15:09:38 -0400
    • Engine revision f3a92cb0c4
    • Dart version 3.2.0 (build 3.2.0-221.0.dev)
    • DevTools version 2.28.1

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/diegogawenda/Library/Android/sdk
    • Platform android-34, build-tools 34.0.0
    • ANDROID_HOME = /Users/diegogawenda/Library/Android/sdk
    • ANDROID_SDK_ROOT = /Users/diegogawenda/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.0)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 15A240d
    • CocoaPods version 1.12.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2022.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)

[✓] VS Code (version 1.80.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.74.0

[✓] Connected device (4 available)
    • Pixel 6 (mobile)         • 1A141FDF600823            • android-arm64  • Android 13 (API 33)
    • Somnio’s iPhone (mobile) • 00008120-001168D83C87C01E • ios            • iOS 17.0.2 21A351
    • macOS (desktop)          • macos                     • darwin-arm64   • macOS 13.5 22G74 darwin-arm64
    • Chrome (web)             • chrome                    • web-javascript • Google Chrome 117.0.5938.92

[✓] Network resources
    • All expected network resources are available.

This warnings are still happening actually  (while running the Wonderous app on Flutter versions 3.22.0-14.0.pre.67 (Master) and 3.19.6 (Stable) with Xcode 15.4 Beta1)


Changing GetAuxPtr to GetAuxPtrWithLock while accessing Formals property id array

GetAuxPtrAPI is being called from the backend code and has to be protected with lock.
This is duing the Getter of Formals Property Id Array on the function body
Benchmark perf runs look flat.

@leirocks , Please take a look.

:shipit:

@kunalspathak : I will check-in this on Tuesday(07/05).

:+1:

LGTM


Decide a course of actions for unsupported BeforeBuild and AfterBuild

CPS doesn't support redefining BeforeBuild and AfterBuild targets despite the XML comments in Microsoft.Common.CurrentVersion.targets.
https://github.com/Microsoft/msbuild/issues/1680
Suggestion:
Rewrite targets redefinition. BeforeBuild:
<Target Name="BeforeBuildMigrated" BeforeTargets="PreBuildEvent">...</Target>

AfterBuild:
<PropertyGroup>
    <BuildDependsOn>$(BuildDependsOn);AfterBuildMigrated</BuildDependsOn>
</PropertGroup>
<Target Name="AfterBuildMigrated">...</Target>

So for targets that come from nuget packages, we should be removing those. They end up in a generated file in the obj folder.
If someone has defined them in the csproj itself, then we could do what you suggested but are those equivalent? So is running before PreBuildEvent' equal to BeforeBuild`? There might be assumptions in those targets that no longer hold in that case. Which is again, in my opnion, something that would be the 1% case which the user can solve himself.
I don't think we should try and make this a run once and everything is solved. That should be the case for the 'normal' projects but complex things with conditions, custom targets and all that would be fine with me if that needs some manual work.

I believe we should leave user to handle as little manual modifications as possible. What I proposed has almost the same behavior as in legacy project system. Approach I selected for AfterBuild would give precisely the same behavior as in legacy system, approach I selected for BeforeBuild might be a bit later than was before, still before any actual build takes place. So I believe they are 99% compatible with pre-CPS behavior and I see no reason why this shouldn't be a transformation.

I see what you're saying, I'm not saying we shouldn't do it but I want to
be very cautious when adding something that will work in most but not all
cases. If we don't know how to handle something we should leave it and have
the user go in.
The users that do this kind of stuff are well capapble of fixing these last
issues themselves.
I know what the capabilities are for things like this I've just always
found the msbuild stuff too arcane and error prone to build something in.
On Wed, Aug 22, 2018, 19:51 Andrew Boyarshin<EMAIL_ADDRESS>wrote:

I believe we should leave user to handle as little manual modifications as
possible. What I proposed has almost the same behavior as in legacy project
system. Approach I selected for AfterBuild would give precisely the same
behavior as in legacy system, approach I selected for BeforeBuild might
be a bit later than was before, still before any actual build takes place.
So I believe they are 99% compatible with pre-CPS behavior and I see no
reason why this shouldn't be a transformation.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/hvanbakel/CsprojToVs2017/issues/172#issuecomment-415265699,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AD8FPKre2EBweipukcxuiOVFd_IqCcoRks5uThi2gaJpZM4WH8f_
.

I am amazed at how capable MSBuild really is (since 15.6/7 it can even compile C# Task code from e.g. some property thanks to Roslyn). To be completely sure how MSBuild works (when I work on some complex configuration things), I use MSBuildStructuredLogger, it even has evaluation log, as well as execution task tree. I'm fairly sure that the difference between executing action at the moment of BeforeBuild and guaranteed execution before PreBuildEvent is fired won't play any difference for our users.


FR: Time range when stretchly should be active

IMO it doesn't make sense that I get the 1st micro break indicator after a couple of minutes after I booted my system. I would like to be able to define a start time, when stretchly should begin. So I could set it to 10:00 and before I'm not interrupted.

stretchly now suspend breaks when going to sleep (at least on macos) so I am closing this
https://github.com/hovancik/stretchly/pull/123


Normalize node labeling in GKE & upgrade version

With
https://github.com/2i2c-org/pilot-hubs/pull/391/commits/3c344a4c6a52cb670ea1856dc60714d3082b79ee,
we're trying to normalize labels in our clusters. Primarily,
we want to have three sets of labels that can be composed as
needed.

What components of a JupyterHub can run here? core / user
What components of a dask gateway can run here? core / scheduler /
worker
What are the features of the node pool we care about? For example,
if we want to be on an r5.xlarge node, we should target the
existing node.kubernetes.io/instance-type label

This gives us flexibility without adding too much overhead.
https://github.com/2i2c-org/pilot-hubs/pull/391 changes the base hub
template to use these new labels. We should change our GKE clusters to
have these labels too before we can deploy that PR. This PR adds
these labels in addition to the existing labels, to avoid any
disruption
Since these changes require deleting & recreating the node pools anyway,
might as well use this opportunity to upgrade k8s version too.

Terraform plan output for cloudbank:

❯ terraform plan -var-file cloudbank.tfvars                                                                                1 ↵
Acquiring state lock. This may take a few moments...
module.service_accounts.google_service_account.service_accounts[0]: Refreshing state<EMAIL_ADDRESS>module.gke.random_string.cluster_service_account_suffix: Refreshing state... [id=g6vk]
google_artifact_registry_repository.container_repository: Refreshing state... [id=projects/cb-1003-1696/locations/us-central1/repositories/]
module.gke.google_service_account.cluster_service_account[0]: Refreshing state<EMAIL_ADDRESS>module.gke.random_shuffle.available_zones: Refreshing state... [id=-]
module.service_accounts.google_project_iam_member.project-roles[1]: Refreshing state<EMAIL_ADDRESS>module.service_accounts.google_project_iam_member.project-roles[2]: Refreshing state<EMAIL_ADDRESS>module.service_accounts.google_project_iam_member.project-roles[0]: Refreshing state<EMAIL_ADDRESS>module.gke.google_project_iam_member.cluster_service_account-log_writer[0]: Refreshing state<EMAIL_ADDRESS>google_project_iam_member.project: Refreshing state<EMAIL_ADDRESS>module.service_accounts.google_service_account_key.keys[0]: Refreshing state<EMAIL_ADDRESS>module.gke.google_container_cluster.primary: Refreshing state... [id=projects/cb-1003-1696/locations/us-central1-b/clusters/cloudbank-2i2c-cluster]
module.gke.google_project_iam_member.cluster_service_account-metric_writer[0]: Refreshing state<EMAIL_ADDRESS>module.gke.google_project_iam_member.cluster_service_account-monitoring_viewer[0]: Refreshing state<EMAIL_ADDRESS>module.gke.google_project_iam_member.cluster_service_account-resourceMetadata-writer[0]: Refreshing state<EMAIL_ADDRESS>module.gke.google_container_node_pool.pools["user-pool-2020-09-29"]: Refreshing state... [id=projects/cb-1003-1696/locations/us-central1-b/clusters/cloudbank-2i2c-cluster/nodePools/user-pool-2020-09-29]
module.gke.google_container_node_pool.pools["core-pool"]: Refreshing state... [id=projects/cb-1003-1696/locations/us-central1-b/clusters/cloudbank-2i2c-cluster/nodePools/core-pool]
module.gke.google_container_node_pool.pools["dask-worker-pool-2020-12-11"]: Refreshing state... [id=projects/cb-1003-1696/locations/us-central1-b/clusters/cloudbank-2i2c-cluster/nodePools/dask-worker-pool-2020-12-11]
module.gke.module.gcloud_delete_default_kube_dns_configmap.module.gcloud_kubectl.null_resource.module_depends_on[0]: Refreshing state... [id=4007092501278997687]
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:

create
~ update in-place

destroy
-/+ destroy and then create replacement

Terraform will perform the following actions:
module.gke.google_container_cluster.primary will be updated in-place
~ resource "google_container_cluster" "primary" {
id                          = "projects/cb-1003-1696/locations/us-central1-b/clusters/cloudbank-2i2c-cluster"
~ min_master_version          = "1.18.15-gke.1100" -> "1.19.9-gke.1900"
name                        = "cloudbank-2i2c-cluster"
~ remove_default_node_pool    = false -> true
# (25 unchanged attributes hidden)
    # (16 unchanged blocks hidden)
}

module.gke.google_container_node_pool.pools["core-pool"] must be replaced
-/+ resource "google_container_node_pool" "pools" {
~ id                  = "projects/cb-1003-1696/locations/us-central1-b/clusters/cloudbank-2i2c-cluster/nodePools/core-pool" -> (known after apply)
~ instance_group_urls = [
- "https://www.googleapis.com/compute/v1/projects/cb-1003-1696/zones/us-central1-b/instanceGroupManagers/gke-cloudbank-2i2c-cluster-core-pool-2008707b-grp",
] -> (known after apply)
~ max_pods_per_node   = 110 -> (known after apply)
name                = "core-pool"
+ name_prefix         = (known after apply)
~ node_count          = 1 -> (known after apply)
~ node_locations      = [
- "us-central1-b",
] -> (known after apply)
+ operation           = (known after apply)
# (5 unchanged attributes hidden)
  ~ autoscaling {
      ~ max_node_count = 10 -> 5
        # (1 unchanged attribute hidden)
    }

  ~ node_config {
      ~ disk_size_gb      = 100 -> 50 # forces replacement
      ~ image_type        = "UBUNTU" -> "COS"
      ~ labels            = { # forces replacement
          + "hub.jupyter.org/node-purpose" = "core"
          + "k8s.dask.org/node-purpose"    = "core"
            # (4 unchanged elements hidden)
        }
      ~ machine_type      = "n1-highmem-2" -> "e2-highcpu-4" # forces replacement
        tags              = [
            "gke-cloudbank-2i2c-cluster",
            "gke-cloudbank-2i2c-cluster-core-pool",
        ]
      ~ taint             = [] -> (known after apply)
        # (7 unchanged attributes hidden)

        # (2 unchanged blocks hidden)
    }

  ~ upgrade_settings {
      ~ max_surge       = 1 -> (known after apply)
      ~ max_unavailable = 0 -> (known after apply)
    }
    # (2 unchanged blocks hidden)
}

module.gke.google_container_node_pool.pools["dask-worker-pool"] will be created

resource "google_container_node_pool" "pools" {

cluster             = "cloudbank-2i2c-cluster"

id                  = (known after apply)

initial_node_count  = 0

instance_group_urls = (known after apply)

location            = "us-central1-b"

max_pods_per_node   = (known after apply)

name                = "dask-worker-pool"

name_prefix         = (known after apply)

node_count          = (known after apply)

node_locations      = (known after apply)

operation           = (known after apply)

project             = "cb-1003-1696"

version             = "1.17.12-gke.2502"

autoscaling {

max_node_count = 10
min_node_count = 0
}

management {

auto_repair  = true
auto_upgrade = false
}

node_config {

disk_size_gb      = 100

disk_type         = "pd-ssd"

guest_accelerator = []

image_type        = "COS"

labels            = {

"cluster_name"              = "cloudbank-2i2c-cluster"
"hub.jupyter.org/pool-name" = "dask-worker-pool"
"k8s.dask.org/node-purpose" = "worker"
"node_pool"                 = "dask-worker-pool"
}

local_ssd_count   = 0

machine_type      = "e2-highmem-2"

metadata          = {

"cluster_name"             = "cloudbank-2i2c-cluster"
"disable-legacy-endpoints" = "true"
"node_pool"                = "dask-worker-pool"
}

oauth_scopes      = [

"https://www.googleapis.com/auth/cloud-platform",
]

preemptible       = true

service_account   =<EMAIL_ADDRESS>

tags              = [

"gke-cloudbank-2i2c-cluster",
"gke-cloudbank-2i2c-cluster-dask-worker-pool",
]

taint             = [

{

effect = "NO_SCHEDULE"
key    = "k8s.dask.org_dedicated"
value  = "worker"
},
]

shielded_instance_config {

enable_integrity_monitoring = true
enable_secure_boot          = false
}

workload_metadata_config {

node_metadata = "GKE_METADATA_SERVER"
}
}

timeouts {

create = "45m"
delete = "45m"
update = "45m"
}

upgrade_settings {

max_surge       = (known after apply)
max_unavailable = (known after apply)
}
}

module.gke.google_container_node_pool.pools["dask-worker-pool-2020-12-11"] will be destroyed

resource "google_container_node_pool" "pools" {

cluster             = "cloudbank-2i2c-cluster" -> null

id                  = "projects/cb-1003-1696/locations/us-central1-b/clusters/cloudbank-2i2c-cluster/nodePools/dask-worker-pool-2020-12-11" -> null

initial_node_count  = 0 -> null

instance_group_urls = [

"https://www.googleapis.com/compute/v1/projects/cb-1003-1696/zones/us-central1-b/instanceGroupManagers/gke-cloudbank-2i2c-c-dask-worker-pool-729d24bb-grp",
] -> null

location            = "us-central1-b" -> null

max_pods_per_node   = 110 -> null

name                = "dask-worker-pool-2020-12-11" -> null

node_count          = 0 -> null

node_locations      = [

"us-central1-b",
] -> null

project             = "cb-1003-1696" -> null

version             = "1.17.12-gke.2502" -> null

autoscaling {

max_node_count = 10 -> null
min_node_count = 0 -> null
}

management {

auto_repair  = true -> null
auto_upgrade = false -> null
}

node_config {

disk_size_gb      = 100 -> null

disk_type         = "pd-ssd" -> null

guest_accelerator = [] -> null

image_type        = "UBUNTU" -> null

labels            = {

"cluster_name"              = "cloudbank-2i2c-cluster"
"hub.jupyter.org/pool-name" = "dask-worker-pool"
"node_pool"                 = "dask-worker-pool-2020-12-11"
} -> null

local_ssd_count   = 0 -> null

machine_type      = "e2-standard-4" -> null

metadata          = {

"cluster_name"             = "cloudbank-2i2c-cluster"
"disable-legacy-endpoints" = "true"
"node_pool"                = "dask-worker-pool-2020-12-11"
} -> null

oauth_scopes      = [

"https://www.googleapis.com/auth/cloud-platform",
] -> null

preemptible       = true -> null

service_account   =<EMAIL_ADDRESS>-> null

tags              = [

"gke-cloudbank-2i2c-cluster",
"gke-cloudbank-2i2c-cluster-dask-worker-pool-2020-12-11",
] -> null

taint             = [

{

effect = "NO_SCHEDULE"
key    = "k8s.dask.org_dedicated"
value  = "worker"
},
] -> null

shielded_instance_config {

enable_integrity_monitoring = true -> null
enable_secure_boot          = false -> null
}

workload_metadata_config {

node_metadata = "GKE_METADATA_SERVER" -> null
}
}

timeouts {

create = "45m" -> null
delete = "45m" -> null
update = "45m" -> null
}

upgrade_settings {

max_surge       = 1 -> null
max_unavailable = 0 -> null
}
}

module.gke.google_container_node_pool.pools["user-pool"] will be created

resource "google_container_node_pool" "pools" {

cluster             = "cloudbank-2i2c-cluster"

id                  = (known after apply)

initial_node_count  = 0

instance_group_urls = (known after apply)

location            = "us-central1-b"

max_pods_per_node   = (known after apply)

name                = "user-pool"

name_prefix         = (known after apply)

node_count          = (known after apply)

node_locations      = (known after apply)

operation           = (known after apply)

project             = "cb-1003-1696"

version             = "1.17.12-gke.2502"

autoscaling {

max_node_count = 10
min_node_count = 0
}

management {

auto_repair  = true
auto_upgrade = false
}

node_config {

disk_size_gb      = 100

disk_type         = "pd-ssd"

guest_accelerator = []

image_type        = "COS"

labels            = {

"cluster_name"                 = "cloudbank-2i2c-cluster"
"hub.jupyter.org/node-purpose" = "user"
"hub.jupyter.org/pool-name"    = "user-pool"
"k8s.dask.org/node-purpose"    = "scheduler"
"node_pool"                    = "user-pool"
}

local_ssd_count   = 0

machine_type      = "n1-standard-4"

metadata          = {

"cluster_name"             = "cloudbank-2i2c-cluster"
"disable-legacy-endpoints" = "true"
"node_pool"                = "user-pool"
}

oauth_scopes      = [

"https://www.googleapis.com/auth/cloud-platform",
]

preemptible       = false

service_account   =<EMAIL_ADDRESS>

tags              = [

"gke-cloudbank-2i2c-cluster",
"gke-cloudbank-2i2c-cluster-user-pool",
]

taint             = [

{

effect = "NO_SCHEDULE"
key    = "hub.jupyter.org_dedicated"
value  = "user"
},
]

shielded_instance_config {

enable_integrity_monitoring = true
enable_secure_boot          = false
}

workload_metadata_config {

node_metadata = "GKE_METADATA_SERVER"
}
}

timeouts {

create = "45m"
delete = "45m"
update = "45m"
}

upgrade_settings {

max_surge       = (known after apply)
max_unavailable = (known after apply)
}
}

module.gke.google_container_node_pool.pools["user-pool-2020-09-29"] will be destroyed

resource "google_container_node_pool" "pools" {

cluster             = "cloudbank-2i2c-cluster" -> null

id                  = "projects/cb-1003-1696/locations/us-central1-b/clusters/cloudbank-2i2c-cluster/nodePools/user-pool-2020-09-29" -> null

initial_node_count  = 0 -> null

instance_group_urls = [

"https://www.googleapis.com/compute/v1/projects/cb-1003-1696/zones/us-central1-b/instanceGroupManagers/gke-cloudbank-2i2c-c-user-pool-2020-0-22cd12eb-grp",
] -> null

location            = "us-central1-b" -> null

max_pods_per_node   = 110 -> null

name                = "user-pool-2020-09-29" -> null

node_count          = 1 -> null

node_locations      = [

"us-central1-b",
] -> null

project             = "cb-1003-1696" -> null

version             = "1.17.12-gke.2502" -> null

autoscaling {

max_node_count = 10 -> null
min_node_count = 0 -> null
}

management {

auto_repair  = true -> null
auto_upgrade = false -> null
}

node_config {

disk_size_gb      = 100 -> null

disk_type         = "pd-ssd" -> null

guest_accelerator = [] -> null

image_type        = "UBUNTU" -> null

labels            = {

"cluster_name"              = "cloudbank-2i2c-cluster"
"hub.jupyter.org/pool-name" = "user-pool"
"node_pool"                 = "user-pool-2020-09-29"
} -> null

local_ssd_count   = 0 -> null

machine_type      = "n1-highmem-4" -> null

metadata          = {

"cluster_name"             = "cloudbank-2i2c-cluster"
"disable-legacy-endpoints" = "true"
"node_pool"                = "user-pool-2020-09-29"
} -> null

oauth_scopes      = [

"https://www.googleapis.com/auth/cloud-platform",
] -> null

preemptible       = false -> null

service_account   =<EMAIL_ADDRESS>-> null

tags              = [

"gke-cloudbank-2i2c-cluster",
"gke-cloudbank-2i2c-cluster-user-pool-2020-09-29",
] -> null

taint             = [

{

effect = "NO_SCHEDULE"
key    = "hub.jupyter.org_dedicated"
value  = "user"
},
] -> null

shielded_instance_config {

enable_integrity_monitoring = true -> null
enable_secure_boot          = false -> null
}

workload_metadata_config {

node_metadata = "GKE_METADATA_SERVER" -> null
}
}

timeouts {

create = "45m" -> null
delete = "45m" -> null
update = "45m" -> null
}

upgrade_settings {

max_surge       = 1 -> null
max_unavailable = 0 -> null
}
}

Plan: 3 to add, 1 to change, 3 to destroy.
Changes to Outputs:
# (1 unchanged attribute hidden)

Note: You didn't specify an "-out" parameter to save this plan, so Terraform
can't guarantee that exactly these actions will be performed if
"terraform apply" is subsequently run.
Releasing state lock. This may take a few moments...

For pilot-hubs

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  ~ update in-place
-/+ destroy and then create replacement
Terraform will perform the following actions:
module.gke.google_container_cluster.primary will be updated in-place
~ resource "google_container_cluster" "primary" {
id                          = "projects/two-eye-two-see/locations/us-central1-b/clusters/low-touch-hubs-cluster"
~ min_master_version          = "1.18.15-gke.1500" -> "1.19.9-gke.1900"
name                        = "low-touch-hubs-cluster"
# (26 unchanged attributes hidden)
    # (16 unchanged blocks hidden)
}

module.gke.google_container_node_pool.pools["core-pool"] must be replaced
-/+ resource "google_container_node_pool" "pools" {
~ id                  = "projects/two-eye-two-see/locations/us-central1-b/clusters/low-touch-hubs-cluster/nodePools/core-pool" -> (known after apply)
~ instance_group_urls = [
- "https://www.googleapis.com/compute/v1/projects/two-eye-two-see/zones/us-central1-b/instanceGroupManagers/gke-low-touch-hubs-cluster-core-pool-097eafe9-grp",
] -> (known after apply)
~ max_pods_per_node   = 110 -> (known after apply)
name                = "core-pool"
+ name_prefix         = (known after apply)
~ node_count          = 1 -> (known after apply)
~ node_locations      = [
- "us-central1-b",
] -> (known after apply)
+ operation           = (known after apply)
# (5 unchanged attributes hidden)
  ~ autoscaling {
      ~ max_node_count = 10 -> 5
        # (1 unchanged attribute hidden)
    }

  ~ node_config {
      ~ disk_size_gb      = 100 -> 50 # forces replacement
      ~ labels            = { # forces replacement
          + "hub.jupyter.org/node-purpose" = "core"
          + "k8s.dask.org/node-purpose"    = "core"
            # (4 unchanged elements hidden)
        }
      ~ machine_type      = "n1-highmem-4" -> "e2-highcpu-4" # forces replacement
        tags              = [
            "gke-low-touch-hubs-cluster",
            "gke-low-touch-hubs-cluster-core-pool",
        ]
      ~ taint             = [] -> (known after apply)
        # (8 unchanged attributes hidden)

        # (2 unchanged blocks hidden)
    }

  ~ upgrade_settings {
      ~ max_surge       = 1 -> (known after apply)
      ~ max_unavailable = 0 -> (known after apply)
    }
    # (2 unchanged blocks hidden)
}

module.gke.google_container_node_pool.pools["dask-worker-pool"] must be replaced
-/+ resource "google_container_node_pool" "pools" {
~ id                  = "projects/two-eye-two-see/locations/us-central1-b/clusters/low-touch-hubs-cluster/nodePools/dask-worker-pool" -> (known after apply)
~ instance_group_urls = [
- "https://www.googleapis.com/compute/v1/projects/two-eye-two-see/zones/us-central1-b/instanceGroupManagers/gke-low-touch-hubs-c-dask-worker-pool-366d69db-grp",
] -> (known after apply)
~ max_pods_per_node   = 110 -> (known after apply)
name                = "dask-worker-pool"
+ name_prefix         = (known after apply)
~ node_count          = 0 -> (known after apply)
~ node_locations      = [
- "us-central1-b",
] -> (known after apply)
+ operation           = (known after apply)
# (5 unchanged attributes hidden)
  ~ node_config {
      ~ labels            = { # forces replacement
          + "k8s.dask.org/node-purpose" = "worker"
            # (3 unchanged elements hidden)
        }
        tags              = [
            "gke-low-touch-hubs-cluster",
            "gke-low-touch-hubs-cluster-dask-worker-pool",
        ]
        # (11 unchanged attributes hidden)

        # (2 unchanged blocks hidden)
    }

  ~ upgrade_settings {
      ~ max_surge       = 1 -> (known after apply)
      ~ max_unavailable = 0 -> (known after apply)
    }
    # (3 unchanged blocks hidden)
}

module.gke.google_container_node_pool.pools["user-pool"] must be replaced
-/+ resource "google_container_node_pool" "pools" {
~ id                  = "projects/two-eye-two-see/locations/us-central1-b/clusters/low-touch-hubs-cluster/nodePools/user-pool" -> (known after apply)
~ instance_group_urls = [
- "https://www.googleapis.com/compute/v1/projects/two-eye-two-see/zones/us-central1-b/instanceGroupManagers/gke-low-touch-hubs-cluster-user-pool-f2555475-grp",
] -> (known after apply)
~ max_pods_per_node   = 110 -> (known after apply)
name                = "user-pool"
+ name_prefix         = (known after apply)
~ node_count          = 1 -> (known after apply)
~ node_locations      = [
- "us-central1-b",
] -> (known after apply)
+ operation           = (known after apply)
# (5 unchanged attributes hidden)
  ~ node_config {
      ~ labels            = { # forces replacement
          + "hub.jupyter.org/node-purpose" = "user"
          + "k8s.dask.org/node-purpose"    = "scheduler"
            # (3 unchanged elements hidden)
        }
      ~ machine_type      = "n1-highmem-2" -> "n1-standard-4" # forces replacement
        tags              = [
            "gke-low-touch-hubs-cluster",
            "gke-low-touch-hubs-cluster-user-pool",
        ]
        # (10 unchanged attributes hidden)

        # (2 unchanged blocks hidden)
    }

  ~ upgrade_settings {
      ~ max_surge       = 1 -> (known after apply)
      ~ max_unavailable = 0 -> (known after apply)
    }
    # (3 unchanged blocks hidden)
}

Plan: 3 to add, 1 to change, 3 to destroy.
Changes to Outputs:
# (1 unchanged attribute hidden)

Note: You didn't specify an "-out" parameter to save this plan, so Terraform
can't guarantee that exactly these actions will be performed if
"terraform apply" is subsequently run.
Releasing state lock. This may take a few moments...

I need to figure out permissions for the palehack hub.
@damianavila given that these are destructive changes, I want to add on a k8s cluster upgrade too along with this. Objections?

They've also clearly drifted out of alignment with each other... :D

With k8s version upgrades as well:
pilot-hubs

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  ~ update in-place
-/+ destroy and then create replacement
Terraform will perform the following actions:
module.gke.google_container_cluster.primary will be updated in-place
~ resource "google_container_cluster" "primary" {
id                          = "projects/two-eye-two-see/locations/us-central1-b/clusters/low-touch-hubs-cluster"
~ min_master_version          = "1.18.15-gke.1500" -> "1.19.9-gke.1400"
name                        = "low-touch-hubs-cluster"
# (26 unchanged attributes hidden)
    # (16 unchanged blocks hidden)
}

module.gke.google_container_node_pool.pools["core-pool"] must be replaced
-/+ resource "google_container_node_pool" "pools" {
~ id                  = "projects/two-eye-two-see/locations/us-central1-b/clusters/low-touch-hubs-cluster/nodePools/core-pool" -> (known after apply)
~ instance_group_urls = [
- "https://www.googleapis.com/compute/v1/projects/two-eye-two-see/zones/us-central1-b/instanceGroupManagers/gke-low-touch-hubs-cluster-core-pool-097eafe9-grp",
] -> (known after apply)
~ max_pods_per_node   = 110 -> (known after apply)
name                = "core-pool"
+ name_prefix         = (known after apply)
~ node_count          = 1 -> (known after apply)
~ node_locations      = [
- "us-central1-b",
] -> (known after apply)
+ operation           = (known after apply)
~ version             = "1.17.12-gke.2502" -> "1.19.9-gke.1400"
# (4 unchanged attributes hidden)
  ~ autoscaling {
      ~ max_node_count = 10 -> 5
        # (1 unchanged attribute hidden)
    }

  ~ node_config {
      ~ disk_size_gb      = 100 -> 50 # forces replacement
      ~ labels            = { # forces replacement
          + "hub.jupyter.org/node-purpose" = "core"
          + "k8s.dask.org/node-purpose"    = "core"
            # (4 unchanged elements hidden)
        }
      ~ machine_type      = "n1-highmem-4" -> "e2-highcpu-4" # forces replacement
        tags              = [
            "gke-low-touch-hubs-cluster",
            "gke-low-touch-hubs-cluster-core-pool",
        ]
      ~ taint             = [] -> (known after apply)
        # (8 unchanged attributes hidden)

        # (2 unchanged blocks hidden)
    }

  ~ upgrade_settings {
      ~ max_surge       = 1 -> (known after apply)
      ~ max_unavailable = 0 -> (known after apply)
    }
    # (2 unchanged blocks hidden)
}

module.gke.google_container_node_pool.pools["dask-worker-pool"] must be replaced
-/+ resource "google_container_node_pool" "pools" {
~ id                  = "projects/two-eye-two-see/locations/us-central1-b/clusters/low-touch-hubs-cluster/nodePools/dask-worker-pool" -> (known after apply)
~ instance_group_urls = [
- "https://www.googleapis.com/compute/v1/projects/two-eye-two-see/zones/us-central1-b/instanceGroupManagers/gke-low-touch-hubs-c-dask-worker-pool-366d69db-grp",
] -> (known after apply)
~ max_pods_per_node   = 110 -> (known after apply)
name                = "dask-worker-pool"
+ name_prefix         = (known after apply)
~ node_count          = 0 -> (known after apply)
~ node_locations      = [
- "us-central1-b",
] -> (known after apply)
+ operation           = (known after apply)
~ version             = "1.17.12-gke.2502" -> "1.19.9-gke.1400"
# (4 unchanged attributes hidden)
  ~ node_config {
      ~ labels            = { # forces replacement
          + "k8s.dask.org/node-purpose" = "worker"
            # (3 unchanged elements hidden)
        }
        tags              = [
            "gke-low-touch-hubs-cluster",
            "gke-low-touch-hubs-cluster-dask-worker-pool",
        ]
        # (11 unchanged attributes hidden)

        # (2 unchanged blocks hidden)
    }

  ~ upgrade_settings {
      ~ max_surge       = 1 -> (known after apply)
      ~ max_unavailable = 0 -> (known after apply)
    }
    # (3 unchanged blocks hidden)
}

module.gke.google_container_node_pool.pools["user-pool"] must be replaced
-/+ resource "google_container_node_pool" "pools" {
~ id                  = "projects/two-eye-two-see/locations/us-central1-b/clusters/low-touch-hubs-cluster/nodePools/user-pool" -> (known after apply)
~ instance_group_urls = [
- "https://www.googleapis.com/compute/v1/projects/two-eye-two-see/zones/us-central1-b/instanceGroupManagers/gke-low-touch-hubs-cluster-user-pool-f2555475-grp",
] -> (known after apply)
~ max_pods_per_node   = 110 -> (known after apply)
name                = "user-pool"
+ name_prefix         = (known after apply)
~ node_count          = 1 -> (known after apply)
~ node_locations      = [
- "us-central1-b",
] -> (known after apply)
+ operation           = (known after apply)
~ version             = "1.17.12-gke.2502" -> "1.19.9-gke.1400"
# (4 unchanged attributes hidden)
  ~ node_config {
      ~ labels            = { # forces replacement
          + "hub.jupyter.org/node-purpose" = "user"
          + "k8s.dask.org/node-purpose"    = "scheduler"
            # (3 unchanged elements hidden)
        }
      ~ machine_type      = "n1-highmem-2" -> "n1-standard-4" # forces replacement
        tags              = [
            "gke-low-touch-hubs-cluster",
            "gke-low-touch-hubs-cluster-user-pool",
        ]
        # (10 unchanged attributes hidden)

        # (2 unchanged blocks hidden)
    }

  ~ upgrade_settings {
      ~ max_surge       = 1 -> (known after apply)
      ~ max_unavailable = 0 -> (known after apply)
    }
    # (3 unchanged blocks hidden)
}

Plan: 3 to add, 1 to change, 3 to destroy.
Changes to Outputs:
# (1 unchanged attribute hidden)

cloudbank

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  + create
  ~ update in-place
  - destroy
-/+ destroy and then create replacement
Terraform will perform the following actions:
module.gke.google_container_cluster.primary will be updated in-place
~ resource "google_container_cluster" "primary" {
id                          = "projects/cb-1003-1696/locations/us-central1-b/clusters/cloudbank-2i2c-cluster"
~ min_master_version          = "1.18.15-gke.1100" -> "1.19.9-gke.1400"
name                        = "cloudbank-2i2c-cluster"
~ remove_default_node_pool    = false -> true
# (25 unchanged attributes hidden)
    # (16 unchanged blocks hidden)
}

module.gke.google_container_node_pool.pools["core-pool"] must be replaced
-/+ resource "google_container_node_pool" "pools" {
~ id                  = "projects/cb-1003-1696/locations/us-central1-b/clusters/cloudbank-2i2c-cluster/nodePools/core-pool" -> (known after apply)
~ instance_group_urls = [
- "https://www.googleapis.com/compute/v1/projects/cb-1003-1696/zones/us-central1-b/instanceGroupManagers/gke-cloudbank-2i2c-cluster-core-pool-2008707b-grp",
] -> (known after apply)
~ max_pods_per_node   = 110 -> (known after apply)
name                = "core-pool"
+ name_prefix         = (known after apply)
~ node_count          = 1 -> (known after apply)
~ node_locations      = [
- "us-central1-b",
] -> (known after apply)
+ operation           = (known after apply)
~ version             = "1.17.12-gke.2502" -> "1.19.9-gke.1400"
# (4 unchanged attributes hidden)
  ~ autoscaling {
      ~ max_node_count = 10 -> 5
        # (1 unchanged attribute hidden)
    }

  ~ node_config {
      ~ disk_size_gb      = 100 -> 50 # forces replacement
      ~ image_type        = "UBUNTU" -> "COS"
      ~ labels            = { # forces replacement
          + "hub.jupyter.org/node-purpose" = "core"
          + "k8s.dask.org/node-purpose"    = "core"
            # (4 unchanged elements hidden)
        }
      ~ machine_type      = "n1-highmem-2" -> "e2-highcpu-4" # forces replacement
        tags              = [
            "gke-cloudbank-2i2c-cluster",
            "gke-cloudbank-2i2c-cluster-core-pool",
        ]
      ~ taint             = [] -> (known after apply)
        # (7 unchanged attributes hidden)

        # (2 unchanged blocks hidden)
    }

  ~ upgrade_settings {
      ~ max_surge       = 1 -> (known after apply)
      ~ max_unavailable = 0 -> (known after apply)
    }
    # (2 unchanged blocks hidden)
}

module.gke.google_container_node_pool.pools["dask-worker-pool"] will be created

resource "google_container_node_pool" "pools" {

cluster             = "cloudbank-2i2c-cluster"

id                  = (known after apply)

initial_node_count  = 0

instance_group_urls = (known after apply)

location            = "us-central1-b"

max_pods_per_node   = (known after apply)

name                = "dask-worker-pool"

name_prefix         = (known after apply)

node_count          = (known after apply)

node_locations      = (known after apply)

operation           = (known after apply)

project             = "cb-1003-1696"

version             = "1.19.9-gke.1400"

autoscaling {

max_node_count = 10
min_node_count = 0
}

management {

auto_repair  = true
auto_upgrade = false
}

node_config {

disk_size_gb      = 100

disk_type         = "pd-ssd"

guest_accelerator = []

image_type        = "COS"

labels            = {

"cluster_name"              = "cloudbank-2i2c-cluster"
"hub.jupyter.org/pool-name" = "dask-worker-pool"
"k8s.dask.org/node-purpose" = "worker"
"node_pool"                 = "dask-worker-pool"
}

local_ssd_count   = 0

machine_type      = "e2-highmem-2"

metadata          = {

"cluster_name"             = "cloudbank-2i2c-cluster"
"disable-legacy-endpoints" = "true"
"node_pool"                = "dask-worker-pool"
}

oauth_scopes      = [

"https://www.googleapis.com/auth/cloud-platform",
]

preemptible       = true

service_account   =<EMAIL_ADDRESS>

tags              = [

"gke-cloudbank-2i2c-cluster",
"gke-cloudbank-2i2c-cluster-dask-worker-pool",
]

taint             = [

{

effect = "NO_SCHEDULE"
key    = "k8s.dask.org_dedicated"
value  = "worker"
},
]

shielded_instance_config {

enable_integrity_monitoring = true
enable_secure_boot          = false
}

workload_metadata_config {

node_metadata = "GKE_METADATA_SERVER"
}
}

timeouts {

create = "45m"
delete = "45m"
update = "45m"
}

upgrade_settings {

max_surge       = (known after apply)
max_unavailable = (known after apply)
}
}

module.gke.google_container_node_pool.pools["dask-worker-pool-2020-12-11"] will be destroyed

resource "google_container_node_pool" "pools" {

cluster             = "cloudbank-2i2c-cluster" -> null

id                  = "projects/cb-1003-1696/locations/us-central1-b/clusters/cloudbank-2i2c-cluster/nodePools/dask-worker-pool-2020-12-11" -> null

initial_node_count  = 0 -> null

instance_group_urls = [

"https://www.googleapis.com/compute/v1/projects/cb-1003-1696/zones/us-central1-b/instanceGroupManagers/gke-cloudbank-2i2c-c-dask-worker-pool-729d24bb-grp",
] -> null

location            = "us-central1-b" -> null

max_pods_per_node   = 110 -> null

name                = "dask-worker-pool-2020-12-11" -> null

node_count          = 0 -> null

node_locations      = [

"us-central1-b",
] -> null

project             = "cb-1003-1696" -> null

version             = "1.17.12-gke.2502" -> null

autoscaling {

max_node_count = 10 -> null
min_node_count = 0 -> null
}

management {

auto_repair  = true -> null
auto_upgrade = false -> null
}

node_config {

disk_size_gb      = 100 -> null

disk_type         = "pd-ssd" -> null

guest_accelerator = [] -> null

image_type        = "UBUNTU" -> null

labels            = {

"cluster_name"              = "cloudbank-2i2c-cluster"
"hub.jupyter.org/pool-name" = "dask-worker-pool"
"node_pool"                 = "dask-worker-pool-2020-12-11"
} -> null

local_ssd_count   = 0 -> null

machine_type      = "e2-standard-4" -> null

metadata          = {

"cluster_name"             = "cloudbank-2i2c-cluster"
"disable-legacy-endpoints" = "true"
"node_pool"                = "dask-worker-pool-2020-12-11"
} -> null

oauth_scopes      = [

"https://www.googleapis.com/auth/cloud-platform",
] -> null

preemptible       = true -> null

service_account   =<EMAIL_ADDRESS>-> null

tags              = [

"gke-cloudbank-2i2c-cluster",
"gke-cloudbank-2i2c-cluster-dask-worker-pool-2020-12-11",
] -> null

taint             = [

{

effect = "NO_SCHEDULE"
key    = "k8s.dask.org_dedicated"
value  = "worker"
},
] -> null

shielded_instance_config {

enable_integrity_monitoring = true -> null
enable_secure_boot          = false -> null
}

workload_metadata_config {

node_metadata = "GKE_METADATA_SERVER" -> null
}
}

timeouts {

create = "45m" -> null
delete = "45m" -> null
update = "45m" -> null
}

upgrade_settings {

max_surge       = 1 -> null
max_unavailable = 0 -> null
}
}

module.gke.google_container_node_pool.pools["user-pool"] will be created

resource "google_container_node_pool" "pools" {

cluster             = "cloudbank-2i2c-cluster"

id                  = (known after apply)

initial_node_count  = 0

instance_group_urls = (known after apply)

location            = "us-central1-b"

max_pods_per_node   = (known after apply)

name                = "user-pool"

name_prefix         = (known after apply)

node_count          = (known after apply)

node_locations      = (known after apply)

operation           = (known after apply)

project             = "cb-1003-1696"

version             = "1.19.9-gke.1400"

autoscaling {

max_node_count = 10
min_node_count = 0
}

management {

auto_repair  = true
auto_upgrade = false
}

node_config {

disk_size_gb      = 100

disk_type         = "pd-ssd"

guest_accelerator = []

image_type        = "COS"

labels            = {

"cluster_name"                 = "cloudbank-2i2c-cluster"
"hub.jupyter.org/node-purpose" = "user"
"hub.jupyter.org/pool-name"    = "user-pool"
"k8s.dask.org/node-purpose"    = "scheduler"
"node_pool"                    = "user-pool"
}

local_ssd_count   = 0

machine_type      = "n1-standard-4"

metadata          = {

"cluster_name"             = "cloudbank-2i2c-cluster"
"disable-legacy-endpoints" = "true"
"node_pool"                = "user-pool"
}

oauth_scopes      = [

"https://www.googleapis.com/auth/cloud-platform",
]

preemptible       = false

service_account   =<EMAIL_ADDRESS>

tags              = [

"gke-cloudbank-2i2c-cluster",
"gke-cloudbank-2i2c-cluster-user-pool",
]

taint             = [

{

effect = "NO_SCHEDULE"
key    = "hub.jupyter.org_dedicated"
value  = "user"
},
]

shielded_instance_config {

enable_integrity_monitoring = true
enable_secure_boot          = false
}

workload_metadata_config {

node_metadata = "GKE_METADATA_SERVER"
}
}

timeouts {

create = "45m"
delete = "45m"
update = "45m"
}

upgrade_settings {

max_surge       = (known after apply)
max_unavailable = (known after apply)
}
}

module.gke.google_container_node_pool.pools["user-pool-2020-09-29"] will be destroyed

resource "google_container_node_pool" "pools" {

cluster             = "cloudbank-2i2c-cluster" -> null

id                  = "projects/cb-1003-1696/locations/us-central1-b/clusters/cloudbank-2i2c-cluster/nodePools/user-pool-2020-09-29" -> null

initial_node_count  = 0 -> null

instance_group_urls = [

"https://www.googleapis.com/compute/v1/projects/cb-1003-1696/zones/us-central1-b/instanceGroupManagers/gke-cloudbank-2i2c-c-user-pool-2020-0-22cd12eb-grp",
] -> null

location            = "us-central1-b" -> null

max_pods_per_node   = 110 -> null

name                = "user-pool-2020-09-29" -> null

node_count          = 1 -> null

node_locations      = [

"us-central1-b",
] -> null

project             = "cb-1003-1696" -> null

version             = "1.17.12-gke.2502" -> null

autoscaling {

max_node_count = 10 -> null
min_node_count = 0 -> null
}

management {

auto_repair  = true -> null
auto_upgrade = false -> null
}

node_config {

disk_size_gb      = 100 -> null

disk_type         = "pd-ssd" -> null

guest_accelerator = [] -> null

image_type        = "UBUNTU" -> null

labels            = {

"cluster_name"              = "cloudbank-2i2c-cluster"
"hub.jupyter.org/pool-name" = "user-pool"
"node_pool"                 = "user-pool-2020-09-29"
} -> null

local_ssd_count   = 0 -> null

machine_type      = "n1-highmem-4" -> null

metadata          = {

"cluster_name"             = "cloudbank-2i2c-cluster"
"disable-legacy-endpoints" = "true"
"node_pool"                = "user-pool-2020-09-29"
} -> null

oauth_scopes      = [

"https://www.googleapis.com/auth/cloud-platform",
] -> null

preemptible       = false -> null

service_account   =<EMAIL_ADDRESS>-> null

tags              = [

"gke-cloudbank-2i2c-cluster",
"gke-cloudbank-2i2c-cluster-user-pool-2020-09-29",
] -> null

taint             = [

{

effect = "NO_SCHEDULE"
key    = "hub.jupyter.org_dedicated"
value  = "user"
},
] -> null

shielded_instance_config {

enable_integrity_monitoring = true -> null
enable_secure_boot          = false -> null
}

workload_metadata_config {

node_metadata = "GKE_METADATA_SERVER" -> null
}
}

timeouts {

create = "45m" -> null
delete = "45m" -> null
update = "45m" -> null
}

upgrade_settings {

max_surge       = 1 -> null
max_unavailable = 0 -> null
}
}

Plan: 3 to add, 1 to change, 3 to destroy.
Changes to Outputs:
# (1 unchanged attribute hidden)

@damianavila given that these are destructive changes, I want to add on a k8s cluster upgrade too along with this. Objections?

No objections :wink:
Btw, how the is "disruption of service" story around these sorts of changes?
Do we have a process to let our users know the hubs "might be" unresponsive for some time?

@damianavila good question. Right now, during my daytime these hubs often have no users so I just rotate them.
My suggestion is to for us to pay for a statuspage  (or similar) account and use that for things like this.

Right now, during my daytime these hubs often have no users so I just rotate them.

Gotcha!

My suggestion is to for us to pay for a statuspage (or similar) account and use that for things like this.

OK, maybe we can capture that idea in a new ticket for further elaboration.

Btw, we should find a way to paste the terraform plan so it is easier to read... maybe pasting it as code? Maybe using a 3rd party service?

@damianavila i fiddled with the markup and it renders much better now!

Paleohack terraform plan

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  ~ update in-place
-/+ destroy and then create replacement

Terraform will perform the following actions:

  # module.gke.google_container_cluster.primary will be updated in-place
  ~ resource "google_container_cluster" "primary" {
        id                          = "projects/hackathon-2i2c-project-alpha/locations/us-central1-b/clusters/alpha-cluster"
      ~ min_master_version          = "1.18.16-gke.300" -> "1.19.9-gke.1400"
        name                        = "alpha-cluster"
        # (26 unchanged attributes hidden)

        # (16 unchanged blocks hidden)
    }

  # module.gke.google_container_node_pool.pools["core-pool"] must be replaced
-/+ resource "google_container_node_pool" "pools" {
      ~ id                  = "projects/hackathon-2i2c-project-alpha/locations/us-central1-b/clusters/alpha-cluster/nodePools/core-pool" -> (known after apply)
      ~ instance_group_urls = [
          - "https://www.googleapis.com/compute/v1/projects/hackathon-2i2c-project-alpha/zones/us-central1-b/instanceGroupManagers/gke-alpha-cluster-core-pool-ecdba407-grp",
        ] -> (known after apply)
      ~ max_pods_per_node   = 110 -> (known after apply)
        name                = "core-pool"
      + name_prefix         = (known after apply)
      ~ node_count          = 1 -> (known after apply)
      ~ node_locations      = [
          - "us-central1-b",
        ] -> (known after apply)
      + operation           = (known after apply)
      ~ version             = "1.17.12-gke.2502" -> "1.19.9-gke.1400"
        # (4 unchanged attributes hidden)

      ~ node_config {
          ~ labels            = { # forces replacement
              + "hub.jupyter.org/node-purpose" = "core"
              + "k8s.dask.org/node-purpose"    = "core"
                # (4 unchanged elements hidden)
            }
            tags              = [
                "gke-alpha-cluster",
                "gke-alpha-cluster-core-pool",
            ]
          ~ taint             = [] -> (known after apply)
            # (10 unchanged attributes hidden)

            # (2 unchanged blocks hidden)
        }

      ~ upgrade_settings {
          ~ max_surge       = 1 -> (known after apply)
          ~ max_unavailable = 0 -> (known after apply)
        }
        # (3 unchanged blocks hidden)
    }

  # module.gke.google_container_node_pool.pools["dask-worker-pool"] must be replaced
-/+ resource "google_container_node_pool" "pools" {
      ~ id                  = "projects/hackathon-2i2c-project-alpha/locations/us-central1-b/clusters/alpha-cluster/nodePools/dask-worker-pool" -> (known after apply)
      ~ instance_group_urls = [
          - "https://www.googleapis.com/compute/v1/projects/hackathon-2i2c-project-alpha/zones/us-central1-b/instanceGroupManagers/gke-alpha-cluster-dask-worker-pool-ac48e52c-grp",
        ] -> (known after apply)
      ~ max_pods_per_node   = 110 -> (known after apply)
        name                = "dask-worker-pool"
      + name_prefix         = (known after apply)
      ~ node_count          = 0 -> (known after apply)
      ~ node_locations      = [
          - "us-central1-b",
        ] -> (known after apply)
      + operation           = (known after apply)
      ~ version             = "1.17.12-gke.2502" -> "1.19.9-gke.1400"
        # (4 unchanged attributes hidden)

      ~ node_config {
          ~ labels            = { # forces replacement
              + "k8s.dask.org/node-purpose" = "worker"
                # (3 unchanged elements hidden)
            }
            tags              = [
                "gke-alpha-cluster",
                "gke-alpha-cluster-dask-worker-pool",
            ]
            # (11 unchanged attributes hidden)

            # (2 unchanged blocks hidden)
        }

      ~ upgrade_settings {
          ~ max_surge       = 1 -> (known after apply)
          ~ max_unavailable = 0 -> (known after apply)
        }
        # (3 unchanged blocks hidden)
    }

  # module.gke.google_container_node_pool.pools["user-pool"] must be replaced
-/+ resource "google_container_node_pool" "pools" {
      ~ id                  = "projects/hackathon-2i2c-project-alpha/locations/us-central1-b/clusters/alpha-cluster/nodePools/user-pool" -> (known after apply)
      ~ instance_group_urls = [
          - "https://www.googleapis.com/compute/v1/projects/hackathon-2i2c-project-alpha/zones/us-central1-b/instanceGroupManagers/gke-alpha-cluster-user-pool-8bb70fd9-grp",
        ] -> (known after apply)
      ~ max_pods_per_node   = 110 -> (known after apply)
        name                = "user-pool"
      + name_prefix         = (known after apply)
      ~ node_count          = 0 -> (known after apply)
      ~ node_locations      = [
          - "us-central1-b",
        ] -> (known after apply)
      + operation           = (known after apply)
      ~ version             = "1.17.12-gke.2502" -> "1.19.9-gke.1400"
        # (4 unchanged attributes hidden)

      ~ node_config {
          ~ labels            = { # forces replacement
              + "hub.jupyter.org/node-purpose" = "user"
              + "k8s.dask.org/node-purpose"    = "scheduler"
                # (3 unchanged elements hidden)
            }
            tags              = [
                "gke-alpha-cluster",
                "gke-alpha-cluster-user-pool",
            ]
            # (11 unchanged attributes hidden)

            # (2 unchanged blocks hidden)
        }

      ~ upgrade_settings {
          ~ max_surge       = 1 -> (known after apply)
          ~ max_unavailable = 0 -> (known after apply)
        }
        # (3 unchanged blocks hidden)
    }

Plan: 3 to add, 1 to change, 3 to destroy.

Deployed to them all!

@damianavila i fiddled with the markup and it renders much better now!

Much better!!!


[UI] [Bazaar] Should do popup Additional Dependences more informative.

For replay this improvement you need:
Test case

Go to SS and login under any account.
Go to Bazaar page and click on Install 'Spark' plugin.

Result: you can observe message on popup Additional Dependences.
Improvement: Add an additional information about additional plugins which will be installed.

Added


Create coding decoding

this program codes and decodes the given string  according to the given sequencing

Sorry, this repo is not accepting new solutions.


Version 0.3.6: Unable to connect to maker

I just encountered a scenario where the taker is unable to connect to the maker, somehow never reports a failure:
2022-01-18 06:18:15 DEBUG daemon::connection: No connection to the maker
2022-01-18 06:18:15 DEBUG daemon::connection: Connecting to maker address=<IP_ADDRESS>:9999
2022-01-18 06:18:23  WARN daemon::connection: Failed to establish connection: Failed to connect to <IP_ADDRESS>:9999: Connection refused (os error 111) address=<IP_ADDRESS>:9999
2022-01-18 06:18:23  WARN daemon::connection: Tried connecting to 1 addresses without success, retrying in 5 seconds
2022-01-18 06:18:28 DEBUG daemon::connection: Connecting to maker address=<IP_ADDRESS>:9999
2022-01-18 06:18:28 DEBUG daemon::noise: Noise protocol initiator handshake is complete
2022-01-18 06:18:28  INFO daemon::connection: Established connection to maker address=<IP_ADDRESS>:9999
2022-01-18 06:18:48 DEBUG daemon::connection: No connection to the maker
2022-01-18 06:18:48 DEBUG daemon::connection: Connecting to maker address=<IP_ADDRESS>:9999
2022-01-18 06:19:08  INFO rocket::server: GET /alive:

I went through the logs afterwards, there is just no failure reported, it keeps handing.
On the maker side I could not fund anything relevant in the logs.
Will restart Umbrel to see if that helps.

Restart did not help, apparently my taker can't connect to the mainnet maker atm.

The problem was the maker, just did not react to incoming connection requests anymore. After restarting the maker it works again. It seems there is still some starving happening in the maker's connection actor.

Unfortunately we did not get any logs but I thought to mention it:
We had another user reporting a connection issue.
This time I was able to connect to the maker using our docker image but he was not.
A restart of his umbrel node solved his issue.

Closing this as this version is no longer in production.


WS-2172: Prepare components for side panel

Description
Howlite components have been updated to look properly in the upcoming side panel feature.
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue) labeled with bug
[x] New feature (non-breaking change which adds functionality) labeled with enhancement
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist:

[x] My code follows the code standards of this project.
[ ] My change requires updating the documentation. I have updated the documentation accordingly.

I have read the Dynamic Solutions Individual Contributor License Agreement (CLA) Document and I hereby sign the CLA

recheck


Unable to see break even point in Rate optmization workbook 0.4

Hello Team,
I just upgraded by optimization workbook to 0.4 version. As mentioned in the changelogs there is newly Added reservation recommendations with the break-even point to identify when savings would be achieved.
Unfortunately I see same page is it was with 0.3 version. Can you please guide me where should I see this feature.
Steps to Reproduce.

Open Cost Optimization workbook 0.4
Navigate to Tab rate optimization
Navigate to Azure reservations
4.I only see reservation summary for 1year Payment Term and 3 year Payment term along and other details like subscription details etc.

No where I see break even point summary. Am I missing something or am I in wrong screen.
Can you please guide me.
Thanks and regards,
Pankaj

@pankaj392 Can you please compare the version that you deployed with the version of the Cost Optimization workbook that is available on Azure Advisor? They should match.
The Toolkit version is an editable version of the Advisor workbook.

@arthurclares : While navigating to the Advisor workbook, I noticed a new version named Cost Optimization (Preview). Additionally, when navigating to the Rate Optimization tab, I observed a new tab labeled Azure Reservation (Preview). In this new preview tab, there is a Break Even Point column for each SKU.
While deploying cost optimitaion workbook through finops tool kit, this preview tab is missing.

@pankaj392 Thank you. I've fixed that already and will be published in the next release (August). Are you okay to wait for that or do you want me to send you this file before?

@arthurclares Thanks for clarifying, its ok to wait till August.


CP-346: Create 'recommended' preset for ESlint (w/ ~ current FE monorepo standards) in the open-turo repo

Description
The detailed description referencing some Turo repositories is in our internal Jira system (see particular comment).
Note this PR moves the former default to a strict.js file, which can also be extended, as noted in the README.
Breaking change: as you can see from my first commit message, this is a breaking change. Repositories currently extending this eslint config package have been using the "strict" version, so we'd have to add the /strict suffix to their paths in the extends field of their .eslintrc file, when updating to this new version
Fixes #CP-346
Changes

refactor: current eslint conf to 'strict'
feat: default to new recommended settings
docs: added guidelines to use one of the two configs

🚀 PR created with fotingo

@tagoro9 Based on some of your comments, it seems you prefer not to have web-related rules / config in this repo. And I can see your point for scenarios like node applications that don't have anything to do with the web.
I definitely agree with the react-specific ones. However, there is a gray area with some "browser"-related ones. Someone could argue it is harmless to include some of them and it is a common enough use case to consider them to be included. I can also imagine that a similar claim could be made from the opposite standpoint: there are node-specific rules that don't make sense in a web environment, while both being valid Typescript projects.
Thinking a bit more deep into the idea of moving web-related config to the eslint-config-react reo, it doesn't feel right either, since you can have web applications that don't use React, but other frameworks (or no frameworks). Following that train of thought, that leads me to think that if we were to go that route, we would either have to create an intermediate framework-agnostic repo (eslint-config-typescript-web) that is then extended by eslint-config-react for React. Or alternatively, we would rename the eslint-config-react to eslint-config-typescript-web and couple the two concepts.
I lean more towards option 1: creating a separate eslint-config-typescript-web and then extending it in a ``eslint-config-typescript-react`. Although I can see arguments against having so many levels.

@romenrg

eslint-config-react reo, it doesn't feel right either, since you can have web applications that don't use React, but other frameworks (or no frameworks). Following that train of thought, that leads me to think that if we were to go that route, we would either have to create an intermediate framework-agnostic repo (eslint-config-typescript-web

I agree with you on this, but being practical and looking at what we use today, we only use react as a framework, so adding that extra layer may not be needed yet and would add a bit of extra maintenance burden.

eslint-config-typescript-react

Is there any particular react config that is specific to typescript or would all the things could be added to just eslint-config-react?

eslint-config-typescript-react

Is there any particular react config that is specific to typescript or would all the things could be added to just eslint-config-react?

I thought that, since we the react config would be extending the eslint-config-typescript preset, it should be reflected in the repo name. However, I'm also thinking we could keep the name as eslint-config-react and have 2 files within it, one for JS (eslint-config-react/js) and one for TS (eslint-config-react/ts), extending the corresponding top level eslint config. And one could be the default (not sure if nor which one)

However, I'm also thinking we could keep the name as eslint-config-react and have 2 files within it, one for JS (eslint-config-react/js) and one for TS (eslint-config-react/ts), extending the corresponding top level eslint config in each case. Plus, one could be the default (not sure, nor which one in case we want one default)

I think we can start there. We may hit the same issue with peer dependencies if there is any peer dep that the TS preset needs that is not needed for the JS preset, but we can see then

@romenrg ☝

We could also impose the following restriction: React requires TS. This should remove the complexity of supporting both JS and TS files within the React config folder.
For existing projects (web-iframes-app only, I believe), I think we should just convert them to TS as that's the path we've set moving forward 💡

We could also impose the following restriction: React requires TS [...]

@Toolo I think this is a fair assumption to make. I don't see a world where we would write JS + react

Final update
After a conversation with @tagoro9 yesterday, I've re-done commits here to reflect the final agreements.
I've updated both the PR description and the commit messages so that it is clear to review this PR now. I have also added follow-up comments to the conversations we had here, but I would recommend new reviews to skip them, as they are all now addressed and commit history has changed since those conversations were relevant.
So, in summary: for those reviewing now, I would recommend to simply read the updated PR description and then review changes commit by commit.


stm32 entropy fix

Enable the RNG module for the get_entropy_isr function if needed.
Fixes #66312

Found some remaining failing tests with current solution:
   tests/crypto/rand32/crypto.rand32, nucleo_f091rc (Regression)
   tests/crypto/rand32/crypto.rand32, nucleo_h743zi
   tests/crypto/rand32/crypto.rand32.random_ctr_drbg, nucleo_h743zi
   tests/crypto/rand32/crypto.rand32.random_hw_xoshiro, nucleo_h743zi
   tests/crypto/rand32/crypto.rand32.random_sw_systimer, nucleo_f091rc (Regression)
   tests/crypto/rand32/crypto.rand32.random_sw_systimer, nucleo_h743zi
   tests/crypto/tinycrypt/crypto.tinycrypt, nucleo_f091rc (Regression)
   tests/crypto/tinycrypt/crypto.tinycrypt, nucleo_h743zi
   tests/kernel/mem_protect/stack_random/kernel.memory_protection.stack_random, nucleo_f091rc (Regression)
   tests/kernel/mem_protect/stack_random/kernel.memory_protection.stack_random, nucleo_h743zi
   tests/kernel/mem_protect/stackprot/kernel.memory_protection.stackprot, nucleo_f091rc (Regression)
   tests/kernel/mem_protect/sys_sem/kernel.memory_protection.sys_sem.nouser, nucleo_f091rc (Regression)
   tests/net/lib/dns_resolve/net.dns.resolve, nucleo_h743zi
   tests/net/lib/dns_resolve/net.dns.resolve.no_ipv6, nucleo_h743zi
   tests/net/lib/dns_resolve/net.dns.resolve.preempt, nucleo_h743zi

Tested with twister --ninja --runtime-artifact-cleanup -e logging -e cmsis_dsp -T tests/crypto -T tests/kernel/mem_protect -T tests/net/lib/dns_resolve/
Boards are the ones from our test farm (you can see the list here: https://github.com/zephyrproject-rtos/test_results/pull/1788/files)

tests/kernel/mem_protect/stackprot/kernel.memory_protection.stackprot, nucleo_f091rc (Regression)
tests/kernel/mem_protect/sys_sem/kernel.memory_protection.sys_sem.nouser, nucleo_f091rc (Regression)

Can I somehow run tests on these boards or at least see tests logs?

Can I somehow run tests on these boards or at least see tests logs?

I'm running a new test session. Note that this target is also impacted by https://github.com/zephyrproject-rtos/zephyr/issues/66388 and additionally was maybe in a bad state. I'll send new results when received

Ok, thanks. I've ordered nucleo_h743zi anyway and should be able to run tests locally in 1/2 days.

New session results:
   tests/crypto/rand32/crypto.rand32, nucleo_h743zi
   tests/crypto/rand32/crypto.rand32.random_ctr_drbg, nucleo_h743zi
   tests/crypto/rand32/crypto.rand32.random_hw_xoshiro, nucleo_h743zi
   tests/crypto/rand32/crypto.rand32.random_sw_systimer, nucleo_h743zi
   tests/crypto/tinycrypt/crypto.tinycrypt, nucleo_h743zi
   tests/kernel/mem_protect/stack_random/kernel.memory_protection.stack_random, nucleo_h743zi
   tests/net/lib/dns_resolve/net.dns.resolve, nucleo_h743zi
   tests/net/lib/dns_resolve/net.dns.resolve.no_ipv6, nucleo_h743zi
   tests/net/lib/dns_resolve/net.dns.resolve.preempt, nucleo_h743zi

Back trace when running tests/crypto/rand32 on a H7 board:
generate_from_isr (len=1, buf=0x2400098c <ztest_thread_stack+972> "") at /local/mcu/zephyrproject/zephyr/drivers/entropy/entropy_stm32.c:364
364				__SEV();
(gdb) bt
#0  generate_from_isr (len=1, buf=0x2400098c <ztest_thread_stack+972> "")
    at /local/mcu/zephyrproject/zephyr/drivers/entropy/entropy_stm32.c:364
#1  entropy_stm32_rng_get_entropy_isr (dev=<optimized out>,
    buf=0x2400098c <ztest_thread_stack+972> "", len=<optimized out>, flags=<optimized out>)
    at /local/mcu/zephyrproject/zephyr/drivers/entropy/entropy_stm32.c:608
#2  0x0800385a in entropy_get_entropy_isr (dev=<optimized out>, flags=1, length=1,
    buffer=0x2400098c <ztest_thread_stack+972> "")
    at /local/mcu/zephyrproject/zephyr/include/zephyr/drivers/entropy.h:116
#3  z_early_rand_get (buf=buf@entry=0x2400098c <ztest_thread_stack+972> "", length=length@entry=1)
    at /local/mcu/zephyrproject/zephyr/kernel/init.c:517
#4  0x0800060c in rand32_common_test_rand32 ()

Member

Ok, thanks. So the problem occurs only on H7, right?

Ok, thanks. So the problem occurs only on H7, right?

Indeed

I have to run the tests on device. I'm not able to find the issue without actual debug.

@erwango Would you be able to retest with the current version?

Would you be able to retest with the current version?

All tests issues are now resolved

LGTM for me

Thanks for all testing and sorry for the regression.


Unexpected error that I can't reproduce(?)

Hello @stavros11 @AleCandido, sorry to bother you but I need your expertise :-)
Is this line wrong for some reason?
https://github.com/qiboteam/qibosoq/blob/2e46ec70af79d04dcd747b3f8ead0ed9c3989a74/src/qibosoq/qick_programs.py#L463
I was getting an error from this line saying that Sweeper object is not iterable so I stopped the server, added some log.info before (printing sweepers and type(sweepers) I think) and the error disappeared. Than I removed the log.info and now there is no error...
Is this line of code "unsafe" for some reason or have you any idea of why/how something like this could have happened?

I believe there is nothing unsafe, after that line self.sweepers is a list.
However, we should have a look at the history. For sure, one effect of adding the log.info was uploading a new version of the server, so, the problem could have been only in a previous version.
The best thing you can do to ensure this, it's definitely splitting in smaller functions and adding a unit test checking that is actually always a list.
This will give you more confidence, and keep checking the assertion even when further changes will be added.

The only tiny, unrelated, improvement to that line could be to turn list(sweepers)[::-1] into list(reversed(sweepers)).
Working with iterators is lazy, because the iteration of the input doesn't actually happen until you iterate the output. For this reason, you could concatenate multiple functions on iterators and eventually iterate just once.
Instead, working with lists is eager, since every time you turn a list into another list you have to actually iterate it.
But given the performances of Python, this is a second order problem (but given that it is simple, I would fix it anyhow).

thank you @AleCandido , I opened a PR with a new function and its test (#41).
This was really a weird error and I am pretty sure that the running server didn't change...

Then it should come from somewhere else. Unfortunately, until you can't reproduce, there is almost nothing we could do about a little known error 😞


Add FreeBSD support

Could you provide support for freebsd platforms
and android or cooperhead (security gardened android)
https://copperhead.co/android/

Please don't mix the requests for two distinct platforms in the same issue. We can discuss CopperheadOS support in #56, since it's Android-based.
I will dedicate this issue to FreeBSD support.

A three years old request, so I guess this hasn't caught on. After playing around with Arch Linux for a while I think I want to try to get FreeBSD running on my laptop next and I have seen quite a number of reports of others that got bid by the FreeBSD bug. Getting ungoogled-chromium into FreeBSD Ports definitely would be of no downside, I'll ask in the FreeBSD forum if someone with more knowledge would be interested.

I have FreeBSD as my main OS running on my laptop, and I have quite a bit of knowledge about Arch Linux. I'm not a FreeBSD expert, but I'll try to look into it when I have time.

I've started work on adding FreeBSD support here. Even though FreeBSD is not my main OS, it wouldn't hurt me to learn how to use it.

I've started work on adding FreeBSD support here. Even though FreeBSD is not my main OS, it wouldn't hurt me to learn how to use it.

Looking forward to test your work!

The FreeBSD port is complete, although it's only for ungoogled-chromium 98.0.4758.102. I am still polishing a few things to make updating the patches easier, but for now, it compiles and runs.

The FreeBSD port is complete, although it's only for ungoogled-chromium 98.0.4758.102. I am still polishing a few things to make updating the patches easier, but for now, it compiles and runs.

Last time I tried to use a Chromium browser on FreeBSD extensions where broken are they working fine for you? I haven't bothered messing with BSD lately

+1 for FreeBSD support!

Last time I tried to use a Chromium browser on FreeBSD extensions where broken are they working fine for you? I haven't bothered messing with BSD lately

Now it works. Perhaps you're mentioning https://forums.freebsd.org/threads/258573-258679-chromium-unable-to-add-extensions-or-download-files.83738/#post-554849

Thank you for the support, it is working well!

Looks like there's nothing left to do regarding this issue — closing.


typescript-mongodb and typescript-react-apollo require conflicting file extension

Describe the bug
I'm trying to use typescript-mongodb together with typescript-react-apollo. The first requires the extension to be ts, while the last requires a tsx. So, either I cannot use one of them, or I need to have two output files. Which is unwanted, as they do share a lot of base types.
Shouldn't all plugins that require ts also be fine with tsx?
https://github.com/dotansimha/graphql-code-generator/blob/d8316ef16ec34914d771a5409207f191c1cd6e0a/packages/plugins/typescript/mongodb/src/index.ts#L136-L140
To Reproduce
https://codesandbox.io/s/graphql-codegen-issue-template-2bd6r

My GraphQL schema:

irrelevant *

My GraphQL operations:

irrelevant *

My codegen.yml config file:

generates:
  types.tsx:
    plugins:
      - 'typescript'
      - 'typescript-react-apollo'
      - 'typescript-mongodb'

Expected behavior
Plugins required to have a ts extension, should also be fine with a tsx extension.
Environment:
- OS: CodeSandbox
- NodeJS: v10.16.0
- @graphql-codegen/add: 1.3.1
- @graphql-codegen/cli: 1.3.1
- @graphql-codegen/typescript: 1.3.1
- @graphql-codegen/typescript-mongodb: 1.4.0
- @graphql-codegen/typescript-operations: 1.3.1
- @graphql-codegen/typescript-react-apollo: 1.4.0
- graphql: 14.3.1

Additional context
Just trying to generate both react-apollo types and mongodb types. Can't get it to work without breaking up the file. But, generating two files also mean a lot of duplicates, as they won't import a shared 'base file'.
The problem is with the plugins mentioned above. At the end I'm trying to generate something using the plugins:
plugins:
  - 'typescript'
  - 'typescript-operations'
  - 'typescript-resolvers'
  - 'typescript-react-apollo'
  - 'typescript-mongodb'

Hi @smeijer ,
can you please explain the use case of using both of this plugins together?
The typescript-mongodb is for backend, and typescript-react-apollo is for client-side.
We can allow .tsx in typescript-mongodb, but we need make sure the use-case is valid first.

I'm using Meteor so my client and server code are shared. But isn't this also the case with server side rendering?
I can imagine that one would like to have the bundles separate if using different code bases for client and server side. But Meteor really still an exception to that rule?
Basically, I currently have a folder structure like:
src
  /client/main.js
  /common
    /components
      /...
  /server
    /api # graphql typeDefs & resolvers
    /main.js # config apollo, SSR routes
  /generated
    /graphql.tsx
    /mongo.ts

So, the react components are used by both server and client. Thereby, react-apollo (hooks) are required in both scopes. Mongo wouldn't be required by the client. But as the code lives in a single repo, with the same root folder (./src), it's unnecessary to have the same base definitions in both generated files.
I believe that it would also be fine to separate the files even further if that would be possible. And make them import each other. But as far as I'm aware, that's currently not possible, and would be harder to implement.
What I'm saying is, types like Scalars (but also every other Graphql type), are currently saved in all my generated files.
export interface Scalars {
  ID: string;
  String: string;
  Boolean: boolean;
}

So instead of making 1 HUGE file with base types, mongo types, react hooks. It would be even better to have them import each other when required.
// graphql.ts
export interface Scalars {
}

export interface Comment {
}

// react.tsx
import * as graphql from './graphql.ts'

// mongo.ts
import * as graphql from './graphql.ts'

My main goal is to prevent generated files from containing the same definitions. Because

That would mean double file size (I'm aware it's filtered out)
That would mean double lines in github PR (reviews)
Developers would be confused from which generated file to import

While writing down the post above, I though of a very simple solution actually.
  generated/graphql.tsx:
    documents: 'src/common/**/*.graphql'
    plugins:
      - 'typescript'
      - 'typescript-operations'
      - 'typescript-resolvers'
      - 'typescript-react-apollo'

  generated/mongo.ts:
    plugins:
      - add: *top-comment
      - add: import { Maybe } from './graphql';
      - 'typescript-mongodb'

That one seems to work. Just manually adding the Maybe import. I think this issue can be closed than. It would mean I need to keep an eye on other required imports, but that's doable.
Or, keep it open, if you want to add functionality to automatically add those kind of imports from a base file. 😇

@smeijer Meteor is a valid use case, but you can still generate 2 files.
You solution is also looks elegant and I think workaround this issue in a nice way.
In order to separate typescript-operations from typescript, you can do use namespacedImportName: Types and use add to add an import like import * as Types from './base-types'; (for typescript-operations).
You are right that they share the same base types, but at the moment they couldn't be separated.
If you think this should be solved - let's move this to a new issue with more details on the use can and your expected output.


"Good Old Form:  Official solution gives: Error: Cannot find module 'body-parser'

The official solution:
    var express = require('express')
    var bodyParser = require('body-parser')
    var app = express()
    app.use(bodyParser.urlencoded({extended: false}))
    app.post('/form', function(req, res) {
      res.send(req.body.str.split('').reverse().join(''))
    })
    app.listen(process.argv[2])

gives:  Error: Cannot find module 'body-parser'
But this works:
var express = require('express');
var app = express();
app.use(express.urlencoded({extended: false}));
app.post('/form', function(req, res) {
    res.end(req.body.str.split('').reverse().join(''));
});
app.listen(process.argv[2]);

I'm not able to reproduce this with Node 5.0 on Windows 7, Windows 10, or Mac OS. What OS and Node version are you running?
I only see the error Cannot find module 'body-parser' when I do not have the body-parser module installed. Run npm install body-parser to fix it.
If I run your code that uses express as middleware, I get an error:
Error: Most middleware (like urlencoded) is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware.

@mhurwicz you must be running express v3.x. they used to have body parser in the framework itself, not the case with 4.x anymore so you're getting cannot find with the official solution (which is for v4.11.2)
I think you might have two conflictiong versions... try
$ npm uninstall -g express

then in your project folder execute what @TylerMoeller suggested
$ npm init
$ npm<EMAIL_ADDRESS>
You have to use npm init or have package.json or node_modules. Otherwise your local install might end up being God know where.

Starting at the $PWD, npm will walk up the folder tree checking for a folder that contains either a package.json file, or a node_modules folder. If such a thing is found, then that is treated as the effective "current directory" for the purpose of running npm commands. (This behavior is inspired by and similar to git's .git-folder seeking logic when running git commands in a working dir.)

From https://docs.npmjs.com/files/folders#more-information


Allow to exclude pattern

Suppose this config:
{
  "$schema"<EMAIL_ADDRESS>  "entry": [
    "./turbowatch.ts",
    "./src/index.ts!"
  ],
  "ignore": [
    ".eslintrc.cjs"
  ],
  "ignoreDependencies": [
    "@contra/eslint-config"
  ],
  "project": [
    "src/**/*!"
  ]
}

The problems is that I also have .test.ts files under src, e.g. src/routines/jobPostings/potentialMatches/findContractorIndexMatchesForJobPosting.test.ts
I am not entirely sure what's the proper way to mark src/**/*! as project files, but exclude .test.ts from it.
I suppose negation could be achieved with a syntax such as:
"project": [
  "src/**/*!",
  "!src/**/*.test.ts!"
]

! at the beginning and end looks a bit odd though.

Or actually, this could work too:
"project": [
  "src/**/*!",
  "src/**/*.test.ts"
]

The implication being that the latest pattern overrides the production flag.

Negated patterns should work (also the odd !pattern! syntax).
But I think the underlying issue here is that the test files should be covered by a plugin, but something goes off here. Or Knip does not yet have a plugin for the test runner you're using. What repo is this?

It looks like the issue is here:
{
  cwd: '/Users/gajus/Developer/contra/gaia/packages/utilities',
  globPatterns: [
    'src/index.ts',
    'src/utilities/*.test.ts',
    'src/utilities/*.ts',
    '!src/utilities/*.test.ts'
  ],
  ignorePatterns: [ '**/node_modules/**', '.yarn' ],
  gitignore: true
}

It added !src/utilities/*.test.ts to ignore list, despite that it should be only ignored in production mode.

Negated production patterns should no longer be included in default mode.
Still, I think the real issue here is why you need to add the *.test patterns in the first place? Is there some plugin missing or not working properly?


No way how to find out that logging failed

This will do nothing when I'm not running Elastic. It should throw.
var loggerConfig = new LoggerConfiguration()
    .MinimumLevel.Debug()
    .WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri("http://localhost:123"))
    {
        EmitEventFailure = EmitEventFailureHandling.ThrowException
    });

var logger = loggerConfig.CreateLogger();
logger.Information("Test {value}", 42);

Version: .NET 6.0, Serilog 2.11.0, Serilog.Sinks.Elasticsearch 8.4.1

I ran into this as well, the issue is that the exception is ultimately caught and logged by Serilog itself, which will do nothing if the self log isn't configured. This should fit it:
Serilog.Debugging.SelfLog.Enable(msg => Console.WriteLine(msg));

I ran into this as well, the issue is that the exception is ultimately caught and logged by Serilog itself, which will do nothing if the self log isn't configured. This should fit it:
Serilog.Debugging.SelfLog.Enable(msg => Console.WriteLine(msg));

This helped me, issue should be closed


Update the module name #1390

What this PR does / why we need it: updates the module name to carvel.dev/kapp-controller and updates vendir to match the new module name
Which issue(s) this PR fixes:

Fixes #1378
Additional Notes for your reviewer:
Review Checklist:

[ ] Follows the developer guidelines
[ ] Relevant tests are added or updated
[ ] Relevant docs in this repo added or updated
[ ] Relevant carvel.dev docs added or updated in a separate PR and there's
a link to that PR
[ ] Code is at least as readable and maintainable as it was before this
change

Additional documentation e.g., Proposal, usage docs, etc.:

When we release 0.52.0 we should merge the PR and create version 0.53.0

I was thinking that we should make a release now with this change. We currently have 3 commits after the last release, 2 of them are bumps and one of them is a fix for using kctrl as a library, so ideally one would want to bump to this release for those changes.
We could also wait, but then there's a chance that there will be merge conflicts on this PR and we would have to again spend some time on resolving them.

I am ok with releasing it. On Monday if y'll have some time can you release it and merge this PR?

Sure, I will do it.


BUG: NuGet package manager has difficulty with "unavailable" projects in multi-project solution.

MENU:
NuGet Package Manager >> Manage NuGet Packages for Solution...
BRIEF:
When a project is unloaded, it is not recognized by the "Installed packages" pane, however it is considered by the "Online" pane.
DETAIL:
If you remove a package using the "Manage" button on the "Installed packages", the NuGet package will not be removed from an unloaded project. When attempting to subsequently re-"Install" the same NuGet package. The NuGet Package Manager shows a green checkmark indicating the package is already installed for you project.
WORKAROUND:
Reload the "unavailable" project and navigate to the NuGet Package Manager "Installed packages" pane. Click the "Manage" button, remove the NuGet Package from the newly loaded project, then re-"Install" the desired package.
ANTICIPATED RESOLUTION:

Would like to see the "unavailable"/unloaded projects listed in the "Manage" option from the "Installed packages" pane.
"Install" should allow user to install the package on a project-by-project basis in a single solution.

Thanks for the suggestion - this is something we could consider for a future version of the client

Moved issue to NuGet/Home#337. Please file VS client issues on https://github.com/NuGet/Home/issues


How to set organisation id

I have multiple organizations setup and I need to specify which one is used. Is there a way to do it?
https://platform.openai.com/docs/api-reference/requesting-organization

There is an open PR for this - #69. @TheoKanning can you merge it?


Error handling for AttributeCertificateIterator

PR for issue #29 adding error handling for AttributeCertificateIterator.
Basically checks bounds for reads, and throws AttributeCertificateError::OutOfBounds when needed.

Codecov Report

Merging #31 (3947b58) into main (81a4e5c) will decrease coverage by 0.05%.
Report is 2 commits behind head on main.
The diff coverage is 96.15%.

@@            Coverage Diff             @@
##             main      #31      +/-   ##
==========================================
- Coverage   87.23%   87.19%   -0.05%
==========================================
  Files           7        7
  Lines         478      484       +6
==========================================
+ Hits          417      422       +5
- Misses         61       62       +1

Files Changed
Coverage Δ

authenticode/src/win_cert.rs
86.90% <92.85%> (-1.47%)
:arrow_down:

authenticode-tool/src/main.rs
93.71% <100.00%> (+0.33%)
:arrow_up:

Thanks for the reviews !


Collapse in html-lists not working correctly

When adding collapse to a menu, it works for the tabindex-mechanic, but not for the input-mechanic. The input-mechanic is broken in visual and function.
Here is a repro: https://play.tailwindcss.com/9fRhbqvZRH?layout=horizontal&size=898x676

Fixed on 2.46.0. Thank you

Great, this works now. However, there is no hover animation in the top-level item.

And the size is different. Item 5 and 8 have a height of 36, while all other items have a height of 24.

Honestly, this was not predicted. So I used different heights for .collapse and menu item.
I will make them the same size in the next major version. I can't fix it now because this change of size, may break some existing websites so It should be a breaking change on the next major release.
For now you can add this code to your CSS to make them look good together:
https://play.tailwindcss.com/DyQu8dC2yd?size=834x676&file=css
.menu .collapse-title, .menu .collapse > input[type="checkbox"] {
  min-height: auto;
}
.menu .collapse:hover .collapse-title {
  background-color: hsl(var(--bc) / 0.1);
}

Thanks @saadeghi !
This worked kinda nice.

I can't fix it now because this change of size, may break some existing websites so It should be a breaking change on the next major release.

That is understandable. I changed that part to implement a bit more tailwindy-syntax. With the help of your example, I also managed to remove the padding of the submenu, because I think that looks nicer.
I also added a bit of code to condense the submenu items, to make them more distinguishable from main menu items.
I need just a little more help. When you hover over a submenu item, the parent gets highlighted as well. I would like to only have the menu item highlighted that is hovered over. But I was unable to do this. Do you have a solution for this?
https://play.tailwindcss.com/E8XiXd2X4O?size=834x676&file=css
.menu .collapse-title,
.menu .collapse>input[type="checkbox"] {
    @apply min-h-min;
}

.menu .collapse:hover .collapse-title {
    background-color: hsl(var(--bc) / 0.1);
}

/* Remove submenu padding */
.menu .collapse-content.menu {
    @apply p-0;
}

/* Condense submenu items */
.menu .collapse-content.menu li a {
    @apply py-1;
}

Another thing. In my sample code I put the menu not in the right element.
Instead of

Logo

Item 1

I did this

Logo

Item 1

Moving the menu into the UL does not change the layout, but I cannot expand the collapse any longer.


Added check for navigator in storage check.

@wlindemann can we get this released asap for ZocDoc?

cc @rubinsingh @yntema @scott-branchio

@wlindemann please add JIRA to title


0.3: Rename SinkError and SinkItem

I think we should rename these two. Here's what I suggest:

SinkItem -> InputItem: That would clearly suggest the directionality. Unlike the error, sink items are consumed not produced.
SinkError -> Error: In 0.3 there is no Error associated type that it could conflict with. So, calling it just Error is fine.

Additional advantages:

The new naming difference would make it less likely that someone writes Result<Si::SinkItem, Si::SinkError> accidentally.
These new names are DRY

I'm closing this.
Types that implement both Sink and Stream aren't rare. Calling SinkError just Error would conflict with Error on TryStream (currently called TryError for some reason. That's however inconsistent with TryFuture)
It makes sense to prefix both associated types with the same prefix.


ENH: header include clean ups.

This PR addresses #463
I would like to sort out #466 in this eventually.
Closes #463
^ if you do this, github closes the issue automagically when the PR is merged @rainwoodman

Pull Request Test Coverage Report for Build 2113

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 94.728%

Totals

Change from base Build 2107:
0.0%

Covered Lines:
539

Relevant Lines:
569

💛  - Coveralls

Looks like the build failed. Happy to review once the tests pass!

My bad. Forgot to test the python extension locally. Easy fix.
On Sat, Sep 29, 2018 at 3:48 PM Matthew R. Becker<EMAIL_ADDRESS>wrote:

@beckermr requested changes on this pull request.
The tests should pass.
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
https://github.com/LSSTDESC/CCL/pull/467#pullrequestreview-160095685,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAIbTP_Og-kBq8Dy3aMKUmOuOoAhgNU5ks5uf_isgaJpZM4XACQD
.

Then I would like to submit after this a more controversial PR to change
this to a single file include; and also prefix ccl/ to the header files.
What's the time line of v1?
On Sun, Sep 30, 2018 at 5:12 PM Matthew R. Becker<EMAIL_ADDRESS>wrote:

@beckermr commented on this pull request.
In examples/ccl_sample_power.c
https://github.com/LSSTDESC/CCL/pull/467#discussion_r221478811:

#include <math.h>
#include <stdio.h>
-#include "ccl_params.h"
+#include <ccl_params.h>
+#include <ccl.h>

My understanding is that api changes are still ok but won’t be post v1
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/LSSTDESC/CCL/pull/467#discussion_r221478811, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAIbTFh9U1mrq6QTBWwbya5bPL30KSSbks5ugV4KgaJpZM4XACQD
.

IDK the timeline for v1. @elisachisari is the main dev here. I am just a hired hand.
Feel free to make more PRs! The help is appreciated!

Also it looks like the tests are failing again. We really need to setup caching so they run faster. Recompiling all of the source for CLASS, GSL and FFTW each time is not really needed.

Thanks!


Nats status check script

Make a script which sends and receives a message in dev, staging and prod for quick check of cluster after reconfiguration .
The scripts requires the nsc database locally

Tests in  s-enda/bases/nats/testconnection/testconnection_test.go


Display a title tooltip on mouse-hover/tab of the sort icon in Data Table

In chrome v70, if the user hovers over a sort icon in the Table component, the title e.g. "Sort rows by this header in ascending order" will show in a tooltip.

The title does not show in firefox 63, safari v12, IE 11.
For enhanced accessibility, the tootip should show on mouse hover or on keyboard tab.

Is this a feature request (new component, new icon), a bug, or a general issue?

This is a feature/enhancement request.

Is this issue related to a specific component?

Table Component

What version of the Carbon Design System are you using?

"carbon-components": "9.32.1",
"carbon-components-angular": "1.9.1"

What offering/product do you work on? Any pressing ship or release dates we should be aware of?

IWR
Steps to reproduce the issue
https://angular.carbondesignsystem.com/?knob-size=md&knob-showSelectionColumn=true&knob-striped=true&knob-sortable=true&selectedKind=Table&selectedStory=default&full=0&addons=1&stories=1&panelRight=0&addonPanel=storybook%2Factions%2Factions-panel

hover over the sort icon in the table component in chrome and note that the tooltip will display the title contained in the sort svg.
Repeat step 1 on firefox/IE/safari and note that no tooltip displays

Ping @jnm2377 @vpicone to see if there is an interest in tackling this before being closed.

The title attribute is a pretty unreliable way of communicating to your users and I don't think it's the solution we would want here (though a 🤷♂ better than nothin' argument could be made).
https://developer.paciellogroup.com/blog/2013/01/using-the-html-title-attribute-updated/
In short whatever you put in title is hidden from users on many devices and from users with certain motor/cognitive impairments.

Still needed

Problem exists in sorted Datatable on FF 60.8.1 esr only,  could someone have a look at?