stephenpearson / kitchen-oci Goto Github PK
View Code? Open in Web Editor NEWKitchen driver for Oracle Cloud Infrastructure
License: Other
Kitchen driver for Oracle Cloud Infrastructure
License: Other
Are there any plans to support windows? Would be great :-)
And I wonder if this project does move to the official oracle GitHub org?
>>>>>> Failed to complete #create action: [You cannot provide both :sourceType and :source_type] on default-oracle
Hi there - First, thanks for making this, it is a big help to me while getting started with Oracle Cloud.
I want to be able to supply a simple String
in user_data
and have it show up in the metadata. I don't think that's currently supported, but I could be wrong. If I am correct and it is not currently supported, I was wondering if you would accept a pull request for this.
That is, if the user data was simply passing a String
instead of an Array
in your standard format then the plugin would write the user_data
directly to metadata without the mime magic and such. I'll be happy to provide a PR if this is acceptable.
As background, our use case is a we have a generic image that reads what is effectively YAML data from user_data to bootstrap our instances. The data is minimal. And when I do this with kitchen-ec2
it looks a little funny in .kitchen.yml
because it's YAML with a string that looks like YAML:
For example:
user_data: |
env: dev1
role: tomcat
If not, then I'll sort it out some other way. But I thought I would double check.
@stephenpearson , what do you think of adding a freeform tag that identifies the user who created the instance? This may make it easier to search for instances that a specific user created. I am currently handling it like this:
hostname_prefix: gta-<%= ENV['USER'] %>
but in the case where someone decides to change that, it might be hard for them to find their node.
Maybe we can add a freeform tag like owner, or created_by, or something like that?
It doesn't look like specifying network security groups during instance creation are allowed, which means in my particular case I have to go in after the fact and manually add the NSG to the vNIC for my instance to be reachable.
Thoughts on adding this feature? Would be happy to contribute, too.
Thanks!
Details:
------Exception-------
Class: Kitchen::ActionFailed
Message: 1 actions failed.
Failed to complete #create action: [undefined method `length' for nil:NilClass] on ansible-role-autonomous-database-default-ociPlease see .kitchen/logs/kitchen.log for more details
Also try runningkitchen diagnose --all
for configuration
---
timestamp: 2023-02-14 20:40:59 UTC
kitchen_version: 3.3.2
plugins:
driver:
Oci:
class: Kitchen::Driver::Oci
version:
api_version:
provisioner:
AnsiblePlaybook:
class: Kitchen::Provisioner::AnsiblePlaybook
version:
api_version:
transport:
Ssh:
class: Kitchen::Transport::Ssh
version: 3.3.2
api_version: 1
verifier:
Inspec:
class: Kitchen::Verifier::Inspec
version: 2.6.1
api_version: 1
loader:
process_erb: true
process_local: true
process_global: true
global_config:
project_config:
filename: "/mnt/kitchen.yml"
raw_data:
provisioner:
name: ansible_playbook
hosts: localhost
require_chef_for_busser: false
ansible_connection: local
ansible_verbose: true
ansible_diff: true
ansible_verbosity: 2
idempotency_test: true
driver:
name: oci
verifier:
name: inspec
platforms:
- name: oci
os_type: ubuntu
suites:
- name: ansible-role-autonomous-database-default
driver:
compartment_id: <masked>
availability_domain: ZoCL:CA-TORONTO-1-AD-1
shape: VM.Standard.E2.1.Micro
subnet_id: <masked>
instance_type: dbaas
dbaas:
db_version: 19c
cpu_core_count: 1
db_name: dbaas1
admin_password: test123
initial_data_storage_size_in_gb: 20
db_workload: OLTP
use_private_ip: false
verifier:
systems:
- name: default
provisioner:
- test/integration/ansible-role-autonomous-database-default
reporter:
- cli
- junit2:test/reports/ansible-role-autonomous-database-default-junit.xml
local_config:
combined_config:
filename:
raw_data:
provisioner:
name: ansible_playbook
hosts: localhost
require_chef_for_busser: false
ansible_connection: local
ansible_verbose: true
ansible_diff: true
ansible_verbosity: 2
idempotency_test: true
driver:
name: oci
verifier:
name: inspec
platforms:
- name: oci
os_type: ubuntu
suites:
- name: ansible-role-autonomous-database-default
driver:
compartment_id: <masked>
availability_domain: ZoCL:CA-TORONTO-1-AD-1
shape: VM.Standard.E2.1.Micro
subnet_id: <masked>
instance_type: dbaas
dbaas:
db_version: 19c
cpu_core_count: 1
db_name: dbaas1
admin_password: test123
initial_data_storage_size_in_gb: 20
db_workload: OLTP
use_private_ip: false
verifier:
systems:
- name: default
provisioner:
- test/integration/ansible-role-autonomous-database-default
reporter:
- cli
- junit2:test/reports/ansible-role-autonomous-database-default-junit.xml
instances:
ansible-role-autonomous-database-default-oci:
platform:
os_type: ubuntu
shell_type: bourne
state_file: {}
driver:
availability_domain: ZoCL:CA-TORONTO-1-AD-1
compartment_id: <masked>
dbaas:
db_version: 19c
cpu_core_count: 1
db_name: dbaas1
admin_password: test123
initial_data_storage_size_in_gb: 20
db_workload: OLTP
freeform_tags: {}
hostname_prefix:
image_id:
instance_type: dbaas
kitchen_root: "/mnt"
log_level: :info
name: oci
oci_config_file:
oci_profile_name:
post_create_script:
pre_create_command:
preemptible_instance: false
proxy_url:
setup_winrm: false
shape: VM.Standard.E2.1.Micro
shape_config: {}
ssh_keypath: "/root/.ssh/id_rsa.pub"
subnet_id: <masked>
test_base_path: "/mnt/test/integration"
use_instance_principals: false
use_private_ip: false
user_data:
winrm_password:
winrm_user: opc
provisioner:
additional_copy_path:
additional_copy_role_path: false
additional_ssh_private_keys:
ansible_apt_repo: ppa:ansible/ansible
ansible_binary_path:
ansible_cfg_overwrite: true
ansible_cfg_path:
ansible_check: false
ansible_connection: local
ansible_diff: true
ansible_host_key_checking: true
ansible_inventory:
ansible_inventory_file:
ansible_limit:
ansible_omnibus_remote_path: "/opt/ansible"
ansible_omnibus_url: https://raw.githubusercontent.com/neillturner/omnibus-ansible/master/ansible_install.sh
ansible_platform: ''
ansible_playbook_command:
ansible_sles_repo: http://download.opensuse.org/repositories/systemsmanagement/openSUSE_Leap_15.2/systemsmanagement.repo
ansible_source_rev:
ansible_source_url: git://github.com/ansible/ansible.git
ansible_sudo: true
ansible_vault_password_file:
ansible_verbose: true
ansible_verbosity: 2
ansible_version:
ansible_yum_repo:
ansiblefile_path:
callback_plugins_path:
chef_bootstrap_url: https://www.chef.io/chef/install.sh
command_prefix:
custom_post_install_command:
custom_post_play_command:
custom_pre_install_command:
custom_pre_play_command:
debug:
downloads: {}
enable_yum_epel: false
env_vars: {}
extra_vars: {}
extra_vars_file:
filter_plugins_path:
ftp_proxy:
galaxy_ignore_certs: false
group_vars_path:
host_vars_path:
hosts: localhost
http_proxy:
https_proxy:
idempotency_skip_tags: []
idempotency_tags: []
idempotency_test: true
ignore_ansible_cfg: false
ignore_extensions_from_root:
- ".pyc"
ignore_paths_from_root: []
keep_playbook_path: false
kerberos_conf_file:
kitchen_root: "/mnt"
library_plugins_path:
lookup_plugins_path:
max_retries: 1
modules_path:
name: ansible_playbook
no_proxy:
playbook: "/mnt/test/integration/ansible-role-autonomous-database-default/default.yml"
python_sles_repo: http://download.opensuse.org/repositories/devel:/languages:/python/openSUSE_Leap_15.2/devel:languages:python.repo
recursive_additional_copy_path:
require_ansible_omnibus: false
require_ansible_repo: true
require_ansible_source: false
require_chef_for_busser: false
require_pip: false
require_pip3: false
require_ruby_for_busser: false
require_windows_support: false
requirements_collection_path: false
requirements_path: false
retry_on_exit_code: []
role_name:
roles_path: "/mnt"
root_path: "/tmp/kitchen"
shell_command: sh
show_command_output: false
ssh_known_hosts:
sudo: true
sudo_command: sudo -E
tags: []
test_base_path: "/mnt/test/integration"
update_package_repos: true
uploads: {}
wait_for_retry: 30
transport:
compression: false
compression_level: 0
connection_retries: 5
connection_retry_sleep: 1
connection_timeout: 15
keepalive: true
keepalive_interval: 60
keepalive_maxcount: 3
kitchen_root: "/mnt"
log_level: :info
max_ssh_sessions: 9
max_wait_until_ready: 600
name: ssh
port: 22
ssh_gateway:
ssh_gateway_port: 22
ssh_gateway_username:
ssh_http_proxy:
ssh_http_proxy_password:
ssh_http_proxy_port:
ssh_http_proxy_user:
ssh_key:
test_base_path: "/mnt/test/integration"
username: root
verifier:
backend_cache: true
chef_omnibus_root: "/opt/chef"
command_prefix:
debug:
ftp_proxy:
http_proxy:
https_proxy:
inspec_tests: []
kitchen_root: "/mnt"
load_plugins: true
log_level: :info
name: inspec
plugin_config: {}
root_path: "/tmp/verifier"
sudo: true
sudo_command: sudo -E
suite_name: ansible-role-autonomous-database-default
systems:
- name: default
provisioner:
- test/integration/ansible-role-autonomous-database-default
reporter:
- cli
- junit2:test/reports/ansible-role-autonomous-database-default-junit.xml
test_base_path: "/mnt/test/integration"
lifecycle_hooks:
debug:
kitchen_root: "/mnt"
log_level: :info
test_base_path: "/mnt/test/integration"
---
provisioner:
name: ansible_playbook
hosts: localhost
require_chef_for_busser: false
ansible_connection: local
ansible_verbose: true
ansible_diff: true
ansible_verbosity: 2
idempotency_test: true
driver:
name: oci
verifier:
name: inspec
platforms:
- name: oci
os_type: ubuntu
suites: # To add more test suites, copy/paste the whole section below and update the lines with inline comments as needed.
- name: ansible-role-autonomous-database-default
driver:
# These are mandatory
compartment_id: <masked>
availability_domain: ZoCL:CA-TORONTO-1-AD-1
shape: VM.Standard.E2.1.Micro
subnet_id: <masked>
instance_type: dbaas # If omit, default is compute
dbaas: # Required for dbaas instance_type
db_version: 19c
cpu_core_count: 1 # Free tier is 1 OCPU
db_name: dbaas1
admin_password: <masked>
initial_data_storage_size_in_gb: 20 # Free tier is 20GB
db_workload: OLTP # Acceptable values are 'OLTP' and 'DSS'. Default value is 'OLTP'
# These are optional
use_private_ip: false # Required to be false when using free tier
verifier:
systems:
- name: default # Name for the test instance
provisioner: # Directory under which the test cases are. If omit, default is <KITCHEN ROOT>/test/integration/<KITCHEN SUITE NAME>
- test/integration/ansible-role-autonomous-database-default
reporter: # test result outputs. cli for stdout. junit2 for pipeline use.
- cli # DO NOT REMOVE. It's useful for troubleshooting on pipeline terminal.
- junit2:test/reports/ansible-role-autonomous-database-default-junit.xml # Make sure the file name is *-junit.xml under test/reports directory as pipeline looks for it.
Line 144 of oci.rb attempts to find the proxy settings using URI.parse like so:
URI.parse('http://').find_proxy
This is fine unless there is a no_proxy environment variable set. The existence of this env var causes the following code in URI::generic to trigger:
name = 'no_proxy'
if no_proxy = env[name] || env[name.upcase]
return nil unless URI::Generic.use_proxy?(self.hostname, addr, self.port, no_proxy)
end
URI.parse(proxy_uri)
end
def self.use_proxy?(hostname, addr, port, no_proxy) # :nodoc:
hostname = hostname.downcase
dothostname = ".#{hostname}"
no_proxy.scan(/([^:,\s]+)(?::(\d+))?/) {|p_host, p_port|
if !p_port || port == p_port.to_i
if p_host.start_with?('.')
return false if hostname.end_with?(p_host.downcase)
else
return false if dothostname.end_with?(".#{p_host.downcase}")
end
if addr
begin
return false if IPAddr.new(p_host).include?(addr)
rescue IPAddr::InvalidAddressError
next
end
end
end
}
true
end
Because URI.parse is called with just 'http://' the hostname.downcase element of this code fails with NoMethodError (undefined method
downcase' for nil:NilClass)`
This could be resolved by doing something like this instead:
URI.parse('http://example.com').find_proxy
Although I'm a sysadmin not a developer so I'm not sure if that is the right solution.
kitchen create
-----> Starting Kitchen (v1.20.0)
-----> Creating <default-oracle>...
>>>>>> ------Exception-------
>>>>>> Class: Kitchen::ActionFailed
>>>>>> Message: 1 actions failed.
>>>>>> Failed to complete #create action: [Invalid VNIC creation parameters] on default-oracle
>>>>>> ----------------------
>>>>>> Please see .kitchen/logs/kitchen.log for more details
>>>>>> Also try running `kitchen diagnose --all` for configuration
changing the code to
def create_vnic_details(config)
OCI::Core::Models::CreateVnicDetails.new(
assign_public_ip: false,
display_name: 'primary_nic',
subnetId: config[:subnet_id]
)
end
works
currently, there is no guard in the driver to prevent the dynamic cluster_name generation from exceeding 11 characters.
according to the oci gem documentation: https://docs.us-phoenix-1.oraclecloud.com/tools/ruby/latest/index.html#label-Proxy+via+the+ApiClientProxySettings+object
the consumer of the gem is responsible to create/pass in an proxy object.
I really would love to just pass in the result of a parsed HTTP_PROXY=http://<user>:<password>@<address>:<port>
env variable.
do you think it should be an explicit config option in the .kitchen.yml file, or an implicit parsed value from the env variable, if set?
and I'm not so sure about
return Net::HTTP.new(hostname, port, @proxy_settings.proxy_address) if @proxy_settings.proxy_address.nil?
from oci-2.1.0/lib/oci/api_client.rb:281
def get_http_object(hostname, port)
return Net::HTTP.new(hostname, port) if @proxy_settings.nil?
return Net::HTTP.new(hostname, port, @proxy_settings.proxy_address) if @proxy_settings.proxy_address.nil?
Net::HTTP.new(
hostname,
port,
@proxy_settings.proxy_address,
@proxy_settings.proxy_port,
@proxy_settings.proxy_user,
@proxy_settings.proxy_password
)
end
I guess it then should fallback to env parsing?
Shouldn't that read
return Net::HTTP.new(hostname, port, :ENV) if @proxy_settings.proxy_address.nil?
or something like that ...
Add a winrm_password
option to allow the user to override the default randomly generated password.
When executing kitchen create
I get "Maximum wait time has been exceeded." in the same environment as worked in the past. I tested it with proxy and in other environment and other OSes with direct connection, same issue. Maybe Oracle changed something.
Executing telnet iaas.us-ashburn-1.oraclecloud.com 443
connects.
ping iaas.us-ashburn-1.oraclecloud.com
Pinging splat-api.us-ashburn-1.oci.oraclecloud.com [140.91.12.32] with 32 bytes of data:
Reply from 140.91.12.32: bytes=32 time=166ms TTL=53
Reply from 140.91.12.32: bytes=32 time=163ms TTL=53
Reply from 140.91.12.32: bytes=32 time=165ms TTL=53
Reply from 140.91.12.32: bytes=32 time=162ms TTL=53
-----> Creating <chef-lx>...
>>>>>> ------Exception-------
>>>>>> Class: Kitchen::ActionFailed
>>>>>> Message: 1 actions failed.
>>>>>> Failed to complete #create action: [Maximum wait time has been exceeded.] on chef-lx
>>>>>> ----------------------
>>>>>> Please see .kitchen/logs/kitchen.log for more details
>>>>>> Also try running `kitchen diagnose --all` for configuration
D ------Exception-------
D Class: Kitchen::ActionFailed
D Message: 1 actions failed.
>>>>>> Failed to complete #create action: [Maximum wait time has been exceeded.] on chef-lx
D ----------------------
D ------Backtrace-------
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/command.rb:181:in `report_errors'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/command.rb:172:in `run_action'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/command/action.rb:35:in `block in call'
D C:/opscode/chefdk/embedded/lib/ruby/2.6.0/benchmark.rb:293:in `measure'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/command/action.rb:33:in `call'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/cli.rb:52:in `perform'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/cli.rb:198:in `block (2 levels) in <class:CLI>'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/thor-0.20.3/lib/thor/command.rb:27:in `run'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/thor-0.20.3/lib/thor/invocation.rb:126:in `invoke_command'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/thor-0.20.3/lib/thor.rb:387:in `dispatch'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/thor-0.20.3/lib/thor/base.rb:466:in `start'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/bin/kitchen:11:in `block in <top (required)>'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/errors.rb:170:in `with_friendly_errors'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/bin/kitchen:11:in `<top (required)>'
D C:/opscode/chefdk/bin/kitchen:358:in `load'
D C:/opscode/chefdk/bin/kitchen:358:in `<main>'
D ----End Backtrace-----
D -Composite Exception--
D Class: Kitchen::ActionFailed
D Message: Failed to complete #create action: [Maximum wait time has been exceeded.] on chef-lx
D ----------------------
D ------Backtrace-------
D C:/Users/LeonardoTagliabue/AppData/Local/chefdk/gem/ruby/2.6.0/gems/oci-2.14.0/lib/oci/waiter.rb:136:in `block in wait_until'
D C:/Users/LeonardoTagliabue/AppData/Local/chefdk/gem/ruby/2.6.0/gems/oci-2.14.0/lib/oci/waiter.rb:129:in `loop'
D C:/Users/LeonardoTagliabue/AppData/Local/chefdk/gem/ruby/2.6.0/gems/oci-2.14.0/lib/oci/waiter.rb:129:in `wait_until'
D C:/Users/LeonardoTagliabue/AppData/Local/chefdk/gem/ruby/2.6.0/gems/kitchen-oci-1.12.0/lib/kitchen/driver/oci.rb:269:in `launch_compute_instance'
D C:/Users/LeonardoTagliabue/AppData/Local/chefdk/gem/ruby/2.6.0/gems/kitchen-oci-1.12.0/lib/kitchen/driver/oci.rb:194:in `launch_instance'
D C:/Users/LeonardoTagliabue/AppData/Local/chefdk/gem/ruby/2.6.0/gems/kitchen-oci-1.12.0/lib/kitchen/driver/oci.rb:73:in `create'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/instance.rb:495:in `public_send'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/instance.rb:495:in `block in perform_action'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/instance.rb:563:in `synchronize_or_call'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/instance.rb:524:in `block in action'
D C:/opscode/chefdk/embedded/lib/ruby/2.6.0/benchmark.rb:293:in `measure'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/instance.rb:523:in `action'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/instance.rb:495:in `perform_action'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/instance.rb:404:in `create_action'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/instance.rb:392:in `block (2 levels) in transition_to'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/lifecycle_hooks.rb:44:in `run_with_hooks'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/instance.rb:391:in `block in transition_to'D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/instance.rb:390:in `each'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/instance.rb:390:in `transition_to'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/instance.rb:128:in `create'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/command.rb:195:in `public_send'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/command.rb:195:in `run_action_in_thread'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/command.rb:166:in `block (2 levels) in run_action'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/logging-2.3.0/lib/logging/diagnostic_context.rb:474:in `block in create_with_logging_context'
D ----End Backtrace-----
D ---Nested Exception---
D Class: Kitchen::ActionFailed
D Message: Failed to complete #create action: [Maximum wait time has been exceeded.]
D ----------------------
D ------Backtrace-------
D C:/Users/LeonardoTagliabue/AppData/Local/chefdk/gem/ruby/2.6.0/gems/oci-2.14.0/lib/oci/waiter.rb:136:in `block in wait_until'
D C:/Users/LeonardoTagliabue/AppData/Local/chefdk/gem/ruby/2.6.0/gems/kitchen-oci-1.12.0/lib/kitchen/driver/oci.rb:269:in `launch_compute_instance'
D C:/Users/LeonardoTagliabue/AppData/Local/chefdk/gem/ruby/2.6.0/gems/kitchen-oci-1.12.0/lib/kitchen/driver/oci.rb:194:in `launch_instance'
D C:/Users/LeonardoTagliabue/AppData/Local/chefdk/gem/ruby/2.6.0/gems/kitchen-oci-1.12.0/lib/kitchen/driver/oci.rb:73:in `create'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/instance.rb:495:in `public_send'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/instance.rb:495:in `block in perform_action'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/instance.rb:563:in `synchronize_or_call'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/instance.rb:524:in `block in action'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/instance.rb:495:in `perform_action'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/instance.rb:404:in `create_action'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/instance.rb:392:in `block (2 levels) in transition_to'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/lifecycle_hooks.rb:44:in `run_with_hooks'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/instance.rb:391:in `block in transition_to'D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/instance.rb:390:in `each'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/instance.rb:390:in `transition_to'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/instance.rb:128:in `create'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/command.rb:195:in `public_send'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/command.rb:195:in `run_action_in_thread'
D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.8.0/lib/kitchen/command.rb:166:in `block (2 levels) in run_D C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/logging-2.3.0/lib/logging/diagnostic_context.rb:474:in `block in create_with_logging_context'
D ----End Backtrace-----
When creating autonomous database using oci cli and terraform, subnet_id is optional, from oci console, there is not even such option to choose. The "shape" setting doesn't exist when using none of the 3 tools above when creating autonomous database.
Currently it is hardcoded to use the public IP for kitchen to talk to the instance. We need to be able to set this to the private IP
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.