飞致云-修改/删除虚拟机工作空间
记录一下通过SQL实现对飞致云添加/删除虚拟机的工作空间
相关数据库操作说明如下:
流程思维导图

资源从工作空间中删除方法
从
fit2cloud.cloud_account表中,过滤plugin_name字段关键值,对应信息如下关键字 云类型 fit2cloud-aliyun-plugin 阿里云 fit2cloud-aws-plugin AWS fit2cloud-huawei-plugin 华为云 fit2cloud-kubernetes-plugin Docker fit2cloud-vsphere-plugin VMware 执行如下SQL,可以提取出符合
VMware类型的虚拟机上述SQL可以提取出VMware账号的1
2
3select distinct id
from fit2cloud.cloud_account
where plugin_name like "%vsphere%";id信息,如下样例: > 5ace9c28-29e5-4e14-9271-f77e5497f372 > a303b208-7433-4fb8-8ea6-a3718f6bc7a4 > e409fd2b-e9c5-4d8a-9edf-7a010e7c7537取出第一步中的一个样例ID
5ace9c28-29e5-4e14-9271-f77e5497f372,执行如下SQL去提取该云账号下的所有虚拟机上述SQL可以提取出VMware账号的1
2
3
4select distinct id
from fit2cloud.cloud_server
where account_id in ("5ace9c28-29e5-4e14-9271-f77e5497f372")
and instance_status in ("Running", "Stopped");id = 5ace9c28-29e5-4e14-9271-f77e5497f372的虚拟机信息,如下样例: > 07b88e4f-db83-49c5-934f-16b42fa66c5f > 29e94682-6662-4c55-a5f7-e46c2093aa94 > 5c896807-681d-42f2-99a2-311a7a2959ac > 93705bcc-8023-4aec-a490-ea3bc2382a4b > ...取出第二步中的一个样例
id = 07b88e4f-db83-49c5-934f-16b42fa66c5f,执行如下SQL去删除该虚拟机在fit2cloud.tag_mapping表中对应的组织信息上述SQL会将对应的信息做删除处理,此时WEB页面并不会同步更新,需要执行下一步操作1
2
3
4delete
from fit2cloud.tag_mapping
where resource_id = '07b88e4f-db83-49c5-934f-16b42fa66c5f'
and tag_key like "%组织%";取出第二步中的一个样例
id = 07b88e4f-db83-49c5-934f-16b42fa66c5f,执行如下SQL将该虚拟机在fit2cloud.tag_mapping表中对应的workspace_id置空此时信息已可以正确显示到WEB页面上,刷新即可观察到相关资源已从工作空间中移除1
2
3update fit2cloud.cloud_server
set workspace_id = ''
where id = "07b88e4f-db83-49c5-934f-16b42fa66c5f";
资源添加到工作空间中的方法
以虚拟机ID = 07b88e4f-db83-49c5-934f-16b42fa66c5f,添加到工作空间name = VMware-test03为例
从
fit2cloud.workspace表中提取数据,以VMware-test03为测试样例,执行SQL如下:上述脚本执行后,会得到如下结果:1
2
3select *
from fit2cloud.workspace
where name = "VMware-test03";id organization_id name description create_time 98e7c07b-7111-44bf-b717-ec5cd5ec902e 6a7eabf3-0500-469f-b14c-533fb70dd08d VMware-test03 1607579232573 拿到测试样例的
id信息,去查询tag_value表中tag_key及id的信息,如下SQL:上述脚本执行后,会得到如下结果:1
2
3
4select *
from fit2cloud.tag_value
where tag_value = "98e7c07b-7111-44bf-b717-ec5cd5ec902e"
and tag_key like "%组织%";id tag_key tag_value tag_value_alias create_time enable _index 711c03be-8593-466e-bec6-fd9007d99f99 四级组织 98e7c07b-7111-44bf-b717-ec5cd5ec902e VMware-test03 1607579232613 1 0 按照如下格式,向
tag_mapping表中插入一行数据:即,格式化后的SQL如下:1
2
3
4
5
6
7
8
9
10UUID: 自行生成
resource_id: 虚拟机ID,当前样例: 07b88e4f-db83-49c5-934f-16b42fa66c5f
resource_type: 目前有如下mapping,当前样例应填入: VIRTUALMACHINE
CLOUD_DISK
DATABASE
LOAD_BALANCER
VIRTUALMACHINE
tag_key: 上一步拿到的tag_key的具体值,当前样例为: 四级组织
tag_value_id: 上一步拿到的条目对应的id值,当前样例为: 711c03be-8593-466e-bec6-fd9007d99f99
create_time: 当前时间转换为时间戳的值 unix_timestamp(now())1
2
3
4
5
6
7insert into fit2cloud.tag_mapping
values (uuid(),
"07b88e4f-db83-49c5-934f-16b42fa66c5f",
"VIRTUALMACHINE",
"四级组织",
"711c03be-8593-466e-bec6-fd9007d99f99",
unix_timestamp(now()));以下步骤为更新组织结构信息流程,确保实例关联的组织有正确的
树形结构1依据
步骤1中提取到的organization_id(或者后续步骤7中提取到的organization_id),去organization表中查询id及parent_id信息,检查parent_id == 0是否成立上述脚本执行后,会得到如下结果:1
2
3select *
from fit2cloud.organization
where id = "6a7eabf3-0500-469f-b14c-533fb70dd08d";id name english_name description create_time parent_id 6a7eabf3-0500-469f-b14c-533fb70dd08d 北方运营中心 goldwind 北方运营中心 1606282263126 63d811f2-78d2-4cba-a882-4beab9885a8e 如果上述结果
parent_id != 0,则需要去tag_value表中查询tag_value = organization_id的结果,如下SQL:上述脚本执行后,会得到如下结果:1
2
3
4select *
from fit2cloud.tag_value
where tag_value = "6a7eabf3-0500-469f-b14c-533fb70dd08d"
and tag_key like "%组织%";id tag_key tag_value tag_value_alias create_time enable _index e0e0351c-2bc4-4d90-9ca8-ae568d2d2309 三级组织 6a7eabf3-0500-469f-b14c-533fb70dd08d 北方运营中心 1606282263182 1 0 按照如下格式,向
tag_mapping表中插入一行数据:即,格式化后的SQL如下:1
2
3
4
5
6
7
8
9
10UUID: 自行生成
resource_id: 虚拟机ID,当前样例: 07b88e4f-db83-49c5-934f-16b42fa66c5f
resource_type: 目前有如下mapping,当前样例应填入: VIRTUALMACHINE
CLOUD_DISK
DATABASE
LOAD_BALANCER
VIRTUALMACHINE
tag_key: 上一步拿到的tag_key的具体值,当前样例为: 三级组织
tag_value_id: 上一步拿到的条目对应的id值,当前样例为: e0e0351c-2bc4-4d90-9ca8-ae568d2d2309
create_time: 当前时间转换为时间戳的值 unix_timestamp(now())1
2
3
4
5
6
7insert into fit2cloud.tag_mapping
values (uuid(),
"07b88e4f-db83-49c5-934f-16b42fa66c5f",
"VIRTUALMACHINE",
"三级组织",
"e0e0351c-2bc4-4d90-9ca8-ae568d2d2309",
unix_timestamp(now()));因
parent_id != 0,因此将步骤4中获取到的parent_id作为id去organization表中查询信息,如下SQL:1
2
3select *
from fit2cloud.organization
where id = "63d811f2-78d2-4cba-a882-4beab9885a8e";上述脚本执行后,会得到如下结果:
id name english_name description create_time parent_id 63d811f2-78d2-4cba-a882-4beab9885a8e 资产管理公司 goldwind 资产管理公司 1606282263123 87bc533d-cec8-45d1-acf0-3b2ef53d90c0 重复执行上述
步骤4-步骤7,直到获取到parent_id == 0为止.当前测试样例中,需插入到tag_mapping表中3条数据.上述操作执行完成后,最后执行对当前虚拟机进行
更新workspace操作,如下SQL:注意: 此处的1
2
3update fit2cloud.cloud_server
set workspace_id = "98e7c07b-7111-44bf-b717-ec5cd5ec902e"
where id = "07b88e4f-db83-49c5-934f-16b42fa66c5f";workspace_id为步骤1中查询到的最底级WorkSpace
上述操作完成后,刷新WEB页面即可发现测试样例已关联到正确的工作空间.
当前测试组织为
四级组织,需要逐级关联,直到一级组织↩︎