Package lcmc.common.ui.utils

Examples of lcmc.common.ui.utils.MenuAction


        final UpdatableItem newDomainMenuItem = menuFactory.createMenuItem(
                Tools.getString("VMListInfo.AddNewDomain"),
                HostBrowser.HOST_OFF_ICON_LARGE,
                new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                new AccessMode(AccessMode.OP, AccessMode.NORMAL))
            .addAction(new MenuAction() {
                @Override
                public void run(final String text) {
                    hidePopup();
                    addDomainPanel();
                }
View Full Code Here


                        }
                        return null;
                    }
                })

                .addAction(new MenuAction() {
                    @Override
                    public void run(final String text) {
                        final CmdLog cmdLog = cmdLogProvider.get();
                        cmdLog.init(host);
                        cmdLog.showDialog();
                    }
                });
        submenu.add(cmdLogMenuItem);

        /* panic */
        final MyMenuItem panicMenuItem = menuFactory.createMenuItem(
                Tools.getString("HostBrowser.MakeKernelPanic") + host.getName(),
                null,
                new AccessMode(AccessMode.GOD, AccessMode.NORMAL),
                new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL))
                .enablePredicate(new EnablePredicate() {
                    @Override
                    public String check() {
                        if (!host.isConnected()) {
                            return Host.NOT_CONNECTED_MENU_TOOLTIP_TEXT;
                        }
                        return null;
                    }
                })
                .addAction(new MenuAction() {
                    @Override
                    public void run(final String text) {
                        final String hostName = host.getName();
                        final String command = "MakeKernelPanic";
                        guiData.startProgressIndicator(hostName, host.getDistString(command));
                        host.execCommand(new ExecCommandConfig().commandString(command));
                        guiData.stopProgressIndicator(hostName, host.getDistString(command));
                    }
                });
        submenu.add(panicMenuItem);

        /* reboot */
        final MyMenuItem rebootMenuItem = menuFactory.createMenuItem(
                Tools.getString("HostBrowser.MakeKernelReboot") + host.getName(),
                null,
                new AccessMode(AccessMode.GOD, AccessMode.NORMAL),
                new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL))
                .enablePredicate(new EnablePredicate() {
                    @Override
                    public String check() {
                        if (!host.isConnected()) {
                            return Host.NOT_CONNECTED_MENU_TOOLTIP_TEXT;
                        }
                        return null;
                    }
                })

                .addAction(new MenuAction() {
                    @Override
                    public void run(final String text) {
                        final String hostName = host.getName();
                        final String command = "MakeKernelReboot";
                        guiData.startProgressIndicator(hostName, host.getDistString(command));
View Full Code Here

                menuFactory.createMenuItem(Tools.getString("HostBrowser.HostWizard"),
                        HostBrowser.HOST_ICON_LARGE,
                        "",
                        new AccessMode(AccessMode.RO, AccessMode.NORMAL),
                        new AccessMode(AccessMode.RO, AccessMode.NORMAL))
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                editHostDialog.showDialogs(hostInfo.getHost());
                            }
                        });
        items.add(hostWizardItem);
        guiData.registerAddHostButton(hostWizardItem);
        /* cluster manager standby on/off */
        final Application.RunMode runMode = Application.RunMode.LIVE;
        final MyMenuItem standbyItem =
                menuFactory.createMenuItem(Tools.getString("HostBrowser.CRM.StandByOn"),
                        HostInfo.HOST_STANDBY_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,

                        Tools.getString("HostBrowser.CRM.StandByOff"),
                        HostInfo.HOST_STANDBY_OFF_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 !hostInfo.isStandby(runMode);
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (!hostInfo.getHost().isCrmStatusOk()) {
                                    return HostInfo.NO_PCMK_STATUS_STRING;
                                }
                                return null;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                final Host dcHost = hostInfo.getBrowser().getClusterBrowser().getDCHost();
                                if (hostInfo.isStandby(runMode)) {
                                    CRM.standByOff(dcHost, hostInfo.getHost(), runMode);
                                } else {
                                    CRM.standByOn(dcHost, hostInfo.getHost(), runMode);
                                }
                            }
                        });
        final ClusterBrowser cb = hostInfo.getBrowser().getClusterBrowser();
        if (cb != null) {
            final ButtonCallback standbyItemCallback = cb.new ClMenuItemCallback(hostInfo.getHost())
                    .addAction(new CallbackAction() {
                        @Override
                        public void run(final Host dcHost) {
                            if (hostInfo.isStandby(Application.RunMode.LIVE)) {
                                CRM.standByOff(dcHost, hostInfo.getHost(), Application.RunMode.TEST);
                            } else {
                                CRM.standByOn(dcHost, hostInfo.getHost(), Application.RunMode.TEST);
                            }
                        }
                    });
            hostInfo.addMouseOverListener(standbyItem, standbyItemCallback);
        }
        items.add(standbyItem);

        /* Migrate all services from this host. */
        final MyMenuItem allMigrateFromItem =
                menuFactory.createMenuItem(Tools.getString("HostInfo.CRM.AllMigrateFrom"),
                        HostInfo.HOST_STANDBY_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (!hostInfo.getHost().isCrmStatusOk()) {
                                    return HostInfo.NO_PCMK_STATUS_STRING;
                                }
                                if (hostInfo.getBrowser().getClusterBrowser().getExistingServiceList(null).isEmpty()) {
                                    return "there are no services to migrate";
                                }
                                return null;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                for (final ServiceInfo si : cb.getExistingServiceList(null)) {
                                    if (!si.isConstraintPlaceholder() && si.getGroupInfo() == null && si.getCloneInfo() == null) {
                                        final List<String> runningOnNodes = si.getRunningOnNodes(Application.RunMode.LIVE);
                                        if (runningOnNodes != null && runningOnNodes.contains(hostInfo.getHost().getName())) {
                                            final Host dcHost = hostInfo.getHost();
                                            si.migrateFromResource(dcHost, hostInfo.getHost().getName(), Application.RunMode.LIVE);
                                        }
                                    }
                                }
                            }
                        });
        if (cb != null) {
            final ButtonCallback allMigrateFromItemCallback = cb.new ClMenuItemCallback(hostInfo.getHost())
                    .addAction(new CallbackAction() {
                        @Override
                        public void run(final Host dcHost) {
                            for (final ServiceInfo si : cb.getExistingServiceList(null)) {
                                if (!si.isConstraintPlaceholder() && si.getGroupInfo() == null) {
                                    final List<String> runningOnNodes = si.getRunningOnNodes(Application.RunMode.LIVE);
                                    if (runningOnNodes != null && runningOnNodes.contains(hostInfo.getHost().getName())) {
                                        si.migrateFromResource(dcHost, hostInfo.getHost().getName(), Application.RunMode.TEST);
                                    }
                                }
                            }
                        }
                    });
            hostInfo.addMouseOverListener(allMigrateFromItem, allMigrateFromItemCallback);
        }
        items.add(allMigrateFromItem);
        /* Stop corosync/openais. */
        final MyMenuItem stopCorosyncItem =
                menuFactory.createMenuItem(Tools.getString("HostInfo.StopCorosync"),
                        HostInfo.HOST_STOP_COMM_LAYER_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,

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

                        new AccessMode(AccessMode.ADMIN, AccessMode.ADVANCED),
                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL))
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                final Host h = hostInfo.getHost();
                                if (!h.isInCluster()) {
                                    return NOT_IN_CLUSTER;
                                }
                                return null;
                            }
                        })
                        .predicate(new Predicate() {
                            @Override
                            public boolean check() {
                    /* when both are running it's openais. */
                                return hostInfo.getHost().isCorosyncRunning() && !hostInfo.getHost().isOpenaisRunning();
                            }
                        })
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                return hostInfo.getHost().isCorosyncRunning() || hostInfo.getHost().isOpenaisRunning();
                            }
                        })
                        .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"))) {
                                    final Host thisHost = hostInfo.getHost();
                                    thisHost.setCommLayerStopping(true);
                                    if (!thisHost.isPcmkStartedByCorosync()
                                            && thisHost.hasPacemakerInitScript()
                                            && thisHost.isPacemakerRunning()) {
                                        if (hostInfo.getHost().isCorosyncRunning() && !hostInfo.getHost().isOpenaisRunning()) {
                                            Corosync.stopCorosyncWithPcmk(thisHost);
                                        } else {
                                            Openais.stopOpenaisWithPcmk(thisHost);
                                        }
                                    } else {
                                        if (hostInfo.getHost().isCorosyncRunning() && !hostInfo.getHost().isOpenaisRunning()) {
                                            Corosync.stopCorosync(thisHost);
                                        } else {
                                            Openais.stopOpenais(thisHost);
                                        }
                                    }
                                    updateClusterView(thisHost, hostInfo);
                                }
                            }
                        });
        if (cb != null) {
            final ButtonCallback stopCorosyncItemCallback = cb.new ClMenuItemCallback(hostInfo.getHost())
                    .addAction(new CallbackAction() {
                        @Override
                        public void run(final Host dcHost) {
                            if (!hostInfo.isStandby(Application.RunMode.LIVE)) {
                                CRM.standByOn(dcHost, hostInfo.getHost(), Application.RunMode.TEST);
                            }
                        }
                    });
            hostInfo.addMouseOverListener(stopCorosyncItem, stopCorosyncItemCallback);
        }
        items.add(stopCorosyncItem);
        /* Stop heartbeat. */
        final MyMenuItem stopHeartbeatItem =
                menuFactory.createMenuItem(Tools.getString("HostInfo.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() {
                                return hostInfo.getHost().isHeartbeatRunning();
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                final Host h = hostInfo.getHost();
                                if (!h.isInCluster()) {
                                    return NOT_IN_CLUSTER;
                                }
                                return null;
                            }
                        })
                        .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"))) {
                                    hostInfo.getHost().setCommLayerStopping(true);
                                    Heartbeat.stopHeartbeat(hostInfo.getHost());
                                    updateClusterView(hostInfo.getHost(), hostInfo);
                                }
                            }
                        });
        if (cb != null) {
            final ButtonCallback stopHeartbeatItemCallback = cb.new ClMenuItemCallback(hostInfo.getHost())
                    .addAction(new CallbackAction() {
                        @Override
                        public void run(final Host dcHost) {
                            if (!hostInfo.isStandby(Application.RunMode.LIVE)) {
                                CRM.standByOn(dcHost, hostInfo.getHost(), Application.RunMode.TEST);
                            }
                        }
                    });
            hostInfo.addMouseOverListener(stopHeartbeatItem, stopHeartbeatItemCallback);
        }
        items.add(stopHeartbeatItem);
        /* Start corosync. */
        final MyMenuItem startCorosyncItem =
                menuFactory.createMenuItem(Tools.getString("HostInfo.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() {
                                final Host h = hostInfo.getHost();
                                return h.isCorosyncInstalled()
                                        && h.hasCorosyncInitScript()
                                        && h.corosyncOrOpenaisConfigExists()
                                        && !h.isCorosyncRunning()
                                        && !h.isOpenaisRunning()
                                        && !h.isHeartbeatRunning()
                                        && !h.isHeartbeatInRc();
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                final Host h = hostInfo.getHost();
                                if (!h.isInCluster()) {
                                    return NOT_IN_CLUSTER;
                                }
                                if (h.isOpenaisInRc() && !h.isCorosyncInRc()) {
                                    return "Openais is in rc.d";
                                }
                                return null;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                hostInfo.getHost().setCommLayerStarting(true);
                                if (hostInfo.getHost().isPacemakerInRc()) {
                                    Corosync.startCorosyncWithPcmk(hostInfo.getHost());
                                } else {
                                    Corosync.startCorosync(hostInfo.getHost());
                                }
                                updateClusterView(hostInfo.getHost(), hostInfo);
                            }
                        });
        if (cb != null) {
            final ButtonCallback startCorosyncItemCallback = cb.new ClMenuItemCallback(hostInfo.getHost())
                    .addAction(new CallbackAction() {
                        @Override
                        public void run(final Host dcHost) {
                            //TODO
                        }
                    });
            hostInfo.addMouseOverListener(startCorosyncItem, startCorosyncItemCallback);
        }
        items.add(startCorosyncItem);
        /* Start openais. */
        final MyMenuItem startOpenaisItem =
                menuFactory.createMenuItem(Tools.getString("HostInfo.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() {
                                final Host h = hostInfo.getHost();
                                return h.hasOpenaisInitScript()
                                        && h.corosyncOrOpenaisConfigExists()
                                        && !h.isCorosyncRunning()
                                        && !h.isOpenaisRunning()
                                        && !h.isHeartbeatRunning()
                                        && !h.isHeartbeatInRc();
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                final Host h = hostInfo.getHost();
                                if (!h.isInCluster()) {
                                    return NOT_IN_CLUSTER;
                                }
                                if (h.isCorosyncInRc() && !h.isOpenaisInRc()) {
                                    return "Corosync is in rc.d";
                                }
                                return null;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                hostInfo.getHost().setCommLayerStarting(true);
                                Openais.startOpenais(hostInfo.getHost());
                                updateClusterView(hostInfo.getHost(), hostInfo);
                            }
                        });
        if (cb != null) {
            final ButtonCallback startOpenaisItemCallback = cb.new ClMenuItemCallback(hostInfo.getHost())
                    .addAction(new CallbackAction() {
                        @Override
                        public void run(final Host dcHost) {
                            //TODO
                        }
                    });
            hostInfo.addMouseOverListener(startOpenaisItem, startOpenaisItemCallback);
        }
        items.add(startOpenaisItem);
        /* Start heartbeat. */
        final MyMenuItem startHeartbeatItem =
                menuFactory.createMenuItem(Tools.getString("HostInfo.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() {
                                final Host h = hostInfo.getHost();
                                return h.hasHeartbeatInitScript()
                                        && h.heartbeatConfigExists()
                                        && !h.isCorosyncRunning()
                                        && !h.isOpenaisRunning()
                                        && !h.isHeartbeatRunning();
                                //&& !h.isAisRc()
                                //&& !h.isCsRc(); TODO should check /etc/defaults/
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                final Host h = hostInfo.getHost();
                                if (!h.isInCluster()) {
                                    return NOT_IN_CLUSTER;
                                }
                                return null;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                hostInfo.getHost().setCommLayerStarting(true);
                                Heartbeat.startHeartbeat(hostInfo.getHost());
                                updateClusterView(hostInfo.getHost(), hostInfo);
                            }
                        });
        if (cb != null) {
            final ButtonCallback startHeartbeatItemCallback = cb.new ClMenuItemCallback(hostInfo.getHost())
                    .addAction(new CallbackAction() {
                        @Override
                        public void run(final Host dcHost) {
                            //TODO
                        }
                    });
            hostInfo.addMouseOverListener(startHeartbeatItem, startHeartbeatItemCallback);
        }
        items.add(startHeartbeatItem);

        /* Start pacemaker. */
        final MyMenuItem startPcmkItem =
                menuFactory.createMenuItem(Tools.getString("HostInfo.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() {
                                final Host h = hostInfo.getHost();
                                return !h.isPcmkStartedByCorosync()
                                        && !h.isPacemakerRunning()
                                        && (h.isCorosyncRunning() || h.isOpenaisRunning())
                                        && !h.isHeartbeatRunning();
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                final Host h = hostInfo.getHost();
                                if (!h.isInCluster()) {
                                    return NOT_IN_CLUSTER;
                                }
                                return null;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                hostInfo.getHost().setPacemakerStarting(true);
                                Corosync.startPacemaker(hostInfo.getHost());
                                updateClusterView(hostInfo.getHost(), hostInfo);
                            }
                        });
        if (cb != null) {
            final ButtonCallback startPcmkItemCallback = cb.new ClMenuItemCallback(hostInfo.getHost())
                    .addAction(new CallbackAction() {
                        @Override
                        public void run(final Host dcHost) {
                            //TODO
                        }
                    });
            hostInfo.addMouseOverListener(startPcmkItem, startPcmkItemCallback);
        }
        items.add(startPcmkItem);
        /* change host color */
        final UpdatableItem changeHostColorItem =
                menuFactory.createMenuItem(Tools.getString("HostBrowser.Drbd.ChangeHostColor"),
                        null,
                        "",
                        new AccessMode(AccessMode.RO, AccessMode.NORMAL),
                        new AccessMode(AccessMode.RO, AccessMode.NORMAL))
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                final Color newColor = JColorChooser.showDialog(
                                        guiData.getMainFrame(),
                                        "Choose " + hostInfo.getHost().getName() + " color",
                                        hostInfo.getHost().getPmColors()[0]);
                                if (newColor != null) {
                                    hostInfo.getHost().setSavedHostColorInGraphs(newColor);
                                }
                            }
                        });
        items.add(changeHostColorItem);

        /* view logs */
        final UpdatableItem viewLogsItem =
                menuFactory.createMenuItem(Tools.getString("HostBrowser.Drbd.ViewLogs"),
                        HostInfo.LOGFILE_ICON,
                        "",
                        new AccessMode(AccessMode.RO, AccessMode.NORMAL),
                        new AccessMode(AccessMode.RO, AccessMode.NORMAL))
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (!hostInfo.getHost().isConnected()) {
                                    return Host.NOT_CONNECTED_MENU_TOOLTIP_TEXT;
                                }
                                return null;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                final HostLogs hostLogs = hostLogsProvider.get();
                                hostLogs.init(hostInfo.getHost());
                                hostLogs.showDialog();
                            }
                        });
        items.add(viewLogsItem);
        /* advacend options */
        final MyMenu hostAdvancedSubmenu = menuFactory.createMenu(Tools.getString("HostBrowser.AdvancedSubmenu"),
                new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .enablePredicate(new EnablePredicate() {
                    @Override
                    public String check() {
                        if (!hostInfo.getHost().isConnected()) {
                            return Host.NOT_CONNECTED_MENU_TOOLTIP_TEXT;
                        }
                        return null;
                    }
                });
        hostAdvancedSubmenu.onUpdate(new Runnable() {
            @Override
            public void run() {
                hostAdvancedSubmenu.updateMenuComponents();
                hostInfo.getBrowser().addAdvancedMenu(hostAdvancedSubmenu);
            }
        });
        items.add(hostAdvancedSubmenu);

        /* remove host from gui */
        final UpdatableItem removeHostItem =
                menuFactory.createMenuItem(Tools.getString("HostBrowser.RemoveHost"),
                        HostBrowser.HOST_REMOVE_ICON,
                        Tools.getString("HostBrowser.RemoveHost"),
                        new AccessMode(AccessMode.RO, AccessMode.NORMAL),
                        new AccessMode(AccessMode.RO, AccessMode.NORMAL))
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (hostInfo.getHost().isInCluster()) {
                                    return "it is a member of a cluster";
                                }
                                return null;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                hostInfo.getHost().disconnect();
                                final ClusterBrowser b = hostInfo.getBrowser().getClusterBrowser();
                                if (b != null) {
View Full Code Here

                                        ra.getPullDownMenuName(),
                                        null,
                                        null,
                                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                                        new AccessMode(AccessMode.OP, AccessMode.NORMAL));
                        mmi.addAction(new MenuAction() {
                                @Override
                                public void run(final String text) {
                                    final CloneInfo ci = groupInfo.getCloneInfo();
                                    if (ci != null) {
                                        ci.hidePopup();
View Full Code Here

            final MyMenuItem mmi = menuFactory.createMenuItem(asi.toString(),
                                                  null,
                                                  null,
                                                  new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                                                  new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .addAction(new MenuAction() {
                    @Override
                    public void run(final String text) {
                        si.addServicePanel(asi,
                                null,
                                false, /* TODO: colocation only */
 
View Full Code Here

                                    } else {
                                        return false;
                                    }
                                }
                            })
                            .addAction(new MenuAction() {
                                @Override
                                public void run(final String text) {
                                    cloneInfo.hidePopup();
                                    if (cloneInfo.getService().isMaster()) {
                                       /* without role=master */
 
View Full Code Here

                            return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                        }
                        return null;
                    }
                })
                .addAction(new MenuAction() {
                    @Override
                    public void run(final String text) {
                        getBrowser().getCrmGraph().removeConnection(hbConnectionInfo, getBrowser().getDCHost(), runMode);
                    }
                });
        final ButtonCallback removeEdgeCallback = getBrowser().new ClMenuItemCallback(null) {
            @Override
            public boolean isEnabled() {
                return super.isEnabled() && !hbConnectionInfo.isNew();
            }
        }
                .addAction(new CallbackAction() {
                    @Override
                    public void run(final Host dcHost) {
                        if (!hbConnectionInfo.isNew()) {
                            getBrowser().getCrmGraph().removeConnection(hbConnectionInfo, dcHost, Application.RunMode.TEST);
                        }
                    }
                });
        hbConnectionInfo.addMouseOverListener(removeEdgeItem, removeEdgeCallback);
        items.add(removeEdgeItem);

        /* remove/add order */
        final MyMenuItem removeOrderItem =
                menuFactory.createMenuItem(Tools.getString("ClusterBrowser.Hb.RemoveOrder"),
                        ClusterBrowser.REMOVE_ICON,
                        Tools.getString("ClusterBrowser.Hb.RemoveOrder.ToolTip"),

                        Tools.getString("ClusterBrowser.Hb.AddOrder"),
                        null,
                        Tools.getString("ClusterBrowser.Hb.AddOrder.ToolTip"),
                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .predicate(new Predicate() {
                            @Override
                            public boolean check() {
                                return getBrowser().getCrmGraph().isOrder(hbConnectionInfo);
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (getBrowser().crmStatusFailed()) {
                                    return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                                }
                                return null;
                            }
                        });
        removeOrderItem.addAction(new MenuAction() {
            @Override
            public void run(final String text) {
                if (removeOrderItem.getText().equals(Tools.getString("ClusterBrowser.Hb.RemoveOrder"))) {
                    getBrowser().getCrmGraph().removeOrder(hbConnectionInfo, getBrowser().getDCHost(), runMode);
                } else {
                    /* there is colocation constraint so let's get the
                     * endpoints from it. */
                    hbConnectionInfo.addOrder(null,
                            hbConnectionInfo.getLastServiceInfoRsc(),
                            hbConnectionInfo.getLastServiceInfoWithRsc());
                    getBrowser().getCrmGraph().addOrder(hbConnectionInfo, getBrowser().getDCHost(), runMode);
                }
            }
        });

        final ButtonCallback removeOrderCallback = getBrowser().new ClMenuItemCallback(null) {
            @Override
            public boolean isEnabled() {
                return super.isEnabled() && !hbConnectionInfo.isNew();
            }
        }
                .addAction(new CallbackAction() {
                    @Override
                    public void run(final Host dcHost) {
                        if (!hbConnectionInfo.isNew()) {
                            if (getBrowser().getCrmGraph().isOrder(hbConnectionInfo)) {
                                getBrowser().getCrmGraph().removeOrder(hbConnectionInfo, dcHost, Application.RunMode.TEST);
                            } else {
                        /* there is colocation constraint so let's get the
                         * endpoints from it. */
                                hbConnectionInfo.addOrder(null,
                                        hbConnectionInfo.getLastServiceInfoRsc(),
                                        hbConnectionInfo.getLastServiceInfoWithRsc());
                                getBrowser().getCrmGraph().addOrder(hbConnectionInfo, dcHost, Application.RunMode.TEST);
                            }
                        }
                    }
                });
        hbConnectionInfo.addMouseOverListener(removeOrderItem, removeOrderCallback);
        items.add(removeOrderItem);

        /* remove/add colocation */
        final MyMenuItem removeColocationItem =
                menuFactory.createMenuItem(
                        Tools.getString("ClusterBrowser.Hb.RemoveColocation"),
                        ClusterBrowser.REMOVE_ICON,
                        Tools.getString("ClusterBrowser.Hb.RemoveColocation.ToolTip"),

                        Tools.getString("ClusterBrowser.Hb.AddColocation"),
                        null,
                        Tools.getString("ClusterBrowser.Hb.AddColocation.ToolTip"),
                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .predicate(new Predicate() {
                            @Override
                            public boolean check() {
                                return getBrowser().getCrmGraph().isColocation(hbConnectionInfo);
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (getBrowser().crmStatusFailed()) {
                                    return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                                }
                                return null;
                            }
                        });
        removeColocationItem.addAction(new MenuAction() {
            @Override
            public void run(final String text) {
                if (removeColocationItem.getText().equals(Tools.getString("ClusterBrowser.Hb.RemoveColocation"))) {
                    getBrowser().getCrmGraph().removeColocation(hbConnectionInfo, getBrowser().getDCHost(), runMode);
                } else {
View Full Code Here

                            return ConstraintPHInfo.IS_BEING_REMOVED_STRING;
                        }
                        return null;
                    }
                })
                .addAction(new MenuAction() {
                    @Override
                    public void run(final String text) {
                        constraintPHInfo.hidePopup();
                        constraintPHInfo.removeMyself(Application.RunMode.LIVE);
                        constraintPHInfo.getBrowser().getCrmGraph().repaint();
View Full Code Here

                                    return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                                }
                                return null;
                            }
                        });
        addGroupMenuItem.addAction(new MenuAction() {
            @Override
            public void run(final String text) {
                servicesInfo.hidePopup();
                servicesInfo.addServicePanel(
                        servicesInfo.getBrowser().getCrmXml().getGroupResourceAgent(),
                        addGroupMenuItem.getPos(),
                        true,
                        null,
                        null,
                        runMode);
                servicesInfo.getBrowser().getCrmGraph().repaint();
            }
        });
        items.add(addGroupMenuItem);

        /* add service */
        final MyMenu addServiceMenuItem = menuFactory.createMenu(
                Tools.getString("ClusterBrowser.Hb.AddService"),
                new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .enablePredicate(new EnablePredicate() {
                    @Override
                    public String check() {
                        if (servicesInfo.getBrowser().getCrmXml() == null) {
                            return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                        }
                        if (servicesInfo.getBrowser().crmStatusFailed()) {
                            return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                        }
                        return null;
                    }
                });
        addServiceMenuItem.onUpdate(new Runnable() {
            @Override
            public void run() {
                application.isSwingThread();
                addServiceMenuItem.removeAll();
                final Point2D pos = addServiceMenuItem.getPos();
                final CrmXml crmXML = servicesInfo.getBrowser().getCrmXml();
                if (crmXML == null) {
                    return;
                }
                final ResourceAgent fsService = crmXML.getResourceAgent(
                        "Filesystem",
                        ResourceAgent.HEARTBEAT_PROVIDER,
                        ResourceAgent.OCF_CLASS_NAME);
                if (crmXML.isLinbitDrbdResourceAgentPresent()) { /* just skip it, if it is not */
                    final MyMenuItem ldMenuItem = menuFactory.createMenuItem(
                            Tools.getString("ClusterBrowser.linbitDrbdMenuName"),
                            null,
                            null,
                            new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                            new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                            .addAction(new MenuAction() {
                                @Override
                                public void run(final String text) {
                                    servicesInfo.hidePopup();
                                    if (!servicesInfo.getBrowser().linbitDrbdConfirmDialog()) {
                                        return;
                                    }

                                    final FilesystemRaInfo fsi = (FilesystemRaInfo) servicesInfo.addServicePanel(
                                                    fsService,
                                                    addServiceMenuItem.getPos(),
                                                    true,
                                                    null,
                                                    null,
                                                    runMode);
                                    fsi.setDrbddiskIsPreferred(false);
                                    servicesInfo.getBrowser().getCrmGraph().repaint();
                                }
                            });
                    if (servicesInfo.getBrowser().atLeastOneDrbddiskConfigured()
                            || !crmXML.isLinbitDrbdResourceAgentPresent()) {
                        ldMenuItem.setEnabled(false);
                    }
                    ldMenuItem.setPos(pos);
                    addServiceMenuItem.add(ldMenuItem);
                }
                final ResourceAgent ipService = crmXML.getResourceAgent(
                        "IPaddr2",
                        ResourceAgent.HEARTBEAT_PROVIDER,
                        ResourceAgent.OCF_CLASS_NAME);
                if (ipService != null) { /* just skip it, if it is not*/
                    final MyMenuItem ipMenuItem =
                            menuFactory.createMenuItem(ipService.getPullDownMenuName(),
                                    null,
                                    null,
                                    new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                                    new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                                    .addAction(new MenuAction() {
                                        @Override
                                        public void run(final String text) {
                                            servicesInfo.hidePopup();
                                            servicesInfo.addServicePanel(ipService,
                                                    addServiceMenuItem.getPos(),
                                                    true,
                                                    null,
                                                    null,
                                                    runMode);
                                            servicesInfo.getBrowser().getCrmGraph().repaint();
                                        }
                                    });
                    ipMenuItem.setPos(pos);
                    addServiceMenuItem.add(ipMenuItem);
                }
                if (crmXML.isDrbddiskResourceAgentPresent()
                        && (servicesInfo.getBrowser().isDrbddiskRAPreferred()
                        || servicesInfo.getBrowser().atLeastOneDrbddiskConfigured()
                        || !crmXML.isLinbitDrbdResourceAgentPresent())) {
                    final MyMenuItem ddMenuItem = menuFactory.createMenuItem(
                            Tools.getString("ClusterBrowser.DrbddiskMenuName"),
                            null,
                            null,
                            new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                            new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                            .addAction(new MenuAction() {
                                @Override
                                public void run(final String text) {
                                    servicesInfo.hidePopup();
                                    final FilesystemRaInfo fsi = (FilesystemRaInfo) servicesInfo.addServicePanel(
                                            fsService,
                                            addServiceMenuItem.getPos(),
                                            true,
                                            null,
                                            null,
                                            runMode);
                                    fsi.setDrbddiskIsPreferred(true);
                                    servicesInfo.getBrowser().getCrmGraph().repaint();
                                }
                            });
                    if (servicesInfo.getBrowser().isOneLinbitDrbdRaConfigured()
                            || !crmXML.isDrbddiskResourceAgentPresent()) {
                        ddMenuItem.setEnabled(false);
                    }
                    ddMenuItem.setPos(pos);
                    addServiceMenuItem.add(ddMenuItem);
                }
                final Collection<JDialog> popups = new ArrayList<JDialog>();
                for (final String cl : ClusterBrowser.CRM_CLASSES) {
                    final List<ResourceAgent> services = servicesInfo.getAddServiceList(cl);
                    if (services.isEmpty()) {
                        /* no services, don't show */
                        continue;
                    }
                    AccessMode.Mode mode = AccessMode.NORMAL;
                    if (ResourceAgent.UPSTART_CLASS_NAME.equals(cl) || ResourceAgent.SYSTEMD_CLASS_NAME.equals(cl)) {
                        mode = AccessMode.ADVANCED;
                    }
                    if (ResourceAgent.LSB_CLASS_NAME.equals(cl)
                            && !servicesInfo.getAddServiceList(ResourceAgent.SERVICE_CLASS_NAME).isEmpty()) {
                        mode = AccessMode.ADVANCED;
                    }
                    final MyMenu classItem =
                            menuFactory.createMenu(ClusterBrowser.getClassMenuName(cl),
                                    new AccessMode(AccessMode.ADMIN, mode),
                                    new AccessMode(AccessMode.OP, mode));
                    final MyListModel<MyMenuItem> dlm = new MyListModel<MyMenuItem>();
                    for (final ResourceAgent ra : services) {
                        final MyMenuItem mmi = menuFactory.createMenuItem(
                                ra.getPullDownMenuName(),
                                null,
                                null,
                                new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                                new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                                .addAction(new MenuAction() {
                                    @Override
                                    public void run(final String text) {
                                        servicesInfo.hidePopup();
                                        application.invokeLater(new Runnable() {
                                            @Override
                                            public void run() {
                                                for (final JDialog otherP : popups) {
                                                    otherP.dispose();
                                                }
                                            }
                                        });
                                        if (ra.isLinbitDrbd() && !servicesInfo.getBrowser().linbitDrbdConfirmDialog()) {
                                            return;
                                        } else if (ra.isHbDrbd() && !servicesInfo.getBrowser().hbDrbdConfirmDialog()) {
                                            return;
                                        }
                                        servicesInfo.addServicePanel(ra,
                                                addServiceMenuItem.getPos(),
                                                true,
                                                null,
                                                null,
                                                runMode);
                                        servicesInfo.getBrowser().getCrmGraph().repaint();
                                    }
                                });
                        mmi.setPos(pos);
                        dlm.addElement(mmi);
                    }
                    final boolean ret = guiData.getScrollingMenu(
                            ClusterBrowser.getClassMenuName(cl),
                            null, /* options */
                            classItem,
                            dlm,
                            new MyList<MyMenuItem>(dlm, addServiceMenuItem.getBackground()),
                            servicesInfo,
                            popups,
                            null);
                    if (!ret) {
                        classItem.setEnabled(false);
                    }
                    addServiceMenuItem.add(classItem);
                }
                addServiceMenuItem.updateMenuComponents();
                addServiceMenuItem.processAccessMode();
            }
        });
        items.add(addServiceMenuItem);

        /* add constraint placeholder (and) */
        final MyMenuItem addConstraintPlaceholderAnd =
                menuFactory.createMenuItem(Tools.getString("ServicesInfo.AddConstraintPlaceholderAnd"),
                        null,
                        Tools.getString("ServicesInfo.AddConstraintPlaceholderAnd.ToolTip"),
                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (servicesInfo.getBrowser().crmStatusFailed()) {
                                    return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                                }
                                return null;
                            }
                        });
        addConstraintPlaceholderAnd.addAction(new MenuAction() {
            @Override
            public void run(final String text) {
                servicesInfo.hidePopup();
                final CrmGraph hg = servicesInfo.getBrowser().getCrmGraph();
                final ConstraintPHInfo constraintPHInfo = constraintPHInfoProvider.get();
                constraintPHInfo.init(servicesInfo.getBrowser(), null, ConstraintPHInfo.Preference.AND);
                constraintPHInfo.getService().setNew(true);
                servicesInfo.getBrowser().addNameToServiceInfoHash(constraintPHInfo);
                hg.addConstraintPlaceholder(constraintPHInfo, addConstraintPlaceholderAnd.getPos(), runMode);
                final PcmkRscSetsInfo rscSetsInfo = rscSetsInfoProvider.get();
                rscSetsInfo.init(servicesInfo.getBrowser(), constraintPHInfo);
                constraintPHInfo.setPcmkRscSetsInfo(rscSetsInfo);
                application.invokeLater(new Runnable() {
                    @Override
                    public void run() {
                        hg.scale();
                    }
                });
            }
        });
        items.add(addConstraintPlaceholderAnd);

        /* add constraint placeholder (or) */
        final MyMenuItem addConstraintPlaceholderOr =
                menuFactory.createMenuItem(Tools.getString("ServicesInfo.AddConstraintPlaceholderOr"),
                        null,
                        Tools.getString("ServicesInfo.AddConstraintPlaceholderOr.ToolTip"),
                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                final String pmV = servicesInfo.getBrowser().getDCHost().getPacemakerVersion();
                                try {
                                    //TODO: get this from constraints-.rng files
                                    if (pmV == null || Tools.compareVersions(pmV, "1.1.7") <= 0) {
                                        return HbOrderInfo.NOT_AVAIL_FOR_PCMK_VERSION;
                                    }
                                } catch (final Exceptions.IllegalVersionException e) {
                                    LOG.appWarning("enablePredicate: unkonwn version: " + pmV);
                        /* enable it, if version check doesn't work */
                                }
                                if (servicesInfo.getBrowser().crmStatusFailed()) {
                                    return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                                }
                                return null;
                            }
                        });
        addConstraintPlaceholderOr.addAction(new MenuAction() {
            @Override
            public void run(final String text) {
                servicesInfo.hidePopup();
                final CrmGraph hg = servicesInfo.getBrowser().getCrmGraph();
                final ConstraintPHInfo constraintPHInfo = constraintPHInfoProvider.get();
                constraintPHInfo.init(servicesInfo.getBrowser(), null, ConstraintPHInfo.Preference.OR);
                constraintPHInfo.getService().setNew(true);
                servicesInfo.getBrowser().addNameToServiceInfoHash(constraintPHInfo);
                hg.addConstraintPlaceholder(constraintPHInfo, addConstraintPlaceholderOr.getPos(), runMode);
                final PcmkRscSetsInfo rscSetsInfo = rscSetsInfoProvider.get();
                rscSetsInfo.init(servicesInfo.getBrowser(), constraintPHInfo);
                constraintPHInfo.setPcmkRscSetsInfo(rscSetsInfo);
                application.invokeLater(new Runnable() {
                    @Override
                    public void run() {
                        hg.scale();
                    }
                });
            }
        });
        items.add(addConstraintPlaceholderOr);

        /* stop all services. */
        final ComponentWithTest stopAllMenuItem = menuFactory.createMenuItem(
                Tools.getString("ClusterBrowser.Hb.StopAllServices"),
                ServiceInfo.STOP_ICON,
                new AccessMode(AccessMode.ADMIN, AccessMode.ADVANCED),
                new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL))
                .enablePredicate(new EnablePredicate() {
                    @Override
                    public String check() {
                        if (servicesInfo.getBrowser().crmStatusFailed()) {
                            return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                        }
                        if (servicesInfo.getBrowser().getExistingServiceList(null).isEmpty()) {
                            return "there are no services";
                        }
                        for (final ServiceInfo si : servicesInfo.getBrowser().getExistingServiceList(null)) {
                            if (!si.isStopped(Application.RunMode.LIVE) && !si.getService().isOrphaned()) {
                                return null;
                            }
                        }
                        return "all services are stopped";
                    }
                })
                .addAction(new MenuAction() {
                    @Override
                    public void run(final String text) {
                        servicesInfo.hidePopup();
                        final Host dcHost = servicesInfo.getBrowser().getDCHost();
                        for (final ServiceInfo si : servicesInfo.getBrowser().getExistingServiceList(null)) {
                            if (si.getGroupInfo() == null
                                    && !si.isStopped(Application.RunMode.LIVE)
                                    && !si.getService().isOrphaned()
                                    && !si.getService().isNew()) {
                                si.stopResource(dcHost, Application.RunMode.LIVE);
                            }
                        }
                        servicesInfo.getBrowser().getCrmGraph().repaint();
                    }
                });
        final ButtonCallback stopAllItemCallback = servicesInfo.getBrowser().new ClMenuItemCallback(null)
                .addAction(new CallbackAction() {
                    @Override
                    public void run(final Host host) {
                        final Host thisDCHost = servicesInfo.getBrowser().getDCHost();
                        for (final ServiceInfo si : servicesInfo.getBrowser().getExistingServiceList(null)) {
                            if (si.getGroupInfo() == null
                                    && !si.isConstraintPlaceholder()
                                    && !si.isStopped(Application.RunMode.TEST)
                                    && !si.getService().isOrphaned()
                                    && !si.getService().isNew()) {
                                si.stopResource(thisDCHost, Application.RunMode.TEST);
                            }
                        }
                    }
                });
        servicesInfo.addMouseOverListener(stopAllMenuItem, stopAllItemCallback);
        items.add((UpdatableItem) stopAllMenuItem);

        /* unmigrate all services. */
        final ComponentWithTest unmigrateAllMenuItem = menuFactory.createMenuItem(
                Tools.getString("ClusterBrowser.Hb.UnmigrateAllServices"),
                ServiceInfo.UNMIGRATE_ICON,
                new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .visiblePredicate(new VisiblePredicate() {
                    @Override
                    public boolean check() {
                        if (servicesInfo.getBrowser().crmStatusFailed()) {
                            return false;
                        }
                        if (servicesInfo.getBrowser().getExistingServiceList(null).isEmpty()) {
                            return false;
                        }
                        for (final ServiceInfo si : servicesInfo.getBrowser().getExistingServiceList(null)) {
                            if (si.getMigratedTo(runMode) != null || si.getMigratedFrom(runMode) != null) {
                                return true;
                            }
                        }
                        return false;
                    }
                })
                .addAction(new MenuAction() {
                    @Override
                    public void run(final String text) {
                        servicesInfo.hidePopup();
                        final Host dcHost = servicesInfo.getBrowser().getDCHost();
                        for (final ServiceInfo si : servicesInfo.getBrowser().getExistingServiceList(null)) {
                            if (si.getMigratedTo(runMode) != null || si.getMigratedFrom(runMode) != null) {
                                si.unmigrateResource(dcHost, Application.RunMode.LIVE);
                            }
                        }
                        servicesInfo.getBrowser().getCrmGraph().repaint();
                    }
                });
        final ButtonCallback unmigrateAllItemCallback =
                servicesInfo.getBrowser().new ClMenuItemCallback(null)
                        .addAction(new CallbackAction() {
                            @Override
                            public void run(final Host dcHost) {
                                for (final ServiceInfo si : servicesInfo.getBrowser().getExistingServiceList(null)) {
                                    if (si.getMigratedTo(runMode) != null || si.getMigratedFrom(runMode) != null) {
                                        si.unmigrateResource(dcHost, Application.RunMode.TEST);
                                    }
                                }
                            }
                        });
        servicesInfo.addMouseOverListener(unmigrateAllMenuItem, unmigrateAllItemCallback);
        items.add((UpdatableItem) unmigrateAllMenuItem);

        /* remove all services. */
        final ComponentWithTest removeMenuItem = menuFactory.createMenuItem(
                Tools.getString("ClusterBrowser.Hb.RemoveAllServices"),
                ClusterBrowser.REMOVE_ICON,
                new AccessMode(AccessMode.ADMIN, AccessMode.ADVANCED),
                new AccessMode(AccessMode.ADMIN, AccessMode.ADVANCED))
                .enablePredicate(new EnablePredicate() {
                    @Override
                    public String check() {
                        if (servicesInfo.getBrowser().crmStatusFailed()) {
                            return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                        }
                        if (servicesInfo.getBrowser().getExistingServiceList(null).isEmpty()) {
                            return "there are no services";
                        }
                        for (final ServiceInfo si : servicesInfo.getBrowser().getExistingServiceList(null)) {
                            if (si.getGroupInfo() == null) {
                                if (si.isRunning(Application.RunMode.LIVE)) {
                                    return "there are running services";
                                }
                            }
                        }
                        return null;
                    }
                })
                .addAction(new MenuAction() {
                    @Override
                    public void run(final String text) {
                        servicesInfo.hidePopup();
                        if (application.confirmDialog(
                                Tools.getString("ClusterBrowser.confirmRemoveAllServices.Title"),
                                Tools.getString("ClusterBrowser.confirmRemoveAllServices.Description"),
                                Tools.getString("ClusterBrowser.confirmRemoveAllServices.Yes"),
                                Tools.getString("ClusterBrowser.confirmRemoveAllServices.No"))) {
                            final Thread t = new Thread() {
                                @Override
                                public void run() {
                                    final Host dcHost = servicesInfo.getBrowser().getDCHost();
                                    final List<ServiceInfo> services = servicesInfo.getBrowser().getExistingServiceList(null);
                                    for (final ServiceInfo si : services) {
                                        if (si.getGroupInfo() == null) {
                                            final ResourceAgent ra = si.getResourceAgent();
                                            if (ra != null && !ra.isClone()) {
                                                si.getService().setRemoved(true);
                                            }
                                        }
                                    }
                                    CRM.erase(dcHost, runMode);
                                    for (final ServiceInfo si : services) {
                                        if (si.getGroupInfo() == null) {
                                            final ResourceAgent ra = si.getResourceAgent();
                                            if (si.getService().isNew()) {
                                                si.removeMyself(runMode);
                                            } else if (ra != null && !ra.isClone()) {
                                                si.cleanupResource(dcHost, Application.RunMode.LIVE);
                                            }
                                        }
                                    }
                                    servicesInfo.getBrowser().getCrmGraph().repaint();
                                }
                            };
                            t.start();
                        }
                    }
                });
        final ButtonCallback removeItemCallback =
                servicesInfo.getBrowser().new ClMenuItemCallback(null)
                        .addAction(new CallbackAction() {
                            @Override
                            public void run(final Host dcHost) {
                                CRM.erase(dcHost, Application.RunMode.TEST);
                            }
                        });
        servicesInfo.addMouseOverListener(removeMenuItem, removeItemCallback);
        items.add((UpdatableItem) removeMenuItem);

        /* cluster wizard */
        final UpdatableItem clusterWizardItem =
                menuFactory.createMenuItem(Tools.getString("ClusterBrowser.Hb.ClusterWizard"),
                        ServicesInfo.CLUSTER_ICON,
                        null,
                        new AccessMode(AccessMode.ADMIN, AccessMode.ADVANCED),
                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL))
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                editClusterDialog.showDialogs(servicesInfo.getBrowser().getCluster());
                            }
                        });
        items.add(clusterWizardItem);

        /* view logs */
        final UpdatableItem viewLogsItem =
                menuFactory.createMenuItem(Tools.getString("ClusterBrowser.Hb.ViewLogs"),
                        ServicesInfo.LOGFILE_ICON,
                        null,
                        new AccessMode(AccessMode.RO, AccessMode.NORMAL),
                        new AccessMode(AccessMode.RO, AccessMode.NORMAL))
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                final ClusterLogs clusterLogs = clusterLogsProvider.get();
                                clusterLogs.init(servicesInfo.getBrowser().getCluster());
                                clusterLogs.showDialog();
View Full Code Here

                                return Host.NOT_CONNECTED_MENU_TOOLTIP_TEXT;
                            }
                        }
                        return null;
                    }})
            .addAction(new MenuAction() {
                    @Override
                    public void run(final String text) {
                        for (final HostDrbdInfo hi : selectedHostInfos) {
                            DRBD.load(hi.getHost(), Application.RunMode.LIVE);
                        }
                        for (final HostDrbdInfo hi : selectedHostInfos) {
                            getBrowser().updateHWInfo(hi.getHost(), !Host.UPDATE_LVM);
                        }
                    }});
        items.add(loadItem);

        /* load DRBD config / adjust all */
        final MyMenuItem adjustAllItem =
            menuFactory.createMenuItem(
                   Tools.getString("MultiSelectionInfo.AdjustAllDrbd"),
                   null,
                   Tools.getString("MultiSelectionInfo.AdjustAllDrbd"),
                           new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                           new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                    .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                    for (final HostDrbdInfo hi : selectedHostInfos) {
                        if (!hi.getHost().isConnected()) {
                            return Host.NOT_CONNECTED_MENU_TOOLTIP_TEXT;
                        }
                    }
                    return null;
                }})
                .addAction(new MenuAction() {
                        @Override
                        public void run(final String text) {
                    for (final HostDrbdInfo hi : selectedHostInfos) {
                        DRBD.adjustApply(hi.getHost(), DRBD.ALL_DRBD_RESOURCES, null, Application.RunMode.LIVE);
                    }
                    for (final HostDrbdInfo hi : selectedHostInfos) {
                        getBrowser().updateHWInfo(hi.getHost(), !Host.UPDATE_LVM);
                    }
                }});
        items.add(adjustAllItem);
        final ButtonCallback adjustAllItemCallback =
               getBrowser().new DRBDMenuItemCallback(getBrowser().getDCHost())
                   .addAction(new CallbackAction() {
                           @Override
                           public void run(final Host host) {
                for (final HostDrbdInfo hi : selectedHostInfos) {
                    DRBD.adjustApply(hi.getHost(), DRBD.ALL_DRBD_RESOURCES, null, Application.RunMode.TEST);
                }
            }});
        multiSelectionInfo.addMouseOverListener(adjustAllItem, adjustAllItemCallback);

        /* start drbd */
        final MyMenuItem upAllItem =
            menuFactory.createMenuItem(Tools.getString("MultiSelectionInfo.UpAll"),
                           null,
                           Tools.getString("MultiSelectionInfo.UpAll"),
                           new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                           new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL))
                    .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                    for (final HostDrbdInfo hi : selectedHostInfos) {
                        if (!hi.getHost().isDrbdStatusOk()) {
                            return HostDrbdInfo.NO_DRBD_STATUS_TOOLTIP;
                        }
                    }
                    return null;
                }})
                .addAction(new MenuAction() {
                        @Override
                        public void run(final String text) {
                    for (final HostDrbdInfo hi : selectedHostInfos) {
                        DRBD.up(hi.getHost(), DRBD.ALL_DRBD_RESOURCES, null, Application.RunMode.LIVE);
                    }
                }});
        items.add(upAllItem);
        final ButtonCallback upAllItemCallback =
             getBrowser().new DRBDMenuItemCallback(getBrowser().getDCHost())
                 .addAction(new CallbackAction() {
                         @Override
                         public void run(final Host host) {
                for (final HostDrbdInfo hi : selectedHostInfos) {
                    DRBD.up(hi.getHost(), DRBD.ALL_DRBD_RESOURCES, null, Application.RunMode.TEST);
                }
            }});
        multiSelectionInfo.addMouseOverListener(upAllItem, upAllItemCallback);

        /* stop drbd proxy with init script */
        final UpdatableItem stopProxyItem =
            menuFactory.createMenuItem(
                        Tools.getString("MultiSelectionInfo.HostStopProxy"),
                        null,
                        Tools.getString("MultiSelectionInfo.HostStopProxy"),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .visiblePredicate(new VisiblePredicate() {
                        @Override
                        public boolean check() {
                    for (final HostDrbdInfo hi : selectedHostInfos) {
                        if (hi.getHost().isDrbdProxyRunning()) {
                            return true;
                        }
                    }
                    return false;
                }})
                .addAction(new MenuAction() {
                        @Override
                        public void run(final String text) {
                    for (final HostDrbdInfo hi : selectedHostInfos) {
                        DRBD.stopProxy(hi.getHost(), Application.RunMode.LIVE);
                    }
                    for (final HostDrbdInfo hi : selectedHostInfos) {
                        getBrowser().updateHWInfo(hi.getHost(), !Host.UPDATE_LVM);
                    }
                }});
        items.add(stopProxyItem);

        /* start drbd proxy with init script */
        final UpdatableItem startProxyItem = menuFactory.createMenuItem(
                      Tools.getString("MultiSelectionInfo.HostStartProxy"),
                      null,
                      Tools.getString("MultiSelectionInfo.HostStartProxy"),
                      new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                      new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .visiblePredicate(new VisiblePredicate() {
                        @Override
                        public boolean check() {
                    for (final HostDrbdInfo hi : selectedHostInfos) {
                        if (!hi.getHost().isDrbdProxyRunning()) {
                            return true;
                        }
                    }
                    return false;
                }})
                .addAction(new MenuAction() {
                        @Override
                        public void run(final String text) {
                    for (final HostDrbdInfo hi : selectedHostInfos) {
                        DRBD.startProxy(hi.getHost(), Application.RunMode.LIVE);
                    }
                    for (final HostDrbdInfo hi : selectedHostInfos) {
                        getBrowser().updateHWInfo(hi.getHost(), !Host.UPDATE_LVM);
                    }
                }});
        items.add(startProxyItem);

        /* change host color */
        final UpdatableItem changeHostColorItem = menuFactory.createMenuItem(
                    Tools.getString("MultiSelectionInfo.ChangeHostColor"),
                    null,
                    "",
                    new AccessMode(AccessMode.RO, AccessMode.NORMAL),
                    new AccessMode(AccessMode.RO, AccessMode.NORMAL))
                .addAction(new MenuAction() {
                    @Override
                    public void run(final String text) {
                        final Host firstHost = selectedHostInfos.get(0).getHost();
                        final Color newColor = JColorChooser.showDialog(
                                guiData.getMainFrame(),
View Full Code Here

TOP

Related Classes of lcmc.common.ui.utils.MenuAction

Copyright © 2018 www.massapicom. 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.