* Bump generated proto code
* Add argon2 conf sql and proto files
* Add generated code for argon2 conf
* Add Resources for Argon2 configuration
* Add get and set Configuration to repository
* Add current config reference to AuthMethod
* Fix authmethod_test
* Fix TestAccount_New
* Add WithConfiguration to options
* Add sql views for current configuration
* Fix SetTableName
* Remove duplicate testAccounts function
* Make tests clearer
* Fix comment
* Rename test variable
* Use NewPrivateId function for private Ids
* Refactor: rename public_id to private_id for password_conf and password_credential
* Remove bad comment
* Check if embedded argon2 configuration is nil
* Add checks around the WithConfiguration option
* Use spaces not tabs in proto file
* Add doc to explain choice of oplog ticket
* Verify oplog in test
* Add base SQL and protobuf files
* Add options and public Ids
* Add AuthMethod and Account resources
* Add repository
* Add CreateAuthMethod to repository
* Add CreateAccount method to repository
* Remove redundant foreign keys
* Document relationships between iam and auth tables
* Document relationships between auth and auth_password tables
* Add documentation for subtype triggers
* Use wt_scope_id domain type for scope_id
* Refactor: move test helper function
* Remove check from SetTableName
* Remove check from another SetTableName
* Use org scope in tests
* Remove handling of CreateTime and UpdateTime from docs
Don't rely on token for scopes collection actions
This requires `scope_id` to be passed (via query param) for actions on
the scopes collection; that is, listing or creating. However, it removes
the dependency on using the token for the scope of the command. For
actions on a specific scope, we use the given ID to determine the scope
we should be operating at, doing a lookup if necessary.
Existing tests have been updated. Of particular note, the CORS test was
already operating on the scopes collection so served as a good test to
ensure that from an API level the scope_id parameter was being parsed
and passed through (the tests fail without adding that query parameter
in).
* Feature: Create MaskManager logic to handle project -> scope update mask logic.
* Updating resource protos and services to use new mask manager setup.
Co-authored-by: Jeff Mitchell <jeffrey.mitchell@gmail.com>
* Adding grants related methods to Roles.
* Adding grants back after the merge of Principals.
* Adding tests for Grant related custom methods.
* Improving api handler methods.
* Fixing tests and sdk field.
* Adding todos for adding principals and grants to List and Update Role responses.
* Fix up Set* tests and fix SetPrincipals bug.
* Making AddPrincipals and RemovePrincipals similar to the tests for AddGrants and RemoveGrants.
* Add JSON grants to output (#187)
I also changed canonical_grants to grants_canonical and used
grants_json. I believe that when members are simply different formats of
other members this is the preferred way to have it in the API. Let me
know if you disagree and we can dig in more.
* Regenerate the API role resource.
Co-authored-by: Jeff Mitchell <jeffrey.mitchell@gmail.com>
* Create the organization Get handler.
* Added org listing.
* Make sure the cmp.Diff always sorts the returned organizations before comparing.
* Connect organization service to the Controller handler.
* 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.
* Invalid Argument errors now return a per field error message.
* Creating an API error struct.
* SDK uses field error details proto.
* Adding tests specifically for handler helper error messages resulting in expected API output.
* Inlining the error checks into the table driven tests. Use protocmp for assertions to make printing out diffs easier to parse.
* Aggregate the invalid argument fields detected to be wrong.
* Make the returned order of fields deterministic in the error details..
* Fixing formatting issue in errors_test.go.
* Test to confirm unimplemented results in a 405 and not 404.
* NewService for the project service now returns a non pointer and an error.
* Replacing t.Fatal calls with require.NoError calls.
* Initialize empty slices following the recommended way.
* Don't inline the prefix strings when validating requests.
* Check error when cleaning up the test.
* Add check that update updates the time.
* Use google.golang.org/protobuf where possible instead of github.com/golang/protobuf.
* Shorten the validateX function names.
* Inline API responses.
* Change test cleanup error logging to t.Errorf.
* Remove unneeded creation of an extra project.
* Inline regex check for invalid id.
* Build the pb.Project inline when converting from db to wire proto.
* Change stored repos into repo creating functions.
* Using iam.TestScopes instead of creating them myself.
* Remove out of date comments.
* Update name to match go test naming standards.
* Adding project service comments.
* Using scopeType's new prefix method inside scope.go
* Setting test project's name and desc to default to pass tests.
* Change host catalog to project in test.
* Fixing merge errors.
* Fixing some more merge errors.
* Fix typo in comments.
* Fix typos in project_service.go.
* Update error indicating provided id and the expected prefix.
* Make the RepoFactory types in a common directory.
* 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.
* 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.
* 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.
* database: add wt_public_id domain type
* static-hosts: add migrations
* Rename migrations
* migrations: add description column and fix foreign keys
* Add protobuf for static host
* Add HostCatalog and HostSet
* Add Options
* Add foreign key constraint
* Add package doc
* Add copied scanner code
* Add NewHostCatalog with tests
* Override default table name for static host catalog
* WIP: save static host catalog to database
* WIP: Print db url for debugging
* Add iam test helper function
* Make gorm default to null for names and descriptions
* Add foreign key constraint from host catalog to scope
* Names are not needed for the test org and project
* Avoid an ordering dependency in down migrations
* Use wt_timestamp
* Add check constraint on host address column
* Add Host
* Add HostSet
* Add HostSetMember
* Test a HostSetMember can be written to the database
* Move the getters and setters for table name to a new file
The TableName methods are needed by gorm and the SetTableName methods
are for oplog. Moving them to a new file so related functionality is in
the same file.
* Add repository
* Add NewRepository
* Close connection before cleanup of database
* Add comments to protobuf file and regenerate
* Define repository methods for HostCatalog
* Assign PublicId when resource is inserted into the database
* Wrap a nil parameter error
* Add oplog tickets for static host types
* WIP: first cut at CreateCatalog
* CreateHostCatalog: more tests
* Detect unique constraint violation
* Use const for PublicId prefixes
* Use PostgreSQL error name instead of error code
* Add TODO comments
* Fix comments
* Use PublicId not PublicID
* Refactor: move error variables from host/static to db
The error variables defined in host/static are generic and can be reused
by other packages.
* Create a new repository for each test
* Validate CreateCatalog returns a new HostCatalog
* Do not modify the HostCatalog passed in
* Implement UpdateCatalog
* Minor cleanup to make folds work
* Implement LookupCatalog
* Refactor: extract allocCatalog function
* Add comment
* Refactor: extract newCatalogMetadata function
* Make error strings more consistent
* Move database specific error check to internal/db package
* Change signature of DeleteCatalog and update docs
* Implement DeleteCatalog
* Make error strings more consistent
* Add examples
* Update docs
* Add package level doc and example for repository
* No need for using reflect.DeepEqual
* Remove redundant comment
* Clarify ErrMultipleRecords results in the transaction being rolled back
* Remove redundant error checks
* Remove unnecessary check
* Return early instead of using nested 'else' statements
* Update and Delete must return a row count
* catch err on defers (#82)
Co-authored-by: Jim Lambert <jimlambrt@Jims-MBP-3.home>
* Remove 'if assert' pattern
* Use assert package in test helper function
* Add test for updating a non existent catalog
* Use a single assert when a specific error is expected
* Use assert package when it clarifies the check
* Catch errors in cleanup functions
* Update comments in protobuf file
* Update doc for UpdateCatalog to reflect the new behavior
* Add common error values for field mask errors
* Require a field mask when calling update methods
* Add TODO for removing direct call to gorm
* Export Public ID prefixes
* Add db timestamp guards
* Remove unused option
Co-authored-by: Jim <jlambert@hashicorp.com>
Co-authored-by: Jim Lambert <jimlambrt@Jims-MBP-3.home>
* 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.
* 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>