@Override public boolean start() { Class<APIMessage> apiClass; Set<Class<?>> longJobClasses = BeanUtils.reflections.getTypesAnnotatedWith(LongJobFor.class); for (Class it : longJobClasses) { LongJobFor at = (LongJobFor) it.getAnnotation(LongJobFor.class); try { apiClass = (Class<APIMessage>) Class.forName(at.value().getName()); } catch (ClassNotFoundException | ClassCastException e) { //ApiMessage and LongJob are not one by one corresponding ,so we skip it e.printStackTrace(); continue; } logger.debug(String.format("[LongJob] collect api class [%s]", apiClass.getSimpleName())); apiMsgOfLongJob.put(at.value().getSimpleName(), apiClass); } return true; }
@LongJobFor(APIDeleteVolumeSnapshotMsg.class) @Configurable(preConstruction = true, autowire = Autowire.BY_TYPE) public class DeleteVolumeSnapshotLongJob implements LongJob {
@LongJobFor(APIUpdateClusterOSMsg.class) @Configurable(preConstruction = true, autowire = Autowire.BY_TYPE) public class UpdateClusterOSJob implements LongJob {
@LongJobFor(APIMigrateVmMsg.class) @Configurable(preConstruction = true, autowire = Autowire.BY_TYPE) public class MigrateVmLongJob implements LongJob {
@Override public boolean start() { LongJob job = null; Set<Class<?>> longJobClasses = BeanUtils.reflections.getTypesAnnotatedWith(LongJobFor.class); for (Class it : longJobClasses) { LongJobFor at = (LongJobFor) it.getAnnotation(LongJobFor.class); try { job = (LongJob) it.newInstance(); } catch (InstantiationException | IllegalAccessException e) { e.printStackTrace(); } if (null == job) { logger.warn(String.format("[LongJob] class name [%s] but get LongJob instance is null ", at.getClass().getSimpleName())); continue; } logger.debug(String.format("[LongJob] collect class [%s]", job.getClass().getSimpleName())); allLongJob.put(at.value().getSimpleName(), job); fullJobName.put(at.value().getSimpleName(), at.value().getName()); } return true; }
@LongJobFor(APICreateDataVolumeTemplateFromVolumeMsg.class) @Configurable(preConstruction = true, autowire = Autowire.BY_TYPE) public class CreateDataVolumeTemplateFromVolumeLongJob implements LongJob {
@LongJobFor(APICreateRootVolumeTemplateFromRootVolumeMsg.class) @Configurable(preConstruction = true, autowire = Autowire.BY_TYPE) public class CreateRootVolumeTemplateFromRootVolumeLongJob implements LongJob {
@LongJobFor(APIRevertVolumeFromSnapshotMsg.class) @Configurable(preConstruction = true, autowire = Autowire.BY_TYPE) public class RevertVolumeSnapshotLongJob implements LongJob {
@LongJobFor(APIAddImageMsg.class) @Configurable(preConstruction = true, autowire = Autowire.BY_TYPE) public class AddImageLongJob implements LongJob {