MCPcopy Create free account
hub / github.com/aws-cloudformation/rain / ProcessResources

Method ProcessResources

cft/pkg/module.go:348–419  ·  view source on GitHub ↗

ProcessResources injects the module's resources into the output node

(outputNode *yaml.Node)

Source from the content-addressed store, hash-verified

346
347// ProcessResources injects the module's resources into the output node
348func (module *Module) ProcessResources(outputNode *yaml.Node) error {
349
350 // Resources Node may have been replaced
351 module.InitNodes()
352
353 if module.ResourcesNode == nil {
354 config.Debugf("Module %s has no resources", module.Config.Name)
355 return nil
356 }
357
358 // Get module resources and add them to the output
359 for i, moduleResource := range module.ResourcesNode.Content {
360 if moduleResource.Kind != yaml.MappingNode {
361 continue
362 }
363 name := module.ResourcesNode.Content[i-1].Value
364
365 // Check to see if there is a Rain attribute in the Metadata.
366 // If so, check conditionals like IfParam
367 metadata := s11n.GetMap(moduleResource, Metadata)
368 if metadata != nil {
369 if rainMetadata, ok := metadata[Rain]; ok {
370 if omitIfs(rainMetadata, module.ParametersNode,
371 module.Config.PropertiesNode, moduleResource) {
372 continue
373 }
374 }
375 }
376
377 nameNode := node.Clone(module.ResourcesNode.Content[i-1])
378 nameNode.Value = rename(module.Config.Name, nameNode.Value)
379 outputNode.Content = append(outputNode.Content, nameNode)
380 clonedResource := node.Clone(moduleResource)
381
382 err := module.ProcessOverrides(name, moduleResource, clonedResource)
383 if err != nil {
384 return err
385 }
386
387 // Resolve Refs in the module
388 // Some refs are to other resources in the module
389 // Other refs are to the module's parameters
390
391 err = module.Resolve(clonedResource)
392 if err != nil {
393 return fmt.Errorf("failed to resolve refs: %v", err)
394 }
395
396 fileRootDir := ""
397 if module.ParentModule != nil {
398 fileRootDir = module.ParentModule.Parsed.RootDir
399 } else {
400 fileRootDir = module.Config.ParentRootDir
401 }
402 if fileRootDir == "" {
403 fileRootDir = module.Parsed.RootDir
404 }
405 err = ExtraIntrinsics(clonedResource, fileRootDir)

Callers 1

processModuleFunction · 0.95

Calls 10

InitNodesMethod · 0.95
ProcessOverridesMethod · 0.95
ResolveMethod · 0.95
DebugfFunction · 0.92
GetMapFunction · 0.92
CloneFunction · 0.92
omitIfsFunction · 0.85
renameFunction · 0.85
ExtraIntrinsicsFunction · 0.85
AddResolvedModuleNodeMethod · 0.80

Tested by

no test coverage detected