* rename client_id in pool to object_id
* fix tests
* print out the content body when receiving an error response in the agent
* fix test
* Apply suggestions from code review
* Update src/ApiService/ApiService/Functions/AgentRegistration.cs
* format
* cleanup
* format
* address pr comment
* Fix NullRef exception when getting a scaleset that does not exist
Updated the ScalesetOperations.GetNodes to return a non nullable dictionary
* build fix
* Allow multiple agents to run on the same machine
- Move the work directory for each agent into a machine specific folder
- added option on the command line to override the machine id and name
- added an option to remove the done lock when starting the agent
* add git_ignore
* fix tests
* clippy+ format
* fix linux build
* fix test
* cleanup
* cleanup
* fix reset_lock parsing
* clippy
* Need to keep working on making dummy values
* Create endpoing to validate scriban templates
* Fix dev experience with app config manager, allow scriban validate endpoint to override jinja converssion
* Use strict validation
Co-authored-by: Teo Voinea <Teodor.Voinea@microsoft.com>
While I was investigating `llvm-symbolizer` issues, I found that we are installing LLVM-10 by default.
Now that we are using the Ubuntu 20.04 image as the default, use the latest LLVM version available for that release. (In addition, v12 is also available on 22.04, whereas v10 is not.)
* Foundation for feature flags
* Demo usage
* Use managed identity
* Add FFs using DI method
* missed a file
* Cleanup
* Forgot test context
* Default is off if the FF doesn't already exist
* Update src/ApiService/ApiService/Program.cs
Co-authored-by: George Pollard <porges@porg.es>
* force evaluate lock files
Co-authored-by: Teo Voinea <Teodor.Voinea@microsoft.com>
Co-authored-by: George Pollard <porges@porg.es>
This is a regression from Python to C# version: the C# code was not checking the result of the AddExtensions function, so would transition Repro VMs or Proxy VMs into Running state potentially before they are ready to be used.
This could cause test failures or confusing errors when running `create_and_connect`.
* pass the machine_identity from the agent to the task
* clippy fix
* removing default from MachineIdenitty
* fix tests
* more tests fixes
* format
* clippy fix
* another fix
* fix test
* Update src/agent/onefuzz-task/src/local/common.rs
1. When parsing a `ValidatedString` from JSON and it fails, include a message about the expected format of the string.
- Reworked the classes using C#11 features to reduce the amount of boilerplate needed to add a new validated string type.
2. Change to use [RFC7807](https://www.rfc-editor.org/rfc/rfc7807) format for HTTP error responses. At the moment we returned the `Error` type which was undocumented.
3. Update CLI to parse RFC7807 responses.
Old error looked like:
```console
$ onefuzz containers create AbCd
ERROR:cli:command failed: request did not succeed: HTTP 500 -
```
New error looks like:
```console
$ onefuzz containers create AbCd
ERROR:cli:command failed: request did not succeed (400: INVALID_REQUEST): Unable
to parse 'AbCd' as a Container: Container name must be 3-63 lowercase letters, numbers,
or non-consecutive hyphens (see: https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/resource-name-rules#microsoftstorage)
```
Closes#2661.
Enabling some native code features which are SDL requirements. (Specifically, the requirement "Executable binary files must be hardened to leverage available platform security mitigations".)
I attempted to use BinSkim to enforce the requirements but it has trouble with Rust binaries at present.