/** * Retrieves ip addresses that are in RELEASED state for more than IP_ADDRESS_RELEASE_INTERVAL_MS milliseconds. * * @return List of IP addresses that are in RELEASED state for more than IP_ADDRESS_RELEASE_PERIOD_MS millii seconds. */ private DeferredResult<List<IPAddressService.IPAddressState>> retrieveReleasedIPAddresses() { long currentTime = Utils.getNowMicrosUtc(); long ipAddressReleaseCutoffTime = currentTime - TimeUnit.SECONDS.toMicros(IP_ADDRESS_RELEASE_PERIOD_SECONDS); QueryTask.Query getReleasedIPAddressesQuery = QueryTask.Query.Builder.create() .addKindFieldClause(IPAddressService.IPAddressState.class) .addFieldClause(FIELD_NAME_IP_ADDRESS_STATUS, IPAddressService.IPAddressState.IPAddressStatus.RELEASED.toString()) .addRangeClause(ServiceDocument.FIELD_NAME_UPDATE_TIME_MICROS, QueryTask.NumericRange.createLessThanRange(ipAddressReleaseCutoffTime)) .build(); QueryUtils.QueryByPages<IPAddressService.IPAddressState> queryByPages = new QueryUtils.QueryByPages<>( this.getHost(), getReleasedIPAddressesQuery, IPAddressService.IPAddressState.class, null); queryByPages.setClusterType(ServiceTypeCluster.INVENTORY_SERVICE); return queryByPages.collectDocuments(Collectors.toList()) .exceptionally(e -> { logWarning(String.format("Failed to retrieve released IP addresses due to error %s", e.getMessage())); return new ArrayList<>(); }); }
private QueryTask.NumericRange<?> createRange(String num, BinaryVerb op) { // if there's a decimal, treat as double Number d = null; if (num.contains(".")) { d = Double.parseDouble(num); } else { d = Long.parseLong(num); } if (op.equals(BinaryVerb.LT)) { return QueryTask.NumericRange.createLessThanRange(d); } if (op.equals(BinaryVerb.LE)) { return QueryTask.NumericRange.createLessThanOrEqualRange(d); } if (op.equals(BinaryVerb.GT)) { return QueryTask.NumericRange.createGreaterThanRange(d); } if (op.equals(BinaryVerb.GE)) { return QueryTask.NumericRange.createGreaterThanOrEqualRange(d); } if (op.equals(BinaryVerb.EQ)) { return QueryTask.NumericRange.createEqualRange(d); } return null; }
Query createWithLessThanRangeQuery() { Query query = new Query(); query.setTermPropertyName("numeric"); query.setNumericRange(NumericRange.createLessThanRange(314L)); return query; }
Query createWithLessThanRangeQuery() { Query query = new Query(); query.setTermPropertyName("numeric"); query.setNumericRange(NumericRange.createLessThanRange(314L)); return query; }