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  }