[ 
https://issues.apache.org/jira/browse/AMBARI-18011?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ajit Kumar updated AMBARI-18011:
--------------------------------
    Description: 
This api takes in query and instead of failing fast on the first error, puts 
the best effort to delete all requested hosts. Response should be json object 
which has deleted keys and keys which failed to delete with exception.
Sample API calls:
Delete all host components on a set of hosts:
{code}

Request:
curl -i -uadmin:admin -H 'X-Requested-By: ambari' -X DELETE 
http://c6401.ambari.apache.org:8080/api/v1/clusters/c1/host_components -d 
'{"RequestInfo":{"query":"HostRoles/host_name.in(c6401.ambari.apache.org,c6402.ambari.apache.org)"}}'

Response
{
  "deleteResult" : [
    {
      "deleted" : {
        "key" : "c6401.ambari.apache.org/HIVE_METASTORE"
      }
    },
    {
      "deleted" : {
        "key" : "c6402.ambari.apache.org/MYSQL_SERVER"
      }
    },
    {
      "error" : {
        "key" : "c6402.ambari.apache.org/RESOURCEMANAGER",
        "code" : 500,
        "message" : "org.apache.ambari.server.AmbariException: Host Component 
cannot be removed, clusterName=c1, serviceName=YARN, 
componentName=RESOURCEMANAGER, hostname=c6402.ambari.apache.org, request={ 
clusterName=c1, serviceName=YARN, componentName=RESOURCEMANAGER, 
hostname=c6402.ambari.apache.org, desiredState=null, state=null, 
desiredStackId=null, staleConfig=null, adminState=null}"
      }
    }
  ]
}
{code}
Delete selected host components on a set of host
{code} 
Request:
curl -i -uadmin:admin -H 'X-Requested-By: ambari' -X DELETE 
http://c6401.ambari.apache.org:8080/api/v1/clusters/c1/host_components -d 
'{"RequestInfo":{"query":"HostRoles/host_name.in(c6401.ambari.apache.org,c6402.ambari.apache.org)&HostRoles/component_name.in(NODEMANAGER)"}}'

Response:
{
  "deleteResult" : [
    {
      "deleted" : {
        "key" : "c6401.ambari.apache.org/NODEMANAGER"
      }
    },
    {
      "error" : {
        "key" : "c6402.ambari.apache.org/NODEMANAGER",
        "code" : 500,
        "message" : "org.apache.ambari.server.AmbariException: Host Component 
cannot be removed, clusterName=c1, serviceName=YARN, componentName=NODEMANAGER, 
hostname=c6402.ambari.apache.org, request={ clusterName=c1, serviceName=YARN, 
componentName=NODEMANAGER, hostname=c6402.ambari.apache.org, desiredState=null, 
state=null, desiredStackId=null, staleConfig=null, adminState=null}"
      }
    }
  ]
}
{code}

  was:
This api takes in query and instead of failing fast on the first error, puts 
the best effort to delete all requested hosts. Response should be json object 
which has deleted keys and keys which failed to delete with exception.
Sample API calls:
Delete all host components on a set of hosts:
{code}

delete http://c6401.ambari.apache.org:8080/api/v1/clusters/c1/host_components 
-d 
'{"RequestInfo":{"query":"HostRoles/host_name.in(c6401.ambari.apache.org,c6402.ambari.apache.org)"}}'
{
  "deleteResult" : [
    {
      "deleted" : {
        "key" : "c6402.ambari.apache.org/HIVE_METASTORE"
      }
    },
    {
      "deleted" : {
        "key" : "c6402.ambari.apache.org/MYSQL_SERVER"
      }
    },
    {
      "error" : {
        "key" : "c6402.ambari.apache.org/RESOURCEMANAGER",
        "code" : 500,
        "message" : "org.apache.ambari.server.AmbariException: Host Component 
cannot be removed, clusterName=c1, serviceName=YARN, 
componentName=RESOURCEMANAGER, hostname=c6402.ambari.apache.org, request={ 
clusterName=c1, serviceName=YARN, componentName=RESOURCEMANAGER, 
hostname=c6402.ambari.apache.org, desiredState=null, state=null, 
desiredStackId=null, staleConfig=null, adminState=null}"
      }
    }
  ]
}
{code}
Delete selected host components on a set of host
{code} 
delete http://c6401.ambari.apache.org:8080/api/v1/clusters/c1/host_components 
-d 
'{"RequestInfo":{"query":"HostRoles/host_name.in(c6401.ambari.apache.org,c6402.ambari.apache.org)&HostRoles/component_name.in(NODEMANAGER)"}}'
{
  "deleteResult" : [
    {
      "deleted" : {
        "key" : "c6401.ambari.apache.org/NODEMANAGER"
      }
    },
    {
      "error" : {
        "key" : "c6402.ambari.apache.org/NODEMANAGER",
        "code" : 500,
        "message" : "org.apache.ambari.server.AmbariException: Host Component 
cannot be removed, clusterName=c1, serviceName=YARN, componentName=NODEMANAGER, 
hostname=c6402.ambari.apache.org, request={ clusterName=c1, serviceName=YARN, 
componentName=NODEMANAGER, hostname=c6402.ambari.apache.org, desiredState=null, 
state=null, desiredStackId=null, staleConfig=null, adminState=null}"
      }
    }
  ]
}
{code}


> Add api for bulk delete host component
> --------------------------------------
>
>                 Key: AMBARI-18011
>                 URL: https://issues.apache.org/jira/browse/AMBARI-18011
>             Project: Ambari
>          Issue Type: Task
>          Components: ambari-server
>    Affects Versions: 2.5.0
>            Reporter: Ajit Kumar
>            Assignee: Ajit Kumar
>             Fix For: 2.5.0
>
>         Attachments: rb50450.patch
>
>
> This api takes in query and instead of failing fast on the first error, puts 
> the best effort to delete all requested hosts. Response should be json object 
> which has deleted keys and keys which failed to delete with exception.
> Sample API calls:
> Delete all host components on a set of hosts:
> {code}
> Request:
> curl -i -uadmin:admin -H 'X-Requested-By: ambari' -X DELETE 
> http://c6401.ambari.apache.org:8080/api/v1/clusters/c1/host_components -d 
> '{"RequestInfo":{"query":"HostRoles/host_name.in(c6401.ambari.apache.org,c6402.ambari.apache.org)"}}'
> Response
> {
>   "deleteResult" : [
>     {
>       "deleted" : {
>         "key" : "c6401.ambari.apache.org/HIVE_METASTORE"
>       }
>     },
>     {
>       "deleted" : {
>         "key" : "c6402.ambari.apache.org/MYSQL_SERVER"
>       }
>     },
>     {
>       "error" : {
>         "key" : "c6402.ambari.apache.org/RESOURCEMANAGER",
>         "code" : 500,
>         "message" : "org.apache.ambari.server.AmbariException: Host Component 
> cannot be removed, clusterName=c1, serviceName=YARN, 
> componentName=RESOURCEMANAGER, hostname=c6402.ambari.apache.org, request={ 
> clusterName=c1, serviceName=YARN, componentName=RESOURCEMANAGER, 
> hostname=c6402.ambari.apache.org, desiredState=null, state=null, 
> desiredStackId=null, staleConfig=null, adminState=null}"
>       }
>     }
>   ]
> }
> {code}
> Delete selected host components on a set of host
> {code} 
> Request:
> curl -i -uadmin:admin -H 'X-Requested-By: ambari' -X DELETE 
> http://c6401.ambari.apache.org:8080/api/v1/clusters/c1/host_components -d 
> '{"RequestInfo":{"query":"HostRoles/host_name.in(c6401.ambari.apache.org,c6402.ambari.apache.org)&HostRoles/component_name.in(NODEMANAGER)"}}'
> Response:
> {
>   "deleteResult" : [
>     {
>       "deleted" : {
>         "key" : "c6401.ambari.apache.org/NODEMANAGER"
>       }
>     },
>     {
>       "error" : {
>         "key" : "c6402.ambari.apache.org/NODEMANAGER",
>         "code" : 500,
>         "message" : "org.apache.ambari.server.AmbariException: Host Component 
> cannot be removed, clusterName=c1, serviceName=YARN, 
> componentName=NODEMANAGER, hostname=c6402.ambari.apache.org, request={ 
> clusterName=c1, serviceName=YARN, componentName=NODEMANAGER, 
> hostname=c6402.ambari.apache.org, desiredState=null, state=null, 
> desiredStackId=null, staleConfig=null, adminState=null}"
>       }
>     }
>   ]
> }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to