Implementieren von Anwendungen mithilfe von REST-Befehlen: Beispiel

Im folgenden Beispiel wird die Verwendung der REST-Befehle zur Implementierung einer Anwendung beschrieben.

Vorbereitende Schritte

Dieses Beispiel folgt den Schritten im Lernprogramm Eine einfache helloWorld-Bereitstellung. Prüfen Sie das Lernprogramm, bevor Sie diesem Beispiel zu folgen versuchen. Konfigurieren Sie Ihr System wie unter Konfigurieren des helloWorld-Lernprogrammsystems beschrieben. Ersetzen Sie ggf. die Werte für Ihren Servernamen, Benutzernamen und das Kennwort.

Informationen zu diesem Vorgang

In diesem Beispiel wird die Verwendung des Linux-Programms curl zur Ausführung von REST-Befehlen beschrieben. Sie können viele unterschiedliche Programme oder Programmiersprachen zur Ausführung von REST-Befehlen verwenden. Der Code führt die Authentifizierung mit dem Server unter Angabe des Benutzernamens und Kennworts in der Befehlszeile durch. Weitere Informationen zur Ausführung von REST-Befehlen und zur Authentifizierung finden Sie unter Ausführen von REST-Befehlen und Authentifizierung für REST-Befehle.

Der in diesem Beispiel verwendete Server lautet server.example.com. Der Benutzer ist nsmith und das Kennwort ist passwd.

Vorgehensweise

  1. Erstellen und importieren Sie eine Komponente.
    1. Erstellen Sie die Komponente mit dem PUT-Befehl createComponent.
      curl -k -u nsmith:passwd
        https://server.example.com:8443/cli/component/create
        -X PUT -d @newComponent.json
      Anmerkung: Sie müssen Befehle in einer Zeile eingeben. Befehle werden nur zur besseren Lesbarkeit auf mehrere Zeilen aufgeteilt.
      Die folgende JSON-Datei stellt die Komponente dar:
      {
        "name": "helloWorld",
        "description": "",
        "importAutomatically": false,
        "useVfs": true,
        "sourceConfigPlugin": "File System (Versioned)",
        "defaultVersionType": "FULL",
        "properties": {
          "FileSystemVersionedComponentProperties/basePath": "/home/user1/artifacts/shared/helloWorld"
        }
      }
      Der Befehl gibt ein Ergebnis zurück, das den folgenden JSON-Informationen ähnelt:
      {
        "id":"cf355787-a772-4533-be45-3e169e9da6eb",
        "securityResourceId":"23504603-ab8c-4740-bc2d-d18c08f790e9",
        "name":"helloWorld",
        "description":"",
        "created":1396878409753,
        "importAutomatically":false,
        "useVfs":true,
        "active":true,
        "integrationFailed":false,
        "deleted":false,
        "defaultVersionType":"FULL",
        "cleanupDaysToKeep":0,
        "cleanupCountToKeep":0,
        "tags":[],
        "user":"nsmith"
      }
    2. Legen Sie eine Komponenteneigenschaft mit dem PUT-Befehl setComponentProperty fest.
      curl -k -u nsmith:passwd
        "https://server.example.com:8443/cli/
        component/propValue?component=helloWorld&name=helloHome&value=c%3A%5ChelloWorld" -X PUT
      Der Befehl gibt ein Ergebnis zurück, das den folgenden JSON-Informationen ähnelt:
      {
        "id":"194b6e0c-3f30-4d9a-b3cf-dd61dd1a7328",
        "name":"helloHome",
        "value":"c:\\helloWorld",
        "secure":false
      }
    3. Importieren Sie die Komponentenversion mit dem PUT-Befehl importVersions.
      curl -k -u nsmith:passwd
        https://server.example.com:8443/cli/component/integrate
        -X PUT -d {"component":"helloWorld"}
      Der Befehl gibt das folgende Ergebnis zurück:
      {}
  2. Erstellen Sie einen Komponentenprozess mit dem PUT-Befehl createComponentProcess.
    curl -k -u nsmith:passwd
      https://server.example.com:8443/cli/componentProcess/create
      -X PUT -d @componentProcess.json
    Die folgende JSON-Datei stellt diesen Komponentenprozess dar:
    {
      "active": "true",
      "component": "helloWorld",
      "configActionType": "ADD",
      "defaultWorkingDir": "${p:resource/work.dir}/${p:component.name}",
      "description": "",
      "inventoryActionType": "ADD",
      "name": "helloProcess",
      "propDefs": [],
      "rootActivity": {
        "children": [
          {
            "allowFailure": false,
            "children": [],
            "commandName": "Delete Files and Directories",
            "impersonationUseSudo": false,
            "name": "Clean work space",
            "pluginName": "File Utils",
            "pluginVersion": 31,
            "properties":{
                "baseDir":".",
                "includes":"*",
                "excludes":"",
                "followSymlinks":"false",
                "caseSensitive":"true"
             },
            "showHidden": false,
            "type": "plugin",
            "useImpersonation": false
          },
          {
            "allowFailure": false,
            "children": [],
            "commandName": "Download Artifacts",
            "impersonationUseSudo": false,
            "name": "Download Artifacts",
            "pluginName": "IBM UrbanCode Deploy Versioned File Storage",
            "pluginVersion": 18,
            "properties":{
               "directoryOffset":".",
               "artifactSetBaseDir":"",
               "fileIncludePatterns":"**/*",
               "fileExcludePatterns":"",
               "syncMode":"true",
               "fullVerification":"true",
               "setFileExecuteBits":"false",
               "verifyFileIntegrity":"false",
               "repositoryUrl":"${p:server.url}/vfs",
               "repositoryId":"${p:component/code_station/repository}",
               "label":"${p:version.name}",
               "serverUrl":"${p:server.url}",
               "compId":"${p:component.id}",
               "resId":"${p:resource.id}",
               "charset":""
            },
            "showHidden": false,
            "type": "plugin",
            "useImpersonation": false
          },
          {
             "allowFailure":false,
             "children": [],
             "commandName":"Create .zip File",
             "impersonationUseSudo":false,
             "name":"Compress artifacts",
             "pluginName":"File Utils",
             "pluginVersion":31,
             "properties":{
                "zipName":"helloWorld.zip",
                "baseDir":".",
                "includes":"*",
                "excludes":"",
                "update":"false",
                "followSymlinks":"false",
                "caseSensitive":"true"
             },
            "showHidden": false,
            "type": "plugin",
            "useImpersonation": false
          },
          {
             "allowFailure":false,
             "children": [],
             "commandName":"Move Directory",
             "impersonationUseSudo":false,
             "name":"Deploy artifacts",
             "pluginName":"File Utils",
             "pluginVersion":31,
             "properties":{
                "sourceDir":".",
                "destDir":"${p:helloHome}/target",
                "includes":"*.zip",
                "excludes":"",
                "mapperRules":""
             },
            "showHidden": false,
            "type": "plugin",
            "useImpersonation": false
          },
          {
            "children": [],
            "name": "FINISH",
            "type": "finish"
          }
        ],
        "edges": [
          {
            "to": "Clean work space",
            "type": "ALWAYS",
            "value": ""
          },
          {
            "from": "Clean work space",
            "to": "Download Artifacts",
            "type": "ALWAYS",
            "value": ""
          },
          {
            "from": "Download Artifacts",
            "to": "Compress artifacts",
            "type": "ALWAYS",
            "value": ""
          },
          {
            "from": "Compress artifacts",
            "to": "Deploy artifacts",
            "type": "ALWAYS",
            "value": ""
          },
          {
            "from": "Deploy artifacts",
            "to": "FINISH",
            "type": "ALWAYS",
            "value": ""
          }
        ],
        "name": "GRAPH",
        "offsets": [
          {
            "name": "Clean work space",
            "x": "-65",
            "y": "90"
          },
          {
            "name": "Download Artifacts",
            "x": "-70",
            "y": "210"
          },
          {
            "name": "Compress artifacts",
            "x": "-70",
            "y": "290"
          },
          {
            "name": "Deploy artifacts",
            "x": "-65",
            "y": "370"
          },
          {
            "name": "FINISH",
            "x": "-60",
            "y": "450"
          }
        ],
        "type": "graph"
      },
      "status": "Active",
      "takesVersion": "true"
    }
    Der Befehl gibt ein Ergebnis zurück, das den folgenden JSON-Informationen ähnelt:
    {
      "id":"12f65517-5fc1-44ff-a58b-2401cfba8f2f",
      "name":"helloProcess",
      "description":"",
      "defaultWorkingDir":"${p:resource\/work.dir}\/${p:component.name}",
      "takesVersion":true,
      "inventoryActionType":"ADD",
      "status":"Active",
      "active":true,
      "versionCount":1,
      "version":1,
      "commit":0,
      "path":"components\/cf355787-a772-4533-be45-3e169e9da6eb\/processes\/12f65517-5fc1-44ff-a58b-2401cfba8f2f"
    }
  3. Erstellen Sie eine Anwendung und ordnen Sie anschließend die Komponente der Anwendung zu.
    1. Erstellen Sie eine Anwendung mit dem PUT-Befehl createApplication.
      curl -k -u nsmith:passwd
        https://server.example.com:8443/cli/application/create
        -X PUT -d @newApplication.json
      Die folgende JSON-Datei stellt die Anwendung dar:
      {
        "name": "hello Application",
        "description": "",
        "notificationScheme": "None",
        "enforceCompleteSnapshots": "false"
      }
      Der Befehl gibt ein Ergebnis zurück, das den folgenden JSON-Informationen ähnelt:
      {
        "id":"932452cc-3562-4545-8de5-c57aa7efbcc4",
        "securityResourceId":"2bc72218-dbfe-4c11-b16f-752b7ca63d06",
        "name":"hello Application",
        "description":"",
        "created":1396882026943,
        "enforceCompleteSnapshots":false,
        "active":true,
        "tags":[],
        "user":"nsmith"
      }
    2. Ordnen Sie mit dem PUT-Befehl addComponentToApp die Komponente der Anwendung zu.
      curl -k -u nsmith:passwd
        "https://server.example.com:8443/cli/
        application/addComponentToApp?component=helloWorld&application=hello%20Application"
        -X PUT
      Der Befehl gibt das folgende Ergebnis zurück:
      {}
  4. Erstellen Sie eine Umgebung und ordnen Sie sie einer Ressource zu.
    1. Erstellen Sie eine Umgebung mit dem PUT-Befehl createEnvironment.
      curl -k -u nsmith:passwd
        "https://server.example.com:8443/cli/environment/createEnvironment?application=hello%20Application&name=helloDeploy"
        -X PUT
      Der Befehl gibt die ID der Umgebung zurück, die der folgenden Zeichenfolge ähnelt:
      2142c0e3-7ebe-4a2f-9e0d-14ccacc70a79
    2. Ordnen Sie mit dem PUT-Befehl addEnvironmentBaseResources die vorher konfigurierte Ressource der Umgebung zu.
      curl -k -u nsmith:passwd
        "https://server.example.com:8443/cli/environment/addBaseResource?application=hello%20Application&environment=helloDeploy&resource=%2FhelloWorld%20Tutorial"
        -X PUT
      Dieser Befehl gibt kein Ergebnis zurück, wenn die Ressource der Umgebung korrekt zugeordnet wurde.
    3. Ordnen Sie mit dem PUT-Befehl createResource die helloWorld-Komponente der Agentenressource zu.
      curl -k -u nsmith:passwd
        https://server.example.com:8443/cli/resource/resource
        -X PUT -d @componentResource.json
      Die folgende JSON-Datei stellt die Komponentenressource dar:
      {
        "roleId":"09456abd-65e3-469e-94c6-a6a873b971a8",
        "name":"helloWorld",
        "description":"",
        "inheritTeam":"true",
        "useImpersonation":"false",
        "roleProperties":{},
        "parentId":"b2ff919e-b4c0-4d13-8973-eff44e4835e2",
        "teamMappings":[]
      }
      Der Befehl gibt ein Ergebnis zurück, das den folgenden JSON-Informationen ähnelt:
      {
        "id":"ba958487-fb86-4290-9240-da766af37963",
        "securityResourceId":"66685b67-21ab-411d-99bb-f577a74d88b3",
        "name":"helloWorld",
        "path":"\/helloWorld Tutorial\/fit-vm11-157\/helloWorld",
        "active":true,
        "description":"",
        "inheritTeam":true,
        "impersonationPassword":"****",
        "impersonationUseSudo":false,
        "impersonationForce":false,
        "type":"subresource",
        "status":"ONLINE",
        "hasAgent":true,
        "tags":[]
      }
    4. Fügen Sie mit dem PUT-Befehl addTagToResource der Komponentenressource einen Tag hinzu.
      curl -k -u nsmith:passwd
        "https://server.example.com:8443/cli/
        resource/tag?resource=ba958487-fb86-4290-9240-da766af37963&tag=blueCycle&color=0000FF"
        -X PUT
      Dieser Befehl gibt kein Ergebnis zurück, wenn die Komponente korrekt mit Tags versehen wurde.
  5. Erstellen Sie einen Anwendungsprozess mit dem PUT-Befehl createApplicationProcess.
    curl -k -u nsmith:passwd
      https://server.example.com:8443/cli/application/create
      -X PUT -d @applicationProcess.json
    Die folgende JSON-Datei stellt den Anwendungsprozess dar: Die Anwendungs-ID ist mit der ID identisch, die unter Schritt 3 zurückgegeben wurde.
    {
      "application": "932452cc-3562-4545-8de5-c57aa7efbcc4",
      "description": "",
      "inventoryManagementType": "AUTOMATIC",
      "name": "hello App Process",
      "offlineAgentHandling": "PRE_EXECUTION_CHECK",
      "rootActivity": {
        "children": [
          {
            "children": [{
              "children": [{
                "allowFailure": false,
                "children": [],
                "componentName": "helloWorld",
                "componentProcessName": "helloProcess",
                "name": "Deploy helloWorld",
                "properties": {},
                "type": "componentProcess"
              }],
              "componentName": "helloWorld",
              "name": "inventoryVersionCheck",
              "status": "Active",
              "type": "inventoryVersionDiff"
            }],
            "componentName": "helloWorld",
            "failFast": "false",
            "maxIteration": "-1",
            "name": "Deploy helloWorld",
            "runOnlyOnFirst": "false",
            "type": "componentEnvironmentIterator"
          },
          {
            "children": [],
            "name": "FINISH",
            "type": "finish"
          }
        ],
        "edges": [
          {
            "to": "Deploy helloWorld",
            "type": "ALWAYS",
            "value": ""
          },
          {
            "from": "Deploy helloWorld",
            "to": "FINISH",
            "type": "ALWAYS",
            "value": ""
          }
        ],
        "name": "GRAPH",
        "offsets": [
          {
            "name": "Deploy helloWorld",
            "x": "-35",
            "y": "210"
          },
          {
            "name": "FINISH",
            "x": "0",
            "y": "420"
          }
        ],
        "propDefs": [],
        "type": "graph"
      }
    }
    Der Befehl gibt ein Ergebnis zurück, das den folgenden JSON-Informationen ähnelt:
    {
      "id":"37d563ce-7885-48f1-b8c0-f79046c0f024",
      "name":"hello App Process",
      "description":"",
      "active":true,
      "inventoryManagementType":"AUTOMATIC",
      "offlineAgentHandling":"PRE_EXECUTION_CHECK",
      "versionCount":1,
      "version":1,
      "commit":0,
      "path":"applications\/932452cc-3562-4545-8de5-c57aa7efbcc4\/processes\/37d563ce-7885-48f1-b8c0-f79046c0f024"
    }
  6. Implementieren Sie die Anwendung mit dem PUT-Befehl requestApplicationProcess.
    curl -k -u nsmith:passwd
      https://server.example.com:8443/cli/applicationProcessRequest/request
      -X PUT -d @applicationDeploy.json
    Die folgende JSON-Datei stellt die Implementierungsanforderung dar:
    {
      "application": "hello Application",
      "applicationProcess": "hello App Process",
      "environment": "helloDeploy",
      "versions": [{
        "version": "1.0",
        "component": "helloWorld"
      }]
    }
    Der Befehl gibt ein Ergebnis zurück, das den folgenden JSON-Informationen ähnelt:
    {"requestId":"bffff82f-ff69-4c07-b010-26ca3f21be39"}

Feedback