Examples of VisiblePredicate


Examples of lcmc.common.domain.VisiblePredicate

            menuFactory.createMenuItem(Tools.getString("MultiSelectionInfo.Detach"),
                           BlockDevInfo.NO_HARDDISK_ICON_LARGE,
                           Tools.getString("MultiSelectionInfo.Detach"),
                           new AccessMode(AccessMode.OP, AccessMode.ADVANCED),
                           new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .visiblePredicate(new VisiblePredicate() {
                    @Override
                    public boolean check() {
                        boolean oneAttached = false;
                        for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                            if (!bdi.getBlockDevice().isDrbd()) {
                                continue;
                            }
                            if (!bdi.isDiskless(Application.RunMode.LIVE)) {
                                oneAttached = true;
                            }
                        }
                        return oneAttached;
                    }
                })
                    .enablePredicate(new EnablePredicate() {
                        @Override
                        public String check() {
                            boolean detachable = false;
                            for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                                if (!bdi.getBlockDevice().isDrbd()) {
                                    continue;
                                }
                                if (!application.isAdvancedMode() && bdi.getDrbdVolumeInfo().isUsedByCRM()) {
                                    continue;
                                }
                                if (bdi.getBlockDevice().isSyncing()) {
                                    continue;
                                }
                                detachable = true;
                            }
                            if (detachable) {
                                return null;
                            } else {
                                return "nothing do detach";
                            }
                        }
                    })
                .addAction(new MenuAction() {
                        @Override
                        public void run(final String text) {
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (bdi.getBlockDevice().isDrbd()
                            && (application.isAdvancedMode() || !bdi.getDrbdVolumeInfo().isUsedByCRM())
                            && !bdi.getBlockDevice().isSyncing()
                            && !bdi.isDiskless(Application.RunMode.LIVE)) {
                            bdi.detach(Application.RunMode.LIVE);
                        }
                    }
                }});
        final ButtonCallback detachItemCallback =
              getBrowser().new DRBDMenuItemCallback(getBrowser().getDCHost())
                  .addAction(new CallbackAction() {
                          @Override
                          public void run(final Host host) {
                for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                    if (bdi.getBlockDevice().isDrbd()
                        && (application.isAdvancedMode() || !bdi.getDrbdVolumeInfo().isUsedByCRM())
                        && !bdi.getBlockDevice().isSyncing()
                        && !bdi.isDiskless(Application.RunMode.LIVE)) {
                        bdi.detach(Application.RunMode.TEST);
                    }
                }
            }});
        multiSelectionInfo.addMouseOverListener(detachMenu, detachItemCallback);
        items.add(detachMenu);

        /* attach */
        final MyMenuItem attachMenu =
            menuFactory.createMenuItem(Tools.getString("MultiSelectionInfo.Attach"),
                           BlockDevInfo.HARDDISK_DRBD_ICON_LARGE,
                           Tools.getString("MultiSelectionInfo.Attach"),
                           new AccessMode(AccessMode.OP, AccessMode.ADVANCED),
                           new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .visiblePredicate(new VisiblePredicate() {
                        @Override
                        public boolean check() {
                    boolean oneDetached = false;
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (!bdi.getBlockDevice().isDrbd()) {
                            continue;
                        }
                        if (bdi.isDiskless(Application.RunMode.LIVE)) {
                            oneDetached = true;
                        }
                    }
                    return oneDetached;
                }})
                    .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                    boolean attachable = true;
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (!bdi.getBlockDevice().isDrbd()) {
                            continue;
                        }
                        if (!application.isAdvancedMode() && bdi.getDrbdVolumeInfo().isUsedByCRM()) {
                            continue;
                        }
                        if (bdi.getBlockDevice().isSyncing()) {
                            continue;
                        }
                        attachable = true;
                    }
                    if (attachable) {
                        return null;
                    } else {
                        return "nothing to attach";
                    }
                }})
                .addAction(new MenuAction() {
                        @Override
                        public void run(final String text) {
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (bdi.getBlockDevice().isDrbd()
                            && (application.isAdvancedMode() || !bdi.getDrbdVolumeInfo().isUsedByCRM())
                            && !bdi.getBlockDevice().isSyncing()
                            && bdi.isDiskless(Application.RunMode.LIVE)) {
                            bdi.attach(Application.RunMode.LIVE);
                        }
                    }
                }});
        final ButtonCallback attachItemCallback =
             getBrowser().new DRBDMenuItemCallback(getBrowser().getDCHost())
                 .addAction(new CallbackAction() {
                         @Override
                         public void run(final Host host) {
                for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                    if (bdi.getBlockDevice().isDrbd()
                        && (application.isAdvancedMode() || !bdi.getDrbdVolumeInfo().isUsedByCRM())
                        && !bdi.getBlockDevice().isSyncing()
                        && bdi.isDiskless(Application.RunMode.LIVE)) {
                        bdi.attach(Application.RunMode.TEST);
                    }
                }
            }});
        multiSelectionInfo.addMouseOverListener(attachMenu, attachItemCallback);
        items.add(attachMenu);

        /* connect */
        final MyMenuItem connectMenu =
            menuFactory.createMenuItem(Tools.getString("MultiSelectionInfo.Connect"),
                           null,
                           Tools.getString("MultiSelectionInfo.Connect"),
                           new AccessMode(AccessMode.OP, AccessMode.ADVANCED),
                           new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .visiblePredicate(new VisiblePredicate() {
                        @Override
                        public boolean check() {
                    boolean oneDisconnected = false;
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (!bdi.getBlockDevice().isDrbd()) {
                            continue;
                        }
                        if (!bdi.isConnectedOrWF(Application.RunMode.LIVE)) {
                            oneDisconnected = true;
                        }
                    }
                    return oneDisconnected;
                }})
                    .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                    boolean connectable = false;
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (!bdi.getBlockDevice().isDrbd()) {
                            continue;
                        }
                        if (!application.isAdvancedMode() && bdi.getDrbdVolumeInfo().isUsedByCRM()) {
                            continue;
                        }
                        if (bdi.isConnectedOrWF(Application.RunMode.LIVE)) {
                            continue;
                        }
                        connectable = true;
                    }
                    if (connectable) {
                        return null;
                    } else {
                        return "nothing to connect";
                    }
                }})
                .addAction(new MenuAction() {
                        @Override
                        public void run(final String text) {
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (bdi.getBlockDevice().isDrbd()
                            && (application.isAdvancedMode() || !bdi.getDrbdVolumeInfo().isUsedByCRM())
                            && !bdi.isConnectedOrWF(Application.RunMode.LIVE)) {
                            bdi.connect(Application.RunMode.LIVE);
                        }
                    }
                }});
        final ButtonCallback connectItemCallback =
              getBrowser().new DRBDMenuItemCallback(getBrowser().getDCHost())
                  .addAction(new CallbackAction() {
                          @Override
                          public void run(final Host host) {
                for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                    if (bdi.getBlockDevice().isDrbd()
                        && (application.isAdvancedMode() || !bdi.getDrbdVolumeInfo().isUsedByCRM())
                        && !bdi.isConnectedOrWF(Application.RunMode.LIVE)) {
                        bdi.connect(Application.RunMode.TEST);
                    }
                }
            }});
        multiSelectionInfo.addMouseOverListener(connectMenu, connectItemCallback);
        items.add(connectMenu);

        /* disconnect */
        final MyMenuItem disconnectMenu =
            menuFactory.createMenuItem(Tools.getString("MultiSelectionInfo.Disconnect"),
                           null,
                           Tools.getString("MultiSelectionInfo.Disconnect"),
                           new AccessMode(AccessMode.OP, AccessMode.ADVANCED),
                           new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .visiblePredicate(new VisiblePredicate() {
                        @Override
                        public boolean check() {
                    boolean oneConnected = false;
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (!bdi.getBlockDevice().isDrbd()) {
                            continue;
                        }
                        if (bdi.isConnectedOrWF(Application.RunMode.LIVE)) {
                            oneConnected = true;
                        }
                    }
                    return oneConnected;
                }})
                    .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                    boolean disconnectable = false;
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (!bdi.getBlockDevice().isDrbd()) {
                            continue;
                        }
                        if (!application.isAdvancedMode() && bdi.getDrbdVolumeInfo().isUsedByCRM()) {
                            continue;
                        }
                        if (bdi.getBlockDevice().isSyncing()
                            && ((bdi.getBlockDevice().isPrimary() && bdi.getBlockDevice().isSyncTarget())
                                || (bdi.getOtherBlockDevInfo().getBlockDevice().isPrimary()
                                    && bdi.getBlockDevice().isSyncSource()))) {
                            continue;
                        }
                        if (!bdi.isConnectedOrWF(Application.RunMode.LIVE)) {
                            continue;
                        }
                        disconnectable = true;
                    }
                    if (disconnectable) {
                        return null;
                    } else {
                        return "nothing to disconnect";
                    }
                }})
                .addAction(new MenuAction() {
                        @Override
                        public void run(final String text) {
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (bdi.getBlockDevice().isDrbd()
                            && bdi.isConnectedOrWF(Application.RunMode.LIVE)
                            && (application.isAdvancedMode() || !bdi.getDrbdVolumeInfo().isUsedByCRM())
                            && (!bdi.getBlockDevice().isSyncing()
                                || (bdi.getBlockDevice().isPrimary() && bdi.getBlockDevice().isSyncSource())
                                   || (bdi.getOtherBlockDevInfo().getBlockDevice().isPrimary()
                                       && bdi.getBlockDevice().isSyncTarget()))) {
                            bdi.disconnect(Application.RunMode.LIVE);
                        }
                    }
                }});
        final ButtonCallback disconnectItemCallback =
              getBrowser().new DRBDMenuItemCallback(getBrowser().getDCHost())
                  .addAction(new CallbackAction() {
                          @Override
                          public void run(final Host host) {
                for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                    if (bdi.getBlockDevice().isDrbd()
                        && bdi.isConnectedOrWF(Application.RunMode.LIVE)
                        && (application.isAdvancedMode() || !bdi.getDrbdVolumeInfo().isUsedByCRM())
                        && (!bdi.getBlockDevice().isSyncing()
                            || (bdi.getBlockDevice().isPrimary() && bdi.getBlockDevice().isSyncSource())
                               || (bdi.getOtherBlockDevInfo().getBlockDevice().isPrimary()
                                   && bdi.getBlockDevice().isSyncTarget()))) {
                        bdi.disconnect(Application.RunMode.TEST);
                    }
                }
            }});
        multiSelectionInfo.addMouseOverListener(disconnectMenu, disconnectItemCallback);
        items.add(disconnectMenu);

        /* set primary */
        final UpdatableItem setPrimaryItem =
            menuFactory.createMenuItem(Tools.getString("MultiSelectionInfo.SetPrimary"),
                           null,
                           Tools.getString("MultiSelectionInfo.SetPrimary"),
                           new AccessMode(AccessMode.OP, AccessMode.ADVANCED),
                           new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .visiblePredicate(new VisiblePredicate() {
                        @Override
                        public boolean check() {
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (bdi.getBlockDevice().isDrbd()) {
                            return true;
                        }
                    }
                    return false;
                }})
                    .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                    boolean oneSecondary = false;
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (!bdi.getBlockDevice().isDrbd()) {
                            continue;
                        }
                        if (!application.isAdvancedMode() && bdi.getDrbdVolumeInfo().isUsedByCRM()) {
                            continue;
                        }
                        final BlockDevInfo oBdi = bdi.getOtherBlockDevInfo();
                        if (bdi.getBlockDevice().isSecondary()
                            && ((!oBdi.getBlockDevice().isPrimary() && !selectedBlockDevInfos.contains(oBdi))
                                || bdi.allowTwoPrimaries())) {
                            oneSecondary = true;
                        }
                    }
                    if (!oneSecondary) {
                        return "nothing to promote";
                    }
                    return null;
                }})
                .addAction(new MenuAction() {
                        @Override
                        public void run(final String text) {
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (bdi.getBlockDevice().isDrbd()
                            && !bdi.getBlockDevice().isPrimary()
                            && (application.isAdvancedMode() || !bdi.getDrbdVolumeInfo().isUsedByCRM())) {
                            final BlockDevInfo oBdi = bdi.getOtherBlockDevInfo();
                            if (oBdi != null
                                && oBdi.getBlockDevice().isPrimary()
                                && !selectedBlockDevInfos.contains(oBdi)
                                && !bdi.allowTwoPrimaries()) {
                                continue;
                            }
                            bdi.setPrimary(Application.RunMode.LIVE);
                        }
                    }
                }});
        items.add(setPrimaryItem);

        /* set secondary */
        final UpdatableItem setSecondaryItem =
            menuFactory.createMenuItem(
                        Tools.getString("MultiSelectionInfo.SetSecondary"),
                        null,
                        Tools.getString("MultiSelectionInfo.SetSecondary"),
                        new AccessMode(AccessMode.OP, AccessMode.ADVANCED),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .visiblePredicate(new VisiblePredicate() {
                        @Override
                        public boolean check() {
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (bdi.getBlockDevice().isDrbd()) {
                            return true;
                        }
                    }
                    return false;
                }})
                    .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                    boolean onePrimary = false;
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (!bdi.getBlockDevice().isDrbd()) {
                            continue;
                        }
                        if (!application.isAdvancedMode() && bdi.getDrbdVolumeInfo().isUsedByCRM()) {
                            continue;
                        }
                        if (bdi.getBlockDevice().isPrimary()) {
                            onePrimary = true;
                        }
                    }
                    if (!onePrimary) {
                        return "nothing to demote";
                    }
                    return null;
                }})
                .addAction(new MenuAction() {
                        @Override
                        public void run(final String text) {
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (bdi.getBlockDevice().isDrbd()
                            && bdi.getBlockDevice().isPrimary()
                            && (application.isAdvancedMode() || !bdi.getDrbdVolumeInfo().isUsedByCRM())) {
                            bdi.setSecondary(Application.RunMode.LIVE);
                        }
                    }
                }});
        items.add(setSecondaryItem);

        /* force primary */
        final UpdatableItem forcePrimaryItem =
            menuFactory.createMenuItem(
                        Tools.getString("MultiSelectionInfo.ForcePrimary"),
                        null,
                        Tools.getString("MultiSelectionInfo.ForcePrimary"),
                        new AccessMode(AccessMode.ADMIN, AccessMode.ADVANCED),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .visiblePredicate(new VisiblePredicate() {
                        @Override
                        public boolean check() {
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (bdi.getBlockDevice().isDrbd()) {
                            return true;
                        }
                    }
                    return false;
                }})
                    .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                    boolean oneSecondary = false;
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (!bdi.getBlockDevice().isDrbd()) {
                            continue;
                        }
                        if (!application.isAdvancedMode() && bdi.getDrbdVolumeInfo().isUsedByCRM()) {
                            continue;
                        }
                        final BlockDevInfo oBdi = bdi.getOtherBlockDevInfo();
                        if (bdi.getBlockDevice().isSecondary()
                            && ((!oBdi.getBlockDevice().isPrimary() && !selectedBlockDevInfos.contains(oBdi))
                                || bdi.allowTwoPrimaries())) {
                            oneSecondary = true;
                        }
                    }
                    if (!oneSecondary) {
                        return "nothing to promote";
                    }
                    return null;
                }})
                .addAction(new MenuAction() {
                        @Override
                        public void run(final String text) {
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (bdi.getBlockDevice().isDrbd()
                            && !bdi.getBlockDevice().isPrimary()
                            && (application.isAdvancedMode() || !bdi.getDrbdVolumeInfo().isUsedByCRM())) {
                            final BlockDevInfo oBdi = bdi.getOtherBlockDevInfo();
                            if (oBdi != null
                                && oBdi.getBlockDevice().isPrimary()
                                && !selectedBlockDevInfos.contains(oBdi)
                                && !bdi.allowTwoPrimaries()) {
                                continue;
                            }
                            bdi.forcePrimary(Application.RunMode.LIVE);
                        }
                    }
                }});
        items.add(forcePrimaryItem);

        /* invalidate */
        final UpdatableItem invalidateItem =
            menuFactory.createMenuItem(Tools.getString("MultiSelectionInfo.Invalidate"),
                           null,
                           Tools.getString("MultiSelectionInfo.Invalidate"),
                           new AccessMode(AccessMode.ADMIN, AccessMode.ADVANCED),
                           new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .visiblePredicate(new VisiblePredicate() {
                        @Override
                        public boolean check() {
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (bdi.getBlockDevice().isDrbd()) {
                            return true;
                        }
                    }
                    return false;
                }})
                    .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                    boolean canInvalidate = false;
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (!bdi.getBlockDevice().isDrbd()) {
                            continue;
                        }
                        if (!application.isAdvancedMode() && bdi.getDrbdVolumeInfo().isUsedByCRM()) {
                            continue;
                        }
                        if (bdi.getBlockDevice().isSyncing()) {
                            continue;
                        }
                        if (bdi.getDrbdVolumeInfo().isVerifying()) {
                            continue;
                        }
                        if (selectedBlockDevInfos.contains(bdi.getOtherBlockDevInfo())) {
                            continue;
                        }
                        canInvalidate = true;
                    }
                    if (canInvalidate) {
                        return null;
                    } else {
                        return "nothing to invalidate";
                    }
                }})
                .addAction(new MenuAction() {
                        @Override
                        public void run(final String text) {
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (bdi.getBlockDevice().isDrbd()
                            && !bdi.getBlockDevice().isSyncing()
                            && !bdi.getDrbdVolumeInfo().isVerifying()
                            && !selectedBlockDevInfos.contains(bdi.getOtherBlockDevInfo())
                            && (application.isAdvancedMode() || !bdi.getDrbdVolumeInfo().isUsedByCRM())) {
                            bdi.invalidateBD(Application.RunMode.LIVE);
                        }
                    }
                }});
        items.add(invalidateItem);

        /* resume */
        final UpdatableItem resumeSyncItem =
            menuFactory.createMenuItem(Tools.getString("MultiSelectionInfo.ResumeSync"),
                           null,
                           Tools.getString("MultiSelectionInfo.ResumeSync"),

                           new AccessMode(AccessMode.OP, AccessMode.ADVANCED),
                           new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .visiblePredicate(new VisiblePredicate() {
                        @Override
                        public boolean check() {
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (bdi.getBlockDevice().isDrbd()) {
                            return true;
                        }
                    }
                    return false;
                }})
                    .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                    boolean resumable = false;
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (!bdi.getBlockDevice().isDrbd()) {
                            continue;
                        }
                        if (!bdi.getBlockDevice().isSyncing()) {
                            continue;
                        }
                        if (bdi.getBlockDevice().isSyncTarget() || bdi.getBlockDevice().isSyncSource()) {
                            continue;
                        }
                        resumable = true;
                    }
                    if (!resumable) {
                        return "nothing to resume";
                    }
                    return null;
                }})
                .addAction(new MenuAction() {
                        @Override
                        public void run(final String text) {
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (bdi.getBlockDevice().isDrbd()
                            && bdi.getBlockDevice().isSyncing()
                            && !bdi.getBlockDevice().isSyncTarget()
                            && !bdi.getBlockDevice().isSyncSource()) {
                            bdi.resumeSync(Application.RunMode.LIVE);
                        }
                    }
                }});
        items.add(resumeSyncItem);

        /* pause sync */
        final UpdatableItem pauseSyncItem =
            menuFactory.createMenuItem(Tools.getString("MultiSelectionInfo.PauseSync"),
                           null,
                           Tools.getString("MultiSelectionInfo.PauseSync"),
                           new AccessMode(AccessMode.OP, AccessMode.ADVANCED),
                           new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .visiblePredicate(new VisiblePredicate() {
                        @Override
                        public boolean check() {
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (bdi.getBlockDevice().isDrbd()) {
                            return true;
                        }
                    }
                    return false;
                }})
                    .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                    boolean pausable = false;
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (!bdi.getBlockDevice().isDrbd()) {
                            continue;
                        }
                        if (!bdi.getBlockDevice().isSyncTarget() && !bdi.getBlockDevice().isSyncSource()) {
                            continue;
                        }
                        pausable = true;
                    }
                    if (!pausable) {
                        return "nothing to pause";
                    }
                    return null;
                }})
                .addAction(new MenuAction() {
                        @Override
                        public void run(final String text) {
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (bdi.getBlockDevice().isDrbd()
                            && (bdi.getBlockDevice().isSyncTarget() || bdi.getBlockDevice().isSyncSource())) {
                            bdi.pauseSync(Application.RunMode.LIVE);
                        }
                    }
                }});
        items.add(pauseSyncItem);

        /* resize */
        final UpdatableItem resizeItem =
            menuFactory.createMenuItem(Tools.getString("MultiSelectionInfo.Resize"),
                           null,
                           Tools.getString("MultiSelectionInfo.Resize"),
                           new AccessMode(AccessMode.ADMIN, AccessMode.ADVANCED),
                           new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .visiblePredicate(new VisiblePredicate() {
                        @Override
                        public boolean check() {
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (bdi.getBlockDevice().isDrbd()) {
                            return true;
                        }
                    }
                    return false;
                }})
                    .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                    boolean resizable = false;
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (!bdi.getBlockDevice().isDrbd()) {
                            continue;
                        }
                        if (bdi.getBlockDevice().isSyncing()) {
                            continue;
                        }
                        if (selectedBlockDevInfos.contains(bdi.getOtherBlockDevInfo())) {
                            continue;
                        }
                        resizable = true;
                    }
                    if (resizable) {
                        return null;
                    } else {
                        return "nothing to resize";
                    }
                }})
                .addAction(new MenuAction() {
                        @Override
                        public void run(final String text) {
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (bdi.getBlockDevice().isDrbd()
                            && !selectedBlockDevInfos.contains(bdi.getOtherBlockDevInfo())
                            && !bdi.getBlockDevice().isSyncing()) {
                            bdi.resizeDrbd(Application.RunMode.LIVE);
                        }
                    }
                }});
        items.add(resizeItem);

        /* discard my data */
        final UpdatableItem discardDataItem =
            menuFactory.createMenuItem(
                         Tools.getString("MultiSelectionInfo.DiscardData"),
                         null,
                         Tools.getString("MultiSelectionInfo.DiscardData"),
                         new AccessMode(AccessMode.ADMIN, AccessMode.ADVANCED),
                         new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .visiblePredicate(new VisiblePredicate() {
                        @Override
                        public boolean check() {
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (bdi.getBlockDevice().isDrbd()) {
                            return true;
                        }
                    }
                    return false;
                }})
                    .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                    boolean discardable = false;
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (!bdi.getBlockDevice().isDrbd()) {
                            continue;
                        }
                        if (!application.isAdvancedMode() && bdi.getDrbdVolumeInfo().isUsedByCRM()) {
                            continue;
                        }
                        if (bdi.getBlockDevice().isSyncing()) {
                            continue;
                        }
                        if (bdi.getBlockDevice().isPrimary()) {
                            continue;
                        }
                        if (selectedBlockDevInfos.contains(bdi.getOtherBlockDevInfo())) {
                            continue;
                        }
                        discardable = true;
                    }
                    if (discardable) {
                        return null;
                    } else {
                        return "nothing to discard";
                    }
                }})
                .addAction(new MenuAction() {
                        @Override
                        public void run(final String text) {
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (bdi.getBlockDevice().isDrbd()
                            && !selectedBlockDevInfos.contains(bdi.getOtherBlockDevInfo())
                            && (application.isAdvancedMode() || !bdi.getDrbdVolumeInfo().isUsedByCRM())
                            && !bdi.getBlockDevice().isSyncing()
                            && !bdi.getBlockDevice().isPrimary()) {
                            bdi.discardData(Application.RunMode.LIVE);
                        }
                    }
                }});
        items.add(discardDataItem);

        /* proxy down */
        final UpdatableItem proxyDownItem =
            menuFactory.createMenuItem(Tools.getString("MultiSelectionInfo.ProxyDown"),
                           null,
                           Tools.getString("MultiSelectionInfo.ProxyDown"),
                           new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                           new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .visiblePredicate(new VisiblePredicate() {
                        @Override
                        public boolean check() {
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (!bdi.getBlockDevice().isDrbd()) {
                            continue;
                        }
                        final ResourceInfo dri = bdi.getDrbdVolumeInfo().getDrbdResourceInfo();
                        final Host pHost = dri.getProxyHost(bdi.getHost(), !ResourceInfo.WIZARD);
                        if (pHost == null) {
                            return false;
                        }
                        if (pHost.isDrbdProxyUp(dri.getName())) {
                            return true;
                        }
                    }
                    return false;
                }})
                    .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (!bdi.getBlockDevice().isDrbd()) {
                            continue;
                        }
                        final ResourceInfo dri = bdi.getDrbdVolumeInfo().getDrbdResourceInfo();
                        final Host pHost = dri.getProxyHost(bdi.getHost(), !ResourceInfo.WIZARD);
                        if (pHost == null) {
                            return "";
                        }
                        if (!pHost.isConnected()) {
                            return Host.PROXY_NOT_CONNECTED_MENU_TOOLTIP_TEXT;
                        }
                    }
                    return null;
                }})
                .addAction(new MenuAction() {
                        @Override
                        public void run(final String text) {
                    final Collection<Host> hosts = new HashSet<Host>();
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (!bdi.getBlockDevice().isDrbd()) {
                            continue;
                        }
                        final ResourceInfo dri = bdi.getDrbdVolumeInfo().getDrbdResourceInfo();
                        final Host pHost = dri.getProxyHost(bdi.getHost(), !ResourceInfo.WIZARD);
                        if (pHost.isDrbdProxyUp(dri.getName())) {
                            DRBD.proxyDown(pHost,
                                           dri.getName(),
                                           bdi.getDrbdVolumeInfo().getName(),
                                           Application.RunMode.LIVE);
                            hosts.add(pHost);
                        }
                    }
                    for (final Host h : hosts) {
                        getBrowser().updateProxyHWInfo(h);
                    }
                }});
        items.add(proxyDownItem);

        /* proxy up */
        final UpdatableItem proxyUpItem =
            menuFactory.createMenuItem(Tools.getString("MultiSelectionInfo.ProxyUp"),
                           null,
                           Tools.getString("MultiSelectionInfo.ProxyUp"),
                           new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                           new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .visiblePredicate(new VisiblePredicate() {
                        @Override
                        public boolean check() {
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (!bdi.getBlockDevice().isDrbd()) {
                            continue;
View Full Code Here

Examples of lcmc.common.domain.VisiblePredicate

                        HostInfo.HOST_STANDBY_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,

                        new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                for (final HostInfo hi : selectedHostInfos) {
                                    if (!hi.isStandby(Application.RunMode.LIVE)) {
                                        return true;
                                    }
                                }
                                return false;
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (getBrowser().crmStatusFailed()) {
                                    return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                                }
                                final Host dcHost = getBrowser().getDCHost();
                                if (!dcHost.isCrmStatusOk()) {
                                    return HostInfo.NO_PCMK_STATUS_STRING + " (" + dcHost.getName() + ')';
                                }
                                return null;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                final Host dcHost = getBrowser().getDCHost();
                                for (final HostInfo hi : selectedHostInfos) {
                                    if (!hi.isStandby(Application.RunMode.LIVE)) {
                                        CRM.standByOn(dcHost, hi.getHost(), Application.RunMode.LIVE);
                                    }
                                }
                            }
                        });
        final ButtonCallback standbyItemCallback = getBrowser().new ClMenuItemCallback(getBrowser().getDCHost())
                .addAction(new CallbackAction() {
                    @Override
                    public void run(final Host dcHost) {
                        for (final HostInfo hi : selectedHostInfos) {
                            if (!hi.isStandby(Application.RunMode.LIVE)) {
                                CRM.standByOn(dcHost, hi.getHost(), Application.RunMode.TEST);
                            }
                        }
                    }
                });
        pcmkMultiSelectionInfo.addMouseOverListener(standbyItem, standbyItemCallback);
        items.add(standbyItem);

        /* cluster manager standby off */
        final MyMenuItem onlineItem =
                menuFactory.createMenuItem(Tools.getString("PcmkMultiSelectionInfo.StandByOff"),
                        HostInfo.HOST_STANDBY_OFF_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,

                        new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                for (final HostInfo hi : selectedHostInfos) {
                                    if (hi.isStandby(Application.RunMode.LIVE)) {
                                        return true;
                                    }
                                }
                                return false;
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (getBrowser().crmStatusFailed()) {
                                    return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                                }
                                final Host dcHost = getBrowser().getDCHost();
                                if (!dcHost.isCrmStatusOk()) {
                                    return HostInfo.NO_PCMK_STATUS_STRING + " (" + dcHost.getName() + ')';
                                }
                                return null;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                final Host dcHost = getBrowser().getDCHost();
                                for (final HostInfo hi : selectedHostInfos) {
                                    if (hi.isStandby(Application.RunMode.LIVE)) {
                                        CRM.standByOff(dcHost, hi.getHost(), Application.RunMode.LIVE);
                                    }
                                }
                            }
                        });
        final ButtonCallback onlineItemCallback = getBrowser().new ClMenuItemCallback(getBrowser().getDCHost())
                .addAction(new CallbackAction() {
                    @Override
                    public void run(final Host dcHost) {
                        for (final HostInfo hi : selectedHostInfos) {
                            if (hi.isStandby(Application.RunMode.LIVE)) {
                                CRM.standByOff(dcHost, hi.getHost(), Application.RunMode.TEST);
                            }
                        }
                    }
                });
        pcmkMultiSelectionInfo.addMouseOverListener(onlineItem, onlineItemCallback);
        items.add(onlineItem);

        /* Stop corosync/openais. */
        final MyMenuItem stopCorosyncItem =
                menuFactory.createMenuItem(Tools.getString("PcmkMultiSelectionInfo.StopCorosync"),
                        HostInfo.HOST_STOP_COMM_LAYER_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,

                        Tools.getString("PcmkMultiSelectionInfo.StopOpenais"),
                        HostInfo.HOST_STOP_COMM_LAYER_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,

                        new AccessMode(AccessMode.ADMIN, AccessMode.ADVANCED),
                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL))
                        .predicate(new Predicate() {
                            @Override
                            public boolean check() {
                    /* when both are running it's openais. */
                                final HostInfo hi = selectedHostInfos.get(0);
                                return hi.getHost().isCorosyncRunning() && !hi.getHost().isOpenaisRunning();
                            }
                        })
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                for (final HostInfo hi : selectedHostInfos) {
                                    if (hi.getHost().isCorosyncRunning() || hi.getHost().isOpenaisRunning()) {
                                        return true;
                                    }
                                }
                                return false;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                if (application.confirmDialog(Tools.getString("HostInfo.confirmCorosyncStop.Title"),
                                        Tools.getString("HostInfo.confirmCorosyncStop.Desc"),
                                        Tools.getString("HostInfo.confirmCorosyncStop.Yes"),
                                        Tools.getString("HostInfo.confirmCorosyncStop.No"))) {
                                    for (final HostInfo hi : selectedHostInfos) {
                                        hi.getHost().setCommLayerStopping(true);
                                    }
                                    for (final HostInfo hi : selectedHostInfos) {
                                        final Host host = hi.getHost();
                                        if (!host.isPcmkStartedByCorosync()
                                                && host.hasPacemakerInitScript()
                                                && host.isPacemakerRunning()) {
                                            if (host.isCorosyncRunning() && !host.isOpenaisRunning()) {
                                                Corosync.stopCorosyncWithPcmk(host);
                                            } else {
                                                Openais.stopOpenaisWithPcmk(host);
                                            }
                                        } else {
                                            if (host.isCorosyncRunning() && !host.isOpenaisRunning()) {
                                                Corosync.stopCorosync(host);
                                            } else {
                                                Openais.stopOpenais(host);
                                            }
                                        }
                                    }

                                    for (final HostInfo hi : selectedHostInfos) {
                                        getBrowser().updateHWInfo(hi.getHost(), !Host.UPDATE_LVM);
                                    }
                                }
                            }
                        });
        final ButtonCallback stopCorosyncItemCallback =
                getBrowser().new ClMenuItemCallback(getBrowser().getDCHost())
                        .addAction(new CallbackAction() {
                            @Override
                            public void run(final Host dcHost) {
                                for (final HostInfo hi : selectedHostInfos) {
                                    if (!hi.isStandby(Application.RunMode.LIVE)) {
                                        CRM.standByOn(dcHost, hi.getHost(), Application.RunMode.TEST);
                                    }
                                }
                            }
                        });
        pcmkMultiSelectionInfo.addMouseOverListener(stopCorosyncItem, stopCorosyncItemCallback);
        items.add(stopCorosyncItem);
        /* Stop heartbeat. */
        final MyMenuItem stopHeartbeatItem =
                menuFactory.createMenuItem(Tools.getString("PcmkMultiSelectionInfo.StopHeartbeat"),
                        HostInfo.HOST_STOP_COMM_LAYER_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,

                        new AccessMode(AccessMode.ADMIN, AccessMode.ADVANCED),
                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL))
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                for (final HostInfo hi : selectedHostInfos) {
                                    if (hi.getHost().isHeartbeatRunning()) {
                                        return true;
                                    }
                                }
                                return false;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                if (application.confirmDialog(
                                        Tools.getString("HostInfo.confirmHeartbeatStop.Title"),
                                        Tools.getString("HostInfo.confirmHeartbeatStop.Desc"),
                                        Tools.getString("HostInfo.confirmHeartbeatStop.Yes"),
                                        Tools.getString("HostInfo.confirmHeartbeatStop.No"))) {
                                    for (final HostInfo hi : selectedHostInfos) {
                                        hi.getHost().setCommLayerStopping(true);
                                    }
                                    for (final HostInfo hi : selectedHostInfos) {
                                        final Host host = hi.getHost();
                                        Heartbeat.stopHeartbeat(host);
                                    }
                                    for (final HostInfo hi : selectedHostInfos) {
                                        getBrowser().updateHWInfo(hi.getHost(), !Host.UPDATE_LVM);
                                    }
                                }
                            }
                        });
        final ButtonCallback stopHeartbeatItemCallback =
                getBrowser().new ClMenuItemCallback(getBrowser().getDCHost())
                        .addAction(new CallbackAction() {
                            @Override
                            public void run(final Host dcHost) {
                                for (final HostInfo hi : selectedHostInfos) {
                                    if (!hi.isStandby(Application.RunMode.LIVE)) {
                                        CRM.standByOn(dcHost, hi.getHost(), Application.RunMode.TEST);
                                    }
                                }
                            }
                        });
        pcmkMultiSelectionInfo.addMouseOverListener(stopHeartbeatItem, stopHeartbeatItemCallback);
        items.add(stopHeartbeatItem);
        /* Start corosync. */
        final MyMenuItem startCorosyncItem =
                menuFactory.createMenuItem(
                        Tools.getString("PcmkMultiSelectionInfo.StartCorosync"),
                        HostInfo.HOST_START_COMM_LAYER_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,

                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL))
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                for (final HostInfo hi : selectedHostInfos) {
                                    final Host h = hi.getHost();
                                    if (h.isCorosyncInstalled()
                                            && h.hasCorosyncInitScript()
                                            && h.corosyncOrOpenaisConfigExists()
                                            && !h.isCorosyncRunning()
                                            && !h.isOpenaisRunning()
                                            && !h.isHeartbeatRunning()
                                            && !h.isHeartbeatInRc()) {
                                        return true;
                                    }
                                }
                                return false;
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                for (final HostInfo hi : selectedHostInfos) {
                                    final Host h = hi.getHost();
                                    if (h.isOpenaisInRc() && !h.isCorosyncInRc()) {
                                        return "Openais is in rc.d";
                                    }
                                }
                                return null;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                for (final HostInfo hi : selectedHostInfos) {
                                    hi.getHost().setCommLayerStarting(true);
                                }
                                for (final HostInfo hi : selectedHostInfos) {
                                    final Host h = hi.getHost();
                                    if (h.isPacemakerInRc()) {
                                        Corosync.startCorosyncWithPcmk(h);
                                    } else {
                                        Corosync.startCorosync(h);
                                    }
                                }
                                for (final HostInfo hi : selectedHostInfos) {
                                    getBrowser().updateHWInfo(hi.getHost(), !Host.UPDATE_LVM);
                                }
                            }
                        });
        final ButtonCallback startCorosyncItemCallback =
                getBrowser().new ClMenuItemCallback(getBrowser().getDCHost())
                        .addAction(new CallbackAction() {
                            @Override
                            public void run(final Host dcHost) {
                                //TODO
                            }
                        });
        pcmkMultiSelectionInfo.addMouseOverListener(startCorosyncItem, startCorosyncItemCallback);
        items.add(startCorosyncItem);
        /* Start openais. */
        final MyMenuItem startOpenaisItem =
                menuFactory.createMenuItem(Tools.getString("PcmkMultiSelectionInfo.StartOpenais"),
                        HostInfo.HOST_START_COMM_LAYER_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,

                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL))
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                for (final HostInfo hi : selectedHostInfos) {
                                    final Host h = hi.getHost();
                                    if (h.hasOpenaisInitScript()
                                            && h.corosyncOrOpenaisConfigExists()
                                            && !h.isCorosyncRunning()
                                            && !h.isOpenaisRunning()
                                            && !h.isHeartbeatRunning()
                                            && !h.isHeartbeatInRc()) {
                                        return true;
                                    }
                                }
                                return false;
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                for (final HostInfo hi : selectedHostInfos) {
                                    final Host h = hi.getHost();
                                    if (h.isCorosyncInRc() && !h.isOpenaisInRc()) {
                                        return "Corosync is in rc.d";
                                    }
                                }
                                return null;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                for (final HostInfo hi : selectedHostInfos) {
                                    hi.getHost().setCommLayerStarting(true);
                                    Openais.startOpenais(hi.getHost());
                                }
                                for (final HostInfo hi : selectedHostInfos) {
                                    getBrowser().updateHWInfo(hi.getHost(), !Host.UPDATE_LVM);
                                }
                            }
                        });
        final ButtonCallback startOpenaisItemCallback =
                getBrowser().new ClMenuItemCallback(getBrowser().getDCHost())
                        .addAction(new CallbackAction() {
                            @Override
                            public void run(final Host dcHost) {
                                //TODO
                            }
                        });
        pcmkMultiSelectionInfo.addMouseOverListener(startOpenaisItem, startOpenaisItemCallback);
        items.add(startOpenaisItem);
        /* Start heartbeat. */
        final MyMenuItem startHeartbeatItem =
                menuFactory.createMenuItem(
                        Tools.getString("PcmkMultiSelectionInfo.StartHeartbeat"),
                        HostInfo.HOST_START_COMM_LAYER_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,

                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL))
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                for (final HostInfo hi : selectedHostInfos) {
                                    final Host h = hi.getHost();
                                    if (h.hasHeartbeatInitScript()
                                            && h.heartbeatConfigExists()
                                            && !h.isCorosyncRunning()
                                            && !h.isOpenaisRunning()
                                            && !h.isHeartbeatRunning()) {
                                        return true;
                                    }
                                }
                                return false;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                for (final HostInfo hi : selectedHostInfos) {
                                    hi.getHost().setCommLayerStarting(true);
                                }
                                for (final HostInfo hi : selectedHostInfos) {
                                    Heartbeat.startHeartbeat(hi.getHost());
                                }
                                for (final HostInfo hi : selectedHostInfos) {
                                    getBrowser().updateHWInfo(hi.getHost(), !Host.UPDATE_LVM);
                                }
                            }
                        });
        final ButtonCallback startHeartbeatItemCallback =
                getBrowser().new ClMenuItemCallback(getBrowser().getDCHost())
                        .addAction(new CallbackAction() {
                            @Override
                            public void run(final Host dcHost) {
                                //TODO
                            }
                        });
        pcmkMultiSelectionInfo.addMouseOverListener(startHeartbeatItem, startHeartbeatItemCallback);
        items.add(startHeartbeatItem);

        /* Start pacemaker. */
        final MyMenuItem startPcmkItem =
                menuFactory.createMenuItem(
                        Tools.getString("PcmkMultiSelectionInfo.StartPacemaker"),
                        HostInfo.HOST_START_COMM_LAYER_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,

                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL))
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                for (final HostInfo hi : selectedHostInfos) {
                                    final Host h = hi.getHost();
                                    if (!h.isPcmkStartedByCorosync()
View Full Code Here

Examples of lcmc.common.domain.VisiblePredicate

                        Tools.getString("PcmkMultiSelectionInfo.ManageResource"),
                        ServiceInfo.MANAGE_BY_CRM_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                for (final ServiceInfo si : selectedServiceInfos) {
                                    if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                        continue;
                                    }
                                    if (!si.isManaged(Application.RunMode.LIVE)) {
                                        return true;
                                    }
                                }
                                return false;
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (getBrowser().crmStatusFailed()) {
                                    return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                                }
                                for (final ServiceInfo si : selectedServiceInfos) {
                                    if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                        continue;
                                    }
                                    final String avail = si.getService().isAvailableWithText();
                                    if (avail != null) {
                                        return avail;
                                    }
                                }
                                return null;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                pcmkMultiSelectionInfo.hidePopup();
                                final Host dcHost = getBrowser().getDCHost();
                                for (final ServiceInfo si : selectedServiceInfos) {
                                    if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                        continue;
                                    }
                                    si.setManaged(true, dcHost, Application.RunMode.LIVE);
                                }
                            }
                        });
        final ButtonCallback manageItemCallback = getBrowser().new ClMenuItemCallback(null)
                .addAction(new CallbackAction() {
                    @Override
                    public void run(final Host dcHost) {
                        for (final ServiceInfo si : selectedServiceInfos) {
                            if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                continue;
                            }
                            si.setManaged(true, dcHost, Application.RunMode.TEST);
                        }
                    }
                });
        pcmkMultiSelectionInfo.addMouseOverListener(manageMenuItem, manageItemCallback);
        items.add((UpdatableItem) manageMenuItem);
        /* unmanage resource */
        final ComponentWithTest unmanageMenuItem =
                menuFactory.createMenuItem(
                        Tools.getString("PcmkMultiSelectionInfo.UnmanageResource"),
                        ServiceInfo.UNMANAGE_BY_CRM_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,

                        new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                for (final ServiceInfo si : selectedServiceInfos) {
                                    if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                        continue;
                                    }
                                    if (si.isManaged(Application.RunMode.LIVE)) {
                                        return true;
                                    }
                                }
                                return false;
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (getBrowser().crmStatusFailed()) {
                                    return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                                }
                                for (final ServiceInfo si : selectedServiceInfos) {
                                    if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                        continue;
                                    }
                                    final String avail = si.getService().isAvailableWithText();
                                    if (avail != null) {
                                        return avail;
                                    }
                                }
                                return null;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                pcmkMultiSelectionInfo.hidePopup();
                                final Host dcHost = getBrowser().getDCHost();
                                for (final ServiceInfo si : selectedServiceInfos) {
                                    if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                        continue;
                                    }
                                    si.setManaged(false, dcHost, Application.RunMode.LIVE);
                                }
                            }
                        });
        final ButtonCallback unmanageItemCallback = getBrowser().new ClMenuItemCallback(null)
                .addAction(new CallbackAction() {
                    @Override
                    public void run(final Host dcHost) {
                        for (final ServiceInfo si : selectedServiceInfos) {
                            if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                continue;
                            }
                            si.setManaged(false, dcHost, Application.RunMode.TEST);
                        }
                    }
                });
        pcmkMultiSelectionInfo.addMouseOverListener(unmanageMenuItem, unmanageItemCallback);
        items.add((UpdatableItem) unmanageMenuItem);
        /* migrate resource */
        for (final Host host : getBrowser().getClusterHosts()) {
            final String hostName = host.getName();
            final MyMenuItem migrateFromMenuItem =
                    menuFactory.createMenuItem(Tools.getString("PcmkMultiSelectionInfo.MigrateFromResource")
                                    + ' ' + hostName,
                            ServiceInfo.MIGRATE_ICON,
                            ClusterBrowser.STARTING_PTEST_TOOLTIP,

                            Tools.getString("PcmkMultiSelectionInfo.MigrateFromResource")
                                    + ' ' + hostName + " (offline)",
                            ServiceInfo.MIGRATE_ICON,
                            ClusterBrowser.STARTING_PTEST_TOOLTIP,
                            new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                            new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                            .predicate(new Predicate() {
                                @Override
                                public boolean check() {
                                    return host.isCrmStatusOk();
                                }
                            })
                            .visiblePredicate(new VisiblePredicate() {
                                @Override
                                public boolean check() {
                                    if (!host.isCrmStatusOk()) {
                                        return false;
                                    }
                                    for (final ServiceInfo si : selectedServiceInfos) {
                                        if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                            continue;
                                        }
                                        if (getBrowser().crmStatusFailed() || !host.isCrmStatusOk()) {
                                            return false;
                                        }
                                        final List<String> runningOnNodes = si.getRunningOnNodes(Application.RunMode.LIVE);
                                        if (runningOnNodes == null || runningOnNodes.size() < 1) {
                                            return false;
                                        }
                                        boolean runningOnNode = false;
                                        for (final String ron : runningOnNodes) {
                                            if (hostName.toLowerCase(Locale.US).equals(ron.toLowerCase(Locale.US))) {
                                                runningOnNode = true;
                                                break;
                                            }
                                        }
                                        if (si.getService().isAvailable() && runningOnNode) {
                                        } else {
                                            return false;
                                        }
                                    }
                                    return true;
                                }
                            })
                            .addAction(new MenuAction() {
                                @Override
                                public void run(final String text) {
                                    pcmkMultiSelectionInfo.hidePopup();
                                    final Host dcHost = getBrowser().getDCHost();
                                    for (final ServiceInfo si : selectedServiceInfos) {
                                        if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                            continue;
                                        }
                                        si.migrateFromResource(dcHost, hostName, Application.RunMode.LIVE);
                                    }
                                }
                            });
            final ButtonCallback migrateItemCallback = getBrowser().new ClMenuItemCallback(null)
                    .addAction(new CallbackAction() {
                        @Override
                        public void run(final Host dcHost) {
                            for (final ServiceInfo si : selectedServiceInfos) {
                                if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                    continue;
                                }
                                si.migrateFromResource(dcHost, hostName, Application.RunMode.TEST);
                            }
                        }
                    });
            pcmkMultiSelectionInfo.addMouseOverListener(migrateFromMenuItem, migrateItemCallback);
            items.add(migrateFromMenuItem);
        }

        /* unmigrate resource */
        final ComponentWithTest unmigrateMenuItem =
                menuFactory.createMenuItem(
                        Tools.getString("PcmkMultiSelectionInfo.UnmigrateResource"),
                        ServiceInfo.UNMIGRATE_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                for (final ServiceInfo si : selectedServiceInfos) {
                                    if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                        continue;
View Full Code Here

Examples of lcmc.common.domain.VisiblePredicate

                        Tools.getString("HostDrbdInfo.Drbd.AllProxyUp"),
                        null,
                        getMenuToolTip("DRBD.proxyUp", DRBD.ALL_DRBD_RESOURCES),
                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                return getHost().isConnected() && getHost().isDrbdProxyRunning();
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                DRBD.proxyUp(getHost(), DRBD.ALL_DRBD_RESOURCES, null, runMode);
                                getClusterBrowser().updateProxyHWInfo(getHost());
                            }
                        });
        items.add(allProxyUpItem);

        /* all proxy connections down */
        final UpdatableItem allProxyDownItem = menuFactory.createMenuItem(
                        Tools.getString("HostDrbdInfo.Drbd.AllProxyDown"),
                        null,
                        getMenuToolTip("DRBD.proxyDown", DRBD.ALL_DRBD_RESOURCES),
                        new AccessMode(AccessMode.ADMIN, AccessMode.ADVANCED),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                return getHost().isConnected() && getHost().isDrbdProxyRunning();
                            }
                        })
View Full Code Here

Examples of lcmc.common.domain.VisiblePredicate

                menuFactory.createMenuItem(Tools.getString("ClusterBrowser.Hb.UpResource"),
                        ServiceInfo.GROUP_UP_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                return serviceInfo.getGroupInfo() != null;
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (serviceInfo.getResource().isNew()) {
                                    return ServiceInfo.IS_NEW_STRING;
                                }
                                final GroupInfo gi = serviceInfo.getGroupInfo();
                                if (gi == null) {
                                    return "no";
                                }
                                if (serviceInfo.getBrowser().crmStatusFailed()) {
                                    return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                                }
                                final DefaultMutableTreeNode giNode = gi.getNode();
                                if (giNode == null) {
                                    return "no";
                                }
                                final DefaultMutableTreeNode node = serviceInfo.getNode();
                                if (node == null) {
                                    return "no";
                                }
                                final int index = treeMenuController.getIndex(giNode, node);
                                if (index == 0) {
                                    return "already up";
                                }
                                return null;
                            }
                        })

                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                serviceInfo.hidePopup();
                                serviceInfo.upResource(serviceInfo.getBrowser().getDCHost(), runMode);
                            }
                        });
        final ButtonCallback upItemCallback =
                serviceInfo.getBrowser().new ClMenuItemCallback(null)
                        .addAction(new CallbackAction() {
                            @Override
                            public void run(final Host dcHost) {
                                serviceInfo.upResource(dcHost, Application.RunMode.TEST);
                            }
                        });
        serviceInfo.addMouseOverListener(upMenuItem, upItemCallback);
        items.add((UpdatableItem) upMenuItem);

        /* down group resource */
        final ComponentWithTest downMenuItem =
                menuFactory.createMenuItem(Tools.getString("ClusterBrowser.Hb.DownResource"),
                        ServiceInfo.GROUP_DOWN_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                return serviceInfo.getGroupInfo() != null;
                            }
                        })
View Full Code Here

Examples of lcmc.common.domain.VisiblePredicate

                                @Override
                                public boolean check() {
                                    return host.isCrmStatusOk();
                                }
                            })
                            .visiblePredicate(new VisiblePredicate() {
                                public boolean check() {
                                    if (!host.isCrmStatusOk()) {
                                        return false;
                                    }
                                    final List<String> runningOnNodes = serviceInfo.getRunningOnNodes(runMode);
                                    if (runningOnNodes == null || runningOnNodes.size() < 1) {
                                        return false;
                                    }
                                    boolean runningOnNode = false;
                                    for (final String ron : runningOnNodes) {
                                        if (hostName.toLowerCase(Locale.US).equals(ron.toLowerCase(Locale.US))) {
                                            runningOnNode = true;
                                            break;
                                        }
                                    }
                                    if (!serviceInfo.getBrowser().crmStatusFailed()
                                        && serviceInfo.getService().isAvailable()
                                        && runningOnNode
                                        && host.isCrmStatusOk()) {
                                        return true;
                                    } else {
                                        return false;
                                    }
                                }
                            })
                            .addAction(new MenuAction() {
                                @Override
                                public void run(final String text) {
                                    serviceInfo.hidePopup();
                                    serviceInfo.migrateFromResource(serviceInfo.getBrowser().getDCHost(),
                                                                    hostName,
                                                                    runMode);
                                }
                            });
            final ButtonCallback migrateItemCallback =
                    serviceInfo.getBrowser().new ClMenuItemCallback(null)
                            .addAction(new CallbackAction() {
                                @Override
                                public void run(final Host dcHost) {
                                    serviceInfo.migrateFromResource(dcHost, hostName, Application.RunMode.TEST);
                                }
                            });
            serviceInfo.addMouseOverListener(migrateFromMenuItem, migrateItemCallback);
            items.add(migrateFromMenuItem);
        }

        /* unmigrate resource */
        final ComponentWithTest unmigrateMenuItem =
                menuFactory.createMenuItem(
                        Tools.getString("ClusterBrowser.Hb.UnmigrateResource"),
                        ServiceInfo.UNMIGRATE_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .visiblePredicate(new VisiblePredicate() {
                            public boolean check() {
                                if (!serviceInfo.getBrowser().crmStatusFailed()
                                    && serviceInfo.getService().isAvailable()
                                    && (serviceInfo.getMigratedTo(runMode) != null
                                    || serviceInfo.getMigratedFrom(runMode) != null)) {
View Full Code Here

Examples of lcmc.common.domain.VisiblePredicate

                                @Override
                                public boolean check() {
                                    return host.isCrmStatusOk();
                                }
                            })
                            .visiblePredicate(new VisiblePredicate() {
                                @Override
                                public boolean check() {
                                    if (!host.isCrmStatusOk()) {
                                        return false;
                                    }
                                    final List<String> runningOnNodes = serviceInfo.getRunningOnNodes(runMode);
                                    if (runningOnNodes == null || runningOnNodes.isEmpty()) {
                                        return false;
                                    }
                                    final String runningOnNode = runningOnNodes.get(0).toLowerCase(Locale.US);
                                    if (serviceInfo.getBrowser().crmStatusFailed() || !host.isCrmStatusOk()) {
                                        return false;
                                    } else {
                                        final String tp = serviceInfo.getService().isAvailableWithText();
                                        if (tp != null) {
                                            return false;
                                        }
                                    }
                                    if (hostName.toLowerCase(Locale.US).equals(runningOnNode)) {
                                        return false;
                                    } else {
                                        return true;
                                    }
                                }
                            })
                            .addAction(new MenuAction() {
                                @Override
                                public void run(final String text) {
                                    serviceInfo.hidePopup();
                                    serviceInfo.migrateResource(hostName,
                                                                serviceInfo.getBrowser().getDCHost(),
                                                                runMode);
                                }
                            });
            final ButtonCallback migrateItemCallback =
                    serviceInfo.getBrowser().new ClMenuItemCallback(null)
                            .addAction(new CallbackAction() {
                                @Override
                                public void run(final Host dcHost) {
                                    serviceInfo.migrateResource(hostName, dcHost, Application.RunMode.TEST);
                                }
                            });
            serviceInfo.addMouseOverListener(migrateMenuItem, migrateItemCallback);
            submenu.add(migrateMenuItem);
        }
        for (final Host host : serviceInfo.getBrowser().getClusterHosts()) {
            final String hostName = host.getName();

            final MyMenuItem forceMigrateMenuItem =
                    menuFactory.createMenuItem(
                            Tools.getString("ClusterBrowser.Hb.ForceMigrateResource") + ' ' + hostName,
                            ServiceInfo.MIGRATE_ICON,
                            ClusterBrowser.STARTING_PTEST_TOOLTIP,

                            Tools.getString("ClusterBrowser.Hb.ForceMigrateResource") + ' ' + hostName + " (offline)",
                            ServiceInfo.MIGRATE_ICON,
                            ClusterBrowser.STARTING_PTEST_TOOLTIP,

                            new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                            new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                            .predicate(new Predicate() {
                                @Override
                                public boolean check() {
                                    return host.isCrmStatusOk();
                                }
                            })
                            .visiblePredicate(new VisiblePredicate() {
                                @Override
                                public boolean check() {
                                    if (!host.isCrmStatusOk()) {
                                        return false;
                                    }
View Full Code Here

Examples of lcmc.common.domain.VisiblePredicate

                            public boolean check() {
                                return !getBlockDevice().isDrbd() || getBlockDevice().isAttached();
                            }
                        })

                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                return getBlockDevice().isDrbd();
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (!getBlockDevice().isDrbd()) {
                                    return BlockDevInfo.NO_DRBD_RESOURCE_STRING;
                                }
                                if (!application.isAdvancedMode() && getDrbdResourceInfo().isUsedByCRM()) {
                                    return VolumeInfo.IS_USED_BY_CRM_STRING;
                                }
                                if (getBlockDevice().isSyncing()) {
                                    return VolumeInfo.IS_SYNCING_STRING;
                                }
                                return null;
                            }
                        });
        attachMenu.addAction(new MenuAction() {
            @Override
            public void run(final String text) {
                if (attachMenu.getText().equals(Tools.getString("HostBrowser.Drbd.Attach"))) {
                    blockDevInfo.attach(runMode);
                } else {
                    blockDevInfo.detach(runMode);
                }
            }
        });
        final ClusterBrowser cb = getClusterBrowser();
        if (cb != null) {
            final ButtonCallback attachItemCallback = cb.new DRBDMenuItemCallback(getHost())
                    .addAction(new CallbackAction() {
                        @Override
                        public void run(final Host host) {
                            if (blockDevInfo.isDiskless(Application.RunMode.LIVE)) {
                                blockDevInfo.attach(Application.RunMode.TEST);
                            } else {
                                blockDevInfo.detach(Application.RunMode.TEST);
                            }
                        }
                    });
            blockDevInfo.addMouseOverListener(attachMenu, attachItemCallback);
        }
        items.add(attachMenu);

        /* connect / disconnect */
        final MyMenuItem connectMenu =
                menuFactory.createMenuItem(Tools.getString("HostBrowser.Drbd.Disconnect"),
                        null,
                        Tools.getString("HostBrowser.Drbd.Disconnect"),
                        Tools.getString("HostBrowser.Drbd.Connect"),
                        null,
                        Tools.getString("HostBrowser.Drbd.Connect"),
                        new AccessMode(AccessMode.OP, AccessMode.ADVANCED),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .predicate(new Predicate() {
                            @Override
                            public boolean check() {
                                return blockDevInfo.isConnectedOrWF(runMode);
                            }
                        })
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                return getBlockDevice().isDrbd();
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (!getBlockDevice().isDrbd()) {
                                    return BlockDevInfo.NO_DRBD_RESOURCE_STRING;
                                }
                                if (!application.isAdvancedMode() && getDrbdResourceInfo().isUsedByCRM()) {
                                    return VolumeInfo.IS_USED_BY_CRM_STRING;
                                }
                                if (!getBlockDevice().isSyncing()
                                    || ((getBlockDevice().isPrimary()
                                         && getBlockDevice().isSyncSource())
                                         || (blockDevInfo.getOtherBlockDevInfo().getBlockDevice().isPrimary()
                                         && getBlockDevice().isSyncTarget()))) {
                                    return null;
                                } else {
                                    return VolumeInfo.IS_SYNCING_STRING;
                                }
                            }
                        });
        connectMenu.addAction(new MenuAction() {
            @Override
            public void run(final String text) {
                if (connectMenu.getText().equals(Tools.getString("HostBrowser.Drbd.Connect"))) {
                    blockDevInfo.connect(runMode);
                } else {
                    blockDevInfo.disconnect(runMode);
                }
            }
        });
        if (cb != null) {
            final ButtonCallback connectItemCallback =
                    cb.new DRBDMenuItemCallback(getHost())
                            .addAction(new CallbackAction() {
                                @Override
                                public void run(final Host host) {
                                    if (blockDevInfo.isConnectedOrWF(Application.RunMode.LIVE)) {
                                        blockDevInfo.disconnect(Application.RunMode.TEST);
                                    } else {
                                        blockDevInfo.connect(Application.RunMode.TEST);
                                    }
                                }
                            });
            blockDevInfo.addMouseOverListener(connectMenu, connectItemCallback);
        }
        items.add(connectMenu);

        /* set primary */
        final UpdatableItem setPrimaryItem =
                menuFactory.createMenuItem(Tools.getString("HostBrowser.Drbd.SetPrimaryOtherSecondary"),
                        null,
                        Tools.getString("HostBrowser.Drbd.SetPrimaryOtherSecondary"),

                        Tools.getString("HostBrowser.Drbd.SetPrimary"),
                        null,
                        Tools.getString("HostBrowser.Drbd.SetPrimary"),
                        new AccessMode(AccessMode.OP, AccessMode.ADVANCED),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .predicate(new Predicate() {
                            @Override
                            public boolean check() {
                                if (!getBlockDevice().isDrbd()) {
                                    return false;
                                }
                                return getBlockDevice().isSecondary()
                                        && blockDevInfo.getOtherBlockDevInfo().getBlockDevice().isPrimary();
                            }
                        })
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                return getBlockDevice().isDrbd();
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (!getBlockDevice().isDrbd()) {
                                    return BlockDevInfo.NO_DRBD_RESOURCE_STRING;
                                }
                                if (!application.isAdvancedMode() && getDrbdResourceInfo().isUsedByCRM()) {
                                    return VolumeInfo.IS_USED_BY_CRM_STRING;
                                }
                                if (!getBlockDevice().isSecondary()) {
                                    return "cannot do that to the primary";
                                }
                                return null;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                final BlockDevInfo oBdi = blockDevInfo.getOtherBlockDevInfo();
                                if (oBdi != null
                                        && oBdi.getBlockDevice().isPrimary()
                                        && !"yes".equals(getDrbdResourceInfo().getParamSaved(
                                        BlockDevInfo.ALLOW_TWO_PRIMARIES).getValueForConfig())) {
                                    oBdi.setSecondary(runMode);
                                }
                                blockDevInfo.setPrimary(runMode);
                            }
                        });
        items.add(setPrimaryItem);

        /* set secondary */
        final UpdatableItem setSecondaryItem =
                menuFactory.createMenuItem(Tools.getString("HostBrowser.Drbd.SetSecondary"),
                        null,
                        Tools.getString("HostBrowser.Drbd.SetSecondary.ToolTip"),
                        new AccessMode(AccessMode.OP, AccessMode.ADVANCED),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                return getBlockDevice().isDrbd();
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (!getBlockDevice().isDrbd()) {
                                    return BlockDevInfo.NO_DRBD_RESOURCE_STRING;
                                }
                                if (!application.isAdvancedMode() && getDrbdResourceInfo().isUsedByCRM()) {
                                    return VolumeInfo.IS_USED_BY_CRM_STRING;
                                }
                                if (!getBlockDevice().isPrimary()) {
                                    return "cannot do that to the secondary";
                                }
                                return null;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                blockDevInfo.setSecondary(runMode);
                            }
                        });
        items.add(setSecondaryItem);

        /* force primary */
        final UpdatableItem forcePrimaryItem =
                menuFactory.createMenuItem(Tools.getString("HostBrowser.Drbd.ForcePrimary"),
                        null,
                        Tools.getString("HostBrowser.Drbd.ForcePrimary"),
                        new AccessMode(AccessMode.OP, AccessMode.ADVANCED),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                return getBlockDevice().isDrbd();
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (!getBlockDevice().isDrbd()) {
                                    return BlockDevInfo.NO_DRBD_RESOURCE_STRING;
                                }
                                if (!application.isAdvancedMode() && getDrbdResourceInfo().isUsedByCRM()) {
                                    return VolumeInfo.IS_USED_BY_CRM_STRING;
                                }
                                return null;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                blockDevInfo.forcePrimary(runMode);
                            }
                        });
        items.add(forcePrimaryItem);

        /* invalidate */
        final UpdatableItem invalidateItem =
                menuFactory.createMenuItem(
                        Tools.getString("HostBrowser.Drbd.Invalidate"),
                        null,
                        Tools.getString("HostBrowser.Drbd.Invalidate.ToolTip"),
                        new AccessMode(AccessMode.ADMIN, AccessMode.ADVANCED),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                return getBlockDevice().isDrbd();
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (!getBlockDevice().isDrbd()) {
                                    return BlockDevInfo.NO_DRBD_RESOURCE_STRING;
                                }
                                if (!application.isAdvancedMode() && getDrbdResourceInfo().isUsedByCRM()) {
                                    return VolumeInfo.IS_USED_BY_CRM_STRING;
                                }
                                if (getBlockDevice().isSyncing()) {
                                    return VolumeInfo.IS_SYNCING_STRING;
                                }
                                if (getDrbdVolumeInfo().isVerifying()) {
                                    return VolumeInfo.IS_VERIFYING_STRING;
                                }
                                return null;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                blockDevInfo.invalidateBD(runMode);
                            }
                        });
        items.add(invalidateItem);

        /* resume / pause sync */
        final MyMenuItem resumeSyncItem =
                menuFactory.createMenuItem(
                        Tools.getString("HostBrowser.Drbd.ResumeSync"),
                        null,
                        Tools.getString("HostBrowser.Drbd.ResumeSync.ToolTip"),

                        Tools.getString("HostBrowser.Drbd.PauseSync"),
                        null,
                        Tools.getString("HostBrowser.Drbd.PauseSync.ToolTip"),
                        new AccessMode(AccessMode.OP, AccessMode.ADVANCED),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .predicate(new Predicate() {
                            @Override
                            public boolean check() {
                                return getBlockDevice().isSyncing() && getBlockDevice().isPausedSync();
                            }
                        })
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                return getBlockDevice().isDrbd();
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (!getBlockDevice().isDrbd()) {
                                    return BlockDevInfo.NO_DRBD_RESOURCE_STRING;
                                }
                                if (!application.isAdvancedMode() && getDrbdResourceInfo().isUsedByCRM()) {
                                    return VolumeInfo.IS_USED_BY_CRM_STRING;
                                }
                                if (!getBlockDevice().isSyncing()) {
                                    return "it is not being synced";
                                }
                                return null;
                            }
                        });
        resumeSyncItem.addAction(new MenuAction() {
            @Override
            public void run(final String text) {
                if (resumeSyncItem.getText().equals(Tools.getString("HostBrowser.Drbd.ResumeSync"))) {
                    blockDevInfo.resumeSync(runMode);
                } else {
                    blockDevInfo.pauseSync(runMode);
                }
            }
        });
        items.add(resumeSyncItem);

        /* resize */
        final UpdatableItem resizeItem =
                menuFactory.createMenuItem(Tools.getString("HostBrowser.Drbd.Resize"),
                        null,
                        Tools.getString("HostBrowser.Drbd.Resize.ToolTip"),
                        new AccessMode(AccessMode.ADMIN, AccessMode.ADVANCED),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                return getBlockDevice().isDrbd();
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (!getBlockDevice().isDrbd()) {
                                    return BlockDevInfo.NO_DRBD_RESOURCE_STRING;
                                }
                                if (!application.isAdvancedMode() && getDrbdResourceInfo().isUsedByCRM()) {
                                    return VolumeInfo.IS_USED_BY_CRM_STRING;
                                }
                                if (getBlockDevice().isSyncing()) {
                                    return VolumeInfo.IS_SYNCING_STRING;
                                }
                                return null;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                blockDevInfo.resizeDrbd(runMode);
                            }
                        });
        items.add(resizeItem);

        /* discard my data */
        final UpdatableItem discardDataItem =
                menuFactory.createMenuItem(Tools.getString("HostBrowser.Drbd.DiscardData"),
                        null,
                        Tools.getString("HostBrowser.Drbd.DiscardData.ToolTip"),
                        new AccessMode(AccessMode.ADMIN, AccessMode.ADVANCED),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                return getBlockDevice().isDrbd();
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (!getBlockDevice().isDrbd()) {
                                    return BlockDevInfo.NO_DRBD_RESOURCE_STRING;
                                }
                                if (!application.isAdvancedMode() && getDrbdResourceInfo().isUsedByCRM()) {
                                    return VolumeInfo.IS_USED_BY_CRM_STRING;
                                }
                                if (getBlockDevice().isSyncing()) {
                                    return VolumeInfo.IS_SYNCING_STRING;
                                }
                                if (getBlockDevice().isPrimary()) {
                                    return "cannot do that to the primary";
                                }
                                return null;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                blockDevInfo.discardData(runMode);
                            }
                        });
        items.add(discardDataItem);

        /* proxy up/down */
        final UpdatableItem proxyItem =
                menuFactory.createMenuItem(Tools.getString("BlockDevInfo.Drbd.ProxyDown"),
                        null,
                        getMenuToolTip("DRBD.proxyDown"),
                        Tools.getString("BlockDevInfo.Drbd.ProxyUp"),
                        null,
                        getMenuToolTip("DRBD.proxyUp"),
                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                if (!getBlockDevice().isDrbd()) {
                                    return false;
                                }
                                return getDrbdResourceInfo().isProxy(getHost());
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (!getBlockDevice().isDrbd()) {
                                    return BlockDevInfo.NO_DRBD_RESOURCE_STRING;
                                }
                                final ResourceInfo dri = getDrbdResourceInfo();
                                final Host pHost = dri.getProxyHost(getHost(), !ResourceInfo.WIZARD);
                                if (pHost == null) {
                                    return "not a proxy";
                                }
                                if (!pHost.isConnected()) {
                                    return Host.NOT_CONNECTED_MENU_TOOLTIP_TEXT;
                                }
                                if (!pHost.isDrbdProxyRunning()) {
                                    return "proxy daemon is not running";
                                }
                                return null;
                            }
                        })
                        .predicate(new Predicate() {
                            @Override
                            public boolean check() {
                                if (!getBlockDevice().isDrbd()) {
                                    return false;
                                }
                                final ResourceInfo dri = getDrbdResourceInfo();
                                final Host pHost = dri.getProxyHost(getHost(), !ResourceInfo.WIZARD);
                                if (pHost == null) {
                                    return false;
                                }
                                if (getBlockDevice().isDrbd()) {
                                    return pHost.isDrbdProxyUp(getDrbdResourceInfo().getName());
                                } else {
                                    return true;
                                }
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                final ResourceInfo dri = getDrbdResourceInfo();
                                final Host pHost = dri.getProxyHost(getHost(), !ResourceInfo.WIZARD);
                                if (pHost.isDrbdProxyUp(getDrbdResourceInfo().getName())) {
                                    DRBD.proxyDown(pHost, getDrbdResourceInfo().getName(), getDrbdVolumeInfo().getName(), runMode);
                                } else {
                                    DRBD.proxyUp(pHost, getDrbdResourceInfo().getName(), getDrbdVolumeInfo().getName(), runMode);
                                }
                                getClusterBrowser().updateProxyHWInfo(pHost);
                            }
                        });
        items.add(proxyItem);

        /* view log */
        final UpdatableItem viewDrbdLogItem =
                menuFactory.createMenuItem(Tools.getString("HostBrowser.Drbd.ViewDrbdLog"),
                        BlockDevInfo.LOGFILE_ICON,
                        null,
                        new AccessMode(AccessMode.RO, AccessMode.NORMAL),
                        new AccessMode(AccessMode.RO, AccessMode.NORMAL))
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                return getBlockDevice().isDrbd();
                            }
                        })
View Full Code Here

Examples of lcmc.common.domain.VisiblePredicate

        return menuFactory.createMenuItem(PV_CREATE_MENU_ITEM,
                null,
                PV_CREATE_MENU_DESCRIPTION,
                new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .visiblePredicate(new VisiblePredicate() {
                    @Override
                    public boolean check() {
                        return blockDevInfo.canCreatePV();
                    }
                })
View Full Code Here

Examples of lcmc.common.domain.VisiblePredicate

        return menuFactory.createMenuItem(PV_REMOVE_MENU_ITEM,
                null,
                PV_REMOVE_MENU_DESCRIPTION,
                new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .visiblePredicate(new VisiblePredicate() {
                    @Override
                    public boolean check() {
                        return blockDevInfo.canRemovePV();
                    }
                })
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.