Version 1 : The Bottlerocket image that does not contain these changes.
apiclient get os
{
"os": {
"arch": "x86_64",
"build_id": "ca9b93992",
"pretty_name": "Bottlerocket OS 1.30.0 (aws-k8s-1.29)",
"variant_id": "aws-k8s-1.29",
"version_id": "1.30.0"
}
}
Version 2: The Bottlerocket image that contain these changes and have the migration for the latest host containers.
apiclient get os
{
"os": {
"arch": "x86_64",
"build_id": "573de3acb-dirty",
"pretty_name": "Bottlerocket OS 1.33.0 (aws-k8s-1.29)",
"variant_id": "aws-k8s-1.29",
"version_id": "1.33.0"
}
}
Version 3: The Bottlerocket image that updates the host container versions, but not have migration.
apiclient get os
{
"os": {
"arch": "x86_64",
"build_id": "2f32fbed1-dirty",
"pretty_name": "Bottlerocket OS 1.34.0 (aws-k8s-1.29)",
"variant_id": "aws-k8s-1.29",
"version_id": "1.34.0"
}
}
- Setting-generator for Control and Admin container(storewolf changes)
- Setting generator in version 1 is string.
cat admin/source.setting-generator
"schnauzer-v2 render --requires 'aws@v1(helpers=[ecr-prefix])' --template '{{ ecr-prefix settings.aws.region }}/bottlerocket-admin:v0.11.15'"
cat admin/source
"328549459982.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-admin:v0.11.15"
cat control/source.setting-generator
"schnauzer-v2 render --requires 'aws@v1(helpers=[ecr-prefix])' --template '{{ ecr-prefix settings.aws.region }}/bottlerocket-control:v0.7.19'"
cat control/source
"328549459982.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-control:v0.7.19"
- Setting generator in version 2 is JSON object, containing command, strength. skip-if-populated not required as we default to true()
cat admin/source.setting-generator
{"command":"schnauzer-v2 render --requires 'aws@v1(helpers=[ecr-prefix])' --template '{{ ecr-prefix settings.aws.region }}/bottlerocket-admin:v0.11.16'","strength":"weak"}
bash-5.1# cat control/source.setting-generator
{"command":"schnauzer-v2 render --requires 'aws@v1(helpers=[ecr-prefix])' --template '{{ ecr-prefix settings.aws.region }}/bottlerocket-control:v0.7.20'","strength":"weak"}
- Setting generator in version 3 is JSON object, containing command, strength. skip-if-populated not required as we default to true()
ls admin/
enabled source source.setting-generator source.strength superpowered user-data user-data.setting-generator
bash-5.1# cat admin/source.strength
"weak"
bash-5.1# cat admin/source.setting-generator
{"command":"schnauzer-v2 render --requires 'aws@v1(helpers=[ecr-prefix])' --template '{{ ecr-prefix settings.aws.region }}/bottlerocket-admin:v0.11.16'","strength":"weak"}
bash-5.1# ls control/
enabled source source.setting-generator source.strength superpowered
bash-5.1# cat control/source.setting-generator
{"command":"schnauzer-v2 render --requires 'aws@v1(helpers=[ecr-prefix])' --template '{{ ecr-prefix settings.aws.region }}/bottlerocket-control:v0.7.20'","strength":"weak"}bash-5.1#
bash-5.1# cat control/source.strength
"weak"
- strength file
- No strength file exists in version 1.
ls admin/
enabled source source.setting-generator superpowered user-data user-data.setting-generator
bash-5.1# ls control/
enabled source source.setting-generator superpowered
- source.strength file with value "weak"(it is a json form that can be serialized and deserialized, hence double quote matters) when boots version 2 first time
ls admin/
enabled source source.setting-generator source.strength superpowered user-data user-data.setting-generator
bash-5.1# cat admin/source
"328549459982.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-admin:v0.11.15"
bash-5.1# cat admin/source.setting-generator
{"command":"schnauzer-v2 render --requires 'aws@v1(helpers=[ecr-prefix])' --template '{{ ecr-prefix settings.aws.region }}/bottlerocket-admin:v0.11.15'","strength":"weak"}
bash-5.1# cat admin/source.strength
"weak"
cat control/source
"328549459982.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-control:v0.7.19"bash-5.1#
bash-5.1# cat control/source.setting-generator
{"command":"schnauzer-v2 render --requires 'aws@v1(helpers=[ecr-prefix])' --template '{{ ecr-prefix settings.aws.region }}/bottlerocket-control:v0.7.19'","strength":"weak"}bash-5.1#
bash-5.1# cat control/source.strength
"weak"
- In version 2, we should see source.strength file with value "weak" when we do in-place update from version 1 and earlier user is using managed host containers.
cat admin/source.strength
"weak"
bash-5.1# cat control/source.strength
"weak"
bash-5.1# ls admin/
enabled source source.setting-generator source.strength superpowered user-data user-data.setting-generator
bash-5.1# ls control/
enabled source source.setting-generator source.strength superpowered
- In version 2, we should not see strength file when we do in-place update from version 1 and earlier user is not using managed admin host containers.
- In version 3, we should see source.strength file with value "weak" when we do in-place update from version 2 and earlier user is using managed host containers.
ls admin/
enabled source source.setting-generator source.strength superpowered user-data user-data.setting-generator
bash-5.1# cat admin/source.strength
"weak"
- In version 3, there should not be any strength file when we do in-place update from version 2 and earlier user is not using managed host containers.
ls admin/
enabled source source.setting-generator superpowered user-data user-data.setting-generator
bash-5.1# ls control/
enabled source source.setting-generator source.strength superpowered
bash-5.1# apiclient get settings.host-containers
{
"settings": {
"host-containers": {
"admin": {
"enabled": true,
"source": "328549459982.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-admin:v0.11.16",
"superpowered": true,
"user-data": "eyJzc2giOnsiYXV0aG9yaXplZC1rZXlzIjpbXX19"
},
"control": {
"enabled": true,
"source": "328549459982.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-control:v0.7.20",
"superpowered": false
}
}
}
}
- Change the setting from weak to strong and upgrade from version 2 to version 3, we should see the strong strength file and test upgrade downgrade.
- API
/tx/list
- The output should be consistent for all three version as no changes in the API.
- Version 1
apiclient raw -m PATCH -u /settings?strength=weak -d '{"host-containers": {"admin": {"source": "328549459982.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-admin:v0.11.13"}}}'
apiclient raw -u /tx/list
["default"]
- Version 2
apiclient raw -m PATCH -u /settings?strength=weak -d '{"host-containers": {"admin": {"source": "328549459982.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-admin:v0.11.13"}}}'
bash-5.1# apiclient raw -u /tx/list
["default"]
- Version 3
apiclient raw -m PATCH -u /settings?strength=weak -d '{"host-containers": {"admin": {"source": "328549459982.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-admin:v0.11.13"}}}'
bash-5.1# apiclient raw -u /tx/list
["default"]
- API
/tx
and/v2/tx
- Version 1 should return all the pending settings for
/tx
. The api call/v2/tx
should return error for version 1.
apiclient raw -u /tx
{"host-containers":{"admin":{"source":"328549459982.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-admin:v0.11.13"}}}
bash-5.1# apiclient raw -u /v2/tx
Failed GET request to '/v2/tx': Status 404 when GETing /v2/tx:
- Version 2 should return all the pending settings for
/tx
and all the pending settings and metadata for/v2/tx
apiclient raw -u /tx
{"host-containers":{"admin":{"source":"328549459982.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-admin:v0.11.13"}}}
bash-5.1# apiclient raw -u /v2/tx
{"settings":{"host-containers":{"admin":{"source":"328549459982.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-admin:v0.11.13"}}},"metadata":{"settings.host-containers.admin.source":{"strength":"\"weak\""}}}
- Version 3 should return all the pending settings for
/tx
and all the pending settings and metadata for/v2/tx
apiclient raw -u /tx
{"host-containers":{"admin":{"source":"328549459982.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-admin:v0.11.13"}}}
bash-5.1# apiclient raw -u /v2/tx
{"settings":{"host-containers":{"admin":{"source":"328549459982.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-admin:v0.11.13"}}},"metadata":{"settings.host-containers.admin.source":{"strength":"\"weak\""}}}
- API method: DELETE and endpoint
/tx
-
apiclient raw -m DELETE -u /tx
All version should behave same for this API, and delete the transaction and all the data and metadata in the pending transaction.
- Version 1
apiclient raw -m DELETE -u /tx
["settings.host-containers.admin.source"]
bash-5.1# apiclient raw -u /tx/list
[]
- Version 2
apiclient raw -m DELETE -u /tx
["settings.host-containers.admin.source"]
bash-5.1#
[]
- Version 3
apiclient raw -m DELETE -u /tx
["settings.host-containers.admin.source"]
bash-5.1# apiclient raw -u /tx/list
[]
- API /tx/commit or commit_and_apply(as no changes has been done in apply API)
- Version 1 should commit setting.
apiclient raw -m PATCH -u /settings -d '{"motd": "my own value 2!"}'
bash-5.1# apiclient raw -u /tx
{"motd":"my own value 2!"}
bash-5.1# apiclient raw -m POST -u /tx/commit
["settings.motd"]
bash-5.1# apiclient raw -m POST -u /tx/apply
bash-5.1# [ssm-user@control]$
apiclient get settings.motd
{
"settings": {
"motd": "my own value 2!"
}
}
- Version 2 and 3, should be able to commit setting and metadata (only strength metadata) from pending transaction.
apiclient raw -m PATCH -u /settings -d '{"motd": "my own value 2!"}'
bash-5.1# apiclient raw -m PATCH -u /settings -d '{"motd": "my own value 4!"}'
bash-5.1# apiclient raw -u /tx
{"motd":"my own value 4!"}
bash-5.1# apiclient raw -m POST -u /tx/commit
["settings.motd"]
bash-5.1# apiclient raw -m POST -u /tx/apply
bash-5.1# ctr: rpc error: code = Unavailable desc = error reading from server: EOF
apiclient get settings.motd
{
"settings": {
"motd": "my own value 4!"
}
}
apiclient raw -m PATCH -u /settings -d '{"motd": "my own value 5!"}'
bash-5.1# apiclient raw -u /tx
{"motd":"my own value 5!"}
bash-5.1# apiclient raw -m POST -u /tx/commit_and_apply
["settings.motd"]
bash-5.1# apiclient get settings.motd
{
"settings": {
"motd": "my own value 5!"
}
}
- Version 2 and 3, should be able to set strength metadata with value weak if current metadata is not strong or the strength file does not exist and setting does not exist.
- Version 2 and 3, no change should happen in strength metadata if the pending strength and committed strength are same.
- Version 2 and 3, should override the strength metadata with value strong if the pending strength is strong and current is weak.
- API
/tx/apply
- Should behave consistently for all three versions.
- API
/settings
- Run apiclient get settings , apiclient raw -u /settings, apiclient get settings.host-containers.admin, apiclient get settings.motd settings.kernel.lockdown. The output of these should be consistent across versions and should populate the settings from live.
- API method: PATCH, endpoint:
/settings
and/settings/keypair
- Version 1: Put the setting in pending transaction default.
apiclient raw -m PATCH -u /settings?strength=weak -d '{"host-containers": {"admin": {"source": "328549459982.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-admin:v0.11.13"}}}'
apiclient raw -u /tx/list
["default"]
apiclient raw -u /tx
{"host-containers":{"admin":{"source":"328549459982.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-admin:v0.11.13"}}}
- Version 2 and 3:
apiclient raw -m PATCH -u /settings -d '{"motd": "my own value!"}'
, strength file should be created for this in pending transaction but not in live transaction.
Version 2
apiclient raw -m PATCH -u /settings -d '{"motd": "my own value!"}'
apiclient raw -u /v2/tx
{"settings":{"motd":"my own value!"},"metadata":{"settings.motd":{"strength":"\"strong\""}}}
apiclient get settings.motd
{
"settings": {
"motd": "Hello from eksctl!"
}
}
bash-5.1# apiclient raw -m POST -u /tx/commit
["settings.motd"]
bash-5.1# apiclient get settings.motd
{
"settings": {
"motd": "my own value!"
}
}
pwd
/var/lib/bottlerocket/datastore/current/live/settings
bash-5.1# ls | grep motd
motd
motd.affected-services
cat motd
"my own value!
Version 3:
apiclient raw -m PATCH -u /settings -d '{"motd": "my own value2!"}'
bash-5.1# apiclient raw -u /v2/tx
{"settings":{"motd":"my own value2!"},"metadata":{"settings.motd":{"strength":"\"strong\""}}}
bash-5.1# apiclient get settings.motd
{
"settings": {
"motd": "my own value!"
}
}
bash-5.1# apiclient raw -m POST -u /tx/commit_and_apply
["settings.motd"]
bash-5.1# apiclient get settings.motd
{
"settings": {
"motd": "my own value2!"
}
}
bash-5.1# pwd
/
bash-5.1# cd var/lib/bottlerocket/datastore/current/live/settings/
bash-5.1# pwd
/var/lib/bottlerocket/datastore/current/live/settings
bash-5.1# ls | grep motd
motd
motd.affected-services
- Version 2 and 3:
apiclient raw -m PATCH -u /settings?strength=weak -d '{"host-containers": {"admin": {"source": "328549459982.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-admin:v0.11.14"}}}'
, should create the strong strength file in pending, but on commit we should get error Check constraint function rejected the transaction. Aborting commit :Cannot change setting settings.host-containers.admin.source strength from strong to weak.
apiclient raw -m PATCH -u /settings?strength=weak -d '{"host-containers": {"admin": {"source": "328549459982.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-admin:v0.11.16"}}}'
bash-5.1# cd var/lib/bottlerocket/datastore/current/live/settings/host-containers
bash-5.1# ls
admin control
bash-5.1# ls admin/
enabled source source.setting-generator superpowered user-data user-data.setting-generator
bash-5.1# apiclient raw -u /v2/tx
{"settings":{"host-containers":{"admin":{"source":"328549459982.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-admin:v0.11.16"}}},"metadata":{"settings.host-containers.admin.source":{"strength":"\"weak\""}}}
bash-5.1#
bash-5.1# apiclient raw -u /tx/commit_and_apply
Failed GET request to '/tx/commit_and_apply': Status 404 when GETing /tx/commit_and_apply:
bash-5.1# apiclient raw -m POST -u /tx/commit_and_apply
Failed POST request to '/tx/commit_and_apply': Status 500 when POSTing /tx/commit_and_apply: Data store error during commit: Check constraint function rejected the transaction. Aborting commit :Cannot change setting settings.host-containers.admin.source strength from strong to weak
- Version 2 and 3:
apiclient raw -m PATCH -u /settings?strength=strong -d '{"host-containers": {"admin": {"source": "328549459982.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-admin:v0.11.14"}}}'
, should create the strong strength file in pending and update the strength file in live on commit.
apiclient raw -m PATCH -u /settings?strength=strong -d '{"host-containers": {"admin": {"source": "328549459982.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-admin:v0.11.16"}}}'
bash-5.1# apiclient raw -u /v2/tx
{"settings":{"host-containers":{"admin":{"source":"328549459982.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-admin:v0.11.16"}}},"metadata":{"settings.host-containers.admin.source":{"strength":"\"strong\""}}}
bash-5.1# apiclient raw -m POST -u /tx/commit_and_apply
apiclient get settings.host-containers.admin
["settings.host-containers.admin.source"]
{
"settings": {
"host-containers": {
"admin": {
"enabled": true,
"source": "328549459982.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-admin:v0.11.16",
"superpowered": true,
"user-data": "eyJzc2giOnsiYXV0aG9yaXplZC1rZXlzIjpbXX19"
}
}
}
}
bash-5.1# cd var/lib/bottlerocket/datastore/current/live/settings/host-containers
bash-5.1# ls admin/
enabled source source.setting-generator superpowered user-data user-data.setting-generator
bash-5.1#
bash-5.1# ls control/
enabled source source.setting-generator source.strength superpowered
- Version 2 and 3: apiclient set --json '{"motd": "I am new motd"}',no strength file should be created for this in live.
apiclient set --json '{"motd": "I am new motd"}'
bash-5.1# apiclient raw -u /v2/tx
{"settings":{},"metadata":{}}
bash-5.1# apiclient raw -u /tx
{}
bash-5.1# apiclient get settings.motd
{
"settings": {
"motd": "I am new motd"
}
}
ls | grep motd
motd
motd.affected-services
- Settings-committer
- Verify settings committer uses version 2 of /v2/tx for Version 2 and Version 3
apiclient get os
- The output should be consistent for all the versions.
Version 1
apiclient get os
{
"os": {
"arch": "x86_64",
"build_id": "ca9b93992",
"pretty_name": "Bottlerocket OS 1.30.0 (aws-k8s-1.29)",
"variant_id": "aws-k8s-1.29",
"version_id": "1.30.0"
}
}
Version 2
apiclient get os
{
"os": {
"arch": "x86_64",
"build_id": "573de3acb-dirty",
"pretty_name": "Bottlerocket OS 1.33.0 (aws-k8s-1.29)",
"variant_id": "aws-k8s-1.29",
"version_id": "1.33.0"
}
}
Version 3
apiclient get os
{
"os": {
"arch": "x86_64",
"build_id": "2f32fbed1-dirty",
"pretty_name": "Bottlerocket OS 1.34.0 (aws-k8s-1.29)",
"variant_id": "aws-k8s-1.29",
"version_id": "1.34.0"
}
}
- Upgrades/ downgrades using aws host containers
- Forward migration from version 1 to version 2.
- Backward migration from version 2 to version 1.
- Forward migration from version 2 to version 3.(managed control container but not admin container)
cd var/lib/bottlerocket/datastore/current/live/settings/host-containers
bash-5.1# ls admin/
enabled source source.setting-generator superpowered user-data user-data.setting-generator
bash-5.1# ls control/
enabled source source.setting-generator source.strength superpowered
bash-5.1# apiclient get settings.host-containers
{
"settings": {
"host-containers": {
"admin": {
"enabled": true,
"source": "328549459982.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-admin:v0.11.16",
"superpowered": true,
"user-data": "eyJzc2giOnsiYXV0aG9yaXplZC1rZXlzIjpbXX19"
},
"control": {
"enabled": true,
"source": "328549459982.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-control:v0.7.20",
"superpowered": false
}
}
}
}
- Backward migration from version 3 to version 2.
- Forward migration from version 1 to version 3.
- Backward migration from version 3 to version 1.
- Upgrades/ downgrades using public host containers
- Forward migration from version 1 to version 2.
- Backward migration from version 2 to version 1.
- Forward migration from version 2 to version 3.
- Backward migration from version 3 to version 2.
- Forward migration from version 1 to version 3.
- Backward migration from version 3 to version 1.
- Version 1 do not use managed host containers
- Forward migration from version 1 to version 2.
apiclient get settings.host-containers.admin
{
"settings": {
"host-containers": {
"admin": {
"enabled": true,
"source": "624299524776.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-admin:x86_64",
"superpowered": true,
"user-data": "eyJzc2giOnsiYXV0aG9yaXplZC1rZXlzIjpbXX19"
}
}
}
}
bash-5.1# apiclient get os
{
"os": {
"arch": "x86_64",
"build_id": "ca9b93992",
"pretty_name": "Bottlerocket OS 1.30.0 (aws-k8s-1.29)",
"variant_id": "aws-k8s-1.29",
"version_id": "1.30.0"
}
}
apiclient get os
{
"os": {
"arch": "x86_64",
"build_id": "0d0b88c81-dirty",
"pretty_name": "Bottlerocket OS 1.33.0 (aws-k8s-1.29)",
"variant_id": "aws-k8s-1.29",
"version_id": "1.33.0"
}
}
bash-5.1# apiclient get settings.host-containers.admin
{
"settings": {
"host-containers": {
"admin": {
"enabled": true,
"source": "624299524776.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-admin:x86_64",
"superpowered": true,
"user-data": "eyJzc2giOnsiYXV0aG9yaXplZC1rZXlzIjpbXX19"
}
}
}
}
bash-5.1# cd var/lib/bottlerocket/datastore/current/live/
bash-5.1# cd settings/host-containers
bash-5.1# ls
admin control
bash-5.1# ls admin/
enabled source source.setting-generator superpowered user-data user-data.setting-generator
bash-5.1# cat admin/source.setting-generator
{"command":"schnauzer-v2 render --requires 'aws@v1(helpers=[ecr-prefix])' --template '{{ ecr-prefix settings.aws.region }}/bottlerocket-admin:v0.11.16'","strength":"weak"}bash-5.1#
bash-5.1#
bash-5.1# cat admin/source
"624299524776.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-admin:x86_64"bash-5.1#
bash-5.1#
bash-5.1# ls control/
enabled source source.setting-generator source.strength superpowered
bash-5.1# cat control/source
"328549459982.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-control:v0.7.20"bash-5.1#
bash-5.1# cat control/source.setting-generator
{"command":"schnauzer-v2 render --requires 'aws@v1(helpers=[ecr-prefix])' --template '{{ ecr-prefix settings.aws.region }}/bottlerocket-control:v0.7.20'","strength":"weak"}bash-5.1#
bash-5.1# cat control/source.strength
- Backward migration from version 2 to version 1.
apiclient get os
{
"os": {
"arch": "x86_64",
"build_id": "ca9b93992",
"pretty_name": "Bottlerocket OS 1.30.0 (aws-k8s-1.29)",
"variant_id": "aws-k8s-1.29",
"version_id": "1.30.0"
}
}
bash-5.1# apiclient get settings.host-containers.admin
{
"settings": {
"host-containers": {
"admin": {
"enabled": true,
"source": "624299524776.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-admin:x86_64",
"superpowered": true,
"user-data": "eyJzc2giOnsiYXV0aG9yaXplZC1rZXlzIjpbXX19"
}
}
}
}
bash-5.1# ls var/lib/bottlerocket/datastore/current/live/settings/host-containers/admin/
enabled source source.setting-generator superpowered user-data user-data.setting-generator
bash-5.1# ls var/lib/bottlerocket/datastore/current/live/settings/host-containers/control/
enabled source source.setting-generator superpowered
bash-5.1#
- Forward migration from version 2 to version 3.(managed control container but not admin container)
cd var/lib/bottlerocket/datastore/current/live/settings/host-containers
bash-5.1# ls admin/
enabled source source.setting-generator superpowered user-data user-data.setting-generator
bash-5.1# ls control/
enabled source source.setting-generator source.strength superpowered
bash-5.1# apiclient get settings.host-containers
{
"settings": {
"host-containers": {
"admin": {
"enabled": true,
"source": "328549459982.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-admin:v0.11.16",
"superpowered": true,
"user-data": "eyJzc2giOnsiYXV0aG9yaXplZC1rZXlzIjpbXX19"
},
"control": {
"enabled": true,
"source": "328549459982.dkr.ecr.us-west-2.amazonaws.com/bottlerocket-control:v0.7.20",
"superpowered": false
}
}
}
}
- Backward migration from version 3 to version 2.
- Forward migration from version 1 to version 3.
- Backward migration from version 3 to version 1.
- Reboots and we can do inplace updates if a metadata is left in the pending transactions
- If we set using user-data, that should also change the setting to strong.
- Race conditions (Not required as we are just validating the transaction once while committing)
- Test race condition as:
# live data
motd = "hey"
motd.strength = "weak"
# pending tx 1
motd = "hello" # <--- this is the value someone wants to set
motd.strength = "weak" # <--- this is just incidental because we copied "live
# pending tx 2
motd = "sup" # <--- this is the value someone wants to set
motd.strength = "strong" # <--- we are upgrading this value to strong
# order
# tx 1, then tx 2 = no error
# tx 2, then tx 1 = warn, trying to go from strong to weak, and not change
- Test if the admin and control container is set from user-data, the setting should be changed to strong.
- Test forward and backward migration from a very old version to version 2 and version 3.
- - Test that RemoveMetadataMigration works as is for past Bottlerocket version bump and not do anything for changes containing the host_container migration changes.Test 1.21.0 forward and downward. And also test 1.21.0 to BR version that contains host container migration changes.
- ReplaceTemplateMigration and also have been marked as depreceated. All the migrations are achieved should we worry about this migration breaking? - Test the scenarios where this has been used earlier.
- Schanuzer migration testing. Test forward backward
- AddMetadataMigration: Testing 1.22.0 and 1.23.0 forward backward.
- RemoveMetadataMigration Testing 1.21.0
- ReplaceMetadataListsMigration: Testing 1.21.0 forward backward.
- ReplaceMetadataMigration
- Change setting to strong if the host container URI has been explicitely set by user using apiclient set or Userdata.toml
- Test upgrade and downgrade from a version having Host container update.