[关闭]
@tony-yin 2017-11-02T08:44:21.000000Z 字数 7576 阅读 800

Magicloud Sharing

Magicloud Sharing


Start Work

Direction Introduction

License

Location

  1. /root/magicloud/license/src/make_key.py

Usage:

  1. [root@tony src]# cd /root/magicloud/license/src/
  2. [root@tony src]# ls
  3. create_osd.py deb decode_key.cpp licobj.cpp licobj.hpp Makefile make_key.py mcvl.cpp
  4. [root@tony src]# ./make_key.py --help
  5. Usage: make_key.py [options] <License ID> <Node ID>
  6. Options:
  7. -h, --help show this help message and exit
  8. -g With GW feature
  9. -r With RRS feature
  10. -p PRODUCT 0=VirtualStor Controller; 1=VirtualStor Scaler; 2=VirtualStor
  11. Converger
  12. -d DURATION Valid duration (days) of the license key

Example

开发过程中,可以默认所有feature都启用,选择产品类型为scaler,有效期永久

  1. [root@tony src]# ./make_key.py -gr -p 1
  2. Usage: make_key.py [options] <License ID> <Node ID>
  3. make_key.py: error: expected <license ID> <node ID>

结果显示脚本还需要两个参数: license IDnode ID,这两个参数的作用就是区别不同集群的license和不同节点

ok, 正确姿势:

  1. [root@tony src]# ./make_key.py -gr -p 1 1 1
  2. CLAUSR-97O64G-1G6C20-BD9U37-7TV5R6-AYHAY5-854L13
  3. [root@tony src]# ./make_key.py -gr -p 1 1 2
  4. CLB118-ZT105C-7QQETJ-44OQR4-7I45BE-100R2E-WUJTSQ
  5. [root@tony src]# ./make_key.py -gr -p 1 2 1
  6. CLAUST-88S83K-1GBT4R-CBES2T-58CCRU-E3PKOP-QUWAJ3
  7. [root@tony src]# ./make_key.py -gr -p 1 3 1
  8. CLAUSV-79WA2O-1E6LAV-GAPLQI-0VDO9L-Y5G1OP-Y9217W
  9. [root@tony src]# ./make_key.py -gr -p 1 3 2
  10. CLB11C-XV943K-4S44OE-AJAW0O-6Z3OK4-GYPW5G-14TWHD9
  11. [root@tony src]# ./make_key.py -gr -p 1 3 3
  12. CLB79U-OGLY4G-4YKY3L-NQBAP3-80KV7U-KFEU6S-1UCHVXJ

Build

Location

  1. /root/magicloud/build
  2. /root/magicloud/README

Usage

  1. [root@tony magicloud]# cat README
  2. 1. Run 'BUILD_NUMBER=xxx ./build config' to configure the build environment
  3. 2. Run 'BUILD_NUMBER=xxx ./build oem putian' to configure the build environment to build PtBus ISO
  4. 3. Run 'BUILD_NUMBER=xxx ./build kernel' to build Linux kernel
  5. 4. Run 'BUILD_NUMBER=xxx ./build debs' to build the debian packages
  6. This will build PtBus's deb packages and put them into 'output' directory.
  7. 5. Run 'BUILD_NUMBER=xxx ./build iso' to build the Installation CD
  8. This will build the ISO image and put it into 'output' directory.
  9. 6. Run './build clean' to clean up the build environment

Example

  1. BUILD_NUMBER=666 ./build config
  2. BUILD_NUMBER=666 ./build oem putian
  3. BUILD_NUMBER=666 ./build kernel
  4. BUILD_NUMBER=666 ./build debs
  5. BUILD_NUMBER=666 ./build iso

编译过程中如果某一步出错了,希望重新编译那一步操作,那么需要把jobnr文件删除,然后运行./build clean清理一下环境

UI

Magicloud前端运用了gulpwebpack工具构建,技术栈涉猎jQueryangularbootstrapflatUI

Front-end Build

前端构建工具我们分别用了gulpwebpackgulp主要负责前端JSHTMLCSSuglify工作;webpack主要负责启动服务或者代理工作

使用这两个工具,需要根据package.json文件安装相应的软件包

Gulp
Location
  1. /root/magicloud/mcs3-ui/src
Usage
  1. npm build

or

  1. gulp default

具体请参考/root/magicloud/mcs3-ui/src/gulpfile.js

Webpack
Location
  1. /root/magicloud/mcs3-ui/src
Usage
  1. npm start

or

  1. webpack-dev-server

具体请参考/root/magicloud/mcs3-ui/src/webpack.config.js,该文件可以由模板文件webpack.config.js.sample拷贝修改生成

Code
HTML
  1. /root/magicloud/mcs3-ui/src/web // common html
  2. /root/magicloud/mcs3-ui/src/web/component // component html

index.html作为页面入口,导入了需要的所有jscss的包

html文件数量较多,具体根据文件名找到对应文件查看源代码,就不一一赘述

JS
  1. /root/magicloud/mcs3-ui/src/web/js // common js
  2. /root/magicloud/mcs3-ui/src/web/component/js // component js

js文件数量较多,具体根据文件名找到对应文件查看源代码,就不一一赘述

CSS
  1. /root/magicloud/mcs3-ui/src/web/css

custom-ui.css: 这里面是定制化的style,我们改版的样式代码都在这里面

Image
  1. /root/magicloud/mcs3-ui/src/web/image
Language
  1. /root/magicloud/mcs3-ui/src/web/L10N

分为三类:apinotificationui,然后又分三种语言:英文,中文简体,台湾繁体

Back-end Handler
  1. /root/magicloud/mcs3-ui/src/cgi-src

Route

Magicloud用了两种路由,一种是Restful API的方式,另一种是Ajax的方式

Restful API

项目中Restful API是基于Angular $resource服务构建的,所以还得稍微介绍一下Angular resource。。。

Angular Resource
介绍

$http服务提供的实现极为简单和低级,可以用来发送XHR请求,同时它还为你提供了很大的可控性和灵活性。但是,在大多数情况下,我们需要处理对象,以及封装了特定属性和方法的对象模型,例如一个person对象(带有详细信息),或者一个信用卡对象。

$resource就是为这一功能而设计的。AngularJS中的resource(资源)允许我们用描述性的方式来定义对象模型,它可以描述以下内容:

obj表示请求服务器指定url地址后返回的$resource对象,该对象中就包含了与服务端进行数据交互的全部API
参数url表示请求服务器的地址,其中允许占位符变量,该变量必须以:为前缀,例如:

  1. var obj=$resource('url?action=:act');
  2. obj.$save{act:'save'}

那么,在执行save动作时,向服务端发送的实际地址就为url?action=save

此外,可选参数paramsDefaults是一个对象,用于设置请求时的默认参数值,在发送请求时,该对象中的全部值将自动进行序列化,如遇占位符变量自动替换(也可以通过第三个参数替换),并将结果添加到url请求之后,代码如下:

  1. var obj=`$resource`('url?action=:act',{
  2. act:'save',
  3. a:'1',
  4. b:'2'
  5. });

执行上述代码后,向服务器发送的实际地址是url?action=save&a=1&b=2

另外一个可选参数actions的功能是扩展默认资源动作,例如,可以在该对象中自定义新的方法:

  1. var boj=$resource('url?action=:act',{
  2. ...
  3. },{
  4. a:{
  5. method:'get'
  6. }
  7. }
  8. );

然后就可以在$resource对象中直接调用在可选参数actions中自定义的方法a,即obj.$a()

参考链接:

项目中的应用
  1. var url = "/cgi-bin/mcs3/json/:api"; // 请求url,:api为占位符
  2. ...
  3. return $resource(url, {}, {
  4. host_nic_list : {
  5. method: "GET",
  6. params: { api : "host_nic_list" },
  7. // :api占位符替换字段为host_nic_list,所以最后的请求url为/cgi-bin/mcs3/json/host_nic_list
  8. transformResponse: [check_api_error_and_transform, transform_host_nic_list]
  9. },
  10. ...
  11. );
流程图

resource router

Ajax

ajax router

国际化

语种支持

目前项目中主要使用了三种语言,分别是英文,中文简体和台湾繁体,以后的开发中,我们将舍弃台湾繁体,仅兼容英文和中文简体

语言类型

语言类型指的是根据项目中语言的应用场景进行的分类,分为apinotificationui三种方式

使用方式

注册语言

即声明语言字符串和语言变量的map绑定关系

声明语言

html中,通过在任意标签中声明data-translate这个属性,调用前文声明的变量,例如footer

  1. <footer class="mc-footer" data-translate="COMPANY">

PS:具体实现需要查看上文提到的translator.js,里面做了一系列的封装工作

Log

Log在手,天下我有

Python logging介绍

Component

logging模块中主要由四个部分组成:

Components relation

python logging components

Log flow

python log flow

Application of log in project

Log category
Log config

config file

  1. /root/magicloud/mcs3-deploy/src/mcs3/log.py

然后你可以在MCLog.init_handler()方法中添加或者修改handlerfilterformatterlog level就在handler里面设置

Log file and init

上面提到了许多mcs3admin.logmcrpc.log等众多日志,这些日志存在的意义就是让不同进程的业务日志打印到不同文件中,达到日志业务分离的目的,每天系统会针对每个日志进行压缩备份,生成空的日志文件,定期清除备份归档文件

log的文件指定和初始化都是在众多守护进程的文件代码中,例如下面的mcarpc daemon

mcarpcd

Notice and Skills

Feature examples analysis

Technology stack

Some scripts

恩。。用过的都说好

Ceph demo

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注