Details

    • Type: New Feature New Feature
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 0.5.0
    • Component/s: Compute, Core
    • Labels:

      Description

      I have created a driver to work with the Opsource Cloud API 0.9.3.

      All of the core libcloud functions are implemented. list_sizes() is the only strange one, because Opsource does not have the concept of picking sizes at creation time, so list_sizes() will always return one size. Instead, sizes are part of the images. Images can be resized after they are created. Pre-defined Opsource images ("base images" in opsource terms) are supported but "customer images" (snapshots) are not yet supported.

      Some additional Opsource specific functions (eg: ex_list_networks()) have been included, but there are many more in the 0.9.3 api spec that have not been implemented yet, but I hope to in the future.

      I merged in quite a lot of changes from trunk since I started working on this driver, but the tests all seem to pass. I have not implemented any pricing functions yet.

      Feedback appreciated.

      code is on github, in 'opsource-driver' branch: https://github.com/joemiller/libcloud

      1. libcloud-opsource.patch
        77 kB
        joe miller
      2. libcloud-opsource.patch
        76 kB
        joe miller

        Activity

        Hide
        Tomaz Muraus added a comment -

        Great!

        Here are some of my comments:

        • similar version of "fixxpath" function is used in the Amazon driver. I think we should create a generic function which can be used with both drivers and put it into libcloud.utils or maybe libcloud.utils should be package and we should have a libcloud.utils.xml module
        • ex_network argument in create_new apparently must be an instance of OpsourceNetwork, but you don't check this anywhere. You should add an isinstance check and throw a ValueError if ex_network value is not an instance of OpsourceNetwork
        • ex_isStarted kwarg in create_node is apparently required and the default value is "True", but I don't see you set this value anywhere so the function will thrown an exception is user doesn't pass in this argument.

        You should probably use ex_isStarted = kwargs.get('ex_isStarted', True)

        Show
        Tomaz Muraus added a comment - Great! Here are some of my comments: similar version of "fixxpath" function is used in the Amazon driver. I think we should create a generic function which can be used with both drivers and put it into libcloud.utils or maybe libcloud.utils should be package and we should have a libcloud.utils.xml module ex_network argument in create_new apparently must be an instance of OpsourceNetwork, but you don't check this anywhere. You should add an isinstance check and throw a ValueError if ex_network value is not an instance of OpsourceNetwork ex_isStarted kwarg in create_node is apparently required and the default value is "True", but I don't see you set this value anywhere so the function will thrown an exception is user doesn't pass in this argument. You should probably use ex_isStarted = kwargs.get('ex_isStarted', True)
        Hide
        joe miller added a comment -

        updated my github fork with the suggestions above and attached a new patch as well. thank you

        Show
        joe miller added a comment - updated my github fork with the suggestions above and attached a new patch as well. thank you
        Hide
        Tomaz Muraus added a comment -

        OpSource driver is now in trunk.

        Thanks.

        Show
        Tomaz Muraus added a comment - OpSource driver is now in trunk. Thanks.

          People

          • Assignee:
            Unassigned
            Reporter:
            joe miller
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development