- Simplify build config
- Add TTY check to Makefiles for running Docker containers
- Update `fs2` to latest patch
- Update `sbt-assembly` plugin
- Update portal to remove chatty console
- Update portal scripts to add license header
- Update prepare-portal/Gruntfile to combine js and css where applicable
- Remove unused gentelella files from final portal artifact
- Add support for shared zones to quickstart/docker images
- Consolidate built artifacts in `artifacts/` to make eventual release easier
- Move quickstart from `utils` to `quickstart`
- Update quickstart script to add more container manipulation
- Move API functional tests back under `modules/api`
- Move build-related scripts to `build/` directory
- Add quickstart containers that can run the local version of the code
- Fix broken links
- Fix formatting
- Add Makefile for running via docker
- Move README.md from `modules/docs/src/main/mdoc` to `modules/docs` to be consistent with `modules/portal`
- Move away from using multiple images for "quickstart" and instead use a single "integration" image which provides all of the dependencies
- Update `docker-up-vinyldns.sh` to support the new `integration` image
- Update `remove-vinyl-containers.sh` to more cleanly.. clean up
- Update `verify.sh` to more reliably run `sbt` targets
- Update `build/docker/api/application.conf` to allow for overrides and default to the `vinyldns-integration` image
- Update `build/docker/portal/application.conf` to allow overrides and use `vinyldns-integration` image
- Update `build/docker/portal/Dockerfile` to use `vinyldns/build:base-build-portal` to reduce need to download dependencies over and over
- Update `api/assembly` sbt target to output to `assembly` rather than some deeply nested folder in `**/target`
- Update documentation to reflect changes
- Move `docker/` directory to `quickstart/` to reduce confusion with the `build/docker` directory
- Move `bin/` to `utils/` since the files are binaries
- Add `.dockerignore` to root
- Remove old, unused scripts in `bin/`
- Remove old images from release
- `test` and `test-bind` are no longer necessary. Test images are in a different repo now
- Remove Docker image creation from sbt build config - actual `Dockerfile` files are easier to deal with
- Update scripts in `bin/` to utilize new Docker images
- Update documentation for changes
- Update all Docker Compose and configuration to use exposed ports on the `integration` image (19001, 19002, etc) both inside the container and outside to make testing more consistent irrespective of method
- Update FlywayDB dependency to v8 to fix a weird logging bug that showed up during integration testing. See: https://github.com/flyway/flyway/issues/2270
- Add `test/api/integration` Docker container definition to be used for any integration testing
- Move `module/api/functional_test` to `test/api/functional` to centralize the "integration-type" external tests and testing utilities
- Move functional testing and integration image to the `test/` folder off of the root to reduce confusion with `bin/` and `docker/`
- Update `dnsjava` library
- Add support for H2 database
- Update functional tests to support parallel runs
- Remove the ability to specify number of processes for functional tests - always 4 now
- Add `Makefile` and `Dockerfile` in `functional_test` to make it easier to run tests without spinning up multiple containers
- Add custom network to `docker-compose-func-test.yml` for deterministic IP addresses
- Update tests to remove hard-coded zone names
- Fix various issues with cleanup
- Update tests to Python 3.x
- Setup partitions to allow for parallel testing
- Partition bind zones
- Update `docker/api/docker.conf` to include partitioned zones
- Replace AWS request signer with upgraded `boto3` signer
- Replace launcher script with one that instantiates the virtualenv
- Add `--enable-safety_check` to check for modifications to zone data
- Add `--resolver-ip` to allow for specification of a different resolver for the tests versus what gets sent to the API
- This is helpful when the tests are not running in the same network as the API
- Ex: `./run.sh --dns-ip=172.19.0.4 --resolver-ip=127.0.0.1:19001` where
Fixes#1034
Changes in this pull request:
- Update record view for managing records to _not_ display a warning next to records that are valid dotted hosts.
- Update the prepare portal script to do a force (needed for clean machine)
- Add queue coordinates for starting up the api locally using `reStart` - the coordinates were removed from `reference.conf` in a prior PR that looks to have broken starting up using `reStart` locally
- Added a unit test to double check we allow dotted TXT records in the API
It is not always desirable to use a TSIG key for interacting with DNS backends. This PR makes use of a TSIG key optional. A new `tsig-usage` configuration parameter is added for DNS backends to allow one to determine how/if TSIG keys are applied. Note: due to the nature of the configuration, the user must still specify SOME value for the key information; however, the new `tsig-usage` config parameter can choose when or if to apply it. The values are:
- `always` - always use the
- `never` - never use the tsig key for either update OR transfers
- `transfer` - use the tsig key for TRANSFER only, updates will not use any keys
- `update` - use the tsig key for UPDATES only, transfers will not use any keys
**Note: this does not yet apply to the UI or the API, changes there will be a future PR**
Tenant id is not uniformly used across all OIDC providers (such as keycloak).
Make tenant id in configuration and the corresponding OIDC flow check optional for the time being.
Need to overhaul the OIDC portal code which is well underway but not ready yet, so this is a temporary workaround.
Fixes#964
- Updated the `ZoneConnection` model to allow specifying the key algorithm.
- Added an `Algorithm` to the protobuf file, defaults to HMAC-MD5
- Updated JSON serialization to serdes the algorithm
- Updated the Portal to allow the user to specify the algorithm when connecting to a zone or managing a zone
Supported algorithms are:
```
case object HMAC_MD5 extends Algorithm("HMAC-MD5.SIG-ALG.REG.INT")
case object HMAC_SHA1 extends Algorithm("hmac-sha1.")
case object HMAC_SHA224 extends Algorithm("hmac-sha224.")
case object HMAC_SHA256 extends Algorithm("hmac-sha256")
case object HMAC_SHA384 extends Algorithm("hmac-sha384.")
case object HMAC_SHA512 extends Algorithm("hmac-sha512.")
```
**Note: needs some tests**
We used to rely on `tut` for docs, however it is deprecated to be replaced with mdoc.
Moved to an `mdoc` folder structure and updated all of the links (what a pain).
This is a rather big change. There are a few significant issues with the way that the API config is presently loaded:
1. We use effectively global variables throughout the system, which is a bad practice in general
2. We have inconsistent loading of configuration values, some used at boot up, some used elsewhere
In addition, we get sporadic build failures due to how these "global config" values are loaded, based on timing and parallelism that are impossible to reproduce.
This PR addresses these issues:
1. Create a `VinylDNSConfig` that loads all configuration in one place
2. Create custom `ConfigReader` implementations that read config values (ideally we would have used pureconfig from the start to automatically read sane config values but here we are)
3. Segment config into different case classes. The groupings are not totally arbitrary, but I did my best at logical groupings of settings
4. Inject configuration elements (either via Class constructors or function arguments) at the appropriate time.
Functionally, nothing has changed, other than putting some standards around config loading.
May fix#1010
Fixes#1018 .
Also fixes a configuration merge bug now that access-key and secret-key are optional fields, this is non breaking since no one has x/x for their key/secret
Addresses #1012
Was able to get a "real" public hosted zone connected. The `Fqdn.merge` was not working properly when merging record name and zone names when they matched.
Added a bunch of unit tests along with the fix.
This was tested against a "real" public hosted zone. Verified connect, load zone, add record, delete record.