scaleway/scaleway-sdk-go

create server from snapshot

Opened this issue · 2 comments

Hello folks, I'm trying to create a server from an existing snapshot with:

res, err := a.instance.CreateServer(&instance.CreateServerRequest{
	Name:  "my-name",
	Volumes: map[string]*instance.VolumeServerTemplate{
		"0": {
			BaseSnapshot: "my-snapshot-uuid",
			VolumeType: instance.VolumeVolumeTypeLSSD,
		},
	},
	...
})

It fails with:

scaleway-sdk-go: invalid argument(s): image does not respect constraint, required key not provided; volumes.0.base_snapshot does not respect constraint, extra keys not allowed; volumes.0.id does not respect constraint, required key not provided; volumes.0.volume_type does not respect constraint, not a valid value

I have two questions:

  1. It seems that the Image field is required but I don't use an image since I'm using a snapshot to boot the instance so I'm not sure what to do with this.
  2. In the Volumes is there an expected key format ? I use 0 to match what I've seen in the API calls when creating an instance from a snapshot on the web console.

Thanks for any guidance :D

Hi,
A Volume name is missing for the request to work, I understand that the error message is misleading, validation is subject to improvements.

You can find details about this behavior in our API doc.
For the use case "Create a volume from a snapshot", you need to specify those fields in your volume:

  • base_snapshot
  • name
  • volume_type

Ah yes perfect - providing a volume name did the trick. Out of curiosity, why do we need to provide the volume name and its ID? I would expect the ID to be enough or I miss something?