if ACM_LABEL_UNLABELED in resnames:
resnames.remove(ACM_LABEL_UNLABELED)
+ # check for duplicate labels
+ if len(vmlabels) != len(set(vmlabels)) or \
+ len(resnames) != len(set(resnames)) or \
+ len(stes) != len(set(stes)) or \
+ len(chws) != len(set(chws)):
+ return -xsconstants.XSERR_POLICY_HAS_DUPLICATES, "", ""
+
max_chw_ssids = 1 + len(vms_with_chws)
max_chw_types = 1 + len(vms_with_chws)
max_ste_ssids = 1 + len(vms_with_stes) + len(resnames)
XSERR_BOOTPOLICY_INSTALL_ERROR = 25 + XSERR_BASE
XSERR_VM_NOT_AUTHORIZED = 26 + XSERR_BASE
XSERR_VM_IN_CONFLICT = 27 + XSERR_BASE
-XSERR_LAST = 27 + XSERR_BASE ## KEEP LAST
+XSERR_POLICY_HAS_DUPLICATES = 28 + XSERR_BASE
+XSERR_LAST = 28 + XSERR_BASE ## KEEP LAST
XSERR_MESSAGES = [
'',
'Operation failed in hypervisor',
'Boot policy installation error',
'VM is not authorized to run',
- 'VM label conflicts with another VM'
+ 'VM label conflicts with another VM',
+ 'Duplicate labels or types in policy'
]
def xserr2string(err):