CSV import examples
To free up rack space for other applications, some hosts have been moved from the Campus data centre to the newly acquired Firehouse data centre. Discovery and Reasoning have handled the IP address and subnet changes, but the host nodes are still linked to the wrong location.
The following is the CSV file (
firehouse_move.csv) to process:
We process the CSV file with the following command line:
The script reads the
firehouse_move.csv line by line. It uses the first line to name the columns. The first column is called
name, which does not begin with a # character, so it is treated as an attribute name. The second column does begin with a # character, so it is treated as a specification for some relationships.
No explicit key has been specified, so the first (and in this case, only) attribute name is taken to be the key.
Now the script reads the second line. The first field,
egon, is in the
name column which was selected as the key earlier. So the script uses the search service to find a node of kind
Host (from the
--kind command line option) that has a
name attribute equal to
egon. It finds exactly one node matching that search. If it had not found that node, it would have been created. If it had found multiple nodes, an error would have been reported, processing would continue with the next line, and NO nodes would have been updated.
Having found the node, it updates it using the other fields on the row. Were there any other attribute columns in the the file, the script would have used these to update the node before looking at the relationships.
The file has only one relationship column. The name is
#ElementInLocation:Location:Location:Location.name. The script searches for a Location node with a
name attribute equal
Firehouse, this row's value for the column. Having found the Location node, the script creates a
HostLocation relationship to it with the Host node playing the
HostInLocation role and the Location playing the
The script then processes the second and third data rows, updating the
peter nodes with the new location.