XCP-ng
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    Trouble Creating VM via API

    Scheduled Pinned Locked Moved Solved REST API
    18 Posts 3 Posters 698 Views 3 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • B Offline
      bryonadams
      last edited by

      I'm very new to doing things with APIs and running into this error. What exactly does "is an excess property and therefore is not allowed" mean as a response? Below is the body I'm sending via Bruno client. I'm sure I'm missing something simple, the docs were a bit of a struggle though.

      Endpoint is https://xo.ducknet.org/rest/v0/pools/3c6777fc-e8d8-e065-7c30-37eb2800f472/actions/create_vm/

      {
        "auto_poweron": true,
        "boot": false,
        "memory": 1073741824,
        "name_description": "test_desc",
        "name_label": "test_label",
        "template": "3ceb66f7-c137-ef4a-7a06-9af524ed5110"
      }
      

      Full response

      {
        "error": {
          "body": {
            "message": "\"auto_poweron,memory,name_description\" is an excess property and therefore is not allowed",
            "value": {
              "name_description": "test_desc",
              "memory": 1073741824,
              "auto_poweron": true
            }
          }
        }
      }
      
      1 Reply Last reply Reply Quote 0
      • olivierlambertO Offline
        olivierlambert Vates 🪐 Co-Founder CEO
        last edited by

        Question for @lsouai-vates for the XO team

        1 Reply Last reply Reply Quote 0
        • B Offline
          bryonadams
          last edited by

          It looks like if I exclude those three values it makes the VM. So maybe the better question is; if I'm taking these values from the template, am I not meant to override them? The description seems like an odd one to not be able to override if that's how it works.

          lsouai-vatesL 2 Replies Last reply Reply Quote 0
          • lsouai-vatesL Offline
            lsouai-vates Vates 🪐 Product team XO Team @bryonadams
            last edited by

            @bryonadams Hello! I'm glad you finally managed to create your VM. 🙂
            This message isn't very clear, I agree... In my opinion, it seems like you entered too many parameters for these endpoints, but I'll contact the XO team to improve this type of error message.
            I'll also ask for information about the templates.

            If you encounter any other issues with the REST API related to VM creation, please feel free to report them in this thread.

            1 Reply Last reply Reply Quote 0
            • lsouai-vatesL Offline
              lsouai-vates Vates 🪐 Product team XO Team @bryonadams
              last edited by

              @bryonadams it seems like you are not on the most recent version of Xen Orchestra. Could you update your XO?

              "excess property" errors are often wrong parameter errors.

              name_description and memory are accepted but the auto_poweron parameter is not allowed because it is misspelled... the API expects autoPoweron.

              B 2 Replies Last reply Reply Quote 0
              • B Offline
                bryonadams @lsouai-vates
                last edited by bryonadams

                @lsouai-vates
                Xen Orchestra is telling me I'm up to date, nothing available according to the UI.

                - node: 20.18.3
                - npm: 10.8.3
                - xen-orchestra-upload-ova: 0.1.6
                - xen-orchestra-web: 0.21.1
                - xo-server: 5.181.0
                - xo-server-telemetry: 0.7.0
                - xo-server-xoa: 0.31.2
                - xo-web-free: 5.178.0
                - xoa-cli: 0.40.3
                - xoa-updater: 0.50.10
                

                Also, auto_poweron is what I used because that's what the API returns as the method. That should return a key that I can functionally copy/paste into a POST. See the below GET for the actions on create_vm. The error handling is not returning helpful messages if the three keys I used are invalid for different reasons.
                e4e49186-dc3b-49a0-999f-cf6874cce904-image.png

                lsouai-vatesL 1 Reply Last reply Reply Quote 0
                • lsouai-vatesL Offline
                  lsouai-vates Vates 🪐 Product team XO Team @bryonadams
                  last edited by lsouai-vates

                  @bryonadams, have you checked the API Swagger?

                  {your URL xo}/docs/#/vms/CreateVm

                  As I said before, the three values you entered cannot be sent during VM creation. That's why you received this error message.

                  But I agree, this message is not very readable and we should improve it.We will investigate how to improve their readability in our future roadmap.

                  1 Reply Last reply Reply Quote 0
                  • B Offline
                    bryonadams @lsouai-vates
                    last edited by

                    @lsouai-vates said in Trouble Creating VM via API:

                    name_description and memory are accepted but the auto_poweron parameter is not allowed because it is misspelled... the API expects autoPoweron.

                    Sorry, I was responding to this in particular. I was taking auto_poweron straight from the API GET endpoint. Keys or values from a GET should be usable in a POST. If these values aren't accepted during creation then it's moot, though I think description should be allowed to override so that a VM can have a meaningful description.

                    @lsouai-vates said in Trouble Creating VM via API:

                    @bryonadams, have you checked the API Swagger?

                    I'm not sure how to get this, I tried via web browser and just get a "Cannot GET /docs/" message.

                    lsouai-vatesL 1 Reply Last reply Reply Quote 0
                    • olivierlambertO Offline
                      olivierlambert Vates 🪐 Co-Founder CEO
                      last edited by

                      The right URL is:
                      https://<XO URL>/rest/v0/docs/

                      B 1 Reply Last reply Reply Quote 0
                      • B Offline
                        bryonadams @olivierlambert
                        last edited by

                        @olivierlambert That worked, and is exactly what I was looking for in the API docs but overlooked. Are there plans to put this type of API explorer/documentation on the documentation website or is the expectation that we'll interact with XO directly for documentation of API endpoints?

                        1 Reply Last reply Reply Quote 0
                        • olivierlambertO Offline
                          olivierlambert Vates 🪐 Co-Founder CEO
                          last edited by

                          Swagger doc is auto generated, and yes it's planned to have a button in XO 6 to access it directly. Note we communicate often (almost each release announcement) of our swagger doc.

                          1 Reply Last reply Reply Quote 0
                          • lsouai-vatesL Offline
                            lsouai-vates Vates 🪐 Product team XO Team @bryonadams
                            last edited by

                            Keys or values from a GET should be usable in a POST.

                            @bryonadams I understand your point of view and the reasoning behind it. However, it’s not always an absolute rule that every field returned by a GET endpoint can be passed back to a POST (or PUT).

                            In this case, the API error message you received clearly indicates that these parameters are “excess properties not allowed”, meaning they cannot be used as input parameters.

                            Indeed, it also seems you’re not running the latest version of XO. Could you please check again? You should be getting the recent REST API updates:
                            https://github.com/vatesfr/xen-orchestra/pull/8798

                            We’re currently in the process of migrating from the old REST API to the new one, so for now Swagger remains the single source of truth. As @olivierlambert mentioned, we plan to provide direct access to it from XO-6, and we’ve been communicating about this in our blog posts.

                            MathieuRA opened this pull request in vatesfr/xen-orchestra

                            closed feat(@vates/types): enhance createVm type #8798

                            B 1 Reply Last reply Reply Quote 0
                            • B Offline
                              bryonadams @lsouai-vates
                              last edited by bryonadams

                              @lsouai-vates said in Trouble Creating VM via API:

                              @bryonadams I understand your point of view and the reasoning behind it. However, it’s not always an absolute rule that every field returned by a GET endpoint can be passed back to a POST (or PUT).

                              Sorry, I don't think I was clear. The keys are different for the same thing. Depending on where you look, autoPowerOn or auto_poweron is returned.

                              eg:

                              • ..rest/v0/pools/_/actions/create_vm/ returns the key "auto_poweron",
                              • /rest/v0/vms/de320b24-d768-50f4-6226-b48f64f85a55 (my example vm) returns the key "auto_poweron"
                              • Swagger doesn't seem to have this key as far as I can tell, unless I'm looking at the wrong thing. I only see a way to filter by tags.

                              @lsouai-vates said in Trouble Creating VM via API:

                              Indeed, it also seems you’re not running the latest version of XO. Could you please check again? You should be getting the recent REST API updates:

                              I don't know how I can be more up to date than up to date.

                              49b5e84e-8e5e-4df6-9083-c90d3fe7a541-image.png

                              lsouai-vatesL 1 Reply Last reply Reply Quote 0
                              • lsouai-vatesL Offline
                                lsouai-vates Vates 🪐 Product team XO Team @bryonadams
                                last edited by

                                @bryonadams Can you precise if you are using XO from source or from XOA?

                                The update action you are dispalying is for XOA, and our XOA is now on 5.109.1...

                                04c66e8b-5412-414c-9e19-8226ccb088a4-image.png

                                If you are using it from source, please follow https://docs.xen-orchestra.com/installation#updating

                                B 1 Reply Last reply Reply Quote 0
                                • B Offline
                                  bryonadams @lsouai-vates
                                  last edited by

                                  @lsouai-vates I'm using from XOA, not from source. Should I be using latest instead of stable?

                                  lsouai-vatesL 1 Reply Last reply Reply Quote 0
                                  • lsouai-vatesL Offline
                                    lsouai-vates Vates 🪐 Product team XO Team @bryonadams
                                    last edited by

                                    @bryonadams as you are on XOA, you should switch on latest to get the last udpates yes 🙂
                                    Hope it will help!

                                    B 1 Reply Last reply Reply Quote 0
                                    • B Offline
                                      bryonadams @lsouai-vates
                                      last edited by

                                      @lsouai-vates After updating I still see the inconsistency, if it helps. I'll stick to the swagger doc if that's the correct source of truth. I was only querying this way because the docs suggested it as a method.

                                      a91f6c98-1d42-4b8b-8285-8b1d216ff737-image.png
                                      dd0a1a91-04eb-4bee-9805-2150a0bc6ffb-image.png

                                      Is there a place I can submit a feature request to allow setting a description and other settings from the UI to get feature parity when creating a VM? Otherwise, there's not much point since I have to go in and touch the new VM anyway. Unless I'm going about this wrong to begin with?

                                      lsouai-vatesL 1 Reply Last reply Reply Quote 0
                                      • lsouai-vatesL Offline
                                        lsouai-vates Vates 🪐 Product team XO Team @bryonadams
                                        last edited by

                                        @bryonadams said in Trouble Creating VM via API:

                                        Is there a place I can submit a feature request to allow setting a description and other settings from the UI to get feature parity when creating a VM? Otherwise, there's not much point since I have to go in and touch the new VM anyway. Unless I'm going about this wrong to begin with?

                                        You can create a feature request on Xen Orchestra github repository (https://github.com/vatesfr/xen-orchestra/issues), and if you have subscribed to support via XOA you can send a request through Zammad.

                                        1 Reply Last reply Reply Quote 0
                                        • olivierlambertO olivierlambert marked this topic as a question
                                        • olivierlambertO olivierlambert has marked this topic as solved
                                        • First post
                                          Last post