code: async def addMachines(self, params=None):
          
          params = params or {}
  
          # Normalize keys
          params = {normalize_key(k): params[k] for k in params.keys()}
  
          # Fix up values, as necessary.
          if 'parent_id' in params:
              if params['parent_id'].startswith('$addUnit'):
                  unit = self.resolve(params['parent_id'])[0]
                  params['parent_id'] = unit.machine.entity_id
              else:
                  params['parent_id'] = self.resolve(params['parent_id'])
  
          params['constraints'] = parse_constraints(
              params.get('constraints'))
          params['jobs'] = params.get('jobs', ['JobHostUnits'])
  
          if params.get('container_type') == 'lxc':
              log.warning('Juju 2.0 does not support lxc containers. '
                          'Converting containers to lxd.')
              params['container_type'] = 'lxd'
  
          # Submit the request.
          params = client.AddMachineParams(**params)
          results = await self.client_facade.AddMachines([params])
          error = results.machines[0].error
          if error:
              raise ValueError("Error adding machine: %s" % error.message)
          machine = results.machines[0].machine
          log.debug('Added new machine %s', machine)
          return machine
docs: :param params dict:
              Dictionary specifying the machine to add. All keys are optional.
              Keys include:
  
              series: string specifying the machine OS series.
  
              constraints: string holding machine constraints, if any. We'll
                  parse this into the json friendly dict that the juju api
                  expects.
  
              container_type: string holding the type of the container (for
                  instance ""lxd" or kvm"). It is not specified for top level
                  machines.
  
              parent_id: string holding a placeholder pointing to another
                  machine change or to a unit change. This value is only
                  specified in the case this machine is a container, in
                  which case also ContainerType is set.