Merge branch 'task/3736/refactor_compute_vm_price' into task/3730/refactor_price_parameter
This commit is contained in:
		
				commit
				
					
						b17af3bb09
					
				
			
		
					 5 changed files with 49 additions and 24 deletions
				
			
		|  | @ -12,6 +12,7 @@ from datacenterlight.models import VMTemplate | ||||||
| from datacenterlight.tasks import create_vm_task | from datacenterlight.tasks import create_vm_task | ||||||
| from membership.models import StripeCustomer | from membership.models import StripeCustomer | ||||||
| from opennebula_api.serializers import VMTemplateSerializer | from opennebula_api.serializers import VMTemplateSerializer | ||||||
|  | from utils.hosting_utils import get_vm_price | ||||||
| from utils.models import BillingAddress | from utils.models import BillingAddress | ||||||
| from utils.stripe_utils import StripeUtils | from utils.stripe_utils import StripeUtils | ||||||
| 
 | 
 | ||||||
|  | @ -94,12 +95,11 @@ class CeleryTaskTestCase(TestCase): | ||||||
|         cpu = specs.get('cpu') |         cpu = specs.get('cpu') | ||||||
|         memory = specs.get('memory') |         memory = specs.get('memory') | ||||||
|         disk_size = specs.get('disk_size') |         disk_size = specs.get('disk_size') | ||||||
|         amount_to_be_charged = (cpu * 5) + (memory * 2) + (disk_size * 0.6) |         amount_to_be_charged = get_vm_price(cpu=cpu, memory=memory, | ||||||
|         plan_name = "{cpu} Cores, {memory} GB RAM, {disk_size} GB SSD".format( |                                             disk_size=disk_size) | ||||||
|             cpu=cpu, |         plan_name = StripeUtils.get_stripe_plan_name(cpu=cpu, | ||||||
|             memory=memory, |                                                      memory=memory, | ||||||
|             disk_size=disk_size) |                                                      disk_size=disk_size) | ||||||
| 
 |  | ||||||
|         stripe_plan_id = StripeUtils.get_stripe_plan_id(cpu=cpu, |         stripe_plan_id = StripeUtils.get_stripe_plan_id(cpu=cpu, | ||||||
|                                                         ram=memory, |                                                         ram=memory, | ||||||
|                                                         ssd=disk_size, |                                                         ssd=disk_size, | ||||||
|  |  | ||||||
|  | @ -17,6 +17,7 @@ from opennebula_api.models import OpenNebulaManager | ||||||
| from opennebula_api.serializers import VirtualMachineTemplateSerializer, \ | from opennebula_api.serializers import VirtualMachineTemplateSerializer, \ | ||||||
|     VMTemplateSerializer |     VMTemplateSerializer | ||||||
| from utils.forms import BillingAddressForm | from utils.forms import BillingAddressForm | ||||||
|  | from utils.hosting_utils import get_vm_price | ||||||
| from utils.mailer import BaseEmail | from utils.mailer import BaseEmail | ||||||
| from utils.stripe_utils import StripeUtils | from utils.stripe_utils import StripeUtils | ||||||
| from utils.tasks import send_plain_email_task | from utils.tasks import send_plain_email_task | ||||||
|  | @ -531,12 +532,11 @@ class OrderConfirmationView(DetailView): | ||||||
|         cpu = specs.get('cpu') |         cpu = specs.get('cpu') | ||||||
|         memory = specs.get('memory') |         memory = specs.get('memory') | ||||||
|         disk_size = specs.get('disk_size') |         disk_size = specs.get('disk_size') | ||||||
|         amount_to_be_charged = (cpu * 5) + (memory * 2) + (disk_size * 0.6) |         amount_to_be_charged = get_vm_price(cpu=cpu, memory=memory, | ||||||
|         plan_name = "{cpu} Cores, {memory} GB RAM, {disk_size} GB SSD".format( |                                             disk_size=disk_size) | ||||||
|             cpu=cpu, |         plan_name = StripeUtils.get_stripe_plan_name(cpu=cpu, | ||||||
|             memory=memory, |                                                      memory=memory, | ||||||
|             disk_size=disk_size) |                                                      disk_size=disk_size) | ||||||
| 
 |  | ||||||
|         stripe_plan_id = StripeUtils.get_stripe_plan_id(cpu=cpu, |         stripe_plan_id = StripeUtils.get_stripe_plan_id(cpu=cpu, | ||||||
|                                                         ram=memory, |                                                         ram=memory, | ||||||
|                                                         ssd=disk_size, |                                                         ssd=disk_size, | ||||||
|  |  | ||||||
|  | @ -35,6 +35,7 @@ from utils.mailer import BaseEmail | ||||||
| from utils.stripe_utils import StripeUtils | from utils.stripe_utils import StripeUtils | ||||||
| from utils.views import PasswordResetViewMixin, PasswordResetConfirmViewMixin, \ | from utils.views import PasswordResetViewMixin, PasswordResetConfirmViewMixin, \ | ||||||
|     LoginViewMixin |     LoginViewMixin | ||||||
|  | from utils.hosting_utils import get_vm_price | ||||||
| from .forms import HostingUserSignupForm, HostingUserLoginForm, \ | from .forms import HostingUserSignupForm, HostingUserLoginForm, \ | ||||||
|     UserHostingKeyForm, generate_ssh_key_name |     UserHostingKeyForm, generate_ssh_key_name | ||||||
| from .mixins import ProcessVMSelectionMixin | from .mixins import ProcessVMSelectionMixin | ||||||
|  | @ -724,12 +725,11 @@ class OrdersHostingDetailView(LoginRequiredMixin, | ||||||
|         cpu = specs.get('cpu') |         cpu = specs.get('cpu') | ||||||
|         memory = specs.get('memory') |         memory = specs.get('memory') | ||||||
|         disk_size = specs.get('disk_size') |         disk_size = specs.get('disk_size') | ||||||
|         amount_to_be_charged = (cpu * 5) + (memory * 2) + (disk_size * 0.6) |         amount_to_be_charged = get_vm_price(cpu=cpu, memory=memory, | ||||||
|         plan_name = "{cpu} Cores, {memory} GB RAM, {disk_size} GB SSD".format( |                                             disk_size=disk_size) | ||||||
|             cpu=cpu, |         plan_name = StripeUtils.get_stripe_plan_name(cpu=cpu, | ||||||
|             memory=memory, |                                                      memory=memory, | ||||||
|             disk_size=disk_size) |                                                      disk_size=disk_size) | ||||||
| 
 |  | ||||||
|         stripe_plan_id = StripeUtils.get_stripe_plan_id(cpu=cpu, |         stripe_plan_id = StripeUtils.get_stripe_plan_id(cpu=cpu, | ||||||
|                                                         ram=memory, |                                                         ram=memory, | ||||||
|                                                         ssd=disk_size, |                                                         ssd=disk_size, | ||||||
|  | @ -775,8 +775,8 @@ class OrdersHostingDetailView(LoginRequiredMixin, | ||||||
|             'redirect': reverse('hosting:virtual_machines'), |             'redirect': reverse('hosting:virtual_machines'), | ||||||
|             'msg_title': str(_('Thank you for the order.')), |             'msg_title': str(_('Thank you for the order.')), | ||||||
|             'msg_body': str(_('Your VM will be up and running in a few moments.' |             'msg_body': str(_('Your VM will be up and running in a few moments.' | ||||||
|                           ' We will send you a confirmation email as soon as' |                               ' We will send you a confirmation email as soon as' | ||||||
|                           ' it is ready.')) |                               ' it is ready.')) | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         return HttpResponse(json.dumps(response), |         return HttpResponse(json.dumps(response), | ||||||
|  |  | ||||||
|  | @ -9,3 +9,16 @@ def get_all_public_keys(customer): | ||||||
|     """ |     """ | ||||||
|     return UserHostingKey.objects.filter(user_id=customer.id).values_list( |     return UserHostingKey.objects.filter(user_id=customer.id).values_list( | ||||||
|         "public_key", flat=True) |         "public_key", flat=True) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def get_vm_price(cpu, memory, disk_size): | ||||||
|  |     """ | ||||||
|  |     A helper function that computes price of a VM from given cpu, ram and | ||||||
|  |     ssd parameters | ||||||
|  | 
 | ||||||
|  |     :param cpu: Number of cores of the VM | ||||||
|  |     :param memory: RAM of the VM | ||||||
|  |     :param disk_size: Disk space of the VM | ||||||
|  |     :return: The price of the VM | ||||||
|  |     """ | ||||||
|  |     return (cpu * 5) + (memory * 2) + (disk_size * 0.6) | ||||||
|  |  | ||||||
|  | @ -238,7 +238,7 @@ class StripeUtils(object): | ||||||
|     @staticmethod |     @staticmethod | ||||||
|     def get_stripe_plan_id(cpu, ram, ssd, version, app='dcl', hdd=None): |     def get_stripe_plan_id(cpu, ram, ssd, version, app='dcl', hdd=None): | ||||||
|         """ |         """ | ||||||
|         Returns the stripe plan id string of the form |         Returns the Stripe plan id string of the form | ||||||
|         `dcl-v1-cpu-2-ram-5gb-ssd-10gb` based on the input parameters |         `dcl-v1-cpu-2-ram-5gb-ssd-10gb` based on the input parameters | ||||||
| 
 | 
 | ||||||
|         :param cpu: The number of cores |         :param cpu: The number of cores | ||||||
|  | @ -256,7 +256,19 @@ class StripeUtils(object): | ||||||
|         if hdd is not None: |         if hdd is not None: | ||||||
|             dcl_plan_string = '{dcl_plan_string}-hdd-{hdd}gb'.format( |             dcl_plan_string = '{dcl_plan_string}-hdd-{hdd}gb'.format( | ||||||
|                 dcl_plan_string=dcl_plan_string, hdd=hdd) |                 dcl_plan_string=dcl_plan_string, hdd=hdd) | ||||||
|         stripe_plan_id_string = '{app}-v{version}-{plan}'.format(app=app, |         stripe_plan_id_string = '{app}-v{version}-{plan}'.format( | ||||||
|                                                                  version=version, |             app=app, | ||||||
|                                                                  plan=dcl_plan_string) |             version=version, | ||||||
|  |             plan=dcl_plan_string) | ||||||
|         return stripe_plan_id_string |         return stripe_plan_id_string | ||||||
|  | 
 | ||||||
|  |     @staticmethod | ||||||
|  |     def get_stripe_plan_name(cpu, memory, disk_size): | ||||||
|  |         """ | ||||||
|  |         Returns the Stripe plan name | ||||||
|  |         :return: | ||||||
|  |         """ | ||||||
|  |         return "{cpu} Cores, {memory} GB RAM, {disk_size} GB SSD".format( | ||||||
|  |             cpu=cpu, | ||||||
|  |             memory=memory, | ||||||
|  |             disk_size=disk_size) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue