func createCacheWarmerVmssModel()

in src/go/cmd/createvmss/main.go [210:303]


func createCacheWarmerVmssModel(
	vmssName string,
	location string,
	vmssSKU string,
	nodeCount int64,
	userName string,
	password string,
	sshKeyData string,
	publisher string,
	offer string,
	sku string,
	priority compute.VirtualMachinePriorityTypes,
	evictionPolicy compute.VirtualMachineEvictionPolicyTypes,
	subnetId string,
	customData string) compute.VirtualMachineScaleSet {
	passwordPtr := to.StringPtr(password)
	if len(sshKeyData) > 0 {
		// disable password if using ssh key
		passwordPtr = nil
	}

	var linuxConfiguration *compute.LinuxConfiguration
	if len(sshKeyData) > 0 {
		linuxConfiguration = &compute.LinuxConfiguration{
			DisablePasswordAuthentication: to.BoolPtr(true),
			SSH: &compute.SSHConfiguration{
				PublicKeys: &[]compute.SSHPublicKey{
					{
						Path:    to.StringPtr(fmt.Sprintf("/home/%s/.ssh/authorized_keys", userName)),
						KeyData: to.StringPtr(sshKeyData),
					},
				},
			},
		}
	}

	// create the vmss model
	return compute.VirtualMachineScaleSet{
		Name:     to.StringPtr(vmssName),
		Location: to.StringPtr(location),
		Sku: &compute.Sku{
			Name:     to.StringPtr(vmssSKU),
			Capacity: to.Int64Ptr(nodeCount),
		},
		VirtualMachineScaleSetProperties: &compute.VirtualMachineScaleSetProperties{
			Overprovision: to.BoolPtr(false),
			UpgradePolicy: &compute.UpgradePolicy{
				Mode: compute.UpgradeModeManual,
			},
			SinglePlacementGroup: to.BoolPtr(false),
			VirtualMachineProfile: &compute.VirtualMachineScaleSetVMProfile{
				Priority:       priority,
				EvictionPolicy: evictionPolicy,
				OsProfile: &compute.VirtualMachineScaleSetOSProfile{
					ComputerNamePrefix: to.StringPtr(vmssName),
					AdminUsername:      to.StringPtr(userName),
					AdminPassword:      passwordPtr,
					CustomData:         to.StringPtr(base64.StdEncoding.EncodeToString([]byte(customData))),
					LinuxConfiguration: linuxConfiguration,
				},
				StorageProfile: &compute.VirtualMachineScaleSetStorageProfile{
					ImageReference: &compute.ImageReference{
						Offer:     to.StringPtr(offer),
						Publisher: to.StringPtr(publisher),
						Sku:       to.StringPtr(sku),
						Version:   to.StringPtr("latest"),
					},
				},
				NetworkProfile: &compute.VirtualMachineScaleSetNetworkProfile{
					NetworkInterfaceConfigurations: &[]compute.VirtualMachineScaleSetNetworkConfiguration{
						{
							Name: to.StringPtr(vmssName),
							VirtualMachineScaleSetNetworkConfigurationProperties: &compute.VirtualMachineScaleSetNetworkConfigurationProperties{
								Primary: to.BoolPtr(true),
								//EnableAcceleratedNetworking: to.BoolPtr(true),
								//EnableIPForwarding:          to.BoolPtr(false),
								IPConfigurations: &[]compute.VirtualMachineScaleSetIPConfiguration{
									{
										Name: to.StringPtr("internal"),
										VirtualMachineScaleSetIPConfigurationProperties: &compute.VirtualMachineScaleSetIPConfigurationProperties{
											Subnet: &compute.APIEntityReference{
												ID: to.StringPtr(subnetId),
											},
										},
									},
								},
							},
						},
					},
				},
			},
		},
	}
}