Question regarding special functions?

Good morning,
I'd like to know more about the testing conducted with the special functions. I'm trying to run similar tests myself, and I noticed that the output of the Jacobian Elliptic Function is a tuple.
I'm under the assumption that the create_dataset() function from utils.py is what was used to perform the experiments with the special functions seen in Table 2.
I have several questions, most of them stemming from my lack of knowledge of these functions.

Was the default range of [-1,1] * number of variables used for all of the special functions when testing on them?

Given that the Jacobian Elliptic Function's output from scipy.special.ellipj() is a tuple, which output  is then used as the test label?

How are complex function outputs handled with the KAN architecture?

This last question is prompted by the Spherical Harmonics Functions having complex output types.

https://github.com/yu-rp/KANbeFair/blob/main/src/data/special.py


Pivot by nested list (one-to-many)

What version of React-Table are you using?
6.5.3
What bug are you experiencing, or what feature are you proposing?
Is it possible to render a pivot over nested data?
data = [
    {
        id: 1,
        name: "Father",
        children: [
            {id:1, name:"child1"},
            {id:2, name:"child2"},
            {id:3, name:"child3"},
            {id:4, name:"child4"},
        ]
    }
];

This is a question of implementation. We invite you to join the slack channel and ask for help there or on stack overflow. Thanks!


traders backend pipeline is failing after resource group creation

traders backend pipeline is failing after resource group creation in the pipeline,
Error Log:
Starting: Azure Deployment:Create Or Update Resource Group action on TailwindTradersBackend
Task         : Azure resource group deployment
Description  : Deploy an Azure Resource Manager (ARM) template to a resource group and manage virtual machines
Version      : 2.184.1
Author       : Microsoft Corporation
Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/deploy/azure-resource-group-deployment
##[warning]Resource file has already set to: /home/vsts/work/_tasks/AzureResourceGroupDeployment_94a74903-f93f-4075-884f-dc11f34058b4/2.184.1/node_modules/azure-pipelines-tasks-azure-arm-rest-v2/module.json
Checking if the following resource group exists: TailwindTradersBackend.
Resource group exists: true.
Creating deployment parameters.
##[error]Check out the troubleshooting guide to see if your issue is addressed: https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/deploy/azure-resource-group-deployment?view=azure-devops#troubleshooting
##[error]Error: Could not find any file matching the template file pattern
Finishing: Azure Deployment:Create Or Update Resource Group action on TailwindTradersBackend
AB#3712

Hi, @sameeranamarnath Thank you for posting here. We will look into this.

It appears to the change in source code, file and folder location. The pipeline needs to be reconfigured. We will update ASAP.

Update.
Waiting for support from the backend team. We will be able to fix it once we get enhanced support.
Thanks!!

Please refer to the pipelines on GitHub - TailwindTraders-Backend and TailwindTraders-Website


Hide video views homepage - v1.6

Hides views from homepage.
Same as #36 but rebased to v1.6

@Perseus333
Can you confirm this doesn't make views hide sometimes on the subscriptions page or on the channel page?
Here's what I did: access youtube home page -> subscriptions -> home page -> back to subscriptions and the views were hidden.

Sure! Tomorrow I'll check.

Appreciate that! The issue occurs for both the views and that posted x time ago.

@Perseus333 please ignore this! I've fixed the issue, and had nothing to do with your feature :)

@Perseus333 Can you confirm this doesn't make views hide sometimes on the subscriptions page or on the channel page? Here's what I did: access youtube home page -> subscriptions -> home page -> back to subscriptions and the views were hidden.

 What??! I know that this is because of the generic selector (which I will fix) but this shouldn't happen anyways. Due to the attribute(?): pageTypes: [PAGE_TYPES.HOME], it should only apply to the homepage and not the subscriptions. Maybe there is an issue with the handling of that?
(1 hour later)
I have found that the issue probably lies in that the eventListener yt-navigate-finish doesn't trigger when you go back to a cached(?) page. So this is most likely the source of the issue.  @Pedro-Gregorio, if you know what could be the source of the issue tell me because right now I'm lost.

Hey there, @Perseus333 !
I've researched a bit for yesterday, but couldn't really figure out why that was happening - code wise; Page wise, it's due to the fact none of the events (load and navigate) are triggered on the scenario I've mentioned.
It's so wierd, because there are things from the home page (tabs, if I'm not mistaken) which used to mess up things on the subscriptions, until the page validation was implemented - which can be improved btw, I'm working on that. I really don't know what's going on.
I've also noticed a slight performance decrease with those 2 elements being hidden (views and time), but, again, I can't really conclude on why.
Anyways, thank you for confirming the error and don't worry about it for now, as I'll be working on trying to improve content.js and fix the issue :)

Great! I'll also continue researching to see if I can help you find the issue.


symfony 4 support

See https://github.com/nicolasmure/CrawlerDetectBundle/releases/tag/v2.0.0

Thanks!👍


Data files

Asked to look at this.
Will need pointers to data sets to load
and if possible, how when where they are generated.
Thanks Tom

Data files are here - https://files.renci.org/outgoing/Babel-compendia/
Code to generate - https://github.com/TranslatorSRI/Babel/tree/master/babel
Although some scripts require licensed files to run

going to close but reopen if more is needed


Passive font loading?

I tried to use OpenType.js to load a set of nine Japanese fonts (think 13500ish glyphs per font) totaling less than 50 MB on disk, and was rather surprised to see memory grow to 1625MB before Node.js crashed with a memory allocation failure error =)
To explain how disastrous the full load really is: normally you want to memory map a big font, and then only do glyph outline fetching when those glyphs are necessary for text shaping. If you don't a 6MB font like Ume Minchou turns into 320MB of fully unpacked object. That means you can't even load three, or even two fonts, on the most cost effective common VPS hosts (digital ocean, vultr, etc)
Is there a way to make OpenType.js passively load a font so that it doesn't build the full font object until it actually needs the parts that are revealed necessary due to function calls? Even loading in everything except the glyph data (only loading that in when it's actually necessary for text shaping calls) should save well over a gig of memory, making loading many fonts a lot more tractable.

I had a look at where this would require changes, by turning the font.glyphs array into a GlyphSet object with deferred parsing, but you're using the total glyph list in a lot of places to further load data. Probably still worth doing, since the switch from array to deferred loading won't change how the font behaves and will allow progressive improvement of the code once landed, but it looks like a lot of code was written in the assumption that fonts fit entirely in memory, which hasn't been true for a long time =(

This issue looks related to #126, looks like the same issue.


Module is provisioning SG's, IAM roles when existing SG and IAM roles are provided...

Description
The new module seems to be nice upgrade from previous version and the separated child modules for different types of node managements is cleaner. I'm using the example code in slightly modified version of self_managed_nodes example and/or complete example. The required IAM cluster and node roles, cluster SG and Node SG is being provisioned when the variable have been set to not create them or set to false.  The main module and child variables for creating IAM roles, instance profiles and SG resources are set to false in variables.tf and existing IAM roles and SGs passed as per documentation
Other policies/roles are also getting created: AmazonEKSWorkerNodePolicy, AmazonEC2ContainerRegistryReadOnly, AmazonEKS_CNI_Policy. A cluster role and node policy is provided which has these policies provisioned
⚠ Note
Versions
Terraform:
Terraform v1.1.2 on linux_amd64
provider registry.terraform.io/hashicorp/aws v3.71.0
provider registry.terraform.io/hashicorp/cloudinit v2.2.0
provider registry.terraform.io/hashicorp/kubernetes v2.7.1
provider registry.terraform.io/hashicorp/local v2.1.0
provider registry.terraform.io/hashicorp/null v3.1.0
provider registry.terraform.io/hashicorp/template v2.2.0
provider registry.terraform.io/hashicorp/tls v3.1.0
terraform-aws-eks v18.0.6
Module:
terraform-aws-eks v18.0.6
Reproduction
Slightly modified main.tf in self_managed_node example:
provider "aws" {
  region = local.region
  profile = "default"
}

locals {
  name            = "ex-${replace(basename(path.cwd), "_", "-")}"
  cluster_version = "1.21"
  region          = "us-west-2"

  tags = {
    cluster-name  = local.name
  }
}

data "aws_caller_identity" "current" {}

################################################################################
# EKS Module
################################################################################

module "eks" {
  source = "../.."

  cluster_name                    = local.name
  cluster_version                 = local.cluster_version
  cluster_endpoint_private_access = true
  cluster_endpoint_public_access  = false
  cluster_security_group_id = "sg-0018aaa4854d5df7f"
  node_security_group_id = "sg-03d83e10f0aebd063"
  iam_role_arn           = "cluster role provided here"

  cluster_addons = {
    coredns = {
      resolve_conflicts = "OVERWRITE"
    }
    kube-proxy = {}
    vpc-cni = {
      resolve_conflicts = "OVERWRITE"
    }
  }

#  cluster_encryption_config = [{
#    provider_key_arn = aws_kms_key.eks.arn
#    resources        = ["secrets"]
#  }]

  vpc_id     = "provided here"
  subnet_ids = ["subnet-00acf98792aacd89a","subnet-08769e3fbe2a294c9"]

  enable_irsa = false

  self_managed_node_group_defaults = {
    disk_size = 50
  }

  self_managed_node_groups = {
    # Default node group - as provisioned by the module defaults
    default_node_group = {}

    # Complete
    complete = {
      name            = "complete-self-mng"
      use_name_prefix = false

      subnet_ids = ["subnet-00acf98792aacd89a","subnet-08769e3fbe2a294c9"]

      min_size     = 1
      max_size     = 7
      desired_size = 1

      iam_role_arn             = "Provided here"

      ami_id               = "AMI-provided here"
      ami_is_eks_optimized = true
      key_name             = "provided here"
      vpc_security_group_ids = ["eks-worker-nodes-dev"]
      tags = {
        Name                    = local.name
        application             = "eks-worker"
      }

      bootstrap_extra_args = "--kubelet-extra-args '--max-pods=110'"

      pre_bootstrap_user_data = <<-EOT
        export CONTAINER_RUNTIME="containerd"
        export USE_MAX_PODS=false
      EOT

      post_bootstrap_user_data = <<-EOT
        echo "you are free little kubelet!"
      EOT

      disk_size     = 256
      instance_type = "m6i.large"

      launch_template_name            = "self-managed-ex"
      launch_template_use_name_prefix = true
      launch_template_description     = "Self managed node group example launch template"

      ebs_optimized          = true
      vpc_security_group_ids = ["eks-worker-nodes-dev"]
      enable_monitoring      = false

      block_device_mappings = {
        xvda = {
          device_name = "/dev/xvda"
          ebs = {
            volume_size           = 75
            volume_type           = "gp3"
            iops                  = 3000
            throughput            = 150
            encrypted             = true
            kms_key_id            = "arn:aws:kms:us-west-2:734431404267:key/1bde1208-44b9-49fc-b83b-3aaac55d9705"
            delete_on_termination = true
          }
        }
      }

      metadata_options = {
        http_endpoint               = "enabled"
        http_tokens                 = "required"
        http_put_response_hop_limit = 2
      }

      timeouts = {
        create = "80m"
        update = "80m"
        delete = "80m"
      }

      tags = {
        ExtraTag = "Self managed node group complete"
      }
    }
  }

  tags = local.tags
}

################################################################################
# aws-auth configmap
# Only EKS managed node groups automatically add roles to aws-auth configmap
# so we need to ensure fargate profiles and self-managed node roles are added
################################################################################

data "aws_eks_cluster_auth" "this" {
  name = module.eks.cluster_id
}

locals {
  kubeconfig = yamlencode({
    apiVersion      = "v1"
    kind            = "Config"
    current-context = "terraform"
    clusters = [{
      name = module.eks.cluster_id
      cluster = {
        certificate-authority-data = module.eks.cluster_certificate_authority_data
        server                     = module.eks.cluster_endpoint
      }
    }]
    contexts = [{
      name = "terraform"
      context = {
        cluster = module.eks.cluster_id
        user    = "terraform"
      }
    }]
    users = [{
      name = "terraform"
      user = {
        token = data.aws_eks_cluster_auth.this.token
      }
    }]
  })
}

resource "null_resource" "apply" {
  triggers = {
    kubeconfig = base64encode(local.kubeconfig)
    cmd_patch  = <<-EOT
      kubectl create configmap aws-auth -n kube-system --kubeconfig <(echo $KUBECONFIG | base64 --decode)
      kubectl patch configmap/aws-auth --patch "${module.eks.aws_auth_configmap_yaml}" -n kube-system --kubeconfig <(echo $KUBECONFIG | base64 --decode)
    EOT
  }

  provisioner "local-exec" {
    interpreter = ["/bin/bash", "-c"]
    environment = {
      KUBECONFIG = self.triggers.kubeconfig
    }
    command = self.triggers.cmd_patch
  }
}

Modified main.tf  complete example

provider "aws" {
  region = local.region
  profile = "default"
}

locals {
  name            = "ex-${replace(basename(path.cwd), "_", "-")}"
  cluster_version = "1.21"
  region          = "us-west-2"

  tags = {
    cluster-name  = local.name
    owner-team    = "devops"
  }
}

################################################################################
# EKS Module
################################################################################

module "eks" {
  source = "../.."

  cluster_name                    = local.name
  cluster_version                 = local.cluster_version
  cluster_endpoint_private_access = true
  cluster_endpoint_public_access  = false
  cluster_security_group_id = "sg-0018aaa4854d5df7f"
  node_security_group_id = "sg-03d83e10f0aebd063"
  iam_role_arn           = "arn provided here"

  cluster_addons = {
    coredns = {
      resolve_conflicts = "OVERWRITE"
    }
    kube-proxy = {}
    vpc-cni = {
      resolve_conflicts = "OVERWRITE"
    }
  }

 # cluster_encryption_config = [{
#    provider_key_arn = aws_kms_key.eks.arn
#    resources        = ["secrets"]
#  }]

  vpc_id     = "ID provided here"
  subnet_ids = ["subnet-00acf98792aacd89a","subnet-08769e3fbe2a294c9"]

  enable_irsa = false

  # Self Managed Node Group(s)
  self_managed_node_group_defaults = {
    vpc_security_group_ids       = ["sg-0d36c4b3734d6ae63"]
    iam_role_additional_policies = ["arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore"]
  }

  self_managed_node_groups = {
    spot = {
      instance_type = "m5.large"
      instance_market_options = {
        market_type = "spot"
      }

      iam_role_arn             = "arn provided here"
      iam_instance_profile_arn = "arn provided here"
      ami_id               = "ami provded"
      ami_is_eks_optimized = true
      key_name             = "provided here"
      vpc_security_group_ids = ["eks-worker-nodes-dev"]
      tags = {
        Name                    = local.name
        application             = "eks-worker"
        iac_type                = "terraform"
        "Patch Group"           = "amazon"
      }

      pre_bootstrap_user_data = <<-EOT
      echo "foo"
      export FOO=bar
      EOT

      bootstrap_extra_args = "--kubelet-extra-args '--node-labels=node.kubernetes.io/lifecycle=spot'"

      post_bootstrap_user_data = <<-EOT
      cd /tmp
      sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
      sudo systemctl enable amazon-ssm-agent
      sudo systemctl start amazon-ssm-agent
      EOT
    }
  }

  # EKS Managed Node Group(s)
  #eks_managed_node_group_defaults = {
#    ami_type               = "AL2_x86_64"
#    disk_size              = 50
#    instance_types         = ["m6i.large", "m5.large", "m5n.large", "m5zn.large"]
#    vpc_security_group_ids = [aws_security_group.additional.id]
#  }#

#  eks_managed_node_groups = {
#    blue = {}
#    green = {
#      min_size     = 1
#      max_size     = 10
#      desired_size = 1#

#      instance_types = ["t3.large"]
#      capacity_type  = "SPOT"
#      labels = {
#        Environment = "test"

#      }#

#      taints = {
#        dedicated = {
#          key    = "dedicated"
#          value  = "gpuGroup"
#          effect = "NO_SCHEDULE"
#        }
#      }#

#      update_config = {
#        max_unavailable_percentage = 50 # or set `max_unavailable`
#      }#

#      tags = {
#        ExtraTag = "example"
#      }
#    }
#  }

  # Fargate Profile(s)
  #fargate_profiles = {
#    default = {
#      name = "default"
#      selectors = [
#        {
#          namespace = "kube-system"
#          labels = {
#            k8s-app = "kube-dns"
#          }
#        },
#        {
#          namespace = "default"
#        }
#      ]

#      tags = {
#        Owner = "test"
#      }

#      timeouts = {
#        create = "20m"
#        delete = "20m"
#      }
#    }
#  }

  tags = local.tags
}

################################################################################
# Sub-Module Usage on Existing/Separate Cluster
################################################################################

#module "eks_managed_node_group" {
#  source = "../../modules/eks-managed-node-group"#

#  name            = "separate-eks-mng"
#  cluster_name    = module.eks.cluster_id
#  cluster_version = local.cluster_version#

#  vpc_id     = module.vpc.vpc_id
#  subnet_ids = module.vpc.private_subnets#

#  tags = merge(local.tags, { Separate = "eks-managed-node-group" })
#}

module "self_managed_node_group" {
  source = "../../modules/self-managed-node-group"

  name                = "separate-self-mng"
  cluster_name        = module.eks.cluster_id
  cluster_version     = local.cluster_version
  cluster_endpoint    = module.eks.cluster_endpoint
  cluster_auth_base64 = module.eks.cluster_certificate_authority_data

  instance_type = "m5.large"

  vpc_id     = "same vpc ID provided here"
  subnet_ids = ["subnet-00acf98792aacd89a","subnet-08769e3fbe2a294c9"]
  vpc_security_group_ids = [
    module.eks.cluster_primary_security_group_id,
    module.eks.cluster_security_group_id,
  ]

  tags = merge(local.tags, { Separate = "self-managed-node-group" })
}

#module "fargate_profile" {
#  source = "../../modules/fargate-profile"#

#  name         = "separate-fargate-profile"
#  cluster_name = module.eks.cluster_id#

#  subnet_ids = module.vpc.private_subnets
#  selectors = [{
#    namespace = "kube-system"
#  }]

#  tags = merge(local.tags, { Separate = "fargate-profile" })
#}

################################################################################
# aws-auth configmap
# Only EKS managed node groups automatically add roles to aws-auth configmap
# so we need to ensure fargate profiles and self-managed node roles are added
################################################################################

data "aws_eks_cluster_auth" "this" {
  name = module.eks.cluster_id
}

locals {
  kubeconfig = yamlencode({
    apiVersion      = "v1"
    kind            = "Config"
    current-context = "terraform"
    clusters = [{
      name = module.eks.cluster_id
      cluster = {
        certificate-authority-data = module.eks.cluster_certificate_authority_data
        server                     = module.eks.cluster_endpoint
      }
    }]
    contexts = [{
      name = "terraform"
      context = {
        cluster = module.eks.cluster_id
        user    = "terraform"
      }
    }]
    users = [{
      name = "terraform"
      user = {
        token = data.aws_eks_cluster_auth.this.token
      }
    }]
  })

  # we have to combine the configmap created by the eks module with the externally created node group/profile sub-modules
  aws_auth_configmap_yaml = <<-EOT
  ${chomp(module.eks.aws_auth_configmap_yaml)}
      - rolearn: ${module.self_managed_node_group.iam_role_arn}
        username: system:node:{{EC2PrivateDNSName}}
        groups:
          - system:bootstrappers
          - system:nodes
  EOT
}

resource "null_resource" "patch" {
  triggers = {
    kubeconfig = base64encode(local.kubeconfig)
    cmd_patch  = "kubectl patch configmap/aws-auth --patch \"${local.aws_auth_configmap_yaml}\" -n kube-system --kubeconfig <(echo $KUBECONFIG | base64 --decode)"
  }

  provisioner "local-exec" {
    interpreter = ["/bin/bash", "-c"]
    environment = {
      KUBECONFIG = self.triggers.kubeconfig
    }
    command = self.triggers.cmd_patch
  }
}

################################################################################
# Supporting resources
################################################################################

#module "vpc" {
#  source  = "terraform-aws-modules/vpc/aws"
#  version = "~> 3.0"#

#  name = local.name
#  cidr = "<IP_ADDRESS>/16"#

#  azs             = ["${local.region}a", "${local.region}b", "${local.region}c"]
#  private_subnets = ["<IP_ADDRESS>/24", "<IP_ADDRESS>/24", "<IP_ADDRESS>/24"]
#  public_subnets  = ["<IP_ADDRESS>/24", "<IP_ADDRESS>/24", "<IP_ADDRESS>/24"]#

#  enable_nat_gateway   = true
#  single_nat_gateway   = true
#  enable_dns_hostnames = true#

#  enable_flow_log                      = true
#  create_flow_log_cloudwatch_iam_role  = true
#  create_flow_log_cloudwatch_log_group = true#

#  public_subnet_tags = {
#    "kubernetes.io/cluster/${local.name}" = "shared"
#    "kubernetes.io/role/elb"              = 1
#  }

#  private_subnet_tags = {
#    "kubernetes.io/cluster/${local.name}" = "shared"
#    "kubernetes.io/role/internal-elb"     = 1
#  }

#  tags = local.tags
#}

#resource "aws_security_group" "additional" {
#  name_prefix = "${local.name}-additional"
#  vpc_id      = module.vpc.vpc_id#

#  ingress {
#    from_port = 22
#    to_port   = 22
#    protocol  = "tcp"
#    cidr_blocks = [
#      "<IP_ADDRESS>/8",
#      "<IP_ADDRESS>/12",
#      "<IP_ADDRESS>/16",
#    ]
#  }

#  tags = local.tags
#}

#resource "aws_kms_key" "eks" {
#  description             = "EKS Secret Encryption Key"
#  deletion_window_in_days = 7
#  enable_key_rotation     = true#

#  tags = local.tags
#}

variables.tf from main module
variable "create" {
  description = "Controls if EKS resources should be created (affects nearly all resources)"
  type        = bool
  default     = true
}

variable "tags" {
  description = "A map of tags to add to all resources"
  type        = map(string)
  default     = {}
}

variable "prefix_separator" {
  description = "The separator to use between the prefix and the generated timestamp for resource names"
  type        = string
  default     = "-"
}

################################################################################
# Cluster
################################################################################

variable "cluster_name" {
  description = "Name of the EKS cluster"
  type        = string
  default     = ""
}

variable "cluster_version" {
  description = "Kubernetes `<major>.<minor>` version to use for the EKS cluster (i.e.: `1.21`)"
  type        = string
  default     = null
}

variable "cluster_enabled_log_types" {
  description = "A list of the desired control plane logs to enable. For more information, see Amazon EKS Control Plane Logging documentation (https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html)"
  type        = list(string)
  default     = ["audit", "api", "authenticator"]
}

variable "cluster_additional_security_group_ids" {
  description = "List of additional, externally created security group IDs to attach to the cluster control plane"
  type        = list(string)
  default     = []
}

variable "subnet_ids" {
  description = "A list of subnet IDs where the EKS cluster (ENIs) will be provisioned along with the nodes/node groups. Node groups can be deployed within a different set of subnet IDs from within the node group configuration"
  type        = list(string)
  default     = []
}

variable "cluster_endpoint_private_access" {
  description = "Indicates whether or not the Amazon EKS private API server endpoint is enabled"
  type        = bool
  default     = false
}

variable "cluster_endpoint_public_access" {
  description = "Indicates whether or not the Amazon EKS public API server endpoint is enabled"
  type        = bool
  default     = true
}

variable "cluster_endpoint_public_access_cidrs" {
  description = "List of CIDR blocks which can access the Amazon EKS public API server endpoint"
  type        = list(string)
  default     = ["<IP_ADDRESS>/0"]
}

variable "cluster_service_ipv4_cidr" {
  description = "The CIDR block to assign Kubernetes service IP addresses from. If you don't specify a block, Kubernetes assigns addresses from either the <IP_ADDRESS>/16 or <IP_ADDRESS>/16 CIDR blocks"
  type        = string
  default     = null
}

variable "cluster_encryption_config" {
  description = "Configuration block with encryption configuration for the cluster"
  type = list(object({
    provider_key_arn = string
    resources        = list(string)
  }))
  default = []
}

variable "cluster_tags" {
  description = "A map of additional tags to add to the cluster"
  type        = map(string)
  default     = {}
}

variable "cluster_timeouts" {
  description = "Create, update, and delete timeout configurations for the cluster"
  type        = map(string)
  default     = {}
}

################################################################################
# CloudWatch Log Group
################################################################################

variable "create_cloudwatch_log_group" {
  description = "Determines whether a log group is created by this module for the cluster logs. If not, AWS will automatically create one if logging is enabled"
  type        = bool
  default     = false
}

variable "cloudwatch_log_group_retention_in_days" {
  description = "Number of days to retain log events. Default retention - 90 days"
  type        = number
  default     = 90
}

variable "cloudwatch_log_group_kms_key_id" {
  description = "If a KMS Key ARN is set, this key will be used to encrypt the corresponding log group. Please be sure that the KMS Key has an appropriate key policy (https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html)"
  type        = string
  default     = null
}

################################################################################
# Cluster Security Group
################################################################################

variable "create_cluster_security_group" {
  description = "Determines if a security group is created for the cluster or use the existing `cluster_security_group_id`"
  type        = bool
  default     = false
}

variable "cluster_security_group_id" {
  description = "Existing security group ID to be attached to the cluster. Required if `create_cluster_security_group` = `false`"
  type        = string
  default     = "sg-0018aaa4854d5df7f"
}

variable "vpc_id" {
  description = "ID of the VPC where the cluster and its nodes will be provisioned"
  type        = string
  default     = null
}

variable "cluster_security_group_name" {
  description = "Name to use on cluster security group created"
  type        = string
  default     = null
}

variable "cluster_security_group_use_name_prefix" {
  description = "Determines whether cluster security group name (`cluster_security_group_name`) is used as a prefix"
  type        = string
  default     = false
}

variable "cluster_security_group_description" {
  description = "Description of the cluster security group created"
  type        = string
  default     = "EKS cluster security group"
}

variable "cluster_security_group_additional_rules" {
  description = "List of additional security group rules to add to the cluster security group created"
  type        = any
  default     = {}
}

variable "cluster_security_group_tags" {
  description = "A map of additional tags to add to the cluster security group created"
  type        = map(string)
  default     = {}
}

################################################################################
# Node Security Group
################################################################################

variable "create_node_security_group" {
  description = "Determines whether to create a security group for the node groups or use the existing `node_security_group_id`"
  type        = bool
  default     = false
}

variable "node_security_group_id" {
  description = "ID of an existing security group to attach to the node groups created"
  type        = string
  default     = "sg-03d83e10f0aebd063"
}

variable "node_security_group_name" {
  description = "Name to use on node security group created"
  type        = string
  default     = null
}

variable "node_security_group_use_name_prefix" {
  description = "Determines whether node security group name (`node_security_group_name`) is used as a prefix"
  type        = string
  default     = false
}

variable "node_security_group_description" {
  description = "Description of the node security group created"
  type        = string
  default     = "EKS node shared security group"
}

variable "node_security_group_additional_rules" {
  description = "List of additional security group rules to add to the node security group created"
  type        = any
  default     = {}
}

variable "node_security_group_tags" {
  description = "A map of additional tags to add to the node security group created"
  type        = map(string)
  default     = {}
}

################################################################################
# IRSA
################################################################################

variable "enable_irsa" {
  description = "Determines whether to create an OpenID Connect Provider for EKS to enable IRSA"
  type        = bool
  default     = false
}

variable "openid_connect_audiences" {
  description = "List of OpenID Connect audience client IDs to add to the IRSA provider"
  type        = list(string)
  default     = []
}

################################################################################
# Cluster IAM Role
################################################################################

variable "create_iam_role" {
  description = "Determines whether a an IAM role is created or to use an existing IAM role"
  type        = bool
  default     = false
}

variable "iam_role_arn" {
  description = "Existing IAM role ARN for the cluster. Required if `create_iam_role` is set to `false`"
  type        = string
  default     = null
}

variable "iam_role_name" {
  description = "Name to use on IAM role created"
  type        = string
  default     = null
}

variable "iam_role_use_name_prefix" {
  description = "Determines whether the IAM role name (`iam_role_name`) is used as a prefix"
  type        = string
  default     = false
}

variable "iam_role_path" {
  description = "Cluster IAM role path"
  type        = string
  default     = null
}

variable "iam_role_description" {
  description = "Description of the role"
  type        = string
  default     = null
}

variable "iam_role_permissions_boundary" {
  description = "ARN of the policy that is used to set the permissions boundary for the IAM role"
  type        = string
  default     = null
}

variable "iam_role_additional_policies" {
  description = "Additional policies to be added to the IAM role"
  type        = list(string)
  default     = []
}

variable "iam_role_tags" {
  description = "A map of additional tags to add to the IAM role created"
  type        = map(string)
  default     = {}
}

################################################################################
# EKS Addons
################################################################################

variable "cluster_addons" {
  description = "Map of cluster addon configurations to enable for the cluster. Addon name can be the map keys or set with `name`"
  type        = any
  default     = {}
}

################################################################################
# EKS Identity Provider
################################################################################

variable "cluster_identity_providers" {
  description = "Map of cluster identity provider configurations to enable for the cluster. Note - this is different/separate from IRSA"
  type        = any
  default     = {}
}

################################################################################
# Fargate
################################################################################

variable "fargate_profiles" {
  description = "Map of Fargate Profile definitions to create"
  type        = any
  default     = {}
}

variable "fargate_profile_defaults" {
  description = "Map of Fargate Profile default configurations"
  type        = any
  default     = {}
}

################################################################################
# Self Managed Node Group
################################################################################

variable "self_managed_node_groups" {
  description = "Map of self-managed node group definitions to create"
  type        = any
  default     = {}
}

variable "self_managed_node_group_defaults" {
  description = "Map of self-managed node group default configurations"
  type        = any
  default     = {}
}

################################################################################
# EKS Managed Node Group
################################################################################

variable "eks_managed_node_groups" {
  description = "Map of EKS managed node group definitions to create"
  type        = any
  default     = {}
}

variable "eks_managed_node_group_defaults" {
  description = "Map of EKS managed node group default configurations"
  type        = any
  default     = {}
}

variables.tf in seld-managed node group
variable "create" {
  description = "Determines whether to create self managed node group or not"
  type        = bool
  default     = true
}

variable "tags" {
  description = "A map of tags to add to all resources"
  type        = map(string)
  default     = {}
}

variable "platform" {
  description = "Identifies if the OS platform is `bottlerocket`, `linux`, or `windows` based"
  type        = string
  default     = "linux"
}

################################################################################
# User Data
################################################################################

variable "cluster_name" {
  description = "Name of associated EKS cluster"
  type        = string
  default     = null
}

variable "cluster_endpoint" {
  description = "Endpoint of associated EKS cluster"
  type        = string
  default     = ""
}

variable "cluster_auth_base64" {
  description = "Base64 encoded CA of associated EKS cluster"
  type        = string
  default     = ""
}

variable "pre_bootstrap_user_data" {
  description = "User data that is injected into the user data script ahead of the EKS bootstrap script. Not used when `platform` = `bottlerocket`"
  type        = string
  default     = ""
}

variable "post_bootstrap_user_data" {
  description = "User data that is appended to the user data script after of the EKS bootstrap script. Not used when `platform` = `bottlerocket`"
  type        = string
  default     = ""
}

variable "bootstrap_extra_args" {
  description = "Additional arguments passed to the bootstrap script. When `platform` = `bottlerocket`; these are additional [settings](https://github.com/bottlerocket-os/bottlerocket#settings) that are provided to the Bottlerocket user data"
  type        = string
  default     = ""
}

variable "user_data_template_path" {
  description = "Path to a local, custom user data template file to use when rendering user data"
  type        = string
  default     = ""
}

################################################################################
# Launch template
################################################################################

variable "create_launch_template" {
  description = "Determines whether to create launch template or not"
  type        = bool
  default     = true
}

variable "launch_template_name" {
  description = "Launch template name - either to be created (`var.create_launch_template` = `true`) or existing (`var.create_launch_template` = `false`)"
  type        = string
  default     = null
}

variable "launch_template_use_name_prefix" {
  description = "Determines whether to use `launch_template_name` as is or create a unique name beginning with the `launch_template_name` as the prefix"
  type        = bool
  default     = true
}

variable "launch_template_description" {
  description = "Description of the launch template"
  type        = string
  default     = null
}

variable "launch_template_default_version" {
  description = "Default Version of the launch template"
  type        = string
  default     = null
}

variable "update_launch_template_default_version" {
  description = "Whether to update Default Version each update. Conflicts with `launch_template_default_version`"
  type        = bool
  default     = true
}

variable "disable_api_termination" {
  description = "If true, enables EC2 instance termination protection"
  type        = bool
  default     = null
}

variable "instance_initiated_shutdown_behavior" {
  description = "Shutdown behavior for the instance. Can be `stop` or `terminate`. (Default: `stop`)"
  type        = string
  default     = null
}

variable "kernel_id" {
  description = "The kernel ID"
  type        = string
  default     = null
}

variable "ram_disk_id" {
  description = "The ID of the ram disk"
  type        = string
  default     = null
}

variable "block_device_mappings" {
  description = "Specify volumes to attach to the instance besides the volumes specified by the AMI"
  type        = any
  default     = {}
}

variable "capacity_reservation_specification" {
  description = "Targeting for EC2 capacity reservations"
  type        = any
  default     = null
}

variable "cpu_options" {
  description = "The CPU options for the instance"
  type        = map(string)
  default     = null
}

variable "credit_specification" {
  description = "Customize the credit specification of the instance"
  type        = map(string)
  default     = null
}

variable "elastic_gpu_specifications" {
  description = "The elastic GPU to attach to the instance"
  type        = map(string)
  default     = null
}

variable "elastic_inference_accelerator" {
  description = "Configuration block containing an Elastic Inference Accelerator to attach to the instance"
  type        = map(string)
  default     = null
}

variable "enclave_options" {
  description = "Enable Nitro Enclaves on launched instances"
  type        = map(string)
  default     = null
}

variable "hibernation_options" {
  description = "The hibernation options for the instance"
  type        = map(string)
  default     = null
}

variable "instance_market_options" {
  description = "The market (purchasing) option for the instance"
  type        = any
  default     = null
}

variable "license_specifications" {
  description = "A list of license specifications to associate with"
  type        = map(string)
  default     = null
}

variable "network_interfaces" {
  description = "Customize network interfaces to be attached at instance boot time"
  type        = list(any)
  default     = []
}

variable "placement" {
  description = "The placement of the instance"
  type        = map(string)
  default     = null
}

variable "ebs_optimized" {
  description = "If true, the launched EC2 instance will be EBS-optimized"
  type        = bool
  default     = null
}

variable "ami_id" {
  description = "The AMI from which to launch the instance"
  type        = string
  default     = ""
}

variable "cluster_version" {
  description = "Kubernetes cluster version - used to lookup default AMI ID if one is not provided"
  type        = string
  default     = null
}

variable "instance_type" {
  description = "The type of the instance to launch"
  type        = string
  default     = ""
}

variable "key_name" {
  description = "The key name that should be used for the instance"
  type        = string
  default     = null
}

variable "vpc_security_group_ids" {
  description = "A list of security group IDs to associate"
  type        = list(string)
  default     = []
}

variable "enable_monitoring" {
  description = "Enables/disables detailed monitoring"
  type        = bool
  default     = true
}

variable "metadata_options" {
  description = "Customize the metadata options for the instance"
  type        = map(string)
  default = {
    http_endpoint               = "enabled"
    http_tokens                 = "required"
    http_put_response_hop_limit = 2
  }
}

################################################################################
# Autoscaling group
################################################################################

variable "name" {
  description = "Name of the Self managed Node Group"
  type        = string
  default     = ""
}

variable "use_name_prefix" {
  description = "Determines whether to use `name` as is or create a unique name beginning with the `name` as the prefix"
  type        = bool
  default     = true
}

variable "launch_template_version" {
  description = "Launch template version. Can be version number, `$Latest`, or `$Default`"
  type        = string
  default     = null
}

variable "availability_zones" {
  description = "A list of one or more availability zones for the group. Used for EC2-Classic and default subnets when not specified with `subnet_ids` argument. Conflicts with `subnet_ids`"
  type        = list(string)
  default     = null
}

variable "subnet_ids" {
  description = "A list of subnet IDs to launch resources in. Subnets automatically determine which availability zones the group will reside. Conflicts with `availability_zones`"
  type        = list(string)
  default     = null
}

variable "min_size" {
  description = "The minimum size of the autoscaling group"
  type        = number
  default     = 0
}

variable "max_size" {
  description = "The maximum size of the autoscaling group"
  type        = number
  default     = 3
}

variable "desired_size" {
  description = "The number of Amazon EC2 instances that should be running in the autoscaling group"
  type        = number
  default     = 1
}

variable "capacity_rebalance" {
  description = "Indicates whether capacity rebalance is enabled"
  type        = bool
  default     = null
}

variable "min_elb_capacity" {
  description = "Setting this causes Terraform to wait for this number of instances to show up healthy in the ELB only on creation. Updates will not wait on ELB instance number changes"
  type        = number
  default     = null
}

variable "wait_for_elb_capacity" {
  description = "Setting this will cause Terraform to wait for exactly this number of healthy instances in all attached load balancers on both create and update operations. Takes precedence over `min_elb_capacity` behavior."
  type        = number
  default     = null
}

variable "wait_for_capacity_timeout" {
  description = "A maximum duration that Terraform should wait for ASG instances to be healthy before timing out. (See also Waiting for Capacity below.) Setting this to '0' causes Terraform to skip all Capacity Waiting behavior."
  type        = string
  default     = null
}

variable "default_cooldown" {
  description = "The amount of time, in seconds, after a scaling activity completes before another scaling activity can start"
  type        = number
  default     = null
}

variable "protect_from_scale_in" {
  description = "Allows setting instance protection. The autoscaling group will not select instances with this setting for termination during scale in events."
  type        = bool
  default     = false
}

variable "target_group_arns" {
  description = "A set of `aws_alb_target_group` ARNs, for use with Application or Network Load Balancing"
  type        = list(string)
  default     = []
}

variable "placement_group" {
  description = "The name of the placement group into which you'll launch your instances, if any"
  type        = string
  default     = null
}

variable "health_check_type" {
  description = "`EC2` or `ELB`. Controls how health checking is done"
  type        = string
  default     = null
}

variable "health_check_grace_period" {
  description = "Time (in seconds) after instance comes into service before checking health"
  type        = number
  default     = null
}

variable "force_delete" {
  description = "Allows deleting the Auto Scaling Group without waiting for all instances in the pool to terminate. You can force an Auto Scaling Group to delete even if it's in the process of scaling a resource. Normally, Terraform drains all the instances before deleting the group. This bypasses that behavior and potentially leaves resources dangling"
  type        = bool
  default     = null
}

variable "termination_policies" {
  description = "A list of policies to decide how the instances in the Auto Scaling Group should be terminated. The allowed values are `OldestInstance`, `NewestInstance`, `OldestLaunchConfiguration`, `ClosestToNextInstanceHour`, `OldestLaunchTemplate`, `AllocationStrategy`, `Default`"
  type        = list(string)
  default     = null
}

variable "suspended_processes" {
  description = "A list of processes to suspend for the Auto Scaling Group. The allowed values are `Launch`, `Terminate`, `HealthCheck`, `ReplaceUnhealthy`, `AZRebalance`, `AlarmNotification`, `ScheduledActions`, `AddToLoadBalancer`. Note that if you suspend either the `Launch` or `Terminate` process types, it can prevent your Auto Scaling Group from functioning properly"
  type        = list(string)
  default     = null
}

variable "max_instance_lifetime" {
  description = "The maximum amount of time, in seconds, that an instance can be in service, values must be either equal to 0 or between 604800 and 31536000 seconds"
  type        = number
  default     = null
}

variable "enabled_metrics" {
  description = "A list of metrics to collect. The allowed values are `GroupDesiredCapacity`, `GroupInServiceCapacity`, `GroupPendingCapacity`, `GroupMinSize`, `GroupMaxSize`, `GroupInServiceInstances`, `GroupPendingInstances`, `GroupStandbyInstances`, `GroupStandbyCapacity`, `GroupTerminatingCapacity`, `GroupTerminatingInstances`, `GroupTotalCapacity`, `GroupTotalInstances`"
  type        = list(string)
  default     = null
}

variable "metrics_granularity" {
  description = "The granularity to associate with the metrics to collect. The only valid value is `1Minute`"
  type        = string
  default     = null
}

variable "service_linked_role_arn" {
  description = "The ARN of the service-linked role that the ASG will use to call other AWS services"
  type        = string
  default     = null
}

variable "initial_lifecycle_hooks" {
  description = "One or more Lifecycle Hooks to attach to the Auto Scaling Group before instances are launched. The syntax is exactly the same as the separate `aws_autoscaling_lifecycle_hook` resource, without the `autoscaling_group_name` attribute. Please note that this will only work when creating a new Auto Scaling Group. For all other use-cases, please use `aws_autoscaling_lifecycle_hook` resource"
  type        = list(map(string))
  default     = []
}

variable "instance_refresh" {
  description = "If this block is configured, start an Instance Refresh when this Auto Scaling Group is updated"
  type        = any
  default     = null
}

variable "use_mixed_instances_policy" {
  description = "Determines whether to use a mixed instances policy in the autoscaling group or not"
  type        = bool
  default     = false
}

variable "mixed_instances_policy" {
  description = "Configuration block containing settings to define launch targets for Auto Scaling groups"
  type        = any
  default     = null
}

variable "warm_pool" {
  description = "If this block is configured, add a Warm Pool to the specified Auto Scaling group"
  type        = any
  default     = null
}

variable "delete_timeout" {
  description = "Delete timeout to wait for destroying autoscaling group"
  type        = string
  default     = null
}

variable "propagate_tags" {
  description = "A list of tag blocks. Each element should have keys named `key`, `value`, and `propagate_at_launch`"
  type        = list(map(string))
  default     = []
}

################################################################################
# Autoscaling group schedule
################################################################################

variable "create_schedule" {
  description = "Determines whether to create autoscaling group schedule or not"
  type        = bool
  default     = true
}

variable "schedules" {
  description = "Map of autoscaling group schedule to create"
  type        = map(any)
  default     = {}
}

################################################################################
# Security Group
################################################################################

variable "create_security_group" {
  description = "Determines whether to create a security group"
  type        = bool
  default     = false
}

variable "security_group_name" {
  description = "Name to use on security group created"
  type        = string
  default     = null
}

variable "security_group_use_name_prefix" {
  description = "Determines whether the security group name (`security_group_name`) is used as a prefix"
  type        = string
  default     = false
}

variable "security_group_description" {
  description = "Description for the security group created"
  type        = string
  default     = "EKS self-managed node group security group"
}

variable "vpc_id" {
  description = "ID of the VPC where the security group/nodes will be provisioned"
  type        = string
  default     = null
}

variable "security_group_rules" {
  description = "List of security group rules to add to the security group created"
  type        = any
  default     = {}
}

variable "cluster_security_group_id" {
  description = "Cluster control plane security group ID"
  type        = string
  default     = null
}

variable "security_group_tags" {
  description = "A map of additional tags to add to the security group created"
  type        = map(string)
  default     = {}
}

################################################################################
# IAM Role
################################################################################

variable "create_iam_instance_profile" {
  description = "Determines whether an IAM instance profile is created or to use an existing IAM instance profile"
  type        = bool
  default     = false
}

variable "iam_instance_profile_arn" {
  description = "Amazon Resource Name (ARN) of an existing IAM instance profile that provides permissions for the node group. Required if `create_iam_instance_profile` = `false`"
  type        = string
  default     = "arn provided here"
}

variable "iam_role_name" {
  description = "Name to use on IAM role created"
  type        = string
  default     = null
}

variable "iam_role_use_name_prefix" {
  description = "Determines whether cluster IAM role name (`iam_role_name`) is used as a prefix"
  type        = string
  default     = true
}

variable "iam_role_path" {
  description = "IAM role path"
  type        = string
  default     = null
}

variable "iam_role_description" {
  description = "Description of the role"
  type        = string
  default     = null
}

variable "iam_role_permissions_boundary" {
  description = "ARN of the policy that is used to set the permissions boundary for the IAM role"
  type        = string
  default     = null
}

variable "iam_role_attach_cni_policy" {
  description = "Whether to attach the Amazon managed `AmazonEKS_CNI_Policy` IAM policy to the IAM IAM role. WARNING: If set `false` the permissions must be assigned to the `aws-node` DaemonSet pods via another method or nodes will not be able to join the cluster"
  type        = bool
  default     = true
}

variable "iam_role_additional_policies" {
  description = "Additional policies to be added to the IAM role"
  type        = list(string)
  default     = []
}

variable "iam_role_tags" {
  description = "A map of additional tags to add to the IAM role created"
  type        = map(string)
  default     = {}
}

Partial terraform plan Output
 module.eks.module.self_managed_node_group["complete"].aws_security_group.this[0] will be created
  + resource "aws_security_group" "this" {
      + arn                    = (known after apply)
      + description            = "Self managed node group security group"
      + egress                 = (known after apply)
      + id                     = (known after apply)
      + ingress                = (known after apply)
      + name                   = (known after apply)
      + name_prefix            = "complete-self-mng-node-group-"

module.eks.module.self_managed_node_group["default_node_group"].aws_iam_role_policy_attachment.this["arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"] will be created
  + resource "aws_iam_role_policy_attachment" "this" {
      + id         = (known after apply)
      + policy_arn = "arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"
      + role       = (known after apply)
    }

  # module.eks.module.self_managed_node_group["default_node_group"].aws_iam_role_policy_attachment.this["arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy"] will be created
  + resource "aws_iam_role_policy_attachment" "this" {
      + id         = (known after apply)
      + policy_arn = "arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy"
      + role       = (known after apply)
    }

  # module.eks.module.self_managed_node_group["default_node_group"].aws_iam_role_policy_attachment.this["arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy"] will be created
  + resource "aws_iam_role_policy_attachment" "this" {
      + id         = (known after apply)
      + policy_arn = "arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy"
      + role       = (known after apply)
    }

module.eks.module.self_managed_node_group["default_node_group"].aws_iam_role.this[0] will be created
  + resource "aws_iam_role" "this" {
      + arn                   = (known after apply)
      + assume_role_policy    = jsonencode(
            {
              + Statement = [
                  + {
                      + Action    = "sts:AssumeRole"
                      + Effect    = "Allow"
                      + Principal = {
                          + Service = "ec2.amazonaws.com"
                        }
                      + Sid       = "EKSNodeAssumeRole"
                    },
                ]
              + Version   = "2012-10-17"
            }
        )
 module.eks.module.self_managed_node_group["complete"].aws_security_group.this[0] will be created
  + resource "aws_security_group" "this" {
      + arn                    = (known after apply)
      + description            = "Self managed node group security group"
      + egress                 = (known after apply)
      + id                     = (known after apply)

module.eks.module.self_managed_node_group["complete"].aws_iam_instance_profile.this[0] will be created
  + resource "aws_iam_instance_profile" "this" {
      + arn         = (known after apply)
      + create_date = (known after apply)
      + id          = (known after apply)
      + name        = (known after apply)
      + name_prefix = "complete-self-mng-node-group-"
      + path        = "/"
      + role        = (known after apply)
      + tags        = {

module.eks.module.self_managed_node_group["complete"].aws_security_group.this[0] will be created
  + resource "aws_security_group" "this" {
      + arn                    = (known after apply)
      + description            = "Self managed node group security group"
      + egress                 = (known after apply)
      + id                     = (known after apply)
      + ingress                = (known after apply)
      + name                   = (known after apply)
      + name_prefix            = "complete-self-mng-node-group-"

Code Snippet to Reproduce
Variables in variable.tf for (main module)
create_cluster_security_group = false and cluster SG is set to existing one
cluster_security_group_use_name_prefix = false
create_node_security_group = false and node_security_group_id is set to existing one
create_iam_role = false and iam_role_arn is set with existing one
Variables in variable.tf for child module
create_security_group = false
create_iam_instance_profile = false and iam_instance_profile_arn is set with existing one
Expected behavior

Actual behavior
IAM roles and SG are being created when not required
Terminal Output Screenshot(s)

Additional context

please provide a complete reproduction configuration

@bryantbiggs  Updated above. Thanks!

I'm sorry @jauyzed, but thats not a reproduction. something like https://github.com/terraform-aws-modules/terraform-aws-eks/tree/master/examples/complete is a reproduction - where a user can simply run terraform init && terraform apply. it can exist in a gist, repo, or be a simple copy+paste to file before running intit and apply

@bryantbiggs Sorry about the missing information. Since I'm using existing VPC, subnets, iam_role_arn etc in my account, the information I add maybe not be correct. I'm using the examples from this module.
There are only few variables that were added. I'm including variable.tf from both examples to show that I'm setting IAM module management to false so this module should not be creating them.
cluster_security_group_id = ""
node_security_group_id = ""
iam_role_arn           = ""
vpc_id     = ""
subnet_ids = [""]

I too am in a situation where I'm trying to upgrade to the latest 18.x release but, despite my setting create_iam_role = false and iam_role_arn = data.terraform_remote_state.iam.outputs.eks_cluster_arn my terraform plan is still producing (primary being my EKS module name):
# module.primary.module.eks_managed_node_group["node_group_2"].aws_iam_role.this[0] will be created

as well as policy attachments.  I'll see if I can boil it down to the most basic elements and post it back here.

@heathsnow you might want to check out what others have shared here https://github.com/terraform-aws-modules/terraform-aws-eks/issues/1744#issuecomment-1027359982

Thanks for the link @bryantbiggs.  I had previously already done his suggested "Variable to set in new config to avoid cluster deletion and recreation:" section which is where I'm at now. I can clearly see that with the variable set to false it shouldn't be creating the role and yet it still is for some reason. I'm still investigating...

Okay, I found the issue.
I was expecting the module to honor my create_iam_role at the root of the module but I needed to add it within an eks_managed_node_group_defaults block as well.
Like so:
module "eks" {
  ...
  create_iam_role = false
  iam_role_arn = "arn:foo"

  eks_managed_node_group_defaults = {
    create_iam_role = false
    iam_role_arn = "arn:foo"
  }
}

Once I made that change the IAM role was no longer getting created in my plan.

I did something similar. Initially, I had set these variables to false in node_groups.tf as I may not require these resources to be provisioned.
Setting it resolved the issue. Thank you.
self_managed_node_group_defaults = {
    create_node_sg = false
    create_iam_instance_profile = false
    create_security_group = false
  }


Feature Request: allow custom client id, different from thing name

Feature Request:
I sometimes run the AWS IoT Device Client alongside other software using another MQTT client. Typically, the AWS IoT Device Client takes care of jobs and secure tunnelling while other bits of software use device shadows directly with their own MQTT client.
This leads me to a situation where I can have 2 MQTT clients for the same thing, which means I need 2 different client ids. Currently I cannot choose the client ID used by the AWS IoT Device client: it is always the thing name (which is a good default).
I would like to be able to change the client ID independently from the thing name, which could be achieved with an optional CLIENT_ID env var, an optional --client-id flag, etc.
For example, --client-id ${thing_name}-aws-iot (assuming that the cert policy allows this name).
The default behaviour should of course still be to use the thing name as client id as it is a very sensible default.

Hello @antoine-sac , sorry for the delayed response.
I am not sure if it is a good idea to change the ClientId default from thing name to something else. Mainly because the topic to which device client subscribe to is derived from the thing name. Example: To get notification of the next job in the queue which device subscribes to $aws/things/thingName/jobs/notify-next topic. If we do not subscribe to this topic then we won't get notification for the new jobs created for the thing.
We can make a change to also allow passing thing-name separately so that we still subscribe to all feature required topics correctly. Will that be acceptable to you?
Regards,
Harsh Gandhi

Hello Harsh,
You raise a very good point, indeed it'll be necessary to pass the thing-name too.
Alternatively, what I personally do in my code is pass a thing name and a client id suffix, then I construct the client ID as the thing name + suffix.
It's worth noting that it can be quite complicated to craft the appropriate device policy when you want to use the thing name in a topic filter, because AWS seems to derive the thing name from the client id when evaluating permissions...
The only way I managed to get restricted permissions to work is to actually create a second thing, using the same certificate. This way, each client has its own thing name.

Hey @antoine-sac , I am still working with our team to understand if there will be any difficulty/complications having client-id different from thing-name. Please be patient and I will share more updates soon.
I have a question regarding your other client: Device Client also has Shadow feature along with Jobs and Secure Tunneling. What is stopping you from using Device Clients Shadow feature?

Hello @antoine-sac , I spoke with our team and found out that the thing policy restricts devices with different thing-name and client-id from making multiple connections to IoT core at the same time. Also as you have mentioned earlier, it can be quite complicated to craft the appropriate device policy so for now we cannot work on this feature request for device client.
I think you have two options right now,

use different thing-name and policy for different clients running on your device.
use device client shadow feature.
Also it would help us to know what is stopping you from using device client's shadow feature. If you are able to use it, this problem will go away.

Regards,
Harsh Gandhi

Hello @HarshGandhi-AWS,
I have come to the same conclusion: it's impossible to use a client-id different from the thing-name with a production-level device policy. We'll stick to our current approach of provisioning 2 things for the 2 clients
Regarding why we don't use the device client for everything, indeed the sensor publish feature and the shadow feature would cover our 2 use cases for using our own client.
We don't use them because:

The device client segfaults in recent builds which doesn't inspire confidence to use it for production-critical workloads. This has already been reported in #428 so I didn't open a ticket but we got a segfault on Ubuntu 22.10 armhf and arm64. We actually had to roll back to a commit from last year to get a usable version.

Documentation is lacking, for example the only documentation of the device shadow feature is a 10-line paragraph here.. Limitations are not discussed and we didn't want to discover them ourselves. The doc on the sensor publish feature is much better.

Example of basic info we'd need before considering using the shadow feature in production:

What is the format that should be used in the file ? Having worked with shadows for a while, I can guess, but it's incredible that the info is not there. Do the files contain both desired and reported state, or is there only desired state in output and reported state in input ?
Is it possible to do delta updates ?
Does the output file contain delta data or the whole state data, is it similar to the documents topic which contains data + metadata ?
Are the output and input files really files ? Or are they some type of socket ? Are they persisted if the client reboots ? Are they persisted if the device reboots ?
Are there any caveats ?
What's the best way to monitor the output file on a UNIX machine ? Can we attach a callback to handle state updates ? (this last point may be omitted since it's a generic UNIX question, but could still be useful in an FAQ)

It's actually much easier to implement our own shadow service using the shadow MQTT topics because those are extremely well documented.

A number of little things don't inspire high confidence in the device client, for example the fact that some remote jobs fail if attributes marked as optional in the AWS UI are not passed to them. For example, RestartApplication does not work if the pathToHandler is not passed, contrary to what the official docs say.

It was very easy to implement a simple publisher straight in our code. We had already implemented all the features we needed before considering the device client which is why we're not using the sensor publish feature.

Sending a Last Will is not supported or at least not documented and this is an essential feature for us

Lastly, I just want to say that despite the limitations above, we find the AWS IoT Device Client extremely useful and we're grateful that you're maintaining it. It's proven invaluable as a safeguard to allow us to send jobs and open secure tunnels to our device when we trouble with our own services. You sound like you may be the equivalent of a product owner for the product and there's always insight in feedback which is why I listed all the above.
Cheers
Antoine

Hello @antoine-sac , thank you for your feedback. Device Client was built as a sample implementation of client which will run on the device to connect with IoT core and use different IoT functionalities. This software was not intended to run on production device; we expect users to make a clone/fork of this repository and build their own version of the client suitable to their usecase. Building your own version of client should not be difficult if you use Device Client as a base.
Regarding segmentation faults and documentation, feel free to open a ticket and team will look through it and try to resolve it as soon as possible. Also if you have found the problem and know the fix, we encourage you to make an update via pull request and team will be more than happy to review and merge it. This software is built for the IoT community.
Regards,
Harsh Gandhi


Trying to use the v2 with Expo

Invariant Violation Native module can't be null
Steps to reproduce the behavior:

Create expo project
Install the library  expo install react-native-track-player@next
Tried adding index.js and registered the module

**Environment **
expo version - 3.22.3

I don't think you can use react-native-track-player with Expo since this is a native module

Ohh but I thought this has expo support

This is from the docs

Expo and Expokit support
Currently react-native-track-player does not support projects with Expo or Expokit.

Source: https://react-native-track-player.js.org/install/

Oh okay I will close this issue then. Thanks for the confirmation


comparison with NeuralPoints

Hi, thank you for your excellent work. I notice that you make a comparison with NeuralPoints on PU-GAN dataset, but they need normals as supervision which is unavailable in the dataset. So how did you test their method?

You can estimate the normals, and then use the estimated results for supervision.

Thanks for your reply. Have you modified their code to test it on the PU-GAN dataset with their pre-trained model? I have been unable to reproduce their results, even when dividing the point cloud into patches. The quantitative results I obtained are close to that of PU-GAN.

You can estimate the normals, and then use the estimated results for supervision.

Hi,Congratulations on the groundbreaking progress in your work! Can you share the details of training Neps

Please directly ask the authors of NeuralPoints for help if you meet any problem during the model training or testing.


Typo Correction

@waynebaby,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot


Convert pipenv to requirements.txt

pipenv and Pipfile uses significantly more resources for installing python packages as compared to requirements.txt. The JHD Bot uses pipenv instead of requirements.txt. It is recommended to change from pipenv to requirements.txt for using a docker-based deployment.

just made a requirement.txt file
discord==1.0.1
python-dotenv==0.14.0

now it's time for fume to change stuff

Added it with the recent commit https://github.com/Fumenoid/JHDBot/commit/3d6f3f4a3a17d1ae08e32d119ca684cd1a601610


Only override vagrant ssh user for openstack provider

Fix a bug reported in https://github.com/openmicroscopy/infrastructure/pull/165#pullrequestreview-8576264

Tested locally
with vagrant up cliutils
cliutils                   : ok=4    changed=3    unreachable=0    failed=0
works now
Thanks
good to merge


ARTEMIS-2926 Scheduled task executions are skipped randomly

https://issues.apache.org/jira/browse/ARTEMIS-2926

I think the changes seem ok, but I think perhaps the PR overlooks another simpler and more important behaviour that may be leading to the observed issue?
The given period at construction of the scheduled tasks is documented as "the delay between the termination of one execution and the start of the next". Thats unsurprisingly consistent with the behaviour of scheduledExecutorService.scheduleWithFixedDelay(), which is whats used by the 'not onDemand' instances of the scheduled tasks. However, the tasks dont actually run in the scheduledExecutorService thread if the additional executor is given during construction. If the second executor is given, the scheduled task is just offloaded by the scheduledExecutorService for execution on the provided executor and entirely forgotten about. That seems like it could be the core of the observed issue to me?
The above means there is no further tracking by the scheduler of when the task actually runs or how long the given task takes, meaning the periodic contract is somewhat lost at that point forward. Consider a situation:

Say there is a backlog of existing (related or unrelated) things for the executor still to run, so a new 'scheduled offloaded' task may not run for a little while until that is processed. Or instead say that thread scheduling means the second executor doesnt immediately get to executing the task. Whatever the reason, something means there is a small delay, but eventually the task does run.
A second task instance comes along from the scheduledExecutorService at some point, very closely after the configured period since it isnt affected by actual execution of the task, which gets offloaded. Maybe now there isnt any or as much backlog on the second executor, or theres a better thread scheduling environment, and this second task may get run relatively quicker than the prior instance actualy did.
Due to the 'lastTime' tracking occuring within the task itself, on the second executor, this second task instance which was offloaded by the scheduledExecutorService at its precise period, will now be observed to have occurred within the configured period of the previous tasks 'lstTime' and so get skipped.
This means nothing happened, and wont until the scheduledExecutorService comes along after a 3rd period and offloads the task another time, by which point approx double the expected period has elapsed and the task actually executes. Rinse and repeat this process over and over.

If the second executor is provided, its actual execution + 'lastTime' period checks are essentially happening independently of the scheduling, and it seems like the scheduledExecutorService is trying to somewhat blindly throw tasks over a wall such that they land at the right time and actually get to run as opposed to skipping and waiting for next time.

@gemmellr
A couple of observations on the changes on be3c193 on https://github.com/apache/activemq-artemis/blob/be3c193f73775b961f855e6d935c442e28a14875/artemis-commons/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQScheduledComponent.java#L324-L331
I've chosen on purpose to allow a racing booking request (can be either from a delay or the next periodic task submission on executor) to happen before instead of on completion of ActiveMQScheduledComponent.this.run():

because of the expected behaviour of delay:
eg JDBCJournalImpl submit some records and call syncTimer.delay(); it means that if a pending task hasn't yet hitbookedForRunning.compareAndSet(true, false), the delay request will fail, leaving some records to not be picked up and processed later
because of the uselessness (due to how a JVM work?) to detect a "slow" (ie which execution time is > period) pending task (see https://issues.apache.org/jira/browse/ARTEMIS-2926?focusedCommentId=17212908&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-17212908): TLDR if bookedForRunning.compareAndSet(true, false) takes long time to be hit it doesn't mean that the task hasn't been prompty executed/is slow -> skipping the next period task just means we're slowing down rate!

@franz1981 I have seen the results of the test suite on our CI, and in both cases the test suite did not complete.
I don't think it is safe to merge this ATM.

@clebertsuconic I'm now investigating, but is strange: the failures seems not related to my change, indeed I'm getting failures on tests that are not using the scheduled component...
I'm trying removing the latest commits before mine to check if that's the cause of the failure...

I've added a new commit but seems to create some trouble: I'll work today to fix what's wrong here...

@clebertsuconic It seems that I was missing to correctly stop :)
The CI now is green :+1:


this is a test

comment 1

comment 2

Well what do you know
On Wednesday, November 18, 2015 at 9:55:58 PM UTC-5, Alan Ruttenberg wrote:

comment 2
—
Reply to this email directly or view it on GitHub
https://github.com/OmniSearch/NCRO-Ontology-Files/issues/1#issuecomment-157933512
.

And what if I respond from here?
On Wed, Nov 18, 2015 at 9:57 PM ncro-devel<EMAIL_ADDRESS>wrote:

Well what do you know
On Wednesday, November 18, 2015 at 9:55:58 PM UTC-5, Alan Ruttenberg wrote:

comment 2
—
Reply to this email directly or view it on GitHub
<
https://github.com/OmniSearch/NCRO-Ontology-Files/issues/1#issuecomment-157933512
.

—
Reply to this email directly or view it on GitHub
https://github.com/OmniSearch/NCRO-Ontology-Files/issues/1#issuecomment-157933658
.

now what happens?

what about now

wait a sec!

now I'm annoyed

erg
On Wed, Nov 18, 2015 at 10:33 PM ncro-devel<EMAIL_ADDRESS>wrote:

now I'm annoyed
—
Reply to this email directly or view it on GitHub
https://github.com/OmniSearch/NCRO-Ontology-Files/issues/1#issuecomment-157939771
.


[Bug] data queried from external table defined with error limit unexpected change

Cloudberry Database version
PostgreSQL 14.4 (Cloudberry Database 1.0.0+ed64982 build commit:ed64982034245e8b46926b75f349a4a5d5b8fd67)
What happened
Testrepo testcase failed:
ErrorLogTests.test_limit ... 644.98 ms ... FAIL
It is related to this PR, https://github.com/cloudberrydb/cloudberrydb/pull/320
DDL
CREATE EXTERNAL TABLE exttab_limit_1( i int, j text )
LOCATION ('gpfdist://localhost:8080/exttab_limit_1.tbl') FORMAT 'TEXT' (DELIMITER '|')
LOG ERRORS SEGMENT REJECT LIMIT 10;
CREATE EXTERNAL TABLE
-- Generate the file with lot of errors
\! python3 /code/cbdb_testrepo_src/mpp/gpdb/tests/queries/basic/exttab/errlog/sql/datagen.py 200 50 > /code/cbdb_testrepo_src/mpp/gpdb/tests/queries/basic/exttab/errlog/data//exttab_limit_2.tbl
-- reaches reject limit, use the same err table
CREATE EXTERNAL TABLE exttab_limit_2( i int, j text )
LOCATION ('gpfdist://localhost:8080/exttab_limit_2.tbl') FORMAT 'TEXT' (DELIMITER '|')
LOG ERRORS SEGMENT REJECT LIMIT 2;
CREATE EXTERNAL TABLE
-- Test: LIMIT queries without segment reject limit reached
-- Note that even though we use exttab_limit_2 here , the LIMIT 3 will not throw a segment reject limit error
-- order 0

Query expected result:
with cte1 as
(
SELECT e1.i, e2.j FROM exttab_limit_1 e1, exttab_limit_1 e2
WHERE e1.i = e2.i LIMIT 5
)
SELECT * FROM cte1, exttab_limit_2 e3 where cte1.i = e3.i LIMIT 3;
psql:/code/cbdb_testrepo_src/mpp/gpdb/tests/queries/basic/exttab/errlog/output/limit_planner.sql:33: NOTICE:  found 5 data formatting errors (5 or more input rows), rejected related input data
 i |    j     | i |    j
---+----------+---+----------
 0 | 0_number | 0 | 0_number
 1 | 1_number | 1 | 1_number
 5 | 5_number | 5 | 5_number
(3 rows)

Query actual result:
with cte1 as
(
SELECT e1.i, e2.j FROM exttab_limit_1 e1, exttab_limit_1 e2
WHERE e1.i = e2.i LIMIT 5
)
SELECT * FROM cte1, exttab_limit_2 e3 where cte1.i = e3.i LIMIT 3;
psql:/code/cbdb_testrepo_src/mpp/gpdb/tests/queries/basic/exttab/errlog/output/limit_planner.sql:33: NOTICE:  found 5 data formatting errors (5 or more input rows), rejected related input data
 i |    j     | i |    j
---+----------+---+----------
 0 | 0_number | 0 | 0_number
 1 | 1_number | 1 | 1_number
 4 | 4_number | 4 | 4_numbe
(3 rows)

What you think should happen instead
No response
How to reproduce
goto testrepo folder:
cd  /code/cbdb_testrepo_src/

run testrepo testcase to reproduce:
/code/cbdb_testrepo_src/test_framework/tinc.py discover /code/cbdb_testrepo_src/mpp/gpdb/tests/queries/basic/exttab/errlog

Operating System
centos7
Anything else
No response
Are you willing to submit PR?

[ ] Yes, I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct.

Offhand, I don't think it's a bug.

SELECT * FROM cte1, exttab_limit_2 e3 where cte1.i = e3.i LIMIT 3;

SQL standard doesn't guarantee the results with only LIMIT.
The SQL doesn't have ORDER BY, if you have more than 3 rows,  the results is uncertain  with only LIMIT.
See https://www.postgresql.org/docs/14/queries-limit.html

When using LIMIT, it is important to use an ORDER BY clause that constrains the result rows into a unique order. Otherwise you will get an unpredictable subset of the query's rows.

Anyway,  after looking into the case,  actual result now makes more sense than before.
 i |    j     | i |    j
---+----------+---+----------
 0 | 0_number | 0 | 0_number
 1 | 1_number | 1 | 1_number
 4 | 4_number | 4 | 4_numbe
(3 rows)

The test case is bad.  I can add a sort to the query within CTE to make the result more stable.  Even though in this way data result is not 100% guaranteed. If it failed again,  we can figure out another solution.  Please let me know if you have different thoughts. Thanks.
with cte1 as
(
SELECT e1.i, e2.j FROM exttab_limit_1 e1, exttab_limit_1 e2
WHERE e1.i = e2.i ORDER BY e1.i ASC LIMIT 5
)
SELECT * FROM cte1, exttab_limit_2 e3 where cte1.i = e3.i LIMIT 3;

Resolved it by adjusting test case.
ErrorLogTests.test_limit ... 675.91 ms ... ok


[ENH] transformer reconcilers - add tests and improve

Reference Issues/PRs

Addresses a few bullet points in #2416
What does this implement/fix? Explain your changes.

Removed a restriction on the Reconciler which required the bottom level nodes to have unique names at that level by changing the _get_s_matrix() function
Added check for any difference between indexes used in .fit() and .transform()
Test the reconciled predictions actually sum appropriately
Test the index/columns on the summation (S) and G matrices match
Test the methods work equally for named and unnamed indexes

Does your contribution introduce a new dependency? If yes, which one?

No
What should a reviewer concentrate their feedback on?

The added tests :-)

I posted my reasoning for the default change in the comment above @fkiraly, although I didn't think about deprecation. Happy to change back as in the latest commit.
Added more info to the doc strings and removed the warning as well.

you say you changed it back, but the PR still shows "ols" as a default - did you forget to push?

(hm, apparently the pre-PR state had docstring default inconsistent with init default - good that this is fixed)


Raise SystemError on 401 response status code

It looks like you are trying to do a couple of different things here. Can you break them up and submit them as different PRs on the flask-ask branch?


Automated cherry pick of #10599: Feature/yousong sshable

Cherry pick of #10599 on release/3.7.
#10599: Feature/yousong sshable

Codecov Report

Merging #10600 (68559b8) into release/3.7 (0ff3997) will increase coverage by 1.90%.
The diff coverage is 0.00%.

@@               Coverage Diff                @@
##           release/3.7   #10600       +/-   ##
================================================
+ Coverage         5.98%    7.88%    +1.90%
================================================
  Files              848      110      -738
  Lines           131795    13363   -118432
================================================
- Hits              7887     1054     -6833
+ Misses          123206    12189   -111017
+ Partials           702      120      -582

Flag
Coverage Δ

aFlag
7.88% <0.00%> (+1.90%)
:arrow_up:

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

Impacted Files
Coverage Δ

pkg/apigateway/handler/auth.go
0.00% <0.00%> (ø)

pkg/apigateway/handler/auth_totp.go
0.00% <0.00%> (ø)

pkg/apigateway/handler/idp.go
1.84% <0.00%> (ø)

pkg/apigateway/handler/misc.go
0.00% <0.00%> (ø)

pkg/apigateway/handler/resource.go
0.00% <0.00%> (ø)

pkg/util/imagetools/imagetools.go
40.50% <0.00%> (-2.74%)
:arrow_down:

pkg/monitor/alerting/eval_context.go
34.82% <0.00%> (-2.18%)
:arrow_down:

pkg/hostman/diskutils/nbd/lvmutils.go
4.70% <0.00%> (-0.24%)
:arrow_down:

pkg/monitor/alerting/rule.go
1.78% <0.00%> (-0.09%)
:arrow_down:

pkg/util/sysutils/kvm.go
2.91% <0.00%> (-0.06%)
:arrow_down:

... and 686 more

Continue to review full report at Codecov.

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


Fix rabbitmq-diagnostics typo

It seems there is a typo on this page: https://www.rabbitmq.com/docs/monitoring#readiness-probes
rabbitmq-diagnistics -> rabbitmq-diagnostics

@aaronyeung Please sign the Contributor License Agreement!
Click here to manually synchronize the status of this Pull Request.
See the FAQ for frequently asked questions.

@aaronyeung Thank you for signing the Contributor License Agreement!

@aaronyeung well spotted. Thank you!


SCMUtils Version: 2.7-  'analyzeScmRepository' command fails when run against EWM 7.0.1 iFix003

Attempting to use the 'analyzeScmRepository' command configured with the necessary augments for our EWM 7.0.1 staging server, but it fails with:
SCMUtils Version: 2.7
Executing Command analyzeScmRepository
Exception in thread "main" java.lang.ExceptionInInitializerError
at com.ibm.team.repository.client.TeamPlatform.getTeamRepositoryService(TeamPlatform.java:129)
at com.ibm.js.team.supporttools.framework.framework.AbstractTeamrepositoryCommand.execute(AbstractTeamrepositoryCommand.java:147)
at com.ibm.js.team.supporttools.framework.framework.AbstractCommand.run(AbstractCommand.java:73)
at com.ibm.js.team.supporttools.framework.AbstractSupportToolsFramework.execute(AbstractSupportToolsFramework.java:86)
at com.ibm.js.team.supporttools.scmutils.ScmSupportTools.main(ScmSupportTools.java:43)
Caused by: java.lang.NullPointerException
at org.eclipse.core.internal.runtime.InternalPlatform.getBundles(InternalPlatform.java:232)
at org.eclipse.core.internal.runtime.InternalPlatform.getBundle(InternalPlatform.java:222)
at org.eclipse.core.runtime.Platform.getBundle(Platform.java:1424)
at com.ibm.team.repository.client.internal.TeamRepositoryService.shouldAllowJtsLogin(TeamRepositoryService.java:80)
at com.ibm.team.repository.client.internal.TeamRepositoryService.(TeamRepositoryService.java:66)
... 5 more
How do I resolve this ?, is the SCMUtils Version: 2.7 compatible with EWM 7.0.1 iFix003 ?
Please review and advise

There is no special compatibility built into the SCM tools. The Palin Java Client Libraries provided just need to work with the target EWM server version. I have used them mainly with <IP_ADDRESS>, but other versions have worked too. I just ran (the 2.6 version) using the <IP_ADDRESS> plain java client libraries against the 7.0.1 server I have without any issue. I can and will not test all versions.
The error happens in a line
teamRepository = TeamPlatform.getTeamRepositoryService().getTeamRepository(repositoryURI);
with a nullpointer. Either the URI is null or, more likely the service call getTeamRepositoryService returns null.
I do not know why this should happen. I would suggest trying a different plain Java Client libraries version, Java 1.8 version, or debug the program in Eclipse. With the information given, I can not provide more help.

Re-tested with RTC-Client-plainJavaLib-<IP_ADDRESS> and encounter the same issue as when using EWM-Client-plainJavaLib-7.0.1
Can you advise a method of resolving this issue

If you paste the command line including parameters you use I can look at it. Other wise you have to run it in Eclipse in debug mode and look what happens. I have run this over and over and I have not seen that error, ever. I have certainly tested with <IP_ADDRESS>.


Empty state for no search results

WHAT
Added empty state for no search results. Users are now informed when a search result is not found.

Just waiting to update strings now


Is uid mandatory for devise token auth to find current user?

With default configuration of devise token auth, uid is identical to user’s email and is mandatory to find current user. Is it possible to

Remove 'uid' from http header and use something else to find current user
Hash 'uid' so it is not revealed (same way to be used for password in devise token auth)

Yes, you can override the method provider in the controllers
You have to override some code from the gem to achieve that:
https://github.com/lynndylanhurley/devise_token_auth/blob/master/app/controllers/devise_token_auth/concerns/set_user_by_token.rb
https://github.com/lynndylanhurley/devise_token_auth/blob/master/app/models/devise_token_auth/concerns/user.rb#L178

I will close this, feel free to reopen for the enhancement request, if you can create a PR fro that, awesome!

@MaicolBen When you say override the method provider what exactly do you mean?
Also is there a way to rename the uid field to something like uuid?

@lightninglu10 override the method provider in your controller (it should inherit the DTA's controller).

Why we need email in UID?
Is there a tradeoff if we remove this field?

You can use something else, but you need something to identify the user, otherwise, how do you know who is?


When in list item, creating a new note ruins link

When I type in a name and press return, it adds a newline and messed up the link like:

[[name
|@name
]]

From https://github.com/Ebonsignori/obsidian-at-symbol-linking/issues/6#issuecomment-1694828675

Fixed in https://github.com/Ebonsignori/obsidian-at-symbol-linking/releases/tag/1.2.2


ci: enable Kotlin doc strings linting

Description: Enable more detekt rules for linting for doc strings
Risk Level: Low, just linting related changes.
Testing: N/A
Docs Changes: N/A
Release Notes: N/A

The linting for doc strings is still pretty limited compared to what we have for Swift docs i.e., both @param lol and @param lol: are allowed which for whatever reason bothers me. That being said, this PR makes things slightly better without introducing any additional complexity as we just continue to use detekt which we've been using already anyway.


stashBefore - Invalid query parameter $disableStashBefore

Steps to reproduce
Add stashBefore() to the hooks of a simple service. The code looks like:
const { stashBefore } = require("feathers-hooks-common");

module.exports = {
  before: {
    all: [],
    find: [],
    get: [],
    create: [],
    update: [],
    patch: [stashBefore()],
    remove: [stashBefore()]
  },

  after: {
    all: [],
    find: [],
    get: [],
    create: [],
    update: [],
    patch: [],
    remove: []
  },

  error: {
    all: [],
    find: [],
    get: [],
    create: [],
    update: [],
    patch: [],
    remove: []
  }
};

Expected behavior
No errors.
Actual behavior
error: BadRequest: Invalid query parameter $disableStashBefore
    at new BadRequest (<whatever>/node_modules/feathers-knex/node_modules/@feathersjs/adapter-commons/node_modules/@feathersjs/errors/lib/index.js:86:17)
    at _.each (<whatever>/node_modules/feathers-knex/node_modules/@feathersjs/adapter-commons/lib/filter-query.js:48:17)
    at Object.keys.forEach.key (<whatever>/node_modules/@feathersjs/commons/lib/utils.js:12:39)
    at Array.forEach (<anonymous>)
    at Object.each (<whatever>/node_modules/@feathersjs/commons/lib/utils.js:12:24)
    at cleanQuery (<whatever>/node_modules/feathers-knex/node_modules/@feathersjs/adapter-commons/lib/filter-query.js:41:7)
    at filterQuery (<whatever>/node_modules/feathers-knex/node_modules/@feathersjs/adapter-commons/lib/filter-query.js:107:18)
    at Object.filterQuery (<whatever>/node_modules/feathers-knex/node_modules/@feathersjs/adapter-commons/lib/service.js:46:20)
    at Object._find (<whatever>/node_modules/feathers-knex/lib/index.js:156:47)
    at Object._findOrGet (<whatever>/node_modules/feathers-knex/lib/index.js:224:17)
    at Object._get (<whatever>/node_modules/feathers-knex/lib/index.js:228:17)
    at callMethod (<whatever>/node_modules/feathers-knex/node_modules/@feathersjs/adapter-commons/lib/service.js:9:20)
    at Object.get (<whatever>/node_modules/feathers-knex/node_modules/@feathersjs/adapter-commons/lib/service.js:56:12)
    at processHooks.call.then.hookObject (<whatever>/node_modules/@feathersjs/feathers/lib/hooks/index.js:56:27)
    at <anonymous>

Not sure if this is an issue or misconfiguration.

Its failing in the FeathersJS hook handler either on the get call or after it returns. Please log the id and params before this line https://github.com/feathers-plus/feathers-hooks-common/blob/master/lib/services/stash-before.js#L29  and log that control gets to before https://github.com/feathers-plus/feathers-hooks-common/blob/master/lib/services/stash-before.js#L31 .

We also have the same issue and have found a workaround.
The reason is that the stashBefore hook is setting a $disableStashBefore property in the params.query object (for reasons I've yet to understand as it feels like a hack, when you have the full context to share info between hooks). Now that is not valid query parameter to send to mongoose, for example.
The outcome of the error is that context.params.before is undefined because the get call fails, defeating the purpose of using stashBefore at all. :)
To prove my point, the simple solution is to use another hook from this package, discardQuery, and set it up before get` to discard that parameter. Add it and the error disappears:
Example config:
before: {            get: [discardQuery('$disableStashBefore')],       patch: [stashBefore(), yourHookThatNeedsStash, ...]     }
Of course this workaround may have another implications, perhaps @eddyystop you can explain the reasoning or the need of that query parameter to let people know of possible side-effects.

Any of the populate hooks will cause another service to read records. We
don't want those other services to also try to stash records if they too
use the stashRecird hook. The $disableStash flag is set by the root service
to prevent this.
It may look hacky but it's traditional Feathers.
On Thu., May 30, 2019, 06:38 Carlos de la Orden<EMAIL_ADDRESS>wrote:

We also have the same issue and have found a workaround.
The reason is that the stashBefore hook is setting a $disableStashBefore
property in the params.query object (for reasons I've yet to understand as
it feels like a hack, when you have the full context to share info
between hooks). Now that is not valid query parameter to send to mongoose,
for example.
The outcome of the error is that context.params.before is undefined
because the get call fails, defeating the purpose of using stashBefore at
all. :)
To prove my point, the simple solution is to use another hook from this
package, discardQuery, and set it up before get` to discard that
parameter. Add it and the error disappears:
Example config:
before: { get: [discardQuery('$disableStashBefore')], patch:
[stashBefore(), yourHookThatNeedsStash, ...] }
Of course this workaround may have another implications, perhaps
@eddyystop https://github.com/eddyystop you can explain the reasoning
or the need of that query parameter to let people know of possible
side-effects.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/feathers-plus/feathers-hooks-common/issues/511?email_source=notifications&email_token=AAL3HH4EW3NM6LTS4BH3TBDPX6VDRA5CNFSM4G4XD442YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODWR75RA#issuecomment-497286852,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAL3HH5LIEVGKAATVRLPH6TPX6VDRANCNFSM4G4XD44Q
.

Any of the populate hooks will cause another service to read records. We don't want those other services to also try to stash records if they too use the stashRecird hook. The $disableStash flag is set by the root service to prevent this. It may look hacky but it's traditional Feathers.

Sure, I'm sorry if it sounded rude on my part, not my intention at all. :)
In that case perhaps the hook should check if something is already in context.params.before or the configured before param to avoid other stashes, instead of setting an incompatible param?
I'm not too familiar with the hooks common code, but the status now is that, at least in some ORM adapters, using this hooks throws the error mentioned in this issue's title. Do you have any suggestions on the issue itself?  Or should this be moved to the specific ORM adapter package?

I believe the simplest solution to this is to move the $disableStashBefore directive out of the query, and up one level into context.params.  This sidesteps the query sanitization process while allowing the rest of the functionality to work as expected.
context.params.query.$disableStashBefore

with
context.params.$disableStashBefore

I'm in agreement with @marshallswain. The proposed API looks like https://feathers-plus.github.io/v1/feathers-hooks-common/#paramsforserver ... and thus is not unusual. It also allows us to use stashBefore only on patch for instance. Which helps performance and readability.
As a temporary fix, we should update the doc and mention that you MUST have stashBefore on the get before hook, the other placements are optional.
Here's how my patch2Update application looks because of this issue:
import patch2Update from './hooks/patch2Update.js'
import { discardQuery } from 'feathers-hooks-common'

export default {
  before: {
    get: [ discardQuery('$disableStashBefore') ],
    patch: [ patch2Update() ]
  }
}

Here's how it COULD look with marshall's fix:
import patch2Update from './hooks/patch2Update.js'

export default {
  before: {
    patch: [ patch2Update() ]
  }
}


UPI payment button not working and also card payment not working

https://github.com/PhonePe/pg-sdk-react-native-sample/assets/90088705/cedc82a8-01af-4ffd-bac0-cc46a559463d

this github repo is only a demo app which shows how to integrate payment flow in rn.
for any issue related to the actual payment:

double verify your code
else react out to<EMAIL_ADDRESS>


Keyboard layout / variant for the login

On a fresh installation, I chose the French keyboard in us variant (qwerty). But at login, I have azerty variant. I deduce that the variant is not taken at the login.
I fixed the problem by putting the us keymap in /etc/vconsole.conf. I do not know if it is possible to take into account the variant during the installation.

Hi there! There have been multiple discussions about this in the past - please have a look into our SUPPORT.md. There are hints how to configure your keyboard too.