class Chef::Knife::IonoscloudK8sCreate
Attributes
description[R]
required_options[R]
Public Class Methods
new(args = [])
click to toggle source
Calls superclass method
# File lib/chef/knife/ionoscloud_k8s_create.rb, line 41 def initialize(args = []) super(args) @description = 'Creates a new Managed Kubernetes cluster.' @required_options = [:name, :ionoscloud_username, :ionoscloud_password] end
Public Instance Methods
run()
click to toggle source
# File lib/chef/knife/ionoscloud_k8s_create.rb, line 48 def run $stdout.sync = true handle_extra_config validate_required_params(@required_options, config) print "#{ui.color('Creating K8s Cluster...', :magenta)}" kubernetes_api = Ionoscloud::KubernetesApi.new(api_client) cluster_properties = { name: config[:name], k8sVersion: config[:version], public: !config[:private], }.compact if config[:private] if !config[:gateway_ip] ui.error("Gateway IP must be specified for private K8s Clusters") exit(1) end cluster_properties[:gatewayIp] = config[:gateway_ip] end if config[:maintenance_day] && config[:maintenance_time] cluster_properties[:maintenanceWindow] = { dayOfTheWeek: config[:maintenance_day], time: config[:maintenance_time], } end cluster, _, headers = kubernetes_api.k8s_post_with_http_info({ properties: cluster_properties }) dot = ui.color('.', :magenta) api_client.wait_for { print dot; is_done? get_request_id headers } cluster = kubernetes_api.k8s_find_by_cluster_id(cluster.id) maintenance_window = "#{cluster.properties.maintenance_window.day_of_the_week}, #{cluster.properties.maintenance_window.time}" puts "\n" puts "#{ui.color('ID', :cyan)}: #{cluster.id}" puts "#{ui.color('Name', :cyan)}: #{cluster.properties.name}" puts "#{ui.color('k8s Version', :cyan)}: #{cluster.properties.k8s_version}" puts "#{ui.color('Maintenance Window', :cyan)}: #{maintenance_window}" puts "#{ui.color('State', :cyan)}: #{cluster.metadata.state}" puts 'done' end