question

Upvotes
Accepted
1 1 1 1

How to get service and PE for any user?

I have user details and I want to the services and exchange codes he is entitled to. How to achieve it?

DACSopen-dacs
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Hello @Ashish Gupta

Thank you for your participation in the forum. Is the reply below satisfactory in resolving your query?


If so please can you click the 'Accept' text next to the appropriate reply. This will guide all community members who have a similar question.

Thanks,


AHS

@Ashish Gupta

Hi,

Please be informed that a reply has been verified as correct in answering the question, and has been marked as such.

Thanks,

AHS

Upvote
Accepted
32.2k 40 11 20

Hello @Ashish Gupta,

In Developer Guide for your language option, for example OpenDacs - Java Development Guides look up AuthorizationAgent -> getPEList().

If you are just starting with OpenDACS I would suggest to first work through OpenDACS QuickStart Guide and OpenDACS Tutorials (I include likes to Java, the exact same materials can be found in C++ and .Net),

as together, these materials give a working understanding of the fundamentals of OpenDACS API.

Hope this helps

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
9.6k 10 7 7

Hello @Ashish Gupta

You can modify DacsSubscribeClient.java to get the list of services on DACS as example snipped source code below:

  private Vector<AuthorizationServiceAttributes> _getServiceAttributes() {
        try  {
            // AuthorizableServiceAttributes is an instance for keeping 
            // attributes information of an authorizable service.
            Vector<AuthorizationServiceAttributes> services = new Vector<AuthorizationServiceAttributes>();
            /*
             * Pass the vector of AuthorizableServiceAttribute instances as 
             * a parameter of the AuthorizationAgent's getServiceAttributes()
             * method.It will be pushed the attributes of all authorizable 
             * services within that method.
             */
            AuthorizationCheckResult authCheckResult = _agent.getServiceAttributes(services);
            // Check the result of calling the getServiceAttributes() method.
            if (authCheckResult == AuthorizationCheckResult.ACCESS_ALLOWED) {
                // Calling the method success.
                return services;
            } else {
                // Calling the method failed, return null.
                return null;
            }
        } catch (AuthorizationException ae) {
            System.err.println("AuthorizationAgent.getServiceAttributes() failed");
            return null;
        }
    }

Then, check if the user is entitled to each service.

public void checkAuthorizableServices() {
        Vector<AuthorizationServiceAttributes> services = _getServiceAttributes();
        if (services != null) {
            System.out.println("Connected DACS server has " + services.size()
                    + " authorizable service(s)");
            for (int i = 0; i < services.size(); i++) {
                AuthorizationServiceAttributes attrs = services.get(i);
                System.out.println("#" + (i + 1) + "#");
                System.out.println("  Service   ID: "
                        + attrs.getServiceId());
                System.out.println("  Service Name: "
                        + attrs.getServiceName());
                System.out.println("  Service Type: "
                        + attrs.getServiceType());
                System.out.println("  Service  Qos: "
                        + attrs.getServiceQoS());
                 AuthorizationCheckStatus authCheckStatus = new AuthorizationCheckStatus();
                 try {
                     AuthorizationCheckResult     authCheckResult = _agent.checkSubscription(_handle, _usage, _reqtype,
                         authCheckStatus,services.get(i).getServiceName());
                     if (authCheckResult == AuthorizationCheckResult.ACCESS_ALLOWED) {
                         System.out.println("[" + _daemonHost + "] " + _name +
                          " allowed subscription access to service " + services.get(i).getServiceName());
                     }
                     else {
                         System.out.println("[" + _daemonHost + "] " + _name +
                          " denied subscription access to service " + services.get(i).getServiceName());
                         System.out.println("status message - " +
                          authCheckStatus.getStatusText());
             }
   } catch (AuthorizationException ae) {
     // In case the exception occurs during calling method.
     System.err.println("[" + _daemonHost + "] " + _name +
                        " check subscription service  " + services.get(i).getServiceName() +
                        " failed");
           }
            }
        }
}

The example output:


exampleoutput.png (26.3 KiB)
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.