Uploaded image for project: 'Libcloud'
  1. Libcloud
  2. LIBCLOUD-41

Linode driver throws exception if "location" keyword argument not supplied even though comments indicate otherwise

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 0.3.0
    • Fix Version/s: 0.3.0
    • Component/s: Core
    • Labels:
      None
    • Environment:

      Any

      Description

      Linode driver throws exception if "location" keyword argument not supplied to node_create() even though comments indicate otherwise. All of the other keyword arguments are also not defaulted which does not match the base.py create_node documentation.

      The comments in drivers/linode.py say:

      1. As Linode requires choosing a datacenter, a little logic is done.

      and then go onto describe a process for automatically choosing a datacenter and/or calling linode_set_datacenter.

      Unfortunately, the "location" keyword still has to be passed in or the function fails since line 239 directly references the parameter (and all the others as well) without the traditional default handling for non-required keyword arguments.

      Presumably, the default should be properly handled by coding the "little logic" in place of the comments about it...

      Alternatively, handling the linode_set_datacenter setting of self.datacenter could be used to provide a sensible default.

        Activity

        Hide
        jsmith Jed Smith added a comment -

        You are correct - the comment I left there was the intention when I wrote it, and it didn't work out that way. That the comment structure got left in is an oversight, and thank you for pointing it out.

        Resolved in r958637. I will mark it as such when I have JIRA access to do so, unless someone wants to do me a favor.

        Show
        jsmith Jed Smith added a comment - You are correct - the comment I left there was the intention when I wrote it, and it didn't work out that way. That the comment structure got left in is an oversight, and thank you for pointing it out. Resolved in r958637. I will mark it as such when I have JIRA access to do so, unless someone wants to do me a favor.
        Hide
        ssteinerx Steve Steiner added a comment -

        In my opinion, having required "extra" parameters without sensible defaults kind of defeats the purpose of libcloud.

        The intention expressed in the original code would have sensibly defaulted this and someone who needed finer grained control could have passed the parameter as needed, when needed.

        S

        Show
        ssteinerx Steve Steiner added a comment - In my opinion, having required "extra" parameters without sensible defaults kind of defeats the purpose of libcloud. The intention expressed in the original code would have sensibly defaulted this and someone who needed finer grained control could have passed the parameter as needed, when needed. S
        Hide
        jsmith Jed Smith added a comment -

        Did you look at the revision? linode_set_datacenter is obeyed now, which was your alternative, acceptable solution. I apologize for (apparently) implying that I only removed the comments.

        Thanks

        JS

        Show
        jsmith Jed Smith added a comment - Did you look at the revision? linode_set_datacenter is obeyed now, which was your alternative, acceptable solution. I apologize for (apparently) implying that I only removed the comments. Thanks JS
        Hide
        jerry@apache.org Jerry Chen added a comment -

        Resolved by Jed

        Show
        jerry@apache.org Jerry Chen added a comment - Resolved by Jed
        Hide
        ssteinerx Steve Steiner added a comment -

        Originally I didn't know that a location was required, so I was just happy at finding the parameter, then figuring out what to put in it.

        Thanks for the tip, though, I'll go look at linode_set_datacenter; I saw the comments in there about that, but wasn't sure whether that solution had been implemented either at that point.

        S

        Show
        ssteinerx Steve Steiner added a comment - Originally I didn't know that a location was required, so I was just happy at finding the parameter, then figuring out what to put in it. Thanks for the tip, though, I'll go look at linode_set_datacenter; I saw the comments in there about that, but wasn't sure whether that solution had been implemented either at that point. S

          People

          • Assignee:
            Unassigned
            Reporter:
            ssteinerx Steve Steiner
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development