def _save_logbook(self, book):
     # See if we have an existing logbook to merge with.
     e_lb = None
     try:
         e_lb = self._get_logbook(book.uuid)
     except exc.NotFound:
         pass
     if e_lb is not None:
         e_lb = p_utils.logbook_merge(e_lb, book)
         for fd in book:
             if e_lb.find(fd.uuid) is None:
                 e_lb.add(fd)
         book = e_lb
     book_path = os.path.join(self._book_path, book.uuid)
     misc.ensure_tree(book_path)
     created_at = None
     if e_lb is not None:
         created_at = e_lb.created_at
     self._write_to(os.path.join(book_path, 'metadata'), jsonutils.dumps(
         p_utils.format_logbook(book, created_at=created_at)))
     if len(book):
         flow_path = os.path.join(book_path, 'flows')
         misc.ensure_tree(flow_path)
         self._run_with_process_lock('flow',
                                     self._save_flows_and_link,
                                     list(book), flow_path)
     return book
Esempio n. 2
0
 def _save_logbook(self, book):
     # See if we have an existing logbook to merge with.
     e_lb = None
     try:
         e_lb = self._get_logbook(book.uuid)
     except exc.NotFound:
         pass
     if e_lb is not None:
         e_lb = p_utils.logbook_merge(e_lb, book)
         for fd in book:
             if e_lb.find(fd.uuid) is None:
                 e_lb.add(fd)
         book = e_lb
     book_path = os.path.join(self._book_path, book.uuid)
     misc.ensure_tree(book_path)
     created_at = None
     if e_lb is not None:
         created_at = e_lb.created_at
     self._write_to(os.path.join(book_path, 'metadata'), jsonutils.dumps(
         p_utils.format_logbook(book, created_at=created_at)))
     if len(book):
         flow_path = os.path.join(book_path, 'flows')
         misc.ensure_tree(flow_path)
         self._run_with_process_lock('flow',
                                     self._save_flows_and_link,
                                     list(book), flow_path)
     return book
Esempio n. 3
0
 def _update_logbook(lb_path, lb_data, txn):
     e_lb = p_utils.unformat_logbook(lb.uuid, misc.decode_json(lb_data))
     e_lb = p_utils.logbook_merge(e_lb, lb)
     lb_data = p_utils.format_logbook(e_lb, created_at=lb.created_at)
     txn.set_data(lb_path, misc.binary_encode(jsonutils.dumps(lb_data)))
     for fd in lb:
         fd_path = paths.join(lb_path, fd.uuid)
         if not self._client.exists(fd_path):
             # NOTE(harlowja): create an entry in the logbook path
             # for the provided flow detail so that a reference exists
             # from the logbook to its flow details.
             txn.create(fd_path)
         e_fd = self._update_flow_details(fd, txn, create_missing=True)
         e_lb.add(e_fd)
     return e_lb
Esempio n. 4
0
 def _update_logbook(lb_path, lb_data, txn):
     e_lb = p_utils.unformat_logbook(lb.uuid, misc.decode_json(lb_data))
     e_lb = p_utils.logbook_merge(e_lb, lb)
     lb_data = p_utils.format_logbook(e_lb, created_at=lb.created_at)
     txn.set_data(lb_path, misc.binary_encode(jsonutils.dumps(lb_data)))
     for fd in lb:
         fd_path = paths.join(lb_path, fd.uuid)
         if not self._client.exists(fd_path):
             # NOTE(harlowja): create an entry in the logbook path
             # for the provided flow detail so that a reference exists
             # from the logbook to its flow details.
             txn.create(fd_path)
         e_fd = self._update_flow_details(fd, txn, create_missing=True)
         e_lb.add(e_fd)
     return e_lb
Esempio n. 5
0
 def _create_logbook(lb_path, txn):
     lb_data = p_utils.format_logbook(lb, created_at=None)
     txn.create(lb_path, misc.binary_encode(jsonutils.dumps(lb_data)))
     for fd in lb:
         # NOTE(harlowja): create an entry in the logbook path
         # for the provided flow detail so that a reference exists
         # from the logbook to its flow details.
         txn.create(paths.join(lb_path, fd.uuid))
         fd_path = paths.join(self.flow_path, fd.uuid)
         fd_data = jsonutils.dumps(p_utils.format_flow_detail(fd))
         txn.create(fd_path, misc.binary_encode(fd_data))
         for td in fd:
             # NOTE(harlowja): create an entry in the flow detail path
             # for the provided task detail so that a reference exists
             # from the flow detail to its task details.
             txn.create(paths.join(fd_path, td.uuid))
             td_path = paths.join(self.task_path, td.uuid)
             td_data = jsonutils.dumps(p_utils.format_task_detail(td))
             txn.create(td_path, misc.binary_encode(td_data))
     return lb
Esempio n. 6
0
 def _create_logbook(lb_path, txn):
     lb_data = p_utils.format_logbook(lb, created_at=None)
     txn.create(lb_path, misc.binary_encode(jsonutils.dumps(lb_data)))
     for fd in lb:
         # NOTE(harlowja): create an entry in the logbook path
         # for the provided flow detail so that a reference exists
         # from the logbook to its flow details.
         txn.create(paths.join(lb_path, fd.uuid))
         fd_path = paths.join(self.flow_path, fd.uuid)
         fd_data = jsonutils.dumps(p_utils.format_flow_detail(fd))
         txn.create(fd_path, misc.binary_encode(fd_data))
         for td in fd:
             # NOTE(harlowja): create an entry in the flow detail path
             # for the provided task detail so that a reference exists
             # from the flow detail to its task details.
             txn.create(paths.join(fd_path, td.uuid))
             td_path = paths.join(self.task_path, td.uuid)
             td_data = jsonutils.dumps(p_utils.format_task_detail(td))
             txn.create(td_path, misc.binary_encode(td_data))
     return lb