Upgrade to latest oparent
[aaf/authz.git] / authz-batch / src / main / java / com / att / authz / reports / NSDump.java
1 /*******************************************************************************
2  * Copyright (c) 2016 AT&T Intellectual Property. All rights reserved.
3  *******************************************************************************/
4 package com.att.authz.reports;
5
6 import java.io.IOException;
7 import java.io.PrintStream;
8 import java.util.Date;
9 import java.util.List;
10
11 import com.att.authz.Batch;
12 import com.att.authz.env.AuthzTrans;
13 import com.att.authz.helpers.Cred;
14 import com.att.authz.helpers.NS;
15 import com.att.authz.helpers.Perm;
16 import com.att.authz.helpers.Role;
17 import com.att.authz.helpers.UserRole;
18 import org.onap.aaf.inno.env.APIException;
19 import org.onap.aaf.inno.env.Env;
20 import org.onap.aaf.inno.env.TimeTaken;
21
22 public class NSDump extends Batch{
23         private PrintStream out = System.out;
24         private final String ns, admin, owner;
25         
26         public NSDump(AuthzTrans trans) throws APIException, IOException {
27                 super(trans.env());
28                 if(args().length>0) {
29                         ns = args()[0];
30                 } else {
31                         throw new APIException("NSDump requires \"NS\" parameter");
32                 }
33                 admin = ns + "|admin";
34                 owner = ns + "|owner";
35
36                 TimeTaken tt = trans.start("Connect to Cluster", Env.REMOTE);
37                 try {
38                         session = cluster.connect();
39                 } finally {
40                         tt.done();
41                 }
42
43                 NS.loadOne(trans, session,NS.v2_0_11,ns);
44                 Role.loadOneNS(trans, session, ns);
45                 if(Role.data.keySet().size()>5) {
46                         UserRole.load(trans, session,UserRole.v2_0_11);
47                 } else {
48                         for(Role r : Role.data.keySet()) {
49                                 UserRole.loadOneRole(trans, session, UserRole.v2_0_11, r.fullName());
50                         }
51                 }
52                 Perm.loadOneNS(trans,session,ns);
53                 Cred.loadOneNS(trans, session, ns);
54         }
55
56         @Override
57         protected void run(AuthzTrans trans) {
58                 Date now = new Date();
59                 for(NS ns : NS.data.values()) {
60                         out.format("# Data for Namespace [%s] - %s\n",ns.name,ns.description);
61                         out.format("ns create %s",ns);
62                         boolean first = true;
63                         List<UserRole> owners = UserRole.byRole.get(owner);
64                         if(owners!=null)for(UserRole ur : owners) {
65                                 if(first) {
66                                         out.append(' ');
67                                         first = false;
68                                 } else {
69                                         out.append(',');
70                                 }
71                                 out.append(ur.user);
72                         }
73                         first = true;
74                         List<UserRole> admins = UserRole.byRole.get(admin); 
75                         if(admins!=null)for(UserRole ur : admins) {
76                                 if(first) {
77                                         out.append(' ');
78                                         first = false;
79                                 } else {
80                                         out.append(',');
81                                 }
82                                 out.append(ur.user);
83                         }
84                         out.println();
85                         
86                         // Load Creds
87                         Date last;
88                         for(Cred c : Cred.data.values()) {
89                                 for(int i : c.types()) {
90                                         last = c.last(i);
91                                         if(last!=null && now.before(last)) {
92                                                 switch(i) {
93                                                         case 1:
94                                                                 out.format("    user cred add %s %s\n", c.id,"new2you!");
95                                                                 break;
96                                                         case 200:
97                                                                 out.format("    # CERT needs registering for %s\n", c.id);
98                                                                 break;
99                                                         default:
100                                                                 out.format("    # Unknown Type for %s\n", c.id);
101                                                 }
102                                         }
103                                 }
104                         }
105                         
106                         // Load Roles
107                         for(Role r : Role.data.keySet()) {
108                                 if(!"admin".equals(r.name) && !"owner".equals(r.name)) {
109                                         out.format("  role create %s\n",r.fullName());
110                                         List<UserRole> lur = UserRole.byRole.get(r.fullName());
111                                         if(lur!=null)for(UserRole ur : lur) {
112                                                 if(ur.expires.after(now)) {
113                                                         out.format("    request role user add %s %s\n", ur.role,ur.user);
114                                                 }
115                                         }
116                                 }
117                         }
118
119                         // Load Perms
120                         for(Perm r : Perm.data.keySet()) {
121                                 out.format("  perm create %s.%s %s %s\n",r.ns,r.type,r.instance,r.action);
122                                 for(String role : r.roles) {
123                                         out.format("    request perm grant %s.%s %s %s %s\n", r.ns,r.type,r.instance,r.action,Role.fullName(role));
124                                 }
125                         }
126
127                 }
128         }
129
130         @Override
131         protected void _close(AuthzTrans trans) {
132         session.close();
133         aspr.info("End " + this.getClass().getSimpleName() + " processing" );
134         }
135
136 }