cloud_controller_ng icon indicating copy to clipboard operation
cloud_controller_ng copied to clipboard

Remove duplicate mapping key

Open gogolok opened this issue 1 year ago • 1 comments

The error codes 60003 and 290013 appear twice. While many YAML parsers can cope with duplicate mapping keys, many parser will error out. External tools, like for example go-cfclient's gen_error.go, cannot update to more recent major versions of their YAML parser library:

yaml: unmarshal errors:
  line 221: mapping key "60003" already defined at line 216
  line 1036: mapping key "290013" already defined at line 1026
panic: yaml: unmarshal errors:
	  line 221: mapping key "60003" already defined at line 216
	  line 1036: mapping key "290013" already defined at line 1026

Cloud Controller uses psych to parse the errors/*.yml files. Psych uses the latest occurence of a key. Therefore, the most recent duplicate key can be picked to stay in the errors files.

irb(main):001> require 'psych'
=> true
irb(main):002> filepath = "errors/v2.yml"
=> "errors/v2.yml"
irb(main):003* content = File.open(filepath) do |f|
irb(main):004*   Psych.safe_load(f, strict_integer: true)
irb(main):005> end; nil
=> nil
irb(main):006> content[60003]
=> {"name"=>"ServiceInstanceInvalid", "http_code"=>400, "message"=>"The service instance is invalid: %s"}
irb(main):007> content[290013]
=> {"name"=>"SpaceRolesDeletionTimeout", "http_code"=>524, "message"=>"Deletion of roles for space %s timed out before all roles could be deleted"}
  • [X] I have reviewed the contributing guide

  • [X] I have viewed, signed, and submitted the Contributor License Agreement

  • [X] I have made this pull request to the main branch

  • [ ] I have run all the unit tests using bundle exec rake

  • [ ] I have run CF Acceptance Tests

gogolok avatar Dec 17 '24 16:12 gogolok

Releated issue: https://github.com/cloudfoundry/cloud_controller_ng/issues/2894

fapo85 avatar Dec 17 '24 21:12 fapo85