summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/dbi.c25
-rw-r--r--src/dbi.h2
-rw-r--r--src/rest.c4
3 files changed, 18 insertions, 13 deletions
diff --git a/src/dbi.c b/src/dbi.c
index a3bee37..9eb1a39 100644
--- a/src/dbi.c
+++ b/src/dbi.c
@@ -242,9 +242,16 @@ bool og_dbi_get_image(struct og_dbi *dbi, struct og_image *image)
const char *msglog;
dbi_result result;
- result = dbi_conn_queryf(dbi->conn,
- "SELECT nombreca, idimagen FROM imagenes WHERE nombreca = '%s'",
- image->name);
+ /* old front-end needs this... */
+ if (image->repo_id) {
+ result = dbi_conn_queryf(dbi->conn,
+ "SELECT nombreca, idimagen FROM imagenes WHERE nombreca = '%s'",
+ image->name);
+ } else {
+ result = dbi_conn_queryf(dbi->conn,
+ "SELECT nombreca, idimagen FROM imagenes WHERE nombreca = '%s' AND idrepositorio = '%s'",
+ image->name, image->repo_id);
+ }
if (!result) {
dbi_conn_error(dbi->conn, &msglog);
syslog(LOG_ERR, "failed to query database (%s:%d) %s\n",
@@ -262,17 +269,15 @@ bool og_dbi_get_image(struct og_dbi *dbi, struct og_image *image)
return false;
}
-int og_dbi_get_repository_ip(const struct og_dbi *dbi, const uint64_t image_id,
+int og_dbi_get_repository_ip(const struct og_dbi *dbi, const uint32_t repo_id,
char *repository_ip)
{
const char *msglog, *dbi_repository_ip;
dbi_result result;
result = dbi_conn_queryf(dbi->conn,
- "SELECT r.ip FROM imagenes i "
- "JOIN repositorios r USING (idrepositorio) "
- "WHERE i.idimagen = %lu",
- image_id);
+ "SELECT ip FROM repositorios WHERE idrepositorio = %u",
+ repo_id);
if (!result) {
dbi_conn_error(dbi->conn, &msglog);
syslog(LOG_ERR, "failed to query database (%s:%d) %s\n",
@@ -283,8 +288,8 @@ int og_dbi_get_repository_ip(const struct og_dbi *dbi, const uint64_t image_id,
if (!dbi_result_next_row(result)) {
dbi_conn_error(dbi->conn, &msglog);
syslog(LOG_ERR,
- "image with id %lu has no repository (%s:%d) %s\n",
- image_id, __func__, __LINE__, msglog);
+ "repository with id %u does not exist (%s:%d) %s\n",
+ repo_id, __func__, __LINE__, msglog);
dbi_result_free(result);
return -1;
}
diff --git a/src/dbi.h b/src/dbi.h
index f7aaea3..e16e5d1 100644
--- a/src/dbi.h
+++ b/src/dbi.h
@@ -144,7 +144,7 @@ int og_dbi_add_image(struct og_dbi *dbi, struct og_image *image);
int og_dbi_schema_update(void);
-int og_dbi_get_repository_ip(const struct og_dbi *dbi, const uint64_t image_id,
+int og_dbi_get_repository_ip(const struct og_dbi *dbi, const uint32_t repo_id,
char *repository_ip);
#endif
diff --git a/src/rest.c b/src/rest.c
index 708d53a..6ccb97b 100644
--- a/src/rest.c
+++ b/src/rest.c
@@ -3737,17 +3737,17 @@ static int og_cmd_add_image(json_t *element, struct og_msg_params *params,
snprintf(new_image_id, sizeof(new_image_id), "%lu", params->image.id);
params->id = new_image_id;
- json_object_set_new(element, "id", json_string(params->id));
} else {
syslog(LOG_INFO, "updating existing image `%s'\n", params->image.name);
snprintf(new_image_id, sizeof(new_image_id), "%lu", params->image.id);
params->id = new_image_id;
}
+ json_object_set_new(element, "id", json_string(params->id));
clients = json_copy(element);
json_object_del(clients, "clients");
- err = og_dbi_get_repository_ip(dbi, atoll(params->id), repository_ip);
+ err = og_dbi_get_repository_ip(dbi, params->image.repo_id, repository_ip);
og_dbi_close(dbi);
if (err < 0)
return err;