/**
* Copyright 2011 Intuit Inc. All Rights Reserved
*/
package com.intuit.tank.dao;
/*
* #%L
* Data Access
* %%
* Copyright (C) 2011 - 2015 Intuit Inc.
* %%
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
* #L%
*/
import java.util.Date;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import com.intuit.tank.project.VMInstance;
import com.intuit.tank.vm.api.enumerated.VMRegion;
import com.intuit.tank.vm.vmManager.VMInformation;
/**
* ProductDao
*
* @author dangleton
*
*/
public class VMImageDao extends BaseDao<VMInstance> {
/**
* @param entityClass
*/
public VMImageDao() {
super();
}
/**
* Gets the VMImage associated with the instanceID.
*
* @param instanceId
* the instance id to find for
* @return the VMImage or null if not found
*/
@Nullable
public VMInstance getImageByInstanceId(@Nonnull String instanceId) {
String prefix = "x";
NamedParameter parameter = new NamedParameter(VMInstance.PROPERTY_INSTANCE_ID, "iId", instanceId);
StringBuilder sb = new StringBuilder();
sb.append(buildQlSelect(prefix)).append(startWhere())
.append(buildWhereClause(Operation.EQUALS, prefix, parameter));
return super.findOneWithJQL(sb.toString(), parameter);
}
/**
*
* @param info
* @param region
* @return
*/
@Nonnull
public VMInstance addImageFromInfo(String jobId, @Nonnull VMInformation info, @Nonnull VMRegion region) {
// persist the VMImages to database:
VMInstance image = VMInstance.builder()
.amiId(info.getImageId())
.instanceId(info.getInstanceId())
.startTime(info.getLaunchTime() != null ? info.getLaunchTime().getTime() : new Date())
.status(info.getState())
.size(info.getSize())
.region(region)
.jobId(jobId)
.build();
return saveOrUpdate(image);
}
}