public static DescribePropertiesResponseType describeProperties(
     final DescribePropertiesType request) throws EucalyptusCloudException {
   DescribePropertiesResponseType reply = request.getReply();
   List<Property> props = reply.getProperties();
   final Predicate<ConfigurableProperty> filter =
       new Predicate<ConfigurableProperty>() {
         public boolean apply(final ConfigurableProperty input) {
           if (request.getProperties().isEmpty()) {
             return true;
           } else if (request.getProperties().contains(input.getQualifiedName())) {
             return true;
           } else {
             for (String propRequest : request.getProperties()) {
               if (input.getQualifiedName().startsWith(propRequest)) {
                 return true;
               }
             }
           }
           return false;
         }
       };
   for (ConfigurableProperty entry :
       Iterables.filter(PropertyDirectory.getPropertyEntrySet(), filter)) {
     if (filter.apply(entry)) {
       String value = "********";
       if (!entry.getWidgetType().equals(ConfigurableFieldType.KEYVALUEHIDDEN))
         value = entry.getValue();
       props.add(
           new Property(
               entry.getQualifiedName(),
               value,
               entry.getDescription(),
               entry.getDefaultValue(),
               entry.getReadOnly()));
     }
   }
   return reply;
 }