CMDB 3.0 二次开发框架使用指南

注:处于开发状态,文档内容在正式发布前不保证兼容。

Inputer 接口声明

接口声明如下:

  1. // Inputer is the interface that must be implemented by every Inputer.
  2. type Inputer interface {
  3. // Description the Inputer description.
  4. // This information will be printed when the Inputer is abnormal, which is convenient for debugging.
  5. Name() string
  6. // Run execute the user logics
  7. Run() interface{}
  8. // Stop stop the run function
  9. Stop() error
  10. }

Inputer 是必须要自己实现的接口。

  1. Name 方法返回此Inputer的名字,如果Inputer运行过程中出现错误,框架会在输出的错误日志里用调用此方法,为了便于调试建议使用方返回唯一的名字。
  2. Run 是Inputer 的运行方法,执行开发者的代码入口方法。
  3. Stop 是Inputer的停止方法,如果Inputer是长期运行的,需要实现Stop方法来终止运行。

API List

Inputer 注册 API

异常回调方法声明

  1. // ExceptionFunc the exception callback
  2. type ExceptionFunc func(data interface{}, errMsg error)

常规Inputer 注册,此方法注册的Inputer仅会被框架执行一次

方法:RegisterInputer(inputer input.Inputer, exceptionFunc input.ExceptionFunc)

参数:

  • inputer:所有实现了input.Inputer接口的对象实例。
  • exceptionFunc:异常回调方法,在框架执行Inputer出现异常的时候会调用此方法,如果不需要此信息可以传入nil。

返回值:无

需要定时执行的Inputer注册,此方法注册的Inputer会被框架定时执行

方法:RegisterTimingInputer(inputer input.Inputer, frequency time.Duration, exceptionFunc input.ExceptionFunc)

参数:

  • inputer:所有实现了input.Inputer接口的对象实例。
  • frequency:执行此Inputer 的时间间隔。
  • exceptionFunc:异常回调方法,在框架执行Inputer出现异常的时候会调用此方法,如果不需要此信息可以传入nil。

返回值:无

业务管理 API

业务管理包装器

类型:BusinessWrapper方法列表:

  1. // SetValue 此方法用于对业务的字段进行赋值, key 业务字段,val 字段取值。
  2. // 如果出错会有错误信息返回。
  3. // 如有新增的自定义字段需要赋值的时候可以采用此方法。
  4. SetValue(key string, val interface{}) error
  5. // Save 执行保存逻辑。在保存时候会根据业务的唯一性配置监测当前业务是否存在,
  6. // 如果存在则仅执行更新操作,如果当前业务不存在,则执行新建操作。
  7. // 如果出错会有错误信息返回。
  8. Save() error
  9. // SetDeveloper 配置当前业务的开发人员,如果出错会有错误信息返回。
  10. SetDeveloper(developer string) error
  11. // GetDeveloper 获取当前业务的开发人员,如果获取失败会有错误信息返回。
  12. GetDeveloper() (string, error)
  13. // SetMaintainer 配置当前业务的运维人员,如果配置失败会有错误信息返回。
  14. SetMaintainer(maintainer string) error
  15. // GetMaintainer 获取当前业务配置的运维人员,如果获取失败会有错误信息返回。
  16. GetMaintainer() (string, error)
  17. // SetName 配置当前业务的业务名,如果配置失败会有错误信息返回。
  18. SetName(name string) error
  19. // GetName 获取当前业务的业务名
  20. // 如果获取失败会返回错误信息。
  21. GetName() (string, error)
  22. // SetProductor 设置当前业务的产品人员
  23. // 如果设置失败会有错误信息返回
  24. SetProductor(productor string) error
  25. // GetProductor 获取当前业务的产品人员
  26. // 如果获取失败会有错误信息返回。
  27. GetProductor() (string, error)
  28. // SetTester 设置当前业务的测试人员
  29. // 如果设置失败会有错误信息返回。
  30. SetTester(tester string) error
  31. // GetTester 设置当前业务的测试人员
  32. // 如果获取失败会有错误信息返回。
  33. GetTester() (string, error)
  34. // SetSupplierAccount 设置当前业务的开发商ID
  35. // 如果设置失败会有错误信息返回。
  36. SetSupplierAccount(supplierAccount string) error
  37. // GetSupplierAccount 获取当前业务的开发商ID
  38. // 如果获取失败会有错误信息返回。
  39. GetSupplierAccount() (string, error)
  40. // SetLifeCycle 设置当前业务的声明周期
  41. // 此处只能取值以下枚举值:
  42. // 测试中 BusinessLifeCycleTesting
  43. // 已上线 BusinessLifeCycleOnLine
  44. // 已停用 BusinessLifeCycleStopped
  45. // 如果出错会返回错误信息
  46. SetLifeCycle(lifeCycle string) error
  47. // GetLifeCycle 获取当前业务的状态
  48. // 如果出错会返回错误信息
  49. GetLifeCycle() (string, error)
  50. // SetOperator 设置操作人员
  51. // 如果出错会有错误返回
  52. SetOperator(operator string) error
  53. // GetOperator 获取操作人员
  54. // 如果获取出错会有错误信息返回
  55. GetOperator() (string, error)

业务迭代器

类型:BusinessIteratorWrapper方法列表:

  1. // Next 迭代读取每一个数据对象
  2. // 当数据读取到最后一条的时候 error 会返回io.EOF
  3. Next() (*BusinessWrapper, error)
  4. // ForEach 遍历业务集合
  5. ForEach(callback func(business *BusinessWrapper) error) error

创建业务对象

方法:CreateBusiness(supplierAccount string) (*BusinessWrapper, error)

参数:

  • supplierAccount:开发商ID。

返回值:

  • BusinessWrapper: 业务管理对象,包含对当前实例数据进行维护的接口。
  • error: 如果创建业务失败会返回错误。

按照名字业务名进行查找

方法:FindBusinessLikeName(supplierAccount, businessName string) (*BusinessIteratorWrapper, error)

参数:

  • supplierAccount:开发商ID。

  • businessName:业务名

返回值:

  • BusinessIteratorWrapper: 业务迭代器。
  • error: 错误信息。

按照条件对业务进行搜索

方法:FindBusinessByCondition(supplierAccount string, cond common.Condition) (*BusinessIteratorWrapper, error)

参数:

  • supplierAccount:开发商ID。

  • cond:查询条件

返回值:

  • BusinessIteratorWrapper: 业务迭代器。
  • error: 错误信息。

集群管理 API

集群管理包装器

类型:SetWrapper方法列表:

  1. // SetValue 此方法用于对集群的字段进行赋值, key 集群字段,val 字段取值。
  2. // 如果出错会有错误信息返回。
  3. // 如有新增的自定义字段需要赋值的时候可以采用此方法。
  4. SetValue(key string, val interface{}) error
  5. // SetDescription 设置集群的描述信息
  6. // 如果配置失败会返回错误信息
  7. SetDescription(intro string) error
  8. // SetMark 设置集群的备注信息
  9. SetMark(desc string) error
  10. // SetEnv 设置集群的环境
  11. // 取值仅可以是以下枚举:
  12. // 测试 SetEnvTesting
  13. // 体验 SetEnvGuest
  14. // 正式 SetEnvNormal
  15. SetEnv(env string) error
  16. // GetEnv 获取集群的环境信息
  17. // 获取失败会返回错误信息
  18. GetEnv() (string, error)
  19. // SetServiceStatus 设置服务的状态
  20. // 取值只可以是以下枚举:
  21. // 开放 SetServiceOpen
  22. // 关闭 SetServiceClose
  23. SetServiceStatus(status string) error
  24. // GetServiceStatus 获取服务状态
  25. GetServiceStatus() (string, error)
  26. // SetCapacity 设置集群的设计容量
  27. SetCapacity(capacity int64) error
  28. // GetCapacity 获取集群设计容量
  29. GetCapacity() (int, error)
  30. // SetBusinessID 设置集群所属的业务ID,调用此方法会同步将当前集群的父节点设置为传入的业务。
  31. SetBusinessID(businessID int64) error
  32. // GetBusiness 获取集群所属的业务ID,在调用Save 和Update 之后此处返回的仅是最后一次被更新的业务的ID
  33. GetBusinessID() (int, error)
  34. // SetSupplierAccount 设置集群所属的开发商ID
  35. SetSupplierAccount(supplierAccount string) error
  36. // GetSupplierAccount 获取集群所属的开发商ID
  37. GetSupplierAccount() (string, error)
  38. // GetID 获取集群的ID,在调用Save 和Update 之后此处返回的仅是最后一次被更新的集群的ID
  39. GetID() (int, error)
  40. // SetParent 设置当前节点的父实例节点,只有在当前集群的父实例不是业务的时候才需要设置此参数。
  41. SetParent(parentInstID int64) error
  42. // SetName 设置集群的名字
  43. SetName(name string) error
  44. // GetName 获取集群的名字
  45. GetName() (string, error)
  46. // Save 保存集群信息。在保存之前会监测当前集群信息是否已经存在,
  47. // 如果存在则仅执行更新操作,如果不存在则执行新建操作。
  48. Save() error

集群迭代器

类型:SetIteratorWrapper方法列表:

  1. // Next 迭代读取每一个数据对象
  2. // 当数据读取完毕后,error 会返回 io.EOF
  3. Next() (*SetWrapper, error)
  4. // ForEach 对集群的集合进行迭代遍历
  5. ForEach(callback func(set *SetWrapper) error) error

创建集群对象

方法:CreateSet(supplierAccount string) (*SetWrapper, error)

参数:

    • supplierAccount:开发商ID

返回值:

  • SetWrapper: 集群数据对象
  • error:异常信息

按照集群名进行查找

方法:FindSetLikeName(supplierAccount, setName string) (*SetIteratorWrapper, error)

参数:

  • supplierAccount:开发商ID。

  • setName:集群名

返回值:

  • SetIteratorWrapper: 集群迭代器
  • error: 错误信息

按照条件对集群进行搜索

方法:FindSetByCondition(supplierAccount string, cond common.Condition) (*SetIteratorWrapper, error)

参数:

  • supplierAccount:开发商ID。

  • cond:查询条件

返回值:

  • SetIteratorWrapper: 集群迭代器。
  • error: 错误信息。

模块管理 API

模块管理包装器

类型:ModuleWrapper方法列表:

  1. // SetValue 用于对模块自定义字段的值进行配置
  2. SetValue(key string, val interface{}) error
  3. // SetOperator 设置主要维护人
  4. SetOperator(operator string) error
  5. // GetOperator 获取主要维护人
  6. GetOperator() (string, error)
  7. // SetBakOperator 设置备份维护人
  8. SetBakOperator(bakOperator string) error
  9. // GetBakOperator 获取备份维护人
  10. GetBakOperator() (string, error)
  11. // SetTopo 设置模块的层级
  12. SetTopo(bizID, setID int64) error
  13. // GetBusinessID 获取业务ID
  14. GetBusinessID() (int, error)
  15. // SetSupplierAccount 设置开发商ID
  16. SetSupplierAccount(supplierAccount string) error
  17. // GetSupplierAccount 获取开发商ID
  18. GetSupplierAccount() (string, error)
  19. // SetSetID 设置模块所属的集群
  20. SetSetID(setID int64) error
  21. // SetName 设置模块的名字
  22. SetName(name string) error
  23. // GetName 获取模块的名字
  24. GetName() (string, error)
  25. // GetID 获取模块的ID, 在调用Save 和Update 之后此处返回的仅是最后一次被更新的模块的ID
  26. GetID() (int, error)
  27. // Save 保存模块的信息。
  28. // 如果模块信息已经存在,则仅执行更新操作。
  29. // 如果模块信息不存在,则执行新建操作。
  30. Save() error

模块迭代器

类型:ModuleIteratorWrapper方法列表:

  1. // Next 迭代遍历每一个数据对象,如果遍历完集合 error 会返回io.EOF
  2. Next() (*ModuleWrapper, error)
  3. // ForEach 循环遍历模块集合,并将每个模块传递给回调函数。
  4. ForEach(callback func(set *ModuleWrapper) error) error

创建模块对象

方法:CreateModule(supplierAccount string) (*ModuleWrapper, error)

参数:

  • supplierAccount:开发商ID

返回值:

  • ModuleWrapper:模块数据对象
  • error:异常信息

按照模块名进行查找

方法:FindModuleLikeName(supplierAccount, moduleName string) (*ModuleIteratorWrapper, error)

参数:

  • supplierAccount:开发商ID。

  • moduleName:集群名

返回值:

  • ModuleIteratorWrapper: 集群迭代器
  • error: 错误信息

按照条件对模块进行搜索

方法:FindModuleByCondition(supplierAccount string, cond common.Condition) (*ModuleIteratorWrapper, error)

参数:

  • supplierAccount:开发商ID。

  • cond:查询条件

返回值:

  • ModuleIteratorWrapper: 模块迭代器。
  • error: 错误信息。

云区域管理 API

云区域管理包装器

类型:PlatWrapper方法列表:

  1. // SetValue 设置云区域自定义字段 的值 key 字段名 value 字段值
  2. SetValue(key string, val interface{}) error
  3. // SetSupplierAccount 设置云区域所属开发商
  4. SetSupplierAccount(supplierAccount string) error
  5. // GetSupplierAccount 获取云区域开发商
  6. GetSupplierAccount() (string, error)
  7. // GetID 获取云区域ID,在调用Save 和Update 之后此处返回的仅是最后一次被更新的云区域的ID
  8. GetID() (int, error)
  9. // SetName 设置云区域名字
  10. SetName(name string) error
  11. // GetName 获取云区域名字
  12. GetName() (string, error)

云区域迭代器

类型:PlatIteratorWrapper方法列表:

  1. // Next 迭代遍历每一个数据对象,如果遍历完集合 error 会返回io.EOF
  2. Next() (*PlatWrapper, error)
  3. // ForEach 循环遍历模块集合,并将每个模块传递给回调函数。
  4. ForEach(callback func(plat *PlatWrapper) error) error

创建云区域对象

方法:CreatePlat(supplierAccount string) (*PlatWrapper, error)

参数:

  • supplierAccount:开发商ID

返回值:

  • PlatWrapper:模块数据对象
  • error:异常信息

按照云区域名进行查找

方法:FindPlatLikeName(supplierAccount, moduleName string) (*PlatIteratorWrapper, error)

参数:

  • supplierAccount:开发商ID。

  • moduleName:集群名

返回值:

  • PlatIteratorWrapper: 云区域迭代器
  • error: 错误信息

按照条件对模块进行搜索

方法:FindPlatByCondition(supplierAccount string, cond common.Condition) (*PlatIteratorWrapper, error)

参数:

  • supplierAccount:开发商ID。

  • cond:查询条件

返回值:

  • PlatIteratorWrapper: 云区域迭代器。
  • error: 错误信息。

主机管理 API

主机转移接口方法声明

类型:TransferInterface

方法列表:

  1. // MoveToModule 将主机转移到主机当前所在业务的其他模块,isIncrement true 主机原来所在模块不会被改变,false 会从原来所在模块中删除
  2. MoveToModule(newModuleIDS []int64, isIncrement bool) error
  3. // MoveToFaultModule 将主机移动到主机当前所在业务的故障机模块
  4. MoveToFaultModule() error
  5. // MoveToIdleModule 将主机移动到主机当前所在业务的空闲机模块
  6. MoveToIdleModule() error
  7. // MoveToResourcePools 将主机移动到资源池
  8. MoveToResourcePools() error
  9. // MoveToBusinessIdleModuleFromResourcePools 将主机从资源池分配到业务空闲机模块
  10. MoveToBusinessIdleModuleFromResourcePools(bizID int64) error
  11. // MoveToAnotherBusinessModules 将主机从当前业务转移到另一个业务的给定模块下
  12. MoveToAnotherBusinessModules(bizID int64, moduleID int64) error
  13. // ResetBusinessHosts 将主机从给定的模块和集群下清空,转移至业务的空闲机下
  14. ResetBusinessHosts(setID, moduleID int64) error

主机管理包装器(用于查询接口返回的数据结构)

类型:FinderHostWrapper

方法列表:

  1. // GetBizs 获取业务信息
  2. GetBizs() ([]*BusinessWrapper, error)
  3. // GetSets 获取业务信息
  4. GetSets() ([]*SetWrapper, error)
  5. // GetModules 获取模块信息
  6. GetModules() ([]*ModuleWrapper, error)
  7. 其余方法与HostWrapper一致

主机管理包装器

类型:HostWrapper方法列表:

  1. // Transfer 返回主机转移操作方法
  2. Transfer() inst.TransferInterface
  3. // SetModuleIDS 设置主机所属业务的模块ID,HostAppendModule 表示追加所属模块,HostReplaceModule 表示替换所属模块
  4. SetModuleIDS(moduleIDS []int64, act HostModuleActionType)
  5. // SetBusiness 设置主机所属的业务
  6. SetBusiness(bizID int64)
  7. // SetTopo 设置主机所属的业务及业务下的模块ID, act 取值,HostAppendModule 表示追加所属模块,HostReplaceModule 表示替换所属模块
  8. SetTopo(bizID int64, setName, moduleName string, act HostModuleActionType) error
  9. // SetValue 为自定义字段进行复制,key 字段名,val 字段的值
  10. SetValue(key string, val interface{}) error
  11. // GetModel 获取主机所对应的模型定义对象
  12. GetModel() model.Model
  13. // SetBakOperator 设置备份维护人
  14. SetBakOperator(bakOperator string) error
  15. // GetBakOperator 获取备份维护人
  16. GetBakOperator() (string, error)
  17. // SetOsBit 设置操作系统位数
  18. SetOsBit(osbit string) error
  19. // GetOsBit 获取操作系统位数
  20. GetOsBit() (string, error)
  21. // SetSLA 设置SLA安全级别
  22. // 取值尽可以为以下枚举值之一:
  23. // HostSLALevel1
  24. // HostSLALevel2
  25. // HostSLALevel3
  26. SetSLA(sla string) error
  27. // GetSLA 获取SLA安全界别
  28. GetSLA() (string, error)
  29. // SetCloudID 设置云区域ID
  30. SetCloudID(cloudID int64) error
  31. // GetCloudID 获取云区域ID
  32. GetCloudID() (int, error)
  33. // SetInnerIP 设置内网IP
  34. SetInnerIP(innerIP string) error
  35. // GetInnerIP 获取内网IP
  36. GetInnerIP() (string, error)
  37. // SetOpeartor 设置主维护人
  38. SetOperator(operator string) error
  39. // GetOperator 获取主维护人
  40. GetOperator() (string, error)
  41. // SetCPU 设置CPU逻辑核心数
  42. SetCPU(cpu int64) error
  43. // GetCPU 获取CPU逻辑核心数
  44. GetCPU() (int, error)
  45. // SetCPUMhz 设置CPU频率
  46. SetCPUMhz(cpuMhz int64) error
  47. // GetCPUMhz 获取CPU频率
  48. GetCPUMhz() (int, error)
  49. // SetOSType 获取OS类型
  50. // 取值仅可以是以下列表之一:
  51. // HostOSTypeLinux
  52. // HostOSTypeWindows
  53. SetOsType(osType string) error
  54. // GetOsType 获取操作系统类型
  55. GetOsType() (string, error)
  56. // SetOuterIP 设置外网IP
  57. SetOuterIP(outerIP string) error
  58. // GetOuterIP 获取外网IP
  59. GetOuterIP() (string, error)
  60. // SetAssetID 设置固资编号
  61. SetAssetID(assetID string) error
  62. // GetAssetID 获取固资编号
  63. GetAssetID() (string, error)
  64. // SetInnerMac 设置内网Mac 地址
  65. SetInnerMac(mac string) error
  66. // GetInnerMac 获取内网Mac 地址
  67. GetInnerMac() (string, error)
  68. // SetOuterMac 设置内网Mac 地址
  69. SetOuterMac(mac string) error
  70. // GetOuterMac 获取内网Mac 地址
  71. GetOuterMac() (string, error)
  72. // SetSN 设备SN
  73. SetSN(sn string) error
  74. // GetSN 获取设备SN
  75. GetSN() (string, error)
  76. // SetCPUModule 设置CPU型号
  77. SetCPUModule(cpuModule string) error
  78. // GetCPUModule 获取CPU型号
  79. GetCPUModule() (string, error)
  80. // SetName 设置主机名
  81. SetName(hostName string) error
  82. // GetName 获取主机名
  83. GetName() (string, error)
  84. // SetServiceTerm 设置质保年限
  85. SetServiceTerm(serviceTerm int64) error
  86. // GetServiceTerm 获取质保年限
  87. GetServiceTerm() (int, error)
  88. // SetComment 设置备注
  89. SetComment(comment string) error
  90. // GetComment 获取备注信息
  91. GetComment() (string, error)
  92. // SetMem 设置内存容量
  93. SetMem(mem int64) error
  94. // GetMem 获取内存容量
  95. GetMem() (int, error)
  96. // SetDisk 设置磁盘容量
  97. SetDisk(disk int64) error
  98. // GetDisk 获取磁盘容量
  99. GetDisk() (int, error)
  100. // SetOsName 设置操作系统名
  101. SetOsName(osName string) error
  102. // GetOsName 获取操作系统名
  103. GetOsName() (string, error)
  104. // SetOsVersion 设置操作系统版本
  105. SetOsVersion(osVersion string) error
  106. // GetOsVersion 获取操作系统版本
  107. GetOsVersion() (string, error)
  108. // Save 保存主机信息。
  109. // 如果主机已经存在,则仅执行更新操作。
  110. // 如果主机不存在,则仅执行新建操作。
  111. Save() error

主机迭代器

类型:HostIteratorWrapper方法列表:

  1. // Next 迭代获取主机数据对象,如果已经遍历完所有数据,那么error 会返回io.EOF
  2. Next() (*HostWrapper, error)
  3. // ForEach 遍历主机数据对象集合
  4. ForEach(callback func(host *HostWrapper) error) error

创建主机对象

方法:CreateHost(supplierAccount string) (*HostWrapper, error)

参数:

  • supplierAccount:开发商ID

返回值:

  • HostWrapper:主机数据对象
  • error:异常信息

按照主机名进行查找

方法:FindHostLikeName(supplierAccount, hostName string) (*HostIteratorWrapper, error)

参数:

  • supplierAccount:开发商ID。

  • hostName:集群名

返回值:

  • hostIteratorWrapper: 主机迭代器
  • error: 错误信息

按照条件对主机进行搜索

方法:FindHostByCondition(supplierAccount string, cond common.Condition) (*HostIteratorWrapper, error)

参数:

  • supplierAccount:开发商ID。

  • cond:查询条件

返回值:

  • HostIteratorWrapper: 主机迭代器。
  • error: 错误信息。

通用实例管理 API

通用实例

类型:Inst方法列表:

  1. // GetModel 获取当前实例多对应的模型
  2. GetModel() model.Model
  3. // IsMainLine 用于判断当前实例是否是主线模型
  4. // [开发中]当前不可用
  5. IsMainLine() bool
  6. // GetAssociationModels 获取当前实例直接关联的所有模型的集合
  7. // [开发中]当前不可用
  8. GetAssociationModels() ([]model.Model, error)
  9. // GetInstID 获取当前实例的实例ID
  10. GetInstID() int
  11. // GetInstName 获取当前实例的实例名
  12. GetInstName() string
  13. // SetValue 为实例的字段赋值,key 实例的字段, value 字段的取值
  14. SetValue(key string, value interface{}) error
  15. // GetValues 获取当前实例的所有字段的及对应的值
  16. GetValues() (types.MapStr, error)
  17. // GetAssociationsByModleID 获取当前实例关联的某个模型的所有实例的集合
  18. // [开发中]当前不可用
  19. GetAssociationsByModleID(modleID string) ([]Inst, error)
  20. // GetAllAssociations 获取当前实例直接关联的所有实例的集合
  21. // [开发中]当前不可用
  22. GetAllAssociations() (map[model.Model][]Inst, error)
  23. // SetParent 设置当前实例的父实例
  24. SetParent(parentInstID int) error
  25. // GetParent 获取当前实例所在拓扑结构中所有的父节点的集合
  26. // [开发中]当前不可用
  27. GetParent() ([]Topo, error)
  28. // GetChildren 获取当前实例所在拓扑结构中所有的子节点的结合
  29. // [开发中]当前不可用
  30. GetChildren() ([]Topo, error)

创建普通对象

方法:CreateCommonInst(target model.Model) (inst.Inst, error)

参数:

  • target:用于指明是创建的实例所属的模型定义。返回值:

  • inst.Inst: 实例接口对象,包含对当前实例数据进行维护的接口。

  • error: 如果创建实例失败会返回错误。

按照实例名进行查找

方法:FindInstsLikeName(target model.Model, instName string) (*inst.Iterator, error)

参数:

  • target:目标实例的模型

  • instName:实例名

返回值:

  • inst.Iterator: 实例迭代器
  • error: 错误信息

按照条件对实例进行搜索

方法:FindInstsByCondition(target model.Model, cond common.Condition) (inst.Iterator, error)

参数:

  • target:目标实例的模型

  • cond:查询条件

返回值:

  • inst.Iterator: 实例迭代器。
  • error: 错误信息。

模型管理 API

获取模型

方法:GetModel(supplierAccount, classificationID, objID string) (model.Model, error)

参数:

  • supplierAccount:开发商ID

  • classificationID:模型分类ID

  • objID:模型ID

返回值:

  • model.Model: 模型对象
  • error: 查询失败会返回异常信息

创建模型分类对象

方法:CreateClassification(name string) model.Classification

参数:

  • name:分类的名字

返回值:

  • model.Classification:模型分类对象,通过此对象可以对该分类下的模型进行管理。
  • error: 如果创建实例失败会返回错误。

按照模型分类的名字进行模糊查找,返回所有名字与输入的名字相似的分类对象的迭代器。

方法:FindClassificationsLikeName(name string) (model.ClassificationIterator, error)

参数:

  • name:分类的名字返回值:

  • model.Classification:模型分类对象,通过此对象可以对该分类下的模型进行管理。

  • error: 如果创建实例失败会返回错误。

按照条件进行精确查找,返回所有符合条件的分类对象的迭代器

方法:FindClassificationsByCondition(condition *common.Condition) (model.ClassificationIterator, error)

参数:

  • name:分类的名字返回值:

  • model.Classification:模型分类对象,通过此对象可以对该分类下的模型进行管理。

  • error: 如果创建实例失败会返回错误。

事件订阅 API

事件回调方法声明

  1. // EventCallbackFunc the event deal function
  2. type EventCallbackFunc func(evn []*Event) error

取消事件订阅

方法:UnRegisterEvent(eventKey types.EventKey)

参数:

  • eventKey:注册事件后返回的Key

返回值:

订阅主机信息变更事件

方法:RegisterEventHost(eventFunc types.EventCallbackFunc) types.EventKey

参数:

  • eventFunc:事件回调方法

返回值:

  • 注册事件关联的Key

订阅业务信息变更事件

方法:RegisterEventBusiness(eventFunc types.EventCallbackFunc) types.EventKey

参数:

  • eventFunc:事件回调方法

返回值:

  • 注册事件关联的Key

订阅模块信息变更事件

方法:RegisterEventModule(eventFunc types.EventCallbackFunc) types.EventKey

参数:

  • eventFunc:事件回调方法

返回值:

  • 注册事件关联的Key

订阅主机身份信息变更事件

方法:RegisterEventHostIdentifier(eventFunc types.EventCallbackFunc) types.EventKey

参数:

  • eventFunc:事件回调方法

返回值:

  • 注册事件关联的Key

订阅集群信息变更事件

方法:RegisterEventSet(eventFunc types.EventCallbackFunc) types.EventKey

参数:

  • eventFunc:事件回调方法

返回值:

  • 注册事件关联的Key

订阅通用模型实例信息变更事件

方法:RegisterEventInst(eventFunc types.EventCallbackFunc) types.EventKey

参数:

  • eventFunc:事件回调方法

返回值:

  • 注册事件关联的Key

订阅模块转移信息变更事件

方法:RegisterEventModuleTransfer(eventFunc types.EventCallbackFunc) types.EventKey

参数:

  • eventFunc:事件回调方法

返回值:

  • 注册事件关联的Key