Skip to content

Commit eaf45da

Browse files
committed
Add metadata support to RouteAccessRule model
- Create RouteAccessRuleLabelModel and RouteAccessRuleAnnotationModel - Add one_to_many relationships for labels and annotations to RouteAccessRule - Add database migrations for route_access_rule_labels and route_access_rule_annotations tables - Fixes: undefined method 'labels' error in AccessRulePresenter This enables metadata (labels/annotations) support for access rules, required by the RFC changes that removed the 'name' field in favor of using labels/annotations for metadata storage.
1 parent 6381ed8 commit eaf45da

5 files changed

Lines changed: 76 additions & 0 deletions

app/models/runtime/route_access_rule.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@ class RouteAccessRule < Sequel::Model(:route_access_rules)
66
primary_key: :id,
77
without_guid_generation: true
88

9+
one_to_many :labels, class: 'VCAP::CloudController::RouteAccessRuleLabelModel', key: :resource_guid, primary_key: :guid
10+
one_to_many :annotations, class: 'VCAP::CloudController::RouteAccessRuleAnnotationModel', key: :resource_guid, primary_key: :guid
11+
12+
add_association_dependencies labels: :destroy
13+
add_association_dependencies annotations: :destroy
14+
915
def validate
1016
validates_presence :selector
1117
validates_presence :route_id
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
module VCAP::CloudController
2+
class RouteAccessRuleAnnotationModel < Sequel::Model(:route_access_rule_annotations)
3+
set_primary_key :id
4+
many_to_one :route_access_rule,
5+
primary_key: :guid,
6+
key: :resource_guid,
7+
without_guid_generation: true
8+
9+
include MetadataModelMixin
10+
end
11+
end
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
module VCAP::CloudController
2+
class RouteAccessRuleLabelModel < Sequel::Model(:route_access_rule_labels)
3+
many_to_one :route_access_rule,
4+
primary_key: :guid,
5+
key: :resource_guid,
6+
without_guid_generation: true
7+
include MetadataModelMixin
8+
end
9+
end
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
Sequel.migration do
2+
up do
3+
unless table_exists?(:route_access_rule_labels)
4+
create_table :route_access_rule_labels do
5+
primary_key :id
6+
String :guid, null: false, size: 255
7+
String :resource_guid, null: false, size: 255
8+
String :key_prefix, size: 253
9+
String :key_name, null: false, size: 63
10+
String :value, null: false, size: 63
11+
DateTime :created_at, null: false
12+
DateTime :updated_at
13+
14+
index :guid, unique: true, name: :route_access_rule_labels_guid_index
15+
index :resource_guid, name: :route_access_rule_labels_resource_guid_index
16+
index %i[resource_guid key_prefix key_name], unique: true, name: :route_access_rule_labels_compound_index
17+
foreign_key [:resource_guid], :route_access_rules, key: :guid, on_delete: :cascade, name: :fk_route_access_rule_labels_resource_guid
18+
end
19+
end
20+
end
21+
22+
down do
23+
drop_table(:route_access_rule_labels) if table_exists?(:route_access_rule_labels)
24+
end
25+
end
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
Sequel.migration do
2+
up do
3+
unless table_exists?(:route_access_rule_annotations)
4+
create_table :route_access_rule_annotations do
5+
primary_key :id
6+
String :guid, null: false, size: 255
7+
String :resource_guid, null: false, size: 255
8+
String :key_prefix, size: 253
9+
String :key, null: false, size: 1000
10+
String :value, size: 5000
11+
DateTime :created_at, null: false
12+
DateTime :updated_at
13+
14+
index :guid, unique: true, name: :route_access_rule_annotations_guid_index
15+
index :resource_guid, name: :route_access_rule_annotations_resource_guid_index
16+
index %i[resource_guid key], unique: true, name: :route_access_rule_annotations_key_index
17+
foreign_key [:resource_guid], :route_access_rules, key: :guid, on_delete: :cascade, name: :fk_route_access_rule_annotations_resource_guid
18+
end
19+
end
20+
end
21+
22+
down do
23+
drop_table(:route_access_rule_annotations) if table_exists?(:route_access_rule_annotations)
24+
end
25+
end

0 commit comments

Comments
 (0)