class Cmd::NewDroplets

Public Class Methods

create_new_droplets(options) click to toggle source
# File lib/cmd/create_new_droplets.rb, line 6
def self.create_new_droplets options
        @client = Cmd::Authen.client
        table = []

        if options[:file_config] != nil

                if options[:name] != nil
                        puts "Please specify the name of droplets into YAML config files, do not use both."
                        exit
                end

                context = YAML.load(File.open(options[:file_config]))
                resource_first_key = context.keys[0]
                context[resource_first_key].reject!{ |k| k == "resource_type"}.each do |key, value|
                        if value['specs']['user_data'].nil? || value['specs']['user_data']['files'].nil? && value['specs']['user_data']['scripts'].nil?
                                user_data = nil
                        else
                                user_data = value['specs']['user_data']['files'].nil? ? value['specs']['user_data']['scripts'] : File.read(value['specs']['user_data']['files'])
                        end

                        if value['specs']['name'].length > 1
                                new_droplet = DropletKit::Droplet.new(
                                        names: value['specs']['name'],
                                        region: options[:region].nil? ? value['specs']['region'] : options[:region],
                                        size: options[:size].nil? ? value['specs']['size'] : options[:size],
                                        image: options[:image].nil? ? value['specs']['image'] : options[:image],
                                        ipv6: options[:ipv6].nil? ? value['specs']['ipv6'] : options[:ipv6],
                                        tags: options[:tags].nil? ? value['specs']['tags'] : options[:tags],
                                        backups: options[:backups].nil? ? value['specs']['backups'] : options[:backups],
                                        ssh_keys: options[:ssh_keys].nil? ? value['specs']['ssh_keys'] : options[:ssh_keys],
                                        private_networking: options[:private_networking].nil? ? value['specs']['private_networking'] : options[:private_networking],
                                        user_data: options[:user_data].nil? ? user_data : options[:user_data],
                                        volumes: options[:volumes].nil? ? value['specs']['volumes'] : options[:volumes]
                                        )
                                create_new_droplet = @client.droplets.create_multiple(new_droplet)
                                create_new_droplet.each do |droplet|
                                        table << {
                                                :id => droplet.id,
                                                :name => droplet.name,
                                                :region => droplet.region.name,
                                                :size => droplet.size,
                                                :status => droplet.status
                                        }
                                end
                        else
                                new_droplet = DropletKit::Droplet.new(
                                        name: value['specs']['name'][0],
                                        region: options[:region].nil? ? value['specs']['region'] : options[:region],
                                        size: options[:size].nil? ? value['specs']['size'] : options[:size],
                                        image: options[:image].nil? ? value['specs']['image'] : options[:image],
                                        ipv6: options[:ipv6].nil? ? value['specs']['ipv6'] : options[:ipv6],
                                        tags: options[:tags].nil? ? value['specs']['tags'] : options[:tags],
                                        backups: options[:backups].nil? ? value['specs']['backups'] : options[:backups],
                                        ssh_keys: options[:ssh_keys].nil? ? value['specs']['ssh_keys'] : options[:ssh_keys],
                                        private_networking: options[:private_networking].nil? ? value['specs']['private_networking'] : options[:private_networking],
                                        user_data: options[:user_data].nil? ? user_data : options[:user_data],
                                        volumes: options[:volumes].nil? ? value['specs']['volumes'] : options[:volumes]
                                        )
                                create_new_droplet = @client.droplets.create(new_droplet)
                                table << {
                                        :id => create_new_droplet.id,
                                        :name => create_new_droplet.name,
                                        :region => create_new_droplet.region.name,
                                        :size => create_new_droplet.size,
                                        :status => create_new_droplet.status
                                }
                        end
                end
        else
                new_droplet = DropletKit::Droplet.new(
                        name: options[:name],
                        region: options[:region].nil? ? "nyc1" : options[:region],
                        size: options[:size].nil? ? "512mb" : options[:size],
                        image: options[:image].nil? ? "21669205" : options[:image],
                        ipv6: options[:ipv6].nil? ? true : options[:ipv6],
                        tags: options[:tags],
                        backups: options[:backups].nil? ? true : options[:backups],
                        ssh_keys: options[:ssh_keys],
                        private_networking: options[:private_networking].nil? ? false : options[:private_networking],
                        user_data: options[:user_data],
                        volumes: options[:volumes]
                        )
                create_new_droplet =  @client.droplets.create(new_droplet)
                table << {
                                        :id => create_new_droplet.id,
                                        :name => create_new_droplet.name,
                                        :region => create_new_droplet.region.name,
                                        :size => create_new_droplet.size,
                                        :status => create_new_droplet.status
                                }
        end
        puts "Droplets create successfully".red if !table[0][:id].nil?
        tp table
end
create_new_droplets_from_file(value) click to toggle source
# File lib/cmd/create_new_droplets.rb, line 102
def self.create_new_droplets_from_file value
        @client = Cmd::Authen.client
        table = []
        value.reject!{ |k| k == "resource_type"}.each do |key, value|
                if value['specs']['user_data'].nil? || value['specs']['user_data']['files'].nil? && value['specs']['user_data']['scripts'].nil?
                        user_data = nil
                else
                        user_data = value['specs']['user_data']['files'].nil? ? value['specs']['user_data']['scripts'] : File.read(value['specs']['user_data']['files'])
                end

                if value['specs']['name'].length > 1
                        new_droplet = DropletKit::Droplet.new(
                                names: value['specs']['name'],
                                region: value['specs']['region'],
                                size: value['specs']['size'],
                                image: value['specs']['image'],
                                ipv6: value['specs']['ipv6'],
                                tags: value['specs']['tags'],
                                backups: value['specs']['backups'],
                                ssh_keys: value['specs']['ssh_keys'],
                                private_networking: value['specs']['private_networking'],
                                user_data: user_data,
                                volumes: value['specs']['volumes']
                                )
                        create_new_droplet = @client.droplets.create_multiple(new_droplet)
                        create_new_droplet.each do |droplet|
                                table << {
                                        :id => droplet.id,
                                        :name => droplet.name,
                                        :region => droplet.region.name,
                                        :size => droplet.size,
                                        :status => droplet.status
                                }
                        end
                else
                        new_droplet = DropletKit::Droplet.new(
                                name: value['specs']['name'][0],
                                region: value['specs']['region'],
                                size: value['specs']['size'],
                                image: value['specs']['image'],
                                ipv6: value['specs']['ipv6'],
                                tags: value['specs']['tags'],
                                backups: value['specs']['backups'],
                                ssh_keys: value['specs']['ssh_keys'],
                                private_networking: value['specs']['private_networking'],
                                user_data: user_data,
                                volumes: value['specs']['volumes']
                                )
                        create_new_droplet = @client.droplets.create(new_droplet)
                        table << {
                                :id => create_new_droplet.id,
                                :name => create_new_droplet.name,
                                :region => create_new_droplet.region.name,
                                :size => create_new_droplet.size,
                                :status => create_new_droplet.status
                        }
                end
        end
        puts "Droplets create successfully".red if !table[0][:id].nil?
        tp table
end