def main(): argument_spec = vmware_argument_spec() argument_spec.update( dict( extension_key=dict(type='str', required=True), version=dict(type='str', required=True), email=dict(type='str', required=False), description=dict(type='str', required=False), company=dict(type='str', required=False), name=dict(type='str', required=False), url=dict(type='str', required=False), ssl_thumbprint=dict(type='str', required=False), client_type=dict(type='str', default='vsphere-client-serenity', required=False), server_type=dict(type='str', default='vsphere-client-serenity', required=False), visible=dict(type='bool', default='True', required=False), state=dict(type='str', default='present', choices=['absent', 'present']), )) module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=False, required_if=[[ 'state', 'present', [ 'email', 'description', 'company', 'name', 'url', 'ssl_thumbprint', 'server_type', 'client_type' ] ]]) state = module.params['state'] extension_key = module.params['extension_key'] version = module.params['version'] email = module.params['email'] desc = module.params['description'] name = module.params['name'] company = module.params['company'] client_type = module.params['client_type'] server_type = module.params['server_type'] url = module.params['url'] visible = module.params['visible'] thumbprint = module.params['ssl_thumbprint'] content = connect_to_api(module, False) em = content.extensionManager key_check = em.FindExtension(extension_key) results = dict(changed=False, installed=dict()) if state == 'present' and key_check: results['changed'] = False results['installed'] = "'%s' is already installed" % (extension_key) elif state == 'present' and not key_check: extension = vim.Extension() extension.key = extension_key extension.company = company extension.version = version extension.lastHeartbeatTime = datetime.datetime.now() description = vim.Description() description.label = name description.summary = desc extension.description = description extension.shownInSolutionManager = visible client = vim.Extension.ClientInfo() client.company = company client.version = version client.description = description client.type = client_type client.url = url extension.client = [client] server = vim.Extension.ServerInfo() server.company = company server.description = description server.type = server_type server.adminEmail = email server.serverThumbprint = thumbprint server.url = url extension.server = [server] em.RegisterExtension(extension) results['changed'] = True results['installed'] = "'%s' installed." % (extension_key) elif state == 'absent' and key_check: em.UnregisterExtension(extension_key) results['changed'] = True results['installed'] = "'%s' uninstalled." % (extension_key) elif state == 'absent' and not key_check: results['changed'] = False results['installed'] = "'%s' is not installed." % (extension_key) module.exit_json(**results)
def get_extension(self, vcp_url, fingerprint): try: cp = configparser.ConfigParser() cp.read(self.middleware.call_sync('vcenter.property_file_path')) version = self.middleware.call_sync('vcenter.get_plugin_version') description = vim.Description() description.label = cp.get('RegisterParam', 'label') description.summary = cp.get('RegisterParam', 'description') ext = vim.Extension() ext.company = cp.get('RegisterParam', 'company') ext.version = version ext.key = cp.get('RegisterParam', 'key') ext.description = description ext.lastHeartbeatTime = datetime.now() server_info = vim.Extension.ServerInfo() server_info.serverThumbprint = fingerprint server_info.type = vcp_url.split(':')[0].upper() # sysgui protocol server_info.url = vcp_url server_info.description = description server_info.company = cp.get('RegisterParam', 'company') server_info.adminEmail = ['ADMIN EMAIL'] ext.server = [server_info] client = vim.Extension.ClientInfo() client.url = vcp_url client.company = cp.get('RegisterParam', 'company') client.version = version client.description = description client.type = "vsphere-client-serenity" ext.client = [client] event_info = [] for e in cp.get('RegisterParam', 'events').split(","): ext_event_type_info = vim.Extension.EventTypeInfo() ext_event_type_info.eventID = e event_info.append(ext_event_type_info) task_info = [] for t in cp.get('RegisterParam', 'tasks').split(","): ext_type_info = vim.Extension.TaskTypeInfo() ext_type_info.taskID = t task_info.append(ext_type_info) # Register custom privileges required for vcp RBAC priv_info = [] for priv in cp.get('RegisterParam', 'auth').split(","): ext_type_info = vim.Extension.PrivilegeInfo() ext_type_info.privID = priv ext_type_info.privGroupName = self.PRIVATE_GROUP_NAME priv_info.append(ext_type_info) ext.taskList = task_info ext.eventList = event_info ext.privilegeList = priv_info resource_list = self.create_event_keyvalue_pairs() ext.resourceList = resource_list return ext except configparser.NoOptionError as e: raise ValidationError('vcenter_update.get_extension', f'Property Missing : {e}')
def _new_extension(self): description = vim.Description(label=self.DESCRIPTION, summary='') return vim.Extension(description=description, key=self._key, lastHeartbeatTime=self._get_heartbeat(), version=self.VERSION)
def get_extension(self, vcp_url, thumb_print): try: cp = SafeConfigParser() cp.read(self.property_file_path) company = cp.get('RegisterParam', 'company') descr = cp.get('RegisterParam', 'description') key = cp.get('RegisterParam', 'key') events = cp.get('RegisterParam', 'events').split(",") tasks = cp.get('RegisterParam', 'tasks').split(",") version = utils.get_plugin_version() if 'Not available' in version: return version label = cp.get('RegisterParam', 'label') sys_guiprotocol = vcp_url.split(':')[0] description = vim.Description() description.label = label description.summary = descr ext = vim.Extension() ext.company = company ext.version = version ext.key = key ext.description = description ext.lastHeartbeatTime = datetime.datetime.now() server_info = vim.Extension.ServerInfo() server_info.serverThumbprint = thumb_print server_info.type = sys_guiprotocol.upper() server_info.url = vcp_url server_info.description = description server_info.company = company server_info.adminEmail = ['ADMIN EMAIL'] ext.server = [server_info] client = vim.Extension.ClientInfo() client.url = vcp_url client.company = company client.version = version client.description = description client.type = "vsphere-client-serenity" ext.client = [client] event_info = [] for e in events: ext_event_type_info = vim.Extension.EventTypeInfo() ext_event_type_info.eventID = e event_info.append(ext_event_type_info) task_info = [] for t in tasks: ext_type_info = vim.Extension.TaskTypeInfo() ext_type_info.taskID = t task_info.append(ext_type_info) ext.taskList = task_info ext.eventList = event_info resource_list = self.create_event_keyvalue_pairs() if isinstance(resource_list, str): return resource_list ext.resourceList = resource_list return ext except ConfigParser.NoOptionError as ex: return 'Property Missing : ' + str(ex) except Exception as ex: return str(ex).replace("'", "").replace("<", "").replace(">", "")
def main(): argument_spec = vmware_argument_spec() argument_spec.update( dict( extension_key=dict(type="str", required=True), version=dict(type="str", required=True), email=dict(type="str", required=False), description=dict(type="str", required=False), company=dict(type="str", required=False), name=dict(type="str", required=False), url=dict(type="str", required=False), ssl_thumbprint=dict(type="str", required=False), client_type=dict( type="str", default="vsphere-client-serenity", required=False ), server_type=dict( type="str", default="vsphere-client-serenity", required=False ), visible=dict(type="bool", default="True", required=False), state=dict( type="str", default="present", choices=["absent", "present"] ), ) ) module = AnsibleModule( argument_spec=argument_spec, supports_check_mode=False, required_if=[ [ "state", "present", [ "email", "description", "company", "name", "url", "ssl_thumbprint", "server_type", "client_type", ], ] ], ) state = module.params["state"] extension_key = module.params["extension_key"] version = module.params["version"] email = module.params["email"] desc = module.params["description"] name = module.params["name"] company = module.params["company"] client_type = module.params["client_type"] server_type = module.params["server_type"] url = module.params["url"] visible = module.params["visible"] thumbprint = module.params["ssl_thumbprint"] content = connect_to_api(module, False) em = content.extensionManager key_check = em.FindExtension(extension_key) results = dict(changed=False, installed=dict()) if state == "present" and key_check: results["changed"] = False results["installed"] = "'%s' is already installed" % (extension_key) elif state == "present" and not key_check: extension = vim.Extension() extension.key = extension_key extension.company = company extension.version = version extension.lastHeartbeatTime = datetime.datetime.now() description = vim.Description() description.label = name description.summary = desc extension.description = description extension.shownInSolutionManager = visible client = vim.Extension.ClientInfo() client.company = company client.version = version client.description = description client.type = client_type client.url = url extension.client = [client] server = vim.Extension.ServerInfo() server.company = company server.description = description server.type = server_type server.adminEmail = email server.serverThumbprint = thumbprint server.url = url extension.server = [server] em.RegisterExtension(extension) results["changed"] = True results["installed"] = "'%s' installed." % (extension_key) elif state == "absent" and key_check: em.UnregisterExtension(extension_key) results["changed"] = True results["installed"] = "'%s' uninstalled." % (extension_key) elif state == "absent" and not key_check: results["changed"] = False results["installed"] = "'%s' is not installed." % (extension_key) module.exit_json(**results)