* 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>
68 lines
2.4 KiB
Makefile
68 lines
2.4 KiB
Makefile
# Determine this makefile's path.
|
|
# Be sure to place this BEFORE `include` directives, if any.
|
|
THIS_FILE := $(lastword $(MAKEFILE_LIST))
|
|
THIS_DIR := $(dir $(realpath $(firstword $(MAKEFILE_LIST))))
|
|
|
|
TMP_DIR := $(shell mktemp -d)
|
|
REPO_PATH := github.com/hashicorp/watchtower
|
|
|
|
GENERATED_CODE := $(shell find ${THIS_DIR} -name '*.gen.go' && find ${THIS_DIR} -name '*.pb.go' && find ${THIS_DIR} -name '*.pb.gw.go')
|
|
|
|
CGO_ENABLED?=0
|
|
|
|
export GEN_BASEPATH := $(shell pwd)
|
|
|
|
api:
|
|
$(MAKE) --environment-overrides -C api/internal/genapi api
|
|
|
|
bootstrap:
|
|
go generate -tags tools tools/tools.go
|
|
|
|
cleangen:
|
|
@rm -f ${GENERATED_CODE}
|
|
|
|
dev: BUILD_TAGS+=dev
|
|
dev:
|
|
@CGO_ENABLED=$(CGO_ENABLED) BUILD_TAGS='$(BUILD_TAGS)' WATCHTOWER_DEV_BUILD=1 sh -c "'$(CURDIR)/scripts/build.sh'"
|
|
|
|
gen: cleangen proto api migrations
|
|
|
|
migrations:
|
|
$(MAKE) --environment-overrides -C internal/db/migrations/genmigrations migrations
|
|
|
|
### oplog requires protoc-gen-go v1.20.0 or later
|
|
# GO111MODULE=on go get -u github.com/golang/protobuf/protoc-gen-go@v1.40
|
|
proto: protolint protobuild
|
|
|
|
protobuild:
|
|
# To add a new directory containing a proto pass the proto's root path in
|
|
# through the --proto_path flag.
|
|
@bash scripts/protoc_gen_plugin.bash \
|
|
"--proto_path=internal/proto/local" \
|
|
"--proto_include_path=internal/proto/third_party" \
|
|
"--plugin_name=go" \
|
|
"--plugin_out=plugins=grpc:${TMP_DIR}"
|
|
@bash scripts/protoc_gen_plugin.bash \
|
|
"--proto_path=internal/proto/local/" \
|
|
"--proto_include_path=internal/proto/third_party" \
|
|
"--plugin_name=grpc-gateway" \
|
|
"--plugin_out=logtostderr=true:${TMP_DIR}"
|
|
|
|
# Move the generated files from the tmp file subdirectories into the current repo.
|
|
cp -R ${TMP_DIR}/${REPO_PATH}/* ${THIS_DIR}
|
|
|
|
@protoc --proto_path=internal/proto/local --proto_path=internal/proto/third_party --swagger_out=logtostderr=true,disable_default_errors=true,include_package_in_tags=true,fqn_for_swagger_name=true,allow_merge,merge_file_name=controller:internal/gen/. internal/proto/local/controller/api/services/v1/*.proto
|
|
@protoc-go-inject-tag -input=./internal/oplog/store/oplog.pb.go
|
|
@protoc-go-inject-tag -input=./internal/oplog/oplog_test/oplog_test.pb.go
|
|
@protoc-go-inject-tag -input=./internal/iam/store/scope.pb.go
|
|
@protoc-go-inject-tag -input=./internal/db/db_test/db_test.pb.go
|
|
@protoc-go-inject-tag -input=./internal/host/static/store/static.pb.go
|
|
@rm -R ${TMP_DIR}
|
|
|
|
protolint:
|
|
@buf check lint
|
|
|
|
.PHONY: api bootstrap gen migrations proto
|
|
|
|
.NOTPARALLEL:
|