Skip to content
This repository was archived by the owner on Jan 13, 2025. It is now read-only.

update prod #29

Merged
merged 2 commits into from
Aug 8, 2024
Merged

update prod #29

merged 2 commits into from
Aug 8, 2024

Conversation

Lutonite
Copy link
Member

@Lutonite Lutonite commented Aug 8, 2024

Description

Linked Issues

Additional context

@Lutonite Lutonite requested a review from a team as a code owner August 8, 2024 14:39
Copy link

github-actions bot commented Aug 8, 2024

Terraform plan in applications

Error: HTTP Error 'Get "https://sso.presentium.ch/api/v3/flows/instances/?slug=default-provider-authorization-implicit-consent": dial tcp: lookup sso.presentium.ch on 168.63.129.16:53: no such host' without http response
Error: HTTP Error 'Get "https://sso.presentium.ch/api/v3/flows/instances/?slug=default-provider-authorization-implicit-consent": dial tcp: lookup sso.presentium.ch on 168.63.129.16:53: no such host' without http response

  with module.authentik.data.authentik_flow.default-implicit,
  on modules/authentik/_data.tf line 1, in data "authentik_flow" "default-implicit":
   1: data "authentik_flow" "default-implicit" {


Error: HTTP Error 'Get "https://sso.presentium.ch/api/v3/flows/instances/?slug=default-provider-authorization-explicit-consent": dial tcp: lookup sso.presentium.ch on 168.63.129.16:53: no such host' without http response

  with module.authentik.data.authentik_flow.default-explicit,
  on modules/authentik/_data.tf line 5, in data "authentik_flow" "default-explicit":
   5: data "authentik_flow" "default-explicit" {


Error: HTTP Error 'Get "https://sso.presentium.ch/api/v3/propertymappings/scope/?name=authentik+default+OAuth+Mapping%3A+OpenID+%27email%27&scope_name=email": dial tcp: lookup sso.presentium.ch on 168.63.129.16:53: no such host' without http response

  with module.authentik.data.authentik_scope_mapping.scope-email,
  on modules/authentik/_data.tf line 9, in data "authentik_scope_mapping" "scope-email":
   9: data "authentik_scope_mapping" "scope-email" {


Error: HTTP Error 'Get "https://sso.presentium.ch/api/v3/propertymappings/scope/?name=authentik+default+OAuth+Mapping%3A+OpenID+%27profile%27&scope_name=profile": dial tcp: lookup sso.presentium.ch on 168.63.129.16:53: no such host' without http response

  with module.authentik.data.authentik_scope_mapping.scope-profile,
  on modules/authentik/_data.tf line 14, in data "authentik_scope_mapping" "scope-profile":
  14: data "authentik_scope_mapping" "scope-profile" {


Error: HTTP Error 'Get "https://sso.presentium.ch/api/v3/propertymappings/scope/?name=authentik+default+OAuth+Mapping%3A+OpenID+%27openid%27&scope_name=roles": dial tcp: lookup sso.presentium.ch on 168.63.129.16:53: no such host' without http response

  with module.authentik.data.authentik_scope_mapping.scope-openid,
  on modules/authentik/_data.tf line 19, in data "authentik_scope_mapping" "scope-openid":
  19: data "authentik_scope_mapping" "scope-openid" {

❌ Failed to generate plan in Create terraform plan #35

Copy link

github-actions bot commented Aug 8, 2024

Terraform plan in infrastructure

Plan: 3 to add, 0 to change, 0 to destroy.
Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
+   create

Terraform will perform the following actions:

  # module.eks.module.alb_controller_irsa.aws_iam_policy.load_balancer_controller[0] will be created
+   resource "aws_iam_policy" "load_balancer_controller" {
+       arn              = (known after apply)
+       attachment_count = (known after apply)
+       description      = "Provides permissions for AWS Load Balancer Controller addon"
+       id               = (known after apply)
+       name             = (known after apply)
+       name_prefix      = "AmazonEKS_AWS_Load_Balancer_Controller-"
+       path             = "/"
+       policy           = jsonencode(
            {
+               Statement = [
+                   {
+                       Action    = "iam:CreateServiceLinkedRole"
+                       Condition = {
+                           StringEquals = {
+                               "iam:AWSServiceName" = "elasticloadbalancing.amazonaws.com"
                            }
                        }
+                       Effect    = "Allow"
+                       Resource  = "*"
                    },
+                   {
+                       Action   = [
+                           "elasticloadbalancing:DescribeTrustStores",
+                           "elasticloadbalancing:DescribeTargetHealth",
+                           "elasticloadbalancing:DescribeTargetGroups",
+                           "elasticloadbalancing:DescribeTargetGroupAttributes",
+                           "elasticloadbalancing:DescribeTags",
+                           "elasticloadbalancing:DescribeSSLPolicies",
+                           "elasticloadbalancing:DescribeRules",
+                           "elasticloadbalancing:DescribeLoadBalancers",
+                           "elasticloadbalancing:DescribeLoadBalancerAttributes",
+                           "elasticloadbalancing:DescribeListeners",
+                           "elasticloadbalancing:DescribeListenerCertificates",
+                           "ec2:GetCoipPoolUsage",
+                           "ec2:DescribeVpcs",
+                           "ec2:DescribeVpcPeeringConnections",
+                           "ec2:DescribeTags",
+                           "ec2:DescribeSubnets",
+                           "ec2:DescribeSecurityGroups",
+                           "ec2:DescribeNetworkInterfaces",
+                           "ec2:DescribeInternetGateways",
+                           "ec2:DescribeInstances",
+                           "ec2:DescribeCoipPools",
+                           "ec2:DescribeAvailabilityZones",
+                           "ec2:DescribeAddresses",
+                           "ec2:DescribeAccountAttributes",
                        ]
+                       Effect   = "Allow"
+                       Resource = "*"
                    },
+                   {
+                       Action   = [
+                           "wafv2:GetWebACLForResource",
+                           "wafv2:GetWebACL",
+                           "wafv2:DisassociateWebACL",
+                           "wafv2:AssociateWebACL",
+                           "waf-regional:GetWebACLForResource",
+                           "waf-regional:GetWebACL",
+                           "waf-regional:DisassociateWebACL",
+                           "waf-regional:AssociateWebACL",
+                           "shield:GetSubscriptionState",
+                           "shield:DescribeProtection",
+                           "shield:DeleteProtection",
+                           "shield:CreateProtection",
+                           "iam:ListServerCertificates",
+                           "iam:GetServerCertificate",
+                           "cognito-idp:DescribeUserPoolClient",
+                           "acm:ListCertificates",
+                           "acm:DescribeCertificate",
                        ]
+                       Effect   = "Allow"
+                       Resource = "*"
                    },
+                   {
+                       Action   = [
+                           "ec2:RevokeSecurityGroupIngress",
+                           "ec2:CreateSecurityGroup",
+                           "ec2:AuthorizeSecurityGroupIngress",
                        ]
+                       Effect   = "Allow"
+                       Resource = "*"
                    },
+                   {
+                       Action    = "ec2:CreateTags"
+                       Condition = {
+                           Null         = {
+                               "aws:RequestTag/elbv2.k8s.aws/cluster" = "false"
                            }
+                           StringEquals = {
+                               "ec2:CreateAction" = "CreateSecurityGroup"
                            }
                        }
+                       Effect    = "Allow"
+                       Resource  = "arn:aws:ec2:*:*:security-group/*"
                    },
+                   {
+                       Action    = [
+                           "ec2:DeleteTags",
+                           "ec2:CreateTags",
                        ]
+                       Condition = {
+                           Null = {
+                               "aws:RequestTag/elbv2.k8s.aws/cluster"  = "true"
+                               "aws:ResourceTag/elbv2.k8s.aws/cluster" = "false"
                            }
                        }
+                       Effect    = "Allow"
+                       Resource  = "arn:aws:ec2:*:*:security-group/*"
                    },
+                   {
+                       Action    = [
+                           "ec2:RevokeSecurityGroupIngress",
+                           "ec2:DeleteSecurityGroup",
+                           "ec2:AuthorizeSecurityGroupIngress",
                        ]
+                       Condition = {
+                           Null = {
+                               "aws:ResourceTag/elbv2.k8s.aws/cluster" = "false"
                            }
                        }
+                       Effect    = "Allow"
+                       Resource  = "*"
                    },
+                   {
+                       Action    = [
+                           "elasticloadbalancing:CreateTargetGroup",
+                           "elasticloadbalancing:CreateLoadBalancer",
+                           "elasticloadbalancing:AddTags",
                        ]
+                       Condition = {
+                           Null = {
+                               "aws:RequestTag/elbv2.k8s.aws/cluster" = "false"
                            }
                        }
+                       Effect    = "Allow"
+                       Resource  = "*"
                    },
+                   {
+                       Action   = [
+                           "elasticloadbalancing:DeleteRule",
+                           "elasticloadbalancing:DeleteListener",
+                           "elasticloadbalancing:CreateRule",
+                           "elasticloadbalancing:CreateListener",
+                           "elasticloadbalancing:AddTags",
                        ]
+                       Effect   = "Allow"
+                       Resource = "*"
                    },
+                   {
+                       Action    = [
+                           "elasticloadbalancing:RemoveTags",
+                           "elasticloadbalancing:AddTags",
                        ]
+                       Condition = {
+                           Null = {
+                               "aws:RequestTag/elbv2.k8s.aws/cluster"  = "true"
+                               "aws:ResourceTag/elbv2.k8s.aws/cluster" = "false"
                            }
                        }
+                       Effect    = "Allow"
+                       Resource  = [
+                           "arn:aws:elasticloadbalancing:*:*:targetgroup/*/*",
+                           "arn:aws:elasticloadbalancing:*:*:loadbalancer/net/*/*",
+                           "arn:aws:elasticloadbalancing:*:*:loadbalancer/app/*/*",
                        ]
                    },
+                   {
+                       Action   = [
+                           "elasticloadbalancing:RemoveTags",
+                           "elasticloadbalancing:AddTags",
                        ]
+                       Effect   = "Allow"
+                       Resource = [
+                           "arn:aws:elasticloadbalancing:*:*:listener/net/*/*/*",
+                           "arn:aws:elasticloadbalancing:*:*:listener/app/*/*/*",
+                           "arn:aws:elasticloadbalancing:*:*:listener-rule/net/*/*/*",
+                           "arn:aws:elasticloadbalancing:*:*:listener-rule/app/*/*/*",
                        ]
                    },
+                   {
+                       Action    = [
+                           "elasticloadbalancing:SetSubnets",
+                           "elasticloadbalancing:SetSecurityGroups",
+                           "elasticloadbalancing:SetIpAddressType",
+                           "elasticloadbalancing:ModifyTargetGroupAttributes",
+                           "elasticloadbalancing:ModifyTargetGroup",
+                           "elasticloadbalancing:ModifyLoadBalancerAttributes",
+                           "elasticloadbalancing:DeleteTargetGroup",
+                           "elasticloadbalancing:DeleteLoadBalancer",
                        ]
+                       Condition = {
+                           Null = {
+                               "aws:ResourceTag/elbv2.k8s.aws/cluster" = "false"
                            }
                        }
+                       Effect    = "Allow"
+                       Resource  = "*"
                    },
+                   {
+                       Action    = "elasticloadbalancing:AddTags"
+                       Condition = {
+                           Null         = {
+                               "aws:RequestTag/elbv2.k8s.aws/cluster" = "false"
                            }
+                           StringEquals = {
+                               "elasticloadbalancing:CreateAction" = [
+                                   "CreateTargetGroup",
+                                   "CreateLoadBalancer",
                                ]
                            }
                        }
+                       Effect    = "Allow"
+                       Resource  = [
+                           "arn:aws:elasticloadbalancing:*:*:targetgroup/*/*",
+                           "arn:aws:elasticloadbalancing:*:*:loadbalancer/net/*/*",
+                           "arn:aws:elasticloadbalancing:*:*:loadbalancer/app/*/*",
                        ]
                    },
+                   {
+                       Action   = [
+                           "elasticloadbalancing:RegisterTargets",
+                           "elasticloadbalancing:DeregisterTargets",
                        ]
+                       Effect   = "Allow"
+                       Resource = "arn:aws:elasticloadbalancing:*:*:targetgroup/*/*"
                    },
+                   {
+                       Action   = [
+                           "elasticloadbalancing:SetWebAcl",
+                           "elasticloadbalancing:RemoveListenerCertificates",
+                           "elasticloadbalancing:ModifyRule",
+                           "elasticloadbalancing:ModifyListener",
+                           "elasticloadbalancing:AddListenerCertificates",
                        ]
+                       Effect   = "Allow"
+                       Resource = "*"
                    },
                ]
+               Version   = "2012-10-17"
            }
        )
+       policy_id        = (known after apply)
+       tags_all         = {
+           "Terraform" = "true"
        }
    }

  # module.eks.module.alb_controller_irsa.aws_iam_role.this[0] will be created
+   resource "aws_iam_role" "this" {
+       arn                   = (known after apply)
+       assume_role_policy    = jsonencode(
            {
+               Statement = [
+                   {
+                       Action    = "sts:AssumeRoleWithWebIdentity"
+                       Condition = {
+                           StringEquals = {
+                               "oidc.eks.eu-west-1.amazonaws.com/id/7D237BCA403531BC4EAC898802E8C3E6:aud" = "*****************"
+                               "oidc.eks.eu-west-1.amazonaws.com/id/7D237BCA403531BC4EAC898802E8C3E6:sub" = "**************************************************************"
                            }
                        }
+                       Effect    = "Allow"
+                       Principal = {
+                           Federated = "arn:aws:iam::123247571664:oidc-provider/oidc.eks.eu-west-1.amazonaws.com/id/7D237BCA403531BC4EAC898802E8C3E6"
                        }
                    },
                ]
+               Version   = "2012-10-17"
            }
        )
+       create_date           = (known after apply)
+       force_detach_policies = true
+       id                    = (known after apply)
+       managed_policy_arns   = (known after apply)
+       max_session_duration  = 3600
+       name                  = "PRES-ALB-CONTROLLER-PRESENTIUM"
+       name_prefix           = (known after apply)
+       path                  = "/"
+       tags_all              = {
+           "Terraform" = "true"
        }
+       unique_id             = (known after apply)

+       inline_policy (known after apply)
    }

  # module.eks.module.alb_controller_irsa.aws_iam_role_policy_attachment.load_balancer_controller[0] will be created
+   resource "aws_iam_role_policy_attachment" "load_balancer_controller" {
+       id         = (known after apply)
+       policy_arn = (known after apply)
+       role       = "PRES-ALB-CONTROLLER-PRESENTIUM"
    }

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

✅ Plan applied in Apply terraform plan #18

Outputs
eks_db_irsa_arns      = {
    api-prod    = "arn:aws:iam::123247571664:role/PRES-DB-API-PROD-PRESENTIUM"
    api-staging = "arn:aws:iam::123247571664:role/PRES-DB-API-STAGING-PRESENTIUM"
    authentik   = "arn:aws:iam::123247571664:role/PRES-DB-AUTHENTIK-PRESENTIUM"
}
eks_sops_kms_role_arn = "arn:aws:iam::123247571664:role/PRES-SOPS-KMS-PRESENTIUM"
iam_users             = {
    Christophe = "wcFMA9jYz27SnaN8AQ//ZT2pMcOraPFseG75f0xu6kVY6KLG/6fPzIBo49QLyZfbaA4RUQmzJ+UoUiptqfpTkH9AS6PPqAJuGFL20Zfa+3L0gKG7IJKkX81F6rAbtlA+WA5UW8BcQE/O5ANlsHv1H4wq8CnUS/q6NNjAqnEedDrcPWl1m6B197ajVHLl5ffqltVG4txXnCSzA3Htb44EW26eHp+PJgoicXGGmm/FQ/U6j9ScJlBnhM8mXVdwUpu43+ENo6gn6LUcC0Kd7WkSFBmMBjMdQVLDSUFzf0Ry6lwJvLIdab+N9ipcwJTgVQL4rrMZRXs7lhtg+aLw0TX7gVWNX0qwky/wc1i4vu/BP9giB4qJUEBsmdKyjlLiMk219zhTFyS5iGHzgx4qI8mFl+/qkIAAkO2nRIPL5E1alMeAjW0I9415yN8hq2qHYGnvJqVQHU7ZkgUkiHy4SVByla8vF+quZC88nZsFviP0DLTX174zUnWuyi3E//tjmiY01PTBzf7gHw7tGB1NrkbPnpBKvxM/UhnyLo4jG6iuiRA9EOApF1mn0pn9mDeCLHZQSyaGypZlpL7SsLvVL+0D+AKcXLOfoAxc/bqqp7U+yvFot4etrVQlfw8Rdic2FMsqwJcAwq64RZApvv49D34P27GowKfVNVv8qptxLAuukSfm8RgWLEVE4GOIz1Ec0H3SRQGk3U1SMudNCND5FqQwhoBWMWRH8sJnPnaI8x3HgPG7P8eJFAluwrER/CgylPqNDTWotJOdbYnTZ71JYTw86QKSN9ooAg=="
    Lea        = "wcFMA9jYz27SnaN8AQ//bU+rwTu+l2L+3NnqGmF2dPHNjJA793P/PNFlDX7GZggzWJqkhYW4cfqrSm7o1J1+T2XgkfWGVV+9BPAMmK+4rg5lVG6I03CXS+HLAJG2FkdYCdQZoJ7ZiN00F6TblWbBeX1pwVJ2UHMF9FdwCwsTvLDmHfpZnpl5nth6vF9rb1j9AE0X3RUjI9hVn6GAxIhINKUTcDQtUV4eE+rc3HnO6jk5UO1S+xQbkd3LNurePG+KaWeQXmRaaDpTajXrNXfp4qGbnsstBwZLzCLrtp6xt7IoMmr4HIhSlerXDQ3ktTH1SYLqecbNbvveqj0HHcjNoF7KtBSWs9iTZUsQ0gWCrka31Pm2GXLS96LwlJwGCVfpnDyAMy7uBPjQriywuXT8+zmu1EbzcxbhO8B2iohyRXLRjW0oZLtIX/8HNWNXGoK1IkhmAnnOQ9oN6YcgifkciD+n/eWXIEvOlPiiJl6ZmQ4tYJd4EtoSTZdlCk8olCIugW06bivKLoKWC0qabnLc4bB+imyxbGixqS9P0LrO/chQW7Q7dg4U5obN5vQ83xzP4hU3jk1J+Za9BW0uRTmUdEjZgIFh8dg7HjPNyh80+tVQEHgqHJwqXKCfoD+hQ9YKlgJcjng9PhxPlQ5xwHe03U1uRo7mCFceR3QEB5fYp0ICaUBpwu5tEFguw0lbI6HSRQGkDwHxDlY8fSoNl4oJQJK0bwvEZU+XF5gKdjpOi57BtPlBslGULyj42IXyTJ5Plp4/QcZtSeent6YE+BfcBSZxf793pQ=="
    Loic       = "wcFMA92wPHuZJ5FBAQ//Q770nuaNLqmnh2AweJDvGUjlvq8oQl8rNUmR9GMTtSNpygHinsozhkTQJt2kco1HopTRtL/Y6euHTm34IvDCz+Xru0X0HIwYluU6+bHmHtmoiGWBqSZeKl2Aw/GTQ3NQuYxCg80yrsdKuD9sG9MY1Zvw5LW+bmzTD2hEdXru3UdfHJRY8bzOddbS3One/yqzcQNNF8/Rhba78EneygxrtMgiNN02oKM2z2sxUehJE+z3/1sJqr2iRg2mSZJPb4KG7Vv2H+3/Nk6FD9NqGen0OIbBDxUb5VLm7GtBGeMe3Vc7zVHFiYAItNOV5LG61nWptVLfha4y4dJDcEznrAVOlzrZd7jUmuj8j/TVNWtCA8x6MwcAOlEdBHbx0lAZTNIPWy3RHQt5gYwbGjhngTY5m6lshi/p30v+qtfNFIAbOEdBg5SvqssmPIiKJqqil/A/lPbaTx25p6yCrfsv4WBjQtxbcKO2Q/Lj2Gm/O/jaWLxBnuNJh3IudbkpcPQyqpMCgRic6QhG81gTXDqfo759UAOiKW9NdUmnBWc/J8U29bJqOUZnR40ib4lJBh81Q9hP3A08l1ZwJfdANHPqez3MYLmddIY42s5tfShpbWwQwxtEgPb0zYYomSZ0pOZzH1iphnIG+VT8eDf1WLkg5GkyLmCgQ2iCvvNmCnzrq4g2y8bSRQHFq2kaL7TWy28VlRK5Fugbw2aR1yRqZ+s+2MzOVlObxwzJbp826Deou+sh9keglgp943f+MzKN9Cw8g4UTY058C3KhhQ=="
    Massimo    = "wcFMA9jYz27SnaN8AQ/8DD7S+UrqA/q1GjWnjineRn71eNBZOcWXvGvesSEh8iAEkG7grVkvLYdhNAl87G8UNBKSYzvnkqs4pKxfFE6Su8Vqf+FIeU4D6BuKaSFAfU4H210v0sc7zAWKecby/ZuM5GXKyeNezVz85MtUlvyhjpsq0TnHm/Mlw0iwx9IiM1tGM1mtC9fLzPiXVvIw0Jd3Wqv3wE76eYABkN81ptxZctBnrNi/D1htbwSq2jFvWjewFBtlADerO4jOTtbOwjVOThUf6dTc7ZoP1djRx+7ggOvxiWSGLwND0DMChcM6ustk8vjrTaZA3tWkLWSkJzCFQWEJQ4bbQfZQX5Mj9Fx6yRyI5R/Q/KhB2PSbZL8IamGWwN1tbgvfrJbIjamOGfW+Z+riTC54MZTPI2ycLY/nyVBKvGKtznowwizao1gjOnLu8KcDI+VukypA1tmQtnugXxaJ7GfaVN9A867caZP3WAJ0/Tor7yLAjrLD9USADN7NQmTWr5jcxhjkrsrLYGO34mh912RrtN1WsqtoCQ373tk7fW+Vg++myHp7zqSL0LfeY90iMHQxlTJRbnrkv0SKdbKvBmR2GReS7ngafWbjULRNbs8zUgui5jCMZ1Y/U6QEQagR99PKOYvL7+Gcc7Ki6cBD8Wrq+1aEtahvC02uWtJXKcy3QpJVEW/abYhTVW3SRQHCv7c5lzpVtM47lUv+R+Xg0PxwMTZ4iI/kutoDvc526jkeV3kpdBNYsRfkThCqfzZ20sqXj7bSATLKrpS/xQINvS0ZIQ=="
    Sacha      = "wcFMA9jYz27SnaN8AQ/9EfFcDhgMWgN76uCIYx2qxMOgAveb24I4Bq05Ipe0YZzpuXF8HH25a3E/w0wzTE8r8ev4Z2JnarRAesnq9XooitCWcC9ncxYPtBbcWlYDHf8TPTTOXyIRUFIw4y/5us7Jkrvu3TWB1vu0YrfB0H1XtOTYd7NN6GkImLDyPg8uIWqXseYHxYdiV+s+8mZlhJ3Z3tucNBoWwOEMQ/Yzwk2Nrvh1lYdCSCnMY4/c3Vv2QsU/qkLzX4L5w3ZEm/hmWIw8MI4/XJUyPXFk/Sl1VKXYUNobA6/LBeNWQCW+6e6sTYo1yeFG5A/qE0LpchmGtq7K/66t8APY2vJ7UZ1cpzd8KLPChicYaJIYC+Riaj6WdUGNOU+9GaZ8XZIbGhM7iLbJYutrOLStD/KkMDa6PIVkWF/7ohXmiZsDSuU1a1GO8nSTRhFwdaxiKLTXG4NiFEDo/sGE+DoabzkOVdx0zdm4UCQQ3jwnO9F2LJHTf6fQnN4WtLCaP2PN0DZo5dGtS7MOVl+O+gtF6dx1/DfJ95B96dvBfs2COJjAFZY8guXu7cIcz74JmM/CYkw8PFKB9guK2i4H4qSMk3dKYcKc6EId6Lduy1HEPC9Lje/qRaKdESBdi5xZ1Wo3GYGeHgQPfldr7XddBb973InbVCk6bKeXmwmDAWZtJx7K+hnrsA5FLfPSRQGF232XngZDXyd6PRk3bJdCib5DiJHMxYUPM0ZDAFlLr6aa7pOJiOt9nnHy+1cRXthml+la6b9UpZ6JjFR69HMR07NsVQ=="
}

@Lutonite Lutonite merged commit 387e649 into production Aug 8, 2024
6 of 7 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant