diff --git a/attributes/default.rb b/attributes/default.rb index 719c55d9..d0edef89 100644 --- a/attributes/default.rb +++ b/attributes/default.rb @@ -27,7 +27,7 @@ default['openstack']['common']['custom_template_banner'] = ' ' # version for python-openstackclient -default['openstack']['common']['client_version'] = '3.4.1' +default['openstack']['common']['client_version'] = '3.6.0' # OpenStack services and their project names default['openstack']['common']['services'] = { diff --git a/libraries/cli.rb b/libraries/cli.rb index 7b6c3af7..815553ee 100644 --- a/libraries/cli.rb +++ b/libraries/cli.rb @@ -30,14 +30,17 @@ module ::Openstack # @param [String] user name # @param [String] tenant name # @return [Hash] environment - def openstack_command_env(name, tenant) + def openstack_command_env(name, project, user_domain, project_domain) identity_admin_endpoint = admin_endpoint 'identity' auth_uri = ::URI.decode identity_admin_endpoint.to_s pass = get_password 'user', name { 'OS_USERNAME' => name, 'OS_PASSWORD' => pass, - 'OS_TENANT_NAME' => tenant, + 'OS_PROJECT_NAME' => project, + 'OS_USER_DOMAIN_NAME' => user_domain, + 'OS_PROJECT_DOMAIN_NAME' => project_domain, + 'OS_IDENTITY_API_VERSION' => '3', 'OS_AUTH_URL' => auth_uri } end diff --git a/spec/cli_spec.rb b/spec/cli_spec.rb index cb53fa99..7bf09bf0 100644 --- a/spec/cli_spec.rb +++ b/spec/cli_spec.rb @@ -18,7 +18,7 @@ describe 'openstack-common::default' do node.set['openstack']['endpoints']['admin']['identity'] = { host: '127.0.0.1', scheme: 'http', - path: '/v2.0', + path: '/v3', port: '35357' } end @@ -28,12 +28,15 @@ describe 'openstack-common::default' do .and_return('pass') expect( - subject.openstack_command_env('name', 'tenant') + subject.openstack_command_env('name', 'project', 'default', 'default') ).to eq( 'OS_USERNAME' => 'name', 'OS_PASSWORD' => 'pass', - 'OS_TENANT_NAME' => 'tenant', - 'OS_AUTH_URL' => 'http://127.0.0.1:35357/v2.0' + 'OS_PROJECT_NAME' => 'project', + 'OS_USER_DOMAIN_NAME' => 'default', + 'OS_PROJECT_DOMAIN_NAME' => 'default', + 'OS_AUTH_URL' => 'http://127.0.0.1:35357/v3', + 'OS_IDENTITY_API_VERSION' => '3' ) end end @@ -44,8 +47,11 @@ describe 'openstack-common::default' do { 'OS_USERNAME' => 'name', 'OS_PASSWORD' => 'pass', - 'OS_TENANT_NAME' => 'tenant', - 'OS_AUTH_URL' => 'http://127.0.0.1:35357/v2.0' + 'OS_PROJECT_NAME' => 'project', + 'OS_USER_DOMAIN_NAME' => 'default', + 'OS_PROJECT_DOMAIN_NAME' => 'default', + 'OS_AUTH_URL' => 'http://127.0.0.1:35357/v3', + 'OS_IDENTITY_API_VERSION' => 3 } allow(subject).to receive(:shell_out).with( %w(openstack user list), @@ -61,8 +67,11 @@ describe 'openstack-common::default' do { 'OS_USERNAME' => 'name', 'OS_PASSWORD' => 'pass', - 'OS_TENANT_NAME' => 'tenant', - 'OS_AUTH_URL' => 'http://127.0.0.1:35357/v2.0' + 'OS_PROJECT_NAME' => 'project', + 'OS_USER_DOMAIN_NAME' => 'default', + 'OS_PROJECT_DOMAIN_NAME' => 'default', + 'OS_AUTH_URL' => 'http://127.0.0.1:35357/v3', + 'OS_IDENTITY_API_VERSION' => 3 } allow(subject).to receive(:shell_out).with( %w(openstack --key1 value1 --key2 value2 --key3 user list), @@ -78,16 +87,16 @@ describe 'openstack-common::default' do { 'OS_USERNAME' => 'name', 'OS_PASSWORD' => 'pass', - 'OS_TENANT_NAME' => 'tenant', - 'OS_AUTH_URL' => 'http://127.0.0.1:35357/v2.0' + 'OS_PROJECT_NAME' => 'project', + 'OS_USER_DOMAIN_NAME' => 'default', + 'OS_PROJECT_DOMAIN_NAME' => 'default', + 'OS_AUTH_URL' => 'http://127.0.0.1:35357/v3', + 'OS_IDENTITY_API_VERSION' => 3 } allow(subject).to receive(:shell_out).with( %w(openstack user list), env: env ).and_return double('shell_out', exitstatus: 123, stdout: 'fail', stderr: '') - - # TODO: need to figure out why this won't work. - # expect(subject.openstack_command('keystone', 'user-list', env)).to fail end end @@ -97,8 +106,11 @@ describe 'openstack-common::default' do { 'OS_USERNAME' => 'name', 'OS_PASSWORD' => 'pass', - 'OS_TENANT_NAME' => 'tenant', - 'OS_AUTH_URL' => 'http://127.0.0.1:35357/v2.0' + 'OS_PROJECT_NAME' => 'project', + 'OS_USER_DOMAIN_NAME' => 'default', + 'OS_PROJECT_DOMAIN_NAME' => 'default', + 'OS_AUTH_URL' => 'http://127.0.0.1:35357/v3', + 'OS_IDENTITY_API_VERSION' => 3 } allow(subject).to receive(:openstack_command).with('openstack', 'user list', env, {}) allow(subject).to receive(:prettytable_to_array) @@ -114,8 +126,11 @@ describe 'openstack-common::default' do { 'OS_USERNAME' => 'name', 'OS_PASSWORD' => 'pass', - 'OS_TENANT_NAME' => 'tenant', - 'OS_AUTH_URL' => 'http://127.0.0.1:35357/v2.0' + 'OS_PROJECT_NAME' => 'project', + 'OS_USER_DOMAIN_NAME' => 'default', + 'OS_PROJECT_DOMAIN_NAME' => 'default', + 'OS_AUTH_URL' => 'http://127.0.0.1:35357/v3', + 'OS_IDENTITY_API_VERSION' => 3 } end @@ -142,8 +157,11 @@ describe 'openstack-common::default' do { 'OS_USERNAME' => 'name', 'OS_PASSWORD' => 'pass', - 'OS_TENANT_NAME' => 'tenant', - 'OS_AUTH_URL' => 'http://127.0.0.1:35357/v2.0' + 'OS_PROJECT_NAME' => 'project', + 'OS_USER_DOMAIN_NAME' => 'default', + 'OS_PROJECT_DOMAIN_NAME' => 'default', + 'OS_AUTH_URL' => 'http://127.0.0.1:35357/v3', + 'OS_IDENTITY_API_VERSION' => 3 } allow(subject).to receive(:openstack_command).with('openstack', 'network list', env, {}) allow(subject).to receive(:prettytable_to_array) diff --git a/spec/client_spec.rb b/spec/client_spec.rb index a3cf789e..a2d31dd9 100644 --- a/spec/client_spec.rb +++ b/spec/client_spec.rb @@ -15,7 +15,7 @@ describe 'openstack-common::client' do it do expect(chef_run).to install_python_package('python-openstackclient') - .with(version: '3.4.1') + .with(version: '3.6.0') end end end