Enable the .NET functions for the agent by sending the agent the URI for the `-net` service.
Also fix some things causing failures when using the .NET functions (`CouldShrinkScaleset` was not implemented).
Improve error handling around table serialization/deserialization, fix an issue with int64/long mismatch between Python & C# code.
----
For `check-pr` testing:
1. There's a new parameter `enable_dotnet` which maps directly to the `--enable_dotnet` switch on `deploy.py`.
2. If you put `agent` there, all the `agent_*` functions will be enabled for .NET and disabled for Python.
3. If `agent_can_schedule` is disabled on the Python side, it will automatically tell the agent to use the .NET functions.
So to test the .NET agent functions, do a `check-pr` run with `enable_dotnet` set to `agent` and it should all work.
The agent build takes most of the CI runtime, so improve it by only rebuilding if the pre-reqs or something inside `src/agent` changes.
We will always skip the cache for builds on tags and from the `main` branch, so that version is stamped correctly there.
Closes#1595. Leaving one instance of `allow(clippy::uninit_vec)` in `pipe_handle.rs` as it is more difficult to remove. (Maybe there's another crate we could use for pipes?)
To satisfy clippy, instead of creating the vec and then resizing it straight away (exposing uninitialized data), write into the `spare_capacity_mut()` (which is `&mut [MaybeUninit<_>]`) and then resize it afterwards.
- Add logging
- Catch terminal exceptions and log as errors before re-throwing
- Nest some exceptions
- Warn when falling back to non-zero cost delegate for legacy compat
* Fix execution of timerProxy
- fixed behavior of Container.SaveBlob (file was not being overwritten)
- added support for default value in the entity converter
- fix scaleset size data type
- added initialization of Subnet
- renamed TestHook Info to _Info to prevent clashing of name function mame
- added target framework to ApiServiceProject to help local debugging
* fix unit tests
* fix unit tests
* remove unused property
* fix typo
* removing partial class TimerProxy
* checkpoint
* some more progress
* more progress
* More progress
* Now it's time to test it
* It works locally 🎉
* Attempting clean build
* fmt
* temporarily stub out macos
* missed a few
* please be the last one
* .
* .
* .
* noop change to unstuck actions
* .
* .
* Fix setup script
* Some fixes
* It works except for a race condition -- use a directory watcher to fix it
* It works end to end!
* Execute the commands using tokio's structs and timeout mechanism
* It works.... for real this time
* Undo timer changes
* Cleanup
* 🧹
* Fix import
* .
* PR comments
* Fix clippy
* Clippy whyyy
* Only check dotnet path once
* fmt
* Fix a couple more comments
Using `3.8` for the Python devcontainer feature version means it builds from source every time the devcontainer is rebuilt, which is very slow. Using `os-provided` will give us a recent enough version (3.10).
Also install `python-is-python3` so that the bare `python` command points to Python 3 (our scripts seem to expect this).
* Add azcopy copy support and switch to the default max_concurrency
* Modify upload_file_data to use upload_file for consistency
* Fix lint issues
* Apply black formatting rules
* Apply isort formatting rules
Co-authored-by: Stas <stishkin@live.com>