diff --git a/drip/api.gen.go b/drip/api.gen.go index a059d45..5fc535d 100644 --- a/drip/api.gen.go +++ b/drip/api.gen.go @@ -423,6 +423,11 @@ type GetBranchParams struct { RepoName string `form:"repo_name" json:"repo_name"` } +// ComfyNodesBackfillParams defines parameters for ComfyNodesBackfill. +type ComfyNodesBackfillParams struct { + MaxNode *int `form:"max_node,omitempty" json:"max_node,omitempty"` +} + // GetGitcommitParams defines parameters for GetGitcommit. type GetGitcommitParams struct { // CommitId The ID of the commit to fetch data for. @@ -660,7 +665,7 @@ type ServerInterface interface { GetBranch(ctx echo.Context, params GetBranchParams) error // trigger comfy nodes backfill // (POST /comfy-nodes/backfill) - ComfyNodesBackfill(ctx echo.Context) error + ComfyNodesBackfill(ctx echo.Context, params ComfyNodesBackfillParams) error // Retrieve CI data for a given commit // (GET /gitcommit) GetGitcommit(ctx echo.Context, params GetGitcommitParams) error @@ -830,8 +835,17 @@ func (w *ServerInterfaceWrapper) GetBranch(ctx echo.Context) error { func (w *ServerInterfaceWrapper) ComfyNodesBackfill(ctx echo.Context) error { var err error + // Parameter object where we will unmarshal all parameters from the context + var params ComfyNodesBackfillParams + // ------------- Optional query parameter "max_node" ------------- + + err = runtime.BindQueryParameter("form", true, false, "max_node", ctx.QueryParams(), ¶ms.MaxNode) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter max_node: %s", err)) + } + // Invoke the callback with all the unmarshaled arguments - err = w.Handler.ComfyNodesBackfill(ctx) + err = w.Handler.ComfyNodesBackfill(ctx, params) return err } @@ -1902,6 +1916,7 @@ func (response GetBranch500Response) VisitGetBranchResponse(w http.ResponseWrite } type ComfyNodesBackfillRequestObject struct { + Params ComfyNodesBackfillParams } type ComfyNodesBackfillResponseObject interface { @@ -3839,9 +3854,11 @@ func (sh *strictHandler) GetBranch(ctx echo.Context, params GetBranchParams) err } // ComfyNodesBackfill operation middleware -func (sh *strictHandler) ComfyNodesBackfill(ctx echo.Context) error { +func (sh *strictHandler) ComfyNodesBackfill(ctx echo.Context, params ComfyNodesBackfillParams) error { var request ComfyNodesBackfillRequestObject + request.Params = params + handler := func(ctx echo.Context, request interface{}) (interface{}, error) { return sh.ssi.ComfyNodesBackfill(ctx.Request().Context(), request.(ComfyNodesBackfillRequestObject)) } @@ -4874,110 +4891,110 @@ func (sh *strictHandler) GetWorkflowResult(ctx echo.Context, workflowResultId st // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "H4sIAAAAAAAC/+w9a3PbtpZ/BcO9M21mZcnpze3s+ptjJ6nb2vHYcTq9SVYXIiEJCQmwAGhH9fi/7+BF", - "giRAUfJLTjTTaRIBPHidN87BuY5imuWUICJ4tHcd8XiOMqj+uh8LTMmvdHKGeJEK+VPOaI6YwEh1gKrD", - "+DOdjHEif0gQjxnO5a/RXnSUICLwFCMG6BSIOQKf6QSIOeaAKYhgglJKZhwIGg0ischRtBdxwTCZRTcD", - "C54VpCd4VpBVwBdiTlkb7rs5ArrNwo1plmHhhXE5G18ymAWgXCIGZwi8P9s/BgVHCZgs7D5U0DARaIaY", - "BDdhkMTzMYEZakM8gRkqV4pSdAmJADMsgP7KN72YZtOF2sBpCmfcP0vVSe2d6jQEr4azIfjPzk5Kr3bk", - "4v4TAJ1hMZ5DPveDlS3LN9CA8Z2vBHJ02BtEhjiHM+SHYxp7AxM4C0C6IPgrkM1cwCwHV3NEHJDgCnKQ", - "wQRFg2hKWQaFPuCfX3jPOy4SOL5EjCv4zeEOLg73gWlV6OObMCJJx2wRSdRkXQKEHMDGMob9pjvDYsxQ", - "Tv1jyRaOBWULoBDYM1nfMV8Q/FeBAK6oeUpZOVlNye70igJ7N0JyIcHwbIbYuOAoQNiyBVzNKTBdUWKH", - "GvqAZjCeY4LGXEDNHv/B0DTai/5rVHHNkWGZo2Pd+Vz1vRlEklVCgclszBdcIA+TeGt7AN0jeMo5gl86", - "GI1s7s9lcjYmRTYJbVFepClg6K8CcQFMR9+UFmJOSRh7TxfvKIvnSxE4XwjZ7/aAuICsi3JV+x1Sg8SJ", - "YilS/EHZl2lKr84Kcq4/UJ9SKRjGU5yiZQDOdd/XsuvNILoy8HoICdu1vVk35S908hnFQgI+kGLghCao", - "LedjKNCMsoWHeI+AbZSskCE1MKEJApiDFHOBkoFGSknVM0aLXKK77MGHYZEl28ercQv5iQ9ggnKG5CR9", - "KgRJsGziAE9rM68+GoLD8u962gAyBOY4SRABWDP/iyNnLRNKUwSJHtsZrTn4S4bRFDi/2XOTo/zAwbQg", - "SgGCKRYLQBnIC5ZTjrzbhr7miOEMEQHTFdbpfjYAvFDYAAQF8RySGeJyWIYyeglT/wrtJLsxERHBFjs5", - "xUSUy5KjoK8oLkSFNN6lYZIXYix/9igwh2iKiVyX7ARyyGCGBGLcB4gWQkLCfCwR03MgelngEqaFAqk2", - "TaIrngIE4znQEOTGQYXccr5YoExNrL055hfIGFzIfzMkCkYU5XL/hnG7Y3okrrA7TiGTKIBJSdLcN3K1", - "0sDAgT08z1EsaYmrkVUnOQ07hZzRpIgrsRI4KB9PecWY1rDr/CRBAuKU++ShRnige6AEYKI5sUQYOKGF", - "0Pgk4UrcnGNiNokhTtNLdVhitc0JKo77IE4RZACSBMSUxJgjH7mqyayyIWeI55RwD6NFdr/aikg1yfYw", - "UlhjJhncBwOi+uCTZxZvsDhQ6up5kWVQ8/WGZXcHtlGnMSMB6Q6O3Gjr0PdsdoTnRhzuFQajVYAxr7YR", - "JgnWOHxa21CPWKqjWgZzRXRNjVBQoEcBOcQuX6uOs1Rc/EtZzVhJoEA7SonqhdA1nbetOOTFOIY5jLHw", - "KA/vqIApODi9AFRPy2jbXimQYP5lKSzZCdhOfaDO8mKsf/Tt3JvTC8UOhwDNhuDk/dHh0T54h3gKwW//", - "s+uXVVhgmI7jvPBJYdWoVgwvIU7hJEVggqbU4L/UR5WWyoddwOUqw9DVHtwGvNfKsNCljbEOcGtILdda", - "u44rQxlli6VooLv1OX/Kw3aHxIAWOZreGiMuJgURBfgdk+Ir+Gl3uPvCa+DgfDxlCP0dwLIc50C3G5Hr", - "AyJtP2XbjDli2CfF30nDRjfKrTTWIJy5C7d066Nkv+pfCYI2Dw1aBcqrZM0CR6n1E3ZdR2630yuSUpgE", - "vFfaQJWjlB0DQzqmG459B35x9rtkt44KLvsN+zoylHuhZZ4sW34q1XLhYmGXMSgP6b3pKj/GMTKKhAev", - "oJjb9fx+dPDq5PwVkAanNVrMGiu3jXd+YRGZYJ6ncFETlcFl5sUkxXyufQ5dKzwtO0rFRtFet3PV0Kd/", + "H4sIAAAAAAAC/+w9a3PbNrZ/BcO7M23mypLTze7c62+OnWTd1o7HjtPpJrlaiIQkJCTAAqBt1eP/fgcv", + "EiQBipJfcqqZTpMI4MHrvHEOzk0U0yynBBHBo72biMdzlEH11/1YYEp+ppMzxItUyJ9yRnPEBEaqA1Qd", + "xl/pZIwT+UOCeMxwLn+N9qKjBBGBpxgxQKdAzBH4SidAzDEHTEEEE5RSMuNA0GgQiUWOor2IC4bJLLod", + "WPCsID3Bs4KsAr4Qc8racD/MEdBtFm5MswwLL4zL2fiSwSwA5RIxOEPg49n+MSg4SsBkYfehgoaJQDPE", + "JLgJgySejwnMUBviCcxQuVKUoktIBJhhAfRXvunFNJsu1AZOUzjj/lmqTmrvVKcheDOcDcF/dnZSerUj", + "F/efAOgMi/Ec8rkfrGxZvoEGjO98JZCjw94gMsQ5nCE/HNPYG5jAWQDSBcHXQDZzAbMcXM0RcUCCK8hB", + "BhMUDaIpZRkU+oD/+cp73nGRwPElYlzBbw53cHG4D0yrQh/fhBFJOmaLSKIm6xIg5AA2ljHsN90ZFmOG", + "cuofS7ZwLChbAIXAnsn6jvmC4D8KBHBFzVPKyslqSnanVxTYuxGSCwmGZzPExgVHAcKWLeBqToHpihI7", + "1NAHNIPxHBM05gJq9vg3hqbRXvRfo4prjgzLHB3rzueq7+0gkqwSCkxmY77gAnmYxHvbA+gewVPOEfzW", + "wWhkc38uk7MxKbJJaIvyIk0BQ38UiAtgOvqmtBBzSsLYe7r4QFk8X4rA+ULIfncHxAVkXZSr2u+RGiRO", + "FEuR4jfKvk1TenVWkHP9gfqUSsEwnuIULQNwrvu+lV1vB9GVgddDSNiu7c26LX+hk68oFhLwgRQDJzRB", + "bTkfQ4FmlC08xHsEbKNkhQypgQlNEMAcpJgLlAw0UkqqnjFa5BLdZQ8+DIss2T5ejVvIT3wAE5QzJCfp", + "UyFIgmUTB3ham3n10RAcln/X0waQITDHSYIIwJr5Xxw5a5lQmiJI9NjOaM3BXzOMpsD5zZ6bHOUHDqYF", + "UQoQTLFYAMpAXrCccuTdNnSdI4YzRARMV1in+9kA8EJhAxAUxHNIZojLYRnK6CVM/Su0k+zGREQEW+zk", + "FBNRLkuOgq5RXIgKabxLwyQvxFj+7FFgDtEUE7ku2QnkkMEMCcS4DxAthISE+VgipudA9LLAJUwLBVJt", + "mkRXPAUIxnOgIciNgwq55XyxQJmaWHtzzC+QMbiQ/2ZIFIwoyuX+DeN2x/RIXGF3nEImUQCTkqS5b+Rq", + "pYGBA3t4nqNY0hJXI6tOchp2CjmjSRFXYiVwUD6e8oYxrWHX+UmCBMQp98lDjfBA90AJwERzYokwcEIL", + "ofFJwpW4OcfEbBJDnKaX6rDEapsTVBz3QZwiyAAkCYgpiTFHPnJVk1llQ84QzynhHkaL7H61FZFqku1h", + "pLDGTDK4TwZE9cEXzyzeYXGg1NXzIsug5usNy+4ebKNOY0YC0h0cudHWoR/Y7AjPjTjcKwxGqwBjXm0j", + "TBKscfi0tqEesVRHtQzmiuiaGqGgQI8CcohdvlYdZ6m4+JeymrGSQIF2lBLVC6FrOm9bcciLcQxzGGPh", + "UR4+UAFTcHB6AaieltG2vVIgwfzbUliyE7Cd+kCd5cVY/+jbuXenF4odDgGaDcHJx6PDo33wAfEUgl/+", + "Z9cvq7DAMB3HeeGTwqpRrRheQpzCSYrABE2pwX+pjyotlQ+7gMtVhqGrPbgLeK+VYaFLG2Md4NaQWq61", + "dh1XhjLKFkvRQHfrc/6Uh+0OiQEtcjS9NUZcTAoiCvArJsU1+Gl3uPvKa+DgfDxlCP0ZwLIc50C3G5Hr", + "AyJtP2XbjDli2CfFP0jDRjfKrTTWIJy5C7d066Nkv+pfCYI2Dw1aBcqrZM0CR6n1E3ZdR2630yuSUpgE", + "vFfaQJWjlB0DQzqmG459B35x9qtkt44KLvsN+zoylHuhZZ4sW34q1XLhYmGXMSgP6aPpKj/GMTKKhAev", + "oJjb9fx6dPDm5PwNkAanNVrMGiu3jXd+YRGZYJ6ncFETlcFl5sUkxXyufQ5dKzwtO0rFRtFet3PV0Kd/", "AsZ9oXQku8w+B79kU/qZ/vKwXJtf6Qpasw16KKSg112WbqkwHt2+mm6I6M/LxSBSZFKHrH7djwW+lKpA", - "9dMhSpFQHpjqt5eQEJQ4umY1Bxdj2/qBsjJT6jlio5rKXbC2qFRVNPJibhlxtwuBd6lkXUdXOUN8uxYz", + "9dMhSpFQHpjqt9eQEJQ4umY1Bxdj2/qBsjJT6jlio5rKXbC2qFRVNPJibhlxtwuBd6lkXUdXOUN8uxYz", "BAVK9kWAMKBAymhQviZ5htZ1JRUu8/Gwp9KlHBiIJIjEXra/rwxRuU1Sjrh9gTULmoZbf9NoBd9JdSQN", - "/4nfMWJ49QXzkMKHt9rMfkvSxSdgiNN+UR/KoZEwm74F+RrMbVExQ5CHdAbdVvqlDFFrJPYScqcGUm5q", + "/4nfMWJ49QXzkMKn99rMfk/SxRdgiNN+UR/KoZEwm74D+RrMbVExQ5CHdAbdVvqlDFFrJPYScqcGUm5q", "KVIGYErTlF4prQRlkAgc226YzIbguOACTEph5DrIepqp7aU3uEOtscYkai11XlFrMizD03KKSCJn5ml6", - "ncLZbDmjucglQZ1pF/ZKXEdpLrbZGPsTudEuFRt+NFzV2/jHHIk5YjVYS2nFdzyniHHJz/bjGHH+jn5B", + "m8LZbDmjucglQZ1pF/ZKXEdpLrbZGPsTudEuFRt+NFzV2/jbHIk5YjVYS2nFdzyniHHJz/bjGHH+gX5D", "Pt4aZlI1AvNzLCGBrsuvOpye1sMzBPsgk7ZD6enxeFbUJKQaRoTkagkoAt7P1TzFpfujz7WSX/85M6x1", "CJrOAjXnITiARJIgBBxneVrzG/mFuT3EjpPSg+Xm8AFUp28HlD2A9vPJzSwkYH12/iG9eOUqab2xyY9A", - "pcJ3J0h0CwXcnno5oSE4Ej9wAL9g5YOG6k5QHuEQnM9pkSby4FJ6hVgMA/iW0hntVCPLwX7gQHYOWbMT", + "pcJ3L0h0BwXcnno5oSE4Ej9wAL9h5YOG6k5QHuEQnM9pkSby4FJ6hVgMA/iW0hntVCPLwX7gQHYOWbMT", "xDpluuliVfZqDa4Y76VOHyOrCTeFvMXwtpikBYvROKYJKq9915Sl5TQcSVrkOWXCC/QKTTgWAW9nGG3N", - "GlvIewtkMSfgPT9G04BpJFssQ1A3zr7za8Gzt9a9NvJCdu7ejrbobjSVgrvxe4c6Xx+/7cDOgsaNagIw", - "SZjkWnqjMVfbs56J3QPGEv/uMgC+3XWvY1vLl+b1WNrdnltsxxq3Vri5Br69RDOAFOA+Qk3hYTwufNq3", - "OuFYqt39NuRJIALm+0mGSY+bUUWuc8gBlB+AnOFLnKK6uucYMpjv5zmjl71ulzUr4ACaT/wg7wFp20EI", - "DlNoNZ4LyLTW3mp6rXQ1X8sBlXqO8LINye1RXDAsFueSj2kUeYkgQ2y/0NQyUf96bTH31z/eRQMdjKi2", - "R7VWi50LkUc3N8prPdWCCQtJkTqMAeyfHkWOYRU9H+6aiBwCcxztRf8c7g5/igaRJFY1m5E675HyGoyu", - "5R9Hyc3IQOCja/O3E+VQulEIX3iUIaWGKVAcxJDYowZQX7lb93FURgdRcpRIkS8/0XaL6zGREyyvtPc+", - "XEcSh9WkI4sokZ5r5F4DClYgs3vQK0S9gGpLXAneJ90ZcfGSJsrBFlOps6sNgnmeqot0SkafjdVcgaqz", - "jY2yzNuUVL9slbuiftDXuWraP+3urrT83s7em9ad4XsbD6WwJgG8UAbBtEhTpde9uMOp1O+tPZN5CRMb", - "MzYAmFzCFCcmKCOBAg71hJ77hJq+YsB/o0R3+ufDzfo1ZRMVyKNHfvFwI9vDI1SAKS2IWvu/HvLEjoiQ", - "Zk8KOGKXiOkwhhqvVgzH5dIfPklKL2+7NdMCmmsBia3ALsuQpXVSf7Dr5dEnOcLIhCzvXUczJHzmtbRj", - "OYBpaqIEkNYUIJjhS0SUf77NRN8g8dLGQjf4pj9cVSpkU5wKxMBEefoVV/yrQGxRsUXZcWwiWsMsMUFT", - "qILktfsZEkoWGS2MK/niyMNePt2Sd9RZp92n210JtPFknwDVW9oz5RgVuTQPLqdenO6NeyVynSHBMJKi", - "M1WX2gKTWISxQX09Unu/o4X4BMZfpjhVWmhOtSOwji+ll5+/tH1bR+JZpO1cxRBv2e3q7HZTmF2JcOY0", - "TT6EDvWcVHhhOVmFNIaXzbAwEUJ92BkrCB+Az3Si/28C3PlAec9cO44DyDmNsZLtV1jMS3TXo3nZ35ty", - "Lj04YDO5QnFDJOK5wiFJYSGWqPsrpbNTyewRUFFxYDmRgyM9dpgblwDOdUz9yjMgngjplWdhPzzRYmHF", - "KZjANzOJEn9WnkWZ+LPi+LnEMRM4IShghtOGhsm1j8Ij6563gysCm15GaSjRJEfFJE6LRPmz1YS6Rj/H", - "f4dmsNt3CivJ+9a5Prp4/2zT8OoCvosrNvP3PL5fQQVMtcH3dnoKZ7VgRWdDe6kJuhHIBUJMJI33Z3ZB", - "jULf1Ny1TmFpy9UiDOOs83QntLObtQNeBSzMsDDQ+MDgueJ4SikeOIkoeiNsklY3R7cz6anaOplYDb7i", - "zO4BqKCLAa49Of39esz3W2d+d8t2YidOHKP+vKcVYn6vzOfccX2UJ5o4yGSoE2tG869bbUlnKP7Sqa5m", - "+gS4imZSZYTTEs6UwxkmSo2014omjylmlGuttLyY4m0m9DvmYj9Ntcq7hPucOsTlxOboVLD7obCTcjQ9", - "kqbpgpGSuALjpljryWtrFWuPbKh/PLExMC0WVoV/3C056zW3cOUYfsVZkTknp1fkrKMdRFuiXy+G0Aim", - "K5lA7k29OSgYQ0S4zNo7B8VCQmHgzdWUcethUCUX6oYnp9UNr5fKFKJMx53QZB6OpT+wCpex/4Mq1Mkm", - "+hhbzM7m1FW7UNncrrmtnTsMYZKgr2HfzpnuYLmWj4aa/FJ9IFmsvsiqOdSHj+niGW7owekNk/JDE5jU", - "pjmCLJ5jMht2np/udv/C61yNs5VdzZF/Q4sryhKVXqa2qFpvYEhzYivp21sJuZWQWwn5OBLSxjAs5bGS", - "8E1GtoQMAdf54HEZMd5ySpzoePt7iU34dM836r5TUHeXNiv9+7mEVssmTwL3m2gJJgtwdNiLAEaYcAH1", - "PWCIEAx9lU9jlM5B861a/wAgXAbw67w9oPyH5cyC4T1HGoyfbtZII7yzMCDvSxCxL7+m5iwDR1NAMyzU", - "8y7OdjhpDTYWPeTaqhK4HFEMhUSJaC/6v48fk//++HHo/PGPe/Cx3yL85qTEkzLq/nENhobo40U8168b", - "TWBSHowODR1+t0xuU00pa+64UYKS4ibIsiATLrqc3TF0idEVD5vGp5QrCX6mOt5jjGF9IyrlkAvIzKWL", - "k3brpHR67Q8BewUl3p0nfB1N4jD8cE1DggVVWGn429y1+yCWIJFcbnJMmhN0lgCN4jp7h3tkFiwzQpeT", - "iw3xddSDtv/bkQX8voNy23gvCq6U/erb3gZlK0y2GQB23Wl/14Nqvf6GKUw5Gty9Wb7qEj2La+HX78Z6", - "si4rUB7+Q8tDRXDGu/GgRL7ZxK0OSJ6OPRgvNTeCSZfF7NeNYK8xe//x9uHMble1Bz+eUCkpLi6ODp8F", - "FP1yVRtlVndoyv1lYqkCbOVeL0u4S+StSCQ3buxsR8isSuR1YiAfI0PlcXJT7upBkTXzSvyxUQsVd18m", - "WHuSQLY5F505Fy92//fhZvDqq4pjnwGdpaaPDskf+UbyHI1VwOEM+kFSxATEpMlxWpHRK/Gc0XVsv18i", - "sCta2njm44fkLHRjZHiDQW0Zzbea3FUS9wwJo0ksHAoHE8hRAigBWHCg08dD9F1dvHcaz6dVt4ewCWsv", - "yC2zCJ3ns6pZblg2z4aro7UIDAddnGP/dDPo1CerI1tfWeuJEn1Uref3NbDnpQX1yEiYqW4WFm5Tyu40", - "f1YjvzTd0FVFQyESqnPckTofqB/J8V5rHsxR/KV8e6J60cY+d6ReokgZgskCCPgFea4t35sxXPpcennp", - "GUlQYKcbug60fR9UIWo8E8T3y3iVdoALK5D7jke5g/aTAVCeUEDFHLErXHs5quM1tzZiXVjoZsukJsHK", - "DJ5NuFLMMOfSiqn2QT9vpI50M2/YLCbLI4QhYnCjlXpQ4HX5d2OwJOq5w7aQ088gdhCRx0ZwYN+SJF4E", - "3vhR69dT9kmeB9SXq+k86ecQ9DG76BXWhkK27WMhye5DqzxVls4W9Vbz/lbMqxkD1dS4Cw+O6dc6HhDN", - "Hl2bf3DUfgoP8qygzW+pcVVBYF7EgSvr9DWNYjSBJHwR8xKSjVQo9NuR4HzrHnzyMuclJDUc7sbWZjaq", - "P4iGv6bsYfD2aSaj3CJTZHm4C9/Id4qeGneveT5DeRjd/s7el1cbpnlV90MP50LtzNl4Co7T/o9xPWn/", - "ZVxwQbOuwMtu0VFLWOr2pNw7+QzuL5nJm32mso9CjphtKtLT8v7Uo7y9oiFsmD8x1H5MEfNAaYHfmDW/", - "5SZPy4WwjJusIFj7OxS+RQG7dUys4JigDDyBbIGGg+IHDgwnX4EmcsTUdWZXBtAbJE7Lbm/rZMKfKp3c", - "6lU4SF4lWHg9IL2edSiDrpzd30ZdrXAN5GxcvWyJ+6Ll7dzPHXlygbxS/fWq+TRPWZNtZwj09d3JvmtW", - "/bUV4Ma6Aty4rB3Xfo6w2oQPkVEgagOHgH1aK0Xh+S33bs394HhGkL+UqKqqq5ptHdEiN1VEUTPX2kRA", - "rfGm4wm6KuFYbH4SPqltoF4/bdxwNuPpWiHralXm2sxZXO4He1KctjOx4j40/7JGDqno8kfjanv2uL62", - "QDbSAyQ9Pn56gmcGKxnH9jTtWT5bIyly4C/gZQxvSlJdNLuqBgxJ4tTqtdWj6i9mtcZux9SuV+Tr2yPd", - "+3EdeitAb+t2bet2bet2tZyLftYmV+fytsbTPKsqOrfxr2x0DOzWI/LdeUSUjbgk17Fdmp9vNBr3S6ls", - "r2rV+CNv2frv67FNs+anKzfqOZ/eAzXU5qMzhTbgGBI4Q5lc79KsUA/WPcVwdR/x3Lc7rfQJesrRoKt0", - "UUZOeY9xTT+YPuEnFJO19X+tk6jqw5huOu8hVUfX6s9+mXQPzBj8tq+Z7907rfQGfucBYXoTvrGIsDVJ", - "x464w2MdweHN9z4t0tRIZqLqzdVeOFQ2XkxJUsQCWIBAAvRWzbDV+mGIshox8hkm+7OuamyD6OvOjO6Y", - "H1W5u8NCDxl+hjKDZQGX1d95bTxtHUMSqO2ydbp8A9V7LcoChbOKbPRV3w5kAk9hLLofRL5Qnfdt37u6", - "Etbn5VfEdFu9Bm9b8RpE8HI2vmQwC0C5RKqMJsxoQZS59f5s/1iav4nNy2eFq9E5FT10HUVd3NxXLXxS", - "xF+QKNu7i+nqzuBqjhhSP9BCSJQ2xYwZUhU/VQJNayD1/tA4pTM+nsV8rATtnr96o5gDQYEpOAnkJ0OA", - "ZkMw43ujkZ7DjpzWSDaFx2IFGU9TxXd946im2ibqstCsIAGYGRbjOeRz70aadqd0YHtIU6nQ9gmPIpmn", - "H4RsadR0NrPXD2/Kto/Rn3/++efO8fHO4eG7X37ZOz7eOz//98cI/PjT7vOfd57v7jzffbe7u6f++/cz", - "7zyKBLp39c3KNAl0KyG0Pkck6ViDrYZq1/GZTvQz9hcEf1UtXMAsl5D1ojRK//zCi+Gf6WSMEx8nbVZY", - "kIarGc83aQnIVAgfFxwFSFo5na7mtCoN3wUzg/EcE/3K8lIfzLHufK763gwi6sHct83q2g0u4JuEptKx", - "otKS+Dyw9xVGQcCRVAf0DZiEAcQclkV/OXhzcK6I9Ef+TNKpywMCdKq7DEINP/kmnSP4pYMnyua1GGLO", - "xqaWkh+uVLGMYGgVXXJmtxBzSsIUokCpPuWFYY+DyheCsni+FKzstApchnLqK4pSqyHs/bAgK9JWYAaq", - "IHIHS6gKJt8NU9DXG8sI7g9T4/2scJ5Pt4Xfe8pE293rT3GDs9QhlOyq3FtF5nXxUhcDLdFSF+rNCdf2", - "2uHELua38NfD/AZWsSk3c72Iscerw9soGRwjfGmYtdUX6wWhOmqNsapYwy0qk6sZlINz8KPLOp+BKaOZ", - "mp7VfN5g8UsxAbrIu1F4eddTjG+QuODmib17uvlW8D2b/fa3Vd+baNdne716nMgbJDxvjivlCKapfcFq", - "6Gye66Xq+abla8ruYlu3T1tu+tOWtYtEwwWDd4i9qoqYqtpLCos0fCJl7E6nvxJ9zVMVjaw9kg9eWETK", - "hUUqf5DkF91jnZFtkf9bS9LbVRgtp9+zaGrlkiw3BtiemIPnu7vD21YydbyeD1jRdBC5VH8H9Wt6qDEb", - "W9Fmc0vL1BFEs3NOMyQ1LWGKSAeinKwyrZ/jHF3bf5+pfy95tv6PWudeF1ZN+BvzyJ/WOn+lE7MY/5vx", - "GW4o0Q94f2SGf3o1XYzfTr/td6P1XQlAI0nB0mgvmguR873RCOZ4qPySQ8pm0c2nm/8PAAD//1J3+b7O", - "wQAA", + "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", + "L7f/HwAA//+gx42kJ8IAAA==", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/infrastructure/modules/node-pack-extract-trigger/main.tf b/infrastructure/modules/node-pack-extract-trigger/main.tf index 9144ef3..89587e5 100644 --- a/infrastructure/modules/node-pack-extract-trigger/main.tf +++ b/infrastructure/modules/node-pack-extract-trigger/main.tf @@ -88,7 +88,8 @@ resource "google_cloud_scheduler_job" "backfill" { http_target { http_method = "POST" - uri = "${var.registry_backend_url}/comfy-nodes/backfill" + uri = "${var.registry_backend_url}/comfy-nodes/backfill?max_node=${var.backfill_job_max_node}" + oidc_token { service_account_email = data.google_service_account.cloudbuild_service_account.email diff --git a/infrastructure/modules/node-pack-extract-trigger/variable.tf b/infrastructure/modules/node-pack-extract-trigger/variable.tf index d271009..99ae377 100644 --- a/infrastructure/modules/node-pack-extract-trigger/variable.tf +++ b/infrastructure/modules/node-pack-extract-trigger/variable.tf @@ -45,6 +45,12 @@ variable "backfill_job_schedule" { default = "30 3 29 2 *" } +variable "backfill_job_max_node" { + type = number + default = 10 + description = "maximum number of nodes to be backfilled" +} + variable "git_repo_uri" { type = string description = "Connected git repo containing the cloud build pipeline. See https://cloud.google.com/build/docs/repositories" diff --git a/integration-tests/registry_integration_test.go b/integration-tests/registry_integration_test.go index caffa77..a6434e4 100644 --- a/integration-tests/registry_integration_test.go +++ b/integration-tests/registry_integration_test.go @@ -900,6 +900,9 @@ func TestRegistryComfyNode(t *testing.T) { nodeVersionToBeBackfill := []*drip.NodeVersion{ randomNodeVersion(1), randomNodeVersion(2), + randomNodeVersion(3), + randomNodeVersion(4), + randomNodeVersion(5), } for _, nv := range nodeVersionToBeBackfill { _, err = withMiddleware(authz, impl.PublishNodeVersion)(ctx, drip.PublishNodeVersionRequestObject{ @@ -1044,10 +1047,25 @@ func TestRegistryComfyNode(t *testing.T) { }) t.Run("TriggerBackfill", func(t *testing.T) { - impl.mockPubsubService.On("PublishNodePack", mock.Anything, mock.Anything).Return(nil) - res, err := withMiddleware(authz, impl.ComfyNodesBackfill)(ctx, drip.ComfyNodesBackfillRequestObject{}) - require.NoError(t, err, "should return created node version") - require.IsType(t, drip.ComfyNodesBackfill204Response{}, res) - impl.mockPubsubService.AssertNumberOfCalls(t, "PublishNodePack", len(nodeVersionToBeBackfill)) + mockCalled := 0 + t.Run("Unlimited", func(t *testing.T) { + impl.mockPubsubService.On("PublishNodePack", mock.Anything, mock.Anything).Return(nil) + res, err := withMiddleware(authz, impl.ComfyNodesBackfill)(ctx, drip.ComfyNodesBackfillRequestObject{}) + require.NoError(t, err, "should return created node version") + require.IsType(t, drip.ComfyNodesBackfill204Response{}, res) + impl.mockPubsubService.AssertNumberOfCalls(t, "PublishNodePack", len(nodeVersionToBeBackfill)+mockCalled) + mockCalled += len(nodeVersionToBeBackfill) + }) + + t.Run("Limited", func(t *testing.T) { + limit := 2 + impl.mockPubsubService.On("PublishNodePack", mock.Anything, mock.Anything).Return(nil) + res, err := withMiddleware(authz, impl.ComfyNodesBackfill)(ctx, drip.ComfyNodesBackfillRequestObject{Params: drip.ComfyNodesBackfillParams{MaxNode: &limit}}) + require.NoError(t, err, "should return created node version") + require.IsType(t, drip.ComfyNodesBackfill204Response{}, res) + impl.mockPubsubService.AssertNumberOfCalls(t, "PublishNodePack", limit+mockCalled) + mockCalled += limit + }) }) + } diff --git a/node-pack-extract/cloudbuild.yaml b/node-pack-extract/cloudbuild.yaml index 4df866f..7c156ea 100644 --- a/node-pack-extract/cloudbuild.yaml +++ b/node-pack-extract/cloudbuild.yaml @@ -27,8 +27,8 @@ steps: - -c - gcloud auth print-identity-token --audiences="$_REGISTRY_BACKEND_URL" | tee /workspace/token - - name: "gcr.io/cloud-builders/curl" - entrypoint: "bash" + - name: "curlimages/curl" + entrypoint: "sh" args: - -c - | diff --git a/node-pack-extract/test/trigger_test.go b/node-pack-extract/test/trigger_test.go index 07f8032..8c813e3 100644 --- a/node-pack-extract/test/trigger_test.go +++ b/node-pack-extract/test/trigger_test.go @@ -81,7 +81,7 @@ func TestApply(t *testing.T) { require.NoError(t, err) h := j.GetHttpTarget() require.NotNil(t, h) - assert.Contains(t, h.GetUri(), "/comfy-nodes/backfill") + assert.Equal(t, h.GetUri(), "https://stagingapi.comfy.org/comfy-nodes/backfill?max_node=10") assert.Equal(t, http.MethodPost, h.GetHttpMethod().String()) assert.Equal(t, "https://stagingapi.comfy.org", h.GetOidcToken().GetAudience()) assert.Equal(t, serviceAccount, h.GetOidcToken().GetServiceAccountEmail()) diff --git a/openapi.yml b/openapi.yml index df240cd..d01a2f8 100644 --- a/openapi.yml +++ b/openapi.yml @@ -1870,6 +1870,13 @@ paths: operationId: ComfyNodesBackfill tags: - ComfyNodes + parameters: + - in: query + name: max_node + required: false + schema: + type: integer + default: 10 responses: '204': description: Backfill triggered diff --git a/server/implementation/registry.go b/server/implementation/registry.go index d448102..626b1da 100644 --- a/server/implementation/registry.go +++ b/server/implementation/registry.go @@ -1063,7 +1063,7 @@ func (impl *DripStrictServerImplementation) GetComfyNode(ctx context.Context, re func (impl *DripStrictServerImplementation) ComfyNodesBackfill(ctx context.Context, request drip.ComfyNodesBackfillRequestObject) (drip.ComfyNodesBackfillResponseObject, error) { log.Ctx(ctx).Info().Msg("ComfyNodesBackfill request received") - err := impl.RegistryService.TriggerComfyNodesBackfill(ctx, impl.Client) + err := impl.RegistryService.TriggerComfyNodesBackfill(ctx, impl.Client, request.Params.MaxNode) if err != nil { log.Ctx(ctx).Error().Msgf("Failed to trigger comfy nodes backfill w/ err: %v", err) return drip.ComfyNodesBackfill500JSONResponse{Message: "Failed to trigger comfy nodes backfill", Error: err.Error()}, nil diff --git a/services/registry/registry_svc.go b/services/registry/registry_svc.go index 0f612cb..8a325b6 100644 --- a/services/registry/registry_svc.go +++ b/services/registry/registry_svc.go @@ -700,12 +700,15 @@ func (s *RegistryService) GetComfyNode(ctx context.Context, client *ent.Client, return nv.Edges.ComfyNodes[0], nil } -func (s *RegistryService) TriggerComfyNodesBackfill(ctx context.Context, client *ent.Client) error { - nvs, err := client.NodeVersion. +func (s *RegistryService) TriggerComfyNodesBackfill(ctx context.Context, client *ent.Client, max *int) error { + q := client.NodeVersion. Query(). WithStorageFile(). - Where(nodeversion.Not(nodeversion.HasComfyNodes())). - All(ctx) + Where(nodeversion.Not(nodeversion.HasComfyNodes())) + if max != nil { + q.Limit(*max) + } + nvs, err := q.All(ctx) if err != nil { return fmt.Errorf("failed to query node versions: %w", err) }