How to create a Mesos Team Master programmatically

Issue

  • How to create a Mesos Team Master programmatically.

Environment

Resolution

Create Using Groovy

The easiest approach would be by using a Groovy script.

See createTeamMasterMesos.groovy. This script can be modified as needed.

If you need access to the source code then please see Custom Plugins: APIs and Javadocs of CloudBees Jenkins Enterprise plugins

The classes used in the provided script are coming from the operations-center-server plugin.

You can find your version of the plugin by looking at the Plugin Manager on the CJOC instance and searching for operations-center-server under the Installed tab.

Create via the Script Console

You can execute the groovy script using the Script Console under Managed Jenkins > Script Console.

Create via the Jenkins CLI

You can execute a groovy script via the groovy command and passing the script to the standard input:

java -jar jenkins-cli.jar \
    -auth $USER:$TOKEN \
    -s $CJOC_URL/ \
    groovy = < createManagedMasterMesos.groovy

Create via the REST API

You can execute a groovy script via the /scriptText endpoint and pass the script via a bash command:

curl -v -XPOST \
    -u $USER:$TOKEN \
    --data-urlencode "script=$(<./createManagedMasterMesos.groovy)" \
    "$CJOC_URL/scriptText"

See Script Console - Remote Access for more details.

Create remotely using config files

You can also create a Team Master remotely, by either using the REST API, or by using the Jenkins CLI to create the job.

This approach is a bit cumbersome, as some fields are auto-generated (id, idName, grantId, identity, encodedName) and must be unique. This means that several calls must be made to adjust a master configuration.

You would need to do the following:

  • Create the Team Master
  • Get the Managed Master config file (the config.xml)
  • Update the config file (preserve auto-generated fields)
  • Post the updated config file

Create via the Jenkins CLI

You need to create a config.json to pass to the teams command.

The following is an example of a JSON configuration for a team master:

{
    "data": {
        "displayName": "Test from CLI",
        "icon": {
            "color": "#dd6669",
            "name": "hexagons"
        },
        "members": [
            {
                "id": "admin",
                "roles": [
                    "TEAM_ADMIN"
                ]
            }
        ],
        "name": "test-from-cli",
        "provisioningRecipe": "basic"
    },
    "version": "1"
}

And you can create this Team Master with the following command:

java -jar jenkins-cli.jar \
    -auth $USER:$TOKEN \
    -s $CJOC_URL/ \
    teams "test-from-cli" --put < config.json

Create via the REST API

You need to create a config.json to pass to the /blue/rest/cjoc/teams/ endpoint.

The following is an example of a JSON description for a team master:

{
    "displayName": "Test From Rest Api",
    "icon": {
        "color": "#dd6669",
        "name": "hexagons"
    },
    "members": [
        {
            "id": "allan",
            "role": "TEAM_ADMIN"
        }
    ],
    "name": "test-from-restapi",
    "recipe": "basic"
}

And you can create this team master with the following command:

curl -v -XPOST \
    -u $USER:$TOKEN \
    -H "Content-Type: application/json" \
    --data-binary @config.json \
    "$CJOC_URL/blue/rest/cjoc/teams/"

Have more questions?

0 Comments

Please sign in to leave a comment.