From 473fc4f9dab5a46e8c247036486eeec68a3902e8 Mon Sep 17 00:00:00 2001 From: Alejandro Huertas Herrero Date: Tue, 19 Jan 2021 12:28:15 +0100 Subject: [PATCH] M #-: add provision AR count (#669) --- .../hybrid+/provisions/aws.d/inputs.yml | 5 +++++ .../hybrid+/provisions/aws.d/networks.yml | 2 ++ .../hybrid+/provisions/packet.d/inputs.yml | 5 +++++ .../hybrid+/provisions/packet.d/networks.yml | 2 ++ src/oneprovision/lib/provision/provision.rb | 6 ++++-- .../lib/provision/resources/physical/network.rb | 15 +++++++++++++++ 6 files changed, 33 insertions(+), 2 deletions(-) diff --git a/share/oneprovision/hybrid+/provisions/aws.d/inputs.yml b/share/oneprovision/hybrid+/provisions/aws.d/inputs.yml index 2edf00e8a1..a095876f31 100644 --- a/share/oneprovision/hybrid+/provisions/aws.d/inputs.yml +++ b/share/oneprovision/hybrid+/provisions/aws.d/inputs.yml @@ -21,6 +21,11 @@ inputs: description: 'Number of AWS instances to create' default: '1' + - name: 'number_public_ips' + type: text + description: 'Number of public IPs to get' + default: '1' + - name: 'aws_ami_image' type: text description: "AWS ami image used for host deployments" diff --git a/share/oneprovision/hybrid+/provisions/aws.d/networks.yml b/share/oneprovision/hybrid+/provisions/aws.d/networks.yml index 0252545a4b..016c4c0c13 100644 --- a/share/oneprovision/hybrid+/provisions/aws.d/networks.yml +++ b/share/oneprovision/hybrid+/provisions/aws.d/networks.yml @@ -19,6 +19,8 @@ networks: - name: "${provision}-public" vn_mad: 'elastic' bridge: 'br0' + provision: + count: "${input.number_public_ips}" ar: - provison_id: "${provision_id}" size: '1' diff --git a/share/oneprovision/hybrid+/provisions/packet.d/inputs.yml b/share/oneprovision/hybrid+/provisions/packet.d/inputs.yml index a3b2159dcc..71b42cceb9 100644 --- a/share/oneprovision/hybrid+/provisions/packet.d/inputs.yml +++ b/share/oneprovision/hybrid+/provisions/packet.d/inputs.yml @@ -21,6 +21,11 @@ inputs: description: "Number of metal servers to create" default: '1' + - name: 'number_public_ips' + type: text + description: 'Number of public IPs to get' + default: '1' + - name: 'packet_plan' type: text description: "Packet plan (device type)" diff --git a/share/oneprovision/hybrid+/provisions/packet.d/networks.yml b/share/oneprovision/hybrid+/provisions/packet.d/networks.yml index 63633a744e..246b359643 100644 --- a/share/oneprovision/hybrid+/provisions/packet.d/networks.yml +++ b/share/oneprovision/hybrid+/provisions/packet.d/networks.yml @@ -19,6 +19,8 @@ networks: - name: "${provision}-public" vn_mad: 'elastic' bridge: 'br0' + provision: + count: "${input.number_public_ips}" ar: - provison_id: "${provision_id}" size: '1' diff --git a/src/oneprovision/lib/provision/provision.rb b/src/oneprovision/lib/provision/provision.rb index 0ce9d73353..49bcd64a8d 100644 --- a/src/oneprovision/lib/provision/provision.rb +++ b/src/oneprovision/lib/provision/provision.rb @@ -574,8 +574,10 @@ module OneProvision cfg[r].each do |x| Driver.retry_loop('Failed to create some resources', self) do - x['provision'] = { 'id' => @id } - obj = Resource.object(r, nil, x) + x['provision'] ||= {} + x['provision'].merge!({ 'id' => @id }) + + obj = Resource.object(r, nil, x) next if obj.nil? diff --git a/src/oneprovision/lib/provision/resources/physical/network.rb b/src/oneprovision/lib/provision/resources/physical/network.rb index 23befc00aa..4f376196f0 100644 --- a/src/oneprovision/lib/provision/resources/physical/network.rb +++ b/src/oneprovision/lib/provision/resources/physical/network.rb @@ -32,6 +32,21 @@ module OneProvision @type = 'network' end + # Creates the object in OpenNebula + # + # @param cluster_id [Integer] Cluster ID + # + # @return [Integer] Resource ID + def create(cluster_id) + if @p_template['provision']['count'] && @p_template['ar'] + (Integer(@p_template['provision']['count']) - 1).times do + @p_template['ar'] << @p_template['ar'][0] + end + end + + super + end + # Info an specific object # # @param id [String] Object ID