-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
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
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.
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 {
),
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)
))
)
)