Create an Individual Storage Requirement

The following example builds a property instance for a capability. The property instance represents a single storage requirement.

The code performs the following steps.

  1. Verifies that the capability exists.
  2. Creates a property instance for the requirement (PbmCapabilityPropertyInstance).
  3. Creates a capability constraint for the property instance (PbmCapabilityConstraintInstance).
  4. Create a capability instance for the constraint and add the subprofile (rule) to the capability.
PbmCapabilityInstance buildCapability(String capabilityName, Object value,
         List<PbmCapabilityMetadataPerCategory> metadata)
         throws InvalidArgumentFaultMsg {

// Retrieve the metadata for the capability (stripeWidth)
PbmCapabilityMetadata capabilityMeta = PbmUtil.getCapabilityMeta(capabilityName, metadata);
if (capabilityMeta == null)
throw new InvalidArgumentFaultMsg("Specified Capability does not exist", null);

// Create a New Property Instance based on the Stripe Width Capability
PbmCapabilityPropertyInstance prop = new PbmCapabilityPropertyInstance();
prop.setId(capabilityName);
prop.setValue(value);

// Associate Property Instance with a Rule (subprofile)
PbmCapabilityConstraintInstance rule = new PbmCapabilityConstraintInstance();
rule.getPropertyInstance().add(prop);

// Associate Rule (subprofile) with a Capability Instance
PbmCapabilityInstance capability = new PbmCapabilityInstance();
capability.setId(capabilityMeta.getId());
capability.getConstraint().add(rule);

return capability;
}