{"id":14987958,"url":"https://github.com/apache/yunikorn-scheduler-interface","last_synced_at":"2025-04-04T19:14:34.399Z","repository":{"id":38108390,"uuid":"191787408","full_name":"apache/yunikorn-scheduler-interface","owner":"apache","description":"Apache YuniKorn Scheduler Interface","archived":false,"fork":false,"pushed_at":"2025-03-18T01:35:44.000Z","size":630,"stargazers_count":28,"open_issues_count":0,"forks_count":69,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-03-28T18:13:29.171Z","etag":null,"topics":["apache-yarn","go","kubernetes","universal-resource-scheduler","yunikorn"],"latest_commit_sha":null,"homepage":"https://yunikorn.apache.org/","language":"Makefile","has_issues":false,"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/apache.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,"publiccode":null,"codemeta":null}},"created_at":"2019-06-13T15:20:04.000Z","updated_at":"2025-03-04T21:48:50.000Z","dependencies_parsed_at":"2024-01-25T23:04:30.644Z","dependency_job_id":"9ed43c42-1d64-4833-94a6-c178d8d81c6c","html_url":"https://github.com/apache/yunikorn-scheduler-interface","commit_stats":{"total_commits":160,"total_committers":42,"mean_commits":"3.8095238095238093","dds":0.8625,"last_synced_commit":"68e8c6cca28a743d797e7908b1225392dddda3a2"},"previous_names":["apache/incubator-yunikorn-scheduler-interface","cloudera/scheduler-interface","cloudera/yunikorn-scheduler-interface"],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fyunikorn-scheduler-interface","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fyunikorn-scheduler-interface/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fyunikorn-scheduler-interface/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fyunikorn-scheduler-interface/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apache","download_url":"https://codeload.github.com/apache/yunikorn-scheduler-interface/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246983715,"owners_count":20864301,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["apache-yarn","go","kubernetes","universal-resource-scheduler","yunikorn"],"created_at":"2024-09-24T14:15:48.956Z","updated_at":"2025-04-04T19:14:34.381Z","avatar_url":"https://github.com/apache.png","language":"Makefile","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n --\u003e\n\n# YuniKorn Scheduler Interface\nYuniKorn Scheduler Interface defines protobuf interfaces for the communication between the yunikorn-core and the resource management systems.\n\nFor detailed information on the components and how to build the overall scheduler please see the [yunikorn-core](https://github.com/apache/yunikorn-core).\n\n## Interface description\nThe interface defines messages for two implementations:\n* an API based interface for locally deployed go based interactions.\n* an RPC based interface for remotely deployed or cross language interactions.\n\nBoth implementations are build from the same source.\n\nMessages might require standardised constants used as identifiers.\nThe specification declares constants that are used by the core and one or more resource management system.\nConstants used by just the core or one resource management system are not part of the interface specification.\nDefault values for any part of the messages are not part of the specification. \n\nThe source and documentation are part of the same file the [scheduler-interface-spec](./scheduler-interface-spec.md).\nThe build process extracts the messages and the constants from the file. \n\nThe extracted protocol definition with the source code generated from the definition are part of the repository but should not be modified directly. \n\n## Modifying the Interface\nThe messages and constants used in those messages must be updated in the documentation. \nThe messages must be defined in the specification as blocks of type `protobuf` as follows:\n````\n```protobuf\ndefintion following the protobuf specifications\n```\n````\nThose blocks of definitions will be extracted from the specification file and added together to form the protobuf input.\nThe definitions cannot have lines exceeding 200 characters.\n\nThe messages must be defined in the specification as blocks of type `constants` as follows:\n````\n```constants\nconstant(s) definition\n```\n````\nA constant block must be a legal go definition of one or more constants.\nAll blocks will be extracted from the specification file and added together as a go source file.\nThe build process will perform a syntax check on the generated go file.\n\n## How to use \nThe output of this build is required to build the scheduler and the shims for the resource manager(s).\nHowever, to allow building those projects against a predefined interface and without the requirement of generating the interface artifacts in each build the generated artifacts are part of the repository for direct use.\n\n### Go based components\nThe dependent projects can use the interface by importing _github.com/apache/yunikorn-scheduler-interface/lib/go/si_ as part of the code:\n```go\npackage example\n\nimport \"github.com/apache/yunikorn-scheduler-interface/lib/go/si\"\nimport \"github.com/apache/yunikorn-scheduler-interface/lib/go/common\"\n```\n\n### Java based components\nTo be added: currently only the go artifacts will be generated.\n\n## How to build\nThe scheduler interface is a required component for all other components of YuniKorn. For building the scheduler and its shims please check the instructions in the [How to build](https://yunikorn.apache.org/docs/developer_guide/build) section in the yunikorn-core repository.\n\nThe build process will download and install all required tools to build this artifact. Building the interface should only be required if the interface has been modified.\n\nPrerequisite: \n- Go 1.11+\n\nSteps: \n- Run `make` to build.\n\nIncluding the modified interface in other components without updating the repository is possible by replacing the artifact checked out from the repository with the newly generated artifact.\nThe exact procedure is language dependent. Check the build instructions for details. \n\n## How do I contribute code?\n\nThe scheduler interface specification provides the definition for the communication between\ndifferent components in YuniKorn. Changes in the interface have flow on effects in all other\ncomponents.\n\nPlease keep in mind that changes in the interface specification will be highly scrutinised and \nare not really suited as a simple start to become familiar with YuniKorn.\n\nSee how to contribute code in [our website](http://yunikorn.apache.org/community/how_to_contribute).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Fyunikorn-scheduler-interface","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapache%2Fyunikorn-scheduler-interface","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Fyunikorn-scheduler-interface/lists"}