{"action":"created","issue":{"url":"https://api.github.com/repos/vaquero-io/vaquero_io/issues/25","labels_url":"https://api.github.com/repos/vaquero-io/vaquero_io/issues/25/labels{/name}","comments_url":"https://api.github.com/repos/vaquero-io/vaquero_io/issues/25/comments","events_url":"https://api.github.com/repos/vaquero-io/vaquero_io/issues/25/events","html_url":"https://github.com/vaquero-io/vaquero_io/issues/25","id":93798059,"number":25,"title":"Add ability to mark attributes optional (Providerfile.yml)","user":{"login":"gkra","id":3741190,"avatar_url":"https://avatars.githubusercontent.com/u/3741190?v=3","gravatar_id":"","url":"https://api.github.com/users/gkra","html_url":"https://github.com/gkra","followers_url":"https://api.github.com/users/gkra/followers","following_url":"https://api.github.com/users/gkra/following{/other_user}","gists_url":"https://api.github.com/users/gkra/gists{/gist_id}","starred_url":"https://api.github.com/users/gkra/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gkra/subscriptions","organizations_url":"https://api.github.com/users/gkra/orgs","repos_url":"https://api.github.com/users/gkra/repos","events_url":"https://api.github.com/users/gkra/events{/privacy}","received_events_url":"https://api.github.com/users/gkra/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-07-08T14:05:36Z","updated_at":"2015-08-08T00:13:52Z","closed_at":null,"body":"Add the ability to allow attributes to be optional in `platform.yml` so that they can be checked for correctness if present, but will not cause a health check to fail if they are missing. This would likely entail adding an option to the `Providerfile.yml`, possibly a `required` parameter:\r\n\r\n```yaml\r\nprovider:\r\n  structure:\r\n    platform:\r\n      params:\r\n        run_list:\r\n          required: true\r\n          array:\r\n            type: string\r\n            match: '(role|recipe)\\[([-_a-zA-Z0-9]+)\\]'\r\n        component_role:\r\n          required: false\r\n          type: string\r\n          match: '(role|recipe)\\[([-_a-zA-Z0-9#]+)\\]'\r\n```\r\n\r\nIn this example, then, `vaquero_io` would require `run_list` to be present and match the constraints for every component, but `component_role` will only cause a failure if it is present and does not match."},"comment":{"url":"https://api.github.com/repos/vaquero-io/vaquero_io/issues/comments/128866126","html_url":"https://github.com/vaquero-io/vaquero_io/issues/25#issuecomment-128866126","issue_url":"https://api.github.com/repos/vaquero-io/vaquero_io/issues/25","id":128866126,"user":{"login":"gkra","id":3741190,"avatar_url":"https://avatars.githubusercontent.com/u/3741190?v=3","gravatar_id":"","url":"https://api.github.com/users/gkra","html_url":"https://github.com/gkra","followers_url":"https://api.github.com/users/gkra/followers","following_url":"https://api.github.com/users/gkra/following{/other_user}","gists_url":"https://api.github.com/users/gkra/gists{/gist_id}","starred_url":"https://api.github.com/users/gkra/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gkra/subscriptions","organizations_url":"https://api.github.com/users/gkra/orgs","repos_url":"https://api.github.com/users/gkra/repos","events_url":"https://api.github.com/users/gkra/events{/privacy}","received_events_url":"https://api.github.com/users/gkra/received_events","type":"User","site_admin":false},"created_at":"2015-08-08T00:13:52Z","updated_at":"2015-08-08T00:13:52Z","body":"True. We've run into use cases where it makes more sense to define the \"utility\" infrastructure to support it in a separate platform definition.\r\n\r\nI.e., the application platform itself is in one platform definition to define the components and environments to provision, and supporting infrastructure (bastions, build systems, etc) get their own platform definition in a parallel directory structure. "}}