docli 0.0.2.pre.alpha.pre.12

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 06acab63a46aed64a70bd67cd7998673bd31ba0e
4
+ data.tar.gz: 0468079d371e5641e939eb7a77df4166c7998121
5
+ SHA512:
6
+ metadata.gz: 1945b36413d38282a14c7cc476e8f0f9e295a1a15e58606a1b507567dd58a401d34706ed62fb1adbc4e9260194f5e8924f34f8b9db925f3bf99a0d9c05edb47f
7
+ data.tar.gz: 177a01a6428f1a2883c63946d95d724a4702edbd83e11bffcb2cb4090229f675f7d56216399741abd82714186b86ecc0e3dd8ca4e2ce45d322644af8b9a31bc9
data/.byebug_history ADDED
@@ -0,0 +1,142 @@
1
+ exit
2
+ config
3
+ c
4
+ exit
5
+ options
6
+ exit
7
+ options.symbolize_keys
8
+ options
9
+ exit
10
+ options.symbolize_keys
11
+ options.symbolize_keys!
12
+ options
13
+ options.symbolize_keys!
14
+ options.symbolize_keys
15
+ options.symbolze_keys
16
+ options
17
+ exit
18
+ options.to_hash
19
+ options.class
20
+ options['filename']
21
+ options[:filename]
22
+ options
23
+ exit
24
+ method(:options).source_location
25
+ Docli::Utils.symbolize_keys(options)
26
+ options
27
+ exit
28
+ options
29
+ exit
30
+ Docli.client.droplets.all('tag_name' => 'ThanhPM').count
31
+ Docli.client.droplets.all(tag_name: 'ThanhPM').count
32
+ droplet_objects.map { |v| v.name}
33
+ droplet_objects.count
34
+ droplet_objects = Docli.client.droplets.all(tag_name: 'ThanhPM')
35
+ options.symbolize_keys!
36
+ options
37
+ c
38
+ })
39
+ status: drlet.status
40
+ size: drlet.size_slug,
41
+ region: "#{drlet.region.slug} (#{drlet.region.name})",
42
+ ipv4: drlet.networks.v4.find { |v| v.type == 'public' }.ip_address,
43
+ name: drlet.name,
44
+ id: drlet.id,
45
+ tp({
46
+ drlet.id
47
+ drlet.name
48
+ drlet.networks.v4.find { |v| v.type == 'public' }.ip_address
49
+ "#{drlet.region.slug} (#{drlet.region.name})"
50
+ "#{drlet.region.slug}(#{drlet.region.name})"
51
+ drlet.size_slug
52
+ drlet.status
53
+ drlet = droplet_object
54
+ drlet
55
+ drlet.status
56
+ [Ddrlet.status
57
+ c
58
+ droplet_object.region.name
59
+ droplet_object.region
60
+ droplet_object.name
61
+ droplet_object.id
62
+ droplet_object
63
+ exit
64
+ def l
65
+ name: drlet.name,
66
+ x = {
67
+ }
68
+ :status => drlet.status
69
+ size_slug: drlet.size_slug.
70
+ region: drlet.region.slug,
71
+ ipv4: drlet.networks.v4.find { |v| v.type == 'public' }.ip_address,
72
+ name: drlet.name,
73
+ e = {
74
+ e
75
+ }
76
+ :status => drlet.status
77
+ size_slug: drlet.size_slug.
78
+ region: drlet.region.slug,
79
+ ipv4: drlet.networks.v4.find { |v| v.type == 'public' }.ip_address,
80
+ name: drlet.name,
81
+ x = {
82
+ }
83
+ :status => drlet.status
84
+ size_slug: drlet.size_slug.
85
+ region: drlet.region.slug,
86
+ ipv4: drlet.networks.v4.find { |v| v.type == 'public' }.ip_address,
87
+ name: drlet.name,
88
+ tp {
89
+ drlet = e
90
+ e.as_json(only: [:id])
91
+ e
92
+ puts e.to_json
93
+ puts e.as_json
94
+ puts _
95
+ e.as_json
96
+ e.memory
97
+ e.sizes
98
+ e.size
99
+ e.status
100
+ e = droplet_objects.first
101
+ droplet_objects.count
102
+ droplet_objects
103
+ exit
104
+ puts ex.message
105
+ ex.message
106
+ ex.class
107
+ ex.cause
108
+ ex.methods
109
+ ex.message
110
+ ex.body
111
+ ex.message
112
+ ex
113
+ c
114
+ exit
115
+ access_token
116
+ exit
117
+ access_token
118
+ exit
119
+ access_token
120
+ exit
121
+ current_access_token
122
+ new_access_token
123
+ access_token
124
+ exit
125
+ new_access_token
126
+ access_token
127
+ exit
128
+ new_access_token
129
+ access_token
130
+ exit
131
+ FileUtils::mkdir_p Docli::CONFIG_FILE.split('/')[0..-2].join('/')
132
+ FileUtils::mkdir_p Docli::CONFIG_FILE.split('/')[0..-1].join('/')
133
+ FileUtils::mkdir_p Docli::CONFIG_FILE
134
+ FileUtils::mkdir_p Docli::CONFIG_FILE.split('/')[0..-1].join
135
+ Docli::CONFIG_FILE
136
+ exit
137
+ config[:current_command].name
138
+ config[:current_command].to_s
139
+ config[:current_command]
140
+ config
141
+ local_options
142
+ args
data/.gitignore ADDED
@@ -0,0 +1,13 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+
11
+ # rspec failure tracking
12
+ .rspec_status
13
+ *.gem
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/.travis.yml ADDED
@@ -0,0 +1,18 @@
1
+ sudo: false
2
+ dist: trusty
3
+ language: ruby
4
+ rvm:
5
+ - 2.3.0
6
+ gemfile:
7
+ - Gemfile
8
+ before_install:
9
+ - gem install bundler -v 1.14.6
10
+ before_script:
11
+ - bundle install
12
+ script:
13
+ - rake
14
+ deploy:
15
+ provider: rubygems
16
+ api_key: "23273da484b0a88a720e4216103b67e9"
17
+ on:
18
+ branch: master
@@ -0,0 +1,74 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ In the interest of fostering an open and welcoming environment, we as
6
+ contributors and maintainers pledge to making participation in our project and
7
+ our community a harassment-free experience for everyone, regardless of age, body
8
+ size, disability, ethnicity, gender identity and expression, level of experience,
9
+ nationality, personal appearance, race, religion, or sexual identity and
10
+ orientation.
11
+
12
+ ## Our Standards
13
+
14
+ Examples of behavior that contributes to creating a positive environment
15
+ include:
16
+
17
+ * Using welcoming and inclusive language
18
+ * Being respectful of differing viewpoints and experiences
19
+ * Gracefully accepting constructive criticism
20
+ * Focusing on what is best for the community
21
+ * Showing empathy towards other community members
22
+
23
+ Examples of unacceptable behavior by participants include:
24
+
25
+ * The use of sexualized language or imagery and unwelcome sexual attention or
26
+ advances
27
+ * Trolling, insulting/derogatory comments, and personal or political attacks
28
+ * Public or private harassment
29
+ * Publishing others' private information, such as a physical or electronic
30
+ address, without explicit permission
31
+ * Other conduct which could reasonably be considered inappropriate in a
32
+ professional setting
33
+
34
+ ## Our Responsibilities
35
+
36
+ Project maintainers are responsible for clarifying the standards of acceptable
37
+ behavior and are expected to take appropriate and fair corrective action in
38
+ response to any instances of unacceptable behavior.
39
+
40
+ Project maintainers have the right and responsibility to remove, edit, or
41
+ reject comments, commits, code, wiki edits, issues, and other contributions
42
+ that are not aligned to this Code of Conduct, or to ban temporarily or
43
+ permanently any contributor for other behaviors that they deem inappropriate,
44
+ threatening, offensive, or harmful.
45
+
46
+ ## Scope
47
+
48
+ This Code of Conduct applies both within project spaces and in public spaces
49
+ when an individual is representing the project or its community. Examples of
50
+ representing a project or community include using an official project e-mail
51
+ address, posting via an official social media account, or acting as an appointed
52
+ representative at an online or offline event. Representation of a project may be
53
+ further defined and clarified by project maintainers.
54
+
55
+ ## Enforcement
56
+
57
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
+ reported by contacting the project team at phamminhthanh69@gmail.com. All
59
+ complaints will be reviewed and investigated and will result in a response that
60
+ is deemed necessary and appropriate to the circumstances. The project team is
61
+ obligated to maintain confidentiality with regard to the reporter of an incident.
62
+ Further details of specific enforcement policies may be posted separately.
63
+
64
+ Project maintainers who do not follow or enforce the Code of Conduct in good
65
+ faith may face temporary or permanent repercussions as determined by other
66
+ members of the project's leadership.
67
+
68
+ ## Attribution
69
+
70
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71
+ available at [http://contributor-covenant.org/version/1/4][version]
72
+
73
+ [homepage]: http://contributor-covenant.org
74
+ [version]: http://contributor-covenant.org/version/1/4/
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2017 Wayarmy
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,47 @@
1
+ # DOCLI
2
+
3
+ ![Linux Build Status](https://img.shields.io/travis/wayarmy/docli/master.svg?label=Linux%20build)
4
+
5
+ a commandline tool for DigitalOcean
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'docli'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install docli
22
+
23
+ ## Usage
24
+
25
+ ```
26
+ $ docli
27
+ Commands:
28
+ docli config # Init or update config
29
+ docli create # Create a resource by filename or stdin
30
+ docli delete # Delete resources by filenames, stdin, resources and names, or by resources and label selector
31
+ docli get # Display one or many resource
32
+ docli help [COMMAND] # Describe available commands or one specific command
33
+ docli version # Show version information
34
+ ```
35
+
36
+ ## Contributing
37
+
38
+ Bug reports and pull requests are welcome on GitHub at https://github.com/wayarmy/docli. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
39
+
40
+ ## Roadmap
41
+
42
+ * May 2017: Able to create/show droplets from YAML config file
43
+ > Vision: DigitalOcean infrastructure as code
44
+
45
+ ## License
46
+
47
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "docli"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
data/dev-build.sh ADDED
@@ -0,0 +1,4 @@
1
+ #!/bin/en bash
2
+
3
+ gem build docli.gemspec
4
+ gem install docli-0.0.2.gem
data/docli.gemspec ADDED
@@ -0,0 +1,54 @@
1
+ # coding: utf-8
2
+
3
+ lib = File.expand_path('../lib', __FILE__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+
6
+ require 'docli/version'
7
+
8
+ Gem::Specification.new do |spec|
9
+ spec.name = 'docli'
10
+ spec.version = Docli::VERSION
11
+ spec.version = "#{spec.version}-alpha-#{ENV['TRAVIS_BUILD_NUMBER']}" if ENV['TRAVIS']
12
+ spec.authors = ['Wayarmy']
13
+ spec.email = ['quanpc294@gmail.com']
14
+
15
+ spec.summary = %q{CommandLine Interface for DigitalOcean}
16
+ spec.description = %q{CommandLine Interface for DigitalOcean}
17
+ spec.homepage = 'https://github.com/wayarmy/docli'
18
+ spec.license = 'MIT'
19
+
20
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
21
+ f.match(%r{^(test|spec|features)/})
22
+ end
23
+ spec.bindir = 'exe'
24
+ spec.executables = 'docli' # spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
25
+ spec.require_paths = ['lib']
26
+
27
+ spec.add_development_dependency 'bundler', '~> 1.14'
28
+ spec.add_development_dependency 'rake', '~> 10.0'
29
+ spec.add_development_dependency 'rspec', '~> 3.0'
30
+ spec.add_development_dependency 'byebug', '~> 9.0.6'
31
+
32
+ spec.add_runtime_dependency 'thor', '~> 0.19.4'
33
+ spec.add_runtime_dependency 'colorize', '0.8.1'
34
+ spec.add_runtime_dependency 'json', '2.0.4'
35
+ spec.add_runtime_dependency 'table_print', '1.5.6'
36
+ spec.add_runtime_dependency 'droplet_kit', '1.4.3'
37
+ spec.add_runtime_dependency 'thread_safe', '~> 0.3'
38
+ spec.add_runtime_dependency 'activesupport', '< 5.1'
39
+ spec.add_runtime_dependency 'concurrent-ruby', '1.0.5'
40
+ spec.add_runtime_dependency 'i18n', '0.8.1'
41
+ spec.add_runtime_dependency 'minitest', '5.10.1'
42
+ spec.add_runtime_dependency 'addressable', '2.3.8'
43
+ spec.add_runtime_dependency 'ice_nine', '0.11.2'
44
+ spec.add_runtime_dependency 'multipart-post', '2.0.0'
45
+ spec.add_runtime_dependency 'kartograph', '0.2.4'
46
+ spec.add_runtime_dependency 'equalizer', '0.0.11'
47
+ spec.add_runtime_dependency 'tzinfo', '1.2.3'
48
+ spec.add_runtime_dependency 'descendants_tracker', '0.0.4'
49
+ spec.add_runtime_dependency 'resource_kit', '0.1.5'
50
+ spec.add_runtime_dependency 'faraday', '0.9.2'
51
+ spec.add_runtime_dependency 'axiom-types', '0.1.1'
52
+ spec.add_runtime_dependency 'coercible', '1.0.0'
53
+ spec.add_runtime_dependency 'virtus', '1.0.5'
54
+ end
@@ -0,0 +1,20 @@
1
+ ---
2
+ new_resources:
3
+ resource_type: droplets
4
+ second_droplets:
5
+ specs:
6
+ name: ['droplet2.example.com', 'droplets3.example.com']
7
+ size: '512mb'
8
+ region: 'sgp1'
9
+ image: '21669205'
10
+ ssh_keys: ['03:6a:93:ee:e3:67:5c:ff:35:09:34:88:4c:6c:44:fc']
11
+ backups: true
12
+ ipv6: true
13
+ private_networking: true
14
+ user_data:
15
+ scripts: |
16
+ #!/bin/bash -xv
17
+ echo "Hello World"
18
+ monitoring: true
19
+ tags: ['quanpc_test']
20
+
@@ -0,0 +1,231 @@
1
+ apiVersion: 2.0
2
+ droplets-group-1:
3
+ resource: Droplet
4
+ metadata:
5
+ names:
6
+ - my-first-droplet
7
+ - my-second-droplet
8
+ spec:
9
+ region: sgp1
10
+ size: 512mb
11
+ image: ubuntu-14-04-x64
12
+ ssh_keys: null
13
+ backups: true
14
+ ipv6: true
15
+ private_networking: true
16
+ user_data: |
17
+ #!/bin/bash -xv
18
+ echo "Hello World"
19
+ monitoring: true
20
+ volume: {get_attr: "volume_group_1"}
21
+ tags:
22
+ - test
23
+ - docli
24
+ - example
25
+ ---
26
+ volumes-group-1:
27
+ resource: Volume
28
+ metadata:
29
+ names:
30
+ - volume1
31
+ - volume2
32
+ spec:
33
+ description: "string"
34
+ region: "sgp1"
35
+ snapshot_id: "snapshot_id"
36
+ size_gigabytes: 123
37
+ ---
38
+ certificates-group-1:
39
+ resource: Certificate
40
+ metadata:
41
+ names:
42
+ - cert-1
43
+ - cert-2
44
+ spec:
45
+ private_key: |
46
+ "-----BEGIN PRIVATE KEY-----
47
+ MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDBIZMz8pnK6V52
48
+ SVf+CYssOfCQHAx5f0Ou5rYbq3xNh8VHAIYJCQ1QxQIxKSP6+uODSYrb2KWyurP1
49
+ DwGb8OYm0J3syEDtCUQik1cpCzpeNlAZ2f8FzXyYQAqPopxdRpsFz8DtZnVvu86X
50
+ wrE4oFPl9MReICmZfBNWylpV5qgFPoXyJ70ZAsTm3cEe3n+LBXEnY4YrVDRWxA3w
51
+ Z2mzZ03HZ1hHrxK9CMnS829U+8sK+UneZpCO7yLRPuxwhmps0wpK/YuZZfRAKF1F
52
+ ZRnak/SIQ28rnWufmdg16YqqHgl5JOgnb3aslKRvL4dI2Gwnkd2IHtpZnTR0gxFX
53
+ fqqbQwuRAgMBAAECggEBAILLmkW0JzOkmLTDNzR0giyRkLoIROqDpfLtjKdwm95l
54
+ 9NUBJcU4vCvXQITKt/NhtnNTexcowg8pInb0ksJpg3UGE+4oMNBXVi2UW5MQZ5cm
55
+ cVkQqgXkBF2YAY8FMaB6EML+0En2+dGR/3gIAr221xsFiXe1kHbB8Nb2c/d5HpFt
56
+ eRpLVJnK+TxSr78PcZA8DDGlSgwvgimdAaFUNO2OqB9/0E9UPyKk2ycdff/Z6ldF
57
+ 0hkCLtdYTTl8Kf/OwjcuTgmA2O3Y8/CoQX/L+oP9Rvt9pWCEfuebiOmHJVPO6Y6xgtQVEXwmF1pDHH4Qtz/e6UZTdYeMl9G4aNO2CawwcaYECgYEA57imgSOG4XsJLRhK
58
+ GGncV9R/xhy4AbDWLtAMzQRX4ktvKCaHWyQV2XK2we/cu29NLv2Y89WmerTNPOU+
59
+ P8+pB31uty2ELySVn15QhKpQClVEAlxCnnNjXYrii5LOM80+lVmxvQwxVd8Yz8nj
60
+ IntyioXNBEnYS7V2RxxFGgFun1cCgYEA1V3W+Uyamhq8JS5EY0FhyGcXdHd70K49
61
+ W1ou7McIpncf9tM9acLS1hkI98rd2T69Zo8mKoV1V2hjFaKUYfNys6tTkYWeZCcJ
62
+ 3rW44j9DTD+FmmjcX6b8DzfybGLehfNbCw6n67/r45DXIV/fk6XZfkx6IEGO4ODt
63
+ Nfnvx4TuI1cCgYBACDiKqwSUvmkUuweOo4IuCxyb5Ee8v98P5JIE/VRDxlCbKbpx
64
+ pxEam6aBBQVcDi+n8o0H3WjjlKc6UqbW/01YMoMrvzotxNBLz8Y0QtQHZvR6KoCG
65
+ RKCKstxTcWflzKuknbqN4RapAhNbKBDJ8PMSWfyDWNyaXzSmBdvaidbF1QKBgDI0
66
+ o4oD0Xkjg1QIYAUu9FBQmb9JAjRnW36saNBEQS/SZg4RRKknM683MtoDvVIKJk0E
67
+ sAlfX+4SXQZRPDMUMtA+Jyrd0xhj6zmhbwClvDMr20crF3fWdgcqtft1BEFmsuyW
68
+ JUMe5OWmRkjPI2+9ncDPRAllA7a8lnSV/Crph5N/AoGBAIK249temKrGe9pmsmAo
69
+ QbNuYSmwpnMoAqdHTrl70HEmK7ob6SIVmsR8QFAkH7xkYZc4Bxbx4h1bdpozGB+/
70
+ AangbiaYJcAOD1QyfiFbflvI1RFeHgrk7VIafeSeQv6qu0LLMi2zUbpgVzxt78Wg
71
+ eTuK2xNR0PIM8OI7pRpgyj1I
72
+ -----END PRIVATE KEY-----"
73
+ leaf_key: |
74
+ "-----BEGIN CERTIFICATE-----
75
+ MIIFFjCCA/6gAwIBAgISA0AznUJmXhu08/89ZuSPC/kRMA0GCSqGSIb3DQEBCwUA
76
+ MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
77
+ ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xNjExMjQwMDIzMDBaFw0x
78
+ NzAyMjIwMDIzMDBaMCQxIjAgBgNVBAMTGWNsb3VkLmFuZHJld3NvbWV0aGluZy5j
79
+ b20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDBIZMz8pnK6V52SVf+
80
+ CYssOfCQHAx5f0Ou5rYbq3xNh8VWHIYJCQ1QxQIxKSP6+uODSYrb2KWyurP1DwGb
81
+ 8OYm0J3syEDtCUQik1cpCzpeNlAZ2f8FzXyYQAqPopxdRpsFz8DtZnVvu86XwrE4
82
+ oFPl9MReICmZfBNWylpV5qgFPoXyJ70ZAsTm3cEe3n+LBXEnY4YrVDRWxA3wZ2mz
83
+ Z03HZ1hHrxK9CMnS829U+8sK+UneZpCO7yLRPuxwhmps0wpK/YuZZfRAKF1FZRna
84
+ k/SIQ28rnWufmdg16YqqHgl5JOgnb3aslKRvL4dI2Gwnkd2IHtpZnTR0gxFXfqqb
85
+ QwuRAgMBAAGjggIaMIICFjAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYB
86
+ BQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFLsAFcxAhFX1
87
+ MbCnzr9hEO5rL4jqMB8GA1UdIwQYMBaAFKhKamMEfd265tE5t6ZFZe/zqOyhMHAG
88
+ CCsGAQUFBwEBBGQwYjAvBggrBgEFBQcwAYYjaHR0cDovL29jc3AuaW50LXgzLmxl
89
+ dHNlbmNyeXB0Lm9yZy8wLwYIKwYBBQUHMAKGI2h0dHA6Ly9jZXJ0LmludC14My5s
90
+ ZXRzZW5jcnlwdC5vcmcvMCQGA1UdEQQdMBuCGWNsb3VkLmFuZHJld3NvbWV0aGlu
91
+ Zy5jb20wgf4GA1UdIASB9jCB8zAIBgZngQwBAgWrgeYGCysGAQQBgt8TAQEBMIHW
92
+ MCYGCCsGAQUFBwIBFhpodHRwOi8vY3BzLmxldHNlbmNyeXB0Lm9yZzCBqwYIKwYB
93
+ BQUHAgIwgZ4MgZtUaGlzIENlcnRpZmljYXRlIG1heSBvbmx5IGJlIHJlbGllZCB1
94
+ cG9uIGJ5IFJlbHlpbmcgUGFydGllcyBhbmQgb25seSQ2ziBhY2NvcmRhbmNlIHdp
95
+ dGggdGhlIENlcnRpZmljYXRlIFBvbGljeSBmb3VuZCBhdCBodHRwczovL2xldHNl
96
+ bmNyeXB0Lm9yZy9yZXBvc2l0b3J5LzANBgkqhkiG9w0BAQsFAAOCAQEAOZVQvrjM
97
+ PKXLARTjB5XsgfyDN3/qwLl7SmwGkPe+B+9FJpfScYG1JzVuCj/SoaPaK34G4x/e
98
+ iXwlwOXtMOtqjQYzNu2Pr2C+I+rVmaxIrCUXFmC205IMuUBEeWXG9Y/HvXQLPabD
99
+ D3Gdl5+Feink9SDRP7G0HaAwq13hI7ARxkL9p+UIY39X0dV3WOboW2Re8nrkFXJ7
100
+ q9Z6shK5QgpBfsLjtjNsQzaGV3ve1gOg25aTJGearBWOvEjJNA1wGMoKVXOtYwm/
101
+ WyWoVdCQ8HmconcbJB6xc0UZ1EjvzRr5ZIvSa5uHZD0L3m7/kpPWlAlFJ7hHASPu
102
+ UlF1zblDmg2Iaw==
103
+ -----END CERTIFICATE-----"
104
+ certificate_chain: |
105
+ "-----BEGIN CERTIFICATE-----
106
+ MIIFFjCCA/6gAwIBAgISA0AznUJmXhu08/89ZuSPC/kRMA0GCSqGSIb3DQEBCwUA
107
+ MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
108
+ ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xNjExMjQwMDIzMDBaFw0x
109
+ NzAyMjIwMDIzMDBaMCQxIjAgBgNVBAMTGWNsb3VkLmFuZHJld3NvbWV0aGluZy5j
110
+ b20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDBIZMz7tnK6V52SVf+
111
+ CYssOfCQHAx5f0Ou5rYbq3xNh8VHAIYJCQ1QxQIxKSP6+uODSYrb2KWyurP1DwGb
112
+ 8OYm0J3syEDtCUQik1cpCzpeNlAZ2f8FzXyYQAqPopxdRpsFz8DtZnVvu86XwrE4
113
+ oFPl9MReICmZfBNWylpV5qgFPoXyJ70ZAsTm3cEe3n+LBXEnY4YrVDRWxA3wZ2mz
114
+ Z03HZ1hHrxK9CMnS829U+8sK+UneZpCO7yLRPuxwhmps0wpK/YuZZfRAKF1FZRna
115
+ k/SIQ28rnWufmdg16YqqHgl5JOgnb3aslKRvL4dI2Gwnkd2IHtpZnTR0gxFXfqqb
116
+ QwuRAgMBAAGjggIaMIICFjAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYB
117
+ BQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFLsAFcxAhFX1
118
+ MbCnzr9hEO5rL4jqMB8GA1UdIwQYMBaAFKhKamMEfd265tE5t6ZFZe/zqOyhMHAG
119
+ CCsGAQUFBwEBBGQwYjAvBggrBgEFBQcwAYYjaHR0cDovL29jc3AuaW50LXgzLmxl
120
+ dHNlbmNyeXB0Lm9yZy8wLwYIKwYBBQUHMAKGI2h0dHA6Ly9jZXJ0LmludC14My5s
121
+ ZXRzZW5jcnlwdC5vcmcvMCQGA1UdEQQdMBuCGWNsb3VkLmFuZHJld3NvbWV0aGlu
122
+ Zy5jb20wgf4GA1UdIASB9jCB8zAIBgZngQwBAgEwgeWECysGAQQBgt8TAQEBMIHW
123
+ MCYGCCsGAQUFBwIBFhpodHRwOi8vY3BzLmxldHNlbmNyeXB0Lm9yZzCBqwYIKwYB
124
+ BQUHAgIwgZ4MgZtUaGlzIENlcnRpZmljYXRlIG1heSBvbmx5IGJlIHJlbGllZCB1
125
+ cG9uIGJ5IFJlbHlpbmcgUGFydGllcyBhbmQgb25seSQ2ziBhY2NvcmRhbmNlIHdp
126
+ dGggdGhlIENlcnRpZmljYXRlIFBvbGljeSBmb3VuZCBhdCBsdHRwczovL2xldHNl
127
+ bmNyeXB0Lm9yZy9yZXBvc2l0b3J5LzANBgkqhkiG9w0BAQsFAAOCAQEAOZVQvrjM
128
+ PKXLARTjB5XsgfyDN3/qwLl7SmwGkPe+B+9FJpfScYG1JzVuCj/SoaPaK34G4x/e
129
+ iXwlwOXtMOtqjQYzNu2Pr2C+I+rVmaxIrCUXFmC205IMuUBEeWXG9Y/HvXQLPabD
130
+ D3Gdl5+Feink9SDRP7G0HaAwq13hI7ARxkL3o+UIY39X0dV3WOboW2Re8nrkFXJ7
131
+ q9Z6shK5QgpBfsLjtjNsQzaGV3ve1gOg25aTJGearBWOvEjJNA1wGMoKVXOtYwm/
132
+ WyWoVdCQ8HmconcbJB6xc0UZ1EjvzRr5ZIvSa5uHZD0L3m7/kpPWlAlFJ7hHASPu
133
+ UlF1zblDmg2Iaw==
134
+ -----END CERTIFICATE-----
135
+ -----BEGIN CERTIFICATE-----
136
+ MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/
137
+ MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
138
+ DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow
139
+ SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT
140
+ GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC
141
+ AQ8AMIIBCgKCAQEAnNMM8FrlLsd3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF
142
+ q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8
143
+ SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0
144
+ Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA
145
+ a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj
146
+ /PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIPOIUo4IBfTCCAXkwEgYDVR0T
147
+ AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG
148
+ CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv
149
+ bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k
150
+ c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw
151
+ VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC
152
+ ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz
153
+ MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu
154
+ Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF
155
+ AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo
156
+ uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/
157
+ wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu
158
+ X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG
159
+ PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6
160
+ KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg==
161
+ -----END CERTIFICATE-----"
162
+
163
+ ---
164
+ domains-group-1:
165
+ resource: Domains
166
+ metadata:
167
+ names:
168
+ - domain1.com
169
+ - domain2.com
170
+ spec:
171
+ ttl: 120
172
+ zone_file: nil
173
+ ---
174
+ domainrecords-group-1:
175
+ resource: DomainRecord
176
+ metadata:
177
+ names:
178
+ - record1.domain.com
179
+ - record2.domain.com
180
+ spec:
181
+ ttl:
182
+ data:
183
+ type:
184
+ priority:
185
+ port:
186
+ weight:
187
+ ---
188
+ new-ssh-keys:
189
+ resource: SshKeys
190
+ metadata:
191
+ names:
192
+ - key-1
193
+ - key-2
194
+ spec:
195
+ public_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBAboEDAuox8j623C1uw2SBa1yYrFLjvi1MWGOVIyEycus/3Dob6+CZo1p9GPTy3cQfA4anoDvCrzTF4VKG53v2DBSTkELO40UFVrPYFx9jELkHSpVkZ76eDqSKSiDcPVax47IPYfmrY7D2ww8UtgIUGPLw3i7a23bAAh06LU5ghLEcd0c8CDMaAIPAIxz5GHBLNHUlwnnh8zveeDwxOCmj9MnPitCesZiomORIuidgojeqoIK7gI3S80EP5gs0egcmPG84grFqACNquoAsTq2osJqHWt8LG6NaXGqjqrAD+QUDZUI9DP0wD25XxMkBUU+HYvH6rNpR2G+4eSFWw9d quanpc@vccloud.vn"
196
+
197
+ ---
198
+ load-balancer-group-1:
199
+ resource: LoadBalancer
200
+ metadata:
201
+ names:
202
+ - LB1
203
+ - LB2
204
+ spec:
205
+ algorithm: round_robin | least_connections
206
+ region: "sgp1"
207
+ forwarding_rules:
208
+ - entry_protocol: "http"
209
+ entry_port: 80
210
+ target_protocol: "http"
211
+ target_port: 80
212
+ certificate_id: "testing"
213
+ tls_passthrough: false
214
+ - entry_protocol: "https"
215
+ entry_port: 444
216
+ target_protocol: "https"
217
+ target_port: 443
218
+ tls_passthrough: true
219
+ health_check:
220
+ - protocol: "http"
221
+ port: 80
222
+ path: "/"
223
+ check_interval_seconds: 10
224
+ response_timeout_seconds: 5
225
+ healthy_threshold: 5
226
+ unhealthy_threshold: 3
227
+ stickey_sessions:
228
+ - type: none
229
+ droplets_id:
230
+ - get_attr: droplets-group-1
231
+ tag: "web/prod"