def test_cost(self): dev = Device.create(sn='device', model_type=DeviceType.rack_server, model_name='device') dmg = DeviceModelGroup(name='DeviceModelGroup') dmg.price = 100 dmg.save() dev.model.group = dmg dev.model.save() mk = MarginKind(name='50%', margin=50) mk.save() dev.margin_kind = mk dk = DeprecationKind(name='10 months', months=10) dk.save() dev.deprecation_kind = dk dev.save() self.assertEqual(pricing.get_device_cost(dev), 15) pricing.device_update_cached(dev) dev = Device.objects.get(id=dev.id) self.assertEqual(pricing.get_device_cost(dev), 15) self.assertEqual(dev.cached_cost, 15)
def test_price_deprecation(self): # Device after deprecation period should have raw price = 0 dev = Device.create(sn='device', model_type=DeviceType.rack_server, model_name='device') dmg = DeviceModelGroup(name='DeviceModelGroup') dmg.price = 100 dmg.save() dev.model.group = dmg dev.purchase_date = datetime.today() - timedelta(11 * (365 / 12)) dev.model.save() mk = MarginKind(name='50%', margin=50) mk.save() dev.margin_kind = mk dk = DeprecationKind(name='10 months', months=10) dk.save() dev.deprecation_kind = dk dev.save() pricing.device_update_cached(dev) dev = Device.objects.get(id=dev.id) self.assertEqual(get_device_raw_price(dev), 0) self.assertEqual(dev.cached_price, 0) self.assertEqual(dev.cached_cost, 0)
def setUp(self): self.client = login_as_su() venture = Venture(name='venture', symbol='ventureSymbol') venture.save() self.venture = venture venture_role = VentureRole(name='role', venture=self.venture) venture_role.save() self.venture_role = venture_role d_kind = DeprecationKind(name='12 months', months=12) d_kind.save() self.kind = DeprecationKind.objects.get(name='12 months') # Cross - devices self.device_after_deprecation = Device.create( sn='device_after_deprecation', deprecation_kind=self.kind, support_expiration_date=datetime.datetime(2003, 01, 02), purchase_date=datetime.datetime(2001, 01, 01), warranty_expiration_date=datetime.datetime(2005, 01, 02), venture=self.venture, venture_role=self.venture_role, model_name='xxx', model_type=DeviceType.unknown, ) self.device_after_deprecation.name = 'Device1' self.device_after_deprecation.save() self.device_with_blanks = Device.create( sn='device_with_blanks', deprecation_date=None, deprecation_kind=None, support_expiration_date=None, purchase_date=None, venture=None, venture_role=None, model_name='xxx', model_type=DeviceType.unknown, ) self.device_with_blanks.name = 'Device2' self.device_with_blanks.save()
def test_price_deprecation_in_progress(self): # Device in deprecation period should have raw price >0 if price is set dev = Device.create(sn='device', model_type=DeviceType.rack_server, model_name='device') dmg = DeviceModelGroup(name='DeviceModelGroup') dmg.price = 100 dmg.save() dev.model.group = dmg # currently first month in deprecation period dev.purchase_date = datetime.today() - timedelta(1 * (365 / 12)) dev.model.save() dev.margin_kind = MarginKind(name='50%', margin=50) dev.margin_kind.save() dev.deprecation_kind = DeprecationKind(name='10 months', months=10) dev.deprecation_kind.save() dev.save() pricing.device_update_cached(dev) self.assertEqual(get_device_raw_price(dev), 100) self.assertEqual(dev.cached_cost, 15) self.assertEqual(dev.cached_price, 100)
def setUp(self): super(DeviceWithPricingResourceTest, self).setUp() self.resource = 'devicewithpricing' self.user = User.objects.create_user('ralph', '*****@*****.**', 'ralph') self.venture = Venture(name='Infra').save() self.deprecation_kind = DeprecationKind(name='12 months', months=12).save() srv1 = { 'sn': 'srv-1', 'model_name': 'server', 'model_type': DeviceType.virtual_server, 'venture': self.venture, 'name': 'Srv 1', 'purchase_date': datetime.datetime(2020, 1, 1, 0, 0), 'deprecation_kind': self.deprecation_kind, } srv1_cpu = { 'model_name': 'Intel PCU1', 'label': 'CPU 1', 'priority': 0, 'family': 'Intsels', 'price': 120, 'count': 2, 'speed': 1200, } srv1_memory = { 'priority': 0, 'family': 'Noname RAM', 'label': 'Memory 1GB', 'price': 100, 'speed': 1033, 'size': 512, 'count': 6, } srv1_storage = { 'model_name': 'Store 1TB', 'label': 'store 1TB', 'priority': 0, 'family': 'Noname Store', 'price': 180, 'count': 10, } self.device = create_device( device=srv1, cpu=srv1_cpu, memory=srv1_memory, storage=srv1_storage, ) self.device.save() name = 'Splunk Volume 100 GiB' symbol = 'splunkvolume' model, created = ComponentModel.create( ComponentType.unknown, family=symbol, name=name, priority=0, ) model_group, created = ComponentModelGroup.objects.get_or_create( name='Group Splunk', price=128, type=ComponentType.unknown, ) model.group = model_group model.save() res, created = SplunkUsage.concurrent_get_or_create( device=self.device, day=datetime.date.today(), defaults={'model': model}, ) res.size = 10 res.save()
def setUp(self): self.client = login_as_su() venture = Venture(name='Infra').save() self.venture = Venture.objects.get(name='Infra') venture = Venture(name='Blade').save() self.venture_blade = Venture.objects.get(name='Blade') DeprecationKind(name='Default', months=24).save() self.deprecation_kind = DeprecationKind.objects.get(name='Default') srv1 = { 'sn': 'srv-1', 'model_name': 'server', 'model_type': DeviceType.virtual_server, 'venture': self.venture, 'name': 'Srv 1', 'purchase_date': datetime.datetime(2020, 1, 1, 0, 0), 'deprecation_kind': self.deprecation_kind, } srv1_cpu = { 'model_name': 'Intel PCU1', 'label': 'CPU 1', 'priority': 0, 'family': 'Intsels', 'price': 120, 'count': 2, 'speed': 1200 } srv1_memory = { 'priority': 0, 'family': 'Noname RAM', 'label': 'Memory 1GB', 'price': 100, 'speed': 1033, 'size': 512, 'count': 6, } srv1_storage = { 'model_name': 'Store 1TB', 'label': 'store 1TB', 'priority': 0, 'family': 'Noname Store', 'price': 180, 'count': 10, } create_device(device=srv1, cpu=srv1_cpu, memory=srv1_memory, storage=srv1_storage) self.srv1 = Device.objects.get(sn='srv-1') srv2 = { 'sn': 'srv-2', 'model_name': 'server', 'model_type': DeviceType.virtual_server, 'venture': self.venture, 'name': 'Srv 1', 'purchase_date': datetime.datetime(2020, 1, 1, 0, 0), 'deprecation_kind': self.deprecation_kind, } create_device(device=srv2) self.srv2 = Device.objects.get(sn='srv-2') rack = { 'sn': 'rack-1', 'model_name': 'rack1', 'model_type': DeviceType.rack, 'price': 5000, 'name': 'rack1', 'model_group': 'Rack Group', 'model_group_slots': 20, } create_device(device=rack) self.rack = Device.objects.get(sn='rack-1') blc = { 'sn': 'blc-1', 'model_name': 'blade-center', 'model_type': DeviceType.blade_system, 'venture': self.venture_blade, 'name': 'Blc 1', 'parent': self.rack, 'price': 10000, 'model_group': 'BladeCenters Group', 'model_group_slots': 10, } create_device(device=blc) self.blc = Device.objects.get(sn='blc-1') bls1 = { 'sn': 'bls-1', 'model_name': 'blade-server', 'model_type': DeviceType.blade_server, 'venture': self.venture_blade, 'parent': self.blc, 'name': 'Bls 1', 'purchase_date': datetime.datetime(2020, 1, 1, 0, 0), 'deprecation_kind': self.deprecation_kind, } bls1_cpu = { 'model_name': 'Intel PCU2', 'label': 'CPU 2', 'priority': 0, 'family': 'Intsels', 'price': 140, 'count': 4, 'speed': 2000, } create_device(device=bls1, cpu=bls1_cpu) self.bls1 = Device.objects.get(sn='bls-1') bls2 = { 'sn': 'bls-2', 'model_name': 'blade-server', 'model_type': DeviceType.blade_server, 'venture': self.venture_blade, 'parent': self.blc, 'name': 'Bls 2', 'purchase_date': datetime.datetime(2020, 1, 1, 0, 0), 'deprecation_kind': self.deprecation_kind, } bls2_memory = { 'priority': 0, 'family': 'Noname RAM2', 'label': 'Ram 2048', 'price': 80, 'speed': 1033, 'size': 2048, 'count': 10, } bls2_cpu = { 'model_name': 'Intel PCU3', 'label': 'CPU 3', 'priority': 0, 'family': 'Intsels', 'price': 120, 'count': 2, 'speed': 1500, } create_device(device=bls2, cpu=bls2_cpu, memory=bls2_memory) self.bls2 = Device.objects.get(sn='bls-2') bls3 = { 'sn': 'bls-3', 'model_name': 'blade-server', 'model_type': DeviceType.blade_server, 'venture': self.venture_blade, 'parent': self.blc, 'name': 'Bls 3', 'purchase_date': datetime.datetime(2020, 1, 1, 0, 0), 'deprecation_kind': self.deprecation_kind, } bls3_memory = { 'priority': 0, 'family': 'Noname RAM3', 'label': 'Ram 512', 'price': 80, 'speed': 1033, 'size': 512, 'count': 2, } create_device(device=bls3, memory=bls3_memory) self.bls3 = Device.objects.get(sn='bls-3') bls4 = { 'sn': 'bls-4', 'model_name': 'blade-server', 'model_type': DeviceType.blade_server, 'venture': self.venture_blade, 'parent': self.blc, 'name': 'Bls 4', 'purchase_date': datetime.datetime(2020, 1, 1, 0, 0), 'deprecation_kind': self.deprecation_kind, 'price': 3000, } create_device(device=bls4) self.bls4 = Device.objects.get(sn='bls-4')