private void ConfigureRbacPage(bool disasterRecoveryTask) { if (!_rbac) return; xenTabPageRbacWarning.Connection = xenConnection; xenTabPageRbacWarning.ClearPermissionChecks(); var warningMessage = (_srToReattach == null && !disasterRecoveryTask) ? Messages.RBAC_WARNING_SR_WIZARD_CREATE : Messages.RBAC_WARNING_SR_WIZARD_ATTACH; RBACWarningPage.WizardPermissionCheck check = new RBACWarningPage.WizardPermissionCheck(warningMessage) { Blocking = true }; check.AddApiCheckRange(new RbacMethodList("SR.probe")); if (_srToReattach == null) { // create check.AddApiCheckRange(SrCreateAction.StaticRBACDependencies); } else if (disasterRecoveryTask && SR.SupportsDatabaseReplication(xenConnection, _srToReattach)) { // "Attach SR needed for DR" case check.AddApiCheckRange(DrTaskCreateAction.StaticRBACDependencies); } else { // reattach check.AddApiCheckRange(SrReattachAction.StaticRBACDependencies); } xenTabPageRbacWarning.AddPermissionChecks(xenConnection, check); }
private void ConfigureRbacPage() { if (ConnectionDoesNotRequireRBAC(xenConnection) && ConnectionDoesNotRequireRBAC(TargetConnection)) return; m_pageTargetRbac.ClearPermissionChecks(); RBACWarningPage.WizardPermissionCheck migrateCheck = new RBACWarningPage.WizardPermissionCheck(Messages.RBAC_CROSS_POOL_MIGRATE_VM_BLOCKED) { Blocking = true }; migrateCheck.AddApiCheckRange(VMCrossPoolMigrateAction.StaticRBACDependencies); m_pageTargetRbac.AddPermissionChecks(xenConnection, migrateCheck); if (!xenConnection.Equals(TargetConnection)) m_pageTargetRbac.AddPermissionChecks(TargetConnection, migrateCheck); AddAfterPage(m_pageDestination, m_pageTargetRbac); }