summaryrefslogtreecommitdiff
path: root/lib/chef/data_collector/serializers/node_update.rb
blob: 0befb89b154ab3f99c1a7af2fecf294ed123e3d9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#
# Author:: Adam Leff (<adamleff@chef.io)
# Author:: Ryan Cragun (<ryan@chef.io>)
#
# Copyright:: Copyright 2012-2016, Chef Software Inc.
# License:: Apache License, Version 2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

require "securerandom"
require "chef/data_collector/serializers/base"

class Chef
  class DataCollector
    class Serializers
      class NodeUpdate < Base

        attr_reader :run_status

        def initialize(run_status)
          @run_status = run_status
        end

        def message_type
          "action"
        end

        def node
          run_status.node
        end

        def document
          {
            "entity_name"       => node.name,
            "entity_type"       => "node",
            "entity_uuid"       => node_uuid,
            "id"                => SecureRandom.uuid,
            "message_version"   => "1.0.0",
            "message_type"      => message_type,
            "organization_name" => organization,
            "recorded_at"       => Time.now.utc.iso8601,
            "remote_hostname"   => node["fqdn"],
            "requestor_name"    => node.name,
            "requestor_type"    => "client",
            "service_hostname"  => chef_server_fqdn,
            "source"            => collector_source,
            "task"              => "update",
            "user_agent"        => Chef::HTTP::HTTPRequest::DEFAULT_UA,
            "data"              => node,
          }
        end
      end
    end
  end
end