topological_inventory-core 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +202 -0
  3. data/README.md +36 -0
  4. data/Rakefile +47 -0
  5. data/app/assets/config/topological_inventory_manifest.js +2 -0
  6. data/app/assets/javascripts/topological_inventory/application.js +13 -0
  7. data/app/assets/stylesheets/topological_inventory/application.css +15 -0
  8. data/app/controllers/topological_inventory/application_controller.rb +5 -0
  9. data/app/helpers/topological_inventory/application_helper.rb +4 -0
  10. data/app/jobs/topological_inventory/application_job.rb +4 -0
  11. data/app/mailers/topological_inventory/application_mailer.rb +6 -0
  12. data/app/models/application_record.rb +15 -0
  13. data/app/models/availability.rb +3 -0
  14. data/app/models/cluster.rb +14 -0
  15. data/app/models/cluster_tag.rb +7 -0
  16. data/app/models/concerns/act_as_taggable_on.rb +75 -0
  17. data/app/models/concerns/archived_concern.rb +16 -0
  18. data/app/models/container.rb +12 -0
  19. data/app/models/container_group.rb +16 -0
  20. data/app/models/container_group_tag.rb +7 -0
  21. data/app/models/container_image.rb +14 -0
  22. data/app/models/container_image_tag.rb +7 -0
  23. data/app/models/container_node.rb +14 -0
  24. data/app/models/container_node_tag.rb +7 -0
  25. data/app/models/container_project.rb +15 -0
  26. data/app/models/container_project_tag.rb +7 -0
  27. data/app/models/container_resource_quota.rb +14 -0
  28. data/app/models/container_template.rb +13 -0
  29. data/app/models/container_template_tag.rb +7 -0
  30. data/app/models/datastore.rb +15 -0
  31. data/app/models/datastore_mount.rb +6 -0
  32. data/app/models/datastore_tag.rb +7 -0
  33. data/app/models/flavor.rb +14 -0
  34. data/app/models/host.rb +20 -0
  35. data/app/models/host_tag.rb +7 -0
  36. data/app/models/ipaddress.rb +18 -0
  37. data/app/models/ipaddress_tag.rb +7 -0
  38. data/app/models/network.rb +18 -0
  39. data/app/models/network_adapter.rb +19 -0
  40. data/app/models/network_adapter_tag.rb +7 -0
  41. data/app/models/network_tag.rb +7 -0
  42. data/app/models/orchestration_stack.rb +24 -0
  43. data/app/models/refresh_state.rb +7 -0
  44. data/app/models/refresh_state_part.rb +63 -0
  45. data/app/models/reservation.rb +15 -0
  46. data/app/models/reservation_tag.rb +7 -0
  47. data/app/models/security_group.rb +19 -0
  48. data/app/models/security_group_tag.rb +7 -0
  49. data/app/models/service_credential.rb +13 -0
  50. data/app/models/service_credential_type.rb +13 -0
  51. data/app/models/service_instance.rb +23 -0
  52. data/app/models/service_instance_node.rb +17 -0
  53. data/app/models/service_instance_node_service_credential.rb +8 -0
  54. data/app/models/service_instance_service_credential.rb +8 -0
  55. data/app/models/service_inventory.rb +18 -0
  56. data/app/models/service_inventory_tag.rb +7 -0
  57. data/app/models/service_offering.rb +25 -0
  58. data/app/models/service_offering_icon.rb +9 -0
  59. data/app/models/service_offering_node.rb +17 -0
  60. data/app/models/service_offering_node_service_credential.rb +8 -0
  61. data/app/models/service_offering_service_credential.rb +8 -0
  62. data/app/models/service_offering_tag.rb +7 -0
  63. data/app/models/service_plan.rb +16 -0
  64. data/app/models/source.rb +82 -0
  65. data/app/models/source_region.rb +24 -0
  66. data/app/models/subnet.rb +21 -0
  67. data/app/models/subnet_tag.rb +7 -0
  68. data/app/models/subscription.rb +25 -0
  69. data/app/models/tag.rb +67 -0
  70. data/app/models/task.rb +8 -0
  71. data/app/models/tenant.rb +47 -0
  72. data/app/models/vm.rb +27 -0
  73. data/app/models/vm_security_group.rb +8 -0
  74. data/app/models/vm_tag.rb +7 -0
  75. data/app/models/volume.rb +18 -0
  76. data/app/models/volume_attachment.rb +8 -0
  77. data/app/models/volume_type.rb +13 -0
  78. data/app/views/layouts/topological_inventory/application.html.erb +14 -0
  79. data/config/database.dev.yml +22 -0
  80. data/db/migrate/20180919170553_add_sources_and_endpoints.rb +19 -0
  81. data/db/migrate/20180927171624_add_container_models.rb +36 -0
  82. data/db/migrate/20180927205317_add_service_catalog_models.rb +38 -0
  83. data/db/migrate/20180928122710_add_authentications.rb +13 -0
  84. data/db/migrate/20180928130326_add_default_to_endpoints.rb +5 -0
  85. data/db/migrate/20181002195506_update_endpoints_uri_parts.rb +10 -0
  86. data/db/migrate/20181005182645_add_tenant_and_tenant_id_to_all_tables.rb +20 -0
  87. data/db/migrate/20181011164429_add_container_nodes.rb +18 -0
  88. data/db/migrate/20181011172858_add_source_created_and_deleted_at_timestamps.rb +19 -0
  89. data/db/migrate/20181015150921_add_missing_name_to_container_template.rb +5 -0
  90. data/db/migrate/20181016141948_add_json_spec_to_parameters_sets.rb +6 -0
  91. data/db/migrate/20181018082155_add_archived_on_timestamp_to_all_models.rb +19 -0
  92. data/db/migrate/20181018141423_rename_service_parameters_sets_to_service_plans.rb +6 -0
  93. data/db/migrate/20181018235055_add_foreign_keys_to_all_models.rb +37 -0
  94. data/db/migrate/20181023094055_add_not_null_constraints_to_all_models.rb +43 -0
  95. data/db/migrate/20181023102858_add_timestamps_for_parallel_saving.rb +27 -0
  96. data/db/migrate/20181023213355_add_tags_and_taggings.rb +28 -0
  97. data/db/migrate/20181023215716_change_column_defaults.rb +5 -0
  98. data/db/migrate/20181024163850_add_source_type.rb +13 -0
  99. data/db/migrate/20181026182144_add_tasks_table.rb +13 -0
  100. data/db/migrate/20181102141329_add_ssl_options_to_endpoints.rb +6 -0
  101. data/db/migrate/20181102145252_add_regions_and_subscriptions.rb +31 -0
  102. data/db/migrate/20181107211649_add_containers.rb +24 -0
  103. data/db/migrate/20181108113645_add_tenant_id_to_regions_and_subscriptions.rb +6 -0
  104. data/db/migrate/20181109170334_add_not_null_constraints_to_source_type.rb +7 -0
  105. data/db/migrate/20181113145803_add_indexes_on_name_column_to_node_and_namespace.rb +6 -0
  106. data/db/migrate/20181113182615_add_vms_table.rb +32 -0
  107. data/db/migrate/20181113190507_add_orchestration_stacks.rb +26 -0
  108. data/db/migrate/20181114094606_add_last_seen_at_to_all_tables.rb +36 -0
  109. data/db/migrate/20181114115416_add_refresh_states_and_refresh_state_parts.rb +26 -0
  110. data/db/migrate/20181119173228_add_lives_on_to_container_nodes.rb +5 -0
  111. data/db/migrate/20181127191451_add_container_images.rb +28 -0
  112. data/db/migrate/20181128101451_add_flavors.rb +25 -0
  113. data/db/migrate/20181128141221_add_json_schema_to_source_types.rb +5 -0
  114. data/db/migrate/20181129150215_rename_archived_on.rb +18 -0
  115. data/db/migrate/20181130111723_add_volumes.rb +57 -0
  116. data/db/migrate/20181205142648_add_unique_constraint_to_source_uid.rb +6 -0
  117. data/db/migrate/20181210164829_add_hardware_attributes_to_flavors.rb +8 -0
  118. data/db/migrate/20190102161242_remove_tags_and_taggings.rb +33 -0
  119. data/db/migrate/20190102161442_add_taggings_for_all_taggable_tables.rb +86 -0
  120. data/db/migrate/20190104213045_rename_authentication_userid_to_username.rb +5 -0
  121. data/db/migrate/20190111083026_change_sources_source_type_to_not_null.rb +5 -0
  122. data/db/migrate/20190111163026_change_sources_name_to_not_null.rb +5 -0
  123. data/db/migrate/20190116164905_add_extra_metadata_and_tags_for_service_offerings.rb +21 -0
  124. data/db/migrate/20190118110059_add_service_offering_icons.rb +16 -0
  125. data/db/migrate/20190122131958_add_missing_foreign_key_constraint_to_tasks.rb +5 -0
  126. data/db/migrate/20190122133424_index_foreign_keys_in_authentications.rb +5 -0
  127. data/db/migrate/20190122133425_index_foreign_keys_in_container_groups.rb +5 -0
  128. data/db/migrate/20190122133426_index_foreign_keys_in_container_projects.rb +5 -0
  129. data/db/migrate/20190122133427_index_foreign_keys_in_container_templates.rb +5 -0
  130. data/db/migrate/20190122133428_index_foreign_keys_in_endpoints.rb +5 -0
  131. data/db/migrate/20190122133429_index_foreign_keys_in_service_instances.rb +5 -0
  132. data/db/migrate/20190122133430_index_foreign_keys_in_service_offerings.rb +5 -0
  133. data/db/migrate/20190122133431_index_foreign_keys_in_service_plans.rb +5 -0
  134. data/db/migrate/20190122133432_index_foreign_keys_in_sources.rb +5 -0
  135. data/db/migrate/20190122153645_remove_extraneous_indexes.rb +17 -0
  136. data/db/migrate/20190124140942_add_missing_indexes_for_last_seen_at.rb +8 -0
  137. data/db/migrate/20190124154742_add_missing_not_null_constraints_to_source_ref.rb +21 -0
  138. data/db/migrate/20190205174227_add_version_to_sources.rb +5 -0
  139. data/db/migrate/20190208143909_add_availabilities_table.rb +15 -0
  140. data/db/migrate/20190213155142_add_resource_version_to_service_plans.rb +5 -0
  141. data/db/migrate/20190218180413_move_tag_value_to_tags.rb +40 -0
  142. data/db/migrate/20190218203848_remove_extra_columns_from_tagging_join_tables.rb +33 -0
  143. data/db/migrate/20190222171042_add_mac_addresses_and_host_inventory_id_to_vms.rb +8 -0
  144. data/db/migrate/20190228103842_add_unique_indexes_to_tag_mapping_tables.rb +21 -0
  145. data/db/migrate/20190308144237_add_application_types.rb +9 -0
  146. data/db/migrate/20190308145549_add_applications.rb +10 -0
  147. data/db/migrate/20190313191654_add_application_type_display_name.rb +5 -0
  148. data/db/migrate/20190314123842_add_containers_resource_quotas_table.rb +30 -0
  149. data/db/migrate/20190314133842_add_columns_for_containers_capacity_planning_analytics.rb +13 -0
  150. data/db/migrate/20190314153151_extract_sources_to_new_service.rb +84 -0
  151. data/db/migrate/20190322122542_add_external_url_to_service_instances.rb +5 -0
  152. data/db/migrate/20190325115642_external_tenant_must_be_unique_and_not_null.rb +6 -0
  153. data/db/migrate/20190401134142_add_last_seen_at_to_all_ingress_exposed_tables.rb +36 -0
  154. data/db/migrate/20190514164916_add_clusters.rb +39 -0
  155. data/db/migrate/20190514165841_add_hosts.rb +45 -0
  156. data/db/migrate/20190522170940_add_datastores.rb +38 -0
  157. data/db/migrate/20190522172440_add_datastore_mounts.rb +17 -0
  158. data/db/migrate/20190724194551_add_network_adapters.rb +39 -0
  159. data/db/migrate/20190729194551_change_network_adapters.rb +27 -0
  160. data/db/migrate/20190729214242_add_ipaddresses_subnets_and_networks.rb +186 -0
  161. data/db/migrate/20190806112121_add_missing_relation_to_subscription_region_and_stack.rb +14 -0
  162. data/db/migrate/20190807102142_add_missing_relation_to_subscription_and_region_to_network_adapter.rb +6 -0
  163. data/db/migrate/20190807183701_add_source_collector_status.rb +5 -0
  164. data/db/migrate/20190815194221_add_reservations_table.rb +43 -0
  165. data/db/migrate/20190926144242_add_service_inventories_table.rb +39 -0
  166. data/db/migrate/20190930112142_add_service_offering_and_instance_nodes_tables.rb +67 -0
  167. data/db/migrate/20190930162142_add_inventory_relation_to_service_offerings_and_instances.rb +6 -0
  168. data/db/migrate/20191002132112_add_root_service_instance_to_service_instances.rb +6 -0
  169. data/db/migrate/20191108135108_add_service_credential_tables.rb +33 -0
  170. data/db/migrate/20191118181501_add_host_to_vm.rb +5 -0
  171. data/db/migrate/20200122181811_add_tenant_to_join_tables.rb +134 -0
  172. data/db/migrate/20200213135429_remove_service_credential_references.rb +8 -0
  173. data/db/migrate/20200213150314_create_service_credential_types.rb +30 -0
  174. data/db/migrate/20200213173958_add_service_credential_type_to_service_credentials.rb +5 -0
  175. data/db/migrate/20200214183108_create_join_table_service_offering_service_credentials.rb +18 -0
  176. data/db/migrate/20200214183117_create_join_table_service_instance_service_credentials.rb +19 -0
  177. data/db/migrate/20200218182928_create_join_table_service_offering_node_service_credentials.rb +18 -0
  178. data/db/migrate/20200218183046_create_join_table_service_instance_node_service_credentials.rb +18 -0
  179. data/db/migrate/20200313124806_remove_extraneous_index_from_service_credential_join_tables.rb +15 -0
  180. data/db/migrate/20200313141215_add_refresh_state_part_to_persisted_models.rb +66 -0
  181. data/db/migrate/20200317082640_add_tracking_timestamps_to_refresh_state.rb +6 -0
  182. data/db/schema.rb +1594 -0
  183. data/db/seeds.rb +0 -0
  184. data/lib/tasks/topological_inventory_tasks.rake +4 -0
  185. data/lib/topological_inventory-core.rb +7 -0
  186. data/lib/topological_inventory/core/ar_helper.rb +50 -0
  187. data/lib/topological_inventory/core/engine.rb +17 -0
  188. data/lib/topological_inventory/core/logging.rb +19 -0
  189. data/lib/topological_inventory/core/seed_loader.rb +9 -0
  190. data/lib/topological_inventory/core/version.rb +5 -0
  191. data/lib/topological_inventory/schema.rb +6 -0
  192. data/lib/topological_inventory/schema/base.rb +26 -0
  193. data/lib/topological_inventory/schema/default.rb +187 -0
  194. metadata +389 -0
@@ -0,0 +1,9 @@
1
+ class AddApplicationTypes < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :application_types do |t|
4
+ t.string :name, :null => false
5
+ t.index %w[name], :unique => true
6
+ t.timestamps
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,10 @@
1
+ class AddApplications < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :applications do |t|
4
+ t.references :tenant, :index => true, :null => false, :foreign_key => {:on_delete => :cascade}
5
+ t.references :source, :index => true, :null => false, :foreign_key => {:on_delete => :cascade}
6
+ t.references :application_type, :index => true, :null => false, :foreign_key => {:on_delete => :cascade}
7
+ t.timestamps
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,5 @@
1
+ class AddApplicationTypeDisplayName < ActiveRecord::Migration[5.2]
2
+ def change
3
+ add_column :application_types, :display_name, :string
4
+ end
5
+ end
@@ -0,0 +1,30 @@
1
+ class AddContainersResourceQuotasTable < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :container_resource_quotas, :id => :bigserial do |t|
4
+ t.references :tenant, :type => :bigint, :index => true, :null => false, :foreign_key => {:on_delete => :cascade}
5
+ t.references :source, :type => :bigint, :index => false, :null => false, :foreign_key => {:on_delete => :cascade}
6
+
7
+ t.references :container_project, :type => :bigint, :index => true, :null => true, :foreign_key => {:on_delete => :cascade}
8
+
9
+ t.string :source_ref, :null => false
10
+ t.string :resource_version
11
+ t.string :name
12
+ t.jsonb :status
13
+ t.jsonb :spec
14
+
15
+ t.timestamps
16
+ t.datetime :archived_at
17
+ t.datetime :last_seen_at
18
+ t.datetime :source_deleted_at
19
+ t.datetime :source_created_at
20
+
21
+ t.datetime :resource_timestamp
22
+ t.jsonb :resource_timestamps, :default => {}
23
+ t.datetime :resource_timestamps_max
24
+
25
+ t.index [:source_id, :source_ref], :unique => true
26
+ t.index :archived_at
27
+ t.index :last_seen_at
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,13 @@
1
+ class AddColumnsForContainersCapacityPlanningAnalytics < ActiveRecord::Migration[5.2]
2
+ def change
3
+ add_column :container_projects, :status_phase, :string
4
+
5
+ add_column :container_nodes, :pods, :integer
6
+ add_column :container_nodes, :allocatable_memory, :bigint
7
+ add_column :container_nodes, :allocatable_cpus, :float
8
+ add_column :container_nodes, :allocatable_pods, :integer
9
+ add_column :container_nodes, :conditions, :jsonb
10
+ add_column :container_nodes, :addresses, :jsonb
11
+ add_column :container_nodes, :node_info, :jsonb
12
+ end
13
+ end
@@ -0,0 +1,84 @@
1
+ class ExtractSourcesToNewService < ActiveRecord::Migration[5.2]
2
+ def up
3
+ remove_column :sources, :name
4
+ remove_column :sources, :source_type_id
5
+ remove_column :sources, :version
6
+
7
+ drop_table :applications
8
+ drop_table :application_types
9
+ drop_table :authentications
10
+ drop_table :endpoints
11
+ drop_table :source_types
12
+ end
13
+
14
+ def down
15
+ create_table "application_types", :force => :cascade do |t|
16
+ t.string "name", :null => false
17
+ t.datetime "created_at", :null => false
18
+ t.datetime "updated_at", :null => false
19
+ t.string "display_name"
20
+ t.index ["name"], :name => "index_application_types_on_name", :unique => true
21
+ end
22
+
23
+ create_table "applications", :force => :cascade do |t|
24
+ t.bigint "tenant_id", :null => false
25
+ t.bigint "source_id", :null => false
26
+ t.bigint "application_type_id", :null => false
27
+ t.timestamps
28
+ t.index ["application_type_id"], :name => "index_applications_on_application_type_id"
29
+ t.index ["source_id"], :name => "index_applications_on_source_id"
30
+ t.index ["tenant_id"], :name => "index_applications_on_tenant_id"
31
+ end
32
+
33
+ create_table "authentications", :force => :cascade do |t|
34
+ t.string "resource_type"
35
+ t.integer "resource_id"
36
+ t.string "name"
37
+ t.string "authtype"
38
+ t.string "username"
39
+ t.string "password"
40
+ t.string "status"
41
+ t.string "status_details"
42
+ t.bigint "tenant_id", :null => false
43
+ t.index ["resource_type", "resource_id"], :name => "index_authentications_on_resource_type_and_resource_id"
44
+ t.index ["tenant_id"], :name => "index_authentications_on_tenant_id"
45
+ end
46
+
47
+ create_table "endpoints", :force => :cascade do |t|
48
+ t.string "role"
49
+ t.integer "port"
50
+ t.bigint "source_id"
51
+ t.timestamps
52
+ t.boolean "default", :default => false
53
+ t.string "scheme"
54
+ t.string "host"
55
+ t.string "path"
56
+ t.bigint "tenant_id", :null => false
57
+ t.boolean "verify_ssl"
58
+ t.text "certificate_authority"
59
+ t.index ["source_id"], :name => "index_endpoints_on_source_id"
60
+ t.index ["tenant_id"], :name => "index_endpoints_on_tenant_id"
61
+ end
62
+
63
+ create_table "source_types", :force => :cascade do |t|
64
+ t.string "name", :null => false
65
+ t.string "product_name", :null => false
66
+ t.string "vendor", :null => false
67
+ t.timestamps
68
+ t.jsonb("schema")
69
+ t.index ["name"], :name => "index_source_types_on_name", :unique => true
70
+ end
71
+
72
+ add_column "sources", "name", "string", :null => false
73
+ add_reference "sources", "source_type", :null => false, :index => true
74
+ add_column "sources", "version", "string"
75
+
76
+ add_foreign_key("applications", "application_types", :on_delete => :cascade)
77
+ add_foreign_key("applications", "sources", :on_delete => :cascade)
78
+ add_foreign_key("applications", "tenants", :on_delete => :cascade)
79
+ add_foreign_key("authentications", "tenants", :on_delete => :cascade)
80
+ add_foreign_key("endpoints", "sources", :on_delete => :cascade)
81
+ add_foreign_key("endpoints", "tenants", :on_delete => :cascade)
82
+ add_foreign_key("sources", "source_types", :on_delete => :cascade)
83
+ end
84
+ end
@@ -0,0 +1,5 @@
1
+ class AddExternalUrlToServiceInstances < ActiveRecord::Migration[5.2]
2
+ def change
3
+ add_column :service_instances, :external_url, :string
4
+ end
5
+ end
@@ -0,0 +1,6 @@
1
+ class ExternalTenantMustBeUniqueAndNotNull < ActiveRecord::Migration[5.2]
2
+ def change
3
+ change_column_null :tenants, :external_tenant, false
4
+ add_index :tenants, [:external_tenant], :unique => true
5
+ end
6
+ end
@@ -0,0 +1,36 @@
1
+ class AddLastSeenAtToAllIngressExposedTables < ActiveRecord::Migration[5.2]
2
+ def change
3
+ add_column :vm_tags, :last_seen_at, :datetime
4
+ add_index :vm_tags, :last_seen_at
5
+
6
+ add_column :volume_attachments, :last_seen_at, :datetime
7
+ add_index :volume_attachments, :last_seen_at
8
+
9
+ add_column :container_group_tags, :last_seen_at, :datetime
10
+ add_index :container_group_tags, :last_seen_at
11
+
12
+ add_column :container_image_tags, :last_seen_at, :datetime
13
+ add_index :container_image_tags, :last_seen_at
14
+
15
+ add_column :containers, :last_seen_at, :datetime
16
+ add_index :containers, :last_seen_at
17
+
18
+ add_column :container_node_tags, :last_seen_at, :datetime
19
+ add_index :container_node_tags, :last_seen_at
20
+
21
+ add_column :container_project_tags, :last_seen_at, :datetime
22
+ add_index :container_project_tags, :last_seen_at
23
+
24
+ add_column :container_template_tags, :last_seen_at, :datetime
25
+ add_index :container_template_tags, :last_seen_at
26
+
27
+ add_column :service_offering_icons, :last_seen_at, :datetime
28
+ add_index :service_offering_icons, :last_seen_at
29
+
30
+ add_column :service_offering_tags, :last_seen_at, :datetime
31
+ add_index :service_offering_tags, :last_seen_at
32
+
33
+ add_column :tags, :last_seen_at, :datetime
34
+ add_index :tags, :last_seen_at
35
+ end
36
+ end
@@ -0,0 +1,39 @@
1
+ class AddClusters < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table "clusters", id: :bigserial, force: :cascade do |t|
4
+ t.references :tenant, :index => true, :null => false, :foreign_key => {:on_delete => :cascade}
5
+ t.references :source, :index => false, :null => false, :foreign_key => {:on_delete => :cascade}
6
+
7
+ t.string :source_ref, :null => false
8
+ t.string :uid_ems
9
+ t.string :name
10
+ t.jsonb :extra
11
+
12
+ t.datetime :resource_timestamp
13
+ t.jsonb :resource_timestamps, default: {}
14
+ t.datetime :resource_timestamps_max
15
+
16
+ t.timestamps
17
+ t.datetime :archived_at
18
+ t.datetime :source_created_at
19
+ t.datetime :source_deleted_at
20
+ t.datetime :last_seen_at
21
+
22
+ t.index %i[source_id source_ref], :unique => true
23
+ t.index :archived_at
24
+ t.index :last_seen_at
25
+ t.index :uid_ems
26
+ end
27
+
28
+ create_table :cluster_tags, id: :serial, force: :cascade do |t|
29
+ t.references :tag, :index => false, :null => false, :foreign_key => {:on_delete => :cascade}
30
+ t.references :cluster, :index => false, :null => false, :foreign_key => {:on_delete => :cascade}
31
+
32
+ t.datetime :last_seen_at
33
+
34
+ t.index %i[cluster_id]
35
+ t.index %i[last_seen_at]
36
+ t.index %i[tag_id cluster_id], unique: true
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,45 @@
1
+ class AddHosts < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :hosts, id: :bigserial, force: :cascade do |t|
4
+ t.references :tenant, :index => true, :null => false, :foreign_key => {:on_delete => :cascade}
5
+ t.references :source, :index => false, :null => false, :foreign_key => {:on_delete => :cascade}
6
+ t.references :cluster, :index => true, :null => true, :foreign_key => {:on_delete => :nullify}
7
+
8
+ t.string :source_ref, :null => false
9
+ t.string :uid_ems
10
+ t.string :name
11
+ t.string :hostname
12
+ t.string :description
13
+ t.string :power_state
14
+ t.bigint :cpus
15
+ t.bigint :memory
16
+ t.jsonb :extra
17
+
18
+ t.datetime :resource_timestamp
19
+ t.jsonb :resource_timestamps, default: {}
20
+ t.datetime :resource_timestamps_max
21
+
22
+ t.timestamps
23
+ t.datetime :archived_at
24
+ t.datetime :source_created_at
25
+ t.datetime :source_deleted_at
26
+ t.datetime :last_seen_at
27
+
28
+ t.index %i[source_id source_ref], :unique => true
29
+ t.index :archived_at
30
+ t.index :last_seen_at
31
+ t.index :uid_ems
32
+ end
33
+
34
+ create_table :host_tags, id: :serial, force: :cascade do |t|
35
+ t.references :tag, :index => false, :null => false, :foreign_key => {:on_delete => :cascade}
36
+ t.references :host, :index => false, :null => false, :foreign_key => {:on_delete => :cascade}
37
+
38
+ t.datetime :last_seen_at
39
+
40
+ t.index %i[host_id]
41
+ t.index %i[last_seen_at]
42
+ t.index %i[tag_id host_id], unique: true
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,38 @@
1
+ class AddDatastores < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :datastores, :id => :bigserial, :force => :cascade do |t|
4
+ t.references :tenant, :index => true, :null => false, :foreign_key => {:on_delete => :cascade}
5
+ t.references :source, :index => false, :null => false, :foreign_key => {:on_delete => :cascade}
6
+
7
+ t.string :source_ref, :null => false
8
+ t.string :name
9
+ t.string :location
10
+ t.bigint :total_space
11
+ t.bigint :free_space
12
+ t.string :status
13
+ t.boolean :accessible
14
+ t.jsonb :extra
15
+
16
+ t.timestamps
17
+ t.datetime :archived_at
18
+ t.datetime :source_created_at
19
+ t.datetime :source_deleted_at
20
+ t.datetime :last_seen_at
21
+
22
+ t.index %i[source_id source_ref], :unique => true
23
+ t.index :archived_at
24
+ t.index :last_seen_at
25
+ end
26
+
27
+ create_table :datastore_tags, :id => :serial, :force => :cascade do |t|
28
+ t.references :tag, :index => false, :null => false, :foreign_key => {:on_delete => :cascade}
29
+ t.references :datastore, :index => false, :null => false, :foreign_key => {:on_delete => :cascade}
30
+
31
+ t.datetime :last_seen_at
32
+
33
+ t.index %i[datastore_id]
34
+ t.index %i[last_seen_at]
35
+ t.index %i[tag_id datastore_id], :unique => true
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,17 @@
1
+ class AddDatastoreMounts < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :datastore_mounts, :id => :bigserial, :force => :cascade do |t|
4
+ t.references :datastore, :index => false, :null => false, :foreign_key => {:on_delete => :cascade}
5
+ t.references :host, :index => false, :null => false, :foreign_key => {:on_delete => :cascade}
6
+
7
+ t.boolean :read_only
8
+ t.boolean :accessible
9
+
10
+ t.datetime :last_seen_at
11
+
12
+ t.index %i[host_id]
13
+ t.index %i[last_seen_at]
14
+ t.index %i[datastore_id host_id], :unique => true
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,39 @@
1
+ class AddNetworkAdapters < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :network_adapters do |t|
4
+ t.references :tenant, :index => true, :null => false, :foreign_key => {:on_delete => :cascade}
5
+
6
+ t.string :source_ref, :null => false
7
+ t.string :mac_address
8
+ t.jsonb :ipaddresses
9
+ t.jsonb :extra
10
+
11
+ t.datetime :resource_timestamp
12
+ t.jsonb :resource_timestamps, default: {}
13
+ t.datetime :resource_timestamps_max
14
+
15
+ t.timestamps
16
+ t.datetime :archived_at
17
+ t.datetime :source_created_at
18
+ t.datetime :source_deleted_at
19
+ t.datetime :last_seen_at
20
+
21
+ t.index :archived_at
22
+ t.index :last_seen_at
23
+ end
24
+
25
+ create_table :vm_network_adapters do |t|
26
+ t.references :vm, :index => true, :null => false, :foreign_key => {:on_delete => :cascade}
27
+ t.references :network_adapter, :index => true, :null => false, :foreign_key => {:on_delete => :cascade}
28
+ t.datetime :last_seen_at
29
+ t.index :last_seen_at
30
+ end
31
+
32
+ create_table :host_network_adapters do |t|
33
+ t.references :host, :index => true, :null => false, :foreign_key => {:on_delete => :cascade}
34
+ t.references :network_adapter, :index => true, :null => false, :foreign_key => {:on_delete => :cascade}
35
+ t.datetime :last_seen_at
36
+ t.index :last_seen_at
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,27 @@
1
+ class ChangeNetworkAdapters < ActiveRecord::Migration[5.2]
2
+ def change
3
+ add_reference :network_adapters, :source, :index => false, :null => false, :foreign_key => {:on_delete => :cascade}
4
+ add_reference :network_adapters, :orchestration_stack, :index => true, :null => true, :foreign_key => {:on_delete => :cascade}
5
+
6
+ # Relations to VMs, Hosts, etc.
7
+ add_reference :network_adapters, :device, :index => true, :polymorphic => true, :null => true
8
+ add_index :network_adapters, %i[source_id source_ref], :unique => true
9
+
10
+ remove_column :network_adapters, :ipaddresses, :jsonb
11
+
12
+ # Drop old mapping tables
13
+ drop_table :vm_network_adapters do |t|
14
+ t.references :vm, :index => true, :null => false, :foreign_key => {:on_delete => :cascade}
15
+ t.references :network_adapter, :index => true, :null => false, :foreign_key => {:on_delete => :cascade}
16
+ t.datetime :last_seen_at
17
+ t.index :last_seen_at
18
+ end
19
+
20
+ drop_table :host_network_adapters do |t|
21
+ t.references :host, :index => true, :null => false, :foreign_key => {:on_delete => :cascade}
22
+ t.references :network_adapter, :index => true, :null => false, :foreign_key => {:on_delete => :cascade}
23
+ t.datetime :last_seen_at
24
+ t.index :last_seen_at
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,186 @@
1
+ class AddIpaddressesSubnetsAndNetworks < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :networks, :id => :bigserial, :force => :cascade do |t|
4
+ t.references :tenant, :index => true, :null => false, :foreign_key => {:on_delete => :cascade}
5
+ t.references :source, :index => false, :null => false, :foreign_key => {:on_delete => :cascade}
6
+ t.references :source_region, :index => true, :null => true, :foreign_key => {:on_delete => :cascade}
7
+ t.references :subscription, :index => true, :null => true, :foreign_key => {:on_delete => :cascade}
8
+ t.references :orchestration_stack, :index => true, :null => true, :foreign_key => {:on_delete => :cascade}
9
+
10
+ t.string :source_ref, :null => false
11
+ t.string :name
12
+ t.string :cidr
13
+ t.string :status
14
+
15
+ t.jsonb :extra
16
+
17
+ t.datetime :resource_timestamp
18
+ t.jsonb :resource_timestamps, :default => {}
19
+ t.datetime :resource_timestamps_max
20
+
21
+ t.timestamps
22
+ t.datetime :archived_at
23
+ t.datetime :source_created_at
24
+ t.datetime :source_deleted_at
25
+ t.datetime :last_seen_at
26
+
27
+ t.index :archived_at
28
+ t.index :last_seen_at
29
+
30
+ t.index %i[source_id source_ref], :unique => true
31
+ end
32
+
33
+ create_table :subnets, :id => :bigserial, :force => :cascade do |t|
34
+ t.references :tenant, :index => true, :null => false, :foreign_key => {:on_delete => :cascade}
35
+ t.references :source, :index => false, :null => false, :foreign_key => {:on_delete => :cascade}
36
+ t.references :source_region, :index => true, :null => true, :foreign_key => {:on_delete => :cascade}
37
+ t.references :subscription, :index => true, :null => true, :foreign_key => {:on_delete => :cascade}
38
+ t.references :orchestration_stack, :index => true, :null => true, :foreign_key => {:on_delete => :cascade}
39
+
40
+ t.references :network, :index => true, :null => true, :foreign_key => {:on_delete => :cascade}
41
+
42
+ t.string :source_ref, :null => false
43
+ t.string :name
44
+ t.string :cidr
45
+ t.string :status
46
+
47
+ t.jsonb :extra
48
+
49
+ t.datetime :resource_timestamp
50
+ t.jsonb :resource_timestamps, :default => {}
51
+ t.datetime :resource_timestamps_max
52
+
53
+ t.timestamps
54
+ t.datetime :archived_at
55
+ t.datetime :source_created_at
56
+ t.datetime :source_deleted_at
57
+ t.datetime :last_seen_at
58
+
59
+ t.index :archived_at
60
+ t.index :last_seen_at
61
+
62
+ t.index %i[source_id source_ref], :unique => true
63
+ end
64
+
65
+ create_table :ipaddresses, :id => :bigserial, :force => :cascade do |t|
66
+ t.references :tenant, :index => true, :null => false, :foreign_key => {:on_delete => :cascade}
67
+ t.references :source, :index => false, :null => false, :foreign_key => {:on_delete => :cascade}
68
+ t.references :source_region, :index => true, :null => true, :foreign_key => {:on_delete => :cascade}
69
+ t.references :subscription, :index => true, :null => true, :foreign_key => {:on_delete => :cascade}
70
+ t.references :orchestration_stack, :index => true, :null => true, :foreign_key => {:on_delete => :cascade}
71
+
72
+ t.references :network_adapter, :index => true, :null => true, :foreign_key => {:on_delete => :cascade}
73
+ t.references :subnet, :index => true, :null => true, :foreign_key => {:on_delete => :cascade}
74
+
75
+ t.string :source_ref, :null => false
76
+ t.string :kind, :null => false, :default => "private"
77
+ t.string :ipaddress
78
+ t.jsonb :extra
79
+
80
+ t.datetime :resource_timestamp
81
+ t.jsonb :resource_timestamps, :default => {}
82
+ t.datetime :resource_timestamps_max
83
+
84
+ t.timestamps
85
+ t.datetime :archived_at
86
+ t.datetime :source_created_at
87
+ t.datetime :source_deleted_at
88
+ t.datetime :last_seen_at
89
+
90
+ t.index :archived_at
91
+ t.index :last_seen_at
92
+
93
+ t.index %i[source_id source_ref], :unique => true
94
+ end
95
+
96
+ create_table :security_groups, :id => :bigserial, :force => :cascade do |t|
97
+ t.references :tenant, :index => true, :null => false, :foreign_key => {:on_delete => :cascade}
98
+ t.references :source, :index => false, :null => false, :foreign_key => {:on_delete => :cascade}
99
+ t.references :source_region, :index => true, :null => true, :foreign_key => {:on_delete => :cascade}
100
+ t.references :subscription, :index => true, :null => true, :foreign_key => {:on_delete => :cascade}
101
+ t.references :orchestration_stack, :index => true, :null => true, :foreign_key => {:on_delete => :cascade}
102
+
103
+ t.references :network, :index => true, :null => true, :foreign_key => {:on_delete => :cascade}
104
+
105
+ t.string :source_ref, :null => false
106
+ t.string :name
107
+ t.string :description
108
+ t.jsonb :extra
109
+
110
+ t.datetime :resource_timestamp
111
+ t.jsonb :resource_timestamps, :default => {}
112
+ t.datetime :resource_timestamps_max
113
+
114
+ t.timestamps
115
+ t.datetime :archived_at
116
+ t.datetime :source_created_at
117
+ t.datetime :source_deleted_at
118
+ t.datetime :last_seen_at
119
+
120
+ t.index :archived_at
121
+ t.index :last_seen_at
122
+
123
+ t.index %i[source_id source_ref], :unique => true
124
+ end
125
+
126
+ create_table :vm_security_groups, :id => :bigserial, :force => :cascade do |t|
127
+ t.references :vm, :index => false, :null => false, :foreign_key => {:on_delete => :cascade}
128
+ t.references :security_group, :index => true, :null => false, :foreign_key => {:on_delete => :cascade}
129
+
130
+ t.datetime :last_seen_at
131
+
132
+ t.index :last_seen_at
133
+ t.index %i[vm_id security_group_id], :unique => true
134
+ end
135
+
136
+ create_table :network_adapter_tags, :id => :serial, :force => :cascade do |t|
137
+ t.references :tag, :index => false, :null => false, :foreign_key => {:on_delete => :cascade}
138
+ t.references :network_adapter, :index => true, :null => false, :foreign_key => {:on_delete => :cascade}
139
+
140
+ t.datetime :last_seen_at
141
+
142
+ t.index %i[last_seen_at]
143
+ t.index %i[tag_id network_adapter_id], :unique => true
144
+ end
145
+
146
+ create_table :network_tags, :id => :serial, :force => :cascade do |t|
147
+ t.references :tag, :index => false, :null => false, :foreign_key => {:on_delete => :cascade}
148
+ t.references :network, :index => true, :null => false, :foreign_key => {:on_delete => :cascade}
149
+
150
+ t.datetime :last_seen_at
151
+
152
+ t.index %i[last_seen_at]
153
+ t.index %i[tag_id network_id], :unique => true
154
+ end
155
+
156
+ create_table :subnet_tags, :id => :serial, :force => :cascade do |t|
157
+ t.references :tag, :index => false, :null => false, :foreign_key => {:on_delete => :cascade}
158
+ t.references :subnet, :index => true, :null => false, :foreign_key => {:on_delete => :cascade}
159
+
160
+ t.datetime :last_seen_at
161
+
162
+ t.index %i[last_seen_at]
163
+ t.index %i[tag_id subnet_id], :unique => true
164
+ end
165
+
166
+ create_table :security_group_tags, :id => :serial, :force => :cascade do |t|
167
+ t.references :tag, :index => false, :null => false, :foreign_key => {:on_delete => :cascade}
168
+ t.references :security_group, :index => true, :null => false, :foreign_key => {:on_delete => :cascade}
169
+
170
+ t.datetime :last_seen_at
171
+
172
+ t.index %i[last_seen_at]
173
+ t.index %i[tag_id security_group_id], :unique => true
174
+ end
175
+
176
+ create_table :ipaddress_tags, :id => :serial, :force => :cascade do |t|
177
+ t.references :tag, :index => false, :null => false, :foreign_key => {:on_delete => :cascade}
178
+ t.references :ipaddress, :index => true, :null => false, :foreign_key => {:on_delete => :cascade}
179
+
180
+ t.datetime :last_seen_at
181
+
182
+ t.index %i[last_seen_at]
183
+ t.index %i[tag_id ipaddress_id], :unique => true
184
+ end
185
+ end
186
+ end