def vcp_home(request): if request.method == 'POST': form = VcenterConfigurationForm(request.POST) if form.is_valid(): if form.install_plugin(): form.save() obj = models.VcenterConfiguration.objects.latest('id') obj.vc_version = utils.get_plugin_version() obj.vc_password = '' obj.save() else: return JsonResp( request, error=True, message=_( form.vcp_status)) else: form.is_update_needed() return render(request, "vcp/index.html", {'form': form}) try: obj = models.VcenterConfiguration.objects.latest('id') form = VcenterConfigurationForm(instance=obj) form.fields['vc_ip'].widget.attrs['readonly'] = True form.fields['vc_username'].widget.attrs['readonly'] = True form.fields['vc_port'].widget.attrs['readonly'] = True form.fields['vc_management_ip'].widget.attrs['readonly'] = True form.is_update_needed() except: form = VcenterConfigurationForm() form.is_update_needed() return render(request, "vcp/index.html", {'form': form})
def upgrade_plugin(self): try: obj = models.VcenterConfiguration.objects.latest('id') ip=str(obj.vc_ip) username = str(obj.vc_username) password = str(obj.vc_password) port = str(obj.vc_port) manage_ip = str(obj.vc_management_ip) status_flag = self.validate_vcp_param(ip,port,username,password,True) if status_flag == True: status_flag=utils.update_plugin_zipfile(ip,username,password,port,'UPGRADE',utils.get_plugin_version()) if status_flag == True: sys_guiprotocol = self.get_sys_protocol() plug=plugin.PluginManager() status_flag=plug.upgrade_vCenter_plugin(ip,username,password,port,manage_ip,sys_guiprotocol) if status_flag == True : self.vcp_is_update_available = False obj.vc_version = utils.get_plugin_version() obj.save() return True else: self.vcp_status = 'Upgrade failed. Please contact support.' return False else: self.vcp_status = 'Upgrade failed. Please contact support.' return False else: self.vcp_status = status_flag return False except Exception as ex: self.vcp_status = 'Upgrade failed. Please contact support.' return False
def vcp_home(request): aux_enable_https = models.VcenterAuxSettings.objects.latest( 'id').vc_enable_https if request.method == 'POST': form = VcenterConfigurationForm(request.POST) if form.is_valid(): if form.install_plugin(): form.save() obj = models.VcenterConfiguration.objects.latest('id') obj.vc_version = utils.get_plugin_version() obj.vc_password = '' obj.save() else: return JsonResp(request, error=True, message=_(form.vcp_status)) else: form.is_update_needed() return render(request, "vcp/index.html", { 'form': form, 'aux_enable_https': aux_enable_https, }) try: obj = models.VcenterConfiguration.objects.latest('id') form = VcenterConfigurationForm(instance=obj) form.fields['vc_ip'].widget.attrs['readonly'] = True form.is_update_needed() except: form = VcenterConfigurationForm() form.is_update_needed() return render(request, "vcp/index.html", { 'form': form, 'aux_enable_https': aux_enable_https, })
def is_update_needed(self): version_new = utils.get_plugin_version(); self.vcp_available_version = version_new try: obj = models.VcenterConfiguration.objects.latest('id') version_old = obj.vc_version self.vcp_version = obj.vc_version self.vcp_is_installed = True if self.compare_version(version_new,version_old): self.vcp_is_update_available = True self.vcp_available_version = version_new else: self.vcp_is_update_available = False except Exception as ex: self.vcp_is_update_available = False return False
def get_extension(self,manage_ip,sys_guiprotocol): cp = SafeConfigParser() cp.read(self.property_file_path) company = cp.get('RegisterParam', 'company') descr = cp.get('RegisterParam','description') key = cp.get('RegisterParam','key') version = utils.get_plugin_version() if 'Not available' in version : return version label = cp.get('RegisterParam','label') file_address= 'static/'+utils.get_plugin_file_name() final_url = sys_guiprotocol+"://"+manage_ip+"/"+file_address 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 = [1]; server_info[0] = vim.Extension.ServerInfo() server_info[0].serverThumbprint = '' server_info[0].type = sys_guiprotocol.upper() server_info[0].url = final_url server_info[0].description = description server_info[0].company = company admin_emails = [1] admin_emails[0] = 'none' server_info[0].adminEmail = admin_emails ext.server = server_info; client = [1] client[0] = vim.Extension.ClientInfo() client[0].url = final_url client[0].company = company client[0].version = version client[0].description = description client[0].type = "vsphere-client-serenity" ext.client=client; return ext;
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 install_plugin(self): try: ip = str(self.cleaned_data['vc_ip']) port = str(self.cleaned_data['vc_port']) manage_ip = str(self.cleaned_data['vc_management_ip']) password = str(self.cleaned_data['vc_password']) username = str(self.cleaned_data['vc_username']) status_flag = self.validate_vcp_param(ip,port,username,password,False) if status_flag == True: status_flag = utils.update_plugin_zipfile(ip,username,password,port,'NEW',utils.get_plugin_version()) if status_flag == True: sys_guiprotocol = self.get_sys_protocol() plug=plugin.PluginManager() status_flag = plug.install_vCenter_plugin(ip,username,password,port,manage_ip,sys_guiprotocol) if status_flag == True : self.vcp_is_installed = True self.vcp_is_update_available = False models.VcenterConfiguration.objects.all().delete()# Just for cleaning purpose return True elif 'permission' in status_flag: self.vcp_status = status_flag return False else : self.vcp_status = 'Installation failed. Please contact support.' return False else : self.vcp_status = 'Installation failed. Please contact support.' return False else: self.vcp_status = status_flag return False except Exception as ex: self.vcp_status = 'Installation failed. Please contact support.' return False