# Component template

Components are defined using a YAML manifest with the following structure:

```yaml
name: branin
description: The branin analytical function
componentType: function_branin
properties:
  hostname: function-server
```

and properties:

| Field           | Type   | Value restrictions                                                                                                                                                                                                                             | Is required | Default value   | Description                                                                                                                                                                 |
| --------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`          | string | <p>should match the following regexp:</p><p><code>^\[a-zA-Z]\[a-zA-Z0-9\_]\*$</code></p><p>that is only letters, number and underscores, no initial number of underscore</p><p>Notice: this should not match the name of another component</p> | TRUE        | <p><br><br></p> | The name of the component.                                                                                                                                                  |
| `description`   | string |                                                                                                                                                                                                                                                | TRUE        | <p><br><br></p> | A description to characterize the component.                                                                                                                                |
| `componentType` | string | notice: this should match the name of an existing component-type                                                                                                                                                                               | TRUE        | <p><br><br></p> | The name of the component-type that defines the type of the component.                                                                                                      |
| `properties`    | object |                                                                                                                                                                                                                                                | FALSE       | <p><br><br></p> | General custom properties of the component. These properties can be defined freely and usually have the purpose to expose information useful for configuring the component. |

### Examples

Example of a component for OpenJDK11:

```yaml
name: JVM_1
description: The first jvm of the system
componentType: java-openjdk-11
properties:
  hostname: ycsb1.dev.akamas.io
  username: ubuntu
```

Example of a component for the Linux operating system:

```yaml
name: os_1
description: The operating system of team 1
componentType: Ubuntu-20.04
properties:
  hostname: ycsb1.dev.akamas.io
  username: ubuntu
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.akamas.io/akamas-docs/3.4.0/reference/construct-templates/component-template.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
