Project

General

Profile

Actions

Bug #13775

closed

Not able to change an HG for a host using API call

Added by Konstantin Orekhov almost 9 years ago. Updated over 6 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
API
Target version:
Difficulty:
Triaged:
Fixed in Releases:
Found in Releases:

Description

I have a host that is in common/puppet-master (id: 5) HG currently:

[root@spc01 ~]# curl -kSs -H "Content-type:application/json" -u admin:$FOREMAN_PASSWORD https://localhost/api/hosts/`hostname -f` | jq '.' | egrep "name|id" | grep -v null
"environment_id": 1,
"environment_name": "production",
"domain_id": 1,
"domain_name": "test.domain.com",
"architecture_id": 1,
"architecture_name": "x86_64",
"operatingsystem_id": 1,
"operatingsystem_name": "CentOS 7.2",
"model_id": 1,
"model_name": "Standard PC (i440FX + PIIX, 1996)",
"hostgroup_id": 5,
"hostgroup_name": "common",
"owner_id": 3,
<snip>
[root@spc01 ~]#

If I try to change its HG into some other one, I get this error:

[root@spc01 ~]# curl -kSs -H "Content-type:application/json" -u admin:$FOREMAN_PASSWORD -X PUT https://localhost/api/hosts/`hostname -f` -d '{ "hostgroup_id": 3 }' | jq '.' {
"error": {
"message": "Resource host not found by id 'spc01.test.domain.com'"
}
}

production log shows me this:

| Started PUT "/api/hosts/spc01.test.domain.com" for 127.0.0.1 at 2016-02-17 01:21:45 +0000
2016-02-17 01:21:45 [app] [I] Processing by Api::V2::HostsController#update as JSON
2016-02-17 01:21:45 [app] [I] Parameters: {"hostgroup_id"=>3, "apiv"=>"v2", "id"=>"spc01.test.domain.com", :host=>{"hostgroup_id"=>3}}
2016-02-17 01:21:45 [app] [I] Authorized user admin(Admin User)
2016-02-17 01:21:45 [app] [I] Couldn't find Host::Managed with id=spc01.test.domain.com [WHERE `hosts`.`type` IN ('Host::Managed') AND ((`hostgroups`.`id` = 3 OR `hostgroups`.`title` = 3))] (ActiveRecord::RecordNotFound)
2016-02-17 01:21:45 [app] [I] Rendered api/v2/errors/not_found.json.rabl within api/v2/layouts/error_layout (1.2ms)
2016-02-17 01:21:45 [app] [I] Completed 404 Not Found in 32ms (Views: 2.2ms | ActiveRecord: 5.3ms)

As you can see, the reason things fail is that API tries to find my host AS if it is already in a new HG, which is obviously can't be true unless a new HG is the same as a current one.


Files

update_host.png View update_host.png 103 KB Amit Karsale, 11/11/2016 02:10 AM

Related issues 4 (1 open3 closed)

Related to Foreman - Bug #11266: Unnested *_id parameters treated as parent resources in APINew07/31/2015Actions
Related to Foreman - Bug #8343: API resource_scope ignores optionsClosedShimon Shtein11/11/2014Actions
Related to Foreman - Bug #16403: Updating hostgroups via API with environment_id set fails to find host groupDuplicate09/01/2016Actions
Related to Foreman - Bug #20204: GET /hostgroup/:hostgroup_id/hosts returns all hosts when id of empty hostgroup is usedClosedKavita Gaikwad07/04/2017Actions
Actions

Also available in: Atom PDF