@Override protected HostMetaData map(List<Object> input) { Host host = (Host) input.get(0); IpAddress hostIp = (IpAddress) input.get(1); HostMetaData data = new HostMetaData(hostIp.getAddress(), host, accounts.get(host.getAccountId())); return data; } };
@Override public Object perform(String name, Object obj, ApiRequest request) { if (obj instanceof Host) { Host host = (Host) obj; resourceDao.createAndSchedule(ExternalEvent.class, EXTERNAL_EVENT.KIND, ExternalEventConstants.KIND_EXTERNAL_HOST_EVENT, EXTERNAL_EVENT.EVENT_TYPE, ExternalEventConstants.TYPE_HOST_EVACUATE, ExternalEventConstants.FIELD_HOST_ID, host.getId(), EXTERNAL_EVENT.ACCOUNT_ID, host.getAccountId()); return host; } else { return null; } }
@Override public Collection<? extends Service> getServices(Object obj) { Long accountId = null; if (obj instanceof Host) { accountId = ((Host) obj).getAccountId(); } else if (obj instanceof Agent) { Agent agent = (Agent) obj; Host host = objMgr.findAny(Host.class, HOST.AGENT_ID, agent.getId(), HOST.REMOVED, null); if (host == null) { return null; } accountId = host.getAccountId(); } if (accountId == null) { return null; } if (hostDao.hasActiveHosts(accountId)) { return serviceDao.getSkipServices(accountId); } return null; }
protected void reconcileHostEndpointsImpl(final Host host) { final List<PublicEndpoint> newData = instanceDao.getPublicEndpoints(host.getAccountId(), null, host.getId()); if (host != null && host.getRemoved() == null) { updateObjectEndPoints(host, host.getKind(), host.getId(), host.getAccountId(), newData); } }
@Override public Collection<? extends Service> getServices(Object obj) { if (!(obj instanceof Host)) { return null; } Host host = (Host) obj; List<Service> services = new ArrayList<>(); // add all services on host services.addAll(svcDao.getServicesOnHost(host.getId())); // add all services with scale policy List<? extends Service> allServices = objMgr.find(Service.class, SERVICE.ACCOUNT_ID, host.getAccountId(), SERVICE.REMOVED, null); for (Service service : allServices) { if (sdService.isScalePolicyService(service)) { services.add(service); } } return services; }
protected void trigger(Host host) { Map<String, Object> data = new HashMap<>(); data.put(ObjectMetaDataManager.ACCOUNT_FIELD, host.getAccountId()); Event event = EventVO.newEvent(FrameworkEvents.STATE_CHANGE) .withData(data) .withResourceType(HostConstants.TYPE) .withResourceId(host.getId().toString()); eventService.publish(event); }
protected void setState(Host host, String newState) { Map<Object, Object> props = new HashMap<>(); props.put(HOST.AGENT_STATE, newState); Account account = objectManager.loadResource(Account.class, host.getAccountId()); Long delay = DataAccessor.fieldLong(account, AccountConstants.FIELD_HOST_REMOVE_DELAY); if (delay == null && HostDao.HOST_REMOVE_DELAY.get() > -1) { delay = HostDao.HOST_REMOVE_DELAY.get(); } if (delay != null && delay > -1) { props.put(HOST.REMOVE_AFTER, new Date(System.currentTimeMillis() + delay * 1000)); } else { props.put(HOST.REMOVE_AFTER, null); } objectManager.setFields(host, objectManager.convertToPropertiesFor(host, props)); trigger(host); }
@Override public PhysicalHost createMachineForHost(final Host host, String driver) { String uuid = UUID.randomUUID().toString(); final Map<Object, Object> data = new HashMap<Object, Object>(DataUtils.getFields(host)); data.put(PHYSICAL_HOST.KIND, MachineConstants.KIND_MACHINE); data.put(PHYSICAL_HOST.NAME, DataAccessor.fieldString(host, HostConstants.FIELD_HOSTNAME)); data.put(PHYSICAL_HOST.DESCRIPTION, host.getDescription()); data.put(PHYSICAL_HOST.ACCOUNT_ID, host.getAccountId()); data.put(PHYSICAL_HOST.EXTERNAL_ID, uuid); data.put(PHYSICAL_HOST.DRIVER, driver); PhysicalHost phyHost = DeferredUtils.nest(new Callable<PhysicalHost>() { @Override public PhysicalHost call() throws Exception { return genericResourceDao.createAndSchedule(PhysicalHost.class, objectManager.convertToPropertiesFor(PhysicalHost.class, data)); } }); objectManager.setFields(host, HOST.PHYSICAL_HOST_ID, phyHost.getId(), HostConstants.FIELD_REPORTED_UUID, uuid); return phyHost; }
@Override public List<? extends Instance> getInstances(Object obj) { Host host = null; if (obj instanceof Agent) { Agent agent = (Agent) obj; host = objectManager.findAny(Host.class, HOST.AGENT_ID, agent.getId(), HOST.REMOVED, null); } else if (obj instanceof Host) { host = (Host) obj; } if (host == null) { return null; } return serviceDao.getInstancesWithHealtcheckEnabled(host.getAccountId()); } }
@Override public HandlerResult handle(ProcessState state, ProcessInstance process) { Object resource = state.getResource(); if (resource instanceof Host) { List<StorageDriver> drivers = objectManager.find(StorageDriver.class, STORAGE_DRIVER.ACCOUNT_ID, ((Host) resource).getAccountId(), STORAGE_DRIVER.REMOVED, null); for (StorageDriver driver : drivers) { storageService.setupPools(driver); } } else if (resource instanceof StorageDriver) { storageService.setupPools((StorageDriver)resource); } return null; }
if (existingValue == null || !existingValue.equals(inputEntry.getValue())) { labelsService.createHostLabel( host.getAccountId(), host.getId(), inputEntry.getKey(), inputEntry.getValue());
@Override public Collection<? extends Service> getServices(Object obj) { if (obj == null) { return null; } Long accountId = null; if (obj instanceof Host) { Host host = (Host) obj; accountId = host.getAccountId(); } else if (obj instanceof HostLabelMap) { HostLabelMap m = (HostLabelMap) obj; accountId = m.getAccountId(); } else if (obj instanceof ExternalEvent) { ExternalEvent event = (ExternalEvent)obj; if (KIND_EXTERNAL_HOST_EVENT.equals(event.getKind()) && TYPE_SCHEDULER_UPDATE.equals(event.getEventType())) { accountId = event.getAccountId(); } } if (accountId == null) { return null; } List<? extends Service> services = expMapDao.getActiveServices(accountId); List<Service> activeGlobalServices = new ArrayList<Service>(); for (Service service : services) { if (sdSvc.isGlobalService(service) || sdSvc.isScalePolicyService(service)) { activeGlobalServices.add(service); } } return activeGlobalServices; }
@Override public Collection<? extends Service> getServices(Object obj) { if (!(obj instanceof Agent)) { return null; } Agent agent = (Agent) obj; Host host = objMgr.findAny(Host.class, HOST.AGENT_ID, agent.getId(), HOST.REMOVED, null); if (host == null) { return null; } List<? extends Service> allServices = objMgr.find(Service.class, SERVICE.ACCOUNT_ID, host.getAccountId(), SERVICE.REMOVED, null); List<Service> svcsToReconcile = new ArrayList<>(); for (Service service : allServices) { if (!sdService.isActiveService(service)) { continue; } if (sdService.isGlobalService(service) || sdService.isScalePolicyService(service)) { svcsToReconcile.add(service); } } return svcsToReconcile; }
protected void publishChanged(Host host) { Map<String, Object> eventData = CollectionUtils.asMap(ObjectMetaDataManager.ACCOUNT_FIELD, host.getAccountId()); // send host update event Event event = EventVO.newEvent(FrameworkEvents.STATE_CHANGE) .withData(eventData) .withResourceType(HostConstants.TYPE) .withResourceId(host.getId().toString()); eventService.publish(event); }
@Override public HandlerResult handle(ProcessState state, ProcessInstance process) { // event's account id is set to the agent that submitted. This will // change it to the actual user's account id. // Checks to make sure agent's resource account id and the host's // account id match ContainerEvent event = (ContainerEvent)state.getResource(); Agent agent = objectManager.findAny(Agent.class, AGENT.ACCOUNT_ID, event.getAccountId()); Long resourceAccId = null; Host host = objectManager.loadResource(Host.class, event.getHostId()); if ( agent != null ) { resourceAccId = DataAccessor.fromDataFieldOf(agent) .withKey(AgentConstants.DATA_AGENT_RESOURCES_ACCOUNT_ID).as(Long.class); } else if ( event.getAccountId().equals(host.getAccountId()) ){ resourceAccId = event.getAccountId(); } if ( host.getAccountId().equals(resourceAccId) ) { Map<Object, Object> newFields = new HashMap<Object, Object>(); newFields.put(CONTAINER_EVENT.ACCOUNT_ID, host.getAccountId()); DataAccessor.fromMap(state.getData()).withScope(ContainerEventCreate.class).withKey(AGENT_ID).set(host.getAgentId()); return new HandlerResult(newFields); } return null; }
agentMetadataService.updateMetadata(host.getAccountId());
@Override public IpAddress assignAndActivateNewAddress(Host host, String ipAddress) { IpAddress ipAddressObj = objectManager.create(IpAddress.class, IP_ADDRESS.ADDRESS, ipAddress, IP_ADDRESS.ACCOUNT_ID, host.getAccountId()); HostIpAddressMap map = objectManager.create(HostIpAddressMap.class, HOST_IP_ADDRESS_MAP.IP_ADDRESS_ID, ipAddressObj.getId(), HOST_IP_ADDRESS_MAP.HOST_ID, host.getId()); processManager.scheduleStandardProcess(StandardProcess.CREATE, ipAddressObj, null); processManager.scheduleStandardProcess(StandardProcess.CREATE, map, null); return ipAddressObj; }
@Override public HandlerResult handle(ProcessState state, ProcessInstance process) { Object resource = state.getResource(); if (resource instanceof Stack) { Stack stack = (Stack)resource; if (!ServiceConstants.isSystem(stack)) { Account account = objectManager.loadResource(Account.class, stack.getAccountId()); if (DataAccessor.fieldString(account, AccountConstants.FIELD_ORCHESTRATION) != null) { return null; } } trigger(stack.getAccountId()); } else if (resource instanceof Host) { trigger(((Host) resource).getAccountId()); } return null; }
setId(from.getId()); setName(from.getName()); setAccountId(from.getAccountId()); setKind(from.getKind()); setUuid(from.getUuid());