Skip to content

v4.3.1

commit 3265184510c743649f3df46b1de9f962e0543f8e
Author: Greg Althaus <galthaus@austin.rr.com>
Date:   Sat Jun 13 16:45:27 2020 -0500

    build: update to v4.3.1 refs

M   go.mod
M   go.sum

commit ab29a14744d09f1808d64eb008be555490a383f0
Author: Victor Lowther <victor.lowther@gmail.com>
Date:   Fri Jun 12 15:42:09 2020 -0500

    fix(dhcp): Fix a deadlock triggered by high DHCP traffic.

    When checking to see if a read would deadlock, missed a case where we
    could have crossed read/write dependencies that lead to a deadlock in
    unblockRunnable.  Add code to handle that case and a unit test to
    verify that it works properly.

    The Address and ActiveAddress subnet indexes have never worked
    properly.  This updates the index definitions to allow easy searching
    for subnets that have cover addresses and active lease range
    addresses. It has a side effect of making the Address and
    ActiveAddress indexex unordered, but there aren't good ordering
    semantics for picking what is basically an address match in any case.

    Lease validation on a save was being stupid and checking every lease
    one by one to see if there were conflicting strategy/token settings,
    when there are (now) perfectly good indexes that we can query for that
    and avoid having to touch every lease during the transaction.

M   backend/lease.go
M   backend/subnet.go
M   clitest/test-data/output/TestCorePieces/subnets.indexes/stdout.expect
M   go.mod
M   go.sum
M   transact/tx.go
M   transact/tx_test.go

commit 9940803ae4b978e3023b296a43aa60c42f3782d8
Author: Victor Lowther <victor.lowther@gmail.com>
Date:   Thu Jun 11 08:47:06 2020 -0500

    perf(content): Save content bundles as JSON instead of YAML.

    It turns out that the overhead of serializing an uploaded and
    validated content bundle of significant size can account for around a
    quarter to a third of the time it takes a drpcli contents upload call
    to finish -- on an internal bundle for one of our larger customers, a
    perf trace showed that marshalling to YAML took around 45 seconds of
    CPU times on a 1 megabyte content bundle.  Switching to JSON took 6
    seconds of CPU time, with room for additional optimization.

M   datastack/content.go

commit ccee8b6d1a62c5c05eda38c27cf669697699b0e9
Author: Victor Lowther <victor.lowther@gmail.com>
Date:   Tue Jun 9 19:01:48 2020 -0500

    fix(whoami): Pull in client-side updates to machine fingerprints.

    This pulls in the client-side changes that ignore DMI info from
    machines running under a hypervisor

M   go.mod
M   go.sum

commit 5d3fb2acad19f9d4acae474ea9a30c4c0940739a
Author: Victor Lowther <victor.lowther@gmail.com>
Date:   Tue Jun 9 18:20:01 2020 -0500

    fix(packageRepos): Undo bootenvs and local install sources confusion

    Yeah, so it turns out I forgot what the difference between a bootenv
    and a package install source was and how to properly calculate them.
    Along the way broke the test lab of our largest customer.  Oops.

M   backend/bootenv.go
M   backend/renderData.go

commit d89d92085e6a46a55b54c0979be41cb90c117d71
Author: Victor Lowther <victor.lowther@gmail.com>
Date:   Tue Jun 9 10:16:43 2020 -0500

    fix(dhcp): DHCP reservations and conflicting IP addresses could cause loop

    If you have a DHCP reservation that conflicts with an invalidated
    lease (due to IP address conflicts, address space exhaustion,
    whatever), that can cause the DHCP server to enter a DISCOVER ->
    REQUEST -> NAK or DISCOVER -> REQUEST -> OFFER -> DECLINE loop that
    quickly chews through and invalidates all the addresses in the subnet.
    This breaks that loop by updating the OFFER -> ACK codepath allow
    requests where we have a reservation but we know that the reservation
    cannot be satisfied due to an existing non-expired Lease for that
    address, instead of forcing them to fail with a NAK.

    Logging for the case where we cannot hand out a reserved address
    during DISCOVER due to the presence of an invalidated lease (and
    therefore a signalled IP address conflict) has also been improved.

M   backend/dhcpUtils.go
M   backend/subnet.go
M   midlayer/dhcp.go

commit d3282f1ed296d5f19d7269ced28cb5b68e838a65
Author: Greg Althaus <galthaus@austin.rr.com>
Date:   Sat Jun 6 23:46:38 2020 -0500

    feat(task-meta): add single-step, stop-at, skip, retry, and error-handlers for tasks

    To help with debugging task workflows and handle error recovery, the
    system can handle task meta flow controls.  This includes:
    1. Single Step - pause after every task
    2. Stop-at - pause before one of the tasks in the lisst
    3. Skip - skip tasks in list
    4. Retry - issue a set of retries for named tasks
    5. Error-handlers - allow definition of error tasks to run on a task
    failure, specified per task

    Remaining requested feature - workflow timmeout that will reboot
    machine if workflow doesn't complete within a time frame.  This
    needs some of the pool plugin work.

M   backend/dataTracker.go
M   backend/jobs.go
M   backend/machines.go
M   clitest/tasks_test.go
M   clitest/test-data/output/TestAuth/info.get/stdout.expect
M   clitest/test-data/output/TestAuth/params.list.611601b3efac342fd10027372140fe8c/stdout.expect
M   clitest/test-data/output/TestAuth/params.list.e8e0775e692adbcb8acdf3799178655c/stdout.expect
M   clitest/test-data/output/TestBootEnvLinks/machines.create.705b3b81d0728cad275b917c9d6c482f/stdout.expect
M   clitest/test-data/output/TestContentCli/contents.list.2/stdout.expect
M   clitest/test-data/output/TestContentCli/contents.list.3/stdout.expect
M   clitest/test-data/output/TestContentCli/contents.list.4/stdout.expect
M   clitest/test-data/output/TestContentCli/contents.list.5/stdout.expect
M   clitest/test-data/output/TestContentCli/contents.list/stdout.expect
M   clitest/test-data/output/TestContentsFunctionalCli/contents.list.2/stdout.expect
M   clitest/test-data/output/TestContentsFunctionalCli/contents.list/stdout.expect
M   clitest/test-data/output/TestContentsFunctionalCli/machines.addprofile.3e7031fe-3062-45f1-835c-92541bc9cbd3.p1-prof/stdout.expect
M   clitest/test-data/output/TestContentsFunctionalCli/machines.create.7df3aabd2b2a9aa089f7c54b01060cb9/stdout.expect
M   clitest/test-data/output/TestJobCli/machines.create.32cb4c9864de6e606c2e84397f300c18/stdout.expect
M   clitest/test-data/output/TestJobCli/machines.show.3e7031fe-3062-45f1-835c-92541bc9cbd3/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.addprofile.3e7031fe-3062-45f1-835c-92541bc9cbd3.jean/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.addprofile.3e7031fe-3062-45f1-835c-92541bc9cbd3.jill/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.create.2912607b00fab33ffd503f06c4ee28b8.3/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.create.2912607b00fab33ffd503f06c4ee28b8/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.create.cfb21459eb66dff02c687e0bdfed8ab9/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.list.2/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.list.4/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.list.Address=192.168.100.110/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.list.BootEnv=local/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.list.Name=john/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.list.Runnable=true/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.list.Uuid=3e7031fe-3062-45f1-835c-92541bc9cbd3/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.removeprofile.3e7031fe-3062-45f1-835c-92541bc9cbd3.jean/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.removeprofile.3e7031fe-3062-45f1-835c-92541bc9cbd3.jill/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.removeprofile.3e7031fe-3062-45f1-835c-92541bc9cbd3.justine/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.show.3e7031fe-3062-45f1-835c-92541bc9cbd3.2/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.show.3e7031fe-3062-45f1-835c-92541bc9cbd3.3/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.show.3e7031fe-3062-45f1-835c-92541bc9cbd3.4/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.show.3e7031fe-3062-45f1-835c-92541bc9cbd3.5/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.show.3e7031fe-3062-45f1-835c-92541bc9cbd3/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.show.Key.3e7031fe-3062-45f1-835c-92541bc9cbd3/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.show.Name.john/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.show.Uuid.3e7031fe-3062-45f1-835c-92541bc9cbd3/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.stage.3e7031fe-3062-45f1-835c-92541bc9cbd3.c23ab3adaec8ca15ff3ffd0971be6152.2/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.stage.3e7031fe-3062-45f1-835c-92541bc9cbd3.c23ab3adaec8ca15ff3ffd0971be6152/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.stage.3e7031fe-3062-45f1-835c-92541bc9cbd3.stage1/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.stage.3e7031fe-3062-45f1-835c-92541bc9cbd3.stage2.c23ab3adaec8ca15ff3ffd0971be6152.2/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.stage.3e7031fe-3062-45f1-835c-92541bc9cbd3.stage2.c23ab3adaec8ca15ff3ffd0971be6152/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.update.3e7031fe-3062-45f1-835c-92541bc9cbd3.15ef88524f82284ee914fdb15df5a1ef/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.update.3e7031fe-3062-45f1-835c-92541bc9cbd3.21522342df50227b4f678203d499d51a/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.update.3e7031fe-3062-45f1-835c-92541bc9cbd3.5372645be509d5c9bddcfa65cf87f668/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.workflow.Name.john.Workflow1Good/stdout.expect
M   clitest/test-data/output/TestMachineCli/machines.workflow.Name.john/stdout.expect
M   clitest/test-data/output/TestMachineFileImport/machines.create.test-data/base/machines/create.json/stdout.expect
M   clitest/test-data/output/TestMachineFileImport/machines.create.test-data/base/machines/create.yaml/stdout.expect
M   clitest/test-data/output/TestMachineFileImport/machines.update.a2d9b43a-b545-464b-8bc4-088daa7fa7c4.test-data/base/machines/update.yaml/stdout.expect
M   clitest/test-data/output/TestMachineFileImport/machines.update.b2d9b43a-b545-464b-8bc4-088daa7fa7c4.test-data/base/machines/update.json/stdout.expect
M   clitest/test-data/output/TestMachineLocked/machines.create.d9f0531fa4024e3ff7769eb17cfc54f5/stdout.expect
M   clitest/test-data/output/TestMachineLocked/machines.update.3e7031fe-3062-45f1-835c-92541bc9cbd3.690238bdc309eb5c935bd1ef198c333a/stdout.expect
M   clitest/test-data/output/TestMachineLocked/machines.update.3e7031fe-3062-45f1-835c-92541bc9cbd3.8262863ab5bf8686ee11f596d6750a78.2/stdout.expect
M   clitest/test-data/output/TestMachineLocked/machines.update.3e7031fe-3062-45f1-835c-92541bc9cbd3.c40dfd7560a930cb472f04d5f0870f26.2/stdout.expect
M   clitest/test-data/output/TestMachineLocked/machines.update.3e7031fe-3062-45f1-835c-92541bc9cbd3.c40dfd7560a930cb472f04d5f0870f26.3/stdout.expect
M   clitest/test-data/output/TestMachineLocked/machines.update.3e7031fe-3062-45f1-835c-92541bc9cbd3.c40dfd7560a930cb472f04d5f0870f26/stdout.expect
M   clitest/test-data/output/TestMachineLocked/machines.update.3e7031fe-3062-45f1-835c-92541bc9cbd3.cf4c104a7c6130db6cfbff841bfdf2d2.2/stdout.expect
M   clitest/test-data/output/TestMachineLocked/machines.update.3e7031fe-3062-45f1-835c-92541bc9cbd3.cf4c104a7c6130db6cfbff841bfdf2d2/stdout.expect
M   clitest/test-data/output/TestMachineParamFiltering/machines.create.82199705e9583857ab4b2133215d536a/stdout.expect
M   clitest/test-data/output/TestMachineParamFiltering/machines.list.058d21c0e6cb3c5289eff59b3e780a8c/stdout.expect
M   clitest/test-data/output/TestMachineParamFiltering/machines.list.17f7c9ff57515bedf56514ceb45706c6.2/stdout.expect
M   clitest/test-data/output/TestMachineParamFiltering/machines.list.17f7c9ff57515bedf56514ceb45706c6/stdout.expect
M   clitest/test-data/output/TestMachineParamFiltering/machines.list.3b65b8bf83bb0df91e244e42ea277903/stdout.expect
M   clitest/test-data/output/TestMachineParamFiltering/machines.list.4ea62458ff1801b8063a65624f7bab27/stdout.expect
M   clitest/test-data/output/TestMachineParamFiltering/machines.list.600afa17281a93239aef10d9ebae62bf/stdout.expect
M   clitest/test-data/output/TestMachineParamFiltering/machines.list.78a052c944648e1e91fbd61ee97bd6d4/stdout.expect
M   clitest/test-data/output/TestMachineParamFiltering/machines.list.9bbab6f5d538a729971bcb5032ad341b/stdout.expect
M   clitest/test-data/output/TestMachineParamFiltering/machines.list.b8e73264cb6ef962cfaf17b04fac6d71/stdout.expect
M   clitest/test-data/output/TestMachineParamFiltering/machines.list.b9e60201987d64e4aa36caf65d997a5c/stdout.expect
M   clitest/test-data/output/TestMachineParamFiltering/machines.list.bc0b07788588a908ce638d2a92692494/stdout.expect
M   clitest/test-data/output/TestMachineParamFiltering/machines.list.ccabbbc19b05719ba189fc8a1b3673fd/stdout.expect
M   clitest/test-data/output/TestMachineParamFiltering/machines.list.cf145f5a6380cce06c9dd39303105707/stdout.expect
M   clitest/test-data/output/TestMachineParamFiltering/machines.list.ed03be6aa5645fe42f7f7a2df21d89ee/stdout.expect
M   clitest/test-data/output/TestMachineParamFiltering/machines.update.Name.bob.add360d3da0026952990148998b3eca1/stdout.expect
M   clitest/test-data/output/TestMachineTaskCli/machines.create.2912607b00fab33ffd503f06c4ee28b8/stdout.expect
M   clitest/test-data/output/TestMachineTaskCli/machines.tasks.add.3e7031fe-3062-45f1-835c-92541bc9cbd3.at.0.task4.task3.task2.task1.2/stdout.expect
M   clitest/test-data/output/TestMachineTaskCli/machines.tasks.add.3e7031fe-3062-45f1-835c-92541bc9cbd3.at.0.task4.task3.task2.task1/stdout.expect
M   clitest/test-data/output/TestMachineTaskCli/machines.tasks.add.3e7031fe-3062-45f1-835c-92541bc9cbd3.task1.task2.task3.task4.2/stdout.expect
M   clitest/test-data/output/TestMachineTaskCli/machines.tasks.add.3e7031fe-3062-45f1-835c-92541bc9cbd3.task1.task2.task3.task4.3/stdout.expect
M   clitest/test-data/output/TestMachineTaskCli/machines.tasks.add.3e7031fe-3062-45f1-835c-92541bc9cbd3.task1.task2.task3.task4/stdout.expect
M   clitest/test-data/output/TestMachineTaskCli/machines.tasks.del.3e7031fe-3062-45f1-835c-92541bc9cbd3.task1.task1/stdout.expect
M   clitest/test-data/output/TestMachineTaskCli/machines.tasks.del.3e7031fe-3062-45f1-835c-92541bc9cbd3.task1.task3/stdout.expect
M   clitest/test-data/output/TestMachineTaskCli/machines.tasks.del.3e7031fe-3062-45f1-835c-92541bc9cbd3.task2.task4/stdout.expect
M   clitest/test-data/output/TestParamCli/params.list.2/stdout.expect
M   clitest/test-data/output/TestParamCli/params.list.3/stdout.expect
M   clitest/test-data/output/TestParamCli/params.list.4/stdout.expect
M   clitest/test-data/output/TestParamCli/params.list.5/stdout.expect
M   clitest/test-data/output/TestParamCli/params.list/stdout.expect
M   clitest/test-data/output/TestParamsDefaultGet/machines.create.2912607b00fab33ffd503f06c4ee28b8/stdout.expect
M   clitest/test-data/output/TestProcessJobsCli/machines.create.2912607b00fab33ffd503f06c4ee28b8/stdout.expect
M   clitest/test-data/output/TestProcessJobsCli/machines.show.3e7031fe-3062-45f1-835c-92541bc9cbd3/stdout.expect
M   clitest/test-data/output/TestProfileInProfile/machines.create.58feacab1055a30ea9f8579a0e387671/stdout.expect
M   clitest/test-data/output/TestProfileInProfile/machines.removeprofile.Name.machine1.profile2/stdout.expect
M   clitest/test-data/output/TestProfileInProfile/machines.update.Name.machine1.4e29ca2dbfa5158cfd5b31e6aabfb19a/stdout.expect
A   clitest/test-data/output/TestTaskMeta/contents.destroy.meta1/stdout.expect
A   clitest/test-data/output/TestTaskMeta/contents.upload.139d7595ea08bdfb0663050c93f5d1e6/stdout.expect
A   clitest/test-data/output/TestTaskMeta/contents.upload.1be6ce8af0919719451f42bc958dc7f5/stderr.expect
A   clitest/test-data/output/TestTaskMeta/contents.upload.1be6ce8af0919719451f42bc958dc7f5/stdout.expect
A   clitest/test-data/output/TestTaskMeta/contents.upload.3ce2d97f7f61c0bb1b90d04d79676db6/stdout.expect
A   clitest/test-data/output/TestTaskMeta/contents.upload.6eb258990000bc71c0c1e95affc6ea1e/stderr.expect
A   clitest/test-data/output/TestTaskMeta/contents.upload.a7b360a945a3c02f151fb1e35ad9c99a/stderr.expect
A   clitest/test-data/output/TestTaskMeta/contents.upload.ba5fc91422dd8b87c37cc503ef7c9524/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.create.bob.d90828cf92ed81d8c08dc0f9239df62e/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.deletejobs.Name.bob/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.destroy.Name.bob/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.processjobs.Name.bob.b98773fd65e6e32eee9e8a357b6a3e55.10/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.processjobs.Name.bob.b98773fd65e6e32eee9e8a357b6a3e55.11/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.processjobs.Name.bob.b98773fd65e6e32eee9e8a357b6a3e55.12/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.processjobs.Name.bob.b98773fd65e6e32eee9e8a357b6a3e55.13/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.processjobs.Name.bob.b98773fd65e6e32eee9e8a357b6a3e55.2/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.processjobs.Name.bob.b98773fd65e6e32eee9e8a357b6a3e55.3/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.processjobs.Name.bob.b98773fd65e6e32eee9e8a357b6a3e55.4/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.processjobs.Name.bob.b98773fd65e6e32eee9e8a357b6a3e55.5/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.processjobs.Name.bob.b98773fd65e6e32eee9e8a357b6a3e55.6/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.processjobs.Name.bob.b98773fd65e6e32eee9e8a357b6a3e55.7/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.processjobs.Name.bob.b98773fd65e6e32eee9e8a357b6a3e55.8/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.processjobs.Name.bob.b98773fd65e6e32eee9e8a357b6a3e55.9/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.processjobs.Name.bob.b98773fd65e6e32eee9e8a357b6a3e55/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.remove.Name.bob.param.task-skip/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.remove.Name.bob.param.task-stop-at/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.set.Name.bob.param.task-error-handlers.to.32cd18de5bafad8ac9a3201683f24d23/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.set.Name.bob.param.task-error-handlers.to.42f092445325301a630873183941d932/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.set.Name.bob.param.task-error-handlers.to.4b98aecd3f3aded2165aabb2c70d3dd4/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.set.Name.bob.param.task-error-handlers.to.7045611fdfb7220bccd992adff1ccb3e/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.set.Name.bob.param.task-error-handlers.to.f066ad4a0d1f3705f3ef9e8f00919279/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.set.Name.bob.param.task-retry.to.88d8df5ca555055ad25497904dd658a6/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.set.Name.bob.param.task-retry.to.fbdb121171b664e592cfbad5d1971985/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.set.Name.bob.param.task-single-step.to.false/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.set.Name.bob.param.task-single-step.to.true/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.set.Name.bob.param.task-skip.to.097b5eecd2fe12c68d5a056d2ccc3ec7/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.set.Name.bob.param.task-skip.to.d250c625ff366c143ae16798a9a76679/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.set.Name.bob.param.task-stop-at.to.0e10ab6e50176fc131d4e3df574c884e/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.set.Name.bob.param.task-stop-at.to.439cd56d4b824e987e5e35e84bb21c8f/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.set.Name.bob.param.test-fail.to.yes.2/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.set.Name.bob.param.test-fail.to.yes.3/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.set.Name.bob.param.test-fail.to.yes.4/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.set.Name.bob.param.test-fail.to.yes/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.show.Name.bob.2426575a0555a2707708835b60259934.10/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.show.Name.bob.2426575a0555a2707708835b60259934.11/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.show.Name.bob.2426575a0555a2707708835b60259934.12/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.show.Name.bob.2426575a0555a2707708835b60259934.13/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.show.Name.bob.2426575a0555a2707708835b60259934.2/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.show.Name.bob.2426575a0555a2707708835b60259934.3/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.show.Name.bob.2426575a0555a2707708835b60259934.4/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.show.Name.bob.2426575a0555a2707708835b60259934.5/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.show.Name.bob.2426575a0555a2707708835b60259934.6/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.show.Name.bob.2426575a0555a2707708835b60259934.7/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.show.Name.bob.2426575a0555a2707708835b60259934.8/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.show.Name.bob.2426575a0555a2707708835b60259934.9/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.show.Name.bob.2426575a0555a2707708835b60259934/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.update.Name.bob.084200ddd82e9c237eec4b2a0e168988/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.update.Name.bob.ebf43067435a6f4672ccb87d65259401.2/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.update.Name.bob.ebf43067435a6f4672ccb87d65259401.3/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.update.Name.bob.ebf43067435a6f4672ccb87d65259401.4/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.update.Name.bob.ebf43067435a6f4672ccb87d65259401.5/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.update.Name.bob.ebf43067435a6f4672ccb87d65259401.6/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.update.Name.bob.ebf43067435a6f4672ccb87d65259401.7/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.update.Name.bob.ebf43067435a6f4672ccb87d65259401.8/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.update.Name.bob.ebf43067435a6f4672ccb87d65259401.9/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.update.Name.bob.ebf43067435a6f4672ccb87d65259401/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.updates.Name.bob.084200ddd82e9c237eec4b2a0e168988/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.workflow.Name.bob.w-reset.2426575a0555a2707708835b60259934.2/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.workflow.Name.bob.w-reset.2426575a0555a2707708835b60259934.3/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.workflow.Name.bob.w-reset.2426575a0555a2707708835b60259934.4/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.workflow.Name.bob.w-reset.2426575a0555a2707708835b60259934.5/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.workflow.Name.bob.w-reset.2426575a0555a2707708835b60259934.6/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.workflow.Name.bob.w-reset.2426575a0555a2707708835b60259934.7/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.workflow.Name.bob.w-reset.2426575a0555a2707708835b60259934/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.workflow.Name.bob.w1.2426575a0555a2707708835b60259934.2/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.workflow.Name.bob.w1.2426575a0555a2707708835b60259934.3/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.workflow.Name.bob.w1.2426575a0555a2707708835b60259934.4/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.workflow.Name.bob.w1.2426575a0555a2707708835b60259934.5/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.workflow.Name.bob.w1.2426575a0555a2707708835b60259934.6/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.workflow.Name.bob.w1.2426575a0555a2707708835b60259934.7/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.workflow.Name.bob.w1.2426575a0555a2707708835b60259934.8/stdout.expect
A   clitest/test-data/output/TestTaskMeta/machines.workflow.Name.bob.w1.2426575a0555a2707708835b60259934/stderr.expect
A   clitest/test-data/output/TestTaskMeta/machines.workflow.Name.bob.w1.2426575a0555a2707708835b60259934/stdout.expect
A   clitest/test-data/output/TestTemplateCli/templates.exists.john/stdout.expect
A   clitest/test-data/output/TestTemplateCli/templates/stderr.expect
A   clitest/test-data/output/TestUserCli/users.exists.john/stdout.expect
M   clitest/test-data/output/TestUserCli/users.token.rocketskates.scope.all.ttl.330.action.list.specific.asdgag/stdout.expect
M   clitest/test-data/output/TestUserCli/users.token.rocketskates/stdout.expect
A   clitest/test-data/output/TestUserCli/users/stderr.expect
A   clitest/test-data/output/TestWorkflowCli/workflows/stderr.expect
M   datastack/content.go
M   frontend/job_create.go
M   go.mod
M   go.sum

commit e85ec02c4eb444b2df5c76d794911c41fee06b63
Author: Greg Althaus <galthaus@austin.rr.com>
Date:   Sat Jun 6 11:53:06 2020 -0500

    build: tests before publish.

M   .travis.yml

commit 7cc1a98ea1d53a2cc23989716f2974b40ae452fe
Author: Greg Althaus <galthaus@austin.rr.com>
Date:   Sat Jun 6 11:35:16 2020 -0500

    docs: add BasicStore document to published pieces

A   cmds/dr-docs/dr-docs.go
M   tools/publish.sh

commit 8ecc710304e3d430f3dd1d8cc33e49545cc563d6
Author: Victor Lowther <victor.lowther@gmail.com>
Date:   Fri Jun 5 10:35:00 2020 -0500

    feat(centos-8): Add support for centos-8 local and remote installs.

    Centos-8 changed their directory layouts on the ISO and in the package
    mirrors.  This adds support for writing out proper local and remote
    repository information, and allows the Repo struct that handles this
    internally to have seperate locations for install artifacts (kernels,
    initrds, OS specific bootloaders, install images, etc.) vs. the
    package archive that should be used for installs.

M   backend/bootenv.go
M   backend/dataTracker.go
M   backend/renderData.go
M   clitest/repo_test.go
A   clitest/test-data/fake-centos-8-install.yml
M   clitest/test-data/output/TestAuth/info.get/stdout.expect
M   clitest/test-data/output/TestBootEnvCli/bootenvs/stdout.expect
A   clitest/test-data/output/TestRepos/bootenvs.create.test-data/fake-centos-8-install.yml/stdout.expect
A   clitest/test-data/output/TestRepos/bootenvs.destroy.fake-centos-8-install/stdout.expect
A   clitest/test-data/output/TestRepos/machines.update.c9196b77-deef-4c8e-8130-299b3e3d9a10.f2e3b72ccc2f5352e551f32f996344d4.2/stdout.expect
A   clitest/test-data/output/TestRepos/machines.update.c9196b77-deef-4c8e-8130-299b3e3d9a10.f2e3b72ccc2f5352e551f32f996344d4/stdout.expect
A   clitest/test-data/output/TestRepos/machines/c9196b77-deef-4c8e-8130-299b3e3d9a10/install.10/stdout.expect
M   clitest/test-data/output/TestRepos/machines/c9196b77-deef-4c8e-8130-299b3e3d9a10/install.5/stdout.expect
M   clitest/test-data/output/TestRepos/machines/c9196b77-deef-4c8e-8130-299b3e3d9a10/install.6/stdout.expect
M   clitest/test-data/output/TestRepos/machines/c9196b77-deef-4c8e-8130-299b3e3d9a10/install.7/stdout.expect
M   clitest/test-data/output/TestRepos/machines/c9196b77-deef-4c8e-8130-299b3e3d9a10/install.8/stdout.expect
A   clitest/test-data/output/TestRepos/machines/c9196b77-deef-4c8e-8130-299b3e3d9a10/install.9/stdout.expect
A   clitest/test-data/output/TestRepos/machines/c9196b77-deef-4c8e-8130-299b3e3d9a10/lines.10/stdout.expect
M   clitest/test-data/output/TestRepos/machines/c9196b77-deef-4c8e-8130-299b3e3d9a10/lines.5/stdout.expect
M   clitest/test-data/output/TestRepos/machines/c9196b77-deef-4c8e-8130-299b3e3d9a10/lines.6/stdout.expect
M   clitest/test-data/output/TestRepos/machines/c9196b77-deef-4c8e-8130-299b3e3d9a10/lines.7/stdout.expect
M   clitest/test-data/output/TestRepos/machines/c9196b77-deef-4c8e-8130-299b3e3d9a10/lines.8/stdout.expect
A   clitest/test-data/output/TestRepos/machines/c9196b77-deef-4c8e-8130-299b3e3d9a10/lines.9/stdout.expect
A   clitest/test-data/output/TestRepos/machines/c9196b77-deef-4c8e-8130-299b3e3d9a10/url.10/stdout.expect
M   clitest/test-data/output/TestRepos/machines/c9196b77-deef-4c8e-8130-299b3e3d9a10/url.5/stdout.expect
M   clitest/test-data/output/TestRepos/machines/c9196b77-deef-4c8e-8130-299b3e3d9a10/url.6/stdout.expect
M   clitest/test-data/output/TestRepos/machines/c9196b77-deef-4c8e-8130-299b3e3d9a10/url.7/stdout.expect
M   clitest/test-data/output/TestRepos/machines/c9196b77-deef-4c8e-8130-299b3e3d9a10/url.8/stdout.expect
A   clitest/test-data/output/TestRepos/machines/c9196b77-deef-4c8e-8130-299b3e3d9a10/url.9/stdout.expect
A   clitest/test-data/output/TestRepos/params.create.24d2f1eb2835c781347203019645c6fb/stdout.expect
M   clitest/test-data/output/TestUserCli/users.token.rocketskates.scope.all.ttl.330.action.list.specific.asdgag/stdout.expect
M   clitest/test-data/output/TestUserCli/users.token.rocketskates/stdout.expect

commit c9b254af742db5344e6248f3eda2d81ba1f6ffa6
Author: Greg Althaus <galthaus@austin.rr.com>
Date:   Thu Jun 4 13:04:15 2020 -0500

    fix(tests): fix purgelocal cli test

M   clitest/test-data/output/TestBootEnvCli/bootenvs/stdout.expect

commit b9f830a635342a29c922d0a18097e01fc6082215
Author: Greg Althaus <galthaus@austin.rr.com>
Date:   Thu Jun 4 11:52:13 2020 -0500

    build: update to v4.3.0 tags

M   go.mod
M   go.sum

commit 7f16b681ddef23b5b1aea5b4dff6887dc6117123
Author: Victor Lowther <victor.lowther@gmail.com>
Date:   Wed Jun 3 11:54:30 2020 -0500

    perf(frontend): Build and test with the jsoniter tag enabled.

    It turns out that Gin has the ability to switch between using the
    stdlib json for encoding and using jsoniter for encoding.  We already
    use and are satisfied with jsoniter in other places for encoding,
    so use it in the frontend as well for speed and memory consumption
    wins.

    All unit tests appear to pass, so this should be a safe merge.

M   clitest/fixInteractive.sh
M   tools/build-one.sh
M   tools/test.sh

commit ffc178f7fa9f980cadd307f4a1b4c47445895cea
Author: Victor Lowther <victor.lowther@gmail.com>
Date:   Fri May 29 06:31:58 2020 -0500

    fix(localInstall): Cleanly seperate local vs. remote install files.

    We were running into an issue where centos-7 installs were breaking
    after updating centos-7 support to 2004.  The root cause turned out be
    be the blanket redirect to a remote repo causing the install process
    to interleave files between local install files and remote install
    files, which was causing the centos installs to fail when a remote
    update blob was wanting to pull in a file that was not referenced in
    the local package repository metadata.  To alleviate that issue,
    refactor the dynamic FS code to cleanly seperate local repo vs. remote
    install repo presence and handling -- if there is a local repo, we
    will not do remote redirection at all for any files that should be
    present locally.

    Along the way, fix several bugs around handling package-repositories,
    ISO uploading, and static-lookasides that could result in getting out
    of sync in determining when we should handle a file transfer request
    locally vs. transparently proxying it vs. reverse-proxying it.

    Also add an API endpoint (at DELETE /api/v3/bootenvs/:name/purgeLocal)
    that purges all ISO and install trees associated with a specific
    bootenv and arch.  This can be used to clean up bootenv files that are
    no longer needed, and can be used to flip between local fs remote
    install for testing purposes.

M   backend/bootenv.go
M   backend/dataTracker.go
M   backend/fs.go
M   backend/machines.go
M   backend/profiles.go
M   backend/renderData.go
M   backend/renderData_test.go
M   clitest/bootenv_test.go
M   clitest/repo_test.go
M   clitest/test-data/output/TestAuth/params.list.611601b3efac342fd10027372140fe8c/stdout.expect
M   clitest/test-data/output/TestAuth/params.list.e8e0775e692adbcb8acdf3799178655c/stdout.expect
M   clitest/test-data/output/TestParamCli/params.list.2/stdout.expect
M   clitest/test-data/output/TestParamCli/params.list.3/stdout.expect
M   clitest/test-data/output/TestParamCli/params.list.4/stdout.expect
M   clitest/test-data/output/TestParamCli/params.list.5/stdout.expect
M   clitest/test-data/output/TestParamCli/params.list/stdout.expect
M   clitest/test-data/output/TestRepos/machines/c9196b77-deef-4c8e-8130-299b3e3d9a10/install.6/stdout.expect
M   clitest/test-data/output/TestRepos/machines/c9196b77-deef-4c8e-8130-299b3e3d9a10/install.8/stdout.expect
M   clitest/test-data/output/TestRepos/machines/c9196b77-deef-4c8e-8130-299b3e3d9a10/url.6/stdout.expect
M   clitest/test-data/output/TestRepos/machines/c9196b77-deef-4c8e-8130-299b3e3d9a10/url.8/stdout.expect
M   datastack/content.go
M   frontend/bootenvs.go
M   midlayer/static_test.go
M   midlayer/tftp.go

commit 01c572d85080154685558e03470948ae3c6c1b6c
Author: Greg Althaus <galthaus@austin.rr.com>
Date:   Tue Jun 2 12:17:32 2020 -0500

    build: ignore rel_notes directory

M   .gitignore

commit 042886c203c5b1ae638ce04a69d02f96ce02f833
Author: Victor Lowther <victor.lowther@gmail.com>
Date:   Thu May 28 14:12:09 2020 -0500

    fix(wal): Fix a stupid off-by-one error in new WAL code.

    When creating a new WAL segment, we set the firstCommit to 0 and
    lastCommit to the lastCommit of the current working WAL segment plus
    one.  However, the validation code expects the values to be equal in
    that case, so restarting dr-provision right after creating a new WAL
    segment but before writing a transaction into it will cause the
    restart to fail.  Fix it by fixing the validation function to look for
    the correct values instead.

M   datastack/wal.go

commit 4048520748efcaa1bf7716eb00f5ef79d40c6f2f
Author: Victor Lowther <victor.lowther@gmail.com>
Date:   Wed May 27 13:41:22 2020 -0500

    feat(frontend): Ratelimit certian audit entries.

    Successful logins with username/passowrd pairs will only generate a
    log message once per hour per username/clientIP, and failed auth
    attempts with an invalid token will only generate an audit log every
    hour per clientIP.  Along the way, arrange for token validate errors
    to return something meaningful, and discriminate between token
    validation failures due to a missing key and token validation failures
    due to a malformed token.

    In the future, we may add a preference to control how often these log
    messages are shown.

M   backend/jwt-utils.go
M   frontend/frontend.go
M   frontend/machines.go
M   frontend/system.go

commit e94cd82988beb8866df0ead64161efb56bf8bcdb
Author: Victor Lowther <victor.lowther@gmail.com>
Date:   Thu Apr 30 12:25:22 2020 -0500

    fix(pluginActions): Plugin output action does not have to be JSON.

    THe output of a running plugin response to an action has never been
    guaranteed to be JSON, or even something convertible to JSON.  Fix
    that broken assumption by just converting it to a string if it cannot
    be unmarshalled to JSON.

M   backend/requestTracker.go
M   backend/runningPlugin.go

End of Note