{"id":41591732,"url":"https://github.com/opensciencegrid/gracc-request","last_synced_at":"2026-01-24T09:34:08.434Z","repository":{"id":8384888,"uuid":"58003513","full_name":"opensciencegrid/gracc-request","owner":"opensciencegrid","description":"GRACC Request Daemon for Replays","archived":false,"fork":false,"pushed_at":"2024-03-27T14:19:02.000Z","size":429,"stargazers_count":0,"open_issues_count":4,"forks_count":5,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-04-16T19:14:03.970Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/opensciencegrid.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2016-05-03T21:44:16.000Z","updated_at":"2021-12-06T22:00:37.000Z","dependencies_parsed_at":"2024-03-26T21:50:54.608Z","dependency_job_id":null,"html_url":"https://github.com/opensciencegrid/gracc-request","commit_stats":null,"previous_names":[],"tags_count":34,"template":false,"template_full_name":null,"purl":"pkg:github/opensciencegrid/gracc-request","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensciencegrid%2Fgracc-request","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensciencegrid%2Fgracc-request/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensciencegrid%2Fgracc-request/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensciencegrid%2Fgracc-request/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/opensciencegrid","download_url":"https://codeload.github.com/opensciencegrid/gracc-request/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensciencegrid%2Fgracc-request/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28723284,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T08:27:05.734Z","status":"ssl_error","status_checked_at":"2026-01-24T08:27:01.197Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-24T09:34:07.761Z","updated_at":"2026-01-24T09:34:08.422Z","avatar_url":"https://github.com/opensciencegrid.png","language":"Python","readme":"GRACC Request Daemon\n====================\n\nThis daemon listens and responds to requests for replays on a AMQP queue.\n\n[![Build Status](https://travis-ci.org/opensciencegrid/gracc-request.svg?branch=master)](https://travis-ci.org/opensciencegrid/gracc-request)\n\n## Installing\n\nIt is easy to install the GRACC Request Daemon with virtualenv\n\n    virtualenv gracc-test\n    . gracc-test/bin/activate\n    pip install -r requirements.txt\n    python setup.py install\n\n\n## Docker Installation\n\nA docker image with gracc-request installed in available as opensciencegrid/gracc-request.  \n\n\n## Corrections\n\nThe configuration for a correction is\n\n    [[Corrections]]\n    index = 'gracc.corrections'\n    doc_type = 'project'\n    match_fields = ['ProjectName']\n    source_field = 'CorrectedProjectName'\n    dest_field = 'ProjectName'\n\nEach correction is required to have the above fields.  You can imagine the logic as:\n\n* If the `match_fields` match the incoming record\n* Take the value in `source_field` and put it in `dest_field`\n\nThe Elasticsearch document for the above configuration could be:\n\n    {\n      \"_index\": \"gracc.corrections-0\",\n      \"_type\": \"project\",\n      \"_id\": \"AV0ItRBqFBezTrseiOVF\",\n      \"_score\": 1,\n      \"_source\": {\n        \"ProjectName\": \"osg.mab\",\n        \"CorrectedProjectName\": \"mab\"\n      }\n    }\n\nIn the above example config and document, the correction would look for records which have a `ProjectName == \"osg.mab\"`, and set the new ProjectName to \"mab\".\n\n### Regular expression matches\n\nThe corrections also have the ability to perform regular expression matches.  The configuration for a regular expression:\n\n    [[Corrections]]\n    index = 'gracc.corrections'\n    doc_type = 'host_description_regex'\n    match_fields = ['Host_description']\n    source_field = 'Corrected_OIM_Site'\n    dest_field = 'OIM_Site'\n    regex = true\n\nAnd the ES document would look like:\n\n    {\n      \"_index\": \"gracc.corrections-0\",\n      \"_type\": \"host_description_regex\",\n      \"_id\": \"asldkfj;alksjdf\",\n      \"_score\": 1,\n      \"_source\": {\n        \"Host_description\": \".*\\.bridges\\.psc\\.edu\",\n        \"Corrected_OIM_Site\": \"PSC Bridges\",\n      }\n    }\n\nIn this case, it would match the `Host_description` field of the incoming record with the regular expression in the ES record.  If it is a match, then it would set `OIM_Site` to the value in `Corrected_OIM_Site`.\n\n### ID Mappings\n\n#### InstitutionID\n\nAll project and facilities have a InstitutionID assigned by the OSG. You can find these\nvalues in the [OSG Institutions Webpage](https://topology-institutions.osg-htc.org/ui/).\n\nThese IDs hold the pointer to the facilities accepted name and some metadata that can be pulled in later. \n\nA sample of this metadata can be seen below. \n\n```json\n{\n    \"name\": \"Albert Einstein College of Medicine\",\n    \"id\": \"https://osg-htc.org/iid/yzcm7hs9f1d0\",\n    \"ror_id\": \"https://ror.org/05cf8a891\",\n    \"unitid\": \"385415\",\n    \"longitude\": -73.846327,\n    \"latitude\": 40.852847,\n    \"ipeds_metadata\": {\n        \"website_address\": \"www.einsteinmed.edu/\",\n        \"historically_black_college_or_university\": false,\n        \"tribal_college_or_university\": false,\n        \"program_length\": \"Four or more years\",\n        \"control\": \"Private not-for-profit\",\n        \"state\": \"NY\",\n        \"institution_size\": \"1,000 - 4,999\"\n    }\n}\n```\n\n#### FieldOfScienceID\n\nField of Science IDs are pulled from the NSF created SED-CIP list. This list is a comprehensive list \nof all fields of science that are recognized by the NSF along with three tiers of categorization. \n\nYou can find the Excel mapping spreadsheet here -\u003e https://ncses.nsf.gov/pubs/nsf24300/assets/technical-notes/tables/nsf24300-taba-005.xlsx\n\nIn the future if the SED-CIP list is updated there is historical precedent for them providing a mapping file to the new ids. \n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopensciencegrid%2Fgracc-request","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopensciencegrid%2Fgracc-request","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopensciencegrid%2Fgracc-request/lists"}