migrate 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. #!/usr/bin/python3
  2. import json
  3. import os
  4. import sys
  5. def migrate_common_lib(values):
  6. delete_keys = [
  7. 'wgUDPPort', 'webUIPort', 'hostNetwork', 'cpuLimit', 'memLimit',
  8. 'dnsConfig', 'environmentVariables', 'appVolumeMounts',
  9. 'extraAppVolumeMounts', 'wgeasy', 'enableResourceLimits',
  10. ]
  11. values.update({
  12. # Migrate Network
  13. 'wgNetwork': {
  14. 'udpPort': values['wgUDPPort'],
  15. 'webPort': values['webUIPort'],
  16. 'hostNetwork': values['hostNetwork'],
  17. },
  18. # Migrate Resources
  19. 'resources': {
  20. 'limits': {
  21. 'cpu': values.get('cpuLimit', '4000m'),
  22. 'memory': values.get('memLimit', '8Gi'),
  23. }
  24. },
  25. # Migrate DNS
  26. 'podOptions': {
  27. 'dnsConfig': {
  28. 'options': [
  29. {'name': opt['name'], 'value': opt['value']}
  30. for opt in values.get('dnsConfig', {}).get('options', [])
  31. ]
  32. }
  33. },
  34. # Migrate Config
  35. 'wgConfig': {
  36. 'host': values['wgeasy']['host'],
  37. 'password': values['wgeasy'].get('password', ''),
  38. 'keepAlive': values['wgeasy']['keep_alive'],
  39. 'clientMTU': values['wgeasy']['client_mtu'],
  40. 'clientAddressRange': values['wgeasy']['client_address_range'],
  41. 'clientDNSServer': values['wgeasy']['client_dns_server'],
  42. 'allowedIPs': values['wgeasy']['allowed_ips'],
  43. 'additionalEnvs': values.get('environmentVariables', []),
  44. },
  45. # Migrate Storage
  46. 'wgStorage': {
  47. 'config': {
  48. 'type': 'hostPath',
  49. 'hostPathConfig': {
  50. 'hostPath': values['appVolumeMounts']['config']['hostPath']
  51. },
  52. } if values['appVolumeMounts']['config']['hostPathEnabled'] else {
  53. 'type': 'ixVolume',
  54. 'ixVolumeConfig': {
  55. 'datasetName': values['appVolumeMounts']['config']['datasetName'],
  56. },
  57. },
  58. 'additionalStorages': [
  59. {
  60. 'type': 'hostPath',
  61. 'hostPathConfig': {'hostPath': e['hostPath']},
  62. 'mountPath': e['mountPath'],
  63. }
  64. for e in values.get('extraAppVolumeMounts', [])
  65. ],
  66. },
  67. })
  68. for k in delete_keys:
  69. values.pop(k, None)
  70. return values
  71. def migrate(values):
  72. if not 'wgeasy' in values.keys():
  73. return values
  74. return migrate_common_lib(values)
  75. if __name__ == '__main__':
  76. if len(sys.argv) != 2:
  77. exit(1)
  78. if os.path.exists(sys.argv[1]):
  79. with open(sys.argv[1], 'r') as f:
  80. print(json.dumps(migrate(json.loads(f.read()))))