<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} portal portal.api.simpledemo.onap.org
${sdc} sdc sdc.api.simpledemo.onap.org
${vid} vid vid.api.simpledemo.onap.org
${policy} policy policy.api.simpledemo.onap.org
${aai1} aai1 aai.api.simpledemo.onap.org

${robot} robot
${appc} appc
${mso}  so
${sdnc} sdnc
${openo} multi-service
${dcae_controller} dcae
${message_router} message-router
${clamp} clamp

${portal} ${prefix}-portal
${sdc} ${prefix}-sdc
${vid} ${prefix}-vid
${policy} ${prefix}-policy
${aai1} ${prefix}-aai1
${robot} ${prefix}-robot
${appc} ${prefix}-appc
${mso}  ${prefix}-so
${sdnc} ${prefix}-sdnc
${openo} ${prefix}-multi-service
${dcae_controller} ${prefix}-dcae
${message_router} ${prefix}-message-router
${clamp} ${prefix}-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://${robot}:88/logs/"> Robot Logs </a>

    <h3>Robot vm_properties.py for local testing</h3>
    <pre>
GLOBAL_INJECTED_ARTIFACTS_VERSION = "${GLOBAL_INJECTED_ARTIFACTS_VERSION}"
GLOBAL_INJECTED_GITLAB_PASSWORD = "password"
GLOBAL_INJECTED_GITLAB_USERNAME = "username"
GLOBAL_INJECTED_NETWORK = "${GLOBAL_INJECTED_NETWORK}"
GLOBAL_INJECTED_NEXUS_DOCKER_REPO = "${GLOBAL_INJECTED_NEXUS_DOCKER_REPO}"
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 = "${GLOBAL_INJECTED_OPENSTACK_TENANT_ID}"
GLOBAL_INJECTED_REGION = "${GLOBAL_INJECTED_REGION}"
GLOBAL_INJECTED_KEYSTONE = "${GLOBAL_INJECTED_KEYSTONE}"
GLOBAL_INJECTED_AAI1_IP_ADDR = "${aai1}"
GLOBAL_INJECTED_APPC_IP_ADDR = "${appc}"
GLOBAL_INJECTED_DCAE_IP_ADDR = "${dcae_controller}"
GLOBAL_INJECTED_SO_IP_ADDR = "${mso}"
GLOBAL_INJECTED_MR_IP_ADDR = "${message_router}"
GLOBAL_INJECTED_POLICY_IP_ADDR = "${policy}"
GLOBAL_INJECTED_PORTAL_IP_ADDR = "${portal}"
GLOBAL_INJECTED_SDC_IP_ADDR = "${sdc}"
GLOBAL_INJECTED_SDNC_IP_ADDR = "${sdnc}"
GLOBAL_INJECTED_VID_IP_ADDR = "${vid}"
GLOBAL_INJECTED_MSB_IP_ADDR = "${openo}"
GLOBAL_INJECTED_CLAMP_IP_ADDR = "${clamp}"
GLOBAL_INJECTED_VM_FLAVOR = "${GLOBAL_INJECTED_VM_FLAVOR}"
GLOBAL_INJECTED_VM_IMAGE_NAME = "${GLOBAL_INJECTED_VM_IMAGE_NAME}"
GLOBAL_INJECTED_PUBLIC_NET_ID = "${GLOBAL_INJECTED_PUBLIC_NET_ID}"

    </pre>

    <h2> SDN-C </h2>

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

    <a  href="http://${sdnc}:8843/signup"> To sign up </a> <p>
    <a  href="http://${sdnc}:8843/login"> Admin </a> <p>

    <h2> App-C </h2>

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

    <h2> Policy </h2>

  <b> Not working. </b> :
    <a href="http://healthcheck:zb!XztG34@${policy}:6969/healthcheck"> Healthcheck </a> <p>

    <h2> MSO </h2>

    <a href="http://admin:Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U@${mso}:9990/"> JBOSS GUI </a> with admin/Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U <p>

    <a href="http://${mso}:8080/camunda"> Camunda GUI </a> with admin/Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U <p>

    <h2> DCAE </h2>

    <h3> General GUIs </h3>
    <a href="http://console:ZjJkYjllMjljMTI2M2Iz@${dcae_controller}: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_controller}:9998/resources <p>

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

    <h3> DCAE internal Message Router </h3>

    <a href="http://${dcae_coll}:3904/topics"> Topics </a> <p>

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

    <a href="http://${dcae_coll}: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}: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}:3904/events/PUT_TOPIC_HERE/group1/C1?timeout=5000 <p>

    some important once listed below. <p>

    <ul>
      <li> <a href="http://${message_router}: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}:3904/events/PDPP-CONFIGURATION/monitor/0?timeout=10000"> PDPD-CONFIGURATION Topic  </a>
      <li> <a href="http://${message_router}:3904/events/POLICY-CL-MGT/monitor/0?timeout=10000"> POLICY-CL-MGT Topic -- Control loop operational policy </a>
      <li> <a href="http://${message_router}: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://${aai1}"> AAI1 </a><p>
      <a href="ssh://${policy}"> Policy </a><p>
      <a href="ssh://${sdc}"> SDC </a><p>
      <a href="ssh://${portal}"> Portal </a><p>
      <a href="ssh://${dcae_controller}"> DCAE </a><p>
      <a href="ssh://${appc}"> APP-C </a><p>
      <a href="ssh://${mso}"> MSO </a><p>
      <a href="ssh://${sdnc}"> SDN-C </a><p>
      <a href="ssh://${vid}"> VID </a><p>
      <a href="ssh://${message_router}"> Message Router </a><p>
      <a href="ssh://${robot}"> Robot Framework for testing </a><p>
      <a href="ssh://${onapdns}"> 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 openecompete_container bash <p>




</body></html>
