diff --git a/ansible/inventory/group_vars/all/source-repositories b/ansible/inventory/group_vars/all/source-repositories index cb7edcbc..557c3c80 100644 --- a/ansible/inventory/group_vars/all/source-repositories +++ b/ansible/inventory/group_vars/all/source-repositories @@ -32,6 +32,8 @@ community_files: * @stackhpc/batch kayobe: | * @stackhpc/kayobe + monitoring: | + * @stackhpc/monitoring openstack: | * @stackhpc/openstack platform: | @@ -123,6 +125,14 @@ source_repositories: - codeowners: content: "{{ community_files.codeowners.kayobe }}" dest: ".github/CODEOWNERS" + # Monitoring team + redfish_exporter: + repository_type: "single-branch" + workflows: [] + community_files: + - codeowners: + content: "{{ community_files.codeowners.monitoring }}" + dest: ".github/CODEOWNERS" # OpenStack team bifrost: synced_releases: diff --git a/terraform/github/branches.tf b/terraform/github/branches.tf index 3ad9afab..7f04b46f 100644 --- a/terraform/github/branches.tf +++ b/terraform/github/branches.tf @@ -369,6 +369,38 @@ resource "github_branch_protection" "kayobe_branch_protection_master" { } } +resource "github_branch_protection" "monitoring_branch_protection" { + for_each = toset(var.repositories["Monitoring"]) + repository_id = data.github_repository.repositories[each.key].node_id + + pattern = data.github_repository.repositories[each.key].default_branch + require_conversation_resolution = true + allows_deletions = false + allows_force_pushes = false + + required_pull_request_reviews { + dismiss_stale_reviews = true + require_code_owner_reviews = true + required_approving_review_count = 1 + } + + restrict_pushes { + blocks_creations = false + push_allowances = [ + resource.github_team.organisation_teams["Developers"].node_id + ] + } + + required_status_checks { + contexts = lookup(var.required_status_checks, each.key, { "default" : [] }).default + strict = false + } + + lifecycle { + prevent_destroy = true + } +} + resource "github_branch_protection" "openstack_branch_protection_py_3-6" { for_each = toset(var.repositories["OpenStack"]) repository_id = data.github_repository.repositories[each.key].node_id diff --git a/terraform/github/teams.tf b/terraform/github/teams.tf index a06b9ef7..86e73dd3 100644 --- a/terraform/github/teams.tf +++ b/terraform/github/teams.tf @@ -46,6 +46,13 @@ resource "github_team_repository" "kayobe_repositories" { permission = "push" } +resource "github_team_repository" "monitoring_repositories" { + for_each = toset(var.repositories["Monitoring"]) + team_id = resource.github_team.organisation_teams["Monitoring"].id + repository = each.value + permission = "push" +} + resource "github_team_repository" "openstack_repositories" { for_each = toset(var.repositories["OpenStack"]) team_id = resource.github_team.organisation_teams["OpenStack"].id diff --git a/terraform/github/terraform.tfvars.json b/terraform/github/terraform.tfvars.json index 096a4798..6ce6e0f7 100644 --- a/terraform/github/terraform.tfvars.json +++ b/terraform/github/terraform.tfvars.json @@ -56,6 +56,9 @@ "stackhpc-kayobe-config", "ansible-collection-kayobe-workflows" ], + "Monitoring": [ + "redfish_exporter" + ], "OpenStack": [ "barbican", "bifrost", @@ -237,6 +240,27 @@ ] } }, + "Monitoring": { + "description": "Team responsible for monitoring development", + "privacy": "closed", + "users": { + "maintainers": [ + "dougszumski", + "jovial", + "m-bull", + "MurrayGroves" + ], + "members": [ + "bbezak", + "cityofships", + "mnasiadka", + "motehue", + "priteau", + "technowhizz", + "stackhpc-ci" + ] + } + }, "OpenStack": { "description": "Team responsible for OpenStack development", "privacy": "closed", @@ -386,6 +410,11 @@ "Build OpenStack admin guide" ] }, + "redfish_exporter": { + "default": [ + "build" + ] + }, "stackhpc-kayobe-config": { "default": [ "Tox pep8 with Python 3.10", diff --git a/terraform/github/variables.tf b/terraform/github/variables.tf index 21244849..8db4ea7a 100644 --- a/terraform/github/variables.tf +++ b/terraform/github/variables.tf @@ -23,6 +23,7 @@ variable "repositories" { "Ansible" = [], "Batch" = [], "Kayobe" = [], + "Monitoring" = [], "OpenStack" = [], "Platform" = [], "ReleaseTrain" = [], @@ -73,6 +74,14 @@ variable "teams" { members = [], } }, + "Monitoring" = { + description = "Team responsible for monitoring development" + privacy = "closed" + users = { + maintainers = [], + members = [], + } + }, "OpenStack" = { description = "Team responsible for OpenStack development" privacy = "closed"