private boolean filterMatched(EC2Instance vm, EC2Filter filter) throws ParseException { String filterName = filter.getName(); String[] valueSet = filter.getValueSet(); // TODO: add test of security group the instance is in if (filterName.equalsIgnoreCase("availability-zone")) { return containsString(vm.getZoneName(), valueSet); } else if (filterName.equalsIgnoreCase("hypervisor")) { return containsString(vm.getHypervisor(), valueSet); } else if (filterName.equalsIgnoreCase("image-id")) { return containsString(vm.getTemplateId(), valueSet); } else if (filterName.equalsIgnoreCase("instance-id")) { return containsString(vm.getId(), valueSet); } else if (filterName.equalsIgnoreCase("instance-type")) { return containsString(vm.getServiceOffering(), valueSet); } else if (filterName.equalsIgnoreCase("instance-state-code")) { return containsInteger(EC2SoapServiceImpl.toAmazonCode(vm.getState()), valueSet); } else if (filterName.equalsIgnoreCase("instance-state-name")) { return containsString(EC2SoapServiceImpl.toAmazonStateName(vm.getState()), valueSet); } else if (filterName.equalsIgnoreCase("ip-address")) { return containsString(vm.getIpAddress(), valueSet); } else if (filterName.equalsIgnoreCase("private-ip-address")) { return containsString(vm.getPrivateIpAddress(), valueSet); } else if (filterName.equalsIgnoreCase("owner-id")) { String owner = new String(vm.getDomainId() + ":" + vm.getAccountName()); return containsString(owner, valueSet); } else if (filterName.equalsIgnoreCase("root-device-name")) { return containsDevice(vm.getRootDeviceId(), valueSet); } else return false; }
private boolean filterMatched(EC2Snapshot snap, EC2Filter filter) throws ParseException { String filterName = filter.getName(); String[] valueSet = filter.getValueSet(); if (filterName.equalsIgnoreCase("owner-alias")) { return containsString(UserContext.current().getAccessKey(), valueSet); } else if (filterName.equalsIgnoreCase("owner-id")) { String owner = new String(snap.getDomainId() + ":" + snap.getAccountName()); return containsString(owner, valueSet); } else if (filterName.equalsIgnoreCase("snapshot-id")) { return containsString(snap.getId().toString(), valueSet); } else if (filterName.equalsIgnoreCase("start-time")) { return containsTime(snap.getCreated(), valueSet); } else if (filterName.equalsIgnoreCase("status")) { if (snap.getState().equalsIgnoreCase("backedup")) return containsString("completed", valueSet); else if (snap.getState().equalsIgnoreCase("creating") || snap.getState().equalsIgnoreCase("backingup")) return containsString("pending", valueSet); else return containsString("error", valueSet); } else if (filterName.equalsIgnoreCase("volume-id")) { return containsString(snap.getVolumeId().toString(), valueSet); } else if (filterName.equalsIgnoreCase("volume-size")) { return containsLong(snap.getVolumeSize(), valueSet); } else if (filterName.equalsIgnoreCase("tag-key")) { EC2TagKeyValue[] tagSet = snap.getResourceTags(); for (EC2TagKeyValue tag : tagSet) if (containsString(tag.getKey(), valueSet)) return true; return false; } else if (filterName.equalsIgnoreCase("tag-value")) { EC2TagKeyValue[] tagSet = snap.getResourceTags(); for (EC2TagKeyValue tag : tagSet) { if (tag.getValue() == null) { if (containsEmptyValue(valueSet)) return true; } else { if (containsString(tag.getValue(), valueSet)) return true; } } return false; } else return false; }
public void addFilter(EC2Filter param) { String filterName = param.getName(); if (!filterName.startsWith("tag:")) { String value = (String) filterTypes.get(filterName); if (value == null || value.equalsIgnoreCase("null")) { throw new EC2ServiceException( ClientError.InvalidFilter, "Filter '" + filterName + "' is invalid"); } } // ToDo we could add checks to make sure the type of a filters value is correct (e.g., an // integer) filterSet.add(param); }
public void addFilter(EC2Filter param) { String filterName = param.getName(); String value = (String) filterTypes.get(filterName); if (null == value) throw new EC2ServiceException("Unsupported filter [" + filterName + "] - 1", 501); if (null != value && value.equalsIgnoreCase("null")) throw new EC2ServiceException("Unsupported filter [" + filterName + "] - 2", 501); // ToDo we could add checks to make sure the type of a filters value is correct (e.g., an // integer) filterSet.add(param); }