protected boolean reduceScaleAndDeploy(Service service, boolean checkState, ScalePolicy policy) { int desiredScale = DataAccessor.fieldInteger(service, ServiceConstants.FIELD_DESIRED_SCALE).intValue(); int lockedScale = DataAccessor.fieldInteger(service, ServiceConstants.FIELD_LOCKED_SCALE).intValue(); int minScale = policy.getMin(); // account for the fact that scale policy can be updated if (lockedScale > policy.getMin().intValue()) { minScale = lockedScale; } if (lockedScale >= policy.getMax().intValue()) { minScale = policy.getMax(); } int increment = policy.getIncrement().intValue(); if (desiredScale >= minScale) { // reduce scale by interval and try to deploy again Integer newDesiredScale = desiredScale - increment <= minScale ? minScale : desiredScale - policy.getIncrement(); desiredScale = setDesiredScaleInternal(service, newDesiredScale); log.info("Decremented service [{}] scale to [{}] as reconcile has failed", service.getUuid(), desiredScale); try { deploy(service, checkState, false); } catch (ServiceInstanceAllocateException ex) { if (desiredScale == minScale) { throw ex; } reduceScaleAndDeploy(service, checkState, policy); } } return false; }
protected boolean deployWithScaleAdjustement(final Service service, final boolean checkState, ScalePolicy policy) { Integer desiredScaleToReset = null; Integer desiredScaleSet = DataAccessor.fieldInteger(service, ServiceConstants.FIELD_DESIRED_SCALE); if (desiredScaleSet == null) { desiredScaleToReset = policy.getMin(); } else if (desiredScaleSet.intValue() > policy.getMax().intValue()) { desiredScaleToReset = policy.getMax(); } boolean initLockScale = false; if (DataAccessor.fieldInteger(service, ServiceConstants.FIELD_LOCKED_SCALE) == null) { initLockScale = true; } if (desiredScaleToReset != null) { initLockScale = true; desiredScaleToReset = setDesiredScaleInternal(service, desiredScaleToReset); log.info("Set service [{}] desired scale to [{}]", service.getUuid(), desiredScaleToReset); } if (initLockScale) { lockScale(service); } return incremenetScaleAndDeploy(service, checkState, policy); }
protected boolean incremenetScaleAndDeploy(final Service service, final boolean checkState, ScalePolicy policy) { Integer desiredScale = DataAccessor.fieldInteger(service, ServiceConstants.FIELD_DESIRED_SCALE); try { deploy(service, checkState, false); lockScale(service); } catch (ServiceInstanceAllocateException ex) { reduceScaleAndDeploy(service, checkState, policy); return false; } if (desiredScale.intValue() < policy.getMax().intValue()) { Integer newDesiredScale = policy.getMax() - desiredScale < policy.getIncrement().intValue() ? policy .getMax() : desiredScale + policy.getIncrement(); desiredScale = setDesiredScaleInternal(service, newDesiredScale); log.info("Incremented service [{}] scale to [{}] as reconcile has succeed", service.getUuid(), desiredScale); incremenetScaleAndDeploy(service, checkState, policy); } return false; }
if (svcIndexId != null) { Service svc = serviceDao.getServiceByServiceIndexId(svcIndexId); uuidPart = svc.getUuid().substring(0, 7); } else { uuidPart = instance.getUuid().substring(0, 7);
InstanceHealthCheck healthCheck, LBConfigMetadataStyle lbConfig, Account account) { this.name = serviceName; this.uuid = service.getUuid(); this.stack_name = stackName; this.stack_uuid = stackUUID;
/** * {@inheritDoc} */ @Override public void from(io.cattle.platform.core.model.Service from) { setId(from.getId()); setName(from.getName()); setAccountId(from.getAccountId()); setKind(from.getKind()); setUuid(from.getUuid()); setDescription(from.getDescription()); setState(from.getState()); setCreated(from.getCreated()); setRemoved(from.getRemoved()); setRemoveTime(from.getRemoveTime()); setData(from.getData()); setStackId(from.getStackId()); setVip(from.getVip()); setCreateIndex(from.getCreateIndex()); setSelectorLink(from.getSelectorLink()); setSelectorContainer(from.getSelectorContainer()); setExternalId(from.getExternalId()); setHealthState(from.getHealthState()); setSystem(from.getSystem()); setSkip(from.getSkip()); }