Service definition onboarding for Helm

The service definition onboarding can be done via API commands.

The following sample shows how the service API and the action role mappings can be specified in the JSON format for a service, in this case sample-api:

  1. Create the service API action roles JSON file:

    The following sample is a service API action role mapping for the GET, PUT, POST, DELETE methods. Note the chartName, actions.id, and actions.roles:

     action_role_sampleapi.json:
    
     {
         "chartName": "sample-api",
         "displayName":
         {
             "default": "sampleapi"
         },
         "actions": [
         {
             "id": "GET /sample-api/api/v1/repos",
             "displayName":
             {
                 "default": "sampleapi.repos.get.allorsingular"
             },
             "roles": [
                 "crn:v1:icp:private:iam::::role:ClusterAdministrator",
                 "crn:v1:icp:private:iam::::role:CloudPakAdministrator",
                 "crn:v1:icp:private:iam::::role:Administrator",
                 "crn:v1:icp:private:iam::::role:Operator",
                 "crn:v1:icp:private:iam::::role:Editor",
                 "crn:v1:icp:private:iam::::role:Viewer"
             ]
         },
         {
             "id": "PUT /sample-api/api/v1/repos",
             "displayName":
             {
                 "default": "sampleapi.repos.put.updaterepo"
             },
             "roles": [
                 "crn:v1:icp:private:iam::::role:ClusterAdministrator"
             ]
         },
         {
             "id": "POST /sample-api/api/v1/repos",
             "displayName":
             {
                 "default": "sampleapi.repos.post.addrepo"
             },
             "roles": [
                 "crn:v1:icp:private:iam::::role:ClusterAdministrator"
             ]
         },
         {
             "id": "DELETE /sample-api/api/v1/repos",
             "displayName":
             {
                 "default": "sampleapi.repos.delete.removerepo"
             },
             "roles": [
                 "crn:v1:icp:private:iam::::role:ClusterAdministrator"
             ]
         }],
         "enabled": true,
         "supportedAttributes": [
         {
             "key": "string"
         }],
         "supportedRoles": [
         {
             "id": "crn:v1:icp:private:iam::::role:ClusterAdministrator"
         },
         {
             "id": "crn:v1:icp:private:iam::::role:CloudPakAdministrator"
         },
         {
             "id": "crn:v1:icp:private:iam::::role:Administrator"
         },
         {
             "id": "crn:v1:icp:private:iam::::role:Operator"
         },
         {
             "id": "crn:v1:icp:private:iam::::role:Editor"
         },
         {
             "id": "crn:v1:icp:private:iam::::role:Viewer"
         }]
     }
    
  2. Create or update the service API action roles:

    PUT /acms/v1/services/SERVICE_NAME

     Input:
     Replace the following in the curl command:
    
     ${ACCESS_TOKEN} ---> User access token
     ${MASTER_NODE_IP} ---> Master node ipaddress or VIP ipaddress in HA
     ${SERVICE_NAME} ---> New service name
     ${API_ACTION_ROLES_JSON_FILE}  ---> API action roles json file name e.g., action_role_helmapi.json
    
     export API_ACTION_ROLES_JSON_FILE=action_role_helmapi.json
     export SERVICE_NAME=helmapi-service
    
     curl -k -X PUT -H 'Content-Type: application/json' -H 'Accept: application/json' -H "Authorization: Bearer ${ACCESS_TOKEN}" -d @${API_ACTION_ROLES_JSON_FILE} "https://${MASTER_NODE_IP}:8443/iam-pap/acms/v1/services/${SERVICE_NAME}"
    
     Response:
     {"name":"sampleapi-service","displayName":{"default":"sampleapi"},"actions":[{"id":"GET /sample-api/api/v1/repos","displayName":{"default":"sampleapi.repos.get.allorsingular"},"roles":["crn:v1:icp:private:iam::::role:ClusterAdministrator","crn:v1:icp:private:iam::::role:CloudPakAdministrator","crn:v1:icp:private:iam::::role:Administrator","crn:v1:icp:private:iam::::role:Operator","crn:v1:icp:private:iam::::role:Editor","crn:v1:icp:private:iam::::role:Viewer"]},{"id":"PUT /sample-api/api/v1/repos","displayName":{"default":"sampleapi.repos.put.updaterepo"},"roles":["crn:v1:icp:private:iam::::role:ClusterAdministrator"]},{"id":"POST /sample-api/api/v1/repos","displayName":{"default":"sampleapi.repos.post.addrepo"},"roles":["crn:v1:icp:private:iam::::role:ClusterAdministrator"]},{"id":"DELETE /sample-api/api/v1/repos","displayName":{"default":"sampleapi.repos.delete.removerepo"},"roles":["crn:v1:icp:private:iam::::role:ClusterAdministrator"]},"platformExtensions":{"supportedAttributes":[{"key":"accountId"},{"key":"serviceName"}],"supportedRoles":[]},"links":{"href":"https://9.30.255.32:8443/acms/v1/services/sampleapi-service","link":"self"}}