knife-openstack 1.1.0 → 1.2.0.rc1
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/CHANGELOG.md +4 -0
- data/README.md +12 -5
- data/lib/chef/knife/cloud/openstack_server_create_options.rb +11 -1
- data/lib/chef/knife/openstack_server_create.rb +17 -2
- data/lib/chef/knife/openstack_volume_list.rb +70 -0
- data/lib/knife-openstack/version.rb +1 -1
- data/spec/functional/volume_list_func_spec.rb +45 -0
- data/spec/unit/openstack_server_create_spec.rb +15 -0
- data/spec/unit/openstack_volume_list_spec.rb +29 -0
- metadata +9 -5
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: a33976b5305864956528c1fedbabe2defc0c4e11
         | 
| 4 | 
            +
              data.tar.gz: ba9af32d2611e5a80b0d24cdae159f11298ff79e
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: eda31037c9f771f7cb86cdacafcefc6c180e873f1338ea6e872b6c4cb2fafb4831a008790ef02b219703afcc287aea13bccf7687d1904408f608d41b9e4b2418
         | 
| 7 | 
            +
              data.tar.gz: f8ffbe6ad7b916d5e296e82ff5cf26971b848a6f9233e547f13afce68cf69bbae7ca1d21ae84125807d9caa8ae884768c89d8968ad85853bd15bbe676f960bd1
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -3,7 +3,7 @@ | |
| 3 3 | 
             
            Knife OpenStack
         | 
| 4 4 | 
             
            ===============
         | 
| 5 5 |  | 
| 6 | 
            -
            This is the official Chef Knife plugin for OpenStack Compute (Nova). This plugin gives knife the ability to create, bootstrap and manage instances in OpenStack Compute clouds. It has been tested against the `Diablo` through ` | 
| 6 | 
            +
            This is the official Chef Knife plugin for OpenStack Compute (Nova). This plugin gives knife the ability to create, bootstrap and manage instances in OpenStack Compute clouds. It has been tested against the `Diablo` through `Kilo` releases in configurations using Keystone against the OpenStack API (as opposed to the EC2 API).
         | 
| 7 7 |  | 
| 8 8 | 
             
            Please refer to the [CHANGELOG](CHANGELOG.md) for version history and known issues.
         | 
| 9 9 |  | 
| @@ -11,12 +11,12 @@ Please refer to the [CHANGELOG](CHANGELOG.md) for version history and known issu | |
| 11 11 |  | 
| 12 12 | 
             
            Be sure you are running the latest version Chef. Versions earlier than 0.10.0 don't support plugins:
         | 
| 13 13 |  | 
| 14 | 
            -
                $ curl -L https://chef.io/chef/install.sh  | 
| 14 | 
            +
                $ curl -L https://chef.io/chef/install.sh | sudo bash
         | 
| 15 15 |  | 
| 16 16 | 
             
            This plugin is distributed as a Ruby Gem. To install it, run:
         | 
| 17 17 |  | 
| 18 18 | 
             
                $ chef gem install knife-openstack
         | 
| 19 | 
            -
                 | 
| 19 | 
            +
                OR
         | 
| 20 20 | 
             
                $ gem install knife-openstack
         | 
| 21 21 |  | 
| 22 22 | 
             
            Depending on your system's configuration, you may need to run this command with root privileges.
         | 
| @@ -38,7 +38,7 @@ If your knife.rb file will be checked into a SCM system (ie readable by others) | |
| 38 38 | 
             
                knife[:openstack_username] = "#{ENV['OS_USERNAME']}"
         | 
| 39 39 | 
             
                knife[:openstack_password] = "#{ENV['OS_PASSWORD']}"
         | 
| 40 40 | 
             
                knife[:openstack_tenant] = "#{ENV['OS_TENANT_NAME']}"
         | 
| 41 | 
            -
                knife[:openstack_region] = "#{ENV[' | 
| 41 | 
            +
                knife[:openstack_region] = "#{ENV['OS_REGION_NAME']}"
         | 
| 42 42 |  | 
| 43 43 | 
             
            If your OpenStack deployment is over SSL, but does not have a valid certificate, you can add the following option to bypass SSL check:
         | 
| 44 44 |  | 
| @@ -84,7 +84,7 @@ This plugin provides the following Knife subcommands. Specific command options c | |
| 84 84 | 
             
            knife openstack server create
         | 
| 85 85 | 
             
            -----------------------------
         | 
| 86 86 |  | 
| 87 | 
            -
            Provisions a new server in an OpenStack Compute cloud and then perform a Chef bootstrap (using the SSH protocol). The goal of the bootstrap is to get Chef installed on the target system so it can run Chef Client with a Chef Server. The main assumption is a baseline OS installation exists (provided by the provisioning). It is primarily intended for Chef Client systems that talk to a Chef server. By default the server is bootstrapped using the [chef-full](https://github.com/opscode/chef/blob/master/chef/lib/chef/knife/bootstrap/chef-full.erb) template (default since the 10.10 release). This may be overridden using the `-d` or `--template-file` command options. If you do not have public IP addresses, use the `--private-network` option to use the private IP address for bootstrapping  | 
| 87 | 
            +
            Provisions a new server in an OpenStack Compute cloud and then perform a Chef bootstrap (using the SSH protocol). The goal of the bootstrap is to get Chef installed on the target system so it can run Chef Client with a Chef Server. The main assumption is a baseline OS installation exists (provided by the provisioning). It is primarily intended for Chef Client systems that talk to a Chef server. By default the server is bootstrapped using the [chef-full](https://github.com/opscode/chef/blob/master/chef/lib/chef/knife/bootstrap/chef-full.erb) template (default since the 10.10 release). This may be overridden using the `-d` or `--template-file` command options. If you do not have public IP addresses, use the `--openstack-private-network` option to use the private IP address for bootstrapping.  In addition, you can use the `--bootstrap-network NAME` option to specify an alternate network for either a private or public network. If a network name isn't specified, the default name will be `'public'` for a public network and `'private'` for a private network e.g. when the `--openstack-private-network` option is specified.  Please see `knife openstack server create --help` for all of the supported options.
         | 
| 88 88 |  | 
| 89 89 | 
             
            knife openstack server delete
         | 
| 90 90 | 
             
            -----------------------------
         | 
| @@ -101,6 +101,11 @@ knife openstack flavor list | |
| 101 101 |  | 
| 102 102 | 
             
            Provides a list of all available flavors (available "hardware" configurations for a server) available to the currently configured OpenStack account. Each flavor has a unique combination of virtual cpus, disk space and memory capacity. This data may be useful when choosing a flavor to pass to the `knife openstack server create` subcommand.
         | 
| 103 103 |  | 
| 104 | 
            +
            knife openstack volume list
         | 
| 105 | 
            +
            ---------------------------
         | 
| 106 | 
            +
             | 
| 107 | 
            +
            Provides a list of all volumes in the currently configured OpenStack account. Each volume shows its size and its availibility to be attached to server. This data may be useful when choosing a volume to pass to the `knife openstack server create` subcommand.
         | 
| 108 | 
            +
             | 
| 104 109 | 
             
            knife openstack image list
         | 
| 105 110 | 
             
            --------------------------
         | 
| 106 111 |  | 
| @@ -124,6 +129,8 @@ Author:: Matt Ray (<matt@chef.io>) | |
| 124 129 |  | 
| 125 130 | 
             
            Author:: Chirag Jog (<chirag@clogeny.com>)
         | 
| 126 131 |  | 
| 132 | 
            +
            Author:: JJ Asghar (<jj@chef.io>)
         | 
| 133 | 
            +
             | 
| 127 134 | 
             
            Copyright:: Copyright (c) 2011-2015 Chef Software, Inc.
         | 
| 128 135 |  | 
| 129 136 | 
             
            License:: Apache License, Version 2.0
         | 
| @@ -22,6 +22,16 @@ class Chef | |
| 22 22 | 
             
                        :default => "-1",
         | 
| 23 23 | 
             
                        :description => "Request to associate a floating IP address to the new OpenStack node. Assumes IPs have been allocated to the project. Specific IP is optional."
         | 
| 24 24 |  | 
| 25 | 
            +
                        option :openstack_volumes,
         | 
| 26 | 
            +
                        :long => "--openstack-volumes VOLUME1,VOLUME2,VOLUME3",
         | 
| 27 | 
            +
                        :description => "Comma separated list of the UUID(s) of the volume(s) to attach to the server",
         | 
| 28 | 
            +
                        :proc => Proc.new { |volumes| volumes.split(',') }
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                        option :openstack_scheduler_hints,
         | 
| 31 | 
            +
                        :long => "--scheduler-hints HINTS",
         | 
| 32 | 
            +
                        :description => "A scheduler group hint to OpenStack",
         | 
| 33 | 
            +
                        :proc => Proc.new { |i| Chef::Config[:knife][:openstack_scheduler_hints] = i }
         | 
| 34 | 
            +
             | 
| 25 35 | 
             
                        option :openstack_security_groups,
         | 
| 26 36 | 
             
                        :short => "-G X,Y,Z",
         | 
| 27 37 | 
             
                        :long => "--openstack-groups X,Y,Z",
         | 
| @@ -34,7 +44,7 @@ class Chef | |
| 34 44 | 
             
                        :long => "--openstack-ssh-key-id KEY",
         | 
| 35 45 | 
             
                        :description => "The OpenStack SSH keypair id",
         | 
| 36 46 | 
             
                        :proc => Proc.new { |key| Chef::Config[:knife][:openstack_ssh_key_id] = key }
         | 
| 37 | 
            -
             | 
| 47 | 
            +
             | 
| 38 48 | 
             
                        option :user_data,
         | 
| 39 49 | 
             
                        :long => "--user-data USER_DATA",
         | 
| 40 50 | 
             
                        :description => "The file path containing user data information for this server",
         | 
| @@ -47,11 +47,24 @@ class Chef | |
| 47 47 | 
             
                            :flavor_ref => service.get_flavor(locate_config_value(:flavor)).id,
         | 
| 48 48 | 
             
                            :security_groups => locate_config_value(:openstack_security_groups),
         | 
| 49 49 | 
             
                            :availability_zone => locate_config_value(:availability_zone),
         | 
| 50 | 
            +
                            "os:scheduler_hints" => locate_config_value(:openstack_scheduler_hints),
         | 
| 50 51 | 
             
                            :metadata => locate_config_value(:metadata),
         | 
| 51 52 | 
             
                            :key_name => locate_config_value(:openstack_ssh_key_id)
         | 
| 52 53 | 
             
                          },
         | 
| 53 54 | 
             
                          :server_create_timeout => locate_config_value(:server_create_timeout)
         | 
| 54 55 | 
             
                        }
         | 
| 56 | 
            +
                        unless locate_config_value(:openstack_volumes).nil?
         | 
| 57 | 
            +
                          counter = 99
         | 
| 58 | 
            +
                          @create_options[:server_def][:block_device_mapping] = locate_config_value(:openstack_volumes).map do |vol|
         | 
| 59 | 
            +
                            counter += 1 
         | 
| 60 | 
            +
                            {
         | 
| 61 | 
            +
                              :volume_id => vol,
         | 
| 62 | 
            +
                              :delete_on_termination => false,
         | 
| 63 | 
            +
                              :device_name => "/dev/vd"+counter.chr,
         | 
| 64 | 
            +
                              :volume_size => nil,
         | 
| 65 | 
            +
                            }
         | 
| 66 | 
            +
                            end
         | 
| 67 | 
            +
                        end
         | 
| 55 68 |  | 
| 56 69 | 
             
                        @create_options[:server_def].merge!({:user_data => locate_config_value(:user_data)}) if locate_config_value(:user_data)
         | 
| 57 70 | 
             
                        @create_options[:server_def].merge!({:nics => locate_config_value(:network_ids).map { |nic| nic_id = { 'net_id' => nic }}}) if locate_config_value(:network_ids)
         | 
| @@ -129,8 +142,10 @@ class Chef | |
| 129 142 | 
             
                      # Use SSH password either specified from command line or from openstack server instance
         | 
| 130 143 | 
             
                      config[:ssh_password] = locate_config_value(:ssh_password) || server.password unless config[:openstack_ssh_key_id]
         | 
| 131 144 |  | 
| 132 | 
            -
                      #  | 
| 133 | 
            -
                       | 
| 145 | 
            +
                      # The bootstrap network is always initialised to 'public' when a network name isn't specified.  Therefore,
         | 
| 146 | 
            +
                      # only set the bootstrap network to 'private' if still initialised to public and nothing was specified for
         | 
| 147 | 
            +
                      # the private network name.
         | 
| 148 | 
            +
                      config[:bootstrap_network] = 'private' if (config[:private_network] && config[:bootstrap_network] == 'public')
         | 
| 134 149 |  | 
| 135 150 | 
             
                      # Which IP address to bootstrap
         | 
| 136 151 | 
             
                      unless config[:network] # --no-network
         | 
| @@ -0,0 +1,70 @@ | |
| 1 | 
            +
            #
         | 
| 2 | 
            +
            # Author:: Seth Chisamore (<schisamo@getchef.com>)
         | 
| 3 | 
            +
            # Author:: Matt Ray (<matt@getchef.com>)
         | 
| 4 | 
            +
            # Author:: Evan Felix (<karcaw@gmail.com>)
         | 
| 5 | 
            +
            # Copyright:: Copyright (c) 2011-2014 Chef Software, Inc.
         | 
| 6 | 
            +
            # License:: Apache License, Version 2.0
         | 
| 7 | 
            +
            #
         | 
| 8 | 
            +
            # Licensed under the Apache License, Version 2.0 (the "License");
         | 
| 9 | 
            +
            # you may not use this file except in compliance with the License.
         | 
| 10 | 
            +
            # You may obtain a copy of the License at
         | 
| 11 | 
            +
            #
         | 
| 12 | 
            +
            #     http://www.apache.org/licenses/LICENSE-2.0
         | 
| 13 | 
            +
            #
         | 
| 14 | 
            +
            # Unless required by applicable law or agreed to in writing, software
         | 
| 15 | 
            +
            # distributed under the License is distributed on an "AS IS" BASIS,
         | 
| 16 | 
            +
            # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
         | 
| 17 | 
            +
            # See the License for the specific language governing permissions and
         | 
| 18 | 
            +
            # limitations under the License.
         | 
| 19 | 
            +
            #
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            require 'chef/knife/cloud/list_resource_command'
         | 
| 22 | 
            +
            require 'chef/knife/openstack_helpers'
         | 
| 23 | 
            +
            require 'chef/knife/cloud/openstack_service_options'
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            class Chef
         | 
| 26 | 
            +
              class Knife
         | 
| 27 | 
            +
                class Cloud
         | 
| 28 | 
            +
                  class OpenstackVolumeList < ResourceListCommand
         | 
| 29 | 
            +
                      include OpenstackHelpers
         | 
| 30 | 
            +
                      include OpenstackServiceOptions
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                    banner "knife openstack volume list (options)"
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                    def query_resource
         | 
| 35 | 
            +
                      begin
         | 
| 36 | 
            +
                        @service.connection.volumes
         | 
| 37 | 
            +
                      rescue Excon::Errors::BadRequest => e
         | 
| 38 | 
            +
                        response = Chef::JSONCompat.from_json(e.response.body)
         | 
| 39 | 
            +
                        ui.fatal("Unknown server error (#{response['badRequest']['code']}): #{response['badRequest']['message']}")
         | 
| 40 | 
            +
                        raise e
         | 
| 41 | 
            +
                      end
         | 
| 42 | 
            +
                    end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                    def list(volumes)
         | 
| 45 | 
            +
                      volume_list = [
         | 
| 46 | 
            +
                        ui.color('Name', :bold),
         | 
| 47 | 
            +
                        ui.color('ID', :bold),
         | 
| 48 | 
            +
                        ui.color('Status', :bold),
         | 
| 49 | 
            +
                        ui.color('Size', :bold),
         | 
| 50 | 
            +
                        ui.color('Description', :bold),
         | 
| 51 | 
            +
                      ]
         | 
| 52 | 
            +
                      begin
         | 
| 53 | 
            +
                        volumes.sort_by(&:name).each do |volume|
         | 
| 54 | 
            +
                          volume_list << volume.name
         | 
| 55 | 
            +
                          volume_list << volume.id.to_s
         | 
| 56 | 
            +
                          volume_list << volume.status
         | 
| 57 | 
            +
                          volume_list << "#{volume.size.to_s} GB"
         | 
| 58 | 
            +
                          volume_list << volume.description
         | 
| 59 | 
            +
                        end
         | 
| 60 | 
            +
                      rescue Excon::Errors::BadRequest => e
         | 
| 61 | 
            +
                        response = Chef::JSONCompat.from_json(e.response.body)
         | 
| 62 | 
            +
                        ui.fatal("Unknown server error (#{response['badRequest']['code']}): #{response['badRequest']['message']}")
         | 
| 63 | 
            +
                        raise e
         | 
| 64 | 
            +
                      end
         | 
| 65 | 
            +
                      puts ui.list(volume_list, :uneven_columns_across, 5)
         | 
| 66 | 
            +
                    end
         | 
| 67 | 
            +
                  end
         | 
| 68 | 
            +
                end
         | 
| 69 | 
            +
              end
         | 
| 70 | 
            +
            end
         | 
| @@ -0,0 +1,45 @@ | |
| 1 | 
            +
            #
         | 
| 2 | 
            +
            # Author:: Mukta Aphale (<mukta.aphale@clogeny.com>)
         | 
| 3 | 
            +
            # Author:: Ameya Varade (<ameya.varade@clogeny.com>)
         | 
| 4 | 
            +
            # Copyright:: Copyright (c) 2013-2014 Chef Software, Inc.
         | 
| 5 | 
            +
            # License:: Apache License, Version 2.0
         | 
| 6 | 
            +
            #
         | 
| 7 | 
            +
            # Licensed under the Apache License, Version 2.0 (the "License");
         | 
| 8 | 
            +
            # you may not use this file except in compliance with the License.
         | 
| 9 | 
            +
            # You may obtain a copy of the License at
         | 
| 10 | 
            +
            #
         | 
| 11 | 
            +
            #     http://www.apache.org/licenses/LICENSE-2.0
         | 
| 12 | 
            +
            #
         | 
| 13 | 
            +
            # Unless required by applicable law or agreed to in writing, software
         | 
| 14 | 
            +
            # distributed under the License is distributed on an "AS IS" BASIS,
         | 
| 15 | 
            +
            # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
         | 
| 16 | 
            +
            # See the License for the specific language governing permissions and
         | 
| 17 | 
            +
            # limitations under the License.
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            require 'spec_helper'
         | 
| 20 | 
            +
            require 'chef/knife/openstack_volume_list'
         | 
| 21 | 
            +
            require 'chef/knife/cloud/openstack_service'
         | 
| 22 | 
            +
            require 'support/shared_examples_for_command'
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            describe Chef::Knife::Cloud::OpenstackVolumeList do
         | 
| 25 | 
            +
              let (:instance) {Chef::Knife::Cloud::OpenstackVolumeList.new}
         | 
| 26 | 
            +
             | 
| 27 | 
            +
              context "functionality" do
         | 
| 28 | 
            +
                before do
         | 
| 29 | 
            +
                  resources = [ TestResource.new({:id => "volume-1", :name => "big-disk-volume", :status => "available", :size => 1024, :description => "This is the big disk"}),
         | 
| 30 | 
            +
                                 TestResource.new({:id => "volume-2", :name => "little-disk-volume", :status => "in-use", :size => 8, :description => "This is the little disk"})
         | 
| 31 | 
            +
                               ]
         | 
| 32 | 
            +
                  allow(instance).to receive(:query_resource).and_return(resources)
         | 
| 33 | 
            +
                  allow(instance).to receive(:puts)
         | 
| 34 | 
            +
                  allow(instance).to receive(:create_service_instance).and_return(Chef::Knife::Cloud::Service.new)
         | 
| 35 | 
            +
                  allow(instance).to receive(:validate!)
         | 
| 36 | 
            +
                end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                it "lists formatted list of resources" do
         | 
| 39 | 
            +
                  expect(instance.ui).to receive(:list).with(["Name", "ID", "Status", "Size", "Description",
         | 
| 40 | 
            +
                                                          "big-disk-volume", "volume-1", "available", "1024 GB", "This is the big disk",
         | 
| 41 | 
            +
                                                          "little-disk-volume", "volume-2", "in-use", "8 GB", "This is the little disk"], :uneven_columns_across, 5)
         | 
| 42 | 
            +
                  instance.run
         | 
| 43 | 
            +
                end
         | 
| 44 | 
            +
              end
         | 
| 45 | 
            +
            end
         | 
| @@ -300,6 +300,21 @@ describe Chef::Knife::Cloud::OpenstackServerCreate do | |
| 300 300 | 
             
                  @instance.before_bootstrap
         | 
| 301 301 | 
             
                  expect(@instance.config[:ssh_password]).to be == server_password
         | 
| 302 302 | 
             
                end
         | 
| 303 | 
            +
             | 
| 304 | 
            +
                it "configures the default private bootstrap network to use 'private'" do
         | 
| 305 | 
            +
                  allow(@instance.server).to receive(:addresses).and_return({"private"=>[{"version"=>4, "addr"=>"127.0.0.1"}]})
         | 
| 306 | 
            +
                  @instance.config[:private_network] = true
         | 
| 307 | 
            +
                  @instance.before_bootstrap
         | 
| 308 | 
            +
                  expect(@instance.config[:bootstrap_network]).to be == 'private'
         | 
| 309 | 
            +
                end
         | 
| 310 | 
            +
             | 
| 311 | 
            +
                it "configures the bootstrap to use alternate private network" do
         | 
| 312 | 
            +
                  allow(@instance.server).to receive(:addresses).and_return({"secure"=>[{"version"=>4, "addr"=>"127.0.0.1"}]})
         | 
| 313 | 
            +
                  @instance.config[:bootstrap_network] = 'secure'
         | 
| 314 | 
            +
                  @instance.config[:private_network] = true
         | 
| 315 | 
            +
                  @instance.before_bootstrap
         | 
| 316 | 
            +
                  expect(@instance.config[:bootstrap_network]).to be == 'secure'
         | 
| 317 | 
            +
                end
         | 
| 303 318 | 
             
              end
         | 
| 304 319 |  | 
| 305 320 | 
             
              describe "#post_connection_validations" do
         | 
| @@ -0,0 +1,29 @@ | |
| 1 | 
            +
            #
         | 
| 2 | 
            +
            # Author:: Mukta Aphale (<mukta.aphale@clogeny.com>)
         | 
| 3 | 
            +
            # Author:: Siddheshwar More (<siddheshwar.more@clogeny.com>)
         | 
| 4 | 
            +
            # Author:: Ameya Varade (<ameya.varade@clogeny.com>)
         | 
| 5 | 
            +
            # Copyright:: Copyright (c) 2013-2014 Chef Software, Inc.
         | 
| 6 | 
            +
            # License:: Apache License, Version 2.0
         | 
| 7 | 
            +
            #
         | 
| 8 | 
            +
            # Licensed under the Apache License, Version 2.0 (the "License");
         | 
| 9 | 
            +
            # you may not use this file except in compliance with the License.
         | 
| 10 | 
            +
            # You may obtain a copy of the License at
         | 
| 11 | 
            +
            #
         | 
| 12 | 
            +
            #     http://www.apache.org/licenses/LICENSE-2.0
         | 
| 13 | 
            +
            #
         | 
| 14 | 
            +
            # Unless required by applicable law or agreed to in writing, software
         | 
| 15 | 
            +
            # distributed under the License is distributed on an "AS IS" BASIS,
         | 
| 16 | 
            +
            # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
         | 
| 17 | 
            +
            # See the License for the specific language governing permissions and
         | 
| 18 | 
            +
            # limitations under the License.
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            require 'spec_helper'
         | 
| 21 | 
            +
            require 'chef/knife/openstack_volume_list'
         | 
| 22 | 
            +
            require 'chef/knife/cloud/openstack_service'
         | 
| 23 | 
            +
            require 'support/shared_examples_for_command'
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            describe Chef::Knife::Cloud::OpenstackVolumeList do
         | 
| 26 | 
            +
              it_behaves_like Chef::Knife::Cloud::Command, Chef::Knife::Cloud::OpenstackVolumeList.new
         | 
| 27 | 
            +
             | 
| 28 | 
            +
              include_context "#validate!", Chef::Knife::Cloud::OpenstackVolumeList.new
         | 
| 29 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: knife-openstack
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1. | 
| 4 | 
            +
              version: 1.2.0.rc1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - JJ Asghar
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015- | 
| 11 | 
            +
            date: 2015-06-04 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: fog
         | 
| @@ -151,6 +151,7 @@ files: | |
| 151 151 | 
             
            - lib/chef/knife/openstack_server_delete.rb
         | 
| 152 152 | 
             
            - lib/chef/knife/openstack_server_list.rb
         | 
| 153 153 | 
             
            - lib/chef/knife/openstack_server_show.rb
         | 
| 154 | 
            +
            - lib/chef/knife/openstack_volume_list.rb
         | 
| 154 155 | 
             
            - lib/knife-openstack/version.rb
         | 
| 155 156 | 
             
            - spec/functional/flavor_list_func_spec.rb
         | 
| 156 157 | 
             
            - spec/functional/group_list_func_spec.rb
         | 
| @@ -160,6 +161,7 @@ files: | |
| 160 161 | 
             
            - spec/functional/server_delete_func_spec.rb
         | 
| 161 162 | 
             
            - spec/functional/server_list_func_spec.rb
         | 
| 162 163 | 
             
            - spec/functional/server_show_func_spec.rb
         | 
| 164 | 
            +
            - spec/functional/volume_list_func_spec.rb
         | 
| 163 165 | 
             
            - spec/integration/cleanup.rb
         | 
| 164 166 | 
             
            - spec/integration/config/environment.yml.sample
         | 
| 165 167 | 
             
            - spec/integration/config/incorrect_openstack.pem
         | 
| @@ -175,6 +177,7 @@ files: | |
| 175 177 | 
             
            - spec/unit/openstack_server_list_spec.rb
         | 
| 176 178 | 
             
            - spec/unit/openstack_server_show_spec.rb
         | 
| 177 179 | 
             
            - spec/unit/openstack_service_spec.rb
         | 
| 180 | 
            +
            - spec/unit/openstack_volume_list_spec.rb
         | 
| 178 181 | 
             
            homepage: https://github.com/chef/knife-openstack
         | 
| 179 182 | 
             
            licenses: []
         | 
| 180 183 | 
             
            metadata: {}
         | 
| @@ -189,9 +192,9 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 189 192 | 
             
                  version: '0'
         | 
| 190 193 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 191 194 | 
             
              requirements:
         | 
| 192 | 
            -
              - - " | 
| 195 | 
            +
              - - ">"
         | 
| 193 196 | 
             
                - !ruby/object:Gem::Version
         | 
| 194 | 
            -
                  version:  | 
| 197 | 
            +
                  version: 1.3.1
         | 
| 195 198 | 
             
            requirements: []
         | 
| 196 199 | 
             
            rubyforge_project: 
         | 
| 197 200 | 
             
            rubygems_version: 2.2.2
         | 
| @@ -207,6 +210,7 @@ test_files: | |
| 207 210 | 
             
            - spec/functional/server_delete_func_spec.rb
         | 
| 208 211 | 
             
            - spec/functional/server_list_func_spec.rb
         | 
| 209 212 | 
             
            - spec/functional/server_show_func_spec.rb
         | 
| 213 | 
            +
            - spec/functional/volume_list_func_spec.rb
         | 
| 210 214 | 
             
            - spec/integration/cleanup.rb
         | 
| 211 215 | 
             
            - spec/integration/config/environment.yml.sample
         | 
| 212 216 | 
             
            - spec/integration/config/incorrect_openstack.pem
         | 
| @@ -222,4 +226,4 @@ test_files: | |
| 222 226 | 
             
            - spec/unit/openstack_server_list_spec.rb
         | 
| 223 227 | 
             
            - spec/unit/openstack_server_show_spec.rb
         | 
| 224 228 | 
             
            - spec/unit/openstack_service_spec.rb
         | 
| 225 | 
            -
             | 
| 229 | 
            +
            - spec/unit/openstack_volume_list_spec.rb
         |