| 4117 | |
| 4118 | |
| 4119 | Future<Response> Http::removeResourceProviderConfig( |
| 4120 | const mesos::agent::Call& call, |
| 4121 | const Option<Principal>& principal) const |
| 4122 | { |
| 4123 | CHECK_EQ(mesos::agent::Call::REMOVE_RESOURCE_PROVIDER_CONFIG, call.type()); |
| 4124 | CHECK(call.has_remove_resource_provider_config()); |
| 4125 | |
| 4126 | const string& type = call.remove_resource_provider_config().type(); |
| 4127 | const string& name = call.remove_resource_provider_config().name(); |
| 4128 | |
| 4129 | LOG(INFO) |
| 4130 | << "Processing REMOVE_RESOURCE_PROVIDER_CONFIG call with" |
| 4131 | << " type '" << type << "' and name '" << name << "'"; |
| 4132 | |
| 4133 | return ObjectApprovers::create( |
| 4134 | slave->authorizer, |
| 4135 | principal, |
| 4136 | {MODIFY_RESOURCE_PROVIDER_CONFIG}) |
| 4137 | .then(defer( |
| 4138 | slave->self(), |
| 4139 | [=](const Owned<ObjectApprovers>& approvers) -> Future<Response> { |
| 4140 | if (!approvers->approved<MODIFY_RESOURCE_PROVIDER_CONFIG>()) { |
| 4141 | return Forbidden(); |
| 4142 | } |
| 4143 | |
| 4144 | return slave->localResourceProviderDaemon->remove(type, name) |
| 4145 | .then([]() -> Response { return OK(); }); |
| 4146 | })); |
| 4147 | } |
| 4148 | |
| 4149 | |
| 4150 | Future<Response> Http::markResourceProviderGone( |