Skip to content

Latest commit

 

History

History
146 lines (125 loc) · 5.15 KB

7.md

File metadata and controls

146 lines (125 loc) · 5.15 KB

服务与ECS有个约会

有了服务了,也有了ECS模块,那么我们现在就来让服务与ECS关联,其它资产都可以参照同样的处理快速完成.
因为服务会有不同的环境,不同的环境使用的资产实例是不同的(当然你也可以部署到同一台机器上-0-).
我们在设计时,有一个原则,就是要方便,肯定要比直接在阿里云上要方便.
因此在各种建立关联关系时,要实现不同模块之间的快速跳转.
比如,服务关联了ECS,那么我们在服务下可以快速跳转至ECS详情页; 同时在ECS详情页可以直接看到此同机器都部署了哪些服务,而且可以快速跳转到指定服务.

tag: 0.5.7

后端

涉及文件及目录

business/service/models.py
business/service/controllers/asset_obj.py
business/service/controllers/ecs.py
business/service/apis/ecs.py
business/service/urls/ecs.py
business/service/urls/__init__.py
asset/ecs/controllers/ecs.py
asset/ecs/apis/ecs.py
asset/ecs/urls/ecs.py
data/sql/rurality.sql

代码

business/service/models.py:
定义ServiceAssetObjModel,这里有一个字段typ,原本我是想关联AssetModel的,但是很多地方操作有点麻烦.
因此直接使用了typ字段,写死了会用到的资产类型.
status用于表示当前资产关联状态,因为添加或删除一个资产实例并不是简单的建立一个关联关系即可.
比如增加了ECS,如果服务关联了SLB可能还需要在SLB上添加,或者还需要部署上对应服务代码等等.
这些操作执行的时长不定,最后都会弄成异步任务的方式(暂未实现).


business/service/controllers/asset_obj.py:
服务关联资产实例,采用统一的方法处理前期任务,比如判断参数、创建关联关系记录.
之后再转给不同资产对应方法处理其它操作.


business/service/controllers/ecs.py:
服务关联ECS的具体一些操作,创建和删除的暂未实现.


business/service/apis/ecs.py
business/service/urls/ecs.py
business/service/urls/__init__.py

原本服务关联不同类型资产时都可以通过相同的接口完成,但是我还是将接口区分出来了,
这样就可以根据接口细分不同的权限,当然如果不需要可以很容易更改成使用统一的接口.


asset/ecs/controllers/ecs.py
asset/ecs/apis/ecs.py
asset/ecs/urls/ecs.py

增加获取ECS关联服务的接口,这个接口其实最后还是调用了asset_obj是的方法.
以后所有通过资产实例获取服务列表的功能都使用此方法.
这里方法使用一个,但是接口区分,是为了更清晰(或者以后万一有用呢).


data/sql/rurality.sql:
最新的sql文件.

前端

涉及文件及目录

src/api/business/service/url.js
src/api/business/service/index.js
src/views/business/service/components/EnvironmentSwitch/index.vue
src/components/Field/EcsField/index.vue
src/views/business/service/components/AssetCard/index.vue
src/views/business/service/components/AssetCard/components/EcsList/index.vue
src/views/business/service/components/AssetCard/components/EcsList/components/ObjDialog/index.vue
src/views/business/service/detail.vue
src/api/asset/ecs/url.js
src/api/asset/ecs/index.js
src/views/asset/ecs/detail.vue
src/router/modules/asset.js

代码

src/api/business/service/url.js
src/api/business/service/index.js

服务关联ECS相关接口


src/views/business/service/components/EnvironmentSwitch/index.vue:
用来进行切换服务环境.
因为服务不同环境下,关联的资产实例不同,所以通过切换环境来查看对应的关联资产实例.
并且在操作服务关联环境关系时,此组件会进行更新.


src/components/Field/EcsField/index.vue:
用于搜索ECS使用


src/views/business/service/components/AssetCard/index.vue:
用于切换服务关联的资产模块.
当服务关联资产模块变化时,这里也会自动更新.


src/views/business/service/components/AssetCard/components/EcsList/index.vue
src/views/business/service/components/AssetCard/components/EcsList/components/ObjDialog/index.vue

用于服务关联ECS功能,这里可以通过筛选不同环境下服务关联的ECS信息,并可以快递跳转到对应的ECS详情页.


src/views/business/service/detail.vue:
修改服务详情页布局,增加资产实例关联的展示.


src/api/asset/ecs/url.js
src/api/asset/ecs/index.js

ECS获取关联服务列表接口


src/api/asset/ecs/index.js
src/views/asset/ecs/detail.vue
src/views/asset/ecs/components/BaseInfo/index.vue

ECS详情页,用于展示基础信息,以及各种关联信息.


src/views/asset/ecs/components/ServiceList/index.vue:
ECS关联服务列表,这里会展示ECS关联的所有服务,并且区分环境.
而且可以快速跳转至对应服务(但是并不能直接展示对应的环境下信息,以后可能会支持).


src/router/modules/asset.js:
增加ECS详情页路由.