From 134ff86182ee8fedb19cb41cbeca194d694a0da1 Mon Sep 17 00:00:00 2001 From: Su Yang Date: Thu, 20 Dec 2018 14:50:10 +0800 Subject: [PATCH] Initial octo-portal --- LICENSE | 201 +++++++++++ README.md | 64 ++++ docs/img/outline.png | Bin 0 -> 250389 bytes octo-portal-frontend/.babelrc | 18 + octo-portal-frontend/.editorconfig | 9 + octo-portal-frontend/.gitignore | 17 + octo-portal-frontend/.postcssrc.js | 10 + octo-portal-frontend/build/build.js | 41 +++ octo-portal-frontend/build/check-versions.js | 54 +++ octo-portal-frontend/build/logo.png | Bin 0 -> 6849 bytes octo-portal-frontend/build/utils.js | 102 ++++++ octo-portal-frontend/build/vue-loader.conf.js | 22 ++ .../build/webpack.base.conf.js | 86 +++++ .../build/webpack.dev.conf.js | 95 +++++ .../build/webpack.prod.conf.js | 149 ++++++++ octo-portal-frontend/config/dev.env.js | 7 + octo-portal-frontend/config/index.js | 74 ++++ octo-portal-frontend/config/prod.env.js | 4 + octo-portal-frontend/config/test.env.js | 7 + octo-portal-frontend/index.html | 13 + octo-portal-frontend/package.json | 83 +++++ octo-portal-frontend/src/App.vue | 43 +++ octo-portal-frontend/src/api/api.js | 37 ++ octo-portal-frontend/src/common/util.js | 67 ++++ octo-portal-frontend/src/components/Main.vue | 129 +++++++ .../content/extention-1/extention1_1.vue | 31 ++ .../content/extention-1/extention1_2.vue | 31 ++ .../content/extention-1/extention1_3.vue | 31 ++ .../content/performance/performance.vue | 31 ++ .../content/serviceManage/outline.vue | 31 ++ .../content/serviceManage/provider.vue | 332 ++++++++++++++++++ .../diy-bread-crumb/diy-bread-crumb.vue | 54 +++ .../header/diy-bread-crumb/index.js | 18 + .../src/components/header/header-bar.vue | 47 +++ .../src/components/header/index.js | 18 + .../components/header/sider-active/index.js | 18 + .../header/sider-active/sider-active.vue | 59 ++++ .../src/components/sider/mixin.js | 48 +++ .../sider/sidebar-collapsed-menu.vue | 55 +++ .../components/sider/sidebar-menu-item.vue | 59 ++++ .../src/components/sider/sidebar-menu.vue | 130 +++++++ octo-portal-frontend/src/config/index.js | 25 ++ octo-portal-frontend/src/index.less | 21 ++ octo-portal-frontend/src/main.js | 40 +++ octo-portal-frontend/src/mock/index.js | 19 + octo-portal-frontend/src/mock/mock.js | 82 +++++ octo-portal-frontend/src/router/index.js | 27 ++ octo-portal-frontend/src/router/routers.js | 111 ++++++ octo-portal-frontend/src/store/index.js | 44 +++ octo-portal-frontend/static/.gitkeep | 0 octo-portal-frontend/static/favicon.ico | Bin 0 -> 81649 bytes octo-portal-server/.gitignore | 25 ++ octo-portal-server/pom.xml | 112 ++++++ .../portal/OctoPortalServerApplication.java | 28 ++ .../octo/portal/controller/AppController.java | 44 +++ .../portal/controller/ProviderController.java | 87 +++++ .../octo/portal/model/ProviderDesc.java | 157 +++++++++ .../octo/portal/model/ProviderNodeData.java | 38 ++ .../octo/portal/model/ServiceDetail.java | 39 ++ .../portal/model/param/ProviderInfoParam.java | 55 +++ .../model/param/ProviderStatusParam.java | 66 ++++ .../model/param/ProviderWeightParam.java | 66 ++++ .../octo/portal/service/AppService.java | 24 ++ .../octo/portal/service/ProviderService.java | 31 ++ .../service/curator/ZookeeperClient.java | 135 +++++++ .../portal/service/impl/AppServiceImpl.java | 48 +++ .../service/impl/ProviderServiceImpl.java | 142 ++++++++ .../meituan/octo/portal/util/JsonUtil.java | 69 ++++ .../meituan/octo/portal/util/ZkPathUtil.java | 32 ++ .../src/main/resources/application.yaml | 2 + .../OctoPortalServerApplicationTests.java | 31 ++ 71 files changed, 3925 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100644 docs/img/outline.png create mode 100644 octo-portal-frontend/.babelrc create mode 100644 octo-portal-frontend/.editorconfig create mode 100644 octo-portal-frontend/.gitignore create mode 100644 octo-portal-frontend/.postcssrc.js create mode 100644 octo-portal-frontend/build/build.js create mode 100644 octo-portal-frontend/build/check-versions.js create mode 100644 octo-portal-frontend/build/logo.png create mode 100644 octo-portal-frontend/build/utils.js create mode 100644 octo-portal-frontend/build/vue-loader.conf.js create mode 100644 octo-portal-frontend/build/webpack.base.conf.js create mode 100755 octo-portal-frontend/build/webpack.dev.conf.js create mode 100644 octo-portal-frontend/build/webpack.prod.conf.js create mode 100644 octo-portal-frontend/config/dev.env.js create mode 100644 octo-portal-frontend/config/index.js create mode 100644 octo-portal-frontend/config/prod.env.js create mode 100644 octo-portal-frontend/config/test.env.js create mode 100644 octo-portal-frontend/index.html create mode 100644 octo-portal-frontend/package.json create mode 100644 octo-portal-frontend/src/App.vue create mode 100644 octo-portal-frontend/src/api/api.js create mode 100644 octo-portal-frontend/src/common/util.js create mode 100644 octo-portal-frontend/src/components/Main.vue create mode 100644 octo-portal-frontend/src/components/content/extention-1/extention1_1.vue create mode 100644 octo-portal-frontend/src/components/content/extention-1/extention1_2.vue create mode 100644 octo-portal-frontend/src/components/content/extention-1/extention1_3.vue create mode 100644 octo-portal-frontend/src/components/content/performance/performance.vue create mode 100644 octo-portal-frontend/src/components/content/serviceManage/outline.vue create mode 100644 octo-portal-frontend/src/components/content/serviceManage/provider.vue create mode 100644 octo-portal-frontend/src/components/header/diy-bread-crumb/diy-bread-crumb.vue create mode 100644 octo-portal-frontend/src/components/header/diy-bread-crumb/index.js create mode 100644 octo-portal-frontend/src/components/header/header-bar.vue create mode 100644 octo-portal-frontend/src/components/header/index.js create mode 100644 octo-portal-frontend/src/components/header/sider-active/index.js create mode 100644 octo-portal-frontend/src/components/header/sider-active/sider-active.vue create mode 100644 octo-portal-frontend/src/components/sider/mixin.js create mode 100644 octo-portal-frontend/src/components/sider/sidebar-collapsed-menu.vue create mode 100644 octo-portal-frontend/src/components/sider/sidebar-menu-item.vue create mode 100644 octo-portal-frontend/src/components/sider/sidebar-menu.vue create mode 100644 octo-portal-frontend/src/config/index.js create mode 100644 octo-portal-frontend/src/index.less create mode 100644 octo-portal-frontend/src/main.js create mode 100644 octo-portal-frontend/src/mock/index.js create mode 100644 octo-portal-frontend/src/mock/mock.js create mode 100644 octo-portal-frontend/src/router/index.js create mode 100644 octo-portal-frontend/src/router/routers.js create mode 100644 octo-portal-frontend/src/store/index.js create mode 100644 octo-portal-frontend/static/.gitkeep create mode 100644 octo-portal-frontend/static/favicon.ico create mode 100644 octo-portal-server/.gitignore create mode 100644 octo-portal-server/pom.xml create mode 100644 octo-portal-server/src/main/java/com/meituan/octo/portal/OctoPortalServerApplication.java create mode 100644 octo-portal-server/src/main/java/com/meituan/octo/portal/controller/AppController.java create mode 100644 octo-portal-server/src/main/java/com/meituan/octo/portal/controller/ProviderController.java create mode 100644 octo-portal-server/src/main/java/com/meituan/octo/portal/model/ProviderDesc.java create mode 100644 octo-portal-server/src/main/java/com/meituan/octo/portal/model/ProviderNodeData.java create mode 100644 octo-portal-server/src/main/java/com/meituan/octo/portal/model/ServiceDetail.java create mode 100644 octo-portal-server/src/main/java/com/meituan/octo/portal/model/param/ProviderInfoParam.java create mode 100644 octo-portal-server/src/main/java/com/meituan/octo/portal/model/param/ProviderStatusParam.java create mode 100644 octo-portal-server/src/main/java/com/meituan/octo/portal/model/param/ProviderWeightParam.java create mode 100644 octo-portal-server/src/main/java/com/meituan/octo/portal/service/AppService.java create mode 100644 octo-portal-server/src/main/java/com/meituan/octo/portal/service/ProviderService.java create mode 100644 octo-portal-server/src/main/java/com/meituan/octo/portal/service/curator/ZookeeperClient.java create mode 100644 octo-portal-server/src/main/java/com/meituan/octo/portal/service/impl/AppServiceImpl.java create mode 100644 octo-portal-server/src/main/java/com/meituan/octo/portal/service/impl/ProviderServiceImpl.java create mode 100644 octo-portal-server/src/main/java/com/meituan/octo/portal/util/JsonUtil.java create mode 100644 octo-portal-server/src/main/java/com/meituan/octo/portal/util/ZkPathUtil.java create mode 100644 octo-portal-server/src/main/resources/application.yaml create mode 100644 octo-portal-server/src/test/java/com/meituan/octo/portal/OctoPortalServerApplicationTests.java diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. diff --git a/README.md b/README.md new file mode 100644 index 0000000..58307da --- /dev/null +++ b/README.md @@ -0,0 +1,64 @@ +# OCTO管理端 + +## 背景描述 +octo-portal是美团OCTO服务治理体系的管理端,是为各类服务提供节点操作、配置等功能的管理平台。 + +## 主页截图 +![主页概览](./docs/img/outline.png) + + +## 主要功能 +目前提供的功能有服务节点管理,包括服务节点展现,节点启用禁用、节点权重调整、删除节点等。 + + + +## 项目结构 + +#### 前端部分 + +* javascript框架使用[Vue.js](https://vuejs.org),UI框架使用[iView](https://www.iviewui.com) + +#### 后端部分 + +* 标准spring boot工程 + + + +## 项目配置启动 +* 提供前后端独立部署方式,前端启动端口8081,访问后端8080端口获取数据,前端支持热加载。 +* 运行环境: 建议JDK 1.8及以上,建议node版本>=10.7.0 + +* 运行前端 octo-portal-frontend +* 首先在octo-portal-frontend/config/index.js 配置后端ip和端口,然后执行以下命令 + +```bash + +cd octo-portal-frontend + +npm install + +npm run dev + +``` + +* 运行后端 octo-portal-server +* 首先在src/main/resources/application.yaml中配置注册中心地址,然后执行以下命令 + +```bash + +cd octo-portal-server + +mvn clean package -Dmvn.test.skip=true + +cd target + +java -jar octo-portal-server-0.0.1-SNAPSHOT.jar + +``` + +## Copyright and License +[Apache 2.0 License.](/LICENSE) + +## 联系我们 +- Mail: inf.octo.os@meituan.com +- [**Issues**](https://github.com/Meituan-Dianping/octo-portal/issues) \ No newline at end of file diff --git a/docs/img/outline.png b/docs/img/outline.png new file mode 100644 index 0000000000000000000000000000000000000000..d6b90be30710c63ca0dd231747505b775398425b GIT binary patch literal 250389 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�Znc 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ĉ({=;V*2IU1j4-vOCNhg9MAc=EHis{q7GURFY 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
J=GX}^3JA;M6Nw`mE=<|##7(R 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 z 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 1%", "last 2 versions", "not ie <= 8"] + } + }], + "stage-2" + ], + "plugins": ["transform-vue-jsx", "transform-runtime"], + "env": { + "test": { + "presets": ["env", "stage-2"], + "plugins": ["transform-vue-jsx", "transform-es2015-modules-commonjs", "dynamic-import-node"] + } + } +} diff --git a/octo-portal-frontend/.editorconfig b/octo-portal-frontend/.editorconfig new file mode 100644 index 0000000..9d08a1a --- /dev/null +++ b/octo-portal-frontend/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true diff --git a/octo-portal-frontend/.gitignore b/octo-portal-frontend/.gitignore new file mode 100644 index 0000000..dfb4167 --- /dev/null +++ b/octo-portal-frontend/.gitignore @@ -0,0 +1,17 @@ +.DS_Store +node_modules/ +/dist/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* +/test/unit/coverage/ +/test/e2e/reports/ +selenium-debug.log + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln diff --git a/octo-portal-frontend/.postcssrc.js b/octo-portal-frontend/.postcssrc.js new file mode 100644 index 0000000..eee3e92 --- /dev/null +++ b/octo-portal-frontend/.postcssrc.js @@ -0,0 +1,10 @@ +// https://github.com/michael-ciniawsky/postcss-load-config + +module.exports = { + "plugins": { + "postcss-import": {}, + "postcss-url": {}, + // to edit target browsers: use "browserslist" field in package.json + "autoprefixer": {} + } +} diff --git a/octo-portal-frontend/build/build.js b/octo-portal-frontend/build/build.js new file mode 100644 index 0000000..8f2ad8a --- /dev/null +++ b/octo-portal-frontend/build/build.js @@ -0,0 +1,41 @@ +'use strict' +require('./check-versions')() + +process.env.NODE_ENV = 'production' + +const ora = require('ora') +const rm = require('rimraf') +const path = require('path') +const chalk = require('chalk') +const webpack = require('webpack') +const config = require('../config') +const webpackConfig = require('./webpack.prod.conf') + +const spinner = ora('building for production...') +spinner.start() + +rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => { + if (err) throw err + webpack(webpackConfig, (err, stats) => { + spinner.stop() + if (err) throw err + process.stdout.write(stats.toString({ + colors: true, + modules: false, + children: false, // If you are using ts-loader, setting this to true will make TypeScript errors show up during build. + chunks: false, + chunkModules: false + }) + '\n\n') + + if (stats.hasErrors()) { + console.log(chalk.red(' Build failed with errors.\n')) + process.exit(1) + } + + console.log(chalk.cyan(' Build complete.\n')) + console.log(chalk.yellow( + ' Tip: built files are meant to be served over an HTTP server.\n' + + ' Opening index.html over file:// won\'t work.\n' + )) + }) +}) diff --git a/octo-portal-frontend/build/check-versions.js b/octo-portal-frontend/build/check-versions.js new file mode 100644 index 0000000..3ef972a --- /dev/null +++ b/octo-portal-frontend/build/check-versions.js @@ -0,0 +1,54 @@ +'use strict' +const chalk = require('chalk') +const semver = require('semver') +const packageConfig = require('../package.json') +const shell = require('shelljs') + +function exec (cmd) { + return require('child_process').execSync(cmd).toString().trim() +} + +const versionRequirements = [ + { + name: 'node', + currentVersion: semver.clean(process.version), + versionRequirement: packageConfig.engines.node + } +] + +if (shell.which('npm')) { + versionRequirements.push({ + name: 'npm', + currentVersion: exec('npm --version'), + versionRequirement: packageConfig.engines.npm + }) +} + +module.exports = function () { + const warnings = [] + + for (let i = 0; i < versionRequirements.length; i++) { + const mod = versionRequirements[i] + + if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { + warnings.push(mod.name + ': ' + + chalk.red(mod.currentVersion) + ' should be ' + + chalk.green(mod.versionRequirement) + ) + } + } + + if (warnings.length) { + console.log('') + console.log(chalk.yellow('To use this template, you must update following to modules:')) + console.log() + + for (let i = 0; i < warnings.length; i++) { + const warning = warnings[i] + console.log(' ' + warning) + } + + console.log() + process.exit(1) + } +} diff --git a/octo-portal-frontend/build/logo.png b/octo-portal-frontend/build/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f3d2503fc2a44b5053b0837ebea6e87a2d339a43 GIT binary patch literal 6849 zcmaKRcUV(fvo}bjDT-7nLI_nlK}sT_69H+`qzVWDA|yaU?}j417wLi^B1KB1SLsC& zL0ag7$U(XW5YR7p&Ux?sP$d4lvMt8C^+TcQu4F zQqv!UF!I+kw)c0jhd6+g6oCr9P?7)?!qX1ui*iL{p}sKCAGuJ{{W)0z1pLF|=>h}& zt(2Lr0Z`2ig8<5i%Zk}cO5Fm=LByqGWaS`oqChZdEFmc`0hSb#gg|Aap^{+WKOYcj zHjINK)KDG%&s?Mt4CL(T=?;~U@bU2x_mLKN!#GJuK_CzbNw5SMEJorG!}_5;?R>@1 zSl)jns3WlU7^J%=(hUtfmuUCU&C3%8B5C^f5>W2Cy8jW3#{Od{lF1}|?c61##3dzA zsPlFG;l_FzBK}8>|H_Ru_H#!_7$UH4UKo3lKOA}g1(R&|e@}GINYVzX?q=_WLZCgh z)L|eJMce`D0EIwgRaNETDsr+?vQknSGAi=7H00r`QnI%oQnFxm`G2umXso9l+8*&Q z7WqF|$p49js$mdzo^BXpH#gURy=UO;=IMrYc5?@+sR4y_?d*~0^YP7d+y0{}0)zBM zIKVM(DBvICK#~7N0a+PY6)7;u=dutmNqK3AlsrUU9U`d;msiucB_|8|2kY=(7XA;G zwDA8AR)VCA#JOkxm#6oHNS^YVuOU;8p$N)2{`;oF|rQ?B~K$%rHDxXs+_G zF5|-uqHZvSzq}L;5Kcy_P+x0${33}Ofb6+TX&=y;;PkEOpz%+_bCw_{<&~ zeLV|!bP%l1qxywfVr9Z9JI+++EO^x>ZuCK);=$VIG1`kxK8F2M8AdC$iOe3cj1fo(ce4l-9 z7*zKy3={MixvUk=enQE;ED~7tv%qh&3lR<0m??@w{ILF|e#QOyPkFYK!&Up7xWNtL zOW%1QMC<3o;G9_S1;NkPB6bqbCOjeztEc6TsBM<(q9((JKiH{01+Ud=uw9B@{;(JJ z-DxI2*{pMq`q1RQc;V8@gYAY44Z!%#W~M9pRxI(R?SJ7sy7em=Z5DbuDlr@*q|25V)($-f}9c#?D%dU^RS<(wz?{P zFFHtCab*!rl(~j@0(Nadvwg8q|4!}L^>d?0al6}Rrv9$0M#^&@zjbfJy_n!%mVHK4 z6pLRIQ^Uq~dnyy$`ay51Us6WaP%&O;@49m&{G3z7xV3dLtt1VTOMYl3UW~Rm{Eq4m zF?Zl_v;?7EFx1_+#WFUXxcK78IV)FO>42@cm@}2I%pVbZqQ}3;p;sDIm&knay03a^ zn$5}Q$G!@fTwD$e(x-~aWP0h+4NRz$KlnO_H2c< z(XX#lPuW_%H#Q+c&(nRyX1-IadKR-%$4FYC0fsCmL9ky3 zKpxyjd^JFR+vg2!=HWf}2Z?@Td`0EG`kU?{8zKrvtsm)|7>pPk9nu@2^z96aU2<#` z2QhvH5w&V;wER?mopu+nqu*n8p~(%QkwSs&*0eJwa zMXR05`OSFpfyRb!Y_+H@O%Y z0=K^y6B8Gcbl?SA)qMP3Z+=C(?8zL@=74R=EVnE?vY!1BQy2@q*RUgRx4yJ$k}MnL zs!?74QciNb-LcG*&o<9=DSL>1n}ZNd)w1z3-0Pd^4ED1{qd=9|!!N?xnXjM!EuylY z5=!H>&hSofh8V?Jofyd!h`xDI1fYAuV(sZwwN~{$a}MX^=+0TH*SFp$vyxmUv7C*W zv^3Gl0+eTFgBi3FVD;$nhcp)ka*4gSskYIqQ&+M}xP9yLAkWzBI^I%zR^l1e?bW_6 zIn{mo{dD=)9@V?s^fa55jh78rP*Ze<3`tRCN4*mpO$@7a^*2B*7N_|A(Ve2VB|)_o z$=#_=aBkhe(ifX}MLT()@5?OV+~7cXC3r!%{QJxriXo9I%*3q4KT4Xxzyd{ z9;_%=W%q!Vw$Z7F3lUnY+1HZ*lO;4;VR2+i4+D(m#01OYq|L_fbnT;KN<^dkkCwtd zF7n+O7KvAw8c`JUh6LmeIrk4`F3o|AagKSMK3))_5Cv~y2Bb2!Ibg9BO7Vkz?pAYX zoI=B}+$R22&IL`NCYUYjrdhwjnMx_v=-Qcx-jmtN>!Zqf|n1^SWrHy zK|MwJ?Z#^>)rfT5YSY{qjZ&`Fjd;^vv&gF-Yj6$9-Dy$<6zeP4s+78gS2|t%Z309b z0^fp~ue_}i`U9j!<|qF92_3oB09NqgAoehQ`)<)dSfKoJl_A6Ec#*Mx9Cpd-p#$Ez z={AM*r-bQs6*z$!*VA4|QE7bf@-4vb?Q+pPKLkY2{yKsw{&udv_2v8{Dbd zm~8VAv!G~s)`O3|Q6vFUV%8%+?ZSVUa(;fhPNg#vab@J*9XE4#D%)$UU-T5`fwjz! z6&gA^`OGu6aUk{l*h9eB?opVdrHK>Q@U>&JQ_2pR%}TyOXGq_6s56_`U(WoOaAb+K zXQr#6H}>a-GYs9^bGP2Y&hSP5gEtW+GVC4=wy0wQk=~%CSXj=GH6q z-T#s!BV`xZVxm{~jr_ezYRpqqIcXC=Oq`b{lu`Rt(IYr4B91hhVC?yg{ol4WUr3v9 zOAk2LG>CIECZ-WIs0$N}F#eoIUEtZudc7DPYIjzGqDLWk_A4#(LgacooD z2K4IWs@N`Bddm-{%oy}!k0^i6Yh)uJ1S*90>|bm3TOZxcV|ywHUb(+CeX-o1|LTZM zwU>dY3R&U)T(}5#Neh?-CWT~@{6Ke@sI)uSuzoah8COy)w)B)aslJmp`WUcjdia-0 zl2Y}&L~XfA`uYQboAJ1;J{XLhYjH){cObH3FDva+^8ioOQy%Z=xyjGLmWMrzfFoH; zEi3AG`_v+%)&lDJE;iJWJDI@-X9K5O)LD~j*PBe(wu+|%ar~C+LK1+-+lK=t# z+Xc+J7qp~5q=B~rD!x78)?1+KUIbYr^5rcl&tB-cTtj+e%{gpZZ4G~6r15+d|J(ky zjg@@UzMW0k9@S#W(1H{u;Nq(7llJbq;;4t$awM;l&(2s+$l!Ay9^Ge|34CVhr7|BG z?dAR83smef^frq9V(OH+a+ki#q&-7TkWfFM=5bsGbU(8mC;>QTCWL5ydz9s6k@?+V zcjiH`VI=59P-(-DWXZ~5DH>B^_H~;4$)KUhnmGo*G!Tq8^LjfUDO)lASN*=#AY_yS zqW9UX(VOCO&p@kHdUUgsBO0KhXxn1sprK5h8}+>IhX(nSXZKwlNsjk^M|RAaqmCZB zHBolOHYBas@&{PT=R+?d8pZu zUHfyucQ`(umXSW7o?HQ3H21M`ZJal+%*)SH1B1j6rxTlG3hx1IGJN^M7{$j(9V;MZ zRKybgVuxKo#XVM+?*yTy{W+XHaU5Jbt-UG33x{u(N-2wmw;zzPH&4DE103HV@ER86 z|FZEmQb|&1s5#`$4!Cm}&`^{(4V}OP$bk`}v6q6rm;P!H)W|2i^e{7lTk2W@jo_9q z*aw|U7#+g59Fv(5qI`#O-qPj#@_P>PC#I(GSp3DLv7x-dmYK=C7lPF8a)bxb=@)B1 zUZ`EqpXV2dR}B&r`uM}N(TS99ZT0UB%IN|0H%DcVO#T%L_chrgn#m6%x4KE*IMfjX zJ%4veCEqbXZ`H`F_+fELMC@wuy_ch%t*+Z+1I}wN#C+dRrf2X{1C8=yZ_%Pt6wL_~ zZ2NN-hXOT4P4n$QFO7yYHS-4wF1Xfr-meG9Pn;uK51?hfel`d38k{W)F*|gJLT2#T z<~>spMu4(mul-8Q3*pf=N4DcI)zzjqAgbE2eOT7~&f1W3VsdD44Ffe;3mJp-V@8UC z)|qnPc12o~$X-+U@L_lWqv-RtvB~%hLF($%Ew5w>^NR82qC_0FB z)=hP1-OEx?lLi#jnLzH}a;Nvr@JDO-zQWd}#k^an$Kwml;MrD&)sC5b`s0ZkVyPkb zt}-jOq^%_9>YZe7Y}PhW{a)c39G`kg(P4@kxjcYfgB4XOOcmezdUI7j-!gs7oAo2o zx(Ph{G+YZ`a%~kzK!HTAA5NXE-7vOFRr5oqY$rH>WI6SFvWmahFav!CfRMM3%8J&c z*p+%|-fNS_@QrFr(at!JY9jCg9F-%5{nb5Bo~z@Y9m&SHYV`49GAJjA5h~h4(G!Se zZmK{Bo7ivCfvl}@A-ptkFGcWXAzj3xfl{evi-OG(TaCn1FAHxRc{}B|x+Ua1D=I6M z!C^ZIvK6aS_c&(=OQDZfm>O`Nxsw{ta&yiYPA~@e#c%N>>#rq)k6Aru-qD4(D^v)y z*>Rs;YUbD1S8^D(ps6Jbj0K3wJw>L4m)0e(6Pee3Y?gy9i0^bZO?$*sv+xKV?WBlh zAp*;v6w!a8;A7sLB*g-^<$Z4L7|5jXxxP1}hQZ<55f9<^KJ>^mKlWSGaLcO0=$jem zWyZkRwe~u{{tU63DlCaS9$Y4CP4f?+wwa(&1ou)b>72ydrFvm`Rj-0`kBJgK@nd(*Eh!(NC{F-@=FnF&Y!q`7){YsLLHf0_B6aHc# z>WIuHTyJwIH{BJ4)2RtEauC7Yq7Cytc|S)4^*t8Va3HR zg=~sN^tp9re@w=GTx$;zOWMjcg-7X3Wk^N$n;&Kf1RgVG2}2L-(0o)54C509C&77i zrjSi{X*WV=%C17((N^6R4Ya*4#6s_L99RtQ>m(%#nQ#wrRC8Y%yxkH;d!MdY+Tw@r zjpSnK`;C-U{ATcgaxoEpP0Gf+tx);buOMlK=01D|J+ROu37qc*rD(w`#O=3*O*w9?biwNoq3WN1`&Wp8TvKj3C z3HR9ssH7a&Vr<6waJrU zdLg!ieYz%U^bmpn%;(V%%ugMk92&?_XX1K@mwnVSE6!&%P%Wdi7_h`CpScvspMx?N zQUR>oadnG17#hNc$pkTp+9lW+MBKHRZ~74XWUryd)4yd zj98$%XmIL4(9OnoeO5Fnyn&fpQ9b0h4e6EHHw*l68j;>(ya`g^S&y2{O8U>1*>4zR zq*WSI_2o$CHQ?x0!wl9bpx|Cm2+kFMR)oMud1%n2=qn5nE&t@Fgr#=Zv2?}wtEz^T z9rrj=?IH*qI5{G@Rn&}^Z{+TW}mQeb9=8b<_a`&Cm#n%n~ zU47MvCBsdXFB1+adOO)03+nczfWa#vwk#r{o{dF)QWya9v2nv43Zp3%Ps}($lA02*_g25t;|T{A5snSY?3A zrRQ~(Ygh_ebltHo1VCbJb*eOAr;4cnlXLvI>*$-#AVsGg6B1r7@;g^L zFlJ_th0vxO7;-opU@WAFe;<}?!2q?RBrFK5U{*ai@NLKZ^};Ul}beukveh?TQn;$%9=R+DX07m82gP$=}Uo_%&ngV`}Hyv8g{u z3SWzTGV|cwQuFIs7ZDOqO_fGf8Q`8MwL}eUp>q?4eqCmOTcwQuXtQckPy|4F1on8l zP*h>d+cH#XQf|+6c|S{7SF(Lg>bR~l(0uY?O{OEVlaxa5@e%T&xju=o1`=OD#qc16 zSvyH*my(dcp6~VqR;o(#@m44Lug@~_qw+HA=mS#Z^4reBy8iV?H~I;{LQWk3aKK8$bLRyt$g?- { + const notifier = require('node-notifier') + + return (severity, errors) => { + if (severity !== 'error') return + + const error = errors[0] + const filename = error.file && error.file.split('!').pop() + + notifier.notify({ + title: packageConfig.name, + message: severity + ': ' + error.name, + subtitle: filename || '', + icon: path.join(__dirname, 'logo.png') + }) + } +} diff --git a/octo-portal-frontend/build/vue-loader.conf.js b/octo-portal-frontend/build/vue-loader.conf.js new file mode 100644 index 0000000..33ed58b --- /dev/null +++ b/octo-portal-frontend/build/vue-loader.conf.js @@ -0,0 +1,22 @@ +'use strict' +const utils = require('./utils') +const config = require('../config') +const isProduction = process.env.NODE_ENV === 'production' +const sourceMapEnabled = isProduction + ? config.build.productionSourceMap + : config.dev.cssSourceMap + +module.exports = { + loaders: utils.cssLoaders({ + sourceMap: sourceMapEnabled, + extract: isProduction + }), + cssSourceMap: sourceMapEnabled, + cacheBusting: config.dev.cacheBusting, + transformToRequire: { + video: ['src', 'poster'], + source: 'src', + img: 'src', + image: 'xlink:href' + } +} diff --git a/octo-portal-frontend/build/webpack.base.conf.js b/octo-portal-frontend/build/webpack.base.conf.js new file mode 100644 index 0000000..1e371d7 --- /dev/null +++ b/octo-portal-frontend/build/webpack.base.conf.js @@ -0,0 +1,86 @@ +'use strict' +const path = require('path') +const utils = require('./utils') +const config = require('../config') +const vueLoaderConfig = require('./vue-loader.conf') + +function resolve (dir) { + return path.join(__dirname, '..', dir) +} + + + +module.exports = { + context: path.resolve(__dirname, '../'), + entry: { + app: './src/main.js' + }, + output: { + path: config.build.assetsRoot, + filename: '[name].js', + publicPath: process.env.NODE_ENV === 'production' + ? config.build.assetsPublicPath + : config.dev.assetsPublicPath + }, + resolve: { + extensions: ['.js', '.vue', '.json'], + alias: { + 'vue$': 'vue/dist/vue.esm.js', + '@': resolve('src'), + } + }, + module: { + rules: [ + { + test: /\.vue$/, + loader: 'vue-loader', + options: vueLoaderConfig + }, + { + test: /\.js$/, + loader: 'babel-loader', + include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')] + }, + { + test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, + loader: 'url-loader', + options: { + limit: 10000, + name: utils.assetsPath('img/[name].[hash:7].[ext]') + } + }, + { + test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/, + loader: 'url-loader', + options: { + limit: 10000, + name: utils.assetsPath('media/[name].[hash:7].[ext]') + } + }, + { + test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, + loader: 'url-loader', + options: { + limit: 10000, + name: utils.assetsPath('fonts/[name].[hash:7].[ext]') + } + }, + // { + // test: /\.less$/, + // loader: "style-loader!css-loader!less-loader", + // } + ] + }, + node: { + // prevent webpack from injecting useless setImmediate polyfill because Vue + // source contains it (although only uses it if it's native). + setImmediate: false, + // prevent webpack from injecting mocks to Node native modules + // that does not make sense for the client + dgram: 'empty', + fs: 'empty', + net: 'empty', + tls: 'empty', + child_process: 'empty' + } +} diff --git a/octo-portal-frontend/build/webpack.dev.conf.js b/octo-portal-frontend/build/webpack.dev.conf.js new file mode 100755 index 0000000..070ae22 --- /dev/null +++ b/octo-portal-frontend/build/webpack.dev.conf.js @@ -0,0 +1,95 @@ +'use strict' +const utils = require('./utils') +const webpack = require('webpack') +const config = require('../config') +const merge = require('webpack-merge') +const path = require('path') +const baseWebpackConfig = require('./webpack.base.conf') +const CopyWebpackPlugin = require('copy-webpack-plugin') +const HtmlWebpackPlugin = require('html-webpack-plugin') +const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin') +const portfinder = require('portfinder') + +const HOST = process.env.HOST +const PORT = process.env.PORT && Number(process.env.PORT) + +const devWebpackConfig = merge(baseWebpackConfig, { + module: { + rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: true }) + }, + // cheap-module-eval-source-map is faster for development + devtool: config.dev.devtool, + + // these devServer options should be customized in /config/index.js + devServer: { + clientLogLevel: 'warning', + historyApiFallback: { + rewrites: [ + { from: /.*/, to: path.posix.join(config.dev.assetsPublicPath, 'index.html') }, + ], + }, + hot: true, + contentBase: false, // since we use CopyWebpackPlugin. + compress: true, + host: HOST || config.dev.host, + port: PORT || config.dev.port, + open: config.dev.autoOpenBrowser, + overlay: config.dev.errorOverlay + ? { warnings: false, errors: true } + : false, + publicPath: config.dev.assetsPublicPath, + proxy: config.dev.proxyTable, + quiet: true, // necessary for FriendlyErrorsPlugin + watchOptions: { + poll: config.dev.poll, + } + }, + plugins: [ + new webpack.DefinePlugin({ + 'process.env': require('../config/dev.env') + }), + new webpack.HotModuleReplacementPlugin(), + new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update. + new webpack.NoEmitOnErrorsPlugin(), + // https://github.com/ampedandwired/html-webpack-plugin + new HtmlWebpackPlugin({ + filename: 'index.html', + template: 'index.html', + inject: true + }), + // copy custom static assets + new CopyWebpackPlugin([ + { + from: path.resolve(__dirname, '../static'), + to: config.dev.assetsSubDirectory, + ignore: ['.*'] + } + ]) + ] +}) + +module.exports = new Promise((resolve, reject) => { + portfinder.basePort = process.env.PORT || config.dev.port + portfinder.getPort((err, port) => { + if (err) { + reject(err) + } else { + // publish the new Port, necessary for e2e tests + process.env.PORT = port + // add port to devServer config + devWebpackConfig.devServer.port = port + + // Add FriendlyErrorsPlugin + devWebpackConfig.plugins.push(new FriendlyErrorsPlugin({ + compilationSuccessInfo: { + messages: [`Your application is running here: http://${devWebpackConfig.devServer.host}:${port}`], + }, + onErrors: config.dev.notifyOnErrors + ? utils.createNotifierCallback() + : undefined + })) + + resolve(devWebpackConfig) + } + }) +}) diff --git a/octo-portal-frontend/build/webpack.prod.conf.js b/octo-portal-frontend/build/webpack.prod.conf.js new file mode 100644 index 0000000..2f17259 --- /dev/null +++ b/octo-portal-frontend/build/webpack.prod.conf.js @@ -0,0 +1,149 @@ +'use strict' +const path = require('path') +const utils = require('./utils') +const webpack = require('webpack') +const config = require('../config') +const merge = require('webpack-merge') +const baseWebpackConfig = require('./webpack.base.conf') +const CopyWebpackPlugin = require('copy-webpack-plugin') +const HtmlWebpackPlugin = require('html-webpack-plugin') +const ExtractTextPlugin = require('extract-text-webpack-plugin') +const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin') +const UglifyJsPlugin = require('uglifyjs-webpack-plugin') + +const env = process.env.NODE_ENV === 'testing' + ? require('../config/test.env') + : require('../config/prod.env') + +const webpackConfig = merge(baseWebpackConfig, { + module: { + rules: utils.styleLoaders({ + sourceMap: config.build.productionSourceMap, + extract: true, + usePostCSS: true + }) + }, + devtool: config.build.productionSourceMap ? config.build.devtool : false, + output: { + path: config.build.assetsRoot, + filename: utils.assetsPath('js/[name].[chunkhash].js'), + chunkFilename: utils.assetsPath('js/[id].[chunkhash].js') + }, + plugins: [ + // http://vuejs.github.io/vue-loader/en/workflow/production.html + new webpack.DefinePlugin({ + 'process.env': env + }), + new UglifyJsPlugin({ + uglifyOptions: { + compress: { + warnings: false + } + }, + sourceMap: config.build.productionSourceMap, + parallel: true + }), + // extract css into its own file + new ExtractTextPlugin({ + filename: utils.assetsPath('css/[name].[contenthash].css'), + // Setting the following option to `false` will not extract CSS from codesplit chunks. + // Their CSS will instead be inserted dynamically with style-loader when the codesplit chunk has been loaded by webpack. + // It's currently set to `true` because we are seeing that sourcemaps are included in the codesplit bundle as well when it's `false`, + // increasing file size: https://github.com/vuejs-templates/webpack/issues/1110 + allChunks: true, + }), + // Compress extracted CSS. We are using this plugin so that possible + // duplicated CSS from different components can be deduped. + new OptimizeCSSPlugin({ + cssProcessorOptions: config.build.productionSourceMap + ? { safe: true, map: { inline: false } } + : { safe: true } + }), + // generate dist index.html with correct asset hash for caching. + // you can customize output by editing /index.html + // see https://github.com/ampedandwired/html-webpack-plugin + new HtmlWebpackPlugin({ + filename: process.env.NODE_ENV === 'testing' + ? 'index.html' + : config.build.index, + template: 'index.html', + inject: true, + minify: { + removeComments: true, + collapseWhitespace: true, + removeAttributeQuotes: true + // more options: + // https://github.com/kangax/html-minifier#options-quick-reference + }, + // necessary to consistently work with multiple chunks via CommonsChunkPlugin + chunksSortMode: 'dependency' + }), + // keep module.id stable when vendor modules does not change + new webpack.HashedModuleIdsPlugin(), + // enable scope hoisting + new webpack.optimize.ModuleConcatenationPlugin(), + // split vendor js into its own file + new webpack.optimize.CommonsChunkPlugin({ + name: 'vendor', + minChunks (module) { + // any required modules inside node_modules are extracted to vendor + return ( + module.resource && + /\.js$/.test(module.resource) && + module.resource.indexOf( + path.join(__dirname, '../node_modules') + ) === 0 + ) + } + }), + // extract webpack runtime and module manifest to its own file in order to + // prevent vendor hash from being updated whenever app bundle is updated + new webpack.optimize.CommonsChunkPlugin({ + name: 'manifest', + minChunks: Infinity + }), + // This instance extracts shared chunks from code splitted chunks and bundles them + // in a separate chunk, similar to the vendor chunk + // see: https://webpack.js.org/plugins/commons-chunk-plugin/#extra-async-commons-chunk + new webpack.optimize.CommonsChunkPlugin({ + name: 'app', + async: 'vendor-async', + children: true, + minChunks: 3 + }), + + // copy custom static assets + new CopyWebpackPlugin([ + { + from: path.resolve(__dirname, '../static'), + to: config.build.assetsSubDirectory, + ignore: ['.*'] + } + ]) + ] +}) + +if (config.build.productionGzip) { + const CompressionWebpackPlugin = require('compression-webpack-plugin') + + webpackConfig.plugins.push( + new CompressionWebpackPlugin({ + asset: '[path].gz[query]', + algorithm: 'gzip', + test: new RegExp( + '\\.(' + + config.build.productionGzipExtensions.join('|') + + ')$' + ), + threshold: 10240, + minRatio: 0.8 + }) + ) +} + +if (config.build.bundleAnalyzerReport) { + const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin + webpackConfig.plugins.push(new BundleAnalyzerPlugin()) +} + +module.exports = webpackConfig diff --git a/octo-portal-frontend/config/dev.env.js b/octo-portal-frontend/config/dev.env.js new file mode 100644 index 0000000..1e22973 --- /dev/null +++ b/octo-portal-frontend/config/dev.env.js @@ -0,0 +1,7 @@ +'use strict' +const merge = require('webpack-merge') +const prodEnv = require('./prod.env') + +module.exports = merge(prodEnv, { + NODE_ENV: '"development"' +}) diff --git a/octo-portal-frontend/config/index.js b/octo-portal-frontend/config/index.js new file mode 100644 index 0000000..4498413 --- /dev/null +++ b/octo-portal-frontend/config/index.js @@ -0,0 +1,74 @@ +'use strict' +// Template version: 1.3.1 +// see http://vuejs-templates.github.io/webpack for documentation. + +const path = require('path') + +module.exports = { + dev: { + + // Paths + assetsSubDirectory: 'static', + assetsPublicPath: '/', + proxyTable: { + '/': { + target: 'http://localhost:8080/', + changeOrigin: true, + } + }, + + // Various Dev Server settings + host: 'localhost', // can be overwritten by process.env.HOST + port: 8081, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined + autoOpenBrowser: false, + errorOverlay: true, + notifyOnErrors: true, + poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions- + + + /** + * Source Maps + */ + + // https://webpack.js.org/configuration/devtool/#development + devtool: 'cheap-module-eval-source-map', + + // If you have problems debugging vue-files in devtools, + // set this to false - it *may* help + // https://vue-loader.vuejs.org/en/options.html#cachebusting + cacheBusting: true, + + cssSourceMap: true + }, + + build: { + // Template for index.html + index: path.resolve(__dirname, '../dist/index.html'), + + // Paths + assetsRoot: path.resolve(__dirname, '../dist'), + assetsSubDirectory: 'static', + assetsPublicPath: '/', + + /** + * Source Maps + */ + + productionSourceMap: true, + // https://webpack.js.org/configuration/devtool/#production + devtool: '#source-map', + + // Gzip off by default as many popular static hosts such as + // Surge or Netlify already gzip all static assets for you. + // Before setting to `true`, make sure to: + // npm install --save-dev compression-webpack-plugin + productionGzip: false, + productionGzipExtensions: ['js', 'css'], + + // Run the build command with an extra argument to + // View the bundle analyzer report after build finishes: + // `npm run build --report` + // Set to `true` or `false` to always turn it on or off + bundleAnalyzerReport: process.env.npm_config_report + } +} diff --git a/octo-portal-frontend/config/prod.env.js b/octo-portal-frontend/config/prod.env.js new file mode 100644 index 0000000..a6f9976 --- /dev/null +++ b/octo-portal-frontend/config/prod.env.js @@ -0,0 +1,4 @@ +'use strict' +module.exports = { + NODE_ENV: '"production"' +} diff --git a/octo-portal-frontend/config/test.env.js b/octo-portal-frontend/config/test.env.js new file mode 100644 index 0000000..c2824a3 --- /dev/null +++ b/octo-portal-frontend/config/test.env.js @@ -0,0 +1,7 @@ +'use strict' +const merge = require('webpack-merge') +const devEnv = require('./dev.env') + +module.exports = merge(devEnv, { + NODE_ENV: '"testing"' +}) diff --git a/octo-portal-frontend/index.html b/octo-portal-frontend/index.html new file mode 100644 index 0000000..a0b4070 --- /dev/null +++ b/octo-portal-frontend/index.html @@ -0,0 +1,13 @@ + + + + + + OCTO服务治理平台 + + + +
+ + + diff --git a/octo-portal-frontend/package.json b/octo-portal-frontend/package.json new file mode 100644 index 0000000..46eab10 --- /dev/null +++ b/octo-portal-frontend/package.json @@ -0,0 +1,83 @@ +{ + "name": "octo-portal-frontend", + "version": "1.0.0", + "description": "A Vue.js project", + "author": "", + "private": true, + "scripts": { + "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js", + "start": "npm run dev", + "unit": "jest --config test/unit/jest.conf.js --coverage", + "e2e": "node test/e2e/runner.js", + "test": "npm run unit && npm run e2e", + "build": "node build/build.js" + }, + "dependencies": { + "axios": "^0.18.0", + "iview": "^3.1.5", + "vue": "^2.5.2", + "vue-router": "^3.0.1", + "vuex": "^3.0.1" + }, + "devDependencies": { + "autoprefixer": "^7.1.2", + "axios-mock-adapter": "^1.15.0", + "babel-core": "^6.22.1", + "babel-helper-vue-jsx-merge-props": "^2.0.3", + "babel-jest": "^21.0.2", + "babel-loader": "^7.1.1", + "babel-plugin-dynamic-import-node": "^1.2.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.26.0", + "babel-plugin-transform-runtime": "^6.22.0", + "babel-plugin-transform-vue-jsx": "^3.5.0", + "babel-preset-env": "^1.3.2", + "babel-preset-stage-2": "^6.22.0", + "babel-register": "^6.22.0", + "chalk": "^2.0.1", + "chromedriver": "^2.27.2", + "copy-webpack-plugin": "^4.0.1", + "cross-spawn": "^5.0.1", + "css-loader": "^0.28.0", + "extract-text-webpack-plugin": "^3.0.0", + "file-loader": "^1.1.4", + "friendly-errors-webpack-plugin": "^1.6.1", + "html-webpack-plugin": "^2.30.1", + "jest": "^22.0.4", + "jest-serializer-vue": "^0.3.0", + "less": "^3.8.1", + "less-loader": "^4.1.0", + "nightwatch": "^0.9.12", + "node-notifier": "^5.1.2", + "optimize-css-assets-webpack-plugin": "^3.2.0", + "ora": "^1.2.0", + "portfinder": "^1.0.13", + "postcss-import": "^11.0.0", + "postcss-loader": "^2.0.8", + "postcss-url": "^7.2.1", + "rimraf": "^2.6.0", + "selenium-server": "^3.0.1", + "semver": "^5.3.0", + "shelljs": "^0.7.6", + "style-loader": "^0.23.1", + "uglifyjs-webpack-plugin": "^1.1.1", + "url-loader": "^0.5.8", + "vue-jest": "^1.0.2", + "vue-loader": "^13.3.0", + "vue-style-loader": "^3.0.1", + "vue-template-compiler": "^2.5.2", + "webpack": "^3.6.0", + "webpack-bundle-analyzer": "^2.9.0", + "webpack-dev-server": "^2.9.1", + "webpack-merge": "^4.1.0" + }, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + }, + "browserslist": [ + "> 1%", + "last 2 versions", + "not ie <= 8" + ] +} diff --git a/octo-portal-frontend/src/App.vue b/octo-portal-frontend/src/App.vue new file mode 100644 index 0000000..61d1205 --- /dev/null +++ b/octo-portal-frontend/src/App.vue @@ -0,0 +1,43 @@ + + + + + + diff --git a/octo-portal-frontend/src/api/api.js b/octo-portal-frontend/src/api/api.js new file mode 100644 index 0000000..5d8ba96 --- /dev/null +++ b/octo-portal-frontend/src/api/api.js @@ -0,0 +1,37 @@ +/* + * Copyright 2018 Meituan Dianping. 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. + */ + +import axios from 'axios' + +export const getServiceList = params => { + return axios.get('/api/app', {params: params}); +}; + +export const getProvider = params => { + return axios.get('/api/provider/info', {params: params}); +}; +export const deleteProvider = params => { + return axios.post('/api/provider/info', params); +}; + +export const updateProviderStatus = params => { + return axios.put('/api/provider/status', params); +}; + +export const updateProviderWeight = params => { + return axios.put('/api/provider/weight', params); +}; + diff --git a/octo-portal-frontend/src/common/util.js b/octo-portal-frontend/src/common/util.js new file mode 100644 index 0000000..2c7ac50 --- /dev/null +++ b/octo-portal-frontend/src/common/util.js @@ -0,0 +1,67 @@ +/* + * Copyright 2018 Meituan Dianping. 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. + */ + +export const formatUnixtimestamp = (time) => { + var timestamp = new Date(time * 1000); + var year = 1900 + timestamp.getYear(); + var month = "0" + (timestamp.getMonth() + 1); + var date = "0" + timestamp.getDate(); + var hour = "0" + timestamp.getHours(); + var minute = "0" + timestamp.getMinutes(); + var second = "0" + timestamp.getSeconds(); + return year + "-" + month.substring(month.length-2, month.length) + "-" + date.substring(date.length-2, date.length) + + " " + hour.substring(hour.length-2, hour.length) + ":" + + minute.substring(minute.length-2, minute.length) + ":" + + second.substring(second.length-2, second.length); +} + +export const getSiderMenuByRouters = (list) => { + let res = [] + for(let i = 0; i < list.length; i ++) { + let item = list[i] + let obj = { + icon: (item.meta && item.meta.icon) || '', + name: item.name, + meta: item.meta + } + if (hasChild(item)) { + obj.children = getSiderMenuByRouters(item.children) + } + res.push(obj) + } + return res +} + +export const hasChild = (item) => { + return item.children && item.children.length !== 0 +} + +export const getHeaderBreadCrumbList = (route) => { + let routeArr = route.matched + let headerBreadCrumbList = routeArr.map(item => { + let headerBreadCrumb = { + icon: (item.meta && item.meta.icon) || '', + name: (item.meta && item.meta.title) || item.name, + to: item.path + } + return headerBreadCrumb + }) + return headerBreadCrumbList +} + +export const showTitle = (item) => { + return (item.meta && item.meta.title) || item.name +} diff --git a/octo-portal-frontend/src/components/Main.vue b/octo-portal-frontend/src/components/Main.vue new file mode 100644 index 0000000..eafc07c --- /dev/null +++ b/octo-portal-frontend/src/components/Main.vue @@ -0,0 +1,129 @@ + + + + + + diff --git a/octo-portal-frontend/src/components/content/extention-1/extention1_1.vue b/octo-portal-frontend/src/components/content/extention-1/extention1_1.vue new file mode 100644 index 0000000..f9692f9 --- /dev/null +++ b/octo-portal-frontend/src/components/content/extention-1/extention1_1.vue @@ -0,0 +1,31 @@ + + + + + + + diff --git a/octo-portal-frontend/src/components/content/extention-1/extention1_2.vue b/octo-portal-frontend/src/components/content/extention-1/extention1_2.vue new file mode 100644 index 0000000..1ba8330 --- /dev/null +++ b/octo-portal-frontend/src/components/content/extention-1/extention1_2.vue @@ -0,0 +1,31 @@ + + + + + + + diff --git a/octo-portal-frontend/src/components/content/extention-1/extention1_3.vue b/octo-portal-frontend/src/components/content/extention-1/extention1_3.vue new file mode 100644 index 0000000..ba1fac9 --- /dev/null +++ b/octo-portal-frontend/src/components/content/extention-1/extention1_3.vue @@ -0,0 +1,31 @@ + + + + + + + diff --git a/octo-portal-frontend/src/components/content/performance/performance.vue b/octo-portal-frontend/src/components/content/performance/performance.vue new file mode 100644 index 0000000..c5f59cd --- /dev/null +++ b/octo-portal-frontend/src/components/content/performance/performance.vue @@ -0,0 +1,31 @@ + + + + + + + diff --git a/octo-portal-frontend/src/components/content/serviceManage/outline.vue b/octo-portal-frontend/src/components/content/serviceManage/outline.vue new file mode 100644 index 0000000..6d76232 --- /dev/null +++ b/octo-portal-frontend/src/components/content/serviceManage/outline.vue @@ -0,0 +1,31 @@ + + + + + + + diff --git a/octo-portal-frontend/src/components/content/serviceManage/provider.vue b/octo-portal-frontend/src/components/content/serviceManage/provider.vue new file mode 100644 index 0000000..0c50ef4 --- /dev/null +++ b/octo-portal-frontend/src/components/content/serviceManage/provider.vue @@ -0,0 +1,332 @@ + + + + diff --git a/octo-portal-frontend/src/components/header/diy-bread-crumb/diy-bread-crumb.vue b/octo-portal-frontend/src/components/header/diy-bread-crumb/diy-bread-crumb.vue new file mode 100644 index 0000000..b8c6c0f --- /dev/null +++ b/octo-portal-frontend/src/components/header/diy-bread-crumb/diy-bread-crumb.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/octo-portal-frontend/src/components/header/diy-bread-crumb/index.js b/octo-portal-frontend/src/components/header/diy-bread-crumb/index.js new file mode 100644 index 0000000..14ef44e --- /dev/null +++ b/octo-portal-frontend/src/components/header/diy-bread-crumb/index.js @@ -0,0 +1,18 @@ +/* + * Copyright 2018 Meituan Dianping. 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. + */ + +import diyBreadCrumb from './diy-bread-crumb.vue' +export default diyBreadCrumb diff --git a/octo-portal-frontend/src/components/header/header-bar.vue b/octo-portal-frontend/src/components/header/header-bar.vue new file mode 100644 index 0000000..d135db9 --- /dev/null +++ b/octo-portal-frontend/src/components/header/header-bar.vue @@ -0,0 +1,47 @@ + + + + diff --git a/octo-portal-frontend/src/components/header/index.js b/octo-portal-frontend/src/components/header/index.js new file mode 100644 index 0000000..451ed68 --- /dev/null +++ b/octo-portal-frontend/src/components/header/index.js @@ -0,0 +1,18 @@ +/* + * Copyright 2018 Meituan Dianping. 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. + */ + +import HeaderBar from './header-bar' +export default HeaderBar diff --git a/octo-portal-frontend/src/components/header/sider-active/index.js b/octo-portal-frontend/src/components/header/sider-active/index.js new file mode 100644 index 0000000..e2098fc --- /dev/null +++ b/octo-portal-frontend/src/components/header/sider-active/index.js @@ -0,0 +1,18 @@ +/* + * Copyright 2018 Meituan Dianping. 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. + */ + +import siderActive from './sider-active.vue' +export default siderActive diff --git a/octo-portal-frontend/src/components/header/sider-active/sider-active.vue b/octo-portal-frontend/src/components/header/sider-active/sider-active.vue new file mode 100644 index 0000000..e00776d --- /dev/null +++ b/octo-portal-frontend/src/components/header/sider-active/sider-active.vue @@ -0,0 +1,59 @@ + + + + + diff --git a/octo-portal-frontend/src/components/sider/mixin.js b/octo-portal-frontend/src/components/sider/mixin.js new file mode 100644 index 0000000..b0f83ef --- /dev/null +++ b/octo-portal-frontend/src/components/sider/mixin.js @@ -0,0 +1,48 @@ +/* + * Copyright 2018 Meituan Dianping. 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. + */ + +export default { + props: { + parentItem: { + type: Object, + default: () => {} + }, + theme: String, + iconSize: Number + }, + computed: { + parentName () { + return this.parentItem.name + }, + children () { + return this.parentItem.children + }, + textColor () { + return this.theme === 'dark' ? '#fff' : '#474e5e' + } + }, + methods: { + showTitle (item) { + return (item.meta && item.meta.title) || item.name + }, + hasChildren (item) { + return item.children && item.children.length > 0 + }, + getName (item, hasChildren) { + return (hasChildren ? item.children[0].name : item.name ) + } + } +} diff --git a/octo-portal-frontend/src/components/sider/sidebar-collapsed-menu.vue b/octo-portal-frontend/src/components/sider/sidebar-collapsed-menu.vue new file mode 100644 index 0000000..8999e6d --- /dev/null +++ b/octo-portal-frontend/src/components/sider/sidebar-collapsed-menu.vue @@ -0,0 +1,55 @@ + + + + diff --git a/octo-portal-frontend/src/components/sider/sidebar-menu-item.vue b/octo-portal-frontend/src/components/sider/sidebar-menu-item.vue new file mode 100644 index 0000000..b604a0d --- /dev/null +++ b/octo-portal-frontend/src/components/sider/sidebar-menu-item.vue @@ -0,0 +1,59 @@ + + + + + diff --git a/octo-portal-frontend/src/components/sider/sidebar-menu.vue b/octo-portal-frontend/src/components/sider/sidebar-menu.vue new file mode 100644 index 0000000..23cfa21 --- /dev/null +++ b/octo-portal-frontend/src/components/sider/sidebar-menu.vue @@ -0,0 +1,130 @@ + + + + + + + diff --git a/octo-portal-frontend/src/config/index.js b/octo-portal-frontend/src/config/index.js new file mode 100644 index 0000000..e6c53d3 --- /dev/null +++ b/octo-portal-frontend/src/config/index.js @@ -0,0 +1,25 @@ +/* + * Copyright 2018 Meituan Dianping. 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. + */ + +export default { + nodeStatus: { + dead: 0, + starting: 1, + alive: 2, + stopping: 3, + stopped: 4 + } +} diff --git a/octo-portal-frontend/src/index.less b/octo-portal-frontend/src/index.less new file mode 100644 index 0000000..e53433f --- /dev/null +++ b/octo-portal-frontend/src/index.less @@ -0,0 +1,21 @@ +/* + * Copyright 2018 Meituan Dianping. 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. + */ + +@import '~iview/src/styles/index.less'; + +@menu-dark-title: #001429; +@menu-dark-active-bg: #000b15; +@layout-sider-background: #001429; diff --git a/octo-portal-frontend/src/main.js b/octo-portal-frontend/src/main.js new file mode 100644 index 0000000..059ab70 --- /dev/null +++ b/octo-portal-frontend/src/main.js @@ -0,0 +1,40 @@ +/* + * Copyright 2018 Meituan Dianping. 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. + */ + +// The Vue build version to load with the `import` command +// (runtime-only or standalone) has been set in webpack.base.conf with an alias. +import Vue from 'vue' +import App from './App' +import router from './router' +import store from './store' +import config from './config' +import iView from 'iview' +import './index.less' + +Vue.use(iView) + +Vue.config.productionTip = false + +Vue.prototype.$config = config + +/* eslint-disable no-new */ +new Vue({ + el: '#app', + router, + store, + components: { App }, + template: '' +}) diff --git a/octo-portal-frontend/src/mock/index.js b/octo-portal-frontend/src/mock/index.js new file mode 100644 index 0000000..00a8f1c --- /dev/null +++ b/octo-portal-frontend/src/mock/index.js @@ -0,0 +1,19 @@ +/* + * Copyright 2018 Meituan Dianping. 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. + */ + +import mock from './mock'; + +export default mock; diff --git a/octo-portal-frontend/src/mock/mock.js b/octo-portal-frontend/src/mock/mock.js new file mode 100644 index 0000000..c0b1432 --- /dev/null +++ b/octo-portal-frontend/src/mock/mock.js @@ -0,0 +1,82 @@ +/* + * Copyright 2018 Meituan Dianping. 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. + */ + +import MockAdapter from 'axios-mock-adapter'; +import axios from 'axios'; + +export default { + bootstrap() { + let mock = new MockAdapter(axios); + mock.onGet('/test').reply(200, { + city: [ + { + value: 'New York', + label: 'New York' + }, + { + value: 'Beijing', + label: 'Beijing' + } + ] + }); + + mock.onGet('/provider').reply(200, { + tableData: [ + { + ip: '127.0.0.1', + port: '8080', + version: 'dorado-1.0', + weight: '10', + status: '1', + lastUpdateTime: '1111' + }, + { + ip: '127.0.0.1', + port: '8080', + version: 'dorado-1.0', + weight: '10', + status: '1', + lastUpdateTime: '1111' + }, + { + ip: '127.0.0.1', + port: '8080', + version: 'dorado-1.0', + weight: '10', + status: '1', + lastUpdateTime: '1111' + }, + { + ip: '127.0.0.1', + port: '8080', + version: 'dorado-1.0', + weight: '10', + status: '1', + lastUpdateTime: '1111' + }, + { + ip: '127.0.0.1', + port: '8080', + version: 'dorado-1.0', + weight: '10', + status: '1', + lastUpdateTime: '1111' + } + ] + }) + + } +} diff --git a/octo-portal-frontend/src/router/index.js b/octo-portal-frontend/src/router/index.js new file mode 100644 index 0000000..ce2e44e --- /dev/null +++ b/octo-portal-frontend/src/router/index.js @@ -0,0 +1,27 @@ +/* + * Copyright 2018 Meituan Dianping. 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. + */ + +import Vue from 'vue' +import Router from 'vue-router' +import routes from './routers' + +Vue.use(Router) + +export default new Router({ + routes +}) + + diff --git a/octo-portal-frontend/src/router/routers.js b/octo-portal-frontend/src/router/routers.js new file mode 100644 index 0000000..3f2d82d --- /dev/null +++ b/octo-portal-frontend/src/router/routers.js @@ -0,0 +1,111 @@ +/* + * Copyright 2018 Meituan Dianping. 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. + */ + +import Main from '@/components/Main' + +export default [ + { + path: '/', + name: '_provider', + redirect: '/provider', + meta: { + icon: 'md-book', + title: '服务管理' + }, + component: Main, + children: [ + { + path: '/provider', + name: 'provider', + meta: { + icon: 'md-folder', + title: '服务提供者' + }, + component: () => import('@/components/content/serviceManage/provider.vue') + }, + { + path: '/outline', + name: 'outline', + meta: { + icon: 'md-notifications', + title: '服务概要' + }, + component: () => import('@/components/content/serviceManage/outline.vue') + }, + + ] + }, + { + path: '/data', + name: 'data', + redirect: '/performance', + meta: { + icon: 'md-create', + title: '数据分析' + }, + component: Main, + children: [ + { + path: '/performance', + name: 'performance', + meta: { + icon: 'md-calculator', + title: '性能指标' + }, + component: () => import('@/components/content/performance/performance.vue') + } + ] + }, + { + path: '/extention1', + name: 'extention1', + redirect: '/extention1_1', + meta: { + icon: 'md-desktop', + title: '扩展' + }, + component: Main, + children: [ + { + path: '/extention1_1', + name: 'extention1_1', + meta: { + icon: 'md-document', + title: '扩展1' + }, + component: () => import('@/components/content/extention-1/extention1_1.vue') + }, + { + path: '/extention1_2', + name: 'extention1_2', + meta: { + icon: 'md-egg', + title: '扩展2' + }, + component: () => import('@/components/content/extention-1/extention1_2.vue') + }, + { + path: '/extention1_3', + name: 'extention1_4', + meta: { + icon: 'md-flag', + title: '扩展3' + }, + component: () => import('@/components/content/extention-1/extention1_3.vue') + } + ] + } +] diff --git a/octo-portal-frontend/src/store/index.js b/octo-portal-frontend/src/store/index.js new file mode 100644 index 0000000..c2db573 --- /dev/null +++ b/octo-portal-frontend/src/store/index.js @@ -0,0 +1,44 @@ +/* + * Copyright 2018 Meituan Dianping. 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. + */ + +import Vue from 'vue' +import Vuex from 'vuex' +import routers from '@/router/routers' + +import { + getSiderMenuByRouters, + getHeaderBreadCrumbList, +} from "@/common/util"; + +Vue.use(Vuex) + +export default new Vuex.Store({ + state: { + headerBreadCrumbList: [], + }, + getters: { + menuList: () => getSiderMenuByRouters(routers) + }, + mutations: { + setHeaderBreadCrumb (state, route) { + state.headerBreadCrumbList = getHeaderBreadCrumbList(route) + } + }, + actions: { + }, + modules: { + } +}) diff --git a/octo-portal-frontend/static/.gitkeep b/octo-portal-frontend/static/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/octo-portal-frontend/static/favicon.ico b/octo-portal-frontend/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..2e12a9ea9686df8c6f9641762e7806fe02307c15 GIT binary patch literal 81649 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 + + + 4.0.0 + + com.meituan.octo + octo-portal-server + 0.0.1-SNAPSHOT + jar + + octo-portal-server + octo-portal-server + + + org.springframework.boot + spring-boot-starter-parent + 1.5.9.RELEASE + + + + + UTF-8 + UTF-8 + 1.8 + + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + org.apache.curator + curator-framework + 2.7.1 + + + slf4j-api + org.slf4j + + + + + org.apache.curator + curator-recipes + 2.7.1 + + + slf4j-api + org.slf4j + + + + + + + + org.slf4j + slf4j-api + 1.7.16 + + + + org.apache.logging.log4j + log4j-slf4j-impl + 2.6.2 + + + + org.apache.logging.log4j + log4j-api + 2.6.2 + + + org.apache.logging.log4j + log4j-core + 2.6.2 + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/octo-portal-server/src/main/java/com/meituan/octo/portal/OctoPortalServerApplication.java b/octo-portal-server/src/main/java/com/meituan/octo/portal/OctoPortalServerApplication.java new file mode 100644 index 0000000..e2df702 --- /dev/null +++ b/octo-portal-server/src/main/java/com/meituan/octo/portal/OctoPortalServerApplication.java @@ -0,0 +1,28 @@ +/* + * Copyright 2018 Meituan Dianping. 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. + */ + +package com.meituan.octo.portal; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class OctoPortalServerApplication { + + public static void main(String[] args) { + SpringApplication.run(OctoPortalServerApplication.class, args); + } +} diff --git a/octo-portal-server/src/main/java/com/meituan/octo/portal/controller/AppController.java b/octo-portal-server/src/main/java/com/meituan/octo/portal/controller/AppController.java new file mode 100644 index 0000000..b65b21e --- /dev/null +++ b/octo-portal-server/src/main/java/com/meituan/octo/portal/controller/AppController.java @@ -0,0 +1,44 @@ +/* + * Copyright 2018 Meituan Dianping. 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. + */ + +package com.meituan.octo.portal.controller; + +import com.meituan.octo.portal.service.AppService; +import com.meituan.octo.portal.util.JsonUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import java.util.List; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api/app") +public class AppController { + + @Autowired + AppService appService; + + @RequestMapping(method = RequestMethod.GET) + public String getAppList() { + List appList = appService.getAppList(); + if (appList != null) { + return JsonUtil.createSuccess(appList); + } else { + return JsonUtil.createFail("服务获取失败"); + } + } + +} diff --git a/octo-portal-server/src/main/java/com/meituan/octo/portal/controller/ProviderController.java b/octo-portal-server/src/main/java/com/meituan/octo/portal/controller/ProviderController.java new file mode 100644 index 0000000..77b2c27 --- /dev/null +++ b/octo-portal-server/src/main/java/com/meituan/octo/portal/controller/ProviderController.java @@ -0,0 +1,87 @@ +/* + * Copyright 2018 Meituan Dianping. 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. + */ + +package com.meituan.octo.portal.controller; + +import com.meituan.octo.portal.model.ProviderDesc; +import com.meituan.octo.portal.model.param.ProviderInfoParam; +import com.meituan.octo.portal.model.param.ProviderStatusParam; +import com.meituan.octo.portal.model.param.ProviderWeightParam; +import com.meituan.octo.portal.service.ProviderService; +import com.meituan.octo.portal.util.JsonUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/api/provider") +public class ProviderController { + + @Autowired + ProviderService providerService; + + /** + * 获取服务下所有节点信息 + */ + @RequestMapping(value = "/info", method = RequestMethod.GET) + public String getProviders(@RequestParam(value = "env") int env, + @RequestParam(value = "serviceName") String serviceName) { + List providerDescList = providerService.getProviders(env, serviceName); + return JsonUtil.createSuccess(providerDescList); + } + + /** + * 调整权重 + */ + @RequestMapping(value = "/weight", method = RequestMethod.PUT) + public String updateProviderWeight(@RequestBody ProviderWeightParam providerWeightParam) { + int env = providerWeightParam.getEnv(); + String serviceName = providerWeightParam.getServiceName(); + String ip = providerWeightParam.getIp(); + int port = providerWeightParam.getPort(); + double fweight = providerWeightParam.getWeight(); + + return providerService.updateProviderWeight(env, serviceName, ip, port, fweight); + } + + /** + * 启用禁用状态调整 + */ + @RequestMapping(value = "/status", method = RequestMethod.PUT) + public String updateProviderStatus(@RequestBody ProviderStatusParam provierStatusParam) { + int env = provierStatusParam.getEnv(); + String serviceName = provierStatusParam.getServiceName(); + String ip = provierStatusParam.getIp(); + int port = provierStatusParam.getPort(); + int newStatus = provierStatusParam.getStatus(); + + return providerService.updateProviderStatus(env, serviceName, ip, port, newStatus); + } + + /** + * 删除节点 + */ + @RequestMapping(value = "/info", method = RequestMethod.POST) + public String deleteProvider(@RequestBody ProviderInfoParam providerInfoParam) { + int env = providerInfoParam.getEnv(); + String serviceName = providerInfoParam.getServiceName(); + String ip = providerInfoParam.getIp(); + int port = providerInfoParam.getPort(); + + return providerService.deleteProvider(env, serviceName, ip, port); + } +} diff --git a/octo-portal-server/src/main/java/com/meituan/octo/portal/model/ProviderDesc.java b/octo-portal-server/src/main/java/com/meituan/octo/portal/model/ProviderDesc.java new file mode 100644 index 0000000..ff9440d --- /dev/null +++ b/octo-portal-server/src/main/java/com/meituan/octo/portal/model/ProviderDesc.java @@ -0,0 +1,157 @@ +/* + * Copyright 2018 Meituan Dianping. 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. + */ + +package com.meituan.octo.portal.model; + +import java.util.Map; + +public class ProviderDesc { + private String appkey; + private String version; + private String ip; + private int port; + private int weight; + private int status; + private int env; + private int warmup; + private long lastUpdateTime; + private double fweight; + private int heartbeatSupport; + private String protocol; + private int role; + private int serverType; + private Map serviceInfo; + + public String getAppkey() { + return appkey; + } + + public void setAppkey(String appkey) { + this.appkey = appkey; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public String getIp() { + return ip; + } + + public void setIp(String ip) { + this.ip = ip; + } + + public int getPort() { + return port; + } + + public void setPort(int port) { + this.port = port; + } + + public int getWeight() { + return weight; + } + + public void setWeight(int weight) { + this.weight = weight; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public int getEnv() { + return env; + } + + public void setEnv(int env) { + this.env = env; + } + + public int getWarmup() { + return warmup; + } + + public void setWarmup(int warmup) { + this.warmup = warmup; + } + + public long getLastUpdateTime() { + return lastUpdateTime; + } + + public void setLastUpdateTime(long lastUpdateTime) { + this.lastUpdateTime = lastUpdateTime; + } + + public double getFweight() { + return fweight; + } + + public void setFweight(double fweight) { + this.fweight = fweight; + } + + public int getHeartbeatSupport() { + return heartbeatSupport; + } + + public void setHeartbeatSupport(int heartbeatSupport) { + this.heartbeatSupport = heartbeatSupport; + } + + public String getProtocol() { + return protocol; + } + + public void setProtocol(String protocol) { + this.protocol = protocol; + } + + public int getRole() { + return role; + } + + public void setRole(int role) { + this.role = role; + } + + public int getServerType() { + return serverType; + } + + public void setServerType(int serverType) { + this.serverType = serverType; + } + + public Map getServiceInfo() { + return serviceInfo; + } + + public void setServiceInfo(Map serviceInfo) { + this.serviceInfo = serviceInfo; + } +} diff --git a/octo-portal-server/src/main/java/com/meituan/octo/portal/model/ProviderNodeData.java b/octo-portal-server/src/main/java/com/meituan/octo/portal/model/ProviderNodeData.java new file mode 100644 index 0000000..31f57dd --- /dev/null +++ b/octo-portal-server/src/main/java/com/meituan/octo/portal/model/ProviderNodeData.java @@ -0,0 +1,38 @@ +/* + * Copyright 2018 Meituan Dianping. 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. + */ +package com.meituan.octo.portal.model; + + +public class ProviderNodeData { + private String appkey; + private long lastUpdateTime; + + public String getAppkey() { + return appkey; + } + + public void setAppkey(String appkey) { + this.appkey = appkey; + } + + public long getLastUpdateTime() { + return lastUpdateTime; + } + + public void setLastUpdateTime(long lastUpdateTime) { + this.lastUpdateTime = lastUpdateTime; + } +} diff --git a/octo-portal-server/src/main/java/com/meituan/octo/portal/model/ServiceDetail.java b/octo-portal-server/src/main/java/com/meituan/octo/portal/model/ServiceDetail.java new file mode 100644 index 0000000..74354ed --- /dev/null +++ b/octo-portal-server/src/main/java/com/meituan/octo/portal/model/ServiceDetail.java @@ -0,0 +1,39 @@ +/* + * Copyright 2018 Meituan Dianping. 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. + */ + +package com.meituan.octo.portal.model; + +public class ServiceDetail { + + private int unifiedProto; + + public int getUnifiedProto() { + return unifiedProto; + } + + public void setUnifiedProto(int unifiedProto) { + this.unifiedProto = unifiedProto; + } + + + @Override + public String toString() { + return "ServiceDetail{" + + "unifiedProto=" + + unifiedProto + + '}'; + } +} diff --git a/octo-portal-server/src/main/java/com/meituan/octo/portal/model/param/ProviderInfoParam.java b/octo-portal-server/src/main/java/com/meituan/octo/portal/model/param/ProviderInfoParam.java new file mode 100644 index 0000000..03c5099 --- /dev/null +++ b/octo-portal-server/src/main/java/com/meituan/octo/portal/model/param/ProviderInfoParam.java @@ -0,0 +1,55 @@ +/* + * Copyright 2018 Meituan Dianping. 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. + */ +package com.meituan.octo.portal.model.param; + +public class ProviderInfoParam { + private int env; + private String serviceName; + private String ip; + private int port; + + public int getEnv() { + return env; + } + + public void setEnv(int env) { + this.env = env; + } + + public String getServiceName() { + return serviceName; + } + + public void setServiceName(String serviceName) { + this.serviceName = serviceName; + } + + public String getIp() { + return ip; + } + + public void setIp(String ip) { + this.ip = ip; + } + + public int getPort() { + return port; + } + + public void setPort(int port) { + this.port = port; + } +} diff --git a/octo-portal-server/src/main/java/com/meituan/octo/portal/model/param/ProviderStatusParam.java b/octo-portal-server/src/main/java/com/meituan/octo/portal/model/param/ProviderStatusParam.java new file mode 100644 index 0000000..efec78b --- /dev/null +++ b/octo-portal-server/src/main/java/com/meituan/octo/portal/model/param/ProviderStatusParam.java @@ -0,0 +1,66 @@ +/* + * Copyright 2018 Meituan Dianping. 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. + */ + +package com.meituan.octo.portal.model.param; + + +public class ProviderStatusParam { + private int env; + private String serviceName; + private String ip; + private int port; + private int status; + + public int getEnv() { + return env; + } + + public void setEnv(int env) { + this.env = env; + } + + public String getServiceName() { + return serviceName; + } + + public void setServiceName(String serviceName) { + this.serviceName = serviceName; + } + + public String getIp() { + return ip; + } + + public void setIp(String ip) { + this.ip = ip; + } + + public int getPort() { + return port; + } + + public void setPort(int port) { + this.port = port; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } +} diff --git a/octo-portal-server/src/main/java/com/meituan/octo/portal/model/param/ProviderWeightParam.java b/octo-portal-server/src/main/java/com/meituan/octo/portal/model/param/ProviderWeightParam.java new file mode 100644 index 0000000..d723f86 --- /dev/null +++ b/octo-portal-server/src/main/java/com/meituan/octo/portal/model/param/ProviderWeightParam.java @@ -0,0 +1,66 @@ +/* + * Copyright 2018 Meituan Dianping. 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. + */ + +package com.meituan.octo.portal.model.param; + + +public class ProviderWeightParam { + private int env; + private String serviceName; + private String ip; + private int port; + private double weight; + + public int getEnv() { + return env; + } + + public void setEnv(int env) { + this.env = env; + } + + public String getServiceName() { + return serviceName; + } + + public void setServiceName(String serviceName) { + this.serviceName = serviceName; + } + + public String getIp() { + return ip; + } + + public void setIp(String ip) { + this.ip = ip; + } + + public int getPort() { + return port; + } + + public void setPort(int port) { + this.port = port; + } + + public double getWeight() { + return weight; + } + + public void setWeight(double weight) { + this.weight = weight; + } +} diff --git a/octo-portal-server/src/main/java/com/meituan/octo/portal/service/AppService.java b/octo-portal-server/src/main/java/com/meituan/octo/portal/service/AppService.java new file mode 100644 index 0000000..6e06995 --- /dev/null +++ b/octo-portal-server/src/main/java/com/meituan/octo/portal/service/AppService.java @@ -0,0 +1,24 @@ +/* + * Copyright 2018 Meituan Dianping. 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. + */ + +package com.meituan.octo.portal.service; + +import java.util.List; + + +public interface AppService { + List getAppList(); +} diff --git a/octo-portal-server/src/main/java/com/meituan/octo/portal/service/ProviderService.java b/octo-portal-server/src/main/java/com/meituan/octo/portal/service/ProviderService.java new file mode 100644 index 0000000..ac1a7f4 --- /dev/null +++ b/octo-portal-server/src/main/java/com/meituan/octo/portal/service/ProviderService.java @@ -0,0 +1,31 @@ +/* + * Copyright 2018 Meituan Dianping. 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. + */ + +package com.meituan.octo.portal.service; + +import com.meituan.octo.portal.model.ProviderDesc; + +import java.util.List; + +public interface ProviderService { + List getProviders(int env, String servicename); + + String updateProviderStatus(int env, String serviceName, String ip, int port, int newStatus); + + String updateProviderWeight(int env, String serviceName, String ip, int port, double fweight); + + String deleteProvider(int env, String serviceName, String ip, int port); +} diff --git a/octo-portal-server/src/main/java/com/meituan/octo/portal/service/curator/ZookeeperClient.java b/octo-portal-server/src/main/java/com/meituan/octo/portal/service/curator/ZookeeperClient.java new file mode 100644 index 0000000..f5896de --- /dev/null +++ b/octo-portal-server/src/main/java/com/meituan/octo/portal/service/curator/ZookeeperClient.java @@ -0,0 +1,135 @@ +/* + * Copyright 2018 Meituan Dianping. 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. + */ + +package com.meituan.octo.portal.service.curator; + +import org.apache.curator.framework.CuratorFramework; +import org.apache.curator.framework.CuratorFrameworkFactory; +import org.apache.curator.retry.ExponentialBackoffRetry; +import org.apache.zookeeper.data.Stat; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component +public class ZookeeperClient { + private static final Logger LOGGER = LoggerFactory.getLogger(ZookeeperClient.class); + + private static CuratorFramework client; + + private String address; + + public ZookeeperClient(@Value("${zk.address}") String address) { + this.address = address; + try { + ExponentialBackoffRetry retryPolicy = new ExponentialBackoffRetry(1000, 3); + client = CuratorFrameworkFactory.builder() + .connectString(address) + .retryPolicy(retryPolicy) + .connectionTimeoutMs(5 * 1000) + .sessionTimeoutMs(5 * 1000) + .build(); + client.start(); + } catch (RuntimeException e) { + LOGGER.error("ZookeeperClient[{}] init failed.", address, e); + } + } + + public boolean isExist(String path) { + try { + if (client.checkExists().forPath(path) != null) { + return true; + } + } catch (Exception e) { + LOGGER.error("ZookeeperClient[{}] isExist failed, path={}", address, path, e); + } + return false; + } + + + public String getData(String path) throws Exception { + try { + byte[] data = client.getData().forPath(path); + return data == null ? "" : new String(data, "UTF-8"); + } catch (Exception e) { + LOGGER.error("ZookeeperClient[{}] getNodeData: {} failed.", address, path, e); + throw e; + } + } + + public void setData(String path, String data) throws Exception { + if (!isExist(path)) { + return; + } + try { + byte[] bytes = data == null ? new byte[0] : data.getBytes("UTF-8"); + Stat stat = client.checkExists().forPath(path); + client.setData().withVersion(stat.getVersion()).forPath(path, bytes); + } catch (Exception e) { + LOGGER.error("ZookeeperClient[{}] setData:{} failed.", address, path, e); + throw e; + } + } + + public void create(String path) throws Exception { + if (isExist(path)) { + return; + } + try { + client.create().creatingParentsIfNeeded().forPath(path); + } catch (Exception e) { + LOGGER.error("ZookeeperClient[{}] createWithParent:{} failed.", address, path, e); + throw e; + } + } + + public void createWithData(String path, String data) throws Exception { + if (isExist(path)) { + return; + } + try { + byte[] bytes = data == null ? new byte[0] : data.getBytes("UTF-8"); + client.create().creatingParentsIfNeeded().forPath(path, bytes); + } catch (Exception e) { + LOGGER.error("ZookeeperClient[{}] createWithParent:{} failed.", address, path, e); + throw e; + } + } + + public void delete(String path) throws Exception { + if (!isExist(path)) { + return; + } + try { + client.delete().guaranteed().deletingChildrenIfNeeded().forPath(path); + } catch (Exception e) { + LOGGER.error("ZookeeperClient[{}] deletePath:{} failed.", address, path, e); + throw e; + } + } + + public List getChildren(String parentPath) throws Exception { + try { + return client.getChildren().forPath(parentPath); + } catch (Exception e) { + LOGGER.error("ZookeeperClient[{}] getChildren failed, parentPath:{}.", address, parentPath, e); + throw e; + } + } +} diff --git a/octo-portal-server/src/main/java/com/meituan/octo/portal/service/impl/AppServiceImpl.java b/octo-portal-server/src/main/java/com/meituan/octo/portal/service/impl/AppServiceImpl.java new file mode 100644 index 0000000..730a291 --- /dev/null +++ b/octo-portal-server/src/main/java/com/meituan/octo/portal/service/impl/AppServiceImpl.java @@ -0,0 +1,48 @@ +/* + * Copyright 2018 Meituan Dianping. 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. + */ + +package com.meituan.octo.portal.service.impl; + +import com.meituan.octo.portal.service.AppService; +import com.meituan.octo.portal.service.curator.ZookeeperClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Collections; +import java.util.List; + +@Component +public class AppServiceImpl implements AppService { + private static final Logger LOGGER = LoggerFactory.getLogger(AppServiceImpl.class); + private static final String ZK_ROOT_PATH = "/octo/nameservice"; + + @Autowired + private ZookeeperClient zkClient; + + @Override + public List getAppList() { + String prodPath = ZK_ROOT_PATH + "/prod"; + try { + List appList = zkClient.getChildren(prodPath); + return appList; + } catch (Exception e) { + LOGGER.error("get appList failed: {}", e); + return Collections.emptyList(); + } + } +} diff --git a/octo-portal-server/src/main/java/com/meituan/octo/portal/service/impl/ProviderServiceImpl.java b/octo-portal-server/src/main/java/com/meituan/octo/portal/service/impl/ProviderServiceImpl.java new file mode 100644 index 0000000..82ce02a --- /dev/null +++ b/octo-portal-server/src/main/java/com/meituan/octo/portal/service/impl/ProviderServiceImpl.java @@ -0,0 +1,142 @@ +/* + * Copyright 2018 Meituan Dianping. 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. + */ + +package com.meituan.octo.portal.service.impl; + +import com.meituan.octo.portal.model.ProviderDesc; +import com.meituan.octo.portal.model.ProviderNodeData; +import com.meituan.octo.portal.service.ProviderService; +import com.meituan.octo.portal.service.curator.ZookeeperClient; +import com.meituan.octo.portal.util.ZkPathUtil; +import com.meituan.octo.portal.util.JsonUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + + +@Component +public class ProviderServiceImpl implements ProviderService { + + private static final Logger LOGGER = LoggerFactory.getLogger(ProviderServiceImpl.class); + private static final String ZK_ROOT_PATH = "/octo/nameservice"; + + @Autowired + private ZookeeperClient zkClient; + + @Override + public List getProviders(int env, String serviceName) { + String envStr = ZkPathUtil.toEnvStr(env); + String providerPath = ZK_ROOT_PATH + "/" + envStr + "/" + serviceName + "/provider"; + List providerDescList = new ArrayList<>(); + try { + List providerNodes = zkClient.getChildren(providerPath); + for (String node : providerNodes) { + String nodeData = zkClient.getData(providerPath + "/" + node); + ProviderDesc providerDesc = JsonUtil.parseJson(nodeData, ProviderDesc.class); + providerDescList.add(providerDesc); + } + return providerDescList; + } catch (Exception e) { + LOGGER.error("get providers failed: {}", e); + } + return providerDescList; + } + + @Override + public String updateProviderStatus(int env, String serviceName, String ip, int port, int newStatus) { + String envStr = ZkPathUtil.toEnvStr(env); + String providerPath = ZK_ROOT_PATH + "/" + envStr + "/" + serviceName + "/provider"; + String providerDescPath = ZK_ROOT_PATH + "/" + envStr + "/" + serviceName + "/provider" + "/" + ip + ":" + port; + try { + long curTime = System.currentTimeMillis() / 1000; + + String parentData = zkClient.getData(providerPath); + ProviderNodeData providerNodeData = JsonUtil.parseJson(parentData, ProviderNodeData.class); + if (providerNodeData != null) { + providerNodeData.setLastUpdateTime(curTime); + zkClient.setData(providerPath, JsonUtil.toString(providerNodeData)); + } + + String nodeData = zkClient.getData(providerDescPath); + ProviderDesc providerDesc = JsonUtil.parseJson(nodeData, ProviderDesc.class); + + providerDesc.setStatus(newStatus); + providerDesc.setLastUpdateTime(curTime); + zkClient.setData(providerDescPath, JsonUtil.toString(providerDesc)); + return JsonUtil.createSuccess(null); + } catch (Exception e) { + LOGGER.error("update provider status failed: {}", e); + return JsonUtil.createFail("update provider status failed."); + } + } + + @Override + public String updateProviderWeight(int env, String serviceName, String ip, int port, double fweight) { + String envStr = ZkPathUtil.toEnvStr(env); + String providerPath = ZK_ROOT_PATH + "/" + envStr + "/" + serviceName + "/provider"; + String providerDescPath = ZK_ROOT_PATH + "/" + envStr + "/" + serviceName + "/provider" + "/" + ip + ":" + port; + try { + long curTime = System.currentTimeMillis() / 1000; + + String parentData = zkClient.getData(providerPath); + ProviderNodeData providerNodeData = JsonUtil.parseJson(parentData, ProviderNodeData.class); + if (providerNodeData != null) { + providerNodeData.setLastUpdateTime(curTime); + zkClient.setData(providerPath, JsonUtil.toString(providerNodeData)); + } + + String nodeData = zkClient.getData(providerDescPath); + ProviderDesc providerDesc = JsonUtil.parseJson(nodeData, ProviderDesc.class); + providerDesc.setFweight(fweight); + providerDesc.setWeight(new Double(fweight).intValue()); + providerDesc.setLastUpdateTime(curTime); + zkClient.setData(providerDescPath, JsonUtil.toString(providerDesc)); + + return JsonUtil.createSuccess(null); + } catch (Exception e) { + LOGGER.error("update provider weight failed: {}", e); + return JsonUtil.createFail("update provider weight failed."); + } + } + + @Override + public String deleteProvider(int env, String serviceName, String ip, int port) { + String envStr = ZkPathUtil.toEnvStr(env); + String providerPath = ZK_ROOT_PATH + "/" + envStr + "/" + serviceName + "/provider"; + String providerDescPath = ZK_ROOT_PATH + "/" + envStr + "/" + serviceName + "/provider" + "/" + ip + ":" + port; + try { + long curTime = System.currentTimeMillis() / 1000; + + String parentData = zkClient.getData(providerPath); + ProviderNodeData providerNodeData = JsonUtil.parseJson(parentData, ProviderNodeData.class); + if (providerNodeData != null) { + providerNodeData.setLastUpdateTime(curTime); + zkClient.setData(providerPath, JsonUtil.toString(providerNodeData)); + } + + zkClient.delete(providerDescPath); + + return JsonUtil.createSuccess(null); + } catch (Exception e) { + LOGGER.error("delete provider {} failed: {}", ip + ":" + port, e); + return JsonUtil.createFail("delete provider failed."); + } + } +} diff --git a/octo-portal-server/src/main/java/com/meituan/octo/portal/util/JsonUtil.java b/octo-portal-server/src/main/java/com/meituan/octo/portal/util/JsonUtil.java new file mode 100644 index 0000000..9cdaacc --- /dev/null +++ b/octo-portal-server/src/main/java/com/meituan/octo/portal/util/JsonUtil.java @@ -0,0 +1,69 @@ +/* + * Copyright 2018 Meituan Dianping. 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. + */ + +package com.meituan.octo.portal.util; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +public class JsonUtil { + private static final Logger LOGGER = LoggerFactory.getLogger(JsonUtil.class); + private static ObjectMapper objectMapper = new ObjectMapper(); + + static { + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + } + + public static String toString(Object object) { + try { + return objectMapper.writeValueAsString(object); + } catch (JsonProcessingException e) { + LOGGER.warn("json serialize fail, object: " + object, e); + return null; + } + } + + public static T parseJson(String json, Class clazz) { + try { + return objectMapper.readValue(json, clazz); + } catch (IOException e) { + LOGGER.warn("json deserialize fail, json" + json, e); + return null; + } + } + + public static String createSuccess(Object data) { + Map result = new HashMap<>(); + result.put("success", true); + result.put("data", data); + return JsonUtil.toString(result); + } + + public static String createFail(String message) { + Map result = new HashMap<>(); + result.put("success", false); + result.put("message", message); + return JsonUtil.toString(result); + } + +} diff --git a/octo-portal-server/src/main/java/com/meituan/octo/portal/util/ZkPathUtil.java b/octo-portal-server/src/main/java/com/meituan/octo/portal/util/ZkPathUtil.java new file mode 100644 index 0000000..5cc5ca2 --- /dev/null +++ b/octo-portal-server/src/main/java/com/meituan/octo/portal/util/ZkPathUtil.java @@ -0,0 +1,32 @@ +/* + * Copyright 2018 Meituan Dianping. 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. + */ + +package com.meituan.octo.portal.util; + +public class ZkPathUtil { + public static String toEnvStr(int env) { + switch (env) { + case 3: + return "prod"; + case 2: + return "stage"; + case 1: + return "test"; + default: + return "prod"; + } + } +} diff --git a/octo-portal-server/src/main/resources/application.yaml b/octo-portal-server/src/main/resources/application.yaml new file mode 100644 index 0000000..ef9c5c0 --- /dev/null +++ b/octo-portal-server/src/main/resources/application.yaml @@ -0,0 +1,2 @@ +zk: + address: diff --git a/octo-portal-server/src/test/java/com/meituan/octo/portal/OctoPortalServerApplicationTests.java b/octo-portal-server/src/test/java/com/meituan/octo/portal/OctoPortalServerApplicationTests.java new file mode 100644 index 0000000..6172da8 --- /dev/null +++ b/octo-portal-server/src/test/java/com/meituan/octo/portal/OctoPortalServerApplicationTests.java @@ -0,0 +1,31 @@ +/* + * Copyright 2018 Meituan Dianping. 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. + */ +package com.meituan.octo.portal; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class OctoPortalServerApplicationTests { + + @Test + public void contextLoads() { + } + +}