Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
107 commits
Select commit Hold shift + click to select a range
d5d976e
CA-422448: Write proxy credentials to repo file instead of command line
Jan 14, 2026
6b4237f
Make proxy_config non-optional
Jan 16, 2026
ed593d5
CP-311020: Design for enabling ldaps for external auth
Jan 15, 2026
beed772
CA-422448: Write proxy credentials to repo file instead of command li…
stephenchengCloud Jan 19, 2026
77c6bf3
Check that suspend SR has enough space to save VM state
gthvn1 Jan 15, 2026
1b75c36
Check that suspend SR has enough space to save VM state (#6838)
psafont Jan 19, 2026
1370ecc
CP-309060: Domain CPU RRD3 metric - numa_node_nonaffine_vcpus
mg12 Jul 24, 2025
16d1c04
CP-309060: merge: upstream patch 0004-rrd3
mg12 Jan 19, 2026
a516359
xenopsd/xc: adapt claim_pages to new single numa node version (CP-53658)
lindig Oct 29, 2025
f1f7476
CP-53658: merge: upstream patch 0003-CP-53658-adapt-claim_pages-to-ve…
mg12 Jan 19, 2026
7153d5d
xenopsd-xc: do not try keep track of free memory when planning NUMA n…
psafont Jun 19, 2025
e535771
CA-411684: merge: upstream patch 0005-xenopsd-xc-do-not-try-keep-trac…
mg12 Jan 19, 2026
6f750b8
CP-54238: RRD4: rebase over rrdp_squeezed.ml
mg12 Jul 1, 2025
9f71728
CA-412929: work around a small amount of internal pages in unclaimed …
mg12 Jul 1, 2025
ef10c4f
CP-310822: RRD4 :link Xenctrlext in rrdp-squeezed
mg12 Dec 10, 2025
0ec433b
CP-53238: merge: upstream patch 0005-rrd4
mg12 Jan 19, 2026
e6e90d6
Update datamodel lifecycle
robhoes Jan 20, 2026
ea41b65
CP-53658: only use xc_domain_claim_pages_node if defined
mg12 Jan 20, 2026
80045e8
reformat code using latest ocamlformat 0.28.1
mg12 Jan 20, 2026
4eb2ca1
CP-310822: use only xenctrlext
mg12 Jan 20, 2026
d73437c
CA-422713: XSI-2105: Pool.join failed due to AD status corrupt
Jan 13, 2026
8116cf5
CA-422713: XSI-2105: Pool.join failed due to AD status corrupt (#6832)
liulinC Jan 21, 2026
f05fa58
CP-310822: upstream patchqueue entries for XS9 (#6845)
robhoes Jan 21, 2026
be5420b
CA-419840 mark CD VBD as empty when its VDI is removed
lindig Jan 15, 2026
736eeb1
CA-419840 mark CD VBD as empty when its VDI is removed (#6840)
lindig Jan 21, 2026
aabf39f
CP-311102: Make migration timeouts configurable
robhoes Jan 20, 2026
7d4227b
CP-311102: Make migration timeouts configurable (#6846)
robhoes Jan 21, 2026
01c9a6d
CA-423064: Trigger group upgrades in addition to package upgrades
alexbrett Jan 20, 2026
73a3ed3
datamodel_errors: generalize error for sr_suspend_space_insufficient
psafont Jan 21, 2026
32adc7d
CA-423064: Also check group upgrade when determining updates available
alexbrett Jan 20, 2026
fc74018
datamodel_errors: generalize error for sr_suspend_space_insufficient …
psafont Jan 21, 2026
ab74c88
qcow-stream-tool: Use tail-recursive functions in read_headers
last-genius Jan 21, 2026
b0a269e
qcow-stream-tool: Avoid stack overflows in read_headers (#6848)
last-genius Jan 22, 2026
40759d8
Don't depend on LANG for running tests
semarie Jan 21, 2026
61bec37
Don't depend on LANG for running tests (#6853)
psafont Jan 22, 2026
4db0de7
Fix -Wreturn-type warning in xenctrlext_stubs.c
lindig Jan 23, 2026
46d16f1
Fix -Wreturn-type warning in xenctrlext_stubs.c (#6859)
lindig Jan 23, 2026
ecb82f3
CP-311020: Design for enabling ldaps for external auth (#6837)
liulinC Jan 26, 2026
1b37d8e
CA-423213: Fix bundle URL construct
alexbrett Jan 24, 2026
4edb0d7
CA-423213: Fix bundle URL construct (#6860)
robhoes Jan 26, 2026
09483d8
CP-311020: Add force option to external_auth_set_ldaps for debug
Jan 27, 2026
c1d4403
Don't use CRLs for pool internal host-host TLS communications
minglumlu Jan 27, 2026
91dec39
stunnel: add doccoments to the configuration functions
psafont Jan 27, 2026
4275f76
CA-423173: XAPI underestimates low memory emergency pool size
edwintorok Jan 22, 2026
4088dfb
CA-423173: XAPI underestimates low memory emergency pool size (#6855)
edwintorok Jan 27, 2026
8b00c81
Don't use CRLs for pool internal host-host TLS communications (#6863)
psafont Jan 27, 2026
e2db96c
[maintenance]: fix formatting
edwintorok Jan 27, 2026
ec3bd4a
CA-423172: Xen uses ~294 pages/vCPU, not 256
edwintorok Jan 22, 2026
72c7a25
CA-423172: Xen uses ~294 pages/vCPU, not 256 (#6854)
edwintorok Jan 27, 2026
f40cc48
CA-422187: only ENOMEM is retrieable when a single-node NUMA claim fails
edwintorok Dec 18, 2025
0707b37
CA-422187,CA-422188: either always use claims or never use claims
edwintorok Dec 16, 2025
be13737
CA-422187: more accurate debug messages
edwintorok Dec 19, 2025
7238e5f
CA-422187: plumb migration pages through
edwintorok Jan 8, 2026
4f11f5e
NUMA claim handling improvements (#6809)
edwintorok Jan 27, 2026
f8f5a25
Update NUMA feature branch from master (#6865)
edwintorok Jan 27, 2026
9393346
CP-311020: Add force option to external_auth_set_ldaps for debug (#6862)
liulinC Jan 28, 2026
7adae02
CP-311165 XSI-1958 rely on Linux guest to announce control features
lindig Jan 26, 2026
3cd9646
xapi: CA-423064: Trigger group upgrades in addition to package upgrad…
robhoes Jan 28, 2026
e8506b1
CP-311165 XSI-1958 rely on Linux guest to announce control features (…
lindig Jan 28, 2026
bf61d51
CP-311215: Remove legacy PBIS code
Jan 29, 2026
31e031b
CP-311215: Remove legacy PBIS code (#6872)
robhoes Jan 29, 2026
57eb903
xapi_sm: remove nested call to serialize function
psafont Jan 12, 2026
fa7b672
xapi_sm: add interface
psafont Jan 13, 2026
a88ce1b
listext: add better description to set_difference
psafont Jan 14, 2026
8bcd6b5
storage_access: split the code off that queries message switch for SM…
psafont Jan 14, 2026
e17607c
storage_access: share code for unregistering plugins
psafont Jan 14, 2026
183b648
storage_access: avoid the addition of multiple SM with the same type
psafont Jan 14, 2026
eb18ff9
xapi_sm: Don't allow host_pending_features that are empty
psafont Jan 20, 2026
bbd42f2
storage_access: log when there are SM duplicates on startup
psafont Jan 28, 2026
7eb72bd
CA-414586 add message-limit to xapi.conf
lindig Jan 29, 2026
1bc5bd7
CP-311169: samba: include /etc/samba/smb.extra.conf
Jan 28, 2026
87178fc
CP-311169: samba: include /etc/samba/smb.extra.conf (#6871)
liulinC Jan 30, 2026
1c354a4
Merge NUMA improvements to master (#6869)
edwintorok Jan 30, 2026
5ed631f
CA-414586 add message-limit to xapi.conf (#6876)
lindig Jan 30, 2026
a7af61e
Update ocaml-version from 5.3.0 to 5.4.0
minglumlu Feb 2, 2026
b6e2a9c
Don't block switching to a different edition when HA is enabled
minglumlu Feb 2, 2026
1a091a9
Update ocaml-version from 5.3.0 to 5.4.0 (#6879)
edwintorok Feb 2, 2026
3aa0929
Don't block switching to a different edition when HA is enabled (#6880)
robhoes Feb 2, 2026
a3f89e4
CP-423204: add new xenctrl field claimed to xenctrlext
mg12 Feb 1, 2026
77ac372
CP-423204: use new xenctrlext field node_meminfo.claimed
mg12 Jan 26, 2026
93a0546
CP-423204: use new xenctrlext function HostNuma.numa_get_meminfo
mg12 Feb 2, 2026
6faf396
CP-311020: ldaps design: declare error codes
Feb 2, 2026
00c6f68
CP-311020: ldaps design: declare error codes (#6877)
liulinC Feb 3, 2026
ca3c231
storage_access: robustify SM detection on startup to avoid duplicates…
psafont Feb 3, 2026
45e2ea9
CA-423369: fix suspend-SR space check
robhoes Feb 3, 2026
e83992f
CA-423369: fix suspend-SR space check (#6882)
edwintorok Feb 3, 2026
6a2e5ac
CA-423204: use xen field meminfo.claimed to calculate available memor…
edwintorok Feb 4, 2026
464de44
CP-309998: ignore small amount of pages in other nodes
mg12 Feb 3, 2026
ba43e00
CP-309998: ignore small amount of pages in other nodes (#6884)
edwintorok Feb 4, 2026
40b45f1
CA-423574: Xenops_task: avoid losing stacktraces when tracing is enabled
edwintorok Feb 4, 2026
3401127
CA-432574: Xenopsd: avoid losing stacktraces in with_reservation
edwintorok Feb 4, 2026
0c3aaca
CP-311475: do not change a domain's memory allocation while it is bei…
edwintorok Feb 4, 2026
57adc22
XSI-2128: Ignore RBAC when destroying internal tasks
Feb 5, 2026
89be6ee
CA-423576: cli_progress_bar: move into its own internal library
edwintorok Feb 4, 2026
8f21625
CA-423576: cli_progress_bar: use monotonic time
edwintorok Feb 2, 2026
23fa680
CA-423576: cli_progress_bar: do not crash when ETA > 99h or infinite
edwintorok Feb 2, 2026
b9cd1e5
CA-423576: print more detailed total time when a progress bar finishes
edwintorok Feb 5, 2026
20e5cf3
CA-423574: avoid losing stacktraces in Xenopsd (#6891)
edwintorok Feb 5, 2026
2a7acb5
XSI-2128: Ignore RBAC when destroying internal tasks (#6885)
robhoes Feb 5, 2026
90d6814
CA-423576: fix cli_progress_bar crashes (#6892)
edwintorok Feb 5, 2026
d51aad7
CA-423574: avoid losing backtraces when reraising
edwintorok Feb 6, 2026
8c426d2
CA-423574: avoid losing backtraces when reraising (#6896)
edwintorok Feb 6, 2026
67b740d
CP-311125 unhide AD cache pool parameters in XE CLI
lindig Feb 6, 2026
0baa116
CP-311125 unhide AD cache pool parameters in XE CLI (#6898)
lindig Feb 9, 2026
d9b4b43
xapi: Wrap {vhd,qcow}-tool read_header invocation in a thread
last-genius Feb 9, 2026
fa8c83f
CA-311475: do not change a domain's memory allocation while it is bei…
edwintorok Feb 9, 2026
420b584
xapi: Wrap {vhd,qcow}-tool read_header invocation in a thread (#6901)
edwintorok Feb 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
ocaml-version: "4.14.2"
experimental: true
- runs-on: "ubuntu-22.04"
ocaml-version: "5.3.0"
ocaml-version: "5.4.0"
experimental: true

continue-on-error: ${{ matrix.experimental }}
Expand Down
340 changes: 340 additions & 0 deletions doc/content/design/external-auth-ldaps.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,340 @@
---
title: Secure LDAP (LDAPS) Support for External Authentication
layout: default
design_doc: true
revision: 1
status: draft
---

## Terminology

| Term | Meaning |
|------|---------|
| AD | Windows Active Directory |
| samba/winbind | Client used in xapi to talk to AD |
| DC | Windows AD domain controller |
| ldap/ldaps | Lightweight Directory Access Protocol / over SSL |
| Joining host | The host joining to a pool |

## 1. Background

To integrate XenServer with AD, XenServer performs LDAP queries in the following use cases:

- **Enable external authentication/Join domain**: Samba LDAP queries DC details
- **Session revalidation**: xapi queries user details (e.g., whether user is still valid, password expired, etc.) to decide whether to destroy a session

Currently XenServer uses plain LDAP queries, which is a concern for some enterprise customers.

## 2. Xapi Database

### 2.1 External Auth Configuration

External auth details are stored in the `host` (table) → `external_auth_configuration` (field). For example:

```
external_auth_configuration: {
domain: xenrt16718.local,
user: Administrator,
workgroup: XENRTXENRT16718,
netbios_name: genus-35-103d,
machine_pwd_last_change_time: 1767508709
}
```

A new field `ldaps` (bool, optional) will be added to `external_auth_configuration` field to state whether LDAPS should be used instead of LDAP. If not set, LDAP will be used for backward compatibility.

So the field will look like:

```
external_auth_configuration: {
domain: xenrt16718.local,
user: Administrator,
workgroup: XENRTXENRT16718,
netbios_name: genus-35-103d,
machine_pwd_last_change_time: 1767508709,
ldaps: true
}
```

### 2.2 Certificate

To enforce security, if customer uses self-signed certificate, they need to upload the root CA certificate to XenServer, so XenServer can verify the certificate/public key used talking to DC for LDAPS.

The [trusted-certificates.md](https://github.com/xapi-project/xen-api/blob/master/doc/content/design/trusted-certificates.md) design enhanced the `Certificate` table and introduced a new field `purpose` for security, which limits the certificate only for specific purpose. `ldaps` will be added to `purpose` field as a value for LDAPS.

## 3. Interfaces

### 3.1 pool.enable_external_auth

#### 3.1.1 Interface

To enable external auth, the current API arguments are as follows:

- `pool` (Ref _pool): The pool whose external authentication should be enabled
- `config` (Map (String, String)): A list of key-values containing the configuration data
- `service_name` (String): The name of the service
- `auth_type` (String): The type of authentication (e.g., AD for Active Directory)

For example:

```bash
xe pool-enable-external-auth uuid=<uuid> auth-type=AD service-name=<domain> config:user=<user> config:pass=<pwd>
```

This API signature does not change. Regarding the config map, one new option is added:

- `config:ldaps`: whether LDAPS is required, default to `false`
- Set `client ldap sasl wrapping` to `ldaps` if true, `seal` otherwise
- This item will be stored in database in section 2.1

Given `ldaps` default to `false`, this feature is **NOT** enabled until explicitly set.

#### 3.1.2 Error code
Following new error codes added to indicate ldaps enable related error
- AUTH_NO_CERT, no certs can be used for ldaps, refer to 4.1.2 for certs finding.
- AUTH_INVALID_CERT, found certs, but none of the certs can be used to connect to DC

### 3.2 Set/Get Pool LDAPS Status

#### 3.2.1 pool.external_auth_set_ldaps
#### 3.2.1.1 Interface

User can specify LDAPS during join domain as in 3.1.

For the existing joined domain, user can switch between LDAP and LDAPS with this new API. Args as follows:

- `pool` (Ref _pool): pool to set LDAPS
- `ldaps` (Bool): whether LDAPS is required
- `force` (Bool): whether to set ldaps even when ldaps is currently set

This API will set the `ldaps` in database (Refer to 2.1).

This API performs following sanity check and rejects update if check fails:

- AD has already been enabled
- ldaps has already been enabled without force
- Find proper certificate (Refer to 4.1 for the details)
- Do a `ldaps` query to embedded user `krbtgt` for the joined domain

**Note:**
- This API allow re-entry with `force` to perform an extra `ldaps ping` for debug purpose
- This API will not do the LDAPS query on the trusted domains, as xapi does not have trusted domain details
- The joined domain likely has multiple DCs. LDAPS query tries every DC of the domain. Check pass if LDAPS query succeeds on any DC of the domain. This implies iterate and locate a DC supporting LDAPS (with proper certificate trust setup) before LDAPS query. However, this does not introduce performance problems as the LDAPS query happens in backend and refreshes result into XAPI DB
- Pool coordinator dispatches this API request to every host, and only succeeds if all hosts pass the check
- This API needs to be synced with other APIs. For example, `authenticate_username_password` should fail if this API is performing checking and configuration

This API will refresh `winbind` configuration (Refer to 4.1).

So following xe command can be used to switch between LDAP and LDAPS:

```bash
xe pool-external-auth-set-ldaps uuid=<uuid> ldaps=<true|false>
```

#### 3.2.1.2 Error code
This API may raise following errors
- AUTH_NO_CERT, no certs found to enable ldaps, refer to 4.1.2 for certs finding
- AUTH_INVALID_CERT, found certs, but none of the certs can be used to connect to DC
- AUTH_IS_DISABLED, AD is not enabled
- AUTH_LDAPS_PING_FAILED, failed to do ldaps query on all DCs with valid certs

#### 3.2.2 Get Pool LDAPS Status

xapi generates a get message for each field automatically. To query the LDAPS status, client only needs to query the get method of `host` (class) → `external-auth-configuration` (field), and parse the result. The example as follows:

```bash
xe host-param-get uuid=<uuid> param-name=external-auth-configuration
```

### 3.3 Install Certificate

If the certificate for LDAPS in DC is signed by a private CA (vs a trusted public CA), user needs to import their Root or Intermediate CA certificate into XenServer.

`pool.install_trusted_certificate` can install the certificate with following parameters, refer to [trusted-certificates.md](https://github.com/xapi-project/xen-api/blob/master/doc/content/design/trusted-certificates.md) for the details:

- `session` (ref session_id): reference to a valid session
- `self` (ref Pool): reference to the pool
- `ca` (boolean): should always be `true` for `ldaps`. xapi should reject this CA otherwise
- `cert` (string): the trusted certificate in PEM format
- `purpose` (string list): the purposes of this cert. It can be one of following:
- contain `ldaps` if for specific this specific purpose
- empty set, thus would take as general purpose CA. It will be used for `ldaps` if no `ldaps` specific purpose found

**Note:** If the DCs (of joining domain and trusted domain in use) are signed by different CAs, all the CAs need to be uploaded to XenServer.

## 4. Configuration Item

To enforce LDAPS, following are required:

- Samba needs to be updated to 4.21+ (Already done)
- LDAPS needs to be enabled in smb.conf

### 4.1 Samba Configuration

#### 4.1.1 smb.conf

To enforce LDAPS, xapi just passthrough the configuration to winbind. Following configuration needs to be updated to `/etc/samba/smb.conf`, details refer to [smb.conf](https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html):

```ini
client ldap sasl wrapping = <ldaps | seal>
tls verify peer = ca_and_name_if_available
tls trust system cas = yes
tls cafile = /etc/trusted-certs/ca-bundle-[ldaps|general].pem
```

- Switch between `ldap` and `ldaps` will flip `client ldap sasl wrapping` between `seal` and `ldaps`
- `tls cafile` points to a CA bundle used to verify DC certs. Details refer to 4.1.2

#### 4.1.2 Certificate Selection

This design is following [trusted-certificates.md](https://github.com/xapi-project/xen-api/blob/master/doc/content/design/trusted-certificates.md):

- Use `/etc/trusted-certs/ca-bundle-ldaps.pem` if exists
- Fall back to `/etc/trusted-certs/ca-bundle-general.pem` if exists and previous not match
- Report error if none of above match

**Note:** The selection/configuration is only refreshed on following cases:

- xapi (re)start
- `pool.external_auth_set_ldaps` API
- (Re)join domain

### 4.2 Xapi Configuration

#### 4.2.1 winbind-tls-verify-peer

For security, xapi asks winbind to verify CA certificate. `ca_and_name_if_available` is the default.

However, user may want to disable this verification for debug purpose.

`winbind-tls-verify-peer` is introduced for xapi configuration, and the possible values are `no_check`, `ca_only`, `ca_and_name_if_available`, `ca_and_name` and `as_strict_as_possible`.
The configured value will override `tls verify peer` value in xapi generated samba configuration. Refer to [smb.conf](https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html) for the details.


**Note:** This item is not intended for public documentation. This is only for debug purpose, or system tuning for specific scenarios from engineering/support team.

#### 4.2.2 ad-warning-message-interval

xapi sends warning message to user with this interval on LDAP query failure. Default to 1 week. Refer to section "Session revalidate" for the details.

## 5. Session Revalidate

xapi LDAP queries domain user status (if user has been added to manage XenServer) at configurable interval, and destroys the session created by domain user if user no longer in healthy status.

However, the LDAP query may fail due to various issues as follows:

- Temporary network issues
- CA certificate is not properly configured, or expired, etc.

Instead of destroying user session for stability, a warning message will be sent to user with the details at configurable interval `ad-warning-message-interval`.

- If no LDAP error, do nothing
- If error happens, send the warning message if:
- first time see the error through xapi start up (so no need to persist last send time) or
- `current_time - last_sent_time > winbind_warning_message_interval`

The message is defined as follows:
- name: AD_DC_LDAP_CHECK
- priority: Warning
- cls: `Host
- Body: LDAP(S) query check to `<DC>` of `<domain>` failed from `<host>` of `<pool>`

Note:
- The backend session revalidate check only performs on pool coordinator, thus the backend LDAP(S) query check only on coordinator
- `external_auth_set_ldaps` perform LDAP(S) query check on every host
- All previous AD_DC_LDAP_CHECK warning of a host will be cleaned on a successful LDAP(s) query from that host

## 6. Pool Join/Leave

### 6.1 pool.join

#### 6.1.1 AD Pre-checks

Currently the pool.join pre-check checks the following:

- `external_auth_type`: whether joined AD
- `external_auth_service_name`: whether joined the same domain

The pre-check is good enough, no matter whether `ldaps` is in use, as this ensures host can talk to AD. There are following cases:

- pool with AD, joining host with same AD: check pass as before this design
- pool without AD, joining host without AD: check pass as before this design
- pool without AD, joining host with AD: check failed as before this design
- pool with AD, joining host without AD:
- LDAPS not enabled: joining host needs to join to same AD as before this design
- LDAPS enabled: joining host needs to enable AD without certificate check, details refer to 6.1.2

#### 6.1.2 Join Host to Pool with LDAPS Enabled

When joining a host without AD to a pool with LDAPS enabled, the host may not have the (CA) certificate for the domain. It can be trivial to enforce customer to upload the CA certificate to every joining host, thus client would help to orchestrate certificates.

The workflow:

~~~mermaid

sequenceDiagram
participant user as User
participant client as Client
participant join as Joining host
participant coor as Pool Coordinator
participant dc as AD/DC

user->>client: pool.join
Note over client: precheck
alt precheck failed
client-->>user: precheck failed
end

Note over client,coor: sync all ldaps certs
client->>coor: pool.download_trusted_certificate
coor-->>client:
client->>join: pool.install_trusted_certificate
join-->>client:

user->>client: join domain username/password
client->>join: join domain username/password
join->>dc: join domain
dc-->>join:
join-->>client:

client->>join: pool.join
Note over join,coor: join pool ops<br/>certs sync
join-->>client:
client-->>user: pool.join succeed

~~~

**Detailed Steps:**

1. Client find proper `ldaps certs` from pool coordinator as `certs_pool`
- a. find all certs `ldaps in purpose`
- b. if no LDAPS certs, find all `general` certs
2. Client find all certs in joining host as `certs_joining_host`
3. Client identify the certs needs to be synced to joining host as `certs_to_sync = certs_pool - certs_joining_host` (certs in `certs_pool`, but not in `certs_joining_host`), the certs fingerprint should be used to identify the certs
4. Client download all `certs_to_sync`, `pool.download_trusted_certificate` from coordinator
5. Client upload all certs to joining pool, `pool.install_trusted_certificate` to joining pool, with the same purpose
6. Client trigger `pool.join` again with domain username and password
7. After pool.join:
- If pool.join failed, Client call `pool.uninstall_trusted_certificate` on joining host to revert the certs
- If pool.join succeed, do nothing as pool.join would sync the certs anyway

### 6.2 pool.leave

`pool.disable_external_auth` is called during pool leave, thus the `ldaps` status is cleaned.

This design does not change it.

## 7. Telemetry Support

### 7.1 External Auth Enabled

`host` (table) → `external_auth_type` (field) = `AD`

### 7.2 LDAPS Enabled

`host` (table) → `external_auth_configuration` (field) → `ldaps` (key) = `true`

## References

- [trusted-certificates.md](https://github.com/xapi-project/xen-api/blob/master/doc/content/design/trusted-certificates.md)
- [Samba smb.conf manual](https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html)
7 changes: 5 additions & 2 deletions dune
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,13 @@
(ocamlopt_flags (:standard -g -p -w -39))
(flags (:standard -w -39))
)
(dev (flags (:standard -g -w -39)))
(dev
(flags (:standard -g -w -39))
(env-vars (LANG C)))
(release
(flags (:standard -w -39-6@5))
(env-vars (ALCOTEST_COMPACT 1))
(env-vars (ALCOTEST_COMPACT 1)
(LANG C))
)
)

Expand Down
5 changes: 5 additions & 0 deletions ocaml/idl/datamodel_errors.ml
Original file line number Diff line number Diff line change
Expand Up @@ -1116,6 +1116,11 @@ let _ =
"The source SR does not have sufficient temporary space available to \
proceed the operation."
() ;
error Api_errors.sr_suspend_space_insufficient ["sr"]
~doc:
"The suspend SR does not have sufficient free space to store the VM \
suspend image."
() ;
error Api_errors.pbd_exists ["sr"; "host"; "pbd"]
~doc:"A PBD already exists connecting the SR to the server." () ;
error Api_errors.sr_has_pbd ["sr"]
Expand Down
7 changes: 7 additions & 0 deletions ocaml/idl/datamodel_host.ml
Original file line number Diff line number Diff line change
Expand Up @@ -2033,6 +2033,13 @@ let disable_external_auth =
; param_release= george_release
; param_default= Some (VMap [])
}
; {
param_type= Bool
; param_name= "force"
; param_doc= "Disable external auth even when not enabled"
; param_release= numbered_release "26.2.0-next"
; param_default= Some (VBool false)
}
]
~doc:"This call disables external authentication on the local host"
~allowed_roles:_R_POOL_ADMIN ()
Expand Down
Loading
Loading