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,18 @@
1
+ class CreateJoinTableServiceOfferingNodeServiceCredentials < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :service_offering_node_service_credentials do |t|
4
+ t.references :tenant, :index => true, :null => false, :foreign_key => {:on_delete => :cascade}
5
+ t.references :service_credential, :null => false, :index => false, :foreign_key => {:on_delete => :cascade}
6
+ t.references :service_offering_node, :null => false, :index => false, :foreign_key => {:on_delete => :cascade}
7
+
8
+ t.timestamps
9
+
10
+ t.datetime :last_seen_at
11
+
12
+ t.index %i[service_credential_id], :name => :index_offering_node_credentials_on_service_credential_id
13
+ t.index %i[service_offering_node_id], :name => :index_offering_node_credentials_on_service_offering_id
14
+ t.index %i[last_seen_at]
15
+ t.index %i[service_credential_id service_offering_node_id], :unique => true, :name => :index_service_offering_node_credential_id
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ class CreateJoinTableServiceInstanceNodeServiceCredentials < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :service_instance_node_service_credentials do |t|
4
+ t.references :tenant, :index => true, :null => false, :foreign_key => {:on_delete => :cascade}
5
+ t.references :service_credential, :null => false, :index => false, :foreign_key => {:on_delete => :cascade}
6
+ t.references :service_instance_node, :null => false, :index => false, :foreign_key => {:on_delete => :cascade}
7
+
8
+ t.timestamps
9
+
10
+ t.datetime :last_seen_at
11
+
12
+ t.index %i[service_credential_id], :name => :index_instance_node_credentials_on_service_credential_id
13
+ t.index %i[service_instance_node_id], :name => :index_instance_node_credentials_on_service_offering_id
14
+ t.index %i[last_seen_at]
15
+ t.index %i[service_credential_id service_instance_node_id], :unique => true, :name => :index_service_instance_node_credential_id
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,15 @@
1
+ class RemoveExtraneousIndexFromServiceCredentialJoinTables < ActiveRecord::Migration[5.2]
2
+ def up
3
+ remove_index :service_instance_service_credentials, :name => 'index_service_instance_credentials_on_service_credential_id'
4
+ remove_index :service_instance_node_service_credentials, :name => 'index_instance_node_credentials_on_service_credential_id'
5
+ remove_index :service_offering_service_credentials, :name => 'index_service_offering_credentials_on_service_credential_id'
6
+ remove_index :service_offering_node_service_credentials, :name => 'index_offering_node_credentials_on_service_credential_id'
7
+ end
8
+
9
+ def down
10
+ add_index :service_offering_node_service_credentials, :service_credential_id, :name => 'index_offering_node_credentials_on_service_credential_id'
11
+ add_index :service_offering_service_credentials, :service_credential_id, :name => 'index_service_offering_credentials_on_service_credential_id'
12
+ add_index :service_instance_node_service_credentials, :service_credential_id, :name => 'index_instance_node_credentials_on_service_credential_id'
13
+ add_index :service_instance_service_credentials, :service_credential_id, :name => 'index_service_instance_credentials_on_service_credential_id'
14
+ end
15
+ end
@@ -0,0 +1,66 @@
1
+ class AddRefreshStatePartToPersistedModels < ActiveRecord::Migration[5.2]
2
+ def change
3
+ %i[
4
+ clusters
5
+ containers
6
+ container_groups
7
+ container_images
8
+ container_nodes
9
+ container_projects
10
+ container_resource_quotas
11
+ container_templates
12
+ datastores
13
+ flavors
14
+ ipaddresses
15
+ hosts
16
+ network_adapters
17
+ networks
18
+ orchestration_stacks
19
+ reservations
20
+ service_instances
21
+ service_instance_nodes
22
+ service_inventories
23
+ security_groups
24
+ service_offering_icons
25
+ service_offerings
26
+ service_offering_nodes
27
+ service_credentials
28
+ service_credential_types
29
+ service_plans
30
+ source_regions
31
+ subnets
32
+ subscriptions
33
+ vms
34
+ volumes
35
+ volume_types
36
+ service_offering_service_credentials
37
+ service_instance_service_credentials
38
+ service_offering_node_service_credentials
39
+ service_instance_node_service_credentials
40
+ cluster_tags
41
+ container_group_tags
42
+ container_image_tags
43
+ container_node_tags
44
+ container_project_tags
45
+ container_template_tags
46
+ datastore_tags
47
+ ipaddress_tags
48
+ host_tags
49
+ network_adapter_tags
50
+ network_tags
51
+ reservation_tags
52
+ security_group_tags
53
+ service_inventory_tags
54
+ service_offering_tags
55
+ subnet_tags
56
+ vm_tags
57
+ tags
58
+ datastore_mounts
59
+ volume_attachments
60
+ vm_security_groups
61
+ ].each do |inventory_collection_name|
62
+ idx_name = "idx_#{inventory_collection_name.to_s.gsub("service", "svc")}_on_refresh_state_part_id"
63
+ add_reference inventory_collection_name, :refresh_state_part, :index => {:name => idx_name}, :null => true, :foreign_key => {:on_delete => :nullify}
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,6 @@
1
+ class AddTrackingTimestampsToRefreshState < ActiveRecord::Migration[5.2]
2
+ def change
3
+ add_column :refresh_states, :started_at, :timestamp
4
+ add_column :refresh_states, :finished_at, :timestamp
5
+ end
6
+ end
@@ -0,0 +1,1594 @@
1
+ # This file is auto-generated from the current state of the database. Instead
2
+ # of editing this file, please use the migrations feature of Active Record to
3
+ # incrementally modify your database, and then regenerate this schema definition.
4
+ #
5
+ # Note that this schema.rb definition is the authoritative source for your
6
+ # database schema. If you need to create the application database on another
7
+ # system, you should be using db:schema:load, not running all the migrations
8
+ # from scratch. The latter is a flawed and unsustainable approach (the more migrations
9
+ # you'll amass, the slower it'll run and the greater likelihood for issues).
10
+ #
11
+ # It's strongly recommended that you check this file into your version control system.
12
+
13
+ ActiveRecord::Schema.define(version: 2020_03_17_082640) do
14
+
15
+ # These are extensions that must be enabled in order to support this database
16
+ enable_extension "plpgsql"
17
+
18
+ create_table "availabilities", force: :cascade do |t|
19
+ t.string "resource_type", null: false
20
+ t.bigint "resource_id", null: false
21
+ t.string "action", null: false
22
+ t.string "identifier", null: false
23
+ t.string "availability", null: false
24
+ t.datetime "last_checked_at"
25
+ t.datetime "last_valid_at"
26
+ t.datetime "created_at", null: false
27
+ t.datetime "updated_at", null: false
28
+ t.index ["resource_type", "resource_id", "action", "identifier"], name: "index_on_resource_action_identifier", unique: true
29
+ end
30
+
31
+ create_table "cluster_tags", id: :serial, force: :cascade do |t|
32
+ t.bigint "tag_id", null: false
33
+ t.bigint "cluster_id", null: false
34
+ t.datetime "last_seen_at"
35
+ t.bigint "tenant_id"
36
+ t.bigint "refresh_state_part_id"
37
+ t.index ["cluster_id"], name: "index_cluster_tags_on_cluster_id"
38
+ t.index ["last_seen_at"], name: "index_cluster_tags_on_last_seen_at"
39
+ t.index ["refresh_state_part_id"], name: "idx_cluster_tags_on_refresh_state_part_id"
40
+ t.index ["tag_id", "cluster_id"], name: "index_cluster_tags_on_tag_id_and_cluster_id", unique: true
41
+ t.index ["tenant_id"], name: "index_cluster_tags_on_tenant_id"
42
+ end
43
+
44
+ create_table "clusters", force: :cascade do |t|
45
+ t.bigint "tenant_id", null: false
46
+ t.bigint "source_id", null: false
47
+ t.string "source_ref", null: false
48
+ t.string "uid_ems"
49
+ t.string "name"
50
+ t.jsonb "extra"
51
+ t.datetime "resource_timestamp"
52
+ t.jsonb "resource_timestamps", default: {}
53
+ t.datetime "resource_timestamps_max"
54
+ t.datetime "created_at", null: false
55
+ t.datetime "updated_at", null: false
56
+ t.datetime "archived_at"
57
+ t.datetime "source_created_at"
58
+ t.datetime "source_deleted_at"
59
+ t.datetime "last_seen_at"
60
+ t.bigint "refresh_state_part_id"
61
+ t.index ["archived_at"], name: "index_clusters_on_archived_at"
62
+ t.index ["last_seen_at"], name: "index_clusters_on_last_seen_at"
63
+ t.index ["refresh_state_part_id"], name: "idx_clusters_on_refresh_state_part_id"
64
+ t.index ["source_id", "source_ref"], name: "index_clusters_on_source_id_and_source_ref", unique: true
65
+ t.index ["tenant_id"], name: "index_clusters_on_tenant_id"
66
+ t.index ["uid_ems"], name: "index_clusters_on_uid_ems"
67
+ end
68
+
69
+ create_table "container_group_tags", id: :serial, force: :cascade do |t|
70
+ t.bigint "tag_id", null: false
71
+ t.bigint "container_group_id", null: false
72
+ t.datetime "last_seen_at"
73
+ t.bigint "tenant_id"
74
+ t.bigint "refresh_state_part_id"
75
+ t.index ["container_group_id", "tag_id"], name: "uniq_index_on_container_group_id_tag_id", unique: true
76
+ t.index ["last_seen_at"], name: "index_container_group_tags_on_last_seen_at"
77
+ t.index ["refresh_state_part_id"], name: "idx_container_group_tags_on_refresh_state_part_id"
78
+ t.index ["tag_id"], name: "index_container_group_tags_on_tag_id"
79
+ t.index ["tenant_id"], name: "index_container_group_tags_on_tenant_id"
80
+ end
81
+
82
+ create_table "container_groups", force: :cascade do |t|
83
+ t.bigint "source_id", null: false
84
+ t.string "source_ref", null: false
85
+ t.string "resource_version"
86
+ t.string "name"
87
+ t.bigint "container_project_id"
88
+ t.string "ipaddress"
89
+ t.datetime "created_at", null: false
90
+ t.datetime "updated_at", null: false
91
+ t.datetime "source_deleted_at"
92
+ t.bigint "tenant_id", null: false
93
+ t.bigint "container_node_id"
94
+ t.datetime "source_created_at"
95
+ t.datetime "archived_at"
96
+ t.datetime "resource_timestamp"
97
+ t.jsonb "resource_timestamps", default: {}
98
+ t.datetime "resource_timestamps_max"
99
+ t.datetime "last_seen_at"
100
+ t.bigint "refresh_state_part_id"
101
+ t.index ["archived_at"], name: "index_container_groups_on_archived_at"
102
+ t.index ["container_node_id"], name: "index_container_groups_on_container_node_id"
103
+ t.index ["container_project_id"], name: "index_container_groups_on_container_project_id"
104
+ t.index ["last_seen_at"], name: "index_container_groups_on_last_seen_at"
105
+ t.index ["refresh_state_part_id"], name: "idx_container_groups_on_refresh_state_part_id"
106
+ t.index ["source_deleted_at"], name: "index_container_groups_on_source_deleted_at"
107
+ t.index ["source_id", "source_ref"], name: "index_container_groups_on_source_id_and_source_ref", unique: true
108
+ t.index ["tenant_id"], name: "index_container_groups_on_tenant_id"
109
+ end
110
+
111
+ create_table "container_image_tags", id: :serial, force: :cascade do |t|
112
+ t.bigint "tag_id", null: false
113
+ t.bigint "container_image_id", null: false
114
+ t.datetime "last_seen_at"
115
+ t.bigint "tenant_id"
116
+ t.bigint "refresh_state_part_id"
117
+ t.index ["container_image_id", "tag_id"], name: "uniq_index_on_container_image_id_tag_id", unique: true
118
+ t.index ["last_seen_at"], name: "index_container_image_tags_on_last_seen_at"
119
+ t.index ["refresh_state_part_id"], name: "idx_container_image_tags_on_refresh_state_part_id"
120
+ t.index ["tag_id"], name: "index_container_image_tags_on_tag_id"
121
+ t.index ["tenant_id"], name: "index_container_image_tags_on_tenant_id"
122
+ end
123
+
124
+ create_table "container_images", force: :cascade do |t|
125
+ t.bigint "tenant_id", null: false
126
+ t.bigint "source_id", null: false
127
+ t.string "source_ref", null: false
128
+ t.string "resource_version"
129
+ t.string "name"
130
+ t.string "tag"
131
+ t.datetime "created_at", null: false
132
+ t.datetime "updated_at", null: false
133
+ t.datetime "archived_at"
134
+ t.datetime "last_seen_at"
135
+ t.datetime "source_deleted_at"
136
+ t.datetime "source_created_at"
137
+ t.datetime "resource_timestamp"
138
+ t.jsonb "resource_timestamps", default: {}
139
+ t.datetime "resource_timestamps_max"
140
+ t.bigint "refresh_state_part_id"
141
+ t.index ["archived_at"], name: "index_container_images_on_archived_at"
142
+ t.index ["last_seen_at"], name: "index_container_images_on_last_seen_at"
143
+ t.index ["refresh_state_part_id"], name: "idx_container_images_on_refresh_state_part_id"
144
+ t.index ["source_id", "source_ref"], name: "index_container_images_on_source_id_and_source_ref", unique: true
145
+ t.index ["tenant_id"], name: "index_container_images_on_tenant_id"
146
+ end
147
+
148
+ create_table "container_node_tags", id: :serial, force: :cascade do |t|
149
+ t.bigint "tag_id", null: false
150
+ t.bigint "container_node_id", null: false
151
+ t.datetime "last_seen_at"
152
+ t.bigint "tenant_id"
153
+ t.bigint "refresh_state_part_id"
154
+ t.index ["container_node_id", "tag_id"], name: "uniq_index_on_container_node_id_tag_id", unique: true
155
+ t.index ["last_seen_at"], name: "index_container_node_tags_on_last_seen_at"
156
+ t.index ["refresh_state_part_id"], name: "idx_container_node_tags_on_refresh_state_part_id"
157
+ t.index ["tag_id"], name: "index_container_node_tags_on_tag_id"
158
+ t.index ["tenant_id"], name: "index_container_node_tags_on_tenant_id"
159
+ end
160
+
161
+ create_table "container_nodes", force: :cascade do |t|
162
+ t.bigint "source_id", null: false
163
+ t.string "source_ref", null: false
164
+ t.string "resource_version"
165
+ t.string "name"
166
+ t.integer "cpus"
167
+ t.bigint "memory"
168
+ t.bigint "tenant_id", null: false
169
+ t.datetime "created_at", null: false
170
+ t.datetime "updated_at", null: false
171
+ t.datetime "source_deleted_at"
172
+ t.datetime "source_created_at"
173
+ t.datetime "archived_at"
174
+ t.datetime "resource_timestamp"
175
+ t.jsonb "resource_timestamps", default: {}
176
+ t.datetime "resource_timestamps_max"
177
+ t.datetime "last_seen_at"
178
+ t.string "lives_on_type"
179
+ t.bigint "lives_on_id"
180
+ t.integer "pods"
181
+ t.bigint "allocatable_memory"
182
+ t.float "allocatable_cpus"
183
+ t.integer "allocatable_pods"
184
+ t.jsonb "conditions"
185
+ t.jsonb "addresses"
186
+ t.jsonb "node_info"
187
+ t.bigint "refresh_state_part_id"
188
+ t.index ["archived_at"], name: "index_container_nodes_on_archived_at"
189
+ t.index ["last_seen_at"], name: "index_container_nodes_on_last_seen_at"
190
+ t.index ["lives_on_type", "lives_on_id"], name: "index_container_nodes_on_lives_on_type_and_lives_on_id"
191
+ t.index ["name"], name: "index_container_nodes_on_name"
192
+ t.index ["refresh_state_part_id"], name: "idx_container_nodes_on_refresh_state_part_id"
193
+ t.index ["source_deleted_at"], name: "index_container_nodes_on_source_deleted_at"
194
+ t.index ["source_id", "source_ref"], name: "index_container_nodes_on_source_id_and_source_ref", unique: true
195
+ t.index ["tenant_id"], name: "index_container_nodes_on_tenant_id"
196
+ end
197
+
198
+ create_table "container_project_tags", id: :serial, force: :cascade do |t|
199
+ t.bigint "tag_id", null: false
200
+ t.bigint "container_project_id", null: false
201
+ t.datetime "last_seen_at"
202
+ t.bigint "tenant_id"
203
+ t.bigint "refresh_state_part_id"
204
+ t.index ["container_project_id", "tag_id"], name: "uniq_index_on_container_project_id_tag_id", unique: true
205
+ t.index ["last_seen_at"], name: "index_container_project_tags_on_last_seen_at"
206
+ t.index ["refresh_state_part_id"], name: "idx_container_project_tags_on_refresh_state_part_id"
207
+ t.index ["tag_id"], name: "index_container_project_tags_on_tag_id"
208
+ t.index ["tenant_id"], name: "index_container_project_tags_on_tenant_id"
209
+ end
210
+
211
+ create_table "container_projects", force: :cascade do |t|
212
+ t.bigint "source_id", null: false
213
+ t.string "source_ref", null: false
214
+ t.string "resource_version"
215
+ t.string "name"
216
+ t.string "display_name"
217
+ t.datetime "created_at", null: false
218
+ t.datetime "updated_at", null: false
219
+ t.datetime "source_deleted_at"
220
+ t.bigint "tenant_id", null: false
221
+ t.datetime "source_created_at"
222
+ t.datetime "archived_at"
223
+ t.datetime "resource_timestamp"
224
+ t.jsonb "resource_timestamps", default: {}
225
+ t.datetime "resource_timestamps_max"
226
+ t.datetime "last_seen_at"
227
+ t.string "status_phase"
228
+ t.bigint "refresh_state_part_id"
229
+ t.index ["archived_at"], name: "index_container_projects_on_archived_at"
230
+ t.index ["last_seen_at"], name: "index_container_projects_on_last_seen_at"
231
+ t.index ["name"], name: "index_container_projects_on_name"
232
+ t.index ["refresh_state_part_id"], name: "idx_container_projects_on_refresh_state_part_id"
233
+ t.index ["source_deleted_at"], name: "index_container_projects_on_source_deleted_at"
234
+ t.index ["source_id", "source_ref"], name: "index_container_projects_on_source_id_and_source_ref", unique: true
235
+ t.index ["tenant_id"], name: "index_container_projects_on_tenant_id"
236
+ end
237
+
238
+ create_table "container_resource_quotas", force: :cascade do |t|
239
+ t.bigint "tenant_id", null: false
240
+ t.bigint "source_id", null: false
241
+ t.bigint "container_project_id"
242
+ t.string "source_ref", null: false
243
+ t.string "resource_version"
244
+ t.string "name"
245
+ t.jsonb "status"
246
+ t.jsonb "spec"
247
+ t.datetime "created_at", null: false
248
+ t.datetime "updated_at", null: false
249
+ t.datetime "archived_at"
250
+ t.datetime "last_seen_at"
251
+ t.datetime "source_deleted_at"
252
+ t.datetime "source_created_at"
253
+ t.datetime "resource_timestamp"
254
+ t.jsonb "resource_timestamps", default: {}
255
+ t.datetime "resource_timestamps_max"
256
+ t.bigint "refresh_state_part_id"
257
+ t.index ["archived_at"], name: "index_container_resource_quotas_on_archived_at"
258
+ t.index ["container_project_id"], name: "index_container_resource_quotas_on_container_project_id"
259
+ t.index ["last_seen_at"], name: "index_container_resource_quotas_on_last_seen_at"
260
+ t.index ["refresh_state_part_id"], name: "idx_container_resource_quotas_on_refresh_state_part_id"
261
+ t.index ["source_id", "source_ref"], name: "index_container_resource_quotas_on_source_id_and_source_ref", unique: true
262
+ t.index ["tenant_id"], name: "index_container_resource_quotas_on_tenant_id"
263
+ end
264
+
265
+ create_table "container_template_tags", id: :serial, force: :cascade do |t|
266
+ t.bigint "tag_id", null: false
267
+ t.bigint "container_template_id", null: false
268
+ t.datetime "last_seen_at"
269
+ t.bigint "tenant_id"
270
+ t.bigint "refresh_state_part_id"
271
+ t.index ["container_template_id", "tag_id"], name: "uniq_index_on_container_template_id_tag_id", unique: true
272
+ t.index ["last_seen_at"], name: "index_container_template_tags_on_last_seen_at"
273
+ t.index ["refresh_state_part_id"], name: "idx_container_template_tags_on_refresh_state_part_id"
274
+ t.index ["tag_id"], name: "index_container_template_tags_on_tag_id"
275
+ t.index ["tenant_id"], name: "index_container_template_tags_on_tenant_id"
276
+ end
277
+
278
+ create_table "container_templates", force: :cascade do |t|
279
+ t.bigint "source_id", null: false
280
+ t.string "source_ref", null: false
281
+ t.string "resource_version"
282
+ t.bigint "container_project_id"
283
+ t.datetime "created_at", null: false
284
+ t.datetime "updated_at", null: false
285
+ t.datetime "source_deleted_at"
286
+ t.bigint "tenant_id", null: false
287
+ t.datetime "source_created_at"
288
+ t.string "name"
289
+ t.datetime "archived_at"
290
+ t.datetime "resource_timestamp"
291
+ t.jsonb "resource_timestamps", default: {}
292
+ t.datetime "resource_timestamps_max"
293
+ t.datetime "last_seen_at"
294
+ t.bigint "refresh_state_part_id"
295
+ t.index ["archived_at"], name: "index_container_templates_on_archived_at"
296
+ t.index ["container_project_id"], name: "index_container_templates_on_container_project_id"
297
+ t.index ["last_seen_at"], name: "index_container_templates_on_last_seen_at"
298
+ t.index ["refresh_state_part_id"], name: "idx_container_templates_on_refresh_state_part_id"
299
+ t.index ["source_deleted_at"], name: "index_container_templates_on_source_deleted_at"
300
+ t.index ["source_id", "source_ref"], name: "index_container_templates_on_source_id_and_source_ref", unique: true
301
+ t.index ["tenant_id"], name: "index_container_templates_on_tenant_id"
302
+ end
303
+
304
+ create_table "containers", force: :cascade do |t|
305
+ t.bigint "tenant_id", null: false
306
+ t.bigint "container_group_id", null: false
307
+ t.string "name", null: false
308
+ t.float "cpu_limit"
309
+ t.float "cpu_request"
310
+ t.bigint "memory_limit"
311
+ t.bigint "memory_request"
312
+ t.datetime "resource_timestamp"
313
+ t.jsonb "resource_timestamps", default: {}
314
+ t.datetime "resource_timestamps_max"
315
+ t.datetime "created_at", null: false
316
+ t.datetime "updated_at", null: false
317
+ t.datetime "archived_at"
318
+ t.bigint "container_image_id"
319
+ t.datetime "last_seen_at"
320
+ t.bigint "refresh_state_part_id"
321
+ t.index ["archived_at"], name: "index_containers_on_archived_at"
322
+ t.index ["container_group_id", "name"], name: "index_containers_on_container_group_id_and_name", unique: true
323
+ t.index ["container_image_id"], name: "index_containers_on_container_image_id"
324
+ t.index ["last_seen_at"], name: "index_containers_on_last_seen_at"
325
+ t.index ["refresh_state_part_id"], name: "idx_containers_on_refresh_state_part_id"
326
+ t.index ["tenant_id"], name: "index_containers_on_tenant_id"
327
+ end
328
+
329
+ create_table "datastore_mounts", force: :cascade do |t|
330
+ t.bigint "datastore_id", null: false
331
+ t.bigint "host_id", null: false
332
+ t.boolean "read_only"
333
+ t.boolean "accessible"
334
+ t.datetime "last_seen_at"
335
+ t.bigint "refresh_state_part_id"
336
+ t.index ["datastore_id", "host_id"], name: "index_datastore_mounts_on_datastore_id_and_host_id", unique: true
337
+ t.index ["host_id"], name: "index_datastore_mounts_on_host_id"
338
+ t.index ["last_seen_at"], name: "index_datastore_mounts_on_last_seen_at"
339
+ t.index ["refresh_state_part_id"], name: "idx_datastore_mounts_on_refresh_state_part_id"
340
+ end
341
+
342
+ create_table "datastore_tags", id: :serial, force: :cascade do |t|
343
+ t.bigint "tag_id", null: false
344
+ t.bigint "datastore_id", null: false
345
+ t.datetime "last_seen_at"
346
+ t.bigint "tenant_id"
347
+ t.bigint "refresh_state_part_id"
348
+ t.index ["datastore_id"], name: "index_datastore_tags_on_datastore_id"
349
+ t.index ["last_seen_at"], name: "index_datastore_tags_on_last_seen_at"
350
+ t.index ["refresh_state_part_id"], name: "idx_datastore_tags_on_refresh_state_part_id"
351
+ t.index ["tag_id", "datastore_id"], name: "index_datastore_tags_on_tag_id_and_datastore_id", unique: true
352
+ t.index ["tenant_id"], name: "index_datastore_tags_on_tenant_id"
353
+ end
354
+
355
+ create_table "datastores", force: :cascade do |t|
356
+ t.bigint "tenant_id", null: false
357
+ t.bigint "source_id", null: false
358
+ t.string "source_ref", null: false
359
+ t.string "name"
360
+ t.string "location"
361
+ t.bigint "total_space"
362
+ t.bigint "free_space"
363
+ t.string "status"
364
+ t.boolean "accessible"
365
+ t.jsonb "extra"
366
+ t.datetime "created_at", null: false
367
+ t.datetime "updated_at", null: false
368
+ t.datetime "archived_at"
369
+ t.datetime "source_created_at"
370
+ t.datetime "source_deleted_at"
371
+ t.datetime "last_seen_at"
372
+ t.bigint "refresh_state_part_id"
373
+ t.index ["archived_at"], name: "index_datastores_on_archived_at"
374
+ t.index ["last_seen_at"], name: "index_datastores_on_last_seen_at"
375
+ t.index ["refresh_state_part_id"], name: "idx_datastores_on_refresh_state_part_id"
376
+ t.index ["source_id", "source_ref"], name: "index_datastores_on_source_id_and_source_ref", unique: true
377
+ t.index ["tenant_id"], name: "index_datastores_on_tenant_id"
378
+ end
379
+
380
+ create_table "flavors", force: :cascade do |t|
381
+ t.bigint "tenant_id", null: false
382
+ t.bigint "source_id", null: false
383
+ t.string "source_ref", null: false
384
+ t.string "name"
385
+ t.jsonb "extra"
386
+ t.datetime "created_at", null: false
387
+ t.datetime "updated_at", null: false
388
+ t.datetime "archived_at"
389
+ t.datetime "last_seen_at"
390
+ t.datetime "resource_timestamp"
391
+ t.jsonb "resource_timestamps", default: {}
392
+ t.datetime "resource_timestamps_max"
393
+ t.bigint "disk_size"
394
+ t.bigint "memory"
395
+ t.integer "disk_count"
396
+ t.integer "cpus"
397
+ t.bigint "refresh_state_part_id"
398
+ t.index ["archived_at"], name: "index_flavors_on_archived_at"
399
+ t.index ["last_seen_at"], name: "index_flavors_on_last_seen_at"
400
+ t.index ["refresh_state_part_id"], name: "idx_flavors_on_refresh_state_part_id"
401
+ t.index ["source_id", "source_ref"], name: "index_flavors_on_source_id_and_source_ref", unique: true
402
+ t.index ["tenant_id"], name: "index_flavors_on_tenant_id"
403
+ end
404
+
405
+ create_table "host_tags", id: :serial, force: :cascade do |t|
406
+ t.bigint "tag_id", null: false
407
+ t.bigint "host_id", null: false
408
+ t.datetime "last_seen_at"
409
+ t.bigint "tenant_id"
410
+ t.bigint "refresh_state_part_id"
411
+ t.index ["host_id"], name: "index_host_tags_on_host_id"
412
+ t.index ["last_seen_at"], name: "index_host_tags_on_last_seen_at"
413
+ t.index ["refresh_state_part_id"], name: "idx_host_tags_on_refresh_state_part_id"
414
+ t.index ["tag_id", "host_id"], name: "index_host_tags_on_tag_id_and_host_id", unique: true
415
+ t.index ["tenant_id"], name: "index_host_tags_on_tenant_id"
416
+ end
417
+
418
+ create_table "hosts", force: :cascade do |t|
419
+ t.bigint "tenant_id", null: false
420
+ t.bigint "source_id", null: false
421
+ t.bigint "cluster_id"
422
+ t.string "source_ref", null: false
423
+ t.string "uid_ems"
424
+ t.string "name"
425
+ t.string "hostname"
426
+ t.string "description"
427
+ t.string "power_state"
428
+ t.bigint "cpus"
429
+ t.bigint "memory"
430
+ t.jsonb "extra"
431
+ t.datetime "resource_timestamp"
432
+ t.jsonb "resource_timestamps", default: {}
433
+ t.datetime "resource_timestamps_max"
434
+ t.datetime "created_at", null: false
435
+ t.datetime "updated_at", null: false
436
+ t.datetime "archived_at"
437
+ t.datetime "source_created_at"
438
+ t.datetime "source_deleted_at"
439
+ t.datetime "last_seen_at"
440
+ t.bigint "refresh_state_part_id"
441
+ t.index ["archived_at"], name: "index_hosts_on_archived_at"
442
+ t.index ["cluster_id"], name: "index_hosts_on_cluster_id"
443
+ t.index ["last_seen_at"], name: "index_hosts_on_last_seen_at"
444
+ t.index ["refresh_state_part_id"], name: "idx_hosts_on_refresh_state_part_id"
445
+ t.index ["source_id", "source_ref"], name: "index_hosts_on_source_id_and_source_ref", unique: true
446
+ t.index ["tenant_id"], name: "index_hosts_on_tenant_id"
447
+ t.index ["uid_ems"], name: "index_hosts_on_uid_ems"
448
+ end
449
+
450
+ create_table "ipaddress_tags", id: :serial, force: :cascade do |t|
451
+ t.bigint "tag_id", null: false
452
+ t.bigint "ipaddress_id", null: false
453
+ t.datetime "last_seen_at"
454
+ t.bigint "tenant_id"
455
+ t.bigint "refresh_state_part_id"
456
+ t.index ["ipaddress_id"], name: "index_ipaddress_tags_on_ipaddress_id"
457
+ t.index ["last_seen_at"], name: "index_ipaddress_tags_on_last_seen_at"
458
+ t.index ["refresh_state_part_id"], name: "idx_ipaddress_tags_on_refresh_state_part_id"
459
+ t.index ["tag_id", "ipaddress_id"], name: "index_ipaddress_tags_on_tag_id_and_ipaddress_id", unique: true
460
+ t.index ["tenant_id"], name: "index_ipaddress_tags_on_tenant_id"
461
+ end
462
+
463
+ create_table "ipaddresses", force: :cascade do |t|
464
+ t.bigint "tenant_id", null: false
465
+ t.bigint "source_id", null: false
466
+ t.bigint "source_region_id"
467
+ t.bigint "subscription_id"
468
+ t.bigint "orchestration_stack_id"
469
+ t.bigint "network_adapter_id"
470
+ t.bigint "subnet_id"
471
+ t.string "source_ref", null: false
472
+ t.string "kind", default: "private", null: false
473
+ t.string "ipaddress"
474
+ t.jsonb "extra"
475
+ t.datetime "resource_timestamp"
476
+ t.jsonb "resource_timestamps", default: {}
477
+ t.datetime "resource_timestamps_max"
478
+ t.datetime "created_at", null: false
479
+ t.datetime "updated_at", null: false
480
+ t.datetime "archived_at"
481
+ t.datetime "source_created_at"
482
+ t.datetime "source_deleted_at"
483
+ t.datetime "last_seen_at"
484
+ t.bigint "refresh_state_part_id"
485
+ t.index ["archived_at"], name: "index_ipaddresses_on_archived_at"
486
+ t.index ["last_seen_at"], name: "index_ipaddresses_on_last_seen_at"
487
+ t.index ["network_adapter_id"], name: "index_ipaddresses_on_network_adapter_id"
488
+ t.index ["orchestration_stack_id"], name: "index_ipaddresses_on_orchestration_stack_id"
489
+ t.index ["refresh_state_part_id"], name: "idx_ipaddresses_on_refresh_state_part_id"
490
+ t.index ["source_id", "source_ref"], name: "index_ipaddresses_on_source_id_and_source_ref", unique: true
491
+ t.index ["source_region_id"], name: "index_ipaddresses_on_source_region_id"
492
+ t.index ["subnet_id"], name: "index_ipaddresses_on_subnet_id"
493
+ t.index ["subscription_id"], name: "index_ipaddresses_on_subscription_id"
494
+ t.index ["tenant_id"], name: "index_ipaddresses_on_tenant_id"
495
+ end
496
+
497
+ create_table "network_adapter_tags", id: :serial, force: :cascade do |t|
498
+ t.bigint "tag_id", null: false
499
+ t.bigint "network_adapter_id", null: false
500
+ t.datetime "last_seen_at"
501
+ t.bigint "tenant_id"
502
+ t.bigint "refresh_state_part_id"
503
+ t.index ["last_seen_at"], name: "index_network_adapter_tags_on_last_seen_at"
504
+ t.index ["network_adapter_id"], name: "index_network_adapter_tags_on_network_adapter_id"
505
+ t.index ["refresh_state_part_id"], name: "idx_network_adapter_tags_on_refresh_state_part_id"
506
+ t.index ["tag_id", "network_adapter_id"], name: "index_network_adapter_tags_on_tag_id_and_network_adapter_id", unique: true
507
+ t.index ["tenant_id"], name: "index_network_adapter_tags_on_tenant_id"
508
+ end
509
+
510
+ create_table "network_adapters", force: :cascade do |t|
511
+ t.bigint "tenant_id", null: false
512
+ t.string "source_ref", null: false
513
+ t.string "mac_address"
514
+ t.jsonb "extra"
515
+ t.datetime "resource_timestamp"
516
+ t.jsonb "resource_timestamps", default: {}
517
+ t.datetime "resource_timestamps_max"
518
+ t.datetime "created_at", null: false
519
+ t.datetime "updated_at", null: false
520
+ t.datetime "archived_at"
521
+ t.datetime "source_created_at"
522
+ t.datetime "source_deleted_at"
523
+ t.datetime "last_seen_at"
524
+ t.bigint "source_id", null: false
525
+ t.bigint "orchestration_stack_id"
526
+ t.string "device_type"
527
+ t.bigint "device_id"
528
+ t.bigint "source_region_id"
529
+ t.bigint "subscription_id"
530
+ t.bigint "refresh_state_part_id"
531
+ t.index ["archived_at"], name: "index_network_adapters_on_archived_at"
532
+ t.index ["device_type", "device_id"], name: "index_network_adapters_on_device_type_and_device_id"
533
+ t.index ["last_seen_at"], name: "index_network_adapters_on_last_seen_at"
534
+ t.index ["orchestration_stack_id"], name: "index_network_adapters_on_orchestration_stack_id"
535
+ t.index ["refresh_state_part_id"], name: "idx_network_adapters_on_refresh_state_part_id"
536
+ t.index ["source_id", "source_ref"], name: "index_network_adapters_on_source_id_and_source_ref", unique: true
537
+ t.index ["source_region_id"], name: "index_network_adapters_on_source_region_id"
538
+ t.index ["subscription_id"], name: "index_network_adapters_on_subscription_id"
539
+ t.index ["tenant_id"], name: "index_network_adapters_on_tenant_id"
540
+ end
541
+
542
+ create_table "network_tags", id: :serial, force: :cascade do |t|
543
+ t.bigint "tag_id", null: false
544
+ t.bigint "network_id", null: false
545
+ t.datetime "last_seen_at"
546
+ t.bigint "tenant_id"
547
+ t.bigint "refresh_state_part_id"
548
+ t.index ["last_seen_at"], name: "index_network_tags_on_last_seen_at"
549
+ t.index ["network_id"], name: "index_network_tags_on_network_id"
550
+ t.index ["refresh_state_part_id"], name: "idx_network_tags_on_refresh_state_part_id"
551
+ t.index ["tag_id", "network_id"], name: "index_network_tags_on_tag_id_and_network_id", unique: true
552
+ t.index ["tenant_id"], name: "index_network_tags_on_tenant_id"
553
+ end
554
+
555
+ create_table "networks", force: :cascade do |t|
556
+ t.bigint "tenant_id", null: false
557
+ t.bigint "source_id", null: false
558
+ t.bigint "source_region_id"
559
+ t.bigint "subscription_id"
560
+ t.bigint "orchestration_stack_id"
561
+ t.string "source_ref", null: false
562
+ t.string "name"
563
+ t.string "cidr"
564
+ t.string "status"
565
+ t.jsonb "extra"
566
+ t.datetime "resource_timestamp"
567
+ t.jsonb "resource_timestamps", default: {}
568
+ t.datetime "resource_timestamps_max"
569
+ t.datetime "created_at", null: false
570
+ t.datetime "updated_at", null: false
571
+ t.datetime "archived_at"
572
+ t.datetime "source_created_at"
573
+ t.datetime "source_deleted_at"
574
+ t.datetime "last_seen_at"
575
+ t.bigint "refresh_state_part_id"
576
+ t.index ["archived_at"], name: "index_networks_on_archived_at"
577
+ t.index ["last_seen_at"], name: "index_networks_on_last_seen_at"
578
+ t.index ["orchestration_stack_id"], name: "index_networks_on_orchestration_stack_id"
579
+ t.index ["refresh_state_part_id"], name: "idx_networks_on_refresh_state_part_id"
580
+ t.index ["source_id", "source_ref"], name: "index_networks_on_source_id_and_source_ref", unique: true
581
+ t.index ["source_region_id"], name: "index_networks_on_source_region_id"
582
+ t.index ["subscription_id"], name: "index_networks_on_subscription_id"
583
+ t.index ["tenant_id"], name: "index_networks_on_tenant_id"
584
+ end
585
+
586
+ create_table "orchestration_stacks", force: :cascade do |t|
587
+ t.bigint "tenant_id", null: false
588
+ t.bigint "source_id", null: false
589
+ t.string "source_ref", null: false
590
+ t.string "name"
591
+ t.string "description"
592
+ t.datetime "resource_timestamp"
593
+ t.jsonb "resource_timestamps", default: {}
594
+ t.datetime "resource_timestamps_max"
595
+ t.datetime "created_at", null: false
596
+ t.datetime "updated_at", null: false
597
+ t.datetime "archived_at"
598
+ t.datetime "source_created_at"
599
+ t.datetime "source_deleted_at"
600
+ t.datetime "last_seen_at"
601
+ t.bigint "source_region_id"
602
+ t.bigint "subscription_id"
603
+ t.bigint "parent_orchestration_stack_id"
604
+ t.bigint "refresh_state_part_id"
605
+ t.index ["archived_at"], name: "index_orchestration_stacks_on_archived_at"
606
+ t.index ["last_seen_at"], name: "index_orchestration_stacks_on_last_seen_at"
607
+ t.index ["parent_orchestration_stack_id"], name: "index_orchestration_stacks_on_parent_orchestration_stack_id"
608
+ t.index ["refresh_state_part_id"], name: "idx_orchestration_stacks_on_refresh_state_part_id"
609
+ t.index ["source_id", "source_ref"], name: "index_orchestration_stacks_on_source_id_and_source_ref", unique: true
610
+ t.index ["source_region_id"], name: "index_orchestration_stacks_on_source_region_id"
611
+ t.index ["subscription_id"], name: "index_orchestration_stacks_on_subscription_id"
612
+ t.index ["tenant_id"], name: "index_orchestration_stacks_on_tenant_id"
613
+ end
614
+
615
+ create_table "refresh_state_parts", force: :cascade do |t|
616
+ t.bigint "refresh_state_id", null: false
617
+ t.bigint "tenant_id", null: false
618
+ t.uuid "uuid", null: false
619
+ t.string "status"
620
+ t.string "error_message"
621
+ t.datetime "created_at", null: false
622
+ t.datetime "updated_at", null: false
623
+ t.index ["refresh_state_id", "uuid"], name: "index_refresh_state_parts_on_refresh_state_id_and_uuid", unique: true
624
+ t.index ["tenant_id"], name: "index_refresh_state_parts_on_tenant_id"
625
+ end
626
+
627
+ create_table "refresh_states", force: :cascade do |t|
628
+ t.bigint "source_id", null: false
629
+ t.bigint "tenant_id", null: false
630
+ t.uuid "uuid", null: false
631
+ t.string "status"
632
+ t.integer "total_parts"
633
+ t.jsonb "sweep_scope"
634
+ t.integer "sweep_retry_count", default: 0
635
+ t.string "error_message"
636
+ t.datetime "created_at", null: false
637
+ t.datetime "updated_at", null: false
638
+ t.datetime "started_at"
639
+ t.datetime "finished_at"
640
+ t.index ["source_id", "uuid"], name: "index_refresh_states_on_source_id_and_uuid", unique: true
641
+ t.index ["tenant_id"], name: "index_refresh_states_on_tenant_id"
642
+ end
643
+
644
+ create_table "reservation_tags", id: :serial, force: :cascade do |t|
645
+ t.bigint "tag_id", null: false
646
+ t.bigint "reservation_id", null: false
647
+ t.datetime "last_seen_at"
648
+ t.bigint "tenant_id"
649
+ t.bigint "refresh_state_part_id"
650
+ t.index ["last_seen_at"], name: "index_reservation_tags_on_last_seen_at"
651
+ t.index ["refresh_state_part_id"], name: "idx_reservation_tags_on_refresh_state_part_id"
652
+ t.index ["reservation_id"], name: "index_reservation_tags_on_reservation_id"
653
+ t.index ["tag_id", "reservation_id"], name: "index_reservation_tags_on_tag_id_and_reservation_id", unique: true
654
+ t.index ["tenant_id"], name: "index_reservation_tags_on_tenant_id"
655
+ end
656
+
657
+ create_table "reservations", force: :cascade do |t|
658
+ t.bigint "tenant_id", null: false
659
+ t.bigint "source_id", null: false
660
+ t.bigint "source_region_id"
661
+ t.bigint "subscription_id"
662
+ t.bigint "flavor_id"
663
+ t.string "source_ref", null: false
664
+ t.string "state"
665
+ t.datetime "start"
666
+ t.datetime "end"
667
+ t.jsonb "extra"
668
+ t.datetime "resource_timestamp"
669
+ t.jsonb "resource_timestamps", default: {}
670
+ t.datetime "resource_timestamps_max"
671
+ t.datetime "created_at", null: false
672
+ t.datetime "updated_at", null: false
673
+ t.datetime "archived_at"
674
+ t.datetime "source_created_at"
675
+ t.datetime "source_deleted_at"
676
+ t.datetime "last_seen_at"
677
+ t.bigint "refresh_state_part_id"
678
+ t.index ["archived_at"], name: "index_reservations_on_archived_at"
679
+ t.index ["flavor_id"], name: "index_reservations_on_flavor_id"
680
+ t.index ["last_seen_at"], name: "index_reservations_on_last_seen_at"
681
+ t.index ["refresh_state_part_id"], name: "idx_reservations_on_refresh_state_part_id"
682
+ t.index ["source_id", "source_ref"], name: "index_reservations_on_source_id_and_source_ref", unique: true
683
+ t.index ["source_region_id"], name: "index_reservations_on_source_region_id"
684
+ t.index ["subscription_id"], name: "index_reservations_on_subscription_id"
685
+ t.index ["tenant_id"], name: "index_reservations_on_tenant_id"
686
+ end
687
+
688
+ create_table "security_group_tags", id: :serial, force: :cascade do |t|
689
+ t.bigint "tag_id", null: false
690
+ t.bigint "security_group_id", null: false
691
+ t.datetime "last_seen_at"
692
+ t.bigint "tenant_id"
693
+ t.bigint "refresh_state_part_id"
694
+ t.index ["last_seen_at"], name: "index_security_group_tags_on_last_seen_at"
695
+ t.index ["refresh_state_part_id"], name: "idx_security_group_tags_on_refresh_state_part_id"
696
+ t.index ["security_group_id"], name: "index_security_group_tags_on_security_group_id"
697
+ t.index ["tag_id", "security_group_id"], name: "index_security_group_tags_on_tag_id_and_security_group_id", unique: true
698
+ t.index ["tenant_id"], name: "index_security_group_tags_on_tenant_id"
699
+ end
700
+
701
+ create_table "security_groups", force: :cascade do |t|
702
+ t.bigint "tenant_id", null: false
703
+ t.bigint "source_id", null: false
704
+ t.bigint "source_region_id"
705
+ t.bigint "subscription_id"
706
+ t.bigint "orchestration_stack_id"
707
+ t.bigint "network_id"
708
+ t.string "source_ref", null: false
709
+ t.string "name"
710
+ t.string "description"
711
+ t.jsonb "extra"
712
+ t.datetime "resource_timestamp"
713
+ t.jsonb "resource_timestamps", default: {}
714
+ t.datetime "resource_timestamps_max"
715
+ t.datetime "created_at", null: false
716
+ t.datetime "updated_at", null: false
717
+ t.datetime "archived_at"
718
+ t.datetime "source_created_at"
719
+ t.datetime "source_deleted_at"
720
+ t.datetime "last_seen_at"
721
+ t.bigint "refresh_state_part_id"
722
+ t.index ["archived_at"], name: "index_security_groups_on_archived_at"
723
+ t.index ["last_seen_at"], name: "index_security_groups_on_last_seen_at"
724
+ t.index ["network_id"], name: "index_security_groups_on_network_id"
725
+ t.index ["orchestration_stack_id"], name: "index_security_groups_on_orchestration_stack_id"
726
+ t.index ["refresh_state_part_id"], name: "idx_security_groups_on_refresh_state_part_id"
727
+ t.index ["source_id", "source_ref"], name: "index_security_groups_on_source_id_and_source_ref", unique: true
728
+ t.index ["source_region_id"], name: "index_security_groups_on_source_region_id"
729
+ t.index ["subscription_id"], name: "index_security_groups_on_subscription_id"
730
+ t.index ["tenant_id"], name: "index_security_groups_on_tenant_id"
731
+ end
732
+
733
+ create_table "service_credential_types", force: :cascade do |t|
734
+ t.string "name"
735
+ t.string "description"
736
+ t.string "kind"
737
+ t.string "namespace"
738
+ t.string "source_ref", null: false
739
+ t.datetime "resource_timestamp"
740
+ t.jsonb "resource_timestamps", default: {}
741
+ t.datetime "resource_timestamps_max"
742
+ t.datetime "created_at", null: false
743
+ t.datetime "updated_at", null: false
744
+ t.datetime "archived_at"
745
+ t.datetime "source_created_at"
746
+ t.datetime "source_deleted_at"
747
+ t.datetime "last_seen_at"
748
+ t.bigint "tenant_id", null: false
749
+ t.bigint "source_id", null: false
750
+ t.bigint "refresh_state_part_id"
751
+ t.index ["archived_at"], name: "index_service_credential_types_on_archived_at"
752
+ t.index ["last_seen_at"], name: "index_service_credential_types_on_last_seen_at"
753
+ t.index ["refresh_state_part_id"], name: "idx_svc_credential_types_on_refresh_state_part_id"
754
+ t.index ["source_id", "source_ref"], name: "index_service_credential_types_on_source_id_and_source_ref", unique: true
755
+ t.index ["tenant_id"], name: "index_service_credential_types_on_tenant_id"
756
+ end
757
+
758
+ create_table "service_credentials", force: :cascade do |t|
759
+ t.bigint "tenant_id", null: false
760
+ t.bigint "source_id", null: false
761
+ t.string "source_ref", null: false
762
+ t.string "name"
763
+ t.string "type_name"
764
+ t.text "description"
765
+ t.datetime "resource_timestamp"
766
+ t.jsonb "resource_timestamps", default: {}
767
+ t.datetime "resource_timestamps_max"
768
+ t.datetime "created_at", null: false
769
+ t.datetime "updated_at", null: false
770
+ t.datetime "archived_at"
771
+ t.datetime "source_created_at"
772
+ t.datetime "source_updated_at"
773
+ t.datetime "last_seen_at"
774
+ t.bigint "service_credential_type_id"
775
+ t.bigint "refresh_state_part_id"
776
+ t.index ["archived_at"], name: "index_service_credentials_on_archived_at"
777
+ t.index ["last_seen_at"], name: "index_service_credentials_on_last_seen_at"
778
+ t.index ["refresh_state_part_id"], name: "idx_svc_credentials_on_refresh_state_part_id"
779
+ t.index ["service_credential_type_id"], name: "index_service_credentials_on_service_credential_type_id"
780
+ t.index ["source_id", "source_ref"], name: "index_service_credentials_on_source_id_and_source_ref", unique: true
781
+ t.index ["tenant_id"], name: "index_service_credentials_on_tenant_id"
782
+ end
783
+
784
+ create_table "service_instance_node_service_credentials", force: :cascade do |t|
785
+ t.bigint "tenant_id", null: false
786
+ t.bigint "service_credential_id", null: false
787
+ t.bigint "service_instance_node_id", null: false
788
+ t.datetime "created_at", null: false
789
+ t.datetime "updated_at", null: false
790
+ t.datetime "last_seen_at"
791
+ t.bigint "refresh_state_part_id"
792
+ t.index ["last_seen_at"], name: "index_service_instance_node_service_credentials_on_last_seen_at"
793
+ t.index ["refresh_state_part_id"], name: "idx_svc_instance_node_svc_credentials_on_refresh_state_part_id"
794
+ t.index ["service_credential_id", "service_instance_node_id"], name: "index_service_instance_node_credential_id", unique: true
795
+ t.index ["service_instance_node_id"], name: "index_instance_node_credentials_on_service_offering_id"
796
+ t.index ["tenant_id"], name: "index_service_instance_node_service_credentials_on_tenant_id"
797
+ end
798
+
799
+ create_table "service_instance_nodes", force: :cascade do |t|
800
+ t.bigint "tenant_id", null: false
801
+ t.bigint "source_id", null: false
802
+ t.bigint "service_inventory_id"
803
+ t.bigint "service_instance_id"
804
+ t.bigint "root_service_instance_id"
805
+ t.string "source_ref", null: false
806
+ t.string "name"
807
+ t.jsonb "extra"
808
+ t.datetime "resource_timestamp"
809
+ t.jsonb "resource_timestamps", default: {}
810
+ t.datetime "resource_timestamps_max"
811
+ t.datetime "created_at", null: false
812
+ t.datetime "updated_at", null: false
813
+ t.datetime "archived_at"
814
+ t.datetime "source_created_at"
815
+ t.datetime "source_updated_at"
816
+ t.datetime "last_seen_at"
817
+ t.bigint "refresh_state_part_id"
818
+ t.index ["archived_at"], name: "index_service_instance_nodes_on_archived_at"
819
+ t.index ["last_seen_at"], name: "index_service_instance_nodes_on_last_seen_at"
820
+ t.index ["refresh_state_part_id"], name: "idx_svc_instance_nodes_on_refresh_state_part_id"
821
+ t.index ["root_service_instance_id"], name: "index_service_instance_nodes_on_root_service_instance_id"
822
+ t.index ["service_instance_id"], name: "index_service_instance_nodes_on_service_instance_id"
823
+ t.index ["service_inventory_id"], name: "index_service_instance_nodes_on_service_inventory_id"
824
+ t.index ["source_id", "source_ref"], name: "index_service_instance_nodes_on_source_id_and_source_ref", unique: true
825
+ t.index ["tenant_id"], name: "index_service_instance_nodes_on_tenant_id"
826
+ end
827
+
828
+ create_table "service_instance_service_credentials", force: :cascade do |t|
829
+ t.bigint "tenant_id", null: false
830
+ t.bigint "service_credential_id", null: false
831
+ t.bigint "service_instance_id", null: false
832
+ t.datetime "created_at", null: false
833
+ t.datetime "updated_at", null: false
834
+ t.datetime "last_seen_at"
835
+ t.bigint "refresh_state_part_id"
836
+ t.index ["last_seen_at"], name: "index_service_instance_service_credentials_on_last_seen_at"
837
+ t.index ["refresh_state_part_id"], name: "idx_svc_instance_svc_credentials_on_refresh_state_part_id"
838
+ t.index ["service_credential_id", "service_instance_id"], name: "index_service_instance_credential_id", unique: true
839
+ t.index ["service_instance_id"], name: "index_service_instance_credentials_on_service_instance_id"
840
+ t.index ["tenant_id"], name: "index_service_instance_service_credentials_on_tenant_id"
841
+ end
842
+
843
+ create_table "service_instances", force: :cascade do |t|
844
+ t.bigint "source_id", null: false
845
+ t.string "source_ref", null: false
846
+ t.string "name"
847
+ t.bigint "service_offering_id"
848
+ t.bigint "service_plan_id"
849
+ t.jsonb "extra"
850
+ t.datetime "created_at", null: false
851
+ t.datetime "updated_at", null: false
852
+ t.datetime "source_deleted_at"
853
+ t.bigint "tenant_id", null: false
854
+ t.datetime "source_created_at"
855
+ t.datetime "archived_at"
856
+ t.datetime "resource_timestamp"
857
+ t.jsonb "resource_timestamps", default: {}
858
+ t.datetime "resource_timestamps_max"
859
+ t.bigint "source_region_id"
860
+ t.bigint "subscription_id"
861
+ t.datetime "last_seen_at"
862
+ t.string "external_url"
863
+ t.bigint "service_inventory_id"
864
+ t.bigint "root_service_instance_id"
865
+ t.bigint "refresh_state_part_id"
866
+ t.index ["archived_at"], name: "index_service_instances_on_archived_at"
867
+ t.index ["last_seen_at"], name: "index_service_instances_on_last_seen_at"
868
+ t.index ["refresh_state_part_id"], name: "idx_svc_instances_on_refresh_state_part_id"
869
+ t.index ["root_service_instance_id"], name: "index_service_instances_on_root_service_instance_id"
870
+ t.index ["service_inventory_id"], name: "index_service_instances_on_service_inventory_id"
871
+ t.index ["service_offering_id"], name: "index_service_instances_on_service_offering_id"
872
+ t.index ["service_plan_id"], name: "index_service_instances_on_service_plan_id"
873
+ t.index ["source_deleted_at"], name: "index_service_instances_on_source_deleted_at"
874
+ t.index ["source_id", "source_ref"], name: "index_service_instances_on_source_id_and_source_ref", unique: true
875
+ t.index ["source_region_id"], name: "index_service_instances_on_source_region_id"
876
+ t.index ["subscription_id"], name: "index_service_instances_on_subscription_id"
877
+ t.index ["tenant_id"], name: "index_service_instances_on_tenant_id"
878
+ end
879
+
880
+ create_table "service_inventories", force: :cascade do |t|
881
+ t.bigint "tenant_id", null: false
882
+ t.bigint "source_id", null: false
883
+ t.string "source_ref", null: false
884
+ t.string "name"
885
+ t.text "description"
886
+ t.jsonb "extra"
887
+ t.datetime "resource_timestamp"
888
+ t.jsonb "resource_timestamps", default: {}
889
+ t.datetime "resource_timestamps_max"
890
+ t.datetime "created_at", null: false
891
+ t.datetime "updated_at", null: false
892
+ t.datetime "archived_at"
893
+ t.datetime "source_created_at"
894
+ t.datetime "source_updated_at"
895
+ t.datetime "last_seen_at"
896
+ t.bigint "refresh_state_part_id"
897
+ t.index ["archived_at"], name: "index_service_inventories_on_archived_at"
898
+ t.index ["last_seen_at"], name: "index_service_inventories_on_last_seen_at"
899
+ t.index ["refresh_state_part_id"], name: "idx_svc_inventories_on_refresh_state_part_id"
900
+ t.index ["source_id", "source_ref"], name: "index_service_inventories_on_source_id_and_source_ref", unique: true
901
+ t.index ["tenant_id"], name: "index_service_inventories_on_tenant_id"
902
+ end
903
+
904
+ create_table "service_inventory_tags", id: :serial, force: :cascade do |t|
905
+ t.bigint "tag_id", null: false
906
+ t.bigint "service_inventory_id", null: false
907
+ t.datetime "last_seen_at"
908
+ t.bigint "tenant_id"
909
+ t.bigint "refresh_state_part_id"
910
+ t.index ["last_seen_at"], name: "index_service_inventory_tags_on_last_seen_at"
911
+ t.index ["refresh_state_part_id"], name: "idx_svc_inventory_tags_on_refresh_state_part_id"
912
+ t.index ["service_inventory_id"], name: "index_service_inventory_tags_on_service_inventory_id"
913
+ t.index ["tag_id", "service_inventory_id"], name: "service_inventories_tags_unique_index", unique: true
914
+ t.index ["tenant_id"], name: "index_service_inventory_tags_on_tenant_id"
915
+ end
916
+
917
+ create_table "service_offering_icons", id: :serial, force: :cascade do |t|
918
+ t.bigint "tenant_id", null: false
919
+ t.bigint "source_id", null: false
920
+ t.string "source_ref", null: false
921
+ t.binary "data"
922
+ t.datetime "created_at", null: false
923
+ t.datetime "updated_at", null: false
924
+ t.datetime "last_seen_at"
925
+ t.bigint "refresh_state_part_id"
926
+ t.index ["last_seen_at"], name: "index_service_offering_icons_on_last_seen_at"
927
+ t.index ["refresh_state_part_id"], name: "idx_svc_offering_icons_on_refresh_state_part_id"
928
+ t.index ["source_id", "source_ref"], name: "index_service_offering_icons_on_source_id_and_source_ref", unique: true
929
+ t.index ["tenant_id"], name: "index_service_offering_icons_on_tenant_id"
930
+ end
931
+
932
+ create_table "service_offering_node_service_credentials", force: :cascade do |t|
933
+ t.bigint "tenant_id", null: false
934
+ t.bigint "service_credential_id", null: false
935
+ t.bigint "service_offering_node_id", null: false
936
+ t.datetime "created_at", null: false
937
+ t.datetime "updated_at", null: false
938
+ t.datetime "last_seen_at"
939
+ t.bigint "refresh_state_part_id"
940
+ t.index ["last_seen_at"], name: "index_service_offering_node_service_credentials_on_last_seen_at"
941
+ t.index ["refresh_state_part_id"], name: "idx_svc_offering_node_svc_credentials_on_refresh_state_part_id"
942
+ t.index ["service_credential_id", "service_offering_node_id"], name: "index_service_offering_node_credential_id", unique: true
943
+ t.index ["service_offering_node_id"], name: "index_offering_node_credentials_on_service_offering_id"
944
+ t.index ["tenant_id"], name: "index_service_offering_node_service_credentials_on_tenant_id"
945
+ end
946
+
947
+ create_table "service_offering_nodes", force: :cascade do |t|
948
+ t.bigint "tenant_id", null: false
949
+ t.bigint "source_id", null: false
950
+ t.bigint "service_inventory_id"
951
+ t.bigint "service_offering_id"
952
+ t.bigint "root_service_offering_id"
953
+ t.string "source_ref", null: false
954
+ t.string "name"
955
+ t.jsonb "extra"
956
+ t.datetime "resource_timestamp"
957
+ t.jsonb "resource_timestamps", default: {}
958
+ t.datetime "resource_timestamps_max"
959
+ t.datetime "created_at", null: false
960
+ t.datetime "updated_at", null: false
961
+ t.datetime "archived_at"
962
+ t.datetime "source_created_at"
963
+ t.datetime "source_updated_at"
964
+ t.datetime "last_seen_at"
965
+ t.bigint "refresh_state_part_id"
966
+ t.index ["archived_at"], name: "index_service_offering_nodes_on_archived_at"
967
+ t.index ["last_seen_at"], name: "index_service_offering_nodes_on_last_seen_at"
968
+ t.index ["refresh_state_part_id"], name: "idx_svc_offering_nodes_on_refresh_state_part_id"
969
+ t.index ["root_service_offering_id"], name: "index_service_offering_nodes_on_root_service_offering_id"
970
+ t.index ["service_inventory_id"], name: "index_service_offering_nodes_on_service_inventory_id"
971
+ t.index ["service_offering_id"], name: "index_service_offering_nodes_on_service_offering_id"
972
+ t.index ["source_id", "source_ref"], name: "index_service_offering_nodes_on_source_id_and_source_ref", unique: true
973
+ t.index ["tenant_id"], name: "index_service_offering_nodes_on_tenant_id"
974
+ end
975
+
976
+ create_table "service_offering_service_credentials", force: :cascade do |t|
977
+ t.bigint "tenant_id", null: false
978
+ t.bigint "service_credential_id", null: false
979
+ t.bigint "service_offering_id", null: false
980
+ t.datetime "created_at", null: false
981
+ t.datetime "updated_at", null: false
982
+ t.datetime "last_seen_at"
983
+ t.bigint "refresh_state_part_id"
984
+ t.index ["last_seen_at"], name: "index_service_offering_service_credentials_on_last_seen_at"
985
+ t.index ["refresh_state_part_id"], name: "idx_svc_offering_svc_credentials_on_refresh_state_part_id"
986
+ t.index ["service_credential_id", "service_offering_id"], name: "index_service_offering_credential_id", unique: true
987
+ t.index ["service_offering_id"], name: "index_service_offering_credentials_on_service_offering_id"
988
+ t.index ["tenant_id"], name: "index_service_offering_service_credentials_on_tenant_id"
989
+ end
990
+
991
+ create_table "service_offering_tags", id: :serial, force: :cascade do |t|
992
+ t.bigint "tag_id", null: false
993
+ t.bigint "service_offering_id", null: false
994
+ t.datetime "last_seen_at"
995
+ t.bigint "tenant_id"
996
+ t.bigint "refresh_state_part_id"
997
+ t.index ["last_seen_at"], name: "index_service_offering_tags_on_last_seen_at"
998
+ t.index ["refresh_state_part_id"], name: "idx_svc_offering_tags_on_refresh_state_part_id"
999
+ t.index ["service_offering_id", "tag_id"], name: "uniq_index_on_service_offering_id_tag_id", unique: true
1000
+ t.index ["tag_id"], name: "index_service_offering_tags_on_tag_id"
1001
+ t.index ["tenant_id"], name: "index_service_offering_tags_on_tenant_id"
1002
+ end
1003
+
1004
+ create_table "service_offerings", force: :cascade do |t|
1005
+ t.bigint "source_id", null: false
1006
+ t.string "source_ref", null: false
1007
+ t.string "name"
1008
+ t.text "description"
1009
+ t.jsonb "extra"
1010
+ t.datetime "created_at", null: false
1011
+ t.datetime "updated_at", null: false
1012
+ t.datetime "source_deleted_at"
1013
+ t.bigint "tenant_id", null: false
1014
+ t.datetime "source_created_at"
1015
+ t.datetime "archived_at"
1016
+ t.datetime "resource_timestamp"
1017
+ t.jsonb "resource_timestamps", default: {}
1018
+ t.datetime "resource_timestamps_max"
1019
+ t.bigint "source_region_id"
1020
+ t.bigint "subscription_id"
1021
+ t.datetime "last_seen_at"
1022
+ t.string "display_name"
1023
+ t.string "documentation_url"
1024
+ t.text "long_description"
1025
+ t.string "distributor"
1026
+ t.string "support_url"
1027
+ t.bigint "service_offering_icon_id"
1028
+ t.bigint "service_inventory_id"
1029
+ t.bigint "refresh_state_part_id"
1030
+ t.index ["archived_at"], name: "index_service_offerings_on_archived_at"
1031
+ t.index ["last_seen_at"], name: "index_service_offerings_on_last_seen_at"
1032
+ t.index ["refresh_state_part_id"], name: "idx_svc_offerings_on_refresh_state_part_id"
1033
+ t.index ["service_inventory_id"], name: "index_service_offerings_on_service_inventory_id"
1034
+ t.index ["service_offering_icon_id"], name: "index_service_offerings_on_service_offering_icon_id"
1035
+ t.index ["source_deleted_at"], name: "index_service_offerings_on_source_deleted_at"
1036
+ t.index ["source_id", "source_ref"], name: "index_service_offerings_on_source_id_and_source_ref", unique: true
1037
+ t.index ["source_region_id"], name: "index_service_offerings_on_source_region_id"
1038
+ t.index ["subscription_id"], name: "index_service_offerings_on_subscription_id"
1039
+ t.index ["tenant_id"], name: "index_service_offerings_on_tenant_id"
1040
+ end
1041
+
1042
+ create_table "service_plans", force: :cascade do |t|
1043
+ t.bigint "source_id", null: false
1044
+ t.string "source_ref", null: false
1045
+ t.string "name"
1046
+ t.text "description"
1047
+ t.bigint "service_offering_id"
1048
+ t.jsonb "extra"
1049
+ t.datetime "created_at", null: false
1050
+ t.datetime "updated_at", null: false
1051
+ t.datetime "source_deleted_at"
1052
+ t.bigint "tenant_id", null: false
1053
+ t.datetime "source_created_at"
1054
+ t.jsonb "create_json_schema"
1055
+ t.jsonb "update_json_schema"
1056
+ t.datetime "archived_at"
1057
+ t.datetime "resource_timestamp"
1058
+ t.jsonb "resource_timestamps", default: {}
1059
+ t.datetime "resource_timestamps_max"
1060
+ t.bigint "source_region_id"
1061
+ t.bigint "subscription_id"
1062
+ t.datetime "last_seen_at"
1063
+ t.string "resource_version"
1064
+ t.bigint "refresh_state_part_id"
1065
+ t.index ["archived_at"], name: "index_service_plans_on_archived_at"
1066
+ t.index ["last_seen_at"], name: "index_service_plans_on_last_seen_at"
1067
+ t.index ["refresh_state_part_id"], name: "idx_svc_plans_on_refresh_state_part_id"
1068
+ t.index ["service_offering_id"], name: "index_service_plans_on_service_offering_id"
1069
+ t.index ["source_deleted_at"], name: "index_service_plans_on_source_deleted_at"
1070
+ t.index ["source_id", "source_ref"], name: "index_service_plans_on_source_id_and_source_ref", unique: true
1071
+ t.index ["source_region_id"], name: "index_service_plans_on_source_region_id"
1072
+ t.index ["subscription_id"], name: "index_service_plans_on_subscription_id"
1073
+ t.index ["tenant_id"], name: "index_service_plans_on_tenant_id"
1074
+ end
1075
+
1076
+ create_table "source_regions", force: :cascade do |t|
1077
+ t.bigint "source_id", null: false
1078
+ t.string "source_ref", null: false
1079
+ t.string "name"
1080
+ t.string "endpoint"
1081
+ t.datetime "created_at", null: false
1082
+ t.datetime "updated_at", null: false
1083
+ t.datetime "archived_at"
1084
+ t.bigint "tenant_id", null: false
1085
+ t.datetime "last_seen_at"
1086
+ t.bigint "refresh_state_part_id"
1087
+ t.index ["archived_at"], name: "index_source_regions_on_archived_at"
1088
+ t.index ["last_seen_at"], name: "index_source_regions_on_last_seen_at"
1089
+ t.index ["refresh_state_part_id"], name: "idx_source_regions_on_refresh_state_part_id"
1090
+ t.index ["source_id", "source_ref"], name: "index_source_regions_on_source_id_and_source_ref", unique: true
1091
+ t.index ["tenant_id"], name: "index_source_regions_on_tenant_id"
1092
+ end
1093
+
1094
+ create_table "sources", force: :cascade do |t|
1095
+ t.string "uid", null: false
1096
+ t.datetime "created_at", null: false
1097
+ t.datetime "updated_at", null: false
1098
+ t.bigint "tenant_id", null: false
1099
+ t.string "refresh_status"
1100
+ t.index ["tenant_id"], name: "index_sources_on_tenant_id"
1101
+ t.index ["uid"], name: "index_sources_on_uid", unique: true
1102
+ end
1103
+
1104
+ create_table "subnet_tags", id: :serial, force: :cascade do |t|
1105
+ t.bigint "tag_id", null: false
1106
+ t.bigint "subnet_id", null: false
1107
+ t.datetime "last_seen_at"
1108
+ t.bigint "tenant_id"
1109
+ t.bigint "refresh_state_part_id"
1110
+ t.index ["last_seen_at"], name: "index_subnet_tags_on_last_seen_at"
1111
+ t.index ["refresh_state_part_id"], name: "idx_subnet_tags_on_refresh_state_part_id"
1112
+ t.index ["subnet_id"], name: "index_subnet_tags_on_subnet_id"
1113
+ t.index ["tag_id", "subnet_id"], name: "index_subnet_tags_on_tag_id_and_subnet_id", unique: true
1114
+ t.index ["tenant_id"], name: "index_subnet_tags_on_tenant_id"
1115
+ end
1116
+
1117
+ create_table "subnets", force: :cascade do |t|
1118
+ t.bigint "tenant_id", null: false
1119
+ t.bigint "source_id", null: false
1120
+ t.bigint "source_region_id"
1121
+ t.bigint "subscription_id"
1122
+ t.bigint "orchestration_stack_id"
1123
+ t.bigint "network_id"
1124
+ t.string "source_ref", null: false
1125
+ t.string "name"
1126
+ t.string "cidr"
1127
+ t.string "status"
1128
+ t.jsonb "extra"
1129
+ t.datetime "resource_timestamp"
1130
+ t.jsonb "resource_timestamps", default: {}
1131
+ t.datetime "resource_timestamps_max"
1132
+ t.datetime "created_at", null: false
1133
+ t.datetime "updated_at", null: false
1134
+ t.datetime "archived_at"
1135
+ t.datetime "source_created_at"
1136
+ t.datetime "source_deleted_at"
1137
+ t.datetime "last_seen_at"
1138
+ t.bigint "refresh_state_part_id"
1139
+ t.index ["archived_at"], name: "index_subnets_on_archived_at"
1140
+ t.index ["last_seen_at"], name: "index_subnets_on_last_seen_at"
1141
+ t.index ["network_id"], name: "index_subnets_on_network_id"
1142
+ t.index ["orchestration_stack_id"], name: "index_subnets_on_orchestration_stack_id"
1143
+ t.index ["refresh_state_part_id"], name: "idx_subnets_on_refresh_state_part_id"
1144
+ t.index ["source_id", "source_ref"], name: "index_subnets_on_source_id_and_source_ref", unique: true
1145
+ t.index ["source_region_id"], name: "index_subnets_on_source_region_id"
1146
+ t.index ["subscription_id"], name: "index_subnets_on_subscription_id"
1147
+ t.index ["tenant_id"], name: "index_subnets_on_tenant_id"
1148
+ end
1149
+
1150
+ create_table "subscriptions", force: :cascade do |t|
1151
+ t.bigint "source_id", null: false
1152
+ t.string "source_ref", null: false
1153
+ t.string "name"
1154
+ t.datetime "created_at", null: false
1155
+ t.datetime "updated_at", null: false
1156
+ t.datetime "archived_at"
1157
+ t.bigint "tenant_id", null: false
1158
+ t.datetime "last_seen_at"
1159
+ t.bigint "refresh_state_part_id"
1160
+ t.index ["archived_at"], name: "index_subscriptions_on_archived_at"
1161
+ t.index ["last_seen_at"], name: "index_subscriptions_on_last_seen_at"
1162
+ t.index ["refresh_state_part_id"], name: "idx_subscriptions_on_refresh_state_part_id"
1163
+ t.index ["source_id", "source_ref"], name: "index_subscriptions_on_source_id_and_source_ref", unique: true
1164
+ t.index ["tenant_id"], name: "index_subscriptions_on_tenant_id"
1165
+ end
1166
+
1167
+ create_table "tags", id: :serial, force: :cascade do |t|
1168
+ t.bigint "tenant_id", null: false
1169
+ t.string "name", null: false
1170
+ t.string "namespace", default: "", null: false
1171
+ t.text "description"
1172
+ t.datetime "created_at", null: false
1173
+ t.string "value", default: "", null: false
1174
+ t.datetime "last_seen_at"
1175
+ t.bigint "refresh_state_part_id"
1176
+ t.index ["last_seen_at"], name: "index_tags_on_last_seen_at"
1177
+ t.index ["refresh_state_part_id"], name: "idx_tags_on_refresh_state_part_id"
1178
+ t.index ["tenant_id", "namespace", "name", "value"], name: "index_tags_on_tenant_id_and_namespace_and_name_and_value", unique: true
1179
+ end
1180
+
1181
+ create_table "tasks", force: :cascade do |t|
1182
+ t.string "name"
1183
+ t.string "status"
1184
+ t.string "state"
1185
+ t.jsonb "context"
1186
+ t.bigint "tenant_id", null: false
1187
+ t.datetime "completed_at"
1188
+ t.datetime "created_at", null: false
1189
+ t.datetime "updated_at", null: false
1190
+ t.index ["tenant_id"], name: "index_tasks_on_tenant_id"
1191
+ end
1192
+
1193
+ create_table "tenants", force: :cascade do |t|
1194
+ t.string "name"
1195
+ t.text "description"
1196
+ t.string "external_tenant", null: false
1197
+ t.datetime "created_at", null: false
1198
+ t.datetime "updated_at", null: false
1199
+ t.index ["external_tenant"], name: "index_tenants_on_external_tenant", unique: true
1200
+ end
1201
+
1202
+ create_table "vm_security_groups", force: :cascade do |t|
1203
+ t.bigint "vm_id", null: false
1204
+ t.bigint "security_group_id", null: false
1205
+ t.datetime "last_seen_at"
1206
+ t.bigint "refresh_state_part_id"
1207
+ t.index ["last_seen_at"], name: "index_vm_security_groups_on_last_seen_at"
1208
+ t.index ["refresh_state_part_id"], name: "idx_vm_security_groups_on_refresh_state_part_id"
1209
+ t.index ["security_group_id"], name: "index_vm_security_groups_on_security_group_id"
1210
+ t.index ["vm_id", "security_group_id"], name: "index_vm_security_groups_on_vm_id_and_security_group_id", unique: true
1211
+ end
1212
+
1213
+ create_table "vm_tags", id: :serial, force: :cascade do |t|
1214
+ t.bigint "tag_id", null: false
1215
+ t.bigint "vm_id", null: false
1216
+ t.datetime "last_seen_at"
1217
+ t.bigint "tenant_id"
1218
+ t.bigint "refresh_state_part_id"
1219
+ t.index ["last_seen_at"], name: "index_vm_tags_on_last_seen_at"
1220
+ t.index ["refresh_state_part_id"], name: "idx_vm_tags_on_refresh_state_part_id"
1221
+ t.index ["tag_id"], name: "index_vm_tags_on_tag_id"
1222
+ t.index ["tenant_id"], name: "index_vm_tags_on_tenant_id"
1223
+ t.index ["vm_id", "tag_id"], name: "uniq_index_on_vm_id_tag_id", unique: true
1224
+ end
1225
+
1226
+ create_table "vms", force: :cascade do |t|
1227
+ t.bigint "tenant_id", null: false
1228
+ t.bigint "source_id", null: false
1229
+ t.string "source_ref", null: false
1230
+ t.string "uid_ems"
1231
+ t.string "name"
1232
+ t.string "hostname"
1233
+ t.string "description"
1234
+ t.string "power_state"
1235
+ t.bigint "cpus"
1236
+ t.bigint "memory"
1237
+ t.jsonb "extra"
1238
+ t.datetime "resource_timestamp"
1239
+ t.jsonb "resource_timestamps", default: {}
1240
+ t.datetime "resource_timestamps_max"
1241
+ t.datetime "created_at", null: false
1242
+ t.datetime "updated_at", null: false
1243
+ t.datetime "archived_at"
1244
+ t.datetime "source_created_at"
1245
+ t.datetime "source_deleted_at"
1246
+ t.bigint "orchestration_stack_id"
1247
+ t.datetime "last_seen_at"
1248
+ t.bigint "flavor_id"
1249
+ t.uuid "host_inventory_uuid"
1250
+ t.jsonb "mac_addresses"
1251
+ t.bigint "source_region_id"
1252
+ t.bigint "subscription_id"
1253
+ t.bigint "host_id"
1254
+ t.bigint "refresh_state_part_id"
1255
+ t.index ["archived_at"], name: "index_vms_on_archived_at"
1256
+ t.index ["flavor_id"], name: "index_vms_on_flavor_id"
1257
+ t.index ["host_id"], name: "index_vms_on_host_id"
1258
+ t.index ["host_inventory_uuid"], name: "index_vms_on_host_inventory_uuid"
1259
+ t.index ["last_seen_at"], name: "index_vms_on_last_seen_at"
1260
+ t.index ["orchestration_stack_id"], name: "index_vms_on_orchestration_stack_id"
1261
+ t.index ["refresh_state_part_id"], name: "idx_vms_on_refresh_state_part_id"
1262
+ t.index ["source_id", "source_ref"], name: "index_vms_on_source_id_and_source_ref", unique: true
1263
+ t.index ["source_region_id"], name: "index_vms_on_source_region_id"
1264
+ t.index ["subscription_id"], name: "index_vms_on_subscription_id"
1265
+ t.index ["tenant_id"], name: "index_vms_on_tenant_id"
1266
+ t.index ["uid_ems"], name: "index_vms_on_uid_ems"
1267
+ end
1268
+
1269
+ create_table "volume_attachments", force: :cascade do |t|
1270
+ t.bigint "tenant_id", null: false
1271
+ t.bigint "vm_id", null: false
1272
+ t.bigint "volume_id", null: false
1273
+ t.string "device"
1274
+ t.string "state"
1275
+ t.datetime "last_seen_at"
1276
+ t.bigint "refresh_state_part_id"
1277
+ t.index ["last_seen_at"], name: "index_volume_attachments_on_last_seen_at"
1278
+ t.index ["refresh_state_part_id"], name: "idx_volume_attachments_on_refresh_state_part_id"
1279
+ t.index ["tenant_id"], name: "index_volume_attachments_on_tenant_id"
1280
+ t.index ["vm_id", "volume_id"], name: "index_volume_attachments_on_vm_id_and_volume_id", unique: true
1281
+ t.index ["volume_id"], name: "index_volume_attachments_on_volume_id"
1282
+ end
1283
+
1284
+ create_table "volume_types", force: :cascade do |t|
1285
+ t.bigint "tenant_id", null: false
1286
+ t.bigint "source_id", null: false
1287
+ t.string "source_ref", null: false
1288
+ t.string "name"
1289
+ t.text "description"
1290
+ t.jsonb "extra"
1291
+ t.datetime "created_at", null: false
1292
+ t.datetime "updated_at", null: false
1293
+ t.datetime "archived_at"
1294
+ t.datetime "last_seen_at"
1295
+ t.bigint "refresh_state_part_id"
1296
+ t.index ["archived_at"], name: "index_volume_types_on_archived_at"
1297
+ t.index ["last_seen_at"], name: "index_volume_types_on_last_seen_at"
1298
+ t.index ["refresh_state_part_id"], name: "idx_volume_types_on_refresh_state_part_id"
1299
+ t.index ["source_id", "source_ref"], name: "index_volume_types_on_source_id_and_source_ref", unique: true
1300
+ t.index ["tenant_id"], name: "index_volume_types_on_tenant_id"
1301
+ end
1302
+
1303
+ create_table "volumes", force: :cascade do |t|
1304
+ t.bigint "tenant_id", null: false
1305
+ t.bigint "source_id", null: false
1306
+ t.bigint "source_region_id"
1307
+ t.bigint "volume_type_id"
1308
+ t.string "source_ref", null: false
1309
+ t.string "name"
1310
+ t.string "state"
1311
+ t.bigint "size"
1312
+ t.jsonb "extra"
1313
+ t.datetime "created_at", null: false
1314
+ t.datetime "updated_at", null: false
1315
+ t.datetime "archived_at"
1316
+ t.datetime "last_seen_at"
1317
+ t.datetime "source_deleted_at"
1318
+ t.datetime "source_created_at"
1319
+ t.datetime "resource_timestamp"
1320
+ t.jsonb "resource_timestamps", default: {}
1321
+ t.datetime "resource_timestamps_max"
1322
+ t.bigint "orchestration_stack_id"
1323
+ t.bigint "subscription_id"
1324
+ t.bigint "refresh_state_part_id"
1325
+ t.index ["archived_at"], name: "index_volumes_on_archived_at"
1326
+ t.index ["last_seen_at"], name: "index_volumes_on_last_seen_at"
1327
+ t.index ["orchestration_stack_id"], name: "index_volumes_on_orchestration_stack_id"
1328
+ t.index ["refresh_state_part_id"], name: "idx_volumes_on_refresh_state_part_id"
1329
+ t.index ["source_id", "source_ref"], name: "index_volumes_on_source_id_and_source_ref", unique: true
1330
+ t.index ["source_region_id"], name: "index_volumes_on_source_region_id"
1331
+ t.index ["subscription_id"], name: "index_volumes_on_subscription_id"
1332
+ t.index ["tenant_id"], name: "index_volumes_on_tenant_id"
1333
+ t.index ["volume_type_id"], name: "index_volumes_on_volume_type_id"
1334
+ end
1335
+
1336
+ add_foreign_key "cluster_tags", "clusters", on_delete: :cascade
1337
+ add_foreign_key "cluster_tags", "refresh_state_parts", on_delete: :nullify
1338
+ add_foreign_key "cluster_tags", "tags", on_delete: :cascade
1339
+ add_foreign_key "cluster_tags", "tenants", on_delete: :cascade
1340
+ add_foreign_key "clusters", "refresh_state_parts", on_delete: :nullify
1341
+ add_foreign_key "clusters", "sources", on_delete: :cascade
1342
+ add_foreign_key "clusters", "tenants", on_delete: :cascade
1343
+ add_foreign_key "container_group_tags", "container_groups", on_delete: :cascade
1344
+ add_foreign_key "container_group_tags", "refresh_state_parts", on_delete: :nullify
1345
+ add_foreign_key "container_group_tags", "tags", on_delete: :cascade
1346
+ add_foreign_key "container_group_tags", "tenants", on_delete: :cascade
1347
+ add_foreign_key "container_groups", "container_nodes", on_delete: :cascade
1348
+ add_foreign_key "container_groups", "container_projects", on_delete: :cascade
1349
+ add_foreign_key "container_groups", "refresh_state_parts", on_delete: :nullify
1350
+ add_foreign_key "container_groups", "sources", on_delete: :cascade
1351
+ add_foreign_key "container_groups", "tenants", on_delete: :cascade
1352
+ add_foreign_key "container_image_tags", "container_images", on_delete: :cascade
1353
+ add_foreign_key "container_image_tags", "refresh_state_parts", on_delete: :nullify
1354
+ add_foreign_key "container_image_tags", "tags", on_delete: :cascade
1355
+ add_foreign_key "container_image_tags", "tenants", on_delete: :cascade
1356
+ add_foreign_key "container_images", "refresh_state_parts", on_delete: :nullify
1357
+ add_foreign_key "container_images", "sources", on_delete: :cascade
1358
+ add_foreign_key "container_images", "tenants", on_delete: :cascade
1359
+ add_foreign_key "container_node_tags", "container_nodes", on_delete: :cascade
1360
+ add_foreign_key "container_node_tags", "refresh_state_parts", on_delete: :nullify
1361
+ add_foreign_key "container_node_tags", "tags", on_delete: :cascade
1362
+ add_foreign_key "container_node_tags", "tenants", on_delete: :cascade
1363
+ add_foreign_key "container_nodes", "refresh_state_parts", on_delete: :nullify
1364
+ add_foreign_key "container_nodes", "sources", on_delete: :cascade
1365
+ add_foreign_key "container_nodes", "tenants", on_delete: :cascade
1366
+ add_foreign_key "container_project_tags", "container_projects", on_delete: :cascade
1367
+ add_foreign_key "container_project_tags", "refresh_state_parts", on_delete: :nullify
1368
+ add_foreign_key "container_project_tags", "tags", on_delete: :cascade
1369
+ add_foreign_key "container_project_tags", "tenants", on_delete: :cascade
1370
+ add_foreign_key "container_projects", "refresh_state_parts", on_delete: :nullify
1371
+ add_foreign_key "container_projects", "sources", on_delete: :cascade
1372
+ add_foreign_key "container_projects", "tenants", on_delete: :cascade
1373
+ add_foreign_key "container_resource_quotas", "container_projects", on_delete: :cascade
1374
+ add_foreign_key "container_resource_quotas", "refresh_state_parts", on_delete: :nullify
1375
+ add_foreign_key "container_resource_quotas", "sources", on_delete: :cascade
1376
+ add_foreign_key "container_resource_quotas", "tenants", on_delete: :cascade
1377
+ add_foreign_key "container_template_tags", "container_templates", on_delete: :cascade
1378
+ add_foreign_key "container_template_tags", "refresh_state_parts", on_delete: :nullify
1379
+ add_foreign_key "container_template_tags", "tags", on_delete: :cascade
1380
+ add_foreign_key "container_template_tags", "tenants", on_delete: :cascade
1381
+ add_foreign_key "container_templates", "container_projects", on_delete: :cascade
1382
+ add_foreign_key "container_templates", "refresh_state_parts", on_delete: :nullify
1383
+ add_foreign_key "container_templates", "sources", on_delete: :cascade
1384
+ add_foreign_key "container_templates", "tenants", on_delete: :cascade
1385
+ add_foreign_key "containers", "container_groups", on_delete: :cascade
1386
+ add_foreign_key "containers", "container_images", on_delete: :nullify
1387
+ add_foreign_key "containers", "refresh_state_parts", on_delete: :nullify
1388
+ add_foreign_key "containers", "tenants", on_delete: :cascade
1389
+ add_foreign_key "datastore_mounts", "datastores", on_delete: :cascade
1390
+ add_foreign_key "datastore_mounts", "hosts", on_delete: :cascade
1391
+ add_foreign_key "datastore_mounts", "refresh_state_parts", on_delete: :nullify
1392
+ add_foreign_key "datastore_tags", "datastores", on_delete: :cascade
1393
+ add_foreign_key "datastore_tags", "refresh_state_parts", on_delete: :nullify
1394
+ add_foreign_key "datastore_tags", "tags", on_delete: :cascade
1395
+ add_foreign_key "datastore_tags", "tenants", on_delete: :cascade
1396
+ add_foreign_key "datastores", "refresh_state_parts", on_delete: :nullify
1397
+ add_foreign_key "datastores", "sources", on_delete: :cascade
1398
+ add_foreign_key "datastores", "tenants", on_delete: :cascade
1399
+ add_foreign_key "flavors", "refresh_state_parts", on_delete: :nullify
1400
+ add_foreign_key "flavors", "sources", on_delete: :cascade
1401
+ add_foreign_key "flavors", "tenants", on_delete: :cascade
1402
+ add_foreign_key "host_tags", "hosts", on_delete: :cascade
1403
+ add_foreign_key "host_tags", "refresh_state_parts", on_delete: :nullify
1404
+ add_foreign_key "host_tags", "tags", on_delete: :cascade
1405
+ add_foreign_key "host_tags", "tenants", on_delete: :cascade
1406
+ add_foreign_key "hosts", "clusters", on_delete: :nullify
1407
+ add_foreign_key "hosts", "refresh_state_parts", on_delete: :nullify
1408
+ add_foreign_key "hosts", "sources", on_delete: :cascade
1409
+ add_foreign_key "hosts", "tenants", on_delete: :cascade
1410
+ add_foreign_key "ipaddress_tags", "ipaddresses", on_delete: :cascade
1411
+ add_foreign_key "ipaddress_tags", "refresh_state_parts", on_delete: :nullify
1412
+ add_foreign_key "ipaddress_tags", "tags", on_delete: :cascade
1413
+ add_foreign_key "ipaddress_tags", "tenants", on_delete: :cascade
1414
+ add_foreign_key "ipaddresses", "network_adapters", on_delete: :cascade
1415
+ add_foreign_key "ipaddresses", "orchestration_stacks", on_delete: :cascade
1416
+ add_foreign_key "ipaddresses", "refresh_state_parts", on_delete: :nullify
1417
+ add_foreign_key "ipaddresses", "source_regions", on_delete: :cascade
1418
+ add_foreign_key "ipaddresses", "sources", on_delete: :cascade
1419
+ add_foreign_key "ipaddresses", "subnets", on_delete: :cascade
1420
+ add_foreign_key "ipaddresses", "subscriptions", on_delete: :cascade
1421
+ add_foreign_key "ipaddresses", "tenants", on_delete: :cascade
1422
+ add_foreign_key "network_adapter_tags", "network_adapters", on_delete: :cascade
1423
+ add_foreign_key "network_adapter_tags", "refresh_state_parts", on_delete: :nullify
1424
+ add_foreign_key "network_adapter_tags", "tags", on_delete: :cascade
1425
+ add_foreign_key "network_adapter_tags", "tenants", on_delete: :cascade
1426
+ add_foreign_key "network_adapters", "orchestration_stacks", on_delete: :cascade
1427
+ add_foreign_key "network_adapters", "refresh_state_parts", on_delete: :nullify
1428
+ add_foreign_key "network_adapters", "source_regions", on_delete: :cascade
1429
+ add_foreign_key "network_adapters", "sources", on_delete: :cascade
1430
+ add_foreign_key "network_adapters", "subscriptions", on_delete: :cascade
1431
+ add_foreign_key "network_adapters", "tenants", on_delete: :cascade
1432
+ add_foreign_key "network_tags", "networks", on_delete: :cascade
1433
+ add_foreign_key "network_tags", "refresh_state_parts", on_delete: :nullify
1434
+ add_foreign_key "network_tags", "tags", on_delete: :cascade
1435
+ add_foreign_key "network_tags", "tenants", on_delete: :cascade
1436
+ add_foreign_key "networks", "orchestration_stacks", on_delete: :cascade
1437
+ add_foreign_key "networks", "refresh_state_parts", on_delete: :nullify
1438
+ add_foreign_key "networks", "source_regions", on_delete: :cascade
1439
+ add_foreign_key "networks", "sources", on_delete: :cascade
1440
+ add_foreign_key "networks", "subscriptions", on_delete: :cascade
1441
+ add_foreign_key "networks", "tenants", on_delete: :cascade
1442
+ add_foreign_key "orchestration_stacks", "orchestration_stacks", column: "parent_orchestration_stack_id", on_delete: :cascade
1443
+ add_foreign_key "orchestration_stacks", "refresh_state_parts", on_delete: :nullify
1444
+ add_foreign_key "orchestration_stacks", "source_regions", on_delete: :cascade
1445
+ add_foreign_key "orchestration_stacks", "sources", on_delete: :cascade
1446
+ add_foreign_key "orchestration_stacks", "subscriptions", on_delete: :cascade
1447
+ add_foreign_key "orchestration_stacks", "tenants", on_delete: :cascade
1448
+ add_foreign_key "refresh_state_parts", "refresh_states", on_delete: :cascade
1449
+ add_foreign_key "refresh_state_parts", "tenants", on_delete: :cascade
1450
+ add_foreign_key "refresh_states", "sources", on_delete: :cascade
1451
+ add_foreign_key "refresh_states", "tenants", on_delete: :cascade
1452
+ add_foreign_key "reservation_tags", "refresh_state_parts", on_delete: :nullify
1453
+ add_foreign_key "reservation_tags", "reservations", on_delete: :cascade
1454
+ add_foreign_key "reservation_tags", "tags", on_delete: :cascade
1455
+ add_foreign_key "reservation_tags", "tenants", on_delete: :cascade
1456
+ add_foreign_key "reservations", "flavors", on_delete: :cascade
1457
+ add_foreign_key "reservations", "refresh_state_parts", on_delete: :nullify
1458
+ add_foreign_key "reservations", "source_regions", on_delete: :cascade
1459
+ add_foreign_key "reservations", "sources", on_delete: :cascade
1460
+ add_foreign_key "reservations", "subscriptions", on_delete: :cascade
1461
+ add_foreign_key "reservations", "tenants", on_delete: :cascade
1462
+ add_foreign_key "security_group_tags", "refresh_state_parts", on_delete: :nullify
1463
+ add_foreign_key "security_group_tags", "security_groups", on_delete: :cascade
1464
+ add_foreign_key "security_group_tags", "tags", on_delete: :cascade
1465
+ add_foreign_key "security_group_tags", "tenants", on_delete: :cascade
1466
+ add_foreign_key "security_groups", "networks", on_delete: :cascade
1467
+ add_foreign_key "security_groups", "orchestration_stacks", on_delete: :cascade
1468
+ add_foreign_key "security_groups", "refresh_state_parts", on_delete: :nullify
1469
+ add_foreign_key "security_groups", "source_regions", on_delete: :cascade
1470
+ add_foreign_key "security_groups", "sources", on_delete: :cascade
1471
+ add_foreign_key "security_groups", "subscriptions", on_delete: :cascade
1472
+ add_foreign_key "security_groups", "tenants", on_delete: :cascade
1473
+ add_foreign_key "service_credential_types", "refresh_state_parts", on_delete: :nullify
1474
+ add_foreign_key "service_credential_types", "sources", on_delete: :cascade
1475
+ add_foreign_key "service_credential_types", "tenants", on_delete: :cascade
1476
+ add_foreign_key "service_credentials", "refresh_state_parts", on_delete: :nullify
1477
+ add_foreign_key "service_credentials", "service_credential_types", on_delete: :cascade
1478
+ add_foreign_key "service_credentials", "sources", on_delete: :cascade
1479
+ add_foreign_key "service_credentials", "tenants", on_delete: :cascade
1480
+ add_foreign_key "service_instance_node_service_credentials", "refresh_state_parts", on_delete: :nullify
1481
+ add_foreign_key "service_instance_node_service_credentials", "service_credentials", on_delete: :cascade
1482
+ add_foreign_key "service_instance_node_service_credentials", "service_instance_nodes", on_delete: :cascade
1483
+ add_foreign_key "service_instance_node_service_credentials", "tenants", on_delete: :cascade
1484
+ add_foreign_key "service_instance_nodes", "refresh_state_parts", on_delete: :nullify
1485
+ add_foreign_key "service_instance_nodes", "service_instances", column: "root_service_instance_id", on_delete: :nullify
1486
+ add_foreign_key "service_instance_nodes", "service_instances", on_delete: :nullify
1487
+ add_foreign_key "service_instance_nodes", "service_inventories", on_delete: :nullify
1488
+ add_foreign_key "service_instance_nodes", "sources", on_delete: :cascade
1489
+ add_foreign_key "service_instance_nodes", "tenants", on_delete: :cascade
1490
+ add_foreign_key "service_instance_service_credentials", "refresh_state_parts", on_delete: :nullify
1491
+ add_foreign_key "service_instance_service_credentials", "service_credentials", on_delete: :cascade
1492
+ add_foreign_key "service_instance_service_credentials", "service_instances", on_delete: :cascade
1493
+ add_foreign_key "service_instance_service_credentials", "tenants", on_delete: :cascade
1494
+ add_foreign_key "service_instances", "refresh_state_parts", on_delete: :nullify
1495
+ add_foreign_key "service_instances", "service_instances", column: "root_service_instance_id", on_delete: :nullify
1496
+ add_foreign_key "service_instances", "service_inventories", on_delete: :nullify
1497
+ add_foreign_key "service_instances", "service_offerings", on_delete: :nullify
1498
+ add_foreign_key "service_instances", "service_plans", on_delete: :nullify
1499
+ add_foreign_key "service_instances", "source_regions", on_delete: :cascade
1500
+ add_foreign_key "service_instances", "sources", on_delete: :cascade
1501
+ add_foreign_key "service_instances", "subscriptions", on_delete: :cascade
1502
+ add_foreign_key "service_instances", "tenants", on_delete: :cascade
1503
+ add_foreign_key "service_inventories", "refresh_state_parts", on_delete: :nullify
1504
+ add_foreign_key "service_inventories", "sources", on_delete: :cascade
1505
+ add_foreign_key "service_inventories", "tenants", on_delete: :cascade
1506
+ add_foreign_key "service_inventory_tags", "refresh_state_parts", on_delete: :nullify
1507
+ add_foreign_key "service_inventory_tags", "service_inventories", on_delete: :cascade
1508
+ add_foreign_key "service_inventory_tags", "tags", on_delete: :cascade
1509
+ add_foreign_key "service_inventory_tags", "tenants", on_delete: :cascade
1510
+ add_foreign_key "service_offering_icons", "refresh_state_parts", on_delete: :nullify
1511
+ add_foreign_key "service_offering_icons", "sources", on_delete: :cascade
1512
+ add_foreign_key "service_offering_icons", "tenants", on_delete: :cascade
1513
+ add_foreign_key "service_offering_node_service_credentials", "refresh_state_parts", on_delete: :nullify
1514
+ add_foreign_key "service_offering_node_service_credentials", "service_credentials", on_delete: :cascade
1515
+ add_foreign_key "service_offering_node_service_credentials", "service_offering_nodes", on_delete: :cascade
1516
+ add_foreign_key "service_offering_node_service_credentials", "tenants", on_delete: :cascade
1517
+ add_foreign_key "service_offering_nodes", "refresh_state_parts", on_delete: :nullify
1518
+ add_foreign_key "service_offering_nodes", "service_inventories", on_delete: :nullify
1519
+ add_foreign_key "service_offering_nodes", "service_offerings", column: "root_service_offering_id", on_delete: :nullify
1520
+ add_foreign_key "service_offering_nodes", "service_offerings", on_delete: :nullify
1521
+ add_foreign_key "service_offering_nodes", "sources", on_delete: :cascade
1522
+ add_foreign_key "service_offering_nodes", "tenants", on_delete: :cascade
1523
+ add_foreign_key "service_offering_service_credentials", "refresh_state_parts", on_delete: :nullify
1524
+ add_foreign_key "service_offering_service_credentials", "service_credentials", on_delete: :cascade
1525
+ add_foreign_key "service_offering_service_credentials", "service_offerings", on_delete: :cascade
1526
+ add_foreign_key "service_offering_service_credentials", "tenants", on_delete: :cascade
1527
+ add_foreign_key "service_offering_tags", "refresh_state_parts", on_delete: :nullify
1528
+ add_foreign_key "service_offering_tags", "service_offerings", on_delete: :cascade
1529
+ add_foreign_key "service_offering_tags", "tags", on_delete: :cascade
1530
+ add_foreign_key "service_offering_tags", "tenants", on_delete: :cascade
1531
+ add_foreign_key "service_offerings", "refresh_state_parts", on_delete: :nullify
1532
+ add_foreign_key "service_offerings", "service_inventories", on_delete: :nullify
1533
+ add_foreign_key "service_offerings", "service_offering_icons", on_delete: :nullify
1534
+ add_foreign_key "service_offerings", "source_regions", on_delete: :cascade
1535
+ add_foreign_key "service_offerings", "sources", on_delete: :cascade
1536
+ add_foreign_key "service_offerings", "subscriptions", on_delete: :cascade
1537
+ add_foreign_key "service_offerings", "tenants", on_delete: :cascade
1538
+ add_foreign_key "service_plans", "refresh_state_parts", on_delete: :nullify
1539
+ add_foreign_key "service_plans", "service_offerings", on_delete: :cascade
1540
+ add_foreign_key "service_plans", "source_regions", on_delete: :cascade
1541
+ add_foreign_key "service_plans", "sources", on_delete: :cascade
1542
+ add_foreign_key "service_plans", "subscriptions", on_delete: :cascade
1543
+ add_foreign_key "service_plans", "tenants", on_delete: :cascade
1544
+ add_foreign_key "source_regions", "refresh_state_parts", on_delete: :nullify
1545
+ add_foreign_key "source_regions", "sources", on_delete: :cascade
1546
+ add_foreign_key "source_regions", "tenants", on_delete: :cascade
1547
+ add_foreign_key "sources", "tenants", on_delete: :cascade
1548
+ add_foreign_key "subnet_tags", "refresh_state_parts", on_delete: :nullify
1549
+ add_foreign_key "subnet_tags", "subnets", on_delete: :cascade
1550
+ add_foreign_key "subnet_tags", "tags", on_delete: :cascade
1551
+ add_foreign_key "subnet_tags", "tenants", on_delete: :cascade
1552
+ add_foreign_key "subnets", "networks", on_delete: :cascade
1553
+ add_foreign_key "subnets", "orchestration_stacks", on_delete: :cascade
1554
+ add_foreign_key "subnets", "refresh_state_parts", on_delete: :nullify
1555
+ add_foreign_key "subnets", "source_regions", on_delete: :cascade
1556
+ add_foreign_key "subnets", "sources", on_delete: :cascade
1557
+ add_foreign_key "subnets", "subscriptions", on_delete: :cascade
1558
+ add_foreign_key "subnets", "tenants", on_delete: :cascade
1559
+ add_foreign_key "subscriptions", "refresh_state_parts", on_delete: :nullify
1560
+ add_foreign_key "subscriptions", "sources", on_delete: :cascade
1561
+ add_foreign_key "subscriptions", "tenants", on_delete: :cascade
1562
+ add_foreign_key "tags", "refresh_state_parts", on_delete: :nullify
1563
+ add_foreign_key "tags", "tenants", on_delete: :cascade
1564
+ add_foreign_key "tasks", "tenants", on_delete: :cascade
1565
+ add_foreign_key "vm_security_groups", "refresh_state_parts", on_delete: :nullify
1566
+ add_foreign_key "vm_security_groups", "security_groups", on_delete: :cascade
1567
+ add_foreign_key "vm_security_groups", "vms", on_delete: :cascade
1568
+ add_foreign_key "vm_tags", "refresh_state_parts", on_delete: :nullify
1569
+ add_foreign_key "vm_tags", "tags", on_delete: :cascade
1570
+ add_foreign_key "vm_tags", "tenants", on_delete: :cascade
1571
+ add_foreign_key "vm_tags", "vms", on_delete: :cascade
1572
+ add_foreign_key "vms", "flavors", on_delete: :nullify
1573
+ add_foreign_key "vms", "hosts", on_delete: :nullify
1574
+ add_foreign_key "vms", "orchestration_stacks", on_delete: :nullify
1575
+ add_foreign_key "vms", "refresh_state_parts", on_delete: :nullify
1576
+ add_foreign_key "vms", "source_regions", on_delete: :cascade
1577
+ add_foreign_key "vms", "sources", on_delete: :cascade
1578
+ add_foreign_key "vms", "subscriptions", on_delete: :cascade
1579
+ add_foreign_key "vms", "tenants", on_delete: :cascade
1580
+ add_foreign_key "volume_attachments", "refresh_state_parts", on_delete: :nullify
1581
+ add_foreign_key "volume_attachments", "tenants", on_delete: :cascade
1582
+ add_foreign_key "volume_attachments", "vms", on_delete: :cascade
1583
+ add_foreign_key "volume_attachments", "volumes", on_delete: :cascade
1584
+ add_foreign_key "volume_types", "refresh_state_parts", on_delete: :nullify
1585
+ add_foreign_key "volume_types", "sources", on_delete: :cascade
1586
+ add_foreign_key "volume_types", "tenants", on_delete: :cascade
1587
+ add_foreign_key "volumes", "orchestration_stacks", on_delete: :cascade
1588
+ add_foreign_key "volumes", "refresh_state_parts", on_delete: :nullify
1589
+ add_foreign_key "volumes", "source_regions", on_delete: :cascade
1590
+ add_foreign_key "volumes", "sources", on_delete: :cascade
1591
+ add_foreign_key "volumes", "subscriptions", on_delete: :cascade
1592
+ add_foreign_key "volumes", "tenants", on_delete: :cascade
1593
+ add_foreign_key "volumes", "volume_types", on_delete: :cascade
1594
+ end