Create an Individual Storage Requirement
Last Updated December 19, 2024

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;
}