Now that nsdb_resolve_fsn_s() returns a TTL, various tools are
altered to display it.

Signed-off-by: Chuck Lever <[email protected]>
---

 doc/man/nsdb-resolve-fsn.8   |    4 ++++
 src/nfsref/lookup.c          |   28 ++++++++++++++++++++++++++++
 src/nsdbc/nsdb-resolve-fsn.c |   40 ++++++++++++++++++++++++++++++++++++----
 3 files changed, 68 insertions(+), 4 deletions(-)

diff --git a/doc/man/nsdb-resolve-fsn.8 b/doc/man/nsdb-resolve-fsn.8
index aa8647c..45466aa 100644
--- a/doc/man/nsdb-resolve-fsn.8
+++ b/doc/man/nsdb-resolve-fsn.8
@@ -250,6 +250,10 @@ $ nsdb-resolve-fsn -e o=fedfs \\
 .sp
 For FSN UUID 8e246ddc-7b46-11e0-8252-000c297fd679
 .br
+    FSN TTL  600
+.sp
+------------------------------------------------------
+.br
 dn: fedfsFslUuid=323c5068-7c11-11e0-8d38-000c297fd679,
 .br
     fedfsFsnUuid=8e246ddc-7b46-11e0-8252-000c297fd679,o=fedfs
diff --git a/src/nfsref/lookup.c b/src/nfsref/lookup.c
index 2c34090..acd3769 100644
--- a/src/nfsref/lookup.c
+++ b/src/nfsref/lookup.c
@@ -267,8 +267,10 @@ nfsref_lookup_resolve_fsn(const char *fsn_uuid, nsdb_t 
host)
 {
        int status = EXIT_FAILURE;
        struct fedfs_fsl *fsls;
+       struct fedfs_fsn *fsn;
        unsigned int ldap_err;
        FedFsStatus retval;
+       int fsn_ttl;
 
        xlog(D_GENERAL, "%s: resolving FSN UUID %s with NSDB %s:%u",
                __func__, fsn_uuid, nsdb_hostname(host), nsdb_port(host));
@@ -276,11 +278,36 @@ nfsref_lookup_resolve_fsn(const char *fsn_uuid, nsdb_t 
host)
        if (nsdb_open_nsdb(host, NULL, NULL, &ldap_err) != FEDFS_OK)
                return status;
 
+       retval = nsdb_get_fsn_s(host, NULL, fsn_uuid, &fsn, &ldap_err);
+       switch (retval) {
+       case FEDFS_OK:
+               fsn_ttl = fsn->fn_fsnttl;
+               nsdb_free_fedfs_fsn(fsn);
+               break;
+       case FEDFS_ERR_NSDB_NOFSN:
+               xlog(L_ERROR, "%s: No FSN %s found",
+                       __func__, fsn_uuid);
+               goto out_close;
+       case FEDFS_ERR_NSDB_LDAP_VAL:
+               xlog(L_ERROR, "%s: NSDB operation failed with %s",
+                       __func__, ldap_err2string(ldap_err));
+               goto out_close;
+       default:
+               xlog(L_ERROR, "%s: Failed to retrieve FSN %s: %s",
+                       __func__, fsn_uuid, nsdb_display_fedfsstatus(status));
+               goto out_close;
+       }
+
        retval = nsdb_resolve_fsn_s(host, NULL, fsn_uuid, &fsls, &ldap_err);
        switch (retval) {
        case FEDFS_OK:
+               printf("fedfsFsnUuid:\t%s\n", fsn_uuid);
+               printf("NSDB:\t\t%s:%u\n", nsdb_hostname(host), 
nsdb_port(host));
+               printf("fedfsFsnTTL:\t%d\n", fsn_ttl);
+
                nfsref_lookup_display_fedfs_fsls(fsls);
                nsdb_free_fedfs_fsls(fsls);
+
                status = EXIT_SUCCESS;
                break;
        case FEDFS_ERR_NSDB_NOFSL:
@@ -300,6 +327,7 @@ nfsref_lookup_resolve_fsn(const char *fsn_uuid, nsdb_t host)
                        __func__, fsn_uuid, nsdb_display_fedfsstatus(status));
        }
 
+out_close:
        nsdb_close_nsdb(host);
        return status;
 }
diff --git a/src/nsdbc/nsdb-resolve-fsn.c b/src/nsdbc/nsdb-resolve-fsn.c
index aead4f7..3cebeab 100644
--- a/src/nsdbc/nsdb-resolve-fsn.c
+++ b/src/nsdbc/nsdb-resolve-fsn.c
@@ -147,6 +147,7 @@ nsdb_resolve_fsn_display_fsl(struct fedfs_fsl *fsl)
 {
        int i;
 
+       printf("------------------------------------------------------\n");
        printf("dn: %s\n\n", fsl->fl_dn);
 
        printf(" FSN UUID:\t\t%s\n", fsl->fl_fsnuuid);
@@ -197,11 +198,12 @@ main(int argc, char **argv)
        char *progname, *nsdbname;
        unsigned short nsdbport;
        struct fedfs_fsl *fsls;
+       struct fedfs_fsn *fsn;
        unsigned int ldap_err;
        char *nce, *fsn_uuid;
        FedFsStatus retval;
+       int fsn_ttl, arg;
        nsdb_t host;
-       int arg;
 
        (void)umask(S_IRWXO);
 
@@ -309,10 +311,38 @@ main(int argc, char **argv)
                goto out_free;
        }
 
+       retval = nsdb_get_fsn_s(host, nce, fsn_uuid, &fsn, &ldap_err);
+       switch (retval) {
+       case FEDFS_OK:
+               fsn_ttl = fsn->fn_fsnttl;
+               nsdb_free_fedfs_fsn(fsn);
+               break;
+       case FEDFS_ERR_NSDB_NONCE:
+               if (nce == NULL)
+                       fprintf(stderr, "NSDB %s:%u has no NCE\n",
+                               nsdbname, nsdbport);
+               else
+                       fprintf(stderr, "NCE %s does not exist\n", nce);
+               goto out_close;
+       case FEDFS_ERR_NSDB_NOFSN:
+               fprintf(stderr, "Failed to find FSN %s\n", fsn_uuid);
+               goto out_close;
+       case FEDFS_ERR_NSDB_LDAP_VAL:
+               fprintf(stderr, "NSDB LDAP error: %s\n",
+                       ldap_err2string(ldap_err));
+               goto out_close;
+       default:
+               fprintf(stderr, "FedFsStatus code "
+                       "while retrieving FSN UUID %s: %s\n",
+                       fsn_uuid, nsdb_display_fedfsstatus(retval));
+               goto out_close;
+       }
+
        retval = nsdb_resolve_fsn_s(host, nce, fsn_uuid, &fsls, &ldap_err);
        switch (retval) {
        case FEDFS_OK:
-               printf("For FSN UUID %s:\n\n", fsn_uuid);
+               printf("For FSN UUID: %s\n", fsn_uuid);
+               printf("    FSN TTL: %d\n\n", fsn_ttl);
                nsdb_resolve_fsn_display_fsls(fsls);
                nsdb_free_fedfs_fsls(fsls);
                break;
@@ -324,8 +354,9 @@ main(int argc, char **argv)
                        fprintf(stderr, "NCE %s does not exist\n", nce);
                break;
        case FEDFS_ERR_NSDB_NOFSL:
-               fprintf(stderr, "Failed to find FSL entries for FSN %s\n",
-                       fsn_uuid);
+               printf("For FSN UUID: %s\n", fsn_uuid);
+               printf("    FSN TTL: %d\n", fsn_ttl);
+               printf("    No FSL entries found\n");
                break;
        case FEDFS_ERR_NSDB_NOFSN:
                fprintf(stderr, "Failed to find FSN %s\n", fsn_uuid);
@@ -340,6 +371,7 @@ main(int argc, char **argv)
                        fsn_uuid, nsdb_display_fedfsstatus(retval));
        }
 
+out_close:
        nsdb_close_nsdb(host);
 
 out_free:


_______________________________________________
fedfs-utils-devel mailing list
[email protected]
https://oss.oracle.com/mailman/listinfo/fedfs-utils-devel

Reply via email to