{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":590158156,"defaultBranch":"main","name":"ubicloud","ownerLogin":"ubicloud","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2023-01-17T19:29:00.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/121406468?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1717413819.0","currentOid":""},"activityList":{"items":[{"before":"64845cef69972556da03214af2cb581ecccdbc0e","after":"48004dd2554ca6778c675aaa0561b49a27d5eecb","ref":"refs/heads/retry-e2e-tests","pushedAt":"2024-06-03T12:21:36.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"byucesoy","name":"Burak Yücesoy","path":"/byucesoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2082070?s=80&v=4"},"commit":{"message":"Add retry logic for processes in E2E tests\n\nWe realized that in some cases, respirate exits due to a crash or apoptosis,\nwhich causes foreman to exit and E2E tests to fail. Foreman is programmed to\nexit when one of its child processes exits. It doesn't have any retry logic.\nRecommended way of adding retry logic is combining it with a monitoring tool\nsuch as systemd or upstart. However, we don't need such a complex system for\nour E2E tests. Instead I opted to add retry logic with simple `until` loop.\n\nI didn't add the retry logic for `bin/ci` process we are adding in next step\nof the workflow file, because tests themselves might not be written in a way\nthat allows them to be executed second time.","shortMessageHtmlLink":"Add retry logic for processes in E2E tests"}},{"before":"dd228ace347670b3c2566a801c2e37b2d4fb7ed9","after":"64845cef69972556da03214af2cb581ecccdbc0e","ref":"refs/heads/retry-e2e-tests","pushedAt":"2024-06-03T12:18:33.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"byucesoy","name":"Burak Yücesoy","path":"/byucesoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2082070?s=80&v=4"},"commit":{"message":"Add retry logic for processes in E2E tests\n\nWe realized that in some cases, respirate exits due to a crash or apoptosis,\nwhich causes foreman to exit and E2E tests to fail. Foreman is programmed to\nexit when one of its child processes exits. It doesn't have any retry logic.\nRecommended way of adding retry logic is combining it with a monitoring tool\nsuch as systemd or upstart. However, we don't need such a complex system for\nour E2E tests. Instead I opted to add retry logic with simple `until` loop.","shortMessageHtmlLink":"Add retry logic for processes in E2E tests"}},{"before":"330e5a3e38c1a58cf1457e5730ae3f1a0ca7cd7d","after":"dd228ace347670b3c2566a801c2e37b2d4fb7ed9","ref":"refs/heads/retry-e2e-tests","pushedAt":"2024-06-03T11:27:30.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"byucesoy","name":"Burak Yücesoy","path":"/byucesoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2082070?s=80&v=4"},"commit":{"message":"Retry e2e","shortMessageHtmlLink":"Retry e2e"}},{"before":"3d2880b70b5d867db8eac35b12b025faec7bdfaa","after":"330e5a3e38c1a58cf1457e5730ae3f1a0ca7cd7d","ref":"refs/heads/retry-e2e-tests","pushedAt":"2024-06-03T11:26:27.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"byucesoy","name":"Burak Yücesoy","path":"/byucesoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2082070?s=80&v=4"},"commit":{"message":"Retry e2e","shortMessageHtmlLink":"Retry e2e"}},{"before":null,"after":"3d2880b70b5d867db8eac35b12b025faec7bdfaa","ref":"refs/heads/retry-e2e-tests","pushedAt":"2024-06-03T11:23:39.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"byucesoy","name":"Burak Yücesoy","path":"/byucesoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2082070?s=80&v=4"},"commit":{"message":"Retry e2e","shortMessageHtmlLink":"Retry e2e"}},{"before":"312d895e7574e58ed8ee4f90eed2b8ce5277d555","after":"302ebc5aba7df9b7e4aba19dd4857ae3993326d1","ref":"refs/heads/ubuntu-24","pushedAt":"2024-06-03T07:36:40.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"enescakir","name":"Enes Çakır","path":"/enescakir","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/993199?s=80&v=4"},"commit":{"message":"Add Ubuntu 24.04 LTS support\n\nUbuntu 24.04 (Noble Numbat) was launched in April 2024 as the latest LTS\nrelease following Ubuntu 22.04. It comes with 5 years of support, ending\nin April 2029.\n\nhttps://ubuntu.com/about/release-cycle\n\nLike other cloud providers, we have added support for Ubuntu 24.04 LTS\nto our platform.\n\nI tested the new image and it works as expected.\n\n ubi@vmgsy6jv:~$ lsb_release -a\n No LSB modules are available.\n Distributor ID: Ubuntu\n Description: Ubuntu 24.04 LTS\n Release: 24.04\n Codename: noble\n\n ubi@vmgsy6jv:~$ uname -r\n 6.8.0-31-generic","shortMessageHtmlLink":"Add Ubuntu 24.04 LTS support"}},{"before":"8f3e3dc0363bf5294643d137fd24782e0137b943","after":"312d895e7574e58ed8ee4f90eed2b8ce5277d555","ref":"refs/heads/ubuntu-24","pushedAt":"2024-06-03T07:33:16.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"enescakir","name":"Enes Çakır","path":"/enescakir","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/993199?s=80&v=4"},"commit":{"message":"Add Ubuntu 24.04 LTS support\n\nUbuntu 24.04 (Noble Numbat) was launched in April 2024 as the latest LTS\nrelease following Ubuntu 22.04. It comes with 5 years of support, ending\nin April 2029.\n\nhttps://ubuntu.com/about/release-cycle\n\nLike other cloud providers, we have added support for Ubuntu 24.04 LTS\nto our platform.\n\nI tested the new image and it works as expected.\n\n ubi@vmgsy6jv:~$ lsb_release -a\n No LSB modules are available.\n Distributor ID: Ubuntu\n Description: Ubuntu 24.04 LTS\n Release: 24.04\n Codename: noble\n\n ubi@vmgsy6jv:~$ uname -r\n 6.8.0-31-generic","shortMessageHtmlLink":"Add Ubuntu 24.04 LTS support"}},{"before":"ca3d80107ecd001ec727a005ebfb55b9037aa68e","after":"8f3e3dc0363bf5294643d137fd24782e0137b943","ref":"refs/heads/ubuntu-24","pushedAt":"2024-06-03T07:28:48.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"enescakir","name":"Enes Çakır","path":"/enescakir","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/993199?s=80&v=4"},"commit":{"message":"Test the boot images exposed to customers\n\nSince we disabled Alma Linux 9, our customers can only provision Ubuntu\n22.04 virtual machines. However, with the launch of Ubuntu 24.04,\ncustomers can now provision virtual machines with two different images.\nWe need to test all the boot images exposed to customers to ensure they\nfunction as expected. In the past, we've encountered issues with various\nboot images that we couldn't detect in time. Therefore, it's crucial to\ninclude them in our E2E tests.\n\nThe VmGroup E2E test provisions 3 virtual machines and checks basic\nfeatures like network connectivity. I've updated it to provision virtual\nmachines using a boot image randomly selected from the available\noptions. This way, we can test different combinations of boot images.","shortMessageHtmlLink":"Test the boot images exposed to customers"}},{"before":"5cd79235d85679e938545e1e402fce40f9e8823e","after":"67b2efe319eb0d0d2e15513ff2de541a60f4c1c6","ref":"refs/heads/almalinux-again","pushedAt":"2024-06-03T04:29:31.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"fdr","name":"Daniel Farina","path":"/fdr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7191?s=80&v=4"},"commit":{"message":"Add almalinux-9 and almalinux-8 to boot options for UI\n\nAfter images have been downloaded onto some or all hosts, this patch\npermits showing these choices to the user.","shortMessageHtmlLink":"Add almalinux-9 and almalinux-8 to boot options for UI"}},{"before":"4e02d3fc931d47987e73eeec82b5e37856d8473f","after":"d395269b4512d578eea7ad2b1a27075c06dc2275","ref":"refs/heads/merge-pg-routes","pushedAt":"2024-06-01T09:12:00.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"byucesoy","name":"Burak Yücesoy","path":"/byucesoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2082070?s=80&v=4"},"commit":{"message":"Clean up Postgres endpoint tests\n\nThis is an opportunistic cleanup of some endpoint logic that were being tested\nby both api and web tests. I think with a deeper inspection, we can clean the\ntests up even more, but I only deleted most obvious duplicates for now.","shortMessageHtmlLink":"Clean up Postgres endpoint tests"}},{"before":"07355eb77ac588ee5cd5df718a74ed5895ee73a2","after":"4e02d3fc931d47987e73eeec82b5e37856d8473f","ref":"refs/heads/merge-pg-routes","pushedAt":"2024-06-01T06:01:14.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"byucesoy","name":"Burak Yücesoy","path":"/byucesoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2082070?s=80&v=4"},"commit":{"message":"Clean up Postgres endpoint tests","shortMessageHtmlLink":"Clean up Postgres endpoint tests"}},{"before":"716fc311186c7e5dae431799a08569092067a7d2","after":"07355eb77ac588ee5cd5df718a74ed5895ee73a2","ref":"refs/heads/merge-pg-routes","pushedAt":"2024-06-01T04:01:51.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"byucesoy","name":"Burak Yücesoy","path":"/byucesoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2082070?s=80&v=4"},"commit":{"message":"Cleanup Tests","shortMessageHtmlLink":"Cleanup Tests"}},{"before":null,"after":"716fc311186c7e5dae431799a08569092067a7d2","ref":"refs/heads/merge-pg-routes","pushedAt":"2024-06-01T03:28:41.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"byucesoy","name":"Burak Yücesoy","path":"/byucesoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2082070?s=80&v=4"},"commit":{"message":"combine res pass","shortMessageHtmlLink":"combine res pass"}},{"before":"af4c3ed74cde3bb86d93738c972fbc23af33a7be","after":"f0bfabfa82ec5d7153826ed84950a3b864ce5783","ref":"refs/heads/merge-routes-1","pushedAt":"2024-06-01T00:56:54.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"byucesoy","name":"Burak Yücesoy","path":"/byucesoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2082070?s=80&v=4"},"commit":{"message":"Add helper class for postgres routes\n\nThe business logic in both web and api endpoints are combined in the helper\nclass. Currently the combination is made simply adding a branch for each option\nand copying the business logic from each endpoint to their respective branches.\nRubocop also moved some common lines out of the branches, but other than that\nwe did not try to converge single logic and eliminate the branches as much as\npossible. This is intentional as I wanted to keep this commit as boring and add\na separate commit with the more interesting convergence stuff.\n\nIn its current form, this commit does not provide much benefit and in fact it\nincreases the total line count. However it paves the way for making complex\nimprovements.","shortMessageHtmlLink":"Add helper class for postgres routes"}},{"before":"8232c129bc52e51d24e507ac4d8793f02b9e4160","after":"af4c3ed74cde3bb86d93738c972fbc23af33a7be","ref":"refs/heads/merge-routes-1","pushedAt":"2024-06-01T00:55:46.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"byucesoy","name":"Burak Yücesoy","path":"/byucesoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2082070?s=80&v=4"},"commit":{"message":"Add helper class for postgres routes\n\nThe business logic in both web and api endpoints are combined in the helper\nclass. Currently the combination is made simply adding a branch for each option\nand copying the business logic from each endpoint to their respective branches.\nRubocop also moved some common lines out of the branches, but other than that\nwe did not try to converge single logic and eliminate the branches as much as\npossible. This is intentional as I wanted to keep this commit as boring and add\na separate commit with the more interesting convergence stuff.\n\nIn its current form, this commit does not provide much benefit and in fact it\nincreases the total line count. However it paves the way for making complex\nimprovements.","shortMessageHtmlLink":"Add helper class for postgres routes"}},{"before":null,"after":"8232c129bc52e51d24e507ac4d8793f02b9e4160","ref":"refs/heads/merge-routes-1","pushedAt":"2024-05-31T23:59:34.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"byucesoy","name":"Burak Yücesoy","path":"/byucesoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2082070?s=80&v=4"},"commit":{"message":"x","shortMessageHtmlLink":"x"}},{"before":"82ad9839ec00567b0d587ec6f9a2efebe1a1beca","after":"f6ed6692dd141741fa466bd9e8306c35fe7553da","ref":"refs/heads/dependabot/bundler/ruby-dependencies-49b5f3d30f","pushedAt":"2024-05-31T23:44:56.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"},"commit":{"message":"Bump the ruby-dependencies group across 1 directory with 3 updates\n\nBumps the ruby-dependencies group with 3 updates in the / directory: [stripe](https://github.com/stripe/stripe-ruby), [concurrent-ruby](https://github.com/ruby-concurrency/concurrent-ruby) and [parser](https://github.com/whitequark/parser).\n\n\nUpdates `stripe` from 11.5.0 to 11.6.0\n- [Release notes](https://github.com/stripe/stripe-ruby/releases)\n- [Changelog](https://github.com/stripe/stripe-ruby/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/stripe/stripe-ruby/compare/v11.5.0...v11.6.0)\n\nUpdates `concurrent-ruby` from 1.2.3 to 1.3.1\n- [Release notes](https://github.com/ruby-concurrency/concurrent-ruby/releases)\n- [Changelog](https://github.com/ruby-concurrency/concurrent-ruby/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/ruby-concurrency/concurrent-ruby/compare/v1.2.3...v1.3.1)\n\nUpdates `parser` from 3.3.1.0 to 3.3.2.0\n- [Changelog](https://github.com/whitequark/parser/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/whitequark/parser/compare/v3.3.1.0...v3.3.2.0)\n\n---\nupdated-dependencies:\n- dependency-name: stripe\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: ruby-dependencies\n- dependency-name: concurrent-ruby\n dependency-type: indirect\n update-type: version-update:semver-minor\n dependency-group: ruby-dependencies\n- dependency-name: parser\n dependency-type: indirect\n update-type: version-update:semver-patch\n dependency-group: ruby-dependencies\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump the ruby-dependencies group across 1 directory with 3 updates"}},{"before":"5b6c7eb8efffbc141c012f5a2a3f4038d6fa5515","after":"5cd79235d85679e938545e1e402fce40f9e8823e","ref":"refs/heads/almalinux-again","pushedAt":"2024-05-31T22:17:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"fdr","name":"Daniel Farina","path":"/fdr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7191?s=80&v=4"},"commit":{"message":"Add almalinux-9 and almalinux-8 to boot options for UI\n\nAfter images have been downloaded onto some or all hosts, this patch\npermits showing these choices to the user.","shortMessageHtmlLink":"Add almalinux-9 and almalinux-8 to boot options for UI"}},{"before":"5cd79235d85679e938545e1e402fce40f9e8823e","after":"5b6c7eb8efffbc141c012f5a2a3f4038d6fa5515","ref":"refs/heads/almalinux-again","pushedAt":"2024-05-31T22:17:25.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"fdr","name":"Daniel Farina","path":"/fdr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7191?s=80&v=4"},"commit":{"message":"Reinstate AlmaLinux image downloading with revised versioning\n\nThis is partially a revert of\n69bf5c861656dc4423c5772ffd1747651661f307. But it also modifies the\nversioning to be less specific: AlmaLinux is now requested only by its\nmajor version, e.g. \"9\", not \"9.3\". It also adds almalinux-8, for\nwhich we have some demand, and as it has similar looking URLs and\nconsiderations I thought to include it.\n\nThis method is the most like Ubuntu even though it includes one less\nversion number component. Ubuntu has releases like \"22.04.3\", where\nwe never displayed the last version component. The \"3\" in AlmaLinux\n\"9.3\" is a similar minor version that we don't need to display while\nremaining consistent with Ubuntu.\n\nThat I included the second digit of AlmaLinux before was a mistake I\nmade in the most ancient era: March 2023, whereas the entire code base\nbegan in January 2023, adc109d2ea570a170e71e339304c502b7d03c798.","shortMessageHtmlLink":"Reinstate AlmaLinux image downloading with revised versioning"}},{"before":"7397d86e71696a70d410d1641ec98100aee75965","after":"5cd79235d85679e938545e1e402fce40f9e8823e","ref":"refs/heads/almalinux-again","pushedAt":"2024-05-31T22:14:13.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"fdr","name":"Daniel Farina","path":"/fdr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7191?s=80&v=4"},"commit":{"message":"Add almalinux-9 and almalinux-8 to boot options for UI\n\nAfter images have been downloaded onto some or all hosts, this patch\npermits showing these choices to the user.","shortMessageHtmlLink":"Add almalinux-9 and almalinux-8 to boot options for UI"}},{"before":"d2dad42f3811afc42bf902a8363661f774cf357d","after":"7397d86e71696a70d410d1641ec98100aee75965","ref":"refs/heads/almalinux-again","pushedAt":"2024-05-31T22:09:39.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"fdr","name":"Daniel Farina","path":"/fdr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7191?s=80&v=4"},"commit":{"message":"Add almalinux-9 and almalinux-8 to boot options for UI\n\nAfter images have been downloaded onto some or all hosts, this patch\npermits showing these choices to the user.","shortMessageHtmlLink":"Add almalinux-9 and almalinux-8 to boot options for UI"}},{"before":"170e4b7b5c092130d13f77f60789534dae80a870","after":"d2dad42f3811afc42bf902a8363661f774cf357d","ref":"refs/heads/almalinux-again","pushedAt":"2024-05-31T21:46:33.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"fdr","name":"Daniel Farina","path":"/fdr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7191?s=80&v=4"},"commit":{"message":"Add almalinux 8.9","shortMessageHtmlLink":"Add almalinux 8.9"}},{"before":"e75afdb9ed8ebe72df250e8a9ade1536121f6cdb","after":null,"ref":"refs/heads/user-test","pushedAt":"2024-05-31T16:43:46.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"enescakir","name":"Enes Çakır","path":"/enescakir","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/993199?s=80&v=4"}},{"before":"c213081e4e5df52ba8ff25d307da343b98abf8cc","after":null,"ref":"refs/heads/ubuntu-24-new-version","pushedAt":"2024-05-31T16:43:41.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"enescakir","name":"Enes Çakır","path":"/enescakir","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/993199?s=80&v=4"}},{"before":null,"after":"8c765ed8f2a0992996b2f8f81e9d59ffb620b3c4","ref":"refs/heads/cleanups","pushedAt":"2024-05-31T16:37:48.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"enescakir","name":"Enes Çakır","path":"/enescakir","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/993199?s=80&v=4"},"commit":{"message":"Clean up routes spec helpers\n\n- We had a similar setup and required the same libraries in the\n sub-routes spec helpers. I've now moved them to the main routes spec\n helper.\n- In the API test, we log in using query parameters. Who put the\n password to the query parameters? I've moved it to the body, aligning\n with how it's done in production.\n- When running tests, Octokit displays a warning: \"To use retry\n middleware with Faraday v2.0+, install `faraday-retry` gem\". It seems\n there's a design oversight in the library. I added a warning ignore\n for it. For more information\n https://github.com/octokit/octokit.rb/discussions/1486","shortMessageHtmlLink":"Clean up routes spec helpers"}},{"before":"0cd51c45b1f3ec41e4057be8beb40408582b600b","after":"00ba61a46373dec9fe78bd75f14012af290798b2","ref":"refs/heads/runtime-api","pushedAt":"2024-05-31T16:34:15.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"enescakir","name":"Enes Çakır","path":"/enescakir","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/993199?s=80&v=4"},"commit":{"message":"Introduce runtime API endpoints\n\nUntil now, the controlplane has been passing necessary data to the\ndataplane at the start of operations. However, this approach can't\npre-determine the information needed for future operations. The\ndataplane should be able to request this information from the\ncontrolplane during runtime. I needed this feature for implementing\nGitHub Actions Cache integration. The GitHub runner requires pre-signed\nblob storage URLs for uploading and downloading cache, a decision made\nat runtime. It calculates the required cache keys and versions.\nRather than developing this feature solely for GitHub integration, I\nopted to create a more generic solution. This can be utilized for other\nintegrations as well. The dataplane may need information from the\ncontrolplane or may need to trigger an operation on the controlplane.\n\nWhen a request arrives at the controlplane, we must verify that it\noriginates from our virtual machines and authenticate it. I selected JWT\ntokens for this authentication process, the same method we use for our\ncustomer API. We embed the UBID of the virtual machines into the JWT\ntoken. Thus, if the token signature is valid, we can identify the source\nvirtual machines. One common criticism of JWT tokens is their\nstatelessness; they can't be revoked by default. However, there are\nworkarounds. Firstly, the token is only valid for the lifetime of the\nvirtual machine. Once the runner is destroyed, the token is no longer\nvalid. Additionally, we include a creation date in the token, allowing\nus to set an expiration time. I haven't yet implemented this expiration\nfeature since the runners are typically short-lived. However, it can be\neasily added when we introduce runtime API endpoints for long-lived\nresources.","shortMessageHtmlLink":"Introduce runtime API endpoints"}},{"before":null,"after":"0cd51c45b1f3ec41e4057be8beb40408582b600b","ref":"refs/heads/runtime-api","pushedAt":"2024-05-31T16:12:38.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"enescakir","name":"Enes Çakır","path":"/enescakir","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/993199?s=80&v=4"},"commit":{"message":"add runtime endpoints","shortMessageHtmlLink":"add runtime endpoints"}},{"before":null,"after":"c7b8082679d8b4951d3bd4f1bcd3289eae875bc9","ref":"refs/heads/ben/upgrade_ch","pushedAt":"2024-05-31T15:42:29.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"bsatzger","name":"Benjamin Satzger","path":"/bsatzger","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/53236451?s=80&v=4"},"commit":{"message":"wip","shortMessageHtmlLink":"wip"}},{"before":"0ac44cbf3dd98f80c8de980cb27e74995c3fd878","after":null,"ref":"refs/heads/fix-broken-index","pushedAt":"2024-05-31T15:17:35.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"byucesoy","name":"Burak Yücesoy","path":"/byucesoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2082070?s=80&v=4"}},{"before":"9bb1148896c6188876c22efb1b3e663c57db3577","after":"1a5fa3e0827dd8584e386b82074e3f5babb41abc","ref":"refs/heads/main","pushedAt":"2024-05-31T15:17:34.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"byucesoy","name":"Burak Yücesoy","path":"/byucesoy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2082070?s=80&v=4"},"commit":{"message":"Fix broken billing record index\n\nWe have a partial unique constraint on the resource_id of the billing_record\ntable. However, the index was created with wrong condition. Its condition is\n`WHERE span(upper) = NULL`, which is always false, because in the SQL standard\ncomparison against NULL always returns NULL which is evaluated as false. The\ncorrect form should have been `WHERE span(upper) is NULL`. This means that the\nindex is not used at all. We didn't realized this, because we stopped caring\nabout uniqueness of resource_id in the billing_record table for a while as one\nresource can have multiple active billing records (for different parts of the\nresource such as compute and storage).\n\nAs a fix, I'm recreating the index without the condition. Also I put noop for\ndown migration, because the previous state of the DB also had the index (alas\nwith wrong condition).","shortMessageHtmlLink":"Fix broken billing record index"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEWugrXwA","startCursor":null,"endCursor":null}},"title":"Activity · ubicloud/ubicloud"}