bosh-director 1.2992.0 → 1.2999.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/db/migrations/director/20150619135210_add_os_name_and_version_to_stemcells.rb +7 -0
- data/lib/bosh/director.rb +1 -0
- data/lib/bosh/director/agent_client.rb +19 -11
- data/lib/bosh/director/api.rb +3 -1
- data/lib/bosh/director/api/controllers/base_controller.rb +0 -1
- data/lib/bosh/director/api/controllers/cloud_configs_controller.rb +1 -1
- data/lib/bosh/director/api/controllers/deployments_controller.rb +4 -4
- data/lib/bosh/director/api/controllers/info_controller.rb +1 -1
- data/lib/bosh/director/api/controllers/locks_controller.rb +1 -1
- data/lib/bosh/director/api/controllers/releases_controller.rb +2 -2
- data/lib/bosh/director/api/controllers/stemcells_controller.rb +2 -1
- data/lib/bosh/director/api/controllers/tasks_controller.rb +3 -3
- data/lib/bosh/director/api/controllers/users_controller.rb +22 -5
- data/lib/bosh/director/api/director_uuid_provider.rb +15 -0
- data/lib/bosh/director/api/extensions/scoping.rb +21 -3
- data/lib/bosh/director/api/local_identity_provider.rb +10 -2
- data/lib/bosh/director/api/uaa_identity_provider.rb +9 -5
- data/lib/bosh/director/api/user/config_user_manager.rb +60 -0
- data/lib/bosh/director/api/{user_manager.rb → user/database_user_manager.rb} +7 -3
- data/lib/bosh/director/api/user/user_manager_provider.rb +13 -0
- data/lib/bosh/director/config.rb +1 -1
- data/lib/bosh/director/errors.rb +1 -0
- data/lib/bosh/director/jobs/update_stemcell.rb +2 -0
- data/lib/bosh/director/jobs/vm_state.rb +2 -2
- data/lib/bosh/director/version.rb +1 -1
- metadata +26 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 314dd17fbbb059aaaae50d56efba07c3b0893445
|
4
|
+
data.tar.gz: 89dd10046a5b22f8e1424878c432cfc69f6d51da
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6477ca1a6659b9661203e54493c553fd1e4c61a18f28431b8ccb373273d136c8a967891f86437795bb94555af1d7c80eb9d7eb5faa9a5db52b1e9547c2c708fd
|
7
|
+
data.tar.gz: d492ee6cc46b18579cd1f0094e5b5f35e82b4a986badab2a5b5b7768011c3338c5c424cb60c849a179006087cea79b851dbf32d268f6840696a900870edbc246
|
data/lib/bosh/director.rb
CHANGED
@@ -127,6 +127,7 @@ require 'bosh/director/models/helpers/model_helper'
|
|
127
127
|
|
128
128
|
require 'bosh/director/db_backup'
|
129
129
|
require 'bosh/director/blobstores'
|
130
|
+
require 'bosh/director/api/director_uuid_provider'
|
130
131
|
require 'bosh/director/api/local_identity_provider'
|
131
132
|
require 'bosh/director/api/uaa_identity_provider'
|
132
133
|
require 'bosh/director/app'
|
@@ -4,27 +4,35 @@ module Bosh::Director
|
|
4
4
|
class AgentClient
|
5
5
|
DEFAULT_POLL_INTERVAL = 1.0
|
6
6
|
|
7
|
+
# in case of timeout errors
|
8
|
+
GET_TASK_MAX_RETRIES = 2
|
9
|
+
|
10
|
+
# get_task should retry at least once because some long running tasks
|
11
|
+
# (e.g. configure_networks) will restart the agent (current implementation)
|
12
|
+
# which most likely will result in first get_task message being lost
|
13
|
+
# because agent was not listening on NATS and second retry message
|
14
|
+
# will probably be received because agent came back up.
|
15
|
+
GET_STATE_MAX_RETRIES = 2
|
16
|
+
|
7
17
|
attr_accessor :id
|
8
18
|
|
9
19
|
def self.with_defaults(id, options = {})
|
20
|
+
vm = Bosh::Director::Models::Vm.find(:agent_id => id)
|
21
|
+
with_vm(vm, options)
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.with_vm(vm, options = {})
|
10
25
|
defaults = {
|
11
26
|
retry_methods: {
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
# get_task should retry at least once because some long running tasks
|
16
|
-
# (e.g. configure_networks) will restart the agent (current implementation)
|
17
|
-
# which most likely will result in first get_task message being lost
|
18
|
-
# because agent was not listening on NATS and second retry message
|
19
|
-
# will probably be received because agent came back up.
|
20
|
-
get_task: 2,
|
27
|
+
get_state: GET_STATE_MAX_RETRIES,
|
28
|
+
get_task: GET_TASK_MAX_RETRIES,
|
21
29
|
}
|
22
30
|
}
|
23
31
|
|
24
|
-
credentials =
|
32
|
+
credentials = vm.credentials
|
25
33
|
defaults.merge!(credentials: credentials) if credentials
|
26
34
|
|
27
|
-
self.new('agent',
|
35
|
+
self.new('agent', vm.agent_id, defaults.merge(options))
|
28
36
|
end
|
29
37
|
|
30
38
|
def initialize(service_name, client_id, options = {})
|
data/lib/bosh/director/api.rb
CHANGED
@@ -21,7 +21,9 @@ require 'bosh/director/api/snapshot_manager'
|
|
21
21
|
require 'bosh/director/api/stemcell_manager'
|
22
22
|
require 'bosh/director/api/compiled_package_group_manager'
|
23
23
|
require 'bosh/director/api/task_manager'
|
24
|
-
require 'bosh/director/api/
|
24
|
+
require 'bosh/director/api/user/config_user_manager'
|
25
|
+
require 'bosh/director/api/user/database_user_manager'
|
26
|
+
require 'bosh/director/api/user/user_manager_provider'
|
25
27
|
require 'bosh/director/api/vm_state_manager'
|
26
28
|
require 'bosh/director/api/backup_manager'
|
27
29
|
require 'bosh/director/api/resurrector_manager'
|
@@ -137,7 +137,7 @@ module Bosh::Director
|
|
137
137
|
redirect "/tasks/#{task.id}"
|
138
138
|
end
|
139
139
|
|
140
|
-
get '/', scope:
|
140
|
+
get '/', scope: :read do
|
141
141
|
latest_cloud_config = Api::CloudConfigManager.new.latest
|
142
142
|
deployments = Models::Deployment.order_by(:name.asc).map do |deployment|
|
143
143
|
cloud_config = if deployment.cloud_config.nil?
|
@@ -169,12 +169,12 @@ module Bosh::Director
|
|
169
169
|
json_encode(deployments)
|
170
170
|
end
|
171
171
|
|
172
|
-
get '/:name', scope:
|
172
|
+
get '/:name', scope: :read do
|
173
173
|
deployment = @deployment_manager.find_by_name(params[:name])
|
174
174
|
@deployment_manager.deployment_to_json(deployment)
|
175
175
|
end
|
176
176
|
|
177
|
-
get '/:name/vms', scope:
|
177
|
+
get '/:name/vms', scope: :read do
|
178
178
|
deployment = @deployment_manager.find_by_name(params[:name])
|
179
179
|
|
180
180
|
format = params[:format]
|
@@ -290,7 +290,7 @@ module Bosh::Director
|
|
290
290
|
redirect "/tasks/#{task.id}"
|
291
291
|
end
|
292
292
|
|
293
|
-
get '/:deployment_name/errands', scope:
|
293
|
+
get '/:deployment_name/errands', scope: :read do
|
294
294
|
deployment_plan = load_deployment_plan_without_binding
|
295
295
|
|
296
296
|
errands = deployment_plan.jobs.select(&:can_run_as_errand?)
|
@@ -21,7 +21,7 @@ module Bosh::Director
|
|
21
21
|
redirect "/tasks/#{task.id}"
|
22
22
|
end
|
23
23
|
|
24
|
-
get '/', scope:
|
24
|
+
get '/', scope: :read do
|
25
25
|
releases = Models::Release.order_by(:name.asc).map do |release|
|
26
26
|
release_versions = release.versions_dataset.order_by(:version.asc).map do |rv|
|
27
27
|
{
|
@@ -42,7 +42,7 @@ module Bosh::Director
|
|
42
42
|
json_encode(releases)
|
43
43
|
end
|
44
44
|
|
45
|
-
get '/:name', scope:
|
45
|
+
get '/:name', scope: :read do
|
46
46
|
name = params[:name].to_s.strip
|
47
47
|
release = @release_manager.find_by_name(name)
|
48
48
|
|
@@ -14,10 +14,11 @@ module Bosh::Director
|
|
14
14
|
redirect "/tasks/#{task.id}"
|
15
15
|
end
|
16
16
|
|
17
|
-
get '/', scope:
|
17
|
+
get '/', scope: :read do
|
18
18
|
stemcells = Models::Stemcell.order_by(:name.asc).map do |stemcell|
|
19
19
|
{
|
20
20
|
'name' => stemcell.name,
|
21
|
+
'operating_system' => stemcell.operating_system,
|
21
22
|
'version' => stemcell.version,
|
22
23
|
'cid' => stemcell.cid,
|
23
24
|
'deployments' => stemcell.deployments.map { |d| { name: d.name } }
|
@@ -3,7 +3,7 @@ require 'bosh/director/api/controllers/base_controller'
|
|
3
3
|
module Bosh::Director
|
4
4
|
module Api::Controllers
|
5
5
|
class TasksController < BaseController
|
6
|
-
get '/' do
|
6
|
+
get '/', scope: :read do
|
7
7
|
dataset = Models::Task.dataset
|
8
8
|
|
9
9
|
if limit = params['limit']
|
@@ -45,7 +45,7 @@ module Bosh::Director
|
|
45
45
|
json_encode(tasks)
|
46
46
|
end
|
47
47
|
|
48
|
-
get '/:id' do
|
48
|
+
get '/:id', scope: :read do
|
49
49
|
task = @task_manager.find_task(params[:id])
|
50
50
|
if task_timeout?(task)
|
51
51
|
task.state = :timeout
|
@@ -59,7 +59,7 @@ module Bosh::Director
|
|
59
59
|
# Sends back output of given task id and params[:type]
|
60
60
|
# Example: `get /tasks/5/output?type=event` will send back the file
|
61
61
|
# at /var/vcap/store/director/tasks/5/event
|
62
|
-
get '/:id/output' do
|
62
|
+
get '/:id/output', scope: Api::Extensions::Scoping::ParamsScope.new(:type, {event: :read}) do
|
63
63
|
log_type = params[:type] || 'debug'
|
64
64
|
task = @task_manager.find_task(params[:id])
|
65
65
|
|
@@ -3,28 +3,45 @@ require 'bosh/director/api/controllers/base_controller'
|
|
3
3
|
module Bosh::Director
|
4
4
|
module Api::Controllers
|
5
5
|
class UsersController < BaseController
|
6
|
+
def initialize(config)
|
7
|
+
super(config)
|
8
|
+
@identity_provider = config.identity_provider
|
9
|
+
end
|
10
|
+
|
6
11
|
post '/', :consumes => [:json] do
|
7
|
-
|
8
|
-
|
12
|
+
validate_user_management_support
|
13
|
+
|
14
|
+
user = @identity_provider.get_user_from_request(request)
|
15
|
+
@identity_provider.create_user(user)
|
9
16
|
status(204)
|
10
17
|
nil
|
11
18
|
end
|
12
19
|
|
13
20
|
put '/:username', :consumes => [:json] do
|
14
|
-
|
21
|
+
validate_user_management_support
|
22
|
+
|
23
|
+
user = @identity_provider.get_user_from_request(request)
|
15
24
|
if user.username != params[:username]
|
16
25
|
raise UserImmutableUsername, 'The username is immutable'
|
17
26
|
end
|
18
|
-
@
|
27
|
+
@identity_provider.update_user(user)
|
19
28
|
status(204)
|
20
29
|
nil
|
21
30
|
end
|
22
31
|
|
23
32
|
delete '/:username' do
|
24
|
-
|
33
|
+
validate_user_management_support
|
34
|
+
|
35
|
+
@identity_provider.delete_user(params[:username])
|
25
36
|
status(204)
|
26
37
|
nil
|
27
38
|
end
|
39
|
+
|
40
|
+
def validate_user_management_support
|
41
|
+
unless @identity_provider.supports_api_update?
|
42
|
+
raise UserManagementNotSupported, 'User management is not supported via API'
|
43
|
+
end
|
44
|
+
end
|
28
45
|
end
|
29
46
|
end
|
30
47
|
end
|
@@ -13,9 +13,15 @@ module Bosh::Director
|
|
13
13
|
app.helpers(Helpers)
|
14
14
|
end
|
15
15
|
|
16
|
-
def scope(
|
16
|
+
def scope(allowed_scope)
|
17
17
|
condition do
|
18
|
-
|
18
|
+
if allowed_scope == :default
|
19
|
+
scope = settings.default_scope
|
20
|
+
elsif allowed_scope.kind_of?(ParamsScope)
|
21
|
+
scope = allowed_scope.scope(params, settings.default_scope)
|
22
|
+
else
|
23
|
+
scope = allowed_scope
|
24
|
+
end
|
19
25
|
|
20
26
|
auth_provided = %w(HTTP_AUTHORIZATION X-HTTP_AUTHORIZATION X_HTTP_AUTHORIZATION).detect do |key|
|
21
27
|
request.env.has_key?(key)
|
@@ -23,7 +29,7 @@ module Bosh::Director
|
|
23
29
|
|
24
30
|
if auth_provided
|
25
31
|
begin
|
26
|
-
@user = identity_provider.corroborate_user(request.env,
|
32
|
+
@user = identity_provider.corroborate_user(request.env, scope)
|
27
33
|
rescue AuthenticationError
|
28
34
|
end
|
29
35
|
end
|
@@ -39,6 +45,18 @@ module Bosh::Director
|
|
39
45
|
options[:scope] ||= :default
|
40
46
|
super(verb, path, options, &block)
|
41
47
|
end
|
48
|
+
|
49
|
+
class ParamsScope
|
50
|
+
def initialize(name, scope)
|
51
|
+
@name = name.to_s
|
52
|
+
@scope = scope
|
53
|
+
end
|
54
|
+
|
55
|
+
def scope(params, default_scope)
|
56
|
+
scope_name = params.fetch(@name, :default).to_sym
|
57
|
+
@scope.fetch(scope_name, default_scope)
|
58
|
+
end
|
59
|
+
end
|
42
60
|
end
|
43
61
|
end
|
44
62
|
end
|
@@ -1,11 +1,19 @@
|
|
1
|
+
require 'forwardable'
|
2
|
+
|
1
3
|
module Bosh
|
2
4
|
module Director
|
3
5
|
module Api
|
4
6
|
class LocalIdentityProvider
|
5
|
-
|
6
|
-
|
7
|
+
extend Forwardable
|
8
|
+
|
9
|
+
def initialize(options, _)
|
10
|
+
users = options.fetch('users', [])
|
11
|
+
@user_manager = Bosh::Director::Api::UserManagerProvider.new.user_manager(users)
|
7
12
|
end
|
8
13
|
|
14
|
+
# User management is supported for backwards compatibility
|
15
|
+
def_delegators :@user_manager, :supports_api_update?, :create_user, :update_user, :delete_user, :get_user_from_request
|
16
|
+
|
9
17
|
def client_info
|
10
18
|
{'type' => 'basic', 'options' => {}}
|
11
19
|
end
|
@@ -4,13 +4,17 @@ module Bosh
|
|
4
4
|
module Director
|
5
5
|
module Api
|
6
6
|
class UAAIdentityProvider
|
7
|
-
def initialize(options,
|
7
|
+
def initialize(options, director_uuid_provider)
|
8
8
|
@url = options.fetch('url')
|
9
9
|
Config.logger.debug "Initializing UAA Identity provider with url #{@url}"
|
10
|
-
@
|
10
|
+
@director_uuid_provider = director_uuid_provider
|
11
11
|
@token_coder = CF::UAA::TokenCoder.new(skey: options.fetch('symmetric_key', nil), pkey: options.fetch('public_key', nil), scope: [])
|
12
12
|
end
|
13
13
|
|
14
|
+
def supports_api_update?
|
15
|
+
false
|
16
|
+
end
|
17
|
+
|
14
18
|
def client_info
|
15
19
|
{
|
16
20
|
'type' => 'uaa',
|
@@ -38,7 +42,7 @@ module Bosh
|
|
38
42
|
return
|
39
43
|
end
|
40
44
|
|
41
|
-
if requested_access
|
45
|
+
if requested_access == :read && token_has_read_scope?(token['scope'])
|
42
46
|
return
|
43
47
|
end
|
44
48
|
end
|
@@ -47,11 +51,11 @@ module Bosh
|
|
47
51
|
end
|
48
52
|
|
49
53
|
def token_has_read_scope?(token_scope)
|
50
|
-
token_scope.include?('bosh.read') || token_scope.include?("bosh.#{@
|
54
|
+
token_scope.include?('bosh.read') || token_scope.include?("bosh.#{@director_uuid_provider.uuid}.read")
|
51
55
|
end
|
52
56
|
|
53
57
|
def token_has_admin_scope?(token_scope)
|
54
|
-
token_scope.include?('bosh.admin') || token_scope.include?("bosh.#{@
|
58
|
+
token_scope.include?('bosh.admin') || token_scope.include?("bosh.#{@director_uuid_provider.uuid}.admin")
|
55
59
|
end
|
56
60
|
end
|
57
61
|
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# Copyright (c) 2009-2012 VMware, Inc.
|
2
|
+
|
3
|
+
module Bosh::Director
|
4
|
+
module Api
|
5
|
+
class ConfigUserManager
|
6
|
+
def initialize(users)
|
7
|
+
@users = users
|
8
|
+
end
|
9
|
+
|
10
|
+
def supports_api_update?
|
11
|
+
false
|
12
|
+
end
|
13
|
+
|
14
|
+
# @param [String] name User name
|
15
|
+
def find_by_name(name)
|
16
|
+
user = @users.find { |u| u['name'] == name }
|
17
|
+
if user.nil?
|
18
|
+
raise UserNotFound, "User `#{name}' doesn't exist"
|
19
|
+
end
|
20
|
+
User.new(user)
|
21
|
+
end
|
22
|
+
|
23
|
+
def authenticate(username, password)
|
24
|
+
return false if username.empty? || password.empty?
|
25
|
+
|
26
|
+
user = find_by_name(username)
|
27
|
+
user.password == password
|
28
|
+
rescue UserNotFound
|
29
|
+
false
|
30
|
+
end
|
31
|
+
|
32
|
+
def delete_user(_)
|
33
|
+
raise NotSupported
|
34
|
+
end
|
35
|
+
|
36
|
+
def create_user(_)
|
37
|
+
raise NotSupported
|
38
|
+
end
|
39
|
+
|
40
|
+
def update_user(_)
|
41
|
+
raise NotSupported
|
42
|
+
end
|
43
|
+
|
44
|
+
def get_user_from_request(_)
|
45
|
+
raise NotSupported
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
class User
|
52
|
+
attr_reader :username, :password
|
53
|
+
|
54
|
+
def initialize(options)
|
55
|
+
@username = options.fetch('name')
|
56
|
+
@password = options.fetch('password')
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module Bosh::Director
|
4
4
|
module Api
|
5
|
-
class
|
5
|
+
class DatabaseUserManager
|
6
6
|
|
7
7
|
# @param [String] name User name
|
8
8
|
# @return [Models::User] User
|
@@ -14,6 +14,10 @@ module Bosh::Director
|
|
14
14
|
user
|
15
15
|
end
|
16
16
|
|
17
|
+
def supports_api_update?
|
18
|
+
true
|
19
|
+
end
|
20
|
+
|
17
21
|
def authenticate(username, password)
|
18
22
|
# This is a dev-mode shortcut
|
19
23
|
if Models::User.count == 0
|
@@ -50,7 +54,7 @@ module Bosh::Director
|
|
50
54
|
def get_user_from_request(request)
|
51
55
|
hash = Yajl::Parser.new.parse(request.body)
|
52
56
|
Models::User.new(:username => hash["username"],
|
53
|
-
|
57
|
+
:password => hash["password"])
|
54
58
|
end
|
55
59
|
|
56
60
|
private
|
@@ -69,4 +73,4 @@ module Bosh::Director
|
|
69
73
|
end
|
70
74
|
end
|
71
75
|
end
|
72
|
-
end
|
76
|
+
end
|
data/lib/bosh/director/config.rb
CHANGED
@@ -388,7 +388,7 @@ module Bosh::Director
|
|
388
388
|
end
|
389
389
|
|
390
390
|
Config.logger.debug("Director configured with '#{provider_name}' user management provider")
|
391
|
-
provider_class.new(user_management[
|
391
|
+
provider_class.new(user_management[provider_name] || {}, Bosh::Director::Api::DirectorUUIDProvider.new(Config))
|
392
392
|
end
|
393
393
|
end
|
394
394
|
|
data/lib/bosh/director/errors.rb
CHANGED
@@ -54,6 +54,7 @@ module Bosh::Director
|
|
54
54
|
stemcell_manifest = Psych.load_file(stemcell_manifest_file)
|
55
55
|
|
56
56
|
@name = safe_property(stemcell_manifest, "name", :class => String)
|
57
|
+
@operating_system = safe_property(stemcell_manifest, "operating_system", :class => String, :optional => true)
|
57
58
|
@version = safe_property(stemcell_manifest, "version", :class => String)
|
58
59
|
@cloud_properties = safe_property(stemcell_manifest, "cloud_properties", :class => Hash, :optional => true)
|
59
60
|
@sha1 = safe_property(stemcell_manifest, "sha1", :class => String)
|
@@ -77,6 +78,7 @@ module Bosh::Director
|
|
77
78
|
|
78
79
|
stemcell = Models::Stemcell.new
|
79
80
|
stemcell.name = @name
|
81
|
+
stemcell.operating_system = @operating_system
|
80
82
|
stemcell.version = @version
|
81
83
|
stemcell.sha1 = @sha1
|
82
84
|
|
@@ -19,7 +19,7 @@ module Bosh::Director
|
|
19
19
|
|
20
20
|
def perform
|
21
21
|
@domain = Models::Dns::Domain.find(name: Config.dns_domain_name, type: "NATIVE") if Config.dns_enabled?
|
22
|
-
|
22
|
+
|
23
23
|
vms = Models::Vm.filter(:deployment_id => @deployment_id)
|
24
24
|
ThreadPool.new(:max_threads => Config.max_threads).wrap do |pool|
|
25
25
|
vms.each do |vm|
|
@@ -44,7 +44,7 @@ module Bosh::Director
|
|
44
44
|
job_index = nil
|
45
45
|
|
46
46
|
begin
|
47
|
-
agent = AgentClient.
|
47
|
+
agent = AgentClient.with_vm(vm, :timeout => TIMEOUT)
|
48
48
|
agent_state = agent.get_state(@format)
|
49
49
|
agent_state["networks"].each_value do |network|
|
50
50
|
ips << network["ip"]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bosh-director
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2999.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- VMware
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bcrypt-ruby
|
@@ -30,126 +30,126 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.
|
33
|
+
version: 1.2999.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 1.
|
40
|
+
version: 1.2999.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bosh-core
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.
|
47
|
+
version: 1.2999.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.
|
54
|
+
version: 1.2999.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: bosh-director-core
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 1.
|
61
|
+
version: 1.2999.0
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 1.
|
68
|
+
version: 1.2999.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: bosh_common
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 1.
|
75
|
+
version: 1.2999.0
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 1.
|
82
|
+
version: 1.2999.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: bosh-template
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 1.
|
89
|
+
version: 1.2999.0
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: 1.
|
96
|
+
version: 1.2999.0
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: bosh_cpi
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 1.
|
103
|
+
version: 1.2999.0
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 1.
|
110
|
+
version: 1.2999.0
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: bosh_openstack_cpi
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 1.
|
117
|
+
version: 1.2999.0
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 1.
|
124
|
+
version: 1.2999.0
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: bosh_aws_cpi
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
129
|
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: 1.
|
131
|
+
version: 1.2999.0
|
132
132
|
type: :runtime
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version: 1.
|
138
|
+
version: 1.2999.0
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: bosh_vsphere_cpi
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
143
|
- - "~>"
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version: 1.
|
145
|
+
version: 1.2999.0
|
146
146
|
type: :runtime
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
150
|
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version: 1.
|
152
|
+
version: 1.2999.0
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: bosh_vcloud_cpi
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -572,7 +572,7 @@ dependencies:
|
|
572
572
|
version: '0'
|
573
573
|
description: |-
|
574
574
|
BOSH Director
|
575
|
-
|
575
|
+
321dd5
|
576
576
|
email: support@cloudfoundry.com
|
577
577
|
executables:
|
578
578
|
- bosh-director
|
@@ -628,6 +628,7 @@ files:
|
|
628
628
|
- db/migrations/director/20150331002413_add_cloud_configs.rb
|
629
629
|
- db/migrations/director/20150401184803_add_cloud_config_to_deployments.rb
|
630
630
|
- db/migrations/director/20150611193110_add_trusted_certs_sha1_to_vms.rb
|
631
|
+
- db/migrations/director/20150619135210_add_os_name_and_version_to_stemcells.rb
|
631
632
|
- db/migrations/dns/20120123234908_initial.rb
|
632
633
|
- lib/bosh/director.rb
|
633
634
|
- lib/bosh/director/agent_client.rb
|
@@ -654,6 +655,7 @@ files:
|
|
654
655
|
- lib/bosh/director/api/controllers/users_controller.rb
|
655
656
|
- lib/bosh/director/api/deployment_lookup.rb
|
656
657
|
- lib/bosh/director/api/deployment_manager.rb
|
658
|
+
- lib/bosh/director/api/director_uuid_provider.rb
|
657
659
|
- lib/bosh/director/api/extensions/scoping.rb
|
658
660
|
- lib/bosh/director/api/http_constants.rb
|
659
661
|
- lib/bosh/director/api/instance_lookup.rb
|
@@ -671,7 +673,9 @@ files:
|
|
671
673
|
- lib/bosh/director/api/task_manager.rb
|
672
674
|
- lib/bosh/director/api/task_remover.rb
|
673
675
|
- lib/bosh/director/api/uaa_identity_provider.rb
|
674
|
-
- lib/bosh/director/api/
|
676
|
+
- lib/bosh/director/api/user/config_user_manager.rb
|
677
|
+
- lib/bosh/director/api/user/database_user_manager.rb
|
678
|
+
- lib/bosh/director/api/user/user_manager_provider.rb
|
675
679
|
- lib/bosh/director/api/vm_state_manager.rb
|
676
680
|
- lib/bosh/director/app.rb
|
677
681
|
- lib/bosh/director/blob_util.rb
|