Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 1.13.0 · 2026-07-23 22:50 UTC

openstack-archive / cookbook-openstack-identity

RETIRED, Chef Cookbook - OpenStack Identity. Mirror of code maintained at opendev.org.

Keine Lizenz erkannt★ 44 Sterne⑂ 36 Forksseit Mai 2013archiviertAuf GitHub ansehen ↗

openstack-archive/cookbook-openstack-identity erreicht einen Gesundheitsindex von 12 von 100 und liegt damit im Bereich Kritisch. Am stärksten schneidet es bei Sustainability & Governance (50/100) ab, am schwächsten bei Vitality (13/100). Das Repository ist archiviert, weitere Wartung ist daher nicht zu erwarten.

12
gesamt / 100
Kritisch

Software-Gesundheitsindex

Metriken werden auf einer Skala von 1–100 in gewichtete Kategorien gruppiert. Der Gesamtwert beginnt als ihr Mittel; sobald öffentliche Evidenz die Richtlinie für Hochrisikojurisdiktionen auslöst, wird die Bewertung angepasst und erhält die Obergrenze 49 (Gefährdet). AI Readiness liegt außerhalb.

12
Exzellent85-100Vorbildlich; erfüllt im Wesentlichen alle geprüften Kriterien
Gut70-84Gesund; geringfügige Lücken
Mittel50-69Akzeptabel mit deutlichen Lücken; Überprüfung empfohlen
Gefährdet30-49Erhebliche Schwächen; eine Übernahme erfordert Vorsicht
Kritisch1-29Schwerwiegende Probleme (aufgegeben, nur ein Maintainer, keine Hygiene)
VitalitätCommunity &VerbreitungNachhaltigkeit &GovernanceEngineering-QualitätSicherheitAI Readiness

Bewertungsprofil

Jede Achse ist eine Kategorie. Die Form zählt mehr als der Durchschnitt — ein gesundes Projekt füllt die gesamte Fläche, während ein Profil aus Spitzen und Kratern bedeutet, dass Stärke in einer Dimension Risiken in einer anderen verdeckt.

Abandonment Policy applies a 40% multiplier to weighted overall health and gives it a ceiling of 29.

Eigentümerschaft

23 Follower1.273 öffentliche Reposseit Apr. 2020

Dieses Repository wird von einer Organisation getragen — geteilte, rechenschaftspflichtige Trägerschaft, die jeden einzelnen Maintainer überdauern kann.

Metriken nach Kategorie

Vitalität

Lebt das Projekt — wird Code geschrieben und werden Releases ausgeliefert?

13Kritisch · 22 % des Gesamtindex
Wie die Bewertung erfolgt
0/36Push-Aktualität — letzter Push vor 885 Tagen
0/36Commit-Rhythmus — 0/52 Wochen mit Commits
0/18Commit-Volumen — 0 Commits im letzten Jahr
0/10OpenSSF Scorecard: Maintained — project is archived
Verwendete Eingangsdaten
commits_last_year0
human_commit_share1
days_since_last_push885
active_weeks_last_year0

Release-Disziplin

32Gefährdet
Wie die Bewertung erfolgt
16.2/27Liefert Releases aus — 5 Versions-Tags (keine GitHub-Releases)
0/36Release-Aktualität — letztes Release vor 1.589 Tagen
12.6/27Release-Rhythmus — ein Release etwa alle 206,9 Tage
0/10OpenSSF Scorecard: Signed-Releases — keine Daten
Verwendete Eingangsdaten
releases_count5
latest_release_tagv20.0.0
releases_from_tagsja
days_since_latest_release1.589
mean_days_between_releases206,9
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Signed-Releases. Die verbleibenden Gewichte wurden renormalisiert.

Community & Verbreitung

Hat das Projekt Nutzer, Downloads, Aufmerksamkeit und ein einladendes Umfeld für Beitragende?

32Gefährdet · 18 % des Gesamtindex
Wie die Bewertung erfolgt
26.5/60Stars — 44 Stars
12.9/25Forks — 36 Forks
0/15Watcher — 0 Watcher
Verwendete Eingangsdaten
forks36
stars44
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
0/22.5Lizenz — keine Lizenzdatei erkannt
0/18CONTRIBUTING-Leitfaden
0/13.5Verhaltenskodex
0/7.2Issue-Vorlage
0/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licensenein
has_contributingnein
has_issue_templatenein
has_code_of_conductnein
has_pull_request_templatenein

Nachhaltigkeit & Governance

Überdauert das Projekt die Menschen, die es tragen — Bus-Faktor, Reaktionsfähigkeit, Trägerschaft und Paketpflege?

50Mittel · 24 % des Gesamtindex
Wie die Bewertung erfolgt
36/54Bus-Faktor — 3 Beitragende decken die Hälfte aller Commits ab
18/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 20 % der Commits
13.5/13.5Breite der Beitragenden — 44 Beitragende
10/10OpenSSF Scorecard: Contributors — project has 12 contributing companies or organizations
Verwendete Eingangsdaten
bus_factor3
contributors_sampled44
top_contributor_share0,198
Wie die Bewertung erfolgt
0/46.8Issue-Lösungsquote — keine Issues oder keine Daten
0/38.3PR-Annahme — 0/4 entschiedene PRs gemergt
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Verwendete Eingangsdaten
merged_prs0
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs4
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Issue-Lösungsquote. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
30/30Organisatorische Trägerschaft — im Besitz einer Organisation
0/20Verifizierte Domain
9.9/25Reichweite des Inhabers — 23 Follower von openstack-archive
25/25Kontohistorie — 1.273 öffentliche Repos, Kontoalter ca. 6 Jahre
Verwendete Eingangsdaten
followers23
owner_typeOrganization
is_verified
owner_loginopenstack-archive
public_repos1.273
account_age_days2.303

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

23Kritisch · 20 % des Gesamtindex
Wie die Bewertung erfolgt
0/24CI-Workflows
0/24Tests vorhanden
0/16Linter-Konfiguration
0/9.6Pre-Commit-Hooks
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — keine Daten
Verwendete Eingangsdaten
has_cinein
has_testsnein
has_editorconfignein
has_linter_confignein
has_precommit_confignein
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: CI-Tests. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
30/30README
0/25Dokumentationsverzeichnis
15/15Dokumentations-/Homepage-Site — https://opendev.org/openstack/cookbook-openstack-identity
10/10Repository-Beschreibung
0/10Topics
0/10Wiki
Verwendete Eingangsdaten
topics
has_wikinein
homepagehttps://opendev.org/openstack/cookbook-openstack-identity
has_readmeja
has_docs_dirnein
has_descriptionja

Sicherheit

Sind die sichtbaren Sicherheits- und Lieferkettenpraktiken belastbar, ohne ungeklärte Exposition gegenüber Hochrisikojurisdiktionen?

26Kritisch · 16 % des Gesamtindex

Sicherheitslage

26Kritisch
Wie die Bewertung erfolgt
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — keine Daten
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 12 contributing companies or organizations
0/10Dangerous-Workflow — keine Daten
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
0/2.5Lizenz — license file not detected
0/7.5Maintained — project is archived
0/5Packaging — keine Daten
0/5Pinned-Dependencies — keine Daten
0/5SAST — no SAST tool detected
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — keine Daten
0/7.5Token-Permissions — keine Daten
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated12
scorecard_versionv5.5.0
checks_inconclusive6
scorecard_aggregate2,6
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): ci_tests, dangerous_workflow, packaging, pinned_dependencies, signed_releases, token_permissions. Die verbleibenden Gewichte wurden renormalisiert.

AI Readiness

Wie gut ist das Repository dafür ausgestattet, mit KI-Coding-Agenten entwickelt und gepflegt zu werden? Ein unabhängiges, experimentelles Badge — Gewicht 0,0, es wird eigenständig ausgewiesen und verändert den Gesamt-Gesundheitswert nicht.

16Kritisch · 0 % des Gesamtindex
Wie die Bewertung erfolgt
0/45Agentenanweisungen — keine CLAUDE.md / AGENTS.md / Editor-Regeln
0/15Maschinenlesbare Doku (llms.txt)
37.3/40Lesbare Commit-Historie — 70 von 100 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share0,7
agent_instruction_files
agent_instruction_max_bytes
Wie die Bewertung erfolgt
0/18Bootstrap mit einem Befehl
0/22Automatisierte Tests
0/11Lint-/Format-Konfiguration
0/11Statische Typprüfung
0/10Reproduzierbare Umgebung
0/10Belegte Agentenpraxis — keine von Agenten verfassten Commits unter den letzten 100
0/8Automatisierte Wartung — keine automatisierten Abhängigkeits-Updates beobachtet
0/10OpenSSF Scorecard: Pinned-Dependencies — keine Daten
Verwendete Eingangsdaten
has_nixnein
has_testsnein
lockfiles
has_dockerfilenein
typed_languagenein
bootstrap_files
has_devcontainernein
has_linter_confignein
typecheck_configs
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Pinned-Dependencies. Die verbleibenden Gewichte wurden renormalisiert.

Eckdaten

44GitHub-Sterne
44Mitwirkende
0Commits, letzte 12 Monate
885Tage seit letztem Push
5Releases
3Bus-Faktor
0offene Issues
Paket-Ökosysteme

Warnungen zur Datenerhebung

  • Language breakdown unavailable
  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Weitere Details

Stern- und Fork-Verlauf 0 ★ / 36 ⇿
0Sterne
36Forks
3Releases

Wann jeder Stern und Fork hinzugefügt wurde, von GitHub erfasst und nach Tagen gruppiert. Das kumulierte Wachstum steht direkt über den täglichen Zugängen, aus denen es besteht, sodass beide gegeneinander lesbar sind: stetiger organischer Zuwachs sieht ganz anders aus als ein abrupter, kurzlebiger Ausschlag. Wo dieser Unterschied messbar ist, wird er als Wachstumsauthentizität ausgewiesen.

01325383532013-052016-122020-07
Major 2Minor 1Patch 0

Jeder Punkt umfasst 7 Tage.

OpenSSF Scorecard 2.6 / 10
2.6Gesamtwert

Unabhängige, werkzeugneutrale Sicherheitsbewertung durch das quelloffene OpenSSF Scorecard. Jede Prüfung honoriert eine Sicherheits-Praxis, nicht das Werkzeug eines bestimmten Anbieters. Prüfungen, die Scorecard nicht ermitteln konnte, sind mit k. A. markiert und vom Sicherheitswert ausgeschlossen (nie als null gezählt).Scorecard v5.5.0 · 2026-07-23 22:49 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
k. A.CI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
10Contributorsproject has 12 contributing companies or organizations
k. A.Dangerous-Workflowno workflows found
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
0Licenselicense file not detected
0Maintainedproject is archived
k. A.Packagingpackaging workflow not detected
k. A.Pinned-Dependenciesno dependencies found
0SASTno SAST tool detected
0Security-Policysecurity policy file not detected
k. A.Signed-Releasesno releases found
k. A.Token-PermissionsNo tokens found
10Vulnerabilities0 existing vulnerabilities detected
Alle Abhängigkeiten nicht erhoben

Der aufgelöste Abhängigkeitssatz konnte für diesen Bericht nicht erhoben werden: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

JSON-Rohbericht maschinenlesbar
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 891,
      "has_wiki": false,
      "homepage": "https://opendev.org/openstack/cookbook-openstack-identity",
      "languages": {},
      "pushed_at": "2024-02-19T18:30:19Z",
      "created_at": "2013-05-08T20:04:52Z",
      "owner_type": "Organization",
      "updated_at": "2024-03-05T03:03:59Z",
      "description": "RETIRED, Chef Cookbook - OpenStack Identity. Mirror of code maintained at opendev.org.",
      "is_archived": true,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "master",
      "license_spdx_raw": null,
      "primary_language": null,
      "significant_languages": []
    },
    "owner": {
      "blog": "https://opendev.org/openstack",
      "name": "Archived previously-OpenStack repositories",
      "type": "Organization",
      "login": "openstack-archive",
      "company": null,
      "location": null,
      "followers": 23,
      "avatar_url": "https://avatars.githubusercontent.com/u/63051644?v=4",
      "created_at": "2020-04-02T12:04:30Z",
      "is_verified": null,
      "public_repos": 1273,
      "account_age_days": 2303
    },
    "license": {
      "state": "absent",
      "spdx_id": null,
      "raw_spdx": null,
      "file_present": false,
      "scorecard_found": false,
      "profile_has_license": false
    },
    "activity": {
      "releases": [
        {
          "tag": "v20.0.0",
          "kind": "major",
          "published_at": "2022-03-17T22:49:15Z"
        },
        {
          "tag": "v19.1.1",
          "kind": "patch",
          "published_at": "2021-07-19T21:44:14Z"
        },
        {
          "tag": "v19.1.0",
          "kind": "minor",
          "published_at": "2020-05-20T23:45:22Z"
        },
        {
          "tag": "v19.0.0",
          "kind": "major",
          "published_at": "2020-05-20T23:45:22Z"
        },
        {
          "tag": "v18.0.0",
          "kind": "major",
          "published_at": "2019-12-11T12:16:49Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "44d13c8c6421d123a51e70562a5e43f4018b66de",
          "body": "OpenStack-chef project is retiring\n- https://review.opendev.org/c/openstack/governance/+/905279\n\nthis commit remove the content of this project repo\n\nDepends-On: https://review.opendev.org/c/openstack/project-config/+/909134\nChange-Id: Ida0639315944c8c7852ec37fb10f133e8ab9c455",
          "is_bot": false,
          "headline": "Retire openstack-chef: remove repo content",
          "author_name": "Ghanshyam Mann",
          "author_login": null,
          "committed_at": "2024-02-18T04:50:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f052ede42bab11320fefcafd8e3565269cc00dfb",
          "body": "- Update package names\n- Migrate to using apache2_mod_wsgi resource and require apache2 ~> 8.6\n- Update ChefSpec\n\nDepends-On: https://review.opendev.org/c/openstack/cookbook-openstack-ops-database/+/815139\nDepends-On: https://review.opendev.org/c/openstack/cookbook-openstack-ops-messaging/+/815137\nDepends-On: https://review.opendev.org/c/openstack/cookbook-openstack-integration-test/+/815171\nChange-Id: Ib21c5b2dbd13aa57de926e71db62d042374cabd4\nSigned-off-by: Lance Albertson <lance@osuosl.org>",
          "is_bot": false,
          "headline": "CentOS 8 support",
          "author_name": "Lance Albertson",
          "author_login": "ramereth",
          "committed_at": "2021-10-22T23:31:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e76dcb39e181a9c6432e5a16c5b8cc074a93e9db",
          "body": "- Require Chef >= 16.0\n- Remove bind from Berksfile\n- Update copyright years\n\nDepends-On: https://review.opendev.org/c/openstack/cookbook-openstackclient/+/813953\nDepends-On: https://review.opendev.org/c/openstack/cookbook-openstack-ops-database/+/814032\nDepends-On: https://review.opendev.org/c/openstack/cookbook-openstack-ops-messaging/+/814035\nChange-Id: I5d4f38f56e5a411b83b02d2fd9fff2e013947d71\nSigned-off-by: Lance Albertson <lance@osuosl.org>",
          "is_bot": false,
          "headline": "Chef 17 support",
          "author_name": "Lance Albertson",
          "author_login": "ramereth",
          "committed_at": "2021-10-14T18:57:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f70a3454c5e6a4826245be68450c017e01767ab7",
          "body": "Since at least Debian 9 (Stretch) the name of the relevant site has been\n'wsgi-keystone' rather than 'keystone'. Then again, as of 21.04 Ubuntu\ncontinues to use the old site name.\n\nTha relevant attribute is also set for RHEL so that recipe validation\ndoesn't fail due to missing resource name, even though the resource in\nquestion is currently guarded by 'if platform_family?(\"debian\")'.\n\nSigned-off-by: Marek Szuba <m.szuba@gsi.de>\nChange-Id: I34b342d0b51cd5e11b1e5de95578ac47939895f9",
          "is_bot": false,
          "headline": "Make the name of default Keystone site for Apache2 a platform option",
          "author_name": "Marek Szuba",
          "author_login": null,
          "committed_at": "2021-07-20T22:14:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c5211ab38f015315d3297d0664d8ad8058a36548",
          "body": "…ttribute \"ca_revocation_path\"\n\nAlso set SSLCARevocationCheck alongside SSLCARevocationPath, all one\ngets by setting only the latter is warnings in Apache logs.\n\nNote: with Apache 2.3.15 or newer enabling revocation checks causes\ncertificate validation to fail also when no CRLs for the given certifi\n[…]\napache.org/docs/2.4/mod/mod_ssl.html#sslcarevocationcheck\n\nCo-authored-by: Marek Szuba <m.szuba@gsi.de>\nSigned-off-by: Marek Szuba <m.szuba@gsi.de>\nChange-Id: Ic64249ba32d43877f9ef0325e7156e0d15622a69",
          "is_bot": false,
          "headline": "Possibility to set SSLCARevocationPath for keystone as chef default a…",
          "author_name": "Karim El Aammari",
          "author_login": "kelaamm",
          "committed_at": "2021-07-20T12:26:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "114b459cadb24c870cbcc8e8ffcf590083a32ebd",
          "body": "Also pull bind cookbook from git to fix version pinning issues.\n\nChange-Id: I9bd4f54d9d10e9f3aba98a297213304507b9967d\nSigned-off-by: Lance Albertson <lance@osuosl.org>",
          "is_bot": false,
          "headline": "Moving IRC network reference to OFTC",
          "author_name": "Ghanshyam Mann",
          "author_login": null,
          "committed_at": "2021-07-15T18:11:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5f40cfe1d8b4ed6598d068ee6b0686ba6ae3dfcb",
          "body": "- Cookstyle fixes\n\nDepends-On: https://review.opendev.org/c/openstack/openstack-chef/+/779389\nChange-Id: Ib044399cb7fd28cbb874cb08f1a87ca376518e6f\nSigned-off-by: Lance Albertson <lance@osuosl.org>",
          "is_bot": false,
          "headline": "Update to Chef Workstation 21.2.303",
          "author_name": "Lance Albertson",
          "author_login": "ramereth",
          "committed_at": "2021-03-09T00:15:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9ed88a8ff48d003931a6c20c49e876ab12160e9c",
          "body": "Update ChefSpec due to changes made in apache2 cookbook.\n\nDepends-On: https://review.opendev.org/756168\nChange-Id: Ie4a830620f217f5879ae4270850214902c202dbf\nSigned-off-by: Lance Albertson <lance@osuosl.org>",
          "is_bot": false,
          "headline": "Cookstyle 6.19.5 fixes",
          "author_name": "Lance Albertson",
          "author_login": "ramereth",
          "committed_at": "2020-10-06T00:13:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9a45f9e60a51b942dae855ab0356953bf84f3292",
          "body": "Depends-On: https://review.opendev.org/740342\nDepends-On: https://review.opendev.org/747542\nDepends-On: https://review.opendev.org/747554\nDepends-On: https://review.opendev.org/747555\nChange-Id: I4ad921b46ee476d9e866303e33be7b8803cdff98\nSigned-off-by: Lance Albertson <lance@osuosl.org>",
          "is_bot": false,
          "headline": "Chef 16 updates",
          "author_name": "Lance Albertson",
          "author_login": "ramereth",
          "committed_at": "2020-08-28T00:20:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "368296c9e50d10e626b6e64316ef0962fc2e22e7",
          "body": "Changed:\n- Update release to train\n- Update to apache2 ~> 8.1\n\nFixed:\n- Cookstyle\n- ChefSpec\n\nRemoved:\n- Unused .rubocop.yml\n\nChange-Id: I2dc8c767ac4f6bb0635ffa4a64d6e8e47fc29093\nDepends-On: https://review.opendev.org/731850\nDepends-On: https://review.opendev.org/731851\nDepends-On: https://review.opendev.org/731855\nDepends-On: https://review.opendev.org/731858",
          "is_bot": false,
          "headline": "Updates for Train",
          "author_name": "Lance Albertson",
          "author_login": "ramereth",
          "committed_at": "2020-06-09T16:58:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c49dedfbcd3fb35864f10bba9cce814dbaf1a5e5",
          "body": "- Cookstyle fixes\n- Refactor Berksfile to use groups so we can exclude integration testing\n  cookbooks\n- Update documentation\n- Enable sensitive resources for template[/etc/keystone/keystone.conf]\n  and execute[bootstrap_keystone] to improve security.\n- Update delivery configuration to exclude integ\n[…]\nrg/706101\nDepends-On: https://review.opendev.org/706140\nDepends-On: https://review.opendev.org/706147\nDepends-On: https://review.opendev.org/706158\nChange-Id: I6c5005b23ee209650911146e373c4cf082cbee9e",
          "is_bot": false,
          "headline": "Stein fixes",
          "author_name": "Lance Albertson",
          "author_login": "ramereth",
          "committed_at": "2020-03-23T16:58:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "453ab3bb95bb6a3c23f70352eea5529d88dacaec",
          "body": "This brings us up to date with the latest apache2 cookbook which\nincluded a major refactor in 6.0.0 removing all of the definitions and\nrecipe with proper resources. Instead of using the apache2_default_site\nresource, directly use a template and then enable the config file using\nthe apache2_site res\n[…]\n as we no longer have attributes for it\n- Include additional cookbooks in Berksfile required for CI\n\nDepends-On: https://review.opendev.org/702772\n\nChange-Id: I717247217523e89251e4c0bead0c1a0d114ade2a",
          "is_bot": false,
          "headline": "Update to apache2 ~> 8.0 cookbook",
          "author_name": "Lance Albertson",
          "author_login": "ramereth",
          "committed_at": "2020-01-30T17:28:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "21255e36b4d930a69e50707c6f66c25fd1fadfb6",
          "body": "I've run into this issue on systems that already have python2-urllib3\ninstalled, but it's older than what gets installed from the RDO\nrepository and breaks the db sync for keystone. By adding it here, that\nwill ensure it's always upgraded before we try running db sync.\n\nChange-Id: If876315001c8136fad654d7408ec9f656ef48775",
          "is_bot": false,
          "headline": "Upgrade python2-urllib3 on CentOS",
          "author_name": "Lance Albertson",
          "author_login": "ramereth",
          "committed_at": "2020-01-23T00:05:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e6d377db3efaa40646efdc57582f1e8af9e761e1",
          "body": "Change-Id: Icabebd997591b7208c92aa0a01f066d87c0f1b84",
          "is_bot": false,
          "headline": "Use Ubuntu 18.04 for ChefSpec tests",
          "author_name": "Lance Albertson",
          "author_login": "ramereth",
          "committed_at": "2020-01-06T19:44:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3d3d0b2f9c43984794c02d0b2ceb33717b25f12c",
          "body": "This updates all references of let(:chef_run) to cached(:chef_run) to\nspeed up tests. By doing this, we have to create a new cached(:chef_run)\nblock whenever we need to adjust node attributes for testing.\n\nIn addition:\n\n- Add missing ChefSpec tests for cloud_config and _credential_tokens\n  recipes\n\nChange-Id: I9f3b86de8f7aa97a5954b2e0f564452e1897a6e3",
          "is_bot": false,
          "headline": "Improve ChefSpec test speed by enabling caching",
          "author_name": "Lance Albertson",
          "author_login": "ramereth",
          "committed_at": "2019-12-18T02:59:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b571b3c44487cc18c3bb06502a6c58fe07899fa0",
          "body": "- Replace git.openstack.org with opendev.org\n- Update some documentation\n- Move README.md to README.rst for better rendering\n- Drop obsolete bootstrap.sh script\n- Drop obsolete default recipe\n\nChange-Id: I7894951c9ac0bbd00007da5face15e9418880bc4",
          "is_bot": false,
          "headline": "Updates for rocky",
          "author_name": "Lance Albertson",
          "author_login": "ramereth",
          "committed_at": "2019-12-06T19:19:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "87d4d2ed4075153e09c4e11105571b209ae76de9",
          "body": "Python2.7 is going EOL soon, let us deploy python3 for Rocky from the\nstart, so we avoid having to switch later.\n\nAlso update Berksfile to allow dependency testing and require chef >= 14 now.\n\nChange-Id: Id4c06c8fc136ae3cde97e751373049db989de21e",
          "is_bot": false,
          "headline": "Use python3 packages on Ubuntu",
          "author_name": "Jens Harbott",
          "author_login": "jharbott",
          "committed_at": "2019-11-26T10:46:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "65e61a916ddc039c2fd571fdc3470d169034cc56",
          "body": "Change-Id: Ib8f7bf2608b06178388b91fc7b90460896bce416",
          "is_bot": false,
          "headline": "Replace git.openstack.org with opendev.org",
          "author_name": "inspurericzhang",
          "author_login": "jndatawave",
          "committed_at": "2019-11-19T09:47:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1649fd84263084913301173d5c75bfaaa07ccd16",
          "body": null,
          "is_bot": false,
          "headline": "Merge \"Add a cloud_config recipe\"",
          "author_name": "Zuul",
          "author_login": null,
          "committed_at": "2019-09-10T09:43:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f2902385efe0358cddae5f9619b1b2fe12a2531f",
          "body": "Using a cloud config file when accessing a cloud is the modern variant\nof setting lots of environment variables, so we add a new recipe that\nproduces a cloud config matching what we are deploying.\n\nClean up the old openrc template a bit.\n\nChange-Id: I8574d9f4299be5b2a374140b461ef48e9e80ae6b",
          "is_bot": false,
          "headline": "Add a cloud_config recipe",
          "author_name": "Jens Harbott",
          "author_login": "jharbott",
          "committed_at": "2019-08-30T14:29:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5c2bfb4990b0c99a844624022b2ed4a57b37e4d3",
          "body": "This uses edit_resource to add a notification in the identity apache\nconfiguration when it gets updated. This is a workaround due to the fact\nwe are using a version of the apache2 cookbook that is still using\ndefinitions and cannot add notifications with definitions.\n\nThis is intended to ensure we o\n[…]\n in the Stein release when we migrate to the newer\napache2 cookbook which uses proper resources.\n\nChange-Id: I13de063d1e7ffd356d754eb0f2d8286a3c694836\nSigned-off-by: Lance Albertson <lance@osuosl.org>",
          "is_bot": false,
          "headline": "Properly notify apache restarts on keystone configuration updates",
          "author_name": "Lance Albertson",
          "author_login": "ramereth",
          "committed_at": "2019-07-08T02:10:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "df72871ac839a7cea73ee427bc8ea7c456615a7a",
          "body": null,
          "is_bot": false,
          "headline": "Merge \"Fixes to support fog-openstack-1.x\"",
          "author_name": "Zuul",
          "author_login": null,
          "committed_at": "2019-07-05T08:37:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f9a1116736811d85ceb837fc27669f628dbf67b8",
          "body": "If the chef-client fails between keystone package installation and the\ndisabling of the default keystone config file from UCA package, then\napache2 may end up with conflicting site configurations trying to bind\nto the same port.\n\nbackport: stable/queens\n\nChange-Id: Ib52a4d5195f9ef8d7caa8478c8293fe894624ee5",
          "is_bot": false,
          "headline": "Disable UCA keystone apache2 site early",
          "author_name": "Roger Luethi",
          "author_login": "ideaship",
          "committed_at": "2019-07-05T06:39:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b185a5205d7cb9262b593c7c5f82514be6bdb772",
          "body": "fog-openstack-1.x already appends \"auth/tokens\" so we no longer need to\ndo that.  In addition, comment out endpoint type until this PR [1] gets\nmerged and released.\n\n[1] https://github.com/fog/fog-openstack/pull/494\n\nDepends-On: https://review.opendev.org/666176\nChange-Id: I2a73e87648bff58180c6ee2355a733a8e030fa4b\nSigned-off-by: Lance Albertson <lance@osuosl.org>",
          "is_bot": false,
          "headline": "Fixes to support fog-openstack-1.x",
          "author_name": "Lance Albertson",
          "author_login": "ramereth",
          "committed_at": "2019-07-03T23:03:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c8a2a909b0b6c623370cb8ea09130adc8dae2d5a",
          "body": null,
          "is_bot": false,
          "headline": "Merge \"Drop admin endpoints\"",
          "author_name": "Zuul",
          "author_login": null,
          "committed_at": "2019-05-06T12:09:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1ad3f2ec044d5166523d0003123803bd1dd444b3",
          "body": "This commit was bulk generated and pushed by the OpenDev sysadmins\nas a part of the Git hosting and code review systems migration\ndetailed in these mailing list posts:\n\nhttp://lists.openstack.org/pipermail/openstack-discuss/2019-March/003603.html\nhttp://lists.openstack.org/pipermail/openstack-discus\n[…]\npattern matching, but it's possible some\nwere updated incorrectly or missed entirely. Please reach out to us\nvia the contact information listed at https://opendev.org/ with any\nquestions you may have.",
          "is_bot": false,
          "headline": "OpenDev Migration Patch",
          "author_name": "OpenDev Sysadmins",
          "author_login": null,
          "committed_at": "2019-04-19T19:36:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "284d54be798a3cdea0f1745f22e39a0cc0db2a0f",
          "body": "The admin endpoints offer no special functionality, users may talk to\nthe public endpoints instead. The only historic use case has been the\nkeystone v2 admin endpoint, but with keystone v3 API, even that is no\nlonger needed, except that it's use is hardcoded in keystonemiddleware.\nSo we prepare ever\n[…]\n052\nDepends-On: https://review.openstack.org/652064\nDepends-On: https://review.openstack.org/652098\nDepends-On: https://review.openstack.org/652589\nChange-Id: Iddfae1c2cb29217cd9aae89d56bc65fa935fcd28",
          "is_bot": false,
          "headline": "Drop admin endpoints",
          "author_name": "Jens Harbott",
          "author_login": "jharbott",
          "committed_at": "2019-04-18T11:06:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "90fd9ccf5997f109753c4e6563e1b979233e80c0",
          "body": "This is in preparation of dropping the admin endpoint, we need this\nattribute in place first so we can reference it in other cookbooks.\n\nChange-Id: Idee227f26fcc74412873c5afd02dfcce32145ea7",
          "is_bot": false,
          "headline": "Add endpoint_type attribute defaulting to internalURL",
          "author_name": "Jens Harbott",
          "author_login": "jharbott",
          "committed_at": "2019-04-15T08:17:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4313c5711f0b5f2b8cc6262c59a2c2b7f5d00984",
          "body": "This was only half-working anyway since we moved to keystone V3, so we\nshould just drop it. If someone wants to configure their deployment with\nit, they can easily set up a wrapper for it.\n\nChange-Id: Ifdf96502d18895e3b79dfa235fd102b42a0f4bc3",
          "is_bot": false,
          "headline": "Drop support for a templated catalog",
          "author_name": "Jens Harbott",
          "author_login": "jharbott",
          "committed_at": "2019-04-04T12:49:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "af1d3b1485d041d868537aa2bdccf5c25eba40b8",
          "body": "Setting the keystone option [auth]/methods by default blocks additions\nlike application_credential that was newly added to Keystone in Queens.\nLet's stick to Keystone's defaults instead, deployments can override\nthese settings if they need to.\n\nAlso drop some even older version of these attributes that haven't been\nused at all anymore for some time.\n\nChange-Id: I10b31efe1e94fc69cda65e2f7fb7a669afb166ba",
          "is_bot": false,
          "headline": "Stop overriding auth methods",
          "author_name": "Jens Harbott",
          "author_login": "jharbott",
          "committed_at": "2019-03-01T09:15:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eabbbb9b5c5b25f59aefcec3addaa770e91c714b",
          "body": null,
          "is_bot": false,
          "headline": "Merge \"Pin apache2 cookbook to 5.0.1\"",
          "author_name": "Zuul",
          "author_login": null,
          "committed_at": "2018-12-11T13:54:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6f6d02faf17776135c756e6b4f277f230814fec9",
          "body": "This change eliminates a kitchen failure with apache2-5.2.1\n\nChange-Id: Ida4e1c4a166a0baac4937e088b42f22a8ab524ab",
          "is_bot": false,
          "headline": "Pin apache2 cookbook to 5.0.1",
          "author_name": "Samuel Cassiba",
          "author_login": null,
          "committed_at": "2018-12-11T05:14:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "87747401c27202b3599190fcae60eeaa7da47828",
          "body": "Change-Id: I11d837c702f2122570f568d47f64696977bb8547",
          "is_bot": false,
          "headline": "Change openstack-dev to openstack-discuss",
          "author_name": "ZhijunWei",
          "author_login": "weizj",
          "committed_at": "2018-12-05T04:21:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d139297cf905d6eca5638baf52a37db1da24509d",
          "body": "Change-Id: Ie3c70574ccd44d39e72ea59098741b77ed7cb08c",
          "is_bot": false,
          "headline": "Update the URL in README.md",
          "author_name": "melissaml",
          "author_login": null,
          "committed_at": "2018-09-23T09:26:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "05a1bee419e0e78ac1e9b56f3462be97eb2f9b7b",
          "body": "Change-Id: Ie1ba251712f38ffc6539d3d00c4a6806f75538ce",
          "is_bot": false,
          "headline": "Rename openstack-chef-repo references to openstack-chef",
          "author_name": "Samuel Cassiba",
          "author_login": null,
          "committed_at": "2018-08-07T04:49:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3410066ae1082e0fb6bb685174b63feea5cc396c",
          "body": "Depends-On: Ia24eef700ab6c7fe359a17070981dc93e0300a18\nDepends-On: I75d827d383f701da8650cd0e9d1f2501e22cf6a2\nChange-Id: Id835cbf8fc8cf2dc32a3ecdfffb17b01547fb0db",
          "is_bot": false,
          "headline": "starting rocky development patch",
          "author_name": "Samuel Cassiba",
          "author_login": "sbcas",
          "committed_at": "2018-08-03T13:40:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e30e2cf418d4f5cf4cf806bf0e937055e30e31af",
          "body": "Finish the removal of creating an admin endpoint for keystone. This was\nstarted in [0] but some fragments were still remaining.\n\nAt the same time the option to create an internal identity endpoint that\nis different from the public one is reintroduced.\n\n[0] I01d44e48053cad7aeb92636f4b41649204006c93\n\nChange-Id: Id74966d9f1279f725bc41c08e434230a7845bbc1",
          "is_bot": false,
          "headline": "Fixup keystone endpoint handling",
          "author_name": "Jens Harbott",
          "author_login": "jharbott",
          "committed_at": "2018-07-16T19:24:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "41b3463312360c5b65c8d287052591fee0a45be8",
          "body": null,
          "is_bot": false,
          "headline": "Merge \"Simplify identity endpoint\"",
          "author_name": "Zuul",
          "author_login": null,
          "committed_at": "2018-07-03T06:31:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7657e34edadfccf0d85081f6507f6591119eec4f",
          "body": "Per the Keystone Install Guide[1] the admin endpoint is superseded in\nfavor of a single public endpoint. As a result, the admin endpoint is no\nlonger deployed by default.\n\n[1] https://docs.openstack.org/keystone/queens/install/keystone-install-ubuntu.html#install-and-configure-components\n\nDepends-On\n[…]\nn: I06d0f98e641a041ddc864f524858edc0cffbbbba\nDepends-On: Ied0fb46ae8c10273fde31691b910dc2748845faf\nChange-Id: I01d44e48053cad7aeb92636f4b41649204006c93\nImplements: blueprint simplify-identity-endpoint",
          "is_bot": false,
          "headline": "Simplify identity endpoint",
          "author_name": "Samuel Cassiba",
          "author_login": "sbcas",
          "committed_at": "2018-06-28T23:24:31Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7d8b8b5c271caf0a67a96adf4ca926800ab4f90d",
          "body": "In order to avoid errors when deploying multiple controller nodes, we\nneed to deploy credential-tokens from data bags just like we already do\nfor fernet-tokens. Otherwise each controller would use a different set\nof tokens generated locally.\n\nDrop the corresponding calls to keystone-manage, as they are a) not\nidempotent and b) generate files that are never used anyway.\n\nDepends-On: Icf0a8f644ddbfa61bfef124a772663e8af4e1f16\nChange-Id: Idabc34d101d9fb145a205acedf8f652ebec3ad9f",
          "is_bot": false,
          "headline": "Fix token handling for keystone",
          "author_name": "Jens Harbott",
          "author_login": "jharbott",
          "committed_at": "2018-06-28T12:58:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7e9d7c9966d5c3d16ef6b366fd0e9261f8cbc43b",
          "body": "We define these variables from the corresponding node attributes, use\nthen instead of accessing the node attributes afterwards.\n\nChange-Id: I1215d24f341e0ae37b7e0be978578aa2985e4af1",
          "is_bot": false,
          "headline": "Use variables keystone_user and keystone_group",
          "author_name": "Jens Harbott",
          "author_login": "jharbott",
          "committed_at": "2018-06-28T12:58:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "df5472c9c8b4316b20a11777be12d6705ececebd",
          "body": "Change-Id: Ia10c3c30f4c4e024f64b9a08f8b0d5213e3f5302\nImplements: blueprint deprecate-rakefiles",
          "is_bot": false,
          "headline": "Add delivery config",
          "author_name": "Samuel Cassiba",
          "author_login": "sbcas",
          "committed_at": "2018-04-12T05:24:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aff741a327dd6082cdead59bee2214468a3eb3c6",
          "body": "* rename keystone-main to keystone-public to better align with Keystone\n  conventions[0]\n\n[0] https://review.openstack.org/194442\n\nChange-Id: I98a5d41b4de3a3d7ef680d00ac898c93c5bc2a41",
          "is_bot": false,
          "headline": "Rename keystone-main service",
          "author_name": "Samuel Cassiba",
          "author_login": "sbcas",
          "committed_at": "2018-03-23T13:51:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a781e6c11fbe2d4171f19bb0e32eafc5496f007a",
          "body": "* use git.openstack.org instead of github for berks dependency\nresolution\n\nChange-Id: Icddbddfae5ec075c9c113287135a02bad48144e7",
          "is_bot": false,
          "headline": "starting queens development patch and use git.openstack.org",
          "author_name": "Samuel Cassiba",
          "author_login": "sbcas",
          "committed_at": "2018-03-06T12:01:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4c607a3fb20ab6b033047b089a7a8fbafdc6e84c",
          "body": null,
          "is_bot": false,
          "headline": "Merge \"Zuul: Remove project name\"",
          "author_name": "Zuul",
          "author_login": null,
          "committed_at": "2018-02-14T18:51:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "23884c6b52ab007af0ab36776a7dbd9bac4f8c4a",
          "body": "Change-Id: I07fb6f7f668a4ea0c04a149c8f8cb94e739468d8\nImplements: blueprint modern-chef",
          "is_bot": false,
          "headline": "Removed deprecated postgres test",
          "author_name": "Samuel Cassiba",
          "author_login": "sbcas",
          "committed_at": "2018-02-07T15:42:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "db5eb09a26c2bf296ecf6a24cd5a18ace477ccd0",
          "body": "Zuul no longer requires the project-name for in-repo configuration.\nOmitting it makes forking or renaming projects easier.\n\nChange-Id: I680e12ba32a72d56536de04f542900dface4aeda",
          "is_bot": false,
          "headline": "Zuul: Remove project name",
          "author_name": "James E. Blair",
          "author_login": null,
          "committed_at": "2018-02-05T21:58:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d407581474092a7147b3056648f0567ce3081e96",
          "body": null,
          "is_bot": false,
          "headline": "Merge \"identity refactor for Pike and Chef 13\"",
          "author_name": "Zuul",
          "author_login": null,
          "committed_at": "2017-12-22T21:35:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8ba453b9f521a47f46e350ea210033d3e2785cd8",
          "body": "- implemented foodcritic and cookstyle corrections\n- deprecated node.foo.bar method access for node['foo']['bar'] bracket syntax\n- moved apt package_overrides to common cookbook\n\nImplements blueprint modern-chef\n\nChange-Id: I9ab420186b2f93cfc7fcc7be7c406a3176a991e1",
          "is_bot": false,
          "headline": "identity refactor for Pike and Chef 13",
          "author_name": "Samuel Cassiba",
          "author_login": "sbcas",
          "committed_at": "2017-12-11T04:04:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b13ee78385bfa45c251cdff914bbbd7f197ba294",
          "body": null,
          "is_bot": false,
          "headline": "Merge \"Add native zuul v3 jobs defined in openstack-chef-repo\"",
          "author_name": "Zuul",
          "author_login": null,
          "committed_at": "2017-11-30T16:58:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "13022392740b7d4dd3105c0c5664fd3c0cbca74a",
          "body": "The step that ran keystone-manage credential_setup has been removed\nas \"deprecated\" with the \"Initial identity Pike updates\" [1].\n\nHowever, the Pike CLI documentation for keystone-manage does not\nindicate that the command is deprecated [2] and the install-guide\ncontinues to use it [3].\n\nAlso, I got \n[…]\nb3a)\n[2] https://docs.openstack.org/keystone/pike/cli/index.html\n[3] https://docs.openstack.org/keystone/pike/install/keystone-install-ubuntu.html\n\nChange-Id: Iad5afd70ab99d968a6546bd19e5e5831a8299a49",
          "is_bot": false,
          "headline": "Re-add keystone-manage credential_setup",
          "author_name": "Roger Luethi",
          "author_login": "ideaship",
          "committed_at": "2017-11-02T12:52:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8ea88f33ab4e9a4ccc629c366bffa3004152f815",
          "body": "Change-Id: I1bee1117dfd4187a9391d826f6cc7f8ac2aba936",
          "is_bot": false,
          "headline": "Add native zuul v3 jobs defined in openstack-chef-repo",
          "author_name": "Jens Harbott",
          "author_login": "jharbott",
          "committed_at": "2017-11-02T10:35:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cbbc525cc43d2435c7a038dbc41b7c283aef3d64",
          "body": "Other cookbooks have switched to using the node attribute\nhttps://github.com/openstack/cookbook-openstack-common/blob/master/attributes/default.rb#L292\nUsing platform_family breaks with chef-client 13.x\n\nCloses-Bug: #1724987\n\nChange-Id: I02fcb5d9403210d913e85487de5ef0dae6066bdc",
          "is_bot": false,
          "headline": "Use the attribute instead of method to get platform_family",
          "author_name": "Arun S A G",
          "author_login": "sagarun",
          "committed_at": "2017-10-19T21:23:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9a8b6424ba06f9a86917969837aff38d7ae8c690",
          "body": "Change-Id: I5481547214c7a96b64f3a183f494e3807c1c7735\nCloses-Bug: #1719861",
          "is_bot": false,
          "headline": "make fernet key file resource sensitive",
          "author_name": "Stefan Hoffmann",
          "author_login": "mrhopeman",
          "committed_at": "2017-09-27T12:43:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a66540d8157507ea9fde456241fc5c613ad7afb9",
          "body": null,
          "is_bot": false,
          "headline": "Merge \"use variable fernet-key data bag\"",
          "author_name": "Jenkins",
          "author_login": null,
          "committed_at": "2017-09-22T21:15:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "79e57bd7999b6df72c2094275e763e71b266f204",
          "body": "instead of hard coded vault name the attribute\n['openstack']['secret']['secrets_data_bag'] is used.\n\nChange-Id: I286fbfe89395544d1f8d0139acca0d689e4737fa\nCloses-Bug: #1714523",
          "is_bot": false,
          "headline": "use variable fernet-key data bag",
          "author_name": "Stefan Hoffmann",
          "author_login": "mrhopeman",
          "committed_at": "2017-09-19T07:55:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1961a12a43ec8ee2d39e1633616c1126c9e391fc",
          "body": null,
          "is_bot": false,
          "headline": "Merge \"Initial identity Pike updates\"",
          "author_name": "Jenkins",
          "author_login": null,
          "committed_at": "2017-09-13T14:07:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "995fe07550f34423d2b5f406f53ec8df182ef5a8",
          "body": "- the original invocation of keystone-manage bootstrap was in the wrong recipe,\n  so it needed to be moved to server-apache for resource ordering. restored the\n  original flags used\n- regen .rubocop_todo.yml to pass rubocop\n\nCloses-Bug: #1714510\nChange-Id: I9d3916e7f306d4c0463ec93cad40d2e78bd7eed8",
          "is_bot": false,
          "headline": "Corrected keystone bootstrapping command",
          "author_name": "Samuel Cassiba",
          "author_login": "sbcas",
          "committed_at": "2017-09-01T14:14:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5279aa4fbc6e2885e86954105237c94d71890f20",
          "body": "- Switched default linter to cookstyle\n- Renamed rake tasks to better conform with Chef conventions\n- Removed deprecated credential_setup\n\nChange-Id: I518ed83f7e19c590e7846160889faf46db274b3a",
          "is_bot": false,
          "headline": "Initial identity Pike updates",
          "author_name": "Samuel Cassiba",
          "author_login": "sbcas",
          "committed_at": "2017-08-31T03:57:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "275c12c3a614df47feac20bb853b55d393b24556",
          "body": "We now only support fernet tokens, for which token flushing is no longer\nneeded, see [1]. So we drop the corresponding cron job and the\nattributes to configure it. This also gets rid of the error messages\nwhich it is currently producing.\n\n[1] https://docs.openstack.org/security-guide/identity/tokens.html#fernet-tokens\n\nChange-Id: Ia5fe5f5d0c98ca0a77f03478edfe1777e0a89612",
          "is_bot": false,
          "headline": "Drop token-flush cronjob",
          "author_name": "Jens Harbott",
          "author_login": "jharbott",
          "committed_at": "2017-08-21T12:26:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "862bfdd7c46f7f90d7ccc06ad372940f86c15b16",
          "body": "Change-Id: I638c23934c209d2074256f3f30129cf426e34ae0",
          "is_bot": false,
          "headline": "starting pike development patch",
          "author_name": "Jan Klare",
          "author_login": null,
          "committed_at": "2017-08-17T12:19:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8a967c291ac7291f2a8b4e688cf44caa48c125b9",
          "body": "- Keystone config updates for Ocata\n- Style and lint fixes to support newer chefdk\n- Rewrote metadata.rb for readability\n\nChange-Id: Ie1d5f27a9cf8803044568a31e4dae7654b02c9a1",
          "is_bot": false,
          "headline": "Keystone config updates for Ocata, style and lint fixes",
          "author_name": "Samuel Cassiba",
          "author_login": "sbcas",
          "committed_at": "2017-08-02T06:17:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "150c363d68ad467f9a537aadf18418f0d80f342e",
          "body": null,
          "is_bot": false,
          "headline": "Merge \"add new Chef OpenStack Team Logo to README\"",
          "author_name": "Jenkins",
          "author_login": null,
          "committed_at": "2017-05-29T23:56:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f0a5cfbd1e89c129ba2e3bc98cddb96c92560015",
          "body": "Change-Id: I9a0d3760f2579c5475d202d4894867c8bba42e77",
          "is_bot": false,
          "headline": "add new Chef OpenStack Team Logo to README",
          "author_name": "Jan Klare",
          "author_login": null,
          "committed_at": "2017-05-29T08:53:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "36d484e3011314841c8ac9ccffe1086de0e2ea40",
          "body": "- corrects SELinux enablement for Keystone, as RHEL comes with SELinux\n  enabled by default.\n- removes executable bit from metadata.rb\n\nChange-Id: I97e73bcc0d4721283067e41b988bccb1ddf6c031",
          "is_bot": false,
          "headline": "Corrects SELinux enablement",
          "author_name": "Samuel Cassiba",
          "author_login": "sbcas",
          "committed_at": "2017-04-04T13:58:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f83bc81674e8d1a2e99b16f1fd9aedfc2478e532",
          "body": null,
          "is_bot": false,
          "headline": "Merge \"Fixup Identity service deployment for Ocata\"",
          "author_name": "Jenkins",
          "author_login": null,
          "committed_at": "2017-04-01T14:59:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f8b8302aaefa9a28aac8c344010784db78ce7b88",
          "body": "- Remove recipe for PKI tokens as they have been dropped from keystone\n- Use Fernet tokens unconditionally\n- Cleanup paste deployment according to keystone changes in Ocata\n\nChange-Id: I28c27caacc09a3e46eca135a6c4f5a841f4715f9",
          "is_bot": false,
          "headline": "Fixup Identity service deployment for Ocata",
          "author_name": "Jens Rosenboom",
          "author_login": null,
          "committed_at": "2017-03-10T10:47:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "41dd09a0a72bcf52a54125d318caefc8586987c7",
          "body": "Project specific URLs are obsolete, use docs.openstack.org - and use\nhttps for that site.\n\nChange-Id: I149eec4340711ce46bd38188818db75946d0e67f",
          "is_bot": false,
          "headline": "Replace obsolete vanity openstack.org URLs",
          "author_name": "Andreas Jaeger",
          "author_login": "ajaeger",
          "committed_at": "2017-03-08T18:40:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ae02664362e71d5124bad982bfb0c7c37df13cc5",
          "body": "Change-Id: I0fe3039cf46cd415b8ece73aec00e3603da793d9",
          "is_bot": false,
          "headline": "starting ocata development patch",
          "author_name": "Jan Klare",
          "author_login": null,
          "committed_at": "2017-02-23T16:06:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1bb86dd4ce7cd7b795ffa4b9c36d5a3a15150f74",
          "body": "The use of the keystone_wsgi_file that we copy in order to create our\nkeystone apps is deprecated and the file will be removed for Ocata.\n\nSo we switch to using the variant provided by upstream instead.\n\nChange-Id: I8970d4ee9692fd13d52b2304ff3a1ae93b693500",
          "is_bot": false,
          "headline": "Fix wsgi app creation",
          "author_name": "Jens Rosenboom",
          "author_login": null,
          "committed_at": "2017-02-21T10:55:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2f858e3678ced8ab3b35879233e18da659c265dc",
          "body": "- removed deprecated rabbitmq attributes\n- added rabbit_transport_url\n\nChange-Id: I0ca0fcc1e261eeadb76c9355a0f14499085d9bda",
          "is_bot": false,
          "headline": "RPC_backend / transport_url workover",
          "author_name": "Christoph Albers",
          "author_login": null,
          "committed_at": "2016-12-20T11:45:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b9b6b2661672fefb8dd334fdbcead5b7023a76af",
          "body": null,
          "is_bot": false,
          "headline": "Merge \"Deprecated python-keystoneclient\"",
          "author_name": "Jenkins",
          "author_login": null,
          "committed_at": "2016-12-20T11:01:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1cccaa0842d77a2be11f378a4c03a574c5caea9d",
          "body": "- deleted client.rb\n- deprecated python-keystoneclient references\n\nImplements blueprint newton-xenial\n\nChange-Id: Ia1406308a9c78a0361cd0e2e0844f0e7a3cf4b9f",
          "is_bot": false,
          "headline": "Deprecated python-keystoneclient",
          "author_name": "Samuel Cassiba",
          "author_login": "sbcas",
          "committed_at": "2016-12-15T04:11:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9f8ba8fda6de41f4ee8ee76badf198d98a1bcb28",
          "body": "* added a small ruby block with a loop to check if the keystonen admin\n  endpoint is up before trying to register projects, users etc.\n* will wait 60 seconds for admin endpoint to become ready and raise\n  error specific exception otherwise if Timeout::Error was raised\n\nChange-Id: Ief678b0f40685e91ced9bddde95b916f4587b330",
          "is_bot": false,
          "headline": "Wait for identity endpoint instead of sleeping",
          "author_name": "Jan Klare",
          "author_login": null,
          "committed_at": "2016-12-13T13:55:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ade1b23af8133d46eded96263eaf78e27a0cc6b6",
          "body": null,
          "is_bot": false,
          "headline": "Merge \"update cookbook dependencies for next release\"",
          "author_name": "Jenkins",
          "author_login": null,
          "committed_at": "2016-12-08T07:50:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4b35a881b934e3a90e529af20e3c4fed4761ff4d",
          "body": "Depends-On: Ib256c315d5439beb8d4ec83c5cc7d7c9b182378a\nChange-Id: Ic6b00a08ec29a9a7c04a72c743af5f756db45edf",
          "is_bot": false,
          "headline": "update cookbook dependencies for next release",
          "author_name": "Jan Klare",
          "author_login": null,
          "committed_at": "2016-12-05T11:32:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0dd8100a2a18fb3d5919c3659aea2f1ff23e220f",
          "body": "This patch adds the team's and repository's badges to the README file.\nThe motivation behind this is to communicate the project status and\nfeatures at first glance.\n\nFor more information about this effort, please read this email thread:\n\nhttp://lists.openstack.org/pipermail/openstack-dev/2016-October/105562.html\n\nTo see an example of how this would look like check:\n\nhttps://gist.github.com/9be741f3b667eb4e72f7e97648335f16\n\nChange-Id: I6eea8331ec2cab9605314401b5cfceb5e13c3e1e",
          "is_bot": false,
          "headline": "Show team and repo badges on README",
          "author_name": "Flavio Percoco",
          "author_login": "flaper87",
          "committed_at": "2016-11-26T10:52:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4dcd956337e523a89e19756e4971b3c33f84a4ff",
          "body": "- Removed v2 support\n- Workover Endpoint creation\n  Identity Endpoints now will be bootstrapped\n- Removed bootstrap_token\n- Added domain_creation\n- Edited openrc to work with itendity_v3\n- changed \"tenant\"-naming to project\n- Removed unused files and functions\n  providers/register.rb\n  spec/register\n[…]\n/machters.rb\n- rewrote specs\n- updated readme\n- added apache_site disable keystone since\n  ubuntu auto-enables it\n- bumbed ubuntu version to 16.04\n\nChange-Id: I0f8955f05de9b33711c54b9a198f45018cceb8e1",
          "is_bot": false,
          "headline": "use_cookbook-openstackclient/identity_v3",
          "author_name": "Christoph Albers",
          "author_login": null,
          "committed_at": "2016-09-29T15:52:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "07518048675a66ba4858864205c5bd208f07b11b",
          "body": "Some cert providers require an chain cert file so this allows for this option.\nIn addition, I added tests for SSL that were missing for the apache vhost file.\n\nChange-Id: Ib3c6cf82f6afb8a79952745d8fb2116a05f59c39",
          "is_bot": false,
          "headline": "Include option to set SSLCertificateChainFile",
          "author_name": "Lance Albertson",
          "author_login": "ramereth",
          "committed_at": "2016-08-13T19:36:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ae8f0ec57a204b10a0d76d4feae29ff0b4bc3e7b",
          "body": "The attribute is set false by default as documented here:\nhttp://docs.openstack.org/mitaka/config-reference/identity/options.html\n\nChange-Id: I5b7bc37f08f30014468317b55eaab7a431fb58cb",
          "is_bot": false,
          "headline": "Removes unneeded default attribute",
          "author_name": "Hendrik Frese",
          "author_login": null,
          "committed_at": "2016-07-28T13:05:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e6b72c41058eff5d7945e468a78beec243a4a41d",
          "body": "Change-Id: I34e4c7b29ff7c36c91245d90fb0b6897847cd22f\nDepends-On: I6ce4587caa3ae68ddbd3ef1a521aaf46f4840b2c",
          "is_bot": false,
          "headline": "Style and lint fixes to support newer ChefDK",
          "author_name": "Samuel Cassiba",
          "author_login": "sbcas",
          "committed_at": "2016-07-02T03:22:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6208a34946f2a1585a9e0ba010f6d255fb3a2093",
          "body": "Change-Id: I2e9c4e159076df49dae5d5cae2e64afa5835373b",
          "is_bot": false,
          "headline": "initial commit for the newton development cycle",
          "author_name": "Jan Klare",
          "author_login": null,
          "committed_at": "2016-05-31T08:31:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4fda2a0d5b7eee32c1b04e45d328f24a6940b7fc",
          "body": "* added a lot of inline comments for attributes, recipes and provider\n* updated README to the current state of the cookbook\n\nChange-Id: Ic7b7ae6d26ce56e2237fe3215aff9ab447946b48",
          "is_bot": false,
          "headline": "Documenation update after refactoring",
          "author_name": "Jan Klare",
          "author_login": null,
          "committed_at": "2016-04-27T21:12:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "24757760b3b18ee0a64f17ffc1be7b432bfeeedf",
          "body": null,
          "is_bot": false,
          "headline": "Merge \"Remove default apache port\"",
          "author_name": "Jenkins",
          "author_login": null,
          "committed_at": "2016-04-11T07:47:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "27c46d645080a770d46913f068bc23662c50a659",
          "body": "The default apache port overlaps with horizon, but\nuses a different address syntax, *:80  vs 0.0.0.0:80.\nThis causes apache2 to sometimes fail on startup with\nAddress already in use: AH00072: make_sock: could not bind to address [::]:80\n\nChange-Id: Ib45393b0244dd4cffb440c84c614ba9a104df105",
          "is_bot": false,
          "headline": "Remove default apache port",
          "author_name": "Mark Vanderwiel",
          "author_login": "kramvan1",
          "committed_at": "2016-04-08T16:18:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d8a54c8e56a9b507e30700cdac870bbe4606d4a0",
          "body": "The option \"verbose\" in the [DEFAULT] section is deprecated, it's\ndefault value would be false anyway.\n\nChange-Id: Ib7809425ca5c1651cd7642f3a6cf56cb7f6444aa",
          "is_bot": false,
          "headline": "Remove the deprecated \"verbose\" option",
          "author_name": "Jens Rosenboom",
          "author_login": null,
          "committed_at": "2016-04-08T15:02:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dbea65b625d9937ced5ddde9c7f304c1928ef236",
          "body": "Version 3.2.0 of the apache2 cookbook was released, update our\ndependency so that we are compatible with the other openstack\ncookbooks and berkshelf resolution can succeed. Drop the reference to\nthe github version.\n\nChange-Id: I55110726ee846f579849ea039a759ef1a0ad9bff",
          "is_bot": false,
          "headline": "Update dependency for apache2 cookbook",
          "author_name": "Jens Rosenboom",
          "author_login": null,
          "committed_at": "2016-03-29T14:50:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "340e9f2f48998b8c2c2dcec9ee047a61888d8b56",
          "body": null,
          "is_bot": false,
          "headline": "Merge \"Fixup identity backend handling\"",
          "author_name": "Jenkins",
          "author_login": null,
          "committed_at": "2016-03-07T16:16:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "52d8000c1acdb61b46ff45900ea31508850435ff",
          "body": "Instead of creating an artificial, non-functional identity-internal\nendpoint use the identity-main backend that is provided via the default\nconfig for both public and internal endpoints.\n\nChange-Id: Ia7d7f11108f0945ccd944d7e4a5c7f7ef68bc654",
          "is_bot": false,
          "headline": "Fixup identity backend handling",
          "author_name": "Jens Rosenboom",
          "author_login": null,
          "committed_at": "2016-03-03T18:49:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fe6e4adb6b140cd02e3cd937f4d0212e96be3f64",
          "body": "On recent test machines, curl isn't available anymore, so use wget\ninstead. Piping directly into bash isn't that great anyway.\n\nChange-Id: I7faa2a67e9233ed68e16e25cd24afe2120df6cda",
          "is_bot": false,
          "headline": "Fix bootstrap.sh",
          "author_name": "Jens Rosenboom",
          "author_login": null,
          "committed_at": "2016-03-03T18:38:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0271eb1711ef6716a2f00f2e7df06835101169bc",
          "body": "* the apache2 cookbook got patched recently and now uses an array of\n  \"ipaddress:port\" to define where apache2 should listen\n\nDepends-On: I7304932c19398c2bd245bbb7cbad6df4f487047e\nChange-Id: Id91fb812ba91dab2803c68d24adaddbe0fde7a5e",
          "is_bot": false,
          "headline": "use Array for apache2 listen attributes",
          "author_name": "Jan Klare",
          "author_login": null,
          "committed_at": "2016-03-03T13:26:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d47ebc4e527feb6ea90272c9981e599ddbe93f91",
          "body": "* use the bind_address method from common to get address for keystone\n\nWIP specs and deps missing\n\nChange-Id: I206c8cbab66dbeb708947cc9b95c8ecfdf6c2c14",
          "is_bot": false,
          "headline": "use new bind_address method from common",
          "author_name": "Jan Klare",
          "author_login": null,
          "committed_at": "2016-02-24T15:42:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6585d611cb93579c1b33431411c82126b3a90096",
          "body": "* added recipe for fernet_tokens (recipes/_fernet_tokens.rb)\n* moved pki setup to seperate recipe (recipes/_pki_tokens.rb)\n* included fernet or pki tokens recipe based on auth strategy attibute\n* adapted spec accordingly and added specs for fernet_tokens\n\nChange-Id: I37af3e8e5d4b93e0de7f4ef2d999a05573eefc26",
          "is_bot": false,
          "headline": "add fernet tokens as optional token deployment method",
          "author_name": "Jan Klare",
          "author_login": null,
          "committed_at": "2016-02-24T15:41:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a26d528b5e34c79d8a7bdf60c5f58199f5b86bba",
          "body": "* endpoint type (admin, internal, public) and service (identitiy, network etc.)\n  was switched during refactoring, this patch reverts this unintended switching\n\nChange-Id: Ia5bddfc5e2fd77cd6e9e855c680b079f78fc1c3f\nDepends-On: Iec485deaf415e4187a323435cce2b6bbadfc5d42",
          "is_bot": false,
          "headline": "invert the order of endpoint and bind_service attributes",
          "author_name": "Jan Klare",
          "author_login": null,
          "committed_at": "2016-02-12T17:38:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a3f18966ea3a01885a1f031b7ccab046325fce09",
          "body": "* added new logic into templates/default/keystone.conf.erb\n* refactored attributes throughout all recipes that were connected to\n  the attributes used for the keystone.conf.erb template to adapt the new\n  template attribute syntax\n* moved all attributes from attributes/default.rb that were used in\n \n[…]\nocop_todo.yaml conaining all remaining exceptions\n\nChange-Id: I3262b2e6f792f37c32a446e6567790b82bdd4613\nImplements: blueprint cookbook-refactoring\nDepends-On: I0547182085eed91d05384fdd7734408a839a9a2c",
          "is_bot": false,
          "headline": "refactoring final step",
          "author_name": "Jan Klare",
          "author_login": null,
          "committed_at": "2016-02-08T09:17:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "98030c26e065f39c545db48bc36414a15e9bd83d",
          "body": "The current hack just does a apache reload, but a full\nrestart is required on centos.\n\nChange-Id: I1deb415bc6f8d035775c9bd723ae8b2207c333e6\nCloses-Bug: #1512480",
          "is_bot": false,
          "headline": "Fix centos keystone-apache timeout",
          "author_name": "Mark Vanderwiel",
          "author_login": "kramvan1",
          "committed_at": "2015-11-04T18:55:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5b8a8f89492d11e9fb2bf4ffc1733d4a0f09b095",
          "body": null,
          "is_bot": false,
          "headline": "Merge \"Use keystone.wsgi instead of wsgi.py for RHEL/CentOS\"",
          "author_name": "Jenkins",
          "author_login": null,
          "committed_at": "2015-10-30T01:47:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3fbc1bd092f3c0372bfd5430b6d74037c086f641",
          "body": "Add missing gate integration task, but use the one from\nCommon cookbook to make future updates easy.\n\nChange-Id: I03c54dc3284715edd79207cd158b7f9fb0be3bcd",
          "is_bot": false,
          "headline": "Add integration task",
          "author_name": "Mark Vanderwiel",
          "author_login": "kramvan1",
          "committed_at": "2015-10-06T14:47:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f178a00b84b59ef04139ebff96888214db585f72",
          "body": "Change-Id: I6bddae9fc83a5fc133e43a27e96e1a7110c94cfb\nPartial-Bug: #1501064",
          "is_bot": false,
          "headline": "Sync keystone paste.ini with liberty changes",
          "author_name": "Mark Vanderwiel",
          "author_login": "kramvan1",
          "committed_at": "2015-09-29T21:48:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eae4ded65dd4c2a5c4b47ebb93826ffe3b24bdfb",
          "body": "Change-Id: I5a8e83a6238374afde42a6f5d896fc211fb49dce\nCloses-Bug: #1491479",
          "is_bot": false,
          "headline": "Use keystone.wsgi instead of wsgi.py for RHEL/CentOS",
          "author_name": "Samuel Cassiba",
          "author_login": null,
          "committed_at": "2015-09-02T15:52:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 5,
      "commits_last_year": 0,
      "latest_release_at": "2022-03-17T22:49:15Z",
      "latest_release_tag": "v20.0.0",
      "releases_from_tags": true,
      "days_since_last_push": 885,
      "active_weeks_last_year": 0,
      "days_since_latest_release": 1589,
      "mean_days_between_releases": 206.9
    },
    "community": {
      "has_readme": true,
      "has_license": false,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 25,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": []
    },
    "popularity": {
      "forks": 36,
      "stars": 44,
      "watchers": 0,
      "fork_history": {
        "days": [
          {
            "date": "2013-05-14",
            "count": 1
          },
          {
            "date": "2013-07-08",
            "count": 1
          },
          {
            "date": "2013-07-23",
            "count": 1
          },
          {
            "date": "2013-08-22",
            "count": 1
          },
          {
            "date": "2013-10-12",
            "count": 1
          },
          {
            "date": "2014-01-13",
            "count": 1
          },
          {
            "date": "2014-01-17",
            "count": 1
          },
          {
            "date": "2014-01-23",
            "count": 1
          },
          {
            "date": "2014-05-12",
            "count": 1
          },
          {
            "date": "2014-05-14",
            "count": 1
          },
          {
            "date": "2014-05-28",
            "count": 1
          },
          {
            "date": "2014-05-29",
            "count": 1
          },
          {
            "date": "2014-05-30",
            "count": 1
          },
          {
            "date": "2014-06-30",
            "count": 1
          },
          {
            "date": "2014-08-04",
            "count": 1
          },
          {
            "date": "2014-08-18",
            "count": 1
          },
          {
            "date": "2014-09-06",
            "count": 1
          },
          {
            "date": "2014-11-25",
            "count": 1
          },
          {
            "date": "2014-12-03",
            "count": 1
          },
          {
            "date": "2015-01-16",
            "count": 1
          },
          {
            "date": "2015-04-02",
            "count": 1
          },
          {
            "date": "2015-04-07",
            "count": 1
          },
          {
            "date": "2015-05-21",
            "count": 1
          },
          {
            "date": "2015-07-24",
            "count": 1
          },
          {
            "date": "2015-09-09",
            "count": 1
          },
          {
            "date": "2015-11-03",
            "count": 1
          },
          {
            "date": "2016-02-19",
            "count": 1
          },
          {
            "date": "2016-02-29",
            "count": 1
          },
          {
            "date": "2016-04-15",
            "count": 1
          },
          {
            "date": "2016-06-23",
            "count": 1
          },
          {
            "date": "2017-06-14",
            "count": 1
          },
          {
            "date": "2017-07-27",
            "count": 1
          },
          {
            "date": "2018-02-08",
            "count": 1
          },
          {
            "date": "2018-05-22",
            "count": 1
          },
          {
            "date": "2020-07-13",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 35,
        "total_forks": 36
      },
      "star_history": null,
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": null,
      "source_files_sampled": 0,
      "oversized_source_files": 0,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [],
      "advisories": {
        "error": null,
        "scope": null,
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [],
      "dependencies": [],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 0,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 4
      },
      "bus_factor": 3,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "jaypipes",
          "commits": 67,
          "avatar_url": "https://avatars.githubusercontent.com/u/265023?v=4"
        },
        {
          "type": "User",
          "login": "retr0h",
          "commits": 65,
          "avatar_url": "https://avatars.githubusercontent.com/u/9895?v=4"
        },
        {
          "type": "User",
          "login": "kramvan1",
          "commits": 47,
          "avatar_url": "https://avatars.githubusercontent.com/u/5861591?v=4"
        },
        {
          "type": "User",
          "login": "iartarisi",
          "commits": 25,
          "avatar_url": "https://avatars.githubusercontent.com/u/35473?v=4"
        },
        {
          "type": "User",
          "login": "mattray",
          "commits": 21,
          "avatar_url": "https://avatars.githubusercontent.com/u/330023?v=4"
        },
        {
          "type": "User",
          "login": "ramereth",
          "commits": 15,
          "avatar_url": "https://avatars.githubusercontent.com/u/48997?v=4"
        },
        {
          "type": "User",
          "login": "sbcas",
          "commits": 13,
          "avatar_url": "https://avatars.githubusercontent.com/u/791892?v=4"
        },
        {
          "type": "User",
          "login": "UshF",
          "commits": 12,
          "avatar_url": "https://avatars.githubusercontent.com/u/947919?v=4"
        },
        {
          "type": "User",
          "login": "jharbott",
          "commits": 11,
          "avatar_url": "https://avatars.githubusercontent.com/u/3973691?v=4"
        },
        {
          "type": "User",
          "login": "mattt416",
          "commits": 5,
          "avatar_url": "https://avatars.githubusercontent.com/u/16207?v=4"
        }
      ],
      "contributors_sampled": 44,
      "top_contributor_share": 0.198
    },
    "quality_signals": {
      "has_ci": false,
      "has_tests": false,
      "ci_workflows": [],
      "has_docs_dir": false,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": null,
            "reason": "no pull request found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 12 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": null,
            "reason": "no workflows found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 0,
            "reason": "license file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 0,
            "reason": "project is archived",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": null,
            "reason": "no dependencies found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "no SAST tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": null,
            "reason": "No tokens found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "44d13c8c6421d123a51e70562a5e43f4018b66de",
        "ran_at": "2026-07-23T22:49:46Z",
        "aggregate_score": 2.6,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": null,
      "oldest_open_prs": [],
      "last_merged_pr_at": null,
      "ci_last_conclusion": null,
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/openstack-archive/cookbook-openstack-identity",
    "host": "github.com",
    "name": "cookbook-openstack-identity",
    "owner": "openstack-archive"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "critical",
      "name": "Overall health",
      "note": "Abandonment Policy applies a 40% multiplier to weighted overall health and gives it a ceiling of 29.",
      "notes": [
        {
          "code": "abandonment_overall_adjustment",
          "params": {
            "cap": 29,
            "pct": 40
          }
        }
      ],
      "value": 12,
      "inputs": {
        "security": 26,
        "vitality": 13,
        "community": 32,
        "governance": 50,
        "engineering": 23,
        "abandonment_cap": 29,
        "abandonment_state": "declared",
        "abandonment_multiplier": 40,
        "weighted_overall_before_abandonment": 29,
        "overall_after_abandonment_multiplier": 12
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "critical",
        "name": "Vitality",
        "value": 13,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "critical",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "commits_last_year": 0,
              "human_commit_share": 1,
              "days_since_last_push": 885,
              "active_weeks_last_year": 0
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 885 days ago",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 885
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "0/52 weeks with commits",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "0 commits in the last year",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "project is archived",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "at_risk",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 32,
            "inputs": {
              "releases_count": 5,
              "latest_release_tag": "v20.0.0",
              "releases_from_tags": true,
              "days_since_latest_release": 1589,
              "mean_days_between_releases": 206.9
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "5 version tags (no GitHub releases)",
                "points": 16.2,
                "status": "partial",
                "details": [
                  {
                    "code": "version_tags_no_releases",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 1589 days ago",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 1589
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~206.9 days",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 206.9
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "at_risk",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "cap": 29,
              "state": "declared",
              "guards": [],
              "signals": [],
              "red_flag": true,
              "multiplier_pct": 40,
              "declared_reason": "archived",
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "the repository is archived on GitHub",
                "points": 40,
                "status": "partial",
                "details": [
                  {
                    "code": "abandonment_archived",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 32,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "at_risk",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 39,
            "inputs": {
              "forks": 36,
              "stars": 44,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "44 stars",
                "points": 26.5,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 44
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "36 forks",
                "points": 12.9,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 36
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "critical",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 25,
            "inputs": {
              "has_readme": true,
              "has_license": false,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "no license file detected",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "license_absent",
                    "params": {}
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 50,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "good",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 78,
            "inputs": {
              "bus_factor": 3,
              "contributors_sampled": 44,
              "top_contributor_share": 0.198
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "3 contributor(s) cover half of all commits",
                "points": 36,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 20% of commits",
                "points": 18,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 20
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "44 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 44
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 12 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "critical",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 1,
            "inputs": {
              "merged_prs": 0,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 4
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "0/4 decided PRs merged",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 0,
                      "decided": 4
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 65,
            "inputs": {
              "followers": 23,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "openstack-archive",
              "public_repos": 1273,
              "account_age_days": 2303
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "23 followers of openstack-archive",
                "points": 9.9,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 23,
                      "login": "openstack-archive"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "1273 public repos, account ~6 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 1273
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 6
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "critical",
        "name": "Engineering Quality",
        "value": 23,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "critical",
            "name": "Engineering practices",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 1,
            "inputs": {
              "has_ci": false,
              "has_tests": false,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "topics": [],
              "has_wiki": false,
              "homepage": "https://opendev.org/openstack/cookbook-openstack-identity",
              "has_readme": true,
              "has_docs_dir": false,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://opendev.org/openstack/cookbook-openstack-identity",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "critical",
        "name": "Security",
        "value": 26,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "critical",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests, Dangerous-Workflow, Packaging, Pinned-Dependencies, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests",
                    "dangerous_workflow",
                    "packaging",
                    "pinned_dependencies",
                    "signed_releases",
                    "token_permissions"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 26,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 12,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 6,
              "scorecard_aggregate": 2.6
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 12 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no workflows found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "project is archived",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "no SAST tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "No tokens found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 12
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "critical",
        "name": "AI Readiness",
        "value": 16,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 37,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.7,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "70 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 37.3,
                "status": "partial",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 70,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "critical",
            "name": "Verify loop (build / test / typecheck)",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_pinned_dependencies"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 1,
            "inputs": {
              "has_nix": false,
              "has_tests": false,
              "lockfiles": [],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Language breakdown unavailable",
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-23T22:50:01.067197Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/o/openstack-archive/cookbook-openstack-identity.svg",
  "full_name": "openstack-archive/cookbook-openstack-identity",
  "license_state": "absent",
  "license_spdx": null
}

Bewertungen sind Signale, keine Garantien. Sie spiegeln öffentlich sichtbare Praxis auf GitHub wider — kein Code-Audit und keine Sicherheitsgarantie.

Fehlende Daten werden ausgeschlossen und die Gewichte neu normiert, nie als null bewertet. Die Methodik ist versioniert und offen: Metriken v1.13.0, Schema v0.27.0 — vollständige Methodik · Metriken-Wiki.

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte Statistiken.