Class: Puppet::Rails::Schema

Inherits:
Object
  • Object
show all
Defined in:
lib/vendor/puppet/rails/database/schema.rb

Class Method Summary collapse

Class Method Details

.initObject



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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/vendor/puppet/rails/database/schema.rb', line 2

def self.init
  oldout = nil
  Puppet::Util.benchmark(Puppet, :notice, "Initialized database") do
    # We want to rewrite stdout, so we don't get migration messages.
    oldout = $stdout
    $stdout = File.open("/dev/null", "w")
    ActiveRecord::Schema.define do
      create_table :resources do |t|
        t.column :title, :text, :null => false
        t.column :restype,  :string, :null => false
        t.column :host_id, :integer
        t.column :source_file_id, :integer
        t.column :exported, :boolean
        t.column :line, :integer
        t.column :updated_at, :datetime
        t.column :created_at, :datetime
      end
      add_index :resources, :host_id, :integer => true
      add_index :resources, :source_file_id, :integer => true

      # Thanks, mysql!  MySQL requires a length on indexes in text fields.
      # So, we provide them for mysql and handle everything else specially.
      # Oracle doesn't index on CLOB fields, so we skip it
      if ['mysql','mysql2'].include? Puppet[:dbadapter]
        execute "CREATE INDEX typentitle ON resources (restype,title(50));"
      elsif Puppet[:dbadapter] != "oracle_enhanced"
        add_index :resources, [:title, :restype]
      end

      create_table :source_files do |t|
        t.column :filename, :string
        t.column :path, :string
        t.column :updated_at, :datetime
        t.column :created_at, :datetime
      end
      add_index :source_files, :filename

      create_table :resource_tags do |t|
        t.column :resource_id, :integer
        t.column :puppet_tag_id, :integer
        t.column :updated_at, :datetime
        t.column :created_at, :datetime
      end
      add_index :resource_tags, :resource_id, :integer => true
      add_index :resource_tags, :puppet_tag_id, :integer => true

      create_table :puppet_tags do |t|
        t.column :name, :string
        t.column :updated_at, :datetime
        t.column :created_at, :datetime
      end

      # Oracle automatically creates a primary key index
      add_index :puppet_tags, :id, :integer => true if Puppet[:dbadapter] != "oracle_enhanced"

      create_table :hosts do |t|
        t.column :name, :string, :null => false
        t.column :ip, :string
        t.column :environment, :text
        t.column :last_compile, :datetime
        t.column :last_freshcheck, :datetime
        t.column :last_report, :datetime
        #Use updated_at to automatically add timestamp on save.
        t.column :updated_at, :datetime
        t.column :source_file_id, :integer
        t.column :created_at, :datetime
      end
      add_index :hosts, :source_file_id, :integer => true
      add_index :hosts, :name

      create_table :fact_names do |t|
        t.column :name, :string, :null => false
        t.column :updated_at, :datetime
        t.column :created_at, :datetime
      end
      add_index :fact_names, :name

      create_table :fact_values do |t|
        t.column :value, :text, :null => false
        t.column :fact_name_id, :integer, :null => false
        t.column :host_id, :integer, :null => false
        t.column :updated_at, :datetime
        t.column :created_at, :datetime
      end
      add_index :fact_values, :fact_name_id, :integer => true
      add_index :fact_values, :host_id, :integer => true

      create_table :param_values do |t|
        t.column :value,  :text, :null => false
        t.column :param_name_id, :integer, :null => false
        t.column :line, :integer
        t.column :resource_id, :integer
        t.column :updated_at, :datetime
        t.column :created_at, :datetime
      end
      add_index :param_values, :param_name_id, :integer => true
      add_index :param_values, :resource_id, :integer => true

      create_table :param_names do |t|
        t.column :name, :string, :null => false
        t.column :updated_at, :datetime
        t.column :created_at, :datetime
      end
      add_index :param_names, :name

      create_table :inventory_nodes do |t|
        t.column :name, :string, :null => false
        t.column :timestamp, :datetime, :null => false
        t.column :updated_at, :datetime
        t.column :created_at, :datetime
      end

      add_index :inventory_nodes, :name, :unique => true

      create_table :inventory_facts, :id => false do |t|
        t.column :node_id, :integer, :null => false
        t.column :name, :string, :null => false
        t.column :value, :text, :null => false
      end

      add_index :inventory_facts, [:node_id, :name], :unique => true
    end
  end
ensure
  $stdout.close
  $stdout = oldout if oldout
  oldout = nil
end