<div dir="ltr"><div><div><div>Hi all,<br><br></div>I've been meaning to reply to this thread. Volodymyr, your reply reminded me :)<br><br></div>I agree with what you said that the SDK should support everything that the API supports. In that way, one could simply review the API reference docs and create a checklist for each possible action. I've often thought about doing this for Gophercloud so devs/users can see its current state of what's supported and what's missing.</div><div><br></div><div>But Melvin highlighted the word "guaranteed", so I think he's looking for the most common scenarios/actions rather than an exhaustive list. For that, I can recommend the suite of Terraform acceptance tests. I've added a test each time a user has either reported a bug or requested a feature, so they're scenarios that I know are being used "in the wild".</div><div><br></div><div>You can find these tests here: <a href="https://github.com/terraform-providers/terraform-provider-openstack/tree/master/openstack">https://github.com/terraform-providers/terraform-provider-openstack/tree/master/openstack</a></div><div><br></div><div>Each file that begins with "resource" and ends in "_test.go" will contain various scenarios at the bottom. For example, compute instances: <a href="https://github.com/terraform-providers/terraform-provider-openstack/blob/master/openstack/resource_openstack_compute_instance_v2_test.go#L637-L1134">https://github.com/terraform-providers/terraform-provider-openstack/blob/master/openstack/resource_openstack_compute_instance_v2_test.go#L637-L1134</a></div><div><br></div><div>This contains tests for:</div><div><br></div><div>* Basic launch of an instance</div><div>* Able to add and remove security groups from an existing instance</div><div>* Able to boot from a new volume or an existing volume</div><div>* Able to edit metadata of an instance.<br></div><div>* Able to create an instance with multiple ephemeral disks</div><div>* Able to create an instance with multiple NICs, some of which are on the same network, some of which are defined as ports.</div><div><br></div><div></div><div>Terraform is not an SDK, but it's a direct consumer of Gophercloud and is more user-facing, so I think it's quite applicable here. The caveat being that if Terraform or Gophercloud does not support something, it's not available as a test. :)<br></div><div><br></div><div>Melvin, if this is of interest, I can either post a raw list of these tests/scenarios here or edit the sheet directly.<br></div><div><br></div><div>Thanks,</div><div>Joe<br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Dec 15, 2017 at 12:43 AM, Volodymyr Litovka <span dir="ltr"><<a href="mailto:doka.ua@gmx.com" target="_blank">doka.ua@gmx.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div text="#000000" bgcolor="#FFFFFF">
    Hi Melvin,<br>
    <br>
    isn't SDK the same as Openstack REST API? In my opinion (can be
    erroneous, though), SDK should just support everything that API
    supports, providing some basic checks of parameters (e.g. verify
    compliancy of passed parameter to IP address format, etc) before
    calling API (in order to decrease load of Openstack by eliminating
    obviously broken requests).<br>
    <br>
    Thanks.<div><div class="h5"><br>
    <br>
    <div class="m_-1047128308762711313moz-cite-prefix">On 12/11/17 8:35 AM, Melvin Hillsman
      wrote:<br>
    </div>
    </div></div><blockquote type="cite"><div><div class="h5">
      <div dir="ltr">
        <div>
          <div>
            <div>Hey everyone,<br>
              <br>
            </div>
            On the path to potentially certifying SDKs we would like to
            gather a list of scenarios folks would like to see
            "guaranteed" by an SDK.<br>
            <br>
          </div>
          Some examples - boot instance from image, boot instance from
          volume, attach volume to instance, reboot instance; very much
          like InterOp works to ensure OpenStack clouds provide specific
          functionality.</div>
        <div><br>
        </div>
        <div>Here is a document we can share to do this - <a href="https://docs.google.com/spreadsheets/d/1cdzFeV5I4Wk9FK57yqQmp5JJdGfKzEOdB3Vtt9vnVJM/edit#gid=0" target="_blank">https://docs.google.com/<wbr>spreadsheets/d/<wbr>1cdzFeV5I4Wk9FK57yqQmp5JJdGfKz<wbr>EOdB3Vtt9vnVJM/edit#gid=0</a><br>
        </div>
        <div><br>
          <div>
            <div>
              <div>
                <div>
                  <div>-- <br>
                    <div class="m_-1047128308762711313gmail_signature">
                      <div dir="ltr">
                        <div>
                          <div dir="ltr">
                            <div dir="ltr">
                              <div dir="ltr">
                                <div style="font-size:small">
                                  <div dir="ltr">
                                    <div dir="ltr">Kind regards,<br>
                                      <br>
                                      Melvin Hillsman</div>
                                    <div dir="ltr"><a href="mailto:mrhillsman@gmail.com" style="color:rgb(17,85,204)" target="_blank">mrhillsman@gmail.com</a><br>
                                      mobile: <a href="tel:(832)%20264-2646" value="+18322642646" target="_blank">(832) 264-2646</a><br>
                                    </div>
                                  </div>
                                </div>
                              </div>
                            </div>
                          </div>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <br>
      <fieldset class="m_-1047128308762711313mimeAttachmentHeader"></fieldset>
      <br>
      </div></div><pre>______________________________<wbr>_________________
Mailing list: <a class="m_-1047128308762711313moz-txt-link-freetext" href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack" target="_blank">http://lists.openstack.org/<wbr>cgi-bin/mailman/listinfo/<wbr>openstack</a>
Post to     : <a class="m_-1047128308762711313moz-txt-link-abbreviated" href="mailto:openstack@lists.openstack.org" target="_blank">openstack@lists.openstack.org</a>
Unsubscribe : <a class="m_-1047128308762711313moz-txt-link-freetext" href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack" target="_blank">http://lists.openstack.org/<wbr>cgi-bin/mailman/listinfo/<wbr>openstack</a><span class="HOEnZb"><font color="#888888">
</font></span></pre><span class="HOEnZb"><font color="#888888">
    </font></span></blockquote><span class="HOEnZb"><font color="#888888">
    <br>
    <pre class="m_-1047128308762711313moz-signature" cols="72">-- 
Volodymyr Litovka
  "Vision without Execution is Hallucination." -- Thomas Edison</pre>
  </font></span></div>

<br>______________________________<wbr>_________________<br>
OpenStack-operators mailing list<br>
<a href="mailto:OpenStack-operators@lists.openstack.org">OpenStack-operators@lists.<wbr>openstack.org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-operators" rel="noreferrer" target="_blank">http://lists.openstack.org/<wbr>cgi-bin/mailman/listinfo/<wbr>openstack-operators</a><br>
<br></blockquote></div><br></div>