code: def createController(self, key, attributes, ipmi, printer=False):
          
          if key not in self:
              self.printer = printer
              self.async = False
              # Create the VM in foreman
              self.__printProgression__('In progress',
                                        key + ' creation: push in Foreman',
                                        eol='\r')
              self.api.create('hosts', attributes, async=self.async)
              self[key]['interfaces'].append(ipmi)
              # Wait for puppet catalog to be applied
              # self.waitPuppetCatalogToBeApplied(key)
              self.reload()
              self[key]['build'] = 'true'
              self[key]['boot'] = 'pxe'
              self[key]['power'] = 'cycle'
          return self[key]
docs: Function createController
          Create a controller node
  
          @param key: The host name or ID
          @param attributes:The payload of the host creation
          @param printer: - False for no creation progression message
                          - True to get creation progression printed on STDOUT
                          - Printer class containig a status method for enhanced
                            print. def printer.status(status, msg, eol=eol)
          @return RETURN: The API result