cloudos-cli 2.83.0__tar.gz → 2.85.0__tar.gz

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 (76) hide show
  1. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/PKG-INFO +286 -7
  2. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/README.md +285 -6
  3. cloudos_cli-2.85.0/cloudos_cli/_version.py +1 -0
  4. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/clos.py +63 -35
  5. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/interactive_session/cli.py +467 -5
  6. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/interactive_session/interactive_session.py +761 -6
  7. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli.egg-info/PKG-INFO +286 -7
  8. cloudos_cli-2.83.0/cloudos_cli/_version.py +0 -1
  9. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/LICENSE +0 -0
  10. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/__init__.py +0 -0
  11. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/__main__.py +0 -0
  12. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/bash/__init__.py +0 -0
  13. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/bash/cli.py +0 -0
  14. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/configure/__init__.py +0 -0
  15. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/configure/cli.py +0 -0
  16. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/configure/configure.py +0 -0
  17. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/constants.py +0 -0
  18. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/cost/__init__.py +0 -0
  19. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/cost/cost.py +0 -0
  20. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/cromwell/__init__.py +0 -0
  21. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/cromwell/cli.py +0 -0
  22. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/datasets/__init__.py +0 -0
  23. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/datasets/cli.py +0 -0
  24. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/datasets/datasets.py +0 -0
  25. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/import_wf/__init__.py +0 -0
  26. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/import_wf/import_wf.py +0 -0
  27. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/interactive_session/__init__.py +0 -0
  28. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/jobs/__init__.py +0 -0
  29. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/jobs/cli.py +0 -0
  30. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/jobs/job.py +0 -0
  31. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/link/__init__.py +0 -0
  32. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/link/cli.py +0 -0
  33. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/link/link.py +0 -0
  34. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/logging/__init__.py +0 -0
  35. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/logging/logger.py +0 -0
  36. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/procurement/__init__.py +0 -0
  37. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/procurement/cli.py +0 -0
  38. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/procurement/images.py +0 -0
  39. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/projects/__init__.py +0 -0
  40. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/projects/cli.py +0 -0
  41. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/queue/__init__.py +0 -0
  42. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/queue/cli.py +0 -0
  43. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/queue/queue.py +0 -0
  44. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/related_analyses/__init__.py +0 -0
  45. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/related_analyses/related_analyses.py +0 -0
  46. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/utils/__init__.py +0 -0
  47. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/utils/array_job.py +0 -0
  48. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/utils/cli_helpers.py +0 -0
  49. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/utils/cloud.py +0 -0
  50. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/utils/details.py +0 -0
  51. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/utils/errors.py +0 -0
  52. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/utils/last_wf.py +0 -0
  53. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/utils/requests.py +0 -0
  54. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/utils/resources.py +0 -0
  55. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/workflows/__init__.py +0 -0
  56. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli/workflows/cli.py +0 -0
  57. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli.egg-info/SOURCES.txt +0 -0
  58. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli.egg-info/dependency_links.txt +0 -0
  59. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli.egg-info/entry_points.txt +0 -0
  60. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli.egg-info/requires.txt +0 -0
  61. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/cloudos_cli.egg-info/top_level.txt +0 -0
  62. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/setup.cfg +0 -0
  63. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/setup.py +0 -0
  64. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/tests/__init__.py +0 -0
  65. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/tests/functions_for_pytest.py +0 -0
  66. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/tests/test_cli_project_create.py +0 -0
  67. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/tests/test_cost/__init__.py +0 -0
  68. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/tests/test_cost/test_job_cost.py +0 -0
  69. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/tests/test_error_messages.py +0 -0
  70. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/tests/test_interactive_session/__init__.py +0 -0
  71. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/tests/test_interactive_session/test_create_session.py +0 -0
  72. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/tests/test_interactive_session/test_list_sessions.py +0 -0
  73. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/tests/test_logging/__init__.py +0 -0
  74. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/tests/test_logging/test_logger.py +0 -0
  75. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/tests/test_related_analyses/__init__.py +0 -0
  76. {cloudos_cli-2.83.0 → cloudos_cli-2.85.0}/tests/test_related_analyses/test_related_analyses.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cloudos_cli
3
- Version: 2.83.0
3
+ Version: 2.85.0
4
4
  Summary: Python package for interacting with CloudOS
5
5
  Home-page: https://github.com/lifebit-ai/cloudos-cli
6
6
  Author: David Piñeyro
@@ -100,6 +100,8 @@ Python package for interacting with CloudOS
100
100
  - [Use multiple projects for files in `--parameter` option](#use-multiple-projects-for-files-in---parameter-option)
101
101
  - [Interactive Sessions](#interactive-sessions)
102
102
  - [List Interactive Sessions](#list-interactive-sessions)
103
+ - [Get Interactive Session Status](#get-interactive-session-status)
104
+ - [Pause Interactive Session](#pause-interactive-session)
103
105
  - [Create Interactive Session](#create-interactive-session)
104
106
  - [Datasets](#datasets)
105
107
  - [List Files](#list-files)
@@ -1987,7 +1989,7 @@ Interactive sessions allow you to work within the platform using different virtu
1987
1989
 
1988
1990
  You can get a list of all interactive sessions in your workspace by running `cloudos interactive-session list`. The command can produce three different output formats that can be selected using the `--output-format` option:
1989
1991
 
1990
- - **stdout** (default): Displaysa table directly in the terminal with interactive pagination
1992
+ - **stdout** (default): Displays a table directly in the terminal with interactive pagination
1991
1993
  - **csv**: Saves session data to a CSV file with a minimum predefined set of columns by default, or all available columns using the `--all-fields` parameter
1992
1994
  - **json**: Saves complete session information to a JSON file with all available fields
1993
1995
 
@@ -2006,9 +2008,9 @@ The table displays sessions with pagination controls (press `n` for next page, `
2006
2008
  ┏━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━┓
2007
2009
  ┃ Status ┃ Name ┃ Type ┃ ID ┃ Owner ┃
2008
2010
  ┡━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━┩
2009
- stopped │ cloudosR │ awsRstudio │ 69aee0dba197… │ Leila │
2010
- │ running │ analysis-dev │ awsJupyterNotebook │ 69ae972a18f0… │ John │
2011
- stopped │ test_session │ awsVSCode │ 69a996c098ab… │ James │
2011
+ paused │ cloudosR │ RStudio │ 69aee0dba197… │ Leila │
2012
+ │ running │ analysis-dev │ Jupyter │ 69ae972a18f0… │ John │
2013
+ paused │ test_session │ VS Code │ 69a996c098ab… │ James │
2012
2014
  └─────────┴──────────────┴────────────────────┴───────────────┴────────┘
2013
2015
 
2014
2016
  Total sessions: 15
@@ -2046,7 +2048,7 @@ Interactive session list saved to interactive_sessions_list.json
2046
2048
  You can filter sessions by status and other criteria:
2047
2049
 
2048
2050
  ```bash
2049
- # Filter by status (setup, initialising, running, scheduled, stopped)
2051
+ # Filter by status (setup, initialising, running, scheduled, paused)
2050
2052
  cloudos interactive-session list --profile my_profile --filter-status running
2051
2053
 
2052
2054
  # Show only your own sessions
@@ -2070,6 +2072,283 @@ cloudos interactive-session list --profile my_profile --table-columns "status,na
2070
2072
 
2071
2073
  Available columns: `backend`, `cost`, `cost_limit`, `created_at`, `id`, `instance`, `name`, `owner`, `project`, `resources`, `runtime`, `saved_at`, `spot`, `status`, `time_left`, `type`, `version`
2072
2074
 
2075
+ #### Get Interactive Session Status
2076
+
2077
+ You can retrieve detailed status information for a specific interactive session using the `cloudos interactive-session status` command. This command provides comprehensive information about the session including its current state, resource allocation, costs, and more.
2078
+
2079
+ **Basic Usage**
2080
+
2081
+ Get the status of a session:
2082
+
2083
+ ```bash
2084
+ cloudos interactive-session status --session-id <SESSION_ID> --profile my_profile
2085
+ ```
2086
+
2087
+ The command displays session information in a formatted table:
2088
+
2089
+ ```console
2090
+ ╔════════════════════╦═════════════════════════════════════════════════════╗
2091
+ ║ Property ║ Value ║
2092
+ ╠════════════════════╬═════════════════════════════════════════════════════╣
2093
+ ║ Session ID ║ 69bc00cb1488084e5a6cae70 ║
2094
+ ║ Name ║ analysis-dev (linked) ║
2095
+ ║ Status ║ running ║
2096
+ ║ Backend ║ awsJupyterNotebook ║
2097
+ ║ Owner ║ John Doe ║
2098
+ ║ Project ║ research ║
2099
+ ║ Instance Type ║ c5.xlarge ║
2100
+ ║ Storage ║ 50 GB ║
2101
+ ║ Cost ║ $2.45/hour ║
2102
+ ║ Runtime ║ 2h 15m 30s ║
2103
+ ║ Created At ║ 2024-03-19 10:30:00 UTC ║
2104
+ ║ Last Saved ║ 2024-03-19 12:30:00 UTC ║
2105
+ ║ Auto-Shutdown At ║ 2024-03-19 18:30:00 UTC ║
2106
+ ╚════════════════════╩═════════════════════════════════════════════════════╝
2107
+ ```
2108
+
2109
+ **Watch Mode for Provisioning Sessions**
2110
+
2111
+ Use the `--watch` flag to continuously monitor a session's status as it provisions, with real-time status change notifications:
2112
+
2113
+ ```bash
2114
+ cloudos interactive-session status --session-id <SESSION_ID> --profile my_profile --watch
2115
+ ```
2116
+
2117
+ Watch mode automatically tracks status changes and polls until the session reaches a terminal state:
2118
+
2119
+ ```console
2120
+ Session 69bc00cb1488084e5a6cae70 currently is in initialising...
2121
+ Status changed: initialising → provisioning
2122
+ Status changed: provisioning → running
2123
+ ✓ Session is now running and ready to use!
2124
+ ```
2125
+
2126
+ **Watch Mode Behavior**
2127
+
2128
+ - **Pre-running sessions** (setup, initialising, scheduled): Watch mode will continuously poll and display status changes every 30 seconds (default)
2129
+ - **Running/paused sessions**: Watch mode will show a warning and display the current status instead
2130
+
2131
+ Example with a running session:
2132
+
2133
+ ```bash
2134
+ cloudos interactive-session status --session-id <SESSION_ID> --profile my_profile --watch
2135
+ ```
2136
+
2137
+ ```console
2138
+ ⚠ Warning: Watch mode only works for pre-running statuses (setup, initialising, scheduled). Current status: running. Showing session status instead.
2139
+ [session status table displayed]
2140
+ ```
2141
+
2142
+ **Polling Interval**
2143
+
2144
+ Customize the polling interval for watch mode:
2145
+
2146
+ ```bash
2147
+ # Poll every 15 seconds instead of default 30
2148
+ cloudos interactive-session status --session-id <SESSION_ID> --profile my_profile --watch --watch-interval 15
2149
+ ```
2150
+
2151
+ **Watch Mode Timeout**
2152
+
2153
+ Set a maximum time to wait for the session to reach running state. The `--max-wait-time` option accepts human-friendly duration formats:
2154
+
2155
+ ```bash
2156
+ # 30 minutes (default)
2157
+ cloudos interactive-session status --session-id <SESSION_ID> --profile my_profile --watch
2158
+
2159
+ # 5 minutes
2160
+ cloudos interactive-session status --session-id <SESSION_ID> --profile my_profile --watch --max-wait-time 5m
2161
+
2162
+ # 2 hours
2163
+ cloudos interactive-session status --session-id <SESSION_ID> --profile my_profile --watch --max-wait-time 2h
2164
+
2165
+ # 1 day
2166
+ cloudos interactive-session status --session-id <SESSION_ID> --profile my_profile --watch --max-wait-time 1d
2167
+
2168
+ # 60 seconds
2169
+ cloudos interactive-session status --session-id <SESSION_ID> --profile my_profile --watch --max-wait-time 60s
2170
+ ```
2171
+
2172
+ **Supported timeout formats:**
2173
+ - `30s` - seconds
2174
+ - `5m` - minutes
2175
+ - `2h` - hours
2176
+ - `1d` - days
2177
+
2178
+ If the session does not reach running state within the specified timeout, the watch mode exits with a clear message:
2179
+
2180
+ ```console
2181
+ Timeout: Session did not reach running state within 30m. Current status: provisioning. Exiting watch mode.
2182
+ ```
2183
+
2184
+ **Output Formats**
2185
+
2186
+ Save session status to a file:
2187
+
2188
+ ```bash
2189
+ # Save as JSON
2190
+ cloudos interactive-session status --session-id <SESSION_ID> --profile my_profile --output-format json --output-basename /tmp/session_status
2191
+ # Creates: /tmp/session_status.json
2192
+
2193
+ # Save as CSV
2194
+ cloudos interactive-session status --session-id <SESSION_ID> --profile my_profile --output-format csv --output-basename /tmp/session_status
2195
+ # Creates: /tmp/session_status.csv
2196
+ ```
2197
+
2198
+ #### Pause Interactive Session
2199
+
2200
+ You can pause and terminate a running interactive session using the `cloudos interactive-session pause` command. This command gracefully shuts down the session and optionally saves session data before termination.
2201
+
2202
+ **Basic Usage**
2203
+
2204
+ Pause a session with confirmation:
2205
+
2206
+ ```bash
2207
+ cloudos interactive-session pause --session-id <SESSION_ID> --profile my_profile
2208
+ ```
2209
+
2210
+ The command displays a confirmation prompt:
2211
+
2212
+ ```console
2213
+ About to pause session: 69bd11ca02326c5b3649f5c1
2214
+ Upload data before pausing: True
2215
+ Force immediate termination: False
2216
+ Continue? [y/N]: y
2217
+
2218
+ ✓ Session pause request sent successfully.
2219
+ You can monitor the session status using: cloudos interactive-session status --session-id 69bd11ca02326c5b3649f5c1
2220
+ ```
2221
+
2222
+ **Skip Confirmation Prompt**
2223
+
2224
+ Use the `-y` or `--yes` flag to skip the confirmation prompt:
2225
+
2226
+ ```bash
2227
+ cloudos interactive-session pause --session-id <SESSION_ID> --profile my_profile -y
2228
+ ```
2229
+
2230
+ **Data Management Options**
2231
+
2232
+ By default, session data is saved to S3 before pausing. Use `--no-upload` to skip data saving (use with caution):
2233
+
2234
+ ```bash
2235
+ # Save session data before pausing (default)
2236
+ cloudos interactive-session pause --session-id <SESSION_ID> --profile my_profile
2237
+
2238
+ # Skip saving data (use with caution)
2239
+ cloudos interactive-session pause --session-id <SESSION_ID> --profile my_profile --no-upload
2240
+ ```
2241
+
2242
+ **Termination Modes**
2243
+
2244
+ **Graceful Shutdown (default)**
2245
+
2246
+ Allows the session to clean up resources and save data before terminating:
2247
+
2248
+ ```bash
2249
+ cloudos interactive-session pause --session-id <SESSION_ID> --profile my_profile
2250
+ ```
2251
+
2252
+ **Force Immediate Termination**
2253
+
2254
+ Bypass graceful shutdown for immediate termination (useful for stuck sessions):
2255
+
2256
+ ```bash
2257
+ cloudos interactive-session pause --session-id <SESSION_ID> --profile my_profile --force
2258
+ ```
2259
+
2260
+ Use `--force` with caution as it may not save session data properly.
2261
+
2262
+ **Wait for Termination**
2263
+
2264
+ Use the `--wait` flag to monitor the session until it reaches a terminal state:
2265
+
2266
+ ```bash
2267
+ cloudos interactive-session pause --session-id <SESSION_ID> --profile my_profile --wait
2268
+ ```
2269
+
2270
+ Output with `--wait`:
2271
+
2272
+ ```console
2273
+ Pausing session...
2274
+ Status: shutting_down
2275
+ Status: uploading_data
2276
+ Status: cleaning_up
2277
+ Status: stopped
2278
+ ✓ Session paused successfully
2279
+ ```
2280
+
2281
+ **Error Handling**
2282
+
2283
+ The command provides helpful error messages for common issues:
2284
+
2285
+ ```console
2286
+ # Trying to pause an already paused session
2287
+ Error: Cannot pause session - the session is already paused.
2288
+ Tip: Check the session status with: cloudos interactive-session status --session-id <SESSION_ID>
2289
+
2290
+ # Trying to pause a session that is already being paused
2291
+ Error: Cannot pause session - the session is already being paused.
2292
+ Tip: Wait a moment and check status with: cloudos interactive-session status --session-id <SESSION_ID>
2293
+ ```
2294
+
2295
+ **Examples**
2296
+
2297
+ Basic pause with confirmation:
2298
+
2299
+ ```bash
2300
+ cloudos interactive-session pause --session-id 688351ab6be610972db54a8e --workspace-id 687fb9905c45270e09db1e9a
2301
+ ```
2302
+
2303
+ Pause without saving data and skip confirmation:
2304
+
2305
+ ```bash
2306
+ cloudos interactive-session pause --session-id 688351ab6be610972db54a8e --workspace-id 687fb9905c45270e09db1e9a --no-upload -y
2307
+ ```
2308
+
2309
+ Force pause and wait for termination:
2310
+
2311
+ ```bash
2312
+ cloudos interactive-session pause --session-id 688351ab6be610972db54a8e --workspace-id 687fb9905c45270e09db1e9a --force -y --wait
2313
+ ```
2314
+
2315
+ Pause using profile configuration:
2316
+
2317
+ ```bash
2318
+ cloudos interactive-session pause --session-id 688351ab6be610972db54a8e --profile my_profile --wait
2319
+ ```
2320
+
2321
+ Pause with verbose output:
2322
+
2323
+ ```bash
2324
+ cloudos interactive-session pause --session-id 688351ab6be610972db54a8e --profile my_profile --verbose
2325
+ ```
2326
+
2327
+ **Options Reference**
2328
+
2329
+ The command automatically loads from profile (via `@with_profile_config` decorator):
2330
+ - **From Profile**: apikey, cloudos-url, workspace-id
2331
+ - **Command Line**: Additional options and behaviors
2332
+
2333
+ **Required:**
2334
+ - `--session-id`: The session ID to pause (24-character hex string)
2335
+
2336
+ **Optional Overrides from Profile:**
2337
+ - `--apikey` (optional): Override API key from profile
2338
+ - `--cloudos-url` (optional): Override CloudOS URL from profile
2339
+ - `--workspace-id` (optional): Override workspace ID from profile
2340
+
2341
+ **Optional Behavior Flags:**
2342
+ - `--no-upload`: Don't save session data before pausing (default: saves data)
2343
+ - `--force`: Force immediate termination, skip graceful shutdown (default: graceful). **Warning:** Shows a warning message that some data may not be saved.
2344
+ - `--wait`: Wait for session to fully pause (default: return immediately after sending pause command)
2345
+ - `-y, --yes`: Skip confirmation prompt (default: show confirmation)
2346
+ - `--verbose`: Show detailed progress messages
2347
+
2348
+ **Optional Connection:**
2349
+ - `--disable-ssl-verification`: Disable SSL certificate verification (not recommended)
2350
+ - `--ssl-cert`: Path to SSL certificate file
2351
+ - `--profile`: Profile to use from config file (default: default profile)
2073
2352
 
2074
2353
  #### Create Interactive Session
2075
2354
 
@@ -2205,7 +2484,7 @@ The output shows the session details including:
2205
2484
  - Session ID
2206
2485
  - Session name
2207
2486
  - Backend type (jupyter, vscode, rstudio, spark)
2208
- - Current status (scheduled, initialising, setup, running, stopped)
2487
+ - Current status (scheduled, initialising, setup, running, paused)
2209
2488
 
2210
2489
 
2211
2490
  ### Datasets
@@ -65,6 +65,8 @@ Python package for interacting with CloudOS
65
65
  - [Use multiple projects for files in `--parameter` option](#use-multiple-projects-for-files-in---parameter-option)
66
66
  - [Interactive Sessions](#interactive-sessions)
67
67
  - [List Interactive Sessions](#list-interactive-sessions)
68
+ - [Get Interactive Session Status](#get-interactive-session-status)
69
+ - [Pause Interactive Session](#pause-interactive-session)
68
70
  - [Create Interactive Session](#create-interactive-session)
69
71
  - [Datasets](#datasets)
70
72
  - [List Files](#list-files)
@@ -1952,7 +1954,7 @@ Interactive sessions allow you to work within the platform using different virtu
1952
1954
 
1953
1955
  You can get a list of all interactive sessions in your workspace by running `cloudos interactive-session list`. The command can produce three different output formats that can be selected using the `--output-format` option:
1954
1956
 
1955
- - **stdout** (default): Displaysa table directly in the terminal with interactive pagination
1957
+ - **stdout** (default): Displays a table directly in the terminal with interactive pagination
1956
1958
  - **csv**: Saves session data to a CSV file with a minimum predefined set of columns by default, or all available columns using the `--all-fields` parameter
1957
1959
  - **json**: Saves complete session information to a JSON file with all available fields
1958
1960
 
@@ -1971,9 +1973,9 @@ The table displays sessions with pagination controls (press `n` for next page, `
1971
1973
  ┏━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━┓
1972
1974
  ┃ Status ┃ Name ┃ Type ┃ ID ┃ Owner ┃
1973
1975
  ┡━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━┩
1974
- stopped │ cloudosR │ awsRstudio │ 69aee0dba197… │ Leila │
1975
- │ running │ analysis-dev │ awsJupyterNotebook │ 69ae972a18f0… │ John │
1976
- stopped │ test_session │ awsVSCode │ 69a996c098ab… │ James │
1976
+ paused │ cloudosR │ RStudio │ 69aee0dba197… │ Leila │
1977
+ │ running │ analysis-dev │ Jupyter │ 69ae972a18f0… │ John │
1978
+ paused │ test_session │ VS Code │ 69a996c098ab… │ James │
1977
1979
  └─────────┴──────────────┴────────────────────┴───────────────┴────────┘
1978
1980
 
1979
1981
  Total sessions: 15
@@ -2011,7 +2013,7 @@ Interactive session list saved to interactive_sessions_list.json
2011
2013
  You can filter sessions by status and other criteria:
2012
2014
 
2013
2015
  ```bash
2014
- # Filter by status (setup, initialising, running, scheduled, stopped)
2016
+ # Filter by status (setup, initialising, running, scheduled, paused)
2015
2017
  cloudos interactive-session list --profile my_profile --filter-status running
2016
2018
 
2017
2019
  # Show only your own sessions
@@ -2035,6 +2037,283 @@ cloudos interactive-session list --profile my_profile --table-columns "status,na
2035
2037
 
2036
2038
  Available columns: `backend`, `cost`, `cost_limit`, `created_at`, `id`, `instance`, `name`, `owner`, `project`, `resources`, `runtime`, `saved_at`, `spot`, `status`, `time_left`, `type`, `version`
2037
2039
 
2040
+ #### Get Interactive Session Status
2041
+
2042
+ You can retrieve detailed status information for a specific interactive session using the `cloudos interactive-session status` command. This command provides comprehensive information about the session including its current state, resource allocation, costs, and more.
2043
+
2044
+ **Basic Usage**
2045
+
2046
+ Get the status of a session:
2047
+
2048
+ ```bash
2049
+ cloudos interactive-session status --session-id <SESSION_ID> --profile my_profile
2050
+ ```
2051
+
2052
+ The command displays session information in a formatted table:
2053
+
2054
+ ```console
2055
+ ╔════════════════════╦═════════════════════════════════════════════════════╗
2056
+ ║ Property ║ Value ║
2057
+ ╠════════════════════╬═════════════════════════════════════════════════════╣
2058
+ ║ Session ID ║ 69bc00cb1488084e5a6cae70 ║
2059
+ ║ Name ║ analysis-dev (linked) ║
2060
+ ║ Status ║ running ║
2061
+ ║ Backend ║ awsJupyterNotebook ║
2062
+ ║ Owner ║ John Doe ║
2063
+ ║ Project ║ research ║
2064
+ ║ Instance Type ║ c5.xlarge ║
2065
+ ║ Storage ║ 50 GB ║
2066
+ ║ Cost ║ $2.45/hour ║
2067
+ ║ Runtime ║ 2h 15m 30s ║
2068
+ ║ Created At ║ 2024-03-19 10:30:00 UTC ║
2069
+ ║ Last Saved ║ 2024-03-19 12:30:00 UTC ║
2070
+ ║ Auto-Shutdown At ║ 2024-03-19 18:30:00 UTC ║
2071
+ ╚════════════════════╩═════════════════════════════════════════════════════╝
2072
+ ```
2073
+
2074
+ **Watch Mode for Provisioning Sessions**
2075
+
2076
+ Use the `--watch` flag to continuously monitor a session's status as it provisions, with real-time status change notifications:
2077
+
2078
+ ```bash
2079
+ cloudos interactive-session status --session-id <SESSION_ID> --profile my_profile --watch
2080
+ ```
2081
+
2082
+ Watch mode automatically tracks status changes and polls until the session reaches a terminal state:
2083
+
2084
+ ```console
2085
+ Session 69bc00cb1488084e5a6cae70 currently is in initialising...
2086
+ Status changed: initialising → provisioning
2087
+ Status changed: provisioning → running
2088
+ ✓ Session is now running and ready to use!
2089
+ ```
2090
+
2091
+ **Watch Mode Behavior**
2092
+
2093
+ - **Pre-running sessions** (setup, initialising, scheduled): Watch mode will continuously poll and display status changes every 30 seconds (default)
2094
+ - **Running/paused sessions**: Watch mode will show a warning and display the current status instead
2095
+
2096
+ Example with a running session:
2097
+
2098
+ ```bash
2099
+ cloudos interactive-session status --session-id <SESSION_ID> --profile my_profile --watch
2100
+ ```
2101
+
2102
+ ```console
2103
+ ⚠ Warning: Watch mode only works for pre-running statuses (setup, initialising, scheduled). Current status: running. Showing session status instead.
2104
+ [session status table displayed]
2105
+ ```
2106
+
2107
+ **Polling Interval**
2108
+
2109
+ Customize the polling interval for watch mode:
2110
+
2111
+ ```bash
2112
+ # Poll every 15 seconds instead of default 30
2113
+ cloudos interactive-session status --session-id <SESSION_ID> --profile my_profile --watch --watch-interval 15
2114
+ ```
2115
+
2116
+ **Watch Mode Timeout**
2117
+
2118
+ Set a maximum time to wait for the session to reach running state. The `--max-wait-time` option accepts human-friendly duration formats:
2119
+
2120
+ ```bash
2121
+ # 30 minutes (default)
2122
+ cloudos interactive-session status --session-id <SESSION_ID> --profile my_profile --watch
2123
+
2124
+ # 5 minutes
2125
+ cloudos interactive-session status --session-id <SESSION_ID> --profile my_profile --watch --max-wait-time 5m
2126
+
2127
+ # 2 hours
2128
+ cloudos interactive-session status --session-id <SESSION_ID> --profile my_profile --watch --max-wait-time 2h
2129
+
2130
+ # 1 day
2131
+ cloudos interactive-session status --session-id <SESSION_ID> --profile my_profile --watch --max-wait-time 1d
2132
+
2133
+ # 60 seconds
2134
+ cloudos interactive-session status --session-id <SESSION_ID> --profile my_profile --watch --max-wait-time 60s
2135
+ ```
2136
+
2137
+ **Supported timeout formats:**
2138
+ - `30s` - seconds
2139
+ - `5m` - minutes
2140
+ - `2h` - hours
2141
+ - `1d` - days
2142
+
2143
+ If the session does not reach running state within the specified timeout, the watch mode exits with a clear message:
2144
+
2145
+ ```console
2146
+ Timeout: Session did not reach running state within 30m. Current status: provisioning. Exiting watch mode.
2147
+ ```
2148
+
2149
+ **Output Formats**
2150
+
2151
+ Save session status to a file:
2152
+
2153
+ ```bash
2154
+ # Save as JSON
2155
+ cloudos interactive-session status --session-id <SESSION_ID> --profile my_profile --output-format json --output-basename /tmp/session_status
2156
+ # Creates: /tmp/session_status.json
2157
+
2158
+ # Save as CSV
2159
+ cloudos interactive-session status --session-id <SESSION_ID> --profile my_profile --output-format csv --output-basename /tmp/session_status
2160
+ # Creates: /tmp/session_status.csv
2161
+ ```
2162
+
2163
+ #### Pause Interactive Session
2164
+
2165
+ You can pause and terminate a running interactive session using the `cloudos interactive-session pause` command. This command gracefully shuts down the session and optionally saves session data before termination.
2166
+
2167
+ **Basic Usage**
2168
+
2169
+ Pause a session with confirmation:
2170
+
2171
+ ```bash
2172
+ cloudos interactive-session pause --session-id <SESSION_ID> --profile my_profile
2173
+ ```
2174
+
2175
+ The command displays a confirmation prompt:
2176
+
2177
+ ```console
2178
+ About to pause session: 69bd11ca02326c5b3649f5c1
2179
+ Upload data before pausing: True
2180
+ Force immediate termination: False
2181
+ Continue? [y/N]: y
2182
+
2183
+ ✓ Session pause request sent successfully.
2184
+ You can monitor the session status using: cloudos interactive-session status --session-id 69bd11ca02326c5b3649f5c1
2185
+ ```
2186
+
2187
+ **Skip Confirmation Prompt**
2188
+
2189
+ Use the `-y` or `--yes` flag to skip the confirmation prompt:
2190
+
2191
+ ```bash
2192
+ cloudos interactive-session pause --session-id <SESSION_ID> --profile my_profile -y
2193
+ ```
2194
+
2195
+ **Data Management Options**
2196
+
2197
+ By default, session data is saved to S3 before pausing. Use `--no-upload` to skip data saving (use with caution):
2198
+
2199
+ ```bash
2200
+ # Save session data before pausing (default)
2201
+ cloudos interactive-session pause --session-id <SESSION_ID> --profile my_profile
2202
+
2203
+ # Skip saving data (use with caution)
2204
+ cloudos interactive-session pause --session-id <SESSION_ID> --profile my_profile --no-upload
2205
+ ```
2206
+
2207
+ **Termination Modes**
2208
+
2209
+ **Graceful Shutdown (default)**
2210
+
2211
+ Allows the session to clean up resources and save data before terminating:
2212
+
2213
+ ```bash
2214
+ cloudos interactive-session pause --session-id <SESSION_ID> --profile my_profile
2215
+ ```
2216
+
2217
+ **Force Immediate Termination**
2218
+
2219
+ Bypass graceful shutdown for immediate termination (useful for stuck sessions):
2220
+
2221
+ ```bash
2222
+ cloudos interactive-session pause --session-id <SESSION_ID> --profile my_profile --force
2223
+ ```
2224
+
2225
+ Use `--force` with caution as it may not save session data properly.
2226
+
2227
+ **Wait for Termination**
2228
+
2229
+ Use the `--wait` flag to monitor the session until it reaches a terminal state:
2230
+
2231
+ ```bash
2232
+ cloudos interactive-session pause --session-id <SESSION_ID> --profile my_profile --wait
2233
+ ```
2234
+
2235
+ Output with `--wait`:
2236
+
2237
+ ```console
2238
+ Pausing session...
2239
+ Status: shutting_down
2240
+ Status: uploading_data
2241
+ Status: cleaning_up
2242
+ Status: stopped
2243
+ ✓ Session paused successfully
2244
+ ```
2245
+
2246
+ **Error Handling**
2247
+
2248
+ The command provides helpful error messages for common issues:
2249
+
2250
+ ```console
2251
+ # Trying to pause an already paused session
2252
+ Error: Cannot pause session - the session is already paused.
2253
+ Tip: Check the session status with: cloudos interactive-session status --session-id <SESSION_ID>
2254
+
2255
+ # Trying to pause a session that is already being paused
2256
+ Error: Cannot pause session - the session is already being paused.
2257
+ Tip: Wait a moment and check status with: cloudos interactive-session status --session-id <SESSION_ID>
2258
+ ```
2259
+
2260
+ **Examples**
2261
+
2262
+ Basic pause with confirmation:
2263
+
2264
+ ```bash
2265
+ cloudos interactive-session pause --session-id 688351ab6be610972db54a8e --workspace-id 687fb9905c45270e09db1e9a
2266
+ ```
2267
+
2268
+ Pause without saving data and skip confirmation:
2269
+
2270
+ ```bash
2271
+ cloudos interactive-session pause --session-id 688351ab6be610972db54a8e --workspace-id 687fb9905c45270e09db1e9a --no-upload -y
2272
+ ```
2273
+
2274
+ Force pause and wait for termination:
2275
+
2276
+ ```bash
2277
+ cloudos interactive-session pause --session-id 688351ab6be610972db54a8e --workspace-id 687fb9905c45270e09db1e9a --force -y --wait
2278
+ ```
2279
+
2280
+ Pause using profile configuration:
2281
+
2282
+ ```bash
2283
+ cloudos interactive-session pause --session-id 688351ab6be610972db54a8e --profile my_profile --wait
2284
+ ```
2285
+
2286
+ Pause with verbose output:
2287
+
2288
+ ```bash
2289
+ cloudos interactive-session pause --session-id 688351ab6be610972db54a8e --profile my_profile --verbose
2290
+ ```
2291
+
2292
+ **Options Reference**
2293
+
2294
+ The command automatically loads from profile (via `@with_profile_config` decorator):
2295
+ - **From Profile**: apikey, cloudos-url, workspace-id
2296
+ - **Command Line**: Additional options and behaviors
2297
+
2298
+ **Required:**
2299
+ - `--session-id`: The session ID to pause (24-character hex string)
2300
+
2301
+ **Optional Overrides from Profile:**
2302
+ - `--apikey` (optional): Override API key from profile
2303
+ - `--cloudos-url` (optional): Override CloudOS URL from profile
2304
+ - `--workspace-id` (optional): Override workspace ID from profile
2305
+
2306
+ **Optional Behavior Flags:**
2307
+ - `--no-upload`: Don't save session data before pausing (default: saves data)
2308
+ - `--force`: Force immediate termination, skip graceful shutdown (default: graceful). **Warning:** Shows a warning message that some data may not be saved.
2309
+ - `--wait`: Wait for session to fully pause (default: return immediately after sending pause command)
2310
+ - `-y, --yes`: Skip confirmation prompt (default: show confirmation)
2311
+ - `--verbose`: Show detailed progress messages
2312
+
2313
+ **Optional Connection:**
2314
+ - `--disable-ssl-verification`: Disable SSL certificate verification (not recommended)
2315
+ - `--ssl-cert`: Path to SSL certificate file
2316
+ - `--profile`: Profile to use from config file (default: default profile)
2038
2317
 
2039
2318
  #### Create Interactive Session
2040
2319
 
@@ -2170,7 +2449,7 @@ The output shows the session details including:
2170
2449
  - Session ID
2171
2450
  - Session name
2172
2451
  - Backend type (jupyter, vscode, rstudio, spark)
2173
- - Current status (scheduled, initialising, setup, running, stopped)
2452
+ - Current status (scheduled, initialising, setup, running, paused)
2174
2453
 
2175
2454
 
2176
2455
  ### Datasets
@@ -0,0 +1 @@
1
+ __version__ = '2.85.0'