docs: def create(self, root_url, mount=None, host_network=False, nics=DefaultNetworking, port=None,
          hostname=None, privileged=False, storage=None, name=None, tags=None, identity=None, env=None,
          cgroups=None):
          """
          Creater a new container with the given root flist, mount points and
          zerotier id, and connected to the given bridges
          :param root_url: The root filesystem flist
          :param mount: a dict with {host_source: container_target} mount points.
                        where host_source directory must exists.
                        host_source can be a url to a flist to mount.
          :param host_network: Specify if the container should share the same network stack as the host.
                               if True, container creation ignores both zerotier, bridge and ports arguments below. Not
                               giving errors if provided.
          :param nics: Configure the attached nics to the container
                       each nic object is a dict of the format
                       {
                          'type': nic_type # one of default, bridge, zerotier, macvlan, passthrough, vlan, or vxlan (note, vlan and vxlan only supported by ovs)
                          'id': id # depends on the type
                              bridge: bridge name,
                              zerotier: network id,
                              macvlan: the parent link name,
                              passthrough: the link name,
                              vlan: the vlan tag,
                              vxlan: the vxlan id
                          'name': name of the nic inside the container (ignored in zerotier type)
                          'hwaddr': Mac address of nic.
                          'config': { # config is only honored for bridge, vlan, and vxlan types
                              'dhcp': bool,
                              'cidr': static_ip # ip/mask
                              'gateway': gateway
                              'dns': [dns]
                          }
                       }
          :param port: A dict of host_port: container_port pairs (only if default networking is enabled)
                         Example:
                          `port={8080: 80, 7000:7000}`
          :param hostname: Specific hostname you want to give to the container.
                           if None it will automatically be set to core-x,
                           x beeing the ID of the container
          :param privileged: If true, container runs in privileged mode.
          :param storage: A Url to the ardb storage to use to mount the root flist (or any other mount that requires g8fs)
                          if not provided, the default one from core0 configuration will be used.
          :param name: Optional name for the container
          :param identity: Container Zerotier identity, Only used if at least one of the nics is of type zerotier
          :param env: a dict with the environment variables needed to be set for the container
          :param cgroups: custom list of cgroups to apply to this container on creation. formated as [(subsystem, name), ...]
                          please refer to the cgroup api for more detailes.
          """
  
          if nics == self.DefaultNetworking:
              nics = [{'type': 'default'}]
          elif nics is None:
              nics = []
  
          args = {
              'root': root_url,
              'mount': mount,
              'host_network': host_network,
              'nics': nics,
              'port': port,
              'hostname': hostname,
              'privileged': privileged,
              'storage': storage,
              'name': name,
              'identity': identity,
              'env': env,
              'cgroups': cgroups,
          }
  
          # validate input
          self._create_chk.check(args)
  
          response = self._client.raw('corex.create', args, tags=tags)
  
          return JSONResponse(response)