public boolean isAvailtabilityComplient(Long timeUnits){
		if(this.sla == null){
			throw new AutomatonException("no Service Level Agreement defined");
		}
		Long totalDowntime;
		if(this.currentDowntimeStart != null){
			totalDowntime = this.downtime.get() + timeUnits - this.currentDowntimeStart.get();
		}else{
			totalDowntime = this.downtime.get();
		}
		Double downTimeRate = ( timeUnits == 0 ) ? 0.0 : (double)totalDowntime / (double)timeUnits;
		return (1.0 - downTimeRate) >= this.sla.getAvailability();
	}