diff --git a/tmcd/tmcd.c b/tmcd/tmcd.c index 2affd6ae6ce15a58058bcb5bd1c8b8461232a80a..fab2e86ec1b81947618e87ad26b15dbbfc4f99a4 100644 --- a/tmcd/tmcd.c +++ b/tmcd/tmcd.c @@ -11893,61 +11893,59 @@ static char *getgenisliverstatus( tmcdreq_t *reqp ) { MYSQL_RES *res; MYSQL_ROW row; - char buf[ 0x4000 ], *p; + char buf[ 0x4000 ], *p, *status; int first = 1; - res = mydb_query( "SELECT a.status, a.state, a.errorlog, l.publicid " - "FROM `geni-cm`.geni_aggregates AS a, " - "`geni-cm`.geni_slices AS l, " + res = mydb_query( "SELECT a.idx, a.status FROM " + "`geni-cm`.geni_aggregates AS a, " "`geni-cm`.geni_slivers AS s WHERE " "s.resource_uuid = '%s' AND " - "a.uuid = s.aggregate_uuid AND " - "a.slice_uuid = l.uuid", 4, reqp->nodeuuid ); + "a.uuid = s.aggregate_uuid", 2, reqp->nodeuuid ); if( !res || !mysql_num_rows( res ) ) { - error( "geni_slice_urn: %s: DB error getting aggregate!\n", + error( "geni_sliverstatus: %s: DB error getting aggregate!\n", reqp->nodeid ); return NULL; } row = mysql_fetch_row( res ); - p = buf + snprintf( buf, sizeof buf, "{'status':'%s','state':'%s'," - "'error':'%s','public_url':'" - TBBASE "/showslicepub.php?publicid=" - "%s','details':{", - row[ 0 ], row[ 1 ], row[ 2 ], row[ 3 ] ); + status = strcmp( row[ 1 ], "ready" ) && strcmp( row[ 1 ], "failed" ) ? + "unknown" : row[ 1 ]; + + p = buf + snprintf( buf, sizeof buf, "{'geni_urn':'urn:publicid:IDN+" + OURDOMAIN "+sliver+%s','geni_status':'%s'," + "'geni_resources':[", row[ 0 ], status ); mysql_free_result( res ); - res = mydb_query( "SELECT x.idx, x.status, x.state, x.resource_id, " - "x.errorlog FROM `geni-cm`.geni_slivers AS x, " + res = mydb_query( "SELECT x.idx, x.status, x.errorlog FROM " + "`geni-cm`.geni_slivers AS x, " "`geni-cm`.geni_slivers AS y WHERE " "x.aggregate_uuid = y.aggregate_uuid AND " - "y.resource_uuid = '%s'", 5, reqp->nodeuuid ); + "y.resource_uuid = '%s'", 3, reqp->nodeuuid ); if( !res || !mysql_num_rows( res ) ) { - error( "geni_slice_urn: %s: DB error getting sliver!\n", + error( "geni_sliverstatus: %s: DB error getting sliver!\n", reqp->nodeid ); return NULL; } while( ( row = mysql_fetch_row( res ) ) ) { - p += snprintf( p, buf + sizeof buf - p, "%s'urn:publicid:IDN+" - OURDOMAIN "+sliver+%s':{'status':" - "'%s','state':'%s','component_urn':'%s'," - "'error':'%s'}", first ? "" : ",", row[ 0 ], - row[ 1 ], row[ 2 ], row[ 3 ], row[ 4 ] ? - row[ 4 ] : "" ); + p += snprintf( p, buf + sizeof buf - p, "%s{'geni_urn':" + "'urn:publicid:IDN+" OURDOMAIN "+sliver+%s'," + "'geni_status':'%s','geni_error':'%s'}", + first ? "" : ",", row[ 0 ], row[ 1 ], + row[ 2 ] ? row[ 2 ] : "" ); first = 0; } mysql_free_result( res ); - geni_append( p, buf + sizeof buf, "}}" ); + geni_append( p, buf + sizeof buf, "]}" ); if( verbose ) - info( "%s: geni_slice_urn: %s", reqp->nodeid, buf ); + info( "%s: geni_sliverstatus: %s", reqp->nodeid, buf ); return strdup( buf ); }