gpt4 book ai didi

java - 无法使用 API v2 Foreman 1.7.1 创建主机

转载 作者:行者123 更新时间:2023-12-01 11:59:40 27 4
gpt4 key购买 nike

我的目的:我只是想通过我编写的java程序从具有特定cpu/ram/硬盘容量的模板创建一个CentOS虚拟机。

我所做的事情:Foreman 1.7.1 +(无集群修复问题/1945)+为 vmware 添加计算资源

我可以通过 Web ui 使用以下配置创建主机: 名称:testCentOsImageBased 无主机组 部署在:cmptrsrc_VMWare (VMWare) 环境:生产 没有傀儡CA 没有傀儡师

<小时/>

域:本地域

<小时/>

架构:x86_64 操作系统:CentOS 6.5 配置方法:基于镜像(CentOs6_5img)

根据API v2,我将主机配置设置如下:

host.setName("CGCentOs");
host.setEnvironmentId("1");
host.setDomainId("1");
host.setArchitectureId("1");
host.setOperatingsystemId("1");
host.setComputeResourceId("1");

我使用http://www.jsonschema2pojo.org/生成java pojos (我稍微更改生成的文件,就像删除 @JsonInclude(JsonInclude.Include.NON_NULL))和@JsonPropertyOrder部分,我也使用org.codehaus.jackson),我的代码基于这个项目https://github.com/muconsulting/foreman-java-sdk

我曾经无错误地获取/发布大量请求,所以我认为这部分没有任何问题

当我尝试使用上述配置创建主机时,尾随 production.log 给出: 不允许使用domain_id 作为主机的嵌套参数

所以我尝试摆脱使用domain_id,主机组可以指定domain_id,所以我创建了一个具有特定环境的主机组:

Host host = new Host();
host.setName("CGCentOs");
host.setHostgroupId(1);
host.setDomainId(1);
host.setArchitectureId(1);
host.setOperatingsystemId(1);
host.setComputeResourceId(1);

它给出:

Processing by Api::V2::HostsController#create as JSON
Parameters: {"name"=>"CGCentOs", "capabilities"=>nil, "parameters"=>nil, "interfaces"=>nil, "puppetclasses"=>nil, "domain_id"=>1, "architecture_id"=>1, "operatingsystem_id"=>1, "hostgroup_id"=>1, "compute_resource_id"=>1, "all_puppetclasses"=>nil, "config_groups"=>nil, "apiv"=>"v2", :host=>{"name"=>"CGCentOs", "domain_id"=>1, "architecture_id"=>1, "operatingsystem_id"=>1, "hostgroup_id"=>1, "compute_resource_id"=>1}}
Expire fragment views/tabs_and_title_records-3 (0.1ms)
Authorized user admin(Admin User)
domain_id is not allowed as nested parameter for hosts. Allowed parameters are hostgroup_id, location_id, organization_id, environment_id (RuntimeError)

所以我也在主机组中指定了domain_id,它变成了

2.具有特定环境和domain_id的主机组

Host host = new Host();
host.setName("CGCentOs");
host.setHostgroupId(1);
host.setArchitectureId(1);
host.setOperatingsystemId(1);
host.setComputeResourceId(1);

它给出:

  Parameters: {"name"=>"CGCentOs", "capabilities"=>nil, "parameters"=>nil, "interfaces"=>nil, "puppetclasses"=>nil, "architecture_id"=>1, "operatingsystem_id"=>1, "hostgroup_id"=>1, "compute_resource_id"=>1, "all_puppetclasses"=>nil, "config_groups"=>nil, "apiv"=>"v2", :host=>{"name"=>"CGCentOs", "architecture_id"=>1, "operatingsystem_id"=>1, "hostgroup_id"=>1, "compute_resource_id"=>1}}
Authorized user admin(Admin User)
architecture_id is not allowed as nested parameter for hosts. Allowed parameters are hostgroup_id, location_id, organization_id, environment_id (RuntimeError)
  • 我将architecture_id添加到主机组

    主机主机 = new Host();主机.setName("CGCentOs");host.setHostgroupId(1);
    主机.setOperatingsystemId(1);host.setComputeResourceId(1);

  • 它给出:

     Parameters: {"name"=>"CGCentOs", "capabilities"=>nil, "parameters"=>nil, "interfaces"=>nil, "puppetclasses"=>nil, "operatingsystem_id"=>1, "hostgroup_id"=>1, "compute_resource_id"=>1, "all_puppetclasses"=>nil, "config_groups"=>nil, "apiv"=>"v2", :host=>{"name"=>"CGCentOs", "operatingsystem_id"=>1, "hostgroup_id"=>1, "compute_resource_id"=>1}}
    Authorized user admin(Admin User)
    operatingsystem_id is not allowed as nested parameter for hosts. Allowed parameters are hostgroup_id, location_id, organization_id, environment_id (RuntimeError)
  • 我将 Operatingsystem_id 添加到主机组。

    主机主机 = new Host();主机.setName("CGCentOs");host.setHostgroupId(1);
    host.setComputeResourceId(1);

  • 它给出:

    Processing by Api::V2::HostsController#create as JSON
    Parameters: {"name"=>"CGCentOs", "capabilities"=>nil, "parameters"=>nil, "interfaces"=>nil, "puppetclasses"=>nil, "hostgroup_id"=>1, "compute_resource_id"=>1, "all_puppetclasses"=>nil, "config_groups"=>nil, "apiv"=>"v2", :host=>{"name"=>"CGCentOs", "hostgroup_id"=>1, "compute_resource_id"=>1}}
    Expire fragment views/tabs_and_title_records-3 (0.6ms)
    Authorized user admin(Admin User)
    compute_resource_id is not allowed as nested parameter for hosts. Allowed parameters are hostgroup_id, location_id, organization_id, environment_id (RuntimeError)
  • 我无法将compute_resource id 添加到主机组...我只是删除该行...

    主机主机 = new Host();主机.setName("CGCentOs");host.setHostgroupId(1);

  • 它给出:

    Processing by Api::V2::HostsController#create as JSON
    Parameters: {"name"=>"CGCentOs", "capabilities"=>nil, "parameters"=>nil, "interfaces"=>nil, "puppetclasses"=>nil, "hostgroup_id"=>1, "all_puppetclasses"=>nil, "config_groups"=>nil, "apiv"=>"v2", :host=>{"name"=>"CGCentOs", "hostgroup_id"=>1}}
    Authorized user admin(Admin User)
    Unprocessable entity Host::Managed (id: new):
    MAC address is not a valid MAC address
    MAC address can't be blank
    Partition Table cant be blank unless a custom partition has been defined

    我期待这一点,因为计算资源定义了它的虚拟性......因此,计算配置文件和计算资源似乎是紧密结合的

    我试试这个:

    Host host = new Host();
    host.setName("CGCentOs");
    host.setHostgroupId(1);
    host.setComputeProfileId(3);

    它给出:

    Processing by Api::V2::HostsController#create as JSON
    Parameters: {"name"=>"CGCentOs", "capabilities"=>nil, "parameters"=>nil, "interfaces"=>nil, "puppetclasses"=>nil, "hostgroup_id"=>1, "compute_profile_id"=>3, "all_puppetclasses"=>nil, "config_groups"=>nil, "apiv"=>"v2", :host=>{"name"=>"CGCentOs", "hostgroup_id"=>1, "compute_profile_id"=>3}}
    Authorized user admin(Admin User)
    compute_profile_id is not allowed as nested parameter for hosts. Allowed parameters are hostgroup_id, location_id, organization_id, environment_id (RuntimeError)

    我创建了一个新的计算配置文件,它出现在编辑主机组 Pane 中...所以重试:

    Host host = new Host();
    host.setName("CGCentOs");
    host.setHostgroupId(1);

    再次出现MAC地址问题:

    Processing by Api::V2::HostsController#create as JSON
    Parameters: {"name"=>"CGCentOs", "capabilities"=>nil, "parameters"=>nil, "interfaces"=>nil, "puppetclasses"=>nil, "hostgroup_id"=>1, "all_puppetclasses"=>nil, "config_groups"=>nil, "apiv"=>"v2", :host=>{"name"=>"CGCentOs", "hostgroup_id"=>1}}
    Expire fragment views/tabs_and_title_records-3 (0.1ms)
    Authorized user admin(Admin User)
    Unprocessable entity Host::Managed (id: new):
    MAC address is not a valid MAC address
    MAC address can't be blank
    Partition Table cant be blank unless a custom partition has been defined

    除了拉动开发分支之外还有其他解决方法吗?预先感谢您

    最佳答案

    您的 JSON 目前如下所示:

    {"name"=>"CGCentOs", "capabilities"=>nil, "parameters"=>nil, "interfaces"=>nil, "puppetclasses"=>nil, "domain_id"=>1, "architecture_id"=>1, "operatingsystem_id"=>1, "hostgroup_id"=>1, "compute_resource_id"=>1, "all_puppetclasses"=>nil, "config_groups"=>nil, "apiv"=>"v2", :host=>{"name"=>"CGCentOs", "domain_id"=>1, "architecture_id"=>1, "operatingsystem_id"=>1, "hostgroup_id"=>1, "compute_resource_id"=>1}}

    但必须是:

    {"host"=>{"name"=>"CGCentOs", "capabilities"=>nil, "parameters"=>nil, "interfaces"=>nil, "puppetclasses"=>nil, "domain_id"=>1, "architecture_id"=>1, "operatingsystem_id"=>1, "hostgroup_id"=>1, "compute_resource_id"=>1, "all_puppetclasses"=>nil, "config_groups"=>nil, "apiv"=>"v2", :host=>{"name"=>"CGCentOs", "domain_id"=>1, "architecture_id"=>1, "operatingsystem_id"=>1, "hostgroup_id"=>1, "compute_resource_id"=>1}}}

    原因是,foreman 1.7.x 中包含了一个名为“host”的新键值对。这是因为 API 从 foreman 1.6.x 更改为 1.7.x

    干杯,克里斯

    关于java - 无法使用 API v2 Foreman 1.7.1 创建主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28069246/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com