Method: Chef::ApiClientV1#reregister

Defined in:
lib/chef/api_client_v1.rb

#reregisterObject



232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
# File 'lib/chef/api_client_v1.rb', line 232

def reregister
  # Try API V0 and if it fails due to V0 not being supported, raise the proper error message.
  # reregister only supported in API V0 or lesser.
  reregistered_self = chef_rest_v0.put("clients/#{name}", { name: name, admin: admin, validator: validator, private_key: true })
  if reregistered_self.respond_to?(:[])
    private_key(reregistered_self["private_key"])
  else
    private_key(reregistered_self.private_key)
  end
  self
rescue Net::HTTPClientException => e
  # if there was a 406 related to versioning, give error explaining that
  # only API version 0 is supported for reregister command
  if e.response.code == "406" && e.response["x-ops-server-api-version"]
    version_header = Chef::JSONCompat.from_json(e.response["x-ops-server-api-version"])
    min_version = version_header["min_version"]
    max_version = version_header["max_version"]
    error_msg = reregister_only_v0_supported_error_msg(max_version, min_version)
    raise Chef::Exceptions::OnlyApiVersion0SupportedForAction.new(error_msg)
  else
    raise e
  end
end