Fix a compilation error (did not implement a MemStore method)
authorChristos KK Loverdos <loverdos@gmail.com>
Mon, 9 Jul 2012 13:24:51 +0000 (16:24 +0300)
committerChristos KK Loverdos <loverdos@gmail.com>
Mon, 9 Jul 2012 13:24:51 +0000 (16:24 +0300)
src/main/resources/policy.scala
src/main/scala/gr/grnet/aquarium/computation/TimeslotComputations.scala
src/main/scala/gr/grnet/aquarium/store/memory/MemStoreProvider.scala
src/test/scala/gr/grnet/aquarium/user/UserStateComputationsTest.scala

index 4b9544c..68176fc 100644 (file)
@@ -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
index dbe7fe3..1a0cd22 100644 (file)
@@ -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]()
 
     /**
index fb21af0..f58fe3d 100644 (file)
@@ -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 {
index c35f7f7..7fe30b2 100644 (file)
@@ -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)
       ))
     )
   )