Advertisement
Guest User

Untitled

a guest
Jul 24th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.03 KB | None | 0 0
  1. from pyVim import connect
  2. from pyVmomi import vim
  3. import ssl
  4. import requests
  5. import atexit
  6.  
  7.  
  8. class VMwareCluster(object):
  9. def __init__(self, module):
  10. self.module = module
  11. self.cluster_name = module['cluster_name']
  12. self.datacenter = None
  13. self.cluster = None
  14. # global content
  15. self.content = connect_to_api(module)
  16. self.datacenter_name = module['datacenter_name']
  17.  
  18. # content = connect_to_api(module)
  19.  
  20. def check_cluster_configuration(self):
  21.  
  22. self.datacenter = find_datacenter_by_name(self.content, self.datacenter_name)
  23. if self.datacenter is None:
  24. print("Datacenter %s does not exist, "
  25. "please create first with Ansible Module vmware_datacenter or manually."
  26. % self.datacenter_name)
  27. self.cluster = find_cluster_by_name_datacenter(self.datacenter, self.cluster_name)
  28. print(self.cluster)
  29.  
  30. def main():
  31.  
  32. module = {
  33. "hostname":"<IP>",
  34. "username": "<USER>",
  35. "password": "<PASSWORD>",
  36. "validate_certs":True,
  37. "datacenter_name": "<DC_NAME>",
  38. "cluster_name": "<CLUSTER_NAME>",
  39. }
  40.  
  41.  
  42.  
  43. bob = VMwareCluster(module)
  44. bob.check_cluster_configuration()
  45. print('ComputeResource.ConfigInfo')
  46. print(vim.ComputeResource.ConfigInfo())
  47. print('\n')
  48. print('####################')
  49. print('ConfigInfo')
  50. print(vim.cluster.ConfigInfo())
  51. print('\n')
  52. print('####################')
  53. print('DasConfigInfo')
  54. print(vim.cluster.DasConfigInfo())
  55. print('####################')
  56. print('\n')
  57. print('ConfigSpec')
  58. print(vim.cluster.ConfigSpec())
  59. print('####################')
  60. print('\n')
  61. print(vim.cluster.DasVmConfigSpec())
  62.  
  63.  
  64. def connect_to_api(module):
  65.  
  66. hostname = module['hostname']
  67. username = module['username']
  68. password = module['password']
  69. validate_certs = module['validate_certs']
  70.  
  71. context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
  72. context.verify_mode = ssl.CERT_NONE
  73. service_instance = connect.SmartConnect(host=hostname, user=username, pwd=password, sslContext=context)
  74.  
  75. # service_instance = connect.SmartConnect(host=hostname, user=username, pwd=password)
  76.  
  77. return service_instance.RetrieveContent()
  78.  
  79. def find_datacenter_by_name(content, datacenter_name):
  80.  
  81. datacenters = get_all_objs(content, [vim.Datacenter])
  82. for dc in datacenters:
  83. if dc.name == datacenter_name:
  84. return dc
  85.  
  86. return None
  87.  
  88. def find_cluster_by_name_datacenter(datacenter, cluster_name):
  89.  
  90. host_folder = datacenter.hostFolder
  91. for folder in host_folder.childEntity:
  92. if folder.name == cluster_name:
  93. return folder
  94. return None
  95.  
  96. def get_all_objs(content, vimtype, folder=None, recurse=True):
  97. if not folder:
  98. folder = content.rootFolder
  99.  
  100. obj = {}
  101. container = content.viewManager.CreateContainerView(folder, vimtype, recurse)
  102. for managed_object_ref in container.view:
  103. obj.update({managed_object_ref: managed_object_ref.name})
  104. return obj
  105.  
  106. if __name__ == '__main__':
  107. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement