views:

15

answers:

0

Hi,

I need to create TQL queries to query out sets of data from the UCMDB. I am having 2 problems: 1. How can I find relationships which exists between CIs ( i do not have administrative privileges so need to do it in code somehow) I need this to get required data.

  1. I have created the following query: But I keep getting the IP property value as null. I checked that IP has an attribute called ip_address. Code:

import com.hp.ucmdb.api.types.TopologyRelation;

public class Main {

public static void main(String[] args)throws Exception {
 final String HOST_NAME = "192.168.159.132";
 final int PORT = 8080; 

 UcmdbServiceProvider provider = UcmdbServiceFactory.getServiceProvider(HOST_NAME, PORT);

 final String USERNAME = "username";

 final String PASSWORD = "password";

 Credentials credentials = provider.createCredentials(USERNAME, PASSWORD);

 ClientContext clientContext = provider.createClientContext("Test");
 UcmdbService ucmdbService = provider.connect(credentials, clientContext);

 TopologyQueryService queryService = ucmdbService.getTopologyQueryService();

 Topology topology = queryService.executeNamedQuery("Host IP");

 Collection<TopologyCI> hosts = topology.getAllCIs(); 

 for (TopologyCI host : hosts) { 


  for (TopologyRelation relation : host.getOutgoingRelations()) { 
   System.out.print("Host " + host.getPropertyValue("display_label")); 
   System.out.println (" has IP " + relation.getEnd2CI().getPropertyValue("ip_address")); 

  } 
 }

}

In the above query output: I get the host names with IP = null

I have a sample query in JYthon which I am unable to figure out: Its for the above code only.

Attaching it for anyone who can understand it. import sys

UCMDB_API="c:/ucmdb/api/ucmdb-api.jar"

sys.path.append(UCMDB_API)

from com.hp.ucmdb.api import *

0) Connection settings

HOST_NAME="192.168.159.132" PORT=8080

USERNAME="username" PASSWORD="password"

1) Get a Service Provider from the UcmdbServiceFactory

provider = UcmdbServiceFactory.getServiceProvider(HOST_NAME, PORT)

2) Setup credentials to log in

credentials = provider.createCredentials(USERNAME, PASSWORD)

3) Create a client context

clientContext = provider.createClientContext("TESTING")

4) Connect and retrieve a UcmdbService object

ucmdbService = provider.connect(credentials, clientContext)

5) Get the TopologyQueryService from the UcmdbService

queryService = ucmdbService.getTopologyQueryService()

======= Everything After this is specific to the query =======

6) Execute a Named Query and get the Topology

topology = queryService.executeNamedQuery('Host IP')

7) Get the hosts

hosts = topology.getAllCIs()

8) Print the hosts and IPs

host_ip = {}

for host in hosts: host_name = host.getPropertyValue("display_label") if host_name in host_ip.keys(): ips = host_ip[host_name] else: ips = {} host_ip[host_name] = ips for relation in host.getOutgoingRelations(): ip_address = relation.getEnd2CI().getPropertyValue("display_label") if ip_address in ips.keys(): pass else: ips[ip_address] = '' print "%s , %s" % (host_name, ip_address)

Please help.

I am unable to understand how to go about this further.

Thank you.