def switch(request, project_id, next_url=None): """ Switch session parameters to project with project_id """ if project_id is None: raise ValueError(_("Missing 'project_id'")) if next_url is not None: next_url = next_url else: next_url = _build_next_url(request) try: project = Project.objects.get(id=project_id) except Project.DoesNotExist as err: messages.add_message(request, messages.ERROR, _("Can't find this project")) log.exception('{}{}'.format(_('Exception:').encode('UTF-8'), err)) return HttpResponseRedirect(next_url) keystone = Keystone(request) request.session['project_id'] = project_id request.session['project_name'] = project.name request.session['service_catalog'] = keystone.get_endpoints() request.session['auth_token'] = keystone.conn.auth_token return HttpResponseRedirect(next_url)
def get_context_data(self, **kwargs): context = super(CreateProjectSuccessView, self).get_context_data(**kwargs) request = kwargs.get('request') context['project_info'] = request.session.get('project_info') context['project_info']['auth_url'] = settings.KEYSTONE_URL project_name = context['project_info']['project_name'] user_name = context['project_info']['user_name'] password = context['project_info']['user_password'] try: keystone = Keystone(request, username=user_name, password=password, project_name=project_name) context['project_info']['endpoints'] = keystone.get_endpoints() except exceptions.AuthorizationFailure: msg = _('Unable to retrieve Keystone data') messages.add_message(request, messages.ERROR, msg) log.error(f'{request.user}: {msg}') return context
def get_context_data(self, **kwargs): context = super(CreateProjectSuccessView, self).get_context_data(**kwargs) request = kwargs.get("request") context["project_info"] = request.session.get("project_info") context["project_info"]["auth_url"] = settings.KEYSTONE_URL project_name = context["project_info"]["project_name"] user_name = context["project_info"]["user_name"] password = context["project_info"]["user_password"] try: keystone = Keystone(request, username=user_name, password=password, project_name=project_name) context["project_info"]["endpoints"] = keystone.get_endpoints() except exceptions.AuthorizationFailure: msg = _("Unable to retrieve Keystone data") messages.add_message(request, messages.ERROR, msg) log.error(f"{request.user}: {msg}") return context
def maybe_update_token(request): token_time = request.session.get('token_time') if token_time is None or token_time < datetime.utcnow(): log.info('Updating token for user [{}]'.format(request.user)) try: keystone = Keystone(request) except exceptions.AuthorizationFailure: msg = _('Unable to retrieve Keystone data') messages.add_message(request, messages.ERROR, msg) log.error(f'{request.user}: {msg}') return False if keystone.conn is None: return False request.session['token_time'] = ( timedelta(minutes=15) + datetime.utcnow() ) request.session['auth_token'] = keystone.conn.auth_token request.session['service_catalog'] = keystone.get_endpoints() return True return False
def post(self, request, *args, **kwargs): form = DeleteProjectConfirm(data=request.POST) if not form.is_valid(): return self.render_to_response( self.get_context_data(form=form, request=request)) user = form.data.get('user') password = form.data.get('password') project_id = self.kwargs.get('project_id') project_name = self.keystone.project_get(project_id).name try: keystone_app = Keystone(request, username=user, password=password, tenant_name=project_name) except exceptions.Unauthorized: # Falhou ao auntenticar com as credenciais enviadas pelo usuario messages.add_message(request, messages.ERROR, _('Invalid credentials.')) return self.render_to_response( context=self.get_context_data(form=form, request=request)) endpoints = keystone_app.get_endpoints() storage_url = endpoints['adminURL'] auth_token = self.keystone.conn.auth_token swift_del_result = delete_swift_account(storage_url, auth_token) if not swift_del_result: messages.add_message(request, messages.ERROR, _('Error when delete project')) return HttpResponseRedirect( reverse('edit_project', kwargs={'project_id': project_id})) try: self.keystone.vault_delete_project(project_id) messages.add_message(request, messages.SUCCESS, _('Successfully deleted project.')) except Exception as e: log.exception('{}{}'.format(_('Exception:').encode('UTF-8'), e)) messages.add_message(request, messages.ERROR, _('Error when delete project')) return HttpResponseRedirect(self.success_url)
def post(self, request, *args, **kwargs): form = DeleteProjectConfirm(data=request.POST) if not form.is_valid(): return self.render_to_response( self.get_context_data(form=form, request=request) ) user = form.data.get('user') password = form.data.get('password') project_id = self.kwargs.get('project_id') project_name = self.keystone.project_get(project_id).name try: keystone_app = Keystone(request, username=user, password=password, tenant_name=project_name) except exceptions.Unauthorized: # Falhou ao auntenticar com as credenciais enviadas pelo usuario messages.add_message(request, messages.ERROR, _('Invalid credentials.')) return self.render_to_response( context=self.get_context_data(form=form, request=request) ) endpoints = keystone_app.get_endpoints() storage_url = endpoints['adminURL'] auth_token = self.keystone.conn.auth_token swift_del_result = delete_swift_account(storage_url, auth_token) if not swift_del_result: messages.add_message(request, messages.ERROR, _('Error when delete project')) return HttpResponseRedirect(reverse('edit_project', kwargs={'project_id': project_id})) try: self.keystone.vault_delete_project(project_id) messages.add_message(request, messages.SUCCESS, _('Successfully deleted project.')) except Exception as e: log.exception('{}{}'.format(_('Exception:').encode('UTF-8'), e)) messages.add_message(request, messages.ERROR, _('Error when delete project')) return HttpResponseRedirect(self.success_url)
def get_context_data(self, **kwargs): context = super(CreateProjectSuccessView, self).get_context_data(**kwargs) request = kwargs.get('request') context['project_info'] = request.session.get('project_info') context['project_info']['auth_url'] = settings.KEYSTONE_URL project_name = context['project_info']['project_name'] user_name = context['project_info']['user_name'] password = context['project_info']['user_password'] keystone = Keystone(request, username=user_name, password=password, tenant_name=project_name) context['project_info']['endpoints'] = keystone.get_endpoints() return context
def get_context_data(self, **kwargs): context = super(CreateProjectSuccessView, self).get_context_data(**kwargs) request = kwargs.get('request') context['project_info'] = request.session.get('project_info') context['project_info']['auth_url'] = settings.KEYSTONE_URL project_name = context['project_info']['project_name'] user_name = context['project_info']['user_name'] password = context['project_info']['user_password'] keystone = Keystone(request, username=user_name, password=password, tenant_name=project_name) context['project_info']['endpoints'] = keystone.get_endpoints() return context
def post(self, request, *args, **kwargs): form = DeleteProjectConfirm(data=request.POST) if not form.is_valid(): return self.render_to_response( self.get_context_data(form=form, request=request)) user = form.data.get('user') password = form.data.get('password') project_id = self.kwargs.get('project_id') project_name = self.keystone.project_get(project_id).name try: keystone_app = Keystone(request, username=user, password=password, project_name=project_name) except exceptions.Unauthorized: # Fail to authenticate with sent credentials messages.add_message(request, messages.ERROR, _('Invalid credentials.')) return self.render_to_response( context=self.get_context_data(form=form, request=request)) except exceptions.AuthorizationFailure: msg = _('Unable to retrieve Keystone data') messages.add_message(request, messages.ERROR, msg) log.error(f'{request.user}: {msg}') return self.render_to_response( context=self.get_context_data(form=form, request=request)) endpoints = keystone_app.get_endpoints() storage_url = endpoints.get('object_store').get('adminURL') auth_token = self.keystone.conn.auth_token swift_del_result = delete_swift_account(storage_url, auth_token) if not swift_del_result: messages.add_message(request, messages.ERROR, _('Error when deleting swift account')) return HttpResponseRedirect( reverse('edit_project', kwargs={ 'project_id': project_id, 'project': project_name })) try: self.keystone.vault_project_delete(project_name) messages.add_message(request, messages.SUCCESS, _('Successfully deleted project.')) except Exception as e: log.exception('{}{}'.format(_('Exception:').encode('UTF-8'), e)) messages.add_message(request, messages.ERROR, _('Error when deleting project')) # Purge project from current projects utils.purge_current_project(request, project_id) project_name = request.session.get('project_name') success_url = reverse('change_project') return HttpResponseRedirect(success_url)
def post(self, request, *args, **kwargs): form = DeleteProjectConfirm(data=request.POST) if not form.is_valid(): return self.render_to_response( self.get_context_data(form=form, request=request)) user = form.data.get("user") password = form.data.get("password") project_id = self.kwargs.get("project_id") project_name = self.keystone.project_get(project_id).name try: keystone_app = Keystone(request, username=user, password=password, project_name=project_name) except exceptions.Unauthorized: # Fail to authenticate with sent credentials messages.add_message(request, messages.ERROR, _("Invalid credentials.")) return self.render_to_response( context=self.get_context_data(form=form, request=request)) except exceptions.AuthorizationFailure: msg = _("Unable to retrieve Keystone data") messages.add_message(request, messages.ERROR, msg) log.error(f"{request.user}: {msg}") return self.render_to_response( context=self.get_context_data(form=form, request=request)) endpoints = keystone_app.get_endpoints() storage_url = endpoints.get("object_store").get("adminURL") auth_token = self.keystone.conn.auth_token result, msg = delete_swift_account(storage_url, auth_token) if not result: messages.add_message( request, messages.ERROR, f'{_("Error when deleting swift account")}: {msg}') return HttpResponseRedirect( reverse("edit_project", kwargs={ "project_id": project_id, "project": project_name })) try: self.keystone.vault_project_delete(project_name) messages.add_message(request, messages.SUCCESS, _("Successfully deleted project.")) except Exception as err: log.exception(f'Exception: {err}') messages.add_message(request, messages.ERROR, _("Error when deleting project")) # Purge project from current projects utils.purge_current_project(request, project_id) project_name = request.session.get("project_name") success_url = reverse("change_project") return HttpResponseRedirect(success_url)