System Site profiles

Site profile is a set of configuration settings that can be assigned to a site. Some values may be overridden by system site configuration.

Create a new site profile

SecurityaccessToken
Request
query Parameters
validate
string <enumeration>

Validate the request but do not actually perform the requested operation

Value: "true"
Request Body schema:
name
string <name> ^[a-z0-9]([a-z0-9\-]*[a-z0-9])?$

The name of the profile.

Array of objects
Array of objects
Array of objects
allow-local-unseal
boolean

Setting this to 'true' allows a site to automatically unseal as soon as a majority of nodes in the local cluster is present. It does not require connectivity to the control-tower in order to unseal. It should only be used when no sensitive data is stored at sites since it becomes more susceptible to intrusion through physical access. For sites with only one host a stolen host will be able to unseal the crypto state without accessing the control tower and cannot be blocked from doing so. This option should be used with some care. Allowing local-unseal on one site will potentially expose the communication to other sites as well since the same crypto keys are used to communicate updates. All keys should be rotated if a breach is suspected.

protect-with-tpm
string <enumeration>
  • best-effort: Use TPM or HSM if present and functional.
  • require: Require TPM or HSM, fail on initial startup if neither is present or working. Issue tpm-protection-unavailable if configured to require after initial startup and neither TPM nor HSM works.
  • never: Do not use TPM or HSM to protect the sealkey.

Controls whether TPM or HSM is used to protect the sealkey.

when-disconnected
string <when-disconnected-behavior>
  • treat-as-normal: Temporarily lost connection to this site is considered ok, but during normal operation the site will be connected.
    Application deployment attempts, while being disconnected, will stay in oper-status deploying until the connection has been re-established.
  • treat-as-expected: The connection to this site is transient or volatile and it is considered expected behavior. Typically, the site might be non-operative during some periods.
    Application deployment attempts, while being disconnected, is not considered to be an error and will hence not effect nor block the overall deployment of an application, unless the application deployment is for canary sites. In this case treat-as-expected has no effect.
    Any deployment attempts to sites that are disconnected and configured with treat-as-expected behavior will be marked as skipped-disconnected in the deployment status for the corresponding application version.
  • treat-as-error: The connection to this site is required and any lost connection is considered an error and will be alerted.
    Application deployment attempts, while being disconnected, will stay in oper-status deploying until the connection has been re-established.
sync-time
boolean

EXPERIMENTAL - Might be removed or changed in future releases.

When set to 'true', all hosts in the site will attempt to keep their system clocks synchronized with the Control Tower instance, but only when Chrony is not already synchronized with another reliable source.

This requires that the Chrony time synchronization service is installed and running on the hosts. The Chrony daemon must be configured to accept external clock updates on the socket tsq.sock. Ensure that the Chrony configuration contains:

refclock SOCK /run/chrony/tsq.sock refid TSQ

With synchronization enabled, each host will periodically check (every 30 minutes) the status of the local Chrony daemon. If Chrony reports that it is not synchronized with any other source, the host will query the Control Tower for the current time and provide the retrieved value as an external reference to Chrony, which then adjusts the system clock accordingly.

ingress-allocation-method
string <enumeration>
  • disabled: Ingress is not allowed on this site. Service instances requiring an ingress address will not be started.
  • dhcp: Ingress allocation is performed by querying an external DHCP server. The DHCP server must support DHCP client identifier option and be reachable from any host on the edge site.
    The DHCP client identifier used to request an ingress address for a service instance is of the form tenant:application:service-index, unless the ingress-dhcp-client-id-site-prefix parameter is configured.
  • pool: Allocation is performed by system from a configured ingress-ipv4-address-ranges pool of addresses, sitewide or per network interface.
  • external: Experimental.
    EXPERIMENTAL - Might be removed in future releases.
  • port-forward: Forward ports from the main IP address on the selected interface. There must be no overlap in ports forwarded for different services on the same host. Ports used by supd itself may not be forwarded (53/tcp, 53/udp, 4646/tcp, 4653/tcp, 4653/udp, 4664/tcp, 4668/tcp, 4848/tcp, 4849/tcp, 8137/tcp, 51820/udp).
object
Responses
201

Created

400

Bad Request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict (instance exists)

503

Service Unavailable (strongbox sealed)

post/v1/config/system/site-profiles
Request samples
name: sweden
supd-upgrade-windows:
  - days-of-week: Friday, Saturday
    start-time: 01:00
    timezone: UTC
    duration: 4h
application-upgrade-windows:
  - days-of-week: Friday, Saturday
    start-time: 01:00
    timezone: UTC
    duration: 4h
os-upgrade-windows:
  - days-of-week: Friday, Saturday
    start-time: 01:00
    timezone: UTC
    duration: 4h
allow-local-unseal: true
protect-with-tpm: best-effort
when-disconnected: treat-as-error
sync-time: false
ingress-allocation-method: dhcp
ingress-dhcp-client-fqdn-option:
  enabled: true
  legacy-encoding: false

Retrieve the configuration of all site profiles

SecurityaccessToken
Request
query Parameters
fields
string

Retrieve only requested fields from the resource

See section fields

where
string

Retrieve only items matching the given expression.

See section where

validate
string <enumeration>

Validate the request but do not actually perform the requested operation

Value: "true"
keys
string <enumeration>

Retrieve only the keys for the list

Value: "true"
count
string <enumeration>

Retrieve only the number of elements in the list

Value: "true"
Responses
200

OK

400

Bad Request

401

Unauthorized

403

Forbidden

404

Not Found

412

Precondition Failed

503

Service Unavailable (strongbox sealed)

get/v1/config/system/site-profiles
Response samples
- name: sweden
  supd-upgrade-windows:
    - days-of-week: Friday, Saturday
      start-time: 01:00
      timezone: UTC
      duration: 4h
  application-upgrade-windows:
    - days-of-week: Friday, Saturday
      start-time: 01:00
      timezone: UTC
      duration: 4h
  os-upgrade-windows:
    - days-of-week: Friday, Saturday
      start-time: 01:00
      timezone: UTC
      duration: 4h
  allow-local-unseal: true
  protect-with-tpm: best-effort
  when-disconnected: treat-as-error
  sync-time: false
  ingress-allocation-method: dhcp
  ingress-dhcp-client-fqdn-option:
    enabled: true
    legacy-encoding: false
  

Update a site profile

SecurityaccessToken
Request
path Parameters
site-profile-name
required
string <name> ^[a-z0-9]([a-z0-9\-]*[a-z0-9])?$

The name of the profile.

query Parameters
validate
string <enumeration>

Validate the request but do not actually perform the requested operation

Value: "true"
Request Body schema:
name
string <name> ^[a-z0-9]([a-z0-9\-]*[a-z0-9])?$

The name of the profile.

Array of objects
Array of objects
Array of objects
allow-local-unseal
boolean

Setting this to 'true' allows a site to automatically unseal as soon as a majority of nodes in the local cluster is present. It does not require connectivity to the control-tower in order to unseal. It should only be used when no sensitive data is stored at sites since it becomes more susceptible to intrusion through physical access. For sites with only one host a stolen host will be able to unseal the crypto state without accessing the control tower and cannot be blocked from doing so. This option should be used with some care. Allowing local-unseal on one site will potentially expose the communication to other sites as well since the same crypto keys are used to communicate updates. All keys should be rotated if a breach is suspected.

protect-with-tpm
string <enumeration>
  • best-effort: Use TPM or HSM if present and functional.
  • require: Require TPM or HSM, fail on initial startup if neither is present or working. Issue tpm-protection-unavailable if configured to require after initial startup and neither TPM nor HSM works.
  • never: Do not use TPM or HSM to protect the sealkey.

Controls whether TPM or HSM is used to protect the sealkey.

when-disconnected
string <when-disconnected-behavior>
  • treat-as-normal: Temporarily lost connection to this site is considered ok, but during normal operation the site will be connected.
    Application deployment attempts, while being disconnected, will stay in oper-status deploying until the connection has been re-established.
  • treat-as-expected: The connection to this site is transient or volatile and it is considered expected behavior. Typically, the site might be non-operative during some periods.
    Application deployment attempts, while being disconnected, is not considered to be an error and will hence not effect nor block the overall deployment of an application, unless the application deployment is for canary sites. In this case treat-as-expected has no effect.
    Any deployment attempts to sites that are disconnected and configured with treat-as-expected behavior will be marked as skipped-disconnected in the deployment status for the corresponding application version.
  • treat-as-error: The connection to this site is required and any lost connection is considered an error and will be alerted.
    Application deployment attempts, while being disconnected, will stay in oper-status deploying until the connection has been re-established.
sync-time
boolean

EXPERIMENTAL - Might be removed or changed in future releases.

When set to 'true', all hosts in the site will attempt to keep their system clocks synchronized with the Control Tower instance, but only when Chrony is not already synchronized with another reliable source.

This requires that the Chrony time synchronization service is installed and running on the hosts. The Chrony daemon must be configured to accept external clock updates on the socket tsq.sock. Ensure that the Chrony configuration contains:

refclock SOCK /run/chrony/tsq.sock refid TSQ

With synchronization enabled, each host will periodically check (every 30 minutes) the status of the local Chrony daemon. If Chrony reports that it is not synchronized with any other source, the host will query the Control Tower for the current time and provide the retrieved value as an external reference to Chrony, which then adjusts the system clock accordingly.

ingress-allocation-method
string <enumeration>
  • disabled: Ingress is not allowed on this site. Service instances requiring an ingress address will not be started.
  • dhcp: Ingress allocation is performed by querying an external DHCP server. The DHCP server must support DHCP client identifier option and be reachable from any host on the edge site.
    The DHCP client identifier used to request an ingress address for a service instance is of the form tenant:application:service-index, unless the ingress-dhcp-client-id-site-prefix parameter is configured.
  • pool: Allocation is performed by system from a configured ingress-ipv4-address-ranges pool of addresses, sitewide or per network interface.
  • external: Experimental.
    EXPERIMENTAL - Might be removed in future releases.
  • port-forward: Forward ports from the main IP address on the selected interface. There must be no overlap in ports forwarded for different services on the same host. Ports used by supd itself may not be forwarded (53/tcp, 53/udp, 4646/tcp, 4653/tcp, 4653/udp, 4664/tcp, 4668/tcp, 4848/tcp, 4849/tcp, 8137/tcp, 51820/udp).
object
Responses
204

No Content

400

Bad Request

401

Unauthorized

403

Forbidden

404

Not Found

412

Precondition Failed

503

Service Unavailable (strongbox sealed)

patch/v1/config/system/site-profiles/{site-profile-name}
Request samples
name: sweden
supd-upgrade-windows:
  - days-of-week: Friday, Saturday
    start-time: 01:00
    timezone: UTC
    duration: 4h
application-upgrade-windows:
  - days-of-week: Friday, Saturday
    start-time: 01:00
    timezone: UTC
    duration: 4h
os-upgrade-windows:
  - days-of-week: Friday, Saturday
    start-time: 01:00
    timezone: UTC
    duration: 4h
allow-local-unseal: true
protect-with-tpm: best-effort
when-disconnected: treat-as-error
sync-time: false
ingress-allocation-method: dhcp
ingress-dhcp-client-fqdn-option:
  enabled: true
  legacy-encoding: false

Delete a site profile

SecurityaccessToken
Request
path Parameters
site-profile-name
required
string <name> ^[a-z0-9]([a-z0-9\-]*[a-z0-9])?$

The name of the profile.

query Parameters
validate
string <enumeration>

Validate the request but do not actually perform the requested operation

Value: "true"
Responses
204

No Content

400

Bad Request

401

Unauthorized

403

Forbidden

404

Not Found

412

Precondition Failed

503

Service Unavailable (strongbox sealed)

delete/v1/config/system/site-profiles/{site-profile-name}

Replace or create a new site profile

SecurityaccessToken
Request
path Parameters
site-profile-name
required
string <name> ^[a-z0-9]([a-z0-9\-]*[a-z0-9])?$

The name of the profile.

query Parameters
validate
string <enumeration>

Validate the request but do not actually perform the requested operation

Value: "true"
Request Body schema:
name
string <name> ^[a-z0-9]([a-z0-9\-]*[a-z0-9])?$

The name of the profile.

Array of objects
Array of objects
Array of objects
allow-local-unseal
boolean

Setting this to 'true' allows a site to automatically unseal as soon as a majority of nodes in the local cluster is present. It does not require connectivity to the control-tower in order to unseal. It should only be used when no sensitive data is stored at sites since it becomes more susceptible to intrusion through physical access. For sites with only one host a stolen host will be able to unseal the crypto state without accessing the control tower and cannot be blocked from doing so. This option should be used with some care. Allowing local-unseal on one site will potentially expose the communication to other sites as well since the same crypto keys are used to communicate updates. All keys should be rotated if a breach is suspected.

protect-with-tpm
string <enumeration>
  • best-effort: Use TPM or HSM if present and functional.
  • require: Require TPM or HSM, fail on initial startup if neither is present or working. Issue tpm-protection-unavailable if configured to require after initial startup and neither TPM nor HSM works.
  • never: Do not use TPM or HSM to protect the sealkey.

Controls whether TPM or HSM is used to protect the sealkey.

when-disconnected
string <when-disconnected-behavior>
  • treat-as-normal: Temporarily lost connection to this site is considered ok, but during normal operation the site will be connected.
    Application deployment attempts, while being disconnected, will stay in oper-status deploying until the connection has been re-established.
  • treat-as-expected: The connection to this site is transient or volatile and it is considered expected behavior. Typically, the site might be non-operative during some periods.
    Application deployment attempts, while being disconnected, is not considered to be an error and will hence not effect nor block the overall deployment of an application, unless the application deployment is for canary sites. In this case treat-as-expected has no effect.
    Any deployment attempts to sites that are disconnected and configured with treat-as-expected behavior will be marked as skipped-disconnected in the deployment status for the corresponding application version.
  • treat-as-error: The connection to this site is required and any lost connection is considered an error and will be alerted.
    Application deployment attempts, while being disconnected, will stay in oper-status deploying until the connection has been re-established.
sync-time
boolean

EXPERIMENTAL - Might be removed or changed in future releases.

When set to 'true', all hosts in the site will attempt to keep their system clocks synchronized with the Control Tower instance, but only when Chrony is not already synchronized with another reliable source.

This requires that the Chrony time synchronization service is installed and running on the hosts. The Chrony daemon must be configured to accept external clock updates on the socket tsq.sock. Ensure that the Chrony configuration contains:

refclock SOCK /run/chrony/tsq.sock refid TSQ

With synchronization enabled, each host will periodically check (every 30 minutes) the status of the local Chrony daemon. If Chrony reports that it is not synchronized with any other source, the host will query the Control Tower for the current time and provide the retrieved value as an external reference to Chrony, which then adjusts the system clock accordingly.

ingress-allocation-method
string <enumeration>
  • disabled: Ingress is not allowed on this site. Service instances requiring an ingress address will not be started.
  • dhcp: Ingress allocation is performed by querying an external DHCP server. The DHCP server must support DHCP client identifier option and be reachable from any host on the edge site.
    The DHCP client identifier used to request an ingress address for a service instance is of the form tenant:application:service-index, unless the ingress-dhcp-client-id-site-prefix parameter is configured.
  • pool: Allocation is performed by system from a configured ingress-ipv4-address-ranges pool of addresses, sitewide or per network interface.
  • external: Experimental.
    EXPERIMENTAL - Might be removed in future releases.
  • port-forward: Forward ports from the main IP address on the selected interface. There must be no overlap in ports forwarded for different services on the same host. Ports used by supd itself may not be forwarded (53/tcp, 53/udp, 4646/tcp, 4653/tcp, 4653/udp, 4664/tcp, 4668/tcp, 4848/tcp, 4849/tcp, 8137/tcp, 51820/udp).
object
Responses
201

Created

204

No Content

400

Bad Request

401

Unauthorized

403

Forbidden

404

Not Found

412

Precondition Failed

503

Service Unavailable (strongbox sealed)

put/v1/config/system/site-profiles/{site-profile-name}
Request samples
name: sweden
supd-upgrade-windows:
  - days-of-week: Friday, Saturday
    start-time: 01:00
    timezone: UTC
    duration: 4h
application-upgrade-windows:
  - days-of-week: Friday, Saturday
    start-time: 01:00
    timezone: UTC
    duration: 4h
os-upgrade-windows:
  - days-of-week: Friday, Saturday
    start-time: 01:00
    timezone: UTC
    duration: 4h
allow-local-unseal: true
protect-with-tpm: best-effort
when-disconnected: treat-as-error
sync-time: false
ingress-allocation-method: dhcp
ingress-dhcp-client-fqdn-option:
  enabled: true
  legacy-encoding: false

Retrieve the configuration of a site profile

SecurityaccessToken
Request
path Parameters
site-profile-name
required
string <name> ^[a-z0-9]([a-z0-9\-]*[a-z0-9])?$

The name of the profile.

query Parameters
fields
string

Retrieve only requested fields from the resource

See section fields

where
string

Retrieve only items matching the given expression.

See section where

validate
string <enumeration>

Validate the request but do not actually perform the requested operation

Value: "true"
Responses
200

OK

400

Bad Request

401

Unauthorized

403

Forbidden

404

Not Found

412

Precondition Failed

503

Service Unavailable (strongbox sealed)

get/v1/config/system/site-profiles/{site-profile-name}
Response samples
name: sweden
supd-upgrade-windows:
  - days-of-week: Friday, Saturday
    start-time: 01:00
    timezone: UTC
    duration: 4h
application-upgrade-windows:
  - days-of-week: Friday, Saturday
    start-time: 01:00
    timezone: UTC
    duration: 4h
os-upgrade-windows:
  - days-of-week: Friday, Saturday
    start-time: 01:00
    timezone: UTC
    duration: 4h
allow-local-unseal: true
protect-with-tpm: best-effort
when-disconnected: treat-as-error
sync-time: false
ingress-allocation-method: dhcp
ingress-dhcp-client-fqdn-option:
  enabled: true
  legacy-encoding: false

Retrieve the state of all site profiles

SecurityaccessToken
Request
query Parameters
fields
string

Retrieve only requested fields from the resource

See section fields

where
string

Retrieve only items matching the given expression.

See section where

content
string <enumeration>

Filter descendant nodes in the response

Enum: "config" "nonconfig"
keys
string <enumeration>

Retrieve only the keys for the list

Value: "true"
count
string <enumeration>

Retrieve only the number of elements in the list

Value: "true"
Responses
200

OK

400

Bad Request

401

Unauthorized

403

Forbidden

404

Not Found

503

Service Unavailable (strongbox sealed)

get/v1/state/system/site-profiles
Response samples
- name: sweden
  supd-upgrade-windows:
    - days-of-week: Friday, Saturday
      start-time: 01:00
      timezone: UTC
      duration: 4h
  application-upgrade-windows:
    - days-of-week: Friday, Saturday
      start-time: 01:00
      timezone: UTC
      duration: 4h
  os-upgrade-windows:
    - days-of-week: Friday, Saturday
      start-time: 01:00
      timezone: UTC
      duration: 4h
  allow-local-unseal: true
  protect-with-tpm: best-effort
  when-disconnected: treat-as-error
  sync-time: false
  ingress-allocation-method: dhcp
  ingress-dhcp-client-fqdn-option:
    enabled: true
    legacy-encoding: false
  

Retrieve the state of a site profile

SecurityaccessToken
Request
path Parameters
site-profile-name
required
string <name> ^[a-z0-9]([a-z0-9\-]*[a-z0-9])?$

The name of the profile.

query Parameters
fields
string

Retrieve only requested fields from the resource

See section fields

where
string

Retrieve only items matching the given expression.

See section where

content
string <enumeration>

Filter descendant nodes in the response

Enum: "config" "nonconfig"
Responses
200

OK

400

Bad Request

401

Unauthorized

403

Forbidden

404

Not Found

503

Service Unavailable (strongbox sealed)

get/v1/state/system/site-profiles/{site-profile-name}
Response samples
name: sweden
supd-upgrade-windows:
  - days-of-week: Friday, Saturday
    start-time: 01:00
    timezone: UTC
    duration: 4h
application-upgrade-windows:
  - days-of-week: Friday, Saturday
    start-time: 01:00
    timezone: UTC
    duration: 4h
os-upgrade-windows:
  - days-of-week: Friday, Saturday
    start-time: 01:00
    timezone: UTC
    duration: 4h
allow-local-unseal: true
protect-with-tpm: best-effort
when-disconnected: treat-as-error
sync-time: false
ingress-allocation-method: dhcp
ingress-dhcp-client-fqdn-option:
  enabled: true
  legacy-encoding: false