From 3c2d88690e1e1026c1bea96d16cff324c7a8670e Mon Sep 17 00:00:00 2001 From: Christos KK Loverdos Date: Mon, 9 Jul 2012 16:24:51 +0300 Subject: [PATCH] Fix a compilation error (did not implement a MemStore method) --- src/main/resources/policy.scala | 15 ++++++++++----- .../aquarium/computation/TimeslotComputations.scala | 2 +- .../aquarium/store/memory/MemStoreProvider.scala | 19 ++++++++++++++++++- .../aquarium/user/UserStateComputationsTest.scala | 6 +++--- 4 files changed, 32 insertions(+), 10 deletions(-) diff --git a/src/main/resources/policy.scala b/src/main/resources/policy.scala index 4b9544c..68176fc 100644 --- a/src/main/resources/policy.scala +++ b/src/main/resources/policy.scala @@ -1,4 +1,4 @@ -import gr.grnet.aquarium.charging.{ContinuousChargingBehavior, OnOffChargingBehavior, DiscreteChargingBehavior} +import gr.grnet.aquarium.charging.{OnceChargingBehavior, ContinuousChargingBehavior, OnOffChargingBehavior, DiscreteChargingBehavior} import gr.grnet.aquarium.policy.{EffectiveUnitPrice, EffectivePriceTable, FullPriceTable, ResourceType, StdPolicy} import gr.grnet.aquarium.Timespan @@ -8,22 +8,27 @@ import gr.grnet.aquarium.Timespan StdPolicy( id = "policy-1", parentID = None, + validityTimespan = Timespan(0), + resourceTypes = Set( ResourceType("bandwidth", "MB/Hr", DiscreteChargingBehavior), ResourceType("vmtime", "Hr", OnOffChargingBehavior), ResourceType("diskspace", "MB/Hr", ContinuousChargingBehavior) ), + chargingBehaviorClasses = Set( DiscreteChargingBehavior.getClass.getName, OnOffChargingBehavior.getClass.getName, - ContinuousChargingBehavior.getClass.getName + ContinuousChargingBehavior.getClass.getName, + OnceChargingBehavior.getClass.getName ), + roleMapping = Map( "default" -> FullPriceTable(Map( - "bandwidth" -> EffectivePriceTable(EffectiveUnitPrice(0.01, Nil) :: Nil), - "vmtime" -> EffectivePriceTable(EffectiveUnitPrice(0.01, Nil) :: Nil), - "diskspace" -> EffectivePriceTable(EffectiveUnitPrice(0.01, Nil) :: Nil) + "bandwidth" -> EffectivePriceTable(EffectiveUnitPrice(0.01, None) :: Nil), + "vmtime" -> EffectivePriceTable(EffectiveUnitPrice(0.01, None) :: Nil), + "diskspace" -> EffectivePriceTable(EffectiveUnitPrice(0.01, None) :: Nil) )) ) ) \ No newline at end of file diff --git a/src/main/scala/gr/grnet/aquarium/computation/TimeslotComputations.scala b/src/main/scala/gr/grnet/aquarium/computation/TimeslotComputations.scala index dbe7fe3..1a0cd22 100644 --- a/src/main/scala/gr/grnet/aquarium/computation/TimeslotComputations.scala +++ b/src/main/scala/gr/grnet/aquarium/computation/TimeslotComputations.scala @@ -314,7 +314,7 @@ trait TimeslotComputations extends Loggable { } type PriceMap = immutable.SortedMap[Timeslot, EffectiveUnitPrice] - type PriceList = List[EffectiveUnitPrice] + private type PriceList = List[EffectiveUnitPrice] private def emptyMap = immutable.SortedMap[Timeslot,EffectiveUnitPrice]() /** diff --git a/src/main/scala/gr/grnet/aquarium/store/memory/MemStoreProvider.scala b/src/main/scala/gr/grnet/aquarium/store/memory/MemStoreProvider.scala index fb21af0..f58fe3d 100644 --- a/src/main/scala/gr/grnet/aquarium/store/memory/MemStoreProvider.scala +++ b/src/main/scala/gr/grnet/aquarium/store/memory/MemStoreProvider.scala @@ -48,7 +48,7 @@ import gr.grnet.aquarium.event.model.resource.{StdResourceEvent, ResourceEventMo import gr.grnet.aquarium.computation.state.UserState import gr.grnet.aquarium.util.Tags import gr.grnet.aquarium.computation.BillingMonthInfo -import gr.grnet.aquarium.policy.StdPolicy +import gr.grnet.aquarium.policy.{PolicyModel, StdPolicy} /** * An implementation of various stores that persists parts in memory. @@ -269,6 +269,23 @@ extends StoreProvider def findPolicyByID(id: String) = { _policies.find(p => p.id == id) } + + /** + * Store an accounting policy. + */ + def insertPolicy(policy: PolicyModel): Policy = { + val localPolicy = StdPolicy( + id = policy.id, + parentID = policy.parentID, + validityTimespan = policy.validityTimespan, + resourceTypes = policy.resourceTypes, + chargingBehaviorClasses = policy.chargingBehaviorClasses, + roleMapping = policy.roleMapping + ) + _policies = localPolicy :: _policies + + localPolicy + } } object MemStoreProvider { diff --git a/src/test/scala/gr/grnet/aquarium/user/UserStateComputationsTest.scala b/src/test/scala/gr/grnet/aquarium/user/UserStateComputationsTest.scala index c35f7f7..7fe30b2 100644 --- a/src/test/scala/gr/grnet/aquarium/user/UserStateComputationsTest.scala +++ b/src/test/scala/gr/grnet/aquarium/user/UserStateComputationsTest.scala @@ -87,9 +87,9 @@ class UserStateComputationsTest extends Loggable { ), roleMapping = Map( "default" -> FullPriceTable(Map( - "bandwidth" -> EffectivePriceTable(EffectiveUnitPrice(BandwidthUnitPrice, Nil) :: Nil), - "vmtime" -> EffectivePriceTable(EffectiveUnitPrice(VMTimeUnitPrice, Nil) :: Nil), - "diskspace" -> EffectivePriceTable(EffectiveUnitPrice(DiskspaceUnitPrice, Nil) :: Nil) + "bandwidth" -> EffectivePriceTable(EffectiveUnitPrice(BandwidthUnitPrice, None) :: Nil), + "vmtime" -> EffectivePriceTable(EffectiveUnitPrice(VMTimeUnitPrice, None) :: Nil), + "diskspace" -> EffectivePriceTable(EffectiveUnitPrice(DiskspaceUnitPrice, None) :: Nil) )) ) ) -- 1.7.10.4