diff --git a/server/src/com/cloud/api/ApiDispatcher.java b/server/src/com/cloud/api/ApiDispatcher.java index 860d5c47e5e..2f3b366ad7e 100644 --- a/server/src/com/cloud/api/ApiDispatcher.java +++ b/server/src/com/cloud/api/ApiDispatcher.java @@ -83,6 +83,10 @@ public class ApiDispatcher { Method method = mgr.getClass().getMethod(methodName, cmd.getClass()); Object dbObject = method.invoke(mgr, cmd); + if (dbObject == null) { + throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Create method " + methodName + " in class " + cmd.getClass().getSimpleName() + " failed to create an object."); + } + Method getIdMethod = dbObject.getClass().getMethod("getId"); Object id = getIdMethod.invoke(dbObject); diff --git a/server/src/com/cloud/api/commands/CreateSnapshotCmd.java b/server/src/com/cloud/api/commands/CreateSnapshotCmd.java index d34a8a90164..2996c266617 100644 --- a/server/src/com/cloud/api/commands/CreateSnapshotCmd.java +++ b/server/src/com/cloud/api/commands/CreateSnapshotCmd.java @@ -22,8 +22,10 @@ import org.apache.log4j.Logger; import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseAsyncCreateCmd; +import com.cloud.api.BaseCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.ServerApiException; import com.cloud.api.response.SnapshotResponse; import com.cloud.event.EventTypes; import com.cloud.storage.Snapshot.SnapshotType; @@ -104,26 +106,30 @@ public class CreateSnapshotCmd extends BaseAsyncCreateCmd { public SnapshotResponse getResponse() { SnapshotVO snapshot = (SnapshotVO)getResponseObject(); - SnapshotResponse response = new SnapshotResponse(); - response.setId(snapshot.getId()); + if (snapshot != null) { + SnapshotResponse response = new SnapshotResponse(); + response.setId(snapshot.getId()); - Account account = ApiDBUtils.findAccountById(snapshot.getAccountId()); - if (account != null) { - response.setAccountName(account.getAccountName()); - response.setDomainId(account.getDomainId()); - response.setDomainName(ApiDBUtils.findDomainById(account.getDomainId()).getName()); + Account account = ApiDBUtils.findAccountById(snapshot.getAccountId()); + if (account != null) { + response.setAccountName(account.getAccountName()); + response.setDomainId(account.getDomainId()); + response.setDomainName(ApiDBUtils.findDomainById(account.getDomainId()).getName()); + } + + VolumeVO volume = ApiDBUtils.findVolumeById(snapshot.getVolumeId()); + String snapshotTypeStr = SnapshotType.values()[snapshot.getSnapshotType()].name(); + response.setSnapshotType(snapshotTypeStr); + response.setVolumeId(snapshot.getVolumeId()); + response.setVolumeName(volume.getName()); + response.setVolumeType(volume.getVolumeType().toString()); + response.setCreated(snapshot.getCreated()); + response.setName(snapshot.getName()); + + response.setResponseName(getName()); + return response; } - VolumeVO volume = ApiDBUtils.findVolumeById(snapshot.getVolumeId()); - String snapshotTypeStr = SnapshotType.values()[snapshot.getSnapshotType()].name(); - response.setSnapshotType(snapshotTypeStr); - response.setVolumeId(snapshot.getVolumeId()); - response.setVolumeName(volume.getName()); - response.setVolumeType(volume.getVolumeType().toString()); - response.setCreated(snapshot.getCreated()); - response.setName(snapshot.getName()); - - response.setResponseName(getName()); - return response; + throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to create snapshot due to an internal error creating snapshot for volume " + volumeId); } } diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index cb3c56ec646..adf6fc98160 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -4535,7 +4535,9 @@ public class ManagementServerImpl implements ManagementServer { @Override public void logoutUser(Long userId) { UserAccount userAcct = _userAccountDao.findById(userId); - EventUtils.saveEvent(userId, userAcct.getAccountId(), EventTypes.EVENT_USER_LOGOUT, "user has logged out"); + if (userAcct != null) { + EventUtils.saveEvent(userId, userAcct.getAccountId(), EventTypes.EVENT_USER_LOGOUT, "user has logged out"); + } // else log some kind of error event? This likely means the user doesn't exist, or has been deleted... } @Override diff --git a/ui/new/css/main.css b/ui/new/css/main.css index de34e7720cc..7c7ebd5153e 100644 --- a/ui/new/css/main.css +++ b/ui/new/css/main.css @@ -949,7 +949,7 @@ a:hover { font-size:10px; font-weight:normal; text-align:left; - margin:1px 0 0 0; + margin:0px 0 0 0; padding:0; } .rev_wiztemp_ownertext span { diff --git a/ui/new/images/status_gray.png b/ui/new/images/status_gray.png index 9b205625fd3..79f8d5ddcbb 100644 Binary files a/ui/new/images/status_gray.png and b/ui/new/images/status_gray.png differ diff --git a/ui/new/images/status_green.png b/ui/new/images/status_green.png index 572a83275ca..e8615acad2d 100644 Binary files a/ui/new/images/status_green.png and b/ui/new/images/status_green.png differ diff --git a/ui/new/images/status_red.png b/ui/new/images/status_red.png index 663f9333de7..00abcaead25 100644 Binary files a/ui/new/images/status_red.png and b/ui/new/images/status_red.png differ diff --git a/ui/new/jsp/instance.jsp b/ui/new/jsp/instance.jsp index 79bb19f9434..e5dad5d3e43 100644 --- a/ui/new/jsp/instance.jsp +++ b/ui/new/jsp/instance.jsp @@ -221,7 +221,61 @@ @@ -309,8 +363,7 @@ Blank Template
-
- +
@@ -700,7 +753,7 @@
Centos
-
+
Hypervisor: