Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Code Block
languagepy

...

#////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8

...


# Name        :
# Author      : Avi
# Revision    : $Revision: #10 $
#
# Copyright 2009-2019 ECMWF.
# This software is licensed under the terms of the Apache Licence version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.

...


# In applying this licence, ECMWF does not waive the privileges and immunities

...


# granted to it by virtue of its status as an intergovernmental organisation

...


# nor does it submit to any jurisdiction.

...


#////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8

...


import ecflow

...


import argparse # for

...

 argument parsing 
import sys    

if __name__ == "__main__":

...



    DESC = """Will list variables for any

...

 node
              Usage:
                Example1: List all the server variables
                   ListVariables.py --host cca --port 4141 --path /

                Example2: List the variables for the given node
                   ListVariables.py --host cca --port 4141 --path /path/to/node
            """    
    PARSER = argparse.ArgumentParser(description=DESC,

...

  
                                     formatter_class=argparse.RawDescriptionHelpFormatter)

...


    PARSER.add_argument('--host', default="localhost",

...

   
                        help="The name of the host machine, defaults to 'localhost'")

...


    PARSER.add_argument('--port', default="3141",

...

   
                        help="The port on the host, defaults to 3141")

...


    PARSER.add_argument('--path', default="/",

...

   
                        help="The path to the node. i.e. /suite/family/task")

...


    ARGS = PARSER.parse_args()

...


    #print(ARGS)    

    # ===========================================================================

...


    CL = ecflow.Client(ARGS.host, ARGS.port)

...


    try:
        CL.ping()

...

 

        # get the incremental changes, and merge with defs stored on the Client 
        CL.sync_local()

...



        # check to see if definition exists in the server
        defs = CL.get_defs()

...


        if defs is None:
            print("No suites found, exiting..."

...

)
            sys.exit(0)

...

 

        # print(defs)
        if ARGS.path == "/":

...


            for var in defs.server_variables:

...

  print("edit " + var.name() + " '" + var.value() + "'"

...

)
            for var in defs.user_variables:

...

    print("edit " + var.name() + " '" + var.value() + "'"

...

)
        else:
            node = defs.find_abs_node(ARGS.path)

...


            if node == None:  
                print("No node found at path " + ARGS.path)
            else:
                for var in node.variables: print( "edit " + var.name() + " '" + var.value() + "'"

...

)

    except RuntimeError as ex:
        print("Error: " + str(ex)

...

)
        print "Check host and port number are correct."