@@ -164,8 +164,95 @@ func New(name, dir string) *Stack {
164
164
165
165
// Compute default policies for a stack
166
166
func calculateDefaultPolicies (s * Stack ) []* v1.PolicyResource {
167
+ policies := make ([]* v1.PolicyResource , 0 )
168
+
169
+ principals := make ([]* v1.Resource , 0 )
170
+
171
+ for name := range s .Functions {
172
+ principals = append (principals , & v1.Resource {
173
+ Name : name ,
174
+ Type : v1 .ResourceType_Function ,
175
+ })
176
+ }
177
+
178
+ topicResources := make ([]* v1.Resource , len (s .Topics ), 0 )
179
+ for name := range s .Topics {
180
+ topicResources = append (topicResources , & v1.Resource {
181
+ Name : name ,
182
+ Type : v1 .ResourceType_Topic ,
183
+ })
184
+ }
185
+
186
+ policies = append (policies , & v1.PolicyResource {
187
+ Principals : principals ,
188
+ Actions : []v1.Action {
189
+ v1 .Action_TopicDetail ,
190
+ v1 .Action_TopicEventPublish ,
191
+ v1 .Action_TopicList ,
192
+ },
193
+ Resources : topicResources ,
194
+ })
195
+
196
+ bucketResources := make ([]* v1.Resource , len (s .Buckets ), 0 )
197
+ for name := range s .Buckets {
198
+ bucketResources = append (bucketResources , & v1.Resource {
199
+ Name : name ,
200
+ Type : v1 .ResourceType_Bucket ,
201
+ })
202
+ }
203
+
204
+ policies = append (policies , & v1.PolicyResource {
205
+ Principals : principals ,
206
+ Actions : []v1.Action {
207
+ v1 .Action_BucketFileDelete ,
208
+ v1 .Action_BucketFileGet ,
209
+ v1 .Action_BucketFileList ,
210
+ v1 .Action_BucketFilePut ,
211
+ },
212
+ Resources : bucketResources ,
213
+ })
214
+
215
+ queueResources := make ([]* v1.Resource , len (s .Queues ), 0 )
216
+ for name := range s .Buckets {
217
+ queueResources = append (queueResources , & v1.Resource {
218
+ Name : name ,
219
+ Type : v1 .ResourceType_Queue ,
220
+ })
221
+ }
222
+
223
+ policies = append (policies , & v1.PolicyResource {
224
+ Principals : principals ,
225
+ Actions : []v1.Action {
226
+ v1 .Action_QueueDetail ,
227
+ v1 .Action_QueueList ,
228
+ v1 .Action_QueueReceive ,
229
+ v1 .Action_QueueSend ,
230
+ },
231
+ Resources : queueResources ,
232
+ })
233
+
234
+ collectionResources := make ([]* v1.Resource , len (s .Collections ), 0 )
235
+ for name := range s .Collections {
236
+ collectionResources = append (collectionResources , & v1.Resource {
237
+ Name : name ,
238
+ Type : v1 .ResourceType_Collection ,
239
+ })
240
+ }
241
+
242
+ policies = append (policies , & v1.PolicyResource {
243
+ Principals : principals ,
244
+ Actions : []v1.Action {
245
+ v1 .Action_CollectionDocumentDelete ,
246
+ v1 .Action_CollectionDocumentRead ,
247
+ v1 .Action_CollectionDocumentWrite ,
248
+ v1 .Action_CollectionList ,
249
+ v1 .Action_CollectionQuery ,
250
+ },
251
+ Resources : collectionResources ,
252
+ })
253
+
167
254
// TODO: Calculate policies for stacks loaded from a file
168
- return [] * v1. PolicyResource {}
255
+ return policies
169
256
}
170
257
171
258
func FromFile (name string ) (* Stack , error ) {
0 commit comments