github.com/vmware/govmomi@v0.51.0/pbm/simulator/profiles.go (about) 1 // © Broadcom. All Rights Reserved. 2 // The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. 3 // SPDX-License-Identifier: Apache-2.0 4 5 package simulator 6 7 import ( 8 "time" 9 10 "github.com/vmware/govmomi/pbm/types" 11 vim "github.com/vmware/govmomi/vim25/types" 12 ) 13 14 const DefaultEncryptionProfileID = "4d5f673c-536f-11e6-beb8-9e71128cae77" 15 16 var defaultEncryptionProfile = &types.PbmCapabilityProfile{ 17 PbmProfile: types.PbmProfile{ 18 ProfileId: types.PbmProfileId{ 19 UniqueId: DefaultEncryptionProfileID, 20 }, 21 Name: "VM Encryption Policy", 22 Description: "Sample storage policy for VMware's VM and virtual disk encryption", 23 CreationTime: time.Now(), 24 CreatedBy: "Temporary user handle", 25 LastUpdatedTime: time.Now(), 26 LastUpdatedBy: "Temporary user handle", 27 }, 28 ProfileCategory: "REQUIREMENT", 29 ResourceType: types.PbmProfileResourceType{ 30 ResourceType: "STORAGE", 31 }, 32 Constraints: &types.PbmCapabilitySubProfileConstraints{ 33 PbmCapabilityConstraints: types.PbmCapabilityConstraints{}, 34 SubProfiles: []types.PbmCapabilitySubProfile{ 35 { 36 Name: "sp-1", 37 Capability: []types.PbmCapabilityInstance{ 38 { 39 Id: types.PbmCapabilityMetadataUniqueId{ 40 Namespace: "com.vmware.storageprofile.dataservice", 41 Id: "ad5a249d-cbc2-43af-9366-694d7664fa52", 42 }, 43 Constraint: []types.PbmCapabilityConstraintInstance{ 44 { 45 PropertyInstance: []types.PbmCapabilityPropertyInstance{ 46 { 47 Id: "ad5a249d-cbc2-43af-9366-694d7664fa52", 48 Operator: "", 49 Value: "ad5a249d-cbc2-43af-9366-694d7664fa52", 50 }, 51 }, 52 }, 53 }, 54 }, 55 }, 56 ForceProvision: vim.NewBool(false), 57 }, 58 }, 59 }, 60 GenerationId: 0, 61 IsDefault: false, 62 SystemCreatedProfileType: "", 63 LineOfService: "", 64 } 65 66 // vcenter67DefaultProfiles is a captured from vCenter 6.7's default set of PBM 67 // profiles. 68 var vcenter67DefaultProfiles = []types.BasePbmProfile{ 69 &types.PbmCapabilityProfile{ 70 PbmProfile: types.PbmProfile{ 71 ProfileId: types.PbmProfileId{ 72 UniqueId: "aa6d5a82-1c88-45da-85d3-3d74b91a5bad", 73 }, 74 Name: "vSAN Default Storage Policy", 75 Description: "Storage policy used as default for vSAN datastores", 76 CreationTime: time.Now(), 77 CreatedBy: "Temporary user handle", 78 LastUpdatedTime: time.Now(), 79 LastUpdatedBy: "Temporary user handle", 80 }, 81 ProfileCategory: "REQUIREMENT", 82 ResourceType: types.PbmProfileResourceType{ 83 ResourceType: "STORAGE", 84 }, 85 Constraints: &types.PbmCapabilitySubProfileConstraints{ 86 PbmCapabilityConstraints: types.PbmCapabilityConstraints{}, 87 SubProfiles: []types.PbmCapabilitySubProfile{ 88 { 89 Name: "VSAN sub-profile", 90 Capability: []types.PbmCapabilityInstance{ 91 { 92 Id: types.PbmCapabilityMetadataUniqueId{ 93 Namespace: "VSAN", 94 Id: "hostFailuresToTolerate", 95 }, 96 Constraint: []types.PbmCapabilityConstraintInstance{ 97 { 98 PropertyInstance: []types.PbmCapabilityPropertyInstance{ 99 { 100 Id: "hostFailuresToTolerate", 101 Operator: "", 102 Value: int32(1), 103 }, 104 }, 105 }, 106 }, 107 }, 108 { 109 Id: types.PbmCapabilityMetadataUniqueId{ 110 Namespace: "VSAN", 111 Id: "stripeWidth", 112 }, 113 Constraint: []types.PbmCapabilityConstraintInstance{ 114 { 115 PropertyInstance: []types.PbmCapabilityPropertyInstance{ 116 { 117 Id: "stripeWidth", 118 Operator: "", 119 Value: int32(1), 120 }, 121 }, 122 }, 123 }, 124 }, 125 { 126 Id: types.PbmCapabilityMetadataUniqueId{ 127 Namespace: "VSAN", 128 Id: "forceProvisioning", 129 }, 130 Constraint: []types.PbmCapabilityConstraintInstance{ 131 { 132 PropertyInstance: []types.PbmCapabilityPropertyInstance{ 133 { 134 Id: "forceProvisioning", 135 Operator: "", 136 Value: bool(false), 137 }, 138 }, 139 }, 140 }, 141 }, 142 { 143 Id: types.PbmCapabilityMetadataUniqueId{ 144 Namespace: "VSAN", 145 Id: "proportionalCapacity", 146 }, 147 Constraint: []types.PbmCapabilityConstraintInstance{ 148 { 149 PropertyInstance: []types.PbmCapabilityPropertyInstance{ 150 { 151 Id: "proportionalCapacity", 152 Operator: "", 153 Value: int32(0), 154 }, 155 }, 156 }, 157 }, 158 }, 159 { 160 Id: types.PbmCapabilityMetadataUniqueId{ 161 Namespace: "VSAN", 162 Id: "cacheReservation", 163 }, 164 Constraint: []types.PbmCapabilityConstraintInstance{ 165 { 166 PropertyInstance: []types.PbmCapabilityPropertyInstance{ 167 { 168 Id: "cacheReservation", 169 Operator: "", 170 Value: int32(0), 171 }, 172 }, 173 }, 174 }, 175 }, 176 }, 177 ForceProvision: (*bool)(nil), 178 }, 179 }, 180 }, 181 GenerationId: 0, 182 IsDefault: false, 183 SystemCreatedProfileType: "VsanDefaultProfile", 184 LineOfService: "", 185 }, 186 &types.PbmCapabilityProfile{ 187 PbmProfile: types.PbmProfile{ 188 ProfileId: types.PbmProfileId{ 189 UniqueId: "f4e5bade-15a2-4805-bf8e-52318c4ce443", 190 }, 191 Name: "VVol No Requirements Policy", 192 Description: "Allow the datastore to determine the best placement strategy for storage objects", 193 CreationTime: time.Now(), 194 CreatedBy: "Temporary user handle", 195 LastUpdatedTime: time.Now(), 196 LastUpdatedBy: "Temporary user handle", 197 }, 198 ProfileCategory: "REQUIREMENT", 199 ResourceType: types.PbmProfileResourceType{ 200 ResourceType: "STORAGE", 201 }, 202 Constraints: &types.PbmCapabilityConstraints{}, 203 GenerationId: 0, 204 IsDefault: false, 205 SystemCreatedProfileType: "VVolDefaultProfile", 206 LineOfService: "", 207 }, 208 defaultEncryptionProfile, 209 &types.PbmCapabilityProfile{ 210 PbmProfile: types.PbmProfile{ 211 ProfileId: types.PbmProfileId{ 212 UniqueId: "c268da1b-b343-49f7-a468-b1deeb7078e0", 213 }, 214 Name: "Host-local PMem Default Storage Policy", 215 Description: "Storage policy used as default for Host-local PMem datastores", 216 CreationTime: time.Now(), 217 CreatedBy: "Temporary user handle", 218 LastUpdatedTime: time.Now(), 219 LastUpdatedBy: "Temporary user handle", 220 }, 221 ProfileCategory: "REQUIREMENT", 222 ResourceType: types.PbmProfileResourceType{ 223 ResourceType: "STORAGE", 224 }, 225 Constraints: &types.PbmCapabilitySubProfileConstraints{ 226 PbmCapabilityConstraints: types.PbmCapabilityConstraints{}, 227 SubProfiles: []types.PbmCapabilitySubProfile{ 228 { 229 Name: "PMem sub-profile", 230 Capability: []types.PbmCapabilityInstance{ 231 { 232 Id: types.PbmCapabilityMetadataUniqueId{ 233 Namespace: "PMem", 234 Id: "PMemType", 235 }, 236 Constraint: []types.PbmCapabilityConstraintInstance{ 237 { 238 PropertyInstance: []types.PbmCapabilityPropertyInstance{ 239 { 240 Id: "PMemType", 241 Operator: "", 242 Value: "LocalPMem", 243 }, 244 }, 245 }, 246 }, 247 }, 248 }, 249 ForceProvision: (*bool)(nil), 250 }, 251 }, 252 }, 253 GenerationId: 0, 254 IsDefault: false, 255 SystemCreatedProfileType: "PmemDefaultProfile", 256 LineOfService: "", 257 }, 258 }