Browse Source

upload model

pull/3134/head
lewis 2 years ago
parent
commit
e28644e8d9
100 changed files with 295 additions and 53 deletions
  1. +6
    -6
      go.mod
  2. +21
    -19
      go.sum
  3. +1
    -0
      models/models.go
  4. +52
    -0
      models/schedule_record.go
  5. +14
    -0
      modules/cron/tasks_basic.go
  6. +31
    -8
      modules/grampus/grampus.go
  7. +22
    -1
      modules/setting/setting.go
  8. +2
    -2
      modules/urfs_client/dfstore/dfstore.go
  9. +5
    -0
      modules/urfs_client/objectstorage/mocks/objectstorage_mock.go
  10. +116
    -0
      modules/urfs_client/urchin/schedule.go
  11. +16
    -8
      modules/urfs_client/urchin/urchinfs.go
  12. +4
    -1
      routers/api/v1/repo/modelarts.go
  13. +4
    -1
      routers/repo/cloudbrain.go
  14. +1
    -7
      routers/repo/grampus.go
  15. +0
    -0
      vendor/cloud.google.com/go/LICENSE
  16. +0
    -0
      vendor/cloud.google.com/go/compute/metadata/metadata.go
  17. +0
    -0
      vendor/cloud.google.com/go/iam/iam.go
  18. +0
    -0
      vendor/cloud.google.com/go/internal/optional/optional.go
  19. +0
    -0
      vendor/cloud.google.com/go/internal/version/update_version.sh
  20. +0
    -0
      vendor/cloud.google.com/go/internal/version/version.go
  21. +0
    -0
      vendor/cloud.google.com/go/pubsub/README.md
  22. +0
    -0
      vendor/cloud.google.com/go/pubsub/apiv1/README.md
  23. +0
    -0
      vendor/cloud.google.com/go/pubsub/apiv1/doc.go
  24. +0
    -0
      vendor/cloud.google.com/go/pubsub/apiv1/iam.go
  25. +0
    -0
      vendor/cloud.google.com/go/pubsub/apiv1/path_funcs.go
  26. +0
    -0
      vendor/cloud.google.com/go/pubsub/apiv1/publisher_client.go
  27. +0
    -0
      vendor/cloud.google.com/go/pubsub/apiv1/subscriber_client.go
  28. +0
    -0
      vendor/cloud.google.com/go/pubsub/debug.go
  29. +0
    -0
      vendor/cloud.google.com/go/pubsub/doc.go
  30. +0
    -0
      vendor/cloud.google.com/go/pubsub/flow_controller.go
  31. +0
    -0
      vendor/cloud.google.com/go/pubsub/internal/distribution/distribution.go
  32. +0
    -0
      vendor/cloud.google.com/go/pubsub/iterator.go
  33. +0
    -0
      vendor/cloud.google.com/go/pubsub/message.go
  34. +0
    -0
      vendor/cloud.google.com/go/pubsub/nodebug.go
  35. +0
    -0
      vendor/cloud.google.com/go/pubsub/pubsub.go
  36. +0
    -0
      vendor/cloud.google.com/go/pubsub/pullstream.go
  37. +0
    -0
      vendor/cloud.google.com/go/pubsub/service.go
  38. +0
    -0
      vendor/cloud.google.com/go/pubsub/snapshot.go
  39. +0
    -0
      vendor/cloud.google.com/go/pubsub/subscription.go
  40. +0
    -0
      vendor/cloud.google.com/go/pubsub/topic.go
  41. +0
    -0
      vendor/cloud.google.com/go/pubsub/trace.go
  42. +0
    -0
      vendor/gitea.com/jolheiser/gitea-vet/.gitignore
  43. +0
    -0
      vendor/gitea.com/jolheiser/gitea-vet/LICENSE
  44. +0
    -0
      vendor/gitea.com/jolheiser/gitea-vet/Makefile
  45. +0
    -0
      vendor/gitea.com/jolheiser/gitea-vet/README.md
  46. +0
    -0
      vendor/gitea.com/jolheiser/gitea-vet/checks/imports.go
  47. +0
    -0
      vendor/gitea.com/jolheiser/gitea-vet/checks/license.go
  48. +0
    -0
      vendor/gitea.com/jolheiser/gitea-vet/go.mod
  49. +0
    -0
      vendor/gitea.com/jolheiser/gitea-vet/go.sum
  50. +0
    -0
      vendor/gitea.com/jolheiser/gitea-vet/main.go
  51. +0
    -0
      vendor/gitea.com/lunny/levelqueue/.drone.yml
  52. +0
    -0
      vendor/gitea.com/lunny/levelqueue/.gitignore
  53. +0
    -0
      vendor/gitea.com/lunny/levelqueue/LICENSE
  54. +0
    -0
      vendor/gitea.com/lunny/levelqueue/README.md
  55. +0
    -0
      vendor/gitea.com/lunny/levelqueue/error.go
  56. +0
    -0
      vendor/gitea.com/lunny/levelqueue/go.mod
  57. +0
    -0
      vendor/gitea.com/lunny/levelqueue/go.sum
  58. +0
    -0
      vendor/gitea.com/lunny/levelqueue/queue.go
  59. +0
    -0
      vendor/gitea.com/lunny/levelqueue/set.go
  60. +0
    -0
      vendor/gitea.com/lunny/levelqueue/uniquequeue.go
  61. +0
    -0
      vendor/gitea.com/macaron/binding/.drone.yml
  62. +0
    -0
      vendor/gitea.com/macaron/binding/.gitignore
  63. +0
    -0
      vendor/gitea.com/macaron/binding/LICENSE
  64. +0
    -0
      vendor/gitea.com/macaron/binding/README.md
  65. +0
    -0
      vendor/gitea.com/macaron/binding/binding.go
  66. +0
    -0
      vendor/gitea.com/macaron/binding/errors.go
  67. +0
    -0
      vendor/gitea.com/macaron/binding/go.mod
  68. +0
    -0
      vendor/gitea.com/macaron/binding/go.sum
  69. +0
    -0
      vendor/gitea.com/macaron/cache/.drone.yml
  70. +0
    -0
      vendor/gitea.com/macaron/cache/.gitignore
  71. +0
    -0
      vendor/gitea.com/macaron/cache/LICENSE
  72. +0
    -0
      vendor/gitea.com/macaron/cache/README.md
  73. +0
    -0
      vendor/gitea.com/macaron/cache/cache.go
  74. +0
    -0
      vendor/gitea.com/macaron/cache/file.go
  75. +0
    -0
      vendor/gitea.com/macaron/cache/go.mod
  76. +0
    -0
      vendor/gitea.com/macaron/cache/go.sum
  77. +0
    -0
      vendor/gitea.com/macaron/cache/memcache/memcache.go
  78. +0
    -0
      vendor/gitea.com/macaron/cache/memcache/memcache.goconvey
  79. +0
    -0
      vendor/gitea.com/macaron/cache/memory.go
  80. +0
    -0
      vendor/gitea.com/macaron/cache/redis/redis.go
  81. +0
    -0
      vendor/gitea.com/macaron/cache/redis/redis.goconvey
  82. +0
    -0
      vendor/gitea.com/macaron/cache/utils.go
  83. +0
    -0
      vendor/gitea.com/macaron/captcha/.drone.yml
  84. +0
    -0
      vendor/gitea.com/macaron/captcha/LICENSE
  85. +0
    -0
      vendor/gitea.com/macaron/captcha/README.md
  86. +0
    -0
      vendor/gitea.com/macaron/captcha/captcha.go
  87. +0
    -0
      vendor/gitea.com/macaron/captcha/go.mod
  88. +0
    -0
      vendor/gitea.com/macaron/captcha/go.sum
  89. +0
    -0
      vendor/gitea.com/macaron/captcha/image.go
  90. +0
    -0
      vendor/gitea.com/macaron/captcha/siprng.go
  91. +0
    -0
      vendor/gitea.com/macaron/cors/.drone.yml
  92. +0
    -0
      vendor/gitea.com/macaron/cors/.gitignore
  93. +0
    -0
      vendor/gitea.com/macaron/cors/LICENSE
  94. +0
    -0
      vendor/gitea.com/macaron/cors/README.md
  95. +0
    -0
      vendor/gitea.com/macaron/cors/cors.go
  96. +0
    -0
      vendor/gitea.com/macaron/cors/go.mod
  97. +0
    -0
      vendor/gitea.com/macaron/cors/go.sum
  98. +0
    -0
      vendor/gitea.com/macaron/csrf/.drone.yml
  99. +0
    -0
      vendor/gitea.com/macaron/csrf/LICENSE
  100. +0
    -0
      vendor/gitea.com/macaron/csrf/README.md

+ 6
- 6
go.mod View File

@@ -51,6 +51,7 @@ require (
github.com/go-enry/go-enry/v2 v2.3.0 github.com/go-enry/go-enry/v2 v2.3.0
github.com/go-git/go-billy/v5 v5.0.0 github.com/go-git/go-billy/v5 v5.0.0
github.com/go-git/go-git/v5 v5.0.0 github.com/go-git/go-git/v5 v5.0.0
github.com/go-http-utils/headers v0.0.0-20181008091004-fed159eddc2a
github.com/go-ini/ini v1.56.0 // indirect github.com/go-ini/ini v1.56.0 // indirect
github.com/go-macaron/auth v0.0.0-20161228062157-884c0e6c9b92 github.com/go-macaron/auth v0.0.0-20161228062157-884c0e6c9b92
github.com/go-openapi/jsonreference v0.19.3 // indirect github.com/go-openapi/jsonreference v0.19.3 // indirect
@@ -61,6 +62,7 @@ require (
github.com/gobwas/glob v0.2.3 github.com/gobwas/glob v0.2.3
github.com/gogs/chardet v0.0.0-20191104214054-4b6791f73a28 github.com/gogs/chardet v0.0.0-20191104214054-4b6791f73a28
github.com/gogs/cron v0.0.0-20171120032916-9f6c956d3e14 github.com/gogs/cron v0.0.0-20171120032916-9f6c956d3e14
github.com/golang/mock v1.6.0 // indirect
github.com/golang/protobuf v1.4.1 // indirect github.com/golang/protobuf v1.4.1 // indirect
github.com/gomodule/redigo v2.0.0+incompatible github.com/gomodule/redigo v2.0.0+incompatible
github.com/google/go-github/v24 v24.0.1 github.com/google/go-github/v24 v24.0.1
@@ -105,7 +107,6 @@ require (
github.com/prometheus/procfs v0.0.4 // indirect github.com/prometheus/procfs v0.0.4 // indirect
github.com/quasoft/websspi v1.0.0 github.com/quasoft/websspi v1.0.0
github.com/remyoudompheng/bigfft v0.0.0-20190321074620-2f0d2b0e0001 // indirect github.com/remyoudompheng/bigfft v0.0.0-20190321074620-2f0d2b0e0001 // indirect
github.com/robfig/cron/v3 v3.0.1
github.com/satori/go.uuid v1.2.0 github.com/satori/go.uuid v1.2.0
github.com/sergi/go-diff v1.1.0 github.com/sergi/go-diff v1.1.0
github.com/shurcooL/httpfs v0.0.0-20190527155220-6a4d4a70508b // indirect github.com/shurcooL/httpfs v0.0.0-20190527155220-6a4d4a70508b // indirect
@@ -125,13 +126,12 @@ require (
github.com/yuin/goldmark-highlighting v0.0.0-20220208100518-594be1970594 github.com/yuin/goldmark-highlighting v0.0.0-20220208100518-594be1970594
github.com/yuin/goldmark-meta v1.1.0 github.com/yuin/goldmark-meta v1.1.0
golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37 golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37
golang.org/x/mod v0.3.0 // indirect
golang.org/x/net v0.0.0-20200513185701-a91f0712d120
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d
golang.org/x/sys v0.0.0-20200509044756-6aff5f38e54f
golang.org/x/text v0.3.2
golang.org/x/sys v0.0.0-20210510120138-977fb7262007
golang.org/x/text v0.3.3
golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1 // indirect golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1 // indirect
golang.org/x/tools v0.0.0-20200515220128-d3bf790afa53
golang.org/x/tools v0.1.1
google.golang.org/appengine v1.6.5 // indirect google.golang.org/appengine v1.6.5 // indirect
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
gopkg.in/asn1-ber.v1 v1.0.0-20150924051756-4e86f4367175 // indirect gopkg.in/asn1-ber.v1 v1.0.0-20150924051756-4e86f4367175 // indirect


+ 21
- 19
go.sum View File

@@ -262,6 +262,8 @@ github.com/go-git/go-git-fixtures/v4 v4.0.1 h1:q+IFMfLx200Q3scvt2hN79JsEzy4AmBTp
github.com/go-git/go-git-fixtures/v4 v4.0.1/go.mod h1:m+ICp2rF3jDhFgEZ/8yziagdT1C+ZpZcrJjappBCDSw= github.com/go-git/go-git-fixtures/v4 v4.0.1/go.mod h1:m+ICp2rF3jDhFgEZ/8yziagdT1C+ZpZcrJjappBCDSw=
github.com/go-git/go-git/v5 v5.0.0 h1:k5RWPm4iJwYtfWoxIJy4wJX9ON7ihPeZZYC1fLYDnpg= github.com/go-git/go-git/v5 v5.0.0 h1:k5RWPm4iJwYtfWoxIJy4wJX9ON7ihPeZZYC1fLYDnpg=
github.com/go-git/go-git/v5 v5.0.0/go.mod h1:oYD8y9kWsGINPFJoLdaScGCN6dlKg23blmClfZwtUVA= github.com/go-git/go-git/v5 v5.0.0/go.mod h1:oYD8y9kWsGINPFJoLdaScGCN6dlKg23blmClfZwtUVA=
github.com/go-http-utils/headers v0.0.0-20181008091004-fed159eddc2a h1:v6zMvHuY9yue4+QkG/HQ/W67wvtQmWJ4SDo9aK/GIno=
github.com/go-http-utils/headers v0.0.0-20181008091004-fed159eddc2a/go.mod h1:I79BieaU4fxrw4LMXby6q5OS9XnoR9UIKLOzDFjUmuw=
github.com/go-ini/ini v1.56.0 h1:6HjxSjqdmgnujDPhlzR4a44lxK3w03WPN8te0SoUSeM= github.com/go-ini/ini v1.56.0 h1:6HjxSjqdmgnujDPhlzR4a44lxK3w03WPN8te0SoUSeM=
github.com/go-ini/ini v1.56.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-ini/ini v1.56.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8=
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
@@ -358,7 +360,10 @@ github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4er
github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.3.1 h1:qGJ6qTW+x6xX/my+8YUVl4WNpX9B7+/l2tRsHGZ7f2s=
github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=
github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
@@ -404,8 +409,8 @@ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5m
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gopherjs/gopherjs v0.0.0-20190430165422-3e4dfb77656c/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20190430165422-3e4dfb77656c/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gopherjs/gopherjs v0.0.0-20190910122728-9d188e94fb99 h1:twflg0XRTjwKpxb/jFExr4HGq6on2dEOmnL6FV+fgPw=
github.com/gopherjs/gopherjs v0.0.0-20190910122728-9d188e94fb99/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20190910122728-9d188e94fb99/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 h1:l5lAOZEym3oK3SQ2HBHWsJUfbNBiTXJDeW2QDxw9AQ0=
github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8= github.com/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8=
github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
@@ -468,7 +473,6 @@ github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqx
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns=
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68= github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68=
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
@@ -662,8 +666,6 @@ github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqn
github.com/rcrowley/go-metrics v0.0.0-20190826022208-cac0b30c2563/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20190826022208-cac0b30c2563/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/remyoudompheng/bigfft v0.0.0-20190321074620-2f0d2b0e0001 h1:YDeskXpkNDhPdWN3REluVa46HQOVuVkjkd2sWnrABNQ= github.com/remyoudompheng/bigfft v0.0.0-20190321074620-2f0d2b0e0001 h1:YDeskXpkNDhPdWN3REluVa46HQOVuVkjkd2sWnrABNQ=
github.com/remyoudompheng/bigfft v0.0.0-20190321074620-2f0d2b0e0001/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/remyoudompheng/bigfft v0.0.0-20190321074620-2f0d2b0e0001/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo=
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
@@ -711,14 +713,12 @@ github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPx
github.com/sirupsen/logrus v1.5.0/go.mod h1:+F7Ogzej0PZc/94MaYx/nvG9jOFMD2osvC3s+Squfpo= github.com/sirupsen/logrus v1.5.0/go.mod h1:+F7Ogzej0PZc/94MaYx/nvG9jOFMD2osvC3s+Squfpo=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
github.com/smartystreets/assertions v0.0.0-20190116191733-b6c0e53d7304/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/assertions v0.0.0-20190116191733-b6c0e53d7304/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
github.com/smartystreets/assertions v1.0.1 h1:voD4ITNjPL5jjBfgR/r8fPIIBrliWrWHeiJApdr3r4w=
github.com/smartystreets/assertions v1.0.1/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM= github.com/smartystreets/assertions v1.0.1/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM=
github.com/smartystreets/assertions v1.1.0 h1:MkTeG1DMwsrdH7QtLXy5W+fUxWq+vmb6cLmyJ7aRtF0= github.com/smartystreets/assertions v1.1.0 h1:MkTeG1DMwsrdH7QtLXy5W+fUxWq+vmb6cLmyJ7aRtF0=
github.com/smartystreets/assertions v1.1.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo= github.com/smartystreets/assertions v1.1.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo=
github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM=
github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s=
github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
github.com/smartystreets/goconvey v0.0.0-20190731233626-505e41936337 h1:WN9BUFbdyOsSH/XohnWpXOlq9NBD5sGAB2FciQMUEe8=
github.com/smartystreets/goconvey v0.0.0-20190731233626-505e41936337/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v0.0.0-20190731233626-505e41936337/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
@@ -749,7 +749,6 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
@@ -804,20 +803,16 @@ github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
github.com/yohcop/openid-go v1.0.0 h1:EciJ7ZLETHR3wOtxBvKXx9RV6eyHZpCaSZ1inbBaUXE= github.com/yohcop/openid-go v1.0.0 h1:EciJ7ZLETHR3wOtxBvKXx9RV6eyHZpCaSZ1inbBaUXE=
github.com/yohcop/openid-go v1.0.0/go.mod h1:/408xiwkeItSPJZSTPF7+VtZxPkPrRRpRNK2vjGh6yI= github.com/yohcop/openid-go v1.0.0/go.mod h1:/408xiwkeItSPJZSTPF7+VtZxPkPrRRpRNK2vjGh6yI=
github.com/yuin/goldmark v1.1.7/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.27 h1:nqDD4MMMQA0lmWq03Z2/myGPYLQoXtmi0rGVs95ntbo=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.30 h1:j4d4Lw3zqZelDhBksEo3BnWg9xhXRQGJPPSL6OApZjI=
github.com/yuin/goldmark v1.1.30/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.30/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
github.com/yuin/goldmark v1.4.5/go.mod h1:rmuwmfZ0+bvzB24eSC//bk1R1Zp3hM0OXYv/G2LIilg= github.com/yuin/goldmark v1.4.5/go.mod h1:rmuwmfZ0+bvzB24eSC//bk1R1Zp3hM0OXYv/G2LIilg=
github.com/yuin/goldmark v1.4.6/go.mod h1:rmuwmfZ0+bvzB24eSC//bk1R1Zp3hM0OXYv/G2LIilg= github.com/yuin/goldmark v1.4.6/go.mod h1:rmuwmfZ0+bvzB24eSC//bk1R1Zp3hM0OXYv/G2LIilg=
github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
github.com/yuin/goldmark-highlighting v0.0.0-20220208100518-594be1970594 h1:yHfZyN55+5dp1wG7wDKv8HQ044moxkyGq12KFFMFDxg= github.com/yuin/goldmark-highlighting v0.0.0-20220208100518-594be1970594 h1:yHfZyN55+5dp1wG7wDKv8HQ044moxkyGq12KFFMFDxg=
github.com/yuin/goldmark-highlighting v0.0.0-20220208100518-594be1970594/go.mod h1:U9ihbh+1ZN7fR5Se3daSPoz1CGF9IYtSvWwVQtnzGHU= github.com/yuin/goldmark-highlighting v0.0.0-20220208100518-594be1970594/go.mod h1:U9ihbh+1ZN7fR5Se3daSPoz1CGF9IYtSvWwVQtnzGHU=
github.com/yuin/goldmark-meta v0.0.0-20191126180153-f0638e958b60 h1:gZucqLjL1eDzVWrXj4uiWeMbAopJlBR2mKQAsTGdPwo=
github.com/yuin/goldmark-meta v0.0.0-20191126180153-f0638e958b60/go.mod h1:i9VhcIHN2PxXMbQrKqXNueok6QNONoPjNMoj9MygVL0=
github.com/yuin/goldmark-meta v1.1.0 h1:pWw+JLHGZe8Rk0EGsMVssiNb/AaPMHfSRszZeUeiOUc= github.com/yuin/goldmark-meta v1.1.0 h1:pWw+JLHGZe8Rk0EGsMVssiNb/AaPMHfSRszZeUeiOUc=
github.com/yuin/goldmark-meta v1.1.0/go.mod h1:U4spWENafuA7Zyg+Lj5RqK/MF+ovMYtBvXi1lBb2VP0= github.com/yuin/goldmark-meta v1.1.0/go.mod h1:U4spWENafuA7Zyg+Lj5RqK/MF+ovMYtBvXi1lBb2VP0=
github.com/ziutek/mymysql v1.5.4 h1:GB0qdRGsTwQSBVYuVShFBKaXSnSnYYC2d9knnE1LHFs= github.com/ziutek/mymysql v1.5.4 h1:GB0qdRGsTwQSBVYuVShFBKaXSnSnYYC2d9knnE1LHFs=
@@ -859,14 +854,11 @@ golang.org/x/crypto v0.0.0-20190927123631-a832865fa7ad/go.mod h1:yigFU9vqHzYiE8U
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191219195013-becbf705a915/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20191219195013-becbf705a915/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200429183012-4b2356b1ed79 h1:IaQbIIB2X/Mp/DKctl6ROxz1KyMlKp4uyvL6+kQ7C88=
golang.org/x/crypto v0.0.0-20200429183012-4b2356b1ed79/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37 h1:cg5LA/zNPRzIXIWSCxQW10Rvpy94aQh3LT/ShoCpkHw= golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37 h1:cg5LA/zNPRzIXIWSCxQW10Rvpy94aQh3LT/ShoCpkHw=
golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a h1:gHevYm0pO4QUbwy8Dmdr01R5r1BuKtfYqRqF0h/Cbh0=
golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8 h1:hVwzHzIUGRjiF7EcUjqNxk3NCfkPxbDKRdnNE1Rpg0U= golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8 h1:hVwzHzIUGRjiF7EcUjqNxk3NCfkPxbDKRdnNE1Rpg0U=
golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
@@ -882,6 +874,8 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4= golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -913,6 +907,7 @@ golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLL
golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200513185701-a91f0712d120 h1:EZ3cVSzKOlJxAd8e8YAJ7no8nNypTxexh/YE/xW3ZEY= golang.org/x/net v0.0.0-20200513185701-a91f0712d120 h1:EZ3cVSzKOlJxAd8e8YAJ7no8nNypTxexh/YE/xW3ZEY=
golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/oauth2 v0.0.0-20180620175406-ef147856a6dd/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180620175406-ef147856a6dd/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
@@ -929,10 +924,10 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a h1:WXEvlFVvvGxCJLG6REjsT03iWnKLEWinaScsxF2Vm2o= golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a h1:WXEvlFVvvGxCJLG6REjsT03iWnKLEWinaScsxF2Vm2o=
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20180824143301-4910a1d54f87/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180824143301-4910a1d54f87/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -967,10 +962,16 @@ golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200509044756-6aff5f38e54f h1:mOhmO9WsBaJCNmaZHPtHs9wOcdqdKCjF6OPJlmDM3KI= golang.org/x/sys v0.0.0-20200509044756-6aff5f38e54f h1:mOhmO9WsBaJCNmaZHPtHs9wOcdqdKCjF6OPJlmDM3KI=
golang.org/x/sys v0.0.0-20200509044756-6aff5f38e54f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200509044756-6aff5f38e54f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210510120138-977fb7262007 h1:gG67DSER+11cZvqIMb8S8bt0vZtiN6xWYARwirrOSfE=
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -1001,10 +1002,14 @@ golang.org/x/tools v0.0.0-20200325010219-a49f79bcc224/go.mod h1:Sl4aGygMT6LrqrWc
golang.org/x/tools v0.0.0-20200509030707-2212a7e161a5/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200509030707-2212a7e161a5/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200515220128-d3bf790afa53 h1:vmsb6v0zUdmUlXfwKaYrHPPRCV0lHq/IwNIf0ASGjyQ= golang.org/x/tools v0.0.0-20200515220128-d3bf790afa53 h1:vmsb6v0zUdmUlXfwKaYrHPPRCV0lHq/IwNIf0ASGjyQ=
golang.org/x/tools v0.0.0-20200515220128-d3bf790afa53/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515220128-d3bf790afa53/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.1.1 h1:wGiQel/hW0NnEkJUk8lbzkX2gFJU6PFxf1v5OlCfuOs=
golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0=
google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0=
google.golang.org/api v0.0.0-20181220000619-583d854617af/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.0.0-20181220000619-583d854617af/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0=
@@ -1076,8 +1081,6 @@ gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.44.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.44.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.44.2/go.mod h1:M3Cogqpuv0QCi3ExAY5V4uOt4qb/R3xZubo9m8lK5wg= gopkg.in/ini.v1 v1.44.2/go.mod h1:M3Cogqpuv0QCi3ExAY5V4uOt4qb/R3xZubo9m8lK5wg=
gopkg.in/ini.v1 v1.46.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.46.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.52.0 h1:j+Lt/M1oPPejkniCg1TkWE2J3Eh1oZTsHSXzMTzUXn4=
gopkg.in/ini.v1 v1.52.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.56.0 h1:DPMeDvGTM54DXbPkVIZsp19fp/I2K7zwA/itHYHKo8Y= gopkg.in/ini.v1 v1.56.0 h1:DPMeDvGTM54DXbPkVIZsp19fp/I2K7zwA/itHYHKo8Y=
gopkg.in/ini.v1 v1.56.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.56.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ldap.v3 v3.0.2 h1:R6RBtabK6e1GO0eQKtkyOFbAHO73QesLzI2w2DZ6b9w= gopkg.in/ldap.v3 v3.0.2 h1:R6RBtabK6e1GO0eQKtkyOFbAHO73QesLzI2w2DZ6b9w=
@@ -1098,7 +1101,6 @@ gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bl
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=


+ 1
- 0
models/models.go View File

@@ -161,6 +161,7 @@ func init() {
new(CloudbrainSpec), new(CloudbrainSpec),
new(CloudbrainTemp), new(CloudbrainTemp),
new(DatasetReference), new(DatasetReference),
new(ScheduleRecord),
) )


tablesStatistic = append(tablesStatistic, tablesStatistic = append(tablesStatistic,


+ 52
- 0
models/schedule_record.go View File

@@ -0,0 +1,52 @@
package models

import (
"time"

"code.gitea.io/gitea/modules/timeutil"
)

const (
StorageScheduleSucceed int = iota
StorageScheduleProcessing
StorageScheduleFailed
)

type ScheduleRecord struct {
ID int64 `xorm:"pk autoincr"`
CloudbrainID int64 `xorm:"INDEX NOT NULL unique"`
EndPoint string `xorm:"INDEX NOT NULL"`
Bucket string `xorm:"INDEX NOT NULL"`
ObjectKey string `xorm:"INDEX NOT NULL"`
ProxyServer string `xorm:"INDEX NOT NULL"`
Status int `xorm:"INDEX NOT NULL DEFAULT 0"`
CreatedUnix timeutil.TimeStamp `xorm:"created"`
UpdatedUnix timeutil.TimeStamp `xorm:"updated"`
DeletedAt time.Time `xorm:"deleted"`
}

func updateScheduleCols(e Engine, record *ScheduleRecord, cols ...string) error {
_, err := e.ID(record.ID).Cols(cols...).Update(record)
return err
}

func UpdateScheduleCols(record *ScheduleRecord, cols ...string) error {
return updateScheduleCols(x, record, cols...)
}

func GetSchedulingRecord() ([]*ScheduleRecord, error) {
records := make([]*ScheduleRecord, 0, 10)
return records, x.
Where("status = ?", StorageScheduleProcessing).
Limit(100).
Find(&records)
}

func InsertScheduleRecord(record *ScheduleRecord) (_ *ScheduleRecord, err error) {

if _, err := x.Insert(record); err != nil {
return nil, err
}

return record, nil
}

+ 14
- 0
modules/cron/tasks_basic.go View File

@@ -5,6 +5,7 @@
package cron package cron


import ( import (
"code.gitea.io/gitea/modules/urfs_client/urchin"
"context" "context"
"time" "time"


@@ -222,6 +223,17 @@ func registerSyncCloudbrainStatus() {
}) })
} }


func registerHandleScheduleRecord() {
RegisterTaskFatal("handle_schedule_record", &BaseConfig{
Enabled: true,
RunAtStart: false,
Schedule: "@every 1m",
}, func(ctx context.Context, _ *models.User, _ Config) error {
urchin.HandleScheduleRecords()
return nil
})
}

func registerRewardPeriodTask() { func registerRewardPeriodTask() {
RegisterTaskFatal("reward_period_task", &BaseConfig{ RegisterTaskFatal("reward_period_task", &BaseConfig{
Enabled: true, Enabled: true,
@@ -293,4 +305,6 @@ func initBasicTasks() {
registerCloudbrainPointDeductTask() registerCloudbrainPointDeductTask()


registerHandleModelSafetyTask() registerHandleModelSafetyTask()

registerHandleScheduleRecord()
} }

+ 31
- 8
modules/grampus/grampus.go View File

@@ -1,16 +1,15 @@
package grampus package grampus


import ( import (
"code.gitea.io/gitea/modules/cloudbrain"
"encoding/json" "encoding/json"
"strings" "strings"


"code.gitea.io/gitea/modules/setting"

"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/cloudbrain"
"code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/notification" "code.gitea.io/gitea/modules/notification"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/timeutil" "code.gitea.io/gitea/modules/timeutil"
) )


@@ -27,7 +26,8 @@ const (


CodeArchiveName = "master.zip" CodeArchiveName = "master.zip"


BucketRemote = "grampus"
BucketRemote = "grampus"
RemoteModelPath = "/output/models.zip"
) )


var ( var (
@@ -279,10 +279,33 @@ func InitSpecialPool() {
} }


func GetNpuModelRemoteObsUrl(jobName string) string { func GetNpuModelRemoteObsUrl(jobName string) string {
return "s3:///grampus/jobs/" + jobName + "/output/models.zip"
return "s3:///" + BucketRemote + "/" + GetNpuModelObjectKey(jobName)
} }


func GetBackNpuModel(jobName string) error {
return nil
func GetNpuModelObjectKey(jobName string) string {
return setting.CodePathPrefix + jobName + RemoteModelPath
}

func GetRemoteEndPoint(aiCenterID string) string {
var endPoint string
for _, info := range setting.CenterInfos.Info {
if info.CenterID == aiCenterID {
endPoint = info.Endpoint
break
}
}

return endPoint
}

func GetCenterProxy(aiCenterID string) string {
var proxy string
for _, info := range setting.CenterInfos.Info {
if info.CenterID == aiCenterID {
proxy = info.StorageProxyServer
break
}
}

return proxy
} }

+ 22
- 1
modules/setting/setting.go View File

@@ -76,6 +76,17 @@ type C2NetSqInfos struct {
C2NetSqInfo []*C2NetSequenceInfo `json:"sequence"` C2NetSqInfo []*C2NetSequenceInfo `json:"sequence"`
} }


type AiCenterInfo struct {
CenterID string `json:"center_id"`
Name string `json:"name"`
Endpoint string `json:"endpoint"`
StorageProxyServer string `json:"storage_proxy_server"`
}

type AiCenterInfos struct {
Info []*AiCenterInfo `json:"infos"`
}

type StFlavorInfos struct { type StFlavorInfos struct {
FlavorInfo []*FlavorInfo `json:"flavor_info"` FlavorInfo []*FlavorInfo `json:"flavor_info"`
} }
@@ -594,9 +605,12 @@ var (
SpecialPools string SpecialPools string
C2NetSequence string C2NetSequence string
SyncScriptProject string SyncScriptProject string
LocalCenterID string
AiCenterInfo string
}{} }{}


C2NetInfos *C2NetSqInfos
C2NetInfos *C2NetSqInfos
CenterInfos *AiCenterInfos


//elk config //elk config
ElkUrl string ElkUrl string
@@ -1614,6 +1628,13 @@ func getGrampusConfig() {
} }
} }
Grampus.SyncScriptProject = sec.Key("SYNC_SCRIPT_PROJECT").MustString("script_for_grampus") Grampus.SyncScriptProject = sec.Key("SYNC_SCRIPT_PROJECT").MustString("script_for_grampus")
Grampus.LocalCenterID = sec.Key("LOCAL_CENTER_ID").MustString("cloudbrain2")
Grampus.AiCenterInfo = sec.Key("AI_CENTER_INFO").MustString("")
if Grampus.AiCenterInfo != "" {
if err := json.Unmarshal([]byte(Grampus.AiCenterInfo), &CenterInfos); err != nil {
log.Error("Unmarshal(AiCenterInfo) failed:%v", err)
}
}


} }




+ 2
- 2
modules/urfs_client/dfstore/dfstore.go View File

@@ -11,8 +11,8 @@ import (
"path" "path"
"strconv" "strconv"


"git.openi.org.cn/OpenI/Grampus/server/common/urfs_client/config"
pkgobjectstorage "git.openi.org.cn/OpenI/Grampus/server/common/urfs_client/objectstorage"
"code.gitea.io/gitea/modules/urfs_client/config"
pkgobjectstorage "code.gitea.io/gitea/modules/urfs_client/objectstorage"
) )


// Dfstore is the interface used for object storage. // Dfstore is the interface used for object storage.


+ 5
- 0
modules/urfs_client/objectstorage/mocks/objectstorage_mock.go View File

@@ -0,0 +1,5 @@
// Code generated by MockGen. DO NOT EDIT.
// Source: objectstorage.go

// Package mocks is a generated GoMock package.
package mocks

+ 116
- 0
modules/urfs_client/urchin/schedule.go View File

@@ -0,0 +1,116 @@
package urchin

import (
"code.gitea.io/gitea/modules/labelmsg"
"code.gitea.io/gitea/modules/setting"
"encoding/json"
"fmt"
"strings"

"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/log"
)

type DecompressReq struct {
SourceFile string `json:"source_file"`
DestPath string `json:"dest_path"`
}

const (
modelSuffix = "models.zip"
)

var urfsClient Urchinfs

func getUrfsClient() {
if urfsClient != nil {
return
}

urfsClient = New()
}

func GetBackNpuModel(cloudbrainID int64, endpoint, bucket, objectKey, destPeerHost string) error {
getUrfsClient()
res, err := urfsClient.ScheduleDataToPeerByKey(endpoint, bucket, objectKey, destPeerHost)
if err != nil {
log.Error("ScheduleDataToPeerByKey failed:%v", err)
return err
}

_, err = models.InsertScheduleRecord(&models.ScheduleRecord{
CloudbrainID: cloudbrainID,
EndPoint: res.DataEndpoint,
Bucket: res.DataRoot,
ObjectKey: res.DataPath,
ProxyServer: destPeerHost,
Status: res.StatusCode,
})
if err != nil {
log.Error("InsertScheduleRecord failed:%v", err)
return err
}

switch res.StatusCode {
case models.StorageScheduleSucceed:
log.Info("ScheduleDataToPeerByKey succeed")
decompress(res.DataRoot+"/"+res.DataPath, setting.Bucket+"/"+strings.TrimSuffix(res.DataPath, modelSuffix))
case models.StorageScheduleProcessing:
log.Info("ScheduleDataToPeerByKey processing")
case models.StorageScheduleFailed:
log.Error("ScheduleDataToPeerByKey failed:%s", res.StatusMsg)
return fmt.Errorf("GetBackNpuModel failed:%s", res.StatusMsg)
default:
log.Info("ScheduleDataToPeerByKey failed, unknown StatusCode:%d", res.StatusCode)
return fmt.Errorf("GetBackNpuModel failed, unknow StatusCode:%d", res.StatusCode)
}

return nil
}

func HandleScheduleRecords() error {
getUrfsClient()
records, err := models.GetSchedulingRecord()
if err != nil {
log.Error("GetSchedulingRecord failed:%v", err)
return err
}

for _, record := range records {
res, err := urfsClient.CheckScheduleTaskStatusByKey(record.EndPoint, record.Bucket, record.ObjectKey, record.ProxyServer)
if err != nil {
log.Error("CheckScheduleTaskStatusByKey(%d) failed:%v", record.ID, err)
continue
}

record.Status = res.StatusCode
models.UpdateScheduleCols(record, "status")

switch res.StatusCode {
case models.StorageScheduleSucceed:
log.Info("ScheduleDataToPeerByKey(%s) succeed", record.ObjectKey)
decompress(record.Bucket+"/"+record.ObjectKey, setting.Bucket+"/"+strings.TrimSuffix(record.ObjectKey, modelSuffix))
case models.StorageScheduleProcessing:
log.Info("ScheduleDataToPeerByKey(%s) processing", record.ObjectKey)
case models.StorageScheduleFailed:
log.Error("ScheduleDataToPeerByKey(%s) failed:%s", record.ObjectKey, res.StatusMsg)

default:
log.Info("ScheduleDataToPeerByKey(%s) failed, unknown StatusCode:%d", record.ObjectKey, res.StatusCode)
}

}

return nil
}

func decompress(sourceFile, destPath string) {
req, _ := json.Marshal(DecompressReq{
SourceFile: sourceFile,
DestPath: destPath,
})
err := labelmsg.SendDecompressAttachToLabelOBS(string(req))
if err != nil {
log.Error("SendDecompressTask to labelsystem (%s) failed:%s", sourceFile, err.Error())
}
}

+ 16
- 8
modules/urfs_client/urchin/urchinfs.go View File

@@ -4,23 +4,22 @@ import (
"context" "context"
"encoding/json" "encoding/json"
"errors" "errors"
"fmt"
"io/ioutil" "io/ioutil"
"net/url" "net/url"
"strconv" "strconv"
"strings" "strings"


"git.openi.org.cn/OpenI/Grampus/server/common/urfs_client/config"
urfs "git.openi.org.cn/OpenI/Grampus/server/common/urfs_client/dfstore"
"code.gitea.io/gitea/modules/urfs_client/config"
urfs "code.gitea.io/gitea/modules/urfs_client/dfstore"
) )


type Urchinfs interface { type Urchinfs interface {


// schedule source dataset to target peer
ScheduleDataToPeer(sourceUrl, destPeerHost string) (*PeerResult, error)
// check schedule data to peer task status
CheckScheduleTaskStatus(sourceUrl, destPeerHost string) (*PeerResult, error)
//// schedule source dataset to target peer
//ScheduleDataToPeer(sourceUrl, destPeerHost string) (*PeerResult, error)
//
//// check schedule data to peer task status
//CheckScheduleTaskStatus(sourceUrl, destPeerHost string) (*PeerResult, error)


ScheduleDataToPeerByKey(endpoint, bucketName, objectKey, destPeerHost string) (*PeerResult, error) ScheduleDataToPeerByKey(endpoint, bucketName, objectKey, destPeerHost string) (*PeerResult, error)


@@ -46,6 +45,7 @@ const (
UrfsScheme = "urfs" UrfsScheme = "urfs"
) )


/*
func (urfs *urchinfs) ScheduleDataToPeer(sourceUrl, destPeerHost string) (*PeerResult, error) { func (urfs *urchinfs) ScheduleDataToPeer(sourceUrl, destPeerHost string) (*PeerResult, error) {
ctx, cancel := context.WithCancel(context.Background()) ctx, cancel := context.WithCancel(context.Background())
defer cancel() defer cancel()
@@ -71,6 +71,8 @@ func (urfs *urchinfs) ScheduleDataToPeer(sourceUrl, destPeerHost string) (*PeerR
return peerResult, err return peerResult, err
} }


*/

func (urfs *urchinfs) ScheduleDataToPeerByKey(endpoint, bucketName, objectKey, destPeerHost string) (*PeerResult, error) { func (urfs *urchinfs) ScheduleDataToPeerByKey(endpoint, bucketName, objectKey, destPeerHost string) (*PeerResult, error) {
ctx, cancel := context.WithCancel(context.Background()) ctx, cancel := context.WithCancel(context.Background())
defer cancel() defer cancel()
@@ -83,6 +85,7 @@ func (urfs *urchinfs) ScheduleDataToPeerByKey(endpoint, bucketName, objectKey, d
return peerResult, err return peerResult, err
} }


/*
func (urfs *urchinfs) CheckScheduleTaskStatus(sourceUrl, destPeerHost string) (*PeerResult, error) { func (urfs *urchinfs) CheckScheduleTaskStatus(sourceUrl, destPeerHost string) (*PeerResult, error) {
ctx, cancel := context.WithCancel(context.Background()) ctx, cancel := context.WithCancel(context.Background())
defer cancel() defer cancel()
@@ -108,6 +111,8 @@ func (urfs *urchinfs) CheckScheduleTaskStatus(sourceUrl, destPeerHost string) (*
return peerResult, err return peerResult, err
} }


*/

func (urfs *urchinfs) CheckScheduleTaskStatusByKey(endpoint, bucketName, objectKey, destPeerHost string) (*PeerResult, error) { func (urfs *urchinfs) CheckScheduleTaskStatusByKey(endpoint, bucketName, objectKey, destPeerHost string) (*PeerResult, error) {
ctx, cancel := context.WithCancel(context.Background()) ctx, cancel := context.WithCancel(context.Background())
defer cancel() defer cancel()
@@ -143,6 +148,7 @@ func validateSchedulelArgs(sourceUrl, destPeer string) error {
return nil return nil
} }


/*
// Parse object storage url. eg: urfs://源数据$endpoint/源数据$bucket/源数据filepath // Parse object storage url. eg: urfs://源数据$endpoint/源数据$bucket/源数据filepath
func parseUrfsURL(rawURL string) (string, string, string, error) { func parseUrfsURL(rawURL string) (string, string, string, error) {
u, err := url.ParseRequestURI(rawURL) u, err := url.ParseRequestURI(rawURL)
@@ -170,6 +176,8 @@ func parseUrfsURL(rawURL string) (string, string, string, error) {
return u.Host, bucket, key, nil return u.Host, bucket, key, nil
} }


*/

// Schedule object storage to peer. // Schedule object storage to peer.
func processScheduleDataToPeer(ctx context.Context, cfg *config.DfstoreConfig, endpoint, bucketName, objectKey, dstPeer string) (*PeerResult, error) { func processScheduleDataToPeer(ctx context.Context, cfg *config.DfstoreConfig, endpoint, bucketName, objectKey, dstPeer string) (*PeerResult, error) {
dfs := urfs.New(cfg.Endpoint) dfs := urfs.New(cfg.Endpoint)


+ 4
- 1
routers/api/v1/repo/modelarts.go View File

@@ -6,6 +6,7 @@
package repo package repo


import ( import (
"code.gitea.io/gitea/modules/urfs_client/urchin"
"encoding/json" "encoding/json"
"net/http" "net/http"
"path" "path"
@@ -180,7 +181,9 @@ func GetModelArtsTrainJobVersion(ctx *context.APIContext) {
} }
if oldStatus != job.Status { if oldStatus != job.Status {
notification.NotifyChangeCloudbrainStatus(job, oldStatus) notification.NotifyChangeCloudbrainStatus(job, oldStatus)
// todo: get model back
if models.IsTrainJobTerminal(job.Status) {
urchin.GetBackNpuModel(job.ID, grampus.GetRemoteEndPoint(result.JobInfo.Tasks[0].CenterID[0]), grampus.BucketRemote, grampus.GetNpuModelObjectKey(job.JobName), grampus.GetCenterProxy(setting.Grampus.LocalCenterID))
}
} }
err = models.UpdateTrainJobVersion(job) err = models.UpdateTrainJobVersion(job)
if err != nil { if err != nil {


+ 4
- 1
routers/repo/cloudbrain.go View File

@@ -2,6 +2,7 @@ package repo


import ( import (
"bufio" "bufio"
"code.gitea.io/gitea/modules/urfs_client/urchin"
"encoding/json" "encoding/json"
"errors" "errors"
"fmt" "fmt"
@@ -1939,7 +1940,9 @@ func SyncCloudbrainStatus() {
task.CorrectCreateUnix() task.CorrectCreateUnix()
if oldStatus != task.Status { if oldStatus != task.Status {
notification.NotifyChangeCloudbrainStatus(task, oldStatus) notification.NotifyChangeCloudbrainStatus(task, oldStatus)
// todo: get model back
if models.IsTrainJobTerminal(task.Status) {
urchin.GetBackNpuModel(task.ID, grampus.GetRemoteEndPoint(result.JobInfo.Tasks[0].CenterID[0]), grampus.BucketRemote, grampus.GetNpuModelObjectKey(task.JobName), grampus.GetCenterProxy(setting.Grampus.LocalCenterID))
}
} }
err = models.UpdateJob(task) err = models.UpdateJob(task)
if err != nil { if err != nil {


+ 1
- 7
routers/repo/grampus.go View File

@@ -872,13 +872,7 @@ func GrampusTrainJobShow(ctx *context.Context) {
if oldStatus != task.Status { if oldStatus != task.Status {
notification.NotifyChangeCloudbrainStatus(task, oldStatus) notification.NotifyChangeCloudbrainStatus(task, oldStatus)
if models.IsTrainJobTerminal(task.Status) { if models.IsTrainJobTerminal(task.Status) {
//get model back
urfs := urchin.New()
res, err := urfs.ScheduleDataToPeerByKey(endPoint, grampus.BucketRemote, objectKey, dstPeer)
if err != nil {
log.Error("ScheduleDataToPeer failed:%v", err)
return isExist, dataUrl, err
}
urchin.GetBackNpuModel(task.ID, grampus.GetRemoteEndPoint(result.JobInfo.Tasks[0].CenterID[0]), grampus.BucketRemote, grampus.GetNpuModelObjectKey(task.JobName), grampus.GetCenterProxy(setting.Grampus.LocalCenterID))
} }
} }
err = models.UpdateJob(task) err = models.UpdateJob(task)


+ 0
- 0
vendor/cloud.google.com/go/LICENSE View File


+ 0
- 0
vendor/cloud.google.com/go/compute/metadata/metadata.go View File


+ 0
- 0
vendor/cloud.google.com/go/iam/iam.go View File


+ 0
- 0
vendor/cloud.google.com/go/internal/optional/optional.go View File


+ 0
- 0
vendor/cloud.google.com/go/internal/version/update_version.sh View File


+ 0
- 0
vendor/cloud.google.com/go/internal/version/version.go View File


+ 0
- 0
vendor/cloud.google.com/go/pubsub/README.md View File


+ 0
- 0
vendor/cloud.google.com/go/pubsub/apiv1/README.md View File


+ 0
- 0
vendor/cloud.google.com/go/pubsub/apiv1/doc.go View File


+ 0
- 0
vendor/cloud.google.com/go/pubsub/apiv1/iam.go View File


+ 0
- 0
vendor/cloud.google.com/go/pubsub/apiv1/path_funcs.go View File


+ 0
- 0
vendor/cloud.google.com/go/pubsub/apiv1/publisher_client.go View File


+ 0
- 0
vendor/cloud.google.com/go/pubsub/apiv1/subscriber_client.go View File


+ 0
- 0
vendor/cloud.google.com/go/pubsub/debug.go View File


+ 0
- 0
vendor/cloud.google.com/go/pubsub/doc.go View File


+ 0
- 0
vendor/cloud.google.com/go/pubsub/flow_controller.go View File


+ 0
- 0
vendor/cloud.google.com/go/pubsub/internal/distribution/distribution.go View File


+ 0
- 0
vendor/cloud.google.com/go/pubsub/iterator.go View File


+ 0
- 0
vendor/cloud.google.com/go/pubsub/message.go View File


+ 0
- 0
vendor/cloud.google.com/go/pubsub/nodebug.go View File


+ 0
- 0
vendor/cloud.google.com/go/pubsub/pubsub.go View File


+ 0
- 0
vendor/cloud.google.com/go/pubsub/pullstream.go View File


+ 0
- 0
vendor/cloud.google.com/go/pubsub/service.go View File


+ 0
- 0
vendor/cloud.google.com/go/pubsub/snapshot.go View File


+ 0
- 0
vendor/cloud.google.com/go/pubsub/subscription.go View File


+ 0
- 0
vendor/cloud.google.com/go/pubsub/topic.go View File


+ 0
- 0
vendor/cloud.google.com/go/pubsub/trace.go View File


+ 0
- 0
vendor/gitea.com/jolheiser/gitea-vet/.gitignore View File


+ 0
- 0
vendor/gitea.com/jolheiser/gitea-vet/LICENSE View File


+ 0
- 0
vendor/gitea.com/jolheiser/gitea-vet/Makefile View File


+ 0
- 0
vendor/gitea.com/jolheiser/gitea-vet/README.md View File


+ 0
- 0
vendor/gitea.com/jolheiser/gitea-vet/checks/imports.go View File


+ 0
- 0
vendor/gitea.com/jolheiser/gitea-vet/checks/license.go View File


+ 0
- 0
vendor/gitea.com/jolheiser/gitea-vet/go.mod View File


+ 0
- 0
vendor/gitea.com/jolheiser/gitea-vet/go.sum View File


+ 0
- 0
vendor/gitea.com/jolheiser/gitea-vet/main.go View File


+ 0
- 0
vendor/gitea.com/lunny/levelqueue/.drone.yml View File


+ 0
- 0
vendor/gitea.com/lunny/levelqueue/.gitignore View File


+ 0
- 0
vendor/gitea.com/lunny/levelqueue/LICENSE View File


+ 0
- 0
vendor/gitea.com/lunny/levelqueue/README.md View File


+ 0
- 0
vendor/gitea.com/lunny/levelqueue/error.go View File


+ 0
- 0
vendor/gitea.com/lunny/levelqueue/go.mod View File


+ 0
- 0
vendor/gitea.com/lunny/levelqueue/go.sum View File


+ 0
- 0
vendor/gitea.com/lunny/levelqueue/queue.go View File


+ 0
- 0
vendor/gitea.com/lunny/levelqueue/set.go View File


+ 0
- 0
vendor/gitea.com/lunny/levelqueue/uniquequeue.go View File


+ 0
- 0
vendor/gitea.com/macaron/binding/.drone.yml View File


+ 0
- 0
vendor/gitea.com/macaron/binding/.gitignore View File


+ 0
- 0
vendor/gitea.com/macaron/binding/LICENSE View File


+ 0
- 0
vendor/gitea.com/macaron/binding/README.md View File


+ 0
- 0
vendor/gitea.com/macaron/binding/binding.go View File


+ 0
- 0
vendor/gitea.com/macaron/binding/errors.go View File


+ 0
- 0
vendor/gitea.com/macaron/binding/go.mod View File


+ 0
- 0
vendor/gitea.com/macaron/binding/go.sum View File


+ 0
- 0
vendor/gitea.com/macaron/cache/.drone.yml View File


+ 0
- 0
vendor/gitea.com/macaron/cache/.gitignore View File


+ 0
- 0
vendor/gitea.com/macaron/cache/LICENSE View File


+ 0
- 0
vendor/gitea.com/macaron/cache/README.md View File


+ 0
- 0
vendor/gitea.com/macaron/cache/cache.go View File


+ 0
- 0
vendor/gitea.com/macaron/cache/file.go View File


+ 0
- 0
vendor/gitea.com/macaron/cache/go.mod View File


+ 0
- 0
vendor/gitea.com/macaron/cache/go.sum View File


+ 0
- 0
vendor/gitea.com/macaron/cache/memcache/memcache.go View File


+ 0
- 0
vendor/gitea.com/macaron/cache/memcache/memcache.goconvey View File


+ 0
- 0
vendor/gitea.com/macaron/cache/memory.go View File


+ 0
- 0
vendor/gitea.com/macaron/cache/redis/redis.go View File


+ 0
- 0
vendor/gitea.com/macaron/cache/redis/redis.goconvey View File


+ 0
- 0
vendor/gitea.com/macaron/cache/utils.go View File


+ 0
- 0
vendor/gitea.com/macaron/captcha/.drone.yml View File


+ 0
- 0
vendor/gitea.com/macaron/captcha/LICENSE View File


+ 0
- 0
vendor/gitea.com/macaron/captcha/README.md View File


+ 0
- 0
vendor/gitea.com/macaron/captcha/captcha.go View File


+ 0
- 0
vendor/gitea.com/macaron/captcha/go.mod View File


+ 0
- 0
vendor/gitea.com/macaron/captcha/go.sum View File


+ 0
- 0
vendor/gitea.com/macaron/captcha/image.go View File


+ 0
- 0
vendor/gitea.com/macaron/captcha/siprng.go View File


+ 0
- 0
vendor/gitea.com/macaron/cors/.drone.yml View File


+ 0
- 0
vendor/gitea.com/macaron/cors/.gitignore View File


+ 0
- 0
vendor/gitea.com/macaron/cors/LICENSE View File


+ 0
- 0
vendor/gitea.com/macaron/cors/README.md View File


+ 0
- 0
vendor/gitea.com/macaron/cors/cors.go View File


+ 0
- 0
vendor/gitea.com/macaron/cors/go.mod View File


+ 0
- 0
vendor/gitea.com/macaron/cors/go.sum View File


+ 0
- 0
vendor/gitea.com/macaron/csrf/.drone.yml View File


+ 0
- 0
vendor/gitea.com/macaron/csrf/LICENSE View File


+ 0
- 0
vendor/gitea.com/macaron/csrf/README.md View File


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save