knife-openstack 1.3.2.pre.1 → 1.3.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b05331ec3545a48444fc877d7889747529f0d7e3
4
- data.tar.gz: 92baa1e81349f00f1e7f58df5b2d297b15a2f51f
3
+ metadata.gz: fe9c78127693e0ad68023794392747f8a58926d5
4
+ data.tar.gz: a97cc8e5edf0422c8bb4912ab209fa6b1684c732
5
5
  SHA512:
6
- metadata.gz: b2adbd1e48f537165d606ac669515a0d39f26a34e345656a88b4623a4a05ca265d8f5f36f59d1b59bd0f7adbef392286836cae918f07a9da28b9380b1ef89511
7
- data.tar.gz: 20d830cb5e373c9ba05020678c41385cb1d87758ca14777bb858b140c743e0ee244de71410194c9119021c4c5f0ce7544d6c569f4caf6f48f9dddad955eddaf0
6
+ metadata.gz: f69897fb295203d5c971fe69a745b91ae1b904c9474c7f5388e12a510d9dc9810146e2b13a24924c10a99b0024677f1393c238b4691594d4a2cc28984275a32c
7
+ data.tar.gz: 7132079550ef827e3a68880110d28f4622ecbd910b588b87f93e373826d28acdb877bf9de5695a1db2ee5c0fd668e4ce2cf5f88811b5279494a6e129422ab627
@@ -1,6 +1,7 @@
1
- ## v1.3.2.pre
1
+ ## v1.3.2
2
2
  * Fix cloud command class loading #174
3
3
  * Fix for #178 for the listing of ips with `knife openstack server list`
4
+ * Support all Fog OpenStack options #179
4
5
 
5
6
  ## v1.2.0
6
7
  * Allow users to specify alternate private networks. #163
data/README.md CHANGED
@@ -31,6 +31,14 @@ In order to communicate with an OpenStack API you will need to tell Knife your O
31
31
  knife[:openstack_tenant] = "Your OpenStack tenant name"
32
32
  knife[:openstack_region] = "Your OpenStack Region"
33
33
 
34
+ All of Fog's `openstack` options (`openstack_domain_name`, `openstack_project_name`, ...) are supported. This includes support for the OpenStack Identity v3 API:
35
+
36
+ knife[:openstack_auth_url] = "http://cloud.mycompany.com:5000/v3/auth/tokens"
37
+ knife[:openstack_username] = "Your OpenStack Dashboard username"
38
+ knife[:openstack_password] = "Your OpenStack Dashboard password"
39
+ knife[:openstack_project_name] = "Your OpenStack project"
40
+ knife[:openstack_domain_name] = "Your OpenStack domain"
41
+
34
42
  If your knife.rb file will be checked into a SCM system (ie readable by others) you may want to read the values from environment variables. For example, using the conventions of [OpenStack's RC file](http://docs.openstack.org/user-guide/content/cli_openrc.html) (note the `openstack_auth_url`):
35
43
 
36
44
  knife[:openstack_auth_url] = "#{ENV['OS_AUTH_URL']}/tokens"
@@ -18,18 +18,7 @@ class Chef
18
18
  Chef::Log.debug("openstack_insecure #{Chef::Config[:knife][:openstack_insecure]}")
19
19
  Chef::Log.debug("openstack_region #{Chef::Config[:knife][:openstack_region]}")
20
20
 
21
- super(options.merge(auth_params: {
22
- provider: 'OpenStack',
23
- openstack_username: Chef::Config[:knife][:openstack_username],
24
- openstack_api_key: Chef::Config[:knife][:openstack_password],
25
- openstack_auth_url: Chef::Config[:knife][:openstack_auth_url],
26
- openstack_endpoint_type: Chef::Config[:knife][:openstack_endpoint_type],
27
- openstack_tenant: Chef::Config[:knife][:openstack_tenant],
28
- openstack_region: Chef::Config[:knife][:openstack_region],
29
- connection_options: {
30
- ssl_verify_peer: !Chef::Config[:knife][:openstack_insecure]
31
- }
32
- }))
21
+ super(options.merge(auth_params: get_auth_params))
33
22
  end
34
23
 
35
24
  # add alternate user defined api_endpoint value.
@@ -54,6 +43,28 @@ class Chef
54
43
  rescue Excon::Errors::BadRequest => e
55
44
  handle_excon_exception(CloudExceptions::KnifeCloudError, e)
56
45
  end
46
+
47
+ def get_auth_params
48
+ load_fog_gem
49
+ params = {
50
+ provider: 'OpenStack',
51
+ connection_options: {
52
+ ssl_verify_peer: !Chef::Config[:knife][:openstack_insecure]
53
+ }
54
+ }
55
+
56
+ (
57
+ Fog::Compute::OpenStack.requirements +
58
+ Fog::Compute::OpenStack.recognized -
59
+ [:openstack_api_key]
60
+ ).each do |k|
61
+ next unless k.to_s.start_with?('openstack')
62
+ params[k] = Chef::Config[:knife][k]
63
+ end
64
+ params[:openstack_api_key] = Chef::Config[:knife][:openstack_password] || Chef::Config[:knife][:openstack_api_key]
65
+
66
+ params
67
+ end
57
68
  end
58
69
  end
59
70
  end
@@ -1,6 +1,6 @@
1
1
  module Knife
2
2
  module OpenStack
3
- VERSION = '1.3.2.pre.1'
3
+ VERSION = '1.3.2.rc1'
4
4
  MAJOR, MINOR, TINY = VERSION.split('.')
5
5
  end
6
6
  end
@@ -75,7 +75,7 @@ describe Chef::Knife::Cloud::OpenstackServerCreate do
75
75
 
76
76
  context 'for Linux' do
77
77
  before do
78
- @config = { openstack_floating_ip: '-1', bootstrap_ip_address: '75.101.253.10', ssh_password: 'password' }
78
+ @config = { openstack_floating_ip: '-1', bootstrap_ip_address: '75.101.253.10', ssh_password: 'password', hints: { "openstack" => {} }}
79
79
  @knife_openstack_create.config[:distro] = 'chef-full'
80
80
  @bootstrapper = Chef::Knife::Cloud::Bootstrapper.new(@config)
81
81
  @ssh_bootstrap_protocol = Chef::Knife::Cloud::SshBootstrapProtocol.new(@config)
@@ -95,7 +95,7 @@ describe Chef::Knife::Cloud::OpenstackServerCreate do
95
95
 
96
96
  context 'for Windows' do
97
97
  before do
98
- @config = { openstack_floating_ip: '-1', image_os_type: 'windows', bootstrap_ip_address: '75.101.253.10', bootstrap_protocol: 'winrm', ssh_password: 'password' }
98
+ @config = { openstack_floating_ip: '-1', image_os_type: 'windows', bootstrap_ip_address: '75.101.253.10', bootstrap_protocol: 'winrm', ssh_password: 'password', hints: { "openstack" => {} } }
99
99
  @knife_openstack_create.config[:image_os_type] = 'windows'
100
100
  @knife_openstack_create.config[:bootstrap_protocol] = 'winrm'
101
101
  @knife_openstack_create.config[:distro] = 'windows-chef-client-msi'
@@ -39,9 +39,10 @@ describe Chef::Knife::Cloud::OpenstackServerList do
39
39
  end
40
40
 
41
41
  it 'lists formatted list of resources' do
42
- expect(instance.ui).to receive(:list).with(['Name', 'Instance ID', 'Public IP', 'Private IP', 'Flavor', 'Image', 'Keypair', 'State', 'Availability Zone',
43
- 'ubuntu01', 'resource-1', '172.31.6.132', '172.31.6.133', '1', 'image1', 'keypair', 'ACTIVE', 'test zone',
44
- 'windows2008', 'resource-2', '172.31.6.132', nil, 'id2', 'image2', 'keypair', 'ACTIVE', 'test zone', 'windows2008', 'resource-3-err', nil, nil, 'id2', 'image2', 'keypair', 'ERROR', 'test zone'], :uneven_columns_across, 9)
42
+ expect(instance.ui).to receive(:list).with(['Name', 'Instance ID', 'Addresses', 'Flavor', 'Image', 'Keypair', 'State', 'Availability Zone',
43
+ 'ubuntu01', 'resource-1', 'public:IPv4: 172.31.6.132', '1', 'image1', 'keypair', 'ACTIVE', 'test zone',
44
+ 'windows2008', 'resource-2', 'public:IPv4: 172.31.6.132', 'id2', 'image2', 'keypair', 'ACTIVE', 'test zone',
45
+ 'windows2008', 'resource-3-err', '', 'id2', 'image2', 'keypair', 'ERROR', 'test zone'], :uneven_columns_across, 8)
45
46
  instance.run
46
47
  end
47
48
 
@@ -54,22 +55,22 @@ describe Chef::Knife::Cloud::OpenstackServerList do
54
55
  end
55
56
 
56
57
  it 'lists formatted list of resources on chef data option set' do
57
- expect(instance.ui).to receive(:list).with(['Name', 'Instance ID', 'Public IP', 'Private IP', 'Flavor', 'Image', 'Keypair', 'State', 'Availability Zone', 'Chef Node Name', 'Environment', 'FQDN', 'Runlist', 'Tags', 'Platform',
58
- 'server-4', 'server-4', '172.31.6.132', '172.31.6.133', '1', 'image1', 'keypair', 'ACTIVE', 'test zone', 'server-4', '_default', 'testfqdnnode.us', '[]', '[]', 'ubuntu',
59
- 'ubuntu01', 'resource-1', '172.31.6.132', '172.31.6.133', '1', 'image1', 'keypair', 'ACTIVE', 'test zone', '', '', '', '', '', '',
60
- 'windows2008', 'resource-2', '172.31.6.132', nil, 'id2', 'image2', 'keypair', 'ACTIVE', 'test zone', '', '', '', '', '', '',
61
- 'windows2008', 'resource-3-err', nil, nil, 'id2', 'image2', 'keypair', 'ERROR', 'test zone', '', '', '', '', '', ''], :uneven_columns_across, 15)
58
+ expect(instance.ui).to receive(:list).with(['Name', 'Instance ID', 'Addresses', 'Flavor', 'Image', 'Keypair', 'State', 'Availability Zone', 'Chef Node Name', 'Environment', 'FQDN', 'Runlist', 'Tags', 'Platform',
59
+ 'server-4', 'server-4', 'public:IPv4: 172.31.6.132', '1', 'image1', 'keypair', 'ACTIVE', 'test zone', 'server-4', '_default', 'testfqdnnode.us', '[]', '[]', 'ubuntu',
60
+ 'ubuntu01', 'resource-1', 'public:IPv4: 172.31.6.132', '1', 'image1', 'keypair', 'ACTIVE', 'test zone', '', '', '', '', '', '',
61
+ 'windows2008', 'resource-2', 'public:IPv4: 172.31.6.132', 'id2', 'image2', 'keypair', 'ACTIVE', 'test zone', '', '', '', '', '', '',
62
+ 'windows2008', 'resource-3-err', '', 'id2', 'image2', 'keypair', 'ERROR', 'test zone', '', '', '', '', '', ''], :uneven_columns_across, 14)
62
63
  instance.run
63
64
  end
64
65
 
65
66
  it 'lists formatted list of resources on chef-data and chef-node-attribute option set' do
66
67
  instance.config[:chef_node_attribute] = 'platform_family'
67
68
  expect(@node).to receive(:attribute?).with('platform_family').and_return(true)
68
- expect(instance.ui).to receive(:list).with(['Name', 'Instance ID', 'Public IP', 'Private IP', 'Flavor', 'Image', 'Keypair', 'State', 'Availability Zone', 'Chef Node Name', 'Environment', 'FQDN', 'Runlist', 'Tags', 'Platform', 'platform_family',
69
- 'server-4', 'server-4', '172.31.6.132', '172.31.6.133', '1', 'image1', 'keypair', 'ACTIVE', 'test zone', 'server-4', '_default', 'testfqdnnode.us', '[]', '[]', 'ubuntu', 'debian',
70
- 'ubuntu01', 'resource-1', '172.31.6.132', '172.31.6.133', '1', 'image1', 'keypair', 'ACTIVE', 'test zone', '', '', '', '', '', '', '',
71
- 'windows2008', 'resource-2', '172.31.6.132', nil, 'id2', 'image2', 'keypair', 'ACTIVE', 'test zone', '', '', '', '', '', '', '',
72
- 'windows2008', 'resource-3-err', nil, nil, 'id2', 'image2', 'keypair', 'ERROR', 'test zone', '', '', '', '', '', '', ''], :uneven_columns_across, 16)
69
+ expect(instance.ui).to receive(:list).with(['Name', 'Instance ID', 'Addresses', 'Flavor', 'Image', 'Keypair', 'State', 'Availability Zone', 'Chef Node Name', 'Environment', 'FQDN', 'Runlist', 'Tags', 'Platform', 'platform_family',
70
+ 'server-4', 'server-4', 'public:IPv4: 172.31.6.132', '1', 'image1', 'keypair', 'ACTIVE', 'test zone', 'server-4', '_default', 'testfqdnnode.us', '[]', '[]', 'ubuntu', 'debian',
71
+ 'ubuntu01', 'resource-1', 'public:IPv4: 172.31.6.132', '1', 'image1', 'keypair', 'ACTIVE', 'test zone', '', '', '', '', '', '', '',
72
+ 'windows2008', 'resource-2', 'public:IPv4: 172.31.6.132', 'id2', 'image2', 'keypair', 'ACTIVE', 'test zone', '', '', '', '', '', '', '',
73
+ 'windows2008', 'resource-3-err', '', 'id2', 'image2', 'keypair', 'ERROR', 'test zone', '', '', '', '', '', '', ''], :uneven_columns_across, 15)
73
74
  instance.run
74
75
  end
75
76
 
@@ -84,11 +85,11 @@ describe Chef::Knife::Cloud::OpenstackServerList do
84
85
  it 'not display chef-data on chef-node-attribute set but chef-data option missing' do
85
86
  instance.config[:chef_data] = false
86
87
  instance.config[:chef_node_attribute] = 'platform_family'
87
- expect(instance.ui).to receive(:list).with(['Name', 'Instance ID', 'Public IP', 'Private IP', 'Flavor', 'Image', 'Keypair', 'State', 'Availability Zone',
88
- 'server-4', 'server-4', '172.31.6.132', '172.31.6.133', '1', 'image1', 'keypair', 'ACTIVE', 'test zone',
89
- 'ubuntu01', 'resource-1', '172.31.6.132', '172.31.6.133', '1', 'image1', 'keypair', 'ACTIVE', 'test zone',
90
- 'windows2008', 'resource-2', '172.31.6.132', nil, 'id2', 'image2', 'keypair', 'ACTIVE', 'test zone',
91
- 'windows2008', 'resource-3-err', nil, nil, 'id2', 'image2', 'keypair', 'ERROR', 'test zone'], :uneven_columns_across, 9)
88
+ expect(instance.ui).to receive(:list).with(['Name', 'Instance ID', 'Addresses', 'Flavor', 'Image', 'Keypair', 'State', 'Availability Zone',
89
+ 'server-4', 'server-4', 'public:IPv4: 172.31.6.132', '1', 'image1', 'keypair', 'ACTIVE', 'test zone',
90
+ 'ubuntu01', 'resource-1', 'public:IPv4: 172.31.6.132', '1', 'image1', 'keypair', 'ACTIVE', 'test zone',
91
+ 'windows2008', 'resource-2', 'public:IPv4: 172.31.6.132', 'id2', 'image2', 'keypair', 'ACTIVE', 'test zone',
92
+ 'windows2008', 'resource-3-err', '', 'id2', 'image2', 'keypair', 'ERROR', 'test zone'], :uneven_columns_across, 8)
92
93
  instance.run
93
94
  end
94
95
  end
@@ -148,7 +148,7 @@ describe Chef::Knife::Cloud::OpenstackServerCreate do
148
148
 
149
149
  it 'ensures default value for metadata' do
150
150
  options = @instance.options
151
- expect(options[:metadata][:default]).to be.nil?
151
+ expect(options[:metadata][:default]).to be_nil
152
152
  end
153
153
  end
154
154
 
@@ -33,21 +33,21 @@ describe Chef::Knife::Cloud::OpenstackService do
33
33
  end
34
34
 
35
35
  it 'sets the api_endpoint in auth params' do
36
- expect(@instance.instance_variable_get(:@auth_params)[:openstack_auth_url]).to be.nil?
36
+ expect(@instance.instance_variable_get(:@auth_params)[:openstack_auth_url]).to be_nil
37
37
  @instance.add_api_endpoint
38
38
  expect(@instance.instance_variable_get(:@auth_params)[:openstack_auth_url]).to be == @api_endpoint
39
39
  end
40
40
 
41
41
  it 'does not set the endpoint when --api-endpoint option is missing' do
42
42
  Chef::Config[:knife][:api_endpoint] = nil
43
- expect(@instance.instance_variable_get(:@auth_params)[:openstack_auth_url]).to be.nil?
43
+ expect(@instance.instance_variable_get(:@auth_params)[:openstack_auth_url]).to be_nil
44
44
  @instance.add_api_endpoint
45
45
  expect(@instance.instance_variable_get(:@auth_params)[:openstack_auth_url]).to_not be == @api_endpoint
46
- expect(@instance.instance_variable_get(:@auth_params)[:openstack_auth_url]).to be.nil?
46
+ expect(@instance.instance_variable_get(:@auth_params)[:openstack_auth_url]).to be_nil
47
47
  end
48
48
 
49
49
  it "doesn't set an OpenStack endpoint type by default" do
50
- expect(Chef::Config[:knife][:openstack_endpoint_type]).to be.nil?
50
+ expect(Chef::Config[:knife][:openstack_endpoint_type]).to be_nil
51
51
  end
52
52
  end
53
53
 
@@ -86,4 +86,42 @@ describe Chef::Knife::Cloud::OpenstackService do
86
86
  end
87
87
  end
88
88
  end
89
+
90
+ describe '#get_auth_params' do
91
+ let(:auth_params) do
92
+ Chef::Knife::Cloud::OpenstackService.new.instance_variable_get(:@auth_params)
93
+ end
94
+
95
+ it 'sets ssl_verify_peer to false when openstack_insecure is true' do
96
+ Chef::Config[:knife][:openstack_insecure] = true
97
+ expect(auth_params[:connection_options][:ssl_verify_peer]).to be false
98
+ end
99
+
100
+ it 'only copies openstack options from Fog' do
101
+ params = auth_params.keys - [:provider, :connection_options]
102
+ expect(params.all? { |p| p.to_s.start_with?('openstack') }).to be true
103
+ end
104
+
105
+ context 'when openstack_password is set' do
106
+ before(:each) do
107
+ @expected = 'password'
108
+ Chef::Config[:knife][:openstack_password] = @expected
109
+ end
110
+
111
+ it 'sets openstack_api_key from openstack_password' do
112
+ expect(auth_params[:openstack_api_key]).to be == @expected
113
+ end
114
+
115
+ it 'prefers openstack_password over openstack_api_key' do
116
+ Chef::Config[:knife][:openstack_api_key] = 'unexpected'
117
+ expect(auth_params[:openstack_api_key]).to be == @expected
118
+ end
119
+ end
120
+
121
+ it 'uses openstack_api_key if openstack_password is not set' do
122
+ @expected = 'password'
123
+ Chef::Config[:knife][:openstack_api_key] = @expected
124
+ expect(auth_params[:openstack_api_key]).to be == @expected
125
+ end
126
+ end
89
127
  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.3.2.pre.1
4
+ version: 1.3.2.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-09-15 00:00:00.000000000 Z
11
+ date: 2015-10-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fog