{"id":18776600,"url":"https://github.com/onsi/auction","last_synced_at":"2025-12-15T16:30:15.082Z","repository":{"id":16822518,"uuid":"19581744","full_name":"onsi/auction","owner":"onsi","description":null,"archived":false,"fork":false,"pushed_at":"2014-05-19T15:48:02.000Z","size":3452,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-12-29T09:28:49.738Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/onsi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-05-08T17:08:03.000Z","updated_at":"2014-05-19T15:48:02.000Z","dependencies_parsed_at":"2022-08-25T16:50:49.300Z","dependency_job_id":null,"html_url":"https://github.com/onsi/auction","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onsi%2Fauction","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onsi%2Fauction/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onsi%2Fauction/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onsi%2Fauction/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/onsi","download_url":"https://codeload.github.com/onsi/auction/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239684301,"owners_count":19680102,"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":[],"created_at":"2024-11-07T19:46:48.016Z","updated_at":"2025-12-15T16:30:15.049Z","avatar_url":"https://github.com/onsi.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Auction\n\nAuction implements the scheduling algorithm for Diego's long running processes.  It does this by codifying two players in the scheduling game:\n\n## The Auctioneer\n\nThe `auctioneer` package provides a variety of auction algorithms.  Diego nodes that play the `auctioneer` role must call `auctioneer.Auction` passing in a valid `types.AuctionRequest` and `types.RepPoolClient` for communciating with the pool of auction representatives.\n\n## The Representatives\n\nThe `auctionrep` package provides an implementation of `AuctionRep`.  These `AuctionRep`s follow the rules of the auction correctly but need to be provided with an `AuctionRepDelegate` that performs the actual work of tracking resources, reserving instances, and starting them running.\n\n## Communication\n\nThe auctioneers must be able to communicate with the auctionreps via some protocol.  The communication package provides implementations for `servers` (to be run on the representative nodes) and `clients` to be constructed and used on the `auctioneer` node.\n\nCurrently `Auction` provides two remote communication packages: `nats` and `rabbit`.\n\n## Simulation\n\nBecause communication has been separated from implementation, and because the implementation of the auctioneer and auctionrep has been built to be reusable, it is possible to construct a comprehensive simulation to test the various scheduling algorithms, using various communication schemes, on various infrastructures.\n\nThis is done in the simulation package which is the defacto \"test suite\" that ensures the auction is played correctly.  As new scheduling features are added, a corresponding simulation should be added to the simulation suite.\n\nIn addition to `nats` and `rabbit`, the simulation suite provides an *inprocess* means of communication.  This allows a feel of representatives and auctioneers to be started as goroutines in-process and allows for rapid iteration on the underlying scheduling algorithm.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonsi%2Fauction","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fonsi%2Fauction","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonsi%2Fauction/lists"}