entitlements-github-plugin 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a4cbb307760618dcde3accef28dd587ce5a37cb8049ce7c0819634be60725cf1
4
- data.tar.gz: 8aaad78f84fa9011cad4788e57f777ae820cd3f4a5ac6efc828dbb5d4b7e9b58
3
+ metadata.gz: 3c6ee79046e0d905bacf0c96d8dde4065be86a0e0c38c03b0056c90e9be33d16
4
+ data.tar.gz: 6ea93769603533deb1fff5e5dc91f7664483c1c2021d1a3836679cbfab11512d
5
5
  SHA512:
6
- metadata.gz: e277789bd072b042003e42970eb5c91d12520ea0332759f050c7c3774bbee8bbd54d68c1f7c552594f8e8aedd16e5d37dabd9d2be7597f581de637b0f205d1c1
7
- data.tar.gz: d0d2ee3e7f4f6ba4ff909b880b5de0cf9f16d6940a4e90b81350fc80cc6bacb38059765cbe780bc85aad29fa3aca1d6d78aae5da7264aed3c7f9d89dd3074b37
6
+ metadata.gz: b9d1ea8afcd7139f51d85eee6286408fe98dbcd62913f79f944e9cb131c0b725774523ec08de86ad231f13e87c5f0371dfddcc72446c9648ac8907d97bf0ea29
7
+ data.tar.gz: 6b31074867e389095bc34c33bcfa94dc954f2e2bdcaef8230417f1dd64bec66a0acec7fc896d0a7464b2025cba1b2f8e8e6faab3a81f12be5e1b1feff7924a15
@@ -198,6 +198,23 @@ module Entitlements
198
198
  Entitlements.logger.info "CHANGE github_parent_team from #{existing_parent_team} to #{changed_parent_team} for #{existing_group.dn} in #{github.org}"
199
199
  end
200
200
  end
201
+
202
+ existing_maintainers = existing_group.metadata_fetch_if_exists("team_maintainers")
203
+ changed_maintainers = group.metadata_fetch_if_exists("team_maintainers")
204
+ if existing_maintainers != changed_maintainers
205
+ base_diff[:metadata] ||= {}
206
+ if existing_maintainers.nil? && !changed_maintainers.nil?
207
+ base_diff[:metadata][:team_maintainers] = "add"
208
+ Entitlements.logger.info "ADD github_team_maintainers #{changed_maintainers} to #{existing_group.dn} in #{github.org}"
209
+ elsif !existing_maintainers.nil? && changed_maintainers.nil?
210
+ base_diff[:metadata][:team_maintainers] = "remove"
211
+ Entitlements.logger.info "REMOVE (NOOP) github_team_maintainers #{existing_maintainers} from #{existing_group.dn} in #{github.org}"
212
+ else
213
+ base_diff[:metadata][:team_maintainers] = "change"
214
+ Entitlements.logger.info "CHANGE github_team_maintainers from #{existing_maintainers} to #{changed_maintainers} for #{existing_group.dn} in #{github.org}"
215
+ end
216
+ end
217
+
201
218
  base_diff
202
219
  end
203
220
 
@@ -104,6 +104,10 @@ module Entitlements
104
104
  end
105
105
  end
106
106
 
107
+ maintainers = teamdata[:members].select { |u| teamdata[:roles][u] == "maintainer" }
108
+ team_metadata = team_metadata || {}
109
+ team_metadata = team_metadata.merge({"team_maintainers" => maintainers.any? ? maintainers.join(",") : nil})
110
+
107
111
  team = Entitlements::Backend::GitHubTeam::Models::Team.new(
108
112
  team_id: teamdata[:team_id],
109
113
  team_name: team_identifier,
@@ -326,11 +330,12 @@ module Entitlements
326
330
  # team_slug - Identifier of the team to retrieve.
327
331
  #
328
332
  # Returns a data structure with team data.
329
- Contract String => { members: C::ArrayOf[String], team_id: Integer, parent_team_name: C::Or[String, nil] }
333
+ Contract String => { members: C::ArrayOf[String], team_id: Integer, parent_team_name: C::Or[String, nil], roles: C::HashOf[String => String] }
330
334
  def graphql_team_data(team_slug)
331
335
  cursor = nil
332
336
  team_id = nil
333
337
  result = []
338
+ roles = {}
334
339
  sanity_counter = 0
335
340
 
336
341
  while sanity_counter < 100
@@ -348,6 +353,7 @@ module Entitlements
348
353
  node {
349
354
  login
350
355
  }
356
+ role
351
357
  cursor
352
358
  }
353
359
  }
@@ -375,12 +381,17 @@ module Entitlements
375
381
  buffer = edges.map { |e| e.fetch("node").fetch("login").downcase }
376
382
  result.concat buffer
377
383
 
384
+ edges.each do |e|
385
+ role = e.fetch("role").downcase
386
+ roles[e.fetch("node").fetch("login").downcase] = role
387
+ end
388
+
378
389
  cursor = edges.last.fetch("cursor")
379
390
  next if cursor && buffer.size == max_graphql_results
380
391
  break
381
392
  end
382
393
 
383
- { members: result, team_id:, parent_team_name: }
394
+ { members: result, team_id:, parent_team_name:, roles: }
384
395
  end
385
396
 
386
397
  # Ensure that the given team ID actually matches up to the team slug on GitHub. This is in place
data/lib/version.rb CHANGED
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Entitlements
4
4
  module Version
5
- VERSION = "0.4.1"
5
+ VERSION = "0.4.2"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: entitlements-github-plugin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitHub, Inc. Security Ops
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-29 00:00:00.000000000 Z
11
+ date: 2023-09-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: contracts