Devolutions / Devolutions/ironPosh

PSRP: dynamic runspace pool sizing (Set Max/Min, GetAvailable, Reset)

Open
#45 0 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Rust
Stars
10
Forks
2
PR merge metrics
No merged PRs in 30d

Description

## Gap
Post-open runspace-pool management is absent (message-type IDs reserved, no flows). These matter once we support more than one concurrent pipeline per pool.

## Missing messages
- `SET_MAX_RUNSPACES`, `SET_MIN_RUNSPACES`
- `GET_AVAILABLE_RUNSPACES` → `RUNSPACE_AVAILABILITY` response
- `RESET_RUNSPACE_STATE`

(Currently min/max are only fixed at pool open via INIT/CONNECT — enum IDs at `crates/ironposh-psrp/src/cores.rs:38`.)

## Required
- Implement the request messages + the `RUNSPACE_AVAILABILITY` response parsing (carries a ci/long response).
- Client-core APIs: `set_max_runspaces`, `set_min_runspaces`, `get_available_runspaces`, `reset_runspace_state`, correlated by the `ci` (call id).
- Track pool capacity to allow >1 in-flight pipeline (prerequisite/related work).

## Acceptance
- Tests asserting set/get round-trips against the live server; reset returns the pool to a clean state.

## References
- psrpcore `src/psrpcore/_client.py` (`set_max_runspaces`/`set_min_runspaces`/`get_available_runspaces`/reset).
- Native C# `RunspacePoolInternal.cs` (SetMax/SetMin/GetAvailableRunspaces), `EncodeAndDecode.cs`.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the reserved message-type IDs in crates/ironposh-psrp/src/cores.rs:38, then compare the referenced psrpcore client APIs and Native C# RunspacePoolInternal.cs and EncodeAndDecode.cs. Trace the existing INIT/CONNECT flow and client-core call correlation before running the live-server tests. Done means the four APIs, availability response parsing, capacity tracking, and round-trip/reset acceptance tests work.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
backend-api-design
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.