docs: def create_order(self, kitchen, recipe_name, variation_name, node_name=None):
          """
          Full graph
          '/v2/order/create/<string:kitchenname>/<string:recipename>/<string:variationname>',
              methods=['PUT']
  
          Single node
          '/v2/order/create/onenode/<string:kitchenname>/<string:recipename>/<string:variationname>/<string:nodename',
              methods=['PUT']
  
          """
          rc = DKReturnCode()
          if kitchen is None or isinstance(kitchen, basestring) is False:
              rc.set(rc.DK_FAIL, 'issue with kitchen')
              return rc
          if recipe_name is None or isinstance(recipe_name, basestring) is False:
              rc.set(rc.DK_FAIL, 'issue with recipe_name')
              return rc
          if variation_name is None or isinstance(variation_name, basestring) is False:
              rc.set(rc.DK_FAIL, 'issue with variation_name')
              return rc
  
          if node_name is None:
              url = '%s/v2/order/create/%s/%s/%s' % (self.get_url_for_direct_rest_call(),
                                                     kitchen, recipe_name, variation_name)
          else:
              url = '%s/v2/order/create/onenode/%s/%s/%s/%s' % (self.get_url_for_direct_rest_call(),
                                                                kitchen, recipe_name, variation_name, node_name)
  
          try:
              response = requests.put(url, headers=self._get_common_headers())
              rdict = self._get_json(response)
              pass
          except (RequestException, ValueError), c:
              s = "create_order: exception: %s" % str(c)
              rc.set(rc.DK_FAIL, s)
              return rc
          if DKCloudAPI._valid_response(response):
              rc.set(rc.DK_SUCCESS, None, rdict['serving_chronos_id'])
              return rc
          else:
              arc = DKAPIReturnCode(rdict, response)
              rc.set(rc.DK_FAIL, arc.get_message())
              return rc