Package lcmc.common.domain

Examples of lcmc.common.domain.AccessMode


        /* host wizard */
        final MyMenuItem hostWizardItem =
                menuFactory.createMenuItem(Tools.getString("HostBrowser.HostWizard"),
                        HostBrowser.HOST_ICON_LARGE,
                        Tools.getString("HostBrowser.HostWizard"),
                        new AccessMode(AccessMode.RO, AccessMode.NORMAL),
                        new AccessMode(AccessMode.RO, AccessMode.NORMAL))
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                editHostDialog.showDialogs(host);
                            }
                        });
        items.add(hostWizardItem);
        guiData.registerAddHostButton(hostWizardItem);

        /* proxy host wizard */
        final MyMenuItem proxyHostWizardItem =
                menuFactory.createMenuItem(Tools.getString("HostBrowser.ProxyHostWizard"),
                        HostBrowser.HOST_ICON_LARGE,
                        Tools.getString("HostBrowser.ProxyHostWizard"),
                        new AccessMode(AccessMode.RO, AccessMode.NORMAL),
                        new AccessMode(AccessMode.RO, AccessMode.NORMAL))
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                proxyHostWizard.init(host, null);
                                proxyHostWizard.showDialogs();
                            }
                        });
        items.add(proxyHostWizardItem);
        guiData.registerAddHostButton(proxyHostWizardItem);
        final Application.RunMode runMode = Application.RunMode.LIVE;
        /* load drbd */
        final UpdatableItem loadItem =
                menuFactory.createMenuItem(Tools.getString("HostBrowser.Drbd.LoadDrbd"),
                        null,
                        Tools.getString("HostBrowser.Drbd.LoadDrbd"),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (host.isConnected()) {
                                    if (host.isDrbdLoaded()) {
                                        return "already loaded";
                                    } else {
                                        return null;
                                    }
                                } else {
                                    return Host.NOT_CONNECTED_MENU_TOOLTIP_TEXT;
                                }
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                DRBD.load(host, runMode);
                                hostDrbdInfo.getBrowser().getClusterBrowser().updateHWInfo(host, !Host.UPDATE_LVM);
                            }
                        });
        items.add(loadItem);

        /* proxy start/stop */
        final UpdatableItem proxyItem =
                menuFactory.createMenuItem(Tools.getString("HostDrbdInfo.Drbd.StopProxy"),
                        null,
                        hostDrbdInfo.getMenuToolTip("DRBD.stopProxy", ""),
                        Tools.getString("HostDrbdInfo.Drbd.StartProxy"),
                        null,
                        hostDrbdInfo.getMenuToolTip("DRBD.startProxy", ""),
                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .predicate(new Predicate() {
                            @Override
                            public boolean check() {
                                return host.isDrbdProxyRunning();
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                if (host.isDrbdProxyRunning()) {
                                    DRBD.stopProxy(host, runMode);
                                } else {
                                    DRBD.startProxy(host, runMode);
                                }
                                hostDrbdInfo.getBrowser().getClusterBrowser().updateHWInfo(host, !Host.UPDATE_LVM);
                            }
                        });
        items.add(proxyItem);

        /* all proxy connections up */
        final UpdatableItem allProxyUpItem =
                menuFactory.createMenuItem(Tools.getString("HostDrbdInfo.Drbd.AllProxyUp"),
                        null,
                        hostDrbdInfo.getMenuToolTip("DRBD.proxyUp", DRBD.ALL_DRBD_RESOURCES),
                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                return host.isConnected() && host.isDrbdProxyRunning();
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                DRBD.proxyUp(host, DRBD.ALL_DRBD_RESOURCES, null, runMode);
                                hostDrbdInfo.getBrowser().getClusterBrowser().updateHWInfo(host, !Host.UPDATE_LVM);
                            }
                        });
        items.add(allProxyUpItem);

        /* all proxy connections down */
        final UpdatableItem allProxyDownItem =
                menuFactory.createMenuItem(Tools.getString("HostDrbdInfo.Drbd.AllProxyDown"),
                        null,
                        hostDrbdInfo.getMenuToolTip("DRBD.proxyDown", DRBD.ALL_DRBD_RESOURCES),
                        new AccessMode(AccessMode.ADMIN, AccessMode.ADVANCED),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                return host.isConnected() && host.isDrbdProxyRunning();
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                DRBD.proxyDown(host, DRBD.ALL_DRBD_RESOURCES, null, runMode);
                                hostDrbdInfo.getBrowser().getClusterBrowser().updateHWInfo(host, !Host.UPDATE_LVM);
                            }
                        });
        items.add(allProxyDownItem);

        /* load DRBD config / adjust all */
        final MyMenuItem adjustAllItem =
                menuFactory.createMenuItem(Tools.getString("HostBrowser.Drbd.AdjustAllDrbd"),
                        null,
                        Tools.getString("HostBrowser.Drbd.AdjustAllDrbd.ToolTip"),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (host.isConnected()) {
                                    return null;
                                } else {
                                    return Host.NOT_CONNECTED_MENU_TOOLTIP_TEXT;
                                }
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                DRBD.adjust(host, DRBD.ALL_DRBD_RESOURCES, null, runMode);
                                hostDrbdInfo.getBrowser().getClusterBrowser().updateHWInfo(host, !Host.UPDATE_LVM);
                            }
                        });
        items.add(adjustAllItem);
        final ClusterBrowser cb = hostDrbdInfo.getBrowser().getClusterBrowser();
        if (cb != null) {
            final ButtonCallback adjustAllItemCallback = cb.new DRBDMenuItemCallback(host)
                    .addAction(new CallbackAction() {
                        @Override
                        public void run(final Host host) {
                            DRBD.adjust(host, DRBD.ALL_DRBD_RESOURCES, null, Application.RunMode.TEST);
                        }
                    });
            hostDrbdInfo.addMouseOverListener(adjustAllItem, adjustAllItemCallback);
        }

        /* start drbd */
        final MyMenuItem upAllItem =
                menuFactory.createMenuItem(Tools.getString("HostBrowser.Drbd.UpAll"),
                        null,
                        Tools.getString("HostBrowser.Drbd.UpAll"),
                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL))
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (!host.isDrbdStatusOk()) {
                                    return HostDrbdInfo.NO_DRBD_STATUS_TOOLTIP;
                                }
                                return null;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                DRBD.up(host, DRBD.ALL_DRBD_RESOURCES, null, runMode);
                            }
                        });
        items.add(upAllItem);
        if (cb != null) {
            final ButtonCallback upAllItemCallback = cb.new DRBDMenuItemCallback(host)
                    .addAction(new CallbackAction() {
                        @Override
                        public void run(final Host host) {
                            DRBD.up(host, DRBD.ALL_DRBD_RESOURCES, null, Application.RunMode.TEST);
                        }
                    });
            hostDrbdInfo.addMouseOverListener(upAllItem, upAllItemCallback);
        }

        /* change host color */
        final UpdatableItem changeHostColorItem =
                menuFactory.createMenuItem(Tools.getString("HostBrowser.Drbd.ChangeHostColor"),
                        null,
                        Tools.getString("HostBrowser.Drbd.ChangeHostColor"),
                        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 " + host.getName() + " color",
                                        host.getPmColors()[0]);
                                if (newColor != null) {
                                    host.setSavedHostColorInGraphs(newColor);
                                }
                            }
                        });
        items.add(changeHostColorItem);

        /* view logs */
        final UpdatableItem viewLogsItem =
                menuFactory.createMenuItem(Tools.getString("HostBrowser.Drbd.ViewLogs"),
                        Info.LOGFILE_ICON,
                        Tools.getString("HostBrowser.Drbd.ViewLogs"),
                        new AccessMode(AccessMode.RO, AccessMode.NORMAL),
                        new AccessMode(AccessMode.RO, 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 DrbdsLog drbdsLog = drbdsLogProvider.get();
                                drbdsLog.init(host);
                                drbdsLog.showDialog();
                            }
                        });
        items.add(viewLogsItem);

        /* connect all */
        final MyMenuItem connectAllItem =
                menuFactory.createMenuItem(Tools.getString("HostBrowser.Drbd.ConnectAll"),
                        null,
                        Tools.getString("HostBrowser.Drbd.ConnectAll"),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (host.isDrbdStatusOk()) {
                                    return null;
                                } else {
                                    return HostDrbdInfo.NO_DRBD_STATUS_TOOLTIP;
                                }
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                DRBD.connect(host, DRBD.ALL_DRBD_RESOURCES, null, Application.RunMode.TEST);
                            }
                        });
        items.add(connectAllItem);
        if (cb != null) {
            final ButtonCallback connectAllItemCallback = cb.new DRBDMenuItemCallback(host)
                    .addAction(new CallbackAction() {
                        @Override
                        public void run(final Host host) {
                            DRBD.connect(host, DRBD.ALL_DRBD_RESOURCES, null, Application.RunMode.TEST);
                        }
                    });
            hostDrbdInfo.addMouseOverListener(connectAllItem, connectAllItemCallback);
        }

        /* disconnect all */
        final MyMenuItem disconnectAllItem =
                menuFactory.createMenuItem(Tools.getString("HostBrowser.Drbd.DisconnectAll"),
                        null,
                        Tools.getString("HostBrowser.Drbd.DisconnectAll"),
                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (host.isDrbdStatusOk()) {
                                    return null;
                                } else {
                                    return HostDrbdInfo.NO_DRBD_STATUS_TOOLTIP;
                                }
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                DRBD.disconnect(host, DRBD.ALL_DRBD_RESOURCES, null, runMode);
                            }
                        });
        items.add(disconnectAllItem);
        if (cb != null) {
            final ButtonCallback disconnectAllItemCallback = cb.new DRBDMenuItemCallback(host)
                    .addAction(new CallbackAction() {
                        @Override
                        public void run(final Host host) {
                            DRBD.disconnect(host, DRBD.ALL_DRBD_RESOURCES, null, Application.RunMode.TEST);
                        }
                    });
            hostDrbdInfo.addMouseOverListener(disconnectAllItem, disconnectAllItemCallback);
        }

        /* attach dettached */
        final MyMenuItem attachAllItem =
                menuFactory.createMenuItem(Tools.getString("HostBrowser.Drbd.AttachAll"),
                        null,
                        Tools.getString("HostBrowser.Drbd.AttachAll"),
                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (host.isDrbdStatusOk()) {
                                    return null;
                                } else {
                                    return HostDrbdInfo.NO_DRBD_STATUS_TOOLTIP;
                                }
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                DRBD.attach(host, DRBD.ALL_DRBD_RESOURCES, null, runMode);
                            }
                        });
        items.add(attachAllItem);
        if (cb != null) {
            final ButtonCallback attachAllItemCallback = cb.new DRBDMenuItemCallback(host)
                    .addAction(new CallbackAction() {
                        @Override
                        public void run(final Host host) {
                            DRBD.attach(host, DRBD.ALL_DRBD_RESOURCES, null, Application.RunMode.TEST);
                        }
                    });
            hostDrbdInfo.addMouseOverListener(attachAllItem, attachAllItemCallback);
        }

        /* detach */
        final MyMenuItem detachAllItem =
                menuFactory.createMenuItem(Tools.getString("HostBrowser.Drbd.DetachAll"),
                        null,
                        Tools.getString("HostBrowser.Drbd.DetachAll"),
                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (host.isDrbdStatusOk()) {
                                    return null;
                                } else {
                                    return HostDrbdInfo.NO_DRBD_STATUS_TOOLTIP;
                                }
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                DRBD.detach(host, DRBD.ALL_DRBD_RESOURCES, null, runMode);
                            }
                        });
        items.add(detachAllItem);
        if (cb != null) {
            final ButtonCallback detachAllItemCallback = cb.new DRBDMenuItemCallback(host)
                    .addAction(new CallbackAction() {
                        @Override
                        public void run(final Host host) {
                            DRBD.detach(host, DRBD.ALL_DRBD_RESOURCES, null, Application.RunMode.TEST);
                        }
                    });
            hostDrbdInfo.addMouseOverListener(detachAllItem, detachAllItemCallback);
        }

        /* set all primary */
        final MyMenuItem setAllPrimaryItem =
                menuFactory.createMenuItem(Tools.getString("HostBrowser.Drbd.SetAllPrimary"),
                        null,
                        Tools.getString("HostBrowser.Drbd.SetAllPrimary"),
                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (host.isDrbdStatusOk()) {
                                    return null;
                                } else {
                                    return HostDrbdInfo.NO_DRBD_STATUS_TOOLTIP;
                                }
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                DRBD.setPrimary(host, DRBD.ALL_DRBD_RESOURCES, null, runMode);
                            }
                        });
        items.add(setAllPrimaryItem);
        if (cb != null) {
            final ButtonCallback setAllPrimaryItemCallback = cb.new DRBDMenuItemCallback(host)
                    .addAction(new CallbackAction() {
                        @Override
                        public void run(final Host host) {
                            DRBD.setPrimary(host, DRBD.ALL_DRBD_RESOURCES, null, Application.RunMode.TEST);
                        }
                    });
            hostDrbdInfo.addMouseOverListener(setAllPrimaryItem, setAllPrimaryItemCallback);
        }

        /* set all secondary */
        final MyMenuItem setAllSecondaryItem =
                menuFactory.createMenuItem(Tools.getString("HostBrowser.Drbd.SetAllSecondary"),
                        null,
                        Tools.getString("HostBrowser.Drbd.SetAllSecondary"),
                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL))
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (host.isDrbdStatusOk()) {
                                    return null;
                                } else {
                                    return HostDrbdInfo.NO_DRBD_STATUS_TOOLTIP;
                                }
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                DRBD.setSecondary(host, DRBD.ALL_DRBD_RESOURCES, null, runMode);
                            }
                        });
        items.add(setAllSecondaryItem);
        if (cb != null) {
            final ButtonCallback setAllSecondaryItemCallback = cb.new DRBDMenuItemCallback(host)
                    .addAction(new CallbackAction() {
                        @Override
                        public void run(final Host host) {
                            DRBD.setSecondary(host, DRBD.ALL_DRBD_RESOURCES, null, Application.RunMode.TEST);
                        }
                    });
            hostDrbdInfo.addMouseOverListener(setAllSecondaryItem, setAllSecondaryItemCallback);
        }

        /* 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 (!host.isInCluster()) {
                                    return "it is a member of a cluster";
                                }
                                return null;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                host.disconnect();
                                application.removeHostFromHosts(host);
                                guiData.allHostsUpdate();
                            }
                        });
        items.add(removeHostItem);

        /* advanced 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 (!host.isConnected()) {
                            return Host.NOT_CONNECTED_MENU_TOOLTIP_TEXT;
View Full Code Here


    /**
     * Returns lvm menu.
     */
    private UpdatableItem getLVMMenu(final Host host) {
        final MyMenu lvmMenu = menuFactory.createMenu(LVM_MENU,
                new AccessMode(AccessMode.OP, AccessMode.ADVANCED),
                new AccessMode(AccessMode.OP, AccessMode.ADVANCED));
        lvmMenu.onUpdate(new Runnable() {
            @Override
            public void run() {
                lvmMenu.updateMenuComponents();
                addLVMMenu(lvmMenu, host);
View Full Code Here

    private MyMenuItem getVGCreateItem(final Host host) {
        final MyMenuItem mi = menuFactory.createMenuItem(VG_CREATE_MENU_ITEM,
                null,
                VG_CREATE_MENU_DESCRIPTION,
                new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .addAction(new MenuAction() {
                    @Override
                    public void run(final String text) {
                        final VGCreate vgCreate = vgCreateProvider.get();
                        vgCreate.init(host);
View Full Code Here

    private MyMenuItem getLVMCreateItem(final String volumeGroup, final BlockDevice blockDevice, final Host host) {
        final String name = LV_CREATE_MENU_ITEM + volumeGroup;
        final MyMenuItem mi = menuFactory.createMenuItem(name,
                null,
                LV_CREATE_MENU_DESCRIPTION,
                new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .visiblePredicate(new VisiblePredicate() {
                    @Override
                    public boolean check() {
                        return volumeGroup != null
                                && !volumeGroup.isEmpty()
View Full Code Here

        this.blockDevInfo = blockDevInfo;
        final List<UpdatableItem> items = new ArrayList<UpdatableItem>();
        final Application.RunMode runMode = Application.RunMode.LIVE;
        final MyMenu repMenuItem = menuFactory.createMenu(
                Tools.getString("HostBrowser.Drbd.AddDrbdResource"),
                new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .enablePredicate(new EnablePredicate() {
                    @Override
                    public String check() {
                        final DrbdXml dxml = getClusterBrowser().getDrbdXml();
                        if (getDrbdVolumeInfo() != null) {
                            return "it is already a drbd resouce";
                        } else if (!getHost().isConnected()) {
                            return Host.NOT_CONNECTED_MENU_TOOLTIP_TEXT;
                        } else if (!getHost().isDrbdLoaded()) {
                            return "drbd is not loaded";
                        } else if (getBlockDevice().isMounted()) {
                            return "is mounted";
                        } else if (getBlockDevice().isVolumeGroupOnPhysicalVolume()) {
                            return "is volume group";
                        } else if (!getBlockDevice().isAvailable()) {
                            return "not available";
                        } else if (dxml.isDrbdDisabled()) {
                            return "disabled because of config";
                        } else {
                            final String noavail = getClusterBrowser().isDrbdAvailable(getHost());
                            if (noavail != null) {
                                return "DRBD installation problem: " + noavail;
                            }
                        }
                        return null;
                    }
                });
        repMenuItem.onUpdate(new Runnable() {
            @Override
            public void run() {
                repMenuItem.updateMenuComponents();
                final Cluster cluster = getHost().getCluster();
                final Host[] otherHosts = cluster.getHostsArray();
                final Collection<MyMenu> hostMenus = new ArrayList<MyMenu>();
                for (final Host oHost : otherHosts) {
                    if (oHost == getHost()) {
                        continue;
                    }
                    final MyMenu hostMenu = menuFactory.createMenu(oHost.getName(),
                            new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                            new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                            .enablePredicate(new EnablePredicate() {
                                @Override
                                public String check() {
                                    final DrbdXml dxml = getClusterBrowser().getDrbdXml();
                                    if (!oHost.isConnected()) {
                                        return Host.NOT_CONNECTED_MENU_TOOLTIP_TEXT;
                                    } else if (!oHost.isDrbdLoaded()) {
                                        return "drbd is not loaded";
                                    } else {
                                        final String noavail = getClusterBrowser().isDrbdAvailable(getHost());
                                        if (noavail != null) {
                                            return "DRBD installation problem: " + noavail;
                                        }
                                        return null;
                                    }
                                }
                            });
                    hostMenu.onUpdate(new Runnable() {
                        @Override
                        public void run() {
                            hostMenu.updateMenuComponents();
                            hostMenu.removeAll();
                            final Set<BlockDevInfo> blockDevInfos = oHost.getBrowser().getSortedBlockDevInfos();
                            final List<BlockDevInfo> blockDevInfosS = new ArrayList<BlockDevInfo>();
                            for (final BlockDevInfo oBdi : blockDevInfos) {
                                if (oBdi.getName().equals(getBlockDevice().getName())) {
                                    blockDevInfosS.add(0, oBdi);
                                } else {
                                    blockDevInfosS.add(oBdi);
                                }
                            }

                            for (final BlockDevInfo oBdi : blockDevInfosS) {
                                if (oBdi.getDrbdVolumeInfo() == null && oBdi.getBlockDevice().isAvailable()) {
                                    hostMenu.add(addDrbdResourceMenuItem(oBdi, runMode));
                                }
                                if (oBdi.getName().equals(getBlockDevice().getName())) {
                                    hostMenu.addSeparator();
                                }
                            }
                            hostMenu.processAccessMode();
                        }
                    });
                    hostMenu.updateAndWait();
                    hostMenus.add(hostMenu);
                }
                repMenuItem.removeAll();
                for (final MyMenu hostMenu : hostMenus) {
                    repMenuItem.add(hostMenu);
                }
                repMenuItem.processAccessMode();

            }
        });
        items.add(repMenuItem);
        items.add(getPVCreateItem());
        items.add(getPVRemoveItem());
        items.add(getVGCreateItem());
        items.add(getVGRemoveItem());
        items.add(getLVCreateItem());
        items.add(getLVRemoveItem());
        items.add(getLVResizeItem());
        items.add(getLVSnapshotItem());
        final MyMenuItem attachMenu =
                menuFactory.createMenuItem(Tools.getString("HostBrowser.Drbd.Detach"),
                        BlockDevInfo.NO_HARDDISK_ICON_LARGE,
                        Tools.getString("HostBrowser.Drbd.Detach.ToolTip"),

                        Tools.getString("HostBrowser.Drbd.Attach"),
                        BlockDevInfo.HARDDISK_DRBD_ICON_LARGE,
                        Tools.getString("HostBrowser.Drbd.Attach.ToolTip"),
                        new AccessMode(AccessMode.OP, AccessMode.ADVANCED),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .predicate(new Predicate() {
                            @Override
                            public boolean check() {
                                return !getBlockDevice().isDrbd() || getBlockDevice().isAttached();
                            }
                        })

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

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

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

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

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

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

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

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

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

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

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

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

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

     */
    private MyMenuItem addDrbdResourceMenuItem(final BlockDevInfo oBdi, final Application.RunMode runMode) {
        final MyMenuItem drbdResourceMenuItem = menuFactory.createMenuItem(oBdi.toString(),
                null,
                null,
                new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                new AccessMode(AccessMode.OP, AccessMode.NORMAL));
        drbdResourceMenuItem.addAction(new MenuAction() {
            @Override
            public void run(final String text) {
                drbdResourceMenuItem.cleanup();
                blockDevInfo.resetInfoPanel();
View Full Code Here

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

    private UpdatableItem getPVRemoveItem() {
        return menuFactory.createMenuItem(PV_REMOVE_MENU_ITEM,
                null,
                PV_REMOVE_MENU_DESCRIPTION,
                new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .visiblePredicate(new VisiblePredicate() {
                    @Override
                    public boolean check() {
                        return blockDevInfo.canRemovePV();
                    }
View Full Code Here

    private UpdatableItem getVGCreateItem() {
        return menuFactory.createMenuItem(
                VG_CREATE_MENU_ITEM,
                null,
                VG_CREATE_MENU_DESCRIPTION,
                new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .visiblePredicate(new VisiblePredicate() {
                    @Override
                    public boolean check() {
                        final BlockDevice bd;
                        if (getBlockDevice().isDrbd()) {
View Full Code Here

    private UpdatableItem getVGRemoveItem() {
        return menuFactory.createMenuItem(VG_REMOVE_MENU_ITEM,
                null,
                VG_REMOVE_MENU_DESCRIPTION,
                new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .visiblePredicate(new VisiblePredicate() {
                    @Override
                    public boolean check() {
                        final BlockDevice bd;
                        if (getBlockDevice().isDrbd()) {
View Full Code Here

TOP

Related Classes of lcmc.common.domain.AccessMode

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.