Package org.nimbustools.auto_config.groupauthz.harness

Source Code of org.nimbustools.auto_config.groupauthz.harness.ReportAll

/*
* Copyright 1999-2008 University of Chicago
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy
* of the License at
*
*    http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/

package org.nimbustools.auto_config.groupauthz.harness;

import org.globus.workspace.groupauthz.Group;
import org.globus.workspace.groupauthz.GroupRights;

import java.util.ArrayList;

public class ReportAll extends Action {

    public ReportAll(String confPath, String[] args, boolean debug) throws Exception {
        super(confPath, args, debug);
    }

    public void run() throws Exception {

        Group[] groups = this.groupAuthz.getGroups();
        if (groups == null || groups.length == 0) {
            System.out.println("The authz module has no groups configured, " +
                    "nothing to examine.");

            return; // *** EARLY RETURN ***
        }

        final ArrayList seenDNs = new ArrayList();
       
        for (int i = 0; i < groups.length; i++) {
            final Group group = groups[i];
            if (group != null) {
                System.out.println(
                    "\n------------------------------------------------\n");
                this.printGroup(group);
                System.out.println("");
                this.printIDs(group, seenDNs);
            }
        }
        System.out.println(
                    "\n------------------------------------------------\n");

    }

    public void printGroup(Group group) {

        if (group == null) {
            return;
        }

        final GroupRights rights = group.getRights();
        if (rights == null) {
            return;
        }

        System.out.println("GROUP: '" + group.getName() + "'");
        System.out.println(policyBrief(rights, "  "));
    }

    public static String policyBrief(GroupRights rights,
                                     String indent) {
       
        if (rights == null) {
            return null;
        }

        final StringBuffer buf = new StringBuffer();

        final long allMax = rights.getMaxElapsedReservedMinutes();
        String allMaxStr = allMax + " minutes";
        if (allMax == 0) {
            allMaxStr = "unlimited";
        }
        buf.append(indent)
           .append("- All-time max allowed usage: ")
           .append(allMaxStr);


        final long maxSimul = rights.getMaxReservedMinutes();
        String maxSimulStr = maxSimul + " minutes";
        if (maxSimul == 0) {
            maxSimulStr = "unlimited";
        }
        buf.append("\n")
           .append(indent)
           .append("- Max simultaneous reserved: ")
           .append(maxSimulStr);

        final long maxSimulVMs = rights.getMaxWorkspaceNumber();
        String maxSimulVMsStr = maxSimulVMs + "";
        if (maxSimulVMs == 0) {
            maxSimulVMsStr = "unlimited";
        }
        buf.append("\n")
           .append(indent)
           .append("- Max simultaneous VMs: ")
           .append(maxSimulVMsStr);


        final long maxGroupSize = rights.getMaxWorkspacesInGroup();
        String maxGroupSizeStr = maxGroupSize + "";
        if (maxGroupSize == 0) {
            maxGroupSizeStr = "unlimited";
        }
        buf.append("\n")
           .append(indent)
           .append("- Max VMs in one group request: ")
           .append(maxGroupSizeStr);

        return buf.toString();
    }

    public void printIDs(Group group, ArrayList seenDNs) throws Exception {
        if (group == null || seenDNs == null) {
            System.err.println("illegal, null arg");
            return;
        }
        String[] ids = group.getIdentities();
        if (ids == null || ids.length == 0) {
            System.out.println("[NO GROUP MEMBERS]");
            return;
        }

        for (int i = 0; i < ids.length; i++) {
            if (ids[i] != null) {
                final String dn = ids[i].trim();
                if (dn.length() != 0) {

                    if (seenDNs.contains(dn)) {
                        System.out.println(
                                "[[ *** duplicate, not in effect ]] \"" + dn + "\"");
                    } else {
                        System.out.println(
                                "[[ " + Hash.hash(dn) + " ]] \"" + dn + "\"");
                        seenDNs.add(dn);
                    }
                }
            }
        }
    }
}
TOP

Related Classes of org.nimbustools.auto_config.groupauthz.harness.ReportAll

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.