diff --git a/.rubocop.yml b/.rubocop.yml index e63c4753..cf8e2510 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -2,14 +2,14 @@ inherit_from: .rubocop_todo.yml AllCops: Include: - - metadata.rb - - Gemfile - - attributes/** - - libraries/** - - providers/** - - recipes/** - - resources/** - - spec/** + - ./metadata.rb + - ./Gemfile + - attributes/**/* + - libraries/**/* + - providers/**/* + - recipes/**/* + - resources/**/* + - spec/**/* Exclude: - .cookbooks/**/* - berks-cookbooks/**/* @@ -17,8 +17,8 @@ AllCops: Encoding: Exclude: - - metadata.rb - - Gemfile + - ./metadata.rb + - ./Gemfile NumericLiterals: Enabled: false diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 0076b117..db359c18 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -1,15 +1,19 @@ # This configuration was generated by `rubocop --auto-gen-config` -# on 2015-06-04 16:44:34 +0200 using RuboCop version 0.28.0. +# on 2015-08-28 09:19:29 -0500 using RuboCop version 0.32.1. # The point is for the user to remove these configuration records # one by one as the offenses are removed from the code base. # Note that changes in the inspected code, or installation of new # versions of RuboCop, may require this file to be generated again. +# Offense count: 2 +Lint/NestedMethodDefinition: + Enabled: false + # Offense count: 9 Metrics/AbcSize: Max: 31 -# Offense count: 1 +# Offense count: 2 Metrics/PerceivedComplexity: Max: 14 diff --git a/attributes/database.rb b/attributes/database.rb index 2454f7c9..1a227e33 100644 --- a/attributes/database.rb +++ b/attributes/database.rb @@ -25,7 +25,7 @@ # used in an OpenStack deployment. # # There is no 'scheme' key. Instead, there is a 'service_type' key that should -# contain one of 'sqlite', 'mysql', 'db2' or 'postgresql' +# contain one of 'sqlite', 'mysql', or 'postgresql' # # The ::Openstack::db() library routine allows a lookup from any recipe # to this array, returning the host information for the server that contains @@ -90,7 +90,6 @@ default['openstack']['db']['charset'] = { postgresql: nil, pgsql: nil, sqlite: nil, - db2: 'utf8', nosql: nil, galera: 'utf8' } @@ -102,7 +101,6 @@ default['openstack']['db']['options'] = { mariadb: "?charset=#{node['openstack']['db']['charset']['mariadb']}", postgresql: '', sqlite: '', - db2: "?charset=#{node['openstack']['db']['charset']['db2']}", nosql: '', galera: "?charset=#{node['openstack']['db']['charset']['galera']}" } @@ -118,7 +116,6 @@ when 'rhel' default['openstack']['db']['python_packages']['mysql'] = ['MySQL-python'] default['openstack']['db']['python_packages']['mariadb'] = ['MySQL-python'] default['openstack']['db']['python_packages']['percona-cluster'] = ['MySQL-python'] - default['openstack']['db']['python_packages']['db2'] = ['python-ibm-db', 'python-ibm-db-sa'] default['openstack']['db']['python_packages']['galera'] = ['MySQL-python'] when 'suse' default['openstack']['db']['service_type'] = 'mysql' @@ -131,7 +128,6 @@ when 'debian' default['openstack']['db']['python_packages']['mysql'] = ['python-mysqldb'] default['openstack']['db']['python_packages']['mariadb'] = ['python-mysqldb'] default['openstack']['db']['python_packages']['percona-cluster'] = ['python-mysqldb'] - default['openstack']['db']['python_packages']['db2'] = ['ibm-db', 'ibm-db-sa'] default['openstack']['db']['python_packages']['galera'] = ['python-mysqldb'] end diff --git a/attributes/default.rb b/attributes/default.rb index a8b4da67..521b955b 100644 --- a/attributes/default.rb +++ b/attributes/default.rb @@ -112,7 +112,7 @@ default['openstack']['secret']['user_passwords_data_bag'] = 'user_passwords' # needs. # The coordinated release of OpenStack codename -default['openstack']['release'] = 'kilo' +default['openstack']['release'] = 'liberty' # The Ubuntu Cloud Archive has packages for multiple Ubuntu releases. For # more information, see: https://wiki.ubuntu.com/ServerTeam/CloudArchive. @@ -134,10 +134,10 @@ default['openstack']['zypp']['uri'] = 'http://download.opensuse.org/repositories default['openstack']['yum']['rdo_enabled'] = true default['openstack']['yum']['rdo_delorean_enabled'] = false -default['openstack']['yum']['uri'] = 'http://repos.fedorapeople.org/repos/openstack/openstack-kilo/el7' +default['openstack']['yum']['uri'] = 'http://repos.fedorapeople.org/repos/openstack/openstack-liberty/el7' # Add rdo-testing repo from rdo-release.rpm -default['openstack']['yum']['testing-uri'] = 'http://repos.fedorapeople.org/repos/openstack/openstack-kilo/testing/el7' -default['openstack']['yum']['repo-key'] = 'https://raw.githubusercontent.com/redhat-openstack/rdo-release/master/RPM-GPG-KEY-RDO-kilo' +default['openstack']['yum']['testing-uri'] = 'http://repos.fedorapeople.org/repos/openstack/openstack-liberty/testing/el7' +default['openstack']['yum']['repo-key'] = 'https://raw.githubusercontent.com/redhat-openstack/rdo-release/master/RPM-GPG-KEY-RDO-liberty' # Enforcing GnuPG signature check for RDO repo. Set this to false if you want to disable the check. default['openstack']['yum']['gpgcheck'] = true # ======================== OpenStack Endpoints ================================ diff --git a/bootstrap.sh b/bootstrap.sh index fc254b6e..2ab7b983 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -5,7 +5,7 @@ sudo apt-get -y install build-essential liblzma-dev zlib1g-dev # install chefdk -chefdk=chefdk_0.4.0-1_amd64.deb +chefdk=chefdk_0.7.0-1_amd64.deb wget -nv -t 3 https://opscode-omnibus-packages.s3.amazonaws.com/ubuntu/12.04/x86_64/$chefdk sudo dpkg -i $chefdk rm $chefdk diff --git a/libraries/endpoints.rb b/libraries/endpoints.rb index db228fd8..7655700e 100644 --- a/libraries/endpoints.rb +++ b/libraries/endpoints.rb @@ -69,15 +69,6 @@ module ::Openstack # Normalize to the SQLAlchemy standard db type identifier case type - when 'db2' - # NoSQL is used for telemetry in the DB2 case - if service == 'telemetry' && node['openstack']['db']['telemetry']['nosql']['used'] - options = info['options']['nosql'] - port = info['nosql']['port'] - type = 'db2' - else - type = 'ibm_db_sa' - end when 'pgsql' type = 'postgresql' when 'mariadb', 'galera', 'percona-cluster' @@ -86,7 +77,7 @@ module ::Openstack # Build uri case type - when 'mysql', 'postgresql', 'db2', 'ibm_db_sa' + when 'mysql', 'postgresql' "#{type}://#{user}:#{pass}@#{host}:#{port}/#{name}#{options}" when 'sqlite' # SQLite uses filepaths not db name diff --git a/libraries/search.rb b/libraries/search.rb index 533819df..3844dc1d 100644 --- a/libraries/search.rb +++ b/libraries/search.rb @@ -24,7 +24,7 @@ module ::Openstack # # @param [String] The role or recipe to be found. # @return [Array] The matching result or an empty list. - def search_for(r, &block) # rubocop:disable MethodLength + def search_for(r, &block) role_query = "(chef_environment:#{node.chef_environment} AND roles:#{r})" recipe_query = "(chef_environment:#{node.chef_environment} AND recipes:#{r})".sub('::', '\:\:') query = "#{role_query} OR #{recipe_query}" @@ -45,7 +45,7 @@ module ::Openstack # @param [String] role The role to be found (optional). # @return [Array] A list of memcached servers in format # ':'. - def memcached_servers(role = 'infra-caching') # rubocop:disable MethodLength + def memcached_servers(role = 'infra-caching') if !node['openstack']['memcached_servers'] search_for(role).map do |n| listen = n['memcached']['listen'] @@ -68,7 +68,7 @@ module ::Openstack # # @return [String] Rabbit servers joined by a comma in # the format of ':'. - def rabbit_servers # rubocop:disable MethodLength + def rabbit_servers if node['openstack']['mq']['servers'] servers = node['openstack']['mq']['servers'] port = node['openstack']['endpoints']['mq']['port'] diff --git a/libraries/uri.rb b/libraries/uri.rb index 71896aed..a21cb652 100644 --- a/libraries/uri.rb +++ b/libraries/uri.rb @@ -55,7 +55,7 @@ module ::Openstack return nil if paths.length == 0 leadingslash = paths[0][0] == '/' ? '/' : '' trailingslash = paths[-1][-1] == '/' ? '/' : '' - paths.map! { |path| path.sub(/^\/+/, '').sub(/\/+$/, '') } + paths.map! { |path| path.sub(%r{^\/+}, '').sub(%r{\/+$}, '') } leadingslash + paths.join('/') + trailingslash end diff --git a/metadata.rb b/metadata.rb index 355c673c..60a3a335 100644 --- a/metadata.rb +++ b/metadata.rb @@ -1,10 +1,10 @@ name 'openstack-common' maintainer 'openstack-chef' -maintainer_email 'opscode-chef-openstack@googlegroups.com' +maintainer_email 'openstack-dev@lists.openstack.org' license 'Apache 2.0' description 'Common OpenStack attributes, libraries and recipes.' long_description IO.read(File.join(File.dirname(__FILE__), 'README.md')) -version '11.5.1' +version '12.0.0' recipe 'openstack-common', 'Installs/Configures common recipes' recipe 'openstack-common::set_endpoints_by_interface', 'Set endpoints by interface' diff --git a/providers/database.rb b/providers/database.rb index e3709774..412f83a8 100644 --- a/providers/database.rb +++ b/providers/database.rb @@ -13,15 +13,9 @@ use_inline_resources if defined?(use_inline_resources) action :create do info - ### db2 can only be used with an IBM internal cookbook - if @db_type == 'db2' - create_db2(@db_name) # create database - create_db2_user(@user, @pass, @db_name) # create user - else - create_db(@db_name, @db_prov, @connection_info, @db_type) # create database - create_db_user(@user, @user_prov, @connection_info, @pass) # create user - grant_db_privileges(@user, @user_prov, @connection_info, @pass, @db_name) # grant privileges - end + create_db(@db_name, @db_prov, @connection_info, @db_type) # create database + create_db_user(@user, @user_prov, @connection_info, @pass) # create user + grant_db_privileges(@user, @user_prov, @connection_info, @pass, @db_name) # grant privileges end private @@ -37,7 +31,7 @@ def info @db_name = service_info['db_name'] @user = new_resource.user @pass = new_resource.pass - db_types unless @db_type == 'db2' ## db2 is only IBM internal + db_types connection_info end @@ -65,24 +59,6 @@ def connection_info } end -### this db2 resource does only exist in an IBM internal cookbook -def create_db2(db_name) - db2_database "create database #{db_name}" do - db_name db_name - action :create - end -end - -### this db2 resource does only exist in an IBM internal cookbook -def create_db2_user(user, pass, db_name) - db2_user "create database user #{user}" do - db_user user - db_pass pass - db_name db_name - action :create - end -end - def create_db(db_name, db_prov, connection_info, db_type) database "create database #{db_name}" do provider db_prov diff --git a/spec/cli_spec.rb b/spec/cli_spec.rb index 44e79380..d31c8529 100644 --- a/spec/cli_spec.rb +++ b/spec/cli_spec.rb @@ -42,7 +42,7 @@ describe 'openstack-common::default' do allow(subject).to receive(:shell_out).with( ['keystone', 'user-list'], env: env - ).and_return double('shell_out', exitstatus: 0, stdout: 'good', stderr: '') + ).and_return double('shell_out', exitstatus: 0, stdout: 'good', stderr: '') result = subject.openstack_command('keystone', 'user-list', env) expect(result).to eq('good') @@ -59,7 +59,7 @@ describe 'openstack-common::default' do allow(subject).to receive(:shell_out).with( %w(keystone --key1 value1 --key2 value2 --key3 user-list), env: env - ).and_return double('shell_out', exitstatus: 0, stdout: 'good', stderr: '') + ).and_return double('shell_out', exitstatus: 0, stdout: 'good', stderr: '') result = subject.openstack_command('keystone', 'user-list', env, 'key1' => 'value1', 'key2' => 'value2', 'key3' => '') expect(result).to eq('good') @@ -76,7 +76,7 @@ describe 'openstack-common::default' do allow(subject).to receive(:shell_out).with( ['keystone', 'user-list'], env: env - ).and_return double('shell_out', exitstatus: 123, stdout: 'fail', stderr: '') + ).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 diff --git a/spec/database_provider_spec.rb b/spec/database_provider_spec.rb index 451e5b0b..d8167d66 100644 --- a/spec/database_provider_spec.rb +++ b/spec/database_provider_spec.rb @@ -94,29 +94,6 @@ describe 'test-openstack-common-database::default' do end end - context 'db2' do - before do - node.override['openstack']['db']['service'] = { service_type: 'db2', db_name: 'service_db2' } - end - it 'creates the database with the db2 resource' do - pending('db2 resource is currently only available from an IBM internal cookbook') - expect(chef_run).to create_db2_database('create database service_db2') - .with( - database_name: 'service_db' - ) - end - - it 'creates the database use with the db2_user resource' do - pending('db2 resource is currently only available from an IBM internal cookbook') - expect(chef_run).to create_database_user('create database user db_user') - .with( - db_user: 'db_user', - db_pass: 'db_pass', - db_name: 'service_db2' - ) - end - end - context 'galera' do before do node.override['openstack']['db']['service'] = { service_type: 'galera', port: 3306, db_name: 'service_db' } diff --git a/spec/default-suse_spec.rb b/spec/default-suse_spec.rb index 063f4498..8c166a21 100644 --- a/spec/default-suse_spec.rb +++ b/spec/default-suse_spec.rb @@ -15,7 +15,7 @@ describe 'openstack-common::default' do allow(Mixlib::ShellOut).to receive_message_chain( new: 'rpm -qa gpg-pubkey', run_command: nil, stdout: nil, new: 'zypper repos --export -').and_return( - 'http://download.opensuse.org/repositories/Cloud:/OpenStack:/Kilo/SLE_11_SP3/') + 'http://download.opensuse.org/repositories/Cloud:/OpenStack:/Liberty/SLE_11_SP3/') expect(chef_run).to run_bash('add repository key') expect(chef_run).not_to run_execute('add repository').with(command: /zypper addrepo/) @@ -30,7 +30,7 @@ describe 'openstack-common::default' do expect(chef_run).to run_execute('add repository').with( command: 'zypper addrepo --check '\ "http://download.opensuse.org/repositories/Cloud:/OpenStack:/#{node['openstack']['release'].capitalize}/SLE_11_SP3/ "\ - 'Cloud:OpenStack:Kilo') + 'Cloud:OpenStack:Liberty') end it 'does not add the repository nor the key' do @@ -38,7 +38,7 @@ describe 'openstack-common::default' do new: 'rpm -qa gpg-pubkey', run_command: nil, stdout: nil, new: 'zypper repos --export -').and_return( 'd85f9316', - 'http://download.opensuse.org/repositories/Cloud:/OpenStack:/Kilo/SLE_11_SP3/') + 'http://download.opensuse.org/repositories/Cloud:/OpenStack:/Liberty/SLE_11_SP3/') expect(chef_run).not_to run_bash('add repository key') expect(chef_run).not_to run_execute('add repository').with(command: /zypper addrepo/) end diff --git a/spec/default_spec.rb b/spec/default_spec.rb index 967df908..c674a212 100644 --- a/spec/default_spec.rb +++ b/spec/default_spec.rb @@ -29,14 +29,14 @@ describe 'openstack-common::default' do node.set['openstack']['apt']['live_updates_enabled'] = true expect(chef_run).to add_apt_repository('openstack-ppa').with( uri: 'http://ubuntu-cloud.archive.canonical.com/ubuntu', - components: ['trusty-updates/kilo', 'main']) + components: ['trusty-updates/liberty', 'main']) end it 'disables openstack live updates' do node.set['openstack']['apt']['live_updates_enabled'] = false expect(chef_run).to_not add_apt_repository('openstack-ppa').with( uri: 'http://ubuntu-cloud.archive.canonical.com/ubuntu', - components: ['trusty-updates/kilo', 'main']) + components: ['trusty-updates/liberty', 'main']) end it 'does not install the gem chef-vault by default' do diff --git a/spec/endpoints_spec.rb b/spec/endpoints_spec.rb index 94566a71..5b2c6745 100644 --- a/spec/endpoints_spec.rb +++ b/spec/endpoints_spec.rb @@ -353,37 +353,6 @@ describe 'openstack-common::set_endpoints_by_interface' do ).to eq(expected) end - it 'returns block-storage db info hash when service found for db2 with options' do - node.set['openstack']['db']['service_type'] = 'db2' - node.set['openstack']['db']['options'] = { 'db2' => '?options' } - allow(subject).to receive(:node).and_return(chef_run.node) - expected = 'ibm_db_sa://user:pass@127.0.0.1:3306/cinder?options' - expect( - subject.db_uri('block-storage', 'user', 'pass') - ).to eq(expected) - end - - it 'returns telemetry db info hash when service found for db2' do - node.set['openstack']['db']['service_type'] = 'db2' - node.set['openstack']['db']['telemetry']['nosql']['used'] = true - allow(subject).to receive(:node).and_return(chef_run.node) - expected = 'db2://user:pass@127.0.0.1:27017/ceilometer' - expect( - subject.db_uri('telemetry', 'user', 'pass') - ).to eq(expected) - end - - it 'returns telemetry db info hash when service found for db2 with options' do - node.set['openstack']['db']['service_type'] = 'db2' - node.set['openstack']['db']['options'] = { 'nosql' => '?options' } - node.set['openstack']['db']['telemetry']['nosql']['used'] = true - allow(subject).to receive(:node).and_return(chef_run.node) - expected = 'db2://user:pass@127.0.0.1:27017/ceilometer?options' - expect( - subject.db_uri('telemetry', 'user', 'pass') - ).to eq(expected) - end - it 'returns compute db info hash when service found for mariadb' do node.set['openstack']['db']['service_type'] = 'mariadb' allow(subject).to receive(:node).and_return(chef_run.node) @@ -413,17 +382,6 @@ describe 'openstack-common::set_endpoints_by_interface' do ).to eq(expected) end - it 'returns block-storage slave db info hash when service found for db2 with options' do - node.set['openstack']['endpoints']['db']['enabled_slave'] = true - node.set['openstack']['db']['service_type'] = 'db2' - node.set['openstack']['db']['options'] = { 'db2' => '?options' } - allow(subject).to receive(:node).and_return(chef_run.node) - expected = 'ibm_db_sa://user:pass@127.0.0.1:3316/cinder?options' - expect( - subject.db_uri('block-storage', 'user', 'pass', true) - ).to eq(expected) - end - it 'returns image slave db info hash when service found for mariadb' do node.set['openstack']['db']['service_type'] = 'mariadb' node.set['openstack']['endpoints']['db']['enabled_slave'] = true diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 22de95bf..a22c2054 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -41,7 +41,7 @@ shared_context 'common-stubs' do } } }] - ) + ) allow_any_instance_of(Chef::Recipe).to receive(:get_password) .with('user', 'admin') .and_return('admin')