Attempted to get hosts for adding ssh keys (to be tested)
This commit is contained in:
parent
21f51692c4
commit
12255364b2
1 changed files with 64 additions and 31 deletions
|
@ -7,7 +7,8 @@ from django.shortcuts import render
|
|||
from django.http import Http404
|
||||
from django.core.urlresolvers import reverse_lazy, reverse
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
from django.views.generic import View, CreateView, FormView, ListView, DetailView, \
|
||||
from django.views.generic import View, CreateView, FormView, ListView, \
|
||||
DetailView, \
|
||||
DeleteView, TemplateView, UpdateView
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.contrib import messages
|
||||
|
@ -24,17 +25,23 @@ from django.utils.safestring import mark_safe
|
|||
|
||||
from membership.models import CustomUser, StripeCustomer
|
||||
from utils.stripe_utils import StripeUtils
|
||||
from utils.forms import BillingAddressForm, PasswordResetRequestForm, UserBillingAddressForm
|
||||
from utils.views import PasswordResetViewMixin, PasswordResetConfirmViewMixin, LoginViewMixin
|
||||
from utils.forms import BillingAddressForm, PasswordResetRequestForm, \
|
||||
UserBillingAddressForm
|
||||
from utils.views import PasswordResetViewMixin, PasswordResetConfirmViewMixin, \
|
||||
LoginViewMixin
|
||||
from utils.mailer import BaseEmail
|
||||
from .models import HostingOrder, HostingBill, HostingPlan, UserHostingKey
|
||||
from .forms import HostingUserSignupForm, HostingUserLoginForm, UserHostingKeyForm, generate_ssh_key_name
|
||||
from .forms import HostingUserSignupForm, HostingUserLoginForm, \
|
||||
UserHostingKeyForm, generate_ssh_key_name
|
||||
from .mixins import ProcessVMSelectionMixin
|
||||
|
||||
from opennebula_api.models import OpenNebulaManager
|
||||
from opennebula_api.serializers import VirtualMachineSerializer, \
|
||||
VirtualMachineTemplateSerializer
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
CONNECTION_ERROR = "Your VMs cannot be displayed at the moment due to a backend \
|
||||
connection error. please try again in a few minutes."
|
||||
|
@ -284,7 +291,8 @@ class PasswordResetConfirmView(PasswordResetConfirmViewMixin):
|
|||
|
||||
form = self.form_class(request.POST)
|
||||
|
||||
if user is not None and default_token_generator.check_token(user, token):
|
||||
if user is not None and default_token_generator.check_token(user,
|
||||
token):
|
||||
if form.is_valid():
|
||||
new_password = form.cleaned_data['new_password2']
|
||||
user.set_password(new_password)
|
||||
|
@ -385,7 +393,8 @@ class SSHKeyListView(LoginRequiredMixin, ListView):
|
|||
def render_to_response(self, context, **response_kwargs):
|
||||
if not self.queryset:
|
||||
return HttpResponseRedirect(reverse('hosting:choice_ssh_keys'))
|
||||
return super(SSHKeyListView, self).render_to_response(context, **response_kwargs)
|
||||
return super(SSHKeyListView, self).render_to_response(context,
|
||||
**response_kwargs)
|
||||
|
||||
|
||||
class SSHKeyChoiceView(LoginRequiredMixin, View):
|
||||
|
@ -448,18 +457,29 @@ class SSHKeyCreateView(LoginRequiredMixin, FormView):
|
|||
})
|
||||
|
||||
owner = self.request.user
|
||||
manager = OpenNebulaManager()
|
||||
# Get all VMs belonging to the user
|
||||
allorders = HostingOrder.objects.filter(customer__user=owner)
|
||||
if len(allorders) > 0:
|
||||
logger.debug("The user {} has 1 or more VMs. We need to configure "
|
||||
"the ssh keys.".format(self.request.user.email))
|
||||
hosts = [order.vm_id for order in allorders]
|
||||
|
||||
# Get user ssh key
|
||||
public_key = str(form.cleaned_data.get('public_key', ''))
|
||||
# Add ssh key to user
|
||||
try:
|
||||
manager.add_public_key(
|
||||
user=owner, public_key=public_key, merge=True)
|
||||
except ConnectionError:
|
||||
pass
|
||||
except WrongNameError:
|
||||
pass
|
||||
|
||||
else:
|
||||
logger.debug("The user {} has no VMs. We don't need to configure "
|
||||
"the ssh keys.".format(self.request.user.email))
|
||||
# manager = OpenNebulaManager()
|
||||
#
|
||||
# # Get user ssh key
|
||||
# public_key = str(form.cleaned_data.get('public_key', ''))
|
||||
# # Add ssh key to user
|
||||
# try:
|
||||
# manager.add_public_key(
|
||||
# user=owner, public_key=public_key, merge=True)
|
||||
# except ConnectionError:
|
||||
# pass
|
||||
# except WrongNameError:
|
||||
# pass
|
||||
|
||||
return HttpResponseRedirect(self.success_url)
|
||||
|
||||
|
@ -558,8 +578,10 @@ class PaymentVMView(LoginRequiredMixin, FormView):
|
|||
token=token)
|
||||
if not customer:
|
||||
msg = _("Invalid credit card")
|
||||
messages.add_message(self.request, messages.ERROR, msg, extra_tags='make_charge_error')
|
||||
return HttpResponseRedirect(reverse('hosting:payment') + '#payment_error')
|
||||
messages.add_message(self.request, messages.ERROR, msg,
|
||||
extra_tags='make_charge_error')
|
||||
return HttpResponseRedirect(
|
||||
reverse('hosting:payment') + '#payment_error')
|
||||
|
||||
# Create Billing Address
|
||||
billing_address = form.save()
|
||||
|
@ -572,8 +594,10 @@ class PaymentVMView(LoginRequiredMixin, FormView):
|
|||
# Check if the payment was approved
|
||||
if not charge_response.get('response_object'):
|
||||
msg = charge_response.get('error')
|
||||
messages.add_message(self.request, messages.ERROR, msg, extra_tags='make_charge_error')
|
||||
return HttpResponseRedirect(reverse('hosting:payment') + '#payment_error')
|
||||
messages.add_message(self.request, messages.ERROR, msg,
|
||||
extra_tags='make_charge_error')
|
||||
return HttpResponseRedirect(
|
||||
reverse('hosting:payment') + '#payment_error')
|
||||
|
||||
charge = charge_response.get('response_object')
|
||||
|
||||
|
@ -581,7 +605,8 @@ class PaymentVMView(LoginRequiredMixin, FormView):
|
|||
manager = OpenNebulaManager(email=owner.email,
|
||||
password=owner.password)
|
||||
# Get user ssh key
|
||||
if not UserHostingKey.objects.filter(user=self.request.user).exists():
|
||||
if not UserHostingKey.objects.filter(
|
||||
user=self.request.user).exists():
|
||||
context.update({
|
||||
'sshError': 'error',
|
||||
'form': form
|
||||
|
@ -633,7 +658,8 @@ class PaymentVMView(LoginRequiredMixin, FormView):
|
|||
context = {
|
||||
'vm': vm,
|
||||
'order': order,
|
||||
'base_url': "{0}://{1}".format(request.scheme, request.get_host())
|
||||
'base_url': "{0}://{1}".format(request.scheme,
|
||||
request.get_host())
|
||||
|
||||
}
|
||||
email_data = {
|
||||
|
@ -647,13 +673,15 @@ class PaymentVMView(LoginRequiredMixin, FormView):
|
|||
email.send()
|
||||
|
||||
return HttpResponseRedirect(
|
||||
"{url}?{query_params}".format(url=reverse('hosting:orders', kwargs={'pk': order.id}),
|
||||
"{url}?{query_params}".format(
|
||||
url=reverse('hosting:orders', kwargs={'pk': order.id}),
|
||||
query_params='page=payment'))
|
||||
else:
|
||||
return self.form_invalid(form)
|
||||
|
||||
|
||||
class OrdersHostingDetailView(PermissionRequiredMixin, LoginRequiredMixin, DetailView):
|
||||
class OrdersHostingDetailView(PermissionRequiredMixin, LoginRequiredMixin,
|
||||
DetailView):
|
||||
template_name = "hosting/order_detail.html"
|
||||
context_object_name = "order"
|
||||
login_url = reverse_lazy('hosting:login')
|
||||
|
@ -761,7 +789,8 @@ class CreateVirtualMachinesView(LoginRequiredMixin, View):
|
|||
configuration_options = HostingPlan.get_serialized_configs()
|
||||
|
||||
context = {
|
||||
'templates': VirtualMachineTemplateSerializer(templates, many=True).data,
|
||||
'templates': VirtualMachineTemplateSerializer(templates,
|
||||
many=True).data,
|
||||
'configuration_options': configuration_options,
|
||||
}
|
||||
except:
|
||||
|
@ -832,7 +861,8 @@ class VirtualMachineView(LoginRequiredMixin, View):
|
|||
serializer = VirtualMachineSerializer(vm)
|
||||
context = {
|
||||
'virtual_machine': serializer.data,
|
||||
'order': HostingOrder.objects.get(vm_id=serializer.data['vm_id'])
|
||||
'order': HostingOrder.objects.get(
|
||||
vm_id=serializer.data['vm_id'])
|
||||
}
|
||||
except:
|
||||
pass
|
||||
|
@ -863,7 +893,8 @@ class VirtualMachineView(LoginRequiredMixin, View):
|
|||
|
||||
context = {
|
||||
'vm': vm,
|
||||
'base_url': "{0}://{1}".format(self.request.scheme, self.request.get_host())
|
||||
'base_url': "{0}://{1}".format(self.request.scheme,
|
||||
self.request.get_host())
|
||||
}
|
||||
email_data = {
|
||||
'subject': 'Virtual machine plan canceled',
|
||||
|
@ -883,7 +914,8 @@ class VirtualMachineView(LoginRequiredMixin, View):
|
|||
return HttpResponseRedirect(self.get_success_url())
|
||||
|
||||
|
||||
class HostingBillListView(PermissionRequiredMixin, LoginRequiredMixin, ListView):
|
||||
class HostingBillListView(PermissionRequiredMixin, LoginRequiredMixin,
|
||||
ListView):
|
||||
template_name = "hosting/bills.html"
|
||||
login_url = reverse_lazy('hosting:login')
|
||||
permission_required = ['view_hostingview']
|
||||
|
@ -893,7 +925,8 @@ class HostingBillListView(PermissionRequiredMixin, LoginRequiredMixin, ListView)
|
|||
ordering = '-id'
|
||||
|
||||
|
||||
class HostingBillDetailView(PermissionRequiredMixin, LoginRequiredMixin, DetailView):
|
||||
class HostingBillDetailView(PermissionRequiredMixin, LoginRequiredMixin,
|
||||
DetailView):
|
||||
template_name = "hosting/bill_detail.html"
|
||||
login_url = reverse_lazy('hosting:login')
|
||||
permission_required = ['view_hostingview']
|
||||
|
|
Loading…
Reference in a new issue