@@ -28,6 +28,7 @@ const (
2828 machineTypeFlag = "machine-type"
2929 affinityGroupFlag = "affinity-group"
3030 availabilityZoneFlag = "availability-zone"
31+ agentProvisioningPolicyFlag = "agent-provisioning-policy"
3132 bootVolumeSourceIdFlag = "boot-volume-source-id"
3233 bootVolumeSourceTypeFlag = "boot-volume-source-type"
3334 bootVolumeSizeFlag = "boot-volume-size"
@@ -50,6 +51,7 @@ type inputModel struct {
5051 MachineType * string
5152 AffinityGroup * string
5253 AvailabilityZone * string
54+ AgentProvisioningPolicy * string
5355 BootVolumeSourceId * string
5456 BootVolumeSourceType * string
5557 BootVolumeSize * int64
@@ -109,6 +111,10 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
109111 `Create a server with user data (cloud-init)` ,
110112 `$ stackit server create --machine-type t1.1 --name server1 --boot-volume-source-id xxx --boot-volume-source-type image --boot-volume-size 64 --user-data @path/to/file.yaml` ,
111113 ),
114+ examples .NewExample (
115+ `Create a server with provisioned agent` ,
116+ `$ stackit server create --machine-type t1.1 --name server1 --boot-volume-source-id xxx --boot-volume-source-type image --boot-volume-size 64 --network-id yyy --agent-provisioning-policy ALWAYS` ,
117+ ),
112118 ),
113119 RunE : func (cmd * cobra.Command , args []string ) error {
114120 ctx := context .Background ()
@@ -162,6 +168,8 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
162168}
163169
164170func configureFlags (cmd * cobra.Command ) {
171+ agentProvisioningPolicyOptions := []string {"ALWAYS" , "NEVER" , "INHERIT" }
172+ cmd .Flags ().Var (flags .EnumFlag (false , "INHERIT" , agentProvisioningPolicyOptions ... ), agentProvisioningPolicyFlag , fmt .Sprintf ("Whether to provision an agent on server creation, one of %q" , agentProvisioningPolicyOptions ))
165173 cmd .Flags ().StringP (nameFlag , "n" , "" , "Server name" )
166174 cmd .Flags ().String (machineTypeFlag , "" , "Name of the type of the machine for the server. Possible values are documented in https://docs.stackit.cloud/products/compute-engine/server/basics/machine-types/" )
167175 cmd .Flags ().String (affinityGroupFlag , "" , "The affinity group the server is assigned to" )
@@ -250,6 +258,7 @@ func parseInput(p *print.Printer, cmd *cobra.Command, _ []string) (*inputModel,
250258 MachineType : flags .FlagToStringPointer (p , cmd , machineTypeFlag ),
251259 AffinityGroup : flags .FlagToStringPointer (p , cmd , affinityGroupFlag ),
252260 AvailabilityZone : flags .FlagToStringPointer (p , cmd , availabilityZoneFlag ),
261+ AgentProvisioningPolicy : flags .FlagToStringPointer (p , cmd , agentProvisioningPolicyFlag ),
253262 BootVolumeSourceId : flags .FlagToStringPointer (p , cmd , bootVolumeSourceIdFlag ),
254263 BootVolumeSourceType : flags .FlagToStringPointer (p , cmd , bootVolumeSourceTypeFlag ),
255264 BootVolumeSize : flags .FlagToInt64Pointer (p , cmd , bootVolumeSizeFlag ),
@@ -293,6 +302,15 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli
293302 Labels : utils .ConvertStringMapToInterfaceMap (model .Labels ),
294303 }
295304
305+ if model .AgentProvisioningPolicy != nil {
306+ switch * model .AgentProvisioningPolicy {
307+ case "ALWAYS" :
308+ payload .Agent = & iaas.ServerAgent {Provisioned : utils .Ptr (true )}
309+ case "NEVER" :
310+ payload .Agent = & iaas.ServerAgent {Provisioned : utils .Ptr (false )}
311+ }
312+ }
313+
296314 if model .BootVolumePerformanceClass != nil || model .BootVolumeSize != nil || model .BootVolumeDeleteOnTermination != nil || model .BootVolumeSourceId != nil || model .BootVolumeSourceType != nil {
297315 payload .BootVolume = & iaas.ServerBootVolume {
298316 PerformanceClass : model .BootVolumePerformanceClass ,
0 commit comments