Add scripts for external API gateway
authorHuabingZhao <zhao.huabing@zte.com.cn>
Mon, 19 Sep 2016 07:57:16 +0000 (15:57 +0800)
committerHuabingZhao <zhao.huabing@zte.com.cn>
Mon, 19 Sep 2016 07:57:16 +0000 (15:57 +0800)
Change-Id: Ice85f6277d0a0d54e00c60a08c687b4ba6b22183
Signed-off-by: HuabingZhao <zhao.huabing@zte.com.cn>
12 files changed:
msb-core/apiroute/apiroute-service/dependency-reduced-pom.xml [deleted file]
msb-core/distributions/standalone/pom.xml
msb-core/distributions/standalone/src/assembly/resource/shutdown.bat
msb-core/distributions/standalone/src/assembly/resource/shutdown.sh
msb-core/distributions/standalone/src/assembly/resource/startup.bat
msb-core/distributions/standalone/src/assembly/resource/startup.sh
msb-core/eag-openresty-ext/pom.xml [new file with mode: 0644]
msb-core/eag-openresty-ext/src/assembly/resources/openresty/nginx/luaext/msbconf.lua [new file with mode: 0644]
msb-core/eag-openresty-ext/src/assembly/resources/openresty/nginx/sites-enabled/openomsb.conf [new file with mode: 0644]
msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/msbconf.lua
msb-core/openresty-ext/src/assembly/resources/openresty/nginx/sites-enabled/openomsb.conf
msb-core/pom.xml

diff --git a/msb-core/apiroute/apiroute-service/dependency-reduced-pom.xml b/msb-core/apiroute/apiroute-service/dependency-reduced-pom.xml
deleted file mode 100644 (file)
index de1fbab..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">\r
-  <parent>\r
-    <artifactId>apiroute-parent</artifactId>\r
-    <groupId>org.openo.common-services.microservice-bus</groupId>\r
-    <version>1.0.0-SNAPSHOT</version>\r
-  </parent>\r
-  <modelVersion>4.0.0</modelVersion>\r
-  <artifactId>apiroute-service</artifactId>\r
-  <name>openo/msb/msb-core/apiroute/apiroute-service</name>\r
-  <version>1.0.0-SNAPSHOT</version>\r
-  <build>\r
-    <resources>\r
-      <resource>\r
-        <directory>src/main/java</directory>\r
-        <includes>\r
-          <include>**/*.properties</include>\r
-        </includes>\r
-      </resource>\r
-      <resource>\r
-        <directory>src/main/resources</directory>\r
-      </resource>\r
-    </resources>\r
-    <plugins>\r
-      <plugin>\r
-        <artifactId>maven-jar-plugin</artifactId>\r
-        <version>2.4</version>\r
-        <configuration>\r
-          <archive>\r
-            <manifest>\r
-              <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\r
-            </manifest>\r
-          </archive>\r
-        </configuration>\r
-      </plugin>\r
-      <plugin>\r
-        <artifactId>maven-shade-plugin</artifactId>\r
-        <version>2.3</version>\r
-        <executions>\r
-          <execution>\r
-            <phase>package</phase>\r
-            <goals>\r
-              <goal>shade</goal>\r
-            </goals>\r
-            <configuration>\r
-              <transformers>\r
-                <transformer />\r
-                <transformer>\r
-                  <mainClass>org.openo.msb.ApiRouteApp</mainClass>\r
-                </transformer>\r
-              </transformers>\r
-            </configuration>\r
-          </execution>\r
-        </executions>\r
-        <configuration>\r
-          <createDependencyReducedPom>true</createDependencyReducedPom>\r
-          <filters>\r
-            <filter>\r
-              <artifact>*:*</artifact>\r
-              <excludes>\r
-                <exclude>META-INF/*.SF</exclude>\r
-                <exclude>META-INF/*.DSA</exclude>\r
-                <exclude>META-INF/*.RSA</exclude>\r
-              </excludes>\r
-            </filter>\r
-          </filters>\r
-        </configuration>\r
-      </plugin>\r
-      <plugin>\r
-        <artifactId>maven-surefire-plugin</artifactId>\r
-        <configuration>\r
-          <skip>true</skip>\r
-        </configuration>\r
-      </plugin>\r
-    </plugins>\r
-  </build>\r
-  <dependencies>\r
-    <dependency>\r
-      <groupId>junit</groupId>\r
-      <artifactId>junit</artifactId>\r
-      <version>4.11</version>\r
-      <scope>test</scope>\r
-      <exclusions>\r
-        <exclusion>\r
-          <artifactId>hamcrest-core</artifactId>\r
-          <groupId>org.hamcrest</groupId>\r
-        </exclusion>\r
-      </exclusions>\r
-    </dependency>\r
-  </dependencies>\r
-</project>\r
-\r
index ee17e28..b502b36 100644 (file)
         <version>${project.version}</version>
         <optional>true</optional>
     </dependency>
+    <dependency>
+        <groupId>org.openo.common-services.microservice-bus</groupId>
+        <artifactId>eag-openresty-ext</artifactId>
+        <type>zip</type>
+        <version>${project.version}</version>
+        <optional>true</optional>
+    </dependency>
 
 
   </dependencies>
               <outputAbsoluteArtifactFilename>true</outputAbsoluteArtifactFilename>
             </configuration>
         </execution>
+
+        <execution>
+            <id>eag-unpacktolinux64</id>
+            <goals>
+                <goal>unpack</goal>
+            </goals>
+            <phase>prepare-package</phase>
+            <configuration>
+              <artifactItems>
+                  <artifactItem>
+                    <groupId>org.openo.common-services.microservice-bus</groupId>
+                    <artifactId>openresty</artifactId>
+                    <type>tar.gz</type>
+                    <classifier>linux64</classifier>
+                  </artifactItem>
+                  <artifactItem>
+                    <groupId>org.openo.common-services.microservice-bus</groupId>
+                    <artifactId>eag-openresty-ext</artifactId>
+                    <type>zip</type>
+                  </artifactItem>
+              </artifactItems>
+              <excludes>**/*.bat,*.cmd</excludes>
+              <outputDirectory>${linux64outputdir}/eag</outputDirectory>
+              <overWriteReleases>false</overWriteReleases>
+              <overWriteSnapshots>true</overWriteSnapshots>
+              <outputAbsoluteArtifactFilename>true</outputAbsoluteArtifactFilename>
+            </configuration>
+        </execution>
+
         <execution>
             <id>unpacktowin64</id>
             <goals>
               <outputAbsoluteArtifactFilename>true</outputAbsoluteArtifactFilename>
             </configuration>
         </execution>
+
+        <execution>
+            <id>eag-unpacktowin64</id>
+            <goals>
+                <goal>unpack</goal>
+            </goals>
+            <phase>prepare-package</phase>
+            <configuration>
+              <artifactItems>
+                  <artifactItem>
+                    <groupId>org.openo.common-services.microservice-bus</groupId>
+                    <artifactId>openresty</artifactId>
+                    <type>zip</type>
+                    <classifier>win64</classifier>
+                  </artifactItem>
+                  <artifactItem>
+                    <groupId>org.openo.common-services.microservice-bus</groupId>
+                    <artifactId>eag-openresty-ext</artifactId>
+                    <type>zip</type>
+                  </artifactItem>
+              </artifactItems>
+              <excludes>*.sh,*/*.sh,*/*/*.sh</excludes>
+              <outputDirectory>${win64outputdir}/eag</outputDirectory>
+              <overWriteReleases>false</overWriteReleases>
+              <overWriteSnapshots>true</overWriteSnapshots>
+              <outputAbsoluteArtifactFilename>true</outputAbsoluteArtifactFilename>
+            </configuration>
+        </execution>
       </executions>
     </plugin>
 
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-antrun-plugin</artifactId>
       <executions>
+
+        <execution>
+          <id>prepare-eag-openresty-linux</id>
+          <phase>prepare-package</phase>
+          <goals>
+            <goal>run</goal>
+          </goals>
+          <configuration>
+            <target>
+              <copy todir="${linux64outputdir}/eag/">
+                <fileset dir="${linux64outputdir}/eag/openresty"/>
+              </copy>
+              <delete 
+                dir="${linux64outputdir}/eag/openresty"
+                includeemptydirs="true"/>
+            </target>          
+          </configuration>
+        </execution>
+
+        <execution>
+          <id>prepare-eag-openresty-win</id>
+          <phase>prepare-package</phase>
+          <goals>
+            <goal>run</goal>
+          </goals>
+          <configuration>
+            <target>
+              <copy todir="${win64outputdir}/eag/">
+                <fileset dir="${win64outputdir}/eag/openresty"/>
+              </copy>
+              <delete 
+                dir="${win64outputdir}/eag/openresty"
+                includeemptydirs="true"/>
+            </target>          
+          </configuration>
+        </execution>
+
+
         <execution>
             <id>distribution</id>
             <phase>package</phase>
index cdc98b8..c2cce3b 100644 (file)
@@ -29,6 +29,9 @@ rem For /f %%i in (%~dp0\stop.tmp) DO start %%i
 echo ### Stopping openresty
 start /D %RUNHOME%openresty stop.bat  
 
+echo ### Stopping external API gateway
+start /D %RUNHOME%eag stop.bat
+
 echo ### Stopping apiroute
 start /D %RUNHOME%apiroute stop.bat
 
index 2bb2a84..0c19f3f 100644 (file)
@@ -28,6 +28,12 @@ cd ./openresty
 ./stop.sh &
 cd $RUNHOME
 
+echo "### Stopping external API gateway...";
+# nohup ./startup.sh >>./nohup.log 2>&1 &
+cd ./eag
+./stop.sh &
+cd $RUNHOME
+
 echo "\n\n### Stopping apiroute"
 cd ./apiroute
 ./stop.sh &
index e7f8cf3..a85ace7 100644 (file)
@@ -35,6 +35,9 @@ start /D %RUNHOME%apiroute run.bat run
 echo ### Starting openresty
 start /D %RUNHOME%openresty run.bat  
 
+echo ### Starting external API gateway
+start /D %RUNHOME%eag run.bat  
+
 echo Startup will be finished in background...
 echo  + Run "start .\apiroute-works\logs\application.log" to see what's happening
 echo  + Wait a minute
index bcc0865..e0fee7d 100644 (file)
@@ -41,6 +41,11 @@ cd ./openresty
 ./run.sh &
 cd $RUNHOME
 
+echo "### Starting external API gateway...";
+# nohup ./startup.sh >>./nohup.log 2>&1 &
+cd ./eag
+./run.sh &
+cd $RUNHOME
 
 echo "Startup will be finished in background...";
 echo " + Run 'tail ./apiroute-works/logs/application.log -f' to see what's happening";
diff --git a/msb-core/eag-openresty-ext/pom.xml b/msb-core/eag-openresty-ext/pom.xml
new file mode 100644 (file)
index 0000000..16e76e7
--- /dev/null
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright 2016 2015-2016 ZTE, Inc. and others. All rights reserved.
+
+    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.
+
+        Author: Zhaoxing Meng
+        email: meng.zhaoxing1@zte.com.cn
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <groupId>org.openo.common-services.microservice-bus</groupId>
+        <artifactId>msb-core-parent</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+    </parent>
+
+
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>eag-openresty-ext</artifactId>
+    <version>1.0.0-SNAPSHOT</version>
+    <name>openo/msb/msb-core/eag-openresty-ext</name>
+    <packaging>pom</packaging>
+
+    <properties>
+      <outputdir>target/assembly</outputdir>
+      <packageid>eag-openresty-ext</packageid>
+    </properties>
+    <build>
+    <plugins>
+    <plugin>
+      <artifactId>maven-resources-plugin</artifactId>
+        <configuration>
+      <includeEmptyDirs>true</includeEmptyDirs>
+      </configuration>
+      <executions>
+        <execution>
+          <id>copy-resources</id>
+          <phase>process-resources</phase>
+          <goals>
+            <goal>copy-resources</goal>
+          </goals>
+          <configuration>
+            <outputDirectory>${outputdir}</outputDirectory>
+            <resources>
+                    <resource>
+                <directory>../openresty-ext/src/assembly/resources/</directory>
+                <filtering>false</filtering>
+                <includes>
+                  <include>**/*</include>
+                </includes>
+              </resource>
+            </resources>
+            <overwrite>true</overwrite>
+          </configuration>
+        </execution>
+
+        <execution>
+          <id>eag-copy-resources</id>
+          <phase>process-resources</phase>
+          <goals>
+            <goal>copy-resources</goal>
+          </goals>
+          <configuration>
+            <outputDirectory>${outputdir}</outputDirectory>
+            <resources>
+                    <resource>
+                <directory>src/assembly/resources/</directory>
+                <filtering>false</filtering>
+                <includes>
+                  <include>**/*</include>
+                </includes>
+              </resource>
+            </resources>
+            <overwrite>true</overwrite>
+          </configuration>
+        </execution>
+
+      </executions>
+      </plugin>
+
+    <plugin>
+      <groupId>org.apache.maven.plugins</groupId>
+      <artifactId>maven-antrun-plugin</artifactId>
+      <executions>
+        <execution>
+            <id>distribution</id>
+            <phase>package</phase>
+            <goals>
+                <goal>run</goal>
+            </goals>
+            <configuration>
+                <target name="distribution">
+                    <zip destfile="target/${packageid}-${project.version}.zip" update="true">
+                      <zipfileset dir="target/assembly/" includes="**"/>
+                    </zip>
+                    <attachartifact file="target/${packageid}-${project.version}.zip" type="zip"/>
+                </target>
+            </configuration>
+        </execution>
+      </executions>
+    </plugin>
+
+    </plugins>
+    </build>
+
+
+</project>
diff --git a/msb-core/eag-openresty-ext/src/assembly/resources/openresty/nginx/luaext/msbconf.lua b/msb-core/eag-openresty-ext/src/assembly/resources/openresty/nginx/luaext/msbconf.lua
new file mode 100644 (file)
index 0000000..4e820f5
--- /dev/null
@@ -0,0 +1,26 @@
+--[[
+
+    Copyright 2016 2015-2016 ZTE, Inc. and others. All rights reserved.
+
+    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.
+
+        Author: Zhaoxing Meng
+        email: meng.zhaoxing1@zte.com.cn
+
+]]
+local _M = {}
+_M._VERSION = '1.0.0'
+
+return {
+    auth_plugin_status = "on"
+}
\ No newline at end of file
diff --git a/msb-core/eag-openresty-ext/src/assembly/resources/openresty/nginx/sites-enabled/openomsb.conf b/msb-core/eag-openresty-ext/src/assembly/resources/openresty/nginx/sites-enabled/openomsb.conf
new file mode 100644 (file)
index 0000000..eadf6c0
--- /dev/null
@@ -0,0 +1,172 @@
+#
+# Copyright 2016 2015-2016 ZTE, Inc. and others. All rights reserved.
+#
+# 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.
+#
+#     Author: Zhaoxing Meng
+#     email: meng.zhaoxing1@zte.com.cn
+#
+
+server {
+   listen 8080;
+   default_type text/html;
+   add_header X-Cache-Status $upstream_cache_status;
+   
+       location = / {
+      rewrite ^ /openoui/microservices/index.html redirect;
+   }
+   
+   location = /openoui/microservices {
+      rewrite /openoui/microservices /openoui/microservices/index.html redirect;
+   }
+  
+   location / {
+          set $server "fallback";
+                 set $url "";
+                 set $key "";
+                 
+                 # Lua files
+          rewrite_by_lua_file luaext/customrouter.lua;
+                 access_by_lua_file luaext/execute_auth.lua;
+                 
+                 proxy_pass http://$server;
+   }
+    location ~ ^/api/(.*) {
+               rewrite ^/api/(.*) /openoapi/$1 last;
+    }
+    location ~ ^/iui/(.*) {
+               rewrite ^/iui/(.*) /openoui/$1 last;
+       }
+       
+       location ^~ /openoapi/driver_vmware_vcloud/v1 {
+                 set $backend "";
+                 # Lua files
+          access_by_lua_block {
+                       local driver_manager   =  require('plugins.driver_manager')
+                       driver_manager.access()
+                }
+                proxy_pass http://$backend;
+    }
+   location ~ ^/openoapi/([^/]+)(/[Vv][^/]*)?(.*) {
+          set $apiname $1;
+                 set $apiversion $2;
+          set $apiserver "fallback";
+                 set $apiurl "";
+
+          # Lua files
+          rewrite_by_lua_file luaext/openoapirouter.lua;
+                 access_by_lua_file luaext/execute_auth.lua;
+                 
+          proxy_pass http://$apiserver;
+   }
+
+   location ~ ^/openoui/([^/]+)(.*) {
+          location ~* ^/iui/([^/]+)(.*)\.(?:png|jpg|jpeg|js|css|html|gif|ico|bmp|woff)$ {
+                  set $iuiname $1;
+                         set $iuiparam $2;
+                  set $iuiserver "fallback";
+                         set $iuiurl "";
+                 
+                         # Lua files
+                                 rewrite_by_lua_file luaext/openouirouter.lua;
+                                 access_by_lua_file luaext/execute_auth.lua;
+
+                                 proxy_cache nginx_cache;
+                                 proxy_cache_key $host$uri$is_args$args;
+                                 proxy_cache_valid 200 304 12h ;
+                                 proxy_cache_valid 301 302 1m ;
+                                 proxy_cache_valid any 1m ;
+                                 expires 12h;
+                                 
+                                 proxy_pass http://$iuiserver;           
+                 }  
+                 set $iuiname $1;
+                 set $iuiparam $2;
+          set $iuiserver "fallback";
+                 set $iuiurl "";
+
+          # Lua files
+          rewrite_by_lua_file luaext/openouirouter.lua;
+                 access_by_lua_file luaext/execute_auth.lua;
+                 
+                 proxy_pass http://$iuiserver;
+   }
+
+   location ~ ^/admin/([^/]+)(/[Vv][^/]*)?(.*) {
+          set $apiname $1;
+             set $apiversion $2;
+          set $apiserver "fallback";
+                 set $adminurl "";
+                 
+                 # Lua files
+          rewrite_by_lua_file luaext/openoadminrouter.lua;
+                 access_by_lua_file luaext/execute_auth.lua;
+                 
+                 proxy_pass http://$apiserver;
+   }
+   
+   location ~ ^/apijson/([^/]+)(/[Vv][^/]*)?(.*) {
+          location ~* ^/apijson/([^/]+)(/[v][^/]*)?(.*)\.(?:png|jpg|jpeg|js|css|html|gif|ico|bmp|woff)$ {
+                  set $apiname $1;
+                         set $apiversion $2;
+                  set $apiserver "fallback";
+                         set $apijsonurl "";             
+                                 
+                         # Lua files
+                                 rewrite_by_lua_file luaext/openoapijsonrouter.lua;
+                                 access_by_lua_file luaext/execute_auth.lua;
+
+                                 proxy_cache nginx_cache;
+                                 proxy_cache_key $host$uri$is_args$args;
+                                 proxy_cache_valid 200 304 12h ;
+                                 proxy_cache_valid 301 302 1m ;
+                                 proxy_cache_valid any 1m ;
+                                 expires 12h;
+                                 
+                                 proxy_pass http://$apiserver;           
+                 }   
+          set $apiname $1;
+             set $apiversion $2;
+          set $apiserver "fallback";
+                 set $apijsonurl "";
+                 
+                 # Lua files
+          rewrite_by_lua_file luaext/openoapijsonrouter.lua;
+                 access_by_lua_file luaext/execute_auth.lua;
+                 
+                 proxy_pass http://$apiserver;
+   }
+
+   location ~* \.(?:png|jpg|jpeg|js|css|html|gif|ico|bmp|woff)$ {
+           set $server "fallback";
+                  set $url "";
+           set $key "";
+                 
+                  # Lua files
+                  rewrite_by_lua_file luaext/customrouter.lua;
+                  access_by_lua_file luaext/execute_auth.lua;
+
+                  proxy_cache nginx_cache;
+                  proxy_cache_key $host$uri$is_args$args;
+                  proxy_cache_valid 200 304 12h ;
+                  proxy_cache_valid 301 302 1m ;
+                  proxy_cache_valid any 1m ;
+                  expires 12h;
+                                 
+                  proxy_pass http://$server;             
+   }
+        
+   location = /favicon.ico {
+        log_not_found off;
+   }
+}
\ No newline at end of file
index 88ab447..cb60a98 100644 (file)
@@ -21,7 +21,11 @@ server {
    listen 80;
    default_type text/html;
    add_header X-Cache-Status $upstream_cache_status;
-       
+   
+       location = / {
+      rewrite ^ /openoui/microservices/index.html redirect;
+   }
+   
    location = /openoui/microservices {
       rewrite /openoui/microservices /openoui/microservices/index.html redirect;
    }
index 71f4192..0fc1b94 100644 (file)
@@ -33,6 +33,7 @@
     <modules>
         <module>openresty</module>
         <module>openresty-ext</module>
+        <module>eag-openresty-ext</module>
         <module>redis</module>
         <module>redis-ext</module>
         <module>apiroute</module>