frogml-cli 0.0.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (287) hide show
  1. frogml_cli/__init__.py +10 -0
  2. frogml_cli/cli.py +40 -0
  3. frogml_cli/commands/__init__.py +0 -0
  4. frogml_cli/commands/_logic/__init__.py +0 -0
  5. frogml_cli/commands/_logic/tools.py +6 -0
  6. frogml_cli/commands/alerts/__init__.py +0 -0
  7. frogml_cli/commands/alerts/alerts_commnad_group.py +18 -0
  8. frogml_cli/commands/alerts/delete/__init__.py +0 -0
  9. frogml_cli/commands/alerts/delete/_logic.py +5 -0
  10. frogml_cli/commands/alerts/delete/ui.py +10 -0
  11. frogml_cli/commands/alerts/list/__init__.py +0 -0
  12. frogml_cli/commands/alerts/list/_logic.py +23 -0
  13. frogml_cli/commands/alerts/list/ui.py +17 -0
  14. frogml_cli/commands/alerts/register/__init__.py +0 -0
  15. frogml_cli/commands/alerts/register/_logic.py +72 -0
  16. frogml_cli/commands/alerts/register/ui.py +30 -0
  17. frogml_cli/commands/audience/__init__.py +0 -0
  18. frogml_cli/commands/audience/_logic/__init__.py +0 -0
  19. frogml_cli/commands/audience/_logic/config/__init__.py +0 -0
  20. frogml_cli/commands/audience/_logic/config/config_base.py +15 -0
  21. frogml_cli/commands/audience/_logic/config/parser.py +30 -0
  22. frogml_cli/commands/audience/_logic/config/v1/__init__.py +0 -0
  23. frogml_cli/commands/audience/_logic/config/v1/audience_config.py +25 -0
  24. frogml_cli/commands/audience/_logic/config/v1/conditions_config.py +59 -0
  25. frogml_cli/commands/audience/_logic/config/v1/config_v1.py +23 -0
  26. frogml_cli/commands/audience/_logic/config/v1/route_config.py +15 -0
  27. frogml_cli/commands/audience/_logic/config/v1/spec.py +9 -0
  28. frogml_cli/commands/audience/audience_api_dump.py +86 -0
  29. frogml_cli/commands/audience/audience_commands_group.py +30 -0
  30. frogml_cli/commands/audience/create/__init__.py +0 -0
  31. frogml_cli/commands/audience/create/logic.py +41 -0
  32. frogml_cli/commands/audience/create/ui.py +21 -0
  33. frogml_cli/commands/audience/delete/__init__.py +0 -0
  34. frogml_cli/commands/audience/delete/logic.py +13 -0
  35. frogml_cli/commands/audience/delete/ui.py +17 -0
  36. frogml_cli/commands/audience/get/__init__.py +0 -0
  37. frogml_cli/commands/audience/get/logic.py +14 -0
  38. frogml_cli/commands/audience/get/ui.py +25 -0
  39. frogml_cli/commands/audience/list/__init__.py +0 -0
  40. frogml_cli/commands/audience/list/logic.py +16 -0
  41. frogml_cli/commands/audience/list/ui.py +26 -0
  42. frogml_cli/commands/audience/update/__init__.py +0 -0
  43. frogml_cli/commands/audience/update/logic.py +37 -0
  44. frogml_cli/commands/audience/update/ui.py +26 -0
  45. frogml_cli/commands/auto_scalling/__init__.py +0 -0
  46. frogml_cli/commands/auto_scalling/_logic/__init__.py +0 -0
  47. frogml_cli/commands/auto_scalling/_logic/config/__init__.py +3 -0
  48. frogml_cli/commands/auto_scalling/_logic/config/config.py +152 -0
  49. frogml_cli/commands/auto_scalling/_logic/config/parser.py +21 -0
  50. frogml_cli/commands/auto_scalling/attach/__init__.py +0 -0
  51. frogml_cli/commands/auto_scalling/attach/_logic.py +43 -0
  52. frogml_cli/commands/auto_scalling/attach/ui.py +21 -0
  53. frogml_cli/commands/auto_scalling/autoscaling_commands_group.py +15 -0
  54. frogml_cli/commands/automations/__init__.py +0 -0
  55. frogml_cli/commands/automations/automations_commands_group.py +30 -0
  56. frogml_cli/commands/automations/delete/__init__.py +0 -0
  57. frogml_cli/commands/automations/delete/_logic.py +6 -0
  58. frogml_cli/commands/automations/delete/ui.py +23 -0
  59. frogml_cli/commands/automations/executions/__init__.py +0 -0
  60. frogml_cli/commands/automations/executions/executions_commands_group.py +14 -0
  61. frogml_cli/commands/automations/executions/list/__init__.py +0 -0
  62. frogml_cli/commands/automations/executions/list/_logic.py +8 -0
  63. frogml_cli/commands/automations/executions/list/ui.py +27 -0
  64. frogml_cli/commands/automations/list/__init__.py +0 -0
  65. frogml_cli/commands/automations/list/_logic.py +36 -0
  66. frogml_cli/commands/automations/list/ui.py +21 -0
  67. frogml_cli/commands/automations/register/__init__.py +0 -0
  68. frogml_cli/commands/automations/register/_logic.py +43 -0
  69. frogml_cli/commands/automations/register/ui.py +44 -0
  70. frogml_cli/commands/config/__init__.py +0 -0
  71. frogml_cli/commands/config/add/__init__.py +0 -0
  72. frogml_cli/commands/config/add/ui.py +62 -0
  73. frogml_cli/commands/config/config_commands_group.py +11 -0
  74. frogml_cli/commands/feature_store/__init__.py +0 -0
  75. frogml_cli/commands/feature_store/backfill/__init__.py +0 -0
  76. frogml_cli/commands/feature_store/backfill/_logic.py +140 -0
  77. frogml_cli/commands/feature_store/backfill/ui.py +129 -0
  78. frogml_cli/commands/feature_store/delete/__init__.py +0 -0
  79. frogml_cli/commands/feature_store/delete/_logic.py +107 -0
  80. frogml_cli/commands/feature_store/delete/ui.py +40 -0
  81. frogml_cli/commands/feature_store/execution/__init__.py +0 -0
  82. frogml_cli/commands/feature_store/execution/ui.py +19 -0
  83. frogml_cli/commands/feature_store/feature_store_command_group.py +29 -0
  84. frogml_cli/commands/feature_store/list/__init__.py +0 -0
  85. frogml_cli/commands/feature_store/list/ui.py +140 -0
  86. frogml_cli/commands/feature_store/pause/__init__.py +0 -0
  87. frogml_cli/commands/feature_store/pause/ui.py +18 -0
  88. frogml_cli/commands/feature_store/register/__init__.py +0 -0
  89. frogml_cli/commands/feature_store/register/_logic.py +369 -0
  90. frogml_cli/commands/feature_store/register/ui.py +111 -0
  91. frogml_cli/commands/feature_store/resume/__init__.py +0 -0
  92. frogml_cli/commands/feature_store/resume/ui.py +18 -0
  93. frogml_cli/commands/feature_store/trigger/__init__.py +0 -0
  94. frogml_cli/commands/feature_store/trigger/ui.py +39 -0
  95. frogml_cli/commands/models/__init__.py +0 -0
  96. frogml_cli/commands/models/build/__init__.py +0 -0
  97. frogml_cli/commands/models/build/_logic/__init__.py +0 -0
  98. frogml_cli/commands/models/build/_logic/build_steps.py +42 -0
  99. frogml_cli/commands/models/build/_logic/client_logs/__init__.py +0 -0
  100. frogml_cli/commands/models/build/_logic/client_logs/cli_phase_run_handler.py +123 -0
  101. frogml_cli/commands/models/build/_logic/client_logs/cli_trigger_build_logger.py +19 -0
  102. frogml_cli/commands/models/build/_logic/client_logs/logger.py +88 -0
  103. frogml_cli/commands/models/build/_logic/client_logs/messages.py +36 -0
  104. frogml_cli/commands/models/build/_logic/client_logs/spinner.py +14 -0
  105. frogml_cli/commands/models/build/_logic/client_logs/trigger_build_logger.py +54 -0
  106. frogml_cli/commands/models/build/_logic/client_logs/utils.py +12 -0
  107. frogml_cli/commands/models/build/_logic/phase/__init__.py +0 -0
  108. frogml_cli/commands/models/build/_logic/phase/a_fetch_model_code/__init__.py +20 -0
  109. frogml_cli/commands/models/build/_logic/phase/a_fetch_model_code/get_sdk_version_step.py +15 -0
  110. frogml_cli/commands/models/build/_logic/phase/b_remote_register_frogml_build/__init__.py +16 -0
  111. frogml_cli/commands/models/build/_logic/phase/c_deploy/__init__.py +6 -0
  112. frogml_cli/commands/models/build/_logic/phase/c_deploy/build_polling_status.py +55 -0
  113. frogml_cli/commands/models/build/_logic/phase/c_deploy/deploy_build.py +61 -0
  114. frogml_cli/commands/models/build/_logic/util/__init__.py +0 -0
  115. frogml_cli/commands/models/build/_logic/util/protobuf_factory.py +45 -0
  116. frogml_cli/commands/models/build/_logic/util/step_decorator.py +60 -0
  117. frogml_cli/commands/models/build/_logic/util/text.py +9 -0
  118. frogml_cli/commands/models/build/_logic/wait_until_finished.py +27 -0
  119. frogml_cli/commands/models/build/ui.py +337 -0
  120. frogml_cli/commands/models/builds/__init__.py +0 -0
  121. frogml_cli/commands/models/builds/builds_commands_group.py +16 -0
  122. frogml_cli/commands/models/builds/cancel/__init__.py +0 -0
  123. frogml_cli/commands/models/builds/cancel/_logic.py +5 -0
  124. frogml_cli/commands/models/builds/cancel/ui.py +15 -0
  125. frogml_cli/commands/models/builds/logs/__init__.py +0 -0
  126. frogml_cli/commands/models/builds/logs/ui.py +35 -0
  127. frogml_cli/commands/models/builds/status/__init__.py +0 -0
  128. frogml_cli/commands/models/builds/status/_logic.py +6 -0
  129. frogml_cli/commands/models/builds/status/ui.py +39 -0
  130. frogml_cli/commands/models/create/__init__.py +0 -0
  131. frogml_cli/commands/models/create/_logic.py +40 -0
  132. frogml_cli/commands/models/create/ui.py +46 -0
  133. frogml_cli/commands/models/delete/__init__.py +0 -0
  134. frogml_cli/commands/models/delete/_logic.py +18 -0
  135. frogml_cli/commands/models/delete/ui.py +25 -0
  136. frogml_cli/commands/models/deployments/__init__.py +0 -0
  137. frogml_cli/commands/models/deployments/deploy/__init__.py +0 -0
  138. frogml_cli/commands/models/deployments/deploy/_logic/__init__.py +0 -0
  139. frogml_cli/commands/models/deployments/deploy/_logic/advance_deployment_options_handler.py +31 -0
  140. frogml_cli/commands/models/deployments/deploy/_logic/base_deploy_executor.py +70 -0
  141. frogml_cli/commands/models/deployments/deploy/_logic/deploy_config.py +261 -0
  142. frogml_cli/commands/models/deployments/deploy/_logic/deployment.py +407 -0
  143. frogml_cli/commands/models/deployments/deploy/_logic/deployment_message_helpers.py +116 -0
  144. frogml_cli/commands/models/deployments/deploy/_logic/deployment_response_handler.py +156 -0
  145. frogml_cli/commands/models/deployments/deploy/_logic/deployment_size_mapper.py +98 -0
  146. frogml_cli/commands/models/deployments/deploy/_logic/get_latest_successful_build.py +28 -0
  147. frogml_cli/commands/models/deployments/deploy/_logic/local_deployment.py +193 -0
  148. frogml_cli/commands/models/deployments/deploy/batch/__init__.py +0 -0
  149. frogml_cli/commands/models/deployments/deploy/batch/_logic/__init__.py +0 -0
  150. frogml_cli/commands/models/deployments/deploy/batch/_logic/advanced_deployment_mapper.py +15 -0
  151. frogml_cli/commands/models/deployments/deploy/batch/_logic/deploy_executor.py +24 -0
  152. frogml_cli/commands/models/deployments/deploy/batch/ui.py +119 -0
  153. frogml_cli/commands/models/deployments/deploy/deploy_commands_group.py +19 -0
  154. frogml_cli/commands/models/deployments/deploy/realtime/__init__.py +0 -0
  155. frogml_cli/commands/models/deployments/deploy/realtime/_logic/__init__.py +0 -0
  156. frogml_cli/commands/models/deployments/deploy/realtime/_logic/advanced_deployment_mapper.py +21 -0
  157. frogml_cli/commands/models/deployments/deploy/realtime/_logic/deploy_executor.py +24 -0
  158. frogml_cli/commands/models/deployments/deploy/realtime/_logic/serving_strategy_mapper.py +75 -0
  159. frogml_cli/commands/models/deployments/deploy/realtime/ui.py +202 -0
  160. frogml_cli/commands/models/deployments/deploy/streaming/__init__.py +0 -0
  161. frogml_cli/commands/models/deployments/deploy/streaming/_logic/__init__.py +0 -0
  162. frogml_cli/commands/models/deployments/deploy/streaming/_logic/deploy_executor.py +24 -0
  163. frogml_cli/commands/models/deployments/deploy/streaming/_logic/serving_strategy_mapper.py +38 -0
  164. frogml_cli/commands/models/deployments/deploy/streaming/ui.py +206 -0
  165. frogml_cli/commands/models/deployments/undeploy/__init__.py +0 -0
  166. frogml_cli/commands/models/deployments/undeploy/_logic/__init__.py +0 -0
  167. frogml_cli/commands/models/deployments/undeploy/_logic/request_undeploy.py +249 -0
  168. frogml_cli/commands/models/deployments/undeploy/ui.py +61 -0
  169. frogml_cli/commands/models/describe/__init__.py +0 -0
  170. frogml_cli/commands/models/describe/_logic.py +169 -0
  171. frogml_cli/commands/models/describe/ui.py +35 -0
  172. frogml_cli/commands/models/executions/__init__.py +0 -0
  173. frogml_cli/commands/models/executions/cancel/__init__.py +0 -0
  174. frogml_cli/commands/models/executions/cancel/_logic.py +9 -0
  175. frogml_cli/commands/models/executions/cancel/ui.py +27 -0
  176. frogml_cli/commands/models/executions/execution_commands_group.py +24 -0
  177. frogml_cli/commands/models/executions/report/__init__.py +0 -0
  178. frogml_cli/commands/models/executions/report/_logic.py +14 -0
  179. frogml_cli/commands/models/executions/report/ui.py +43 -0
  180. frogml_cli/commands/models/executions/start/__init__.py +0 -0
  181. frogml_cli/commands/models/executions/start/_logic.py +83 -0
  182. frogml_cli/commands/models/executions/start/ui.py +208 -0
  183. frogml_cli/commands/models/executions/status/__init__.py +0 -0
  184. frogml_cli/commands/models/executions/status/_logic.py +13 -0
  185. frogml_cli/commands/models/executions/status/ui.py +27 -0
  186. frogml_cli/commands/models/init/__init__.py +0 -0
  187. frogml_cli/commands/models/init/_logic/__init__.py +0 -0
  188. frogml_cli/commands/models/init/_logic/initialize_model_structure.py +40 -0
  189. frogml_cli/commands/models/init/_logic/template/__init__.py +0 -0
  190. frogml_cli/commands/models/init/_logic/template/churn/__init__.py +0 -0
  191. frogml_cli/commands/models/init/_logic/template/churn/cookiecutter.json +3 -0
  192. frogml_cli/commands/models/init/_logic/template/churn/{{cookiecutter.model_directory}}/__init__.py +0 -0
  193. frogml_cli/commands/models/init/_logic/template/churn/{{cookiecutter.model_directory}}/main/__init__.py +5 -0
  194. frogml_cli/commands/models/init/_logic/template/churn/{{cookiecutter.model_directory}}/main/conda.yml +10 -0
  195. frogml_cli/commands/models/init/_logic/template/churn/{{cookiecutter.model_directory}}/main/data.csv +1001 -0
  196. frogml_cli/commands/models/init/_logic/template/churn/{{cookiecutter.model_directory}}/main/model.py +99 -0
  197. frogml_cli/commands/models/init/_logic/template/churn/{{cookiecutter.model_directory}}/tests/__init__.py +0 -0
  198. frogml_cli/commands/models/init/_logic/template/churn/{{cookiecutter.model_directory}}/tests/it/__init__.py +0 -0
  199. frogml_cli/commands/models/init/_logic/template/churn/{{cookiecutter.model_directory}}/tests/it/test_churn.py +32 -0
  200. frogml_cli/commands/models/init/_logic/template/credit_risk/__init__.py +0 -0
  201. frogml_cli/commands/models/init/_logic/template/credit_risk/cookiecutter.json +3 -0
  202. frogml_cli/commands/models/init/_logic/template/credit_risk/{{cookiecutter.model_directory}}/__init__.py +0 -0
  203. frogml_cli/commands/models/init/_logic/template/credit_risk/{{cookiecutter.model_directory}}/main/__init__.py +5 -0
  204. frogml_cli/commands/models/init/_logic/template/credit_risk/{{cookiecutter.model_directory}}/main/conda.yml +11 -0
  205. frogml_cli/commands/models/init/_logic/template/credit_risk/{{cookiecutter.model_directory}}/main/data.csv +1001 -0
  206. frogml_cli/commands/models/init/_logic/template/credit_risk/{{cookiecutter.model_directory}}/main/model.py +108 -0
  207. frogml_cli/commands/models/init/_logic/template/general/__init__.py +0 -0
  208. frogml_cli/commands/models/init/_logic/template/general/cookiecutter.json +6 -0
  209. frogml_cli/commands/models/init/_logic/template/general/{{cookiecutter.model_directory}}/__init__.py +0 -0
  210. frogml_cli/commands/models/init/_logic/template/general/{{cookiecutter.model_directory}}/{{cookiecutter.main_directory}}/__init__.py +5 -0
  211. frogml_cli/commands/models/init/_logic/template/general/{{cookiecutter.model_directory}}/{{cookiecutter.main_directory}}/conda.yml +8 -0
  212. frogml_cli/commands/models/init/_logic/template/general/{{cookiecutter.model_directory}}/{{cookiecutter.main_directory}}/model.py +66 -0
  213. frogml_cli/commands/models/init/_logic/template/general/{{cookiecutter.model_directory}}/{{cookiecutter.test_directory}}/__init__.py +0 -0
  214. frogml_cli/commands/models/init/_logic/template/general/{{cookiecutter.model_directory}}/{{cookiecutter.test_directory}}/test_qwak_model.py +5 -0
  215. frogml_cli/commands/models/init/_logic/template/titanic/__init__.py +0 -0
  216. frogml_cli/commands/models/init/_logic/template/titanic/cookiecutter.json +3 -0
  217. frogml_cli/commands/models/init/_logic/template/titanic/{{cookiecutter.model_directory}}/__init__.py +0 -0
  218. frogml_cli/commands/models/init/_logic/template/titanic/{{cookiecutter.model_directory}}/main/__init__.py +5 -0
  219. frogml_cli/commands/models/init/_logic/template/titanic/{{cookiecutter.model_directory}}/main/conda.yml +11 -0
  220. frogml_cli/commands/models/init/_logic/template/titanic/{{cookiecutter.model_directory}}/main/model.py +98 -0
  221. frogml_cli/commands/models/init/_logic/template/titanic/{{cookiecutter.model_directory}}/tests/__init__.py +0 -0
  222. frogml_cli/commands/models/init/_logic/template/titanic/{{cookiecutter.model_directory}}/tests/it/__init__.py +0 -0
  223. frogml_cli/commands/models/init/_logic/template/titanic/{{cookiecutter.model_directory}}/tests/it/test_titanic.py +24 -0
  224. frogml_cli/commands/models/init/_logic/template/titanic_poetry/__init__.py +0 -0
  225. frogml_cli/commands/models/init/_logic/template/titanic_poetry/cookiecutter.json +3 -0
  226. frogml_cli/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.model_directory}}/__init__.py +0 -0
  227. frogml_cli/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.model_directory}}/main/__init__.py +5 -0
  228. frogml_cli/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.model_directory}}/main/model.py +98 -0
  229. frogml_cli/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.model_directory}}/main/pyproject.toml +20 -0
  230. frogml_cli/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.model_directory}}/tests/__init__.py +0 -0
  231. frogml_cli/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.model_directory}}/tests/it/__init__.py +0 -0
  232. frogml_cli/commands/models/init/_logic/template/titanic_poetry/{{cookiecutter.model_directory}}/tests/it/test_titanic.py +25 -0
  233. frogml_cli/commands/models/init/ui.py +61 -0
  234. frogml_cli/commands/models/list/__init__.py +0 -0
  235. frogml_cli/commands/models/list/_logic.py +5 -0
  236. frogml_cli/commands/models/list/ui.py +41 -0
  237. frogml_cli/commands/models/list_models/__init__.py +0 -0
  238. frogml_cli/commands/models/list_models/_logic.py +11 -0
  239. frogml_cli/commands/models/list_models/ui.py +60 -0
  240. frogml_cli/commands/models/metadata/__init__.py +0 -0
  241. frogml_cli/commands/models/metadata/_logic.py +12 -0
  242. frogml_cli/commands/models/metadata/ui.py +60 -0
  243. frogml_cli/commands/models/models_command_group.py +44 -0
  244. frogml_cli/commands/models/runtime/__init__.py +0 -0
  245. frogml_cli/commands/models/runtime/logs/__init__.py +0 -0
  246. frogml_cli/commands/models/runtime/logs/ui.py +63 -0
  247. frogml_cli/commands/models/runtime/runtime_commands_group.py +17 -0
  248. frogml_cli/commands/models/runtime/update/__init__.py +0 -0
  249. frogml_cli/commands/models/runtime/update/_logic.py +9 -0
  250. frogml_cli/commands/models/runtime/update/ui.py +17 -0
  251. frogml_cli/commands/secrets/__init__.py +0 -0
  252. frogml_cli/commands/secrets/delete/__init__.py +0 -0
  253. frogml_cli/commands/secrets/delete/_logic.py +5 -0
  254. frogml_cli/commands/secrets/delete/ui.py +21 -0
  255. frogml_cli/commands/secrets/get/__init__.py +0 -0
  256. frogml_cli/commands/secrets/get/_logic.py +5 -0
  257. frogml_cli/commands/secrets/get/ui.py +17 -0
  258. frogml_cli/commands/secrets/secrets_commands_group.py +19 -0
  259. frogml_cli/commands/secrets/set/__init__.py +0 -0
  260. frogml_cli/commands/secrets/set/_logic.py +5 -0
  261. frogml_cli/commands/secrets/set/ui.py +16 -0
  262. frogml_cli/commands/ui_tools.py +18 -0
  263. frogml_cli/exceptions/__init__.py +14 -0
  264. frogml_cli/exceptions/frogml_command_exception.py +2 -0
  265. frogml_cli/exceptions/frogml_deploy_new_build_failed.py +5 -0
  266. frogml_cli/exceptions/frogml_resource_not_found.py +2 -0
  267. frogml_cli/inner/__init__.py +0 -0
  268. frogml_cli/inner/file_registry.py +98 -0
  269. frogml_cli/inner/tools/__init__.py +0 -0
  270. frogml_cli/inner/tools/cli_tools.py +179 -0
  271. frogml_cli/inner/tools/config_handler.py +29 -0
  272. frogml_cli/inner/tools/dataclasses_utils.py +21 -0
  273. frogml_cli/inner/tools/logger/__init__.py +3 -0
  274. frogml_cli/inner/tools/logger/logger.py +278 -0
  275. frogml_cli/inner/tools/logger/logging.yml +79 -0
  276. frogml_cli/inner/tools/tracking.py +47 -0
  277. frogml_cli/main.py +9 -0
  278. frogml_cli/tools/__init__.py +0 -0
  279. frogml_cli/tools/colors.py +13 -0
  280. frogml_cli/tools/const.py +3 -0
  281. frogml_cli/tools/files.py +63 -0
  282. frogml_cli/tools/log_handling.py +159 -0
  283. frogml_cli/tools/utils.py +45 -0
  284. frogml_cli-0.0.1.dist-info/METADATA +51 -0
  285. frogml_cli-0.0.1.dist-info/RECORD +287 -0
  286. frogml_cli-0.0.1.dist-info/WHEEL +4 -0
  287. frogml_cli-0.0.1.dist-info/entry_points.txt +3 -0
@@ -0,0 +1,202 @@
1
+ from typing import Optional
2
+
3
+ import click
4
+ from frogml.core.tools.logger.logger import (
5
+ get_frogml_logger,
6
+ set_frogml_logger_stdout_verbosity_level,
7
+ )
8
+
9
+ from frogml_cli.commands.models.deployments.deploy._logic.deploy_config import (
10
+ DeployConfig,
11
+ PurchaseOption,
12
+ )
13
+ from frogml_cli.commands.models.deployments.deploy._logic.deployment_response_handler import (
14
+ client_deployment,
15
+ )
16
+ from frogml_cli.commands.models.deployments.deploy._logic.local_deployment import (
17
+ local_deploy,
18
+ )
19
+ from frogml_cli.commands.models.deployments.deploy.realtime._logic.deploy_executor import (
20
+ RealtimeDeployExecutor,
21
+ )
22
+ from frogml_cli.inner.tools.cli_tools import DeprecatedOption, FrogMLCommand
23
+ from frogml_cli.inner.tools.config_handler import config_handler
24
+ from frogml_cli.tools.const import GPU_TYPES
25
+
26
+ logger = get_frogml_logger()
27
+
28
+
29
+ @click.command("realtime", help="Deploy realtime model.", cls=FrogMLCommand)
30
+ @click.option(
31
+ "--build-id",
32
+ help="Build ID, If not specified latest successful build will deployed.",
33
+ type=str,
34
+ )
35
+ @click.option("--model-id", help="Model ID", type=str, required=True)
36
+ @click.option(
37
+ "--timeout",
38
+ type=int,
39
+ help="Inference request timeout in MS, (e.g. 2000).",
40
+ )
41
+ @click.option(
42
+ "--server-workers",
43
+ type=int,
44
+ help="Number of workers of http server. (e.g. 4).",
45
+ )
46
+ @click.option(
47
+ "--daemon-mode/--no-daemon-mode",
48
+ type=bool,
49
+ default=True,
50
+ help="Configure Gunicorn daemon mode. Default is True",
51
+ )
52
+ @click.option(
53
+ "--pods",
54
+ "--replicas",
55
+ type=int,
56
+ help="Number of replicas to deploy.",
57
+ deprecated=["--pods"],
58
+ preferred="--replicas",
59
+ cls=DeprecatedOption,
60
+ )
61
+ @click.option(
62
+ "--cpus",
63
+ type=float,
64
+ help="Number of CPU cores, can be fraction of a core (e.g. 0.4).",
65
+ )
66
+ @click.option(
67
+ "--memory",
68
+ type=int,
69
+ help="Memory amount in Mib (e.g. 256).",
70
+ )
71
+ @click.option(
72
+ "--gpu-type",
73
+ metavar="NAME",
74
+ required=False,
75
+ help=f"Type of GPU to use on the deployments ({', '.join([x for x in GPU_TYPES])}).",
76
+ type=click.STRING,
77
+ )
78
+ @click.option(
79
+ "--gpu-amount",
80
+ metavar="NAME",
81
+ required=False,
82
+ type=int,
83
+ help="Amount of GPU to use on the deployments.",
84
+ )
85
+ @click.option(
86
+ "--iam-role-arn",
87
+ type=str,
88
+ help="Custom IAM Role ARN.",
89
+ )
90
+ @click.option(
91
+ "--service-account-key-secret-name",
92
+ type=str,
93
+ help="Custom service account for Gcp.",
94
+ )
95
+ @click.option(
96
+ "--max-batch-size",
97
+ type=int,
98
+ help="Max batch size in prediction. (defaults to 0 which is dynamic)",
99
+ )
100
+ @click.option(
101
+ "--variation-name",
102
+ required=False,
103
+ type=str,
104
+ help="The variation name",
105
+ )
106
+ @click.option(
107
+ "--sync",
108
+ is_flag=True,
109
+ default=False,
110
+ help="Waiting for deployments to be ready",
111
+ )
112
+ @click.option(
113
+ "--local",
114
+ is_flag=True,
115
+ default=False,
116
+ help="Deploy the model container locally, for development purposes only",
117
+ )
118
+ @click.option(
119
+ "-v",
120
+ "--verbose",
121
+ count=True,
122
+ help="Log verbosity level - v: INFO, vv: DEBUG [default: WARNING]",
123
+ )
124
+ @click.option(
125
+ "-f",
126
+ "--from-file",
127
+ help="Deploy by run_config file, Command arguments will overwrite any run_config.",
128
+ required=False,
129
+ type=click.Path(exists=True, resolve_path=True, dir_okay=False),
130
+ )
131
+ @click.option(
132
+ "--out-conf",
133
+ help="Extract deploy conf from commands arguments, the commands will not run it wil only output valid yaml "
134
+ "structure",
135
+ default=False,
136
+ is_flag=True,
137
+ )
138
+ @click.option(
139
+ "--purchase-option",
140
+ required=False,
141
+ type=click.Choice([i.value for i in PurchaseOption], case_sensitive=False),
142
+ help="Indicate the instance deployments type, whether it is spot/ondemand. Default is spot",
143
+ )
144
+ @click.option(
145
+ "--deployment-timeout",
146
+ type=int,
147
+ help="The number of seconds the deployments can be in progress before it is considered as failed. This is useful "
148
+ "in cases where a deployments has a high number of pods to replace, scarce resources (gpu), or large build "
149
+ "size. Default is 1800 seconds (30 minutes).",
150
+ )
151
+ @click.option(
152
+ "-E",
153
+ "--env-vars",
154
+ required=False,
155
+ metavar="NAME=VALUE",
156
+ multiple=True,
157
+ help="A parameter for the deployments, of the form -E name=value",
158
+ )
159
+ @click.option(
160
+ "--instance",
161
+ required=False,
162
+ type=str,
163
+ help="The instance size to deploy on - 'small', 'medium', 'large', etc...",
164
+ default=None,
165
+ )
166
+ @click.option(
167
+ "--protected",
168
+ "variation_protected_state",
169
+ required=False,
170
+ is_flag=True,
171
+ default=False,
172
+ help="Whether the deployment variation is protected. Default is false",
173
+ )
174
+ def realtime(
175
+ verbose: bool,
176
+ from_file: Optional[str],
177
+ out_conf: bool,
178
+ sync: bool,
179
+ local: bool,
180
+ **kwargs,
181
+ ):
182
+ set_frogml_logger_stdout_verbosity_level(verbose + 1)
183
+ deploy_realtime(from_file, out_conf, sync, local, **kwargs)
184
+
185
+
186
+ def deploy_realtime(
187
+ from_file: Optional[str], out_conf: bool, sync: bool, local: bool, **kwargs
188
+ ):
189
+ config: DeployConfig = config_handler(
190
+ config=DeployConfig,
191
+ from_file=from_file,
192
+ out_conf=out_conf,
193
+ sections=("realtime", "autoscaling"),
194
+ **kwargs,
195
+ )
196
+
197
+ if local:
198
+ local_deploy(config)
199
+
200
+ elif not out_conf:
201
+ deploy_executor = RealtimeDeployExecutor(config)
202
+ client_deployment(deploy=deploy_executor, sync=sync)
@@ -0,0 +1,24 @@
1
+ from frogml._proto.qwak.deployment.deployment_pb2 import KubeDeploymentType
2
+ from frogml._proto.qwak.deployment.deployment_service_pb2 import DeployModelResponse
3
+
4
+ from frogml_cli.commands.models.deployments.deploy._logic.base_deploy_executor import (
5
+ BaseDeployExecutor,
6
+ )
7
+ from frogml_cli.commands.models.deployments.deploy._logic.deployment_message_helpers import (
8
+ get_env_to_deployment_message,
9
+ )
10
+
11
+
12
+ class StreamDeployExecutor(BaseDeployExecutor):
13
+ def deploy(self) -> DeployModelResponse:
14
+ env_deployment_messages = get_env_to_deployment_message(
15
+ self.config,
16
+ KubeDeploymentType.STREAM,
17
+ self.ecosystem_client,
18
+ self.instance_template_client,
19
+ )
20
+ return self.deploy_client.deploy_model(
21
+ model_id=self.config.model_id,
22
+ build_id=self.config.build_id,
23
+ env_deployment_messages=env_deployment_messages,
24
+ )
@@ -0,0 +1,38 @@
1
+ from __future__ import annotations
2
+
3
+ from frogml._proto.qwak.deployment.deployment_pb2 import (
4
+ KafkaConfig,
5
+ ServingStrategy,
6
+ StreamConfig,
7
+ )
8
+
9
+ from frogml_cli.commands.models.deployments.deploy._logic.deploy_config import (
10
+ DeployConfig,
11
+ )
12
+
13
+ DEFAULT_VARIATION_NAME = "default"
14
+
15
+
16
+ def create_streaming_serving_strategy_from_deploy_config(
17
+ deploy_config: DeployConfig,
18
+ ) -> ServingStrategy:
19
+ return ServingStrategy(
20
+ stream_config=StreamConfig(
21
+ kafka=KafkaConfig(
22
+ consumer=KafkaConfig.Consumer(
23
+ bootstrap_server=deploy_config.stream.kafka.consumer.bootstrap_servers,
24
+ topic=deploy_config.stream.kafka.consumer.topic,
25
+ group=deploy_config.stream.kafka.consumer.group,
26
+ timeout=deploy_config.stream.kafka.consumer.timeout,
27
+ auto_offset_type=deploy_config.stream.kafka.consumer.auto_offset_reset.upper(),
28
+ max_batch_size=deploy_config.stream.kafka.consumer.max_batch_size,
29
+ max_poll_latency=deploy_config.stream.kafka.consumer.max_poll_latency,
30
+ ),
31
+ producer=KafkaConfig.Producer(
32
+ bootstrap_server=deploy_config.stream.kafka.producer.bootstrap_servers,
33
+ topic=deploy_config.stream.kafka.producer.topic,
34
+ compression_type=deploy_config.stream.kafka.producer.compression_type.upper(),
35
+ ),
36
+ )
37
+ )
38
+ )
@@ -0,0 +1,206 @@
1
+ import click
2
+ from frogml.core.tools.logger.logger import (
3
+ get_frogml_logger,
4
+ set_frogml_logger_stdout_verbosity_level,
5
+ )
6
+
7
+ from frogml_cli.commands.models.deployments.deploy._logic.deploy_config import (
8
+ AutoOffsetReset,
9
+ CompressionTypes,
10
+ DeployConfig,
11
+ PurchaseOption,
12
+ )
13
+ from frogml_cli.commands.models.deployments.deploy._logic.deployment_response_handler import (
14
+ client_deployment,
15
+ )
16
+ from frogml_cli.commands.models.deployments.deploy.streaming._logic.deploy_executor import (
17
+ StreamDeployExecutor,
18
+ )
19
+ from frogml_cli.inner.tools.cli_tools import DeprecatedOption, FrogMLCommand
20
+ from frogml_cli.inner.tools.config_handler import config_handler
21
+
22
+ logger = get_frogml_logger()
23
+ PENDING_STATUSES = [
24
+ "INITIATING_DEPLOYMENT",
25
+ "PENDING_DEPLOYMENT",
26
+ "INITIATING_UNDEPLOYMENT",
27
+ "PENDING_UNDEPLOYMENT",
28
+ ]
29
+ DEPLOYED_STATUSES = ["SUCCESSFUL_DEPLOYMENT"]
30
+ UNDEPLOYED_STATUSES = ["SUCCESSFUL_UNDEPLOYMENT"]
31
+ FAILED_STATUSES = [
32
+ "INVALID_DEPLOYMENT",
33
+ "FAILED_INITIATING_DEPLOYMENT",
34
+ "FAILED_DEPLOYMENT",
35
+ "FAILED_UNDEPLOYMENT",
36
+ ]
37
+
38
+
39
+ @click.command("stream", help="Deploy stream model.", cls=FrogMLCommand)
40
+ @click.option(
41
+ "--build-id",
42
+ help="Build ID, If not specified latest successful build will deployed.",
43
+ type=str,
44
+ )
45
+ @click.option("--model-id", help="Model ID", type=str, required=True)
46
+ @click.option(
47
+ "--bootstrap-server",
48
+ envvar="BOOTSTRAP_SERVERS",
49
+ help="Kafka consumer/producer bootstrap server.",
50
+ multiple=True,
51
+ type=str,
52
+ )
53
+ @click.option(
54
+ "--consumer-bootstrap-server",
55
+ envvar="CONSUMER_BOOTSTRAP_SERVER",
56
+ help="Kafka consumer bootstrap server.",
57
+ multiple=True,
58
+ type=str,
59
+ )
60
+ @click.option(
61
+ "--consumer-topic",
62
+ envvar="CONSUMER_TOPIC",
63
+ help="Kafka consumer topic.",
64
+ type=str,
65
+ )
66
+ @click.option(
67
+ "--consumer-group",
68
+ envvar="CONSUMER_GROUP",
69
+ help="Kafka consumer group.",
70
+ type=str,
71
+ )
72
+ @click.option(
73
+ "--consumer-auto-offset-reset",
74
+ envvar="CONSUMER_AUTO_OFFSET_RESET",
75
+ type=click.Choice([i.value for i in AutoOffsetReset], case_sensitive=False),
76
+ help="Kafka consumer auto offset reset (Latest/Earliest).",
77
+ )
78
+ @click.option(
79
+ "--consumer-timeout",
80
+ envvar="CONSUMER_TIMEOUT",
81
+ help="Kafka consumer polling timeout. (The timeout should be in range of kafka admin configuration "
82
+ "'group.min.session.timeout.ms' and 'group.max.session.timeout.ms'.)",
83
+ type=int,
84
+ )
85
+ @click.option(
86
+ "--consumer-max-batch-size",
87
+ envvar="CONSUMER_MAX_BATCH_SIZE",
88
+ help="The maximum number of records returned in a single call to poll().",
89
+ type=int,
90
+ )
91
+ @click.option(
92
+ "--consumer-max-poll-latency",
93
+ envvar="CONSUMER_MAX_POLL_LATENCY",
94
+ help="The maximum delay between invocations of poll() when using consumer group management.",
95
+ type=float,
96
+ )
97
+ @click.option(
98
+ "--producer-bootstrap-server",
99
+ envvar="PRODUCER_BOOTSTRAP_SERVER",
100
+ help="Kafka producer bootstrap server.",
101
+ multiple=True,
102
+ type=str,
103
+ )
104
+ @click.option(
105
+ "--producer-topic",
106
+ envvar="PRODUCER_TOPIC",
107
+ help="Kafka producer topic.",
108
+ type=str,
109
+ )
110
+ @click.option(
111
+ "--producer-compression-type",
112
+ envvar="PRODUCER_COMPRESSION_TYPE",
113
+ type=click.Choice([i.value for i in CompressionTypes], case_sensitive=False),
114
+ help="Kafka producer compression type.",
115
+ )
116
+ @click.option(
117
+ "--pods",
118
+ "--replicas",
119
+ type=int,
120
+ help="Number of replicas to deploy.",
121
+ deprecated=["--pods"],
122
+ preferred="--replicas",
123
+ cls=DeprecatedOption,
124
+ )
125
+ @click.option(
126
+ "--cpus",
127
+ type=float,
128
+ help="Number of CPU cores, can be fraction of a core (e.g. 0.4).",
129
+ )
130
+ @click.option(
131
+ "--memory",
132
+ type=int,
133
+ help="Memory amount in Mib (e.g. 256).",
134
+ )
135
+ @click.option(
136
+ "--iam-role-arn",
137
+ type=str,
138
+ help="Custom IAM Role ARN.",
139
+ )
140
+ @click.option(
141
+ "--sync",
142
+ is_flag=True,
143
+ default=False,
144
+ help="Waiting for deployments to be ready",
145
+ )
146
+ @click.option(
147
+ "--local",
148
+ is_flag=True,
149
+ default=False,
150
+ help="Run deployments locally.",
151
+ )
152
+ @click.option(
153
+ "-v",
154
+ "--verbose",
155
+ count=True,
156
+ help="Log verbosity level - v: INFO, vv: DEBUG [default: WARNING]",
157
+ )
158
+ @click.option(
159
+ "-f",
160
+ "--from-file",
161
+ help="Deploy by run_config file, Command arguments will overwrite any run_config.",
162
+ required=False,
163
+ type=click.Path(exists=True, resolve_path=True, dir_okay=False),
164
+ )
165
+ @click.option(
166
+ "--out-conf",
167
+ help="Extract deploy conf from commands arguments, the commands will not run it wil only output valid yaml "
168
+ "structure",
169
+ default=False,
170
+ is_flag=True,
171
+ )
172
+ @click.option(
173
+ "--purchase-option",
174
+ required=False,
175
+ type=click.Choice([i.value for i in PurchaseOption], case_sensitive=False),
176
+ help="Indicate the instance deployments type, whether it is spot/ondemand. Default is spot",
177
+ )
178
+ @click.option(
179
+ "-E",
180
+ "--env-vars",
181
+ required=False,
182
+ metavar="NAME=VALUE",
183
+ multiple=True,
184
+ help="A parameter for the deployments, of the form -E name=value",
185
+ )
186
+ @click.option(
187
+ "--instance",
188
+ required=False,
189
+ type=str,
190
+ help="The instance size to deploy on - 'small', 'medium', 'large', etc...",
191
+ default=None,
192
+ )
193
+ def stream(
194
+ verbose: bool, from_file: str, out_conf: bool, local: bool, sync: bool, **kwargs
195
+ ):
196
+ set_frogml_logger_stdout_verbosity_level(verbose + 1)
197
+ config: DeployConfig = config_handler(
198
+ config=DeployConfig,
199
+ from_file=from_file,
200
+ out_conf=out_conf,
201
+ sections=("stream",),
202
+ **kwargs,
203
+ )
204
+ if not out_conf:
205
+ deploy_executor = StreamDeployExecutor(config)
206
+ client_deployment(deploy=deploy_executor, sync=sync)