The code changes are to generate metadata.yaml, config.yaml, unithooks from tosca template.

This logic should be pushed up the stack. I'd look at refactoring the requirements for loop as well. I'd prefer to see the requirements getting filtered before any of this logic is encountered. If that is done, the comment and for loop can be removed from create_interface. You could even push the requirements validation (None check, instancetype check) up in to that same code.

Also I'd use a variable to hold the exclusions in the new code.

excluded_keys = ('host', 'relationship_type', 'interfaces')