router.py 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. # pylint: skip-file
  2. def main():
  3. '''
  4. ansible oc module for secrets
  5. '''
  6. module = AnsibleModule(
  7. argument_spec=dict(
  8. state=dict(default='present', type='str',
  9. choices=['present', 'absent']),
  10. debug=dict(default=False, type='bool'),
  11. namespace=dict(default='default', type='str'),
  12. name=dict(default='router', type='str'),
  13. kubeconfig=dict(default='/etc/origin/master/admin.kubeconfig', type='str'),
  14. credentials=dict(default='/etc/origin/master/openshift-router.kubeconfig', type='str'),
  15. cert_file=dict(default=None, type='str'),
  16. key_file=dict(default=None, type='str'),
  17. image=dict(default=None, type='str'), #'openshift3/ose-${component}:${version}'
  18. latest_image=dict(default=False, type='bool'),
  19. labels=dict(default=None, type='list'),
  20. ports=dict(default=['80:80', '443:443'], type='list'),
  21. replicas=dict(default=1, type='int'),
  22. selector=dict(default=None, type='str'),
  23. service_account=dict(default='router', type='str'),
  24. router_type=dict(default='haproxy-router', type='str'),
  25. host_network=dict(default=True, type='bool'),
  26. # external host options
  27. external_host=dict(default=None, type='str'),
  28. external_host_vserver=dict(default=None, type='str'),
  29. external_host_insecure=dict(default=False, type='bool'),
  30. external_host_partition_path=dict(default=None, type='str'),
  31. external_host_username=dict(default=None, type='str'),
  32. external_host_password=dict(default=None, type='str'),
  33. external_host_private_key=dict(default=None, type='str'),
  34. # Metrics
  35. expose_metrics=dict(default=False, type='bool'),
  36. metrics_image=dict(default=None, type='str'),
  37. # Stats
  38. stats_user=dict(default=None, type='str'),
  39. stats_password=dict(default=None, type='str'),
  40. stats_port=dict(default=1936, type='int'),
  41. ),
  42. mutually_exclusive=[["router_type", "images"]],
  43. supports_check_mode=True,
  44. )
  45. rconfig = RouterConfig(module.params['name'],
  46. module.params['kubeconfig'],
  47. {'credentials': {'value': module.params['credentials'], 'include': True},
  48. 'default_cert': {'value': None, 'include': True},
  49. 'cert_file': {'value': module.params['cert_file'], 'include': False},
  50. 'key_file': {'value': module.params['key_file'], 'include': False},
  51. 'image': {'value': module.params['image'], 'include': True},
  52. 'latest_image': {'value': module.params['latest_image'], 'include': True},
  53. 'labels': {'value': module.params['labels'], 'include': True},
  54. 'ports': {'value': ','.join(module.params['ports']), 'include': True},
  55. 'replicas': {'value': module.params['replicas'], 'include': True},
  56. 'selector': {'value': module.params['selector'], 'include': True},
  57. 'service_account': {'value': module.params['service_account'], 'include': True},
  58. 'router_type': {'value': module.params['router_type'], 'include': False},
  59. 'host_network': {'value': module.params['host_network'], 'include': True},
  60. 'external_host': {'value': module.params['external_host'], 'include': True},
  61. 'external_host_vserver': {'value': module.params['external_host_vserver'],
  62. 'include': True},
  63. 'external_host_insecure': {'value': module.params['external_host_insecure'],
  64. 'include': True},
  65. 'external_host_partition_path': {'value': module.params['external_host_partition_path'],
  66. 'include': True},
  67. 'external_host_username': {'value': module.params['external_host_username'],
  68. 'include': True},
  69. 'external_host_password': {'value': module.params['external_host_password'],
  70. 'include': True},
  71. 'external_host_private_key': {'value': module.params['external_host_private_key'],
  72. 'include': True},
  73. 'expose_metrics': {'value': module.params['expose_metrics'], 'include': True},
  74. 'metrics_image': {'value': module.params['metrics_image'], 'include': True},
  75. 'stats_user': {'value': module.params['stats_user'], 'include': True},
  76. 'stats_password': {'value': module.params['stats_password'], 'include': True},
  77. 'stats_port': {'value': module.params['stats_port'], 'include': True},
  78. })
  79. ocrouter = Router(rconfig)
  80. state = module.params['state']
  81. ########
  82. # Delete
  83. ########
  84. if state == 'absent':
  85. if not ocrouter.exists():
  86. module.exit_json(changed=False, state="absent")
  87. if module.check_mode:
  88. module.exit_json(change=False, msg='Would have performed a delete.')
  89. api_rval = ocrouter.delete()
  90. module.exit_json(changed=True, results=api_rval, state="absent")
  91. if state == 'present':
  92. ########
  93. # Create
  94. ########
  95. if not ocrouter.exists():
  96. if module.check_mode:
  97. module.exit_json(change=False, msg='Would have performed a create.')
  98. api_rval = ocrouter.create()
  99. module.exit_json(changed=True, results=api_rval, state="present")
  100. ########
  101. # Update
  102. ########
  103. if not ocrouter.needs_update():
  104. module.exit_json(changed=False, state="present")
  105. if module.check_mode:
  106. module.exit_json(change=False, msg='Would have performed an update.')
  107. api_rval = ocrouter.update()
  108. if api_rval['returncode'] != 0:
  109. module.fail_json(msg=api_rval)
  110. module.exit_json(changed=True, results=api_rval, state="present")
  111. module.exit_json(failed=True,
  112. changed=False,
  113. results='Unknown state passed. %s' % state,
  114. state="unknown")
  115. # pylint: disable=redefined-builtin, unused-wildcard-import, wildcard-import, locally-disabled
  116. # import module snippets. This are required
  117. from ansible.module_utils.basic import *
  118. main()