Create a Storage
Profile
The example performs the following
operations.
- Retrieve a reference to the Storage Policy Profile Manger.
- Verify that there is vSAN Storage Policy support.
- Retrieve the vSAN storage capability metadata.
- Add capabilities to be used as requirements.
- Add the requirement capabilities to a subprofile. A subprofile corresponds to a rule set in the .
- Specify the subprofile as capability constraints.
- Build a profile specification.
- Create the storage profile.
When you create a storage profile, the
PbmCreate
method returns a
profile ID (PbmProfileId
). The Profile
Manager maintains a list of profiles. To obtain a profile from the list, use
the
PbmQueryProfile
and
PbmRetrieveContent
methods. See
Retrieve an Existing Storage Profile from the Server.
vSAN Storage Profile Creation
// 1: Get PBM Profile Manager & Associated Capability Metadata spbmsc = connection.getPbmServiceContent(); ManagedObjectReference profileMgr = spbmsc.getProfileManager(); // 2: Verify that there is vSAN Storage Policy support Boolean vSanCapabale = false; List<PbmCapabilityVendorResourceTypeInfo> vendorInfo = connection.getPbmPort().pbmFetchVendorInfo(profileMgr, null); for (PbmCapabilityVendorResourceTypeInfo vendor : vendorInfo) for (PbmCapabilityVendorNamespaceInfo vnsi : vendor.getVendorNamespaceInfo()) if (vnsi.getNamespaceInfo().getNamespace().equals("vSan")) { vSanCapabale = true; break; } if (!vSanCapabale) throw new RuntimeFaultFaultMsg( "Cannot create storage profile. vSAN Provider not found.", null); // 3: Get PBM Supported Capability Metadata List<PbmCapabilityMetadataPerCategory> metadata = connection.getPbmPort().pbmFetchCapabilityMetadata(profileMgr, PbmUtil.getStorageResourceType(), null); // 4: Add Provider Specific Capabilities List<PbmCapabilityInstance> capabilities = new ArrayList<PbmCapabilityInstance>(); capabilities.add(buildCapability("stripeWidth", stripeWidth, metadata)); // 5: Add Capabilities to a RuleSet (subprofile) PbmCapabilitySubProfile ruleSet = new PbmCapabilitySubProfile(); ruleSet.getCapability().addAll(capabilities); // 6: Add Rule-Set (subprofile) to Capability Constraints PbmCapabilitySubProfileConstraints constraints = new PbmCapabilitySubProfileConstraints(); ruleSet.setName("Rule-Set " + (constraints.getSubProfiles().size() + 1)); constraints.getSubProfiles().add(ruleSet); // 7: Build Capability-Based Profile PbmCapabilityProfileCreateSpec spec = new PbmCapabilityProfileCreateSpec(); spec.setName(profileName); spec.setDescription("Storage Profile Created by SDK Samples. Rule based on vSAN capability"); spec.setResourceType(PbmUtil.getStorageResourceType()); spec.setConstraints(constraints); // 8: Create Storage Profile PbmProfileId profile = connection.getPbmPort().pbmCreate(profileMgr, spec); System.out.println("Profile " + profileName + " created with ID: " + profile.getUniqueId());