Initial Liberty Updates

MetaData Changes:
- bump metadata version to 12

Other codes changes
- change juno to kilo where appropriate
- rubocop todo file updates
- removed db2 refs

Bootstrap Changes
- Updated to 0.7.0 release of the ChefDK

Change-Id: I65745eae2e430ced0c25e8f05dd490fdad840623
This commit is contained in:
JJ Asghar
2015-08-27 14:27:08 -05:00
committed by Mark Vanderwiel
parent 2955ee7ac3
commit 9218fee097
16 changed files with 42 additions and 140 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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(<SERVICE_NAME>) 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

View File

@@ -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 ================================

View File

@@ -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

View File

@@ -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

View File

@@ -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
# '<ip>:<port>'.
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 '<ip>:<port>'.
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']

View File

@@ -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

View File

@@ -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'

View File

@@ -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

View File

@@ -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

View File

@@ -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' }

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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')