Add support for "locked" attribute to Settings Module
<!--IssueSummary start--> <details> <summary> Everyone can contribute. [Help move this issue forward](https://handbook.gitlab.com/handbook/marketing/developer-relations/contributor-success/community-contributors-workflows/#contributor-links) while earning points, leveling up and collecting rewards. </summary> - [Work on this issue](https://contributors.gitlab.com/manage-issue?action=work&projectId=278964&issueIid=479702) - [Close this issue](https://contributors.gitlab.com/manage-issue?action=close&projectId=278964&issueIid=479702) </details> <!--IssueSummary end--> MR: Pending ## Description Add support for "locked" attribute to Settings Module - See https://gitlab.com/groups/gitlab-org/-/epics/14186+ for overview and more context - See [Related Issues and MRs section in that epic](https://gitlab.com/groups/gitlab-org/-/epics/14186#related-issues-and-mrs) for related issues and MRs ## Acceptance Criteria - [ ] Adds support for "locked" attribute to Settings Module - [ ] Update integration tests for settings module. - [ ] Updates docs for settings module ## Technical Requirements * This is necessary to pass the `locked` attribute in the Settings Module along the ROP chain, so that later/subsequent/lower-precedence steps can be ignored/short-circuited if it the setting was locked by a previous step. * This support should be back-ported into `lib/gitlab/fp/settings/default_settings_parser.rb`, and the return value of that should probably be changed from a tuple into a hash of `value`, `type` and `locked` for clarity. This return value API change will also have to be reflected in both the Web IDE and Workspaces usage of `lib/gitlab/fp/settings/default_settings_parser.rb` * The Web IDE Settings Module does _NOT_ need to use this value yet. * The Workspaces Settings module will use this in `lib/remote_development/settings/current_settings_reader.rb` as well as the agent setting step, by simply adding an additional guard clause to check the `locked` status for each setting in the loop. This will establish the pattern for handling the `locked` attribute in the future when we add additional steps to the chain. * The `EnvVarOverrideProcessor` step will _NOT_ observe the `locked` attribute. The docs for the Settings Module should be updated to reflect this. ## Design Requirements
issue