bosh-director 1.2807.0 → 1.2809.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -54,9 +54,9 @@ Bosh::Director::App.new(config)
54
54
  logger = Logging::Logger.new('DirectorWorker')
55
55
  resque_logging = config.hash.fetch('resque', {}).fetch('logging', {})
56
56
  if resque_logging.has_key?('file')
57
- logger.add_appenders(Logging.appenders.file('DirectorWorkerFile', filename: resque_logging.fetch('file')))
57
+ logger.add_appenders(Logging.appenders.file('DirectorWorkerFile', filename: resque_logging.fetch('file'), layout: ThreadFormatter.layout))
58
58
  else
59
- logger.add_appenders(Logging.appenders.stdout('DirectorWorkerIO'))
59
+ logger.add_appenders(Logging.appenders.stdout('DirectorWorkerIO', layout: ThreadFormatter.layout))
60
60
  end
61
61
  logger.level = Logging.levelify(resque_logging.fetch('level', 'info'))
62
62
  Resque.logger = logger
@@ -0,0 +1,38 @@
1
+ Sequel.migration do
2
+ up do
3
+ # mysql doesn't let us drop tasks' user_id column because it has a foreign key,
4
+ # and sequel won't let us drop the foreign key, so we're recreating the table
5
+ # from scratch. Sorry.
6
+
7
+ create_table :tasks_new do
8
+ primary_key :id
9
+ String :state, :null => false
10
+ Time :timestamp, :null => false
11
+ String :description, :null => false
12
+ String :result, :text => true, :null => true
13
+ String :output, :null => true
14
+ Time :checkpoint_time
15
+ String :type, :null => false
16
+ String :username, :null => true
17
+ end
18
+
19
+ run "INSERT INTO tasks_new
20
+ (state, timestamp, description, result, output, checkpoint_time, type, username)
21
+ SELECT t.state, t.timestamp, t.description, t.result, t.output, t.checkpoint_time, t.type, u.username
22
+ FROM tasks t
23
+ LEFT OUTER JOIN users u ON t.user_id = u.id"
24
+
25
+ drop_table :tasks
26
+ rename_table :tasks_new, :tasks
27
+
28
+ alter_table :tasks do
29
+ add_index :state
30
+ add_index :timestamp
31
+ add_index :description
32
+ end
33
+ end
34
+
35
+ down do
36
+ raise Sequel::Error, "Irreversible migration, tasks:user_id might contain nulls so we cannot enforce 'not null' constraint"
37
+ end
38
+ end
@@ -5,12 +5,12 @@ module Bosh::Director
5
5
  class CompiledPackageGroupManager
6
6
  include ApiHelper
7
7
 
8
- def create_from_file_path(user, path)
8
+ def create_from_file_path(username, path)
9
9
  unless File.exists?(path)
10
10
  raise DirectorError, "Failed to import compiled packages: file not found - #{path}"
11
11
  end
12
12
 
13
- JobQueue.new.enqueue(user, Jobs::ImportCompiledPackages, 'import compiled packages', [path])
13
+ JobQueue.new.enqueue(username, Jobs::ImportCompiledPackages, 'import compiled packages', [path])
14
14
  end
15
15
  end
16
16
  end
@@ -11,7 +11,7 @@ module Bosh::Director
11
11
  DeploymentLookup.new.by_name(name)
12
12
  end
13
13
 
14
- def create_deployment(user, deployment_manifest, options = {})
14
+ def create_deployment(username, deployment_manifest, options = {})
15
15
  random_name = "deployment-#{SecureRandom.uuid}"
16
16
  deployment_manifest_dir = Dir::tmpdir
17
17
  deployment_manifest_file = File.join(deployment_manifest_dir, random_name)
@@ -22,11 +22,11 @@ module Bosh::Director
22
22
 
23
23
  write_file(deployment_manifest_file, deployment_manifest)
24
24
 
25
- JobQueue.new.enqueue(user, Jobs::UpdateDeployment, 'create deployment', [deployment_manifest_file, options])
25
+ JobQueue.new.enqueue(username, Jobs::UpdateDeployment, 'create deployment', [deployment_manifest_file, options])
26
26
  end
27
27
 
28
- def delete_deployment(user, deployment, options = {})
29
- JobQueue.new.enqueue(user, Jobs::DeleteDeployment, "delete deployment #{deployment.name}", [deployment.name, options])
28
+ def delete_deployment(username, deployment, options = {})
29
+ JobQueue.new.enqueue(username, Jobs::DeleteDeployment, "delete deployment #{deployment.name}", [deployment.name, options])
30
30
  end
31
31
 
32
32
  def deployment_to_json(deployment)
@@ -39,7 +39,7 @@ module Bosh::Director
39
39
  AgentClient.with_defaults(vm.agent_id)
40
40
  end
41
41
 
42
- def fetch_logs(user, deployment_name, job, index, options = {})
42
+ def fetch_logs(username, deployment_name, job, index, options = {})
43
43
  if deployment_name.nil? || job.nil? || index.nil?
44
44
  raise DirectorError,
45
45
  'deployment, job and index parameters are required'
@@ -47,14 +47,14 @@ module Bosh::Director
47
47
 
48
48
  instance = find_by_name(deployment_name, job, index)
49
49
 
50
- JobQueue.new.enqueue(user, Jobs::FetchLogs, 'fetch logs', [instance.id, options])
50
+ JobQueue.new.enqueue(username, Jobs::FetchLogs, 'fetch logs', [instance.id, options])
51
51
  end
52
52
 
53
- def ssh(user, options)
53
+ def ssh(username, options)
54
54
  description = "ssh: #{options['command']}:#{options['target']}"
55
55
  deployment = DeploymentLookup.new.by_name(options['deployment_name'])
56
56
 
57
- JobQueue.new.enqueue(user, Jobs::Ssh, description, [deployment.id, options])
57
+ JobQueue.new.enqueue(username, Jobs::Ssh, description, [deployment.id, options])
58
58
  end
59
59
  end
60
60
  end
@@ -6,10 +6,10 @@ module Bosh::Director
6
6
  @deployment_manager = deployment_manager
7
7
  end
8
8
 
9
- def perform_scan(user, deployment_name)
9
+ def perform_scan(username, deployment_name)
10
10
  deployment = @deployment_manager.find_by_name(deployment_name)
11
11
 
12
- JobQueue.new.enqueue(user, Jobs::CloudCheck::Scan, 'scan cloud', [deployment.name])
12
+ JobQueue.new.enqueue(username, Jobs::CloudCheck::Scan, 'scan cloud', [deployment.name])
13
13
  end
14
14
 
15
15
  def get_problems(deployment_name)
@@ -23,15 +23,15 @@ module Bosh::Director
23
23
  Models::DeploymentProblem.filter(filters).order(:created_at).all
24
24
  end
25
25
 
26
- def apply_resolutions(user, deployment_name, resolutions)
26
+ def apply_resolutions(username, deployment_name, resolutions)
27
27
  deployment = @deployment_manager.find_by_name(deployment_name)
28
- JobQueue.new.enqueue(user, Jobs::CloudCheck::ApplyResolutions, 'apply resolutions', [deployment.name, resolutions])
28
+ JobQueue.new.enqueue(username, Jobs::CloudCheck::ApplyResolutions, 'apply resolutions', [deployment.name, resolutions])
29
29
  end
30
30
 
31
- def scan_and_fix(user, deployment_name, jobs)
31
+ def scan_and_fix(username, deployment_name, jobs)
32
32
  deployment = @deployment_manager.find_by_name(deployment_name)
33
33
 
34
- JobQueue.new.enqueue(user, Jobs::CloudCheck::ScanAndFix, 'scan and fix', [deployment.name, jobs, Bosh::Director::Config.fix_stateful_nodes])
34
+ JobQueue.new.enqueue(username, Jobs::CloudCheck::ScanAndFix, 'scan and fix', [deployment.name, jobs, Bosh::Director::Config.fix_stateful_nodes])
35
35
  end
36
36
  end
37
37
  end
@@ -46,21 +46,21 @@ module Bosh::Director
46
46
  release_version
47
47
  end
48
48
 
49
- def create_release_from_url(user, release_url, options)
49
+ def create_release_from_url(username, release_url, options)
50
50
  options[:remote] = true
51
- JobQueue.new.enqueue(user, Jobs::UpdateRelease, 'create release', [release_url, options])
51
+ JobQueue.new.enqueue(username, Jobs::UpdateRelease, 'create release', [release_url, options])
52
52
  end
53
53
 
54
- def create_release_from_file_path(user, release_path, options)
54
+ def create_release_from_file_path(username, release_path, options)
55
55
  unless File.exists?(release_path)
56
56
  raise DirectorError, "Failed to create release: file not found - #{release_path}"
57
57
  end
58
58
 
59
- JobQueue.new.enqueue(user, Jobs::UpdateRelease, 'create release', [release_path, options])
59
+ JobQueue.new.enqueue(username, Jobs::UpdateRelease, 'create release', [release_path, options])
60
60
  end
61
61
 
62
- def delete_release(user, release, options = {})
63
- JobQueue.new.enqueue(user, Jobs::DeleteRelease, "delete release: #{release.name}", [release.name, options])
62
+ def delete_release(username, release, options = {})
63
+ JobQueue.new.enqueue(username, Jobs::DeleteRelease, "delete release: #{release.name}", [release.name, options])
64
64
  end
65
65
  end
66
66
  end
@@ -1,20 +1,20 @@
1
1
  module Bosh::Director
2
2
  module Api
3
3
  class SnapshotManager
4
- def create_deployment_snapshot_task(user, deployment, options = {})
5
- JobQueue.new.enqueue(user, Jobs::SnapshotDeployment, 'snapshot deployment', [deployment.name, options])
4
+ def create_deployment_snapshot_task(username, deployment, options = {})
5
+ JobQueue.new.enqueue(username, Jobs::SnapshotDeployment, 'snapshot deployment', [deployment.name, options])
6
6
  end
7
7
 
8
- def create_snapshot_task(user, instance, options)
9
- JobQueue.new.enqueue(user, Jobs::CreateSnapshot, 'create snapshot', [instance.id, options])
8
+ def create_snapshot_task(username, instance, options)
9
+ JobQueue.new.enqueue(username, Jobs::CreateSnapshot, 'create snapshot', [instance.id, options])
10
10
  end
11
11
 
12
- def delete_deployment_snapshots_task(user, deployment)
13
- JobQueue.new.enqueue(user, Jobs::DeleteDeploymentSnapshots, 'delete deployment snapshots', [deployment.name])
12
+ def delete_deployment_snapshots_task(username, deployment)
13
+ JobQueue.new.enqueue(username, Jobs::DeleteDeploymentSnapshots, 'delete deployment snapshots', [deployment.name])
14
14
  end
15
15
 
16
- def delete_snapshots_task(user, snapshot_cids)
17
- JobQueue.new.enqueue(user, Jobs::DeleteSnapshots, 'delete snapshot', [snapshot_cids])
16
+ def delete_snapshots_task(username, snapshot_cids)
17
+ JobQueue.new.enqueue(username, Jobs::DeleteSnapshots, 'delete snapshot', [snapshot_cids])
18
18
  end
19
19
 
20
20
  def find_by_cid(deployment, snapshot_cid)
@@ -21,22 +21,22 @@ module Bosh::Director
21
21
  false
22
22
  end
23
23
 
24
- def create_stemcell_from_url(user, stemcell_url)
25
- JobQueue.new.enqueue(user, Jobs::UpdateStemcell, 'create stemcell', [stemcell_url, { remote: true }])
24
+ def create_stemcell_from_url(username, stemcell_url)
25
+ JobQueue.new.enqueue(username, Jobs::UpdateStemcell, 'create stemcell', [stemcell_url, { remote: true }])
26
26
  end
27
27
 
28
- def create_stemcell_from_file_path(user, stemcell_path)
28
+ def create_stemcell_from_file_path(username, stemcell_path)
29
29
  unless File.exists?(stemcell_path)
30
30
  raise DirectorError, "Failed to create stemcell: file not found - #{stemcell_path}"
31
31
  end
32
32
 
33
- JobQueue.new.enqueue(user, Jobs::UpdateStemcell, 'create stemcell', [stemcell_path])
33
+ JobQueue.new.enqueue(username, Jobs::UpdateStemcell, 'create stemcell', [stemcell_path])
34
34
  end
35
35
 
36
- def delete_stemcell(user, stemcell, options={})
36
+ def delete_stemcell(username, stemcell, options={})
37
37
  description = "delete stemcell: #{stemcell.name}/#{stemcell.version}"
38
38
 
39
- JobQueue.new.enqueue(user, Jobs::DeleteStemcell, description, [stemcell.name, stemcell.version, options])
39
+ JobQueue.new.enqueue(username, Jobs::DeleteStemcell, description, [stemcell.name, stemcell.version, options])
40
40
  end
41
41
  end
42
42
  end
@@ -4,8 +4,7 @@ module Bosh::Director
4
4
  module Api
5
5
  class TaskHelper
6
6
  def create_task(username, type, description)
7
- user = Models::User[:username => username]
8
- task = Models::Task.create(:user => user,
7
+ task = Models::Task.create(:username => username,
9
8
  :type => type,
10
9
  :description => description,
11
10
  :state => :queued,
@@ -25,7 +25,7 @@ module Bosh::Director
25
25
  "description" => task.description,
26
26
  "timestamp" => task.timestamp.to_i,
27
27
  "result" => task.result,
28
- "user" => task.user ? task.user.username : "admin"
28
+ "user" => task.username || "admin"
29
29
  }
30
30
  end
31
31
 
@@ -61,4 +61,4 @@ module Bosh::Director
61
61
  end
62
62
  end
63
63
  end
64
- end
64
+ end
@@ -1,8 +1,8 @@
1
1
  module Bosh::Director
2
2
  module Api
3
3
  class VmStateManager
4
- def fetch_vm_state(user, deployment, format)
5
- JobQueue.new.enqueue(user, Jobs::VmState, 'retrieve vm-stats', [deployment.id, format])
4
+ def fetch_vm_state(username, deployment, format)
5
+ JobQueue.new.enqueue(username, Jobs::VmState, 'retrieve vm-stats', [deployment.id, format])
6
6
  end
7
7
  end
8
8
  end
@@ -1,5 +1,6 @@
1
1
  require 'fileutils'
2
2
  require 'logging'
3
+ require 'bosh/director/dns_helper'
3
4
 
4
5
  module Bosh::Director
5
6
 
@@ -5,8 +5,8 @@ module Bosh::Director
5
5
  # Abstracts the resque system.
6
6
 
7
7
  class JobQueue
8
- def enqueue(user, job_class, description, params)
9
- task = Api::TaskHelper.new.create_task(user, job_class.job_type, description)
8
+ def enqueue(username, job_class, description, params)
9
+ task = Api::TaskHelper.new.create_task(username, job_class.job_type, description)
10
10
 
11
11
  Resque.enqueue(job_class, task.id, *params)
12
12
 
@@ -2,7 +2,6 @@
2
2
 
3
3
  module Bosh::Director::Models
4
4
  class Task < Sequel::Model(Bosh::Director::Config.db)
5
- many_to_one :user
6
5
  def validate
7
6
  validates_presence [:state, :timestamp, :description]
8
7
  end
@@ -1,5 +1,5 @@
1
1
  module Bosh
2
2
  module Director
3
- VERSION = '1.2807.0'
3
+ VERSION = '1.2809.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bosh-director
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2807.0
4
+ version: 1.2809.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-12-25 00:00:00.000000000 Z
12
+ date: 2015-01-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bcrypt-ruby
@@ -34,7 +34,7 @@ dependencies:
34
34
  requirements:
35
35
  - - ~>
36
36
  - !ruby/object:Gem::Version
37
- version: 1.2807.0
37
+ version: 1.2809.0
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,7 +42,7 @@ dependencies:
42
42
  requirements:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
- version: 1.2807.0
45
+ version: 1.2809.0
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: bosh-core
48
48
  requirement: !ruby/object:Gem::Requirement
@@ -50,7 +50,7 @@ dependencies:
50
50
  requirements:
51
51
  - - ~>
52
52
  - !ruby/object:Gem::Version
53
- version: 1.2807.0
53
+ version: 1.2809.0
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -58,7 +58,7 @@ dependencies:
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: 1.2807.0
61
+ version: 1.2809.0
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: bosh-director-core
64
64
  requirement: !ruby/object:Gem::Requirement
@@ -66,7 +66,7 @@ dependencies:
66
66
  requirements:
67
67
  - - ~>
68
68
  - !ruby/object:Gem::Version
69
- version: 1.2807.0
69
+ version: 1.2809.0
70
70
  type: :runtime
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
@@ -74,7 +74,7 @@ dependencies:
74
74
  requirements:
75
75
  - - ~>
76
76
  - !ruby/object:Gem::Version
77
- version: 1.2807.0
77
+ version: 1.2809.0
78
78
  - !ruby/object:Gem::Dependency
79
79
  name: bosh_common
80
80
  requirement: !ruby/object:Gem::Requirement
@@ -82,7 +82,7 @@ dependencies:
82
82
  requirements:
83
83
  - - ~>
84
84
  - !ruby/object:Gem::Version
85
- version: 1.2807.0
85
+ version: 1.2809.0
86
86
  type: :runtime
87
87
  prerelease: false
88
88
  version_requirements: !ruby/object:Gem::Requirement
@@ -90,7 +90,7 @@ dependencies:
90
90
  requirements:
91
91
  - - ~>
92
92
  - !ruby/object:Gem::Version
93
- version: 1.2807.0
93
+ version: 1.2809.0
94
94
  - !ruby/object:Gem::Dependency
95
95
  name: bosh-template
96
96
  requirement: !ruby/object:Gem::Requirement
@@ -98,7 +98,7 @@ dependencies:
98
98
  requirements:
99
99
  - - ~>
100
100
  - !ruby/object:Gem::Version
101
- version: 1.2807.0
101
+ version: 1.2809.0
102
102
  type: :runtime
103
103
  prerelease: false
104
104
  version_requirements: !ruby/object:Gem::Requirement
@@ -106,7 +106,7 @@ dependencies:
106
106
  requirements:
107
107
  - - ~>
108
108
  - !ruby/object:Gem::Version
109
- version: 1.2807.0
109
+ version: 1.2809.0
110
110
  - !ruby/object:Gem::Dependency
111
111
  name: bosh_cpi
112
112
  requirement: !ruby/object:Gem::Requirement
@@ -114,7 +114,7 @@ dependencies:
114
114
  requirements:
115
115
  - - ~>
116
116
  - !ruby/object:Gem::Version
117
- version: 1.2807.0
117
+ version: 1.2809.0
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
@@ -122,7 +122,7 @@ dependencies:
122
122
  requirements:
123
123
  - - ~>
124
124
  - !ruby/object:Gem::Version
125
- version: 1.2807.0
125
+ version: 1.2809.0
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: bosh_openstack_cpi
128
128
  requirement: !ruby/object:Gem::Requirement
@@ -130,7 +130,7 @@ dependencies:
130
130
  requirements:
131
131
  - - ~>
132
132
  - !ruby/object:Gem::Version
133
- version: 1.2807.0
133
+ version: 1.2809.0
134
134
  type: :runtime
135
135
  prerelease: false
136
136
  version_requirements: !ruby/object:Gem::Requirement
@@ -138,7 +138,7 @@ dependencies:
138
138
  requirements:
139
139
  - - ~>
140
140
  - !ruby/object:Gem::Version
141
- version: 1.2807.0
141
+ version: 1.2809.0
142
142
  - !ruby/object:Gem::Dependency
143
143
  name: bosh_aws_cpi
144
144
  requirement: !ruby/object:Gem::Requirement
@@ -146,7 +146,7 @@ dependencies:
146
146
  requirements:
147
147
  - - ~>
148
148
  - !ruby/object:Gem::Version
149
- version: 1.2807.0
149
+ version: 1.2809.0
150
150
  type: :runtime
151
151
  prerelease: false
152
152
  version_requirements: !ruby/object:Gem::Requirement
@@ -154,7 +154,7 @@ dependencies:
154
154
  requirements:
155
155
  - - ~>
156
156
  - !ruby/object:Gem::Version
157
- version: 1.2807.0
157
+ version: 1.2809.0
158
158
  - !ruby/object:Gem::Dependency
159
159
  name: bosh_vsphere_cpi
160
160
  requirement: !ruby/object:Gem::Requirement
@@ -162,7 +162,7 @@ dependencies:
162
162
  requirements:
163
163
  - - ~>
164
164
  - !ruby/object:Gem::Version
165
- version: 1.2807.0
165
+ version: 1.2809.0
166
166
  type: :runtime
167
167
  prerelease: false
168
168
  version_requirements: !ruby/object:Gem::Requirement
@@ -170,7 +170,7 @@ dependencies:
170
170
  requirements:
171
171
  - - ~>
172
172
  - !ruby/object:Gem::Version
173
- version: 1.2807.0
173
+ version: 1.2809.0
174
174
  - !ruby/object:Gem::Dependency
175
175
  name: bosh_warden_cpi
176
176
  requirement: !ruby/object:Gem::Requirement
@@ -178,7 +178,7 @@ dependencies:
178
178
  requirements:
179
179
  - - ~>
180
180
  - !ruby/object:Gem::Version
181
- version: 1.2807.0
181
+ version: 1.2809.0
182
182
  type: :runtime
183
183
  prerelease: false
184
184
  version_requirements: !ruby/object:Gem::Requirement
@@ -186,7 +186,7 @@ dependencies:
186
186
  requirements:
187
187
  - - ~>
188
188
  - !ruby/object:Gem::Version
189
- version: 1.2807.0
189
+ version: 1.2809.0
190
190
  - !ruby/object:Gem::Dependency
191
191
  name: bosh_vcloud_cpi
192
192
  requirement: !ruby/object:Gem::Requirement
@@ -525,7 +525,7 @@ dependencies:
525
525
  version: '0'
526
526
  description: ! 'BOSH Director
527
527
 
528
- 0b041c'
528
+ f3cadb'
529
529
  email: support@cloudfoundry.com
530
530
  executables:
531
531
  - bosh-director
@@ -569,6 +569,7 @@ files:
569
569
  - db/migrations/director/20140124225348_proper_pk_for_attributes.rb
570
570
  - db/migrations/director/20140731215410_increase_text_limit_for_data_columns.rb
571
571
  - db/migrations/director/20141204234517_add_cloud_properties_to_persistent_disk.rb
572
+ - db/migrations/director/20150102234124_denormalize_task_user_id_to_task_username.rb
572
573
  - db/migrations/dns/20120123234908_initial.rb
573
574
  - lib/bosh/director.rb
574
575
  - lib/bosh/director/agent_client.rb
@@ -793,7 +794,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
793
794
  version: '0'
794
795
  segments:
795
796
  - 0
796
- hash: -3015350443129074724
797
+ hash: 182295446250487425
797
798
  requirements: []
798
799
  rubyforge_project:
799
800
  rubygems_version: 1.8.23