Skip to content

Commit

Permalink
stored: migrate job added JobId to protocol message
Browse files Browse the repository at this point in the history
- added JobId to replicate message
- sd->sd connection now starts tls first
  • Loading branch information
franku committed Sep 7, 2018
1 parent cf30268 commit f344803
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 5 deletions.
4 changes: 2 additions & 2 deletions core/src/dird/migrate.cc
Expand Up @@ -66,7 +66,7 @@ namespace directordaemon {

/* Commands sent to other storage daemon */
static char replicatecmd[] =
"replicate Job=%s address=%s port=%d ssl=%d Authorization=%s\n";
"replicate JobId=%d Job=%s address=%s port=%d ssl=%d Authorization=%s\n";

/**
* Get Job names in Pool
Expand Down Expand Up @@ -1549,7 +1549,7 @@ static inline bool DoActualMigration(JobControlRecord *jcr)

char *connection_target_address = StorageAddressToContact(rstore, wstore);

Mmsg(command, replicatecmd, mig_jcr->Job, connection_target_address,
Mmsg(command, replicatecmd, mig_jcr->JobId, mig_jcr->Job, connection_target_address,
wstore->SDDport, tls_need, mig_jcr->sd_auth_key);

if (!jcr->store_bsock->fsend(command.c_str())) {
Expand Down
15 changes: 15 additions & 0 deletions core/src/dird/sd_cmds.cc
Expand Up @@ -41,6 +41,7 @@
#include "dird/ua_server.h"
#include "lib/bnet.h"
#include "lib/edit.h"
#include "lib/qualified_resource_name_type_converter.h"

namespace directordaemon {

Expand Down Expand Up @@ -137,6 +138,20 @@ bool ConnectToStorageDaemon(JobControlRecord *jcr, int retry_interval,
}
jcr->store_bsock = sd;

std::string qualified_resource_name;
if (!my_config->GetQualifiedResourceNameTypeConverter()->ResourceToString(me->hdr.name, my_config->r_own_,
qualified_resource_name)) {
Dmsg0(100, "Could not generate qualified resource name for a storage resource\n");
return false;
}

TlsResource *tls_configuration = dynamic_cast<TlsResource *>(store);
if (!sd->DoTlsHandshake(4, tls_configuration, false, qualified_resource_name.c_str(),
tls_configuration->password.value, jcr)) {
Dmsg0(100, "Could not DoTlsHandshake() with storagedaemon\n");
return false;
}

if (!AuthenticateWithStorageDaemon(jcr, store)) {
sd->close();
delete jcr->store_bsock;
Expand Down
7 changes: 4 additions & 3 deletions core/src/stored/dir_cmd.cc
Expand Up @@ -102,7 +102,7 @@ static char releasecmd[] =
static char readlabelcmd[] =
"readlabel %127s Slot=%hd drive=%hd";
static char replicatecmd[] =
"replicate Job=%127s address=%s port=%d ssl=%d Authorization=%100s";
"replicate JobId=%d Job=%127s address=%s port=%d ssl=%d Authorization=%100s";
static char passiveclientcmd[] =
"passive client address=%s port=%d ssl=%d";
static char resolvecmd[] =
Expand Down Expand Up @@ -1582,6 +1582,7 @@ static bool ReplicateCmd(JobControlRecord *jcr)
int enable_ssl; /* enable ssl to sd */
char JobName[MAX_NAME_LENGTH];
char stored_addr[MAX_NAME_LENGTH];
uint32_t JobId = 0;
PoolMem sd_auth_key(PM_MESSAGE);
BareosSocket *dir = jcr->dir_bsock;
BareosSocket *sd; /* storage daemon bsock */
Expand All @@ -1595,7 +1596,7 @@ static bool ReplicateCmd(JobControlRecord *jcr)
Dmsg1(100, "ReplicateCmd: %s", dir->msg);
sd_auth_key.check_size(dir->message_length);

if (sscanf(dir->msg, replicatecmd, JobName, stored_addr, &stored_port,
if (sscanf(dir->msg, replicatecmd, &JobId, JobName, stored_addr, &stored_port,
&enable_ssl, sd_auth_key.c_str()) != 5) {
dir->fsend(BADcmd, "replicate", dir->msg);
goto bail_out;
Expand Down Expand Up @@ -1639,7 +1640,7 @@ static bool ReplicateCmd(JobControlRecord *jcr)
Dmsg0(110, "Connection OK to SD.\n");

if (!my_config->GetQualifiedResourceNameTypeConverter()->ResourceToString(
jcr->Job, R_JOB, jcr->JobId, qualified_resource_name)) {
JobName, R_JOB, JobId, qualified_resource_name)) {
goto bail_out;
}

Expand Down

0 comments on commit f344803

Please sign in to comment.