Fix GUI Buttons

Issue-ID: AAF-435

Change-Id: I8b5e83609176a22b5aa54cac6fd0911488bd707b
Signed-off-by: Instrumental <jonathan.gathman@att.com>
diff --git a/auth/auth-cmd/src/main/java/org/onap/aaf/auth/cmd/AAFcli.java b/auth/auth-cmd/src/main/java/org/onap/aaf/auth/cmd/AAFcli.java
index ea36657..0222965 100644
--- a/auth/auth-cmd/src/main/java/org/onap/aaf/auth/cmd/AAFcli.java
+++ b/auth/auth-cmd/src/main/java/org/onap/aaf/auth/cmd/AAFcli.java
@@ -251,6 +251,41 @@
                 } else if ("exit".equalsIgnoreCase(largs[idx])) {
                     pw.println("Exiting...");
                     return false;
+                } else if ("set".equalsIgnoreCase(largs[idx])) {
+                    while (largs.length > ++idx) {
+                        int equals = largs[idx].indexOf('=');
+                        String tag, value;
+                        if (equals < 0) {
+                            tag = largs[idx];
+                            value = access.getProperty(Config.AAF_APPPASS,null);
+                            if (value==null) {
+                                break;
+                            } else {
+                                value = access.decrypt(value, false);
+                                if (value==null) {
+                                    break;
+                                }
+                                access.getProperties().put(tag, value);
+                                pw.println("set " + tag + " <encrypted>");
+                            }
+                        } else {
+                            tag = largs[idx].substring(0, equals);
+                            value = largs[idx].substring(++equals);
+                            pw.println("set " + tag + ' ' + value);
+                        }
+                        boolean isTrue = "TRUE".equalsIgnoreCase(value);
+                        if ("FORCE".equalsIgnoreCase(tag)) {
+                            force = value;
+                        } else if ("REQUEST".equalsIgnoreCase(tag)) {
+                            request = isTrue;
+                        } else if ("DETAILS".equalsIgnoreCase(tag)) {
+                            showDetails = isTrue;
+                        } else {
+                            access.getProperties().put(tag, value);
+                        }
+                    }
+                    continue;
+                    // Allow Script to indicate if Failure is what is expected
                 }
 
             } 
@@ -264,41 +299,6 @@
             } else if ("DETAILS".equalsIgnoreCase(largs[idx])) {
                 showDetails=true;
                 ++idx;
-            } else if ("set".equalsIgnoreCase(largs[idx])) {
-                while (largs.length > ++idx) {
-                    int equals = largs[idx].indexOf('=');
-                    String tag, value;
-                    if (equals < 0) {
-                        tag = largs[idx];
-                        value = access.getProperty(Config.AAF_APPPASS,null);
-                        if (value==null) {
-                            break;
-                        } else {
-                            value = access.decrypt(value, false);
-                            if (value==null) {
-                                break;
-                            }
-                            access.getProperties().put(tag, value);
-                            pw.println("set " + tag + " <encrypted>");
-                        }
-                    } else {
-                        tag = largs[idx].substring(0, equals);
-                        value = largs[idx].substring(++equals);
-                        pw.println("set " + tag + ' ' + value);
-                    }
-                    boolean isTrue = "TRUE".equalsIgnoreCase(value);
-                    if ("FORCE".equalsIgnoreCase(tag)) {
-                        force = value;
-                    } else if ("REQUEST".equalsIgnoreCase(tag)) {
-                        request = isTrue;
-                    } else if ("DETAILS".equalsIgnoreCase(tag)) {
-                        showDetails = isTrue;
-                    } else {
-                        access.getProperties().put(tag, value);
-                    }
-                }
-                continue;
-                // Allow Script to indicate if Failure is what is expected
             }
 
             int ret = 0;
diff --git a/auth/auth-core/src/main/java/org/onap/aaf/auth/server/AbsService.java b/auth/auth-core/src/main/java/org/onap/aaf/auth/server/AbsService.java
index f249544..df80ec6 100644
--- a/auth/auth-core/src/main/java/org/onap/aaf/auth/server/AbsService.java
+++ b/auth/auth-core/src/main/java/org/onap/aaf/auth/server/AbsService.java
@@ -34,6 +34,7 @@
 import org.onap.aaf.cadi.Access.Level;
 import org.onap.aaf.cadi.CadiException;
 import org.onap.aaf.cadi.LocatorException;
+import org.onap.aaf.cadi.aaf.Defaults;
 import org.onap.aaf.cadi.aaf.v2_0.AAFConHttp;
 import org.onap.aaf.cadi.client.Rcli;
 import org.onap.aaf.cadi.client.Retryable;
@@ -69,6 +70,13 @@
             locator_deploy = null;
         } else {
             locator_deploy = Split.splitTrim(':', component);
+            if(locator_deploy.length>1 && "AAF_RELEASE".equals(locator_deploy[1])) {
+            	locator_deploy[1]=access.getProperty(Config.AAF_RELEASE, Defaults.AAF_VERSION);
+            	int snapshot = locator_deploy[1].indexOf("-SNAPSHOT");
+            	if(snapshot>0) {
+            		locator_deploy[1]=locator_deploy[1].substring(0, snapshot);
+            	}
+            }
         }
             
         if (component == null || locator_deploy==null || locator_deploy.length<2) {
diff --git a/auth/auth-gui/src/main/java/org/onap/aaf/auth/gui/AAF_GUI.java b/auth/auth-gui/src/main/java/org/onap/aaf/auth/gui/AAF_GUI.java
index 4816422..2e7e5e5 100644
--- a/auth/auth-gui/src/main/java/org/onap/aaf/auth/gui/AAF_GUI.java
+++ b/auth/auth-gui/src/main/java/org/onap/aaf/auth/gui/AAF_GUI.java
@@ -86,7 +86,6 @@
 import org.onap.aaf.misc.env.Env;
 import org.onap.aaf.misc.env.Slot;
 import org.onap.aaf.misc.env.StaticSlot;
-import org.onap.aaf.misc.env.util.Split;
 import org.onap.aaf.misc.rosetta.env.RosettaDF;
 import org.onap.aaf.misc.xgen.html.HTMLGen;
 import org.onap.aaf.misc.xgen.html.State;
@@ -113,22 +112,20 @@
     
     public final Slot slot_httpServletRequest;
     protected final String deployedVersion;
-    private StaticSlot sTheme;
+    private StaticSlot sThemeWebPath;
     public final String theme;
 
 
     public AAF_GUI(final AuthzEnv env) throws Exception {
         super(env.access(), env);
-        sTheme = env.staticSlot(CachingFileAccess.CFA_WEB_PATH,access.getProperty(CachingFileAccess.CFA_WEB_PATH,null)==null?AAF_GUI_THEME:CachingFileAccess.CFA_WEB_PATH);
-        theme = env.getProperty(AAF_GUI_THEME);
+        theme = env.getProperty(AAF_GUI_THEME,"theme/onap");
+        sThemeWebPath = env.staticSlot(CachingFileAccess.CFA_WEB_PATH);
+        if(env.get(sThemeWebPath)==null) {
+        	env.put(sThemeWebPath,theme);
+        }
 
         slot_httpServletRequest = env.slot(HTTP_SERVLET_REQUEST);
-        String[] component = Split.split(':', access.getProperty(Config.AAF_COMPONENT, "N/A:2.x"));
-        if (component.length>1) {
-            deployedVersion =component[1];
-        } else {
-            deployedVersion = "2.x";
-        }
+        deployedVersion = access.getProperty(Config.AAF_RELEASE, "N/A:2.x");
 
         // Certificate Manager
         cmCon =  new AAFConHttp(env.access(),Config.CM_URL);
@@ -206,7 +203,7 @@
         ///////////////////////  
         // WebContent Handler
         ///////////////////////
-        route(env,GET,"/"+env.get(sTheme)+"/:key", new CachingFileAccess<AuthzTrans>(env));
+        route(env,GET,"/"+env.get(sThemeWebPath)+"/:key", new CachingFileAccess<AuthzTrans>(env));
         ///////////////////////
         aafCon = aafCon();
         lur = aafCon.newLur();
diff --git a/auth/csit/d.props.init b/auth/csit/d.props.init
index 3ad826a..3e94046 100644
--- a/auth/csit/d.props.init
+++ b/auth/csit/d.props.init
@@ -2,7 +2,13 @@
 ORG=onap
 PROJECT=aaf
 DOCKER_REPOSITORY=nexus3.onap.org:10003
-VERSION=2.1.3
+
+####################################
+# WARNING - CSIT MUST NOT BE SET TO SNAPSHOT, OR JENKINS WILL FAIL
+####################################
+VERSION=2.1.5
+
+
 CONF_ROOT_DIR=/opt/app/osaaf
 # For local builds, set PREFIX=   
 PREFIX="$DOCKER_REPOSITORY/"
diff --git a/auth/docker/Dockerfile.ms b/auth/docker/Dockerfile.ms
index c1d9d0d..749ef36 100644
--- a/auth/docker/Dockerfile.ms
+++ b/auth/docker/Dockerfile.ms
@@ -7,7 +7,7 @@
 
 COPY pod/* /opt/app/aaf/pod/
 
-CMD ["/bin/bash","-c","/opt/app/aaf/bin/${AAF_COMPONENT}"]
+CMD ["/bin/bash","-c","cd /opt/app/aaf;bin/${AAF_COMPONENT}"]
 
 # For Debugging installation
 # CMD ["/bin/bash","-c","pwd;cd /opt/app/osaaf;find /opt/app/osaaf -depth;df -k; cat /opt/app/aaf/${AAF_COMPONENT}/bin/${AAF_COMPONENT};cat /etc/hosts;/opt/app/aaf/${AAF_COMPONENT}/bin/${AAF_COMPONENT}"]
diff --git a/auth/helm/aaf/templates/aaf-cm.yaml b/auth/helm/aaf/templates/aaf-cm.yaml
index 0a4c314..7404e44 100644
--- a/auth/helm/aaf/templates/aaf-cm.yaml
+++ b/auth/helm/aaf/templates/aaf-cm.yaml
@@ -62,7 +62,7 @@
       - name: {{ .Chart.Name }}-cm
         image: {{ .Values.image.repository }}onap/aaf/aaf_cm:{{ .Values.image.version }}
         imagePullPolicy: IfNotPresent
-        command: ["/bin/bash","/opt/app/aaf/pod/pod_wait.sh","aaf_cm","sleep","45", "/opt/app/aaf/bin/cm"]
+        command: ["/bin/bash","/opt/app/aaf/pod/pod_wait.sh","aaf_cm","sleep","45", "cd /opt/app/aaf;bin/cm"]
         volumeMounts:
           -  mountPath: "/opt/app/osaaf"
              name: {{ .Chart.Name }}-config-vol
diff --git a/auth/helm/aaf/templates/aaf-fs.yaml b/auth/helm/aaf/templates/aaf-fs.yaml
index 22935dc..4dcfdcf 100644
--- a/auth/helm/aaf/templates/aaf-fs.yaml
+++ b/auth/helm/aaf/templates/aaf-fs.yaml
@@ -62,7 +62,7 @@
       - name: {{ .Chart.Name }}-fs
         image: {{ .Values.image.repository }}onap/aaf/aaf_fs:{{ .Values.image.version }}
         imagePullPolicy: IfNotPresent
-        command: ["/bin/bash","/opt/app/aaf/pod/pod_wait.sh","aaf_fs","sleep","50", "/opt/app/aaf/bin/fs"]
+        command: ["/bin/bash","/opt/app/aaf/pod/pod_wait.sh","aaf_fs","sleep","50", "cd /opt/app/aaf;bin/fs"]
         volumeMounts:
           -  mountPath: "/opt/app/osaaf"
              name: {{ .Chart.Name }}-config-vol
diff --git a/auth/helm/aaf/templates/aaf-gui.yaml b/auth/helm/aaf/templates/aaf-gui.yaml
index c5d11d0..6ea248d 100644
--- a/auth/helm/aaf/templates/aaf-gui.yaml
+++ b/auth/helm/aaf/templates/aaf-gui.yaml
@@ -62,7 +62,7 @@
       - name: {{ .Chart.Name }}-gui
         image: {{ .Values.image.repository }}onap/aaf/aaf_gui:{{ .Values.image.version }}
         imagePullPolicy: IfNotPresent
-        command: ["/bin/bash","/opt/app/aaf/pod/pod_wait.sh","aaf_gui","sleep","50", "/opt/app/aaf/bin/gui"]
+        command: ["/bin/bash","/opt/app/aaf/pod/pod_wait.sh","aaf_gui","sleep","50", "cd /opt/app/aaf;bin/gui"]
         volumeMounts:
           -  mountPath: "/opt/app/osaaf"
              name: {{ .Chart.Name }}-config-vol
diff --git a/auth/helm/aaf/templates/aaf-hello.yaml b/auth/helm/aaf/templates/aaf-hello.yaml
index 033c912..5835728 100644
--- a/auth/helm/aaf/templates/aaf-hello.yaml
+++ b/auth/helm/aaf/templates/aaf-hello.yaml
@@ -62,7 +62,7 @@
       - name: {{ .Chart.Name }}-hello
         image: {{ .Values.image.repository }}onap/aaf/aaf_hello:{{ .Values.image.version }}
         imagePullPolicy: IfNotPresent
-        command: ["/bin/bash","/opt/app/aaf/pod/pod_wait.sh","aaf_hello","sleep","50", "/opt/app/aaf/bin/hello"]
+        command: ["/bin/bash","/opt/app/aaf/pod/pod_wait.sh","aaf_hello","sleep","50", "cd /opt/app/aaf;bin/hello"]
         volumeMounts:
           -  mountPath: "/opt/app/osaaf"
              name: {{ .Chart.Name }}-config-vol
diff --git a/auth/helm/aaf/templates/aaf-locate.yaml b/auth/helm/aaf/templates/aaf-locate.yaml
index 58c249e..9f0d35c 100644
--- a/auth/helm/aaf/templates/aaf-locate.yaml
+++ b/auth/helm/aaf/templates/aaf-locate.yaml
@@ -62,7 +62,7 @@
       - name: {{ .Chart.Name }}-locate
         image: {{ .Values.image.repository }}onap/aaf/aaf_locate:{{ .Values.image.version }}
         imagePullPolicy: IfNotPresent
-        command: ["/bin/bash","/opt/app/aaf/pod/pod_wait.sh","aaf_locate","sleep","50", "/opt/app/aaf/bin/locate"]
+        command: ["/bin/bash","/opt/app/aaf/pod/pod_wait.sh","aaf_locate","sleep","50", "cd /opt/app/aaf;bin/locate"]
         volumeMounts:
           -  mountPath: "/opt/app/osaaf"
              name: {{ .Chart.Name }}-config-vol
diff --git a/auth/helm/aaf/templates/aaf-oauth.yaml b/auth/helm/aaf/templates/aaf-oauth.yaml
index 0898467..821ef0d 100644
--- a/auth/helm/aaf/templates/aaf-oauth.yaml
+++ b/auth/helm/aaf/templates/aaf-oauth.yaml
@@ -62,7 +62,7 @@
       - name: {{ .Chart.Name }}-oauth
         image: {{ .Values.image.repository }}onap/aaf/aaf_oauth:{{ .Values.image.version }}
         imagePullPolicy: IfNotPresent
-        command: ["/bin/bash","/opt/app/aaf/pod/pod_wait.sh","aaf_oauth","sleep","50", "/opt/app/aaf/bin/oauth"]
+        command: ["/bin/bash","/opt/app/aaf/pod/pod_wait.sh","aaf_oauth","sleep","50", "cd /opt/app/aaf;bin/oauth"]
         volumeMounts:
           -  mountPath: "/opt/app/osaaf"
              name: {{ .Chart.Name }}-config-vol
diff --git a/auth/helm/aaf/templates/aaf-service.yaml b/auth/helm/aaf/templates/aaf-service.yaml
index 306bd77..c0fba07 100644
--- a/auth/helm/aaf/templates/aaf-service.yaml
+++ b/auth/helm/aaf/templates/aaf-service.yaml
@@ -64,7 +64,7 @@
       - name: {{ .Chart.Name }}-service
         image: {{ .Values.image.repository }}onap/aaf/aaf_service:{{ .Values.image.version }}
         imagePullPolicy: IfNotPresent
-        command: ["/bin/bash","/opt/app/aaf/pod/pod_wait.sh","aaf_service","sleep","50", "/opt/app/aaf/bin/service"]
+        command: ["/bin/bash","/opt/app/aaf/pod/pod_wait.sh","aaf_service","sleep","50", "cd /opt/app/aaf;bin/service"]
         volumeMounts:
           -  mountPath: "/opt/app/osaaf"
              name: {{ .Chart.Name }}-config-vol
diff --git a/auth/helm/aaf/values.yaml b/auth/helm/aaf/values.yaml
index 044ff42..839d939 100644
--- a/auth/helm/aaf/values.yaml
+++ b/auth/helm/aaf/values.yaml
@@ -48,7 +48,7 @@
   # When using Docker Repo, add, and include trailing "/"
   # repository: nexus3.onap.org:10003/
   # repository: localhost:5000/
-  version: 2.1.4-SNAPSHOT
+  version: 2.1.6-SNAPSHOT
 
 resources: {}
   # We usually recommend not to specify default resources and to leave this as a conscious
diff --git a/auth/sample/bin/service.sh b/auth/sample/bin/service.sh
index 6b694ad..b810f0c 100644
--- a/auth/sample/bin/service.sh
+++ b/auth/sample/bin/service.sh
@@ -85,6 +85,7 @@
 
     TMP=$(mktemp)
     echo aaf_env=${AAF_ENV} >> ${TMP}
+    echo aaf_release=${VERSION} >> ${TMP}
     echo cadi_latitude=${LATITUDE} >> ${TMP}
     echo cadi_longitude=${LONGITUDE} >> ${TMP}
     echo cadi_x509_issuers=${CADI_X509_ISSUERS} >> ${TMP}
diff --git a/auth/sample/etc/org.osaaf.aaf.cm.props b/auth/sample/etc/org.osaaf.aaf.cm.props
index 839ec24..c04201c 100644
--- a/auth/sample/etc/org.osaaf.aaf.cm.props
+++ b/auth/sample/etc/org.osaaf.aaf.cm.props
@@ -4,7 +4,7 @@
 ## Note: Link to CA Properties in "local" dir
 ##
 cadi_prop_files=/opt/app/osaaf/local/org.osaaf.aaf.props:/opt/app/osaaf/etc/org.osaaf.aaf.log4j.props:/opt/app/osaaf/local/org.osaaf.aaf.cassandra.props:/opt/app/osaaf/etc/org.osaaf.aaf.orgs.props:/opt/app/osaaf/local/org.osaaf.aaf.cm.ca.props
-aaf_component=AAF_NS.cm:2.1
+aaf_component=AAF_NS.cm:AAF_RELEASE
 port=8150
 
 #Certman
diff --git a/auth/sample/etc/org.osaaf.aaf.fs.props b/auth/sample/etc/org.osaaf.aaf.fs.props
index 0e423aa..ab6e79d 100644
--- a/auth/sample/etc/org.osaaf.aaf.fs.props
+++ b/auth/sample/etc/org.osaaf.aaf.fs.props
@@ -3,7 +3,7 @@
 ## AAF Fileserver Properties
 ##
 cadi_prop_files=/opt/app/osaaf/local/org.osaaf.aaf.props:/opt/app/osaaf/etc/org.osaaf.aaf.log4j.props
-aaf_component=AAF_NS.fs:2.1
+aaf_component=AAF_NS.fs:AAF_RELEASE
 port=8096
 
 aaf_public_dir=/opt/app/osaaf/public
diff --git a/auth/sample/etc/org.osaaf.aaf.gui.props b/auth/sample/etc/org.osaaf.aaf.gui.props
index 36c05e1..6ab8b44 100644
--- a/auth/sample/etc/org.osaaf.aaf.gui.props
+++ b/auth/sample/etc/org.osaaf.aaf.gui.props
@@ -3,7 +3,7 @@
 ## AAF GUI Properties
 ##
 cadi_prop_files=/opt/app/osaaf/local/org.osaaf.aaf.props:/opt/app/osaaf/etc/org.osaaf.aaf.log4j.props:/opt/app/osaaf/etc/org.osaaf.aaf.orgs.props
-aaf_component=AAF_NS.gui:2.1
+aaf_component=AAF_NS.gui:AAF_RELEASE
 port=8200
 
 aaf_gui_title=AAF
@@ -12,10 +12,6 @@
 cadi_loginpage_url=https://AAF_LOCATE_URL/AAF_NS.gui:2.0/login
 
 # GUI URLS and Help URLS
-cm_url=https://aaf.osaaf.org:8150
-gw_url=https://aaf.osaaf.org:8095
-fs_url=http://aaf.osaaf.org:8096
-
 aaf_url.gui_onboard=https://wiki.onap.org/display/DW/Client+Onboarding
 # aaf_url.cuigui=https://???/Using+the+Command+Prompt
 
diff --git a/auth/sample/etc/org.osaaf.aaf.hello.props b/auth/sample/etc/org.osaaf.aaf.hello.props
index 17ec446..7c812d3 100644
--- a/auth/sample/etc/org.osaaf.aaf.hello.props
+++ b/auth/sample/etc/org.osaaf.aaf.hello.props
@@ -3,6 +3,6 @@
 ## AAF Hello Properties
 ##
 cadi_prop_files=/opt/app/osaaf/local/org.osaaf.aaf.props:/opt/app/osaaf/etc/org.osaaf.aaf.log4j.props
-aaf_component=AAF_NS.hello:2.1
+aaf_component=AAF_NS.hello:AAF_RELEASE
 port=8130
 
diff --git a/auth/sample/etc/org.osaaf.aaf.locate.props b/auth/sample/etc/org.osaaf.aaf.locate.props
index 2ca197a..c7786aa 100644
--- a/auth/sample/etc/org.osaaf.aaf.locate.props
+++ b/auth/sample/etc/org.osaaf.aaf.locate.props
@@ -3,6 +3,6 @@
 ## AAF Locator Properties
 ##
 cadi_prop_files=/opt/app/osaaf/local/org.osaaf.aaf.props:/opt/app/osaaf/etc/org.osaaf.aaf.log4j.props:/opt/app/osaaf/etc/org.osaaf.aaf.orgs.props:/opt/app/osaaf/local/org.osaaf.aaf.cassandra.props
-aaf_component=AAF_NS.locator:2.1
+aaf_component=AAF_NS.locator:AAF_RELEASE
 port=8095
 
diff --git a/auth/sample/etc/org.osaaf.aaf.oauth.props b/auth/sample/etc/org.osaaf.aaf.oauth.props
index cf80deb..36304d7 100644
--- a/auth/sample/etc/org.osaaf.aaf.oauth.props
+++ b/auth/sample/etc/org.osaaf.aaf.oauth.props
@@ -3,6 +3,6 @@
 ## AAF OAuth2 Properties
 ##
 cadi_prop_files=/opt/app/osaaf/local/org.osaaf.aaf.props:/opt/app/osaaf/etc/org.osaaf.aaf.log4j.props:/opt/app/osaaf/local/org.osaaf.aaf.cassandra.props
-aaf_component=AAF_NS.oauth:2.1
+aaf_component=AAF_NS.oauth:AAF_RELEASE
 port=8140
 
diff --git a/auth/sample/etc/org.osaaf.aaf.service.props b/auth/sample/etc/org.osaaf.aaf.service.props
index 1b9132a..71e666d 100644
--- a/auth/sample/etc/org.osaaf.aaf.service.props
+++ b/auth/sample/etc/org.osaaf.aaf.service.props
@@ -3,6 +3,6 @@
 ## AAF Service Properties
 ##
 cadi_prop_files=/opt/app/osaaf/local/org.osaaf.aaf.props:/opt/app/osaaf/etc/org.osaaf.aaf.log4j.props:/opt/app/osaaf/local/org.osaaf.aaf.cassandra.props:/opt/app/osaaf/etc/org.osaaf.aaf.orgs.props
-aaf_component=AAF_NS.service:2.1
+aaf_component=AAF_NS.service:AAF_RELEASE
 port=8100
 
diff --git a/auth/sample/local/initialConfig.props b/auth/sample/local/initialConfig.props
index 2f599cd..740bf84 100644
--- a/auth/sample/local/initialConfig.props
+++ b/auth/sample/local/initialConfig.props
@@ -1,4 +1,4 @@
-aaf_locate_url=https://meriadoc.mithril.sbc.com:8095

+aaf_locate_url=https://localhost:8095

 aaf_oauth2_introspect_url=https://AAF_LOCATE_URL/AAF_NS.introspect:2.1/introspect

 aaf_oauth2_token_url=https://AAF_LOCATE_URL/AAF_NS.token:2.1/token

 aaf_url=https://AAF_LOCATE_URL/AAF_NS.service:2.1