* 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.
This is only compiled in when a `dev` build tag is specified (see #75)
for safety. Attempting to use the flag without that tag at build time
will fail. However, it is always available within the codebase itself so
that tests can be written against this functionality in a programmatic
way.
Manual testing was performed; no plans to add automated ones as this
isn't production-necessary nor exported functionality.
* 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>
This can be used in tests to get access to a controller that behaves
just like a dev controller but doesn't require the normal Command bits
(UI, etc).
This can be enhanced over time as needed; for now it's pretty simple but
it's good enough to be used for API tests. A simple project create/read
API test is added as well, which serves to show the programmatic model
(as well as test those functions at the API level).
* Add wt_timestamp type to database
* Swap the order of domains and oplog migrations
All migrations should use the new 'wt_timestamp' domain type for
timestamps.
* Remove dead code
* Add down migration for wt_timestamp
* 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
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>
These changes create a dev org in the database on startup.
They also plumb through a dev-org-id flag that allows specifying a chosen org ID in dev mode.
The logic will allow us to let people specify a default org ID in the config file too, although currently that's not enabled.
Several other improvements were made as well:
* Consolidation of some code from across the server commands
* Plumbing shutdownch through so we can use it for canceling contexts during startup
This was copied from Vault code but shouldn't be necessary any more as a
change in hclog a while back meant that derived loggers share the log
level of the parent.