This is a wire breaking change for json errors since we have removed and renamed a few fields, and changed part of the structure of the returned json error.
* Remove redundant fields in Status, details.error_id, details.TraceId and details.request_id from API errors.
* Added wrapped errors and "ops" field to indicate the internal operation of the errors returned by the API.
* Added error cli error reporting of Op and wrapped errors.
SDK methods now return 1 error. To differentiate between Client errors and Server errors I've also implemented the AsServerError function which returns an *api.Error if it is an error originating from the remote server or nil otherwise.
* Scopes inline version into update request body.
* Users inline version into update request body.
* Group inline version into update and add|set|remove member request body.
* Role inline version into update and add|set|remove grant|principal request body.
* Auth method inline version into update request body.
* Auth Account inline version into update request body.
* host catalog version is inlined for update.
* Gen after merge.
* Submitting template changes for version handling.
* Create user handler stuff.
* Fixing Not Found errors from DB.
* Fixing param names.
* Update the proto's go package generation.
* Generate the user resource.
* Adding SDK methods for users.
* Fix the base type of Users and add tests.
* Connect user service to the controller handler.
* Attach the default org to the Test Controller's client.
* Take into account the provided request paths when the client builds the org/project path prefix.
* Adding comments to the API.
* rename repo function to repoFn.
* Fix typo in update mask errors.
* Clean up tests.
* Remove special checks for request url content in the api client and fix CORS test.
* Created host catalog service.
* Fixing uri generation for create.
* Use newly submitted static host catalog.
* Copying over tests from projects.
* Fix UpdateHostCatalogRequest merging proto.
* Properly use static host catalog prefixes in tests.
* Correct test to verify the expected uri and id prefix is set.
* Add test for unsetting descriptions.
* Correct bad spelling in comment.
* Tweaking variable names.
* Adding Stringer to the catalog type and setting the type on the response.
* Setting up the catalogType to contain more info regarding its type.
* Validate the type field in requests.
* Remove unused method.
* Comment describing invariants around types.
* Wiring in the repo into the static catalog handler.
* feature: Add CRUD operations for host catalogs to the go api library.
* Updated comments to the exported methods.
* fix: return the result of handlers.NotFoundError instead of just calling it.
* Fixing typos referencing just hosts instead of host catlogs.
* Update NewService returns an error and a non pointer type.
* Pull "org_id" and "project_id" into constants and the validation of them into the ValidateAncestors.
* Check errors for all Register*HandlerServer calls.
* fix: Remove left over reference that could cause a panic.
* fix: Changing "x := []string{}" to "var x []string"
* fix: Log errors in test cleanup.
* Changing the code to use google.golang.org/protobuf instead of the older github based protobuf library.
* Changing all t.Fatal checks to require.NoError calls.
* Changing unrecognized prefixes to Invalid Argument instead of Not Found.
* fix: toDbUpdateMask now returns error if it was unable to find any valid paths.
* Define CreatedTime, UpdatedTime, and Type at initialization time in toProto.
* Adding sdk test for unsetting a value.
* Require that project is created correctly before testing the catalog.
* Remove unused host catalog from test.
* Change a t.Fatal to a require.NoError that I missed earlier.
* Change shutdown error logging to t.Errorfs.
* Shorten validateX function names.
* Inline API responses.
* Add todo to make a new repo per request.
* Inline regex check for invalid id.
* Change stored repos into repo creating functions which satisfies ICU-223.
* Wrap proto comments to be under 80 characters long.
* Remove the exception on the read only fields that can be set in an Update request.
* Removing out of date comment.
* Use iam.TestScopes instead of making the project myself.
* Renaming files to be consistant with go test standards and resource naming standards.
* Remove TODO related to a task completed in an earlier commit.
* Fix the previous commit which removed the wrong TODO.
* Add error handler that converts from rpc.Status errors to Watchtower API errors.
* Better testing for ErrorHandler.
* Rename testcase and remove empty default switch case.
* Change the error status back to int64.
* Converting everything to int32s.
jsonpb wraps int64s as a string which we dont like. We'll figure out how to use values larger than int64s when it comes up.
* Remove special casing for TraceId which isn't needed anymore.
* Removing wrappers from error details since we never need to know when they are set or unset from the end user.
* Using the helper error functions inside the project service.
* Correct usage of hclog, replace panic with Error log.
* Adding periods to all API returned errors, correct spelling, fix missed invalid argument error not using helper function.
* Change our logged errors to Error instead of Warn.
* Add TODO for defining and using our own defined API error codes.
* Add TODO to remove internal error messages.
* carve out scope into a separate branch for a PR
* refactor getOpts to be private
* narrowed to just the scope proto
* wrap in a transaction
* remove user from scopes PR
* make scope type immutable
* refactored with more referential integrity (thanks mike)
* refactor based on pair programming with Mike
* better VetForWrite that supports db.Options but that requires GetOpts and Options to be exported.
* stop printing out all the db logs
* refactor withScope to be private
* refactor the VetForWrite a bit based on Todd's PR comment
* fix typo
Co-authored-by: Michael Gaffney <mgaffney@users.noreply.github.com>
* fix ctx propagation and Scope returns
* fix ctx propagation and use a const for std retry count
* change Std to Crud
* fix ctx propagation
* make sure update with field masks doesn't update a field not in the mask and force a read after update.
* add description
* remove comment about future
* clean error strings
* clean up enum string rep
* stdMeta
* fix return value to be just nil
* fix returns and errors
* update test to match new error string
* change len of domain to 24
* provide common function for new public ids
* use common db.NewPublicId() and provide the correct prefix
* move list out of CrudActions and provide a CrudlActions shortcut as well
* some comments about the purpose of VetForWrite()
* move to random 10
* Adding project API interface.
* Creation of Project handler and Tests
* Move to using the iam objects.
* Setting up testify framework for mocking and assertions.
* Fix iam options typo references.
* Adding tests for CreateProject and UpdateProject.
This also adds some additional argument validation.
* Merging in PR 40
* Renamed fakeRepo to mockRepo
* Changing around TODOs to capture current plans with the code.
* Remove the repo interface and use a real DB for tests.
* Fixed a few tests.
* Adding checks for properly formatted identifiers.
* Updating code to account for recent merges. Relaxing some restrictions on what an id can look like.
* Added small comment explaining why RegisterGrpcGatewayer interface exists.
* Move project service up a call level.
Long term I think it would make sense to define these services even higher up the call stack, potentially at the initialization of the controller server, near where the DB is initialized.
* Making these fields align with those in the resources under hosts/...
* Hard code the service initialization in the handler registration code.
* Regenerate project related code proto code.
* Removing type field for project.
* Adds basic project handling in CLI/SDK (#47)
* Adds SDK for creating and reading projects
* Reorganizes a bit
* Adds CLI for creating and reading projects
* Fixes some some generation bugs
* Adds redirect support for default org ID
* Fix protobuf import references being moved.
* Update client test to look for "orgs" and "projects" instead of "org" and "project"
* Update expected segments test
* Fix setAddr handling when default organization is in use
* Set client in target after create or read
* Adding functionality and tests for update masks.
* Additional tests for update. Disable update non existant project test.
* Make not providing an update mask be an invalid argument.
* Make empty update mask paths and no mutable fields in the path an InvalidArgument error.
* Fix get Project test.
* Adding back in the Update a non existant project test case.
* Adding seperate path structured tests.
* Adding delete from repository API call.
* Update calls to LookupScope and DeleteScope.
* Pass in only what is needed for interfacing with the repo.
* Creating delete sdk methods for the first time.
* Create delete generation functionality in go sdk.
* Use assert for tests instead of if statements.
Co-authored-by: Jim Lambert <jimlambrt@Jims-MBP-3.home>
Co-authored-by: Jim <jlambert@hashicorp.com>
Co-authored-by: Michael Gaffney <mgaffney@users.noreply.github.com>
Co-authored-by: Jeff Mitchell <jeffrey.mitchell@gmail.com>
* carve out scope into a separate branch for a PR
* refactor getOpts to be private
* narrowed to just the scope proto
* wrap in a transaction
* remove user from scopes PR
* make scope type immutable
* refactored with more referential integrity (thanks mike)
* refactor based on pair programming with Mike
* better VetForWrite that supports db.Options but that requires GetOpts and Options to be exported.
* stop printing out all the db logs
* refactor withScope to be private
* refactor the VetForWrite a bit based on Todd's PR comment
* fix typo
Co-authored-by: Michael Gaffney <mgaffney@users.noreply.github.com>
* fix ctx propagation and Scope returns
* fix ctx propagation and use a const for std retry count
* change Std to Crud
* fix ctx propagation
* make sure update with field masks doesn't update a field not in the mask and force a read after update.
* add description
* remove comment about future
* clean error strings
* clean up enum string rep
* stdMeta
* fix return value to be just nil
* fix returns and errors
* update test to match new error string
* change len of domain to 24
* provide common function for new public ids
* use common db.NewPublicId() and provide the correct prefix
* move list out of CrudActions and provide a CrudlActions shortcut as well
* some comments about the purpose of VetForWrite()
* move to random 10
* Adding project API interface.
* Creation of Project handler and Tests
* Move to using the iam objects.
* Setting up testify framework for mocking and assertions.
* Fix iam options typo references.
* Adding tests for CreateProject and UpdateProject.
This also adds some additional argument validation.
* Merging in PR 40
* Renamed fakeRepo to mockRepo
* Changing around TODOs to capture current plans with the code.
* Remove the repo interface and use a real DB for tests.
* Fixed a few tests.
* Adding checks for properly formatted identifiers.
* Updating code to account for recent merges. Relaxing some restrictions on what an id can look like.
* Added small comment explaining why RegisterGrpcGatewayer interface exists.
* Move project service up a call level.
Long term I think it would make sense to define these services even higher up the call stack, potentially at the initialization of the controller server, near where the DB is initialized.
* Making these fields align with those in the resources under hosts/...
* Hard code the service initialization in the handler registration code.
* Regenerate project related code proto code.
* Removing type field for project.
* Adds basic project handling in CLI/SDK (#47)
* Adds SDK for creating and reading projects
* Reorganizes a bit
* Adds CLI for creating and reading projects
* Fixes some some generation bugs
* Adds redirect support for default org ID
* Fix protobuf import references being moved.
* Update client test to look for "orgs" and "projects" instead of "org" and "project"
* Update expected segments test
* Fix setAddr handling when default organization is in use
* Set client in target after create or read
* Adding functionality and tests for update masks.
* Additional tests for update. Disable update non existant project test.
* Make not providing an update mask be an invalid argument.
* Make empty update mask paths and no mutable fields in the path an InvalidArgument error.
* Fix get Project test.
* Adding back in the Update a non existant project test case.
* Adding seperate path structured tests.
* Attach an issue id to field mask validation TODO.
* Generate Project Update SDK code (#58)
* Created the UpdateFunction method.
* Regenerate protobuf derived code since pull #50 updated dependencies.
* Special case IDs to not be passed for updates.
* Updated the tools file since imports reordered it.
* Add spaces between each tools import/comment grouping.
Co-authored-by: Jim Lambert <jimlambrt@Jims-MBP-3.home>
Co-authored-by: Jim <jlambert@hashicorp.com>
Co-authored-by: Michael Gaffney <mgaffney@users.noreply.github.com>
Co-authored-by: Jeff Mitchell <jeffrey.mitchell@gmail.com>