kv_store_monitor.py 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. from datetime import datetime
  2. from resource.enums.region import Region
  3. from resource.service.FeiShuService import FeiShuService
  4. from resource.service.KVStoreService import KVStoreService
  5. from resource.utils.utils import value_covert, bottom_right, convert_storage_unit
  6. kv_store_service = KVStoreService()
  7. fei_shu_service = FeiShuService()
  8. fei_shu_spread_sheet_token = "XzQGsheQzhk74rtknKacClASnTc"
  9. fei_shu_sheet_id = "25dce4"
  10. tenant_access_token = fei_shu_service.get_tenant_access_token("cli_a89702999f3c900b", "47ewnaxRqJAvHYdUR8idHgfzfeqAu0Pz")
  11. charge_type_map = {
  12. "PrePaid": "预付费",
  13. "PostPaid": "后付费",
  14. }
  15. architecture_type_map = {
  16. "cluster": "集群版",
  17. "standard": "标准版",
  18. "rwsplit": "读写分离版"
  19. }
  20. status_map = {
  21. "Normal": "正常",
  22. "Creating": "创建中",
  23. "Changing": "修改中",
  24. "Inactive": "被禁用",
  25. "Flushing": "清除中",
  26. "Released": "已释放",
  27. "Transforming": "转换中",
  28. "Unavailable": "服务停止",
  29. "Error": "创建失败",
  30. "Migrating": "迁移中",
  31. "BackupRecovering": "备份恢复中",
  32. "MinorVersionUpgrading": "小版本升级中",
  33. "NetworkModifying": "网络变更中",
  34. "SSLModifying": "SSL 变更中",
  35. "MajorVersionUpgrading": "大版本升级中,可正常访问"
  36. }
  37. def main():
  38. region_list = [Region.HANG_ZHOU, Region.HONG_KONG, Region.US_WEST, Region.SOUTHEAST]
  39. for region in region_list:
  40. all_instances = kv_store_service.get_all_instance(region=region)
  41. for instance in all_instances:
  42. dt = datetime.now().strftime('%Y-%m-%d')
  43. instance_id = instance.instance_id # 实例ID
  44. instance_name = instance.instance_name # 实例名
  45. instance_status = value_covert(instance.instance_status, status_map) # 实例状态
  46. instance_type = instance.instance_type # 实例类型
  47. zone_id = instance.zone_id # 可用区ID
  48. architecture_type = value_covert(instance.architecture_type, architecture_type_map) # 架构类型
  49. engine_version = instance.engine_version # 兼容的Redis版本
  50. charge_type = value_covert(instance.charge_type, charge_type_map) # 付费类型
  51. capacity = convert_storage_unit(instance.capacity, "mb", "gb") # 容量
  52. values = [[dt, region.desc, zone_id, instance_id, instance_name, instance_status, instance_type, architecture_type, engine_version, charge_type, capacity]]
  53. start_col = "A2"
  54. end_col = bottom_right(start_col, values)
  55. fei_shu_service.spreadsheet_values_prepend(tenant_access_token, fei_shu_spread_sheet_token, f"{fei_shu_sheet_id}!{start_col}:{end_col}", values)
  56. if __name__ == "__main__":
  57. main()