chef-provisioning-fog 0.17.0 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/Gemfile +1 -0
 - data/README.md +90 -52
 - data/Rakefile +2 -1
 - data/lib/chef/provisioning/fog_driver/driver.rb +14 -13
 - data/lib/chef/provisioning/fog_driver/providers/digitalocean.rb +7 -0
 - data/lib/chef/provisioning/fog_driver/providers/google.rb +7 -0
 - data/lib/chef/provisioning/fog_driver/providers/openstack.rb +7 -0
 - data/lib/chef/provisioning/fog_driver/providers/rackspace.rb +8 -0
 - data/lib/chef/provisioning/fog_driver/providers/softlayer.rb +7 -1
 - data/lib/chef/provisioning/fog_driver/version.rb +1 -1
 - data/spec/spec_helper.rb +8 -0
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 7a903c7684ebc84d52a05fb774779952b1769d46
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 22c0d531e5664e6806e34b8401013afd77855125
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 838ce6611ff9ee741f622345a60f8d00244612b11a23d4912e23d432948cc9d11f9ba698fe672a1bee74e2e1830bab9695a6ceafb1234a9e0e0a854def4c5d5b
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 31bbeddadc8045701cfb9e8d45873a99ab033bfe4a8592442a7db1b3fc728c6d09743648640de406da095ed5c2603e8a09496287ead31653e7166b67227f89ff
         
     | 
    
        data/Gemfile
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | 
         @@ -4,7 +4,7 @@ 
     | 
|
| 
       4 
4 
     | 
    
         
             
            [][travis]
         
     | 
| 
       5 
5 
     | 
    
         
             
            [][gemnasium]
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
            This is the Fog driver for Chef Provisioning.  It provides Amazon EC2,  
     | 
| 
      
 7 
     | 
    
         
            +
            This is the Fog driver for Chef Provisioning.  It provides Amazon EC2, DigitalOcean, Google Compute Engine, IBM Softlayer, Joyent, OpenStack, Rackspace, vCloud Air and XenServer functionality.
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
            ## Documentation
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
         @@ -21,48 +21,43 @@ These are the primary documents to help learn about using Provisioning and creat 
     | 
|
| 
       21 
21 
     | 
    
         | 
| 
       22 
22 
     | 
    
         
             
            **A note about key pairs** - The key name used in `fog_key_pair` must be the same as the filename of the local key to be used. If the key does not exist in one of `private_key_paths` (which you can set in `knife.rb` or in a `client.rb`) it will be created.
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
     | 
    
         
            -
            ###  
     | 
| 
      
 24 
     | 
    
         
            +
            ### Amazon EC2
         
     | 
| 
       25 
25 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
      
 26 
     | 
    
         
            +
            You'll need to update your `knife.rb` to work:
         
     | 
| 
       27 
27 
     | 
    
         | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
      
 28 
     | 
    
         
            +
            You need one of the following for the driver:
         
     | 
| 
      
 29 
     | 
    
         
            +
            ```
         
     | 
| 
      
 30 
     | 
    
         
            +
            fog:AWS:<account_id>:<region>
         
     | 
| 
      
 31 
     | 
    
         
            +
            fog:AWS:<profile_name>
         
     | 
| 
      
 32 
     | 
    
         
            +
            fog:AWS:<profile_name>:<region>
         
     | 
| 
       31 
33 
     | 
    
         
             
            ```
         
     | 
| 
       32 
34 
     | 
    
         | 
| 
       33 
     | 
    
         
            -
            For  
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
            ### OpenStack
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
            You'll need to update your `knife.rb` to work:
         
     | 
| 
      
 35 
     | 
    
         
            +
            For example:
         
     | 
| 
       38 
36 
     | 
    
         | 
| 
       39 
37 
     | 
    
         
             
            ```ruby
         
     | 
| 
       40 
     | 
    
         
            -
            driver 'fog: 
     | 
| 
      
 38 
     | 
    
         
            +
            driver 'fog:AWS:<account_id>:<region>'
         
     | 
| 
       41 
39 
     | 
    
         
             
            driver_options :compute_options => {
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
                                                 :openstack_tenant   => 'YOUR-TENANT-ID-NAME'
         
     | 
| 
      
 40 
     | 
    
         
            +
                                                :aws_access_key_id => 'YOUR-ACCESS-KEY-ID',
         
     | 
| 
      
 41 
     | 
    
         
            +
                                                :aws_secret_access_key => 'YOUR-SECRET-ACCESS-KEY',
         
     | 
| 
      
 42 
     | 
    
         
            +
                                                :region => 'THE-REGION-YOU-WANT-TO-PROVISION-IN'
         
     | 
| 
       46 
43 
     | 
    
         
             
                                                }
         
     | 
| 
       47 
44 
     | 
    
         
             
            ```
         
     | 
| 
       48 
45 
     | 
    
         | 
| 
       49 
     | 
    
         
            -
            For a full example see [examples/ 
     | 
| 
      
 46 
     | 
    
         
            +
            For a full example see [examples/aws/simple.rb](examples/aws/simple.rb).
         
     | 
| 
       50 
47 
     | 
    
         | 
| 
       51 
     | 
    
         
            -
            ### Rackspace
         
     | 
| 
       52 
48 
     | 
    
         | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
      
 49 
     | 
    
         
            +
            ### DigitalOcean
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
            Update your `knife.rb` to contain your DigitalOcean API token and the driver:
         
     | 
| 
       54 
52 
     | 
    
         | 
| 
       55 
     | 
    
         
            -
            You must configure some credentials and region in a `knife.rb` file like so:
         
     | 
| 
       56 
53 
     | 
    
         
             
            ```ruby
         
     | 
| 
       57 
     | 
    
         
            -
            driver 'fog: 
     | 
| 
       58 
     | 
    
         
            -
            driver_options : 
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
                                                 :rackspace_region => 'dfw' # could be 'org', 'iad', 'hkg', etc
         
     | 
| 
       62 
     | 
    
         
            -
                                                }
         
     | 
| 
      
 54 
     | 
    
         
            +
            driver 'fog:DigitalOcean'
         
     | 
| 
      
 55 
     | 
    
         
            +
            driver_options compute_options: {
         
     | 
| 
      
 56 
     | 
    
         
            +
                                              digitalocean_token: 'token'
         
     | 
| 
      
 57 
     | 
    
         
            +
                                            }
         
     | 
| 
       63 
58 
     | 
    
         
             
            ```
         
     | 
| 
       64 
59 
     | 
    
         | 
| 
       65 
     | 
    
         
            -
            For a full example see [examples/ 
     | 
| 
      
 60 
     | 
    
         
            +
            For a full example see [examples/digitalocean/simple.rb](examples/digitalocean/simple.rb).
         
     | 
| 
       66 
61 
     | 
    
         | 
| 
       67 
62 
     | 
    
         
             
            ### Google Compute Engine
         
     | 
| 
       68 
63 
     | 
    
         | 
| 
         @@ -70,7 +65,8 @@ You'll need to update your `knife.rb` to work: 
     | 
|
| 
       70 
65 
     | 
    
         | 
| 
       71 
66 
     | 
    
         
             
            ```ruby
         
     | 
| 
       72 
67 
     | 
    
         
             
            driver 'fog:Google'
         
     | 
| 
       73 
     | 
    
         
            -
            driver_options :compute_options => { 
     | 
| 
      
 68 
     | 
    
         
            +
            driver_options :compute_options => {
         
     | 
| 
      
 69 
     | 
    
         
            +
                                                 :provider => 'google',
         
     | 
| 
       74 
70 
     | 
    
         
             
                                                 :google_project => 'YOUR-PROJECT-ID', # the name will work here
         
     | 
| 
       75 
71 
     | 
    
         
             
                                                 :google_client_email => 'YOUR-SERVICE-ACCOUNT-EMAIL',
         
     | 
| 
       76 
72 
     | 
    
         
             
                                                 :google_key_location => 'YOUR-SERVICE-P12-KEY-FILE-FULL-PATH.p12'
         
     | 
| 
         @@ -89,13 +85,44 @@ For a full simple example see [examples/google/simple.rb](examples/google/simple 
     | 
|
| 
       89 
85 
     | 
    
         
             
            For an example that shows a different `:disk_type` see
         
     | 
| 
       90 
86 
     | 
    
         
             
            [examples/google/simple_different_disk.rb](examples/google/simple_different_disk.rb).
         
     | 
| 
       91 
87 
     | 
    
         | 
| 
       92 
     | 
    
         
            -
            ### 
     | 
| 
      
 88 
     | 
    
         
            +
            ### IBM SoftLayer
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
            You'll need to update your `knife.rb` to work with this also:
         
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
      
 92 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 93 
     | 
    
         
            +
            driver 'fog:SoftLayer'
         
     | 
| 
      
 94 
     | 
    
         
            +
            driver_options :compute_options => {
         
     | 
| 
      
 95 
     | 
    
         
            +
                                                 :provider => 'softlayer',
         
     | 
| 
      
 96 
     | 
    
         
            +
                                                 :softlayer_username => 'username',
         
     | 
| 
      
 97 
     | 
    
         
            +
                                                 :softlayer_api_key => 'api_key',
         
     | 
| 
      
 98 
     | 
    
         
            +
                                                 :softlayer_default_domain => 'example.com',
         
     | 
| 
      
 99 
     | 
    
         
            +
                                               }
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
            ```
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
      
 103 
     | 
    
         
            +
            Once you or your administrator has created a SoftLayer account you can manage
         
     | 
| 
      
 104 
     | 
    
         
            +
            your API key at https://control.softlayer.com/account/users
         
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
      
 106 
     | 
    
         
            +
            `:bootstrap_options => {:key_name => 'label'}` is looked up by_label; make sure
         
     | 
| 
      
 107 
     | 
    
         
            +
            you have a public key created on control portal at
         
     | 
| 
      
 108 
     | 
    
         
            +
            https://control.softlayer.com/devices/sshkeys with a matching label.
         
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
| 
      
 110 
     | 
    
         
            +
            NOTE: the SoftLayer driver injects a custom post provisioning script that
         
     | 
| 
      
 111 
     | 
    
         
            +
            ensures some packages needed by chef-provisioning-fog to install chef are
         
     | 
| 
      
 112 
     | 
    
         
            +
            present (e.g. sudo). The injected script will call your :postInstallScriptUri
         
     | 
| 
      
 113 
     | 
    
         
            +
            if you define one. The driver will wait until the injected script is done. The
         
     | 
| 
      
 114 
     | 
    
         
            +
            driver and script communicate using userMetadata so you cannot use metadata.
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
      
 116 
     | 
    
         
            +
            For a full example see [examples/softlayer/simple.rb](examples/softlayer/simple.rb).
         
     | 
| 
      
 117 
     | 
    
         
            +
             
     | 
| 
      
 118 
     | 
    
         
            +
            ### Joyent
         
     | 
| 
       93 
119 
     | 
    
         | 
| 
       94 
120 
     | 
    
         
             
            You'll need to update your `knife.rb` to work:
         
     | 
| 
       95 
121 
     | 
    
         | 
| 
       96 
122 
     | 
    
         
             
            ```ruby
         
     | 
| 
       97 
123 
     | 
    
         
             
            driver 'fog:Joyent'
         
     | 
| 
       98 
     | 
    
         
            -
            driver_options :compute_options => { 
     | 
| 
      
 124 
     | 
    
         
            +
            driver_options :compute_options => {
         
     | 
| 
      
 125 
     | 
    
         
            +
                                                 :joyent_username => 'YOUR-JOYENT-LOGIN',
         
     | 
| 
       99 
126 
     | 
    
         
             
                                                 :joyent_password => 'YOUR-JOYENT-PASSWORD',
         
     | 
| 
       100 
127 
     | 
    
         
             
                                                 :joyent_keyname => 'THE-SSH-KEY-YOUVE-UPLOADED',
         
     | 
| 
       101 
128 
     | 
    
         
             
                                                 :joyent_version => '7.3.0', # if you are using the joyent public cloud
         
     | 
| 
         @@ -111,34 +138,47 @@ For a more in-depth usage of this driver to use with either Private or Public Jo 
     | 
|
| 
       111 
138 
     | 
    
         | 
| 
       112 
139 
     | 
    
         
             
            For a infrastructure container example see [examples/joyent/infrastructure.rb](examples/joyent/infrastructure.rb).
         
     | 
| 
       113 
140 
     | 
    
         | 
| 
       114 
     | 
    
         
            -
            ### IBM SoftLayer
         
     | 
| 
       115 
141 
     | 
    
         | 
| 
       116 
     | 
    
         
            -
             
     | 
| 
      
 142 
     | 
    
         
            +
            ### OpenStack
         
     | 
| 
      
 143 
     | 
    
         
            +
             
     | 
| 
      
 144 
     | 
    
         
            +
            You'll need to update your `knife.rb` to work:
         
     | 
| 
       117 
145 
     | 
    
         | 
| 
       118 
146 
     | 
    
         
             
            ```ruby
         
     | 
| 
       119 
     | 
    
         
            -
            driver 'fog: 
     | 
| 
       120 
     | 
    
         
            -
            driver_options :compute_options => { 
     | 
| 
       121 
     | 
    
         
            -
                                                 : 
     | 
| 
       122 
     | 
    
         
            -
                                                 : 
     | 
| 
       123 
     | 
    
         
            -
                                                 : 
     | 
| 
       124 
     | 
    
         
            -
             
     | 
| 
      
 147 
     | 
    
         
            +
            driver 'fog:OpenStack'
         
     | 
| 
      
 148 
     | 
    
         
            +
            driver_options :compute_options => {
         
     | 
| 
      
 149 
     | 
    
         
            +
                                                 :openstack_auth_url => 'http://YOUROPENSTACK-CLOUD:5000/v2.0/tokens',
         
     | 
| 
      
 150 
     | 
    
         
            +
                                                 :openstack_username => 'YOUR-USERNAME',
         
     | 
| 
      
 151 
     | 
    
         
            +
                                                 :openstack_api_key  => 'YOUR-PASSWORD',
         
     | 
| 
      
 152 
     | 
    
         
            +
                                                 :openstack_tenant   => 'YOUR-TENANT-ID-NAME'
         
     | 
| 
      
 153 
     | 
    
         
            +
                                                }
         
     | 
| 
      
 154 
     | 
    
         
            +
            ```
         
     | 
| 
      
 155 
     | 
    
         
            +
             
     | 
| 
      
 156 
     | 
    
         
            +
            For a full example see [examples/openstack/simple.rb](examples/openstack/simple.rb).
         
     | 
| 
      
 157 
     | 
    
         
            +
             
     | 
| 
      
 158 
     | 
    
         
            +
            ### Rackspace
         
     | 
| 
       125 
159 
     | 
    
         | 
| 
      
 160 
     | 
    
         
            +
            For this example, you must configure `knife.rb` with your credentials and a region to operate on. This example is [also available as a Github repo](https://github.com/martinb3/chef-provisioning-rackspace-example).
         
     | 
| 
      
 161 
     | 
    
         
            +
             
     | 
| 
      
 162 
     | 
    
         
            +
            You must configure some credentials and region in a `knife.rb` file like so:
         
     | 
| 
      
 163 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 164 
     | 
    
         
            +
            driver 'fog:Rackspace'
         
     | 
| 
      
 165 
     | 
    
         
            +
            driver_options :compute_options => {
         
     | 
| 
      
 166 
     | 
    
         
            +
                                                 :rackspace_username => 'MY-RACKSPACE-USERr',
         
     | 
| 
      
 167 
     | 
    
         
            +
                                                 :rackspace_api_key  => 'API-KEY-FOR-USER',
         
     | 
| 
      
 168 
     | 
    
         
            +
                                                 :rackspace_region => 'dfw' # could be 'org', 'iad', 'hkg', etc
         
     | 
| 
      
 169 
     | 
    
         
            +
                                                }
         
     | 
| 
       126 
170 
     | 
    
         
             
            ```
         
     | 
| 
       127 
171 
     | 
    
         | 
| 
       128 
     | 
    
         
            -
             
     | 
| 
       129 
     | 
    
         
            -
            your API key at https://control.softlayer.com/account/users
         
     | 
| 
      
 172 
     | 
    
         
            +
            For a full example see [examples/rackspace/simple.rb](examples/rackspace/simple.rb).
         
     | 
| 
       130 
173 
     | 
    
         | 
| 
       131 
     | 
    
         
            -
             
     | 
| 
       132 
     | 
    
         
            -
            you have a public key created on control portal at
         
     | 
| 
       133 
     | 
    
         
            -
            https://control.softlayer.com/devices/sshkeys with a matching label.
         
     | 
| 
      
 174 
     | 
    
         
            +
            ### vCloud Air
         
     | 
| 
       134 
175 
     | 
    
         | 
| 
       135 
     | 
    
         
            -
             
     | 
| 
       136 
     | 
    
         
            -
             
     | 
| 
       137 
     | 
    
         
            -
             
     | 
| 
       138 
     | 
    
         
            -
             
     | 
| 
       139 
     | 
    
         
            -
             
     | 
| 
      
 176 
     | 
    
         
            +
            Docs TODO.
         
     | 
| 
      
 177 
     | 
    
         
            +
             
     | 
| 
      
 178 
     | 
    
         
            +
            ### XenServer
         
     | 
| 
      
 179 
     | 
    
         
            +
             
     | 
| 
      
 180 
     | 
    
         
            +
            Docs TODO.
         
     | 
| 
       140 
181 
     | 
    
         | 
| 
       141 
     | 
    
         
            -
            For a full example see [examples/softlayer/simple.rb](examples/softlayer/simple.rb).
         
     | 
| 
       142 
182 
     | 
    
         | 
| 
       143 
183 
     | 
    
         
             
            ### Cleaning up
         
     | 
| 
       144 
184 
     | 
    
         | 
| 
         @@ -165,10 +205,9 @@ Chef Provisioning has two major abstractions: the machine resource, and drivers. 
     | 
|
| 
       165 
205 
     | 
    
         | 
| 
       166 
206 
     | 
    
         
             
            You declare what your machines do (recipes, tags, etc.) with the `machine` resource, the fundamental unit of Chef Provisioning.  You will typically declare `machine` resources in a separate, OS/provisioning-independent file that declares the *topology* of your app--your machines and the recipes that will run on them.
         
     | 
| 
       167 
207 
     | 
    
         | 
| 
       168 
     | 
    
         
            -
            The machine resources from the [cluster.rb example](https://github.com/chef/chef-provisioning/blob/master/docs/examples/cluster.rb) are pretty straightforward.  Here's a copy/paste 
     | 
| 
      
 208 
     | 
    
         
            +
            The machine resources from the [cluster.rb example](https://github.com/chef/chef-provisioning/blob/master/docs/examples/cluster.rb) are pretty straightforward.  Here's a copy/paste, it'll create a database machine then one web server.
         
     | 
| 
       169 
209 
     | 
    
         | 
| 
       170 
210 
     | 
    
         
             
            ```ruby
         
     | 
| 
       171 
     | 
    
         
            -
            # Database!
         
     | 
| 
       172 
211 
     | 
    
         
             
            machine 'mario' do
         
     | 
| 
       173 
212 
     | 
    
         
             
              recipe 'postgresql'
         
     | 
| 
       174 
213 
     | 
    
         
             
              recipe 'mydb'
         
     | 
| 
         @@ -177,7 +216,6 @@ end 
     | 
|
| 
       177 
216 
     | 
    
         | 
| 
       178 
217 
     | 
    
         
             
            num_webservers = 1
         
     | 
| 
       179 
218 
     | 
    
         | 
| 
       180 
     | 
    
         
            -
            # Web servers!
         
     | 
| 
       181 
219 
     | 
    
         
             
            1.upto(num_webservers) do |i|
         
     | 
| 
       182 
220 
     | 
    
         
             
              machine "luigi#{i}" do
         
     | 
| 
       183 
221 
     | 
    
         
             
                recipe 'apache'
         
     | 
    
        data/Rakefile
    CHANGED
    
    
| 
         @@ -244,7 +244,7 @@ module FogDriver 
     | 
|
| 
       244 
244 
     | 
    
         
             
                      machine_spec.reference = nil
         
     | 
| 
       245 
245 
     | 
    
         
             
                    end
         
     | 
| 
       246 
246 
     | 
    
         
             
                  end
         
     | 
| 
       247 
     | 
    
         
            -
                  strategy =  
     | 
| 
      
 247 
     | 
    
         
            +
                  strategy = ConvergenceStrategy::NoConverge.new(machine_options[:convergence_options], config)
         
     | 
| 
       248 
248 
     | 
    
         
             
                  strategy.cleanup_convergence(action_handler, machine_spec)
         
     | 
| 
       249 
249 
     | 
    
         
             
                end
         
     | 
| 
       250 
250 
     | 
    
         | 
| 
         @@ -297,7 +297,8 @@ module FogDriver 
     | 
|
| 
       297 
297 
     | 
    
         
             
                  specs_and_options.each do |machine_spec, machine_options|
         
     | 
| 
       298 
298 
     | 
    
         
             
                    server = specs_and_servers[machine_spec]
         
     | 
| 
       299 
299 
     | 
    
         
             
                    if server
         
     | 
| 
       300 
     | 
    
         
            -
                       
     | 
| 
      
 300 
     | 
    
         
            +
                      server_state = server.respond_to?(:status) ? server.status : server.state
         
     | 
| 
      
 301 
     | 
    
         
            +
                      if %w(terminated archive DELETED).include?(server_state.downcase) # Can't come back from that
         
     | 
| 
       301 
302 
     | 
    
         
             
                        Chef::Log.warn "Machine #{machine_spec.name} (#{server.id} on #{driver_url}) is terminated.  Recreating ..."
         
     | 
| 
       302 
303 
     | 
    
         
             
                      else
         
     | 
| 
       303 
304 
     | 
    
         
             
                        yield machine_spec, server if block_given?
         
     | 
| 
         @@ -307,13 +308,13 @@ module FogDriver 
     | 
|
| 
       307 
308 
     | 
    
         
             
                      Chef::Log.warn "Machine #{machine_spec.name} (#{machine_spec.reference['server_id']} on #{driver_url}) no longer exists.  Recreating ..."
         
     | 
| 
       308 
309 
     | 
    
         
             
                    end
         
     | 
| 
       309 
310 
     | 
    
         | 
| 
       310 
     | 
    
         
            -
             
     | 
| 
       311 
     | 
    
         
            -
             
     | 
| 
       312 
     | 
    
         
            -
             
     | 
| 
       313 
     | 
    
         
            -
             
     | 
| 
       314 
     | 
    
         
            -
             
     | 
| 
       315 
     | 
    
         
            -
             
     | 
| 
       316 
     | 
    
         
            -
             
     | 
| 
      
 311 
     | 
    
         
            +
                  machine_spec.reference ||= {}
         
     | 
| 
      
 312 
     | 
    
         
            +
                  machine_spec.reference.update(
         
     | 
| 
      
 313 
     | 
    
         
            +
                    'driver_url' => driver_url,
         
     | 
| 
      
 314 
     | 
    
         
            +
                    'driver_version' => FogDriver::VERSION,
         
     | 
| 
      
 315 
     | 
    
         
            +
                    'creator' => creator,
         
     | 
| 
      
 316 
     | 
    
         
            +
                    'allocated_at' => Time.now.to_i
         
     | 
| 
      
 317 
     | 
    
         
            +
                  )
         
     | 
| 
       317 
318 
     | 
    
         | 
| 
       318 
319 
     | 
    
         
             
                    bootstrap_options = bootstrap_options_for(action_handler, machine_spec, machine_options)
         
     | 
| 
       319 
320 
     | 
    
         
             
                    machine_spec.reference['key_name'] = bootstrap_options[:key_name] if bootstrap_options[:key_name]
         
     | 
| 
         @@ -375,13 +376,13 @@ module FogDriver 
     | 
|
| 
       375 
376 
     | 
    
         | 
| 
       376 
377 
     | 
    
         
             
                def start_server(action_handler, machine_spec, server)
         
     | 
| 
       377 
378 
     | 
    
         
             
                  # If it is stopping, wait for it to get out of "stopping" transition status before starting
         
     | 
| 
       378 
     | 
    
         
            -
                   
     | 
| 
      
 379 
     | 
    
         
            +
                  server_state = server.respond_to?(:status) ? server.status : server.state
         
     | 
| 
      
 380 
     | 
    
         
            +
                  if server_state == 'stopping'
         
     | 
| 
       379 
381 
     | 
    
         
             
                    action_handler.report_progress "wait for #{machine_spec.name} (#{server.id} on #{driver_url}) to finish stopping ..."
         
     | 
| 
       380 
     | 
    
         
            -
                    server.wait_for {  
     | 
| 
      
 382 
     | 
    
         
            +
                    server.wait_for { server_state != 'stopping' }
         
     | 
| 
       381 
383 
     | 
    
         
             
                    action_handler.report_progress "#{machine_spec.name} is now stopped"
         
     | 
| 
       382 
384 
     | 
    
         
             
                  end
         
     | 
| 
       383 
     | 
    
         
            -
             
     | 
| 
       384 
     | 
    
         
            -
                  if server.state == 'stopped'
         
     | 
| 
      
 385 
     | 
    
         
            +
                  if server_state == 'stopped'
         
     | 
| 
       385 
386 
     | 
    
         
             
                    action_handler.perform_action "start machine #{machine_spec.name} (#{server.id} on #{driver_url})" do
         
     | 
| 
       386 
387 
     | 
    
         
             
                      server.start
         
     | 
| 
       387 
388 
     | 
    
         
             
                      machine_spec.reference['started_at'] = Time.now.to_i
         
     | 
| 
         @@ -10,6 +10,13 @@ module FogDriver 
     | 
|
| 
       10 
10 
     | 
    
         
             
                    ''
         
     | 
| 
       11 
11 
     | 
    
         
             
                  end
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
      
 13 
     | 
    
         
            +
                  def convergence_strategy_for(machine_spec, machine_options)
         
     | 
| 
      
 14 
     | 
    
         
            +
                    machine_options = Cheffish::MergedConfig.new(machine_options, {
         
     | 
| 
      
 15 
     | 
    
         
            +
                                                                   :convergence_options => {:ohai_hints => {'digital_ocean' => {}}}
         
     | 
| 
      
 16 
     | 
    
         
            +
                                                                 })
         
     | 
| 
      
 17 
     | 
    
         
            +
                    super(machine_spec, machine_options)
         
     | 
| 
      
 18 
     | 
    
         
            +
                  end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
       13 
20 
     | 
    
         
             
                  def converge_floating_ips(action_handler, machine_spec, machine_options, server)
         
     | 
| 
       14 
21 
     | 
    
         
             
                    # DigitalOcean does not have floating IPs
         
     | 
| 
       15 
22 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -9,6 +9,13 @@ class Chef 
     | 
|
| 
       9 
9 
     | 
    
         
             
                        ''
         
     | 
| 
       10 
10 
     | 
    
         
             
                      end
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
      
 12 
     | 
    
         
            +
                      def convergence_strategy_for(machine_spec, machine_options)
         
     | 
| 
      
 13 
     | 
    
         
            +
                        machine_options = Cheffish::MergedConfig.new(machine_options, {
         
     | 
| 
      
 14 
     | 
    
         
            +
                                                                       :convergence_options => {:ohai_hints => {'gce' => {}}}
         
     | 
| 
      
 15 
     | 
    
         
            +
                                                                     })
         
     | 
| 
      
 16 
     | 
    
         
            +
                        super(machine_spec, machine_options)
         
     | 
| 
      
 17 
     | 
    
         
            +
                      end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
       12 
19 
     | 
    
         
             
                      def converge_floating_ips(action_handler, machine_spec, machine_options, server)
         
     | 
| 
       13 
20 
     | 
    
         
             
                      end
         
     | 
| 
       14 
21 
     | 
    
         | 
| 
         @@ -11,6 +11,13 @@ module FogDriver 
     | 
|
| 
       11 
11 
     | 
    
         
             
                    compute_options[:openstack_username]
         
     | 
| 
       12 
12 
     | 
    
         
             
                  end
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
      
 14 
     | 
    
         
            +
                  def convergence_strategy_for(machine_spec, machine_options)
         
     | 
| 
      
 15 
     | 
    
         
            +
                    machine_options = Cheffish::MergedConfig.new(machine_options, {
         
     | 
| 
      
 16 
     | 
    
         
            +
                                                                   :convergence_options => {:ohai_hints => {'openstack' => {}}}
         
     | 
| 
      
 17 
     | 
    
         
            +
                                                                 })
         
     | 
| 
      
 18 
     | 
    
         
            +
                    super(machine_spec, machine_options)
         
     | 
| 
      
 19 
     | 
    
         
            +
                  end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
       14 
21 
     | 
    
         
             
                  def self.compute_options_for(provider, id, config)
         
     | 
| 
       15 
22 
     | 
    
         
             
                    new_compute_options = {}
         
     | 
| 
       16 
23 
     | 
    
         
             
                    new_compute_options[:provider] = provider
         
     | 
| 
         @@ -11,6 +11,14 @@ module FogDriver 
     | 
|
| 
       11 
11 
     | 
    
         
             
                    compute_options[:rackspace_username]
         
     | 
| 
       12 
12 
     | 
    
         
             
                  end
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
      
 14 
     | 
    
         
            +
                  def convergence_strategy_for(machine_spec, machine_options)
         
     | 
| 
      
 15 
     | 
    
         
            +
                    machine_options = Cheffish::MergedConfig.new(machine_options, {
         
     | 
| 
      
 16 
     | 
    
         
            +
                                                                   :convergence_options => {:ohai_hints => {'rackspace' => {}}}
         
     | 
| 
      
 17 
     | 
    
         
            +
                                                                 })
         
     | 
| 
      
 18 
     | 
    
         
            +
                    super(machine_spec, machine_options)
         
     | 
| 
      
 19 
     | 
    
         
            +
                  end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
       14 
22 
     | 
    
         
             
                  def self.compute_options_for(provider, id, config)
         
     | 
| 
       15 
23 
     | 
    
         
             
                    new_compute_options = {}
         
     | 
| 
       16 
24 
     | 
    
         
             
                    new_compute_options[:provider] = provider
         
     | 
| 
         @@ -17,6 +17,13 @@ class Chef 
     | 
|
| 
       17 
17 
     | 
    
         
             
                        compute_options[:softlayer_username]
         
     | 
| 
       18 
18 
     | 
    
         
             
                      end
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
      
 20 
     | 
    
         
            +
                      def convergence_strategy_for(machine_spec, machine_options)
         
     | 
| 
      
 21 
     | 
    
         
            +
                        machine_options = Cheffish::MergedConfig.new(machine_options, {
         
     | 
| 
      
 22 
     | 
    
         
            +
                                                                       :convergence_options => {:ohai_hints => {'softlayer' => {}}}
         
     | 
| 
      
 23 
     | 
    
         
            +
                                                                     })
         
     | 
| 
      
 24 
     | 
    
         
            +
                        super(machine_spec, machine_options)
         
     | 
| 
      
 25 
     | 
    
         
            +
                      end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
       20 
27 
     | 
    
         
             
                      def self.compute_options_for(provider, id, config)
         
     | 
| 
       21 
28 
     | 
    
         
             
                        new_compute_options = {}
         
     | 
| 
       22 
29 
     | 
    
         
             
                        new_compute_options[:provider] = provider
         
     | 
| 
         @@ -211,4 +218,3 @@ SHELL 
     | 
|
| 
       211 
218 
     | 
    
         
             
                end
         
     | 
| 
       212 
219 
     | 
    
         
             
              end
         
     | 
| 
       213 
220 
     | 
    
         
             
            end
         
     | 
| 
       214 
     | 
    
         
            -
             
     | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    | 
         @@ -3,6 +3,14 @@ $:.unshift File.expand_path('../support', __FILE__) 
     | 
|
| 
       3 
3 
     | 
    
         
             
            require 'fog'
         
     | 
| 
       4 
4 
     | 
    
         
             
            require 'chef/provisioning'
         
     | 
| 
       5 
5 
     | 
    
         
             
            require 'chef/provisioning/fog_driver/driver'
         
     | 
| 
      
 6 
     | 
    
         
            +
            require 'simplecov'
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            SimpleCov.start do
         
     | 
| 
      
 9 
     | 
    
         
            +
              # add_filter do |source_file|
         
     | 
| 
      
 10 
     | 
    
         
            +
              #   # source_file.lines.count < 5
         
     | 
| 
      
 11 
     | 
    
         
            +
              #   source.filename =~ /^#{SimpleCov.root}\/chef-provisioning-fake/)
         
     | 
| 
      
 12 
     | 
    
         
            +
              # end
         
     | 
| 
      
 13 
     | 
    
         
            +
            end
         
     | 
| 
       6 
14 
     | 
    
         | 
| 
       7 
15 
     | 
    
         
             
            RSpec.configure do |config|
         
     | 
| 
       8 
16 
     | 
    
         
             
              config.run_all_when_everything_filtered = true
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: chef-provisioning-fog
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.18.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - John Keiser
         
     | 
| 
         @@ -12,7 +12,7 @@ authors: 
     | 
|
| 
       12 
12 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       13 
13 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       14 
14 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       15 
     | 
    
         
            -
            date: 2016-03- 
     | 
| 
      
 15 
     | 
    
         
            +
            date: 2016-03-30 00:00:00.000000000 Z
         
     | 
| 
       16 
16 
     | 
    
         
             
            dependencies:
         
     | 
| 
       17 
17 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       18 
18 
     | 
    
         
             
              name: chef-provisioning
         
     |