Commit 5063224a77188c41768b039730cb67ce4895e24a

Authored by Antonio Terceiro
2 parents 5755b947 6a9c0495

Merge branch 'noosfero-token'

This implements creating an user in the Noosfero dabatase, an grabbing
its API key for use in the Colab Noosfero plugin
Rakefile
... ... @@ -136,6 +136,7 @@ task :bootstrap_common => 'config/local/ssh_config'
136 136  
137 137 unless ENV['nodeps']
138 138 task 'converge:integration' => 'converge:database'
  139 + task 'converge:integration' => 'converge:social'
139 140 task 'converge:social' => 'converge:database'
140 141 end
141 142  
... ...
cookbooks/colab/recipes/default.rb
... ... @@ -148,6 +148,10 @@ template '/etc/colab/plugins.d/noosfero.py' do
148 148 group 'colab'
149 149 mode 0640
150 150 notifies :restart, 'service[colab]'
  151 + get_private_token = lambda do
  152 + `psql --tuples-only --host database --user colab -c "select private_token from users where login = 'admin-noosfero'" noosfero`.strip
  153 + end
  154 + variables(:get_private_token => get_private_token)
151 155 end
152 156  
153 157 template '/etc/colab/plugins.d/spb.py' do
... ...
cookbooks/colab/templates/noosfero.py.erb
... ... @@ -10,6 +10,8 @@ verbose_name = 'Noosfero Plugin'
10 10  
11 11 upstream = 'http://<%= node['peers']['social'] %>:80/social/'
12 12  
  13 +private_token = '<%= @get_private_token.call %>'
  14 +
13 15 urls = {
14 16 'include': 'colab_noosfero.urls',
15 17 'namespace': 'noosfero', # TODO: do not allow to change namespace
... ...
cookbooks/noosfero/files/noosfero-create-api-user 0 → 100644
... ... @@ -0,0 +1,17 @@
  1 +#!/usr/bin/env ruby
  2 +
  3 +login = ARGV[0]
  4 +email = ARGV[1]
  5 +password = SecureRandom.random_number.to_s
  6 +
  7 +user = User.find_by_login(login)
  8 +exit(0) if user
  9 +
  10 +user = User.create!(
  11 + login: login,
  12 + email: email,
  13 + password: password,
  14 + password_confirmation: password
  15 +)
  16 +user.activate
  17 +user.generate_private_token_if_not_exist
... ...
cookbooks/noosfero/recipes/default.rb
... ... @@ -51,17 +51,24 @@ execute &#39;plugins:enable&#39; do
51 51 command '/usr/lib/noosfero/script/noosfero-plugins enable ' + plugins.join(' ')
52 52 end
53 53  
  54 +plugins_spb = [
  55 + 'software_communities',
  56 + 'gov_user',
  57 + 'spb_migrations',
  58 +]
  59 +
  60 +# HACK disable plugins_spb before migrating
  61 +# FIXME fix the plugins to not depend on other pugins
  62 +execute 'noosfero:plugins_spb:disable' do
  63 + command '/usr/lib/noosfero/script/noosfero-plugins disable ' + plugins_spb.join(' ')
  64 +end
  65 +
54 66 execute 'noosfero:migrate' do
55 67 command 'RAILS_ENV=production SCHEMA=/dev/null bundle exec rake db:migrate'
56 68 cwd '/usr/lib/noosfero'
57 69 user 'noosfero'
58 70 end
59 71  
60   -plugins_spb = [
61   - 'software_communities',
62   - 'gov_user',
63   - 'spb_migrations',
64   -]
65 72  
66 73 #FIXME: We did it, because we have to enable each plugin and migrate it separately.
67 74 plugins_spb.each do |plugin|
... ... @@ -127,6 +134,21 @@ cookbook_file &#39;/usr/lib/noosfero/config/noosfero.yml&#39; do
127 134 source 'noosfero.yml'
128 135 notifies :restart, 'service[noosfero]'
129 136 end
  137 +
  138 +cookbook_file "/usr/local/bin/noosfero-create-api-user" do
  139 + mode 0755
  140 +end
  141 +
  142 +execute 'create-admin-token-noosfero' do
  143 + command [
  144 + "RAILS_ENV=production bundle exec rails runner",
  145 + "/usr/local/bin/noosfero-create-api-user",
  146 + "admin-noosfero", # username
  147 + "noosfero@localhost.localdomain", # email
  148 + ].join(' ')
  149 + cwd '/usr/lib/noosfero'
  150 + user 'noosfero'
  151 +end
130 152 ###############################################
131 153 # SELinux: permission to access static files noosfero
132 154 ################################################
... ...
cookbooks/postgresql/recipes/noosfero.rb
... ... @@ -14,3 +14,7 @@ execute &#39;createdb:noosfero&#39; do
14 14 end
15 15 end
16 16  
  17 +execute 'grant:noosfero:colab' do
  18 + command 'psql -c "GRANT SELECT ON users TO colab" noosfero'
  19 + user 'postgres'
  20 +end
... ...
cookbooks/postgresql/templates/centos/pg_hba.conf.erb
... ... @@ -10,3 +10,4 @@ host all all ::1/128 ident
10 10 host colab colab <%= node['peers']['integration'] %>/32 trust
11 11 host gitlab gitlab <%= node['peers']['integration'] %>/32 trust
12 12 host noosfero noosfero <%= node['peers']['social'] %>/32 trust
  13 +host noosfero colab <%= node['peers']['integration'] %>/32 trust
... ...
roles/database_server.rb
... ... @@ -3,7 +3,7 @@ description &#39;Database server&#39;
3 3 run_list *[
4 4 'recipe[postgresql]',
5 5 'recipe[redis]',
6   - 'recipe[postgresql::colab]',
7   - 'recipe[postgresql::gitlab]',
  6 + 'recipe[postgresql::colab]', # must come before the other apps
8 7 'recipe[postgresql::noosfero]',
  8 + 'recipe[postgresql::gitlab]',
9 9 ]
... ...