Just to finish this off (sorry for the delay), the final process is the publishing. In the publish method you only need to copy the hda to the publish folder you specify in your Templates.
publish_path = item.properties["path"]
publish_template = item.properties['publish_template']
publish_fields = publish_template.get_fields(publish_path)
# ensure the publish folder exists:
publish_folder = os.path.dirname(publish_path)
self.parent.ensure_folder_exists(publish_folder)
Now that these are set you can continue. Insert the following code to the publish method and you should have it complete.
# ----------------- PUBLISH HDA ----------------- #
hda_node = item.properties['hda_node']
definition = hda_node.type().definition()
hda_name = definition.nodeTypeName()
definition.copyToHDAFile(publish_path, hda_name, hda_name)
Hopefully this should give you the complete picture on how to publish an HDA.