Package lcmc.host.domain

Examples of lcmc.host.domain.Host


                            @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()
                                            && !h.isPacemakerRunning()
                                            && (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) {
                                    Corosync.startPacemaker(hi.getHost());
                                }
                                for (final HostInfo hi : selectedHostInfos) {
                                    getBrowser().updateHWInfo(hi.getHost(), !Host.UPDATE_LVM);
                                }
                            }
                        });
        final ButtonCallback startPcmkItemCallback =
                getBrowser().new ClMenuItemCallback(getBrowser().getDCHost())
                        .addAction(new CallbackAction() {
                            @Override
                            public void run(final Host dcHost) {
                                //TODO
                            }
                        });
        pcmkMultiSelectionInfo.addMouseOverListener(startPcmkItem, startPcmkItemCallback);
        items.add(startPcmkItem);
        /* change host color */
        final UpdatableItem changeHostColorItem =
                menuFactory.createMenuItem(
                        Tools.getString("PcmkMultiSelectionInfo.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(),
                                        "Choose " + selectedHostInfos + " color",
                                        firstHost.getPmColors()[0]);
                                for (final HostInfo hi : selectedHostInfos) {
                                    if (newColor != null) {
                                        hi.getHost().setSavedHostColorInGraphs(newColor);
                                    }
                                }
View Full Code Here


                        })
                        .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.startResource(dcHost, Application.RunMode.LIVE);
                                }
                            }
                        });
        final ButtonCallback startItemCallback = 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.startResource(dcHost, Application.RunMode.TEST);
                        }
                    }
                });
        pcmkMultiSelectionInfo.addMouseOverListener(startMenuItem, startItemCallback);
        items.add((UpdatableItem) startMenuItem);
        /* stop resources */
        final ComponentWithTest stopMenuItem =
                menuFactory.createMenuItem(Tools.getString("PcmkMultiSelectionInfo.StopSelectedResources"),
                        ServiceInfo.STOP_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 (getBrowser().crmStatusFailed()) {
                                    return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                                }
                                boolean allStopped = true;
                                for (final ServiceInfo si : selectedServiceInfos) {
                                    if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                        continue;
                                    }
                                    if (!si.isStopped(Application.RunMode.LIVE)) {
                                        allStopped = false;
                                    }
                                    final String avail = si.getService().isAvailableWithText();
                                    if (avail != null) {
                                        return avail;
                                    }
                                }
                                if (allStopped) {
                                    return Tools.getString("ServiceInfo.AlreadyStopped");
                                }
                                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.stopResource(dcHost, Application.RunMode.LIVE);
                                }
                            }
                        });
        final ButtonCallback stopItemCallback = 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.stopResource(dcHost, Application.RunMode.TEST);
                        }
                    }
                });
        pcmkMultiSelectionInfo.addMouseOverListener(stopMenuItem, stopItemCallback);
        items.add((UpdatableItem) stopMenuItem);

        /* clean up resource */
        final UpdatableItem cleanupMenuItem =
                menuFactory.createMenuItem(
                        Tools.getString("PcmkMultiSelectionInfo.CleanUpFailedResource"),
                        ServiceInfo.SERVICE_RUNNING_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,

                        Tools.getString("PcmkMultiSelectionInfo.CleanUpResource"),
                        ServiceInfo.SERVICE_RUNNING_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .predicate(new Predicate() {
                            @Override
                            public boolean check() {
                                for (final ServiceInfo si : selectedServiceInfos) {
                                    if (si.getService().isAvailable() && si.isOneFailed(Application.RunMode.LIVE)) {
                                        return true;
                                    }
                                }
                                return false;
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (getBrowser().crmStatusFailed()) {
                                    return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                                }
                                boolean failCount = false;
                                for (final ServiceInfo si : selectedServiceInfos) {
                                    if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                        continue;
                                    }
                                    if (si.isOneFailedCount(Application.RunMode.LIVE)) {
                                        failCount = true;
                                    }
                                }
                                if (!failCount) {
                                    return "no fail count";
                                }
                                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.cleanupResource(dcHost, Application.RunMode.LIVE);
                                }
                            }
                        });
        /* cleanup ignores CIB_file */
        items.add(cleanupMenuItem);

        /* manage resource */
        final ComponentWithTest manageMenuItem =
                menuFactory.createMenuItem(
                        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;
                                    }
                                    if (!getBrowser().crmStatusFailed()
                                            && si.getService().isAvailable()
                                            && (si.getMigratedTo(Application.RunMode.LIVE) != null
                                            || si.getMigratedFrom(Application.RunMode.LIVE) != null)) {
                                    } 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.unmigrateResource(dcHost, Application.RunMode.LIVE);
                                }
                            }
                        });
        final ButtonCallback unmigrateItemCallback = 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.unmigrateResource(dcHost, Application.RunMode.TEST);
                        }
                    }
                });
        pcmkMultiSelectionInfo.addMouseOverListener(unmigrateMenuItem, unmigrateItemCallback);
        items.add((UpdatableItem) unmigrateMenuItem);
        /* remove service */
        final ComponentWithTest removeMenuItem = menuFactory.createMenuItem(
                Tools.getString("PcmkMultiSelectionInfo.RemoveService"),
                ClusterBrowser.REMOVE_ICON,
                ClusterBrowser.STARTING_PTEST_TOOLTIP,
                new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .enablePredicate(new EnablePredicate() {
                    @Override
                    public String check() {
                        if (getBrowser().crmStatusFailed()) {
                            return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                        }
                        final ClusterStatus cs = getBrowser().getClusterStatus();
                        for (final ServiceInfo si : selectedServiceInfos) {
                            if (si.getService().isNew()) {
                                continue;
                            } else if (si.getService().isRemoved()) {
                                return ServiceInfo.IS_BEING_REMOVED_STRING;
                            } else if (si.isRunning(Application.RunMode.LIVE) && !application.isAdvancedMode()) {
                                return "cannot remove running resource<br>(advanced mode only)";
                            }
                            final GroupInfo gi = si.getGroupInfo();
                            if (gi == null) {
                                continue;
                            }
                            final List<String> gr = cs.getGroupResources(
                                    gi.getHeartbeatId(Application.RunMode.LIVE),
                                    Application.RunMode.LIVE);


                            if (gr == null || gr.size() <= 1) {
                                return "you can remove the group";
                            }
                        }
                        return null;
                    }
                })
                .addAction(new MenuAction() {
                    @Override
                    public void run(final String text) {
                        pcmkMultiSelectionInfo.hidePopup();
                        if (!application.confirmDialog(
                                Tools.getString("PcmkMultiSelectionInfo.confirmRemove.Title"),
                                Tools.getString("PcmkMultiSelectionInfo.confirmRemove.Desc"),
                                Tools.getString("PcmkMultiSelectionInfo.confirmRemove.Yes"),
                                Tools.getString("PcmkMultiSelectionInfo.confirmRemove.No"))) {
                            return;
                        }
                        final Host dcHost = getBrowser().getDCHost();
                        for (ServiceInfo si : selectedServiceInfos) {
                            final ServiceInfo cs = si.getContainedService();
                            if (cs != null) {
                                si = cs;
                            }
View Full Code Here

            /**
             * Whether the whole thing should be enabled.
             */
            @Override
            public boolean isEnabled() {
                final Host dcHost = getBrowser().getDCHost();
                return dcHost != null && !Tools.versionBeforePacemaker(dcHost);
            }
            @Override
            public void mouseOut(final ComponentWithTest component) {
                if (!isEnabled()) {
                    return;
                }
                mouseStillOver = false;
                getBrowser().getCrmGraph().stopTestAnimation((JComponent) component);
                component.setToolTipText("");
            }

            @Override
            public void mouseOver(final ComponentWithTest component) {
                if (!isEnabled()) {
                    return;
                }
                mouseStillOver = true;
                component.setToolTipText(
                                        ClusterBrowser.STARTING_PTEST_TOOLTIP);
                component.setToolTipBackground(Tools.getDefaultColor(
                                   "ClusterBrowser.Test.Tooltip.Background"));
                Tools.sleep(250);
                if (!mouseStillOver) {
                    return;
                }
                mouseStillOver = false;
                final CountDownLatch startTestLatch = new CountDownLatch(1);
                getBrowser().getCrmGraph().startTestAnimation((JComponent) component,
                                                              startTestLatch);
                final Host dcHost = getBrowser().getDCHost();
                getBrowser().ptestLockAcquire();
                try {
                    final ClusterStatus cs = getBrowser().getClusterStatus();
                    cs.setPtestResult(null);
                    apply(dcHost, Application.RunMode.TEST);
View Full Code Here

    private Application application;

    public void init() {
        setLayout(new BorderLayout());
        clustersPanel.init();
        final Host noHost = hostFactory.createInstance();
        final JSplitPane splitPane =
                                new JSplitPane(JSplitPane.VERTICAL_SPLIT, clustersPanel, noHost.getTerminalPanel());
        guiData.setTerminalSplitPane(splitPane);

        splitPane.setContinuousLayout(true);
        splitPane.setResizeWeight(1.0);
        splitPane.setOneTouchExpandable(true);
View Full Code Here

        crmOperationParams.put(CRM_STATUS_OPERATOR,
                               new ArrayList<String>(Arrays.asList(CRM_TIMEOUT_PARAMETER, CRM_INTERVAL_PARAMETER)));

        // TODO: need two monitors for role='Slave' and 'Master' in
        // master/slave resources
        final Host dcHost = getDCHost();
        if (Tools.versionBeforePacemaker(dcHost)) {
            crmOperationParams.put(CRM_MONITOR_OPERATOR,
                                   new ArrayList<String>(Arrays.asList(CRM_TIMEOUT_PARAMETER,
                                                                       CRM_INTERVAL_PARAMETER,
                                                                       CrmXml.PARAM_OCF_CHECK_LEVEL)));
View Full Code Here

                            drbdGraph.addHost(hostBrowser.getHostDrbdInfo());
                        }
                    }
                });
                int notConnectedCount = 0;
                Host firstHost = null;
                do { /* wait here until a host is connected. */
                    boolean notConnected = true;
                    for (final Host host : hosts) {
                        // TODO: fix that, use latches or callback
                        if (host.isConnected()) {
                            /* at least one connected. */
                            notConnected = false;
                            break;
                        }
                    }
                    if (notConnected) {
                        notConnectedCount++;
                    } else {
                        firstHost = getFirstHost();
                    }
                    if (firstHost == null) {
                        try {
                            Thread.sleep(30000);
                        } catch (final InterruptedException ex) {
                            Thread.currentThread().interrupt();
                        }
                        final boolean ok =
                                 cluster.connect(null, notConnectedCount < 1, notConnectedCount + 1);
                        if (!ok) {
                            break;
                        }
                    }
                } while (firstHost == null);
                if (firstHost == null) {
                    return;
                }
                if (!firstHost.isInCluster()) {
                    return;
                }

                LOG.debug1("updateHeartbeatDrbdThread: first host: " + firstHost);
                crmXml.init(firstHost, getServicesInfo());
View Full Code Here

        });
        thread.start();
        crmStatusCanceledByUser = false;
        final Application.RunMode runMode = Application.RunMode.LIVE;
        while (true) {
            final Host host = getDCHost();
            if (host == null) {
                try {
                    Thread.sleep(5000);
                } catch (final InterruptedException ex) {
                    Thread.currentThread().interrupt();
                }
                continue;
            }
            //clStatusCanceled = false;
            host.execCrmStatusCommand(
                    new ExecCallback() {
                        @Override
                        public void done(final String answer) {
                            final String online = clusterStatus.isOnlineNode(host.getName());
                            setCrmStatus(host, "yes".equals(online));
                            firstTime.countDown();
                        }

                        @Override
                        public void doneError(final String answer, final int exitCode) {
                            if (firstTime.getCount() == 1) {
                                LOG.debug2("startClStatus: status failed: " + host.getName() + ", ec: " + exitCode);
                            }
                            clStatusLock();
                            clusterStatus.setOnlineNode(host.getName(), "no");
                            setCrmStatus(host, false);
                            clusterStatus.setDC(null);
                            clStatusUnlock();
                            if (exitCode == 255) {
                             /* looks like connection was lost */
                                //crmGraph.repaint();
                                //host.getSSH().forceReconnect();
                                //host.setConnected();
                            }
                            firstTime.countDown();
                        }
                    },

                    new NewOutputCallback() {
                        //TODO: check this buffer's size
                        private final StringBuffer clusterStatusOutput = new StringBuffer(300);

                        @Override
                        public void output(final String output) {
                            parseClusterOutput(output, clusterStatusOutput, host, firstTime, runMode);
                        }
                    });
            host.waitForCrmStatusFinish();
            if (crmStatusCanceledByUser) {
                break;
            }
            try {
                Thread.sleep(5000);
View Full Code Here

            dc = cl.getDC();
        }
        final List<Host> hosts = new ArrayList<Host>();
        int lastHostIndex = 0;
        int i = 0;
        Host dcHost = null;
        for (final Host host : getClusterHosts()) {
            if (host == lastDcHostDetected) {
                lastHostIndex = i;
            }
            if (host.getName().equals(dc)
View Full Code Here

     */
    public boolean linbitDrbdConfirmDialog() {
        if (isDrbddiskRAPreferred()) {
            final String desc = Tools.getString("ClusterBrowser.confirmLinbitDrbd.Description");

            final Host dcHost = getDCHost();
            final String hbV = dcHost.getHeartbeatVersion();
            return application.confirmDialog(Tools.getString("ClusterBrowser.confirmLinbitDrbd.Title"),
                                       desc.replaceAll("@VERSION@", hbV),
                                       Tools.getString("ClusterBrowser.confirmLinbitDrbd.Yes"),
                                       Tools.getString("ClusterBrowser.confirmLinbitDrbd.No"));
        }
View Full Code Here

        @Override
        public boolean isEnabled() {
            if (clusterStatus == null) {
                return false;
            }
            final Host h;
            if (menuHost == null) {
                h = getDCHost();
            } else {
                h = menuHost;
            }
View Full Code Here

TOP

Related Classes of lcmc.host.domain.Host

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.