<html><head>
    <title>Quicklinks To Running Instances</title>
  </head>

  <body>
    <h1>The Portal</h1>

    The portal is the entry point to design/provision/operate ONAP. From there you can get to SDC, VID and Policy portals.

    The portal can be found at:<p>

    <a href="http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/login.htm">Portal</a>
    <p>
    One requires role based user names and passwords to receive the full portal functionality. In the demo setup we pre provisioned:
    <p>
    <ul>
      <li> jh0003 Admin </li>
      <li> cs0008 Designer </li>
      <li> jm0007 Tester </li>
      <li> op0001 Operator </li>
      <li> gv0001 Governance </li>
      <li> pm0001 Product Manager </li>
      <li> ps0001 Product Strategy </li>
    </ul>
    <p>
    the password for all of them is: demo123456!

    <h3>/etc/hosts or C:\Windows\system32\drivers\etc\hosts</h>
	<pre>

portal-app.onap portal portal.api.simpledemo.onap.org
N/A sdc sdc.api.simpledemo.onap.org
vid.onap vid vid.api.simpledemo.onap.org
pdp.onap policy policy.api.simpledemo.onap.org
aai.onap aai1 aai.api.simpledemo.onap.org

10.0.10.1 robot
appc.onap appc
so.onap  so
sdnc.onap sdnc
msb-iag.onap multi-service
dcae-healthcheck.onap dcae
message-router.onap message-router
clamp.onap clamp

portal-app.onap vm-portal
N/A vm-sdc
vid.onap vm-vid
pdp.onap vm-policy
aai.onap vm-aai1
10.0.10.1 vm-robot
appc.onap vm-appc
so.onap  vm-so
sdnc.onap vm-sdnc
msb-iag.onap vm-multi-service
dcae-healthcheck.onap vm-dcae
message-router.onap vm-message-router
clamp.onap vm-clamp

	</pre>

    <h1> The Reality </h1>

    As everything should go through the portal there are many subsystems which have there own GUI or API which come in very handy when debugging things. Here the most important once.

    <h2> Testing </h2>

	<h3>Robot Logs</h3>

    <a href="http://10.0.10.1:88/logs/"> Robot Logs </a>

    <h3>Robot vm_properties.py for local testing</h3>
    <pre>
GLOBAL_INJECTED_ARTIFACTS_VERSION = "1.3.0-SNAPSHOT"
GLOBAL_INJECTED_GITLAB_PASSWORD = "password"
GLOBAL_INJECTED_GITLAB_USERNAME = "username"
GLOBAL_INJECTED_NETWORK = "9189c64c-f148-4c73-b6d6-89f8efe9d426"
GLOBAL_INJECTED_NEXUS_DOCKER_REPO = "nexus3.onap.org:10001"
GLOBAL_INJECTED_NEXUS_PASSWORD = "password"
GLOBAL_INJECTED_NEXUS_USERNAME = "docker"
GLOBAL_INJECTED_OPENSTACK_API_KEY = "openstackapikey"
GLOBAL_INJECTED_OPENSTACK_PASSWORD = "openstackpass"
GLOBAL_INJECTED_OPENSTACK_USERNAME = "openstackuser"
GLOBAL_INJECTED_OPENSTACK_TENANT_ID = "d570c718cbc545029f40e50b75eb13df"
GLOBAL_INJECTED_REGION = "RegionOne"
GLOBAL_INJECTED_KEYSTONE = "http://10.12.25.2:5000"
GLOBAL_INJECTED_AAI_IP_ADDR = "aai.onap"
GLOBAL_INJECTED_APPC_IP_ADDR = "appc.onap"
GLOBAL_INJECTED_DCAE_IP_ADDR = "dcae-healthcheck.onap"
GLOBAL_INJECTED_SO_IP_ADDR = "so.onap"
GLOBAL_INJECTED_MR_IP_ADDR = "message-router.onap"
GLOBAL_INJECTED_BC_IP_ADDR = "dmaap-bc.onap"
GLOBAL_INJECTED_POLICY_IP_ADDR = "pdp.onap"
GLOBAL_INJECTED_PORTAL_IP_ADDR = "portal-app.onap"
GLOBAL_INJECTED_SDC_IP_ADDR = "N/A"
GLOBAL_INJECTED_SDNC_IP_ADDR = "sdnc.onap"
GLOBAL_INJECTED_VID_IP_ADDR = "vid.onap"
GLOBAL_INJECTED_MSB_IP_ADDR = "msb-iag.onap"
GLOBAL_INJECTED_CLAMP_IP_ADDR = "clamp.onap"
GLOBAL_INJECTED_VM_FLAVOR = "m1.medium"
GLOBAL_INJECTED_VM_IMAGE_NAME = "ubuntu-14-04-cloud-amd64"
GLOBAL_INJECTED_PUBLIC_NET_ID = "971040b2-7059-49dc-b220-4fab50cb2ad4"

    </pre>

    <h2> SDN-C </h2>

    <a  href="http://admin:Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U@sdnc.onap:8282/apidoc/explorer/index.html"> Controller </a>  with admin/Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U <p>

    <a  href="http://sdnc.onap:8843/signup"> To sign up </a> <p>
    <a  href="http://sdnc.onap:8843/login"> Admin </a> <p>

    <h2> App-C </h2>

    <a  href="http://admin:Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U@appc.onap:8282/apidoc/explorer/index.html"> Controller </a>  with admin/Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U <p>

    <h2> Policy </h2>

  <b> Not working. </b> :
    <a href="http://healthcheck:zb!XztG34@pdp.onap:6969/healthcheck"> Healthcheck </a> <p>

    <h2> SO </h2>

    <a href="http://admin:Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U@so.onap:9990/"> JBOSS GUI </a> with admin/Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U <p>

    <a href="http://so.onap:8080/camunda"> Camunda GUI </a> with admin/Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U <p>

    <h2> DCAE </h2>

    <h3> General GUIs </h3>
    <a href="http://console:ZjJkYjllMjljMTI2M2Iz@dcae-healthcheck.onap:9998/resources"> DCAE Controller </a>
    This might show up empty in a web browser as no content type is set in the response. If that's the case use curl: <p>

     curl http://console:ZjJkYjllMjljMTI2M2Iz@dcae-healthcheck.onap:9998/resources <p>

    <a href="http://10.0.4.105:9999/ns/TCA/apps/dcae-tca/programs/flows/TCAVESCollectorFlow/runs"> CDAP GUI </a> <p>

    <h3> DCAE internal Message Router </h3>

    <a href="http://10.0.4.102:3904/topics"> Topics </a> <p>

    <a href="http://10.0.4.102:3904/events/unauthenticated.SEC_MEASUREMENT_OUTPUT/monitor/0?timeout=10000"> MR topic for collector to TCA </a> <p>

    <a href="http://10.0.4.102:3904/events/unauthenticated.TCA_EVENT_OUTPUT/monitor/0?timeout=10000"> MR topic for TCA alert to Policy </a> <p>

    <h2> Message Router used between core components </h2>

    <a href="http://message-router.onap:3904/topics"> List of Topics </a> <p>

    <h3> Topics of Interest </h3>

    For topics without authentication one can monitor the traffic on a topic with: <p>

    http://message-router.onap:3904/events/PUT_TOPIC_HERE/group1/C1?timeout=5000 <p>

    some important once listed below. <p>

    <ul>
      <li> <a href="http://message-router.onap:3904/events/APPC-CL/monitor/0?timeout=10000"> APPC-CL Topic -- Policy Publishes Requests and APP-C publishes response </a>
      <li> <a href="http://message-router.onap:3904/events/PDPP-CONFIGURATION/monitor/0?timeout=10000"> PDPD-CONFIGURATION Topic  </a>
      <li> <a href="http://message-router.onap:3904/events/POLICY-CL-MGT/monitor/0?timeout=10000"> POLICY-CL-MGT Topic -- Control loop operational policy </a>
      <li> <a href="http://message-router.onap:3904/events/DCAE-CL-EVENT/monitor/0?timeout=10000"> DCAE-CL-EVENT Topic -- Provides the Analytics output from DCAE</a>

    </ul>

    <h1> SSH to VM </h1>

    The following links will open a shell and ssh to the various running VMs (at least on a Mac). It assumes that the .ssh/config file has been set appropriately and /etc/hosts has been updated to the running instance.<p>

      <a href="ssh://aai.onap"> AAI1 </a><p>
      <a href="ssh://pdp.onap"> Policy </a><p>
      <a href="ssh://N/A"> SDC </a><p>
      <a href="ssh://portal-app.onap"> Portal </a><p>
      <a href="ssh://dcae-healthcheck.onap"> DCAE </a><p>
      <a href="ssh://appc.onap"> APP-C </a><p>
      <a href="ssh://so.onap"> SO </a><p>
      <a href="ssh://sdnc.onap"> SDN-C </a><p>
      <a href="ssh://vid.onap"> VID </a><p>
      <a href="ssh://message-router.onap"> Message Router </a><p>
      <a href="ssh://10.0.10.1"> Robot Framework for testing </a><p>
      <a href="ssh://10.0.0.1"> DNS server for management network </a><p>

        Inside the VM you can list the docker containers by typing: <p>
        docker ps <p>
        and can get a shell prompt by executing the bash command.
        For example: <p> docker exec -it onapete_container bash <p>




</body></html>
