#!/bin/sh
-./make-dist.sh -c dev.aquarium.properties -v -k -b fast -a aquarium-dist
+./make-dist.sh -c dev.aquarium.properties -v -k -b fast -a aquarium-dist "$@"
P_KEEPDIST="no"
P_FAKEIT="no"
P_ARCHIVE=""
+P_OFFLINE="no"
+MVN_OPTS=""
verbose() {
if [ "$P_VERBOSE" = "yes" ]; then
verbose "Keep dist/ folder :" $P_KEEPDIST
verbose "Custom achive name :" $P_ARCHIVE
verbose "Fake it :" $P_FAKEIT
+ verbose "maven offline mode :" $P_OFFLINE
}
fail() {
echo "=== mvn clean ================="
echo "==============================="
echo
- mvn clean || fail "cleaning compilation artifacts"
+ echo mvn ${MVN_OPTS} clean
+ mvn ${MVN_OPTS} clean || fail "cleaning compilation artifacts"
echo
elif [ "$P_BUILD"="fast" ]; then
echo
collectdeps() {
if [ "$P_BUILD" = "normal" ]; then
- mvn dependency:copy-dependencies
+ echo mvn ${MVN_OPTS} dependency:copy-dependencies
+ mvn ${MVN_OPTS} dependency:copy-dependencies
fi
cp target/dependency/*.jar $DIST/lib || fail "collecting dependencies"
echo "=== mvn package ==============="
echo "==============================="
echo
- mvn package -DskipTests && {
+ echo mvn ${MVN_OPTS} package -DskipTests
+ mvn ${MVN_OPTS} package -DskipTests && {
echo
echo "Copying Aquarium classes"
aquariumjar=`find target -type f|egrep "aquarium-[0-9\.]+(-SNAPSHOT)?\.jar"`
echo " -k Keep generated dist folder."
echo " -h Show this message."
echo " -n As in make -n."
+ echo " -o Use mvn in offline mode (--offline, -o)"
echo " -v Be verbose."
exit 0
}
-while getopts ":a:b:hkc:nv" opt
+while getopts ":a:b:hkc:nov" opt
do
case $opt in
a) P_ARCHIVE=$OPTARG
;;
n) P_FAKEIT="yes"
;;
+ o) P_OFFLINE="yes"; MVN_OPTS="-o"
+ ;;
v) P_VERBOSE="yes"
;;
:) ERROR="Option -$OPTARG requires an argument. Aborting..."
#!/bin/sh
-./make-dist.sh -c local.aquarium.properties -v -k -b fast -a aquarium-dist
+./make-dist.sh -c local.aquarium.properties -v -k -b fast -a aquarium-dist "$@"
package gr.grnet.aquarium
-import events.im.IMEventModel
+import event.im.IMEventModel
import java.io.File
import com.ckkloverdos.maybe._
final val events_store_folder = "events.store.folder"
/**
- * If set to `true`, then an IM event that cannot be parsed to [[gr.grnet.aquarium.events.im.IMEventModel]] is
+ * If set to `true`, then an IM event that cannot be parsed to [[gr.grnet.aquarium.event.im.IMEventModel]] is
* saved to the [[gr.grnet.aquarium.store.IMEventStore]].
*/
final val save_unparsed_event_im = "save.unparsed.event.im"
import gr.grnet.aquarium.user.UserState
import gr.grnet.aquarium.util.json.JsonSupport
-import gr.grnet.aquarium.events.im.IMEventModel
-import gr.grnet.aquarium.events.ResourceEvent
+import gr.grnet.aquarium.event.im.IMEventModel
+import gr.grnet.aquarium.event.ResourceEvent
import gr.grnet.aquarium.converter.{PrettyJsonTextFormat, StdConverters}
import gr.grnet.aquarium.actor.message.config.user.UserActorInitWithUserId
import gr.grnet.aquarium.actor.message.service.dispatcher._
import message.config.{ActorProviderConfigured, AquariumPropertiesLoaded}
-import gr.grnet.aquarium.events.im.IMEventModel
-import gr.grnet.aquarium.events.{WalletEntry}
+import gr.grnet.aquarium.event.im.IMEventModel
+import gr.grnet.aquarium.event.{WalletEntry}
/**
import net.liftweb.json.JsonAST.JValue
import net.liftweb.json._
import ext.JodaTimeSerializers
-import gr.grnet.aquarium.events.AquariumEventSkeleton
+import gr.grnet.aquarium.event.AquariumEventSkeleton
/**
* or implied, of GRNET S.A.
*/
-package gr.grnet.aquarium.events
+package gr.grnet.aquarium.event
import gr.grnet.aquarium.util.json.JsonSupport
*/
package gr.grnet.aquarium
-package events
+package event
import util.xml.XmlSupport
*/
package gr.grnet.aquarium
-package events
+package event
import gr.grnet.aquarium.logic.accounting.Chargeslot
import gr.grnet.aquarium.util.date.MutableDateCalc
*/
package gr.grnet.aquarium
-package events
+package event
import gr.grnet.aquarium.logic.accounting.dsl.Timeslot
import java.util.Date
*/
package gr.grnet.aquarium
-package events
+package event
import gr.grnet.aquarium.util.makeString
import gr.grnet.aquarium.logic.accounting.dsl._
*/
package gr.grnet.aquarium
-package events
+package event
import java.util.Date
import converter.{JsonTextFormat, StdConverters}
*/
package gr.grnet.aquarium
-package events
+package event
package im
import gr.grnet.aquarium.util.makeString
* or implied, of GRNET S.A.
*/
-package gr.grnet.aquarium.events.im
+package gr.grnet.aquarium.event.im
-import gr.grnet.aquarium.events.AquariumEventModel
+import gr.grnet.aquarium.event.AquariumEventModel
/**
* The model of any event sent from the `Identity Management` (IM) external system.
*
+ * By definition, this is the model agreed upon between Aquarium and IM.
+ *
* @author Christos KK Loverdos <loverdos@gmail.com>
*/
* or implied, of GRNET S.A.
*/
-package gr.grnet.aquarium.events.im
+package gr.grnet.aquarium.event.im
-import gr.grnet.aquarium.events.AquariumEventSkeleton
+import gr.grnet.aquarium.event.AquariumEventSkeleton
/**
*
import gr.grnet.aquarium.util.{ContextualLogger, CryptoUtils, Loggable}
import gr.grnet.aquarium.store.PolicyStore
import gr.grnet.aquarium.AquariumException
-import gr.grnet.aquarium.events.{WalletEntry, ResourceEvent}
+import gr.grnet.aquarium.event.{WalletEntry, ResourceEvent}
import gr.grnet.aquarium.util.date.{TimeHelpers, MutableDateCalc}
/**
package gr.grnet.aquarium.logic.accounting.dsl
import com.ckkloverdos.maybe.{NoVal, Failed, Just, Maybe}
-import gr.grnet.aquarium.events.ResourceEvent
+import gr.grnet.aquarium.event.ResourceEvent
import gr.grnet.aquarium.AquariumException
/**
* in which case it is ignored.
*
* @param oldAmount the old accumulating amount
- * @param newEventValue the value contained in a newly arrived [[gr.grnet.aquarium.events.ResourceEvent]]
+ * @param newEventValue the value contained in a newly arrived [[gr.grnet.aquarium.event.ResourceEvent]]
* @return
*/
def computeNewAccumulatingAmount(oldAmount: Double, newEventValue: Double): Double
import gr.grnet.aquarium.util.CryptoUtils
import gr.grnet.aquarium.util.date.TimeHelpers
-import gr.grnet.aquarium.events.PolicyEntry
+import gr.grnet.aquarium.event.PolicyEntry
/**
* Root object for the Aquarium policy configuration tree.
import gr.grnet.aquarium.util.date.TimeHelpers
import gr.grnet.aquarium.{AquariumException, Configurator}
import gr.grnet.aquarium.store.RecordID
-import gr.grnet.aquarium.events.{AquariumEventModel, AquariumEventSkeleton}
+import gr.grnet.aquarium.event.{AquariumEventModel, AquariumEventSkeleton}
/**
* An abstract service that retrieves Aquarium events from a queue,
import gr.grnet.aquarium.util.date.TimeHelpers
import gr.grnet.aquarium.util.{LogHelpers, makeString}
import com.ckkloverdos.maybe._
-import gr.grnet.aquarium.events.im.IMEventModel
+import gr.grnet.aquarium.event.im.IMEventModel
import gr.grnet.aquarium.store.memory.MemStore
/**
import gr.grnet.aquarium.store.LocalFSEventStore
import com.ckkloverdos.maybe.{Maybe, Just, Failed, NoVal}
import gr.grnet.aquarium.actor.message.service.dispatcher.ProcessResourceEvent
-import gr.grnet.aquarium.events.ResourceEvent
+import gr.grnet.aquarium.event.ResourceEvent
import gr.grnet.aquarium.util.date.TimeHelpers
package gr.grnet.aquarium.simulation
-import gr.grnet.aquarium.events.ResourceEvent
+import gr.grnet.aquarium.event.ResourceEvent
/**
import java.util.Date
import com.ckkloverdos.maybe.Maybe
import gr.grnet.aquarium.store.RecordID
-import gr.grnet.aquarium.events.ResourceEvent
+import gr.grnet.aquarium.event.ResourceEvent
/**
* A simulator for an instance of the standard `bandwidth` resource.
package gr.grnet.aquarium.simulation
-import gr.grnet.aquarium.events.ResourceEvent
+import gr.grnet.aquarium.event.ResourceEvent
import gr.grnet.aquarium.store.RecordID
import com.ckkloverdos.maybe.Maybe
import java.util.Date
import com.ckkloverdos.maybe.Maybe
import java.util.Date
import gr.grnet.aquarium.util.date.MutableDateCalc
-import gr.grnet.aquarium.events.ResourceEvent
+import gr.grnet.aquarium.event.ResourceEvent
/**
* A simulator for an instance of the standard `vmtime` resource.
import java.util.Date
import gr.grnet.aquarium.store.RecordID
import math.Ordering
-import gr.grnet.aquarium.events.ResourceEvent
+import gr.grnet.aquarium.event.ResourceEvent
/**
* A simulator for a user.
package gr.grnet.aquarium.store
import com.ckkloverdos.maybe.Maybe
-import gr.grnet.aquarium.events.im.IMEventModel
+import gr.grnet.aquarium.event.im.IMEventModel
import gr.grnet.aquarium.util.makeString
/**
import gr.grnet.aquarium.util.{Loggable, stringOfStackTrace}
import gr.grnet.aquarium.util.date.{TimeHelpers, MutableDateCalc}
import gr.grnet.aquarium.uid.{EAIOUUIDGenerator, UIDGenerator}
-import gr.grnet.aquarium.events.ResourceEvent
-import gr.grnet.aquarium.events.im.IMEventModel
+import gr.grnet.aquarium.event.ResourceEvent
+import gr.grnet.aquarium.event.im.IMEventModel
/**
* This is used whenever the property `events.store.folder` is setup in aquarium configuration.
import collection.immutable.SortedMap
import gr.grnet.aquarium.logic.accounting.dsl.{DSL, DSLPolicy, Timeslot}
import com.ckkloverdos.maybe.{NoVal, Just, Maybe}
-import gr.grnet.aquarium.events.PolicyEntry
+import gr.grnet.aquarium.event.PolicyEntry
/**
* A store for serialized policy entries.
package gr.grnet.aquarium.store
import com.ckkloverdos.maybe.Maybe
-import gr.grnet.aquarium.events.ResourceEvent
+import gr.grnet.aquarium.event.ResourceEvent
import gr.grnet.aquarium.AquariumException
/**
import java.util.Date
import com.ckkloverdos.maybe.Maybe
-import gr.grnet.aquarium.events.WalletEntry
+import gr.grnet.aquarium.event.WalletEntry
/**
* A store for Wallet entries.
import gr.grnet.aquarium.user.UserState
import gr.grnet.aquarium.uid.ConcurrentVMLocalUIDGenerator
import gr.grnet.aquarium.{AquariumException, Configurable}
-import gr.grnet.aquarium.events.{WalletEntry, ResourceEvent, PolicyEntry}
+import gr.grnet.aquarium.event.{WalletEntry, ResourceEvent, PolicyEntry}
import gr.grnet.aquarium.converter.JsonTextFormat
import gr.grnet.aquarium.util._
-import gr.grnet.aquarium.events.im.{StdIMEvent, IMEventModel}
+import gr.grnet.aquarium.event.im.{StdIMEvent, IMEventModel}
/**
* An implementation of various stores that persists data in memory.
package gr.grnet.aquarium.store
-import gr.grnet.aquarium.events.im.StdIMEvent
+import gr.grnet.aquarium.event.im.StdIMEvent
package object memory {
type MemIMEvent = StdIMEvent
import org.bson.types.ObjectId
import gr.grnet.aquarium.converter.{JsonTextFormat, StdConverters}
import gr.grnet.aquarium.util._
-import gr.grnet.aquarium.events.im.{IMEventModel, StdIMEvent}
+import gr.grnet.aquarium.event.im.{IMEventModel, StdIMEvent}
/**
import gr.grnet.aquarium.user.UserState.{JsonNames => UserStateJsonNames}
import gr.grnet.aquarium.util.json.JsonSupport
import collection.mutable.ListBuffer
-import gr.grnet.aquarium.events.im.IMEventModel.{Names => IMEventNames}
+import gr.grnet.aquarium.event.im.IMEventModel.{Names => IMEventNames}
import gr.grnet.aquarium.store._
-import gr.grnet.aquarium.events.ResourceEvent.{JsonNames => ResourceJsonNames}
-import gr.grnet.aquarium.events.WalletEntry.{JsonNames => WalletJsonNames}
-import gr.grnet.aquarium.events.PolicyEntry.{JsonNames => PolicyJsonNames}
+import gr.grnet.aquarium.event.ResourceEvent.{JsonNames => ResourceJsonNames}
+import gr.grnet.aquarium.event.WalletEntry.{JsonNames => WalletJsonNames}
+import gr.grnet.aquarium.event.PolicyEntry.{JsonNames => PolicyJsonNames}
import java.util.Date
import gr.grnet.aquarium.logic.accounting.Policy
import com.mongodb._
import org.bson.types.ObjectId
-import gr.grnet.aquarium.events._
+import gr.grnet.aquarium.event._
import com.ckkloverdos.maybe.{NoVal, Maybe}
import im.IMEventModel
import gr.grnet.aquarium.util._
}
/**
- * Collection holding the [[gr.grnet.aquarium.events.ResourceEvent]]s.
+ * Collection holding the [[gr.grnet.aquarium.event.ResourceEvent]]s.
*
* Resource events are coming from all systems handling billable resources.
*/
final val USER_STATES_COLLECTION = "userstates"
/**
- * Collection holding [[gr.grnet.aquarium.events.im.IMEventModel]]s.
+ * Collection holding [[gr.grnet.aquarium.event.im.IMEventModel]]s.
*
* User events are coming from the IM module (external).
*/
final val IM_EVENTS_COLLECTION = "imevents"
/**
- * Collection holding [[gr.grnet.aquarium.events.im.IMEventModel]]s that could not be parsed to normal objects.
+ * Collection holding [[gr.grnet.aquarium.event.im.IMEventModel]]s that could not be parsed to normal objects.
*
* We of course assume at least a valid JSON representation.
*
final val UNPARSED_IM_EVENTS_COLLECTION = "unparsed_imevents"
/**
- * Collection holding [[gr.grnet.aquarium.events.WalletEntry]].
+ * Collection holding [[gr.grnet.aquarium.event.WalletEntry]].
*
* Wallet entries are generated internally in Aquarium.
*/
// final val POLICIES_COLLECTION = "policies"
/**
- * Collection holding [[gr.grnet.aquarium.events.PolicyEntry]].
+ * Collection holding [[gr.grnet.aquarium.event.PolicyEntry]].
*/
final val POLICY_ENTRIES_COLLECTION = "policyEntries"
import gr.grnet.aquarium.logic.accounting.Policy
import java.util.Date
import com.ckkloverdos.maybe.{NoVal, Maybe, Just}
-import gr.grnet.aquarium.events.ResourceEvent
-import gr.grnet.aquarium.events.ResourceEvent.FullMutableResourceTypeMap
+import gr.grnet.aquarium.event.ResourceEvent
+import gr.grnet.aquarium.event.ResourceEvent.FullMutableResourceTypeMap
import logic.accounting.dsl.{Timeslot, DSLAgreement}
import collection.immutable.{TreeMap, SortedMap}
import util.date.MutableDateCalc
* - If the resource is complex, the (name, instanceId) is (DSLResource.name, instance-id)
* - If the resource is simple, the (name, instanceId) is (DSLResource.name, "1")
*
- * @param resource Same as `resource` of [[gr.grnet.aquarium.events.ResourceEvent]]
- * @param instanceId Same as `instanceId` of [[gr.grnet.aquarium.events.ResourceEvent]]
+ * @param resource Same as `resource` of [[gr.grnet.aquarium.event.ResourceEvent]]
+ * @param instanceId Same as `instanceId` of [[gr.grnet.aquarium.event.ResourceEvent]]
* @param instanceAmount This is the amount kept for the resource instance.
* The general rule is that an amount saved in a [[gr.grnet.aquarium.user.ResourceInstanceSnapshot]]
- * represents a total value, while a value appearing in a [[gr.grnet.aquarium.events.ResourceEvent]]
+ * represents a total value, while a value appearing in a [[gr.grnet.aquarium.event.ResourceEvent]]
* represents a difference. How these two values are combined to form the new amount is dictated
* by the underlying [[gr.grnet.aquarium.logic.accounting.dsl.DSLCostPolicy]]
* @param snapshotTime
import gr.grnet.aquarium.logic.accounting.dsl.DSLAgreement
import com.ckkloverdos.maybe.{Failed, Maybe}
import gr.grnet.aquarium.util.date.MutableDateCalc
-import gr.grnet.aquarium.events.{NewWalletEntry, WalletEntry}
+import gr.grnet.aquarium.event.{NewWalletEntry, WalletEntry}
import gr.grnet.aquarium.converter.{JsonTextFormat, StdConverters}
import gr.grnet.aquarium.AquariumException
-import gr.grnet.aquarium.events.im.IMEventModel
+import gr.grnet.aquarium.event.im.IMEventModel
/**
import gr.grnet.aquarium.logic.accounting.Accounting
import gr.grnet.aquarium.logic.accounting.algorithm.CostPolicyAlgorithmCompiler
import gr.grnet.aquarium.AquariumException
-import gr.grnet.aquarium.events.{NewWalletEntry, ResourceEvent}
+import gr.grnet.aquarium.event.{NewWalletEntry, ResourceEvent}
/**
*
import akka.amqp._
import util.Random
-import gr.grnet.aquarium.events.ResourceEvent
+import gr.grnet.aquarium.event.ResourceEvent
import scopt.OptionParser
import gr.grnet.aquarium.messaging.AkkaAMQP
import java.lang.StringBuffer
import gr.grnet.aquarium.logic.accounting.Policy
import gr.grnet.aquarium.store.memory.MemIMEvent
-import gr.grnet.aquarium.events.im.{StdIMEvent, IMEventModel}
+import gr.grnet.aquarium.event.im.{StdIMEvent, IMEventModel}
/**
* Generates random resource events to use as input for testing and
import java.util.Date
import junit.framework.Assert._
import gr.grnet.aquarium.logic.accounting.{Accounting}
-import gr.grnet.aquarium.events.{WalletEntry, ResourceEvent}
+import gr.grnet.aquarium.event.{WalletEntry, ResourceEvent}
import com.ckkloverdos.maybe.Just
/**
import org.junit.Assume._
import gr.grnet.aquarium.Configurator._
import gr.grnet.aquarium.util.{RandomEventGenerator, TestMethods}
-import gr.grnet.aquarium.events.ResourceEvent
+import gr.grnet.aquarium.event.ResourceEvent
import collection.mutable.ArrayBuffer
import org.junit.{After, Test, Before}
import gr.grnet.aquarium.{StoreConfigurator, LogicTestsAssumptions}