• CMDB 3.0 二次开发框架使用指南
    • Inputer 接口声明
    • API List
      • Inputer 注册 API
        • 异常回调方法声明
        • 常规Inputer 注册,此方法注册的Inputer仅会被框架执行一次
        • 需要定时执行的Inputer注册,此方法注册的Inputer会被框架定时执行
      • 业务管理 API
        • 业务管理包装器
        • 业务迭代器
        • 创建业务对象
        • 按照名字业务名进行查找
        • 按照条件对业务进行搜索
      • 集群管理 API
        • 集群管理包装器
        • 集群迭代器
        • 创建集群对象
        • 按照集群名进行查找
        • 按照条件对集群进行搜索
      • 模块管理 API
        • 模块管理包装器
        • 模块迭代器
        • 创建模块对象
        • 按照模块名进行查找
        • 按照条件对模块进行搜索
      • 云区域管理 API
        • 云区域管理包装器
        • 云区域迭代器
        • 创建云区域对象
        • 按照云区域名进行查找
        • 按照条件对模块进行搜索
      • 主机管理 API
        • 主机转移接口方法声明
        • 主机管理包装器(用于查询接口返回的数据结构)
        • 主机管理包装器
        • 主机迭代器
        • 创建主机对象
        • 按照主机名进行查找
        • 按照条件对主机进行搜索
      • 通用实例管理 API
        • 通用实例
        • 创建普通对象
        • 按照实例名进行查找
        • 按照条件对实例进行搜索
      • 模型管理 API
        • 获取模型
        • 创建模型分类对象
      • 按照模型分类的名字进行模糊查找,返回所有名字与输入的名字相似的分类对象的迭代器。
      • 按照条件进行精确查找,返回所有符合条件的分类对象的迭代器
      • 事件订阅 API
        • 事件回调方法声明
        • 取消事件订阅
        • 订阅主机信息变更事件
        • 订阅业务信息变更事件
        • 订阅模块信息变更事件
        • 订阅主机身份信息变更事件
        • 订阅集群信息变更事件
        • 订阅通用模型实例信息变更事件
        • 订阅模块转移信息变更事件

    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