topological_inventory-core 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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