coral_vagrant 0.2.8 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/coral_vagrant.rb DELETED
@@ -1,76 +0,0 @@
1
- home = File.dirname(__FILE__)
2
-
3
- $:.unshift(home) unless
4
- $:.include?(home) || $:.include?(File.expand_path(home))
5
-
6
- #-------------------------------------------------------------------------------
7
-
8
- require 'rubygems'
9
- require 'optparse'
10
- require 'vagrant'
11
- require 'coral_cloud'
12
- require 'coral_plan'
13
-
14
- #---
15
-
16
- # Include top level Vagrant commands
17
- [ :coral_base ].each do |name|
18
- require File.join('coral_vagrant', 'commands', name.to_s + '.rb')
19
- end
20
-
21
- require 'plugin.rb'
22
-
23
- #---
24
-
25
- # Include Coral Vagrant commands
26
- Dir.glob(File.join(home, 'coral_vagrant', 'commands', 'coral', '*.rb')).each do |file|
27
- require file
28
- end
29
-
30
- #*******************************************************************************
31
- # Coral Vagrant Library
32
- #
33
- # This provides a data model and commands that interface with Vagrant.
34
- #
35
- # Author:: Adrian Webb (mailto:adrian.webb@coraltech.net)
36
- # License:: GPLv3
37
- module Coral
38
-
39
- #-----------------------------------------------------------------------------
40
- # Constructor / Destructor
41
- def self.init_vagrant(directory, submodule = '', config_file = [ 'config', 'cloud.json' ])
42
- return Coral::Vagrant.init(directory, submodule, config_file)
43
- end
44
-
45
- #-----------------------------------------------------------------------------
46
- # Accessors / Modifiers
47
-
48
- def self.vagrant
49
- return Coral::Vagrant.get
50
- end
51
-
52
- #*******************************************************************************
53
-
54
- module Vagrant
55
-
56
- VERSION = File.read(File.join(File.dirname(__FILE__), '..', 'VERSION'))
57
-
58
- #-----------------------------------------------------------------------------
59
- # Constructor / Destructor
60
-
61
- def self.init(directory, submodule = '', config_file = [ 'config', 'cloud.json' ])
62
- return Coral.create_cloud(:vagrant, {
63
- :directory => directory,
64
- :submodule => submodule,
65
- :config_file => config_file,
66
- })
67
- end
68
-
69
- #-----------------------------------------------------------------------------
70
- # Accessors / Modifiers
71
-
72
- def self.get
73
- return Coral.cloud(:vagrant)
74
- end
75
- end
76
- end
@@ -1,41 +0,0 @@
1
- module Coral
2
- module Vagrant
3
- module SubCommand
4
- class CoralAdd < ::Vagrant.plugin('2', :command)
5
-
6
- #-----------------------------------------------------------------------
7
- # Execution
8
-
9
- def execute
10
- options = {}
11
- success = true
12
-
13
- opts = OptionParser.new do |opts|
14
- opts.banner = 'Usage: coral add -h --repo={repository} {name} [ {type} ]'
15
- opts.separator ''
16
-
17
- options[:repo] = ''
18
- opts.on('-r', '--repo REPOSITORY', "Git repository URL of sub-project to add to project type") do |r|
19
- options[:repo] = r
20
- end
21
- end
22
-
23
- #---
24
-
25
- args = parse_options(opts)
26
- return unless args
27
-
28
- raise ::Vagrant::Errors::CLIInvalidUsage, :help => opts.help.chomp if args.length < 1
29
-
30
- project_name = args[0]
31
- project_type = ( args.size < 2 ? 'module' : args[1] )
32
-
33
- #---------
34
- # Start
35
-
36
- exit success ? 0 : 1
37
- end
38
- end
39
- end
40
- end
41
- end
@@ -1,61 +0,0 @@
1
- module Coral
2
- module Vagrant
3
- module SubCommand
4
- class CoralConfig < ::Vagrant.plugin('2', :command)
5
-
6
- #-----------------------------------------------------------------------
7
- # Execution
8
-
9
- def execute
10
- options = {}
11
- success = true
12
-
13
- opts = OptionParser.new do |opts|
14
- opts.banner = 'Usage: coral config -ha --dir={config_dir} {config_name} [ {value} ]'
15
- opts.separator ''
16
-
17
- opts.on('-a', '--add', 'Add configuration value to existing values instead of overriding') do |a|
18
- options[:add] = a
19
- end
20
-
21
- options[:repo] = '.'
22
- opts.on('-r', '--repo REPO_DIR', 'Local directory of repository relative to the Vagrantfile root (.)') do |r|
23
- options[:repo] = r
24
- end
25
-
26
- options[:directory] = 'config'
27
- opts.on('-d', '--dir DIRECTORY', 'Root directory of configuration files (config)') do |d|
28
- options[:directory] = d
29
- end
30
-
31
- options[:ext] = 'json'
32
- opts.on('-e', '--ext FILE_EXTENSION', 'Configuration file extension (json)') do |e|
33
- options[:ext] = e
34
- end
35
- end
36
-
37
- #---
38
-
39
- args = parse_options(opts)
40
- return unless args
41
-
42
- raise ::Vagrant::Errors::CLIInvalidUsage, :help => opts.help.chomp if args.length < 1
43
-
44
- config_elements = args[0].gsub(/\s+/, '').split(/\@/)
45
- property = config_elements.pop
46
- config_file = File.join(config_elements)
47
-
48
- raise ::Vagrant::Errors::CLIInvalidUsage, :help => opts.help.chomp unless property && config_file
49
-
50
- config_file = "#{config_file}." + options[:ext]
51
- value = ( args.size < 2 ? nil : args[1] )
52
-
53
- #---------
54
- # Start
55
-
56
- exit success ? 0 : 1
57
- end
58
- end
59
- end
60
- end
61
- end
@@ -1,41 +0,0 @@
1
- module Coral
2
- module Vagrant
3
- module SubCommand
4
- class CoralCreate < ::Vagrant.plugin('2', :command)
5
-
6
- #-----------------------------------------------------------------------
7
- # Execution
8
-
9
- def execute
10
- options = {}
11
- success = true
12
- default_repo = 'git://github.com/coralnexus/cluster-core.git'
13
-
14
- #---
15
-
16
- opts = OptionParser.new do |opts|
17
- opts.banner = 'Usage: coral create -h --repo={cluster_repository} [ {project_path} ]'
18
- opts.separator ""
19
-
20
- options[:repo] = default_repo
21
- opts.on('-r', '--repo REPOSITORY', "Git repository URL of Coral cluster to start project from (#{default_repo})") do |r|
22
- options[:repo] = r
23
- end
24
- end
25
-
26
- #---
27
-
28
- args = parse_options(opts)
29
- return unless args
30
-
31
- project_path = ( args.empty? ? '.' : args[0] )
32
-
33
- #---------
34
- # Start
35
-
36
- exit success ? 0 : 1
37
- end
38
- end
39
- end
40
- end
41
- end
@@ -1,47 +0,0 @@
1
- module Coral
2
- module Vagrant
3
- module SubCommand
4
- class CoralImage < ::Vagrant.plugin('2', :command)
5
-
6
- #-----------------------------------------------------------------------
7
- # Execution
8
-
9
- def execute
10
- options = {}
11
- success = true
12
-
13
- opts = OptionParser.new do |opts|
14
- opts.banner = 'Usage: coral image --servers={server_name},... {provider} ...'
15
- opts.separator ''
16
-
17
- options[:tries] = 1
18
- opts.on('-t', '--tries TRIES', 'Number of times to try imaging the servers before stopping with an error (1)') do |t|
19
- options[:tries] = t
20
- end
21
-
22
- options[:servers] = ''
23
- opts.on('-s', '--servers SERVER_NAME,...', 'Server names of servers to image on the specified providers') do |r|
24
- options[:servers] = r
25
- end
26
- end
27
-
28
- options[:auth] = true
29
-
30
- #---
31
-
32
- providers = parse_options(opts)
33
- return unless providers
34
-
35
- raise ::Vagrant::Errors::CLIInvalidUsage, :help => opts.help.chomp if providers.length < 1
36
-
37
- #---------
38
- # Start
39
-
40
-
41
-
42
- exit success ? 0 : 1
43
- end
44
- end
45
- end
46
- end
47
- end
@@ -1,77 +0,0 @@
1
- module Coral
2
- module Vagrant
3
- module SubCommand
4
- class CoralInit < ::Vagrant.plugin('2', :command)
5
-
6
- #-----------------------------------------------------------------------
7
- # Execution
8
-
9
- def execute
10
- options = {}
11
- success = true
12
-
13
- opts = OptionParser.new do |opts|
14
- opts.banner = 'Usage: coral init -hdf [ {server_name} ... ]'
15
- opts.separator ''
16
-
17
- opts.on('-d', '--destroy', 'Remove existing servers and start from scratch') do |d|
18
- options[:destroy] = d
19
- end
20
-
21
- opts.on('-f', '--force', 'Destroy without confirmation') do |f|
22
- options[:force] = f
23
- end
24
-
25
- #---
26
-
27
- options[:min] = 1
28
- opts.on('-m', '--min TRIES', 'Minimum number of provision runs (1)') do |m|
29
- options[:min] = m
30
- end
31
-
32
- options[:tries] = 1
33
- opts.on('-t', '--tries TRIES', 'Number of provision attempts before stopping with an error (1)') do |t|
34
- options[:tries] = t
35
- end
36
-
37
- options[:exit] = ''
38
- opts.on('-e', '--exit CONDITIONS', 'Conditions on which to exit in the format separated by a comma: "User[git]:ensure:created"') do |e|
39
- options[:exit] = e
40
- end
41
-
42
- options[:repos] = ''
43
- opts.on('-r', '--repos REPO_DIR,...', 'Local directories of repositories to syncronize remotes relative to the Vagrantfile root') do |r|
44
- options[:repos] = r
45
- end
46
- end
47
-
48
- options[:min] = 1
49
- options[:auth] = true
50
-
51
- #---
52
-
53
- servers = parse_options(opts)
54
- return unless servers
55
-
56
- with_target_vms(servers) do |vm|
57
- @env.ui.info("Starting initialization run for: #{vm.name}")
58
-
59
- server = Cloud::Server.new({
60
- :cloud => Coral.vagrant,
61
- :machine => vm,
62
- :logger => @logger,
63
- :ui => @env.ui,
64
- })
65
-
66
- if options[:destroy]
67
- success = server.destroy(options) if success
68
- end
69
- success = server.start(options) if success
70
- success = server.update(options) if success
71
- end
72
- exit success ? 0 : 1
73
- end
74
- end
75
- end
76
- end
77
- end
@@ -1,83 +0,0 @@
1
- module Coral
2
- module Vagrant
3
- module SubCommand
4
- class CoralPush < ::Vagrant.plugin('2', :command)
5
-
6
- #-----------------------------------------------------------------------
7
- # Execution
8
-
9
- def execute
10
- options = {}
11
- success = true
12
-
13
- opts = OptionParser.new do |opts|
14
- opts.banner = 'Usage: coral push -hcet --repos={repository_name},... [ {server_name} ... ]'
15
- opts.separator ''
16
-
17
- opts.on('-c', '--commit', 'Commit any uncommitted changes before pushing to remotes') do |c|
18
- options[:commit] = c
19
- end
20
-
21
- opts.on('-e', '--empty', 'Allow commits with no changes') do |e|
22
- options[:allow_empty] = e
23
- end
24
-
25
- opts.on('-t', '--tags', 'Push all local tags with selected branch') do |t|
26
- options[:tags] = t
27
- end
28
-
29
- #---
30
-
31
- options[:message] = ''
32
- opts.on('-m', '--message MESSAGE', 'Commit message') do |m|
33
- options[:message] = m
34
- end
35
-
36
- options[:author] = ''
37
- opts.on('-a', '--author AUTHOR', 'Author of the changes being committed if different from the committer') do |a|
38
- options[:author] = a
39
- end
40
-
41
- options[:branch] = ''
42
- opts.on('-b', '--branch BRANCH', 'Local branch of the remotes to push') do |b|
43
- options[:branch] = b
44
- end
45
-
46
- options[:repos] = ''
47
- opts.on('-r', '--repos REPO_DIR,...', 'Local directories of repositories to push relative to the Vagrantfile root') do |r|
48
- options[:repos] = r
49
- end
50
- end
51
-
52
- options[:auth] = true
53
-
54
- #---
55
-
56
- remotes = parse_options(opts)
57
- return unless remotes
58
-
59
- if remotes.empty?
60
- remotes = [ 'all' ]
61
- end
62
-
63
- remotes.each do |remote_name|
64
- @env.ui.info("Starting push for: #{remote_name}")
65
-
66
- server = Cloud::Server.new({
67
- :cloud => Coral.vagrant,
68
- :machine => remote_name,
69
- :logger => @logger,
70
- :ui => @env.ui,
71
- })
72
-
73
- if options[:commit]
74
- success = server.commit(options) if success
75
- end
76
- success = server.push(options) if success
77
- end
78
- exit success ? 0 : 1
79
- end
80
- end
81
- end
82
- end
83
- end
@@ -1,37 +0,0 @@
1
- module Coral
2
- module Vagrant
3
- module SubCommand
4
- class CoralRemove < ::Vagrant.plugin('2', :command)
5
-
6
- #-----------------------------------------------------------------------
7
- # Execution
8
-
9
- def execute
10
- options = {}
11
- success = true
12
-
13
- opts = OptionParser.new do |opts|
14
- opts.banner = 'Usage: coral rm -h {name} [ {type} ]'
15
- opts.separator ''
16
-
17
- end
18
-
19
- #---
20
-
21
- args = parse_options(opts)
22
- return unless args
23
-
24
- raise ::Vagrant::Errors::CLIInvalidUsage, :help => opts.help.chomp if args.length < 1
25
-
26
- project_name = args[0]
27
- project_type = ( args.size < 2 ? 'module' : args[1] )
28
-
29
- #---------
30
- # Start
31
-
32
- exit success ? 0 : 1
33
- end
34
- end
35
- end
36
- end
37
- end