{
	"self": {
    "version": "1.0.0",
    "name": "dcae-analytics-holmes",
    "description": "A root cause analysis component based on Drools",
    "component_type": "docker"
  },
	"streams": {
		"subscribes": [
		      {
		        "route": "eventListener/v1",	// Where and how to get the url for the DMaaP topic? When will that be provided?
                								// [TC] Documentation on DMaaP is coming very shortly. This will be cleared up. "type" will be "message_router" instead of "http"

		        "format": "VES_specification",	
		        "type": "http",
		        "version": "4.27.2"
		      },
		      {
		         "route": "eventListener/v1/eventBatch",
		         "format": "VES_specification",
		         "type": "http",
		         "version": "4.27.2"
		      }

		],
	    "publishes": [
	        {
	          "format": "policy.control.loop.event.message",	// Can we use the format defined in the JSON files of Policy directly? Or do we have to replicate the definition into our own JSON file?              
              													// [TC] I think we need to make a data format for this policy event.message. Contact Ralph Knag (in research) for help on this. YOu only have to do it once and everyone can use it. 



	          "version": "xxx.xxx.xxx",
	          "type": "message router",
	          "config_key": "sec_measurement_unsecure"	// Where and how to get these config keys?
              											// [TC] You pick this. In your code, you should look for this value. This value becomes a key whose value will hold valuable information.
              											// That is, this will lead to your config looking like:
              											// {
              											//     ...
              											//      "sec_measurement_unsecure" : "IMPORTANT STUFF!!!",
              											//      ...
              											// }

	        },
	        {
	          "format": "policy.control.loop.event.message",	// Can we use the format defined in the JSON files of Policy directly? Or do we have to replicate the definition into our own JSON file?
              													// [TC] See above. 

	          "version": "xxx.xxx.xxx",
	          "type": "message router",
	          "config_key": "sec_measurement"
	        }
	    ]

	},
	"services": {
	    "calls": [ 	// Is this the field about the information of services to be called by Holmes?
        			// [TC] Yes this is the other DCAE HTTP services that holmes depends on. If you are calling static non-DCAE services they do not need to be documented here. Only connections to other DCAE containers needs to be documented here. 
	    			// According to mentioned in the last meetings, Holmes has to poll an API periodically to get the new CLAMP template. Should it be configured here? How is it configured?
            		// [TC] Is this API a static external thing?

	    	{
	    		"request": {
	                "format": "", 
	                "version": ""
	              },
	              "response": {
	                "format": "",
	                "version": ""
	              },
	              "config_key": ""	// To my understanding, this should be the url (like the "route" in the "provides" list). Why is it configured in the form of a "config_key"?
                  					// [TC] Config key will hold the URL of the service you are trying to call. Assuming config_key : foo, you will get:
                  {
                      ...,
                      "foo" : [IP:Port(thing you are trying to call)],
                      ...,
                    }
	    	}
	    ],
	    "provides": [ 	// Is this the field about the information of services to be provided by Holmes?
            			// [TC] Yes if Holmes provides any HTTP APIs to other components they are specified here. 
	    ]
  	},
  	"parameters": [	// Is this filed intended for the configuration of the micro-service itself, which will be translated and provided as a yml file for the instantiation of the micro-service. If not, how can we set the parameters for micro-services?
        			// [TC] This will be used to generate the initial configuration of your component, and generate the policy model. 
        The intial configuration (value in each section is the default) can be overridden by both the DCAE designer and by policy. 

  		{
            "name": "holmes.mysql.url",
            "value": "http://ip:port",
            "description": "The url of MySQL"
        },
        {
        	"name": "consul.service.registration.endpoint",
        	"value": "http://ip:port",
        	"description": "The endpoint where micro-services of DCAE register themselves"
        },
        // Are these two files listed below provided by DCAE? 
        // What do they look like? 
        // Can we use them for authentication as well? Or do we have to define that in our own file?
        // [TC] I have no idea what this question means. 

        {
	        "name": "collector.keystore.file.location",
	        "value": "/opt/app/dcae-certificate/keystore.jks",
	        "description": "fs location of keystore in vm"
        },
        {
          	"name": "collector.keystore.passwordfile",
          	"value": "/opt/app/dcae-certificate/.password",
          	"description": "location of keystore password file in vm"
        }		
  	],
  	"auxilary": {
        "healthcheck": {
            "type": "http",
            "interval": "15s",
            "timeout": "1s",
            "endpoint": "/"		//TODO to specify an endpoint for the healthcheck
        }
    },
    "artifacts": [{
        "type": "docker image",
        "uri": ""	//TODO to specify the uri for the Holmes docker image
    }]
}


controlLoop:

  version: 1.0

  controlLoopName: ControlLoop-VOLTE-2179b738-fd36-4843-a71a-a8c24c70c55b

rules:

  - contents: "This is the templte of the rule which contains some parameters such as ${param1} and ${param2}, etc. in it."

    param1: "value1"

    param2: "value2"

  - contents: "This is another rule of which the parametes are ${param3}, ${param4} and ${param5} respectively."

    param3: "value3"

    param4: "value4"

    param5: "value5"

---

controlLoop:

  version: 1.0

  controlLoopName: ControlLoop-VOLTE-2179b738-fd36-4843-a71a-a8c24c70c55b

rules:

  - "This is a rule which has no placeholders for . All values are specified explicitly using the Cockpit of CLAMP."

  - "This is another rule which has no placeholders for variables. All values are specified explicitly using the Cockpit of CLAMP."


rule-template.yamlholmes-componentspec[3].json

  • No labels