Skip to content

Commit

Permalink
[api] add function to tag snapshot. Fixes MER#1283
Browse files Browse the repository at this point in the history
Signed-off-by: Denis Zalevskiy <denis.zalevskiy@jolla.com>
  • Loading branch information
Denis Zalevskiy committed Sep 17, 2015
1 parent 68be98e commit a6a86a3
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 14 deletions.
2 changes: 1 addition & 1 deletion include/vault/vault.hpp
Expand Up @@ -94,11 +94,11 @@ class Vault

Lock lock() const;

QString tagSnapshot(const QString &message);
private:
bool setState(const QString &state);
bool backupUnit(const QString &home, const QString &unit, const ProgressCallback &callback);
bool restoreUnit(const QString &home, const QString &unit, const ProgressCallback &callback);
void tagSnapshot(const QString &msg);
void resetMaster();

void setup(const QVariantMap *config);
Expand Down
12 changes: 12 additions & 0 deletions qml/Vault/vault.cpp
Expand Up @@ -64,6 +64,12 @@ class Worker : public QObject
emit done(Vault::Restore, QVariantMap());
}

Q_INVOKABLE void tagSnapshot(const QString &message)
{
debug::debug("Tag snapshot, message:", message);
auto tag = m_vault->tagSnapshot(message);
emit done(Vault::Backup, {{"tag", tag}});
}
Q_INVOKABLE void backup(const QString &home, const QStringList &units, const QString &message)
{
debug::debug("Backup: home", home);
Expand Down Expand Up @@ -363,4 +369,10 @@ void Vault::requestData(DataType dataType, QVariantMap const &context)
, Q_ARG(QVariantMap, context));
}


Q_INVOKABLE void Vault::tagSnapshot(const QString &message)
{
QMetaObject::invokeMethod(m_worker, "tagSnapshot", Q_ARG(QString, message));
}

#include "vault.moc"
1 change: 1 addition & 0 deletions qml/Vault/vault.hpp
Expand Up @@ -61,6 +61,7 @@ class Vault : public QObject
Q_INVOKABLE void startGc();
Q_INVOKABLE void requestData(DataType, QVariantMap const &);

Q_INVOKABLE void tagSnapshot(const QString &message);
signals:
void rootChanged();
void backupHomeChanged();
Expand Down
40 changes: 27 additions & 13 deletions src/vault.cpp
Expand Up @@ -451,21 +451,40 @@ Vault::Result Vault::backup(const QString &home, const QStringList &units, const
}

if (res.succededUnits.size() == usedUnits.size()) {
QString timeTag = QDateTime::currentDateTimeUtc().toString("yyyy-MM-ddTHH-mm-ss.zzzZ");
qDebug()<<timeTag<<message;
QString msg = message.isEmpty() ? timeTag : message + '\n' + timeTag;
writeFile(fileName(File::Message), msg);
m_vcs.add(fileName(File::Message));
Gittin::Commit commit = m_vcs.commit(timeTag + '\n' + msg);
commit.addNote(message);
tagSnapshot(timeTag);
tagSnapshot(message);
} else {
debug::warning("Some unit backup is failed, no tag");
reset(head.sha());
}
return res;
}

/// \return snapshot tag name
QString Vault::tagSnapshot(const QString &message)
{
static const QString timeFormat{"yyyy-MM-ddTHH-mm-ss.zzzZ"};

auto l = lock();
// TODO error checking
m_vcs.checkout("master");

auto timeTag = QDateTime::currentDateTimeUtc().toString(timeFormat);
debug::info("Tag", timeTag, message);
auto metadata = message.isEmpty() ? timeTag : message + '\n' + timeTag;
writeFile(fileName(File::Message), metadata);
m_vcs.add(fileName(File::Message));
Gittin::Commit commit = m_vcs.commit(metadata);
// message can be theoretically updated later and it should not
// change commit id, so add it as a not. Initial message is saved
// in the commit and message file
commit.addNote(message);

Snapshot snapshot{&m_vcs, timeTag};
auto tagName = snapshot.tag().name();
m_vcs.tag(tagName);
return tagName;
}

bool Vault::clear(const QVariantMap &options)
{
auto l = lock();
Expand Down Expand Up @@ -840,11 +859,6 @@ bool Vault::restoreUnit(const QString &home, const QString &unit, const Progress
return true;
}

void Vault::tagSnapshot(const QString &msg)
{
m_vcs.tag(Snapshot(&m_vcs, msg).tag().name());
}

/**
* \note thread-unsafe
*/
Expand Down

0 comments on commit a6a86a3

Please sign in to comment.